Imported from libpng-1.2.20rc5.tar
diff --git a/ANNOUNCE b/ANNOUNCE
index 0a7187c..dda1d06 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
 
-Libpng 1.2.20rc4 - September 1, 2007
+Libpng 1.2.20rc5 - September 2, 2007
 
 This is not intended to be a public release.  It will be replaced
 within a few weeks by a public version or by another test version.
@@ -9,32 +9,32 @@
 Source files with LF line endings (for Unix/Linux) and with a
 "configure" script
 
-   libpng-1.2.20rc4.tar.gz
-   libpng-1.2.20rc4.tar.bz2
+   libpng-1.2.20rc5.tar.gz
+   libpng-1.2.20rc5.tar.bz2
 
 Source files with LF line endings (for Unix/Linux) without the
 "configure" script
 
-   libpng-1.2.20rc4-no-config.tar.gz
-   libpng-1.2.20rc4-no-config.tar.bz2
+   libpng-1.2.20rc5-no-config.tar.gz
+   libpng-1.2.20rc5-no-config.tar.bz2
 
 Source files with CRLF line endings (for Windows), without the
 "configure" script
 
-   lp1220r04.zip
-   lp1220r04.tar.bz2
+   lp1220r05.zip
+   lp1220r05.tar.bz2
 
 Project files
 
-   libpng-1.2.20rc4-project-netware.zip
-   libpng-1.2.20rc4-project-wince.zip
+   libpng-1.2.20rc5-project-netware.zip
+   libpng-1.2.20rc5-project-wince.zip
 
 Other information:
 
-   libpng-1.2.20rc4-README.txt
-   libpng-1.2.20rc4-KNOWNBUGS.txt
-   libpng-1.2.20rc4-LICENSE.txt
-   libpng-1.2.20rc4-Y2K-compliance.txt
+   libpng-1.2.20rc5-README.txt
+   libpng-1.2.20rc5-KNOWNBUGS.txt
+   libpng-1.2.20rc5-LICENSE.txt
+   libpng-1.2.20rc5-Y2K-compliance.txt
 
 Changes since the last public release (1.2.19):
 
@@ -62,7 +62,7 @@
   Revised #ifdefs to ensure one and only one of pnggccrd.c, pngvcrd.c,
     or part of pngrutil.c is selected.
 
-version 1.2.20rc3 [September 1, 2007]
+version 1.2.20rc3 [September 2, 2007]
   Remove a little more code in pngwutil.c when PNG_NO_WRITE_FILTER is selected.
   Added /D _CRT_SECURE_NO_WARNINGS to visual6c and visualc71 projects.
   Compile png_mmx_support() in png.c even when PNG_NO_MMX_CODE is defined.
@@ -72,6 +72,10 @@
 version 1.2.20rc4 [September 1, 2007]
   Removed Intel contributions (MMX, Optimized C).
 
+version 1.2.20rc5 [September 2, 2007]
+  Restored configure and Makefile.in to rc3 and put a snippet of code in
+    pnggccrd.c, to ensure configure makes the same PNG_NO_MMX_CODE selection
+
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
 
 (subscription required; visit 
diff --git a/CHANGES b/CHANGES
index ffb954e..e298727 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1929,6 +1929,10 @@
 version 1.2.20rc4 [September 1, 2007]
   Removed Intel contributions (MMX, Optimized C).
 
+version 1.2.20rc5 [September 2, 2007]
+  Restored configure and Makefile.in to rc3 and put a snippet of code in
+    pnggccrd.c, to ensure configure makes the same PNG_NO_MMX_CODE selection
+
 Send comments/corrections/commendations to png-mng-implement at lists.sf.net
 (subscription required; visit
 https://lists.sourceforge.net/lists/listinfo/png-mng-implement
diff --git a/INSTALL b/INSTALL
index 75f58e8..5764117 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,5 @@
 
-Installing libpng version 1.2.20rc4 - September 1, 2007
+Installing libpng version 1.2.20rc5 - September 2, 2007
 
 On Unix/Linux and similar systems, you can simply type
 
@@ -44,7 +44,7 @@
 correspond to the version of zlib that's installed.
 
 You can rename the directories that you downloaded (they
-might be called "libpng-1.2.20rc4" or "lpng109" and "zlib-1.2.1"
+might be called "libpng-1.2.20rc5" or "lpng109" and "zlib-1.2.1"
 or "zlib121") so that you have directories called "zlib" and "libpng".
 
 Your directory structure should look like this:
@@ -101,9 +101,9 @@
  CMakeLists.txt    =>  "cmake" script
  makefile.std      =>  Generic UNIX makefile (cc, creates static libpng.a)
  makefile.elf      =>  Linux/ELF makefile symbol versioning,
-                       gcc, creates libpng12.so.0.1.2.20rc4)
+                       gcc, creates libpng12.so.0.1.2.20rc5)
  makefile.linux    =>  Linux/ELF makefile
-                       (gcc, creates libpng12.so.0.1.2.20rc4)
+                       (gcc, creates libpng12.so.0.1.2.20rc5)
  makefile.gcc      =>  Generic makefile (gcc, creates static libpng.a)
  makefile.knr      =>  Archaic UNIX Makefile that converts files with
                        ansi2knr (Requires ansi2knr.c from
@@ -125,14 +125,14 @@
  makefile.openbsd  =>  OpenBSD makefile
  makefile.sgi      =>  Silicon Graphics IRIX makefile (cc, creates static lib)
  makefile.sggcc    =>  Silicon Graphics (gcc,
-                       creates libpng12.so.0.1.2.20rc4)
+                       creates libpng12.so.0.1.2.20rc5)
  makefile.sunos    =>  Sun makefile
  makefile.solaris  =>  Solaris 2.X makefile (gcc,
-                       creates libpng12.so.0.1.2.20rc4)
+                       creates libpng12.so.0.1.2.20rc5)
  makefile.solaris-x86 =>  Solaris/intelMMX 2.X makefile (gcc,
-                       creates libpng12.so.0.1.2.20rc4)
+                       creates libpng12.so.0.1.2.20rc5)
  makefile.so9      =>  Solaris 9 makefile (gcc,
-                       creates libpng12.so.0.1.2.20rc4)
+                       creates libpng12.so.0.1.2.20rc5)
  makefile.32sunu   =>  Sun Ultra 32-bit makefile
  makefile.64sunu   =>  Sun Ultra 64-bit makefile
  makefile.sco      =>  For SCO OSr5  ELF and Unixware 7 with Native cc
diff --git a/KNOWNBUG b/KNOWNBUG
index b1a946c..0d9d0a5 100644
--- a/KNOWNBUG
+++ b/KNOWNBUG
@@ -1,29 +1,12 @@
 
