Avoid free-before-initialize vulnerability in heap am: 6995c84 am: ca1a1ff am: b8c0a86 am: 02a513a am: 680f668
am: 4b075cb

* commit '4b075cb788972697b9128aae41446f3b4708951d':
  Avoid free-before-initialize vulnerability in heap
diff --git a/README.version b/README.version
new file mode 100644
index 0000000..0f07f97
--- /dev/null
+++ b/README.version
@@ -0,0 +1,3 @@
+URL: http://downloads.xiph.org/releases/flac/flac-1.2.1.tar.gz
+Version: 1.2.1
+BugComponent: 42195
diff --git a/include/FLAC/all.h b/include/FLAC/all.h
deleted file mode 100644
index 6f4d336..0000000
--- a/include/FLAC/all.h
+++ /dev/null
@@ -1,371 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2000-2009  Josh Coalson
- * Copyright (C) 2011-2014  Xiph.Org Foundation
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__ALL_H
-#define FLAC__ALL_H
-
-#include "export.h"
-
-#include "assert.h"
-#include "callback.h"
-#include "format.h"
-#include "metadata.h"
-#include "ordinals.h"
-#include "stream_decoder.h"
-#include "stream_encoder.h"
-
-/** \mainpage
- *
- * \section intro Introduction
- *
- * This is the documentation for the FLAC C and C++ APIs.  It is
- * highly interconnected; this introduction should give you a top
- * level idea of the structure and how to find the information you
- * need.  As a prerequisite you should have at least a basic
- * knowledge of the FLAC format, documented
- * <A HREF="../format.html">here</A>.
- *
- * \section c_api FLAC C API
- *
- * The FLAC C API is the interface to libFLAC, a set of structures
- * describing the components of FLAC streams, and functions for
- * encoding and decoding streams, as well as manipulating FLAC
- * metadata in files.  The public include files will be installed
- * in your include area (for example /usr/include/FLAC/...).
- *
- * By writing a little code and linking against libFLAC, it is
- * relatively easy to add FLAC support to another program.  The
- * library is licensed under <A HREF="../license.html">Xiph's BSD license</A>.
- * Complete source code of libFLAC as well as the command-line
- * encoder and plugins is available and is a useful source of
- * examples.
- *
- * Aside from encoders and decoders, libFLAC provides a powerful
- * metadata interface for manipulating metadata in FLAC files.  It
- * allows the user to add, delete, and modify FLAC metadata blocks
- * and it can automatically take advantage of PADDING blocks to avoid
- * rewriting the entire FLAC file when changing the size of the
- * metadata.
- *
- * libFLAC usually only requires the standard C library and C math
- * library. In particular, threading is not used so there is no
- * dependency on a thread library. However, libFLAC does not use
- * global variables and should be thread-safe.
- *
- * libFLAC also supports encoding to and decoding from Ogg FLAC.
- * However the metadata editing interfaces currently have limited
- * read-only support for Ogg FLAC files.
- *
- * \section cpp_api FLAC C++ API
- *
- * The FLAC C++ API is a set of classes that encapsulate the
- * structures and functions in libFLAC.  They provide slightly more
- * functionality with respect to metadata but are otherwise
- * equivalent.  For the most part, they share the same usage as
- * their counterparts in libFLAC, and the FLAC C API documentation
- * can be used as a supplement.  The public include files
- * for the C++ API will be installed in your include area (for
- * example /usr/include/FLAC++/...).
- *
- * libFLAC++ is also licensed under
- * <A HREF="../license.html">Xiph's BSD license</A>.
- *
- * \section getting_started Getting Started
- *
- * A good starting point for learning the API is to browse through
- * the <A HREF="modules.html">modules</A>.  Modules are logical
- * groupings of related functions or classes, which correspond roughly
- * to header files or sections of header files.  Each module includes a
- * detailed description of the general usage of its functions or
- * classes.
- *
- * From there you can go on to look at the documentation of
- * individual functions.  You can see different views of the individual
- * functions through the links in top bar across this page.
- *
- * If you prefer a more hands-on approach, you can jump right to some
- * <A HREF="../documentation_example_code.html">example code</A>.
- *
- * \section porting_guide Porting Guide
- *
- * Starting with FLAC 1.1.3 a \link porting Porting Guide \endlink
- * has been introduced which gives detailed instructions on how to
- * port your code to newer versions of FLAC.
- *
- * \section embedded_developers Embedded Developers
- *
- * libFLAC has grown larger over time as more functionality has been
- * included, but much of it may be unnecessary for a particular embedded
- * implementation.  Unused parts may be pruned by some simple editing of
- * src/libFLAC/Makefile.am.  In general, the decoders, encoders, and
- * metadata interface are all independent from each other.
- *
- * It is easiest to just describe the dependencies:
- *
- * - All modules depend on the \link flac_format Format \endlink module.
- * - The decoders and encoders depend on the bitbuffer.
- * - The decoder is independent of the encoder.  The encoder uses the
- *   decoder because of the verify feature, but this can be removed if
- *   not needed.
- * - Parts of the metadata interface require the stream decoder (but not
- *   the encoder).
- * - Ogg support is selectable through the compile time macro
- *   \c FLAC__HAS_OGG.
- *
- * For example, if your application only requires the stream decoder, no
- * encoder, and no metadata interface, you can remove the stream encoder
- * and the metadata interface, which will greatly reduce the size of the
- * library.
- *
- * Also, there are several places in the libFLAC code with comments marked
- * with "OPT:" where a #define can be changed to enable code that might be
- * faster on a specific platform.  Experimenting with these can yield faster
- * binaries.
- */
-
-/** \defgroup porting Porting Guide for New Versions
- *
- * This module describes differences in the library interfaces from
- * version to version.  It assists in the porting of code that uses
- * the libraries to newer versions of FLAC.
- *
- * One simple facility for making porting easier that has been added
- * in FLAC 1.1.3 is a set of \c #defines in \c export.h of each
- * library's includes (e.g. \c include/FLAC/export.h).  The
- * \c #defines mirror the libraries'
- * <A HREF="http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning">libtool version numbers</A>,
- * e.g. in libFLAC there are \c FLAC_API_VERSION_CURRENT,
- * \c FLAC_API_VERSION_REVISION, and \c FLAC_API_VERSION_AGE.
- * These can be used to support multiple versions of an API during the
- * transition phase, e.g.
- *
- * \code
- * #if !defined(FLAC_API_VERSION_CURRENT) || FLAC_API_VERSION_CURRENT <= 7
- *   legacy code
- * #else
- *   new code
- * #endif
- * \endcode
- *
- * The source will work for multiple versions and the legacy code can
- * easily be removed when the transition is complete.
- *
- * Another available symbol is FLAC_API_SUPPORTS_OGG_FLAC (defined in
- * include/FLAC/export.h), which can be used to determine whether or not
- * the library has been compiled with support for Ogg FLAC.  This is
- * simpler than trying to call an Ogg init function and catching the
- * error.
- */
-
-/** \defgroup porting_1_1_2_to_1_1_3 Porting from FLAC 1.1.2 to 1.1.3
- *  \ingroup porting
- *
- *  \brief
- *  This module describes porting from FLAC 1.1.2 to FLAC 1.1.3.
- *
- * The main change between the APIs in 1.1.2 and 1.1.3 is that they have
- * been simplified.  First, libOggFLAC has been merged into libFLAC and
- * libOggFLAC++ has been merged into libFLAC++.  Second, both the three
- * decoding layers and three encoding layers have been merged into a
- * single stream decoder and stream encoder.  That is, the functionality
- * of FLAC__SeekableStreamDecoder and FLAC__FileDecoder has been merged
- * into FLAC__StreamDecoder, and FLAC__SeekableStreamEncoder and
- * FLAC__FileEncoder into FLAC__StreamEncoder.  Only the
- * FLAC__StreamDecoder and FLAC__StreamEncoder remain.  What this means
- * is there is now a single API that can be used to encode or decode
- * streams to/from native FLAC or Ogg FLAC and the single API can work
- * on both seekable and non-seekable streams.
- *
- * Instead of creating an encoder or decoder of a certain layer, now the
- * client will always create a FLAC__StreamEncoder or
- * FLAC__StreamDecoder.  The old layers are now differentiated by the
- * initialization function.  For example, for the decoder,
- * FLAC__stream_decoder_init() has been replaced by
- * FLAC__stream_decoder_init_stream().  This init function takes
- * callbacks for the I/O, and the seeking callbacks are optional.  This
- * allows the client to use the same object for seekable and
- * non-seekable streams.  For decoding a FLAC file directly, the client
- * can use FLAC__stream_decoder_init_file() and pass just a filename
- * and fewer callbacks; most of the other callbacks are supplied
- * internally.  For situations where fopen()ing by filename is not
- * possible (e.g. Unicode filenames on Windows) the client can instead
- * open the file itself and supply the FILE* to
- * FLAC__stream_decoder_init_FILE().  The init functions now returns a
- * FLAC__StreamDecoderInitStatus instead of FLAC__StreamDecoderState.
- * Since the callbacks and client data are now passed to the init
- * function, the FLAC__stream_decoder_set_*_callback() functions and
- * FLAC__stream_decoder_set_client_data() are no longer needed.  The
- * rest of the calls to the decoder are the same as before.
- *
- * There are counterpart init functions for Ogg FLAC, e.g.
- * FLAC__stream_decoder_init_ogg_stream().  All the rest of the calls
- * and callbacks are the same as for native FLAC.
- *
- * As an example, in FLAC 1.1.2 a seekable stream decoder would have
- * been set up like so:
- *
- * \code
- * FLAC__SeekableStreamDecoder *decoder = FLAC__seekable_stream_decoder_new();
- * if(decoder == NULL) do_something;
- * FLAC__seekable_stream_decoder_set_md5_checking(decoder, true);
- * [... other settings ...]
- * FLAC__seekable_stream_decoder_set_read_callback(decoder, my_read_callback);
- * FLAC__seekable_stream_decoder_set_seek_callback(decoder, my_seek_callback);
- * FLAC__seekable_stream_decoder_set_tell_callback(decoder, my_tell_callback);
- * FLAC__seekable_stream_decoder_set_length_callback(decoder, my_length_callback);
- * FLAC__seekable_stream_decoder_set_eof_callback(decoder, my_eof_callback);
- * FLAC__seekable_stream_decoder_set_write_callback(decoder, my_write_callback);
- * FLAC__seekable_stream_decoder_set_metadata_callback(decoder, my_metadata_callback);
- * FLAC__seekable_stream_decoder_set_error_callback(decoder, my_error_callback);
- * FLAC__seekable_stream_decoder_set_client_data(decoder, my_client_data);
- * if(FLAC__seekable_stream_decoder_init(decoder) != FLAC__SEEKABLE_STREAM_DECODER_OK) do_something;
- * \endcode
- *
- * In FLAC 1.1.3 it is like this:
- *
- * \code
- * FLAC__StreamDecoder *decoder = FLAC__stream_decoder_new();
- * if(decoder == NULL) do_something;
- * FLAC__stream_decoder_set_md5_checking(decoder, true);
- * [... other settings ...]
- * if(FLAC__stream_decoder_init_stream(
- *   decoder,
- *   my_read_callback,
- *   my_seek_callback,      // or NULL
- *   my_tell_callback,      // or NULL
- *   my_length_callback,    // or NULL
- *   my_eof_callback,       // or NULL
- *   my_write_callback,
- *   my_metadata_callback,  // or NULL
- *   my_error_callback,
- *   my_client_data
- * ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
- * \endcode
- *
- * or you could do;
- *
- * \code
- * [...]
- * FILE *file = fopen("somefile.flac","rb");
- * if(file == NULL) do_somthing;
- * if(FLAC__stream_decoder_init_FILE(
- *   decoder,
- *   file,
- *   my_write_callback,
- *   my_metadata_callback,  // or NULL
- *   my_error_callback,
- *   my_client_data
- * ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
- * \endcode
- *
- * or just:
- *
- * \code
- * [...]
- * if(FLAC__stream_decoder_init_file(
- *   decoder,
- *   "somefile.flac",
- *   my_write_callback,
- *   my_metadata_callback,  // or NULL
- *   my_error_callback,
- *   my_client_data
- * ) != FLAC__STREAM_DECODER_INIT_STATUS_OK) do_something;
- * \endcode
- *
- * Another small change to the decoder is in how it handles unparseable
- * streams.  Before, when the decoder found an unparseable stream
- * (reserved for when the decoder encounters a stream from a future
- * encoder that it can't parse), it changed the state to
- * \c FLAC__STREAM_DECODER_UNPARSEABLE_STREAM.  Now the decoder instead
- * drops sync and calls the error callback with a new error code
- * \c FLAC__STREAM_DECODER_ERROR_STATUS_UNPARSEABLE_STREAM.  This is
- * more robust.  If your error callback does not discriminate on the the
- * error state, your code does not need to be changed.
- *
- * The encoder now has a new setting:
- * FLAC__stream_encoder_set_apodization().  This is for setting the
- * method used to window the data before LPC analysis.  You only need to
- * add a call to this function if the default is not suitable.   There
- * are also two new convenience functions that may be useful:
- * FLAC__metadata_object_cuesheet_calculate_cddb_id() and
- * FLAC__metadata_get_cuesheet().
- *
- * The \a bytes parameter to FLAC__StreamDecoderReadCallback,
- * FLAC__StreamEncoderReadCallback, and FLAC__StreamEncoderWriteCallback
- * is now \c size_t instead of \c unsigned.
- */
-
-/** \defgroup porting_1_1_3_to_1_1_4 Porting from FLAC 1.1.3 to 1.1.4
- *  \ingroup porting
- *
- *  \brief
- *  This module describes porting from FLAC 1.1.3 to FLAC 1.1.4.
- *
- * There were no changes to any of the interfaces from 1.1.3 to 1.1.4.
- * There was a slight change in the implementation of
- * FLAC__stream_encoder_set_metadata(); the function now makes a copy
- * of the \a metadata array of pointers so the client no longer needs
- * to maintain it after the call.  The objects themselves that are
- * pointed to by the array are still not copied though and must be
- * maintained until the call to FLAC__stream_encoder_finish().
- */
-
-/** \defgroup porting_1_1_4_to_1_2_0 Porting from FLAC 1.1.4 to 1.2.0
- *  \ingroup porting
- *
- *  \brief
- *  This module describes porting from FLAC 1.1.4 to FLAC 1.2.0.
- *
- * There were only very minor changes to the interfaces from 1.1.4 to 1.2.0.
- * In libFLAC, \c FLAC__format_sample_rate_is_subset() was added.
- * In libFLAC++, \c FLAC::Decoder::Stream::get_decode_position() was added.
- *
- * Finally, value of the constant \c FLAC__FRAME_HEADER_RESERVED_LEN
- * has changed to reflect the conversion of one of the reserved bits
- * into active use.  It used to be \c 2 and now is \c 1.  However the
- * FLAC frame header length has not changed, so to skip the proper
- * number of bits, use \c FLAC__FRAME_HEADER_RESERVED_LEN +
- * \c FLAC__FRAME_HEADER_BLOCKING_STRATEGY_LEN
- */
-
-/** \defgroup flac FLAC C API
- *
- * The FLAC C API is the interface to libFLAC, a set of structures
- * describing the components of FLAC streams, and functions for
- * encoding and decoding streams, as well as manipulating FLAC
- * metadata in files.
- *
- * You should start with the format components as all other modules
- * are dependent on it.
- */
-
-#endif
diff --git a/include/share/alloc.h b/include/share/alloc.h
index 5e1f1e2..3b70749 100644
--- a/include/share/alloc.h
+++ b/include/share/alloc.h
@@ -153,11 +153,21 @@
 	return malloc(size1*size2);
 }
 
+static inline void *safe_realloc_(void *ptr, size_t size)
+{
+	void *oldptr = ptr;
+	void *newptr = realloc(ptr, size);
+	if(size > 0 && newptr == 0)
+		free(oldptr);
+	return newptr;
+}
 static inline void *safe_realloc_add_2op_(void *ptr, size_t size1, size_t size2)
 {
 	size2 += size1;
-	if(size2 < size1)
+	if(size2 < size1) {
+		free(ptr);
 		return 0;
+	}
 	return realloc(ptr, size2);
 }
 
@@ -192,7 +202,7 @@
 		return realloc(ptr, 0); /* preserve POSIX realloc(ptr, 0) semantics */
 	if(size1 > SIZE_MAX / size2)
 		return 0;
-	return realloc(ptr, size1*size2);
+	return safe_realloc_(ptr, size1*size2);
 }
 
 /* size1 * (size2 + size3) */
diff --git a/include/share/compat.h b/include/share/compat.h
index 1ee5cc4..671b110 100644
--- a/include/share/compat.h
+++ b/include/share/compat.h
@@ -87,7 +87,10 @@
 
 #define FLAC__U64L(x) x##ULL
 
-#if defined _MSC_VER || defined __BORLANDC__ || defined __MINGW32__
+#if defined _MSC_VER || defined __MINGW32__
+#define FLAC__STRCASECMP _stricmp
+#define FLAC__STRNCASECMP _strnicmp
+#elif defined __BORLANDC__
 #define FLAC__STRCASECMP stricmp
 #define FLAC__STRNCASECMP strnicmp
 #else
diff --git a/libFLAC/Makefile.am b/libFLAC/Makefile.am
deleted file mode 100644
index cbfb0ac..0000000
--- a/libFLAC/Makefile.am
+++ /dev/null
@@ -1,118 +0,0 @@
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-lib_LTLIBRARIES = libFLAC.la
-if DEBUG
-DEBUGCFLAGS = -DFLAC__OVERFLOW_DETECT
-endif
-if FLaC__CPU_PPC
-# The -force_cpusubtype_ALL is needed to insert a ppc64 instruction
-# into cpu.c with an asm().
-if FLaC__SYS_DARWIN
-#@@@ PPC optimizations temporarily disabled
-CPUCFLAGS = -faltivec -force_cpusubtype_ALL -DFLAC__NO_ASM
-else
-# Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific
-#@@@ PPC optimizations temporarily disabled
-CPUCFLAGS = -maltivec -mabi=altivec -DFLAC__NO_ASM
-endif
-endif
-
-AM_CFLAGS = $(DEBUGCFLAGS) $(CPUCFLAGS) @OGG_CFLAGS@
-
-if FLaC__NO_ASM
-else
-if FLaC__CPU_IA32
-if FLaC__HAS_NASM
-ARCH_SUBDIRS = ia32
-LOCAL_EXTRA_LIBADD = ia32/libFLAC-asm.la
-endif
-endif
-if FLaC__CPU_PPC
-ARCH_SUBDIRS = ppc
-if FLaC__HAS_AS__TEMPORARILY_DISABLED
-LOCAL_EXTRA_LIBADD = ppc/as/libFLAC-asm.la
-LOCAL_EXTRA_LDFLAGS = "-Wl,-read_only_relocs,warning"
-else
-if FLaC__HAS_GAS__TEMPORARILY_DISABLED
-LOCAL_EXTRA_LIBADD = ppc/gas/libFLAC-asm.la
-LOCAL_EXTRA_LDFLAGS = ""
-endif
-endif
-endif
-endif
-
-libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@
-
-SUBDIRS = $(ARCH_SUBDIRS) include .
-
-m4datadir = $(datadir)/aclocal
-m4data_DATA = libFLAC.m4
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = flac.pc
-
-EXTRA_DIST = \
-	Makefile.lite \
-	flac.pc.in \
-	libFLAC_dynamic.dsp \
-	libFLAC_dynamic.vcproj \
-	libFLAC_static.dsp \
-	libFLAC_static.vcproj \
-	libFLAC.m4
-
-if FLaC__HAS_OGG
-extra_ogg_sources = \
-	ogg_decoder_aspect.c \
-	ogg_encoder_aspect.c \
-	ogg_helper.c \
-	ogg_mapping.c
-endif
-# see 'http://www.gnu.org/software/libtool/manual.html#Libtool-versioning' for numbering convention
-libFLAC_la_LDFLAGS = -version-info 10:0:2 -lm $(LOCAL_EXTRA_LDFLAGS)
-libFLAC_la_SOURCES = \
-	bitmath.c \
-	bitreader.c \
-	bitwriter.c \
-	cpu.c \
-	crc.c \
-	fixed.c \
-	float.c \
-	format.c \
-	lpc.c \
-	md5.c \
-	memory.c \
-	metadata_iterators.c \
-	metadata_object.c \
-	stream_decoder.c \
-	stream_encoder.c \
-	stream_encoder_framing.c \
-	window.c \
-	$(extra_ogg_sources)
diff --git a/libFLAC/Makefile.in b/libFLAC/Makefile.in
deleted file mode 100644
index 75bfbbb..0000000
--- a/libFLAC/Makefile.in
+++ /dev/null
@@ -1,872 +0,0 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
-# @configure_input@
-
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# 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@
-
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../..
-
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-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 = :
-host_triplet = @host@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCAS = @CCAS@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FALSE = @DEBUG_FALSE@
-DEBUG_TRUE = @DEBUG_TRUE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@
-DOXYGEN = @DOXYGEN@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@
-FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@
-FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@
-FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@
-FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@
-FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@
-FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@
-FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@
-FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@
-FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@
-FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@
-FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@
-FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@
-FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@
-FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@
-FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@
-FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@
-FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@
-FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@
-FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@
-FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@
-FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@
-FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@
-FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@
-FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@
-FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@
-FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@
-FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@
-FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@
-FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@
-FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@
-FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@
-FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@
-FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@
-GAS = @GAS@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@
-NASM = @NASM@
-OBJEXT = @OBJEXT@
-OBJ_FORMAT = @OBJ_FORMAT@
-OGG_CFLAGS = @OGG_CFLAGS@
-OGG_LIBS = @OGG_LIBS@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-XMMS_CFLAGS = @XMMS_CFLAGS@
-XMMS_CONFIG = @XMMS_CONFIG@
-XMMS_DATA_DIR = @XMMS_DATA_DIR@
-XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@
-XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@
-XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@
-XMMS_LIBS = @XMMS_LIBS@
-XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@
-XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@
-XMMS_VERSION = @XMMS_VERSION@
-XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-lib_LTLIBRARIES = libFLAC.la
-@DEBUG_TRUE@DEBUGCFLAGS = -DFLAC__OVERFLOW_DETECT
-# The -force_cpusubtype_ALL is needed to insert a ppc64 instruction
-# into cpu.c with an asm().
-#@@@ PPC optimizations temporarily disabled
-@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_TRUE@CPUCFLAGS = -faltivec -force_cpusubtype_ALL -DFLAC__NO_ASM
-# Linux-gcc for PPC does not have -force_cpusubtype_ALL, it is Darwin-specific
-#@@@ PPC optimizations temporarily disabled
-@FLaC__CPU_PPC_TRUE@@FLaC__SYS_DARWIN_FALSE@CPUCFLAGS = -maltivec -mabi=altivec -DFLAC__NO_ASM
-
-AM_CFLAGS = $(DEBUGCFLAGS) $(CPUCFLAGS) @OGG_CFLAGS@
-@FLaC__CPU_PPC_TRUE@@FLaC__NO_ASM_FALSE@ARCH_SUBDIRS = ppc
-
-@FLaC__CPU_IA32_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@ARCH_SUBDIRS = ia32
-@FLaC__CPU_IA32_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@LOCAL_EXTRA_LIBADD = ia32/libFLAC-asm.la
-@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__NO_ASM_FALSE@LOCAL_EXTRA_LIBADD = ppc/as/libFLAC-asm.la
-@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__NO_ASM_FALSE@LOCAL_EXTRA_LIBADD = ppc/gas/libFLAC-asm.la
-@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__NO_ASM_FALSE@LOCAL_EXTRA_LDFLAGS = "-Wl,-read_only_relocs,warning"
-@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__NO_ASM_FALSE@LOCAL_EXTRA_LDFLAGS = ""
-
-libFLAC_la_LIBADD = $(LOCAL_EXTRA_LIBADD) @OGG_LIBS@
-
-SUBDIRS = $(ARCH_SUBDIRS) include .
-
-m4datadir = $(datadir)/aclocal
-m4data_DATA = libFLAC.m4
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = flac.pc
-
-EXTRA_DIST = \
-	Makefile.lite \
-	flac.pc.in \
-	libFLAC_dynamic.dsp \
-	libFLAC_dynamic.vcproj \
-	libFLAC_static.dsp \
-	libFLAC_static.vcproj \
-	libFLAC.m4
-
-
-@FLaC__HAS_OGG_TRUE@extra_ogg_sources = \
-@FLaC__HAS_OGG_TRUE@	ogg_decoder_aspect.c \
-@FLaC__HAS_OGG_TRUE@	ogg_encoder_aspect.c \
-@FLaC__HAS_OGG_TRUE@	ogg_helper.c \
-@FLaC__HAS_OGG_TRUE@	ogg_mapping.c
-
-# see 'http://www.gnu.org/software/libtool/manual.html#Libtool-versioning' for numbering convention
-libFLAC_la_LDFLAGS = -version-info 10:0:2 -lm $(LOCAL_EXTRA_LDFLAGS)
-libFLAC_la_SOURCES = \
-	bitmath.c \
-	bitreader.c \
-	bitwriter.c \
-	cpu.c \
-	crc.c \
-	fixed.c \
-	float.c \
-	format.c \
-	lpc.c \
-	md5.c \
-	memory.c \
-	metadata_iterators.c \
-	metadata_object.c \
-	stream_decoder.c \
-	stream_encoder.c \
-	stream_encoder_framing.c \
-	window.c \
-	$(extra_ogg_sources)
-
-subdir = src/libFLAC
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES = flac.pc
-LTLIBRARIES = $(lib_LTLIBRARIES)
-
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@	ppc/gas/libFLAC-asm.la
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ppc/gas/libFLAC-asm.la
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@	ppc/as/libFLAC-asm.la
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ppc/as/libFLAC-asm.la
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@	ppc/as/libFLAC-asm.la
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_FALSE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ppc/as/libFLAC-asm.la
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ia32/libFLAC-asm.la
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ia32/libFLAC-asm.la
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ia32/libFLAC-asm.la
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_FALSE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ia32/libFLAC-asm.la
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ia32/libFLAC-asm.la
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@	ppc/gas/libFLAC-asm.la
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ia32/libFLAC-asm.la \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ppc/gas/libFLAC-asm.la
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@	ppc/as/libFLAC-asm.la
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ia32/libFLAC-asm.la \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ppc/as/libFLAC-asm.la
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_FALSE@@FLaC__NO_ASM_FALSE@	ppc/as/libFLAC-asm.la
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_TRUE@libFLAC_la_DEPENDENCIES =
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@libFLAC_la_DEPENDENCIES = \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ia32/libFLAC-asm.la \
-@FLaC__CPU_IA32_TRUE@@FLaC__CPU_PPC_TRUE@@FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@@FLaC__HAS_NASM_TRUE@@FLaC__NO_ASM_FALSE@	ppc/as/libFLAC-asm.la
-am__libFLAC_la_SOURCES_DIST = bitmath.c bitreader.c bitwriter.c cpu.c \
-	crc.c fixed.c float.c format.c lpc.c md5.c memory.c \
-	metadata_iterators.c metadata_object.c stream_decoder.c \
-	stream_encoder.c stream_encoder_framing.c window.c \
-	ogg_decoder_aspect.c ogg_encoder_aspect.c ogg_helper.c \
-	ogg_mapping.c
-@FLaC__HAS_OGG_TRUE@am__objects_1 = ogg_decoder_aspect.lo \
-@FLaC__HAS_OGG_TRUE@	ogg_encoder_aspect.lo ogg_helper.lo \
-@FLaC__HAS_OGG_TRUE@	ogg_mapping.lo
-am_libFLAC_la_OBJECTS = bitmath.lo bitreader.lo bitwriter.lo cpu.lo \
-	crc.lo fixed.lo float.lo format.lo lpc.lo md5.lo memory.lo \
-	metadata_iterators.lo metadata_object.lo stream_decoder.lo \
-	stream_encoder.lo stream_encoder_framing.lo window.lo \
-	$(am__objects_1)
-libFLAC_la_OBJECTS = $(am_libFLAC_la_OBJECTS)
-
-DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/bitmath.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/bitreader.Plo ./$(DEPDIR)/bitwriter.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/cpu.Plo ./$(DEPDIR)/crc.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/fixed.Plo ./$(DEPDIR)/float.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/format.Plo ./$(DEPDIR)/lpc.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/md5.Plo ./$(DEPDIR)/memory.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/metadata_iterators.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/metadata_object.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/ogg_decoder_aspect.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/ogg_encoder_aspect.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/ogg_helper.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/ogg_mapping.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/stream_decoder.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/stream_encoder.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/stream_encoder_framing.Plo \
-@AMDEP_TRUE@	./$(DEPDIR)/window.Plo
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
-	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = $(am__libFLAC_la_SOURCES_DIST)
-DATA = $(m4data_DATA) $(pkgconfig_DATA)
-
-
-RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
-	ps-recursive install-info-recursive uninstall-info-recursive \
-	all-recursive install-data-recursive install-exec-recursive \
-	installdirs-recursive install-recursive uninstall-recursive \
-	check-recursive installcheck-recursive
-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am flac.pc.in
-DIST_SUBDIRS = ppc ia32 include .
-SOURCES = $(libFLAC_la_SOURCES)
-
-all: all-recursive
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/libFLAC/Makefile
-Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-flac.pc: $(top_builddir)/config.status flac.pc.in
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-libLTLIBRARIES_INSTALL = $(INSTALL)
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
-	@$(NORMAL_INSTALL)
-	$(mkinstalldirs) $(DESTDIR)$(libdir)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  if test -f $$p; then \
-	    f="`echo $$p | sed -e 's|^.*/||'`"; \
-	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \
-	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f; \
-	  else :; fi; \
-	done
-
-uninstall-libLTLIBRARIES:
-	@$(NORMAL_UNINSTALL)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	    p="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \
-	  $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \
-	done
-
-clean-libLTLIBRARIES:
-	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
-	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" = "$$p" && dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libFLAC.la: $(libFLAC_la_OBJECTS) $(libFLAC_la_DEPENDENCIES) 
-	$(LINK) -rpath $(libdir) $(libFLAC_la_LDFLAGS) $(libFLAC_la_OBJECTS) $(libFLAC_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT) core *.core
-
-distclean-compile:
-	-rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitmath.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitreader.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitwriter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cpu.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fixed.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/float.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lpc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memory.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metadata_iterators.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metadata_object.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ogg_decoder_aspect.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ogg_encoder_aspect.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ogg_helper.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ogg_mapping.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stream_encoder_framing.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/window.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@	fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$<
-
-.c.obj:
-@am__fastdepCC_TRUE@	if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@	  -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \
-@am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@	fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
-
-.c.lo:
-@am__fastdepCC_TRUE@	if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \
-@am__fastdepCC_TRUE@	  -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \
-@am__fastdepCC_TRUE@	else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \
-@am__fastdepCC_TRUE@	fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
-m4dataDATA_INSTALL = $(INSTALL_DATA)
-install-m4dataDATA: $(m4data_DATA)
-	@$(NORMAL_INSTALL)
-	$(mkinstalldirs) $(DESTDIR)$(m4datadir)
-	@list='$(m4data_DATA)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " $(m4dataDATA_INSTALL) $$d$$p $(DESTDIR)$(m4datadir)/$$f"; \
-	  $(m4dataDATA_INSTALL) $$d$$p $(DESTDIR)$(m4datadir)/$$f; \
-	done
-
-uninstall-m4dataDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(m4data_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " rm -f $(DESTDIR)$(m4datadir)/$$f"; \
-	  rm -f $(DESTDIR)$(m4datadir)/$$f; \
-	done
-pkgconfigDATA_INSTALL = $(INSTALL_DATA)
-install-pkgconfigDATA: $(pkgconfig_DATA)
-	@$(NORMAL_INSTALL)
-	$(mkinstalldirs) $(DESTDIR)$(pkgconfigdir)
-	@list='$(pkgconfig_DATA)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f"; \
-	  $(pkgconfigDATA_INSTALL) $$d$$p $(DESTDIR)$(pkgconfigdir)/$$f; \
-	done
-
-uninstall-pkgconfigDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(pkgconfig_DATA)'; for p in $$list; do \
-	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " rm -f $(DESTDIR)$(pkgconfigdir)/$$f"; \
-	  rm -f $(DESTDIR)$(pkgconfigdir)/$$f; \
-	done
-
-# 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.
-$(RECURSIVE_TARGETS):
-	@set fnord $$MAKEFLAGS; amf=$$2; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; 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; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
-	@set fnord $$MAKEFLAGS; amf=$$2; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	mkid -fID $$unique
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	if (etags --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	else \
-	  include_option=--include; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -f $$subdir/TAGS && \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
-
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ../..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-	list='$(DISTFILES)'; for file in $$list; do \
-	  case $$file in \
-	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-	  esac; \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    dir="/$$dir"; \
-	    $(mkinstalldirs) "$(distdir)$$dir"; \
-	  else \
-	    dir=''; \
-	  fi; \
-	  if test -d $$d/$$file; then \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$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 \
-	    test -d $(distdir)/$$subdir \
-	    || mkdir $(distdir)/$$subdir \
-	    || exit 1; \
-	    (cd $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$(top_distdir)" \
-	        distdir=../$(distdir)/$$subdir \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-recursive
-all-am: Makefile $(LTLIBRARIES) $(DATA)
-installdirs: installdirs-recursive
-installdirs-am:
-	$(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(m4datadir) $(DESTDIR)$(pkgconfigdir)
-
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-rm -f $(CONFIG_CLEAN_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-recursive
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
-	mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-libtool distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am: install-m4dataDATA install-pkgconfigDATA
-
-install-exec-am: install-libLTLIBRARIES
-
-install-info: install-info-recursive
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -rf ./$(DEPDIR)
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-info-am uninstall-libLTLIBRARIES \
-	uninstall-m4dataDATA uninstall-pkgconfigDATA
-
-uninstall-info: uninstall-info-recursive
-
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
-	clean-generic clean-libLTLIBRARIES clean-libtool \
-	clean-recursive ctags ctags-recursive distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-recursive distclean-tags distdir dvi dvi-am \
-	dvi-recursive info info-am info-recursive install install-am \
-	install-data install-data-am install-data-recursive \
-	install-exec install-exec-am install-exec-recursive \
-	install-info install-info-am install-info-recursive \
-	install-libLTLIBRARIES install-m4dataDATA install-man \
-	install-pkgconfigDATA install-recursive install-strip \
-	installcheck installcheck-am installdirs installdirs-am \
-	installdirs-recursive maintainer-clean maintainer-clean-generic \
-	maintainer-clean-recursive mostlyclean mostlyclean-compile \
-	mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \
-	pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \
-	tags-recursive uninstall uninstall-am uninstall-info-am \
-	uninstall-info-recursive uninstall-libLTLIBRARIES \
-	uninstall-m4dataDATA uninstall-pkgconfigDATA \
-	uninstall-recursive
-
-# 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:
diff --git a/libFLAC/Makefile.lite b/libFLAC/Makefile.lite
deleted file mode 100644
index 8ea37f8..0000000
--- a/libFLAC/Makefile.lite
+++ /dev/null
@@ -1,90 +0,0 @@
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#
-# GNU makefile
-#
-
-topdir = ../..
-
-LIB_NAME = libFLAC
-ifeq ($(DARWIN_BUILD),yes)
-DEFINES = -DFLAC__CPU_PPC -DFLAC__USE_ALTIVEC -DFLAC__ALIGN_MALLOC_DATA
-else
-ifeq ($(SOLARIS_BUILD),yes)
-DEFINES = -DFLAC__NO_ASM -DFLAC__ALIGN_MALLOC_DATA
-else
-DEFINES = -DFLAC__CPU_IA32 -DFLAC__USE_3DNOW -DFLAC__HAS_NASM -DFLAC__ALIGN_MALLOC_DATA
-endif
-endif
-INCLUDES = -I./include -I$(topdir)/include -I$(OGG_INCLUDE_DIR)
-DEBUG_CFLAGS = -DFLAC__OVERFLOW_DETECT
-
-ifeq ($(DARWIN_BUILD),yes)
-SRCS_S = \
-	ppc/as/lpc_asm.s
-else
-ifeq ($(SOLARIS_BUILD),yes)
-else
-SRCS_NASM = \
-	ia32/bitreader_asm.nasm \
-	ia32/cpu_asm.nasm \
-	ia32/fixed_asm.nasm \
-	ia32/lpc_asm.nasm \
-	ia32/stream_encoder_asm.nasm
-endif
-endif
-
-SRCS_C = \
-	bitmath.c \
-	bitreader.c \
-	bitwriter.c \
-	cpu.c \
-	crc.c \
-	fixed.c \
-	float.c \
-	format.c \
-	lpc.c \
-	md5.c \
-	memory.c \
-	metadata_iterators.c \
-	metadata_object.c \
-	ogg_decoder_aspect.c \
-	ogg_encoder_aspect.c \
-	ogg_helper.c \
-	ogg_mapping.c \
-	stream_decoder.c \
-	stream_encoder.c \
-	stream_encoder_framing.c \
-	window.c
-
-include $(topdir)/build/lib.mk
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
diff --git a/libFLAC/NOTICE b/libFLAC/NOTICE
deleted file mode 100644
index 0a104a9..0000000
--- a/libFLAC/NOTICE
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-- Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-- Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-
-- Neither the name of the Xiph.org Foundation nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/libFLAC/bitreader.c b/libFLAC/bitreader.c
index f61229b..67d0f37 100644
--- a/libFLAC/bitreader.c
+++ b/libFLAC/bitreader.c
@@ -418,12 +418,14 @@
 
 FLAC__bool FLAC__bitreader_read_raw_int32(FLAC__BitReader *br, FLAC__int32 *val, unsigned bits)
 {
+	FLAC__uint32 uval, mask;
 	/* OPT: inline raw uint32 code here, or make into a macro if possible in the .h file */
-	if(!FLAC__bitreader_read_raw_uint32(br, (FLAC__uint32*)val, bits))
+	if(!FLAC__bitreader_read_raw_uint32(br, &uval, bits))
 		return false;
-	/* sign-extend: */
-	*val <<= (32-bits);
-	*val >>= (32-bits);
+	/* sign-extend *val assuming it is currently bits wide. */
+	/* From: https://graphics.stanford.edu/~seander/bithacks.html#FixedSignExtend */
+	mask = 1u << (bits - 1);
+	*val = (uval ^ mask) - mask;
 	return true;
 }
 
diff --git a/libFLAC/bitwriter.c b/libFLAC/bitwriter.c
index 76be1bc..dcdd93e 100644
--- a/libFLAC/bitwriter.c
+++ b/libFLAC/bitwriter.c
@@ -520,7 +520,9 @@
 
 	while(nvals) {
 		/* fold signed to unsigned; actual formula is: negative(v)? -2v-1 : 2v */
-		uval = (*vals<<1) ^ (*vals>>31);
+		uval = *vals;
+		uval <<= 1;
+		uval ^= (*vals>>31);
 
 		msbits = uval >> parameter;
 
diff --git a/libFLAC/cpu.c b/libFLAC/cpu.c
index 40c7950..8249500 100644
--- a/libFLAC/cpu.c
+++ b/libFLAC/cpu.c
@@ -240,6 +240,8 @@
 # else
 		disable_sse(info);
 # endif
+#elif defined(__ANDROID__) || defined(ANDROID)
+		/* no need to check OS SSE support */
 #elif defined(__linux__)
 		int sse = 0;
 		struct sigaction sigill_save;
diff --git a/libFLAC/flac.pc.in b/libFLAC/flac.pc.in
deleted file mode 100644
index 8fc39f8..0000000
--- a/libFLAC/flac.pc.in
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: FLAC
-Description: Free Lossless Audio Codec Library
-Version: @VERSION@
-Libs: -L${libdir} -lFLAC -lm
-Cflags: -I${includedir}/FLAC
diff --git a/libFLAC/format.c b/libFLAC/format.c
index 4d0d832..0b1d10b 100644
--- a/libFLAC/format.c
+++ b/libFLAC/format.c
@@ -39,6 +39,7 @@
 #include <string.h> /* for memset() */
 #include "FLAC/assert.h"
 #include "FLAC/format.h"
+#include "share/alloc.h"
 #include "share/compat.h"
 #include "private/format.h"
 #include "private/macros.h"
@@ -274,6 +275,9 @@
 
 	FLAC__ASSERT(0 != seek_table);
 
+	if (seek_table->num_points == 0)
+		return 0;
+
 	/* sort the seekpoints */
 	qsort(seek_table->points, seek_table->num_points, sizeof(FLAC__StreamMetadata_SeekPoint), (int (*)(const void *, const void *))seekpoint_compare_);
 
@@ -573,9 +577,9 @@
 	FLAC__ASSERT(object->capacity_by_order > 0 || (0 == object->parameters && 0 == object->raw_bits));
 
 	if(object->capacity_by_order < max_partition_order) {
-		if(0 == (object->parameters = realloc(object->parameters, sizeof(unsigned)*(1 << max_partition_order))))
+		if(0 == (object->parameters = safe_realloc_(object->parameters, sizeof(unsigned)*(1 << max_partition_order))))
 			return false;
-		if(0 == (object->raw_bits = realloc(object->raw_bits, sizeof(unsigned)*(1 << max_partition_order))))
+		if(0 == (object->raw_bits = safe_realloc_(object->raw_bits, sizeof(unsigned)*(1 << max_partition_order))))
 			return false;
 		memset(object->raw_bits, 0, sizeof(unsigned)*(1 << max_partition_order));
 		object->capacity_by_order = max_partition_order;
diff --git a/libFLAC/ia32/Makefile.am b/libFLAC/ia32/Makefile.am
deleted file mode 100644
index 04a5b98..0000000
--- a/libFLAC/ia32/Makefile.am
+++ /dev/null
@@ -1,45 +0,0 @@
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-SUFFIXES = .nasm .lo
-
-STRIP_NON_ASM = sh $(top_srcdir)/strip_non_asm_libtool_args.sh
-
-.nasm.lo:
-	$(LIBTOOL) --tag=CC --mode=compile $(STRIP_NON_ASM) $(NASM) -f $(OBJ_FORMAT) -d OBJ_FORMAT_$(OBJ_FORMAT) -i$(srcdir)/ $< -o $@
-
-noinst_LTLIBRARIES = libFLAC-asm.la
-libFLAC_asm_la_SOURCES = \
-	bitreader_asm.nasm \
-	cpu_asm.nasm \
-	fixed_asm.nasm \
-	lpc_asm.nasm \
-	nasm.h \
-	stream_encoder_asm.nasm
diff --git a/libFLAC/ia32/Makefile.in b/libFLAC/ia32/Makefile.in
deleted file mode 100644
index 3a14b13..0000000
--- a/libFLAC/ia32/Makefile.in
+++ /dev/null
@@ -1,487 +0,0 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
-# @configure_input@
-
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# 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@
-
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../..
-
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-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 = :
-host_triplet = @host@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCAS = @CCAS@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FALSE = @DEBUG_FALSE@
-DEBUG_TRUE = @DEBUG_TRUE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@
-DOXYGEN = @DOXYGEN@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@
-FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@
-FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@
-FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@
-FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@
-FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@
-FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@
-FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@
-FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@
-FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@
-FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@
-FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@
-FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@
-FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@
-FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@
-FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@
-FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@
-FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@
-FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@
-FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@
-FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@
-FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@
-FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@
-FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@
-FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@
-FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@
-FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@
-FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@
-FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@
-FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@
-FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@
-FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@
-FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@
-FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@
-GAS = @GAS@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@
-NASM = @NASM@
-OBJEXT = @OBJEXT@
-OBJ_FORMAT = @OBJ_FORMAT@
-OGG_CFLAGS = @OGG_CFLAGS@
-OGG_LIBS = @OGG_LIBS@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-XMMS_CFLAGS = @XMMS_CFLAGS@
-XMMS_CONFIG = @XMMS_CONFIG@
-XMMS_DATA_DIR = @XMMS_DATA_DIR@
-XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@
-XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@
-XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@
-XMMS_LIBS = @XMMS_LIBS@
-XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@
-XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@
-XMMS_VERSION = @XMMS_VERSION@
-XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-SUFFIXES = .nasm .lo
-
-STRIP_NON_ASM = sh $(top_srcdir)/strip_non_asm_libtool_args.sh
-
-noinst_LTLIBRARIES = libFLAC-asm.la
-libFLAC_asm_la_SOURCES = \
-	bitreader_asm.nasm \
-	cpu_asm.nasm \
-	fixed_asm.nasm \
-	lpc_asm.nasm \
-	nasm.h \
-	stream_encoder_asm.nasm
-
-subdir = src/libFLAC/ia32
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-
-libFLAC_asm_la_LDFLAGS =
-libFLAC_asm_la_LIBADD =
-am_libFLAC_asm_la_OBJECTS = bitreader_asm.lo cpu_asm.lo fixed_asm.lo \
-	lpc_asm.lo stream_encoder_asm.lo
-libFLAC_asm_la_OBJECTS = $(am_libFLAC_asm_la_OBJECTS)
-
-DEFAULT_INCLUDES =  -I. -I$(srcdir) -I$(top_builddir)
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \
-	$(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-DIST_SOURCES = $(libFLAC_asm_la_SOURCES)
-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
-SOURCES = $(libFLAC_asm_la_SOURCES)
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .nasm .lo
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/libFLAC/ia32/Makefile
-Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-clean-noinstLTLIBRARIES:
-	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
-	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
-	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
-	  test "$$dir" = "$$p" && dir=.; \
-	  echo "rm -f \"$${dir}/so_locations\""; \
-	  rm -f "$${dir}/so_locations"; \
-	done
-libFLAC-asm.la: $(libFLAC_asm_la_OBJECTS) $(libFLAC_asm_la_DEPENDENCIES) 
-	$(LINK)  $(libFLAC_asm_la_LDFLAGS) $(libFLAC_asm_la_OBJECTS) $(libFLAC_asm_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
-	-rm -f *.$(OBJEXT) core *.core
-
-distclean-compile:
-	-rm -f *.tab.c
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
-
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	mkid -fID $$unique
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
-
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ../../..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-	list='$(DISTFILES)'; for file in $$list; do \
-	  case $$file in \
-	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-	  esac; \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    dir="/$$dir"; \
-	    $(mkinstalldirs) "$(distdir)$$dir"; \
-	  else \
-	    dir=''; \
-	  fi; \
-	  if test -d $$d/$$file; then \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$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 $(LTLIBRARIES)
-
-installdirs:
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-rm -f $(CONFIG_CLEAN_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 clean-libtool clean-noinstLTLIBRARIES \
-	mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
-	distclean-libtool distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
-	mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool clean-noinstLTLIBRARIES ctags distclean \
-	distclean-compile distclean-generic distclean-libtool \
-	distclean-tags distdir dvi dvi-am info info-am install \
-	install-am install-data install-data-am install-exec \
-	install-exec-am install-info install-info-am install-man \
-	install-strip installcheck installcheck-am installdirs \
-	maintainer-clean maintainer-clean-generic mostlyclean \
-	mostlyclean-compile mostlyclean-generic mostlyclean-libtool pdf \
-	pdf-am ps ps-am tags uninstall uninstall-am uninstall-info-am
-
-
-.nasm.lo:
-	$(LIBTOOL) --tag=CC --mode=compile $(STRIP_NON_ASM) $(NASM) -f $(OBJ_FORMAT) -d OBJ_FORMAT_$(OBJ_FORMAT) -i$(srcdir)/ $< -o $@
-# 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:
diff --git a/libFLAC/ia32/bitreader_asm.nasm b/libFLAC/ia32/bitreader_asm.nasm
deleted file mode 100644
index 5d1bbfa..0000000
--- a/libFLAC/ia32/bitreader_asm.nasm
+++ /dev/null
@@ -1,568 +0,0 @@
-;  vim:filetype=nasm ts=8
-
-;  libFLAC - Free Lossless Audio Codec library
-;  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-;
-;  Redistribution and use in source and binary forms, with or without
-;  modification, are permitted provided that the following conditions
-;  are met:
-;
-;  - Redistributions of source code must retain the above copyright
-;  notice, this list of conditions and the following disclaimer.
-;
-;  - Redistributions in binary form must reproduce the above copyright
-;  notice, this list of conditions and the following disclaimer in the
-;  documentation and/or other materials provided with the distribution.
-;
-;  - Neither the name of the Xiph.org Foundation nor the names of its
-;  contributors may be used to endorse or promote products derived from
-;  this software without specific prior written permission.
-;
-;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-;  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-;  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-;  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-;  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-;  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-;  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-;  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-;  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-;  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-%include "nasm.h"
-
-	data_section
-
-cextern FLAC__crc16_table		; unsigned FLAC__crc16_table[256];
-cextern bitreader_read_from_client_	; FLAC__bool bitreader_read_from_client_(FLAC__BitReader *br);
-
-cglobal FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap
-
-	code_section
-
-
-; **********************************************************************
-;
-; void FLAC__bool FLAC__bitreader_read_rice_signed_block(FLAC__BitReader *br, int vals[], unsigned nvals, unsigned parameter)
-;
-; Some details like assertions and other checking is performed by the caller.
-	ALIGN 16
-cident FLAC__bitreader_read_rice_signed_block_asm_ia32_bswap
-
-	;ASSERT(0 != br);
-	;ASSERT(0 != br->buffer);
-	; WATCHOUT: code only works if sizeof(brword)==32; we can make things much faster with this assertion
-	;ASSERT(FLAC__BITS_PER_WORD == 32);
-	;ASSERT(parameter < 32);
-	; the above two asserts also guarantee that the binary part never straddles more than 2 words, so we don't have to loop to read it
-
-	;; peppered throughout the code at major checkpoints are keys like this as to where things are at that point in time
-	;; [esp + 16]	unsigned parameter
-	;; [esp + 12]	unsigned nvals
-	;; [esp + 8]	int vals[]
-	;; [esp + 4]	FLAC__BitReader *br
-	mov	eax, [esp + 12]		; if(nvals == 0)
-	test	eax, eax
-	ja	.nvals_gt_0
-	mov	eax, 1			;   return true;
-	ret
-
-.nvals_gt_0:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	sub	esp, 4
-	;; [esp + 36]	unsigned parameter
-	;; [esp + 32]	unsigned nvals
-	;; [esp + 28]	int vals[]
-	;; [esp + 24]	FLAC__BitReader *br
-	;; [esp]	ucbits
-	mov	ebp, [esp + 24]		; ebp <- br == br->buffer
-	mov	esi, [ebp + 16]		; esi <- br->consumed_words (aka 'cwords' in the C version)
-	mov	ecx, [ebp + 20]		; ecx <- br->consumed_bits  (aka 'cbits'  in the C version)
-	xor	edi, edi		; edi <- 0  'uval'
-	;; ecx		cbits
-	;; esi		cwords
-	;; edi		uval
-	;; ebp		br
-	;; [ebp]	br->buffer
-	;; [ebp + 8]	br->words
-	;; [ebp + 12]	br->bytes
-	;; [ebp + 16]	br->consumed_words
-	;; [ebp + 20]	br->consumed_bits
-	;; [ebp + 24]	br->read_crc
-	;; [ebp + 28]	br->crc16_align
-
-					; ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
-	mov	eax, [ebp + 8]		;   eax <- br->words
-	sub	eax, esi		;   eax <- br->words-cwords
-	shl	eax, 2			;   eax <- (br->words-cwords)*FLAC__BYTES_PER_WORD
-	add	eax, [ebp + 12]		;   eax <- (br->words-cwords)*FLAC__BYTES_PER_WORD + br->bytes
-	shl	eax, 3			;   eax <- (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8
-	sub	eax, ecx		;   eax <- (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits
-	mov	[esp], eax		;   ucbits <- eax
-
-	ALIGN 16
-.val_loop:				; while(1) {
-
-	;
-	; read unary part
-	;
-.unary_loop:				;   while(1) {
-	;; ecx		cbits
-	;; esi		cwords
-	;; edi		uval
-	;; ebp		br
-	cmp	esi, [ebp + 8]		;     while(cwords < br->words)   /* if we've not consumed up to a partial tail word... */
-	jae	near .c1_next1
-.c1_loop:				;     {
-	mov	ebx, [ebp]
-	mov	eax, [ebx + 4*esi]	;       b = br->buffer[cwords]
-	mov	edx, eax		;       edx = br->buffer[cwords] (saved for later use)
-	shl	eax, cl 		;       b = br->buffer[cwords] << cbits
-	test	eax, eax		;         (still have to test since cbits may be 0, thus ZF not updated for shl eax,0)
-	jz	near .c1_next2		;       if(b) {
-	bsr	ebx, eax
-	not	ebx
-	and	ebx, 31			;         ebx = 'i' = # of leading 0 bits in 'b' (eax)
-	add	ecx, ebx		;         cbits += i;
-	add	edi, ebx		;         uval += i;
-	add	ecx, byte 1		;         cbits++; /* skip over stop bit */
-	test	ecx, ~31
-	jz	near .break1 		;         if(cbits >= FLAC__BITS_PER_WORD) { /* faster way of testing if(cbits == FLAC__BITS_PER_WORD) */
-					;           crc16_update_word_(br, br->buffer[cwords]);
-	push	edi			;		[need more registers]
-	bswap	edx			;		edx = br->buffer[cwords] swapped; now we can CRC the bytes from LSByte to MSByte which makes things much easier
-	mov	ecx, [ebp + 28]		;		ecx <- br->crc16_align
-	mov	eax, [ebp + 24]		;		ax <- br->read_crc (a.k.a. crc)
-%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
-	mov	edi, _FLAC__crc16_table
-%else
-	mov	edi, FLAC__crc16_table
-%endif
-	;; eax (ax)	crc a.k.a. br->read_crc
-	;; ebx (bl)	intermediate result index into FLAC__crc16_table[]
-	;; ecx		br->crc16_align
-	;; edx		byteswapped brword to CRC
-	;; esi		cwords
-	;; edi		unsigned FLAC__crc16_table[]
-	;; ebp		br
-	test	ecx, ecx		;		switch(br->crc16_align) ...
-	jnz	.c0b4			;		[br->crc16_align is 0 the vast majority of the time so we optimize the common case]
-.c0b0:	xor	dl, ah			;		dl <- (crc>>8)^(word>>24)
-	movzx	ebx, dl
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^(word>>24)]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^(word>>24)]
-.c0b1:	xor	dh, ah			;		dh <- (crc>>8)^((word>>16)&0xff))
-	movzx	ebx, dh
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^((word>>16)&0xff))]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^((word>>16)&0xff))]
-	shr	edx, 16
-.c0b2:	xor	dl, ah			;		dl <- (crc>>8)^((word>>8)&0xff))
-	movzx	ebx, dl
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^((word>>8)&0xff))]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^((word>>8)&0xff))]
-.c0b3:	xor	dh, ah			;		dh <- (crc>>8)^(word&0xff)
-	movzx	ebx, dh
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^(word&0xff)]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^(word&0xff)]
-	movzx	eax, ax
-	mov	[ebp + 24], eax		;		br->read_crc <- crc
-	pop	edi
-
-	add	esi, byte 1		;           cwords++;
-	xor	ecx, ecx		;           cbits = 0;
-					;         }
-	jmp	near .break1		;         goto break1;
-	;; this section relocated out of the way for performance
-.c0b4:
-	mov	[ebp + 28], dword 0	;		br->crc16_align <- 0
-	cmp	ecx, 8
-	je	.c0b1
-	shr	edx, 16
-	cmp	ecx, 16
-	je	.c0b2
-	jmp	.c0b3
-
-	;; this section relocated out of the way for performance
-.c1b4:
-	mov	[ebp + 28], dword 0	;		br->crc16_align <- 0
-	cmp	ecx, 8
-	je	.c1b1
-	shr	edx, 16
-	cmp	ecx, 16
-	je	.c1b2
-	jmp	.c1b3
-
-.c1_next2:				;       } else {
-	;; ecx		cbits
-	;; edx		current brword 'b'
-	;; esi		cwords
-	;; edi		uval
-	;; ebp		br
-	add	edi, 32
-	sub	edi, ecx		;         uval += FLAC__BITS_PER_WORD - cbits;
-					;         crc16_update_word_(br, br->buffer[cwords]);
-	push	edi			;		[need more registers]
-	bswap	edx			;		edx = br->buffer[cwords] swapped; now we can CRC the bytes from LSByte to MSByte which makes things much easier
-	mov	ecx, [ebp + 28]		;		ecx <- br->crc16_align
-	mov	eax, [ebp + 24]		;		ax <- br->read_crc (a.k.a. crc)
-%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
-	mov	edi, _FLAC__crc16_table
-%else
-	mov	edi, FLAC__crc16_table
-%endif
-	;; eax (ax)	crc a.k.a. br->read_crc
-	;; ebx (bl)	intermediate result index into FLAC__crc16_table[]
-	;; ecx		br->crc16_align
-	;; edx		byteswapped brword to CRC
-	;; esi		cwords
-	;; edi		unsigned FLAC__crc16_table[]
-	;; ebp		br
-	test	ecx, ecx		;		switch(br->crc16_align) ...
-	jnz	.c1b4			;		[br->crc16_align is 0 the vast majority of the time so we optimize the common case]
-.c1b0:	xor	dl, ah			;		dl <- (crc>>8)^(word>>24)
-	movzx	ebx, dl
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^(word>>24)]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^(word>>24)]
-.c1b1:	xor	dh, ah			;		dh <- (crc>>8)^((word>>16)&0xff))
-	movzx	ebx, dh
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^((word>>16)&0xff))]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^((word>>16)&0xff))]
-	shr	edx, 16
-.c1b2:	xor	dl, ah			;		dl <- (crc>>8)^((word>>8)&0xff))
-	movzx	ebx, dl
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^((word>>8)&0xff))]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^((word>>8)&0xff))]
-.c1b3:	xor	dh, ah			;		dh <- (crc>>8)^(word&0xff)
-	movzx	ebx, dh
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^(word&0xff)]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^(word&0xff)]
-	movzx	eax, ax
-	mov	[ebp + 24], eax		;		br->read_crc <- crc
-	pop	edi
-
-	add	esi, byte 1		;         cwords++;
-	xor	ecx, ecx		;         cbits = 0;
-					;         /* didn't find stop bit yet, have to keep going... */
-					;       }
-
-	cmp	esi, [ebp + 8]		;     } while(cwords < br->words)   /* if we've not consumed up to a partial tail word... */
-	jb	near .c1_loop
-
-.c1_next1:
-	; at this point we've eaten up all the whole words; have to try
-	; reading through any tail bytes before calling the read callback.
-	; this is a repeat of the above logic adjusted for the fact we
-	; don't have a whole word.  note though if the client is feeding
-	; us data a byte at a time (unlikely), br->consumed_bits may not
-	; be zero.
-	;; ecx		cbits
-	;; esi		cwords
-	;; edi		uval
-	;; ebp		br
-	mov	edx, [ebp + 12]		;     edx <- br->bytes
-	test	edx, edx
-	jz	.read1			;     if(br->bytes) {  [NOTE: this case is rare so it doesn't have to be all that fast ]
-	mov	ebx, [ebp]
-	shl	edx, 3			;       edx <- const unsigned end = br->bytes * 8;
-	mov	eax, [ebx + 4*esi]	;       b = br->buffer[cwords]
-	xchg	edx, ecx		;       [edx <- cbits , ecx <- end]
-	mov	ebx, 0xffffffff		;       ebx <- FLAC__WORD_ALL_ONES
-	shr	ebx, cl			;       ebx <- FLAC__WORD_ALL_ONES >> end
-	not	ebx			;       ebx <- ~(FLAC__WORD_ALL_ONES >> end)
-	xchg	edx, ecx		;       [edx <- end , ecx <- cbits]
-	and	eax, ebx		;       b = (br->buffer[cwords] & ~(FLAC__WORD_ALL_ONES >> end));
-	shl	eax, cl 		;       b = (br->buffer[cwords] & ~(FLAC__WORD_ALL_ONES >> end)) << cbits;
-	test	eax, eax		;         (still have to test since cbits may be 0, thus ZF not updated for shl eax,0)
-	jz	.c1_next3		;       if(b) {
-	bsr	ebx, eax
-	not	ebx
-	and	ebx, 31			;         ebx = 'i' = # of leading 0 bits in 'b' (eax)
-	add	ecx, ebx		;         cbits += i;
-	add	edi, ebx		;         uval += i;
-	add	ecx, byte 1		;         cbits++; /* skip over stop bit */
-	jmp	short .break1 		;         goto break1;
-.c1_next3:				;       } else {
-	sub	edi, ecx
-	add	edi, edx		;         uval += end - cbits;
-	add	ecx, edx		;         cbits += end
-					;         /* didn't find stop bit yet, have to keep going... */
-					;       }
-					;     }
-.read1:
-	; flush registers and read; bitreader_read_from_client_() does
-	; not touch br->consumed_bits at all but we still need to set
-	; it in case it fails and we have to return false.
-	;; ecx		cbits
-	;; esi		cwords
-	;; edi		uval
-	;; ebp		br
-	mov	[ebp + 16], esi		;     br->consumed_words = cwords;
-	mov	[ebp + 20], ecx		;     br->consumed_bits = cbits;
-	push	ecx			;     /* save */
-	push	ebp			;     /* push br argument */
-%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
-	call	_bitreader_read_from_client_
-%else
-	call	bitreader_read_from_client_
-%endif
-	pop	edx			;     /* discard, unused */
-	pop	ecx			;     /* restore */
-	mov	esi, [ebp + 16]		;     cwords = br->consumed_words;
-					;     ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
-	mov	ebx, [ebp + 8]		;       ebx <- br->words
-	sub	ebx, esi		;       ebx <- br->words-cwords
-	shl	ebx, 2			;       ebx <- (br->words-cwords)*FLAC__BYTES_PER_WORD
-	add	ebx, [ebp + 12]		;       ebx <- (br->words-cwords)*FLAC__BYTES_PER_WORD + br->bytes
-	shl	ebx, 3			;       ebx <- (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8
-	sub	ebx, ecx		;       ebx <- (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits
-	add	ebx, edi		;       ebx <- (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits + uval
-					;           + uval to offset our count by the # of unary bits already
-					;           consumed before the read, because we will add these back
-					;           in all at once at break1
-	mov	[esp], ebx		;       ucbits <- ebx
-	test	eax, eax		;     if(!bitreader_read_from_client_(br))
-	jnz	near .unary_loop
-	jmp	.end			;       return false; /* eax (the return value) is already 0 */
-					;   } /* end while(1) unary part */
-
-	ALIGN 16
-.break1:
-	;; ecx		cbits
-	;; esi		cwords
-	;; edi		uval
-	;; ebp		br
-	;; [esp]	ucbits
-	sub	[esp], edi		;   ucbits -= uval;
-	sub	dword [esp], byte 1	;   ucbits--; /* account for stop bit */
-
-	;
-	; read binary part
-	;
-	mov	ebx, [esp + 36]		;   ebx <- parameter
-	test	ebx, ebx		;   if(parameter) {
-	jz	near .break2
-.read2:
-	cmp	[esp], ebx		;     while(ucbits < parameter) {
-	jae	.c2_next1
-	; flush registers and read; bitreader_read_from_client_() does
-	; not touch br->consumed_bits at all but we still need to set
-	; it in case it fails and we have to return false.
-	mov	[ebp + 16], esi		;       br->consumed_words = cwords;
-	mov	[ebp + 20], ecx		;       br->consumed_bits = cbits;
-	push	ecx			;       /* save */
-	push	ebp			;       /* push br argument */
-%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
-	call	_bitreader_read_from_client_
-%else
-	call	bitreader_read_from_client_
-%endif
-	pop	edx			;       /* discard, unused */
-	pop	ecx			;       /* restore */
-	mov	esi, [ebp + 16]		;       cwords = br->consumed_words;
-					;       ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
-	mov	edx, [ebp + 8]		;         edx <- br->words
-	sub	edx, esi		;         edx <- br->words-cwords
-	shl	edx, 2			;         edx <- (br->words-cwords)*FLAC__BYTES_PER_WORD
-	add	edx, [ebp + 12]		;         edx <- (br->words-cwords)*FLAC__BYTES_PER_WORD + br->bytes
-	shl	edx, 3			;         edx <- (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8
-	sub	edx, ecx		;         edx <- (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits
-	mov	[esp], edx		;         ucbits <- edx
-	test	eax, eax		;       if(!bitreader_read_from_client_(br))
-	jnz	.read2
-	jmp	.end			;         return false; /* eax (the return value) is already 0 */
-					;     }
-.c2_next1:
-	;; ebx		parameter
-	;; ecx		cbits
-	;; esi		cwords
-	;; edi		uval
-	;; ebp		br
-	;; [esp]	ucbits
-	cmp	esi, [ebp + 8]		;     if(cwords < br->words) { /* if we've not consumed up to a partial tail word... */
-	jae	near .c2_next2
-	test	ecx, ecx		;       if(cbits) {
-	jz	near .c2_next3		;         /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
-	mov	eax, 32
-	mov	edx, [ebp]
-	sub	eax, ecx		;         const unsigned n = FLAC__BITS_PER_WORD - cbits;
-	mov	edx, [edx + 4*esi]	;         const brword word = br->buffer[cwords];
-	cmp	ebx, eax		;         if(parameter < n) {
-	jae	.c2_next4
-					;           uval <<= parameter;
-					;           uval |= (word & (FLAC__WORD_ALL_ONES >> cbits)) >> (n-parameter);
-	shl	edx, cl
-	xchg	ebx, ecx
-	shld	edi, edx, cl
-	add	ebx, ecx		;           cbits += parameter;
-	xchg	ebx, ecx		;           ebx <- parameter, ecx <- cbits
-	jmp	.break2			;           goto break2;
-					;         }
-.c2_next4:
-					;         uval <<= n;
-					;         uval |= word & (FLAC__WORD_ALL_ONES >> cbits);
-%if 1
-	rol	edx, cl			;            @@@@@@OPT: may be faster to use rol to save edx so we can restore it for CRC'ing
-					;            @@@@@@OPT: or put parameter in ch instead and free up ebx completely again
-%else
-	shl	edx, cl
-%endif
-	xchg	eax, ecx
-	shld	edi, edx, cl
-	xchg	eax, ecx
-%if 1
-	ror	edx, cl			;            restored.
-%else
-	mov	edx, [ebp]
-	mov	edx, [edx + 4*esi]
-%endif
-					;         crc16_update_word_(br, br->buffer[cwords]);
-	push	edi			;		[need more registers]
-	push	ebx			;		[need more registers]
-	push	eax			;		[need more registers]
-	bswap	edx			;		edx = br->buffer[cwords] swapped; now we can CRC the bytes from LSByte to MSByte which makes things much easier
-	mov	ecx, [ebp + 28]		;		ecx <- br->crc16_align
-	mov	eax, [ebp + 24]		;		ax <- br->read_crc (a.k.a. crc)
-%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
-	mov	edi, _FLAC__crc16_table
-%else
-	mov	edi, FLAC__crc16_table
-%endif
-	;; eax (ax)	crc a.k.a. br->read_crc
-	;; ebx (bl)	intermediate result index into FLAC__crc16_table[]
-	;; ecx		br->crc16_align
-	;; edx		byteswapped brword to CRC
-	;; esi		cwords
-	;; edi		unsigned FLAC__crc16_table[]
-	;; ebp		br
-	test	ecx, ecx		;		switch(br->crc16_align) ...
-	jnz	.c2b4			;		[br->crc16_align is 0 the vast majority of the time so we optimize the common case]
-.c2b0:	xor	dl, ah			;		dl <- (crc>>8)^(word>>24)
-	movzx	ebx, dl
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^(word>>24)]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^(word>>24)]
-.c2b1:	xor	dh, ah			;		dh <- (crc>>8)^((word>>16)&0xff))
-	movzx	ebx, dh
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^((word>>16)&0xff))]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^((word>>16)&0xff))]
-	shr	edx, 16
-.c2b2:	xor	dl, ah			;		dl <- (crc>>8)^((word>>8)&0xff))
-	movzx	ebx, dl
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^((word>>8)&0xff))]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^((word>>8)&0xff))]
-.c2b3:	xor	dh, ah			;		dh <- (crc>>8)^(word&0xff)
-	movzx	ebx, dh
-	mov	ecx, [ebx*4 + edi]	;		cx <- FLAC__crc16_table[(crc>>8)^(word&0xff)]
-	shl	eax, 8			;		ax <- (crc<<8)
-	xor	eax, ecx		;		crc <- ax <- (crc<<8) ^ FLAC__crc16_table[(crc>>8)^(word&0xff)]
-	movzx	eax, ax
-	mov	[ebp + 24], eax		;		br->read_crc <- crc
-	pop	eax
-	pop	ebx
-	pop	edi
-	add	esi, byte 1		;         cwords++;
-	mov	ecx, ebx
-	sub	ecx, eax		;         cbits = parameter - n;
-	jz	.break2			;         if(cbits) { /* parameter > n, i.e. if there are still bits left to read, there have to be less than 32 so they will all be in the next word */
-					;           uval <<= cbits;
-					;           uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits));
-	mov	eax, [ebp]
-	mov	eax, [eax + 4*esi]
-	shld	edi, eax, cl
-					;         }
-	jmp	.break2			;         goto break2;
-
-	;; this section relocated out of the way for performance
-.c2b4:
-	mov	[ebp + 28], dword 0	;		br->crc16_align <- 0
-	cmp	ecx, 8
-	je	.c2b1
-	shr	edx, 16
-	cmp	ecx, 16
-	je	.c2b2
-	jmp	.c2b3
-
-.c2_next3:				;       } else {
-	mov	ecx, ebx		;         cbits = parameter;
-					;         uval <<= cbits;
-					;         uval |= (br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits));
-	mov	eax, [ebp]
-	mov	eax, [eax + 4*esi]
-	shld	edi, eax, cl
-	jmp	.break2			;         goto break2;
-					;       }
-.c2_next2:				;     } else {
-	; in this case we're starting our read at a partial tail word;
-	; the reader has guaranteed that we have at least 'parameter'
-	; bits available to read, which makes this case simpler.
-					;       uval <<= parameter;
-					;       if(cbits) {
-					;         /* this also works when consumed_bits==0, it's just a little slower than necessary for that case */
-					;         uval |= (br->buffer[cwords] & (FLAC__WORD_ALL_ONES >> cbits)) >> (FLAC__BITS_PER_WORD-cbits-parameter);
-					;         cbits += parameter;
-					;         goto break2;
-					;       } else {
-					;         cbits = parameter;
-					;         uval |= br->buffer[cwords] >> (FLAC__BITS_PER_WORD-cbits);
-					;         goto break2;
-					;       }
-					;       the above is much shorter in assembly:
-	mov	eax, [ebp]
-	mov	eax, [eax + 4*esi]	;       eax <- br->buffer[cwords]
-	shl	eax, cl			;       eax <- br->buffer[cwords] << cbits
-	add	ecx, ebx		;       cbits += parameter
-	xchg	ebx, ecx		;       ebx <- cbits, ecx <- parameter
-	shld	edi, eax, cl		;       uval <<= parameter <<< 'parameter' bits of tail word
-	xchg	ebx, ecx		;       ebx <- parameter, ecx <- cbits
-					;     }
-					;   }
-.break2:
-	sub	[esp], ebx		;   ucbits -= parameter;
-
-	;
-	; compose the value
-	;
-	mov	ebx, [esp + 28]		;   ebx <- vals
-	mov	edx, edi		;   edx <- uval
-	and	edi, 1			;   edi <- uval & 1
-	shr	edx, 1			;   edx <- uval >> 1
-	neg	edi			;   edi <- -(int)(uval & 1)
-	xor	edx, edi		;   edx <- (uval >> 1 ^ -(int)(uval & 1))
-	mov	[ebx], edx		;   *vals <- edx
-	sub	dword [esp + 32], byte 1	;   --nvals;
-	jz	.finished		;   if(nvals == 0) /* jump to finish */
-	xor	edi, edi		;   uval = 0;
-	add	dword [esp + 28], 4	;   ++vals
-	jmp	.val_loop		; }
-
-.finished:
-	mov	[ebp + 16], esi		; br->consumed_words = cwords;
-	mov	[ebp + 20], ecx		; br->consumed_bits = cbits;
-	mov	eax, 1
-.end:
-	add	esp, 4
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-
-end
-
-%ifdef OBJ_FORMAT_elf
-	section .note.GNU-stack noalloc
-%endif
diff --git a/libFLAC/ia32/cpu_asm.nasm b/libFLAC/ia32/cpu_asm.nasm
deleted file mode 100644
index f5eb110..0000000
--- a/libFLAC/ia32/cpu_asm.nasm
+++ /dev/null
@@ -1,121 +0,0 @@
-;  vim:filetype=nasm ts=8
-
-;  libFLAC - Free Lossless Audio Codec library
-;  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-;
-;  Redistribution and use in source and binary forms, with or without
-;  modification, are permitted provided that the following conditions
-;  are met:
-;
-;  - Redistributions of source code must retain the above copyright
-;  notice, this list of conditions and the following disclaimer.
-;
-;  - Redistributions in binary form must reproduce the above copyright
-;  notice, this list of conditions and the following disclaimer in the
-;  documentation and/or other materials provided with the distribution.
-;
-;  - Neither the name of the Xiph.org Foundation nor the names of its
-;  contributors may be used to endorse or promote products derived from
-;  this software without specific prior written permission.
-;
-;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-;  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-;  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-;  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-;  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-;  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-;  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-;  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-;  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-;  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-%include "nasm.h"
-
-	data_section
-
-cglobal FLAC__cpu_have_cpuid_asm_ia32
-cglobal FLAC__cpu_info_asm_ia32
-cglobal FLAC__cpu_info_extended_amd_asm_ia32
-
-	code_section
-
-; **********************************************************************
-;
-; FLAC__uint32 FLAC__cpu_have_cpuid_asm_ia32()
-;
-
-cident FLAC__cpu_have_cpuid_asm_ia32
-	push	ebx
-	pushfd
-	pop	eax
-	mov	edx, eax
-	xor	eax, 0x00200000
-	push	eax
-	popfd
-	pushfd
-	pop	eax
-	cmp	eax, edx
-	jz	.no_cpuid
-	mov	eax, 1
-	jmp	.end
-.no_cpuid:
-	xor	eax, eax
-.end:
-	pop	ebx
-	ret
-
-; **********************************************************************
-;
-; void FLAC__cpu_info_asm_ia32(FLAC__uint32 *flags_edx, FLAC__uint32 *flags_ecx)
-;
-
-cident FLAC__cpu_info_asm_ia32
-	;[esp + 8] == flags_edx
-	;[esp + 12] == flags_ecx
-
-	push	ebx
-	call	FLAC__cpu_have_cpuid_asm_ia32
-	test	eax, eax
-	jz	.no_cpuid
-	mov	eax, 1
-	cpuid
-	mov	ebx, [esp + 8]
-	mov	[ebx], edx
-	mov	ebx, [esp + 12]
-	mov	[ebx], ecx
-	jmp	.end
-.no_cpuid
-	xor	eax, eax
-	mov	ebx, [esp + 8]
-	mov	[ebx], eax
-	mov	ebx, [esp + 12]
-	mov	[ebx], eax
-.end
-	pop	ebx
-	ret
-
-cident FLAC__cpu_info_extended_amd_asm_ia32
-	push	ebx
-	call	FLAC__cpu_have_cpuid_asm_ia32
-	test	eax, eax
-	jz	.no_cpuid
-	mov	eax, 0x80000000
-	cpuid
-	cmp	eax, 0x80000001
-	jb	.no_cpuid
-	mov	eax, 0x80000001
-	cpuid
-	mov	eax, edx
-	jmp	.end
-.no_cpuid
-	xor	eax, eax
-.end
-	pop	ebx
-	ret
-
-end
-
-%ifdef OBJ_FORMAT_elf
-       section .note.GNU-stack noalloc
-%endif
diff --git a/libFLAC/ia32/fixed_asm.nasm b/libFLAC/ia32/fixed_asm.nasm
deleted file mode 100644
index 0185f4d..0000000
--- a/libFLAC/ia32/fixed_asm.nasm
+++ /dev/null
@@ -1,312 +0,0 @@
-;  vim:filetype=nasm ts=8
-
-;  libFLAC - Free Lossless Audio Codec library
-;  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-;
-;  Redistribution and use in source and binary forms, with or without
-;  modification, are permitted provided that the following conditions
-;  are met:
-;
-;  - Redistributions of source code must retain the above copyright
-;  notice, this list of conditions and the following disclaimer.
-;
-;  - Redistributions in binary form must reproduce the above copyright
-;  notice, this list of conditions and the following disclaimer in the
-;  documentation and/or other materials provided with the distribution.
-;
-;  - Neither the name of the Xiph.org Foundation nor the names of its
-;  contributors may be used to endorse or promote products derived from
-;  this software without specific prior written permission.
-;
-;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-;  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-;  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-;  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-;  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-;  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-;  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-;  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-;  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-;  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-%include "nasm.h"
-
-	data_section
-
-cglobal FLAC__fixed_compute_best_predictor_asm_ia32_mmx_cmov
-
-	code_section
-
-; **********************************************************************
-;
-; unsigned FLAC__fixed_compute_best_predictor(const FLAC__int32 *data, unsigned data_len, FLAC__float residual_bits_per_sample[FLAC__MAX_FIXED_ORDER+1])
-; {
-; 	FLAC__int32 last_error_0 = data[-1];
-; 	FLAC__int32 last_error_1 = data[-1] - data[-2];
-; 	FLAC__int32 last_error_2 = last_error_1 - (data[-2] - data[-3]);
-; 	FLAC__int32 last_error_3 = last_error_2 - (data[-2] - 2*data[-3] + data[-4]);
-; 	FLAC__int32 error, save;
-; 	FLAC__uint32 total_error_0 = 0, total_error_1 = 0, total_error_2 = 0, total_error_3 = 0, total_error_4 = 0;
-; 	unsigned i, order;
-;
-; 	for(i = 0; i < data_len; i++) {
-; 		error  = data[i]     ; total_error_0 += local_abs(error);                      save = error;
-; 		error -= last_error_0; total_error_1 += local_abs(error); last_error_0 = save; save = error;
-; 		error -= last_error_1; total_error_2 += local_abs(error); last_error_1 = save; save = error;
-; 		error -= last_error_2; total_error_3 += local_abs(error); last_error_2 = save; save = error;
-; 		error -= last_error_3; total_error_4 += local_abs(error); last_error_3 = save;
-; 	}
-;
-; 	if(total_error_0 < min(min(min(total_error_1, total_error_2), total_error_3), total_error_4))
-; 		order = 0;
-; 	else if(total_error_1 < min(min(total_error_2, total_error_3), total_error_4))
-; 		order = 1;
-; 	else if(total_error_2 < min(total_error_3, total_error_4))
-; 		order = 2;
-; 	else if(total_error_3 < total_error_4)
-; 		order = 3;
-; 	else
-; 		order = 4;
-;
-; 	residual_bits_per_sample[0] = (FLAC__float)((data_len > 0 && total_error_0 > 0) ? log(M_LN2 * (FLAC__double)total_error_0 / (FLAC__double)data_len) / M_LN2 : 0.0);
-; 	residual_bits_per_sample[1] = (FLAC__float)((data_len > 0 && total_error_1 > 0) ? log(M_LN2 * (FLAC__double)total_error_1 / (FLAC__double)data_len) / M_LN2 : 0.0);
-; 	residual_bits_per_sample[2] = (FLAC__float)((data_len > 0 && total_error_2 > 0) ? log(M_LN2 * (FLAC__double)total_error_2 / (FLAC__double)data_len) / M_LN2 : 0.0);
-; 	residual_bits_per_sample[3] = (FLAC__float)((data_len > 0 && total_error_3 > 0) ? log(M_LN2 * (FLAC__double)total_error_3 / (FLAC__double)data_len) / M_LN2 : 0.0);
-; 	residual_bits_per_sample[4] = (FLAC__float)((data_len > 0 && total_error_4 > 0) ? log(M_LN2 * (FLAC__double)total_error_4 / (FLAC__double)data_len) / M_LN2 : 0.0);
-;
-; 	return order;
-; }
-	ALIGN 16
-cident FLAC__fixed_compute_best_predictor_asm_ia32_mmx_cmov
-
-	; esp + 36 == data[]
-	; esp + 40 == data_len
-	; esp + 44 == residual_bits_per_sample[]
-
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	sub	esp, byte 16
-	; qword [esp] == temp space for loading FLAC__uint64s to FPU regs
-
-	; ebx == &data[i]
-	; ecx == loop counter (i)
-	; ebp == order
-	; mm0 == total_error_1:total_error_0
-	; mm1 == total_error_2:total_error_3
-	; mm2 == :total_error_4
-	; mm3 == last_error_1:last_error_0
-	; mm4 == last_error_2:last_error_3
-
-	mov	ecx, [esp + 40]			; ecx = data_len
-	test	ecx, ecx
-	jz	near .data_len_is_0
-
-	mov	ebx, [esp + 36]			; ebx = data[]
-	movd	mm3, [ebx - 4]			; mm3 = 0:last_error_0
-	movd	mm2, [ebx - 8]			; mm2 = 0:data[-2]
-	movd	mm1, [ebx - 12]			; mm1 = 0:data[-3]
-	movd	mm0, [ebx - 16]			; mm0 = 0:data[-4]
-	movq	mm5, mm3			; mm5 = 0:last_error_0
-	psubd	mm5, mm2			; mm5 = 0:last_error_1
-	punpckldq	mm3, mm5		; mm3 = last_error_1:last_error_0
-	psubd	mm2, mm1			; mm2 = 0:data[-2] - data[-3]
-	psubd	mm5, mm2			; mm5 = 0:last_error_2
-	movq	mm4, mm5			; mm4 = 0:last_error_2
-	psubd	mm4, mm2			; mm4 = 0:last_error_2 - (data[-2] - data[-3])
-	paddd	mm4, mm1			; mm4 = 0:last_error_2 - (data[-2] - 2 * data[-3])
-	psubd	mm4, mm0			; mm4 = 0:last_error_3
-	punpckldq	mm4, mm5		; mm4 = last_error_2:last_error_3
-	pxor	mm0, mm0			; mm0 = total_error_1:total_error_0
-	pxor	mm1, mm1			; mm1 = total_error_2:total_error_3
-	pxor	mm2, mm2			; mm2 = 0:total_error_4
-
-	ALIGN 16
-.loop:
-	movd	mm7, [ebx]			; mm7 = 0:error_0
-	add	ebx, byte 4
-	movq	mm6, mm7			; mm6 = 0:error_0
-	psubd	mm7, mm3			; mm7 = :error_1
-	punpckldq	mm6, mm7		; mm6 = error_1:error_0
-	movq	mm5, mm6			; mm5 = error_1:error_0
-	movq	mm7, mm6			; mm7 = error_1:error_0
-	psubd	mm5, mm3			; mm5 = error_2:
-	movq	mm3, mm6			; mm3 = error_1:error_0	
-	psrad	mm6, 31
-	pxor	mm7, mm6
-	psubd	mm7, mm6			; mm7 = abs(error_1):abs(error_0)
-	paddd	mm0, mm7			; mm0 = total_error_1:total_error_0
-	movq	mm6, mm5			; mm6 = error_2:
-	psubd	mm5, mm4			; mm5 = error_3:
-	punpckhdq	mm5, mm6		; mm5 = error_2:error_3
-	movq	mm7, mm5			; mm7 = error_2:error_3
-	movq	mm6, mm5			; mm6 = error_2:error_3
-	psubd	mm5, mm4			; mm5 = :error_4
-	movq	mm4, mm6			; mm4 = error_2:error_3
-	psrad	mm6, 31
-	pxor	mm7, mm6
-	psubd	mm7, mm6			; mm7 = abs(error_2):abs(error_3)
-	paddd	mm1, mm7			; mm1 = total_error_2:total_error_3
-	movq	mm6, mm5			; mm6 = :error_4
-	psrad	mm5, 31
-	pxor	mm6, mm5
-	psubd	mm6, mm5			; mm6 = :abs(error_4)
-	paddd	mm2, mm6			; mm2 = :total_error_4
-	
-	dec	ecx
-	jnz	short .loop
-
-; 	if(total_error_0 < min(min(min(total_error_1, total_error_2), total_error_3), total_error_4))
-; 		order = 0;
-; 	else if(total_error_1 < min(min(total_error_2, total_error_3), total_error_4))
-; 		order = 1;
-; 	else if(total_error_2 < min(total_error_3, total_error_4))
-; 		order = 2;
-; 	else if(total_error_3 < total_error_4)
-; 		order = 3;
-; 	else
-; 		order = 4;
-	movq	mm3, mm0			; mm3 = total_error_1:total_error_0
-	movd	edi, mm2			; edi = total_error_4
-	movd	esi, mm1			; esi = total_error_3
-	movd	eax, mm0			; eax = total_error_0
-	punpckhdq	mm1, mm1		; mm1 = total_error_2:total_error_2
-	punpckhdq	mm3, mm3		; mm3 = total_error_1:total_error_1
-	movd	edx, mm1			; edx = total_error_2
-	movd	ecx, mm3			; ecx = total_error_1
-
-	xor	ebx, ebx
-	xor	ebp, ebp
-	inc	ebx
-	cmp	ecx, eax
-	cmovb	eax, ecx			; eax = min(total_error_0, total_error_1)
-	cmovbe	ebp, ebx
-	inc	ebx
-	cmp	edx, eax
-	cmovb	eax, edx			; eax = min(total_error_0, total_error_1, total_error_2)
-	cmovbe	ebp, ebx
-	inc	ebx
-	cmp	esi, eax
-	cmovb	eax, esi			; eax = min(total_error_0, total_error_1, total_error_2, total_error_3)
-	cmovbe	ebp, ebx
-	inc	ebx
-	cmp	edi, eax
-	cmovb	eax, edi			; eax = min(total_error_0, total_error_1, total_error_2, total_error_3, total_error_4)
-	cmovbe	ebp, ebx
-	movd	ebx, mm0			; ebx = total_error_0
-	emms
-
-	; 	residual_bits_per_sample[0] = (FLAC__float)((data_len > 0 && total_error_0 > 0) ? log(M_LN2 * (FLAC__double)total_error_0 / (FLAC__double)data_len) / M_LN2 : 0.0);
-	; 	residual_bits_per_sample[1] = (FLAC__float)((data_len > 0 && total_error_1 > 0) ? log(M_LN2 * (FLAC__double)total_error_1 / (FLAC__double)data_len) / M_LN2 : 0.0);
-	; 	residual_bits_per_sample[2] = (FLAC__float)((data_len > 0 && total_error_2 > 0) ? log(M_LN2 * (FLAC__double)total_error_2 / (FLAC__double)data_len) / M_LN2 : 0.0);
-	; 	residual_bits_per_sample[3] = (FLAC__float)((data_len > 0 && total_error_3 > 0) ? log(M_LN2 * (FLAC__double)total_error_3 / (FLAC__double)data_len) / M_LN2 : 0.0);
-	; 	residual_bits_per_sample[4] = (FLAC__float)((data_len > 0 && total_error_4 > 0) ? log(M_LN2 * (FLAC__double)total_error_4 / (FLAC__double)data_len) / M_LN2 : 0.0);
-	xor	eax, eax
-	fild	dword [esp + 40]		; ST = data_len (NOTE: assumes data_len is <2gigs)
-.rbps_0:
-	test	ebx, ebx
-	jz	.total_error_0_is_0
-	fld1					; ST = 1.0 data_len
-	mov	[esp], ebx
-	mov	[esp + 4], eax			; [esp] = (FLAC__uint64)total_error_0
-	mov	ebx, [esp + 44]
-	fild	qword [esp]			; ST = total_error_0 1.0 data_len
-	fdiv	st2				; ST = total_error_0/data_len 1.0 data_len
-	fldln2					; ST = ln2 total_error_0/data_len 1.0 data_len
-	fmulp	st1				; ST = ln2*total_error_0/data_len 1.0 data_len
-	fyl2x					; ST = log2(ln2*total_error_0/data_len) data_len
-	fstp	dword [ebx]			; residual_bits_per_sample[0] = log2(ln2*total_error_0/data_len)   ST = data_len
-	jmp	short .rbps_1
-.total_error_0_is_0:
-	mov	ebx, [esp + 44]
-	mov	[ebx], eax			; residual_bits_per_sample[0] = 0.0
-.rbps_1:
-	test	ecx, ecx
-	jz	.total_error_1_is_0
-	fld1					; ST = 1.0 data_len
-	mov	[esp], ecx
-	mov	[esp + 4], eax			; [esp] = (FLAC__uint64)total_error_1
-	fild	qword [esp]			; ST = total_error_1 1.0 data_len
-	fdiv	st2				; ST = total_error_1/data_len 1.0 data_len
-	fldln2					; ST = ln2 total_error_1/data_len 1.0 data_len
-	fmulp	st1				; ST = ln2*total_error_1/data_len 1.0 data_len
-	fyl2x					; ST = log2(ln2*total_error_1/data_len) data_len
-	fstp	dword [ebx + 4]			; residual_bits_per_sample[1] = log2(ln2*total_error_1/data_len)   ST = data_len
-	jmp	short .rbps_2
-.total_error_1_is_0:
-	mov	[ebx + 4], eax			; residual_bits_per_sample[1] = 0.0
-.rbps_2:
-	test	edx, edx
-	jz	.total_error_2_is_0
-	fld1					; ST = 1.0 data_len
-	mov	[esp], edx
-	mov	[esp + 4], eax			; [esp] = (FLAC__uint64)total_error_2
-	fild	qword [esp]			; ST = total_error_2 1.0 data_len
-	fdiv	st2				; ST = total_error_2/data_len 1.0 data_len
-	fldln2					; ST = ln2 total_error_2/data_len 1.0 data_len
-	fmulp	st1				; ST = ln2*total_error_2/data_len 1.0 data_len
-	fyl2x					; ST = log2(ln2*total_error_2/data_len) data_len
-	fstp	dword [ebx + 8]			; residual_bits_per_sample[2] = log2(ln2*total_error_2/data_len)   ST = data_len
-	jmp	short .rbps_3
-.total_error_2_is_0:
-	mov	[ebx + 8], eax			; residual_bits_per_sample[2] = 0.0
-.rbps_3:
-	test	esi, esi
-	jz	.total_error_3_is_0
-	fld1					; ST = 1.0 data_len
-	mov	[esp], esi
-	mov	[esp + 4], eax			; [esp] = (FLAC__uint64)total_error_3
-	fild	qword [esp]			; ST = total_error_3 1.0 data_len
-	fdiv	st2				; ST = total_error_3/data_len 1.0 data_len
-	fldln2					; ST = ln2 total_error_3/data_len 1.0 data_len
-	fmulp	st1				; ST = ln2*total_error_3/data_len 1.0 data_len
-	fyl2x					; ST = log2(ln2*total_error_3/data_len) data_len
-	fstp	dword [ebx + 12]		; residual_bits_per_sample[3] = log2(ln2*total_error_3/data_len)   ST = data_len
-	jmp	short .rbps_4
-.total_error_3_is_0:
-	mov	[ebx + 12], eax			; residual_bits_per_sample[3] = 0.0
-.rbps_4:
-	test	edi, edi
-	jz	.total_error_4_is_0
-	fld1					; ST = 1.0 data_len
-	mov	[esp], edi
-	mov	[esp + 4], eax			; [esp] = (FLAC__uint64)total_error_4
-	fild	qword [esp]			; ST = total_error_4 1.0 data_len
-	fdiv	st2				; ST = total_error_4/data_len 1.0 data_len
-	fldln2					; ST = ln2 total_error_4/data_len 1.0 data_len
-	fmulp	st1				; ST = ln2*total_error_4/data_len 1.0 data_len
-	fyl2x					; ST = log2(ln2*total_error_4/data_len) data_len
-	fstp	dword [ebx + 16]		; residual_bits_per_sample[4] = log2(ln2*total_error_4/data_len)   ST = data_len
-	jmp	short .rbps_end
-.total_error_4_is_0:
-	mov	[ebx + 16], eax			; residual_bits_per_sample[4] = 0.0
-.rbps_end:
-	fstp	st0				; ST = [empty]
-	jmp	short .end
-.data_len_is_0:
-	; data_len == 0, so residual_bits_per_sample[*] = 0.0
-	xor	ebp, ebp
-	mov	edi, [esp + 44]
-	mov	[edi], ebp
-	mov	[edi + 4], ebp
-	mov	[edi + 8], ebp
-	mov	[edi + 12], ebp
-	mov	[edi + 16], ebp
-	add	ebp, byte 4			; order = 4
-
-.end:
-	mov	eax, ebp			; return order
-	add	esp, byte 16
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-
-end
-
-%ifdef OBJ_FORMAT_elf
-       section .note.GNU-stack noalloc
-%endif
diff --git a/libFLAC/ia32/lpc_asm.nasm b/libFLAC/ia32/lpc_asm.nasm
deleted file mode 100644
index 4bc4c91..0000000
--- a/libFLAC/ia32/lpc_asm.nasm
+++ /dev/null
@@ -1,1511 +0,0 @@
-;  vim:filetype=nasm ts=8
-
-;  libFLAC - Free Lossless Audio Codec library
-;  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-;
-;  Redistribution and use in source and binary forms, with or without
-;  modification, are permitted provided that the following conditions
-;  are met:
-;
-;  - Redistributions of source code must retain the above copyright
-;  notice, this list of conditions and the following disclaimer.
-;
-;  - Redistributions in binary form must reproduce the above copyright
-;  notice, this list of conditions and the following disclaimer in the
-;  documentation and/or other materials provided with the distribution.
-;
-;  - Neither the name of the Xiph.org Foundation nor the names of its
-;  contributors may be used to endorse or promote products derived from
-;  this software without specific prior written permission.
-;
-;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-;  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-;  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-;  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-;  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-;  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-;  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-;  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-;  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-;  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-%include "nasm.h"
-
-	data_section
-
-cglobal FLAC__lpc_compute_autocorrelation_asm_ia32
-cglobal FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_4
-cglobal FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_8
-cglobal FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_12
-cglobal FLAC__lpc_compute_autocorrelation_asm_ia32_3dnow
-cglobal FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32
-cglobal FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32_mmx
-cglobal FLAC__lpc_restore_signal_asm_ia32
-cglobal FLAC__lpc_restore_signal_asm_ia32_mmx
-
-	code_section
-
-; **********************************************************************
-;
-; void FLAC__lpc_compute_autocorrelation_asm(const FLAC__real data[], unsigned data_len, unsigned lag, FLAC__real autoc[])
-; {
-;	FLAC__real d;
-;	unsigned sample, coeff;
-;	const unsigned limit = data_len - lag;
-;
-;	FLAC__ASSERT(lag > 0);
-;	FLAC__ASSERT(lag <= data_len);
-;
-;	for(coeff = 0; coeff < lag; coeff++)
-;		autoc[coeff] = 0.0;
-;	for(sample = 0; sample <= limit; sample++) {
-;		d = data[sample];
-;		for(coeff = 0; coeff < lag; coeff++)
-;			autoc[coeff] += d * data[sample+coeff];
-;	}
-;	for(; sample < data_len; sample++) {
-;		d = data[sample];
-;		for(coeff = 0; coeff < data_len - sample; coeff++)
-;			autoc[coeff] += d * data[sample+coeff];
-;	}
-; }
-;
-	ALIGN 16
-cident FLAC__lpc_compute_autocorrelation_asm_ia32
-	;[esp + 28] == autoc[]
-	;[esp + 24] == lag
-	;[esp + 20] == data_len
-	;[esp + 16] == data[]
-
-	;ASSERT(lag > 0)
-	;ASSERT(lag <= 33)
-	;ASSERT(lag <= data_len)
-
-.begin:
-	push	esi
-	push	edi
-	push	ebx
-
-	;	for(coeff = 0; coeff < lag; coeff++)
-	;		autoc[coeff] = 0.0;
-	mov	edi, [esp + 28]			; edi == autoc
-	mov	ecx, [esp + 24]			; ecx = # of dwords (=lag) of 0 to write
-	xor	eax, eax
-	rep	stosd
-
-	;	const unsigned limit = data_len - lag;
-	mov	eax, [esp + 24]			; eax == lag
-	mov	ecx, [esp + 20]
-	sub	ecx, eax			; ecx == limit
-
-	mov	edi, [esp + 28]			; edi == autoc
-	mov	esi, [esp + 16]			; esi == data
-	inc	ecx				; we are looping <= limit so we add one to the counter
-
-	;	for(sample = 0; sample <= limit; sample++) {
-	;		d = data[sample];
-	;		for(coeff = 0; coeff < lag; coeff++)
-	;			autoc[coeff] += d * data[sample+coeff];
-	;	}
-	fld	dword [esi]			; ST = d <- data[sample]
-	; each iteration is 11 bytes so we need (-eax)*11, so we do (-12*eax + eax)
-	lea	edx, [eax + eax*2]
-	neg	edx
-	lea	edx, [eax + edx*4 + .jumper1_0 - .get_eip1]
-	call	.get_eip1
-.get_eip1:
-	pop	ebx
-	add	edx, ebx
-	inc	edx				; compensate for the shorter opcode on the last iteration
-	inc	edx				; compensate for the shorter opcode on the last iteration
-	inc	edx				; compensate for the shorter opcode on the last iteration
-	cmp	eax, 33
-	jne	.loop1_start
-	sub	edx, byte 9			; compensate for the longer opcodes on the first iteration
-.loop1_start:
-	jmp	edx
-
-	fld	st0				; ST = d d
-	fmul	dword [esi + (32*4)]		; ST = d*data[sample+32] d		WATCHOUT: not a byte displacement here!
-	fadd	dword [edi + (32*4)]		; ST = autoc[32]+d*data[sample+32] d	WATCHOUT: not a byte displacement here!
-	fstp	dword [edi + (32*4)]		; autoc[32]+=d*data[sample+32]  ST = d	WATCHOUT: not a byte displacement here!
-	fld	st0				; ST = d d
-	fmul	dword [esi + (31*4)]		; ST = d*data[sample+31] d
-	fadd	dword [edi + (31*4)]		; ST = autoc[31]+d*data[sample+31] d
-	fstp	dword [edi + (31*4)]		; autoc[31]+=d*data[sample+31]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (30*4)]		; ST = d*data[sample+30] d
-	fadd	dword [edi + (30*4)]		; ST = autoc[30]+d*data[sample+30] d
-	fstp	dword [edi + (30*4)]		; autoc[30]+=d*data[sample+30]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (29*4)]		; ST = d*data[sample+29] d
-	fadd	dword [edi + (29*4)]		; ST = autoc[29]+d*data[sample+29] d
-	fstp	dword [edi + (29*4)]		; autoc[29]+=d*data[sample+29]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (28*4)]		; ST = d*data[sample+28] d
-	fadd	dword [edi + (28*4)]		; ST = autoc[28]+d*data[sample+28] d
-	fstp	dword [edi + (28*4)]		; autoc[28]+=d*data[sample+28]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (27*4)]		; ST = d*data[sample+27] d
-	fadd	dword [edi + (27*4)]		; ST = autoc[27]+d*data[sample+27] d
-	fstp	dword [edi + (27*4)]		; autoc[27]+=d*data[sample+27]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (26*4)]		; ST = d*data[sample+26] d
-	fadd	dword [edi + (26*4)]		; ST = autoc[26]+d*data[sample+26] d
-	fstp	dword [edi + (26*4)]		; autoc[26]+=d*data[sample+26]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (25*4)]		; ST = d*data[sample+25] d
-	fadd	dword [edi + (25*4)]		; ST = autoc[25]+d*data[sample+25] d
-	fstp	dword [edi + (25*4)]		; autoc[25]+=d*data[sample+25]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (24*4)]		; ST = d*data[sample+24] d
-	fadd	dword [edi + (24*4)]		; ST = autoc[24]+d*data[sample+24] d
-	fstp	dword [edi + (24*4)]		; autoc[24]+=d*data[sample+24]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (23*4)]		; ST = d*data[sample+23] d
-	fadd	dword [edi + (23*4)]		; ST = autoc[23]+d*data[sample+23] d
-	fstp	dword [edi + (23*4)]		; autoc[23]+=d*data[sample+23]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (22*4)]		; ST = d*data[sample+22] d
-	fadd	dword [edi + (22*4)]		; ST = autoc[22]+d*data[sample+22] d
-	fstp	dword [edi + (22*4)]		; autoc[22]+=d*data[sample+22]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (21*4)]		; ST = d*data[sample+21] d
-	fadd	dword [edi + (21*4)]		; ST = autoc[21]+d*data[sample+21] d
-	fstp	dword [edi + (21*4)]		; autoc[21]+=d*data[sample+21]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (20*4)]		; ST = d*data[sample+20] d
-	fadd	dword [edi + (20*4)]		; ST = autoc[20]+d*data[sample+20] d
-	fstp	dword [edi + (20*4)]		; autoc[20]+=d*data[sample+20]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (19*4)]		; ST = d*data[sample+19] d
-	fadd	dword [edi + (19*4)]		; ST = autoc[19]+d*data[sample+19] d
-	fstp	dword [edi + (19*4)]		; autoc[19]+=d*data[sample+19]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (18*4)]		; ST = d*data[sample+18] d
-	fadd	dword [edi + (18*4)]		; ST = autoc[18]+d*data[sample+18] d
-	fstp	dword [edi + (18*4)]		; autoc[18]+=d*data[sample+18]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (17*4)]		; ST = d*data[sample+17] d
-	fadd	dword [edi + (17*4)]		; ST = autoc[17]+d*data[sample+17] d
-	fstp	dword [edi + (17*4)]		; autoc[17]+=d*data[sample+17]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (16*4)]		; ST = d*data[sample+16] d
-	fadd	dword [edi + (16*4)]		; ST = autoc[16]+d*data[sample+16] d
-	fstp	dword [edi + (16*4)]		; autoc[16]+=d*data[sample+16]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (15*4)]		; ST = d*data[sample+15] d
-	fadd	dword [edi + (15*4)]		; ST = autoc[15]+d*data[sample+15] d
-	fstp	dword [edi + (15*4)]		; autoc[15]+=d*data[sample+15]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (14*4)]		; ST = d*data[sample+14] d
-	fadd	dword [edi + (14*4)]		; ST = autoc[14]+d*data[sample+14] d
-	fstp	dword [edi + (14*4)]		; autoc[14]+=d*data[sample+14]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (13*4)]		; ST = d*data[sample+13] d
-	fadd	dword [edi + (13*4)]		; ST = autoc[13]+d*data[sample+13] d
-	fstp	dword [edi + (13*4)]		; autoc[13]+=d*data[sample+13]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (12*4)]		; ST = d*data[sample+12] d
-	fadd	dword [edi + (12*4)]		; ST = autoc[12]+d*data[sample+12] d
-	fstp	dword [edi + (12*4)]		; autoc[12]+=d*data[sample+12]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (11*4)]		; ST = d*data[sample+11] d
-	fadd	dword [edi + (11*4)]		; ST = autoc[11]+d*data[sample+11] d
-	fstp	dword [edi + (11*4)]		; autoc[11]+=d*data[sample+11]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (10*4)]		; ST = d*data[sample+10] d
-	fadd	dword [edi + (10*4)]		; ST = autoc[10]+d*data[sample+10] d
-	fstp	dword [edi + (10*4)]		; autoc[10]+=d*data[sample+10]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 9*4)]		; ST = d*data[sample+9] d
-	fadd	dword [edi + ( 9*4)]		; ST = autoc[9]+d*data[sample+9] d
-	fstp	dword [edi + ( 9*4)]		; autoc[9]+=d*data[sample+9]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 8*4)]		; ST = d*data[sample+8] d
-	fadd	dword [edi + ( 8*4)]		; ST = autoc[8]+d*data[sample+8] d
-	fstp	dword [edi + ( 8*4)]		; autoc[8]+=d*data[sample+8]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 7*4)]		; ST = d*data[sample+7] d
-	fadd	dword [edi + ( 7*4)]		; ST = autoc[7]+d*data[sample+7] d
-	fstp	dword [edi + ( 7*4)]		; autoc[7]+=d*data[sample+7]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 6*4)]		; ST = d*data[sample+6] d
-	fadd	dword [edi + ( 6*4)]		; ST = autoc[6]+d*data[sample+6] d
-	fstp	dword [edi + ( 6*4)]		; autoc[6]+=d*data[sample+6]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 5*4)]		; ST = d*data[sample+4] d
-	fadd	dword [edi + ( 5*4)]		; ST = autoc[4]+d*data[sample+4] d
-	fstp	dword [edi + ( 5*4)]		; autoc[4]+=d*data[sample+4]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 4*4)]		; ST = d*data[sample+4] d
-	fadd	dword [edi + ( 4*4)]		; ST = autoc[4]+d*data[sample+4] d
-	fstp	dword [edi + ( 4*4)]		; autoc[4]+=d*data[sample+4]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 3*4)]		; ST = d*data[sample+3] d
-	fadd	dword [edi + ( 3*4)]		; ST = autoc[3]+d*data[sample+3] d
-	fstp	dword [edi + ( 3*4)]		; autoc[3]+=d*data[sample+3]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 2*4)]		; ST = d*data[sample+2] d
-	fadd	dword [edi + ( 2*4)]		; ST = autoc[2]+d*data[sample+2] d
-	fstp	dword [edi + ( 2*4)]		; autoc[2]+=d*data[sample+2]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 1*4)]		; ST = d*data[sample+1] d
-	fadd	dword [edi + ( 1*4)]		; ST = autoc[1]+d*data[sample+1] d
-	fstp	dword [edi + ( 1*4)]		; autoc[1]+=d*data[sample+1]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi]			; ST = d*data[sample] d			WATCHOUT: no displacement byte here!
-	fadd	dword [edi]			; ST = autoc[0]+d*data[sample] d	WATCHOUT: no displacement byte here!
-	fstp	dword [edi]			; autoc[0]+=d*data[sample]  ST = d	WATCHOUT: no displacement byte here!
-.jumper1_0:
-
-	fstp	st0				; pop d, ST = empty
-	add	esi, byte 4			; sample++
-	dec	ecx
-	jz	.loop1_end
-	fld	dword [esi]			; ST = d <- data[sample]
-	jmp	edx
-.loop1_end:
-
-	;	for(; sample < data_len; sample++) {
-	;		d = data[sample];
-	;		for(coeff = 0; coeff < data_len - sample; coeff++)
-	;			autoc[coeff] += d * data[sample+coeff];
-	;	}
-	mov	ecx, [esp + 24]			; ecx <- lag
-	dec	ecx				; ecx <- lag - 1
-	jz	near .end			; skip loop if 0 (i.e. lag == 1)
-
-	fld	dword [esi]			; ST = d <- data[sample]
-	mov	eax, ecx			; eax <- lag - 1 == data_len - sample the first time through
-	; each iteration is 11 bytes so we need (-eax)*11, so we do (-12*eax + eax)
-	lea	edx, [eax + eax*2]
-	neg	edx
-	lea	edx, [eax + edx*4 + .jumper2_0 - .get_eip2]
-	call	.get_eip2
-.get_eip2:
-	pop	ebx
-	add	edx, ebx
-	inc	edx				; compensate for the shorter opcode on the last iteration
-	inc	edx				; compensate for the shorter opcode on the last iteration
-	inc	edx				; compensate for the shorter opcode on the last iteration
-	jmp	edx
-
-	fld	st0				; ST = d d
-	fmul	dword [esi + (31*4)]		; ST = d*data[sample+31] d
-	fadd	dword [edi + (31*4)]		; ST = autoc[31]+d*data[sample+31] d
-	fstp	dword [edi + (31*4)]		; autoc[31]+=d*data[sample+31]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (30*4)]		; ST = d*data[sample+30] d
-	fadd	dword [edi + (30*4)]		; ST = autoc[30]+d*data[sample+30] d
-	fstp	dword [edi + (30*4)]		; autoc[30]+=d*data[sample+30]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (29*4)]		; ST = d*data[sample+29] d
-	fadd	dword [edi + (29*4)]		; ST = autoc[29]+d*data[sample+29] d
-	fstp	dword [edi + (29*4)]		; autoc[29]+=d*data[sample+29]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (28*4)]		; ST = d*data[sample+28] d
-	fadd	dword [edi + (28*4)]		; ST = autoc[28]+d*data[sample+28] d
-	fstp	dword [edi + (28*4)]		; autoc[28]+=d*data[sample+28]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (27*4)]		; ST = d*data[sample+27] d
-	fadd	dword [edi + (27*4)]		; ST = autoc[27]+d*data[sample+27] d
-	fstp	dword [edi + (27*4)]		; autoc[27]+=d*data[sample+27]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (26*4)]		; ST = d*data[sample+26] d
-	fadd	dword [edi + (26*4)]		; ST = autoc[26]+d*data[sample+26] d
-	fstp	dword [edi + (26*4)]		; autoc[26]+=d*data[sample+26]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (25*4)]		; ST = d*data[sample+25] d
-	fadd	dword [edi + (25*4)]		; ST = autoc[25]+d*data[sample+25] d
-	fstp	dword [edi + (25*4)]		; autoc[25]+=d*data[sample+25]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (24*4)]		; ST = d*data[sample+24] d
-	fadd	dword [edi + (24*4)]		; ST = autoc[24]+d*data[sample+24] d
-	fstp	dword [edi + (24*4)]		; autoc[24]+=d*data[sample+24]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (23*4)]		; ST = d*data[sample+23] d
-	fadd	dword [edi + (23*4)]		; ST = autoc[23]+d*data[sample+23] d
-	fstp	dword [edi + (23*4)]		; autoc[23]+=d*data[sample+23]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (22*4)]		; ST = d*data[sample+22] d
-	fadd	dword [edi + (22*4)]		; ST = autoc[22]+d*data[sample+22] d
-	fstp	dword [edi + (22*4)]		; autoc[22]+=d*data[sample+22]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (21*4)]		; ST = d*data[sample+21] d
-	fadd	dword [edi + (21*4)]		; ST = autoc[21]+d*data[sample+21] d
-	fstp	dword [edi + (21*4)]		; autoc[21]+=d*data[sample+21]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (20*4)]		; ST = d*data[sample+20] d
-	fadd	dword [edi + (20*4)]		; ST = autoc[20]+d*data[sample+20] d
-	fstp	dword [edi + (20*4)]		; autoc[20]+=d*data[sample+20]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (19*4)]		; ST = d*data[sample+19] d
-	fadd	dword [edi + (19*4)]		; ST = autoc[19]+d*data[sample+19] d
-	fstp	dword [edi + (19*4)]		; autoc[19]+=d*data[sample+19]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (18*4)]		; ST = d*data[sample+18] d
-	fadd	dword [edi + (18*4)]		; ST = autoc[18]+d*data[sample+18] d
-	fstp	dword [edi + (18*4)]		; autoc[18]+=d*data[sample+18]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (17*4)]		; ST = d*data[sample+17] d
-	fadd	dword [edi + (17*4)]		; ST = autoc[17]+d*data[sample+17] d
-	fstp	dword [edi + (17*4)]		; autoc[17]+=d*data[sample+17]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (16*4)]		; ST = d*data[sample+16] d
-	fadd	dword [edi + (16*4)]		; ST = autoc[16]+d*data[sample+16] d
-	fstp	dword [edi + (16*4)]		; autoc[16]+=d*data[sample+16]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (15*4)]		; ST = d*data[sample+15] d
-	fadd	dword [edi + (15*4)]		; ST = autoc[15]+d*data[sample+15] d
-	fstp	dword [edi + (15*4)]		; autoc[15]+=d*data[sample+15]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (14*4)]		; ST = d*data[sample+14] d
-	fadd	dword [edi + (14*4)]		; ST = autoc[14]+d*data[sample+14] d
-	fstp	dword [edi + (14*4)]		; autoc[14]+=d*data[sample+14]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (13*4)]		; ST = d*data[sample+13] d
-	fadd	dword [edi + (13*4)]		; ST = autoc[13]+d*data[sample+13] d
-	fstp	dword [edi + (13*4)]		; autoc[13]+=d*data[sample+13]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (12*4)]		; ST = d*data[sample+12] d
-	fadd	dword [edi + (12*4)]		; ST = autoc[12]+d*data[sample+12] d
-	fstp	dword [edi + (12*4)]		; autoc[12]+=d*data[sample+12]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (11*4)]		; ST = d*data[sample+11] d
-	fadd	dword [edi + (11*4)]		; ST = autoc[11]+d*data[sample+11] d
-	fstp	dword [edi + (11*4)]		; autoc[11]+=d*data[sample+11]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + (10*4)]		; ST = d*data[sample+10] d
-	fadd	dword [edi + (10*4)]		; ST = autoc[10]+d*data[sample+10] d
-	fstp	dword [edi + (10*4)]		; autoc[10]+=d*data[sample+10]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 9*4)]		; ST = d*data[sample+9] d
-	fadd	dword [edi + ( 9*4)]		; ST = autoc[9]+d*data[sample+9] d
-	fstp	dword [edi + ( 9*4)]		; autoc[9]+=d*data[sample+9]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 8*4)]		; ST = d*data[sample+8] d
-	fadd	dword [edi + ( 8*4)]		; ST = autoc[8]+d*data[sample+8] d
-	fstp	dword [edi + ( 8*4)]		; autoc[8]+=d*data[sample+8]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 7*4)]		; ST = d*data[sample+7] d
-	fadd	dword [edi + ( 7*4)]		; ST = autoc[7]+d*data[sample+7] d
-	fstp	dword [edi + ( 7*4)]		; autoc[7]+=d*data[sample+7]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 6*4)]		; ST = d*data[sample+6] d
-	fadd	dword [edi + ( 6*4)]		; ST = autoc[6]+d*data[sample+6] d
-	fstp	dword [edi + ( 6*4)]		; autoc[6]+=d*data[sample+6]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 5*4)]		; ST = d*data[sample+4] d
-	fadd	dword [edi + ( 5*4)]		; ST = autoc[4]+d*data[sample+4] d
-	fstp	dword [edi + ( 5*4)]		; autoc[4]+=d*data[sample+4]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 4*4)]		; ST = d*data[sample+4] d
-	fadd	dword [edi + ( 4*4)]		; ST = autoc[4]+d*data[sample+4] d
-	fstp	dword [edi + ( 4*4)]		; autoc[4]+=d*data[sample+4]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 3*4)]		; ST = d*data[sample+3] d
-	fadd	dword [edi + ( 3*4)]		; ST = autoc[3]+d*data[sample+3] d
-	fstp	dword [edi + ( 3*4)]		; autoc[3]+=d*data[sample+3]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 2*4)]		; ST = d*data[sample+2] d
-	fadd	dword [edi + ( 2*4)]		; ST = autoc[2]+d*data[sample+2] d
-	fstp	dword [edi + ( 2*4)]		; autoc[2]+=d*data[sample+2]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi + ( 1*4)]		; ST = d*data[sample+1] d
-	fadd	dword [edi + ( 1*4)]		; ST = autoc[1]+d*data[sample+1] d
-	fstp	dword [edi + ( 1*4)]		; autoc[1]+=d*data[sample+1]  ST = d
-	fld	st0				; ST = d d
-	fmul	dword [esi]			; ST = d*data[sample] d			WATCHOUT: no displacement byte here!
-	fadd	dword [edi]			; ST = autoc[0]+d*data[sample] d	WATCHOUT: no displacement byte here!
-	fstp	dword [edi]			; autoc[0]+=d*data[sample]  ST = d	WATCHOUT: no displacement byte here!
-.jumper2_0:
-
-	fstp	st0				; pop d, ST = empty
-	add	esi, byte 4			; sample++
-	dec	ecx
-	jz	.loop2_end
-	add	edx, byte 11			; adjust our inner loop counter by adjusting the jump target
-	fld	dword [esi]			; ST = d <- data[sample]
-	jmp	edx
-.loop2_end:
-
-.end:
-	pop	ebx
-	pop	edi
-	pop	esi
-	ret
-
-	ALIGN 16
-cident FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_4
-	;[esp + 16] == autoc[]
-	;[esp + 12] == lag
-	;[esp + 8] == data_len
-	;[esp + 4] == data[]
-
-	;ASSERT(lag > 0)
-	;ASSERT(lag <= 4)
-	;ASSERT(lag <= data_len)
-
-	;	for(coeff = 0; coeff < lag; coeff++)
-	;		autoc[coeff] = 0.0;
-	xorps	xmm5, xmm5
-
-	mov	edx, [esp + 8]			; edx == data_len
-	mov	eax, [esp + 4]			; eax == &data[sample] <- &data[0]
-
-	movss	xmm0, [eax]			; xmm0 = 0,0,0,data[0]
-	add	eax, 4
-	movaps	xmm2, xmm0			; xmm2 = 0,0,0,data[0]
-	shufps	xmm0, xmm0, 0			; xmm0 == data[sample],data[sample],data[sample],data[sample] = data[0],data[0],data[0],data[0]
-.warmup:					; xmm2 == data[sample-3],data[sample-2],data[sample-1],data[sample]
-	mulps	xmm0, xmm2			; xmm0 = xmm0 * xmm2
-	addps	xmm5, xmm0			; xmm5 += xmm0 * xmm2
-	dec	edx
-	jz	.loop_end
-	ALIGN 16
-.loop_start:
-	; start by reading the next sample
-	movss	xmm0, [eax]			; xmm0 = 0,0,0,data[sample]
-	add	eax, 4
-	shufps	xmm0, xmm0, 0			; xmm0 = data[sample],data[sample],data[sample],data[sample]
-	shufps	xmm2, xmm2, 93h			; 93h=2-1-0-3 => xmm2 gets rotated left by one float
-	movss	xmm2, xmm0
-	mulps	xmm0, xmm2			; xmm0 = xmm0 * xmm2
-	addps	xmm5, xmm0			; xmm5 += xmm0 * xmm2
-	dec	edx
-	jnz	.loop_start
-.loop_end:
-	; store autoc
-	mov	edx, [esp + 16]			; edx == autoc
-	movups	[edx], xmm5
-
-.end:
-	ret
-
-	ALIGN 16
-cident FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_8
-	;[esp + 16] == autoc[]
-	;[esp + 12] == lag
-	;[esp + 8] == data_len
-	;[esp + 4] == data[]
-
-	;ASSERT(lag > 0)
-	;ASSERT(lag <= 8)
-	;ASSERT(lag <= data_len)
-
-	;	for(coeff = 0; coeff < lag; coeff++)
-	;		autoc[coeff] = 0.0;
-	xorps	xmm5, xmm5
-	xorps	xmm6, xmm6
-
-	mov	edx, [esp + 8]			; edx == data_len
-	mov	eax, [esp + 4]			; eax == &data[sample] <- &data[0]
-
-	movss	xmm0, [eax]			; xmm0 = 0,0,0,data[0]
-	add	eax, 4
-	movaps	xmm2, xmm0			; xmm2 = 0,0,0,data[0]
-	shufps	xmm0, xmm0, 0			; xmm0 == data[sample],data[sample],data[sample],data[sample] = data[0],data[0],data[0],data[0]
-	movaps	xmm1, xmm0			; xmm1 == data[sample],data[sample],data[sample],data[sample] = data[0],data[0],data[0],data[0]
-	xorps	xmm3, xmm3			; xmm3 = 0,0,0,0
-.warmup:					; xmm3:xmm2 == data[sample-7],data[sample-6],...,data[sample]
-	mulps	xmm0, xmm2
-	mulps	xmm1, xmm3			; xmm1:xmm0 = xmm1:xmm0 * xmm3:xmm2
-	addps	xmm5, xmm0
-	addps	xmm6, xmm1			; xmm6:xmm5 += xmm1:xmm0 * xmm3:xmm2
-	dec	edx
-	jz	.loop_end
-	ALIGN 16
-.loop_start:
-	; start by reading the next sample
-	movss	xmm0, [eax]			; xmm0 = 0,0,0,data[sample]
-	; here we reorder the instructions; see the (#) indexes for a logical order
-	shufps	xmm2, xmm2, 93h			; (3) 93h=2-1-0-3 => xmm2 gets rotated left by one float
-	add	eax, 4				; (0)
-	shufps	xmm3, xmm3, 93h			; (4) 93h=2-1-0-3 => xmm3 gets rotated left by one float
-	shufps	xmm0, xmm0, 0			; (1) xmm0 = data[sample],data[sample],data[sample],data[sample]
-	movss	xmm3, xmm2			; (5)
-	movaps	xmm1, xmm0			; (2) xmm1 = data[sample],data[sample],data[sample],data[sample]
-	movss	xmm2, xmm0			; (6)
-	mulps	xmm1, xmm3			; (8)
-	mulps	xmm0, xmm2			; (7) xmm1:xmm0 = xmm1:xmm0 * xmm3:xmm2
-	addps	xmm6, xmm1			; (10)
-	addps	xmm5, xmm0			; (9) xmm6:xmm5 += xmm1:xmm0 * xmm3:xmm2
-	dec	edx
-	jnz	.loop_start
-.loop_end:
-	; store autoc
-	mov	edx, [esp + 16]			; edx == autoc
-	movups	[edx], xmm5
-	movups	[edx + 16], xmm6
-
-.end:
-	ret
-
-	ALIGN 16
-cident FLAC__lpc_compute_autocorrelation_asm_ia32_sse_lag_12
-	;[esp + 16] == autoc[]
-	;[esp + 12] == lag
-	;[esp + 8] == data_len
-	;[esp + 4] == data[]
-
-	;ASSERT(lag > 0)
-	;ASSERT(lag <= 12)
-	;ASSERT(lag <= data_len)
-
-	;	for(coeff = 0; coeff < lag; coeff++)
-	;		autoc[coeff] = 0.0;
-	xorps	xmm5, xmm5
-	xorps	xmm6, xmm6
-	xorps	xmm7, xmm7
-
-	mov	edx, [esp + 8]			; edx == data_len
-	mov	eax, [esp + 4]			; eax == &data[sample] <- &data[0]
-
-	movss	xmm0, [eax]			; xmm0 = 0,0,0,data[0]
-	add	eax, 4
-	movaps	xmm2, xmm0			; xmm2 = 0,0,0,data[0]
-	shufps	xmm0, xmm0, 0			; xmm0 == data[sample],data[sample],data[sample],data[sample] = data[0],data[0],data[0],data[0]
-	xorps	xmm3, xmm3			; xmm3 = 0,0,0,0
-	xorps	xmm4, xmm4			; xmm4 = 0,0,0,0
-.warmup:					; xmm3:xmm2 == data[sample-7],data[sample-6],...,data[sample]
-	movaps	xmm1, xmm0
-	mulps	xmm1, xmm2
-	addps	xmm5, xmm1
-	movaps	xmm1, xmm0
-	mulps	xmm1, xmm3
-	addps	xmm6, xmm1
-	mulps	xmm0, xmm4
-	addps	xmm7, xmm0			; xmm7:xmm6:xmm5 += xmm0:xmm0:xmm0 * xmm4:xmm3:xmm2
-	dec	edx
-	jz	.loop_end
-	ALIGN 16
-.loop_start:
-	; start by reading the next sample
-	movss	xmm0, [eax]			; xmm0 = 0,0,0,data[sample]
-	add	eax, 4
-	shufps	xmm0, xmm0, 0			; xmm0 = data[sample],data[sample],data[sample],data[sample]
-
-	; shift xmm4:xmm3:xmm2 left by one float
-	shufps	xmm2, xmm2, 93h			; 93h=2-1-0-3 => xmm2 gets rotated left by one float
-	shufps	xmm3, xmm3, 93h			; 93h=2-1-0-3 => xmm3 gets rotated left by one float
-	shufps	xmm4, xmm4, 93h			; 93h=2-1-0-3 => xmm4 gets rotated left by one float
-	movss	xmm4, xmm3
-	movss	xmm3, xmm2
-	movss	xmm2, xmm0
-
-	; xmm7:xmm6:xmm5 += xmm0:xmm0:xmm0 * xmm3:xmm3:xmm2
-	movaps	xmm1, xmm0
-	mulps	xmm1, xmm2
-	addps	xmm5, xmm1
-	movaps	xmm1, xmm0
-	mulps	xmm1, xmm3
-	addps	xmm6, xmm1
-	mulps	xmm0, xmm4
-	addps	xmm7, xmm0
-
-	dec	edx
-	jnz	.loop_start
-.loop_end:
-	; store autoc
-	mov	edx, [esp + 16]			; edx == autoc
-	movups	[edx], xmm5
-	movups	[edx + 16], xmm6
-	movups	[edx + 32], xmm7
-
-.end:
-	ret
-
-	ALIGN 16
-cident FLAC__lpc_compute_autocorrelation_asm_ia32_3dnow
-	;[ebp + 32] autoc
-	;[ebp + 28] lag
-	;[ebp + 24] data_len
-	;[ebp + 20] data
-
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	mov	ebp, esp
-
-	mov	esi, [ebp + 20]
-	mov	edi, [ebp + 24]
-	mov	edx, [ebp + 28]
-	inc	edx
-	and	edx, byte -2
-	mov	eax, edx
-	neg	eax
-	and	esp, byte -8
-	lea	esp, [esp + 4 * eax]
-	mov	ecx, edx
-	xor	eax, eax
-.loop0:
-	dec	ecx
-	mov	[esp + 4 * ecx], eax
-	jnz	short .loop0
-
-	mov	eax, edi
-	sub	eax, edx
-	mov	ebx, edx
-	and	ebx, byte 1
-	sub	eax, ebx
-	lea	ecx, [esi + 4 * eax - 12]
-	cmp	esi, ecx
-	mov	eax, esi
-	ja	short .loop2_pre
-	ALIGN	16		;4 nops
-.loop1_i:
-	movd	mm0, [eax]
-	movd	mm2, [eax + 4]
-	movd	mm4, [eax + 8]
-	movd	mm6, [eax + 12]
-	mov	ebx, edx
-	punpckldq	mm0, mm0
-	punpckldq	mm2, mm2
-	punpckldq	mm4, mm4
-	punpckldq	mm6, mm6
-	ALIGN	16		;3 nops
-.loop1_j:
-	sub	ebx, byte 2
-	movd	mm1, [eax + 4 * ebx]
-	movd	mm3, [eax + 4 * ebx + 4]
-	movd	mm5, [eax + 4 * ebx + 8]
-	movd	mm7, [eax + 4 * ebx + 12]
-	punpckldq	mm1, mm3
-	punpckldq	mm3, mm5
-	pfmul	mm1, mm0
-	punpckldq	mm5, mm7
-	pfmul	mm3, mm2
-	punpckldq	mm7, [eax + 4 * ebx + 16]
-	pfmul	mm5, mm4
-	pfmul	mm7, mm6
-	pfadd	mm1, mm3
-	movq	mm3, [esp + 4 * ebx]
-	pfadd	mm5, mm7
-	pfadd	mm1, mm5
-	pfadd	mm3, mm1
-	movq	[esp + 4 * ebx], mm3
-	jg	short .loop1_j
-
-	add	eax, byte 16
-	cmp	eax, ecx
-	jb	short .loop1_i
-
-.loop2_pre:
-	mov	ebx, eax
-	sub	eax, esi
-	shr	eax, 2
-	lea	ecx, [esi + 4 * edi]
-	mov	esi, ebx
-.loop2_i:
-	movd	mm0, [esi]
-	mov	ebx, edi
-	sub	ebx, eax
-	cmp	ebx, edx
-	jbe	short .loop2_j
-	mov	ebx, edx
-.loop2_j:
-	dec	ebx
-	movd	mm1, [esi + 4 * ebx]
-	pfmul	mm1, mm0
-	movd	mm2, [esp + 4 * ebx]
-	pfadd	mm1, mm2
-	movd	[esp + 4 * ebx], mm1
-
-	jnz	short .loop2_j
-
-	add	esi, byte 4
-	inc	eax
-	cmp	esi, ecx
-	jnz	short .loop2_i
-
-	mov	edi, [ebp + 32]
-	mov	edx, [ebp + 28]
-.loop3:
-	dec	edx
-	mov	eax, [esp + 4 * edx]
-	mov	[edi + 4 * edx], eax
-	jnz	short .loop3
-
-	femms
-
-	mov	esp, ebp
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-
-;void FLAC__lpc_compute_residual_from_qlp_coefficients(const FLAC__int32 *data, unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 residual[])
-;
-;	for(i = 0; i < data_len; i++) {
-;		sum = 0;
-;		for(j = 0; j < order; j++)
-;			sum += qlp_coeff[j] * data[i-j-1];
-;		residual[i] = data[i] - (sum >> lp_quantization);
-;	}
-;
-	ALIGN	16
-cident FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32
-	;[esp + 40]	residual[]
-	;[esp + 36]	lp_quantization
-	;[esp + 32]	order
-	;[esp + 28]	qlp_coeff[]
-	;[esp + 24]	data_len
-	;[esp + 20]	data[]
-
-	;ASSERT(order > 0)
-
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-
-	mov	esi, [esp + 20]			; esi = data[]
-	mov	edi, [esp + 40]			; edi = residual[]
-	mov	eax, [esp + 32]			; eax = order
-	mov	ebx, [esp + 24]			; ebx = data_len
-
-	test	ebx, ebx
-	jz	near .end			; do nothing if data_len == 0
-.begin:
-	cmp	eax, byte 1
-	jg	short .i_1more
-
-	mov	ecx, [esp + 28]
-	mov	edx, [ecx]			; edx = qlp_coeff[0]
-	mov	eax, [esi - 4]			; eax = data[-1]
-	mov	cl, [esp + 36]			; cl = lp_quantization
-	ALIGN	16
-.i_1_loop_i:
-	imul	eax, edx
-	sar	eax, cl
-	neg	eax
-	add	eax, [esi]
-	mov	[edi], eax
-	mov	eax, [esi]
-	add	edi, byte 4
-	add	esi, byte 4
-	dec	ebx
-	jnz	.i_1_loop_i
-
-	jmp	.end
-
-.i_1more:
-	cmp	eax, byte 32			; for order <= 32 there is a faster routine
-	jbe	short .i_32
-
-	; This version is here just for completeness, since FLAC__MAX_LPC_ORDER == 32
-	ALIGN 16
-.i_32more_loop_i:
-	xor	ebp, ebp
-	mov	ecx, [esp + 32]
-	mov	edx, ecx
-	shl	edx, 2
-	add	edx, [esp + 28]
-	neg	ecx
-	ALIGN	16
-.i_32more_loop_j:
-	sub	edx, byte 4
-	mov	eax, [edx]
-	imul	eax, [esi + 4 * ecx]
-	add	ebp, eax
-	inc	ecx
-	jnz	short .i_32more_loop_j
-
-	mov	cl, [esp + 36]
-	sar	ebp, cl
-	neg	ebp
-	add	ebp, [esi]
-	mov	[edi], ebp
-	add	esi, byte 4
-	add	edi, byte 4
-
-	dec	ebx
-	jnz	.i_32more_loop_i
-
-	jmp	.end
-
-.i_32:
-	sub	edi, esi
-	neg	eax
-	lea	edx, [eax + eax * 8 + .jumper_0 - .get_eip0]
-	call	.get_eip0
-.get_eip0:
-	pop	eax
-	add	edx, eax
-	inc	edx
-	mov	eax, [esp + 28]			; eax = qlp_coeff[]
-	xor	ebp, ebp
-	jmp	edx
-
-	mov	ecx, [eax + 124]
-	imul	ecx, [esi - 128]
-	add	ebp, ecx
-	mov	ecx, [eax + 120]
-	imul	ecx, [esi - 124]
-	add	ebp, ecx
-	mov	ecx, [eax + 116]
-	imul	ecx, [esi - 120]
-	add	ebp, ecx
-	mov	ecx, [eax + 112]
-	imul	ecx, [esi - 116]
-	add	ebp, ecx
-	mov	ecx, [eax + 108]
-	imul	ecx, [esi - 112]
-	add	ebp, ecx
-	mov	ecx, [eax + 104]
-	imul	ecx, [esi - 108]
-	add	ebp, ecx
-	mov	ecx, [eax + 100]
-	imul	ecx, [esi - 104]
-	add	ebp, ecx
-	mov	ecx, [eax + 96]
-	imul	ecx, [esi - 100]
-	add	ebp, ecx
-	mov	ecx, [eax + 92]
-	imul	ecx, [esi - 96]
-	add	ebp, ecx
-	mov	ecx, [eax + 88]
-	imul	ecx, [esi - 92]
-	add	ebp, ecx
-	mov	ecx, [eax + 84]
-	imul	ecx, [esi - 88]
-	add	ebp, ecx
-	mov	ecx, [eax + 80]
-	imul	ecx, [esi - 84]
-	add	ebp, ecx
-	mov	ecx, [eax + 76]
-	imul	ecx, [esi - 80]
-	add	ebp, ecx
-	mov	ecx, [eax + 72]
-	imul	ecx, [esi - 76]
-	add	ebp, ecx
-	mov	ecx, [eax + 68]
-	imul	ecx, [esi - 72]
-	add	ebp, ecx
-	mov	ecx, [eax + 64]
-	imul	ecx, [esi - 68]
-	add	ebp, ecx
-	mov	ecx, [eax + 60]
-	imul	ecx, [esi - 64]
-	add	ebp, ecx
-	mov	ecx, [eax + 56]
-	imul	ecx, [esi - 60]
-	add	ebp, ecx
-	mov	ecx, [eax + 52]
-	imul	ecx, [esi - 56]
-	add	ebp, ecx
-	mov	ecx, [eax + 48]
-	imul	ecx, [esi - 52]
-	add	ebp, ecx
-	mov	ecx, [eax + 44]
-	imul	ecx, [esi - 48]
-	add	ebp, ecx
-	mov	ecx, [eax + 40]
-	imul	ecx, [esi - 44]
-	add	ebp, ecx
-	mov	ecx, [eax + 36]
-	imul	ecx, [esi - 40]
-	add	ebp, ecx
-	mov	ecx, [eax + 32]
-	imul	ecx, [esi - 36]
-	add	ebp, ecx
-	mov	ecx, [eax + 28]
-	imul	ecx, [esi - 32]
-	add	ebp, ecx
-	mov	ecx, [eax + 24]
-	imul	ecx, [esi - 28]
-	add	ebp, ecx
-	mov	ecx, [eax + 20]
-	imul	ecx, [esi - 24]
-	add	ebp, ecx
-	mov	ecx, [eax + 16]
-	imul	ecx, [esi - 20]
-	add	ebp, ecx
-	mov	ecx, [eax + 12]
-	imul	ecx, [esi - 16]
-	add	ebp, ecx
-	mov	ecx, [eax + 8]
-	imul	ecx, [esi - 12]
-	add	ebp, ecx
-	mov	ecx, [eax + 4]
-	imul	ecx, [esi - 8]
-	add	ebp, ecx
-	mov	ecx, [eax]			; there is one byte missing
-	imul	ecx, [esi - 4]
-	add	ebp, ecx
-.jumper_0:
-
-	mov	cl, [esp + 36]
-	sar	ebp, cl
-	neg	ebp
-	add	ebp, [esi]
-	mov	[edi + esi], ebp
-	add	esi, byte 4
-
-	dec	ebx
-	jz	short .end
-	xor	ebp, ebp
-	jmp	edx
-
-.end:
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-
-; WATCHOUT: this routine works on 16 bit data which means bits-per-sample for
-; the channel and qlp_coeffs must be <= 16.  Especially note that this routine
-; cannot be used for side-channel coded 16bps channels since the effective bps
-; is 17.
-	ALIGN	16
-cident FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32_mmx
-	;[esp + 40]	residual[]
-	;[esp + 36]	lp_quantization
-	;[esp + 32]	order
-	;[esp + 28]	qlp_coeff[]
-	;[esp + 24]	data_len
-	;[esp + 20]	data[]
-
-	;ASSERT(order > 0)
-
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-
-	mov	esi, [esp + 20]			; esi = data[]
-	mov	edi, [esp + 40]			; edi = residual[]
-	mov	eax, [esp + 32]			; eax = order
-	mov	ebx, [esp + 24]			; ebx = data_len
-
-	test	ebx, ebx
-	jz	near .end			; do nothing if data_len == 0
-	dec	ebx
-	test	ebx, ebx
-	jz	near .last_one
-
-	mov	edx, [esp + 28]			; edx = qlp_coeff[]
-	movd	mm6, [esp + 36]			; mm6 = 0:lp_quantization
-	mov	ebp, esp
-
-	and	esp, 0xfffffff8
-
-	xor	ecx, ecx
-.copy_qlp_loop:
-	push	word [edx + 4 * ecx]
-	inc	ecx
-	cmp	ecx, eax
-	jnz	short .copy_qlp_loop
-
-	and	ecx, 0x3
-	test	ecx, ecx
-	je	short .za_end
-	sub	ecx, byte 4
-.za_loop:
-	push	word 0
-	inc	eax
-	inc	ecx
-	jnz	short .za_loop
-.za_end:
-
-	movq	mm5, [esp + 2 * eax - 8]
-	movd	mm4, [esi - 16]
-	punpckldq	mm4, [esi - 12]
-	movd	mm0, [esi - 8]
-	punpckldq	mm0, [esi - 4]
-	packssdw	mm4, mm0
-
-	cmp	eax, byte 4
-	jnbe	short .mmx_4more
-
-	ALIGN	16
-.mmx_4_loop_i:
-	movd	mm1, [esi]
-	movq	mm3, mm4
-	punpckldq	mm1, [esi + 4]
-	psrlq	mm4, 16
-	movq	mm0, mm1
-	psllq	mm0, 48
-	por	mm4, mm0
-	movq	mm2, mm4
-	psrlq	mm4, 16
-	pxor	mm0, mm0
-	punpckhdq	mm0, mm1
-	pmaddwd	mm3, mm5
-	pmaddwd	mm2, mm5
-	psllq	mm0, 16
-	por	mm4, mm0
-	movq	mm0, mm3
-	punpckldq	mm3, mm2
-	punpckhdq	mm0, mm2
-	paddd	mm3, mm0
-	psrad	mm3, mm6
-	psubd	mm1, mm3
-	movd	[edi], mm1
-	punpckhdq	mm1, mm1
-	movd	[edi + 4], mm1
-
-	add	edi, byte 8
-	add	esi, byte 8
-
-	sub	ebx, 2
-	jg	.mmx_4_loop_i
-	jmp	.mmx_end
-
-.mmx_4more:
-	shl	eax, 2
-	neg	eax
-	add	eax, byte 16
-
-	ALIGN	16
-.mmx_4more_loop_i:
-	movd	mm1, [esi]
-	punpckldq	mm1, [esi + 4]
-	movq	mm3, mm4
-	psrlq	mm4, 16
-	movq	mm0, mm1
-	psllq	mm0, 48
-	por	mm4, mm0
-	movq	mm2, mm4
-	psrlq	mm4, 16
-	pxor	mm0, mm0
-	punpckhdq	mm0, mm1
-	pmaddwd	mm3, mm5
-	pmaddwd	mm2, mm5
-	psllq	mm0, 16
-	por	mm4, mm0
-
-	mov	ecx, esi
-	add	ecx, eax
-	mov	edx, esp
-
-	ALIGN	16
-.mmx_4more_loop_j:
-	movd	mm0, [ecx - 16]
-	movd	mm7, [ecx - 8]
-	punpckldq	mm0, [ecx - 12]
-	punpckldq	mm7, [ecx - 4]
-	packssdw	mm0, mm7
-	pmaddwd	mm0, [edx]
-	punpckhdq	mm7, mm7
-	paddd	mm3, mm0
-	movd	mm0, [ecx - 12]
-	punpckldq	mm0, [ecx - 8]
-	punpckldq	mm7, [ecx]
-	packssdw	mm0, mm7
-	pmaddwd	mm0, [edx]
-	paddd	mm2, mm0
-
-	add	edx, byte 8
-	add	ecx, byte 16
-	cmp	ecx, esi
-	jnz	.mmx_4more_loop_j
-
-	movq	mm0, mm3
-	punpckldq	mm3, mm2
-	punpckhdq	mm0, mm2
-	paddd	mm3, mm0
-	psrad	mm3, mm6
-	psubd	mm1, mm3
-	movd	[edi], mm1
-	punpckhdq	mm1, mm1
-	movd	[edi + 4], mm1
-
-	add	edi, byte 8
-	add	esi, byte 8
-
-	sub	ebx, 2
-	jg	near .mmx_4more_loop_i
-
-.mmx_end:
-	emms
-	mov	esp, ebp
-.last_one:
-	mov	eax, [esp + 32]
-	inc	ebx
-	jnz	near FLAC__lpc_compute_residual_from_qlp_coefficients_asm_ia32.begin
-
-.end:
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-
-; **********************************************************************
-;
-; void FLAC__lpc_restore_signal(const FLAC__int32 residual[], unsigned data_len, const FLAC__int32 qlp_coeff[], unsigned order, int lp_quantization, FLAC__int32 data[])
-; {
-; 	unsigned i, j;
-; 	FLAC__int32 sum;
-;
-; 	FLAC__ASSERT(order > 0);
-;
-; 	for(i = 0; i < data_len; i++) {
-; 		sum = 0;
-; 		for(j = 0; j < order; j++)
-; 			sum += qlp_coeff[j] * data[i-j-1];
-; 		data[i] = residual[i] + (sum >> lp_quantization);
-; 	}
-; }
-	ALIGN	16
-cident FLAC__lpc_restore_signal_asm_ia32
-	;[esp + 40]	data[]
-	;[esp + 36]	lp_quantization
-	;[esp + 32]	order
-	;[esp + 28]	qlp_coeff[]
-	;[esp + 24]	data_len
-	;[esp + 20]	residual[]
-
-	;ASSERT(order > 0)
-
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-
-	mov	esi, [esp + 20]			; esi = residual[]
-	mov	edi, [esp + 40]			; edi = data[]
-	mov	eax, [esp + 32]			; eax = order
-	mov	ebx, [esp + 24]			; ebx = data_len
-
-	test	ebx, ebx
-	jz	near .end			; do nothing if data_len == 0
-
-.begin:
-	cmp	eax, byte 1
-	jg	short .x87_1more
-
-	mov	ecx, [esp + 28]
-	mov	edx, [ecx]
-	mov	eax, [edi - 4]
-	mov	cl, [esp + 36]
-	ALIGN	16
-.x87_1_loop_i:
-	imul	eax, edx
-	sar	eax, cl
-	add	eax, [esi]
-	mov	[edi], eax
-	add	esi, byte 4
-	add	edi, byte 4
-	dec	ebx
-	jnz	.x87_1_loop_i
-
-	jmp	.end
-
-.x87_1more:
-	cmp	eax, byte 32			; for order <= 32 there is a faster routine
-	jbe	short .x87_32
-
-	; This version is here just for completeness, since FLAC__MAX_LPC_ORDER == 32
-	ALIGN 16
-.x87_32more_loop_i:
-	xor	ebp, ebp
-	mov	ecx, [esp + 32]
-	mov	edx, ecx
-	shl	edx, 2
-	add	edx, [esp + 28]
-	neg	ecx
-	ALIGN	16
-.x87_32more_loop_j:
-	sub	edx, byte 4
-	mov	eax, [edx]
-	imul	eax, [edi + 4 * ecx]
-	add	ebp, eax
-	inc	ecx
-	jnz	short .x87_32more_loop_j
-
-	mov	cl, [esp + 36]
-	sar	ebp, cl
-	add	ebp, [esi]
-	mov	[edi], ebp
-	add	edi, byte 4
-	add	esi, byte 4
-
-	dec	ebx
-	jnz	.x87_32more_loop_i
-
-	jmp	.end
-
-.x87_32:
-	sub	esi, edi
-	neg	eax
-	lea	edx, [eax + eax * 8 + .jumper_0 - .get_eip0]
-	call	.get_eip0
-.get_eip0:
-	pop	eax
-	add	edx, eax
-	inc	edx				; compensate for the shorter opcode on the last iteration
-	mov	eax, [esp + 28]			; eax = qlp_coeff[]
-	xor	ebp, ebp
-	jmp	edx
-
-	mov	ecx, [eax + 124]		; ecx =  qlp_coeff[31]
-	imul	ecx, [edi - 128]		; ecx =  qlp_coeff[31] * data[i-32]
-	add	ebp, ecx			; sum += qlp_coeff[31] * data[i-32]
-	mov	ecx, [eax + 120]		; ecx =  qlp_coeff[30]
-	imul	ecx, [edi - 124]		; ecx =  qlp_coeff[30] * data[i-31]
-	add	ebp, ecx			; sum += qlp_coeff[30] * data[i-31]
-	mov	ecx, [eax + 116]		; ecx =  qlp_coeff[29]
-	imul	ecx, [edi - 120]		; ecx =  qlp_coeff[29] * data[i-30]
-	add	ebp, ecx			; sum += qlp_coeff[29] * data[i-30]
-	mov	ecx, [eax + 112]		; ecx =  qlp_coeff[28]
-	imul	ecx, [edi - 116]		; ecx =  qlp_coeff[28] * data[i-29]
-	add	ebp, ecx			; sum += qlp_coeff[28] * data[i-29]
-	mov	ecx, [eax + 108]		; ecx =  qlp_coeff[27]
-	imul	ecx, [edi - 112]		; ecx =  qlp_coeff[27] * data[i-28]
-	add	ebp, ecx			; sum += qlp_coeff[27] * data[i-28]
-	mov	ecx, [eax + 104]		; ecx =  qlp_coeff[26]
-	imul	ecx, [edi - 108]		; ecx =  qlp_coeff[26] * data[i-27]
-	add	ebp, ecx			; sum += qlp_coeff[26] * data[i-27]
-	mov	ecx, [eax + 100]		; ecx =  qlp_coeff[25]
-	imul	ecx, [edi - 104]		; ecx =  qlp_coeff[25] * data[i-26]
-	add	ebp, ecx			; sum += qlp_coeff[25] * data[i-26]
-	mov	ecx, [eax + 96]			; ecx =  qlp_coeff[24]
-	imul	ecx, [edi - 100]		; ecx =  qlp_coeff[24] * data[i-25]
-	add	ebp, ecx			; sum += qlp_coeff[24] * data[i-25]
-	mov	ecx, [eax + 92]			; ecx =  qlp_coeff[23]
-	imul	ecx, [edi - 96]			; ecx =  qlp_coeff[23] * data[i-24]
-	add	ebp, ecx			; sum += qlp_coeff[23] * data[i-24]
-	mov	ecx, [eax + 88]			; ecx =  qlp_coeff[22]
-	imul	ecx, [edi - 92]			; ecx =  qlp_coeff[22] * data[i-23]
-	add	ebp, ecx			; sum += qlp_coeff[22] * data[i-23]
-	mov	ecx, [eax + 84]			; ecx =  qlp_coeff[21]
-	imul	ecx, [edi - 88]			; ecx =  qlp_coeff[21] * data[i-22]
-	add	ebp, ecx			; sum += qlp_coeff[21] * data[i-22]
-	mov	ecx, [eax + 80]			; ecx =  qlp_coeff[20]
-	imul	ecx, [edi - 84]			; ecx =  qlp_coeff[20] * data[i-21]
-	add	ebp, ecx			; sum += qlp_coeff[20] * data[i-21]
-	mov	ecx, [eax + 76]			; ecx =  qlp_coeff[19]
-	imul	ecx, [edi - 80]			; ecx =  qlp_coeff[19] * data[i-20]
-	add	ebp, ecx			; sum += qlp_coeff[19] * data[i-20]
-	mov	ecx, [eax + 72]			; ecx =  qlp_coeff[18]
-	imul	ecx, [edi - 76]			; ecx =  qlp_coeff[18] * data[i-19]
-	add	ebp, ecx			; sum += qlp_coeff[18] * data[i-19]
-	mov	ecx, [eax + 68]			; ecx =  qlp_coeff[17]
-	imul	ecx, [edi - 72]			; ecx =  qlp_coeff[17] * data[i-18]
-	add	ebp, ecx			; sum += qlp_coeff[17] * data[i-18]
-	mov	ecx, [eax + 64]			; ecx =  qlp_coeff[16]
-	imul	ecx, [edi - 68]			; ecx =  qlp_coeff[16] * data[i-17]
-	add	ebp, ecx			; sum += qlp_coeff[16] * data[i-17]
-	mov	ecx, [eax + 60]			; ecx =  qlp_coeff[15]
-	imul	ecx, [edi - 64]			; ecx =  qlp_coeff[15] * data[i-16]
-	add	ebp, ecx			; sum += qlp_coeff[15] * data[i-16]
-	mov	ecx, [eax + 56]			; ecx =  qlp_coeff[14]
-	imul	ecx, [edi - 60]			; ecx =  qlp_coeff[14] * data[i-15]
-	add	ebp, ecx			; sum += qlp_coeff[14] * data[i-15]
-	mov	ecx, [eax + 52]			; ecx =  qlp_coeff[13]
-	imul	ecx, [edi - 56]			; ecx =  qlp_coeff[13] * data[i-14]
-	add	ebp, ecx			; sum += qlp_coeff[13] * data[i-14]
-	mov	ecx, [eax + 48]			; ecx =  qlp_coeff[12]
-	imul	ecx, [edi - 52]			; ecx =  qlp_coeff[12] * data[i-13]
-	add	ebp, ecx			; sum += qlp_coeff[12] * data[i-13]
-	mov	ecx, [eax + 44]			; ecx =  qlp_coeff[11]
-	imul	ecx, [edi - 48]			; ecx =  qlp_coeff[11] * data[i-12]
-	add	ebp, ecx			; sum += qlp_coeff[11] * data[i-12]
-	mov	ecx, [eax + 40]			; ecx =  qlp_coeff[10]
-	imul	ecx, [edi - 44]			; ecx =  qlp_coeff[10] * data[i-11]
-	add	ebp, ecx			; sum += qlp_coeff[10] * data[i-11]
-	mov	ecx, [eax + 36]			; ecx =  qlp_coeff[ 9]
-	imul	ecx, [edi - 40]			; ecx =  qlp_coeff[ 9] * data[i-10]
-	add	ebp, ecx			; sum += qlp_coeff[ 9] * data[i-10]
-	mov	ecx, [eax + 32]			; ecx =  qlp_coeff[ 8]
-	imul	ecx, [edi - 36]			; ecx =  qlp_coeff[ 8] * data[i- 9]
-	add	ebp, ecx			; sum += qlp_coeff[ 8] * data[i- 9]
-	mov	ecx, [eax + 28]			; ecx =  qlp_coeff[ 7]
-	imul	ecx, [edi - 32]			; ecx =  qlp_coeff[ 7] * data[i- 8]
-	add	ebp, ecx			; sum += qlp_coeff[ 7] * data[i- 8]
-	mov	ecx, [eax + 24]			; ecx =  qlp_coeff[ 6]
-	imul	ecx, [edi - 28]			; ecx =  qlp_coeff[ 6] * data[i- 7]
-	add	ebp, ecx			; sum += qlp_coeff[ 6] * data[i- 7]
-	mov	ecx, [eax + 20]			; ecx =  qlp_coeff[ 5]
-	imul	ecx, [edi - 24]			; ecx =  qlp_coeff[ 5] * data[i- 6]
-	add	ebp, ecx			; sum += qlp_coeff[ 5] * data[i- 6]
-	mov	ecx, [eax + 16]			; ecx =  qlp_coeff[ 4]
-	imul	ecx, [edi - 20]			; ecx =  qlp_coeff[ 4] * data[i- 5]
-	add	ebp, ecx			; sum += qlp_coeff[ 4] * data[i- 5]
-	mov	ecx, [eax + 12]			; ecx =  qlp_coeff[ 3]
-	imul	ecx, [edi - 16]			; ecx =  qlp_coeff[ 3] * data[i- 4]
-	add	ebp, ecx			; sum += qlp_coeff[ 3] * data[i- 4]
-	mov	ecx, [eax + 8]			; ecx =  qlp_coeff[ 2]
-	imul	ecx, [edi - 12]			; ecx =  qlp_coeff[ 2] * data[i- 3]
-	add	ebp, ecx			; sum += qlp_coeff[ 2] * data[i- 3]
-	mov	ecx, [eax + 4]			; ecx =  qlp_coeff[ 1]
-	imul	ecx, [edi - 8]			; ecx =  qlp_coeff[ 1] * data[i- 2]
-	add	ebp, ecx			; sum += qlp_coeff[ 1] * data[i- 2]
-	mov	ecx, [eax]			; ecx =  qlp_coeff[ 0] (NOTE: one byte missing from instruction)
-	imul	ecx, [edi - 4]			; ecx =  qlp_coeff[ 0] * data[i- 1]
-	add	ebp, ecx			; sum += qlp_coeff[ 0] * data[i- 1]
-.jumper_0:
-
-	mov	cl, [esp + 36]
-	sar	ebp, cl				; ebp = (sum >> lp_quantization)
-	add	ebp, [esi + edi]		; ebp = residual[i] + (sum >> lp_quantization)
-	mov	[edi], ebp			; data[i] = residual[i] + (sum >> lp_quantization)
-	add	edi, byte 4
-
-	dec	ebx
-	jz	short .end
-	xor	ebp, ebp
-	jmp	edx
-
-.end:
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-
-; WATCHOUT: this routine works on 16 bit data which means bits-per-sample for
-; the channel and qlp_coeffs must be <= 16.  Especially note that this routine
-; cannot be used for side-channel coded 16bps channels since the effective bps
-; is 17.
-; WATCHOUT: this routine requires that each data array have a buffer of up to
-; 3 zeroes in front (at negative indices) for alignment purposes, i.e. for each
-; channel n, data[n][-1] through data[n][-3] should be accessible and zero.
-	ALIGN	16
-cident FLAC__lpc_restore_signal_asm_ia32_mmx
-	;[esp + 40]	data[]
-	;[esp + 36]	lp_quantization
-	;[esp + 32]	order
-	;[esp + 28]	qlp_coeff[]
-	;[esp + 24]	data_len
-	;[esp + 20]	residual[]
-
-	;ASSERT(order > 0)
-
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-
-	mov	esi, [esp + 20]
-	mov	edi, [esp + 40]
-	mov	eax, [esp + 32]
-	mov	ebx, [esp + 24]
-
-	test	ebx, ebx
-	jz	near .end			; do nothing if data_len == 0
-	cmp	eax, byte 4
-	jb	near FLAC__lpc_restore_signal_asm_ia32.begin
-
-	mov	edx, [esp + 28]
-	movd	mm6, [esp + 36]
-	mov	ebp, esp
-
-	and	esp, 0xfffffff8
-
-	xor	ecx, ecx
-.copy_qlp_loop:
-	push	word [edx + 4 * ecx]
-	inc	ecx
-	cmp	ecx, eax
-	jnz	short .copy_qlp_loop
-
-	and	ecx, 0x3
-	test	ecx, ecx
-	je	short .za_end
-	sub	ecx, byte 4
-.za_loop:
-	push	word 0
-	inc	eax
-	inc	ecx
-	jnz	short .za_loop
-.za_end:
-
-	movq	mm5, [esp + 2 * eax - 8]
-	movd	mm4, [edi - 16]
-	punpckldq	mm4, [edi - 12]
-	movd	mm0, [edi - 8]
-	punpckldq	mm0, [edi - 4]
-	packssdw	mm4, mm0
-
-	cmp	eax, byte 4
-	jnbe	short .mmx_4more
-
-	ALIGN	16
-.mmx_4_loop_i:
-	movq	mm7, mm4
-	pmaddwd	mm7, mm5
-	movq	mm0, mm7
-	punpckhdq	mm7, mm7
-	paddd	mm7, mm0
-	psrad	mm7, mm6
-	movd	mm1, [esi]
-	paddd	mm7, mm1
-	movd	[edi], mm7
-	psllq	mm7, 48
-	psrlq	mm4, 16
-	por	mm4, mm7
-
-	add	esi, byte 4
-	add	edi, byte 4
-
-	dec	ebx
-	jnz	.mmx_4_loop_i
-	jmp	.mmx_end
-.mmx_4more:
-	shl	eax, 2
-	neg	eax
-	add	eax, byte 16
-	ALIGN	16
-.mmx_4more_loop_i:
-	mov	ecx, edi
-	add	ecx, eax
-	mov	edx, esp
-
-	movq	mm7, mm4
-	pmaddwd	mm7, mm5
-
-	ALIGN	16
-.mmx_4more_loop_j:
-	movd	mm0, [ecx - 16]
-	punpckldq	mm0, [ecx - 12]
-	movd	mm1, [ecx - 8]
-	punpckldq	mm1, [ecx - 4]
-	packssdw	mm0, mm1
-	pmaddwd	mm0, [edx]
-	paddd	mm7, mm0
-
-	add	edx, byte 8
-	add	ecx, byte 16
-	cmp	ecx, edi
-	jnz	.mmx_4more_loop_j
-
-	movq	mm0, mm7
-	punpckhdq	mm7, mm7
-	paddd	mm7, mm0
-	psrad	mm7, mm6
-	movd	mm1, [esi]
-	paddd	mm7, mm1
-	movd	[edi], mm7
-	psllq	mm7, 48
-	psrlq	mm4, 16
-	por	mm4, mm7
-
-	add	esi, byte 4
-	add	edi, byte 4
-
-	dec	ebx
-	jnz	short .mmx_4more_loop_i
-.mmx_end:
-	emms
-	mov	esp, ebp
-
-.end:
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-
-end
-
-%ifdef OBJ_FORMAT_elf
-       section .note.GNU-stack noalloc
-%endif
diff --git a/libFLAC/ia32/nasm.h b/libFLAC/ia32/nasm.h
deleted file mode 100644
index 215498d..0000000
--- a/libFLAC/ia32/nasm.h
+++ /dev/null
@@ -1,75 +0,0 @@
-;  libFLAC - Free Lossless Audio Codec library
-;  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-;
-;  Redistribution and use in source and binary forms, with or without
-;  modification, are permitted provided that the following conditions
-;  are met:
-;
-;  - Redistributions of source code must retain the above copyright
-;  notice, this list of conditions and the following disclaimer.
-;
-;  - Redistributions in binary form must reproduce the above copyright
-;  notice, this list of conditions and the following disclaimer in the
-;  documentation and/or other materials provided with the distribution.
-;
-;  - Neither the name of the Xiph.org Foundation nor the names of its
-;  contributors may be used to endorse or promote products derived from
-;  this software without specific prior written permission.
-;
-;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-;  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-;  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-;  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-;  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-;  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-;  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-;  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-;  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-;  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-	bits 32
-
-%ifdef OBJ_FORMAT_win32
-	%define FLAC__PUBLIC_NEEDS_UNDERSCORE
-	%idefine code_section section .text align=16 class=CODE use32
-	%idefine data_section section .data align=32 class=DATA use32
-	%idefine bss_section  section .bss  align=32 class=DATA use32
-%elifdef OBJ_FORMAT_aout
-	%define FLAC__PUBLIC_NEEDS_UNDERSCORE
-	%idefine code_section section .text
-	%idefine data_section section .data
-	%idefine bss_section  section .bss
-%elifdef OBJ_FORMAT_aoutb
-	%define FLAC__PUBLIC_NEEDS_UNDERSCORE
-	%idefine code_section section .text
-	%idefine data_section section .data
-	%idefine bss_section  section .bss
-%elifdef OBJ_FORMAT_elf
-	%idefine code_section section .text align=16
-	%idefine data_section section .data align=32
-	%idefine bss_section  section .bss  align=32
-%else
-	%error unsupported object format!
-%endif
-
-%imacro cglobal 1
-	%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
-		global _%1
-	%else
-		global %1
-	%endif
-%endmacro
-
-%imacro cextern 1
-	%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
-		extern _%1
-	%else
-		extern %1
-	%endif
-%endmacro
-
-%imacro cident 1
-_%1:
-%1:
-%endmacro
diff --git a/libFLAC/ia32/stream_encoder_asm.nasm b/libFLAC/ia32/stream_encoder_asm.nasm
deleted file mode 100644
index b7ecef8..0000000
--- a/libFLAC/ia32/stream_encoder_asm.nasm
+++ /dev/null
@@ -1,159 +0,0 @@
-;  vim:filetype=nasm ts=8
-
-;  libFLAC - Free Lossless Audio Codec library
-;  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-;
-;  Redistribution and use in source and binary forms, with or without
-;  modification, are permitted provided that the following conditions
-;  are met:
-;
-;  - Redistributions of source code must retain the above copyright
-;  notice, this list of conditions and the following disclaimer.
-;
-;  - Redistributions in binary form must reproduce the above copyright
-;  notice, this list of conditions and the following disclaimer in the
-;  documentation and/or other materials provided with the distribution.
-;
-;  - Neither the name of the Xiph.org Foundation nor the names of its
-;  contributors may be used to endorse or promote products derived from
-;  this software without specific prior written permission.
-;
-;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-;  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-;  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-;  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-;  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-;  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-;  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-;  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-;  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-;  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-%include "nasm.h"
-
-	data_section
-
-cglobal precompute_partition_info_sums_32bit_asm_ia32_
-
-	code_section
-
-
-; **********************************************************************
-;
-; void FLAC__bool FLAC__bitreader_read_rice_signed_block(FLAC__BitReader *br, int vals[], unsigned nvals, unsigned parameter)
-; void precompute_partition_info_sums_32bit_(
-; 	const FLAC__int32 residual[],
-; 	FLAC__uint64 abs_residual_partition_sums[],
-; 	unsigned blocksize,
-; 	unsigned predictor_order,
-; 	unsigned min_partition_order,
-; 	unsigned max_partition_order
-; )
-;
-	ALIGN 16
-cident precompute_partition_info_sums_32bit_asm_ia32_
-
-	;; peppered throughout the code at major checkpoints are keys like this as to where things are at that point in time
-	;; [esp + 4]	const FLAC__int32 residual[]
-	;; [esp + 8]	FLAC__uint64 abs_residual_partition_sums[]
-	;; [esp + 12]	unsigned blocksize
-	;; [esp + 16]	unsigned predictor_order
-	;; [esp + 20]	unsigned min_partition_order
-	;; [esp + 24]	unsigned max_partition_order
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	sub	esp, 8
-	;; [esp + 28]	const FLAC__int32 residual[]
-	;; [esp + 32]	FLAC__uint64 abs_residual_partition_sums[]
-	;; [esp + 36]	unsigned blocksize
-	;; [esp + 40]	unsigned predictor_order
-	;; [esp + 44]	unsigned min_partition_order
-	;; [esp + 48]	unsigned max_partition_order
-	;; [esp]	partitions
-	;; [esp + 4]	default_partition_samples
-
-	mov	ecx, [esp + 48]
-	mov	eax, 1
-	shl	eax, cl
-	mov	[esp], eax		; [esp] <- partitions = 1u << max_partition_order;
-	mov	eax, [esp + 36]
-	shr	eax, cl
-	mov	[esp + 4], eax		; [esp + 4] <- default_partition_samples = blocksize >> max_partition_order;
-
-	;
-	; first do max_partition_order
-	;
-	mov	edi, [esp + 4]
-	sub	edi, [esp + 40]		; edi <- end = (unsigned)(-(int)predictor_order) + default_partition_samples
-	xor	esi, esi		; esi <- residual_sample = 0
-	xor	ecx, ecx		; ecx <- partition = 0
-	mov	ebp, [esp + 28]		; ebp <- residual[]
-	xor	ebx, ebx		; ebx <- abs_residual_partition_sum = 0;
-	; note we put the updates to 'end' and 'abs_residual_partition_sum' at the end of loop0 and in the initialization above so we could align loop0 and loop1
-	ALIGN	16
-.loop0:					; for(partition = residual_sample = 0; partition < partitions; partition++) {
-.loop1:					;   for( ; residual_sample < end; residual_sample++)
-	mov	eax, [ebp + esi * 4]
-	cdq
-	xor	eax, edx
-	sub	eax, edx
-	add	ebx, eax		;     abs_residual_partition_sum += abs(residual[residual_sample]);
-	;@@@@@@ check overflow flag and abort here?
-	add	esi, byte 1
-	cmp	esi, edi		;   /* since the loop will always run at least once, we can put the loop check down here */
-	jb	.loop1
-.next1:
-	add	edi, [esp + 4]		;   end += default_partition_samples;
-	mov	eax, [esp + 32]
-	mov	[eax + ecx * 8], ebx	;   abs_residual_partition_sums[partition] = abs_residual_partition_sum;
-	mov	[eax + ecx * 8 + 4], dword 0
-	xor	ebx, ebx		;   abs_residual_partition_sum = 0;
-	add	ecx, byte 1
-	cmp	ecx, [esp]		; /* since the loop will always run at least once, we can put the loop check down here */
-	jb	.loop0
-.next0:					; }
-	;
-	; now merge partitions for lower orders
-	;
-	mov	esi, [esp + 32]		; esi <- abs_residual_partition_sums[from_partition==0];
-	mov	eax, [esp]
-	lea	edi, [esi + eax * 8]	; edi <- abs_residual_partition_sums[to_partition==partitions];
-	mov	ecx, [esp + 48]
-	sub	ecx, byte 1		; ecx <- partition_order = (int)max_partition_order - 1;
-	ALIGN 16
-.loop2:					; for(; partition_order >= (int)min_partition_order; partition_order--) {
-	cmp	ecx, [esp + 44]
-	jl	.next2
-	mov	edx, 1
-	shl	edx, cl			;   const unsigned partitions = 1u << partition_order;
-	ALIGN 16
-.loop3:					;   for(i = 0; i < partitions; i++) {
-	mov	eax, [esi]
-	mov	ebx, [esi + 4]
-	add	eax, [esi + 8]
-	adc	ebx, [esi + 12]
-	mov	[edi], eax
-	mov	[edi + 4], ebx		;     a_r_p_s[to_partition] = a_r_p_s[from_partition] + a_r_p_s[from_partition+1];
-	add	esi, byte 16
-	add	edi, byte 8
-	sub	edx, byte 1
-	jnz	.loop3			;   }
-	sub	ecx, byte 1
-	jmp	.loop2			; }
-.next2:
-
-	add	esp, 8
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-
-end
-
-%ifdef OBJ_FORMAT_elf
-	section .note.GNU-stack noalloc
-%endif
diff --git a/libFLAC/include/Makefile.am b/libFLAC/include/Makefile.am
deleted file mode 100644
index 866a894..0000000
--- a/libFLAC/include/Makefile.am
+++ /dev/null
@@ -1,31 +0,0 @@
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-SUBDIRS = private protected
diff --git a/libFLAC/include/Makefile.in b/libFLAC/include/Makefile.in
deleted file mode 100644
index ae91c1e..0000000
--- a/libFLAC/include/Makefile.in
+++ /dev/null
@@ -1,533 +0,0 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
-# @configure_input@
-
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# 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@
-
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../..
-
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-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 = :
-host_triplet = @host@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCAS = @CCAS@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FALSE = @DEBUG_FALSE@
-DEBUG_TRUE = @DEBUG_TRUE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@
-DOXYGEN = @DOXYGEN@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@
-FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@
-FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@
-FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@
-FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@
-FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@
-FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@
-FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@
-FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@
-FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@
-FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@
-FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@
-FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@
-FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@
-FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@
-FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@
-FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@
-FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@
-FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@
-FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@
-FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@
-FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@
-FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@
-FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@
-FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@
-FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@
-FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@
-FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@
-FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@
-FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@
-FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@
-FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@
-FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@
-FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@
-GAS = @GAS@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@
-NASM = @NASM@
-OBJEXT = @OBJEXT@
-OBJ_FORMAT = @OBJ_FORMAT@
-OGG_CFLAGS = @OGG_CFLAGS@
-OGG_LIBS = @OGG_LIBS@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-XMMS_CFLAGS = @XMMS_CFLAGS@
-XMMS_CONFIG = @XMMS_CONFIG@
-XMMS_DATA_DIR = @XMMS_DATA_DIR@
-XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@
-XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@
-XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@
-XMMS_LIBS = @XMMS_LIBS@
-XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@
-XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@
-XMMS_VERSION = @XMMS_VERSION@
-XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-SUBDIRS = private protected
-subdir = src/libFLAC/include
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-
-RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
-	ps-recursive install-info-recursive uninstall-info-recursive \
-	all-recursive install-data-recursive install-exec-recursive \
-	installdirs-recursive install-recursive uninstall-recursive \
-	check-recursive installcheck-recursive
-DIST_COMMON = $(srcdir)/Makefile.in Makefile.am
-DIST_SUBDIRS = $(SUBDIRS)
-all: all-recursive
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/libFLAC/include/Makefile
-Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
-
-# 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.
-$(RECURSIVE_TARGETS):
-	@set fnord $$MAKEFLAGS; amf=$$2; \
-	dot_seen=no; \
-	target=`echo $@ | sed s/-recursive//`; \
-	list='$(SUBDIRS)'; 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; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
-	done; \
-	if test "$$dot_seen" = "no"; then \
-	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
-	fi; test -z "$$fail"
-
-mostlyclean-recursive clean-recursive distclean-recursive \
-maintainer-clean-recursive:
-	@set fnord $$MAKEFLAGS; amf=$$2; \
-	dot_seen=no; \
-	case "$@" in \
-	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
-	  *) list='$(SUBDIRS)' ;; \
-	esac; \
-	rev=''; for subdir in $$list; do \
-	  if test "$$subdir" = "."; then :; else \
-	    rev="$$subdir $$rev"; \
-	  fi; \
-	done; \
-	rev="$$rev ."; \
-	target=`echo $@ | sed s/-recursive//`; \
-	for subdir in $$rev; do \
-	  echo "Making $$target in $$subdir"; \
-	  if test "$$subdir" = "."; then \
-	    local_target="$$target-am"; \
-	  else \
-	    local_target="$$target"; \
-	  fi; \
-	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
-	   || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
-	done && test -z "$$fail"
-tags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-	done
-ctags-recursive:
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-	done
-
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	mkid -fID $$unique
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	if (etags --etags-include --version) >/dev/null 2>&1; then \
-	  include_option=--etags-include; \
-	else \
-	  include_option=--include; \
-	fi; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -f $$subdir/TAGS && \
-	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
-	  fi; \
-	done; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
-
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ../../..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-	list='$(DISTFILES)'; for file in $$list; do \
-	  case $$file in \
-	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-	  esac; \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    dir="/$$dir"; \
-	    $(mkinstalldirs) "$(distdir)$$dir"; \
-	  else \
-	    dir=''; \
-	  fi; \
-	  if test -d $$d/$$file; then \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
-	  else \
-	    test -f $(distdir)/$$file \
-	    || cp -p $$d/$$file $(distdir)/$$file \
-	    || exit 1; \
-	  fi; \
-	done
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-	  if test "$$subdir" = .; then :; else \
-	    test -d $(distdir)/$$subdir \
-	    || mkdir $(distdir)/$$subdir \
-	    || exit 1; \
-	    (cd $$subdir && \
-	      $(MAKE) $(AM_MAKEFLAGS) \
-	        top_distdir="$(top_distdir)" \
-	        distdir=../$(distdir)/$$subdir \
-	        distdir) \
-	      || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-recursive
-all-am: Makefile
-installdirs: installdirs-recursive
-installdirs-am:
-
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-rm -f $(CONFIG_CLEAN_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-recursive
-
-clean-am: clean-generic clean-libtool mostlyclean-am
-
-distclean: distclean-recursive
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
-
-dvi: dvi-recursive
-
-dvi-am:
-
-info: info-recursive
-
-info-am:
-
-install-data-am:
-
-install-exec-am:
-
-install-info: install-info-recursive
-
-install-man:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-recursive
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-recursive
-
-mostlyclean-am: mostlyclean-generic mostlyclean-libtool
-
-pdf: pdf-recursive
-
-pdf-am:
-
-ps: ps-recursive
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-uninstall-info: uninstall-info-recursive
-
-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
-	clean-generic clean-libtool clean-recursive ctags \
-	ctags-recursive distclean distclean-generic distclean-libtool \
-	distclean-recursive distclean-tags distdir dvi dvi-am \
-	dvi-recursive info info-am info-recursive install install-am \
-	install-data install-data-am install-data-recursive \
-	install-exec install-exec-am install-exec-recursive \
-	install-info install-info-am install-info-recursive install-man \
-	install-recursive install-strip installcheck installcheck-am \
-	installdirs installdirs-am installdirs-recursive \
-	maintainer-clean maintainer-clean-generic \
-	maintainer-clean-recursive mostlyclean mostlyclean-generic \
-	mostlyclean-libtool mostlyclean-recursive pdf pdf-am \
-	pdf-recursive ps ps-am ps-recursive tags tags-recursive \
-	uninstall uninstall-am uninstall-info-am \
-	uninstall-info-recursive uninstall-recursive
-
-# 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:
diff --git a/libFLAC/include/private/Makefile.am b/libFLAC/include/private/Makefile.am
deleted file mode 100644
index e8abc58..0000000
--- a/libFLAC/include/private/Makefile.am
+++ /dev/null
@@ -1,50 +0,0 @@
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-noinst_HEADERS = \
-	all.h \
-	bitmath.h \
-	bitreader.h \
-	bitwriter.h \
-	cpu.h \
-	crc.h \
-	fixed.h \
-	float.h \
-	format.h \
-	lpc.h \
-	md5.h \
-	memory.h \
-	metadata.h \
-	ogg_decoder_aspect.h \
-	ogg_encoder_aspect.h \
-	ogg_helper.h \
-	ogg_mapping.h \
-	stream_encoder_framing.h \
-	window.h
diff --git a/libFLAC/include/private/Makefile.in b/libFLAC/include/private/Makefile.in
deleted file mode 100644
index 4560242..0000000
--- a/libFLAC/include/private/Makefile.in
+++ /dev/null
@@ -1,455 +0,0 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
-# @configure_input@
-
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# 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@
-
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../../..
-
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-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 = :
-host_triplet = @host@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCAS = @CCAS@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FALSE = @DEBUG_FALSE@
-DEBUG_TRUE = @DEBUG_TRUE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@
-DOXYGEN = @DOXYGEN@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@
-FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@
-FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@
-FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@
-FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@
-FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@
-FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@
-FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@
-FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@
-FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@
-FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@
-FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@
-FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@
-FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@
-FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@
-FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@
-FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@
-FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@
-FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@
-FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@
-FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@
-FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@
-FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@
-FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@
-FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@
-FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@
-FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@
-FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@
-FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@
-FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@
-FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@
-FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@
-FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@
-FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@
-GAS = @GAS@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@
-NASM = @NASM@
-OBJEXT = @OBJEXT@
-OBJ_FORMAT = @OBJ_FORMAT@
-OGG_CFLAGS = @OGG_CFLAGS@
-OGG_LIBS = @OGG_LIBS@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-XMMS_CFLAGS = @XMMS_CFLAGS@
-XMMS_CONFIG = @XMMS_CONFIG@
-XMMS_DATA_DIR = @XMMS_DATA_DIR@
-XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@
-XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@
-XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@
-XMMS_LIBS = @XMMS_LIBS@
-XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@
-XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@
-XMMS_VERSION = @XMMS_VERSION@
-XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-noinst_HEADERS = \
-	all.h \
-	bitmath.h \
-	bitreader.h \
-	bitwriter.h \
-	cpu.h \
-	crc.h \
-	fixed.h \
-	float.h \
-	format.h \
-	lpc.h \
-	md5.h \
-	memory.h \
-	metadata.h \
-	ogg_decoder_aspect.h \
-	ogg_encoder_aspect.h \
-	ogg_helper.h \
-	ogg_mapping.h \
-	stream_encoder_framing.h \
-	window.h
-
-subdir = src/libFLAC/include/private
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-HEADERS = $(noinst_HEADERS)
-
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.in Makefile.am
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/libFLAC/include/private/Makefile
-Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
-
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	mkid -fID $$unique
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
-
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ../../../..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-	list='$(DISTFILES)'; for file in $$list; do \
-	  case $$file in \
-	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-	  esac; \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    dir="/$$dir"; \
-	    $(mkinstalldirs) "$(distdir)$$dir"; \
-	  else \
-	    dir=''; \
-	  fi; \
-	  if test -d $$d/$$file; then \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$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 $(HEADERS)
-
-installdirs:
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-rm -f $(CONFIG_CLEAN_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 clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-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 mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool ctags distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am info \
-	info-am install install-am install-data install-data-am \
-	install-exec install-exec-am install-info install-info-am \
-	install-man install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-	ps ps-am tags uninstall uninstall-am uninstall-info-am
-
-# 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:
diff --git a/libFLAC/include/private/all.h b/libFLAC/include/private/all.h
deleted file mode 100644
index a4463d2..0000000
--- a/libFLAC/include/private/all.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2000-2009  Josh Coalson
- * Copyright (C) 2011-2014  Xiph.Org Foundation
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__PRIVATE__ALL_H
-#define FLAC__PRIVATE__ALL_H
-
-#include "bitmath.h"
-#include "bitreader.h"
-#include "bitwriter.h"
-#include "cpu.h"
-#include "crc.h"
-#include "fixed.h"
-#include "float.h"
-#include "format.h"
-#include "lpc.h"
-#include "md5.h"
-#include "memory.h"
-#include "metadata.h"
-#include "stream_encoder_framing.h"
-
-#endif
diff --git a/libFLAC/include/protected/Makefile.am b/libFLAC/include/protected/Makefile.am
deleted file mode 100644
index 66c697c..0000000
--- a/libFLAC/include/protected/Makefile.am
+++ /dev/null
@@ -1,34 +0,0 @@
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-noinst_HEADERS = \
-	all.h \
-	stream_decoder.h \
-	stream_encoder.h
diff --git a/libFLAC/include/protected/Makefile.in b/libFLAC/include/protected/Makefile.in
deleted file mode 100644
index 96133a6..0000000
--- a/libFLAC/include/protected/Makefile.in
+++ /dev/null
@@ -1,439 +0,0 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
-# @configure_input@
-
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# 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@
-
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../../..
-
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-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 = :
-host_triplet = @host@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCAS = @CCAS@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FALSE = @DEBUG_FALSE@
-DEBUG_TRUE = @DEBUG_TRUE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@
-DOXYGEN = @DOXYGEN@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@
-FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@
-FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@
-FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@
-FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@
-FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@
-FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@
-FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@
-FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@
-FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@
-FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@
-FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@
-FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@
-FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FALSE@
-FLaC__HAS_GAS_TRUE = @FLaC__HAS_GAS_TRUE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_GAS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_NASM_FALSE = @FLaC__HAS_NASM_FALSE@
-FLaC__HAS_NASM_TRUE = @FLaC__HAS_NASM_TRUE@
-FLaC__HAS_OGG_FALSE = @FLaC__HAS_OGG_FALSE@
-FLaC__HAS_OGG_TRUE = @FLaC__HAS_OGG_TRUE@
-FLaC__HAS_XMMS_FALSE = @FLaC__HAS_XMMS_FALSE@
-FLaC__HAS_XMMS_TRUE = @FLaC__HAS_XMMS_TRUE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_FALSE@
-FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE = @FLaC__INSTALL_XMMS_PLUGIN_LOCALLY_TRUE@
-FLaC__NO_ASM_FALSE = @FLaC__NO_ASM_FALSE@
-FLaC__NO_ASM_TRUE = @FLaC__NO_ASM_TRUE@
-FLaC__SSE_OS_FALSE = @FLaC__SSE_OS_FALSE@
-FLaC__SSE_OS_TRUE = @FLaC__SSE_OS_TRUE@
-FLaC__SYS_DARWIN_FALSE = @FLaC__SYS_DARWIN_FALSE@
-FLaC__SYS_DARWIN_TRUE = @FLaC__SYS_DARWIN_TRUE@
-FLaC__SYS_LINUX_FALSE = @FLaC__SYS_LINUX_FALSE@
-FLaC__SYS_LINUX_TRUE = @FLaC__SYS_LINUX_TRUE@
-FLaC__USE_3DNOW_FALSE = @FLaC__USE_3DNOW_FALSE@
-FLaC__USE_3DNOW_TRUE = @FLaC__USE_3DNOW_TRUE@
-FLaC__USE_ALTIVEC_FALSE = @FLaC__USE_ALTIVEC_FALSE@
-FLaC__USE_ALTIVEC_TRUE = @FLaC__USE_ALTIVEC_TRUE@
-FLaC__WITH_CPPLIBS_FALSE = @FLaC__WITH_CPPLIBS_FALSE@
-FLaC__WITH_CPPLIBS_TRUE = @FLaC__WITH_CPPLIBS_TRUE@
-GAS = @GAS@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBICONV = @LIBICONV@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBICONV = @LTLIBICONV@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
-MAKEINFO = @MAKEINFO@
-MINGW_WINSOCK_LIBS = @MINGW_WINSOCK_LIBS@
-NASM = @NASM@
-OBJEXT = @OBJEXT@
-OBJ_FORMAT = @OBJ_FORMAT@
-OGG_CFLAGS = @OGG_CFLAGS@
-OGG_LIBS = @OGG_LIBS@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-XMMS_CFLAGS = @XMMS_CFLAGS@
-XMMS_CONFIG = @XMMS_CONFIG@
-XMMS_DATA_DIR = @XMMS_DATA_DIR@
-XMMS_EFFECT_PLUGIN_DIR = @XMMS_EFFECT_PLUGIN_DIR@
-XMMS_GENERAL_PLUGIN_DIR = @XMMS_GENERAL_PLUGIN_DIR@
-XMMS_INPUT_PLUGIN_DIR = @XMMS_INPUT_PLUGIN_DIR@
-XMMS_LIBS = @XMMS_LIBS@
-XMMS_OUTPUT_PLUGIN_DIR = @XMMS_OUTPUT_PLUGIN_DIR@
-XMMS_PLUGIN_DIR = @XMMS_PLUGIN_DIR@
-XMMS_VERSION = @XMMS_VERSION@
-XMMS_VISUALIZATION_PLUGIN_DIR = @XMMS_VISUALIZATION_PLUGIN_DIR@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-datadir = @datadir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-oldincludedir = @oldincludedir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-
-noinst_HEADERS = \
-	all.h \
-	stream_decoder.h \
-	stream_encoder.h
-
-subdir = src/libFLAC/include/protected
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-DIST_SOURCES =
-HEADERS = $(noinst_HEADERS)
-
-DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.in Makefile.am
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am  $(top_srcdir)/configure.in $(ACLOCAL_M4)
-	cd $(top_srcdir) && \
-	  $(AUTOMAKE) --gnu  src/libFLAC/include/protected/Makefile
-Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
-
-mostlyclean-libtool:
-	-rm -f *.lo
-
-clean-libtool:
-	-rm -rf .libs _libs
-
-distclean-libtool:
-	-rm -f libtool
-uninstall-info-am:
-
-ETAGS = etags
-ETAGSFLAGS =
-
-CTAGS = ctags
-CTAGSFLAGS =
-
-tags: TAGS
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	mkid -fID $$unique
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$tags$$unique" \
-	  || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	     $$tags $$unique
-
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-		$(TAGS_FILES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-	unique=`for i in $$list; do \
-	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-	  done | \
-	  $(AWK) '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(CTAGS_ARGS)$$tags$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$tags $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && cd $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-
-top_distdir = ../../../..
-distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
-	list='$(DISTFILES)'; for file in $$list; do \
-	  case $$file in \
-	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
-	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
-	  esac; \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
-	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
-	    dir="/$$dir"; \
-	    $(mkinstalldirs) "$(distdir)$$dir"; \
-	  else \
-	    dir=''; \
-	  fi; \
-	  if test -d $$d/$$file; then \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
-	    fi; \
-	    cp -pR $$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 $(HEADERS)
-
-installdirs:
-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:
-	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	  `test -z '$(STRIP)' || \
-	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-rm -f $(CONFIG_CLEAN_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 clean-libtool mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-libtool \
-	distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-exec-am:
-
-install-info: install-info-am
-
-install-man:
-
-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 mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-info-am
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
-	clean-libtool ctags distclean distclean-generic \
-	distclean-libtool distclean-tags distdir dvi dvi-am info \
-	info-am install install-am install-data install-data-am \
-	install-exec install-exec-am install-info install-info-am \
-	install-man install-strip installcheck installcheck-am \
-	installdirs maintainer-clean maintainer-clean-generic \
-	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
-	ps ps-am tags uninstall uninstall-am uninstall-info-am
-
-# 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:
diff --git a/libFLAC/include/protected/all.h b/libFLAC/include/protected/all.h
deleted file mode 100644
index 90912af..0000000
--- a/libFLAC/include/protected/all.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2001-2009  Josh Coalson
- * Copyright (C) 2011-2014  Xiph.Org Foundation
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FLAC__PROTECTED__ALL_H
-#define FLAC__PROTECTED__ALL_H
-
-#include "stream_decoder.h"
-#include "stream_encoder.h"
-
-#endif
diff --git a/libFLAC/libFLAC.m4 b/libFLAC/libFLAC.m4
deleted file mode 100644
index 24eb0c5..0000000
--- a/libFLAC/libFLAC.m4
+++ /dev/null
@@ -1,114 +0,0 @@
-# Configure paths for libFLAC
-# "Inspired" by ogg.m4
-
-dnl AM_PATH_LIBFLAC([ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl Test for libFLAC, and define LIBFLAC_CFLAGS, LIBFLAC_LIBS, LIBFLAC_LIBDIR
-dnl
-AC_DEFUN([AM_PATH_LIBFLAC],
-[dnl 
-dnl Get the cflags and libraries
-dnl
-AC_ARG_WITH(libFLAC,[  --with-libFLAC=PFX   Prefix where libFLAC is installed (optional)], libFLAC_prefix="$withval", libFLAC_prefix="")
-AC_ARG_WITH(libFLAC-libraries,[  --with-libFLAC-libraries=DIR   Directory where libFLAC library is installed (optional)], libFLAC_libraries="$withval", libFLAC_libraries="")
-AC_ARG_WITH(libFLAC-includes,[  --with-libFLAC-includes=DIR   Directory where libFLAC header files are installed (optional)], libFLAC_includes="$withval", libFLAC_includes="")
-AC_ARG_ENABLE(libFLACtest, [  --disable-libFLACtest       Do not try to compile and run a test libFLAC program],, enable_libFLACtest=yes)
-
-  if test "x$libFLAC_libraries" != "x" ; then
-    LIBFLAC_LIBDIR="$libFLAC_libraries"
-  elif test "x$libFLAC_prefix" != "x" ; then
-    LIBFLAC_LIBDIR="$libFLAC_prefix/lib"
-  elif test "x$prefix" != "xNONE" ; then
-    LIBFLAC_LIBDIR="$libdir"
-  fi
-
-  LIBFLAC_LIBS="-L$LIBFLAC_LIBDIR -lFLAC $OGG_LIBS -lm"
-
-  if test "x$libFLAC_includes" != "x" ; then
-    LIBFLAC_CFLAGS="-I$libFLAC_includes"
-  elif test "x$libFLAC_prefix" != "x" ; then
-    LIBFLAC_CFLAGS="-I$libFLAC_prefix/include"
-  elif test "$prefix" != "xNONE"; then
-    LIBFLAC_CFLAGS=""
-  fi
-
-  AC_MSG_CHECKING(for libFLAC)
-  no_libFLAC=""
-
-
-  if test "x$enable_libFLACtest" = "xyes" ; then
-    ac_save_CFLAGS="$CFLAGS"
-    ac_save_CXXFLAGS="$CXXFLAGS"
-    ac_save_LIBS="$LIBS"
-    ac_save_LD_LIBRARY_PATH="$LD_LIBRARY_PATH"
-    CFLAGS="$CFLAGS $LIBFLAC_CFLAGS"
-    CXXFLAGS="$CXXFLAGS $LIBFLAC_CFLAGS"
-    LIBS="$LIBS $LIBFLAC_LIBS"
-    LD_LIBRARY_PATH="$LIBFLAC_LIBDIR:$LD_LIBRARY_PATH"
-dnl
-dnl Now check if the installed libFLAC is sufficiently new.
-dnl
-      rm -f conf.libFLACtest
-      AC_TRY_RUN([
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <FLAC/format.h>
-
-int main ()
-{
-  system("touch conf.libFLACtest");
-  return 0;
-}
-
-],, no_libFLAC=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
-       CFLAGS="$ac_save_CFLAGS"
-       CXXFLAGS="$ac_save_CXXFLAGS"
-       LIBS="$ac_save_LIBS"
-       LD_LIBRARY_PATH="$ac_save_LD_LIBRARY_PATH"
-  fi
-
-  if test "x$no_libFLAC" = "x" ; then
-     AC_MSG_RESULT(yes)
-     ifelse([$1], , :, [$1])     
-  else
-     AC_MSG_RESULT(no)
-     if test -f conf.libFLACtest ; then
-       :
-     else
-       echo "*** Could not run libFLAC test program, checking why..."
-       CFLAGS="$CFLAGS $LIBFLAC_CFLAGS"
-       CXXFLAGS="$CXXFLAGS $LIBFLAC_CFLAGS"
-       LIBS="$LIBS $LIBFLAC_LIBS"
-       LD_LIBRARY_PATH="$LIBFLAC_LIBDIR:$LD_LIBRARY_PATH"
-       AC_TRY_LINK([
-#include <stdio.h>
-#include <FLAC/format.h>
-],     [ return 0; ],
-       [ echo "*** The test program compiled, but did not run. This usually means"
-       echo "*** that the run-time linker is not finding libFLAC or finding the wrong"
-       echo "*** version of libFLAC. If it is not finding libFLAC, 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 libFLAC was incorrectly installed"
-       echo "*** or that you have moved libFLAC since it was installed. In the latter case, you"
-       echo "*** may want to edit the libFLAC-config script: $LIBFLAC_CONFIG" ])
-       CFLAGS="$ac_save_CFLAGS"
-       CXXFLAGS="$ac_save_CXXFLAGS"
-       LIBS="$ac_save_LIBS"
-       LD_LIBRARY_PATH="$ac_save_LD_LIBRARY_PATH"
-     fi
-     LIBFLAC_CFLAGS=""
-     LIBFLAC_LIBDIR=""
-     LIBFLAC_LIBS=""
-     ifelse([$2], , :, [$2])
-  fi
-  AC_SUBST(LIBFLAC_CFLAGS)
-  AC_SUBST(LIBFLAC_LIBDIR)
-  AC_SUBST(LIBFLAC_LIBS)
-  rm -f conf.libFLACtest
-])
diff --git a/libFLAC/libFLAC_dynamic.dsp b/libFLAC/libFLAC_dynamic.dsp
deleted file mode 100644
index 243f639..0000000
--- a/libFLAC/libFLAC_dynamic.dsp
+++ /dev/null
@@ -1,464 +0,0 @@
-# Microsoft Developer Studio Project File - Name="libFLAC_dynamic" - Package Owner=<4>

-# Microsoft Developer Studio Generated Build File, Format Version 6.00

-# ** DO NOT EDIT **

-

-# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102

-

-CFG=libFLAC_dynamic - Win32 Debug

-!MESSAGE This is not a valid makefile. To build this project using NMAKE,

-!MESSAGE use the Export Makefile command and run

-!MESSAGE 

-!MESSAGE NMAKE /f "libFLAC_dynamic.mak".

-!MESSAGE 

-!MESSAGE You can specify a configuration when running NMAKE

-!MESSAGE by defining the macro CFG on the command line. For example:

-!MESSAGE 

-!MESSAGE NMAKE /f "libFLAC_dynamic.mak" CFG="libFLAC_dynamic - Win32 Debug"

-!MESSAGE 

-!MESSAGE Possible choices for configuration are:

-!MESSAGE 

-!MESSAGE "libFLAC_dynamic - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")

-!MESSAGE "libFLAC_dynamic - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")

-!MESSAGE 

-

-# Begin Project

-# PROP AllowPerConfigDependencies 0

-# PROP Scc_ProjName "libFLAC"

-# PROP Scc_LocalPath "..\.."

-CPP=cl.exe

-MTL=midl.exe

-RSC=rc.exe

-

-!IF  "$(CFG)" == "libFLAC_dynamic - Win32 Release"

-

-# PROP BASE Use_MFC 0

-# PROP BASE Use_Debug_Libraries 0

-# PROP BASE Output_Dir "Release"

-# PROP BASE Intermediate_Dir "Release"

-# PROP BASE Target_Dir ""

-# PROP Use_MFC 0

-# PROP Use_Debug_Libraries 0

-# PROP Output_Dir "..\..\obj\release\lib"

-# PROP Intermediate_Dir "Release_dynamic"

-# PROP Ignore_Export_Lib 0

-# PROP Target_Dir ""

-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c

-# ADD CPP /nologo /MD /W3 /GR /GX /O2 /I ".\include" /I "..\..\include" /D "NDEBUG" /D "FLAC_API_EXPORTS" /D "FLAC__HAS_OGG" /D VERSION=\"1.2.1\" /D "FLAC__CPU_IA32" /D "FLAC__HAS_NASM" /D "FLAC__USE_3DNOW" /D "_WINDOWS" /D "_WINDLL" /D "WIN32" /D "_USRDLL" /FR /FD /c

-# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32

-# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32

-# ADD BASE RSC /l 0x409 /d "NDEBUG"

-# ADD RSC /l 0x409 /d "NDEBUG" /d "_USRDLL"

-BSC32=bscmake.exe

-# ADD BASE BSC32 /nologo

-# ADD BSC32 /nologo

-LINK32=link.exe

-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386

-# ADD LINK32 ..\..\obj\release\lib\ogg_static.lib /nologo /subsystem:windows /dll /machine:I386 /out:"..\..\obj\release\bin/libFLAC.dll"

-

-!ELSEIF  "$(CFG)" == "libFLAC_dynamic - Win32 Debug"

-

-# PROP BASE Use_MFC 0

-# PROP BASE Use_Debug_Libraries 1

-# PROP BASE Output_Dir "Debug"

-# PROP BASE Intermediate_Dir "Debug"

-# PROP BASE Target_Dir ""

-# PROP Use_MFC 0

-# PROP Use_Debug_Libraries 1

-# PROP Output_Dir "..\..\obj\debug\lib"

-# PROP Intermediate_Dir "Debug_dynamic"

-# PROP Ignore_Export_Lib 0

-# PROP Target_Dir ""

-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c

-# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I ".\include" /I "..\..\include" /D "_DEBUG" /D "DEBUG" /D "FLAC__OVERFLOW_DETECT" /D "FLAC_API_EXPORTS" /D "FLAC__HAS_OGG" /D VERSION=\"1.2.1\" /D "FLAC__CPU_IA32" /D "FLAC__HAS_NASM" /D "FLAC__USE_3DNOW" /D "_WINDOWS" /D "_WINDLL" /D "WIN32" /D "_USRDLL" /FR /FD /c

-# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32

-# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32

-# ADD BASE RSC /l 0x409 /d "_DEBUG"

-# ADD RSC /l 0x409 /d "_DEBUG" /d "_USRDLL"

-BSC32=bscmake.exe

-# ADD BASE BSC32 /nologo

-# ADD BSC32 /nologo

-LINK32=link.exe

-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept

-# ADD LINK32 ..\..\obj\release\lib\ogg_static.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"..\..\obj\debug\bin/libFLAC.dll" /pdbtype:sept

-

-!ENDIF 

-

-# Begin Target

-

-# Name "libFLAC_dynamic - Win32 Release"

-# Name "libFLAC_dynamic - Win32 Debug"

-# Begin Group "Source Files"

-

-# PROP Default_Filter "c"

-# Begin Group "Assembly Files (ia32)"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=.\ia32\bitreader_asm.nasm

-

-!IF  "$(CFG)" == "libFLAC_dynamic - Win32 Release"

-

-USERDEP__CPU_A="ia32/bitreader_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\bitreader_asm.nasm

-

-"ia32/bitreader_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/bitreader_asm.nasm -o ia32/bitreader_asm.obj

-

-# End Custom Build

-

-!ELSEIF  "$(CFG)" == "libFLAC_dynamic - Win32 Debug"

-

-USERDEP__CPU_A="ia32/bitreader_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\bitreader_asm.nasm

-

-"ia32/bitreader_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/bitreader_asm.nasm -o ia32/bitreader_asm.obj

-

-# End Custom Build

-

-!ENDIF 

-

-# End Source File

-# Begin Source File

-

-SOURCE=.\ia32\cpu_asm.nasm

-

-!IF  "$(CFG)" == "libFLAC_dynamic - Win32 Release"

-

-USERDEP__CPU_A="ia32/cpu_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\cpu_asm.nasm

-

-"ia32/cpu_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/cpu_asm.nasm -o ia32/cpu_asm.obj

-

-# End Custom Build

-

-!ELSEIF  "$(CFG)" == "libFLAC_dynamic - Win32 Debug"

-

-USERDEP__CPU_A="ia32/cpu_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\cpu_asm.nasm

-

-"ia32/cpu_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/cpu_asm.nasm -o ia32/cpu_asm.obj

-

-# End Custom Build

-

-!ENDIF 

-

-# End Source File

-# Begin Source File

-

-SOURCE=.\ia32\fixed_asm.nasm

-

-!IF  "$(CFG)" == "libFLAC_dynamic - Win32 Release"

-

-USERDEP__FIXED="ia32/fixed_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\fixed_asm.nasm

-

-"ia32/fixed_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/fixed_asm.nasm -o ia32/fixed_asm.obj

-

-# End Custom Build

-

-!ELSEIF  "$(CFG)" == "libFLAC_dynamic - Win32 Debug"

-

-USERDEP__FIXED="ia32/fixed_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\fixed_asm.nasm

-

-"ia32/fixed_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/fixed_asm.nasm -o ia32/fixed_asm.obj

-

-# End Custom Build

-

-!ENDIF 

-

-# End Source File

-# Begin Source File

-

-SOURCE=.\ia32\lpc_asm.nasm

-

-!IF  "$(CFG)" == "libFLAC_dynamic - Win32 Release"

-

-USERDEP__LPC_A="ia32/lpc_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\lpc_asm.nasm

-

-"ia32/lpc_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/lpc_asm.nasm -o ia32/lpc_asm.obj

-

-# End Custom Build

-

-!ELSEIF  "$(CFG)" == "libFLAC_dynamic - Win32 Debug"

-

-USERDEP__LPC_A="ia32/lpc_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\lpc_asm.nasm

-

-"ia32/lpc_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/lpc_asm.nasm -o ia32/lpc_asm.obj

-

-# End Custom Build

-

-!ENDIF 

-

-# End Source File

-# Begin Source File

-

-SOURCE=.\ia32\stream_encoder_asm.nasm

-

-!IF  "$(CFG)" == "libFLAC_dynamic - Win32 Release"

-

-USERDEP__CPU_A="ia32/stream_encoder_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\stream_encoder_asm.nasm

-

-"ia32/stream_encoder_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/stream_encoder_asm.nasm -o ia32/stream_encoder_asm.obj

-

-# End Custom Build

-

-!ELSEIF  "$(CFG)" == "libFLAC_dynamic - Win32 Debug"

-

-USERDEP__CPU_A="ia32/stream_encoder_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\stream_encoder_asm.nasm

-

-"ia32/stream_encoder_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/stream_encoder_asm.nasm -o ia32/stream_encoder_asm.obj

-

-# End Custom Build

-

-!ENDIF 

-

-# End Source File

-# Begin Source File

-

-SOURCE=.\ia32\nasm.h

-# End Source File

-# End Group

-# Begin Source File

-

-SOURCE=.\bitmath.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\bitreader.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\bitwriter.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\cpu.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\crc.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\fixed.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\float.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\format.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\lpc.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\md5.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\memory.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\metadata_iterators.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\metadata_object.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\ogg_decoder_aspect.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\ogg_encoder_aspect.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\ogg_helper.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\ogg_mapping.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\stream_decoder.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\stream_encoder.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\stream_encoder_framing.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\window.c

-# End Source File

-# End Group

-# Begin Group "Private Header Files"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=.\include\private\all.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\bitmath.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\bitreader.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\bitwriter.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\cpu.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\crc.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\fixed.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\float.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\format.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\lpc.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\md5.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\memory.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\metadata.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\ogg_decoder_aspect.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\ogg_encoder_aspect.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\ogg_helper.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\ogg_mapping.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\stream_encoder_framing.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\window.h

-# End Source File

-# End Group

-# Begin Group "Protected Header Files"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=.\include\protected\all.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\protected\stream_decoder.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\protected\stream_encoder.h

-# End Source File

-# End Group

-# Begin Group "Public Header Files"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\all.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\assert.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\export.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\format.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\metadata.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\ordinals.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\stream_decoder.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\stream_encoder.h

-# End Source File

-# End Group

-# End Target

-# End Project

diff --git a/libFLAC/libFLAC_dynamic.vcproj b/libFLAC/libFLAC_dynamic.vcproj
deleted file mode 100644
index fe2a20c..0000000
--- a/libFLAC/libFLAC_dynamic.vcproj
+++ /dev/null
@@ -1,540 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>

-<VisualStudioProject

-	ProjectType="Visual C++"

-	Version="8.00"

-	Name="libFLAC_dynamic"

-	ProjectGUID="{4cefbc83-c215-11db-8314-0800200c9a66}"

-	RootNamespace="libFLAC_dynamic"

-	Keyword="Win32Proj"

-	>

-	<Platforms>

-		<Platform

-			Name="Win32"

-		/>

-	</Platforms>

-	<ToolFiles>

-	</ToolFiles>

-	<Configurations>

-		<Configuration

-			Name="Debug|Win32"

-			OutputDirectory="..\..\obj\debug\lib"

-			IntermediateDirectory="Debug_dynamic"

-			ConfigurationType="2"

-			>

-			<Tool

-				Name="VCPreBuildEventTool"

-			/>

-			<Tool

-				Name="VCCustomBuildTool"

-			/>

-			<Tool

-				Name="VCXMLDataGeneratorTool"

-			/>

-			<Tool

-				Name="VCWebServiceProxyGeneratorTool"

-			/>

-			<Tool

-				Name="VCMIDLTool"

-			/>

-			<Tool

-				Name="VCCLCompilerTool"

-				Optimization="0"

-				AdditionalIncludeDirectories=".\include;..\..\include"

-				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FLAC_API_EXPORTS;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__USE_3DNOW;VERSION=\&quot;1.2.0\&quot;;DEBUG;FLAC__OVERFLOW_DETECT"

-				MinimalRebuild="true"

-				BasicRuntimeChecks="3"

-				RuntimeLibrary="1"

-				UsePrecompiledHeader="0"

-				WarningLevel="3"

-				Detect64BitPortabilityProblems="true"

-				DebugInformationFormat="4"

-				CompileAs="0"

-				DisableSpecificWarnings="4267;4996"

-			/>

-			<Tool

-				Name="VCManagedResourceCompilerTool"

-			/>

-			<Tool

-				Name="VCResourceCompilerTool"

-			/>

-			<Tool

-				Name="VCPreLinkEventTool"

-			/>

-			<Tool

-				Name="VCLinkerTool"

-				AdditionalDependencies="..\..\obj\release\lib\ogg_static.lib"

-				LinkIncremental="2"

-				IgnoreDefaultLibraryNames="uuid.lib"

-				GenerateDebugInformation="true"

-				SubSystem="2"

-				TargetMachine="1"

-			/>

-			<Tool

-				Name="VCALinkTool"

-			/>

-			<Tool

-				Name="VCManifestTool"

-			/>

-			<Tool

-				Name="VCXDCMakeTool"

-			/>

-			<Tool

-				Name="VCBscMakeTool"

-			/>

-			<Tool

-				Name="VCFxCopTool"

-			/>

-			<Tool

-				Name="VCAppVerifierTool"

-			/>

-			<Tool

-				Name="VCWebDeploymentTool"

-			/>

-			<Tool

-				Name="VCPostBuildEventTool"

-			/>

-		</Configuration>

-		<Configuration

-			Name="Release|Win32"

-			OutputDirectory="..\..\obj\release\lib"

-			IntermediateDirectory="Release_dynamic"

-			ConfigurationType="2"

-			>

-			<Tool

-				Name="VCPreBuildEventTool"

-			/>

-			<Tool

-				Name="VCCustomBuildTool"

-			/>

-			<Tool

-				Name="VCXMLDataGeneratorTool"

-			/>

-			<Tool

-				Name="VCWebServiceProxyGeneratorTool"

-			/>

-			<Tool

-				Name="VCMIDLTool"

-			/>

-			<Tool

-				Name="VCCLCompilerTool"

-				EnableIntrinsicFunctions="true"

-				FavorSizeOrSpeed="1"

-				OmitFramePointers="true"

-				WholeProgramOptimization="true"

-				AdditionalIncludeDirectories=".\include;..\..\include"

-				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FLAC_API_EXPORTS;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__USE_3DNOW;VERSION=\&quot;1.2.0\&quot;"

-				RuntimeLibrary="0"

-				BufferSecurityCheck="false"

-				UsePrecompiledHeader="0"

-				WarningLevel="3"

-				Detect64BitPortabilityProblems="true"

-				DebugInformationFormat="3"

-				CompileAs="0"

-				DisableSpecificWarnings="4267;4996"

-			/>

-			<Tool

-				Name="VCManagedResourceCompilerTool"

-			/>

-			<Tool

-				Name="VCResourceCompilerTool"

-			/>

-			<Tool

-				Name="VCPreLinkEventTool"

-			/>

-			<Tool

-				Name="VCLinkerTool"

-				AdditionalDependencies="..\..\obj\release\lib\ogg_static.lib"

-				LinkIncremental="1"

-				IgnoreDefaultLibraryNames="uuid.lib"

-				GenerateDebugInformation="true"

-				SubSystem="2"

-				OptimizeReferences="2"

-				EnableCOMDATFolding="2"

-				LinkTimeCodeGeneration="1"

-				TargetMachine="1"

-			/>

-			<Tool

-				Name="VCALinkTool"

-			/>

-			<Tool

-				Name="VCManifestTool"

-			/>

-			<Tool

-				Name="VCXDCMakeTool"

-			/>

-			<Tool

-				Name="VCBscMakeTool"

-			/>

-			<Tool

-				Name="VCFxCopTool"

-			/>

-			<Tool

-				Name="VCAppVerifierTool"

-			/>

-			<Tool

-				Name="VCWebDeploymentTool"

-			/>

-			<Tool

-				Name="VCPostBuildEventTool"

-			/>

-		</Configuration>

-	</Configurations>

-	<References>

-	</References>

-	<Files>

-		<Filter

-			Name="Header Files"

-			Filter="h;hpp;hxx;hm;inl;inc;xsd"

-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"

-			>

-			<File

-				RelativePath=".\include\private\all.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\protected\all.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\bitmath.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\bitreader.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\bitwriter.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\cpu.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\crc.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\fixed.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\float.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\format.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\lpc.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\md5.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\memory.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\metadata.h"

-				>

-			</File>

-			<File

-				RelativePath=".\ia32\nasm.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\ogg_decoder_aspect.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\ogg_encoder_aspect.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\ogg_helper.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\ogg_mapping.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\protected\stream_decoder.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\protected\stream_encoder.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\stream_encoder_framing.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\window.h"

-				>

-			</File>

-		</Filter>

-		<Filter

-			Name="Source Files"

-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"

-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"

-			>

-			<File

-				RelativePath=".\bitmath.c"

-				>

-			</File>

-			<File

-				RelativePath=".\bitreader.c"

-				>

-			</File>

-			<File

-				RelativePath=".\bitwriter.c"

-				>

-			</File>

-			<File

-				RelativePath=".\cpu.c"

-				>

-			</File>

-			<File

-				RelativePath=".\crc.c"

-				>

-			</File>

-			<File

-				RelativePath=".\fixed.c"

-				>

-			</File>

-			<File

-				RelativePath=".\float.c"

-				>

-			</File>

-			<File

-				RelativePath=".\format.c"

-				>

-			</File>

-			<File

-				RelativePath=".\lpc.c"

-				>

-			</File>

-			<File

-				RelativePath=".\md5.c"

-				>

-			</File>

-			<File

-				RelativePath=".\memory.c"

-				>

-			</File>

-			<File

-				RelativePath=".\metadata_iterators.c"

-				>

-			</File>

-			<File

-				RelativePath=".\metadata_object.c"

-				>

-			</File>

-			<File

-				RelativePath=".\ogg_decoder_aspect.c"

-				>

-			</File>

-			<File

-				RelativePath=".\ogg_encoder_aspect.c"

-				>

-			</File>

-			<File

-				RelativePath=".\ogg_helper.c"

-				>

-			</File>

-			<File

-				RelativePath=".\ogg_mapping.c"

-				>

-			</File>

-			<File

-				RelativePath=".\stream_decoder.c"

-				>

-			</File>

-			<File

-				RelativePath=".\stream_encoder.c"

-				>

-			</File>

-			<File

-				RelativePath=".\stream_encoder_framing.c"

-				>

-			</File>

-			<File

-				RelativePath=".\window.c"

-				>

-			</File>

-		</Filter>

-		<Filter

-			Name="Public Header Files"

-			>

-			<File

-				RelativePath="..\..\include\FLAC\all.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\assert.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\callback.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\export.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\format.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\metadata.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\ordinals.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\stream_decoder.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\stream_encoder.h"

-				>

-			</File>

-		</Filter>

-		<File

-			RelativePath=".\ia32\bitreader_asm.nasm"

-			>

-			<FileConfiguration

-				Name="Debug|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/bitreader_asm.nasm -o ia32/bitreader_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/bitreader_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/bitreader_asm.obj"

-				/>

-			</FileConfiguration>

-			<FileConfiguration

-				Name="Release|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/bitreader_asm.nasm -o ia32/bitreader_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/bitreader_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/bitreader_asm.obj"

-				/>

-			</FileConfiguration>

-		</File>

-		<File

-			RelativePath=".\release_static\BuildLog.htm"

-			>

-		</File>

-		<File

-			RelativePath=".\ia32\cpu_asm.nasm"

-			>

-			<FileConfiguration

-				Name="Debug|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/cpu_asm.nasm -o ia32/cpu_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/cpu_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/cpu_asm.obj"

-				/>

-			</FileConfiguration>

-			<FileConfiguration

-				Name="Release|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/cpu_asm.nasm -o ia32/cpu_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/cpu_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/cpu_asm.obj"

-				/>

-			</FileConfiguration>

-		</File>

-		<File

-			RelativePath=".\ia32\fixed_asm.nasm"

-			>

-			<FileConfiguration

-				Name="Debug|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/fixed_asm.nasm -o ia32/fixed_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/fixed_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/fixed_asm.obj"

-				/>

-			</FileConfiguration>

-			<FileConfiguration

-				Name="Release|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/fixed_asm.nasm -o ia32/fixed_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/fixed_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/fixed_asm.obj"

-				/>

-			</FileConfiguration>

-		</File>

-		<File

-			RelativePath=".\ia32\lpc_asm.nasm"

-			>

-			<FileConfiguration

-				Name="Debug|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/lpc_asm.nasm -o ia32/lpc_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/lpc_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/lpc_asm.obj"

-				/>

-			</FileConfiguration>

-			<FileConfiguration

-				Name="Release|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/lpc_asm.nasm -o ia32/lpc_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/lpc_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/lpc_asm.obj"

-				/>

-			</FileConfiguration>

-		</File>

-		<File

-			RelativePath=".\ia32\stream_encoder_asm.nasm"

-			>

-			<FileConfiguration

-				Name="Debug|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/stream_encoder_asm.nasm -o ia32/stream_encoder_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/stream_encoder_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/stream_encoder_asm.obj"

-				/>

-			</FileConfiguration>

-			<FileConfiguration

-				Name="Release|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/stream_encoder_asm.nasm -o ia32/stream_encoder_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/stream_encoder_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/stream_encoder_asm.obj"

-				/>

-			</FileConfiguration>

-		</File>

-	</Files>

-	<Globals>

-	</Globals>

-</VisualStudioProject>

diff --git a/libFLAC/libFLAC_static.dsp b/libFLAC/libFLAC_static.dsp
deleted file mode 100644
index 9726b8a..0000000
--- a/libFLAC/libFLAC_static.dsp
+++ /dev/null
@@ -1,457 +0,0 @@
-# Microsoft Developer Studio Project File - Name="libFLAC_static" - Package Owner=<4>

-# Microsoft Developer Studio Generated Build File, Format Version 6.00

-# ** DO NOT EDIT **

-

-# TARGTYPE "Win32 (x86) Static Library" 0x0104

-

-CFG=libFLAC_static - Win32 Debug

-!MESSAGE This is not a valid makefile. To build this project using NMAKE,

-!MESSAGE use the Export Makefile command and run

-!MESSAGE 

-!MESSAGE NMAKE /f "libFLAC_static.mak".

-!MESSAGE 

-!MESSAGE You can specify a configuration when running NMAKE

-!MESSAGE by defining the macro CFG on the command line. For example:

-!MESSAGE 

-!MESSAGE NMAKE /f "libFLAC_static.mak" CFG="libFLAC_static - Win32 Debug"

-!MESSAGE 

-!MESSAGE Possible choices for configuration are:

-!MESSAGE 

-!MESSAGE "libFLAC_static - Win32 Release" (based on "Win32 (x86) Static Library")

-!MESSAGE "libFLAC_static - Win32 Debug" (based on "Win32 (x86) Static Library")

-!MESSAGE 

-

-# Begin Project

-# PROP AllowPerConfigDependencies 0

-# PROP Scc_ProjName "libFLAC"

-# PROP Scc_LocalPath "..\.."

-CPP=cl.exe

-RSC=rc.exe

-

-!IF  "$(CFG)" == "libFLAC_static - Win32 Release"

-

-# PROP BASE Use_MFC 0

-# PROP BASE Use_Debug_Libraries 0

-# PROP BASE Output_Dir "Release"

-# PROP BASE Intermediate_Dir "Release"

-# PROP BASE Target_Dir ""

-# PROP Use_MFC 0

-# PROP Use_Debug_Libraries 0

-# PROP Output_Dir "..\..\obj\release\lib"

-# PROP Intermediate_Dir "Release_static"

-# PROP Target_Dir ""

-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c

-# ADD CPP /nologo /MD /W3 /GX /O2 /Op /I ".\include" /I "..\..\include" /D VERSION=\"1.2.1\" /D "FLAC__NO_DLL" /D "FLAC__HAS_OGG" /D "FLAC__CPU_IA32" /D "FLAC__HAS_NASM" /D "FLAC__USE_3DNOW" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c

-# ADD BASE RSC /l 0x409 /d "NDEBUG"

-# ADD RSC /l 0x409 /d "NDEBUG"

-BSC32=bscmake.exe

-# ADD BASE BSC32 /nologo

-# ADD BSC32 /nologo

-LIB32=link.exe -lib

-# ADD BASE LIB32 /nologo

-# ADD LIB32 /nologo /nodefaultlib

-

-!ELSEIF  "$(CFG)" == "libFLAC_static - Win32 Debug"

-

-# PROP BASE Use_MFC 0

-# PROP BASE Use_Debug_Libraries 1

-# PROP BASE Output_Dir "Debug"

-# PROP BASE Intermediate_Dir "Debug"

-# PROP BASE Target_Dir ""

-# PROP Use_MFC 0

-# PROP Use_Debug_Libraries 1

-# PROP Output_Dir "..\..\obj\debug\lib"

-# PROP Intermediate_Dir "Debug_static"

-# PROP Target_Dir ""

-# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c

-# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I ".\include" /I "..\..\include" /D VERSION=\"1.2.1\" /D "FLAC__NO_DLL" /D "FLAC__HAS_OGG" /D "FLAC__CPU_IA32" /D "FLAC__HAS_NASM" /D "FLAC__USE_3DNOW" /D "WIN32" /D "_DEBUG" /D "DEBUG" /D "FLAC__OVERFLOW_DETECT" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c

-# ADD BASE RSC /l 0x409 /d "_DEBUG"

-# ADD RSC /l 0x409 /d "_DEBUG"

-BSC32=bscmake.exe

-# ADD BASE BSC32 /nologo

-# ADD BSC32 /nologo

-LIB32=link.exe -lib

-# ADD BASE LIB32 /nologo

-# ADD LIB32 /nologo /nodefaultlib

-

-!ENDIF 

-

-# Begin Target

-

-# Name "libFLAC_static - Win32 Release"

-# Name "libFLAC_static - Win32 Debug"

-# Begin Group "Source Files"

-

-# PROP Default_Filter "c"

-# Begin Group "Assembly Files (ia32)"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=.\ia32\bitreader_asm.nasm

-

-!IF  "$(CFG)" == "libFLAC_static - Win32 Release"

-

-USERDEP__CPU_A="ia32/bitreader_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\bitreader_asm.nasm

-

-"ia32/bitreader_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/bitreader_asm.nasm -o ia32/bitreader_asm.obj

-

-# End Custom Build

-

-!ELSEIF  "$(CFG)" == "libFLAC_static - Win32 Debug"

-

-USERDEP__CPU_A="ia32/bitreader_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\bitreader_asm.nasm

-

-"ia32/bitreader_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/bitreader_asm.nasm -o ia32/bitreader_asm.obj

-

-# End Custom Build

-

-!ENDIF 

-

-# End Source File

-# Begin Source File

-

-SOURCE=.\ia32\cpu_asm.nasm

-

-!IF  "$(CFG)" == "libFLAC_static - Win32 Release"

-

-USERDEP__CPU_A="ia32/cpu_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\cpu_asm.nasm

-

-"ia32/cpu_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/cpu_asm.nasm -o ia32/cpu_asm.obj

-

-# End Custom Build

-

-!ELSEIF  "$(CFG)" == "libFLAC_static - Win32 Debug"

-

-USERDEP__CPU_A="ia32/cpu_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\cpu_asm.nasm

-

-"ia32/cpu_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/cpu_asm.nasm -o ia32/cpu_asm.obj

-

-# End Custom Build

-

-!ENDIF 

-

-# End Source File

-# Begin Source File

-

-SOURCE=.\ia32\fixed_asm.nasm

-

-!IF  "$(CFG)" == "libFLAC_static - Win32 Release"

-

-USERDEP__FIXED="ia32/fixed_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\fixed_asm.nasm

-

-"ia32/fixed_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/fixed_asm.nasm -o ia32/fixed_asm.obj

-

-# End Custom Build

-

-!ELSEIF  "$(CFG)" == "libFLAC_static - Win32 Debug"

-

-USERDEP__FIXED="ia32/fixed_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\fixed_asm.nasm

-

-"ia32/fixed_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/fixed_asm.nasm -o ia32/fixed_asm.obj

-

-# End Custom Build

-

-!ENDIF 

-

-# End Source File

-# Begin Source File

-

-SOURCE=.\ia32\lpc_asm.nasm

-

-!IF  "$(CFG)" == "libFLAC_static - Win32 Release"

-

-USERDEP__LPC_A="ia32/lpc_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\lpc_asm.nasm

-

-"ia32/lpc_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/lpc_asm.nasm -o ia32/lpc_asm.obj

-

-# End Custom Build

-

-!ELSEIF  "$(CFG)" == "libFLAC_static - Win32 Debug"

-

-USERDEP__LPC_A="ia32/lpc_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\lpc_asm.nasm

-

-"ia32/lpc_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/lpc_asm.nasm -o ia32/lpc_asm.obj

-

-# End Custom Build

-

-!ENDIF 

-

-# End Source File

-# Begin Source File

-

-SOURCE=.\ia32\stream_encoder_asm.nasm

-

-!IF  "$(CFG)" == "libFLAC_static - Win32 Release"

-

-USERDEP__CPU_A="ia32/stream_encoder_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\stream_encoder_asm.nasm

-

-"ia32/stream_encoder_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/stream_encoder_asm.nasm -o ia32/stream_encoder_asm.obj

-

-# End Custom Build

-

-!ELSEIF  "$(CFG)" == "libFLAC_static - Win32 Debug"

-

-USERDEP__CPU_A="ia32/stream_encoder_asm.nasm"	

-# Begin Custom Build

-InputPath=.\ia32\stream_encoder_asm.nasm

-

-"ia32/stream_encoder_asm.obj" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"

-	nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/stream_encoder_asm.nasm -o ia32/stream_encoder_asm.obj

-

-# End Custom Build

-

-!ENDIF 

-

-# End Source File

-# Begin Source File

-

-SOURCE=.\ia32\nasm.h

-# End Source File

-# End Group

-# Begin Source File

-

-SOURCE=.\bitmath.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\bitreader.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\bitwriter.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\cpu.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\crc.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\fixed.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\float.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\format.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\lpc.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\md5.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\memory.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\metadata_iterators.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\metadata_object.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\ogg_decoder_aspect.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\ogg_encoder_aspect.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\ogg_helper.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\ogg_mapping.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\stream_decoder.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\stream_encoder.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\stream_encoder_framing.c

-# End Source File

-# Begin Source File

-

-SOURCE=.\window.c

-# End Source File

-# End Group

-# Begin Group "Private Header Files"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=.\include\private\all.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\bitmath.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\bitreader.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\bitwriter.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\cpu.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\crc.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\fixed.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\float.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\format.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\lpc.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\md5.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\memory.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\metadata.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\ogg_decoder_aspect.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\ogg_encoder_aspect.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\ogg_helper.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\ogg_mapping.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\stream_encoder_framing.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\private\window.h

-# End Source File

-# End Group

-# Begin Group "Protected Header Files"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=.\include\protected\all.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\protected\stream_decoder.h

-# End Source File

-# Begin Source File

-

-SOURCE=.\include\protected\stream_encoder.h

-# End Source File

-# End Group

-# Begin Group "Public Header Files"

-

-# PROP Default_Filter ""

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\all.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\assert.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\export.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\format.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\metadata.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\ordinals.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\stream_decoder.h

-# End Source File

-# Begin Source File

-

-SOURCE=..\..\include\FLAC\stream_encoder.h

-# End Source File

-# End Group

-# End Target

-# End Project

diff --git a/libFLAC/libFLAC_static.vcproj b/libFLAC/libFLAC_static.vcproj
deleted file mode 100644
index fdb1b2f..0000000
--- a/libFLAC/libFLAC_static.vcproj
+++ /dev/null
@@ -1,505 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>

-<VisualStudioProject

-	ProjectType="Visual C++"

-	Version="8.00"

-	Name="libFLAC_static"

-	ProjectGUID="{4cefbc84-c215-11db-8314-0800200c9a66}"

-	RootNamespace="libFLAC_static"

-	Keyword="Win32Proj"

-	>

-	<Platforms>

-		<Platform

-			Name="Win32"

-		/>

-	</Platforms>

-	<ToolFiles>

-	</ToolFiles>

-	<Configurations>

-		<Configuration

-			Name="Debug|Win32"

-			OutputDirectory="..\..\obj\debug\lib"

-			IntermediateDirectory="Debug_static"

-			ConfigurationType="4"

-			>

-			<Tool

-				Name="VCPreBuildEventTool"

-			/>

-			<Tool

-				Name="VCCustomBuildTool"

-			/>

-			<Tool

-				Name="VCXMLDataGeneratorTool"

-			/>

-			<Tool

-				Name="VCWebServiceProxyGeneratorTool"

-			/>

-			<Tool

-				Name="VCMIDLTool"

-			/>

-			<Tool

-				Name="VCCLCompilerTool"

-				Optimization="0"

-				AdditionalIncludeDirectories=".\include;..\..\include"

-				PreprocessorDefinitions="WIN32;_DEBUG;_LIB;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__USE_3DNOW;VERSION=\&quot;1.2.0\&quot;;FLAC__NO_DLL;DEBUG;FLAC__OVERFLOW_DETECT"

-				MinimalRebuild="true"

-				BasicRuntimeChecks="3"

-				RuntimeLibrary="1"

-				UsePrecompiledHeader="0"

-				WarningLevel="3"

-				Detect64BitPortabilityProblems="true"

-				DebugInformationFormat="4"

-				CompileAs="0"

-				DisableSpecificWarnings="4267;4996"

-			/>

-			<Tool

-				Name="VCManagedResourceCompilerTool"

-			/>

-			<Tool

-				Name="VCResourceCompilerTool"

-			/>

-			<Tool

-				Name="VCPreLinkEventTool"

-			/>

-			<Tool

-				Name="VCLibrarianTool"

-				OutputFile="..\..\obj\debug\lib\$(ProjectName).lib"

-			/>

-			<Tool

-				Name="VCALinkTool"

-			/>

-			<Tool

-				Name="VCXDCMakeTool"

-			/>

-			<Tool

-				Name="VCBscMakeTool"

-			/>

-			<Tool

-				Name="VCFxCopTool"

-			/>

-			<Tool

-				Name="VCPostBuildEventTool"

-			/>

-		</Configuration>

-		<Configuration

-			Name="Release|Win32"

-			OutputDirectory="..\..\obj\release\lib"

-			IntermediateDirectory="Release_static"

-			ConfigurationType="4"

-			>

-			<Tool

-				Name="VCPreBuildEventTool"

-			/>

-			<Tool

-				Name="VCCustomBuildTool"

-			/>

-			<Tool

-				Name="VCXMLDataGeneratorTool"

-			/>

-			<Tool

-				Name="VCWebServiceProxyGeneratorTool"

-			/>

-			<Tool

-				Name="VCMIDLTool"

-			/>

-			<Tool

-				Name="VCCLCompilerTool"

-				EnableIntrinsicFunctions="true"

-				FavorSizeOrSpeed="1"

-				OmitFramePointers="true"

-				WholeProgramOptimization="true"

-				AdditionalIncludeDirectories=".\include;..\..\include"

-				PreprocessorDefinitions="WIN32;NDEBUG;_LIB;FLAC__HAS_OGG;FLAC__CPU_IA32;FLAC__HAS_NASM;FLAC__USE_3DNOW;VERSION=\&quot;1.2.0\&quot;;FLAC__NO_DLL"

-				RuntimeLibrary="0"

-				BufferSecurityCheck="false"

-				UsePrecompiledHeader="0"

-				WarningLevel="3"

-				Detect64BitPortabilityProblems="true"

-				DebugInformationFormat="3"

-				CompileAs="0"

-				DisableSpecificWarnings="4267;4996"

-			/>

-			<Tool

-				Name="VCManagedResourceCompilerTool"

-			/>

-			<Tool

-				Name="VCResourceCompilerTool"

-			/>

-			<Tool

-				Name="VCPreLinkEventTool"

-			/>

-			<Tool

-				Name="VCLibrarianTool"

-				OutputFile="..\..\obj\release\lib\$(ProjectName).lib"

-			/>

-			<Tool

-				Name="VCALinkTool"

-			/>

-			<Tool

-				Name="VCXDCMakeTool"

-			/>

-			<Tool

-				Name="VCBscMakeTool"

-			/>

-			<Tool

-				Name="VCFxCopTool"

-			/>

-			<Tool

-				Name="VCPostBuildEventTool"

-			/>

-		</Configuration>

-	</Configurations>

-	<References>

-	</References>

-	<Files>

-		<Filter

-			Name="Header Files"

-			Filter="h;hpp;hxx;hm;inl;inc;xsd"

-			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"

-			>

-			<File

-				RelativePath=".\include\protected\all.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\all.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\bitmath.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\bitreader.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\bitwriter.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\cpu.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\crc.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\fixed.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\float.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\format.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\lpc.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\md5.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\memory.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\metadata.h"

-				>

-			</File>

-			<File

-				RelativePath=".\ia32\nasm.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\ogg_decoder_aspect.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\ogg_encoder_aspect.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\ogg_helper.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\ogg_mapping.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\protected\stream_decoder.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\protected\stream_encoder.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\stream_encoder_framing.h"

-				>

-			</File>

-			<File

-				RelativePath=".\include\private\window.h"

-				>

-			</File>

-		</Filter>

-		<Filter

-			Name="Public Header Files"

-			>

-			<File

-				RelativePath="..\..\include\FLAC\all.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\assert.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\callback.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\export.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\format.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\metadata.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\ordinals.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\stream_decoder.h"

-				>

-			</File>

-			<File

-				RelativePath="..\..\include\FLAC\stream_encoder.h"

-				>

-			</File>

-		</Filter>

-		<Filter

-			Name="Source Files"

-			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"

-			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"

-			>

-			<File

-				RelativePath=".\bitmath.c"

-				>

-			</File>

-			<File

-				RelativePath=".\bitreader.c"

-				>

-			</File>

-			<File

-				RelativePath=".\bitwriter.c"

-				>

-			</File>

-			<File

-				RelativePath=".\cpu.c"

-				>

-			</File>

-			<File

-				RelativePath=".\crc.c"

-				>

-			</File>

-			<File

-				RelativePath=".\fixed.c"

-				>

-			</File>

-			<File

-				RelativePath=".\float.c"

-				>

-			</File>

-			<File

-				RelativePath=".\format.c"

-				>

-			</File>

-			<File

-				RelativePath=".\lpc.c"

-				>

-			</File>

-			<File

-				RelativePath=".\md5.c"

-				>

-			</File>

-			<File

-				RelativePath=".\memory.c"

-				>

-			</File>

-			<File

-				RelativePath=".\metadata_iterators.c"

-				>

-			</File>

-			<File

-				RelativePath=".\metadata_object.c"

-				>

-			</File>

-			<File

-				RelativePath=".\ogg_decoder_aspect.c"

-				>

-			</File>

-			<File

-				RelativePath=".\ogg_encoder_aspect.c"

-				>

-			</File>

-			<File

-				RelativePath=".\ogg_helper.c"

-				>

-			</File>

-			<File

-				RelativePath=".\ogg_mapping.c"

-				>

-			</File>

-			<File

-				RelativePath=".\stream_decoder.c"

-				>

-			</File>

-			<File

-				RelativePath=".\stream_encoder.c"

-				>

-			</File>

-			<File

-				RelativePath=".\stream_encoder_framing.c"

-				>

-			</File>

-			<File

-				RelativePath=".\window.c"

-				>

-			</File>

-		</Filter>

-		<File

-			RelativePath=".\ia32\bitreader_asm.nasm"

-			>

-			<FileConfiguration

-				Name="Debug|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/bitreader_asm.nasm -o ia32/bitreader_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/bitreader_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/bitreader_asm.obj"

-				/>

-			</FileConfiguration>

-			<FileConfiguration

-				Name="Release|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/bitreader_asm.nasm -o ia32/bitreader_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/bitreader_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/bitreader_asm.obj"

-				/>

-			</FileConfiguration>

-		</File>

-		<File

-			RelativePath=".\ia32\cpu_asm.nasm"

-			>

-			<FileConfiguration

-				Name="Debug|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/cpu_asm.nasm -o ia32/cpu_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/cpu_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/cpu_asm.obj"

-				/>

-			</FileConfiguration>

-			<FileConfiguration

-				Name="Release|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/cpu_asm.nasm -o ia32/cpu_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/cpu_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/cpu_asm.obj"

-				/>

-			</FileConfiguration>

-		</File>

-		<File

-			RelativePath=".\ia32\fixed_asm.nasm"

-			>

-			<FileConfiguration

-				Name="Debug|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/fixed_asm.nasm -o ia32/fixed_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/fixed_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/fixed_asm.obj"

-				/>

-			</FileConfiguration>

-			<FileConfiguration

-				Name="Release|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/fixed_asm.nasm -o ia32/fixed_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/fixed_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/fixed_asm.obj"

-				/>

-			</FileConfiguration>

-		</File>

-		<File

-			RelativePath=".\ia32\lpc_asm.nasm"

-			>

-			<FileConfiguration

-				Name="Debug|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/lpc_asm.nasm -o ia32/lpc_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/lpc_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/lpc_asm.obj"

-				/>

-			</FileConfiguration>

-			<FileConfiguration

-				Name="Release|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/lpc_asm.nasm -o ia32/lpc_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/lpc_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/lpc_asm.obj"

-				/>

-			</FileConfiguration>

-		</File>

-		<File

-			RelativePath=".\ia32\stream_encoder_asm.nasm"

-			>

-			<FileConfiguration

-				Name="Debug|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/stream_encoder_asm.nasm -o ia32/stream_encoder_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/stream_encoder_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/stream_encoder_asm.obj"

-				/>

-			</FileConfiguration>

-			<FileConfiguration

-				Name="Release|Win32"

-				>

-				<Tool

-					Name="VCCustomBuildTool"

-					CommandLine="nasmw.exe -f win32 -d OBJ_FORMAT_win32 -i ia32/ ia32/stream_encoder_asm.nasm -o ia32/stream_encoder_asm.obj&#x0D;&#x0A;"

-					AdditionalDependencies="ia32/stream_encoder_asm.nasm;ia32/nasm.h"

-					Outputs="ia32/stream_encoder_asm.obj"

-				/>

-			</FileConfiguration>

-		</File>

-	</Files>

-	<Globals>

-	</Globals>

-</VisualStudioProject>

diff --git a/libFLAC/lpc.c b/libFLAC/lpc.c
index f7c643a..5c6e175 100644
--- a/libFLAC/lpc.c
+++ b/libFLAC/lpc.c
@@ -288,6 +288,7 @@
 		for(j = 0; j < order; j++) {
 			sum += qlp_coeff[j] * (*(--history));
 			sumo += (FLAC__int64)qlp_coeff[j] * (FLAC__int64)(*history);
+			if(sumo > 2147483647ll || sumo < -2147483648ll)
 				fprintf(stderr,"FLAC__lpc_compute_residual_from_qlp_coefficients: OVERFLOW, i=%u, j=%u, c=%d, d=%d, sumo=%" PRId64 "\n",i,j,qlp_coeff[j],*history,sumo);
 		}
 		*(residual++) = *(data++) - (sum >> lp_quantization);
diff --git a/libFLAC/md5.c b/libFLAC/md5.c
index e5adc3e..e9013a9 100644
--- a/libFLAC/md5.c
+++ b/libFLAC/md5.c
@@ -224,7 +224,7 @@
 	ctx->bytes[0] = 0;
 	ctx->bytes[1] = 0;
 
-	ctx->internal_buf.p8= 0;
+	ctx->internal_buf.p8 = 0;
 	ctx->capacity = 0;
 }
 
@@ -262,7 +262,7 @@
 	memcpy(digest, ctx->buf, 16);
 	if (0 != ctx->internal_buf.p8) {
 		free(ctx->internal_buf.p8);
-		ctx->internal_buf.p8= 0;
+		ctx->internal_buf.p8 = 0;
 		ctx->capacity = 0;
 	}
 	memset(ctx, 0, sizeof(*ctx));	/* In case it's sensitive */
@@ -499,14 +499,12 @@
 		return false;
 
 	if (ctx->capacity < bytes_needed) {
-		FLAC__byte *tmp = realloc(ctx->internal_buf.p8, bytes_needed);
-		if (0 == tmp) {
-			free(ctx->internal_buf.p8);
-			if (0 == (ctx->internal_buf.p8= safe_malloc_(bytes_needed)))
+		if (0 == (ctx->internal_buf.p8 = safe_realloc_(ctx->internal_buf.p8, bytes_needed))) {
+			if (0 == (ctx->internal_buf.p8 = safe_malloc_(bytes_needed))) {
+				ctx->capacity = 0;
 				return false;
+			}
 		}
-		else
-			ctx->internal_buf.p8= tmp;
 		ctx->capacity = bytes_needed;
 	}
 
diff --git a/libFLAC/metadata_iterators.c b/libFLAC/metadata_iterators.c
deleted file mode 100644
index 8b9dbec..0000000
--- a/libFLAC/metadata_iterators.c
+++ /dev/null
@@ -1,3364 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#if defined _MSC_VER || defined __BORLANDC__ || defined __MINGW32__
-#if defined __BORLANDC__
-#include <utime.h> /* for utime() */
-#else
-#include <sys/utime.h> /* for utime() */
-#endif
-#include <io.h> /* for chmod() */
-#include <sys/types.h> /* for off_t */
-#if _MSC_VER <= 1600 || defined __BORLANDC__ /* @@@ [2G limit] */
-#define fseeko fseek
-#define ftello ftell
-#endif
-#else
-#include <sys/types.h> /* some flavors of BSD (like OS X) require this to get time_t */
-#include <utime.h> /* for utime() */
-#include <unistd.h> /* for chown(), unlink() */
-#endif
-#include <sys/stat.h> /* for stat(), maybe chmod() */
-
-#include "private/metadata.h"
-
-#include "FLAC/assert.h"
-#include "FLAC/stream_decoder.h"
-#include "share/alloc.h"
-
-#ifdef max
-#undef max
-#endif
-#define max(a,b) ((a)>(b)?(a):(b))
-#ifdef min
-#undef min
-#endif
-#define min(a,b) ((a)<(b)?(a):(b))
-
-
-/****************************************************************************
- *
- * Local function declarations
- *
- ***************************************************************************/
-
-static void pack_uint32_(FLAC__uint32 val, FLAC__byte *b, unsigned bytes);
-static void pack_uint32_little_endian_(FLAC__uint32 val, FLAC__byte *b, unsigned bytes);
-static void pack_uint64_(FLAC__uint64 val, FLAC__byte *b, unsigned bytes);
-static FLAC__uint32 unpack_uint32_(FLAC__byte *b, unsigned bytes);
-static FLAC__uint32 unpack_uint32_little_endian_(FLAC__byte *b, unsigned bytes);
-static FLAC__uint64 unpack_uint64_(FLAC__byte *b, unsigned bytes);
-
-static FLAC__bool read_metadata_block_header_(FLAC__Metadata_SimpleIterator *iterator);
-static FLAC__bool read_metadata_block_data_(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block);
-static FLAC__bool read_metadata_block_header_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__bool *is_last, FLAC__MetadataType *type, unsigned *length);
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__IOCallback_Seek seek_cb, FLAC__StreamMetadata *block);
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_streaminfo_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_StreamInfo *block);
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_padding_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Seek seek_cb, FLAC__StreamMetadata_Padding *block, unsigned block_length);
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_application_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_Application *block, unsigned block_length);
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_seektable_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_SeekTable *block, unsigned block_length);
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_vorbis_comment_entry_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_VorbisComment_Entry *entry);
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_vorbis_comment_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_VorbisComment *block);
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_cuesheet_track_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_CueSheet_Track *track);
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_cuesheet_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_CueSheet *block);
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_picture_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_Picture *block);
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_unknown_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_Unknown *block, unsigned block_length);
-
-static FLAC__bool write_metadata_block_header_(FILE *file, FLAC__Metadata_SimpleIteratorStatus *status, const FLAC__StreamMetadata *block);
-static FLAC__bool write_metadata_block_data_(FILE *file, FLAC__Metadata_SimpleIteratorStatus *status, const FLAC__StreamMetadata *block);
-static FLAC__bool write_metadata_block_header_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata *block);
-static FLAC__bool write_metadata_block_data_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata *block);
-static FLAC__bool write_metadata_block_data_streaminfo_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_StreamInfo *block);
-static FLAC__bool write_metadata_block_data_padding_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_Padding *block, unsigned block_length);
-static FLAC__bool write_metadata_block_data_application_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_Application *block, unsigned block_length);
-static FLAC__bool write_metadata_block_data_seektable_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_SeekTable *block);
-static FLAC__bool write_metadata_block_data_vorbis_comment_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_VorbisComment *block);
-static FLAC__bool write_metadata_block_data_cuesheet_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_CueSheet *block);
-static FLAC__bool write_metadata_block_data_picture_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_Picture *block);
-static FLAC__bool write_metadata_block_data_unknown_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_Unknown *block, unsigned block_length);
-
-static FLAC__bool write_metadata_block_stationary_(FLAC__Metadata_SimpleIterator *iterator, const FLAC__StreamMetadata *block);
-static FLAC__bool write_metadata_block_stationary_with_padding_(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, unsigned padding_length, FLAC__bool padding_is_last);
-static FLAC__bool rewrite_whole_file_(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool append);
-
-static void simple_iterator_push_(FLAC__Metadata_SimpleIterator *iterator);
-static FLAC__bool simple_iterator_pop_(FLAC__Metadata_SimpleIterator *iterator);
-
-static unsigned seek_to_first_metadata_block_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__IOCallback_Seek seek_cb);
-static unsigned seek_to_first_metadata_block_(FILE *f);
-
-static FLAC__bool simple_iterator_copy_file_prefix_(FLAC__Metadata_SimpleIterator *iterator, FILE **tempfile, char **tempfilename, FLAC__bool append);
-static FLAC__bool simple_iterator_copy_file_postfix_(FLAC__Metadata_SimpleIterator *iterator, FILE **tempfile, char **tempfilename, int fixup_is_last_code, off_t fixup_is_last_flag_offset, FLAC__bool backup);
-
-static FLAC__bool copy_n_bytes_from_file_(FILE *file, FILE *tempfile, off_t bytes, FLAC__Metadata_SimpleIteratorStatus *status);
-static FLAC__bool copy_n_bytes_from_file_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__IOHandle temp_handle, FLAC__IOCallback_Write temp_write_cb, off_t bytes, FLAC__Metadata_SimpleIteratorStatus *status);
-static FLAC__bool copy_remaining_bytes_from_file_(FILE *file, FILE *tempfile, FLAC__Metadata_SimpleIteratorStatus *status);
-static FLAC__bool copy_remaining_bytes_from_file_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__IOCallback_Eof eof_cb, FLAC__IOHandle temp_handle, FLAC__IOCallback_Write temp_write_cb, FLAC__Metadata_SimpleIteratorStatus *status);
-
-static FLAC__bool open_tempfile_(const char *filename, const char *tempfile_path_prefix, FILE **tempfile, char **tempfilename, FLAC__Metadata_SimpleIteratorStatus *status);
-static FLAC__bool transport_tempfile_(const char *filename, FILE **tempfile, char **tempfilename, FLAC__Metadata_SimpleIteratorStatus *status);
-static void cleanup_tempfile_(FILE **tempfile, char **tempfilename);
-
-static FLAC__bool get_file_stats_(const char *filename, struct stat *stats);
-static void set_file_stats_(const char *filename, struct stat *stats);
-
-static int fseek_wrapper_(FLAC__IOHandle handle, FLAC__int64 offset, int whence);
-static FLAC__int64 ftell_wrapper_(FLAC__IOHandle handle);
-
-static FLAC__Metadata_ChainStatus get_equivalent_status_(FLAC__Metadata_SimpleIteratorStatus status);
-
-
-#ifdef FLAC__VALGRIND_TESTING
-static size_t local__fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)
-{
-	size_t ret = fwrite(ptr, size, nmemb, stream);
-	if(!ferror(stream))
-		fflush(stream);
-	return ret;
-}
-#else
-#define local__fwrite fwrite
-#endif
-
-/****************************************************************************
- *
- * Level 0 implementation
- *
- ***************************************************************************/
-
-static FLAC__StreamDecoderWriteStatus write_callback_(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data);
-static void metadata_callback_(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data);
-static void error_callback_(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data);
-
-typedef struct {
-	FLAC__bool got_error;
-	FLAC__StreamMetadata *object;
-} level0_client_data;
-
-static FLAC__StreamMetadata *get_one_metadata_block_(const char *filename, FLAC__MetadataType type)
-{
-	level0_client_data cd;
-	FLAC__StreamDecoder *decoder;
-
-	FLAC__ASSERT(0 != filename);
-
-	cd.got_error = false;
-	cd.object = 0;
-
-	decoder = FLAC__stream_decoder_new();
-
-	if(0 == decoder)
-		return 0;
-
-	FLAC__stream_decoder_set_md5_checking(decoder, false);
-	FLAC__stream_decoder_set_metadata_ignore_all(decoder);
-	FLAC__stream_decoder_set_metadata_respond(decoder, type);
-
-	if(FLAC__stream_decoder_init_file(decoder, filename, write_callback_, metadata_callback_, error_callback_, &cd) != FLAC__STREAM_DECODER_INIT_STATUS_OK || cd.got_error) {
-		(void)FLAC__stream_decoder_finish(decoder);
-		FLAC__stream_decoder_delete(decoder);
-		return 0;
-	}
-
-	if(!FLAC__stream_decoder_process_until_end_of_metadata(decoder) || cd.got_error) {
-		(void)FLAC__stream_decoder_finish(decoder);
-		FLAC__stream_decoder_delete(decoder);
-		if(0 != cd.object)
-			FLAC__metadata_object_delete(cd.object);
-		return 0;
-	}
-
-	(void)FLAC__stream_decoder_finish(decoder);
-	FLAC__stream_decoder_delete(decoder);
-
-	return cd.object;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_get_streaminfo(const char *filename, FLAC__StreamMetadata *streaminfo)
-{
-	FLAC__StreamMetadata *object;
-
-	FLAC__ASSERT(0 != filename);
-	FLAC__ASSERT(0 != streaminfo);
-
-	object = get_one_metadata_block_(filename, FLAC__METADATA_TYPE_STREAMINFO);
-
-	if (object) {
-		/* can just copy the contents since STREAMINFO has no internal structure */
-		*streaminfo = *object;
-		FLAC__metadata_object_delete(object);
-		return true;
-	}
-	else {
-		return false;
-	}
-}
-
-FLAC_API FLAC__bool FLAC__metadata_get_tags(const char *filename, FLAC__StreamMetadata **tags)
-{
-	FLAC__ASSERT(0 != filename);
-	FLAC__ASSERT(0 != tags);
-
-	*tags = get_one_metadata_block_(filename, FLAC__METADATA_TYPE_VORBIS_COMMENT);
-
-	return 0 != *tags;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_get_cuesheet(const char *filename, FLAC__StreamMetadata **cuesheet)
-{
-	FLAC__ASSERT(0 != filename);
-	FLAC__ASSERT(0 != cuesheet);
-
-	*cuesheet = get_one_metadata_block_(filename, FLAC__METADATA_TYPE_CUESHEET);
-
-	return 0 != *cuesheet;
-}
-
-FLAC__StreamDecoderWriteStatus write_callback_(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
-{
-	(void)decoder, (void)frame, (void)buffer, (void)client_data;
-
-	return FLAC__STREAM_DECODER_WRITE_STATUS_CONTINUE;
-}
-
-void metadata_callback_(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
-{
-	level0_client_data *cd = (level0_client_data *)client_data;
-	(void)decoder;
-
-	/*
-	 * we assume we only get here when the one metadata block we were
-	 * looking for was passed to us
-	 */
-	if(!cd->got_error && 0 == cd->object) {
-		if(0 == (cd->object = FLAC__metadata_object_clone(metadata)))
-			cd->got_error = true;
-	}
-}
-
-void error_callback_(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
-{
-	level0_client_data *cd = (level0_client_data *)client_data;
-	(void)decoder;
-
-	if(status != FLAC__STREAM_DECODER_ERROR_STATUS_LOST_SYNC)
-		cd->got_error = true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_get_picture(const char *filename, FLAC__StreamMetadata **picture, FLAC__StreamMetadata_Picture_Type type, const char *mime_type, const FLAC__byte *description, unsigned max_width, unsigned max_height, unsigned max_depth, unsigned max_colors)
-{
-	FLAC__Metadata_SimpleIterator *it;
-	FLAC__uint64 max_area_seen = 0;
-	FLAC__uint64 max_depth_seen = 0;
-
-	FLAC__ASSERT(0 != filename);
-	FLAC__ASSERT(0 != picture);
-
-	*picture = 0;
-
-	it = FLAC__metadata_simple_iterator_new();
-	if(0 == it)
-		return false;
-	if(!FLAC__metadata_simple_iterator_init(it, filename, /*read_only=*/true, /*preserve_file_stats=*/true)) {
-		FLAC__metadata_simple_iterator_delete(it);
-		return false;
-	}
-	do {
-		if(FLAC__metadata_simple_iterator_get_block_type(it) == FLAC__METADATA_TYPE_PICTURE) {
-			FLAC__StreamMetadata *obj = FLAC__metadata_simple_iterator_get_block(it);
-			FLAC__uint64 area = (FLAC__uint64)obj->data.picture.width * (FLAC__uint64)obj->data.picture.height;
-			/* check constraints */
-			if(
-				(type == (FLAC__StreamMetadata_Picture_Type)(-1) || type == obj->data.picture.type) &&
-				(mime_type == 0 || !strcmp(mime_type, obj->data.picture.mime_type)) &&
-				(description == 0 || !strcmp((const char *)description, (const char *)obj->data.picture.description)) &&
-				obj->data.picture.width <= max_width &&
-				obj->data.picture.height <= max_height &&
-				obj->data.picture.depth <= max_depth &&
-				obj->data.picture.colors <= max_colors &&
-				(area > max_area_seen || (area == max_area_seen && obj->data.picture.depth > max_depth_seen))
-			) {
-				if(*picture)
-					FLAC__metadata_object_delete(*picture);
-				*picture = obj;
-				max_area_seen = area;
-				max_depth_seen = obj->data.picture.depth;
-			}
-			else {
-				FLAC__metadata_object_delete(obj);
-			}
-		}
-	} while(FLAC__metadata_simple_iterator_next(it));
-
-	FLAC__metadata_simple_iterator_delete(it);
-
-	return (0 != *picture);
-}
-
-
-/****************************************************************************
- *
- * Level 1 implementation
- *
- ***************************************************************************/
-
-#define SIMPLE_ITERATOR_MAX_PUSH_DEPTH (1+4)
-/* 1 for initial offset, +4 for our own personal use */
-
-struct FLAC__Metadata_SimpleIterator {
-	FILE *file;
-	char *filename, *tempfile_path_prefix;
-	struct stat stats;
-	FLAC__bool has_stats;
-	FLAC__bool is_writable;
-	FLAC__Metadata_SimpleIteratorStatus status;
-	off_t offset[SIMPLE_ITERATOR_MAX_PUSH_DEPTH];
-	off_t first_offset; /* this is the offset to the STREAMINFO block */
-	unsigned depth;
-	/* this is the metadata block header of the current block we are pointing to: */
-	FLAC__bool is_last;
-	FLAC__MetadataType type;
-	unsigned length;
-};
-
-FLAC_API const char * const FLAC__Metadata_SimpleIteratorStatusString[] = {
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR",
-	"FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR"
-};
-
-
-FLAC_API FLAC__Metadata_SimpleIterator *FLAC__metadata_simple_iterator_new(void)
-{
-	FLAC__Metadata_SimpleIterator *iterator = (FLAC__Metadata_SimpleIterator*)calloc(1, sizeof(FLAC__Metadata_SimpleIterator));
-
-	if(0 != iterator) {
-		iterator->file = 0;
-		iterator->filename = 0;
-		iterator->tempfile_path_prefix = 0;
-		iterator->has_stats = false;
-		iterator->is_writable = false;
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-		iterator->first_offset = iterator->offset[0] = -1;
-		iterator->depth = 0;
-	}
-
-	return iterator;
-}
-
-static void simple_iterator_free_guts_(FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-
-	if(0 != iterator->file) {
-		fclose(iterator->file);
-		iterator->file = 0;
-		if(iterator->has_stats)
-			set_file_stats_(iterator->filename, &iterator->stats);
-	}
-	if(0 != iterator->filename) {
-		free(iterator->filename);
-		iterator->filename = 0;
-	}
-	if(0 != iterator->tempfile_path_prefix) {
-		free(iterator->tempfile_path_prefix);
-		iterator->tempfile_path_prefix = 0;
-	}
-}
-
-FLAC_API void FLAC__metadata_simple_iterator_delete(FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-
-	simple_iterator_free_guts_(iterator);
-	free(iterator);
-}
-
-FLAC_API FLAC__Metadata_SimpleIteratorStatus FLAC__metadata_simple_iterator_status(FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__Metadata_SimpleIteratorStatus status;
-
-	FLAC__ASSERT(0 != iterator);
-
-	status = iterator->status;
-	iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-	return status;
-}
-
-static FLAC__bool simple_iterator_prime_input_(FLAC__Metadata_SimpleIterator *iterator, FLAC__bool read_only)
-{
-	unsigned ret;
-
-	FLAC__ASSERT(0 != iterator);
-
-	if(read_only || 0 == (iterator->file = fopen(iterator->filename, "r+b"))) {
-		iterator->is_writable = false;
-		if(read_only || errno == EACCES) {
-			if(0 == (iterator->file = fopen(iterator->filename, "rb"))) {
-				iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE;
-				return false;
-			}
-		}
-		else {
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE;
-			return false;
-		}
-	}
-	else {
-		iterator->is_writable = true;
-	}
-
-	ret = seek_to_first_metadata_block_(iterator->file);
-	switch(ret) {
-		case 0:
-			iterator->depth = 0;
-			iterator->first_offset = iterator->offset[iterator->depth] = ftello(iterator->file);
-			return read_metadata_block_header_(iterator);
-		case 1:
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-			return false;
-		case 2:
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-			return false;
-		case 3:
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE;
-			return false;
-		default:
-			FLAC__ASSERT(0);
-			return false;
-	}
-}
-
-#if 0
-@@@ If we decide to finish implementing this, put this comment back in metadata.h
-/*
- * The 'tempfile_path_prefix' allows you to specify a directory where
- * tempfiles should go.  Remember that if your metadata edits cause the
- * FLAC file to grow, the entire file will have to be rewritten.  If
- * 'tempfile_path_prefix' is NULL, the temp file will be written in the
- * same directory as the original FLAC file.  This makes replacing the
- * original with the tempfile fast but requires extra space in the same
- * partition for the tempfile.  If space is a problem, you can pass a
- * directory name belonging to a different partition in
- * 'tempfile_path_prefix'.  Note that you should use the forward slash
- * '/' as the directory separator.  A trailing slash is not needed; it
- * will be added automatically.
- */
-FLAC__bool FLAC__metadata_simple_iterator_init(FLAC__Metadata_SimpleIterator *iterator, const char *filename, FLAC__bool preserve_file_stats, const char *tempfile_path_prefix);
-#endif
-
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_init(FLAC__Metadata_SimpleIterator *iterator, const char *filename, FLAC__bool read_only, FLAC__bool preserve_file_stats)
-{
-	const char *tempfile_path_prefix = 0; /*@@@ search for comments near 'rename(...)' for what it will take to finish implementing this */
-
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != filename);
-
-	simple_iterator_free_guts_(iterator);
-
-	if(!read_only && preserve_file_stats)
-		iterator->has_stats = get_file_stats_(filename, &iterator->stats);
-
-	if(0 == (iterator->filename = strdup(filename))) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-		return false;
-	}
-	if(0 != tempfile_path_prefix && 0 == (iterator->tempfile_path_prefix = strdup(tempfile_path_prefix))) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-		return false;
-	}
-
-	return simple_iterator_prime_input_(iterator, read_only);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_is_writable(const FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-
-	return iterator->is_writable;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_next(FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-
-	if(iterator->is_last)
-		return false;
-
-	if(0 != fseeko(iterator->file, iterator->length, SEEK_CUR)) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-		return false;
-	}
-
-	iterator->offset[iterator->depth] = ftello(iterator->file);
-
-	return read_metadata_block_header_(iterator);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_prev(FLAC__Metadata_SimpleIterator *iterator)
-{
-	off_t this_offset;
-
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-
-	if(iterator->offset[iterator->depth] == iterator->first_offset)
-		return false;
-
-	if(0 != fseeko(iterator->file, iterator->first_offset, SEEK_SET)) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-		return false;
-	}
-	this_offset = iterator->first_offset;
-	if(!read_metadata_block_header_(iterator))
-		return false;
-
-	/* we ignore any error from ftello() and catch it in fseeko() */
-	while(ftello(iterator->file) + (off_t)iterator->length < iterator->offset[iterator->depth]) {
-		if(0 != fseeko(iterator->file, iterator->length, SEEK_CUR)) {
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-			return false;
-		}
-		this_offset = ftello(iterator->file);
-		if(!read_metadata_block_header_(iterator))
-			return false;
-	}
-
-	iterator->offset[iterator->depth] = this_offset;
-
-	return true;
-}
-
-/*@@@@add to tests*/
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_is_last(const FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-
-	return iterator->is_last;
-}
-
-/*@@@@add to tests*/
-FLAC_API off_t FLAC__metadata_simple_iterator_get_block_offset(const FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-
-	return iterator->offset[iterator->depth];
-}
-
-FLAC_API FLAC__MetadataType FLAC__metadata_simple_iterator_get_block_type(const FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-
-	return iterator->type;
-}
-
-/*@@@@add to tests*/
-FLAC_API unsigned FLAC__metadata_simple_iterator_get_block_length(const FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-
-	return iterator->length;
-}
-
-/*@@@@add to tests*/
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_get_application_id(FLAC__Metadata_SimpleIterator *iterator, FLAC__byte *id)
-{
-	const unsigned id_bytes = FLAC__STREAM_METADATA_APPLICATION_ID_LEN / 8;
-
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-	FLAC__ASSERT(0 != id);
-
-	if(iterator->type != FLAC__METADATA_TYPE_APPLICATION) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT;
-		return false;
-	}
-
-	if(fread(id, 1, id_bytes, iterator->file) != id_bytes) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-		return false;
-	}
-
-	/* back up */
-	if(0 != fseeko(iterator->file, -((int)id_bytes), SEEK_CUR)) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-		return false;
-	}
-
-	return true;
-}
-
-FLAC_API FLAC__StreamMetadata *FLAC__metadata_simple_iterator_get_block(FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__StreamMetadata *block = FLAC__metadata_object_new(iterator->type);
-
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-
-	if(0 != block) {
-		block->is_last = iterator->is_last;
-		block->length = iterator->length;
-
-		if(!read_metadata_block_data_(iterator, block)) {
-			FLAC__metadata_object_delete(block);
-			return 0;
-		}
-
-		/* back up to the beginning of the block data to stay consistent */
-		if(0 != fseeko(iterator->file, iterator->offset[iterator->depth] + FLAC__STREAM_METADATA_HEADER_LENGTH, SEEK_SET)) {
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-			FLAC__metadata_object_delete(block);
-			return 0;
-		}
-	}
-	else
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-
-	return block;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_set_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding)
-{
-	FLAC__ASSERT_DECLARATION(off_t debug_target_offset = iterator->offset[iterator->depth];)
-	FLAC__bool ret;
-
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-	FLAC__ASSERT(0 != block);
-
-	if(!iterator->is_writable) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE;
-		return false;
-	}
-
-	if(iterator->type == FLAC__METADATA_TYPE_STREAMINFO || block->type == FLAC__METADATA_TYPE_STREAMINFO) {
-		if(iterator->type != block->type) {
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT;
-			return false;
-		}
-	}
-
-	block->is_last = iterator->is_last;
-
-	if(iterator->length == block->length)
-		return write_metadata_block_stationary_(iterator, block);
-	else if(iterator->length > block->length) {
-		if(use_padding && iterator->length >= FLAC__STREAM_METADATA_HEADER_LENGTH + block->length) {
-			ret = write_metadata_block_stationary_with_padding_(iterator, block, iterator->length - FLAC__STREAM_METADATA_HEADER_LENGTH - block->length, block->is_last);
-			FLAC__ASSERT(!ret || iterator->offset[iterator->depth] == debug_target_offset);
-			FLAC__ASSERT(!ret || ftello(iterator->file) == debug_target_offset + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH);
-			return ret;
-		}
-		else {
-			ret = rewrite_whole_file_(iterator, block, /*append=*/false);
-			FLAC__ASSERT(!ret || iterator->offset[iterator->depth] == debug_target_offset);
-			FLAC__ASSERT(!ret || ftello(iterator->file) == debug_target_offset + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH);
-			return ret;
-		}
-	}
-	else /* iterator->length < block->length */ {
-		unsigned padding_leftover = 0;
-		FLAC__bool padding_is_last = false;
-		if(use_padding) {
-			/* first see if we can even use padding */
-			if(iterator->is_last) {
-				use_padding = false;
-			}
-			else {
-				const unsigned extra_padding_bytes_required = block->length - iterator->length;
-				simple_iterator_push_(iterator);
-				if(!FLAC__metadata_simple_iterator_next(iterator)) {
-					(void)simple_iterator_pop_(iterator);
-					return false;
-				}
-				if(iterator->type != FLAC__METADATA_TYPE_PADDING) {
-					use_padding = false;
-				}
-				else {
-					if(FLAC__STREAM_METADATA_HEADER_LENGTH + iterator->length == extra_padding_bytes_required) {
-						padding_leftover = 0;
-						block->is_last = iterator->is_last;
-					}
-					else if(iterator->length < extra_padding_bytes_required)
-						use_padding = false;
-					else {
-						padding_leftover = FLAC__STREAM_METADATA_HEADER_LENGTH + iterator->length - extra_padding_bytes_required;
-						padding_is_last = iterator->is_last;
-						block->is_last = false;
-					}
-				}
-				if(!simple_iterator_pop_(iterator))
-					return false;
-			}
-		}
-		if(use_padding) {
-			if(padding_leftover == 0) {
-				ret = write_metadata_block_stationary_(iterator, block);
-				FLAC__ASSERT(!ret || iterator->offset[iterator->depth] == debug_target_offset);
-				FLAC__ASSERT(!ret || ftello(iterator->file) == debug_target_offset + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH);
-				return ret;
-			}
-			else {
-				FLAC__ASSERT(padding_leftover >= FLAC__STREAM_METADATA_HEADER_LENGTH);
-				ret = write_metadata_block_stationary_with_padding_(iterator, block, padding_leftover - FLAC__STREAM_METADATA_HEADER_LENGTH, padding_is_last);
-				FLAC__ASSERT(!ret || iterator->offset[iterator->depth] == debug_target_offset);
-				FLAC__ASSERT(!ret || ftello(iterator->file) == debug_target_offset + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH);
-				return ret;
-			}
-		}
-		else {
-			ret = rewrite_whole_file_(iterator, block, /*append=*/false);
-			FLAC__ASSERT(!ret || iterator->offset[iterator->depth] == debug_target_offset);
-			FLAC__ASSERT(!ret || ftello(iterator->file) == debug_target_offset + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH);
-			return ret;
-		}
-	}
-}
-
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_insert_block_after(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool use_padding)
-{
-	unsigned padding_leftover = 0;
-	FLAC__bool padding_is_last = false;
-
-	FLAC__ASSERT_DECLARATION(off_t debug_target_offset = iterator->offset[iterator->depth] + FLAC__STREAM_METADATA_HEADER_LENGTH + iterator->length;)
-	FLAC__bool ret;
-
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-	FLAC__ASSERT(0 != block);
-
-	if(!iterator->is_writable)
-		return false;
-
-	if(block->type == FLAC__METADATA_TYPE_STREAMINFO) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT;
-		return false;
-	}
-
-	block->is_last = iterator->is_last;
-
-	if(use_padding) {
-		/* first see if we can even use padding */
-		if(iterator->is_last) {
-			use_padding = false;
-		}
-		else {
-			simple_iterator_push_(iterator);
-			if(!FLAC__metadata_simple_iterator_next(iterator)) {
-				(void)simple_iterator_pop_(iterator);
-				return false;
-			}
-			if(iterator->type != FLAC__METADATA_TYPE_PADDING) {
-				use_padding = false;
-			}
-			else {
-				if(iterator->length == block->length) {
-					padding_leftover = 0;
-					block->is_last = iterator->is_last;
-				}
-				else if(iterator->length < FLAC__STREAM_METADATA_HEADER_LENGTH + block->length)
-					use_padding = false;
-				else {
-					padding_leftover = iterator->length - block->length;
-					padding_is_last = iterator->is_last;
-					block->is_last = false;
-				}
-			}
-			if(!simple_iterator_pop_(iterator))
-				return false;
-		}
-	}
-	if(use_padding) {
-		/* move to the next block, which is suitable padding */
-		if(!FLAC__metadata_simple_iterator_next(iterator))
-			return false;
-		if(padding_leftover == 0) {
-			ret = write_metadata_block_stationary_(iterator, block);
-			FLAC__ASSERT(iterator->offset[iterator->depth] == debug_target_offset);
-			FLAC__ASSERT(ftello(iterator->file) == debug_target_offset + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH);
-			return ret;
-		}
-		else {
-			FLAC__ASSERT(padding_leftover >= FLAC__STREAM_METADATA_HEADER_LENGTH);
-			ret = write_metadata_block_stationary_with_padding_(iterator, block, padding_leftover - FLAC__STREAM_METADATA_HEADER_LENGTH, padding_is_last);
-			FLAC__ASSERT(iterator->offset[iterator->depth] == debug_target_offset);
-			FLAC__ASSERT(ftello(iterator->file) == debug_target_offset + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH);
-			return ret;
-		}
-	}
-	else {
-		ret = rewrite_whole_file_(iterator, block, /*append=*/true);
-		FLAC__ASSERT(iterator->offset[iterator->depth] == debug_target_offset);
-		FLAC__ASSERT(ftello(iterator->file) == debug_target_offset + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH);
-		return ret;
-	}
-}
-
-FLAC_API FLAC__bool FLAC__metadata_simple_iterator_delete_block(FLAC__Metadata_SimpleIterator *iterator, FLAC__bool use_padding)
-{
-	FLAC__ASSERT_DECLARATION(off_t debug_target_offset = iterator->offset[iterator->depth];)
-	FLAC__bool ret;
-
-	if(iterator->type == FLAC__METADATA_TYPE_STREAMINFO) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT;
-		return false;
-	}
-
-	if(use_padding) {
-		FLAC__StreamMetadata *padding = FLAC__metadata_object_new(FLAC__METADATA_TYPE_PADDING);
-		if(0 == padding) {
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-			return false;
-		}
-		padding->length = iterator->length;
-		if(!FLAC__metadata_simple_iterator_set_block(iterator, padding, false)) {
-			FLAC__metadata_object_delete(padding);
-			return false;
-		}
-		FLAC__metadata_object_delete(padding);
-		if(!FLAC__metadata_simple_iterator_prev(iterator))
-			return false;
-		FLAC__ASSERT(iterator->offset[iterator->depth] + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH + (off_t)iterator->length == debug_target_offset);
-		FLAC__ASSERT(ftello(iterator->file) + (off_t)iterator->length == debug_target_offset);
-		return true;
-	}
-	else {
-		ret = rewrite_whole_file_(iterator, 0, /*append=*/false);
-		FLAC__ASSERT(iterator->offset[iterator->depth] + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH + (off_t)iterator->length == debug_target_offset);
-		FLAC__ASSERT(ftello(iterator->file) + (off_t)iterator->length == debug_target_offset);
-		return ret;
-	}
-}
-
-
-
-/****************************************************************************
- *
- * Level 2 implementation
- *
- ***************************************************************************/
-
-
-typedef struct FLAC__Metadata_Node {
-	FLAC__StreamMetadata *data;
-	struct FLAC__Metadata_Node *prev, *next;
-} FLAC__Metadata_Node;
-
-struct FLAC__Metadata_Chain {
-	char *filename; /* will be NULL if using callbacks */
-	FLAC__bool is_ogg;
-	FLAC__Metadata_Node *head;
-	FLAC__Metadata_Node *tail;
-	unsigned nodes;
-	FLAC__Metadata_ChainStatus status;
-	off_t first_offset, last_offset;
-	/*
-	 * This is the length of the chain initially read from the FLAC file.
-	 * it is used to compare against the current length to decide whether
-	 * or not the whole file has to be rewritten.
-	 */
-	off_t initial_length;
-	/* @@@ hacky, these are currently only needed by ogg reader */
-	FLAC__IOHandle handle;
-	FLAC__IOCallback_Read read_cb;
-};
-
-struct FLAC__Metadata_Iterator {
-	FLAC__Metadata_Chain *chain;
-	FLAC__Metadata_Node *current;
-};
-
-FLAC_API const char * const FLAC__Metadata_ChainStatusString[] = {
-	"FLAC__METADATA_CHAIN_STATUS_OK",
-	"FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT",
-	"FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE",
-	"FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE",
-	"FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE",
-	"FLAC__METADATA_CHAIN_STATUS_BAD_METADATA",
-	"FLAC__METADATA_CHAIN_STATUS_READ_ERROR",
-	"FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR",
-	"FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR",
-	"FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR",
-	"FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR",
-	"FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR",
-	"FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR",
-	"FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS",
-	"FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH",
-	"FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL"
-};
-
-
-static FLAC__Metadata_Node *node_new_(void)
-{
-	return (FLAC__Metadata_Node*)calloc(1, sizeof(FLAC__Metadata_Node));
-}
-
-static void node_delete_(FLAC__Metadata_Node *node)
-{
-	FLAC__ASSERT(0 != node);
-	if(0 != node->data)
-		FLAC__metadata_object_delete(node->data);
-	free(node);
-}
-
-static void chain_init_(FLAC__Metadata_Chain *chain)
-{
-	FLAC__ASSERT(0 != chain);
-
-	chain->filename = 0;
-	chain->is_ogg = false;
-	chain->head = chain->tail = 0;
-	chain->nodes = 0;
-	chain->status = FLAC__METADATA_CHAIN_STATUS_OK;
-	chain->initial_length = 0;
-	chain->read_cb = 0;
-}
-
-static void chain_clear_(FLAC__Metadata_Chain *chain)
-{
-	FLAC__Metadata_Node *node, *next;
-
-	FLAC__ASSERT(0 != chain);
-
-	for(node = chain->head; node; ) {
-		next = node->next;
-		node_delete_(node);
-		node = next;
-	}
-
-	if(0 != chain->filename)
-		free(chain->filename);
-
-	chain_init_(chain);
-}
-
-static void chain_append_node_(FLAC__Metadata_Chain *chain, FLAC__Metadata_Node *node)
-{
-	FLAC__ASSERT(0 != chain);
-	FLAC__ASSERT(0 != node);
-	FLAC__ASSERT(0 != node->data);
-
-	node->next = node->prev = 0;
-	node->data->is_last = true;
-	if(0 != chain->tail)
-		chain->tail->data->is_last = false;
-
-	if(0 == chain->head)
-		chain->head = node;
-	else {
-		FLAC__ASSERT(0 != chain->tail);
-		chain->tail->next = node;
-		node->prev = chain->tail;
-	}
-	chain->tail = node;
-	chain->nodes++;
-}
-
-static void chain_remove_node_(FLAC__Metadata_Chain *chain, FLAC__Metadata_Node *node)
-{
-	FLAC__ASSERT(0 != chain);
-	FLAC__ASSERT(0 != node);
-
-	if(node == chain->head)
-		chain->head = node->next;
-	else
-		node->prev->next = node->next;
-
-	if(node == chain->tail)
-		chain->tail = node->prev;
-	else
-		node->next->prev = node->prev;
-
-	if(0 != chain->tail)
-		chain->tail->data->is_last = true;
-
-	chain->nodes--;
-}
-
-static void chain_delete_node_(FLAC__Metadata_Chain *chain, FLAC__Metadata_Node *node)
-{
-	chain_remove_node_(chain, node);
-	node_delete_(node);
-}
-
-static off_t chain_calculate_length_(FLAC__Metadata_Chain *chain)
-{
-	const FLAC__Metadata_Node *node;
-	off_t length = 0;
-	for(node = chain->head; node; node = node->next)
-		length += (FLAC__STREAM_METADATA_HEADER_LENGTH + node->data->length);
-	return length;
-}
-
-static void iterator_insert_node_(FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Node *node)
-{
-	FLAC__ASSERT(0 != node);
-	FLAC__ASSERT(0 != node->data);
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->current);
-	FLAC__ASSERT(0 != iterator->chain);
-	FLAC__ASSERT(0 != iterator->chain->head);
-	FLAC__ASSERT(0 != iterator->chain->tail);
-
-	node->data->is_last = false;
-
-	node->prev = iterator->current->prev;
-	node->next = iterator->current;
-
-	if(0 == node->prev)
-		iterator->chain->head = node;
-	else
-		node->prev->next = node;
-
-	iterator->current->prev = node;
-
-	iterator->chain->nodes++;
-}
-
-static void iterator_insert_node_after_(FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Node *node)
-{
-	FLAC__ASSERT(0 != node);
-	FLAC__ASSERT(0 != node->data);
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->current);
-	FLAC__ASSERT(0 != iterator->chain);
-	FLAC__ASSERT(0 != iterator->chain->head);
-	FLAC__ASSERT(0 != iterator->chain->tail);
-
-	iterator->current->data->is_last = false;
-
-	node->prev = iterator->current;
-	node->next = iterator->current->next;
-
-	if(0 == node->next)
-		iterator->chain->tail = node;
-	else
-		node->next->prev = node;
-
-	node->prev->next = node;
-
-	iterator->chain->tail->data->is_last = true;
-
-	iterator->chain->nodes++;
-}
-
-/* return true iff node and node->next are both padding */
-static FLAC__bool chain_merge_adjacent_padding_(FLAC__Metadata_Chain *chain, FLAC__Metadata_Node *node)
-{
-	if(node->data->type == FLAC__METADATA_TYPE_PADDING && 0 != node->next && node->next->data->type == FLAC__METADATA_TYPE_PADDING) {
-		const unsigned growth = FLAC__STREAM_METADATA_HEADER_LENGTH + node->next->data->length;
-		node->data->length += growth;
-
-		chain_delete_node_(chain, node->next);
-		return true;
-	}
-	else
-		return false;
-}
-
-/* Returns the new length of the chain, or 0 if there was an error. */
-/* WATCHOUT: This can get called multiple times before a write, so
- * it should still work when this happens.
- */
-/* WATCHOUT: Make sure to also update the logic in
- * FLAC__metadata_chain_check_if_tempfile_needed() if the logic here changes.
- */
-static off_t chain_prepare_for_write_(FLAC__Metadata_Chain *chain, FLAC__bool use_padding)
-{
-	off_t current_length = chain_calculate_length_(chain);
-
-	if(use_padding) {
-		/* if the metadata shrank and the last block is padding, we just extend the last padding block */
-		if(current_length < chain->initial_length && chain->tail->data->type == FLAC__METADATA_TYPE_PADDING) {
-			const off_t delta = chain->initial_length - current_length;
-			chain->tail->data->length += delta;
-			current_length += delta;
-			FLAC__ASSERT(current_length == chain->initial_length);
-		}
-		/* if the metadata shrank more than 4 bytes then there's room to add another padding block */
-		else if(current_length + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH <= chain->initial_length) {
-			FLAC__StreamMetadata *padding;
-			FLAC__Metadata_Node *node;
-			if(0 == (padding = FLAC__metadata_object_new(FLAC__METADATA_TYPE_PADDING))) {
-				chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR;
-				return 0;
-			}
-			padding->length = chain->initial_length - (FLAC__STREAM_METADATA_HEADER_LENGTH + current_length);
-			if(0 == (node = node_new_())) {
-				FLAC__metadata_object_delete(padding);
-				chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR;
-				return 0;
-			}
-			node->data = padding;
-			chain_append_node_(chain, node);
-			current_length = chain_calculate_length_(chain);
-			FLAC__ASSERT(current_length == chain->initial_length);
-		}
-		/* if the metadata grew but the last block is padding, try cutting the padding to restore the original length so we don't have to rewrite the whole file */
-		else if(current_length > chain->initial_length) {
-			const off_t delta = current_length - chain->initial_length;
-			if(chain->tail->data->type == FLAC__METADATA_TYPE_PADDING) {
-				/* if the delta is exactly the size of the last padding block, remove the padding block */
-				if((off_t)chain->tail->data->length + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH == delta) {
-					chain_delete_node_(chain, chain->tail);
-					current_length = chain_calculate_length_(chain);
-					FLAC__ASSERT(current_length == chain->initial_length);
-				}
-				/* if there is at least 'delta' bytes of padding, trim the padding down */
-				else if((off_t)chain->tail->data->length >= delta) {
-					chain->tail->data->length -= delta;
-					current_length -= delta;
-					FLAC__ASSERT(current_length == chain->initial_length);
-				}
-			}
-		}
-	}
-
-	return current_length;
-}
-
-static FLAC__bool chain_read_cb_(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__IOCallback_Seek seek_cb, FLAC__IOCallback_Tell tell_cb)
-{
-	FLAC__Metadata_Node *node;
-
-	FLAC__ASSERT(0 != chain);
-
-	/* we assume we're already at the beginning of the file */
-
-	switch(seek_to_first_metadata_block_cb_(handle, read_cb, seek_cb)) {
-		case 0:
-			break;
-		case 1:
-			chain->status = FLAC__METADATA_CHAIN_STATUS_READ_ERROR;
-			return false;
-		case 2:
-			chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR;
-			return false;
-		case 3:
-			chain->status = FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE;
-			return false;
-		default:
-			FLAC__ASSERT(0);
-			return false;
-	}
-
-	{
-		FLAC__int64 pos = tell_cb(handle);
-		if(pos < 0) {
-			chain->status = FLAC__METADATA_CHAIN_STATUS_READ_ERROR;
-			return false;
-		}
-		chain->first_offset = (off_t)pos;
-	}
-
-	{
-		FLAC__bool is_last;
-		FLAC__MetadataType type;
-		unsigned length;
-
-		do {
-			node = node_new_();
-			if(0 == node) {
-				chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR;
-				return false;
-			}
-
-			if(!read_metadata_block_header_cb_(handle, read_cb, &is_last, &type, &length)) {
-				node_delete_(node);
-				chain->status = FLAC__METADATA_CHAIN_STATUS_READ_ERROR;
-				return false;
-			}
-
-			node->data = FLAC__metadata_object_new(type);
-			if(0 == node->data) {
-				node_delete_(node);
-				chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR;
-				return false;
-			}
-
-			node->data->is_last = is_last;
-			node->data->length = length;
-
-			chain->status = get_equivalent_status_(read_metadata_block_data_cb_(handle, read_cb, seek_cb, node->data));
-			if(chain->status != FLAC__METADATA_CHAIN_STATUS_OK) {
-				node_delete_(node);
-				return false;
-			}
-			chain_append_node_(chain, node);
-		} while(!is_last);
-	}
-
-	{
-		FLAC__int64 pos = tell_cb(handle);
-		if(pos < 0) {
-			chain->status = FLAC__METADATA_CHAIN_STATUS_READ_ERROR;
-			return false;
-		}
-		chain->last_offset = (off_t)pos;
-	}
-
-	chain->initial_length = chain_calculate_length_(chain);
-
-	return true;
-}
-
-static FLAC__StreamDecoderReadStatus chain_read_ogg_read_cb_(const FLAC__StreamDecoder *decoder, FLAC__byte buffer[], size_t *bytes, void *client_data)
-{
-	FLAC__Metadata_Chain *chain = (FLAC__Metadata_Chain*)client_data;
-	(void)decoder;
-	if(*bytes > 0 && chain->status == FLAC__METADATA_CHAIN_STATUS_OK) {
-		*bytes = chain->read_cb(buffer, sizeof(FLAC__byte), *bytes, chain->handle);
-		if(*bytes == 0)
-			return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
-		else
-			return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
-	}
-	else
-		return FLAC__STREAM_DECODER_READ_STATUS_ABORT;
-}
-
-static FLAC__StreamDecoderWriteStatus chain_read_ogg_write_cb_(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
-{
-	(void)decoder, (void)frame, (void)buffer, (void)client_data;
-	return FLAC__STREAM_DECODER_WRITE_STATUS_ABORT;
-}
-
-static void chain_read_ogg_metadata_cb_(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
-{
-	FLAC__Metadata_Chain *chain = (FLAC__Metadata_Chain*)client_data;
-	FLAC__Metadata_Node *node;
-
-	(void)decoder;
-
-	node = node_new_();
-	if(0 == node) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR;
-		return;
-	}
-
-	node->data = FLAC__metadata_object_clone(metadata);
-	if(0 == node->data) {
-		node_delete_(node);
-		chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR;
-		return;
-	}
-
-	chain_append_node_(chain, node);
-}
-
-static void chain_read_ogg_error_cb_(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
-{
-	FLAC__Metadata_Chain *chain = (FLAC__Metadata_Chain*)client_data;
-	(void)decoder, (void)status;
-	chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR; /*@@@ maybe needs better error code */
-}
-
-static FLAC__bool chain_read_ogg_cb_(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb)
-{
-	FLAC__StreamDecoder *decoder;
-
-	FLAC__ASSERT(0 != chain);
-
-	/* we assume we're already at the beginning of the file */
-
-	chain->handle = handle;
-	chain->read_cb = read_cb;
-	if(0 == (decoder = FLAC__stream_decoder_new())) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR;
-		return false;
-	}
-	FLAC__stream_decoder_set_metadata_respond_all(decoder);
-	if(FLAC__stream_decoder_init_ogg_stream(decoder, chain_read_ogg_read_cb_, /*seek_callback=*/0, /*tell_callback=*/0, /*length_callback=*/0, /*eof_callback=*/0, chain_read_ogg_write_cb_, chain_read_ogg_metadata_cb_, chain_read_ogg_error_cb_, chain) != FLAC__STREAM_DECODER_INIT_STATUS_OK) {
-		FLAC__stream_decoder_delete(decoder);
-		chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR; /*@@@ maybe needs better error code */
-		return false;
-	}
-
-	chain->first_offset = 0; /*@@@ wrong; will need to be set correctly to implement metadata writing for Ogg FLAC */
-
-	if(!FLAC__stream_decoder_process_until_end_of_metadata(decoder))
-		chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR; /*@@@ maybe needs better error code */
-	if(chain->status != FLAC__METADATA_CHAIN_STATUS_OK) {
-		FLAC__stream_decoder_delete(decoder);
-		return false;
-	}
-
-	FLAC__stream_decoder_delete(decoder);
-
-	chain->last_offset = 0; /*@@@ wrong; will need to be set correctly to implement metadata writing for Ogg FLAC */
-
-	chain->initial_length = chain_calculate_length_(chain);
-
-	return true;
-}
-
-static FLAC__bool chain_rewrite_metadata_in_place_cb_(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, FLAC__IOCallback_Seek seek_cb)
-{
-	FLAC__Metadata_Node *node;
-
-	FLAC__ASSERT(0 != chain);
-	FLAC__ASSERT(0 != chain->head);
-
-	if(0 != seek_cb(handle, chain->first_offset, SEEK_SET)) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR;
-		return false;
-	}
-
-	for(node = chain->head; node; node = node->next) {
-		if(!write_metadata_block_header_cb_(handle, write_cb, node->data)) {
-			chain->status = FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR;
-			return false;
-		}
-		if(!write_metadata_block_data_cb_(handle, write_cb, node->data)) {
-			chain->status = FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR;
-			return false;
-		}
-	}
-
-	/*FLAC__ASSERT(fflush(), ftello() == chain->last_offset);*/
-
-	chain->status = FLAC__METADATA_CHAIN_STATUS_OK;
-	return true;
-}
-
-static FLAC__bool chain_rewrite_metadata_in_place_(FLAC__Metadata_Chain *chain)
-{
-	FILE *file;
-	FLAC__bool ret;
-
-	FLAC__ASSERT(0 != chain->filename);
-
-	if(0 == (file = fopen(chain->filename, "r+b"))) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE;
-		return false;
-	}
-
-	/* chain_rewrite_metadata_in_place_cb_() sets chain->status for us */
-	ret = chain_rewrite_metadata_in_place_cb_(chain, (FLAC__IOHandle)file, (FLAC__IOCallback_Write)fwrite, fseek_wrapper_);
-
-	fclose(file);
-
-	return ret;
-}
-
-static FLAC__bool chain_rewrite_file_(FLAC__Metadata_Chain *chain, const char *tempfile_path_prefix)
-{
-	FILE *f, *tempfile;
-	char *tempfilename;
-	FLAC__Metadata_SimpleIteratorStatus status;
-	const FLAC__Metadata_Node *node;
-
-	FLAC__ASSERT(0 != chain);
-	FLAC__ASSERT(0 != chain->filename);
-	FLAC__ASSERT(0 != chain->head);
-
-	/* copy the file prefix (data up to first metadata block */
-	if(0 == (f = fopen(chain->filename, "rb"))) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE;
-		return false;
-	}
-	if(!open_tempfile_(chain->filename, tempfile_path_prefix, &tempfile, &tempfilename, &status)) {
-		chain->status = get_equivalent_status_(status);
-		cleanup_tempfile_(&tempfile, &tempfilename);
-		return false;
-	}
-	if(!copy_n_bytes_from_file_(f, tempfile, chain->first_offset, &status)) {
-		chain->status = get_equivalent_status_(status);
-		cleanup_tempfile_(&tempfile, &tempfilename);
-		return false;
-	}
-
-	/* write the metadata */
-	for(node = chain->head; node; node = node->next) {
-		if(!write_metadata_block_header_(tempfile, &status, node->data)) {
-			chain->status = get_equivalent_status_(status);
-			return false;
-		}
-		if(!write_metadata_block_data_(tempfile, &status, node->data)) {
-			chain->status = get_equivalent_status_(status);
-			return false;
-		}
-	}
-	/*FLAC__ASSERT(fflush(), ftello() == chain->last_offset);*/
-
-	/* copy the file postfix (everything after the metadata) */
-	if(0 != fseeko(f, chain->last_offset, SEEK_SET)) {
-		cleanup_tempfile_(&tempfile, &tempfilename);
-		chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR;
-		return false;
-	}
-	if(!copy_remaining_bytes_from_file_(f, tempfile, &status)) {
-		cleanup_tempfile_(&tempfile, &tempfilename);
-		chain->status = get_equivalent_status_(status);
-		return false;
-	}
-
-	/* move the tempfile on top of the original */
-	(void)fclose(f);
-	if(!transport_tempfile_(chain->filename, &tempfile, &tempfilename, &status))
-		return false;
-
-	return true;
-}
-
-/* assumes 'handle' is already at beginning of file */
-static FLAC__bool chain_rewrite_file_cb_(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__IOCallback_Seek seek_cb, FLAC__IOCallback_Eof eof_cb, FLAC__IOHandle temp_handle, FLAC__IOCallback_Write temp_write_cb)
-{
-	FLAC__Metadata_SimpleIteratorStatus status;
-	const FLAC__Metadata_Node *node;
-
-	FLAC__ASSERT(0 != chain);
-	FLAC__ASSERT(0 == chain->filename);
-	FLAC__ASSERT(0 != chain->head);
-
-	/* copy the file prefix (data up to first metadata block */
-	if(!copy_n_bytes_from_file_cb_(handle, read_cb, temp_handle, temp_write_cb, chain->first_offset, &status)) {
-		chain->status = get_equivalent_status_(status);
-		return false;
-	}
-
-	/* write the metadata */
-	for(node = chain->head; node; node = node->next) {
-		if(!write_metadata_block_header_cb_(temp_handle, temp_write_cb, node->data)) {
-			chain->status = FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR;
-			return false;
-		}
-		if(!write_metadata_block_data_cb_(temp_handle, temp_write_cb, node->data)) {
-			chain->status = FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR;
-			return false;
-		}
-	}
-	/*FLAC__ASSERT(fflush(), ftello() == chain->last_offset);*/
-
-	/* copy the file postfix (everything after the metadata) */
-	if(0 != seek_cb(handle, chain->last_offset, SEEK_SET)) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR;
-		return false;
-	}
-	if(!copy_remaining_bytes_from_file_cb_(handle, read_cb, eof_cb, temp_handle, temp_write_cb, &status)) {
-		chain->status = get_equivalent_status_(status);
-		return false;
-	}
-
-	return true;
-}
-
-FLAC_API FLAC__Metadata_Chain *FLAC__metadata_chain_new(void)
-{
-	FLAC__Metadata_Chain *chain = (FLAC__Metadata_Chain*)calloc(1, sizeof(FLAC__Metadata_Chain));
-
-	if(0 != chain)
-		chain_init_(chain);
-
-	return chain;
-}
-
-FLAC_API void FLAC__metadata_chain_delete(FLAC__Metadata_Chain *chain)
-{
-	FLAC__ASSERT(0 != chain);
-
-	chain_clear_(chain);
-
-	free(chain);
-}
-
-FLAC_API FLAC__Metadata_ChainStatus FLAC__metadata_chain_status(FLAC__Metadata_Chain *chain)
-{
-	FLAC__Metadata_ChainStatus status;
-
-	FLAC__ASSERT(0 != chain);
-
-	status = chain->status;
-	chain->status = FLAC__METADATA_CHAIN_STATUS_OK;
-	return status;
-}
-
-static FLAC__bool chain_read_(FLAC__Metadata_Chain *chain, const char *filename, FLAC__bool is_ogg)
-{
-	FILE *file;
-	FLAC__bool ret;
-
-	FLAC__ASSERT(0 != chain);
-	FLAC__ASSERT(0 != filename);
-
-	chain_clear_(chain);
-
-	if(0 == (chain->filename = strdup(filename))) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR;
-		return false;
-	}
-
-	chain->is_ogg = is_ogg;
-
-	if(0 == (file = fopen(filename, "rb"))) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE;
-		return false;
-	}
-
-	/* the function also sets chain->status for us */
-	ret = is_ogg?
-		chain_read_ogg_cb_(chain, file, (FLAC__IOCallback_Read)fread) :
-		chain_read_cb_(chain, file, (FLAC__IOCallback_Read)fread, fseek_wrapper_, ftell_wrapper_)
-	;
-
-	fclose(file);
-
-	return ret;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_chain_read(FLAC__Metadata_Chain *chain, const char *filename)
-{
-	return chain_read_(chain, filename, /*is_ogg=*/false);
-}
-
-/*@@@@add to tests*/
-FLAC_API FLAC__bool FLAC__metadata_chain_read_ogg(FLAC__Metadata_Chain *chain, const char *filename)
-{
-	return chain_read_(chain, filename, /*is_ogg=*/true);
-}
-
-static FLAC__bool chain_read_with_callbacks_(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, FLAC__bool is_ogg)
-{
-	FLAC__bool ret;
-
-	FLAC__ASSERT(0 != chain);
-
-	chain_clear_(chain);
-
-	if (0 == callbacks.read || 0 == callbacks.seek || 0 == callbacks.tell) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS;
-		return false;
-	}
-
-	chain->is_ogg = is_ogg;
-
-	/* rewind */
-	if(0 != callbacks.seek(handle, 0, SEEK_SET)) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR;
-		return false;
-	}
-
-	/* the function also sets chain->status for us */
-	ret = is_ogg?
-		chain_read_ogg_cb_(chain, handle, callbacks.read) :
-		chain_read_cb_(chain, handle, callbacks.read, callbacks.seek, callbacks.tell)
-	;
-
-	return ret;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_chain_read_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks)
-{
-	return chain_read_with_callbacks_(chain, handle, callbacks, /*is_ogg=*/false);
-}
-
-/*@@@@add to tests*/
-FLAC_API FLAC__bool FLAC__metadata_chain_read_ogg_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks)
-{
-	return chain_read_with_callbacks_(chain, handle, callbacks, /*is_ogg=*/true);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_chain_check_if_tempfile_needed(FLAC__Metadata_Chain *chain, FLAC__bool use_padding)
-{
-	/* This does all the same checks that are in chain_prepare_for_write_()
-	 * but doesn't actually alter the chain.  Make sure to update the logic
-	 * here if chain_prepare_for_write_() changes.
-	 */
-	const off_t current_length = chain_calculate_length_(chain);
-
-	FLAC__ASSERT(0 != chain);
-
-	if(use_padding) {
-		/* if the metadata shrank and the last block is padding, we just extend the last padding block */
-		if(current_length < chain->initial_length && chain->tail->data->type == FLAC__METADATA_TYPE_PADDING)
-			return false;
-		/* if the metadata shrank more than 4 bytes then there's room to add another padding block */
-		else if(current_length + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH <= chain->initial_length)
-			return false;
-		/* if the metadata grew but the last block is padding, try cutting the padding to restore the original length so we don't have to rewrite the whole file */
-		else if(current_length > chain->initial_length) {
-			const off_t delta = current_length - chain->initial_length;
-			if(chain->tail->data->type == FLAC__METADATA_TYPE_PADDING) {
-				/* if the delta is exactly the size of the last padding block, remove the padding block */
-				if((off_t)chain->tail->data->length + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH == delta)
-					return false;
-				/* if there is at least 'delta' bytes of padding, trim the padding down */
-				else if((off_t)chain->tail->data->length >= delta)
-					return false;
-			}
-		}
-	}
-
-	return (current_length != chain->initial_length);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_chain_write(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__bool preserve_file_stats)
-{
-	struct stat stats;
-	const char *tempfile_path_prefix = 0;
-	off_t current_length;
-
-	FLAC__ASSERT(0 != chain);
-
-	if (chain->is_ogg) { /* cannot write back to Ogg FLAC yet */
-		chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR;
-		return false;
-	}
-
-	if (0 == chain->filename) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH;
-		return false;
-	}
-
-	current_length = chain_prepare_for_write_(chain, use_padding);
-
-	/* a return value of 0 means there was an error; chain->status is already set */
-	if (0 == current_length)
-		return false;
-
-	if(preserve_file_stats)
-		get_file_stats_(chain->filename, &stats);
-
-	if(current_length == chain->initial_length) {
-		if(!chain_rewrite_metadata_in_place_(chain))
-			return false;
-	}
-	else {
-		if(!chain_rewrite_file_(chain, tempfile_path_prefix))
-			return false;
-
-		/* recompute lengths and offsets */
-		{
-			const FLAC__Metadata_Node *node;
-			chain->initial_length = current_length;
-			chain->last_offset = chain->first_offset;
-			for(node = chain->head; node; node = node->next)
-				chain->last_offset += (FLAC__STREAM_METADATA_HEADER_LENGTH + node->data->length);
-		}
-	}
-
-	if(preserve_file_stats)
-		set_file_stats_(chain->filename, &stats);
-
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_chain_write_with_callbacks(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks)
-{
-	off_t current_length;
-
-	FLAC__ASSERT(0 != chain);
-
-	if (chain->is_ogg) { /* cannot write back to Ogg FLAC yet */
-		chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR;
-		return false;
-	}
-
-	if (0 != chain->filename) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH;
-		return false;
-	}
-
-	if (0 == callbacks.write || 0 == callbacks.seek) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS;
-		return false;
-	}
-
-	if (FLAC__metadata_chain_check_if_tempfile_needed(chain, use_padding)) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL;
-		return false;
-	}
-
-	current_length = chain_prepare_for_write_(chain, use_padding);
-
-	/* a return value of 0 means there was an error; chain->status is already set */
-	if (0 == current_length)
-		return false;
-
-	FLAC__ASSERT(current_length == chain->initial_length);
-
-	return chain_rewrite_metadata_in_place_cb_(chain, handle, callbacks.write, callbacks.seek);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_chain_write_with_callbacks_and_tempfile(FLAC__Metadata_Chain *chain, FLAC__bool use_padding, FLAC__IOHandle handle, FLAC__IOCallbacks callbacks, FLAC__IOHandle temp_handle, FLAC__IOCallbacks temp_callbacks)
-{
-	off_t current_length;
-
-	FLAC__ASSERT(0 != chain);
-
-	if (chain->is_ogg) { /* cannot write back to Ogg FLAC yet */
-		chain->status = FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR;
-		return false;
-	}
-
-	if (0 != chain->filename) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_READ_WRITE_MISMATCH;
-		return false;
-	}
-
-	if (0 == callbacks.read || 0 == callbacks.seek || 0 == callbacks.eof) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS;
-		return false;
-	}
-	if (0 == temp_callbacks.write) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_INVALID_CALLBACKS;
-		return false;
-	}
-
-	if (!FLAC__metadata_chain_check_if_tempfile_needed(chain, use_padding)) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_WRONG_WRITE_CALL;
-		return false;
-	}
-
-	current_length = chain_prepare_for_write_(chain, use_padding);
-
-	/* a return value of 0 means there was an error; chain->status is already set */
-	if (0 == current_length)
-		return false;
-
-	FLAC__ASSERT(current_length != chain->initial_length);
-
-	/* rewind */
-	if(0 != callbacks.seek(handle, 0, SEEK_SET)) {
-		chain->status = FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR;
-		return false;
-	}
-
-	if(!chain_rewrite_file_cb_(chain, handle, callbacks.read, callbacks.seek, callbacks.eof, temp_handle, temp_callbacks.write))
-		return false;
-
-	/* recompute lengths and offsets */
-	{
-		const FLAC__Metadata_Node *node;
-		chain->initial_length = current_length;
-		chain->last_offset = chain->first_offset;
-		for(node = chain->head; node; node = node->next)
-			chain->last_offset += (FLAC__STREAM_METADATA_HEADER_LENGTH + node->data->length);
-	}
-
-	return true;
-}
-
-FLAC_API void FLAC__metadata_chain_merge_padding(FLAC__Metadata_Chain *chain)
-{
-	FLAC__Metadata_Node *node;
-
-	FLAC__ASSERT(0 != chain);
-
-	for(node = chain->head; node; ) {
-		if(!chain_merge_adjacent_padding_(chain, node))
-			node = node->next;
-	}
-}
-
-FLAC_API void FLAC__metadata_chain_sort_padding(FLAC__Metadata_Chain *chain)
-{
-	FLAC__Metadata_Node *node, *save;
-	unsigned i;
-
-	FLAC__ASSERT(0 != chain);
-
-	/*
-	 * Don't try and be too smart... this simple algo is good enough for
-	 * the small number of nodes that we deal with.
-	 */
-	for(i = 0, node = chain->head; i < chain->nodes; i++) {
-		if(node->data->type == FLAC__METADATA_TYPE_PADDING) {
-			save = node->next;
-			chain_remove_node_(chain, node);
-			chain_append_node_(chain, node);
-			node = save;
-		}
-		else {
-			node = node->next;
-		}
-	}
-
-	FLAC__metadata_chain_merge_padding(chain);
-}
-
-
-FLAC_API FLAC__Metadata_Iterator *FLAC__metadata_iterator_new(void)
-{
-	FLAC__Metadata_Iterator *iterator = (FLAC__Metadata_Iterator*)calloc(1, sizeof(FLAC__Metadata_Iterator));
-
-	/* calloc() implies:
-		iterator->current = 0;
-		iterator->chain = 0;
-	*/
-
-	return iterator;
-}
-
-FLAC_API void FLAC__metadata_iterator_delete(FLAC__Metadata_Iterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-
-	free(iterator);
-}
-
-FLAC_API void FLAC__metadata_iterator_init(FLAC__Metadata_Iterator *iterator, FLAC__Metadata_Chain *chain)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != chain);
-	FLAC__ASSERT(0 != chain->head);
-
-	iterator->chain = chain;
-	iterator->current = chain->head;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_iterator_next(FLAC__Metadata_Iterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-
-	if(0 == iterator->current || 0 == iterator->current->next)
-		return false;
-
-	iterator->current = iterator->current->next;
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_iterator_prev(FLAC__Metadata_Iterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-
-	if(0 == iterator->current || 0 == iterator->current->prev)
-		return false;
-
-	iterator->current = iterator->current->prev;
-	return true;
-}
-
-FLAC_API FLAC__MetadataType FLAC__metadata_iterator_get_block_type(const FLAC__Metadata_Iterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->current);
-	FLAC__ASSERT(0 != iterator->current->data);
-
-	return iterator->current->data->type;
-}
-
-FLAC_API FLAC__StreamMetadata *FLAC__metadata_iterator_get_block(FLAC__Metadata_Iterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->current);
-
-	return iterator->current->data;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_iterator_set_block(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != block);
-	return FLAC__metadata_iterator_delete_block(iterator, false) && FLAC__metadata_iterator_insert_block_after(iterator, block);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_iterator_delete_block(FLAC__Metadata_Iterator *iterator, FLAC__bool replace_with_padding)
-{
-	FLAC__Metadata_Node *save;
-
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->current);
-
-	if(0 == iterator->current->prev) {
-		FLAC__ASSERT(iterator->current->data->type == FLAC__METADATA_TYPE_STREAMINFO);
-		return false;
-	}
-
-	save = iterator->current->prev;
-
-	if(replace_with_padding) {
-		FLAC__metadata_object_delete_data(iterator->current->data);
-		iterator->current->data->type = FLAC__METADATA_TYPE_PADDING;
-	}
-	else {
-		chain_delete_node_(iterator->chain, iterator->current);
-	}
-
-	iterator->current = save;
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_before(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block)
-{
-	FLAC__Metadata_Node *node;
-
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->current);
-	FLAC__ASSERT(0 != block);
-
-	if(block->type == FLAC__METADATA_TYPE_STREAMINFO)
-		return false;
-
-	if(0 == iterator->current->prev) {
-		FLAC__ASSERT(iterator->current->data->type == FLAC__METADATA_TYPE_STREAMINFO);
-		return false;
-	}
-
-	if(0 == (node = node_new_()))
-		return false;
-
-	node->data = block;
-	iterator_insert_node_(iterator, node);
-	iterator->current = node;
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_iterator_insert_block_after(FLAC__Metadata_Iterator *iterator, FLAC__StreamMetadata *block)
-{
-	FLAC__Metadata_Node *node;
-
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->current);
-	FLAC__ASSERT(0 != block);
-
-	if(block->type == FLAC__METADATA_TYPE_STREAMINFO)
-		return false;
-
-	if(0 == (node = node_new_()))
-		return false;
-
-	node->data = block;
-	iterator_insert_node_after_(iterator, node);
-	iterator->current = node;
-	return true;
-}
-
-
-/****************************************************************************
- *
- * Local function definitions
- *
- ***************************************************************************/
-
-void pack_uint32_(FLAC__uint32 val, FLAC__byte *b, unsigned bytes)
-{
-	unsigned i;
-
-	b += bytes;
-
-	for(i = 0; i < bytes; i++) {
-		*(--b) = (FLAC__byte)(val & 0xff);
-		val >>= 8;
-	}
-}
-
-void pack_uint32_little_endian_(FLAC__uint32 val, FLAC__byte *b, unsigned bytes)
-{
-	unsigned i;
-
-	for(i = 0; i < bytes; i++) {
-		*(b++) = (FLAC__byte)(val & 0xff);
-		val >>= 8;
-	}
-}
-
-void pack_uint64_(FLAC__uint64 val, FLAC__byte *b, unsigned bytes)
-{
-	unsigned i;
-
-	b += bytes;
-
-	for(i = 0; i < bytes; i++) {
-		*(--b) = (FLAC__byte)(val & 0xff);
-		val >>= 8;
-	}
-}
-
-FLAC__uint32 unpack_uint32_(FLAC__byte *b, unsigned bytes)
-{
-	FLAC__uint32 ret = 0;
-	unsigned i;
-
-	for(i = 0; i < bytes; i++)
-		ret = (ret << 8) | (FLAC__uint32)(*b++);
-
-	return ret;
-}
-
-FLAC__uint32 unpack_uint32_little_endian_(FLAC__byte *b, unsigned bytes)
-{
-	FLAC__uint32 ret = 0;
-	unsigned i;
-
-	b += bytes;
-
-	for(i = 0; i < bytes; i++)
-		ret = (ret << 8) | (FLAC__uint32)(*--b);
-
-	return ret;
-}
-
-FLAC__uint64 unpack_uint64_(FLAC__byte *b, unsigned bytes)
-{
-	FLAC__uint64 ret = 0;
-	unsigned i;
-
-	for(i = 0; i < bytes; i++)
-		ret = (ret << 8) | (FLAC__uint64)(*b++);
-
-	return ret;
-}
-
-FLAC__bool read_metadata_block_header_(FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-
-	if(!read_metadata_block_header_cb_((FLAC__IOHandle)iterator->file, (FLAC__IOCallback_Read)fread, &iterator->is_last, &iterator->type, &iterator->length)) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-		return false;
-	}
-
-	return true;
-}
-
-FLAC__bool read_metadata_block_data_(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block)
-{
-	FLAC__ASSERT(0 != iterator);
-	FLAC__ASSERT(0 != iterator->file);
-
-	iterator->status = read_metadata_block_data_cb_((FLAC__IOHandle)iterator->file, (FLAC__IOCallback_Read)fread, fseek_wrapper_, block);
-
-	return (iterator->status == FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK);
-}
-
-FLAC__bool read_metadata_block_header_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__bool *is_last, FLAC__MetadataType *type, unsigned *length)
-{
-	FLAC__byte raw_header[FLAC__STREAM_METADATA_HEADER_LENGTH];
-
-	if(read_cb(raw_header, 1, FLAC__STREAM_METADATA_HEADER_LENGTH, handle) != FLAC__STREAM_METADATA_HEADER_LENGTH)
-		return false;
-
-	*is_last = raw_header[0] & 0x80? true : false;
-	*type = (FLAC__MetadataType)(raw_header[0] & 0x7f);
-	*length = unpack_uint32_(raw_header + 1, 3);
-
-	/* Note that we don't check:
-	 *    if(iterator->type >= FLAC__METADATA_TYPE_UNDEFINED)
-	 * we just will read in an opaque block
-	 */
-
-	return true;
-}
-
-FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__IOCallback_Seek seek_cb, FLAC__StreamMetadata *block)
-{
-	switch(block->type) {
-		case FLAC__METADATA_TYPE_STREAMINFO:
-			return read_metadata_block_data_streaminfo_cb_(handle, read_cb, &block->data.stream_info);
-		case FLAC__METADATA_TYPE_PADDING:
-			return read_metadata_block_data_padding_cb_(handle, seek_cb, &block->data.padding, block->length);
-		case FLAC__METADATA_TYPE_APPLICATION:
-			return read_metadata_block_data_application_cb_(handle, read_cb, &block->data.application, block->length);
-		case FLAC__METADATA_TYPE_SEEKTABLE:
-			return read_metadata_block_data_seektable_cb_(handle, read_cb, &block->data.seek_table, block->length);
-		case FLAC__METADATA_TYPE_VORBIS_COMMENT:
-			return read_metadata_block_data_vorbis_comment_cb_(handle, read_cb, &block->data.vorbis_comment);
-		case FLAC__METADATA_TYPE_CUESHEET:
-			return read_metadata_block_data_cuesheet_cb_(handle, read_cb, &block->data.cue_sheet);
-		case FLAC__METADATA_TYPE_PICTURE:
-			return read_metadata_block_data_picture_cb_(handle, read_cb, &block->data.picture);
-		default:
-			return read_metadata_block_data_unknown_cb_(handle, read_cb, &block->data.unknown, block->length);
-	}
-}
-
-FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_streaminfo_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_StreamInfo *block)
-{
-	FLAC__byte buffer[FLAC__STREAM_METADATA_STREAMINFO_LENGTH], *b;
-
-	if(read_cb(buffer, 1, FLAC__STREAM_METADATA_STREAMINFO_LENGTH, handle) != FLAC__STREAM_METADATA_STREAMINFO_LENGTH)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-
-	b = buffer;
-
-	/* we are using hardcoded numbers for simplicity but we should
-	 * probably eventually write a bit-level unpacker and use the
-	 * _STREAMINFO_ constants.
-	 */
-	block->min_blocksize = unpack_uint32_(b, 2); b += 2;
-	block->max_blocksize = unpack_uint32_(b, 2); b += 2;
-	block->min_framesize = unpack_uint32_(b, 3); b += 3;
-	block->max_framesize = unpack_uint32_(b, 3); b += 3;
-	block->sample_rate = (unpack_uint32_(b, 2) << 4) | ((unsigned)(b[2] & 0xf0) >> 4);
-	block->channels = (unsigned)((b[2] & 0x0e) >> 1) + 1;
-	block->bits_per_sample = ((((unsigned)(b[2] & 0x01)) << 4) | (((unsigned)(b[3] & 0xf0)) >> 4)) + 1;
-	block->total_samples = (((FLAC__uint64)(b[3] & 0x0f)) << 32) | unpack_uint64_(b+4, 4);
-	memcpy(block->md5sum, b+8, 16);
-
-	return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-}
-
-FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_padding_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Seek seek_cb, FLAC__StreamMetadata_Padding *block, unsigned block_length)
-{
-	(void)block; /* nothing to do; we don't care about reading the padding bytes */
-
-	if(0 != seek_cb(handle, block_length, SEEK_CUR))
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-
-	return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-}
-
-FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_application_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_Application *block, unsigned block_length)
-{
-	const unsigned id_bytes = FLAC__STREAM_METADATA_APPLICATION_ID_LEN / 8;
-
-	if(read_cb(block->id, 1, id_bytes, handle) != id_bytes)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-
-	if(block_length < id_bytes)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-
-	block_length -= id_bytes;
-
-	if(block_length == 0) {
-		block->data = 0;
-	}
-	else {
-		if(0 == (block->data = (FLAC__byte*)malloc(block_length)))
-			return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-
-		if(read_cb(block->data, 1, block_length, handle) != block_length)
-			return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	}
-
-	return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-}
-
-FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_seektable_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_SeekTable *block, unsigned block_length)
-{
-	unsigned i;
-	FLAC__byte buffer[FLAC__STREAM_METADATA_SEEKPOINT_LENGTH];
-
-	FLAC__ASSERT(block_length % FLAC__STREAM_METADATA_SEEKPOINT_LENGTH == 0);
-
-	block->num_points = block_length / FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
-
-	if(block->num_points == 0)
-		block->points = 0;
-	else if(0 == (block->points = (FLAC__StreamMetadata_SeekPoint*)safe_malloc_mul_2op_(block->num_points, /*times*/sizeof(FLAC__StreamMetadata_SeekPoint))))
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-
-	for(i = 0; i < block->num_points; i++) {
-		if(read_cb(buffer, 1, FLAC__STREAM_METADATA_SEEKPOINT_LENGTH, handle) != FLAC__STREAM_METADATA_SEEKPOINT_LENGTH)
-			return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-		/* some MAGIC NUMBERs here */
-		block->points[i].sample_number = unpack_uint64_(buffer, 8);
-		block->points[i].stream_offset = unpack_uint64_(buffer+8, 8);
-		block->points[i].frame_samples = unpack_uint32_(buffer+16, 2);
-	}
-
-	return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-}
-
-FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_vorbis_comment_entry_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_VorbisComment_Entry *entry)
-{
-	const unsigned entry_length_len = FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN / 8;
-	FLAC__byte buffer[4]; /* magic number is asserted below */
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN / 8 == sizeof(buffer));
-
-	if(read_cb(buffer, 1, entry_length_len, handle) != entry_length_len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	entry->length = unpack_uint32_little_endian_(buffer, entry_length_len);
-
-	if(0 != entry->entry)
-		free(entry->entry);
-
-	if(entry->length == 0) {
-		entry->entry = 0;
-	}
-	else {
-		if(0 == (entry->entry = (FLAC__byte*)safe_malloc_add_2op_(entry->length, /*+*/1)))
-			return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-
-		if(read_cb(entry->entry, 1, entry->length, handle) != entry->length)
-			return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-
-		entry->entry[entry->length] = '\0';
-	}
-
-	return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-}
-
-FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_vorbis_comment_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_VorbisComment *block)
-{
-	unsigned i;
-	FLAC__Metadata_SimpleIteratorStatus status;
-	const unsigned num_comments_len = FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN / 8;
-	FLAC__byte buffer[4]; /* magic number is asserted below */
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN / 8 == sizeof(buffer));
-
-	if(FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK != (status = read_metadata_block_data_vorbis_comment_entry_cb_(handle, read_cb, &(block->vendor_string))))
-		return status;
-
-	if(read_cb(buffer, 1, num_comments_len, handle) != num_comments_len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	block->num_comments = unpack_uint32_little_endian_(buffer, num_comments_len);
-
-	if(block->num_comments == 0) {
-		block->comments = 0;
-	}
-	else if(0 == (block->comments = (FLAC__StreamMetadata_VorbisComment_Entry*)calloc(block->num_comments, sizeof(FLAC__StreamMetadata_VorbisComment_Entry))))
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-
-	for(i = 0; i < block->num_comments; i++) {
-		if(FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK != (status = read_metadata_block_data_vorbis_comment_entry_cb_(handle, read_cb, block->comments + i)))
-			return status;
-	}
-
-	return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-}
-
-FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_cuesheet_track_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_CueSheet_Track *track)
-{
-	unsigned i, len;
-	FLAC__byte buffer[32]; /* asserted below that this is big enough */
-
-	FLAC__ASSERT(sizeof(buffer) >= sizeof(FLAC__uint64));
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= (FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN) / 8);
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	track->offset = unpack_uint64_(buffer, len);
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	track->number = (FLAC__byte)unpack_uint32_(buffer, len);
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN / 8;
-	if(read_cb(track->isrc, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-
-	FLAC__ASSERT((FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN) % 8 == 0);
-	len = (FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN) / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN == 1);
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN == 1);
-	track->type = buffer[0] >> 7;
-	track->pre_emphasis = (buffer[0] >> 6) & 1;
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	track->num_indices = (FLAC__byte)unpack_uint32_(buffer, len);
-
-	if(track->num_indices == 0) {
-		track->indices = 0;
-	}
-	else if(0 == (track->indices = (FLAC__StreamMetadata_CueSheet_Index*)calloc(track->num_indices, sizeof(FLAC__StreamMetadata_CueSheet_Index))))
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-
-	for(i = 0; i < track->num_indices; i++) {
-		FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN % 8 == 0);
-		len = FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN / 8;
-		if(read_cb(buffer, 1, len, handle) != len)
-			return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-		track->indices[i].offset = unpack_uint64_(buffer, len);
-
-		FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN % 8 == 0);
-		len = FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN / 8;
-		if(read_cb(buffer, 1, len, handle) != len)
-			return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-		track->indices[i].number = (FLAC__byte)unpack_uint32_(buffer, len);
-
-		FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN % 8 == 0);
-		len = FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN / 8;
-		if(read_cb(buffer, 1, len, handle) != len)
-			return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	}
-
-	return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-}
-
-FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_cuesheet_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_CueSheet *block)
-{
-	unsigned i, len;
-	FLAC__Metadata_SimpleIteratorStatus status;
-	FLAC__byte buffer[1024]; /* MSVC needs a constant expression so we put a magic number and assert */
-
-	FLAC__ASSERT((FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN + FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN)/8 <= sizeof(buffer));
-	FLAC__ASSERT(sizeof(FLAC__uint64) <= sizeof(buffer));
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN / 8;
-	if(read_cb(block->media_catalog_number, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	block->lead_in = unpack_uint64_(buffer, len);
-
-	FLAC__ASSERT((FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN + FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN) % 8 == 0);
-	len = (FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN + FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN) / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	block->is_cd = buffer[0]&0x80? true : false;
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	block->num_tracks = unpack_uint32_(buffer, len);
-
-	if(block->num_tracks == 0) {
-		block->tracks = 0;
-	}
-	else if(0 == (block->tracks = (FLAC__StreamMetadata_CueSheet_Track*)calloc(block->num_tracks, sizeof(FLAC__StreamMetadata_CueSheet_Track))))
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-
-	for(i = 0; i < block->num_tracks; i++) {
-		if(FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK != (status = read_metadata_block_data_cuesheet_track_cb_(handle, read_cb, block->tracks + i)))
-			return status;
-	}
-
-	return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-}
-
-static FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_picture_cstring_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__byte **data, FLAC__uint32 *length, FLAC__uint32 length_len)
-{
-	FLAC__byte buffer[sizeof(FLAC__uint32)];
-
-	FLAC__ASSERT(0 != data);
-	FLAC__ASSERT(length_len%8 == 0);
-
-	length_len /= 8; /* convert to bytes */
-
-	FLAC__ASSERT(sizeof(buffer) >= length_len);
-
-	if(read_cb(buffer, 1, length_len, handle) != length_len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	*length = unpack_uint32_(buffer, length_len);
-
-	if(0 != *data)
-		free(*data);
-
-	if(0 == (*data = (FLAC__byte*)safe_malloc_add_2op_(*length, /*+*/1)))
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-
-	if(*length > 0) {
-		if(read_cb(*data, 1, *length, handle) != *length)
-			return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	}
-
-	(*data)[*length] = '\0';
-
-	return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-}
-
-FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_picture_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_Picture *block)
-{
-	FLAC__Metadata_SimpleIteratorStatus status;
-	FLAC__byte buffer[4]; /* asserted below that this is big enough */
-	FLAC__uint32 len;
-
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_TYPE_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_COLORS_LEN/8);
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_PICTURE_TYPE_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_PICTURE_TYPE_LEN / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	block->type = (FLAC__StreamMetadata_Picture_Type)unpack_uint32_(buffer, len);
-
-	if((status = read_metadata_block_data_picture_cstring_cb_(handle, read_cb, (FLAC__byte**)(&(block->mime_type)), &len, FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN)) != FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK)
-		return status;
-
-	if((status = read_metadata_block_data_picture_cstring_cb_(handle, read_cb, &(block->description), &len, FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN)) != FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK)
-		return status;
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	block->width = unpack_uint32_(buffer, len);
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	block->height = unpack_uint32_(buffer, len);
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	block->depth = unpack_uint32_(buffer, len);
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_PICTURE_COLORS_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_PICTURE_COLORS_LEN / 8;
-	if(read_cb(buffer, 1, len, handle) != len)
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	block->colors = unpack_uint32_(buffer, len);
-
-	/* for convenience we use read_metadata_block_data_picture_cstring_cb_() even though it adds an extra terminating NUL we don't use */
-	if((status = read_metadata_block_data_picture_cstring_cb_(handle, read_cb, &(block->data), &(block->data_length), FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN)) != FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK)
-		return status;
-
-	return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-}
-
-FLAC__Metadata_SimpleIteratorStatus read_metadata_block_data_unknown_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__StreamMetadata_Unknown *block, unsigned block_length)
-{
-	if(block_length == 0) {
-		block->data = 0;
-	}
-	else {
-		if(0 == (block->data = (FLAC__byte*)malloc(block_length)))
-			return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-
-		if(read_cb(block->data, 1, block_length, handle) != block_length)
-			return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-	}
-
-	return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-}
-
-FLAC__bool write_metadata_block_header_(FILE *file, FLAC__Metadata_SimpleIteratorStatus *status, const FLAC__StreamMetadata *block)
-{
-	FLAC__ASSERT(0 != file);
-	FLAC__ASSERT(0 != status);
-
-	if(!write_metadata_block_header_cb_((FLAC__IOHandle)file, (FLAC__IOCallback_Write)fwrite, block)) {
-		*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR;
-		return false;
-	}
-
-	return true;
-}
-
-FLAC__bool write_metadata_block_data_(FILE *file, FLAC__Metadata_SimpleIteratorStatus *status, const FLAC__StreamMetadata *block)
-{
-	FLAC__ASSERT(0 != file);
-	FLAC__ASSERT(0 != status);
-
-	if (write_metadata_block_data_cb_((FLAC__IOHandle)file, (FLAC__IOCallback_Write)fwrite, block)) {
-		*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK;
-		return true;
-	}
-	else {
-		*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR;
-		return false;
-	}
-}
-
-FLAC__bool write_metadata_block_header_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata *block)
-{
-	FLAC__byte buffer[FLAC__STREAM_METADATA_HEADER_LENGTH];
-
-	FLAC__ASSERT(block->length < (1u << FLAC__STREAM_METADATA_LENGTH_LEN));
-
-	buffer[0] = (block->is_last? 0x80 : 0) | (FLAC__byte)block->type;
-	pack_uint32_(block->length, buffer + 1, 3);
-
-	if(write_cb(buffer, 1, FLAC__STREAM_METADATA_HEADER_LENGTH, handle) != FLAC__STREAM_METADATA_HEADER_LENGTH)
-		return false;
-
-	return true;
-}
-
-FLAC__bool write_metadata_block_data_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata *block)
-{
-	FLAC__ASSERT(0 != block);
-
-	switch(block->type) {
-		case FLAC__METADATA_TYPE_STREAMINFO:
-			return write_metadata_block_data_streaminfo_cb_(handle, write_cb, &block->data.stream_info);
-		case FLAC__METADATA_TYPE_PADDING:
-			return write_metadata_block_data_padding_cb_(handle, write_cb, &block->data.padding, block->length);
-		case FLAC__METADATA_TYPE_APPLICATION:
-			return write_metadata_block_data_application_cb_(handle, write_cb, &block->data.application, block->length);
-		case FLAC__METADATA_TYPE_SEEKTABLE:
-			return write_metadata_block_data_seektable_cb_(handle, write_cb, &block->data.seek_table);
-		case FLAC__METADATA_TYPE_VORBIS_COMMENT:
-			return write_metadata_block_data_vorbis_comment_cb_(handle, write_cb, &block->data.vorbis_comment);
-		case FLAC__METADATA_TYPE_CUESHEET:
-			return write_metadata_block_data_cuesheet_cb_(handle, write_cb, &block->data.cue_sheet);
-		case FLAC__METADATA_TYPE_PICTURE:
-			return write_metadata_block_data_picture_cb_(handle, write_cb, &block->data.picture);
-		default:
-			return write_metadata_block_data_unknown_cb_(handle, write_cb, &block->data.unknown, block->length);
-	}
-}
-
-FLAC__bool write_metadata_block_data_streaminfo_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_StreamInfo *block)
-{
-	FLAC__byte buffer[FLAC__STREAM_METADATA_STREAMINFO_LENGTH];
-	const unsigned channels1 = block->channels - 1;
-	const unsigned bps1 = block->bits_per_sample - 1;
-
-	/* we are using hardcoded numbers for simplicity but we should
-	 * probably eventually write a bit-level packer and use the
-	 * _STREAMINFO_ constants.
-	 */
-	pack_uint32_(block->min_blocksize, buffer, 2);
-	pack_uint32_(block->max_blocksize, buffer+2, 2);
-	pack_uint32_(block->min_framesize, buffer+4, 3);
-	pack_uint32_(block->max_framesize, buffer+7, 3);
-	buffer[10] = (block->sample_rate >> 12) & 0xff;
-	buffer[11] = (block->sample_rate >> 4) & 0xff;
-	buffer[12] = ((block->sample_rate & 0x0f) << 4) | (channels1 << 1) | (bps1 >> 4);
-	buffer[13] = (FLAC__byte)(((bps1 & 0x0f) << 4) | ((block->total_samples >> 32) & 0x0f));
-	pack_uint32_((FLAC__uint32)block->total_samples, buffer+14, 4);
-	memcpy(buffer+18, block->md5sum, 16);
-
-	if(write_cb(buffer, 1, FLAC__STREAM_METADATA_STREAMINFO_LENGTH, handle) != FLAC__STREAM_METADATA_STREAMINFO_LENGTH)
-		return false;
-
-	return true;
-}
-
-FLAC__bool write_metadata_block_data_padding_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_Padding *block, unsigned block_length)
-{
-	unsigned i, n = block_length;
-	FLAC__byte buffer[1024];
-
-	(void)block;
-
-	memset(buffer, 0, 1024);
-
-	for(i = 0; i < n/1024; i++)
-		if(write_cb(buffer, 1, 1024, handle) != 1024)
-			return false;
-
-	n %= 1024;
-
-	if(write_cb(buffer, 1, n, handle) != n)
-		return false;
-
-	return true;
-}
-
-FLAC__bool write_metadata_block_data_application_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_Application *block, unsigned block_length)
-{
-	const unsigned id_bytes = FLAC__STREAM_METADATA_APPLICATION_ID_LEN / 8;
-
-	if(write_cb(block->id, 1, id_bytes, handle) != id_bytes)
-		return false;
-
-	block_length -= id_bytes;
-
-	if(write_cb(block->data, 1, block_length, handle) != block_length)
-		return false;
-
-	return true;
-}
-
-FLAC__bool write_metadata_block_data_seektable_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_SeekTable *block)
-{
-	unsigned i;
-	FLAC__byte buffer[FLAC__STREAM_METADATA_SEEKPOINT_LENGTH];
-
-	for(i = 0; i < block->num_points; i++) {
-		/* some MAGIC NUMBERs here */
-		pack_uint64_(block->points[i].sample_number, buffer, 8);
-		pack_uint64_(block->points[i].stream_offset, buffer+8, 8);
-		pack_uint32_(block->points[i].frame_samples, buffer+16, 2);
-		if(write_cb(buffer, 1, FLAC__STREAM_METADATA_SEEKPOINT_LENGTH, handle) != FLAC__STREAM_METADATA_SEEKPOINT_LENGTH)
-			return false;
-	}
-
-	return true;
-}
-
-FLAC__bool write_metadata_block_data_vorbis_comment_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_VorbisComment *block)
-{
-	unsigned i;
-	const unsigned entry_length_len = FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN / 8;
-	const unsigned num_comments_len = FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN / 8;
-	FLAC__byte buffer[4]; /* magic number is asserted below */
-
-	FLAC__ASSERT(max(FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN, FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN) / 8 == sizeof(buffer));
-
-	pack_uint32_little_endian_(block->vendor_string.length, buffer, entry_length_len);
-	if(write_cb(buffer, 1, entry_length_len, handle) != entry_length_len)
-		return false;
-	if(write_cb(block->vendor_string.entry, 1, block->vendor_string.length, handle) != block->vendor_string.length)
-		return false;
-
-	pack_uint32_little_endian_(block->num_comments, buffer, num_comments_len);
-	if(write_cb(buffer, 1, num_comments_len, handle) != num_comments_len)
-		return false;
-
-	for(i = 0; i < block->num_comments; i++) {
-		pack_uint32_little_endian_(block->comments[i].length, buffer, entry_length_len);
-		if(write_cb(buffer, 1, entry_length_len, handle) != entry_length_len)
-			return false;
-		if(write_cb(block->comments[i].entry, 1, block->comments[i].length, handle) != block->comments[i].length)
-			return false;
-	}
-
-	return true;
-}
-
-FLAC__bool write_metadata_block_data_cuesheet_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_CueSheet *block)
-{
-	unsigned i, j, len;
-	FLAC__byte buffer[1024]; /* asserted below that this is big enough */
-
-	FLAC__ASSERT(sizeof(buffer) >= sizeof(FLAC__uint64));
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= (FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN + FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN)/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN/8);
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN / 8;
-	if(write_cb(block->media_catalog_number, 1, len, handle) != len)
-		return false;
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN / 8;
-	pack_uint64_(block->lead_in, buffer, len);
-	if(write_cb(buffer, 1, len, handle) != len)
-		return false;
-
-	FLAC__ASSERT((FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN + FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN) % 8 == 0);
-	len = (FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN + FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN) / 8;
-	memset(buffer, 0, len);
-	if(block->is_cd)
-		buffer[0] |= 0x80;
-	if(write_cb(buffer, 1, len, handle) != len)
-		return false;
-
-	FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN % 8 == 0);
-	len = FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN / 8;
-	pack_uint32_(block->num_tracks, buffer, len);
-	if(write_cb(buffer, 1, len, handle) != len)
-		return false;
-
-	for(i = 0; i < block->num_tracks; i++) {
-		FLAC__StreamMetadata_CueSheet_Track *track = block->tracks + i;
-
-		FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN % 8 == 0);
-		len = FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN / 8;
-		pack_uint64_(track->offset, buffer, len);
-		if(write_cb(buffer, 1, len, handle) != len)
-			return false;
-
-		FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN % 8 == 0);
-		len = FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN / 8;
-		pack_uint32_(track->number, buffer, len);
-		if(write_cb(buffer, 1, len, handle) != len)
-			return false;
-
-		FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN % 8 == 0);
-		len = FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN / 8;
-		if(write_cb(track->isrc, 1, len, handle) != len)
-			return false;
-
-		FLAC__ASSERT((FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN) % 8 == 0);
-		len = (FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN + FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN) / 8;
-		memset(buffer, 0, len);
-		buffer[0] = (track->type << 7) | (track->pre_emphasis << 6);
-		if(write_cb(buffer, 1, len, handle) != len)
-			return false;
-
-		FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN % 8 == 0);
-		len = FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN / 8;
-		pack_uint32_(track->num_indices, buffer, len);
-		if(write_cb(buffer, 1, len, handle) != len)
-			return false;
-
-		for(j = 0; j < track->num_indices; j++) {
-			FLAC__StreamMetadata_CueSheet_Index *index = track->indices + j;
-
-			FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN % 8 == 0);
-			len = FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN / 8;
-			pack_uint64_(index->offset, buffer, len);
-			if(write_cb(buffer, 1, len, handle) != len)
-				return false;
-
-			FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN % 8 == 0);
-			len = FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN / 8;
-			pack_uint32_(index->number, buffer, len);
-			if(write_cb(buffer, 1, len, handle) != len)
-				return false;
-
-			FLAC__ASSERT(FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN % 8 == 0);
-			len = FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN / 8;
-			memset(buffer, 0, len);
-			if(write_cb(buffer, 1, len, handle) != len)
-				return false;
-		}
-	}
-
-	return true;
-}
-
-FLAC__bool write_metadata_block_data_picture_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_Picture *block)
-{
-	unsigned len;
-	size_t slen;
-	FLAC__byte buffer[4]; /* magic number is asserted below */
-
-	FLAC__ASSERT(0 == FLAC__STREAM_METADATA_PICTURE_TYPE_LEN%8);
-	FLAC__ASSERT(0 == FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN%8);
-	FLAC__ASSERT(0 == FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN%8);
-	FLAC__ASSERT(0 == FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN%8);
-	FLAC__ASSERT(0 == FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN%8);
-	FLAC__ASSERT(0 == FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN%8);
-	FLAC__ASSERT(0 == FLAC__STREAM_METADATA_PICTURE_COLORS_LEN%8);
-	FLAC__ASSERT(0 == FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN%8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_TYPE_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_COLORS_LEN/8);
-	FLAC__ASSERT(sizeof(buffer) >= FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN/8);
-
-	len = FLAC__STREAM_METADATA_PICTURE_TYPE_LEN/8;
-	pack_uint32_(block->type, buffer, len);
-	if(write_cb(buffer, 1, len, handle) != len)
-		return false;
-
-	len = FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN/8;
-	slen = strlen(block->mime_type);
-	pack_uint32_(slen, buffer, len);
-	if(write_cb(buffer, 1, len, handle) != len)
-		return false;
-	if(write_cb(block->mime_type, 1, slen, handle) != slen)
-		return false;
-
-	len = FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN/8;
-	slen = strlen((const char *)block->description);
-	pack_uint32_(slen, buffer, len);
-	if(write_cb(buffer, 1, len, handle) != len)
-		return false;
-	if(write_cb(block->description, 1, slen, handle) != slen)
-		return false;
-
-	len = FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN/8;
-	pack_uint32_(block->width, buffer, len);
-	if(write_cb(buffer, 1, len, handle) != len)
-		return false;
-
-	len = FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN/8;
-	pack_uint32_(block->height, buffer, len);
-	if(write_cb(buffer, 1, len, handle) != len)
-		return false;
-
-	len = FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN/8;
-	pack_uint32_(block->depth, buffer, len);
-	if(write_cb(buffer, 1, len, handle) != len)
-		return false;
-
-	len = FLAC__STREAM_METADATA_PICTURE_COLORS_LEN/8;
-	pack_uint32_(block->colors, buffer, len);
-	if(write_cb(buffer, 1, len, handle) != len)
-		return false;
-
-	len = FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN/8;
-	pack_uint32_(block->data_length, buffer, len);
-	if(write_cb(buffer, 1, len, handle) != len)
-		return false;
-	if(write_cb(block->data, 1, block->data_length, handle) != block->data_length)
-		return false;
-
-	return true;
-}
-
-FLAC__bool write_metadata_block_data_unknown_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Write write_cb, const FLAC__StreamMetadata_Unknown *block, unsigned block_length)
-{
-	if(write_cb(block->data, 1, block_length, handle) != block_length)
-		return false;
-
-	return true;
-}
-
-FLAC__bool write_metadata_block_stationary_(FLAC__Metadata_SimpleIterator *iterator, const FLAC__StreamMetadata *block)
-{
-	if(0 != fseeko(iterator->file, iterator->offset[iterator->depth], SEEK_SET)) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-		return false;
-	}
-
-	if(!write_metadata_block_header_(iterator->file, &iterator->status, block))
-		return false;
-
-	if(!write_metadata_block_data_(iterator->file, &iterator->status, block))
-		return false;
-
-	if(0 != fseeko(iterator->file, iterator->offset[iterator->depth], SEEK_SET)) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-		return false;
-	}
-
-	return read_metadata_block_header_(iterator);
-}
-
-FLAC__bool write_metadata_block_stationary_with_padding_(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, unsigned padding_length, FLAC__bool padding_is_last)
-{
-	FLAC__StreamMetadata *padding;
-
-	if(0 != fseeko(iterator->file, iterator->offset[iterator->depth], SEEK_SET)) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-		return false;
-	}
-
-	block->is_last = false;
-
-	if(!write_metadata_block_header_(iterator->file, &iterator->status, block))
-		return false;
-
-	if(!write_metadata_block_data_(iterator->file, &iterator->status, block))
-		return false;
-
-	if(0 == (padding = FLAC__metadata_object_new(FLAC__METADATA_TYPE_PADDING)))
-		return FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-
-	padding->is_last = padding_is_last;
-	padding->length = padding_length;
-
-	if(!write_metadata_block_header_(iterator->file, &iterator->status, padding)) {
-		FLAC__metadata_object_delete(padding);
-		return false;
-	}
-
-	if(!write_metadata_block_data_(iterator->file, &iterator->status, padding)) {
-		FLAC__metadata_object_delete(padding);
-		return false;
-	}
-
-	FLAC__metadata_object_delete(padding);
-
-	if(0 != fseeko(iterator->file, iterator->offset[iterator->depth], SEEK_SET)) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-		return false;
-	}
-
-	return read_metadata_block_header_(iterator);
-}
-
-FLAC__bool rewrite_whole_file_(FLAC__Metadata_SimpleIterator *iterator, FLAC__StreamMetadata *block, FLAC__bool append)
-{
-	FILE *tempfile;
-	char *tempfilename;
-	int fixup_is_last_code = 0; /* 0 => no need to change any is_last flags */
-	off_t fixup_is_last_flag_offset = -1;
-
-	FLAC__ASSERT(0 != block || append == false);
-
-	if(iterator->is_last) {
-		if(append) {
-			fixup_is_last_code = 1; /* 1 => clear the is_last flag at the following offset */
-			fixup_is_last_flag_offset = iterator->offset[iterator->depth];
-		}
-		else if(0 == block) {
-			simple_iterator_push_(iterator);
-			if(!FLAC__metadata_simple_iterator_prev(iterator)) {
-				(void)simple_iterator_pop_(iterator);
-				return false;
-			}
-			fixup_is_last_code = -1; /* -1 => set the is_last the flag at the following offset */
-			fixup_is_last_flag_offset = iterator->offset[iterator->depth];
-			if(!simple_iterator_pop_(iterator))
-				return false;
-		}
-	}
-
-	if(!simple_iterator_copy_file_prefix_(iterator, &tempfile, &tempfilename, append))
-		return false;
-
-	if(0 != block) {
-		if(!write_metadata_block_header_(tempfile, &iterator->status, block)) {
-			cleanup_tempfile_(&tempfile, &tempfilename);
-			return false;
-		}
-
-		if(!write_metadata_block_data_(tempfile, &iterator->status, block)) {
-			cleanup_tempfile_(&tempfile, &tempfilename);
-			return false;
-		}
-	}
-
-	if(!simple_iterator_copy_file_postfix_(iterator, &tempfile, &tempfilename, fixup_is_last_code, fixup_is_last_flag_offset, block==0))
-		return false;
-
-	if(append)
-		return FLAC__metadata_simple_iterator_next(iterator);
-
-	return true;
-}
-
-void simple_iterator_push_(FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__ASSERT(iterator->depth+1 < SIMPLE_ITERATOR_MAX_PUSH_DEPTH);
-	iterator->offset[iterator->depth+1] = iterator->offset[iterator->depth];
-	iterator->depth++;
-}
-
-FLAC__bool simple_iterator_pop_(FLAC__Metadata_SimpleIterator *iterator)
-{
-	FLAC__ASSERT(iterator->depth > 0);
-	iterator->depth--;
-	if(0 != fseeko(iterator->file, iterator->offset[iterator->depth], SEEK_SET)) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-		return false;
-	}
-
-	return read_metadata_block_header_(iterator);
-}
-
-/* return meanings:
- * 0: ok
- * 1: read error
- * 2: seek error
- * 3: not a FLAC file
- */
-unsigned seek_to_first_metadata_block_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__IOCallback_Seek seek_cb)
-{
-	FLAC__byte buffer[4];
-	size_t n;
-	unsigned i;
-
-	FLAC__ASSERT(FLAC__STREAM_SYNC_LENGTH == sizeof(buffer));
-
-	/* skip any id3v2 tag */
-	errno = 0;
-	n = read_cb(buffer, 1, 4, handle);
-	if(errno)
-		return 1;
-	else if(n != 4)
-		return 3;
-	else if(0 == memcmp(buffer, "ID3", 3)) {
-		unsigned tag_length = 0;
-
-		/* skip to the tag length */
-		if(seek_cb(handle, 2, SEEK_CUR) < 0)
-			return 2;
-
-		/* read the length */
-		for(i = 0; i < 4; i++) {
-			if(read_cb(buffer, 1, 1, handle) < 1 || buffer[0] & 0x80)
-				return 1;
-			tag_length <<= 7;
-			tag_length |= (buffer[0] & 0x7f);
-		}
-
-		/* skip the rest of the tag */
-		if(seek_cb(handle, tag_length, SEEK_CUR) < 0)
-			return 2;
-
-		/* read the stream sync code */
-		errno = 0;
-		n = read_cb(buffer, 1, 4, handle);
-		if(errno)
-			return 1;
-		else if(n != 4)
-			return 3;
-	}
-
-	/* check for the fLaC signature */
-	if(0 == memcmp(FLAC__STREAM_SYNC_STRING, buffer, FLAC__STREAM_SYNC_LENGTH))
-		return 0;
-	else
-		return 3;
-}
-
-unsigned seek_to_first_metadata_block_(FILE *f)
-{
-	return seek_to_first_metadata_block_cb_((FLAC__IOHandle)f, (FLAC__IOCallback_Read)fread, fseek_wrapper_);
-}
-
-FLAC__bool simple_iterator_copy_file_prefix_(FLAC__Metadata_SimpleIterator *iterator, FILE **tempfile, char **tempfilename, FLAC__bool append)
-{
-	const off_t offset_end = append? iterator->offset[iterator->depth] + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH + (off_t)iterator->length : iterator->offset[iterator->depth];
-
-	if(0 != fseeko(iterator->file, 0, SEEK_SET)) {
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-		return false;
-	}
-	if(!open_tempfile_(iterator->filename, iterator->tempfile_path_prefix, tempfile, tempfilename, &iterator->status)) {
-		cleanup_tempfile_(tempfile, tempfilename);
-		return false;
-	}
-	if(!copy_n_bytes_from_file_(iterator->file, *tempfile, offset_end, &iterator->status)) {
-		cleanup_tempfile_(tempfile, tempfilename);
-		return false;
-	}
-
-	return true;
-}
-
-FLAC__bool simple_iterator_copy_file_postfix_(FLAC__Metadata_SimpleIterator *iterator, FILE **tempfile, char **tempfilename, int fixup_is_last_code, off_t fixup_is_last_flag_offset, FLAC__bool backup)
-{
-	off_t save_offset = iterator->offset[iterator->depth];
-	FLAC__ASSERT(0 != *tempfile);
-
-	if(0 != fseeko(iterator->file, save_offset + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH + (off_t)iterator->length, SEEK_SET)) {
-		cleanup_tempfile_(tempfile, tempfilename);
-		iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-		return false;
-	}
-	if(!copy_remaining_bytes_from_file_(iterator->file, *tempfile, &iterator->status)) {
-		cleanup_tempfile_(tempfile, tempfilename);
-		return false;
-	}
-
-	if(fixup_is_last_code != 0) {
-		/*
-		 * if code == 1, it means a block was appended to the end so
-		 *   we have to clear the is_last flag of the previous block
-		 * if code == -1, it means the last block was deleted so
-		 *   we have to set the is_last flag of the previous block
-		 */
-		/* MAGIC NUMBERs here; we know the is_last flag is the high bit of the byte at this location */
-		FLAC__byte x;
-		if(0 != fseeko(*tempfile, fixup_is_last_flag_offset, SEEK_SET)) {
-			cleanup_tempfile_(tempfile, tempfilename);
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-			return false;
-		}
-		if(fread(&x, 1, 1, *tempfile) != 1) {
-			cleanup_tempfile_(tempfile, tempfilename);
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-			return false;
-		}
-		if(fixup_is_last_code > 0) {
-			FLAC__ASSERT(x & 0x80);
-			x &= 0x7f;
-		}
-		else {
-			FLAC__ASSERT(!(x & 0x80));
-			x |= 0x80;
-		}
-		if(0 != fseeko(*tempfile, fixup_is_last_flag_offset, SEEK_SET)) {
-			cleanup_tempfile_(tempfile, tempfilename);
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR;
-			return false;
-		}
-		if(local__fwrite(&x, 1, 1, *tempfile) != 1) {
-			cleanup_tempfile_(tempfile, tempfilename);
-			iterator->status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR;
-			return false;
-		}
-	}
-
-	(void)fclose(iterator->file);
-
-	if(!transport_tempfile_(iterator->filename, tempfile, tempfilename, &iterator->status))
-		return false;
-
-	if(iterator->has_stats)
-		set_file_stats_(iterator->filename, &iterator->stats);
-
-	if(!simple_iterator_prime_input_(iterator, !iterator->is_writable))
-		return false;
-	if(backup) {
-		while(iterator->offset[iterator->depth] + (off_t)FLAC__STREAM_METADATA_HEADER_LENGTH + (off_t)iterator->length < save_offset)
-			if(!FLAC__metadata_simple_iterator_next(iterator))
-				return false;
-		return true;
-	}
-	else {
-		/* move the iterator to it's original block faster by faking a push, then doing a pop_ */
-		FLAC__ASSERT(iterator->depth == 0);
-		iterator->offset[0] = save_offset;
-		iterator->depth++;
-		return simple_iterator_pop_(iterator);
-	}
-}
-
-FLAC__bool copy_n_bytes_from_file_(FILE *file, FILE *tempfile, off_t bytes, FLAC__Metadata_SimpleIteratorStatus *status)
-{
-	FLAC__byte buffer[8192];
-	size_t n;
-
-	FLAC__ASSERT(bytes >= 0);
-	while(bytes > 0) {
-		n = min(sizeof(buffer), (size_t)bytes);
-		if(fread(buffer, 1, n, file) != n) {
-			*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-			return false;
-		}
-		if(local__fwrite(buffer, 1, n, tempfile) != n) {
-			*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR;
-			return false;
-		}
-		bytes -= n;
-	}
-
-	return true;
-}
-
-FLAC__bool copy_n_bytes_from_file_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__IOHandle temp_handle, FLAC__IOCallback_Write temp_write_cb, off_t bytes, FLAC__Metadata_SimpleIteratorStatus *status)
-{
-	FLAC__byte buffer[8192];
-	size_t n;
-
-	FLAC__ASSERT(bytes >= 0);
-	while(bytes > 0) {
-		n = min(sizeof(buffer), (size_t)bytes);
-		if(read_cb(buffer, 1, n, handle) != n) {
-			*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-			return false;
-		}
-		if(temp_write_cb(buffer, 1, n, temp_handle) != n) {
-			*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR;
-			return false;
-		}
-		bytes -= n;
-	}
-
-	return true;
-}
-
-FLAC__bool copy_remaining_bytes_from_file_(FILE *file, FILE *tempfile, FLAC__Metadata_SimpleIteratorStatus *status)
-{
-	FLAC__byte buffer[8192];
-	size_t n;
-
-	while(!feof(file)) {
-		n = fread(buffer, 1, sizeof(buffer), file);
-		if(n == 0 && !feof(file)) {
-			*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-			return false;
-		}
-		if(n > 0 && local__fwrite(buffer, 1, n, tempfile) != n) {
-			*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR;
-			return false;
-		}
-	}
-
-	return true;
-}
-
-FLAC__bool copy_remaining_bytes_from_file_cb_(FLAC__IOHandle handle, FLAC__IOCallback_Read read_cb, FLAC__IOCallback_Eof eof_cb, FLAC__IOHandle temp_handle, FLAC__IOCallback_Write temp_write_cb, FLAC__Metadata_SimpleIteratorStatus *status)
-{
-	FLAC__byte buffer[8192];
-	size_t n;
-
-	while(!eof_cb(handle)) {
-		n = read_cb(buffer, 1, sizeof(buffer), handle);
-		if(n == 0 && !eof_cb(handle)) {
-			*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR;
-			return false;
-		}
-		if(n > 0 && temp_write_cb(buffer, 1, n, temp_handle) != n) {
-			*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR;
-			return false;
-		}
-	}
-
-	return true;
-}
-
-FLAC__bool open_tempfile_(const char *filename, const char *tempfile_path_prefix, FILE **tempfile, char **tempfilename, FLAC__Metadata_SimpleIteratorStatus *status)
-{
-	static const char *tempfile_suffix = ".metadata_edit";
-	if(0 == tempfile_path_prefix) {
-		if(0 == (*tempfilename = (char*)safe_malloc_add_3op_(strlen(filename), /*+*/strlen(tempfile_suffix), /*+*/1))) {
-			*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-			return false;
-		}
-		strcpy(*tempfilename, filename);
-		strcat(*tempfilename, tempfile_suffix);
-	}
-	else {
-		const char *p = strrchr(filename, '/');
-		if(0 == p)
-			p = filename;
-		else
-			p++;
-
-		if(0 == (*tempfilename = (char*)safe_malloc_add_4op_(strlen(tempfile_path_prefix), /*+*/strlen(p), /*+*/strlen(tempfile_suffix), /*+*/2))) {
-			*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR;
-			return false;
-		}
-		strcpy(*tempfilename, tempfile_path_prefix);
-		strcat(*tempfilename, "/");
-		strcat(*tempfilename, p);
-		strcat(*tempfilename, tempfile_suffix);
-	}
-
-	if(0 == (*tempfile = fopen(*tempfilename, "w+b"))) {
-		*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE;
-		return false;
-	}
-
-	return true;
-}
-
-FLAC__bool transport_tempfile_(const char *filename, FILE **tempfile, char **tempfilename, FLAC__Metadata_SimpleIteratorStatus *status)
-{
-	FLAC__ASSERT(0 != filename);
-	FLAC__ASSERT(0 != tempfile);
-	FLAC__ASSERT(0 != *tempfile);
-	FLAC__ASSERT(0 != tempfilename);
-	FLAC__ASSERT(0 != *tempfilename);
-	FLAC__ASSERT(0 != status);
-
-	(void)fclose(*tempfile);
-	*tempfile = 0;
-
-#if defined _MSC_VER || defined __BORLANDC__ || defined __MINGW32__ || defined __EMX__
-	/* on some flavors of windows, rename() will fail if the destination already exists */
-	if(unlink(filename) < 0) {
-		cleanup_tempfile_(tempfile, tempfilename);
-		*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR;
-		return false;
-	}
-#endif
-
-	/*@@@ to fully support the tempfile_path_prefix we need to update this piece to actually copy across filesystems instead of just rename(): */
-	if(0 != rename(*tempfilename, filename)) {
-		cleanup_tempfile_(tempfile, tempfilename);
-		*status = FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR;
-		return false;
-	}
-
-	cleanup_tempfile_(tempfile, tempfilename);
-
-	return true;
-}
-
-void cleanup_tempfile_(FILE **tempfile, char **tempfilename)
-{
-	if(0 != *tempfile) {
-		(void)fclose(*tempfile);
-		*tempfile = 0;
-	}
-
-	if(0 != *tempfilename) {
-		(void)unlink(*tempfilename);
-		free(*tempfilename);
-		*tempfilename = 0;
-	}
-}
-
-FLAC__bool get_file_stats_(const char *filename, struct stat *stats)
-{
-	FLAC__ASSERT(0 != filename);
-	FLAC__ASSERT(0 != stats);
-	return (0 == stat(filename, stats));
-}
-
-void set_file_stats_(const char *filename, struct stat *stats)
-{
-	struct utimbuf srctime;
-
-	FLAC__ASSERT(0 != filename);
-	FLAC__ASSERT(0 != stats);
-
-	srctime.actime = stats->st_atime;
-	srctime.modtime = stats->st_mtime;
-	(void)chmod(filename, stats->st_mode);
-	(void)utime(filename, &srctime);
-#if !defined _MSC_VER && !defined __BORLANDC__ && !defined __MINGW32__ && !defined __EMX__
-	(void)chown(filename, stats->st_uid, -1);
-	(void)chown(filename, -1, stats->st_gid);
-#endif
-}
-
-int fseek_wrapper_(FLAC__IOHandle handle, FLAC__int64 offset, int whence)
-{
-	return fseeko((FILE*)handle, (off_t)offset, whence);
-}
-
-FLAC__int64 ftell_wrapper_(FLAC__IOHandle handle)
-{
-	return ftello((FILE*)handle);
-}
-
-FLAC__Metadata_ChainStatus get_equivalent_status_(FLAC__Metadata_SimpleIteratorStatus status)
-{
-	switch(status) {
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_OK:
-			return FLAC__METADATA_CHAIN_STATUS_OK;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ILLEGAL_INPUT:
-			return FLAC__METADATA_CHAIN_STATUS_ILLEGAL_INPUT;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_ERROR_OPENING_FILE:
-			return FLAC__METADATA_CHAIN_STATUS_ERROR_OPENING_FILE;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_A_FLAC_FILE:
-			return FLAC__METADATA_CHAIN_STATUS_NOT_A_FLAC_FILE;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_NOT_WRITABLE:
-			return FLAC__METADATA_CHAIN_STATUS_NOT_WRITABLE;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_BAD_METADATA:
-			return FLAC__METADATA_CHAIN_STATUS_BAD_METADATA;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_READ_ERROR:
-			return FLAC__METADATA_CHAIN_STATUS_READ_ERROR;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_SEEK_ERROR:
-			return FLAC__METADATA_CHAIN_STATUS_SEEK_ERROR;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_WRITE_ERROR:
-			return FLAC__METADATA_CHAIN_STATUS_WRITE_ERROR;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_RENAME_ERROR:
-			return FLAC__METADATA_CHAIN_STATUS_RENAME_ERROR;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_UNLINK_ERROR:
-			return FLAC__METADATA_CHAIN_STATUS_UNLINK_ERROR;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_MEMORY_ALLOCATION_ERROR:
-			return FLAC__METADATA_CHAIN_STATUS_MEMORY_ALLOCATION_ERROR;
-		case FLAC__METADATA_SIMPLE_ITERATOR_STATUS_INTERNAL_ERROR:
-		default:
-			return FLAC__METADATA_CHAIN_STATUS_INTERNAL_ERROR;
-	}
-}
diff --git a/libFLAC/metadata_object.c b/libFLAC/metadata_object.c
deleted file mode 100644
index a1465f5..0000000
--- a/libFLAC/metadata_object.c
+++ /dev/null
@@ -1,1819 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec library
- * Copyright (C) 2001,2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "private/metadata.h"
-
-#include "FLAC/assert.h"
-#include "share/alloc.h"
-
-
-/****************************************************************************
- *
- * Local routines
- *
- ***************************************************************************/
-
-/* copy bytes:
- *  from = NULL  && bytes = 0
- *       to <- NULL
- *  from != NULL && bytes > 0
- *       to <- copy of from
- *  else ASSERT
- * malloc error leaves 'to' unchanged
- */
-static FLAC__bool copy_bytes_(FLAC__byte **to, const FLAC__byte *from, unsigned bytes)
-{
-	FLAC__ASSERT(0 != to);
-	if(bytes > 0 && 0 != from) {
-		FLAC__byte *x;
-		if(0 == (x = (FLAC__byte*)safe_malloc_(bytes)))
-			return false;
-		memcpy(x, from, bytes);
-		*to = x;
-	}
-	else {
-		FLAC__ASSERT(0 == from);
-		FLAC__ASSERT(bytes == 0);
-		*to = 0;
-	}
-	return true;
-}
-
-#if 0 /* UNUSED */
-/* like copy_bytes_(), but free()s the original '*to' if the copy succeeds and the original '*to' is non-NULL */
-static FLAC__bool free_copy_bytes_(FLAC__byte **to, const FLAC__byte *from, unsigned bytes)
-{
-	FLAC__byte *copy;
-	FLAC__ASSERT(0 != to);
-	if(copy_bytes_(&copy, from, bytes)) {
-		if(*to)
-			free(*to);
-		*to = copy;
-		return true;
-	}
-	else
-		return false;
-}
-#endif
-
-/* reallocate entry to 1 byte larger and add a terminating NUL */
-/* realloc() failure leaves entry unchanged */
-static FLAC__bool ensure_null_terminated_(FLAC__byte **entry, unsigned length)
-{
-	FLAC__byte *x = (FLAC__byte*)safe_realloc_add_2op_(*entry, length, /*+*/1);
-	if(0 != x) {
-		x[length] = '\0';
-		*entry = x;
-		return true;
-	}
-	else
-		return false;
-}
-
-/* copies the NUL-terminated C-string 'from' to '*to', leaving '*to'
- * unchanged if malloc fails, free()ing the original '*to' if it
- * succeeds and the original '*to' was not NULL
- */
-static FLAC__bool copy_cstring_(char **to, const char *from)
-{
-	char *copy = strdup(from);
-	FLAC__ASSERT(to);
-	if(copy) {
-		if(*to)
-			free(*to);
-		*to = copy;
-		return true;
-	}
-	else
-		return false;
-}
-
-static FLAC__bool copy_vcentry_(FLAC__StreamMetadata_VorbisComment_Entry *to, const FLAC__StreamMetadata_VorbisComment_Entry *from)
-{
-	to->length = from->length;
-	if(0 == from->entry) {
-		FLAC__ASSERT(from->length == 0);
-		to->entry = 0;
-	}
-	else {
-		FLAC__byte *x;
-		FLAC__ASSERT(from->length > 0);
-		if(0 == (x = (FLAC__byte*)safe_malloc_add_2op_(from->length, /*+*/1)))
-			return false;
-		memcpy(x, from->entry, from->length);
-		x[from->length] = '\0';
-		to->entry = x;
-	}
-	return true;
-}
-
-static FLAC__bool copy_track_(FLAC__StreamMetadata_CueSheet_Track *to, const FLAC__StreamMetadata_CueSheet_Track *from)
-{
-	memcpy(to, from, sizeof(FLAC__StreamMetadata_CueSheet_Track));
-	if(0 == from->indices) {
-		FLAC__ASSERT(from->num_indices == 0);
-	}
-	else {
-		FLAC__StreamMetadata_CueSheet_Index *x;
-		FLAC__ASSERT(from->num_indices > 0);
-		if(0 == (x = (FLAC__StreamMetadata_CueSheet_Index*)safe_malloc_mul_2op_(from->num_indices, /*times*/sizeof(FLAC__StreamMetadata_CueSheet_Index))))
-			return false;
-		memcpy(x, from->indices, from->num_indices * sizeof(FLAC__StreamMetadata_CueSheet_Index));
-		to->indices = x;
-	}
-	return true;
-}
-
-static void seektable_calculate_length_(FLAC__StreamMetadata *object)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-
-	object->length = object->data.seek_table.num_points * FLAC__STREAM_METADATA_SEEKPOINT_LENGTH;
-}
-
-static FLAC__StreamMetadata_SeekPoint *seekpoint_array_new_(unsigned num_points)
-{
-	FLAC__StreamMetadata_SeekPoint *object_array;
-
-	FLAC__ASSERT(num_points > 0);
-
-	object_array = (FLAC__StreamMetadata_SeekPoint*)safe_malloc_mul_2op_(num_points, /*times*/sizeof(FLAC__StreamMetadata_SeekPoint));
-
-	if(0 != object_array) {
-		unsigned i;
-		for(i = 0; i < num_points; i++) {
-			object_array[i].sample_number = FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER;
-			object_array[i].stream_offset = 0;
-			object_array[i].frame_samples = 0;
-		}
-	}
-
-	return object_array;
-}
-
-static void vorbiscomment_calculate_length_(FLAC__StreamMetadata *object)
-{
-	unsigned i;
-
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-
-	object->length = (FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN) / 8;
-	object->length += object->data.vorbis_comment.vendor_string.length;
-	object->length += (FLAC__STREAM_METADATA_VORBIS_COMMENT_NUM_COMMENTS_LEN) / 8;
-	for(i = 0; i < object->data.vorbis_comment.num_comments; i++) {
-		object->length += (FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN / 8);
-		object->length += object->data.vorbis_comment.comments[i].length;
-	}
-}
-
-static FLAC__StreamMetadata_VorbisComment_Entry *vorbiscomment_entry_array_new_(unsigned num_comments)
-{
-	FLAC__ASSERT(num_comments > 0);
-
-	return (FLAC__StreamMetadata_VorbisComment_Entry*)safe_calloc_(num_comments, sizeof(FLAC__StreamMetadata_VorbisComment_Entry));
-}
-
-static void vorbiscomment_entry_array_delete_(FLAC__StreamMetadata_VorbisComment_Entry *object_array, unsigned num_comments)
-{
-	unsigned i;
-
-	FLAC__ASSERT(0 != object_array && num_comments > 0);
-
-	for(i = 0; i < num_comments; i++)
-		if(0 != object_array[i].entry)
-			free(object_array[i].entry);
-
-	if(0 != object_array)
-		free(object_array);
-}
-
-static FLAC__StreamMetadata_VorbisComment_Entry *vorbiscomment_entry_array_copy_(const FLAC__StreamMetadata_VorbisComment_Entry *object_array, unsigned num_comments)
-{
-	FLAC__StreamMetadata_VorbisComment_Entry *return_array;
-
-	FLAC__ASSERT(0 != object_array);
-	FLAC__ASSERT(num_comments > 0);
-
-	return_array = vorbiscomment_entry_array_new_(num_comments);
-
-	if(0 != return_array) {
-		unsigned i;
-
-		for(i = 0; i < num_comments; i++) {
-			if(!copy_vcentry_(return_array+i, object_array+i)) {
-				vorbiscomment_entry_array_delete_(return_array, num_comments);
-				return 0;
-			}
-		}
-	}
-
-	return return_array;
-}
-
-static FLAC__bool vorbiscomment_set_entry_(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry *dest, const FLAC__StreamMetadata_VorbisComment_Entry *src, FLAC__bool copy)
-{
-	FLAC__byte *save;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(0 != dest);
-	FLAC__ASSERT(0 != src);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-	FLAC__ASSERT((0 != src->entry && src->length > 0) || (0 == src->entry && src->length == 0));
-
-	save = dest->entry;
-
-	if(0 != src->entry && src->length > 0) {
-		if(copy) {
-			/* do the copy first so that if we fail we leave the dest object untouched */
-			if(!copy_vcentry_(dest, src))
-				return false;
-		}
-		else {
-			/* we have to make sure that the string we're taking over is null-terminated */
-
-			/*
-			 * Stripping the const from src->entry is OK since we're taking
-			 * ownership of the pointer.  This is a hack around a deficiency
-			 * in the API where the same function is used for 'copy' and
-			 * 'own', but the source entry is a const pointer.  If we were
-			 * precise, the 'own' flavor would be a separate function with a
-			 * non-const source pointer.  But it's not, so we hack away.
-			 */
-			if(!ensure_null_terminated_((FLAC__byte**)(&src->entry), src->length))
-				return false;
-			*dest = *src;
-		}
-	}
-	else {
-		/* the src is null */
-		*dest = *src;
-	}
-
-	if(0 != save)
-		free(save);
-
-	vorbiscomment_calculate_length_(object);
-	return true;
-}
-
-static int vorbiscomment_find_entry_from_(const FLAC__StreamMetadata *object, unsigned offset, const char *field_name, unsigned field_name_length)
-{
-	unsigned i;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-	FLAC__ASSERT(0 != field_name);
-
-	for(i = offset; i < object->data.vorbis_comment.num_comments; i++) {
-		if(FLAC__metadata_object_vorbiscomment_entry_matches(object->data.vorbis_comment.comments[i], field_name, field_name_length))
-			return (int)i;
-	}
-
-	return -1;
-}
-
-static void cuesheet_calculate_length_(FLAC__StreamMetadata *object)
-{
-	unsigned i;
-
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_CUESHEET);
-
-	object->length = (
-		FLAC__STREAM_METADATA_CUESHEET_MEDIA_CATALOG_NUMBER_LEN +
-		FLAC__STREAM_METADATA_CUESHEET_LEAD_IN_LEN +
-		FLAC__STREAM_METADATA_CUESHEET_IS_CD_LEN +
-		FLAC__STREAM_METADATA_CUESHEET_RESERVED_LEN +
-		FLAC__STREAM_METADATA_CUESHEET_NUM_TRACKS_LEN
-	) / 8;
-
-	object->length += object->data.cue_sheet.num_tracks * (
-		FLAC__STREAM_METADATA_CUESHEET_TRACK_OFFSET_LEN +
-		FLAC__STREAM_METADATA_CUESHEET_TRACK_NUMBER_LEN +
-		FLAC__STREAM_METADATA_CUESHEET_TRACK_ISRC_LEN +
-		FLAC__STREAM_METADATA_CUESHEET_TRACK_TYPE_LEN +
-		FLAC__STREAM_METADATA_CUESHEET_TRACK_PRE_EMPHASIS_LEN +
-		FLAC__STREAM_METADATA_CUESHEET_TRACK_RESERVED_LEN +
-		FLAC__STREAM_METADATA_CUESHEET_TRACK_NUM_INDICES_LEN
-	) / 8;
-
-	for(i = 0; i < object->data.cue_sheet.num_tracks; i++) {
-		object->length += object->data.cue_sheet.tracks[i].num_indices * (
-			FLAC__STREAM_METADATA_CUESHEET_INDEX_OFFSET_LEN +
-			FLAC__STREAM_METADATA_CUESHEET_INDEX_NUMBER_LEN +
-			FLAC__STREAM_METADATA_CUESHEET_INDEX_RESERVED_LEN
-		) / 8;
-	}
-}
-
-static FLAC__StreamMetadata_CueSheet_Index *cuesheet_track_index_array_new_(unsigned num_indices)
-{
-	FLAC__ASSERT(num_indices > 0);
-
-	return (FLAC__StreamMetadata_CueSheet_Index*)safe_calloc_(num_indices, sizeof(FLAC__StreamMetadata_CueSheet_Index));
-}
-
-static FLAC__StreamMetadata_CueSheet_Track *cuesheet_track_array_new_(unsigned num_tracks)
-{
-	FLAC__ASSERT(num_tracks > 0);
-
-	return (FLAC__StreamMetadata_CueSheet_Track*)safe_calloc_(num_tracks, sizeof(FLAC__StreamMetadata_CueSheet_Track));
-}
-
-static void cuesheet_track_array_delete_(FLAC__StreamMetadata_CueSheet_Track *object_array, unsigned num_tracks)
-{
-	unsigned i;
-
-	FLAC__ASSERT(0 != object_array && num_tracks > 0);
-
-	for(i = 0; i < num_tracks; i++) {
-		if(0 != object_array[i].indices) {
-			FLAC__ASSERT(object_array[i].num_indices > 0);
-			free(object_array[i].indices);
-		}
-	}
-
-	if(0 != object_array)
-		free(object_array);
-}
-
-static FLAC__StreamMetadata_CueSheet_Track *cuesheet_track_array_copy_(const FLAC__StreamMetadata_CueSheet_Track *object_array, unsigned num_tracks)
-{
-	FLAC__StreamMetadata_CueSheet_Track *return_array;
-
-	FLAC__ASSERT(0 != object_array);
-	FLAC__ASSERT(num_tracks > 0);
-
-	return_array = cuesheet_track_array_new_(num_tracks);
-
-	if(0 != return_array) {
-		unsigned i;
-
-		for(i = 0; i < num_tracks; i++) {
-			if(!copy_track_(return_array+i, object_array+i)) {
-				cuesheet_track_array_delete_(return_array, num_tracks);
-				return 0;
-			}
-		}
-	}
-
-	return return_array;
-}
-
-static FLAC__bool cuesheet_set_track_(FLAC__StreamMetadata *object, FLAC__StreamMetadata_CueSheet_Track *dest, const FLAC__StreamMetadata_CueSheet_Track *src, FLAC__bool copy)
-{
-	FLAC__StreamMetadata_CueSheet_Index *save;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(0 != dest);
-	FLAC__ASSERT(0 != src);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_CUESHEET);
-	FLAC__ASSERT((0 != src->indices && src->num_indices > 0) || (0 == src->indices && src->num_indices == 0));
-
-	save = dest->indices;
-
-	/* do the copy first so that if we fail we leave the object untouched */
-	if(copy) {
-		if(!copy_track_(dest, src))
-			return false;
-	}
-	else {
-		*dest = *src;
-	}
-
-	if(0 != save)
-		free(save);
-
-	cuesheet_calculate_length_(object);
-	return true;
-}
-
-
-/****************************************************************************
- *
- * Metadata object routines
- *
- ***************************************************************************/
-
-FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_new(FLAC__MetadataType type)
-{
-	FLAC__StreamMetadata *object;
-
-	if(type > FLAC__MAX_METADATA_TYPE_CODE)
-		return 0;
-
-	object = (FLAC__StreamMetadata*)calloc(1, sizeof(FLAC__StreamMetadata));
-	if(0 != object) {
-		object->is_last = false;
-		object->type = type;
-		switch(type) {
-			case FLAC__METADATA_TYPE_STREAMINFO:
-				object->length = FLAC__STREAM_METADATA_STREAMINFO_LENGTH;
-				break;
-			case FLAC__METADATA_TYPE_PADDING:
-				/* calloc() took care of this for us:
-				object->length = 0;
-				*/
-				break;
-			case FLAC__METADATA_TYPE_APPLICATION:
-				object->length = FLAC__STREAM_METADATA_APPLICATION_ID_LEN / 8;
-				/* calloc() took care of this for us:
-				object->data.application.data = 0;
-				*/
-				break;
-			case FLAC__METADATA_TYPE_SEEKTABLE:
-				/* calloc() took care of this for us:
-				object->length = 0;
-				object->data.seek_table.num_points = 0;
-				object->data.seek_table.points = 0;
-				*/
-				break;
-			case FLAC__METADATA_TYPE_VORBIS_COMMENT:
-				object->data.vorbis_comment.vendor_string.length = (unsigned)strlen(FLAC__VENDOR_STRING);
-				if(!copy_bytes_(&object->data.vorbis_comment.vendor_string.entry, (const FLAC__byte*)FLAC__VENDOR_STRING, object->data.vorbis_comment.vendor_string.length+1)) {
-					free(object);
-					return 0;
-				}
-				vorbiscomment_calculate_length_(object);
-				break;
-			case FLAC__METADATA_TYPE_CUESHEET:
-				cuesheet_calculate_length_(object);
-				break;
-			case FLAC__METADATA_TYPE_PICTURE:
-				object->length = (
-					FLAC__STREAM_METADATA_PICTURE_TYPE_LEN +
-					FLAC__STREAM_METADATA_PICTURE_MIME_TYPE_LENGTH_LEN + /* empty mime_type string */
-					FLAC__STREAM_METADATA_PICTURE_DESCRIPTION_LENGTH_LEN + /* empty description string */
-					FLAC__STREAM_METADATA_PICTURE_WIDTH_LEN +
-					FLAC__STREAM_METADATA_PICTURE_HEIGHT_LEN +
-					FLAC__STREAM_METADATA_PICTURE_DEPTH_LEN +
-					FLAC__STREAM_METADATA_PICTURE_COLORS_LEN +
-					FLAC__STREAM_METADATA_PICTURE_DATA_LENGTH_LEN +
-					0 /* no data */
-				) / 8;
-				object->data.picture.type = FLAC__STREAM_METADATA_PICTURE_TYPE_OTHER;
-				object->data.picture.mime_type = 0;
-				object->data.picture.description = 0;
-				/* calloc() took care of this for us:
-				object->data.picture.width = 0;
-				object->data.picture.height = 0;
-				object->data.picture.depth = 0;
-				object->data.picture.colors = 0;
-				object->data.picture.data_length = 0;
-				object->data.picture.data = 0;
-				*/
-				/* now initialize mime_type and description with empty strings to make things easier on the client */
-				if(!copy_cstring_(&object->data.picture.mime_type, "")) {
-					free(object);
-					return 0;
-				}
-				if(!copy_cstring_((char**)(&object->data.picture.description), "")) {
-					if(object->data.picture.mime_type)
-						free(object->data.picture.mime_type);
-					free(object);
-					return 0;
-				}
-				break;
-			default:
-				/* calloc() took care of this for us:
-				object->length = 0;
-				object->data.unknown.data = 0;
-				*/
-				break;
-		}
-	}
-
-	return object;
-}
-
-FLAC_API FLAC__StreamMetadata *FLAC__metadata_object_clone(const FLAC__StreamMetadata *object)
-{
-	FLAC__StreamMetadata *to;
-
-	FLAC__ASSERT(0 != object);
-
-	if(0 != (to = FLAC__metadata_object_new(object->type))) {
-		to->is_last = object->is_last;
-		to->type = object->type;
-		to->length = object->length;
-		switch(to->type) {
-			case FLAC__METADATA_TYPE_STREAMINFO:
-				memcpy(&to->data.stream_info, &object->data.stream_info, sizeof(FLAC__StreamMetadata_StreamInfo));
-				break;
-			case FLAC__METADATA_TYPE_PADDING:
-				break;
-			case FLAC__METADATA_TYPE_APPLICATION:
-				if(to->length < FLAC__STREAM_METADATA_APPLICATION_ID_LEN / 8) { /* underflow check */
-					FLAC__metadata_object_delete(to);
-					return 0;
-				}
-				memcpy(&to->data.application.id, &object->data.application.id, FLAC__STREAM_METADATA_APPLICATION_ID_LEN / 8);
-				if(!copy_bytes_(&to->data.application.data, object->data.application.data, object->length - FLAC__STREAM_METADATA_APPLICATION_ID_LEN / 8)) {
-					FLAC__metadata_object_delete(to);
-					return 0;
-				}
-				break;
-			case FLAC__METADATA_TYPE_SEEKTABLE:
-				to->data.seek_table.num_points = object->data.seek_table.num_points;
-				if(to->data.seek_table.num_points > SIZE_MAX / sizeof(FLAC__StreamMetadata_SeekPoint)) { /* overflow check */
-					FLAC__metadata_object_delete(to);
-					return 0;
-				}
-				if(!copy_bytes_((FLAC__byte**)&to->data.seek_table.points, (FLAC__byte*)object->data.seek_table.points, object->data.seek_table.num_points * sizeof(FLAC__StreamMetadata_SeekPoint))) {
-					FLAC__metadata_object_delete(to);
-					return 0;
-				}
-				break;
-			case FLAC__METADATA_TYPE_VORBIS_COMMENT:
-				if(0 != to->data.vorbis_comment.vendor_string.entry) {
-					free(to->data.vorbis_comment.vendor_string.entry);
-					to->data.vorbis_comment.vendor_string.entry = 0;
-				}
-				if(!copy_vcentry_(&to->data.vorbis_comment.vendor_string, &object->data.vorbis_comment.vendor_string)) {
-					FLAC__metadata_object_delete(to);
-					return 0;
-				}
-				if(object->data.vorbis_comment.num_comments == 0) {
-					FLAC__ASSERT(0 == object->data.vorbis_comment.comments);
-					to->data.vorbis_comment.comments = 0;
-				}
-				else {
-					FLAC__ASSERT(0 != object->data.vorbis_comment.comments);
-					to->data.vorbis_comment.comments = vorbiscomment_entry_array_copy_(object->data.vorbis_comment.comments, object->data.vorbis_comment.num_comments);
-					if(0 == to->data.vorbis_comment.comments) {
-						FLAC__metadata_object_delete(to);
-						return 0;
-					}
-				}
-				to->data.vorbis_comment.num_comments = object->data.vorbis_comment.num_comments;
-				break;
-			case FLAC__METADATA_TYPE_CUESHEET:
-				memcpy(&to->data.cue_sheet, &object->data.cue_sheet, sizeof(FLAC__StreamMetadata_CueSheet));
-				if(object->data.cue_sheet.num_tracks == 0) {
-					FLAC__ASSERT(0 == object->data.cue_sheet.tracks);
-				}
-				else {
-					FLAC__ASSERT(0 != object->data.cue_sheet.tracks);
-					to->data.cue_sheet.tracks = cuesheet_track_array_copy_(object->data.cue_sheet.tracks, object->data.cue_sheet.num_tracks);
-					if(0 == to->data.cue_sheet.tracks) {
-						FLAC__metadata_object_delete(to);
-						return 0;
-					}
-				}
-				break;
-			case FLAC__METADATA_TYPE_PICTURE:
-				to->data.picture.type = object->data.picture.type;
-				if(!copy_cstring_(&to->data.picture.mime_type, object->data.picture.mime_type)) {
-					FLAC__metadata_object_delete(to);
-					return 0;
-				}
-				if(!copy_cstring_((char**)(&to->data.picture.description), (const char*)object->data.picture.description)) {
-					FLAC__metadata_object_delete(to);
-					return 0;
-				}
-				to->data.picture.width = object->data.picture.width;
-				to->data.picture.height = object->data.picture.height;
-				to->data.picture.depth = object->data.picture.depth;
-				to->data.picture.colors = object->data.picture.colors;
-				to->data.picture.data_length = object->data.picture.data_length;
-				if(!copy_bytes_((&to->data.picture.data), object->data.picture.data, object->data.picture.data_length)) {
-					FLAC__metadata_object_delete(to);
-					return 0;
-				}
-				break;
-			default:
-				if(!copy_bytes_(&to->data.unknown.data, object->data.unknown.data, object->length)) {
-					FLAC__metadata_object_delete(to);
-					return 0;
-				}
-				break;
-		}
-	}
-
-	return to;
-}
-
-void FLAC__metadata_object_delete_data(FLAC__StreamMetadata *object)
-{
-	FLAC__ASSERT(0 != object);
-
-	switch(object->type) {
-		case FLAC__METADATA_TYPE_STREAMINFO:
-		case FLAC__METADATA_TYPE_PADDING:
-			break;
-		case FLAC__METADATA_TYPE_APPLICATION:
-			if(0 != object->data.application.data) {
-				free(object->data.application.data);
-				object->data.application.data = 0;
-			}
-			break;
-		case FLAC__METADATA_TYPE_SEEKTABLE:
-			if(0 != object->data.seek_table.points) {
-				free(object->data.seek_table.points);
-				object->data.seek_table.points = 0;
-			}
-			break;
-		case FLAC__METADATA_TYPE_VORBIS_COMMENT:
-			if(0 != object->data.vorbis_comment.vendor_string.entry) {
-				free(object->data.vorbis_comment.vendor_string.entry);
-				object->data.vorbis_comment.vendor_string.entry = 0;
-			}
-			if(0 != object->data.vorbis_comment.comments) {
-				FLAC__ASSERT(object->data.vorbis_comment.num_comments > 0);
-				vorbiscomment_entry_array_delete_(object->data.vorbis_comment.comments, object->data.vorbis_comment.num_comments);
-			}
-			break;
-		case FLAC__METADATA_TYPE_CUESHEET:
-			if(0 != object->data.cue_sheet.tracks) {
-				FLAC__ASSERT(object->data.cue_sheet.num_tracks > 0);
-				cuesheet_track_array_delete_(object->data.cue_sheet.tracks, object->data.cue_sheet.num_tracks);
-			}
-			break;
-		case FLAC__METADATA_TYPE_PICTURE:
-			if(0 != object->data.picture.mime_type) {
-				free(object->data.picture.mime_type);
-				object->data.picture.mime_type = 0;
-			}
-			if(0 != object->data.picture.description) {
-				free(object->data.picture.description);
-				object->data.picture.description = 0;
-			}
-			if(0 != object->data.picture.data) {
-				free(object->data.picture.data);
-				object->data.picture.data = 0;
-			}
-			break;
-		default:
-			if(0 != object->data.unknown.data) {
-				free(object->data.unknown.data);
-				object->data.unknown.data = 0;
-			}
-			break;
-	}
-}
-
-FLAC_API void FLAC__metadata_object_delete(FLAC__StreamMetadata *object)
-{
-	FLAC__metadata_object_delete_data(object);
-	free(object);
-}
-
-static FLAC__bool compare_block_data_streaminfo_(const FLAC__StreamMetadata_StreamInfo *block1, const FLAC__StreamMetadata_StreamInfo *block2)
-{
-	if(block1->min_blocksize != block2->min_blocksize)
-		return false;
-	if(block1->max_blocksize != block2->max_blocksize)
-		return false;
-	if(block1->min_framesize != block2->min_framesize)
-		return false;
-	if(block1->max_framesize != block2->max_framesize)
-		return false;
-	if(block1->sample_rate != block2->sample_rate)
-		return false;
-	if(block1->channels != block2->channels)
-		return false;
-	if(block1->bits_per_sample != block2->bits_per_sample)
-		return false;
-	if(block1->total_samples != block2->total_samples)
-		return false;
-	if(0 != memcmp(block1->md5sum, block2->md5sum, 16))
-		return false;
-	return true;
-}
-
-static FLAC__bool compare_block_data_application_(const FLAC__StreamMetadata_Application *block1, const FLAC__StreamMetadata_Application *block2, unsigned block_length)
-{
-	FLAC__ASSERT(0 != block1);
-	FLAC__ASSERT(0 != block2);
-	FLAC__ASSERT(block_length >= sizeof(block1->id));
-
-	if(0 != memcmp(block1->id, block2->id, sizeof(block1->id)))
-		return false;
-	if(0 != block1->data && 0 != block2->data)
-		return 0 == memcmp(block1->data, block2->data, block_length - sizeof(block1->id));
-	else
-		return block1->data == block2->data;
-}
-
-static FLAC__bool compare_block_data_seektable_(const FLAC__StreamMetadata_SeekTable *block1, const FLAC__StreamMetadata_SeekTable *block2)
-{
-	unsigned i;
-
-	FLAC__ASSERT(0 != block1);
-	FLAC__ASSERT(0 != block2);
-
-	if(block1->num_points != block2->num_points)
-		return false;
-
-	if(0 != block1->points && 0 != block2->points) {
-		for(i = 0; i < block1->num_points; i++) {
-			if(block1->points[i].sample_number != block2->points[i].sample_number)
-				return false;
-			if(block1->points[i].stream_offset != block2->points[i].stream_offset)
-				return false;
-			if(block1->points[i].frame_samples != block2->points[i].frame_samples)
-				return false;
-		}
-		return true;
-	}
-	else
-		return block1->points == block2->points;
-}
-
-static FLAC__bool compare_block_data_vorbiscomment_(const FLAC__StreamMetadata_VorbisComment *block1, const FLAC__StreamMetadata_VorbisComment *block2)
-{
-	unsigned i;
-
-	if(block1->vendor_string.length != block2->vendor_string.length)
-		return false;
-
-	if(0 != block1->vendor_string.entry && 0 != block2->vendor_string.entry) {
-		if(0 != memcmp(block1->vendor_string.entry, block2->vendor_string.entry, block1->vendor_string.length))
-			return false;
-	}
-	else if(block1->vendor_string.entry != block2->vendor_string.entry)
-		return false;
-
-	if(block1->num_comments != block2->num_comments)
-		return false;
-
-	for(i = 0; i < block1->num_comments; i++) {
-		if(0 != block1->comments[i].entry && 0 != block2->comments[i].entry) {
-			if(0 != memcmp(block1->comments[i].entry, block2->comments[i].entry, block1->comments[i].length))
-				return false;
-		}
-		else if(block1->comments[i].entry != block2->comments[i].entry)
-			return false;
-	}
-	return true;
-}
-
-static FLAC__bool compare_block_data_cuesheet_(const FLAC__StreamMetadata_CueSheet *block1, const FLAC__StreamMetadata_CueSheet *block2)
-{
-	unsigned i, j;
-
-	if(0 != strcmp(block1->media_catalog_number, block2->media_catalog_number))
-		return false;
-
-	if(block1->lead_in != block2->lead_in)
-		return false;
-
-	if(block1->is_cd != block2->is_cd)
-		return false;
-
-	if(block1->num_tracks != block2->num_tracks)
-		return false;
-
-	if(0 != block1->tracks && 0 != block2->tracks) {
-		FLAC__ASSERT(block1->num_tracks > 0);
-		for(i = 0; i < block1->num_tracks; i++) {
-			if(block1->tracks[i].offset != block2->tracks[i].offset)
-				return false;
-			if(block1->tracks[i].number != block2->tracks[i].number)
-				return false;
-			if(0 != memcmp(block1->tracks[i].isrc, block2->tracks[i].isrc, sizeof(block1->tracks[i].isrc)))
-				return false;
-			if(block1->tracks[i].type != block2->tracks[i].type)
-				return false;
-			if(block1->tracks[i].pre_emphasis != block2->tracks[i].pre_emphasis)
-				return false;
-			if(block1->tracks[i].num_indices != block2->tracks[i].num_indices)
-				return false;
-			if(0 != block1->tracks[i].indices && 0 != block2->tracks[i].indices) {
-				FLAC__ASSERT(block1->tracks[i].num_indices > 0);
-				for(j = 0; j < block1->tracks[i].num_indices; j++) {
-					if(block1->tracks[i].indices[j].offset != block2->tracks[i].indices[j].offset)
-						return false;
-					if(block1->tracks[i].indices[j].number != block2->tracks[i].indices[j].number)
-						return false;
-				}
-			}
-			else if(block1->tracks[i].indices != block2->tracks[i].indices)
-				return false;
-		}
-	}
-	else if(block1->tracks != block2->tracks)
-		return false;
-	return true;
-}
-
-static FLAC__bool compare_block_data_picture_(const FLAC__StreamMetadata_Picture *block1, const FLAC__StreamMetadata_Picture *block2)
-{
-	if(block1->type != block2->type)
-		return false;
-	if(block1->mime_type != block2->mime_type && (0 == block1->mime_type || 0 == block2->mime_type || strcmp(block1->mime_type, block2->mime_type)))
-		return false;
-	if(block1->description != block2->description && (0 == block1->description || 0 == block2->description || strcmp((const char *)block1->description, (const char *)block2->description)))
-		return false;
-	if(block1->width != block2->width)
-		return false;
-	if(block1->height != block2->height)
-		return false;
-	if(block1->depth != block2->depth)
-		return false;
-	if(block1->colors != block2->colors)
-		return false;
-	if(block1->data_length != block2->data_length)
-		return false;
-	if(block1->data != block2->data && (0 == block1->data || 0 == block2->data || memcmp(block1->data, block2->data, block1->data_length)))
-		return false;
-	return true;
-}
-
-static FLAC__bool compare_block_data_unknown_(const FLAC__StreamMetadata_Unknown *block1, const FLAC__StreamMetadata_Unknown *block2, unsigned block_length)
-{
-	FLAC__ASSERT(0 != block1);
-	FLAC__ASSERT(0 != block2);
-
-	if(0 != block1->data && 0 != block2->data)
-		return 0 == memcmp(block1->data, block2->data, block_length);
-	else
-		return block1->data == block2->data;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_is_equal(const FLAC__StreamMetadata *block1, const FLAC__StreamMetadata *block2)
-{
-	FLAC__ASSERT(0 != block1);
-	FLAC__ASSERT(0 != block2);
-
-	if(block1->type != block2->type) {
-		return false;
-	}
-	if(block1->is_last != block2->is_last) {
-		return false;
-	}
-	if(block1->length != block2->length) {
-		return false;
-	}
-	switch(block1->type) {
-		case FLAC__METADATA_TYPE_STREAMINFO:
-			return compare_block_data_streaminfo_(&block1->data.stream_info, &block2->data.stream_info);
-		case FLAC__METADATA_TYPE_PADDING:
-			return true; /* we don't compare the padding guts */
-		case FLAC__METADATA_TYPE_APPLICATION:
-			return compare_block_data_application_(&block1->data.application, &block2->data.application, block1->length);
-		case FLAC__METADATA_TYPE_SEEKTABLE:
-			return compare_block_data_seektable_(&block1->data.seek_table, &block2->data.seek_table);
-		case FLAC__METADATA_TYPE_VORBIS_COMMENT:
-			return compare_block_data_vorbiscomment_(&block1->data.vorbis_comment, &block2->data.vorbis_comment);
-		case FLAC__METADATA_TYPE_CUESHEET:
-			return compare_block_data_cuesheet_(&block1->data.cue_sheet, &block2->data.cue_sheet);
-		case FLAC__METADATA_TYPE_PICTURE:
-			return compare_block_data_picture_(&block1->data.picture, &block2->data.picture);
-		default:
-			return compare_block_data_unknown_(&block1->data.unknown, &block2->data.unknown, block1->length);
-	}
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_application_set_data(FLAC__StreamMetadata *object, FLAC__byte *data, unsigned length, FLAC__bool copy)
-{
-	FLAC__byte *save;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_APPLICATION);
-	FLAC__ASSERT((0 != data && length > 0) || (0 == data && length == 0 && copy == false));
-
-	save = object->data.application.data;
-
-	/* do the copy first so that if we fail we leave the object untouched */
-	if(copy) {
-		if(!copy_bytes_(&object->data.application.data, data, length))
-			return false;
-	}
-	else {
-		object->data.application.data = data;
-	}
-
-	if(0 != save)
-		free(save);
-
-	object->length = FLAC__STREAM_METADATA_APPLICATION_ID_LEN / 8 + length;
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_resize_points(FLAC__StreamMetadata *object, unsigned new_num_points)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-
-	if(0 == object->data.seek_table.points) {
-		FLAC__ASSERT(object->data.seek_table.num_points == 0);
-		if(0 == new_num_points)
-			return true;
-		else if(0 == (object->data.seek_table.points = seekpoint_array_new_(new_num_points)))
-			return false;
-	}
-	else {
-		const size_t old_size = object->data.seek_table.num_points * sizeof(FLAC__StreamMetadata_SeekPoint);
-		const size_t new_size = new_num_points * sizeof(FLAC__StreamMetadata_SeekPoint);
-
-		/* overflow check */
-		if((size_t)new_num_points > SIZE_MAX / sizeof(FLAC__StreamMetadata_SeekPoint))
-			return false;
-
-		FLAC__ASSERT(object->data.seek_table.num_points > 0);
-
-		if(new_size == 0) {
-			free(object->data.seek_table.points);
-			object->data.seek_table.points = 0;
-		}
-		else if(0 == (object->data.seek_table.points = (FLAC__StreamMetadata_SeekPoint*)realloc(object->data.seek_table.points, new_size)))
-			return false;
-
-		/* if growing, set new elements to placeholders */
-		if(new_size > old_size) {
-			unsigned i;
-			for(i = object->data.seek_table.num_points; i < new_num_points; i++) {
-				object->data.seek_table.points[i].sample_number = FLAC__STREAM_METADATA_SEEKPOINT_PLACEHOLDER;
-				object->data.seek_table.points[i].stream_offset = 0;
-				object->data.seek_table.points[i].frame_samples = 0;
-			}
-		}
-	}
-
-	object->data.seek_table.num_points = new_num_points;
-
-	seektable_calculate_length_(object);
-	return true;
-}
-
-FLAC_API void FLAC__metadata_object_seektable_set_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-	FLAC__ASSERT(point_num < object->data.seek_table.num_points);
-
-	object->data.seek_table.points[point_num] = point;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_insert_point(FLAC__StreamMetadata *object, unsigned point_num, FLAC__StreamMetadata_SeekPoint point)
-{
-	int i;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-	FLAC__ASSERT(point_num <= object->data.seek_table.num_points);
-
-	if(!FLAC__metadata_object_seektable_resize_points(object, object->data.seek_table.num_points+1))
-		return false;
-
-	/* move all points >= point_num forward one space */
-	for(i = (int)object->data.seek_table.num_points-1; i > (int)point_num; i--)
-		object->data.seek_table.points[i] = object->data.seek_table.points[i-1];
-
-	FLAC__metadata_object_seektable_set_point(object, point_num, point);
-	seektable_calculate_length_(object);
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_delete_point(FLAC__StreamMetadata *object, unsigned point_num)
-{
-	unsigned i;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-	FLAC__ASSERT(point_num < object->data.seek_table.num_points);
-
-	/* move all points > point_num backward one space */
-	for(i = point_num; i < object->data.seek_table.num_points-1; i++)
-		object->data.seek_table.points[i] = object->data.seek_table.points[i+1];
-
-	return FLAC__metadata_object_seektable_resize_points(object, object->data.seek_table.num_points-1);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_is_legal(const FLAC__StreamMetadata *object)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-
-	return FLAC__format_seektable_is_legal(&object->data.seek_table);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_placeholders(FLAC__StreamMetadata *object, unsigned num)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-
-	if(num > 0)
-		/* WATCHOUT: we rely on the fact that growing the array adds PLACEHOLDERS at the end */
-		return FLAC__metadata_object_seektable_resize_points(object, object->data.seek_table.num_points + num);
-	else
-		return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_point(FLAC__StreamMetadata *object, FLAC__uint64 sample_number)
-{
-	FLAC__StreamMetadata_SeekTable *seek_table;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-
-	seek_table = &object->data.seek_table;
-
-	if(!FLAC__metadata_object_seektable_resize_points(object, seek_table->num_points + 1))
-		return false;
-
-	seek_table->points[seek_table->num_points - 1].sample_number = sample_number;
-	seek_table->points[seek_table->num_points - 1].stream_offset = 0;
-	seek_table->points[seek_table->num_points - 1].frame_samples = 0;
-
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_points(FLAC__StreamMetadata *object, FLAC__uint64 sample_numbers[], unsigned num)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-	FLAC__ASSERT(0 != sample_numbers || num == 0);
-
-	if(num > 0) {
-		FLAC__StreamMetadata_SeekTable *seek_table = &object->data.seek_table;
-		unsigned i, j;
-
-		i = seek_table->num_points;
-
-		if(!FLAC__metadata_object_seektable_resize_points(object, seek_table->num_points + num))
-			return false;
-
-		for(j = 0; j < num; i++, j++) {
-			seek_table->points[i].sample_number = sample_numbers[j];
-			seek_table->points[i].stream_offset = 0;
-			seek_table->points[i].frame_samples = 0;
-		}
-	}
-
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points(FLAC__StreamMetadata *object, unsigned num, FLAC__uint64 total_samples)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-	FLAC__ASSERT(total_samples > 0);
-
-	if(num > 0 && total_samples > 0) {
-		FLAC__StreamMetadata_SeekTable *seek_table = &object->data.seek_table;
-		unsigned i, j;
-
-		i = seek_table->num_points;
-
-		if(!FLAC__metadata_object_seektable_resize_points(object, seek_table->num_points + num))
-			return false;
-
-		for(j = 0; j < num; i++, j++) {
-			seek_table->points[i].sample_number = total_samples * (FLAC__uint64)j / (FLAC__uint64)num;
-			seek_table->points[i].stream_offset = 0;
-			seek_table->points[i].frame_samples = 0;
-		}
-	}
-
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_append_spaced_points_by_samples(FLAC__StreamMetadata *object, unsigned samples, FLAC__uint64 total_samples)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-	FLAC__ASSERT(samples > 0);
-	FLAC__ASSERT(total_samples > 0);
-
-	if(samples > 0 && total_samples > 0) {
-		FLAC__StreamMetadata_SeekTable *seek_table = &object->data.seek_table;
-		unsigned i, j;
-		FLAC__uint64 num, sample;
-
-		num = 1 + total_samples / samples; /* 1+ for the first sample at 0 */
-		/* now account for the fact that we don't place a seekpoint at "total_samples" since samples are number from 0: */
-		if(total_samples % samples == 0)
-			num--;
-
-		i = seek_table->num_points;
-
-		if(!FLAC__metadata_object_seektable_resize_points(object, seek_table->num_points + (unsigned)num))
-			return false;
-
-		sample = 0;
-		for(j = 0; j < num; i++, j++, sample += samples) {
-			seek_table->points[i].sample_number = sample;
-			seek_table->points[i].stream_offset = 0;
-			seek_table->points[i].frame_samples = 0;
-		}
-	}
-
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_seektable_template_sort(FLAC__StreamMetadata *object, FLAC__bool compact)
-{
-	unsigned unique;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_SEEKTABLE);
-
-	unique = FLAC__format_seektable_sort(&object->data.seek_table);
-
-	return !compact || FLAC__metadata_object_seektable_resize_points(object, unique);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_vendor_string(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
-{
-	if(!FLAC__format_vorbiscomment_entry_value_is_legal(entry.entry, entry.length))
-		return false;
-	return vorbiscomment_set_entry_(object, &object->data.vorbis_comment.vendor_string, &entry, copy);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_resize_comments(FLAC__StreamMetadata *object, unsigned new_num_comments)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-
-	if(0 == object->data.vorbis_comment.comments) {
-		FLAC__ASSERT(object->data.vorbis_comment.num_comments == 0);
-		if(0 == new_num_comments)
-			return true;
-		else if(0 == (object->data.vorbis_comment.comments = vorbiscomment_entry_array_new_(new_num_comments)))
-			return false;
-	}
-	else {
-		const size_t old_size = object->data.vorbis_comment.num_comments * sizeof(FLAC__StreamMetadata_VorbisComment_Entry);
-		const size_t new_size = new_num_comments * sizeof(FLAC__StreamMetadata_VorbisComment_Entry);
-
-		/* overflow check */
-		if((size_t)new_num_comments > SIZE_MAX / sizeof(FLAC__StreamMetadata_VorbisComment_Entry))
-			return false;
-
-		FLAC__ASSERT(object->data.vorbis_comment.num_comments > 0);
-
-		/* if shrinking, free the truncated entries */
-		if(new_num_comments < object->data.vorbis_comment.num_comments) {
-			unsigned i;
-			for(i = new_num_comments; i < object->data.vorbis_comment.num_comments; i++)
-				if(0 != object->data.vorbis_comment.comments[i].entry)
-					free(object->data.vorbis_comment.comments[i].entry);
-		}
-
-		if(new_size == 0) {
-			free(object->data.vorbis_comment.comments);
-			object->data.vorbis_comment.comments = 0;
-		}
-		else if(0 == (object->data.vorbis_comment.comments = (FLAC__StreamMetadata_VorbisComment_Entry*)realloc(object->data.vorbis_comment.comments, new_size)))
-			return false;
-
-		/* if growing, zero all the length/pointers of new elements */
-		if(new_size > old_size)
-			memset(object->data.vorbis_comment.comments + object->data.vorbis_comment.num_comments, 0, new_size - old_size);
-	}
-
-	object->data.vorbis_comment.num_comments = new_num_comments;
-
-	vorbiscomment_calculate_length_(object);
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_set_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(comment_num < object->data.vorbis_comment.num_comments);
-
-	if(!FLAC__format_vorbiscomment_entry_is_legal(entry.entry, entry.length))
-		return false;
-	return vorbiscomment_set_entry_(object, &object->data.vorbis_comment.comments[comment_num], &entry, copy);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_insert_comment(FLAC__StreamMetadata *object, unsigned comment_num, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
-{
-	FLAC__StreamMetadata_VorbisComment *vc;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-	FLAC__ASSERT(comment_num <= object->data.vorbis_comment.num_comments);
-
-	if(!FLAC__format_vorbiscomment_entry_is_legal(entry.entry, entry.length))
-		return false;
-
-	vc = &object->data.vorbis_comment;
-
-	if(!FLAC__metadata_object_vorbiscomment_resize_comments(object, vc->num_comments+1))
-		return false;
-
-	/* move all comments >= comment_num forward one space */
-	memmove(&vc->comments[comment_num+1], &vc->comments[comment_num], sizeof(FLAC__StreamMetadata_VorbisComment_Entry)*(vc->num_comments-1-comment_num));
-	vc->comments[comment_num].length = 0;
-	vc->comments[comment_num].entry = 0;
-
-	return FLAC__metadata_object_vorbiscomment_set_comment(object, comment_num, entry, copy);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_append_comment(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool copy)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-	return FLAC__metadata_object_vorbiscomment_insert_comment(object, object->data.vorbis_comment.num_comments, entry, copy);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_replace_comment(FLAC__StreamMetadata *object, FLAC__StreamMetadata_VorbisComment_Entry entry, FLAC__bool all, FLAC__bool copy)
-{
-	FLAC__ASSERT(0 != entry.entry && entry.length > 0);
-
-	if(!FLAC__format_vorbiscomment_entry_is_legal(entry.entry, entry.length))
-		return false;
-
-	{
-		int i;
-		size_t field_name_length;
-		const FLAC__byte *eq = (FLAC__byte*)memchr(entry.entry, '=', entry.length);
-
-		FLAC__ASSERT(0 != eq);
-
-		if(0 == eq)
-			return false; /* double protection */
-
-		field_name_length = eq-entry.entry;
-
-		if((i = vorbiscomment_find_entry_from_(object, 0, (const char *)entry.entry, field_name_length)) >= 0) {
-			unsigned index = (unsigned)i;
-			if(!FLAC__metadata_object_vorbiscomment_set_comment(object, index, entry, copy))
-				return false;
-			if(all && (index+1 < object->data.vorbis_comment.num_comments)) {
-				for(i = vorbiscomment_find_entry_from_(object, index+1, (const char *)entry.entry, field_name_length); i >= 0; ) {
-					if(!FLAC__metadata_object_vorbiscomment_delete_comment(object, (unsigned)i))
-						return false;
-					if((unsigned)i < object->data.vorbis_comment.num_comments)
-						i = vorbiscomment_find_entry_from_(object, (unsigned)i, (const char *)entry.entry, field_name_length);
-					else
-						i = -1;
-				}
-			}
-			return true;
-		}
-		else
-			return FLAC__metadata_object_vorbiscomment_append_comment(object, entry, copy);
-	}
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_delete_comment(FLAC__StreamMetadata *object, unsigned comment_num)
-{
-	FLAC__StreamMetadata_VorbisComment *vc;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-	FLAC__ASSERT(comment_num < object->data.vorbis_comment.num_comments);
-
-	vc = &object->data.vorbis_comment;
-
-	/* free the comment at comment_num */
-	if(0 != vc->comments[comment_num].entry)
-		free(vc->comments[comment_num].entry);
-
-	/* move all comments > comment_num backward one space */
-	memmove(&vc->comments[comment_num], &vc->comments[comment_num+1], sizeof(FLAC__StreamMetadata_VorbisComment_Entry)*(vc->num_comments-comment_num-1));
-	vc->comments[vc->num_comments-1].length = 0;
-	vc->comments[vc->num_comments-1].entry = 0;
-
-	return FLAC__metadata_object_vorbiscomment_resize_comments(object, vc->num_comments-1);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_from_name_value_pair(FLAC__StreamMetadata_VorbisComment_Entry *entry, const char *field_name, const char *field_value)
-{
-	FLAC__ASSERT(0 != entry);
-	FLAC__ASSERT(0 != field_name);
-	FLAC__ASSERT(0 != field_value);
-
-	if(!FLAC__format_vorbiscomment_entry_name_is_legal(field_name))
-		return false;
-	if(!FLAC__format_vorbiscomment_entry_value_is_legal((const FLAC__byte *)field_value, (unsigned)(-1)))
-		return false;
-
-	{
-		const size_t nn = strlen(field_name);
-		const size_t nv = strlen(field_value);
-		entry->length = nn + 1 /*=*/ + nv;
-		if(0 == (entry->entry = (FLAC__byte*)safe_malloc_add_4op_(nn, /*+*/1, /*+*/nv, /*+*/1)))
-			return false;
-		memcpy(entry->entry, field_name, nn);
-		entry->entry[nn] = '=';
-		memcpy(entry->entry+nn+1, field_value, nv);
-		entry->entry[entry->length] = '\0';
-	}
-	
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_to_name_value_pair(const FLAC__StreamMetadata_VorbisComment_Entry entry, char **field_name, char **field_value)
-{
-	FLAC__ASSERT(0 != entry.entry && entry.length > 0);
-	FLAC__ASSERT(0 != field_name);
-	FLAC__ASSERT(0 != field_value);
-
-	if(!FLAC__format_vorbiscomment_entry_is_legal(entry.entry, entry.length))
-		return false;
-
-	{
-		const FLAC__byte *eq = (FLAC__byte*)memchr(entry.entry, '=', entry.length);
-		const size_t nn = eq-entry.entry;
-		const size_t nv = entry.length-nn-1; /* -1 for the '=' */
-		FLAC__ASSERT(0 != eq);
-		if(0 == eq)
-			return false; /* double protection */
-		if(0 == (*field_name = (char*)safe_malloc_add_2op_(nn, /*+*/1)))
-			return false;
-		if(0 == (*field_value = (char*)safe_malloc_add_2op_(nv, /*+*/1))) {
-			free(*field_name);
-			return false;
-		}
-		memcpy(*field_name, entry.entry, nn);
-		memcpy(*field_value, entry.entry+nn+1, nv);
-		(*field_name)[nn] = '\0';
-		(*field_value)[nv] = '\0';
-	}
-
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_vorbiscomment_entry_matches(const FLAC__StreamMetadata_VorbisComment_Entry entry, const char *field_name, unsigned field_name_length)
-{
-	FLAC__ASSERT(0 != entry.entry && entry.length > 0);
-	{
-		const FLAC__byte *eq = (FLAC__byte*)memchr(entry.entry, '=', entry.length);
-#if defined _MSC_VER || defined __BORLANDC__ || defined __MINGW32__ || defined __EMX__
-#define FLAC__STRNCASECMP strnicmp
-#else
-#define FLAC__STRNCASECMP strncasecmp
-#endif
-		return (0 != eq && (unsigned)(eq-entry.entry) == field_name_length && 0 == FLAC__STRNCASECMP(field_name, (const char *)entry.entry, field_name_length));
-#undef FLAC__STRNCASECMP
-	}
-}
-
-FLAC_API int FLAC__metadata_object_vorbiscomment_find_entry_from(const FLAC__StreamMetadata *object, unsigned offset, const char *field_name)
-{
-	FLAC__ASSERT(0 != field_name);
-
-	return vorbiscomment_find_entry_from_(object, offset, field_name, strlen(field_name));
-}
-
-FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entry_matching(FLAC__StreamMetadata *object, const char *field_name)
-{
-	const unsigned field_name_length = strlen(field_name);
-	unsigned i;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-
-	for(i = 0; i < object->data.vorbis_comment.num_comments; i++) {
-		if(FLAC__metadata_object_vorbiscomment_entry_matches(object->data.vorbis_comment.comments[i], field_name, field_name_length)) {
-			if(!FLAC__metadata_object_vorbiscomment_delete_comment(object, i))
-				return -1;
-			else
-				return 1;
-		}
-	}
-
-	return 0;
-}
-
-FLAC_API int FLAC__metadata_object_vorbiscomment_remove_entries_matching(FLAC__StreamMetadata *object, const char *field_name)
-{
-	FLAC__bool ok = true;
-	unsigned matching = 0;
-	const unsigned field_name_length = strlen(field_name);
-	int i;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
-
-	/* must delete from end to start otherwise it will interfere with our iteration */
-	for(i = (int)object->data.vorbis_comment.num_comments - 1; ok && i >= 0; i--) {
-		if(FLAC__metadata_object_vorbiscomment_entry_matches(object->data.vorbis_comment.comments[i], field_name, field_name_length)) {
-			matching++;
-			ok &= FLAC__metadata_object_vorbiscomment_delete_comment(object, (unsigned)i);
-		}
-	}
-
-	return ok? (int)matching : -1;
-}
-
-FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_new(void)
-{
-	return (FLAC__StreamMetadata_CueSheet_Track*)calloc(1, sizeof(FLAC__StreamMetadata_CueSheet_Track));
-}
-
-FLAC_API FLAC__StreamMetadata_CueSheet_Track *FLAC__metadata_object_cuesheet_track_clone(const FLAC__StreamMetadata_CueSheet_Track *object)
-{
-	FLAC__StreamMetadata_CueSheet_Track *to;
-
-	FLAC__ASSERT(0 != object);
-
-	if(0 != (to = FLAC__metadata_object_cuesheet_track_new())) {
-		if(!copy_track_(to, object)) {
-			FLAC__metadata_object_cuesheet_track_delete(to);
-			return 0;
-		}
-	}
-
-	return to;
-}
-
-void FLAC__metadata_object_cuesheet_track_delete_data(FLAC__StreamMetadata_CueSheet_Track *object)
-{
-	FLAC__ASSERT(0 != object);
-
-	if(0 != object->indices) {
-		FLAC__ASSERT(object->num_indices > 0);
-		free(object->indices);
-	}
-}
-
-FLAC_API void FLAC__metadata_object_cuesheet_track_delete(FLAC__StreamMetadata_CueSheet_Track *object)
-{
-	FLAC__metadata_object_cuesheet_track_delete_data(object);
-	free(object);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_resize_indices(FLAC__StreamMetadata *object, unsigned track_num, unsigned new_num_indices)
-{
-	FLAC__StreamMetadata_CueSheet_Track *track;
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_CUESHEET);
-	FLAC__ASSERT(track_num < object->data.cue_sheet.num_tracks);
-
-	track = &object->data.cue_sheet.tracks[track_num];
-
-	if(0 == track->indices) {
-		FLAC__ASSERT(track->num_indices == 0);
-		if(0 == new_num_indices)
-			return true;
-		else if(0 == (track->indices = cuesheet_track_index_array_new_(new_num_indices)))
-			return false;
-	}
-	else {
-		const size_t old_size = track->num_indices * sizeof(FLAC__StreamMetadata_CueSheet_Index);
-		const size_t new_size = new_num_indices * sizeof(FLAC__StreamMetadata_CueSheet_Index);
-
-		/* overflow check */
-		if((size_t)new_num_indices > SIZE_MAX / sizeof(FLAC__StreamMetadata_CueSheet_Index))
-			return false;
-
-		FLAC__ASSERT(track->num_indices > 0);
-
-		if(new_size == 0) {
-			free(track->indices);
-			track->indices = 0;
-		}
-		else if(0 == (track->indices = (FLAC__StreamMetadata_CueSheet_Index*)realloc(track->indices, new_size)))
-			return false;
-
-		/* if growing, zero all the lengths/pointers of new elements */
-		if(new_size > old_size)
-			memset(track->indices + track->num_indices, 0, new_size - old_size);
-	}
-
-	track->num_indices = new_num_indices;
-
-	cuesheet_calculate_length_(object);
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_insert_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num, FLAC__StreamMetadata_CueSheet_Index index)
-{
-	FLAC__StreamMetadata_CueSheet_Track *track;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_CUESHEET);
-	FLAC__ASSERT(track_num < object->data.cue_sheet.num_tracks);
-	FLAC__ASSERT(index_num <= object->data.cue_sheet.tracks[track_num].num_indices);
-
-	track = &object->data.cue_sheet.tracks[track_num];
-
-	if(!FLAC__metadata_object_cuesheet_track_resize_indices(object, track_num, track->num_indices+1))
-		return false;
-
-	/* move all indices >= index_num forward one space */
-	memmove(&track->indices[index_num+1], &track->indices[index_num], sizeof(FLAC__StreamMetadata_CueSheet_Index)*(track->num_indices-1-index_num));
-
-	track->indices[index_num] = index;
-	cuesheet_calculate_length_(object);
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_insert_blank_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num)
-{
-	FLAC__StreamMetadata_CueSheet_Index index;
-	memset(&index, 0, sizeof(index));
-	return FLAC__metadata_object_cuesheet_track_insert_index(object, track_num, index_num, index);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_track_delete_index(FLAC__StreamMetadata *object, unsigned track_num, unsigned index_num)
-{
-	FLAC__StreamMetadata_CueSheet_Track *track;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_CUESHEET);
-	FLAC__ASSERT(track_num < object->data.cue_sheet.num_tracks);
-	FLAC__ASSERT(index_num < object->data.cue_sheet.tracks[track_num].num_indices);
-
-	track = &object->data.cue_sheet.tracks[track_num];
-
-	/* move all indices > index_num backward one space */
-	memmove(&track->indices[index_num], &track->indices[index_num+1], sizeof(FLAC__StreamMetadata_CueSheet_Index)*(track->num_indices-index_num-1));
-
-	FLAC__metadata_object_cuesheet_track_resize_indices(object, track_num, track->num_indices-1);
-	cuesheet_calculate_length_(object);
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_resize_tracks(FLAC__StreamMetadata *object, unsigned new_num_tracks)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_CUESHEET);
-
-	if(0 == object->data.cue_sheet.tracks) {
-		FLAC__ASSERT(object->data.cue_sheet.num_tracks == 0);
-		if(0 == new_num_tracks)
-			return true;
-		else if(0 == (object->data.cue_sheet.tracks = cuesheet_track_array_new_(new_num_tracks)))
-			return false;
-	}
-	else {
-		const size_t old_size = object->data.cue_sheet.num_tracks * sizeof(FLAC__StreamMetadata_CueSheet_Track);
-		const size_t new_size = new_num_tracks * sizeof(FLAC__StreamMetadata_CueSheet_Track);
-
-		/* overflow check */
-		if((size_t)new_num_tracks > SIZE_MAX / sizeof(FLAC__StreamMetadata_CueSheet_Track))
-			return false;
-
-		FLAC__ASSERT(object->data.cue_sheet.num_tracks > 0);
-
-		/* if shrinking, free the truncated entries */
-		if(new_num_tracks < object->data.cue_sheet.num_tracks) {
-			unsigned i;
-			for(i = new_num_tracks; i < object->data.cue_sheet.num_tracks; i++)
-				if(0 != object->data.cue_sheet.tracks[i].indices)
-					free(object->data.cue_sheet.tracks[i].indices);
-		}
-
-		if(new_size == 0) {
-			free(object->data.cue_sheet.tracks);
-			object->data.cue_sheet.tracks = 0;
-		}
-		else if(0 == (object->data.cue_sheet.tracks = (FLAC__StreamMetadata_CueSheet_Track*)realloc(object->data.cue_sheet.tracks, new_size)))
-			return false;
-
-		/* if growing, zero all the lengths/pointers of new elements */
-		if(new_size > old_size)
-			memset(object->data.cue_sheet.tracks + object->data.cue_sheet.num_tracks, 0, new_size - old_size);
-	}
-
-	object->data.cue_sheet.num_tracks = new_num_tracks;
-
-	cuesheet_calculate_length_(object);
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_set_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(track_num < object->data.cue_sheet.num_tracks);
-
-	return cuesheet_set_track_(object, object->data.cue_sheet.tracks + track_num, track, copy);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_track(FLAC__StreamMetadata *object, unsigned track_num, FLAC__StreamMetadata_CueSheet_Track *track, FLAC__bool copy)
-{
-	FLAC__StreamMetadata_CueSheet *cs;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_CUESHEET);
-	FLAC__ASSERT(track_num <= object->data.cue_sheet.num_tracks);
-
-	cs = &object->data.cue_sheet;
-
-	if(!FLAC__metadata_object_cuesheet_resize_tracks(object, cs->num_tracks+1))
-		return false;
-
-	/* move all tracks >= track_num forward one space */
-	memmove(&cs->tracks[track_num+1], &cs->tracks[track_num], sizeof(FLAC__StreamMetadata_CueSheet_Track)*(cs->num_tracks-1-track_num));
-	cs->tracks[track_num].num_indices = 0;
-	cs->tracks[track_num].indices = 0;
-
-	return FLAC__metadata_object_cuesheet_set_track(object, track_num, track, copy);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_insert_blank_track(FLAC__StreamMetadata *object, unsigned track_num)
-{
-	FLAC__StreamMetadata_CueSheet_Track track;
-	memset(&track, 0, sizeof(track));
-	return FLAC__metadata_object_cuesheet_insert_track(object, track_num, &track, /*copy=*/false);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_delete_track(FLAC__StreamMetadata *object, unsigned track_num)
-{
-	FLAC__StreamMetadata_CueSheet *cs;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_CUESHEET);
-	FLAC__ASSERT(track_num < object->data.cue_sheet.num_tracks);
-
-	cs = &object->data.cue_sheet;
-
-	/* free the track at track_num */
-	if(0 != cs->tracks[track_num].indices)
-		free(cs->tracks[track_num].indices);
-
-	/* move all tracks > track_num backward one space */
-	memmove(&cs->tracks[track_num], &cs->tracks[track_num+1], sizeof(FLAC__StreamMetadata_CueSheet_Track)*(cs->num_tracks-track_num-1));
-	cs->tracks[cs->num_tracks-1].num_indices = 0;
-	cs->tracks[cs->num_tracks-1].indices = 0;
-
-	return FLAC__metadata_object_cuesheet_resize_tracks(object, cs->num_tracks-1);
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_cuesheet_is_legal(const FLAC__StreamMetadata *object, FLAC__bool check_cd_da_subset, const char **violation)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_CUESHEET);
-
-	return FLAC__format_cuesheet_is_legal(&object->data.cue_sheet, check_cd_da_subset, violation);
-}
-
-static FLAC__uint64 get_index_01_offset_(const FLAC__StreamMetadata_CueSheet *cs, unsigned track)
-{
-	if (track >= (cs->num_tracks-1) || cs->tracks[track].num_indices < 1)
-		return 0;
-	else if (cs->tracks[track].indices[0].number == 1)
-		return cs->tracks[track].indices[0].offset + cs->tracks[track].offset + cs->lead_in;
-	else if (cs->tracks[track].num_indices < 2)
-		return 0;
-	else if (cs->tracks[track].indices[1].number == 1)
-		return cs->tracks[track].indices[1].offset + cs->tracks[track].offset + cs->lead_in;
-	else
-		return 0;
-}
-
-static FLAC__uint32 cddb_add_digits_(FLAC__uint32 x)
-{
-	FLAC__uint32 n = 0;
-	while (x) {
-		n += (x%10);
-		x /= 10;
-	}
-	return n;
-}
-
-/*@@@@add to tests*/
-FLAC_API FLAC__uint32 FLAC__metadata_object_cuesheet_calculate_cddb_id(const FLAC__StreamMetadata *object)
-{
-	const FLAC__StreamMetadata_CueSheet *cs;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_CUESHEET);
-
-	cs = &object->data.cue_sheet;
-
-	if (cs->num_tracks < 2) /* need at least one real track and the lead-out track */
-		return 0;
-
-	{
-		FLAC__uint32 i, length, sum = 0;
-		for (i = 0; i < (cs->num_tracks-1); i++) /* -1 to avoid counting the lead-out */
-			sum += cddb_add_digits_((FLAC__uint32)(get_index_01_offset_(cs, i) / 44100));
-		length = (FLAC__uint32)((cs->tracks[cs->num_tracks-1].offset+cs->lead_in) / 44100) - (FLAC__uint32)(get_index_01_offset_(cs, 0) / 44100);
-
-		return (sum % 0xFF) << 24 | length << 8 | (FLAC__uint32)(cs->num_tracks-1);
-	}
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_picture_set_mime_type(FLAC__StreamMetadata *object, char *mime_type, FLAC__bool copy)
-{
-	char *old;
-	size_t old_length, new_length;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_PICTURE);
-	FLAC__ASSERT(0 != mime_type);
-
-	old = object->data.picture.mime_type;
-	old_length = old? strlen(old) : 0;
-	new_length = strlen(mime_type);
-
-	/* do the copy first so that if we fail we leave the object untouched */
-	if(copy) {
-		if(new_length >= SIZE_MAX) /* overflow check */
-			return false;
-		if(!copy_bytes_((FLAC__byte**)(&object->data.picture.mime_type), (FLAC__byte*)mime_type, new_length+1))
-			return false;
-	}
-	else {
-		object->data.picture.mime_type = mime_type;
-	}
-
-	if(0 != old)
-		free(old);
-
-	object->length -= old_length;
-	object->length += new_length;
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_picture_set_description(FLAC__StreamMetadata *object, FLAC__byte *description, FLAC__bool copy)
-{
-	FLAC__byte *old;
-	size_t old_length, new_length;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_PICTURE);
-	FLAC__ASSERT(0 != description);
-
-	old = object->data.picture.description;
-	old_length = old? strlen((const char *)old) : 0;
-	new_length = strlen((const char *)description);
-
-	/* do the copy first so that if we fail we leave the object untouched */
-	if(copy) {
-		if(new_length >= SIZE_MAX) /* overflow check */
-			return false;
-		if(!copy_bytes_(&object->data.picture.description, description, new_length+1))
-			return false;
-	}
-	else {
-		object->data.picture.description = description;
-	}
-
-	if(0 != old)
-		free(old);
-
-	object->length -= old_length;
-	object->length += new_length;
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_picture_set_data(FLAC__StreamMetadata *object, FLAC__byte *data, FLAC__uint32 length, FLAC__bool copy)
-{
-	FLAC__byte *old;
-
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_PICTURE);
-	FLAC__ASSERT((0 != data && length > 0) || (0 == data && length == 0 && copy == false));
-
-	old = object->data.picture.data;
-
-	/* do the copy first so that if we fail we leave the object untouched */
-	if(copy) {
-		if(!copy_bytes_(&object->data.picture.data, data, length))
-			return false;
-	}
-	else {
-		object->data.picture.data = data;
-	}
-
-	if(0 != old)
-		free(old);
-
-	object->length -= object->data.picture.data_length;
-	object->data.picture.data_length = length;
-	object->length += length;
-	return true;
-}
-
-FLAC_API FLAC__bool FLAC__metadata_object_picture_is_legal(const FLAC__StreamMetadata *object, const char **violation)
-{
-	FLAC__ASSERT(0 != object);
-	FLAC__ASSERT(object->type == FLAC__METADATA_TYPE_PICTURE);
-
-	return FLAC__format_picture_is_legal(&object->data.picture, violation);
-}
diff --git a/libFLAC/ogg_decoder_aspect.c b/libFLAC/ogg_decoder_aspect.c
deleted file mode 100644
index 6974de3..0000000
--- a/libFLAC/ogg_decoder_aspect.c
+++ /dev/null
@@ -1,253 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec
- * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <string.h> /* for memcpy() */
-#include "FLAC/assert.h"
-#include "private/ogg_decoder_aspect.h"
-#include "private/ogg_mapping.h"
-
-#ifdef max
-#undef max
-#endif
-#define max(x,y) ((x)>(y)?(x):(y))
-
-/***********************************************************************
- *
- * Public class methods
- *
- ***********************************************************************/
-
-FLAC__bool FLAC__ogg_decoder_aspect_init(FLAC__OggDecoderAspect *aspect)
-{
-	/* we will determine the serial number later if necessary */
-	if(ogg_stream_init(&aspect->stream_state, aspect->serial_number) != 0)
-		return false;
-
-	if(ogg_sync_init(&aspect->sync_state) != 0)
-		return false;
-
-	aspect->version_major = ~(0u);
-	aspect->version_minor = ~(0u);
-
-	aspect->need_serial_number = aspect->use_first_serial_number;
-
-	aspect->end_of_stream = false;
-	aspect->have_working_page = false;
-
-	return true;
-}
-
-void FLAC__ogg_decoder_aspect_finish(FLAC__OggDecoderAspect *aspect)
-{
-	(void)ogg_sync_clear(&aspect->sync_state);
-	(void)ogg_stream_clear(&aspect->stream_state);
-}
-
-void FLAC__ogg_decoder_aspect_set_serial_number(FLAC__OggDecoderAspect *aspect, long value)
-{
-	aspect->use_first_serial_number = false;
-	aspect->serial_number = value;
-}
-
-void FLAC__ogg_decoder_aspect_set_defaults(FLAC__OggDecoderAspect *aspect)
-{
-	aspect->use_first_serial_number = true;
-}
-
-void FLAC__ogg_decoder_aspect_flush(FLAC__OggDecoderAspect *aspect)
-{
-	(void)ogg_stream_reset(&aspect->stream_state);
-	(void)ogg_sync_reset(&aspect->sync_state);
-	aspect->end_of_stream = false;
-	aspect->have_working_page = false;
-}
-
-void FLAC__ogg_decoder_aspect_reset(FLAC__OggDecoderAspect *aspect)
-{
-	FLAC__ogg_decoder_aspect_flush(aspect);
-
-	if(aspect->use_first_serial_number)
-		aspect->need_serial_number = true;
-}
-
-FLAC__OggDecoderAspectReadStatus FLAC__ogg_decoder_aspect_read_callback_wrapper(FLAC__OggDecoderAspect *aspect, FLAC__byte buffer[], size_t *bytes, FLAC__OggDecoderAspectReadCallbackProxy read_callback, const FLAC__StreamDecoder *decoder, void *client_data)
-{
-	static const size_t OGG_BYTES_CHUNK = 8192;
-	const size_t bytes_requested = *bytes;
-
-	/*
-	 * The FLAC decoding API uses pull-based reads, whereas Ogg decoding
-	 * is push-based.  In libFLAC, when you ask to decode a frame, the
-	 * decoder will eventually call the read callback to supply some data,
-	 * but how much it asks for depends on how much free space it has in
-	 * its internal buffer.  It does not try to grow its internal buffer
-	 * to accomodate a whole frame because then the internal buffer size
-	 * could not be limited, which is necessary in embedded applications.
-	 *
-	 * Ogg however grows its internal buffer until a whole page is present;
-	 * only then can you get decoded data out.  So we can't just ask for
-	 * the same number of bytes from Ogg, then pass what's decoded down to
-	 * libFLAC.  If what libFLAC is asking for will not contain a whole
-	 * page, then we will get no data from ogg_sync_pageout(), and at the
-	 * same time cannot just read more data from the client for the purpose
-	 * of getting a whole decoded page because the decoded size might be
-	 * larger than libFLAC's internal buffer.
-	 *
-	 * Instead, whenever this read callback wrapper is called, we will
-	 * continually request data from the client until we have at least one
-	 * page, and manage pages internally so that we can send pieces of
-	 * pages down to libFLAC in such a way that we obey its size
-	 * requirement.  To limit the amount of callbacks, we will always try
-	 * to read in enough pages to return the full number of bytes
-	 * requested.
-	 */
-	*bytes = 0;
-	while (*bytes < bytes_requested && !aspect->end_of_stream) {
-		if (aspect->have_working_page) {
-			if (aspect->have_working_packet) {
-				size_t n = bytes_requested - *bytes;
-				if ((size_t)aspect->working_packet.bytes <= n) {
-					/* the rest of the packet will fit in the buffer */
-					n = aspect->working_packet.bytes;
-					memcpy(buffer, aspect->working_packet.packet, n);
-					*bytes += n;
-					buffer += n;
-					aspect->have_working_packet = false;
-				}
-				else {
-					/* only n bytes of the packet will fit in the buffer */
-					memcpy(buffer, aspect->working_packet.packet, n);
-					*bytes += n;
-					buffer += n;
-					aspect->working_packet.packet += n;
-					aspect->working_packet.bytes -= n;
-				}
-			}
-			else {
-				/* try and get another packet */
-				const int ret = ogg_stream_packetout(&aspect->stream_state, &aspect->working_packet);
-				if (ret > 0) {
-					aspect->have_working_packet = true;
-					/* if it is the first header packet, check for magic and a supported Ogg FLAC mapping version */
-					if (aspect->working_packet.bytes > 0 && aspect->working_packet.packet[0] == FLAC__OGG_MAPPING_FIRST_HEADER_PACKET_TYPE) {
-						const FLAC__byte *b = aspect->working_packet.packet;
-						const unsigned header_length =
-							FLAC__OGG_MAPPING_PACKET_TYPE_LENGTH +
-							FLAC__OGG_MAPPING_MAGIC_LENGTH +
-							FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH +
-							FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH +
-							FLAC__OGG_MAPPING_NUM_HEADERS_LENGTH;
-						if (aspect->working_packet.bytes < (long)header_length)
-							return FLAC__OGG_DECODER_ASPECT_READ_STATUS_NOT_FLAC;
-						b += FLAC__OGG_MAPPING_PACKET_TYPE_LENGTH;
-						if (memcmp(b, FLAC__OGG_MAPPING_MAGIC, FLAC__OGG_MAPPING_MAGIC_LENGTH))
-							return FLAC__OGG_DECODER_ASPECT_READ_STATUS_NOT_FLAC;
-						b += FLAC__OGG_MAPPING_MAGIC_LENGTH;
-						aspect->version_major = (unsigned)(*b);
-						b += FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH;
-						aspect->version_minor = (unsigned)(*b);
-						if (aspect->version_major != 1)
-							return FLAC__OGG_DECODER_ASPECT_READ_STATUS_UNSUPPORTED_MAPPING_VERSION;
-						aspect->working_packet.packet += header_length;
-						aspect->working_packet.bytes -= header_length;
-					}
-				}
-				else if (ret == 0) {
-					aspect->have_working_page = false;
-				}
-				else { /* ret < 0 */
-					/* lost sync, we'll leave the working page for the next call */
-					return FLAC__OGG_DECODER_ASPECT_READ_STATUS_LOST_SYNC;
-				}
-			}
-		}
-		else {
-			/* try and get another page */
-			const int ret = ogg_sync_pageout(&aspect->sync_state, &aspect->working_page);
-			if (ret > 0) {
-				/* got a page, grab the serial number if necessary */
-				if(aspect->need_serial_number) {
-					aspect->stream_state.serialno = aspect->serial_number = ogg_page_serialno(&aspect->working_page);
-					aspect->need_serial_number = false;
-				}
-				if(ogg_stream_pagein(&aspect->stream_state, &aspect->working_page) == 0) {
-					aspect->have_working_page = true;
-					aspect->have_working_packet = false;
-				}
-				/* else do nothing, could be a page from another stream */
-			}
-			else if (ret == 0) {
-				/* need more data */
-				const size_t ogg_bytes_to_read = max(bytes_requested - *bytes, OGG_BYTES_CHUNK);
-				char *oggbuf = ogg_sync_buffer(&aspect->sync_state, ogg_bytes_to_read);
-
-				if(0 == oggbuf) {
-					return FLAC__OGG_DECODER_ASPECT_READ_STATUS_MEMORY_ALLOCATION_ERROR;
-				}
-				else {
-					size_t ogg_bytes_read = ogg_bytes_to_read;
-
-					switch(read_callback(decoder, (FLAC__byte*)oggbuf, &ogg_bytes_read, client_data)) {
-						case FLAC__OGG_DECODER_ASPECT_READ_STATUS_OK:
-							break;
-						case FLAC__OGG_DECODER_ASPECT_READ_STATUS_END_OF_STREAM:
-							aspect->end_of_stream = true;
-							break;
-						case FLAC__OGG_DECODER_ASPECT_READ_STATUS_ABORT:
-							return FLAC__OGG_DECODER_ASPECT_READ_STATUS_ABORT;
-						default:
-							FLAC__ASSERT(0);
-					}
-
-					if(ogg_sync_wrote(&aspect->sync_state, ogg_bytes_read) < 0) {
-						/* double protection; this will happen if the read callback returns more bytes than the max requested, which would overflow Ogg's internal buffer */
-						FLAC__ASSERT(0);
-						return FLAC__OGG_DECODER_ASPECT_READ_STATUS_ERROR;
-					}
-				}
-			}
-			else { /* ret < 0 */
-				/* lost sync, bail out */
-				return FLAC__OGG_DECODER_ASPECT_READ_STATUS_LOST_SYNC;
-			}
-		}
-	}
-
-	if (aspect->end_of_stream && *bytes == 0) {
-		return FLAC__OGG_DECODER_ASPECT_READ_STATUS_END_OF_STREAM;
-	}
-
-	return FLAC__OGG_DECODER_ASPECT_READ_STATUS_OK;
-}
diff --git a/libFLAC/ogg_encoder_aspect.c b/libFLAC/ogg_encoder_aspect.c
deleted file mode 100644
index 37df089..0000000
--- a/libFLAC/ogg_encoder_aspect.c
+++ /dev/null
@@ -1,227 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec
- * Copyright (C) 2002,2003,2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <string.h> /* for memset() */
-#include "FLAC/assert.h"
-#include "private/ogg_encoder_aspect.h"
-#include "private/ogg_mapping.h"
-
-static const FLAC__byte FLAC__OGG_MAPPING_VERSION_MAJOR = 1;
-static const FLAC__byte FLAC__OGG_MAPPING_VERSION_MINOR = 0;
-
-/***********************************************************************
- *
- * Public class methods
- *
- ***********************************************************************/
-
-FLAC__bool FLAC__ogg_encoder_aspect_init(FLAC__OggEncoderAspect *aspect)
-{
-	/* we will determine the serial number later if necessary */
-	if(ogg_stream_init(&aspect->stream_state, aspect->serial_number) != 0)
-		return false;
-
-	aspect->seen_magic = false;
-	aspect->is_first_packet = true;
-	aspect->samples_written = 0;
-
-	return true;
-}
-
-void FLAC__ogg_encoder_aspect_finish(FLAC__OggEncoderAspect *aspect)
-{
-	(void)ogg_stream_clear(&aspect->stream_state);
-	/*@@@ what about the page? */
-}
-
-void FLAC__ogg_encoder_aspect_set_serial_number(FLAC__OggEncoderAspect *aspect, long value)
-{
-	aspect->serial_number = value;
-}
-
-FLAC__bool FLAC__ogg_encoder_aspect_set_num_metadata(FLAC__OggEncoderAspect *aspect, unsigned value)
-{
-	if(value < (1u << FLAC__OGG_MAPPING_NUM_HEADERS_LEN)) {
-		aspect->num_metadata = value;
-		return true;
-	}
-	else
-		return false;
-}
-
-void FLAC__ogg_encoder_aspect_set_defaults(FLAC__OggEncoderAspect *aspect)
-{
-	aspect->serial_number = 0;
-	aspect->num_metadata = 0;
-}
-
-/*
- * The basic FLAC -> Ogg mapping goes like this:
- *
- * - 'fLaC' magic and STREAMINFO block get combined into the first
- *   packet.  The packet is prefixed with
- *   + the one-byte packet type 0x7F
- *   + 'FLAC' magic
- *   + the 2 byte Ogg FLAC mapping version number
- *   + tne 2 byte big-endian # of header packets
- * - The first packet is flushed to the first page.
- * - Each subsequent metadata block goes into its own packet.
- * - Each metadata packet is flushed to page (this is not required,
- *   the mapping only requires that a flush must occur after all
- *   metadata is written).
- * - Each subsequent FLAC audio frame goes into its own packet.
- *
- * WATCHOUT:
- * This depends on the behavior of FLAC__StreamEncoder that we get a
- * separate write callback for the fLaC magic, and then separate write
- * callbacks for each metadata block and audio frame.
- */
-FLAC__StreamEncoderWriteStatus FLAC__ogg_encoder_aspect_write_callback_wrapper(FLAC__OggEncoderAspect *aspect, const FLAC__byte buffer[], size_t bytes, unsigned samples, unsigned current_frame, FLAC__bool is_last_block, FLAC__OggEncoderAspectWriteCallbackProxy write_callback, void *encoder, void *client_data)
-{
-	/* WATCHOUT:
-	 * This depends on the behavior of FLAC__StreamEncoder that 'samples'
-	 * will be 0 for metadata writes.
-	 */
-	const FLAC__bool is_metadata = (samples == 0);
-
-	/*
-	 * Treat fLaC magic packet specially.  We will note when we see it, then
-	 * wait until we get the STREAMINFO and prepend it in that packet
-	 */
-	if(aspect->seen_magic) {
-		ogg_packet packet;
-		FLAC__byte synthetic_first_packet_body[
-			FLAC__OGG_MAPPING_PACKET_TYPE_LENGTH +
-			FLAC__OGG_MAPPING_MAGIC_LENGTH +
-			FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH +
-			FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH +
-			FLAC__OGG_MAPPING_NUM_HEADERS_LENGTH +
-			FLAC__STREAM_SYNC_LENGTH +
-			FLAC__STREAM_METADATA_HEADER_LENGTH +
-			FLAC__STREAM_METADATA_STREAMINFO_LENGTH
-		];
-
-		memset(&packet, 0, sizeof(packet));
-		packet.granulepos = aspect->samples_written + samples;
-
-		if(aspect->is_first_packet) {
-			FLAC__byte *b = synthetic_first_packet_body;
-			if(bytes != FLAC__STREAM_METADATA_HEADER_LENGTH + FLAC__STREAM_METADATA_STREAMINFO_LENGTH) {
-				/*
-				 * If we get here, our assumption about the way write callbacks happen
-				 * (explained above) is wrong
-				 */
-				FLAC__ASSERT(0);
-				return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
-			}
-			/* add first header packet type */
-			*b = FLAC__OGG_MAPPING_FIRST_HEADER_PACKET_TYPE;
-			b += FLAC__OGG_MAPPING_PACKET_TYPE_LENGTH;
-			/* add 'FLAC' mapping magic */
-			memcpy(b, FLAC__OGG_MAPPING_MAGIC, FLAC__OGG_MAPPING_MAGIC_LENGTH);
-			b += FLAC__OGG_MAPPING_MAGIC_LENGTH;
-			/* add Ogg FLAC mapping major version number */
-			memcpy(b, &FLAC__OGG_MAPPING_VERSION_MAJOR, FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH);
-			b += FLAC__OGG_MAPPING_VERSION_MAJOR_LENGTH;
-			/* add Ogg FLAC mapping minor version number */
-			memcpy(b, &FLAC__OGG_MAPPING_VERSION_MINOR, FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH);
-			b += FLAC__OGG_MAPPING_VERSION_MINOR_LENGTH;
-			/* add number of header packets */
-			*b = (FLAC__byte)(aspect->num_metadata >> 8);
-			b++;
-			*b = (FLAC__byte)(aspect->num_metadata);
-			b++;
-			/* add native FLAC 'fLaC' magic */
-			memcpy(b, FLAC__STREAM_SYNC_STRING, FLAC__STREAM_SYNC_LENGTH);
-			b += FLAC__STREAM_SYNC_LENGTH;
-			/* add STREAMINFO */
-			memcpy(b, buffer, bytes);
-			FLAC__ASSERT(b + bytes - synthetic_first_packet_body == sizeof(synthetic_first_packet_body));
-			packet.packet = (unsigned char *)synthetic_first_packet_body;
-			packet.bytes = sizeof(synthetic_first_packet_body);
-
-			packet.b_o_s = 1;
-			aspect->is_first_packet = false;
-		}
-		else {
-			packet.packet = (unsigned char *)buffer;
-			packet.bytes = bytes;
-		}
-
-		if(is_last_block) {
-			/* we used to check:
-			 * FLAC__ASSERT(total_samples_estimate == 0 || total_samples_estimate == aspect->samples_written + samples);
-			 * but it's really not useful since total_samples_estimate is an estimate and can be inexact
-			 */
-			packet.e_o_s = 1;
-		}
-
-		if(ogg_stream_packetin(&aspect->stream_state, &packet) != 0)
-			return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
-
-		/*@@@ can't figure out a way to pass a useful number for 'samples' to the write_callback, so we'll just pass 0 */
-		if(is_metadata) {
-			while(ogg_stream_flush(&aspect->stream_state, &aspect->page) != 0) {
-				if(write_callback(encoder, aspect->page.header, aspect->page.header_len, 0, current_frame, client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK)
-					return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
-				if(write_callback(encoder, aspect->page.body, aspect->page.body_len, 0, current_frame, client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK)
-					return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
-			}
-		}
-		else {
-			while(ogg_stream_pageout(&aspect->stream_state, &aspect->page) != 0) {
-				if(write_callback(encoder, aspect->page.header, aspect->page.header_len, 0, current_frame, client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK)
-					return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
-				if(write_callback(encoder, aspect->page.body, aspect->page.body_len, 0, current_frame, client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK)
-					return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
-			}
-		}
-	}
-	else if(is_metadata && current_frame == 0 && samples == 0 && bytes == 4 && 0 == memcmp(buffer, FLAC__STREAM_SYNC_STRING, sizeof(FLAC__STREAM_SYNC_STRING))) {
-		aspect->seen_magic = true;
-	}
-	else {
-		/*
-		 * If we get here, our assumption about the way write callbacks happen
-		 * explained above is wrong
-		 */
-		FLAC__ASSERT(0);
-		return FLAC__STREAM_ENCODER_WRITE_STATUS_FATAL_ERROR;
-	}
-
-	aspect->samples_written += samples;
-
-	return FLAC__STREAM_ENCODER_WRITE_STATUS_OK;
-}
diff --git a/libFLAC/ogg_helper.c b/libFLAC/ogg_helper.c
deleted file mode 100644
index 73f9f0b..0000000
--- a/libFLAC/ogg_helper.c
+++ /dev/null
@@ -1,209 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec
- * Copyright (C) 2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <stdlib.h> /* for malloc() */
-#include <string.h> /* for memcmp(), memcpy() */
-#include "FLAC/assert.h"
-#include "share/alloc.h"
-#include "private/ogg_helper.h"
-#include "protected/stream_encoder.h"
-
-
-static FLAC__bool full_read_(FLAC__StreamEncoder *encoder, FLAC__byte *buffer, size_t bytes, FLAC__StreamEncoderReadCallback read_callback, void *client_data)
-{
-	while(bytes > 0) {
-		size_t bytes_read = bytes;
-		switch(read_callback(encoder, buffer, &bytes_read, client_data)) {
-			case FLAC__STREAM_ENCODER_READ_STATUS_CONTINUE:
-				bytes -= bytes_read;
-				buffer += bytes_read;
-				break;
-			case FLAC__STREAM_ENCODER_READ_STATUS_END_OF_STREAM:
-				if(bytes_read == 0) {
-					encoder->protected_->state = FLAC__STREAM_ENCODER_OGG_ERROR;
-					return false;
-				}
-				bytes -= bytes_read;
-				buffer += bytes_read;
-				break;
-			case FLAC__STREAM_ENCODER_READ_STATUS_ABORT:
-				encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
-				return false;
-			case FLAC__STREAM_ENCODER_READ_STATUS_UNSUPPORTED:
-				return false;
-			default:
-				/* double protection: */
-				FLAC__ASSERT(0);
-				encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
-				return false;
-		}
-	}
-
-	return true;
-}
-
-void simple_ogg_page__init(ogg_page *page)
-{
-	page->header = 0;
-	page->header_len = 0;
-	page->body = 0;
-	page->body_len = 0;
-}
-
-void simple_ogg_page__clear(ogg_page *page)
-{
-	if(page->header)
-		free(page->header);
-	if(page->body)
-		free(page->body);
-	simple_ogg_page__init(page);
-}
-
-FLAC__bool simple_ogg_page__get_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderReadCallback read_callback, void *client_data)
-{
-	static const unsigned OGG_HEADER_FIXED_PORTION_LEN = 27;
-	static const unsigned OGG_MAX_HEADER_LEN = 27/*OGG_HEADER_FIXED_PORTION_LEN*/ + 255;
-	FLAC__byte crc[4];
-	FLAC__StreamEncoderSeekStatus seek_status;
-
-	FLAC__ASSERT(page->header == 0);
-	FLAC__ASSERT(page->header_len == 0);
-	FLAC__ASSERT(page->body == 0);
-	FLAC__ASSERT(page->body_len == 0);
-
-	/* move the stream pointer to the supposed beginning of the page */
-	if(0 == seek_callback)
-		return false;
-	if((seek_status = seek_callback((FLAC__StreamEncoder*)encoder, position, client_data)) != FLAC__STREAM_ENCODER_SEEK_STATUS_OK) {
-		if(seek_status == FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR)
-			encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
-		return false;
-	}
-
-	/* allocate space for the page header */
-	if(0 == (page->header = (unsigned char *)safe_malloc_(OGG_MAX_HEADER_LEN))) {
-		encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
-		return false;
-	}
-
-	/* read in the fixed part of the page header (up to but not including
-	 * the segment table */
-	if(!full_read_(encoder, page->header, OGG_HEADER_FIXED_PORTION_LEN, read_callback, client_data))
-		return false;
-
-	page->header_len = OGG_HEADER_FIXED_PORTION_LEN + page->header[26];
-
-	/* check to see if it's a correct, "simple" page (one packet only) */
-	if(
-		memcmp(page->header, "OggS", 4) ||               /* doesn't start with OggS */
-		(page->header[5] & 0x01) ||                      /* continued packet */
-		memcmp(page->header+6, "\0\0\0\0\0\0\0\0", 8) || /* granulepos is non-zero */
-		page->header[26] == 0                            /* packet is 0-size */
-	) {
-		encoder->protected_->state = FLAC__STREAM_ENCODER_OGG_ERROR;
-		return false;
-	}
-
-	/* read in the segment table */
-	if(!full_read_(encoder, page->header + OGG_HEADER_FIXED_PORTION_LEN, page->header[26], read_callback, client_data))
-		return false;
-
-	{
-		unsigned i;
-
-		/* check to see that it specifies a single packet */
-		for(i = 0; i < (unsigned)page->header[26] - 1; i++) {
-			if(page->header[i + OGG_HEADER_FIXED_PORTION_LEN] != 255) {
-				encoder->protected_->state = FLAC__STREAM_ENCODER_OGG_ERROR;
-				return false;
-			}
-		}
-
-		page->body_len = 255 * i + page->header[i + OGG_HEADER_FIXED_PORTION_LEN];
-	}
-
-	/* allocate space for the page body */
-	if(0 == (page->body = (unsigned char *)safe_malloc_(page->body_len))) {
-		encoder->protected_->state = FLAC__STREAM_ENCODER_MEMORY_ALLOCATION_ERROR;
-		return false;
-	}
-
-	/* read in the page body */
-	if(!full_read_(encoder, page->body, page->body_len, read_callback, client_data))
-		return false;
-
-	/* check the CRC */
-	memcpy(crc, page->header+22, 4);
-	ogg_page_checksum_set(page);
-	if(memcmp(crc, page->header+22, 4)) {
-		encoder->protected_->state = FLAC__STREAM_ENCODER_OGG_ERROR;
-		return false;
-	}
-
-	return true;
-}
-
-FLAC__bool simple_ogg_page__set_at(FLAC__StreamEncoder *encoder, FLAC__uint64 position, ogg_page *page, FLAC__StreamEncoderSeekCallback seek_callback, FLAC__StreamEncoderWriteCallback write_callback, void *client_data)
-{
-	FLAC__StreamEncoderSeekStatus seek_status;
-
-	FLAC__ASSERT(page->header != 0);
-	FLAC__ASSERT(page->header_len != 0);
-	FLAC__ASSERT(page->body != 0);
-	FLAC__ASSERT(page->body_len != 0);
-
-	/* move the stream pointer to the supposed beginning of the page */
-	if(0 == seek_callback)
-		return false;
-	if((seek_status = seek_callback((FLAC__StreamEncoder*)encoder, position, client_data)) != FLAC__STREAM_ENCODER_SEEK_STATUS_OK) {
-		if(seek_status == FLAC__STREAM_ENCODER_SEEK_STATUS_ERROR)
-			encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
-		return false;
-	}
-
-	ogg_page_checksum_set(page);
-
-	/* re-write the page */
-	if(write_callback((FLAC__StreamEncoder*)encoder, page->header, page->header_len, 0, 0, client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK) {
-		encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
-		return false;
-	}
-	if(write_callback((FLAC__StreamEncoder*)encoder, page->body, page->body_len, 0, 0, client_data) != FLAC__STREAM_ENCODER_WRITE_STATUS_OK) {
-		encoder->protected_->state = FLAC__STREAM_ENCODER_CLIENT_ERROR;
-		return false;
-	}
-
-	return true;
-}
diff --git a/libFLAC/ogg_mapping.c b/libFLAC/ogg_mapping.c
deleted file mode 100644
index a518892..0000000
--- a/libFLAC/ogg_mapping.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* libFLAC - Free Lossless Audio Codec
- * Copyright (C) 2004,2005,2006,2007  Josh Coalson
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of the Xiph.org Foundation nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
- * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#if HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include "private/ogg_mapping.h"
-
-const unsigned FLAC__OGG_MAPPING_PACKET_TYPE_LEN = 8; /* bits */
-
-const FLAC__byte FLAC__OGG_MAPPING_FIRST_HEADER_PACKET_TYPE = 0x7f;
-
-const FLAC__byte * const FLAC__OGG_MAPPING_MAGIC = (const FLAC__byte * const)"FLAC";
-
-const unsigned FLAC__OGG_MAPPING_VERSION_MAJOR_LEN = 8; /* bits */
-const unsigned FLAC__OGG_MAPPING_VERSION_MINOR_LEN = 8; /* bits */
-
-const unsigned FLAC__OGG_MAPPING_NUM_HEADERS_LEN = 16; /* bits */
diff --git a/libFLAC/ppc/Makefile.am b/libFLAC/ppc/Makefile.am
deleted file mode 100644
index 87cd95c..0000000
--- a/libFLAC/ppc/Makefile.am
+++ /dev/null
@@ -1,31 +0,0 @@
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-SUBDIRS = as gas
diff --git a/libFLAC/ppc/Makefile.in b/libFLAC/ppc/Makefile.in
deleted file mode 100644
index 308a21b..0000000
--- a/libFLAC/ppc/Makefile.in
+++ /dev/null
@@ -1,533 +0,0 @@
-# Makefile.in generated by automake 1.7.9 from Makefile.am.
-# @configure_input@
-
-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-# 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@
-
-#  libFLAC - Free Lossless Audio Codec library
-#  Copyright (C) 2004,2005,2006,2007  Josh Coalson
-#
-#  Redistribution and use in source and binary forms, with or without
-#  modification, are permitted provided that the following conditions
-#  are met:
-#
-#  - Redistributions of source code must retain the above copyright
-#  notice, this list of conditions and the following disclaimer.
-#
-#  - Redistributions in binary form must reproduce the above copyright
-#  notice, this list of conditions and the following disclaimer in the
-#  documentation and/or other materials provided with the distribution.
-#
-#  - Neither the name of the Xiph.org Foundation nor the names of its
-#  contributors may be used to endorse or promote products derived from
-#  this software without specific prior written permission.
-#
-#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-#  A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
-#  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-#  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-#  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-#  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-#  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-#  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ../../..
-
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
-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 = :
-host_triplet = @host@
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCAS = @CCAS@
-CCASFLAGS = @CCASFLAGS@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEBUG_FALSE = @DEBUG_FALSE@
-DEBUG_TRUE = @DEBUG_TRUE@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DOCBOOK_TO_MAN = @DOCBOOK_TO_MAN@
-DOXYGEN = @DOXYGEN@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FLAC__TEST_LEVEL = @FLAC__TEST_LEVEL@
-FLAC__TEST_WITH_VALGRIND = @FLAC__TEST_WITH_VALGRIND@
-FLaC__CPU_IA32_FALSE = @FLaC__CPU_IA32_FALSE@
-FLaC__CPU_IA32_TRUE = @FLaC__CPU_IA32_TRUE@
-FLaC__CPU_PPC_FALSE = @FLaC__CPU_PPC_FALSE@
-FLaC__CPU_PPC_TRUE = @FLaC__CPU_PPC_TRUE@
-FLaC__CPU_SPARC_FALSE = @FLaC__CPU_SPARC_FALSE@
-FLaC__CPU_SPARC_TRUE = @FLaC__CPU_SPARC_TRUE@
-FLaC__HAS_AS_FALSE = @FLaC__HAS_AS_FALSE@
-FLaC__HAS_AS_TRUE = @FLaC__HAS_AS_TRUE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_FALSE@
-FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE = @FLaC__HAS_AS__TEMPORARILY_DISABLED_TRUE@
-FLaC__HAS_DOCBOOK_TO_MAN_FALSE = @FLaC__HAS_DOCBOOK_TO_MAN_FALSE@
-FLaC__HAS_DOCBOOK_TO_MAN_TRUE = @FLaC__HAS_DOCBOOK_TO_MAN_TRUE@
-FLaC__HAS_DOXYGEN_FALSE = @FLaC__HAS_DOXYGEN_FALSE@
-FLaC__HAS_DOXYGEN_TRUE = @FLaC__HAS_DOXYGEN_TRUE@
-FLaC__HAS_GAS_FALSE = @FLaC__HAS_GAS_FAL