-Known bugs in libpng version 1.2.20rc4
+Known bugs in libpng version 1.2.20rc5
 
-1. April 22, 2001: pnggccrd.c has been reported to crash on NetBSD when
-   reading interlaced PNG files, when assembler code is enabled but running
-   on a non-MMX i386 platform.
-
-   STATUS: Under investigation.  The change to pnggccrd.c in libpng-1.2.1
-   fixed a problem under FreeBSD but not the problem with NetBSD, which
-   still fails as of libpng-1.2.2rc1.
-
-2. February 23, 2006: The custom makefiles don't build libpng with -lz.
+1. February 23, 2006: The custom makefiles don't build libpng with -lz.
 
    STATUS: This is a subject of debate. The change will probably be made
    as a part of a major overhaul of the makefiles in libpng version 1.3.0.
 
-3. February 24, 2006: The Makefile generated by the "configure" script
+2. February 24, 2006: The Makefile generated by the "configure" script
    fails to install symbolic links
    libpng12.so => libpng12.so.0.1.2.9betaN
    that are generated by the custom makefiles.
-
-4. June 28, 2007: Pnggccrd.c has been reported to be unreliable on
-   several 64-bit platforms running gcc-3.x.  Although it appears to
-   build properly, it does not always read files correctly.
-
-   STATUS:  Appears to be a bug in the 64-bit version of gcc-3.4.6.
-   Workarounds are to define PNG_NO_MMX_FILTER_UP|AVG|PAETH (as in
-   pngconf.h) or to upgrade gcc to a newer version.
-
diff --git a/LICENSE b/LICENSE
index 1501152..6abd5fb 100644
--- a/LICENSE
+++ b/LICENSE
@@ -8,7 +8,7 @@
 If you modify libpng you may insert additional notices immediately following
 this sentence.
 
-libpng versions 1.2.6, August 15, 2004, through 1.2.20rc4, September 1, 2007, are
+libpng versions 1.2.6, August 15, 2004, through 1.2.20rc5, September 2, 2007, are
 Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are
 distributed according to the same disclaimer and license as libpng-1.2.5
 with the following individual added to the list of Contributing Authors
@@ -106,4 +106,4 @@
 
 Glenn Randers-Pehrson
 glennrp at users.sourceforge.net
-September 1, 2007
+September 2, 2007
diff --git a/Makefile.am b/Makefile.am
index 549c2c7..c35402a 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -83,7 +83,7 @@
 	${srcdir}/contrib/pngsuite/* \
 	${srcdir}/contrib/visupng/* \
 	$(TESTS) \
-	example.c libpng.txt
+	example.c libpng.txt pngvcrd.c 
 
 CLEANFILES= pngout.png libpng12.pc libpng12-config libpng.vers \
 libpng.sym
diff --git a/Makefile.in b/Makefile.in
index a56378a..687642c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -183,6 +183,7 @@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBPNG_DEFINES = @LIBPNG_DEFINES@
+LIBPNG_NO_MMX = @LIBPNG_NO_MMX@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LN_S = @LN_S@
@@ -320,7 +321,7 @@
 	${srcdir}/contrib/pngsuite/* \
 	${srcdir}/contrib/visupng/* \
 	$(TESTS) \
-	example.c libpng.txt
+	example.c libpng.txt pngvcrd.c 
 
 CLEANFILES = pngout.png libpng12.pc libpng12-config libpng.vers \
 libpng.sym
diff --git a/README b/README
index 6ae9daf..1c5eed2 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-README for libpng version 1.2.20rc4 - September 1, 2007 (shared library 12.0)
+README for libpng version 1.2.20rc5 - September 2, 2007 (shared library 12.0)
 See the note about version numbers near the top of png.h
 
 See INSTALL for instructions on how to install libpng.
@@ -190,11 +190,11 @@
        descrip.mms      =>  VMS makefile for MMS or MMK
        makefile.std     =>  Generic UNIX makefile (cc, creates static libpng.a)
        makefile.elf     =>  Linux/ELF makefile symbol versioning,
-                            gcc, creates libpng12.so.0.1.2.20rc4)
+                            gcc, creates libpng12.so.0.1.2.20rc5)
        makefile.linux   =>  Linux/ELF makefile
-                            (gcc, creates libpng12.so.0.1.2.20rc4)
+                            (gcc, creates libpng12.so.0.1.2.20rc5)
        makefile.gcmmx   =>  Linux/ELF makefile
-                            (gcc, creates libpng12.so.0.1.2.20rc4,
+                            (gcc, creates libpng12.so.0.1.2.20rc5,
                             uses assembler code tuned for Intel MMX platform)
        makefile.gcc     =>  Generic makefile (gcc, creates static libpng.a)
        makefile.knr     =>  Archaic UNIX Makefile that converts files with
@@ -216,12 +216,12 @@
        makefile.openbsd =>  OpenBSD makefile
        makefile.sgi     =>  Silicon Graphics IRIX (cc, creates static lib)
        makefile.sggcc   =>  Silicon Graphics
-                            (gcc, creates libpng12.so.0.1.2.20rc4)
+                            (gcc, creates libpng12.so.0.1.2.20rc5)
        makefile.sunos   =>  Sun makefile
        makefile.solaris =>  Solaris 2.X makefile
-                            (gcc, creates libpng12.so.0.1.2.20rc4)
+                            (gcc, creates libpng12.so.0.1.2.20rc5)
        makefile.so9     =>  Solaris 9 makefile
-                            (gcc, creates libpng12.so.0.1.2.20rc4)
+                            (gcc, creates libpng12.so.0.1.2.20rc5)
        makefile.32sunu  =>  Sun Ultra 32-bit makefile
        makefile.64sunu  =>  Sun Ultra 64-bit makefile
        makefile.sco     =>  For SCO OSr5  ELF and Unixware 7 with Native cc
diff --git a/Y2KINFO b/Y2KINFO
index 52cb27b..d8b0487 100644
--- a/Y2KINFO
+++ b/Y2KINFO
@@ -1,13 +1,13 @@
    Y2K compliance in libpng:
    =========================
 
-      September 1, 2007
+      September 2, 2007
 
       Since the PNG Development group is an ad-hoc body, we can't make
       an official declaration.
 
       This is your unofficial assurance that libpng from version 0.71 and
-      upward through 1.2.20rc4 are Y2K compliant.  It is my belief that earlier
+      upward through 1.2.20rc5 are Y2K compliant.  It is my belief that earlier
       versions were also Y2K compliant.
 
       Libpng only has three year fields.  One is a 2-byte unsigned integer
diff --git a/configure b/configure
index bfaf636..23a3a31 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61 for libpng 1.2.20rc4.
+# Generated by GNU Autoconf 2.61 for libpng 1.2.20rc5.
 #
 # Report bugs to <png-mng-implement@lists.sourceforge.net>.
 #
@@ -728,8 +728,8 @@
 # Identity of this package.
 PACKAGE_NAME='libpng'
 PACKAGE_TARNAME='libpng'
-PACKAGE_VERSION='1.2.20rc4'
-PACKAGE_STRING='libpng 1.2.20rc4'
+PACKAGE_VERSION='1.2.20rc5'
+PACKAGE_STRING='libpng 1.2.20rc5'
 PACKAGE_BUGREPORT='png-mng-implement@lists.sourceforge.net'
 
 ac_unique_file="pngget.c"
@@ -876,6 +876,7 @@
 POW_LIB
 LIBOBJS
 LIBPNG_DEFINES
+LIBPNG_NO_MMX
 HAVE_LD_VERSION_SCRIPT_TRUE
 HAVE_LD_VERSION_SCRIPT_FALSE
 PNGLIB_VERSION
@@ -1404,7 +1405,7 @@
   # 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 libpng 1.2.20rc4 to adapt to many kinds of systems.
+\`configure' configures libpng 1.2.20rc5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1474,7 +1475,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libpng 1.2.20rc4:";;
+     short | recursive ) echo "Configuration of libpng 1.2.20rc5:";;
    esac
   cat <<\_ACEOF
 
@@ -1584,7 +1585,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libpng configure 1.2.20rc4
+libpng configure 1.2.20rc5
 generated by GNU Autoconf 2.61
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1598,7 +1599,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libpng $as_me 1.2.20rc4, which was
+It was created by libpng $as_me 1.2.20rc5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   $ $0 $@
@@ -2268,7 +2269,7 @@
 
 # Define the identity of the package.
  PACKAGE='libpng'
- VERSION='1.2.20rc4'
+ VERSION='1.2.20rc5'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2439,7 +2440,7 @@
 
 
 
-PNGLIB_VERSION=1.2.20rc4
+PNGLIB_VERSION=1.2.20rc5
 PNGLIB_MAJOR=1
 PNGLIB_MINOR=2
 PNGLIB_RELEASE=20
@@ -4787,7 +4788,7 @@
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4790 "configure"' > conftest.$ac_ext
+  echo '#line 4791 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -7300,11 +7301,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7303: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7304: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7307: \$? = $ac_status" >&5
+   echo "$as_me:7308: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7590,11 +7591,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7593: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7594: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7597: \$? = $ac_status" >&5
+   echo "$as_me:7598: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7694,11 +7695,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7697: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7698: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:7701: \$? = $ac_status" >&5
+   echo "$as_me:7702: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -10043,7 +10044,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10046 "configure"
+#line 10047 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10143,7 +10144,7 @@
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 10146 "configure"
+#line 10147 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12563,11 +12564,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:12566: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12567: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:12570: \$? = $ac_status" >&5
+   echo "$as_me:12571: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -12667,11 +12668,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:12670: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12671: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:12674: \$? = $ac_status" >&5
+   echo "$as_me:12675: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -14229,11 +14230,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14232: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14233: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:14236: \$? = $ac_status" >&5
+   echo "$as_me:14237: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -14333,11 +14334,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14336: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14337: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14340: \$? = $ac_status" >&5
+   echo "$as_me:14341: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -16520,11 +16521,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16523: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16524: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16527: \$? = $ac_status" >&5
+   echo "$as_me:16528: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -16810,11 +16811,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16813: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16814: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16817: \$? = $ac_status" >&5
+   echo "$as_me:16818: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -16914,11 +16915,11 @@
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16917: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16918: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:16921: \$? = $ac_status" >&5
+   echo "$as_me:16922: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -20712,6 +20713,55 @@
 
 
 LIBPNG_DEFINES=-DPNG_CONFIGURE_LIBPNG
+{ echo "$as_me:$LINENO: checking if assembler code in pnggccrd.c can be compiled without PNG_NO_MMX_CODE" >&5
+echo $ECHO_N "checking if assembler code in pnggccrd.c can be compiled without PNG_NO_MMX_CODE... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include "$srcdir/pnggccrd.c"
+int
+main ()
+{
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+  LIBPNG_NO_MMX=""
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	{ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+  LIBPNG_NO_MMX=-DPNG_NO_MMX_CODE
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+LIBPNG_DEFINES=$LIBPNG_DEFINES\ $LIBPNG_NO_MMX
+
 
 
 { echo "$as_me:$LINENO: checking if libraries can be versioned" >&5
@@ -21232,7 +21282,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libpng $as_me 1.2.20rc4, which was
+This file was extended by libpng $as_me 1.2.20rc5, which was
 generated by GNU Autoconf 2.61.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -21285,7 +21335,7 @@
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-libpng config.status 1.2.20rc4
+libpng config.status 1.2.20rc5
 configured by $0, generated by GNU Autoconf 2.61,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -21613,6 +21663,7 @@
 POW_LIB!$POW_LIB$ac_delim
 LIBOBJS!$LIBOBJS$ac_delim
 LIBPNG_DEFINES!$LIBPNG_DEFINES$ac_delim
+LIBPNG_NO_MMX!$LIBPNG_NO_MMX$ac_delim
 HAVE_LD_VERSION_SCRIPT_TRUE!$HAVE_LD_VERSION_SCRIPT_TRUE$ac_delim
 HAVE_LD_VERSION_SCRIPT_FALSE!$HAVE_LD_VERSION_SCRIPT_FALSE$ac_delim
 PNGLIB_VERSION!$PNGLIB_VERSION$ac_delim
@@ -21625,7 +21676,7 @@
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 20; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 21; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/configure.ac b/configure.ac
index 244952c..f835b15 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,12 +18,12 @@
 
 dnl Version number stuff here:
 
-AC_INIT([libpng], [1.2.20rc4], [png-mng-implement@lists.sourceforge.net])
+AC_INIT([libpng], [1.2.20rc5], [png-mng-implement@lists.sourceforge.net])
 AM_INIT_AUTOMAKE
 dnl stop configure from automagically running automake
 AM_MAINTAINER_MODE
 
-PNGLIB_VERSION=1.2.20rc4
+PNGLIB_VERSION=1.2.20rc5
 PNGLIB_MAJOR=1
 PNGLIB_MINOR=2
 PNGLIB_RELEASE=20
@@ -59,7 +59,18 @@
 AC_CHECK_LIB(z, zlibVersion, , AC_ERROR([zlib not installed]))
 
 LIBPNG_DEFINES=-DPNG_CONFIGURE_LIBPNG
+AC_MSG_CHECKING(
+  [if assembler code in pnggccrd.c can be compiled without PNG_NO_MMX_CODE])
+AC_TRY_COMPILE(
+  [#include "$srcdir/pnggccrd.c"],
+  [return 0;],
+  AC_MSG_RESULT(yes)
+  LIBPNG_NO_MMX="",
+  AC_MSG_RESULT(no)
+  LIBPNG_NO_MMX=-DPNG_NO_MMX_CODE)
+LIBPNG_DEFINES=$LIBPNG_DEFINES\ $LIBPNG_NO_MMX
 AC_SUBST(LIBPNG_DEFINES)
+AC_SUBST(LIBPNG_NO_MMX)
 
 AC_MSG_CHECKING([if libraries can be versioned])
 GLD=`$LD --help < /dev/null 2>/dev/null | grep version-script`
diff --git a/libpng-1.2.20rc4.txt b/libpng-1.2.20rc5.txt
similarity index 99%
rename from libpng-1.2.20rc4.txt
rename to libpng-1.2.20rc5.txt
index ba4d9ab..3d8b86a 100644
--- a/libpng-1.2.20rc4.txt
+++ b/libpng-1.2.20rc5.txt
@@ -1,6 +1,6 @@
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.2.20rc4 - September 1, 2007
+ libpng version 1.2.20rc5 - September 2, 2007
  Updated and distributed by Glenn Randers-Pehrson
  <glennrp at users.sourceforge.net>
  Copyright (c) 1998-2007 Glenn Randers-Pehrson
@@ -2796,13 +2796,13 @@
 
 IX. Y2K Compliance in libpng
 
-September 1, 2007
+September 2, 2007
 
 Since the PNG Development group is an ad-hoc body, we can't make
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.2.20rc4 are Y2K compliant.  It is my belief that earlier
+upward through 1.2.20rc5 are Y2K compliant.  It is my belief that earlier
 versions were also Y2K compliant.
 
 Libpng only has three year fields.  One is a 2-byte unsigned integer that
diff --git a/libpng.3 b/libpng.3
index d80f90b..26653ff 100644
--- a/libpng.3
+++ b/libpng.3
@@ -1,6 +1,6 @@
-.TH LIBPNG 3 "September 1, 2007"
+.TH LIBPNG 3 "September 2, 2007"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.2.20rc4
+libpng \- Portable Network Graphics (PNG) Reference Library 1.2.20rc5
 .SH SYNOPSIS
 \fB
 #include <png.h>\fP
@@ -410,7 +410,7 @@
 .SH LIBPNG.TXT
 libpng.txt - A description on how to use and modify libpng
 
- libpng version 1.2.20rc4 - September 1, 2007
+ libpng version 1.2.20rc5 - September 2, 2007
  Updated and distributed by Glenn Randers-Pehrson
  <glennrp at users.sourceforge.net>
  Copyright (c) 1998-2007 Glenn Randers-Pehrson
@@ -3206,13 +3206,13 @@
 
 .SH IX. Y2K Compliance in libpng
 
-September 1, 2007
+September 2, 2007
 
 Since the PNG Development group is an ad-hoc body, we can't make
 an official declaration.
 
 This is your unofficial assurance that libpng from version 0.71 and
-upward through 1.2.20rc4 are Y2K compliant.  It is my belief that earlier
+upward through 1.2.20rc5 are Y2K compliant.  It is my belief that earlier
 versions were also Y2K compliant.
 
 Libpng only has three year fields.  One is a 2-byte unsigned integer that
@@ -3407,8 +3407,8 @@
  1.0.27              10    10027  10.so.0.27[.0]
  1.2.19              13    10219  12.so.0.19[.0]
  1.2.20beta01-04     13    10220  12.so.0.20[.0]
- 1.0.28rc1-4         10    10028  10.so.0.28[.0]
- 1.2.20rc1-4         13    10220  12.so.0.20[.0]
+ 1.0.28rc1-5         10    10028  10.so.0.28[.0]
+ 1.2.20rc1-5         13    10220  12.so.0.20[.0]
  1.0.28              10    10028  10.so.0.28[.0]
  1.2.20              13    10220  12.so.0.20[.0]
 
@@ -3466,7 +3466,7 @@
 
 Thanks to Frank J. T. Wojcik for helping with the documentation.
 
-Libpng version 1.2.20rc4 - September 1, 2007:
+Libpng version 1.2.20rc5 - September 2, 2007:
 Initially created in 1995 by Guy Eric Schalnat, then of Group 42, Inc.
 Currently maintained by Glenn Randers-Pehrson (glennrp at users.sourceforge.net).
 
@@ -3487,7 +3487,7 @@
 If you modify libpng you may insert additional notices immediately following
 this sentence.
 
-libpng versions 1.2.6, August 15, 2004, through 1.2.20rc4, September 1, 2007, are
+libpng versions 1.2.6, August 15, 2004, through 1.2.20rc5, September 2, 2007, are
 Copyright (c) 2004,2006-2007 Glenn Randers-Pehrson, and are
 distributed according to the same disclaimer and license as libpng-1.2.5
 with the following individual added to the list of Contributing Authors
@@ -3586,7 +3586,7 @@
 
 Glenn Randers-Pehrson
 glennrp at users.sourceforge.net
-September 1, 2007
+September 2, 2007
 
 .\" end of man page
 
diff --git a/libpngpf.3 b/libpngpf.3
index 06fddfa..2cd7bfb 100644
--- a/libpngpf.3
+++ b/libpngpf.3
@@ -1,6 +1,6 @@
-.TH LIBPNGPF 3 "September 1, 2007"
+.TH LIBPNGPF 3 "September 2, 2007"
 .SH NAME
-libpng \- Portable Network Graphics (PNG) Reference Library 1.2.20rc4
+libpng \- Portable Network Graphics (PNG) Reference Library 1.2.20rc5
 (private functions)
 .SH SYNOPSIS
 \fB#include <png.h>\fP
diff --git a/png.5 b/png.5
index 317b7ae..fe9380d 100644
--- a/png.5
+++ b/png.5
@@ -1,4 +1,4 @@
-.TH PNG 5 "September 1, 2007"
+.TH PNG 5 "September 2, 2007"
 .SH NAME
 png \- Portable Network Graphics (PNG) format
 .SH DESCRIPTION
diff --git a/png.c b/png.c
index e6ffcd4..094b76b 100644
--- a/png.c
+++ b/png.c
@@ -13,7 +13,7 @@
 #include "png.h"
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_2_20rc4 Your_png_h_is_not_version_1_2_20rc4;
+typedef version_1_2_20rc5 Your_png_h_is_not_version_1_2_20rc5;
 
 /* Version information for C files.  This had better match the version
  * string defined in png.h.  */
@@ -693,7 +693,7 @@
 png_get_copyright(png_structp png_ptr)
 {
    png_ptr = png_ptr;  /* silence compiler warning about unused png_ptr */
-   return ((png_charp) "\n libpng version 1.2.20rc4 - September 1, 2007\n\
+   return ((png_charp) "\n libpng version 1.2.20rc5 - September 2, 2007\n\
    Copyright (c) 1998-2007 Glenn Randers-Pehrson\n\
    Copyright (c) 1996-1997 Andreas Dilger\n\
    Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.\n");
@@ -730,51 +730,9 @@
    png_ptr = png_ptr;  /* silence compiler warning about unused png_ptr */
    return ((png_charp) PNG_HEADER_VERSION_STRING
 #ifdef PNG_READ_SUPPORTED
-#  ifdef PNG_USE_PNGGCCRD
-#    ifdef __x86_64__
-#      ifdef __PIC__
-   "     (PNGGCRD x86_64, PIC)\n"
-#      else
-#        ifdef PNG_THREAD_UNSAFE_OK
-   "     (PNGGCRD x86_64, Thread unsafe)\n"
-#        else
-   "     (PNGGCRD x86_64, Thread safe)\n"
-#        endif
-#      endif
-#    else
-#    ifdef PNG_THREAD_UNSAFE_OK
-   "     (PNGGCRD, Thread unsafe)\n"
-#      else
-   "     (PNGGCRD, Thread safe)\n"
-#      endif
-#    endif
-#  else
-#    ifdef PNG_USE_PNGVCRD
-#      ifdef __x86_64__
-   "     (x86_64 PNGVCRD)\n"
-#      else
-   "     (PNGVCRD)\n"
-#      endif
-#    else
-#      ifdef __x86_64__
-#        ifdef PNG_OPTIMIZED_CODE_SUPPORTED
-   "     (x86_64 OPTIMIZED)\n"
-#        else
-   "     (x86_64 NOT OPTIMIZED)\n"
-#        endif
-#      else
-#        ifdef PNG_OPTIMIZED_CODE_SUPPORTED
-   "     (OPTIMIZED)\n"
-#        else
-   "     (NOT OPTIMIZED)\n"
-#        endif
-#      endif
-#    endif
-#  endif
-#else
-   "     (NO READ SUPPORT)\n"
+   "     (NO READ SUPPORT)"
 #endif
-   );
+   "\n");
 }
 
 #if defined(PNG_READ_SUPPORTED) || defined(PNG_WRITE_SUPPORTED)
@@ -815,16 +773,6 @@
 
 #if defined(PNG_READ_SUPPORTED) && defined(PNG_ASSEMBLER_CODE_SUPPORTED)
 #if !defined(PNG_1_0_X)
-#if defined(PNG_MMX_CODE_SUPPORTED)
-/* this INTERNAL function was added to libpng 1.2.0 */
-void /* PRIVATE */
-png_init_mmx_flags (png_structp png_ptr)
-{
-   /* obsolete, to be removed from libpng-1.4.0 */
-}
-
-#endif /* !(PNG_MMX_CODE_SUPPORTED) */
-
 /* this function was added to libpng 1.2.0 */
 int PNGAPI
 png_mmx_support(void)
diff --git a/png.h b/png.h
index a4aa8d0..795decc 100644
--- a/png.h
+++ b/png.h
@@ -1,7 +1,7 @@
 
 /* png.h - header file for PNG reference library
  *
- * libpng version 1.2.20rc4 - September 1, 2007
+ * libpng version 1.2.20rc5 - September 2, 2007
  * Copyright (c) 1998-2007 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
  * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@@ -9,7 +9,7 @@
  * Authors and maintainers:
  *  libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
  *  libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
- *  libpng versions 0.97, January 1998, through 1.2.20rc4 - September 1, 2007: Glenn
+ *  libpng versions 0.97, January 1998, through 1.2.20rc5 - September 2, 2007: Glenn
  *  See also "Contributing Authors", below.
  *
  * Note about libpng version numbers:
@@ -156,8 +156,8 @@
  *    1.0.27                  10    10027  10.so.0.27[.0]
  *    1.2.19                  13    10219  12.so.0.19[.0]
  *    1.2.20beta01-04         13    10220  12.so.0.20[.0]
- *    1.0.28rc1-4             10    10028  10.so.0.28[.0]
- *    1.2.20rc1-4             13    10220  12.so.0.20[.0]
+ *    1.0.28rc1-5             10    10028  10.so.0.28[.0]
+ *    1.2.20rc1-5             13    10220  12.so.0.20[.0]
  *    1.0.28                  10    10028  10.so.0.28[.0]
  *    1.2.20                  13    10220  12.so.0.20[.0]
  *
@@ -189,7 +189,7 @@
  * If you modify libpng you may insert additional notices immediately following
  * this sentence.
  *
- * libpng versions 1.2.6, August 15, 2004, through 1.2.20rc4, September 1, 2007, are
+ * libpng versions 1.2.6, August 15, 2004, through 1.2.20rc5, September 2, 2007, are
  * Copyright (c) 2004, 2006-2007 Glenn Randers-Pehrson, and are
  * distributed according to the same disclaimer and license as libpng-1.2.5
  * with the following individual added to the list of Contributing Authors:
@@ -301,13 +301,13 @@
  * Y2K compliance in libpng:
  * =========================
  *
- *    September 1, 2007
+ *    September 2, 2007
  *
  *    Since the PNG Development group is an ad-hoc body, we can't make
  *    an official declaration.
  *
  *    This is your unofficial assurance that libpng from version 0.71 and
- *    upward through 1.2.20rc4 are Y2K compliant.  It is my belief that earlier
+ *    upward through 1.2.20rc5 are Y2K compliant.  It is my belief that earlier
  *    versions were also Y2K compliant.
  *
  *    Libpng only has three year fields.  One is a 2-byte unsigned integer
@@ -363,9 +363,9 @@
  */
 
 /* Version information for png.h - this should match the version in png.c */
-#define PNG_LIBPNG_VER_STRING "1.2.20rc4"
+#define PNG_LIBPNG_VER_STRING "1.2.20rc5"
 #define PNG_HEADER_VERSION_STRING \
-   " libpng version 1.2.20rc4 - September 1, 2007\n"
+   " libpng version 1.2.20rc5 - September 2, 2007\n"
 
 #define PNG_LIBPNG_VER_SONUM   0
 #define PNG_LIBPNG_VER_DLLNUM  13
@@ -377,7 +377,7 @@
 /* This should match the numeric part of the final component of
  * PNG_LIBPNG_VER_STRING, omitting any leading zero: */
 
-#define PNG_LIBPNG_VER_BUILD  4
+#define PNG_LIBPNG_VER_BUILD  5
 
 /* Release Status */
 #define PNG_LIBPNG_BUILD_ALPHA    1
@@ -1412,7 +1412,7 @@
 /* This triggers a compiler error in png.c, if png.c and png.h
  * do not agree upon the version number.
  */
-typedef png_structp version_1_2_20rc4;
+typedef png_structp version_1_2_20rc5;
 
 typedef png_struct FAR * FAR * png_structpp;
 
diff --git a/pngconf.h b/pngconf.h
index 01d7578..0a55522 100644
--- a/pngconf.h
+++ b/pngconf.h
@@ -1,7 +1,7 @@
 
 /* pngconf.h - machine configurable file for libpng
  *
- * libpng version 1.2.20rc4 - September 1, 2007
+ * libpng version 1.2.20rc5 - September 2, 2007
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2007 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
@@ -765,17 +765,6 @@
 #    define PNG_MMX_CODE_SUPPORTED
 #  endif
 
-#  if !defined(PNG_USE_PNGVCRD) && defined(PNG_MMX_CODE_SUPPORTED) && \
-     defined(_MSC_VER)
-#    define PNG_USE_PNGVCRD
-#  endif
-
-#  if !defined(PNG_USE_PNGGCCRD) && defined(PNG_MMX_CODE_SUPPORTED) && \
-     !defined(PNG_USE_PNGVCRD)
-#    define PNG_USE_PNGGCCRD
-#    define PNG_THREAD_UNSAFE_OK
-#  endif
-
 #endif
 /* end of obsolete code to be removed from libpng-1.4.0 */
 
diff --git a/pngerror.c b/pngerror.c
index 2d03c56..6bd20fd 100644
--- a/pngerror.c
+++ b/pngerror.c
@@ -1,7 +1,7 @@
 
 /* pngerror.c - stub functions for i/o and memory allocation
  *
- * Last changed in libpng 1.2.20 September 1, 2007
+ * Last changed in libpng 1.2.20 September 2, 2007
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2007 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pnggccrd.c b/pnggccrd.c
index 7007ad9..a7248d6 100644
--- a/pnggccrd.c
+++ b/pnggccrd.c
@@ -1 +1,101 @@
 /* pnggccrd.c was removed from libpng-1.2.20. */
+
+/* This code snippet is for use by configure's compilation test. */
+
+#if defined(PNG_ASSEMBLER_CODE_SUPPORTED) && \
+    defined(PNG_MMX_CODE_SUPPORTED)
+int PNGAPI png_dummy_mmx_support(void);
+
+static int _mmx_supported = 2; // 0: no MMX; 1: MMX supported; 2: not tested
+
+int PNGAPI
+png_dummy_mmx_support(void) __attribute__((noinline));
+
+int PNGAPI
+png_dummy_mmx_support(void)
+{
+   int result;
+#if defined(PNG_MMX_CODE_SUPPORTED)  // superfluous, but what the heck
+    __asm__ __volatile__ (
+#if defined(__x86_64__)
+        "pushq %%rbx          \n\t"  // rbx gets clobbered by CPUID instruction
+        "pushq %%rcx          \n\t"  // so does rcx...
+        "pushq %%rdx          \n\t"  // ...and rdx (but rcx & rdx safe on Linux)
+        "pushfq               \n\t"  // save Eflag to stack
+        "popq %%rax           \n\t"  // get Eflag from stack into rax
+        "movq %%rax, %%rcx    \n\t"  // make another copy of Eflag in rcx
+        "xorl $0x200000, %%eax \n\t" // toggle ID bit in Eflag (i.e., bit 21)
+        "pushq %%rax          \n\t"  // save modified Eflag back to stack
+        "popfq                \n\t"  // restore modified value to Eflag reg
+        "pushfq               \n\t"  // save Eflag to stack
+        "popq %%rax           \n\t"  // get Eflag from stack
+        "pushq %%rcx          \n\t"  // save original Eflag to stack
+        "popfq                \n\t"  // restore original Eflag
+#else
+        "pushl %%ebx          \n\t"  // ebx gets clobbered by CPUID instruction
+        "pushl %%ecx          \n\t"  // so does ecx...
+        "pushl %%edx          \n\t"  // ...and edx (but ecx & edx safe on Linux)
+        "pushfl               \n\t"  // save Eflag to stack
+        "popl %%eax           \n\t"  // get Eflag from stack into eax
+        "movl %%eax, %%ecx    \n\t"  // make another copy of Eflag in ecx
+        "xorl $0x200000, %%eax \n\t" // toggle ID bit in Eflag (i.e., bit 21)
+        "pushl %%eax          \n\t"  // save modified Eflag back to stack
+        "popfl                \n\t"  // restore modified value to Eflag reg
+        "pushfl               \n\t"  // save Eflag to stack
+        "popl %%eax           \n\t"  // get Eflag from stack
+        "pushl %%ecx          \n\t"  // save original Eflag to stack
+        "popfl                \n\t"  // restore original Eflag
+#endif
+        "xorl %%ecx, %%eax    \n\t"  // compare new Eflag with original Eflag
+        "jz 0f                \n\t"  // if same, CPUID instr. is not supported
+
+        "xorl %%eax, %%eax    \n\t"  // set eax to zero
+//      ".byte  0x0f, 0xa2    \n\t"  // CPUID instruction (two-byte opcode)
+        "cpuid                \n\t"  // get the CPU identification info
+        "cmpl $1, %%eax       \n\t"  // make sure eax return non-zero value
+        "jl 0f                \n\t"  // if eax is zero, MMX is not supported
+
+        "xorl %%eax, %%eax    \n\t"  // set eax to zero and...
+        "incl %%eax           \n\t"  // ...increment eax to 1.  This pair is
+                                     // faster than the instruction "mov eax, 1"
+        "cpuid                \n\t"  // get the CPU identification info again
+        "andl $0x800000, %%edx \n\t" // mask out all bits but MMX bit (23)
+        "cmpl $0, %%edx       \n\t"  // 0 = MMX not supported
+        "jz 0f                \n\t"  // non-zero = yes, MMX IS supported
+
+        "movl $1, %%eax       \n\t"  // set return value to 1
+        "jmp  1f              \n\t"  // DONE:  have MMX support
+
+    "0:                       \n\t"  // .NOT_SUPPORTED: target label for jump instructions
+        "movl $0, %%eax       \n\t"  // set return value to 0
+    "1:                       \n\t"  // .RETURN: target label for jump instructions
+#if defined(__x86_64__)
+        "popq %%rdx           \n\t"  // restore rdx
+        "popq %%rcx           \n\t"  // restore rcx
+        "popq %%rbx           \n\t"  // restore rbx
+#else
+        "popl %%edx           \n\t"  // restore edx
+        "popl %%ecx           \n\t"  // restore ecx
+        "popl %%ebx           \n\t"  // restore ebx
+#endif
+
+//      "ret                  \n\t"  // DONE:  no MMX support
+                                     // (fall through to standard C "ret")
+
+        : "=a" (result)              // output list
+
+        :                            // any variables used on input (none)
+
+                                     // no clobber list
+//      , "%ebx", "%ecx", "%edx"     // GRR:  we handle these manually
+//      , "memory"   // if write to a variable gcc thought was in a reg
+//      , "cc"       // "condition codes" (flag bits)
+    );
+    _mmx_supported = result;
+#else
+    _mmx_supported = 0;
+#endif /* PNG_MMX_CODE_SUPPORTED */
+
+    return _mmx_supported;
+}
+#endif
diff --git a/pngget.c b/pngget.c
index 9cf1b84..a0e90bb 100644
--- a/pngget.c
+++ b/pngget.c
@@ -842,11 +842,7 @@
 png_get_asm_flags (png_structp png_ptr)
 {
     /* obsolete, to be removed from libpng-1.4.0 */
-#ifdef PNG_MMX_CODE_SUPPORTED
-    return (png_uint_32)(png_ptr? png_ptr->asm_flags : 0L);
-#else
     return (png_ptr? 0L: 0L);
-#endif
 }
 
 /* this function was added to libpng 1.2.0 and should exist by default */
diff --git a/pngpread.c b/pngpread.c
index d5952bb..6810056 100644
--- a/pngpread.c
+++ b/pngpread.c
@@ -1,7 +1,7 @@
 
 /* pngpread.c - read a png file in push mode
  *
- * Last changed in libpng 1.2.20 September 1, 2007
+ * Last changed in libpng 1.2.20 September 2, 2007
  * For conditions of distribution and use, see copyright notice in png.h
  * Copyright (c) 1998-2007 Glenn Randers-Pehrson
  * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
diff --git a/pngtest.c b/pngtest.c
index 70734a3..4ef37f4 100644
--- a/pngtest.c
+++ b/pngtest.c
@@ -1548,4 +1548,4 @@
 }
 
 /* Generate a compiler error if there is an old png.h in the search path. */
-typedef version_1_2_20rc4 your_png_h_is_not_version_1_2_20rc4;
+typedef version_1_2_20rc5 your_png_h_is_not_version_1_2_20rc5;
diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt
index b948607..2530c7b 100644
--- a/scripts/CMakeLists.txt
+++ b/scripts/CMakeLists.txt
@@ -165,7 +165,7 @@
 
 # SET UP LINKS
 set_target_properties(${PNG_LIB_NAME} PROPERTIES
-#    VERSION 0.${PNGLIB_RELEASE}.1.2.20rc4
+#    VERSION 0.${PNGLIB_RELEASE}.1.2.20rc5
      VERSION 0.${PNGLIB_RELEASE}.0
      SOVERSION 0
      CLEAN_DIRECT_OUTPUT 1)
diff --git a/scripts/libpng-config-head.in b/scripts/libpng-config-head.in
index 8f8e29b..71931d7 100755
--- a/scripts/libpng-config-head.in
+++ b/scripts/libpng-config-head.in
@@ -8,7 +8,7 @@
 
 # Modeled after libxml-config.
 
-version=1.2.20rc4
+version=1.2.20rc5
 prefix=""
 libdir=""
 libs=""
diff --git a/scripts/libpng.pc-configure.in b/scripts/libpng.pc-configure.in
index ab39e20..3fe86b7 100644
--- a/scripts/libpng.pc-configure.in
+++ b/scripts/libpng.pc-configure.in
@@ -5,6 +5,6 @@
 
 Name: libpng
 Description: Loads and saves PNG files
-Version: 1.2.20rc4
+Version: 1.2.20rc5
 Libs: -L${libdir} -lpng12
 Cflags: -I${includedir} @LIBPNG_NO_MMX@
diff --git a/scripts/libpng.pc.in b/scripts/libpng.pc.in
index d83e2d8..27c3303 100644
--- a/scripts/libpng.pc.in
+++ b/scripts/libpng.pc.in
@@ -5,6 +5,6 @@
 
 Name: libpng
 Description: Loads and saves PNG files
-Version: 1.2.20rc4
+Version: 1.2.20rc5
 Libs: -L${libdir} -lpng12
 Cflags: -I${includedir}
diff --git a/scripts/makefile.32sunu b/scripts/makefile.32sunu
index 1255998..2a0cc25 100644
--- a/scripts/makefile.32sunu
+++ b/scripts/makefile.32sunu
@@ -8,7 +8,7 @@
 # Library name:
 LIBNAME=libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.64sunu b/scripts/makefile.64sunu
index aed69ed..4dd95a2 100644
--- a/scripts/makefile.64sunu
+++ b/scripts/makefile.64sunu
@@ -8,7 +8,7 @@
 # Library name:
 LIBNAME=libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.aix b/scripts/makefile.aix
index f32233f..f57db20 100644
--- a/scripts/makefile.aix
+++ b/scripts/makefile.aix
@@ -20,7 +20,7 @@
 
 LIBNAME=libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 prefix=/usr/local
diff --git a/scripts/makefile.beos b/scripts/makefile.beos
index 15449c4..e5ce3f3 100644
--- a/scripts/makefile.beos
+++ b/scripts/makefile.beos
@@ -8,7 +8,7 @@
 # Library name:
 LIBNAME=libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.cygwin b/scripts/makefile.cygwin
index 2812ac2..4b7cbac 100644
--- a/scripts/makefile.cygwin
+++ b/scripts/makefile.cygwin
@@ -74,7 +74,7 @@
 LIBNAME = libpng12
 PNGMAJ = 0
 CYGDLL = 12
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 SHAREDLIB=cygpng$(CYGDLL).dll
@@ -288,7 +288,6 @@
 pngwtran.o pngwtran.pic.o:	png.h pngconf.h pngwtran.c
 pngwutil.o pngwutil.pic.o:	png.h pngconf.h pngwutil.c
 pngpread.o pngpread.pic.o:	png.h pngconf.h pngpread.c
-# pnggccrd.o pnggccrd.pic.o:	png.h pngconf.h pnggccrd.c
 
 pngtest.o:			png.h pngconf.h pngtest.c
 pngtest-stat.o:			png.h pngconf.h pngtest.c
diff --git a/scripts/makefile.darwin b/scripts/makefile.darwin
index 2a27d1f..667ea7a 100644
--- a/scripts/makefile.darwin
+++ b/scripts/makefile.darwin
@@ -19,7 +19,7 @@
 # Library name:
 LIBNAME = libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.dec b/scripts/makefile.dec
index a9d243e..7078073 100644
--- a/scripts/makefile.dec
+++ b/scripts/makefile.dec
@@ -5,7 +5,7 @@
 
 # Library name:
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 LIBNAME = libpng12
 
diff --git a/scripts/makefile.elf b/scripts/makefile.elf
index 4d8e04c..f03cbb9 100644
--- a/scripts/makefile.elf
+++ b/scripts/makefile.elf
@@ -12,7 +12,7 @@
 # Library name:
 LIBNAME = libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.gcmmx b/scripts/makefile.gcmmx
index 1bc5215..ef4eee7 100644
--- a/scripts/makefile.gcmmx
+++ b/scripts/makefile.gcmmx
@@ -14,7 +14,7 @@
 # Library name:
 LIBNAME = libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.hp64 b/scripts/makefile.hp64
index 38c896c..683927b 100644
--- a/scripts/makefile.hp64
+++ b/scripts/makefile.hp64
@@ -18,7 +18,7 @@
 # Library name:
 LIBNAME = libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.hpgcc b/scripts/makefile.hpgcc
index 34053ce..32c8abe 100644
--- a/scripts/makefile.hpgcc
+++ b/scripts/makefile.hpgcc
@@ -8,7 +8,7 @@
 # Library name:
 LIBNAME = libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.hpux b/scripts/makefile.hpux
index d92222d..0a0d508 100644
--- a/scripts/makefile.hpux
+++ b/scripts/makefile.hpux
@@ -18,7 +18,7 @@
 # Library name:
 LIBNAME = libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.linux b/scripts/makefile.linux
index 2c83c21..218406d 100644
--- a/scripts/makefile.linux
+++ b/scripts/makefile.linux
@@ -6,7 +6,7 @@
 # Library name:
 LIBNAME = libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.mingw b/scripts/makefile.mingw
index 43963e8..4ac8b7b 100644
--- a/scripts/makefile.mingw
+++ b/scripts/makefile.mingw
@@ -74,7 +74,7 @@
 LIBNAME = libpng12
 PNGMAJ = 0
 MINGDLL = 12
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 SHAREDLIB=libpng$(MINGDLL).dll
diff --git a/scripts/makefile.ne12bsd b/scripts/makefile.ne12bsd
index de9c56a..88d40ba 100644
--- a/scripts/makefile.ne12bsd
+++ b/scripts/makefile.ne12bsd
@@ -14,7 +14,7 @@
 
 LIB=	png12
 SHLIB_MAJOR=	0
-SHLIB_MINOR=	1.2.20rc4
+SHLIB_MINOR=	1.2.20rc5
 SRCS=	png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 	pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 	pngwtran.c pngmem.c pngerror.c pngpread.c
diff --git a/scripts/makefile.netbsd b/scripts/makefile.netbsd
index 26be87f..a0720c9 100644
--- a/scripts/makefile.netbsd
+++ b/scripts/makefile.netbsd
@@ -14,7 +14,7 @@
 
 LIB=	png
 SHLIB_MAJOR=	3
-SHLIB_MINOR=	1.2.20rc4
+SHLIB_MINOR=	1.2.20rc5
 SRCS=	png.c pngset.c pngget.c pngrutil.c pngtrans.c pngwutil.c \
 	pngread.c pngrio.c pngwio.c pngwrite.c pngrtran.c \
 	pngwtran.c pngmem.c pngerror.c pngpread.c
diff --git a/scripts/makefile.nommx b/scripts/makefile.nommx
index e1b8c01..9633881 100644
--- a/scripts/makefile.nommx
+++ b/scripts/makefile.nommx
@@ -7,7 +7,7 @@
 # Library name:
 LIBNAME = libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.openbsd b/scripts/makefile.openbsd
index 9125962..14e5b0b 100644
--- a/scripts/makefile.openbsd
+++ b/scripts/makefile.openbsd
@@ -8,7 +8,7 @@
 MANDIR= ${PREFIX}/man/cat
 
 SHLIB_MAJOR=	0
-SHLIB_MINOR=	1.2.20rc4
+SHLIB_MINOR=	1.2.20rc5
 
 LIB=	png
 SRCS=	png.c pngerror.c pngget.c pngmem.c pngpread.c \
diff --git a/scripts/makefile.sco b/scripts/makefile.sco
index 3827f51..caead82 100644
--- a/scripts/makefile.sco
+++ b/scripts/makefile.sco
@@ -9,7 +9,7 @@
 # Library name:
 LIBNAME = libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.sggcc b/scripts/makefile.sggcc
index 58f7ec6..b3aebb3 100644
--- a/scripts/makefile.sggcc
+++ b/scripts/makefile.sggcc
@@ -6,7 +6,7 @@
 # Library name:
 LIBNAME=libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.sgi b/scripts/makefile.sgi
index 64a6595..1221b1a 100644
--- a/scripts/makefile.sgi
+++ b/scripts/makefile.sgi
@@ -6,7 +6,7 @@
 # Library name:
 LIBNAME=libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.so9 b/scripts/makefile.so9
index 3b1a286..713a904 100644
--- a/scripts/makefile.so9
+++ b/scripts/makefile.so9
@@ -8,7 +8,7 @@
 
 # Library name:
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 LIBNAME = libpng12
 
diff --git a/scripts/makefile.solaris b/scripts/makefile.solaris
index 01b10f4..5ca0345 100644
--- a/scripts/makefile.solaris
+++ b/scripts/makefile.solaris
@@ -8,7 +8,7 @@
 # Library name:
 LIBNAME = libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/makefile.solaris-x86 b/scripts/makefile.solaris-x86
index e4e2b74..c908326 100644
--- a/scripts/makefile.solaris-x86
+++ b/scripts/makefile.solaris-x86
@@ -8,7 +8,7 @@
 # Library name:
 LIBNAME = libpng12
 PNGMAJ = 0
-PNGMIN = 1.2.20rc4
+PNGMIN = 1.2.20rc5
 PNGVER = $(PNGMAJ).$(PNGMIN)
 
 # Shared library names:
diff --git a/scripts/pngos2.def b/scripts/pngos2.def
index 4a6b3f1..707c6f9 100644
--- a/scripts/pngos2.def
+++ b/scripts/pngos2.def
@@ -2,7 +2,7 @@
 ; PNG.LIB module definition file for OS/2
 ;----------------------------------------
 
-; Version 1.2.20rc4
+; Version 1.2.20rc5
 
 LIBRARY		PNG
 DESCRIPTION	"PNG image compression library for OS/2"
diff --git a/scripts/pngw32.def b/scripts/pngw32.def
index b31fa79..48cb28a 100644
--- a/scripts/pngw32.def
+++ b/scripts/pngw32.def
@@ -5,7 +5,7 @@
 LIBRARY
 
 EXPORTS
-;Version 1.2.20rc4
+;Version 1.2.20rc5
   png_build_grayscale_palette  @1
   png_check_sig        @2
   png_chunk_error      @3