5061 freebsd boot loader integration (loader project)
Reviewed by: Richard Lowe <richlowe@richlowe.net>
Reviewed by: Cody Mello <melloc@joyent.com>
Approved by: Robert Mustacchi <rm@joyent.com>
diff --git a/exception_lists/copyright b/exception_lists/copyright
index 654287d..ebe2005 100644
--- a/exception_lists/copyright
+++ b/exception_lists/copyright
@@ -30,6 +30,7 @@
 exception_lists/copyright
 exception_lists/cstyle
 exception_lists/hdrchk
+usr/src/boot/*
 usr/src/cmd/cmd-inet/usr.bin/dns-sd/ClientCommon.c
 usr/src/cmd/cmd-inet/usr.bin/dns-sd/ClientCommon.h
 usr/src/cmd/cmd-inet/usr.bin/dns-sd/dns-sd.c
diff --git a/exception_lists/cstyle b/exception_lists/cstyle
index 32097d7..cca3856 100644
--- a/exception_lists/cstyle
+++ b/exception_lists/cstyle
@@ -1,3 +1,4 @@
+usr/src/boot/*
 usr/src/cmd/cmd-inet/usr.bin/dns-sd/ClientCommon.[ch]
 usr/src/cmd/cmd-inet/usr.bin/dns-sd/dns-sd.c
 usr/src/cmd/cmd-inet/usr.lib/mdnsd/CryptoAlg.[ch]
diff --git a/exception_lists/hdrchk b/exception_lists/hdrchk
index 1d3e7f1..8e155ae 100644
--- a/exception_lists/hdrchk
+++ b/exception_lists/hdrchk
@@ -1,3 +1,4 @@
+usr/src/boot/*
 usr/src/cmd/cmd-inet/usr.bin/dns-sd/ClientCommon.h
 usr/src/cmd/cmd-inet/usr.lib/mdnsd/CryptoAlg.h
 usr/src/cmd/cmd-inet/usr.lib/mdnsd/DNSCommon.h
diff --git a/exception_lists/keywords b/exception_lists/keywords
index f0be882..6037b93 100644
--- a/exception_lists/keywords
+++ b/exception_lists/keywords
@@ -25,6 +25,7 @@
 #
 
 syntax: glob
+usr/src/boot/*
 usr/src/cmd/cmd-inet/usr.bin/dns-sd/dns-sd.c
 usr/src/cmd/boot/common/bblk_einfo.c
 usr/src/cmd/localedef/data/zh_CN.UTF-8.src
diff --git a/exception_lists/manlint b/exception_lists/manlint
new file mode 100644
index 0000000..f6ced61
--- /dev/null
+++ b/exception_lists/manlint
@@ -0,0 +1,14 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+#
+# Copyright 2016 Toomas Soome <tsoome@me.com>
+#
+usr/src/boot/*
diff --git a/exception_lists/mapfilechk b/exception_lists/mapfilechk
index b012270..7a316b7 100644
--- a/exception_lists/mapfilechk
+++ b/exception_lists/mapfilechk
@@ -20,6 +20,7 @@
 #
 
 #
+# Copyright 2016 Toomas Soome <tsoome@me.com>
 # Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
 #
 
@@ -36,6 +37,7 @@
 
 syntax: glob
 exception_lists/mapfilechk
+usr/src/boot/*
 usr/src/cmd/lp/filter/postscript/font/devpost/charlib/*
 usr/src/cmd/mdb/common/kmdb/mapfile_skel
 usr/src/cmd/sgs/libconv/common/map.msg
diff --git a/usr/src/Makefile b/usr/src/Makefile
index b71c348..213f882 100644
--- a/usr/src/Makefile
+++ b/usr/src/Makefile
@@ -24,6 +24,7 @@
 # Copyright (c) 2012 by Delphix. All rights reserved.
 # Copyright 2014 Garrett D'Amore <garrett@damore.org>
 # Copyright 2015 OmniTI Computer Consulting, Inc. All rights reserved.
+# Copyright 2016 Toomas Soome <tsoome@me.com>
 #
 
 #
@@ -38,7 +39,7 @@
 
 COMMON_SUBDIRS=	uts lib cmd ucblib ucbcmd psm man test
 sparc_SUBDIRS= stand
-i386_SUBDIRS= grub
+i386_SUBDIRS= grub boot
 
 #
 # sparc needs to build stand before psm
diff --git a/usr/src/boot/COPYRIGHT b/usr/src/boot/COPYRIGHT
new file mode 100644
index 0000000..1d7198f
--- /dev/null
+++ b/usr/src/boot/COPYRIGHT
@@ -0,0 +1,126 @@
+# $FreeBSD$
+#	@(#)COPYRIGHT	8.2 (Berkeley) 3/21/94
+
+The compilation of software known as FreeBSD is distributed under the
+following terms:
+
+Copyright (c) 1992-2015 The FreeBSD Project. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. 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.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+
+The 4.4BSD and 4.4BSD-Lite software is distributed under the following
+terms:
+
+All of the documentation and software included in the 4.4BSD and 4.4BSD-Lite
+Releases is copyrighted by The Regents of the University of California.
+
+Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
+	The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. 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.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+This product includes software developed by the University of
+California, Berkeley and its contributors.
+4. Neither the name of the University 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 REGENTS 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 REGENTS 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.
+
+The Institute of Electrical and Electronics Engineers and the American
+National Standards Committee X3, on Information Processing Systems have
+given us permission to reprint portions of their documentation.
+
+In the following statement, the phrase ``this text'' refers to portions
+of the system documentation.
+
+Portions of this text are reprinted and reproduced in electronic form in
+the second BSD Networking Software Release, from IEEE Std 1003.1-1988, IEEE
+Standard Portable Operating System Interface for Computer Environments
+(POSIX), copyright C 1988 by the Institute of Electrical and Electronics
+Engineers, Inc.  In the event of any discrepancy between these versions
+and the original IEEE Standard, the original IEEE Standard is the referee
+document.
+
+In the following statement, the phrase ``This material'' refers to portions
+of the system documentation.
+
+This material is reproduced with permission from American National
+Standards Committee X3, on Information Processing Systems.  Computer and
+Business Equipment Manufacturers Association (CBEMA), 311 First St., NW,
+Suite 500, Washington, DC 20001-2178.  The developmental work of
+Programming Language C was completed by the X3J11 Technical Committee.
+
+The views and conclusions contained in the software and documentation are
+those of the authors and should not be interpreted as representing official
+policies, either expressed or implied, of the Regents of the University
+of California.
+
+
+NOTE: The copyright of UC Berkeley's Berkeley Software Distribution ("BSD")
+source has been updated.  The copyright addendum may be found at
+ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change and is
+included below.
+
+July 22, 1999
+
+To All Licensees, Distributors of Any Version of BSD:
+
+As you know, certain of the Berkeley Software Distribution ("BSD") source
+code files require that further distributions of products containing all or
+portions of the software, acknowledge within their advertising materials
+that such products contain software developed by UC Berkeley and its
+contributors.
+
+Specifically, the provision reads:
+
+"     * 3. All advertising materials mentioning features or use of this software
+      *    must display the following acknowledgement:
+      *    This product includes software developed by the University of
+      *    California, Berkeley and its contributors."
+
+Effective immediately, licensees and distributors are no longer required to
+include the acknowledgement within advertising materials.  Accordingly, the
+foregoing paragraph of those BSD Unix files containing it is hereby deleted
+in its entirety.
+
+William Hoskins
+Director, Office of Technology Licensing
+University of California, Berkeley
diff --git a/usr/src/boot/COPYRIGHT.descrip b/usr/src/boot/COPYRIGHT.descrip
new file mode 100644
index 0000000..5873eb0
--- /dev/null
+++ b/usr/src/boot/COPYRIGHT.descrip
@@ -0,0 +1 @@
+$FreeBSD$
diff --git a/usr/src/boot/Makefile b/usr/src/boot/Makefile
new file mode 100644
index 0000000..f7a0b29
--- /dev/null
+++ b/usr/src/boot/Makefile
@@ -0,0 +1,32 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2015 Toomas Soome <tsoome@me.com>
+#
+
+.KEEP_STATE:
+
+include ../Makefile.master
+
+SUBDIRS = sys/boot
+
+all	:=	TARGET = all
+install	:=	TARGET = install
+clean	:=	TARGET = clean
+clobber	:=	TARGET = clobber
+
+all install clean clobber: $(SUBDIRS)
+
+$(SUBDIRS): FRC
+	@cd $@; pwd; $(MAKE) $(MFLAGS) $(TARGET)
+
+FRC:
diff --git a/usr/src/boot/Readme.txt b/usr/src/boot/Readme.txt
new file mode 100644
index 0000000..aee46ce
--- /dev/null
+++ b/usr/src/boot/Readme.txt
@@ -0,0 +1,60 @@
+#
+# This file and its contents are supplied under the terms of the
+# Common Development and Distribution License ("CDDL"), version 1.0.
+# You may only use this file in accordance with the terms of version
+# 1.0 of the CDDL.
+#
+# A full copy of the text of the CDDL should have accompanied this
+# source.  A copy of the CDDL is also available via the Internet at
+# http://www.illumos.org/license/CDDL.
+#
+
+#
+# Copyright 2016 Toomas Soome <tsoome@me.com>
+#
+# Please update the svn revision number on source refresh.
+
+Current snapshot from freebsd revision 296191.
+
+This is source tree snapshot of loader and related parts from
+freebsd source.
+
+Directory tree layout:
+
+usr/src/boot is the root directory of the imported snapshot,
+containing Makefile and licence notes for build and packaging.
+
+Directories from freebsd userland (freebsd /usr/src tree):
+contrib
+include
+lib
+
+Directories from freebsd kernel tree, including boot loader itself
+are located in sys subdirectory (freebsd /usr/src/sys tree):
+
+platform specific include files:
+
+sys/amd64
+sys/i386
+sys/x86
+
+sys and ufs include files:
+sys/sys
+sys/ufs
+
+zfs boot module import in freebsd:
+sys/cddl 
+
+acpica module import in freebsd:
+sys/contrib
+
+boot loader sources are in:
+sys/boot
+
+Note, some of the directories are not 1:1 mapping in this source import,
+because of differences of build systems used in illumos and freebsd.
+Also some differences are due to fact, we do not need all the variants of
+stage1/stage2 boot blocks which are built in freebsd due to the historical
+or technical reasons.
+
+Mar, 2016
diff --git a/usr/src/boot/contrib/bzip2/CHANGES b/usr/src/boot/contrib/bzip2/CHANGES
new file mode 100644
index 0000000..81e97ca
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/CHANGES
@@ -0,0 +1,327 @@
+ ------------------------------------------------------------------
+ This file is part of bzip2/libbzip2, a program and library for
+ lossless, block-sorting data compression.
+
+ bzip2/libbzip2 version 1.0.6 of 6 September 2010
+ Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+ Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+ README file.
+
+ This program is released under the terms of the license contained
+ in the file LICENSE.
+ ------------------------------------------------------------------
+
+
+0.9.0
+~~~~~
+First version.
+
+
+0.9.0a
+~~~~~~
+Removed 'ranlib' from Makefile, since most modern Unix-es 
+don't need it, or even know about it.
+
+
+0.9.0b
+~~~~~~
+Fixed a problem with error reporting in bzip2.c.  This does not effect
+the library in any way.  Problem is: versions 0.9.0 and 0.9.0a (of the
+program proper) compress and decompress correctly, but give misleading
+error messages (internal panics) when an I/O error occurs, instead of
+reporting the problem correctly.  This shouldn't give any data loss
+(as far as I can see), but is confusing.
+
+Made the inline declarations disappear for non-GCC compilers.
+
+
+0.9.0c
+~~~~~~
+Fixed some problems in the library pertaining to some boundary cases.
+This makes the library behave more correctly in those situations.  The
+fixes apply only to features (calls and parameters) not used by
+bzip2.c, so the non-fixedness of them in previous versions has no
+effect on reliability of bzip2.c.
+
+In bzlib.c:
+   * made zero-length BZ_FLUSH work correctly in bzCompress().
+   * fixed bzWrite/bzRead to ignore zero-length requests.
+   * fixed bzread to correctly handle read requests after EOF.
+   * wrong parameter order in call to bzDecompressInit in
+     bzBuffToBuffDecompress.  Fixed.
+
+In compress.c:
+   * changed setting of nGroups in sendMTFValues() so as to 
+     do a bit better on small files.  This _does_ effect
+     bzip2.c.
+
+
+0.9.5a
+~~~~~~
+Major change: add a fallback sorting algorithm (blocksort.c)
+to give reasonable behaviour even for very repetitive inputs.
+Nuked --repetitive-best and --repetitive-fast since they are
+no longer useful.
+
+Minor changes: mostly a whole bunch of small changes/
+bugfixes in the driver (bzip2.c).  Changes pertaining to the
+user interface are:
+
+   allow decompression of symlink'd files to stdout
+   decompress/test files even without .bz2 extension
+   give more accurate error messages for I/O errors
+   when compressing/decompressing to stdout, don't catch control-C
+   read flags from BZIP2 and BZIP environment variables
+   decline to break hard links to a file unless forced with -f
+   allow -c flag even with no filenames
+   preserve file ownerships as far as possible
+   make -s -1 give the expected block size (100k)
+   add a flag -q --quiet to suppress nonessential warnings
+   stop decoding flags after --, so files beginning in - can be handled
+   resolved inconsistent naming: bzcat or bz2cat ?
+   bzip2 --help now returns 0
+
+Programming-level changes are:
+
+   fixed syntax error in GET_LL4 for Borland C++ 5.02
+   let bzBuffToBuffDecompress return BZ_DATA_ERROR{_MAGIC}
+   fix overshoot of mode-string end in bzopen_or_bzdopen
+   wrapped bzlib.h in #ifdef __cplusplus ... extern "C" { ... }
+   close file handles under all error conditions
+   added minor mods so it compiles with DJGPP out of the box
+   fixed Makefile so it doesn't give problems with BSD make
+   fix uninitialised memory reads in dlltest.c
+
+0.9.5b
+~~~~~~
+Open stdin/stdout in binary mode for DJGPP.
+
+0.9.5c
+~~~~~~
+Changed BZ_N_OVERSHOOT to be ... + 2 instead of ... + 1.  The + 1
+version could cause the sorted order to be wrong in some extremely
+obscure cases.  Also changed setting of quadrant in blocksort.c.
+
+0.9.5d
+~~~~~~
+The only functional change is to make bzlibVersion() in the library
+return the correct string.  This has no effect whatsoever on the
+functioning of the bzip2 program or library.  Added a couple of casts
+so the library compiles without warnings at level 3 in MS Visual
+Studio 6.0.  Included a Y2K statement in the file Y2K_INFO.  All other
+changes are minor documentation changes.
+
+1.0
+~~~
+Several minor bugfixes and enhancements:
+
+* Large file support.  The library uses 64-bit counters to
+  count the volume of data passing through it.  bzip2.c 
+  is now compiled with -D_FILE_OFFSET_BITS=64 to get large
+  file support from the C library.  -v correctly prints out
+  file sizes greater than 4 gigabytes.  All these changes have
+  been made without assuming a 64-bit platform or a C compiler
+  which supports 64-bit ints, so, except for the C library
+  aspect, they are fully portable.
+
+* Decompression robustness.  The library/program should be
+  robust to any corruption of compressed data, detecting and
+  handling _all_ corruption, instead of merely relying on
+  the CRCs.  What this means is that the program should 
+  never crash, given corrupted data, and the library should
+  always return BZ_DATA_ERROR.
+
+* Fixed an obscure race-condition bug only ever observed on
+  Solaris, in which, if you were very unlucky and issued
+  control-C at exactly the wrong time, both input and output
+  files would be deleted.
+
+* Don't run out of file handles on test/decompression when
+  large numbers of files have invalid magic numbers.
+
+* Avoid library namespace pollution.  Prefix all exported 
+  symbols with BZ2_.
+
+* Minor sorting enhancements from my DCC2000 paper.
+
+* Advance the version number to 1.0, so as to counteract the
+  (false-in-this-case) impression some people have that programs 
+  with version numbers less than 1.0 are in some way, experimental,
+  pre-release versions.
+
+* Create an initial Makefile-libbz2_so to build a shared library.
+  Yes, I know I should really use libtool et al ...
+
+* Make the program exit with 2 instead of 0 when decompression
+  fails due to a bad magic number (ie, an invalid bzip2 header).
+  Also exit with 1 (as the manual claims :-) whenever a diagnostic
+  message would have been printed AND the corresponding operation 
+  is aborted, for example
+     bzip2: Output file xx already exists.
+  When a diagnostic message is printed but the operation is not 
+  aborted, for example
+     bzip2: Can't guess original name for wurble -- using wurble.out
+  then the exit value 0 is returned, unless some other problem is
+  also detected.
+
+  I think it corresponds more closely to what the manual claims now.
+
+
+1.0.1
+~~~~~
+* Modified dlltest.c so it uses the new BZ2_ naming scheme.
+* Modified makefile-msc to fix minor build probs on Win2k.
+* Updated README.COMPILATION.PROBLEMS.
+
+There are no functionality changes or bug fixes relative to version
+1.0.0.  This is just a documentation update + a fix for minor Win32
+build problems.  For almost everyone, upgrading from 1.0.0 to 1.0.1 is
+utterly pointless.  Don't bother.
+
+
+1.0.2
+~~~~~
+A bug fix release, addressing various minor issues which have appeared
+in the 18 or so months since 1.0.1 was released.  Most of the fixes
+are to do with file-handling or documentation bugs.  To the best of my
+knowledge, there have been no data-loss-causing bugs reported in the
+compression/decompression engine of 1.0.0 or 1.0.1.
+
+Note that this release does not improve the rather crude build system
+for Unix platforms.  The general plan here is to autoconfiscate/
+libtoolise 1.0.2 soon after release, and release the result as 1.1.0
+or perhaps 1.2.0.  That, however, is still just a plan at this point.
+
+Here are the changes in 1.0.2.  Bug-reporters and/or patch-senders in
+parentheses.
+
+* Fix an infinite segfault loop in 1.0.1 when a directory is
+  encountered in -f (force) mode.
+     (Trond Eivind Glomsrod, Nicholas Nethercote, Volker Schmidt)
+
+* Avoid double fclose() of output file on certain I/O error paths.
+     (Solar Designer)
+
+* Don't fail with internal error 1007 when fed a long stream (> 48MB)
+  of byte 251.  Also print useful message suggesting that 1007s may be
+  caused by bad memory.
+     (noticed by Juan Pedro Vallejo, fixed by me)
+
+* Fix uninitialised variable silly bug in demo prog dlltest.c.
+     (Jorj Bauer)
+
+* Remove 512-MB limitation on recovered file size for bzip2recover
+  on selected platforms which support 64-bit ints.  At the moment
+  all GCC supported platforms, and Win32.
+     (me, Alson van der Meulen)
+
+* Hard-code header byte values, to give correct operation on platforms
+  using EBCDIC as their native character set (IBM's OS/390).
+     (Leland Lucius)
+
+* Copy file access times correctly.
+     (Marty Leisner)
+
+* Add distclean and check targets to Makefile.
+     (Michael Carmack)
+
+* Parameterise use of ar and ranlib in Makefile.  Also add $(LDFLAGS).
+     (Rich Ireland, Bo Thorsen)
+
+* Pass -p (create parent dirs as needed) to mkdir during make install.
+     (Jeremy Fusco)
+
+* Dereference symlinks when copying file permissions in -f mode.
+     (Volker Schmidt)
+
+* Majorly simplify implementation of uInt64_qrm10.
+     (Bo Lindbergh)
+
+* Check the input file still exists before deleting the output one,
+  when aborting in cleanUpAndFail().
+     (Joerg Prante, Robert Linden, Matthias Krings)
+
+Also a bunch of patches courtesy of Philippe Troin, the Debian maintainer
+of bzip2:
+
+* Wrapper scripts (with manpages): bzdiff, bzgrep, bzmore.
+
+* Spelling changes and minor enhancements in bzip2.1.
+
+* Avoid race condition between creating the output file and setting its
+  interim permissions safely, by using fopen_output_safely().
+  No changes to bzip2recover since there is no issue with file
+  permissions there.
+
+* do not print senseless report with -v when compressing an empty
+  file.
+
+* bzcat -f works on non-bzip2 files.
+
+* do not try to escape shell meta-characters on unix (the shell takes
+  care of these).
+
+* added --fast and --best aliases for -1 -9 for gzip compatibility.
+
+
+1.0.3 (15 Feb 05)
+~~~~~~~~~~~~~~~~~
+Fixes some minor bugs since the last version, 1.0.2.
+
+* Further robustification against corrupted compressed data.
+  There are currently no known bitstreams which can cause the
+  decompressor to crash, loop or access memory which does not
+  belong to it.  If you are using bzip2 or the library to 
+  decompress bitstreams from untrusted sources, an upgrade
+  to 1.0.3 is recommended.  This fixes CAN-2005-1260.
+
+* The documentation has been converted to XML, from which html
+  and pdf can be derived.
+
+* Various minor bugs in the documentation have been fixed.
+
+* Fixes for various compilation warnings with newer versions of
+  gcc, and on 64-bit platforms.
+
+* The BZ_NO_STDIO cpp symbol was not properly observed in 1.0.2.
+  This has been fixed.
+
+
+1.0.4 (20 Dec 06)
+~~~~~~~~~~~~~~~~~
+Fixes some minor bugs since the last version, 1.0.3.
+
+* Fix file permissions race problem (CAN-2005-0953).
+
+* Avoid possible segfault in BZ2_bzclose.  From Coverity's NetBSD
+  scan.
+
+* 'const'/prototype cleanups in the C code.
+
+* Change default install location to /usr/local, and handle multiple
+  'make install's without error.
+
+* Sanitise file names more carefully in bzgrep.  Fixes CAN-2005-0758
+  to the extent that applies to bzgrep.
+
+* Use 'mktemp' rather than 'tempfile' in bzdiff.
+
+* Tighten up a couple of assertions in blocksort.c following automated
+  analysis.
+
+* Fix minor doc/comment bugs.
+
+
+1.0.5 (10 Dec 07)
+~~~~~~~~~~~~~~~~~
+Security fix only.  Fixes CERT-FI 20469 as it applies to bzip2.
+
+
+1.0.6 (6 Sept 10)
+~~~~~~~~~~~~~~~~~
+
+* Security fix for CVE-2010-0405.  This was reported by Mikolaj
+  Izdebski.
+
+* Make the documentation build on Ubuntu 10.04
diff --git a/usr/src/boot/contrib/bzip2/FREEBSD-Xlist b/usr/src/boot/contrib/bzip2/FREEBSD-Xlist
new file mode 100644
index 0000000..6c3c9b2
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/FREEBSD-Xlist
@@ -0,0 +1,26 @@
+# $FreeBSD$
+*Makefile*
+*README.XML.STUFF
+*bz-common.xsl
+*bz-fo.xsl
+*bz-html.xsl
+*bzdiff
+*bzdiff.1
+*bzgrep
+*bzgrep.1
+*bzip.css
+*bzip2.1.preformatted
+*bzip2.txt
+*bzmore
+*bzmore.1
+*dlltest.*
+*entities.xml
+*format.pl
+*libbz2.dsp
+*makefile.msc
+*manual.html
+*manual.pdf
+*manual.ps
+*manual.xml
+*mk251.c
+*xmlproc.sh
diff --git a/usr/src/boot/contrib/bzip2/FREEBSD-upgrade b/usr/src/boot/contrib/bzip2/FREEBSD-upgrade
new file mode 100644
index 0000000..48e788a
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/FREEBSD-upgrade
@@ -0,0 +1,27 @@
+$FreeBSD$
+
+Julian Seward's bzip2
+	originals can be found at: 	http://www.bzip.org/downloads.html
+
+Imported by:
+
+	cvs import -m "Virgin import (trimmed) of Bzip2 version 1.0.5." \
+		src/contrib/bzip2 BZIP2 v1_0_5
+
+Notes:
+	The following log shows details of trimming:
+	~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	tar xvfz bzip2-1.0.4.tar.gz -X FREEBSD-Xlist
+	cd bzip2-1.0.4
+	uuencode sample1.bz2 sample1.bz2 > sample1.bz2.uu
+	uuencode sample2.bz2 sample2.bz2 > sample2.bz2.uu
+	uuencode sample3.bz2 sample3.bz2 > sample3.bz2.uu
+	gzip -9 sample1.ref sample2.ref sample3.ref
+	uuencode sample1.ref.gz sample1.ref.gz > sample1.ref.gz.uu
+	uuencode sample2.ref.gz sample2.ref.gz > sample2.ref.gz.uu
+	uuencode sample3.ref.gz sample3.ref.gz > sample3.ref.gz.uu
+	rm sample1.bz2 sample1.ref.gz sample2.bz2 sample2.ref.gz
+	rm sample3.bz2 sample3.ref.gz
+
+obrien@FreeBSD.org
+15 May 2005
diff --git a/usr/src/boot/contrib/bzip2/FREEBSD-vendor b/usr/src/boot/contrib/bzip2/FREEBSD-vendor
new file mode 100644
index 0000000..6847c8b
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/FREEBSD-vendor
@@ -0,0 +1,5 @@
+# $FreeBSD$
+Project:	bzip2
+ProjectURL:	http://www.bzip.org/
+Version:	1.0.5
+License:	BSD
diff --git a/usr/src/boot/contrib/bzip2/LICENSE b/usr/src/boot/contrib/bzip2/LICENSE
new file mode 100644
index 0000000..cc61417
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/LICENSE
@@ -0,0 +1,42 @@
+
+--------------------------------------------------------------------------
+
+This program, "bzip2", the associated library "libbzip2", and all
+documentation, are copyright (C) 1996-2010 Julian R Seward.  All
+rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. The origin of this software must not be misrepresented; you must 
+   not claim that you wrote the original software.  If you use this 
+   software in a product, an acknowledgment in the product 
+   documentation would be appreciated but is not required.
+
+3. Altered source versions must be plainly marked as such, and must
+   not be misrepresented as being the original software.
+
+4. The name of the author may not be used to endorse or promote 
+   products derived from this software without specific prior written 
+   permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+Julian Seward, jseward@bzip.org
+bzip2/libbzip2 version 1.0.6 of 6 September 2010
+
+--------------------------------------------------------------------------
diff --git a/usr/src/boot/contrib/bzip2/README b/usr/src/boot/contrib/bzip2/README
new file mode 100644
index 0000000..9fb0f63
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/README
@@ -0,0 +1,215 @@
+
+This is the README for bzip2/libzip2.
+This version is fully compatible with the previous public releases.
+
+------------------------------------------------------------------
+This file is part of bzip2/libbzip2, a program and library for
+lossless, block-sorting data compression.
+
+bzip2/libbzip2 version 1.0.6 of 6 September 2010
+Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+Please read the WARNING, DISCLAIMER and PATENTS sections in this file.
+
+This program is released under the terms of the license contained
+in the file LICENSE.
+------------------------------------------------------------------
+
+Complete documentation is available in Postscript form (manual.ps),
+PDF (manual.pdf) or html (manual.html).  A plain-text version of the
+manual page is available as bzip2.txt.
+
+
+HOW TO BUILD -- UNIX
+
+Type 'make'.  This builds the library libbz2.a and then the programs
+bzip2 and bzip2recover.  Six self-tests are run.  If the self-tests
+complete ok, carry on to installation:
+
+To install in /usr/local/bin, /usr/local/lib, /usr/local/man and
+/usr/local/include, type
+
+   make install
+
+To install somewhere else, eg, /xxx/yyy/{bin,lib,man,include}, type
+
+   make install PREFIX=/xxx/yyy
+
+If you are (justifiably) paranoid and want to see what 'make install'
+is going to do, you can first do
+
+   make -n install                      or
+   make -n install PREFIX=/xxx/yyy      respectively.
+
+The -n instructs make to show the commands it would execute, but not
+actually execute them.
+
+
+HOW TO BUILD -- UNIX, shared library libbz2.so.
+
+Do 'make -f Makefile-libbz2_so'.  This Makefile seems to work for
+Linux-ELF (RedHat 7.2 on an x86 box), with gcc.  I make no claims
+that it works for any other platform, though I suspect it probably
+will work for most platforms employing both ELF and gcc.
+
+bzip2-shared, a client of the shared library, is also built, but not
+self-tested.  So I suggest you also build using the normal Makefile,
+since that conducts a self-test.  A second reason to prefer the
+version statically linked to the library is that, on x86 platforms,
+building shared objects makes a valuable register (%ebx) unavailable
+to gcc, resulting in a slowdown of 10%-20%, at least for bzip2.
+
+Important note for people upgrading .so's from 0.9.0/0.9.5 to version
+1.0.X.  All the functions in the library have been renamed, from (eg)
+bzCompress to BZ2_bzCompress, to avoid namespace pollution.
+Unfortunately this means that the libbz2.so created by
+Makefile-libbz2_so will not work with any program which used an older
+version of the library.  I do encourage library clients to make the
+effort to upgrade to use version 1.0, since it is both faster and more
+robust than previous versions.
+
+
+HOW TO BUILD -- Windows 95, NT, DOS, Mac, etc.
+
+It's difficult for me to support compilation on all these platforms.
+My approach is to collect binaries for these platforms, and put them
+on the master web site (http://www.bzip.org).  Look there.  However
+(FWIW), bzip2-1.0.X is very standard ANSI C and should compile
+unmodified with MS Visual C.  If you have difficulties building, you
+might want to read README.COMPILATION.PROBLEMS.
+
+At least using MS Visual C++ 6, you can build from the unmodified
+sources by issuing, in a command shell: 
+
+   nmake -f makefile.msc
+
+(you may need to first run the MSVC-provided script VCVARS32.BAT
+ so as to set up paths to the MSVC tools correctly).
+
+
+VALIDATION
+
+Correct operation, in the sense that a compressed file can always be
+decompressed to reproduce the original, is obviously of paramount
+importance.  To validate bzip2, I used a modified version of Mark
+Nelson's churn program.  Churn is an automated test driver which
+recursively traverses a directory structure, using bzip2 to compress
+and then decompress each file it encounters, and checking that the
+decompressed data is the same as the original.
+
+
+
+Please read and be aware of the following:
+
+WARNING:
+
+   This program and library (attempts to) compress data by 
+   performing several non-trivial transformations on it.  
+   Unless you are 100% familiar with *all* the algorithms 
+   contained herein, and with the consequences of modifying them, 
+   you should NOT meddle with the compression or decompression 
+   machinery.  Incorrect changes can and very likely *will* 
+   lead to disastrous loss of data.
+
+
+DISCLAIMER:
+
+   I TAKE NO RESPONSIBILITY FOR ANY LOSS OF DATA ARISING FROM THE
+   USE OF THIS PROGRAM/LIBRARY, HOWSOEVER CAUSED.
+
+   Every compression of a file implies an assumption that the
+   compressed file can be decompressed to reproduce the original.
+   Great efforts in design, coding and testing have been made to
+   ensure that this program works correctly.  However, the complexity
+   of the algorithms, and, in particular, the presence of various
+   special cases in the code which occur with very low but non-zero
+   probability make it impossible to rule out the possibility of bugs
+   remaining in the program.  DO NOT COMPRESS ANY DATA WITH THIS
+   PROGRAM UNLESS YOU ARE PREPARED TO ACCEPT THE POSSIBILITY, HOWEVER
+   SMALL, THAT THE DATA WILL NOT BE RECOVERABLE.
+
+   That is not to say this program is inherently unreliable.  
+   Indeed, I very much hope the opposite is true.  bzip2/libbzip2 
+   has been carefully constructed and extensively tested.
+
+
+PATENTS:
+
+   To the best of my knowledge, bzip2/libbzip2 does not use any 
+   patented algorithms.  However, I do not have the resources 
+   to carry out a patent search.  Therefore I cannot give any 
+   guarantee of the above statement.
+
+
+
+WHAT'S NEW IN 0.9.0 (as compared to 0.1pl2) ?
+
+   * Approx 10% faster compression, 30% faster decompression
+   * -t (test mode) is a lot quicker
+   * Can decompress concatenated compressed files
+   * Programming interface, so programs can directly read/write .bz2 files
+   * Less restrictive (BSD-style) licensing
+   * Flag handling more compatible with GNU gzip
+   * Much more documentation, i.e., a proper user manual
+   * Hopefully, improved portability (at least of the library)
+
+WHAT'S NEW IN 0.9.5 ?
+
+   * Compression speed is much less sensitive to the input
+     data than in previous versions.  Specifically, the very
+     slow performance caused by repetitive data is fixed.
+   * Many small improvements in file and flag handling.
+   * A Y2K statement.
+
+WHAT'S NEW IN 1.0.0 ?
+
+   See the CHANGES file.
+
+WHAT'S NEW IN 1.0.2 ?
+
+   See the CHANGES file.
+
+WHAT'S NEW IN 1.0.3 ?
+
+   See the CHANGES file.
+
+WHAT'S NEW IN 1.0.4 ?
+
+   See the CHANGES file.
+
+WHAT'S NEW IN 1.0.5 ?
+
+   See the CHANGES file.
+
+WHAT'S NEW IN 1.0.6 ?
+
+   See the CHANGES file.
+
+
+I hope you find bzip2 useful.  Feel free to contact me at
+   jseward@bzip.org
+if you have any suggestions or queries.  Many people mailed me with
+comments, suggestions and patches after the releases of bzip-0.15,
+bzip-0.21, and bzip2 versions 0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1,
+1.0.2 and 1.0.3, and the changes in bzip2 are largely a result of this
+feedback.  I thank you for your comments.
+
+bzip2's "home" is http://www.bzip.org/
+
+Julian Seward
+jseward@bzip.org
+Cambridge, UK.
+
+18     July 1996 (version 0.15)
+25   August 1996 (version 0.21)
+ 7   August 1997 (bzip2, version 0.1)
+29   August 1997 (bzip2, version 0.1pl2)
+23   August 1998 (bzip2, version 0.9.0)
+ 8     June 1999 (bzip2, version 0.9.5)
+ 4     Sept 1999 (bzip2, version 0.9.5d)
+ 5      May 2000 (bzip2, version 1.0pre8)
+30 December 2001 (bzip2, version 1.0.2pre1)
+15 February 2005 (bzip2, version 1.0.3)
+20 December 2006 (bzip2, version 1.0.4)
+10 December 2007 (bzip2, version 1.0.5)
+ 6     Sept 2010 (bzip2, version 1.0.6)
diff --git a/usr/src/boot/contrib/bzip2/README.COMPILATION.PROBLEMS b/usr/src/boot/contrib/bzip2/README.COMPILATION.PROBLEMS
new file mode 100644
index 0000000..667d0d6
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/README.COMPILATION.PROBLEMS
@@ -0,0 +1,58 @@
+------------------------------------------------------------------
+This file is part of bzip2/libbzip2, a program and library for
+lossless, block-sorting data compression.
+
+bzip2/libbzip2 version 1.0.6 of 6 September 2010
+Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+README file.
+
+This program is released under the terms of the license contained
+in the file LICENSE.
+------------------------------------------------------------------
+
+bzip2-1.0.6 should compile without problems on the vast majority of
+platforms.  Using the supplied Makefile, I've built and tested it
+myself for x86-linux and amd64-linux.  With makefile.msc, Visual C++
+6.0 and nmake, you can build a native Win32 version too.  Large file
+support seems to work correctly on at least on amd64-linux.
+
+When I say "large file" I mean a file of size 2,147,483,648 (2^31)
+bytes or above.  Many older OSs can't handle files above this size,
+but many newer ones can.  Large files are pretty huge -- most files
+you'll encounter are not Large Files.
+
+Early versions of bzip2 (0.1, 0.9.0, 0.9.5) compiled on a wide variety
+of platforms without difficulty, and I hope this version will continue
+in that tradition.  However, in order to support large files, I've had
+to include the define -D_FILE_OFFSET_BITS=64 in the Makefile.  This
+can cause problems.
+
+The technique of adding -D_FILE_OFFSET_BITS=64 to get large file
+support is, as far as I know, the Recommended Way to get correct large
+file support.  For more details, see the Large File Support
+Specification, published by the Large File Summit, at
+
+   http://ftp.sas.com/standards/large.file
+
+As a general comment, if you get compilation errors which you think
+are related to large file support, try removing the above define from
+the Makefile, ie, delete the line
+
+   BIGFILES=-D_FILE_OFFSET_BITS=64 
+
+from the Makefile, and do 'make clean ; make'.  This will give you a
+version of bzip2 without large file support, which, for most
+applications, is probably not a problem.  
+
+Alternatively, try some of the platform-specific hints listed below.
+
+You can use the spewG.c program to generate huge files to test bzip2's
+large file support, if you are feeling paranoid.  Be aware though that
+any compilation problems which affect bzip2 will also affect spewG.c,
+alas.
+
+AIX: I have reports that for large file support, you need to specify
+-D_LARGE_FILES rather than -D_FILE_OFFSET_BITS=64.  I have not tested
+this myself.
diff --git a/usr/src/boot/contrib/bzip2/blocksort.c b/usr/src/boot/contrib/bzip2/blocksort.c
new file mode 100644
index 0000000..d0d662c
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/blocksort.c
@@ -0,0 +1,1094 @@
+
+/*-------------------------------------------------------------*/
+/*--- Block sorting machinery                               ---*/
+/*---                                           blocksort.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*---------------------------------------------*/
+/*--- Fallback O(N log(N)^2) sorting        ---*/
+/*--- algorithm, for repetitive blocks      ---*/
+/*---------------------------------------------*/
+
+/*---------------------------------------------*/
+static 
+__inline__
+void fallbackSimpleSort ( UInt32* fmap, 
+                          UInt32* eclass, 
+                          Int32   lo, 
+                          Int32   hi )
+{
+   Int32 i, j, tmp;
+   UInt32 ec_tmp;
+
+   if (lo == hi) return;
+
+   if (hi - lo > 3) {
+      for ( i = hi-4; i >= lo; i-- ) {
+         tmp = fmap[i];
+         ec_tmp = eclass[tmp];
+         for ( j = i+4; j <= hi && ec_tmp > eclass[fmap[j]]; j += 4 )
+            fmap[j-4] = fmap[j];
+         fmap[j-4] = tmp;
+      }
+   }
+
+   for ( i = hi-1; i >= lo; i-- ) {
+      tmp = fmap[i];
+      ec_tmp = eclass[tmp];
+      for ( j = i+1; j <= hi && ec_tmp > eclass[fmap[j]]; j++ )
+         fmap[j-1] = fmap[j];
+      fmap[j-1] = tmp;
+   }
+}
+
+
+/*---------------------------------------------*/
+#define fswap(zz1, zz2) \
+   { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
+
+#define fvswap(zzp1, zzp2, zzn)       \
+{                                     \
+   Int32 yyp1 = (zzp1);               \
+   Int32 yyp2 = (zzp2);               \
+   Int32 yyn  = (zzn);                \
+   while (yyn > 0) {                  \
+      fswap(fmap[yyp1], fmap[yyp2]);  \
+      yyp1++; yyp2++; yyn--;          \
+   }                                  \
+}
+
+
+#define fmin(a,b) ((a) < (b)) ? (a) : (b)
+
+#define fpush(lz,hz) { stackLo[sp] = lz; \
+                       stackHi[sp] = hz; \
+                       sp++; }
+
+#define fpop(lz,hz) { sp--;              \
+                      lz = stackLo[sp];  \
+                      hz = stackHi[sp]; }
+
+#define FALLBACK_QSORT_SMALL_THRESH 10
+#define FALLBACK_QSORT_STACK_SIZE   100
+
+
+static
+void fallbackQSort3 ( UInt32* fmap, 
+                      UInt32* eclass,
+                      Int32   loSt, 
+                      Int32   hiSt )
+{
+   Int32 unLo, unHi, ltLo, gtHi, n, m;
+   Int32 sp, lo, hi;
+   UInt32 med, r, r3;
+   Int32 stackLo[FALLBACK_QSORT_STACK_SIZE];
+   Int32 stackHi[FALLBACK_QSORT_STACK_SIZE];
+
+   r = 0;
+
+   sp = 0;
+   fpush ( loSt, hiSt );
+
+   while (sp > 0) {
+
+      AssertH ( sp < FALLBACK_QSORT_STACK_SIZE - 1, 1004 );
+
+      fpop ( lo, hi );
+      if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) {
+         fallbackSimpleSort ( fmap, eclass, lo, hi );
+         continue;
+      }
+
+      /* Random partitioning.  Median of 3 sometimes fails to
+         avoid bad cases.  Median of 9 seems to help but 
+         looks rather expensive.  This too seems to work but
+         is cheaper.  Guidance for the magic constants 
+         7621 and 32768 is taken from Sedgewick's algorithms
+         book, chapter 35.
+      */
+      r = ((r * 7621) + 1) % 32768;
+      r3 = r % 3;
+      if (r3 == 0) med = eclass[fmap[lo]]; else
+      if (r3 == 1) med = eclass[fmap[(lo+hi)>>1]]; else
+                   med = eclass[fmap[hi]];
+
+      unLo = ltLo = lo;
+      unHi = gtHi = hi;
+
+      while (1) {
+         while (1) {
+            if (unLo > unHi) break;
+            n = (Int32)eclass[fmap[unLo]] - (Int32)med;
+            if (n == 0) { 
+               fswap(fmap[unLo], fmap[ltLo]); 
+               ltLo++; unLo++; 
+               continue; 
+            };
+            if (n > 0) break;
+            unLo++;
+         }
+         while (1) {
+            if (unLo > unHi) break;
+            n = (Int32)eclass[fmap[unHi]] - (Int32)med;
+            if (n == 0) { 
+               fswap(fmap[unHi], fmap[gtHi]); 
+               gtHi--; unHi--; 
+               continue; 
+            };
+            if (n < 0) break;
+            unHi--;
+         }
+         if (unLo > unHi) break;
+         fswap(fmap[unLo], fmap[unHi]); unLo++; unHi--;
+      }
+
+      AssertD ( unHi == unLo-1, "fallbackQSort3(2)" );
+
+      if (gtHi < ltLo) continue;
+
+      n = fmin(ltLo-lo, unLo-ltLo); fvswap(lo, unLo-n, n);
+      m = fmin(hi-gtHi, gtHi-unHi); fvswap(unLo, hi-m+1, m);
+
+      n = lo + unLo - ltLo - 1;
+      m = hi - (gtHi - unHi) + 1;
+
+      if (n - lo > hi - m) {
+         fpush ( lo, n );
+         fpush ( m, hi );
+      } else {
+         fpush ( m, hi );
+         fpush ( lo, n );
+      }
+   }
+}
+
+#undef fmin
+#undef fpush
+#undef fpop
+#undef fswap
+#undef fvswap
+#undef FALLBACK_QSORT_SMALL_THRESH
+#undef FALLBACK_QSORT_STACK_SIZE
+
+
+/*---------------------------------------------*/
+/* Pre:
+      nblock > 0
+      eclass exists for [0 .. nblock-1]
+      ((UChar*)eclass) [0 .. nblock-1] holds block
+      ptr exists for [0 .. nblock-1]
+
+   Post:
+      ((UChar*)eclass) [0 .. nblock-1] holds block
+      All other areas of eclass destroyed
+      fmap [0 .. nblock-1] holds sorted order
+      bhtab [ 0 .. 2+(nblock/32) ] destroyed
+*/
+
+#define       SET_BH(zz)  bhtab[(zz) >> 5] |= (1 << ((zz) & 31))
+#define     CLEAR_BH(zz)  bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31))
+#define     ISSET_BH(zz)  (bhtab[(zz) >> 5] & (1 << ((zz) & 31)))
+#define      WORD_BH(zz)  bhtab[(zz) >> 5]
+#define UNALIGNED_BH(zz)  ((zz) & 0x01f)
+
+static
+void fallbackSort ( UInt32* fmap, 
+                    UInt32* eclass, 
+                    UInt32* bhtab,
+                    Int32   nblock,
+                    Int32   verb )
+{
+   Int32 ftab[257];
+   Int32 ftabCopy[256];
+   Int32 H, i, j, k, l, r, cc, cc1;
+   Int32 nNotDone;
+   Int32 nBhtab;
+   UChar* eclass8 = (UChar*)eclass;
+
+   /*--
+      Initial 1-char radix sort to generate
+      initial fmap and initial BH bits.
+   --*/
+   if (verb >= 4)
+      VPrintf0 ( "        bucket sorting ...\n" );
+   for (i = 0; i < 257;    i++) ftab[i] = 0;
+   for (i = 0; i < nblock; i++) ftab[eclass8[i]]++;
+   for (i = 0; i < 256;    i++) ftabCopy[i] = ftab[i];
+   for (i = 1; i < 257;    i++) ftab[i] += ftab[i-1];
+
+   for (i = 0; i < nblock; i++) {
+      j = eclass8[i];
+      k = ftab[j] - 1;
+      ftab[j] = k;
+      fmap[k] = i;
+   }
+
+   nBhtab = 2 + (nblock / 32);
+   for (i = 0; i < nBhtab; i++) bhtab[i] = 0;
+   for (i = 0; i < 256; i++) SET_BH(ftab[i]);
+
+   /*--
+      Inductively refine the buckets.  Kind-of an
+      "exponential radix sort" (!), inspired by the
+      Manber-Myers suffix array construction algorithm.
+   --*/
+
+   /*-- set sentinel bits for block-end detection --*/
+   for (i = 0; i < 32; i++) { 
+      SET_BH(nblock + 2*i);
+      CLEAR_BH(nblock + 2*i + 1);
+   }
+
+   /*-- the log(N) loop --*/
+   H = 1;
+   while (1) {
+
+      if (verb >= 4) 
+         VPrintf1 ( "        depth %6d has ", H );
+
+      j = 0;
+      for (i = 0; i < nblock; i++) {
+         if (ISSET_BH(i)) j = i;
+         k = fmap[i] - H; if (k < 0) k += nblock;
+         eclass[k] = j;
+      }
+
+      nNotDone = 0;
+      r = -1;
+      while (1) {
+
+	 /*-- find the next non-singleton bucket --*/
+         k = r + 1;
+         while (ISSET_BH(k) && UNALIGNED_BH(k)) k++;
+         if (ISSET_BH(k)) {
+            while (WORD_BH(k) == 0xffffffff) k += 32;
+            while (ISSET_BH(k)) k++;
+         }
+         l = k - 1;
+         if (l >= nblock) break;
+         while (!ISSET_BH(k) && UNALIGNED_BH(k)) k++;
+         if (!ISSET_BH(k)) {
+            while (WORD_BH(k) == 0x00000000) k += 32;
+            while (!ISSET_BH(k)) k++;
+         }
+         r = k - 1;
+         if (r >= nblock) break;
+
+         /*-- now [l, r] bracket current bucket --*/
+         if (r > l) {
+            nNotDone += (r - l + 1);
+            fallbackQSort3 ( fmap, eclass, l, r );
+
+            /*-- scan bucket and generate header bits-- */
+            cc = -1;
+            for (i = l; i <= r; i++) {
+               cc1 = eclass[fmap[i]];
+               if (cc != cc1) { SET_BH(i); cc = cc1; };
+            }
+         }
+      }
+
+      if (verb >= 4) 
+         VPrintf1 ( "%6d unresolved strings\n", nNotDone );
+
+      H *= 2;
+      if (H > nblock || nNotDone == 0) break;
+   }
+
+   /*-- 
+      Reconstruct the original block in
+      eclass8 [0 .. nblock-1], since the
+      previous phase destroyed it.
+   --*/
+   if (verb >= 4)
+      VPrintf0 ( "        reconstructing block ...\n" );
+   j = 0;
+   for (i = 0; i < nblock; i++) {
+      while (ftabCopy[j] == 0) j++;
+      ftabCopy[j]--;
+      eclass8[fmap[i]] = (UChar)j;
+   }
+   AssertH ( j < 256, 1005 );
+}
+
+#undef       SET_BH
+#undef     CLEAR_BH
+#undef     ISSET_BH
+#undef      WORD_BH
+#undef UNALIGNED_BH
+
+
+/*---------------------------------------------*/
+/*--- The main, O(N^2 log(N)) sorting       ---*/
+/*--- algorithm.  Faster for "normal"       ---*/
+/*--- non-repetitive blocks.                ---*/
+/*---------------------------------------------*/
+
+/*---------------------------------------------*/
+static
+__inline__
+Bool mainGtU ( UInt32  i1, 
+               UInt32  i2,
+               UChar*  block, 
+               UInt16* quadrant,
+               UInt32  nblock,
+               Int32*  budget )
+{
+   Int32  k;
+   UChar  c1, c2;
+   UInt16 s1, s2;
+
+   AssertD ( i1 != i2, "mainGtU" );
+   /* 1 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 2 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 3 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 4 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 5 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 6 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 7 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 8 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 9 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 10 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 11 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+   /* 12 */
+   c1 = block[i1]; c2 = block[i2];
+   if (c1 != c2) return (c1 > c2);
+   i1++; i2++;
+
+   k = nblock + 8;
+
+   do {
+      /* 1 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 2 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 3 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 4 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 5 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 6 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 7 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+      /* 8 */
+      c1 = block[i1]; c2 = block[i2];
+      if (c1 != c2) return (c1 > c2);
+      s1 = quadrant[i1]; s2 = quadrant[i2];
+      if (s1 != s2) return (s1 > s2);
+      i1++; i2++;
+
+      if (i1 >= nblock) i1 -= nblock;
+      if (i2 >= nblock) i2 -= nblock;
+
+      k -= 8;
+      (*budget)--;
+   }
+      while (k >= 0);
+
+   return False;
+}
+
+
+/*---------------------------------------------*/
+/*--
+   Knuth's increments seem to work better
+   than Incerpi-Sedgewick here.  Possibly
+   because the number of elems to sort is
+   usually small, typically <= 20.
+--*/
+static
+Int32 incs[14] = { 1, 4, 13, 40, 121, 364, 1093, 3280,
+                   9841, 29524, 88573, 265720,
+                   797161, 2391484 };
+
+static
+void mainSimpleSort ( UInt32* ptr,
+                      UChar*  block,
+                      UInt16* quadrant,
+                      Int32   nblock,
+                      Int32   lo, 
+                      Int32   hi, 
+                      Int32   d,
+                      Int32*  budget )
+{
+   Int32 i, j, h, bigN, hp;
+   UInt32 v;
+
+   bigN = hi - lo + 1;
+   if (bigN < 2) return;
+
+   hp = 0;
+   while (incs[hp] < bigN) hp++;
+   hp--;
+
+   for (; hp >= 0; hp--) {
+      h = incs[hp];
+
+      i = lo + h;
+      while (True) {
+
+         /*-- copy 1 --*/
+         if (i > hi) break;
+         v = ptr[i];
+         j = i;
+         while ( mainGtU ( 
+                    ptr[j-h]+d, v+d, block, quadrant, nblock, budget 
+                 ) ) {
+            ptr[j] = ptr[j-h];
+            j = j - h;
+            if (j <= (lo + h - 1)) break;
+         }
+         ptr[j] = v;
+         i++;
+
+         /*-- copy 2 --*/
+         if (i > hi) break;
+         v = ptr[i];
+         j = i;
+         while ( mainGtU ( 
+                    ptr[j-h]+d, v+d, block, quadrant, nblock, budget 
+                 ) ) {
+            ptr[j] = ptr[j-h];
+            j = j - h;
+            if (j <= (lo + h - 1)) break;
+         }
+         ptr[j] = v;
+         i++;
+
+         /*-- copy 3 --*/
+         if (i > hi) break;
+         v = ptr[i];
+         j = i;
+         while ( mainGtU ( 
+                    ptr[j-h]+d, v+d, block, quadrant, nblock, budget 
+                 ) ) {
+            ptr[j] = ptr[j-h];
+            j = j - h;
+            if (j <= (lo + h - 1)) break;
+         }
+         ptr[j] = v;
+         i++;
+
+         if (*budget < 0) return;
+      }
+   }
+}
+
+
+/*---------------------------------------------*/
+/*--
+   The following is an implementation of
+   an elegant 3-way quicksort for strings,
+   described in a paper "Fast Algorithms for
+   Sorting and Searching Strings", by Robert
+   Sedgewick and Jon L. Bentley.
+--*/
+
+#define mswap(zz1, zz2) \
+   { Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
+
+#define mvswap(zzp1, zzp2, zzn)       \
+{                                     \
+   Int32 yyp1 = (zzp1);               \
+   Int32 yyp2 = (zzp2);               \
+   Int32 yyn  = (zzn);                \
+   while (yyn > 0) {                  \
+      mswap(ptr[yyp1], ptr[yyp2]);    \
+      yyp1++; yyp2++; yyn--;          \
+   }                                  \
+}
+
+static 
+__inline__
+UChar mmed3 ( UChar a, UChar b, UChar c )
+{
+   UChar t;
+   if (a > b) { t = a; a = b; b = t; };
+   if (b > c) { 
+      b = c;
+      if (a > b) b = a;
+   }
+   return b;
+}
+
+#define mmin(a,b) ((a) < (b)) ? (a) : (b)
+
+#define mpush(lz,hz,dz) { stackLo[sp] = lz; \
+                          stackHi[sp] = hz; \
+                          stackD [sp] = dz; \
+                          sp++; }
+
+#define mpop(lz,hz,dz) { sp--;             \
+                         lz = stackLo[sp]; \
+                         hz = stackHi[sp]; \
+                         dz = stackD [sp]; }
+
+
+#define mnextsize(az) (nextHi[az]-nextLo[az])
+
+#define mnextswap(az,bz)                                        \
+   { Int32 tz;                                                  \
+     tz = nextLo[az]; nextLo[az] = nextLo[bz]; nextLo[bz] = tz; \
+     tz = nextHi[az]; nextHi[az] = nextHi[bz]; nextHi[bz] = tz; \
+     tz = nextD [az]; nextD [az] = nextD [bz]; nextD [bz] = tz; }
+
+
+#define MAIN_QSORT_SMALL_THRESH 20
+#define MAIN_QSORT_DEPTH_THRESH (BZ_N_RADIX + BZ_N_QSORT)
+#define MAIN_QSORT_STACK_SIZE 100
+
+static
+void mainQSort3 ( UInt32* ptr,
+                  UChar*  block,
+                  UInt16* quadrant,
+                  Int32   nblock,
+                  Int32   loSt, 
+                  Int32   hiSt, 
+                  Int32   dSt,
+                  Int32*  budget )
+{
+   Int32 unLo, unHi, ltLo, gtHi, n, m, med;
+   Int32 sp, lo, hi, d;
+
+   Int32 stackLo[MAIN_QSORT_STACK_SIZE];
+   Int32 stackHi[MAIN_QSORT_STACK_SIZE];
+   Int32 stackD [MAIN_QSORT_STACK_SIZE];
+
+   Int32 nextLo[3];
+   Int32 nextHi[3];
+   Int32 nextD [3];
+
+   sp = 0;
+   mpush ( loSt, hiSt, dSt );
+
+   while (sp > 0) {
+
+      AssertH ( sp < MAIN_QSORT_STACK_SIZE - 2, 1001 );
+
+      mpop ( lo, hi, d );
+      if (hi - lo < MAIN_QSORT_SMALL_THRESH || 
+          d > MAIN_QSORT_DEPTH_THRESH) {
+         mainSimpleSort ( ptr, block, quadrant, nblock, lo, hi, d, budget );
+         if (*budget < 0) return;
+         continue;
+      }
+
+      med = (Int32) 
+            mmed3 ( block[ptr[ lo         ]+d],
+                    block[ptr[ hi         ]+d],
+                    block[ptr[ (lo+hi)>>1 ]+d] );
+
+      unLo = ltLo = lo;
+      unHi = gtHi = hi;
+
+      while (True) {
+         while (True) {
+            if (unLo > unHi) break;
+            n = ((Int32)block[ptr[unLo]+d]) - med;
+            if (n == 0) { 
+               mswap(ptr[unLo], ptr[ltLo]); 
+               ltLo++; unLo++; continue; 
+            };
+            if (n >  0) break;
+            unLo++;
+         }
+         while (True) {
+            if (unLo > unHi) break;
+            n = ((Int32)block[ptr[unHi]+d]) - med;
+            if (n == 0) { 
+               mswap(ptr[unHi], ptr[gtHi]); 
+               gtHi--; unHi--; continue; 
+            };
+            if (n <  0) break;
+            unHi--;
+         }
+         if (unLo > unHi) break;
+         mswap(ptr[unLo], ptr[unHi]); unLo++; unHi--;
+      }
+
+      AssertD ( unHi == unLo-1, "mainQSort3(2)" );
+
+      if (gtHi < ltLo) {
+         mpush(lo, hi, d+1 );
+         continue;
+      }
+
+      n = mmin(ltLo-lo, unLo-ltLo); mvswap(lo, unLo-n, n);
+      m = mmin(hi-gtHi, gtHi-unHi); mvswap(unLo, hi-m+1, m);
+
+      n = lo + unLo - ltLo - 1;
+      m = hi - (gtHi - unHi) + 1;
+
+      nextLo[0] = lo;  nextHi[0] = n;   nextD[0] = d;
+      nextLo[1] = m;   nextHi[1] = hi;  nextD[1] = d;
+      nextLo[2] = n+1; nextHi[2] = m-1; nextD[2] = d+1;
+
+      if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
+      if (mnextsize(1) < mnextsize(2)) mnextswap(1,2);
+      if (mnextsize(0) < mnextsize(1)) mnextswap(0,1);
+
+      AssertD (mnextsize(0) >= mnextsize(1), "mainQSort3(8)" );
+      AssertD (mnextsize(1) >= mnextsize(2), "mainQSort3(9)" );
+
+      mpush (nextLo[0], nextHi[0], nextD[0]);
+      mpush (nextLo[1], nextHi[1], nextD[1]);
+      mpush (nextLo[2], nextHi[2], nextD[2]);
+   }
+}
+
+#undef mswap
+#undef mvswap
+#undef mpush
+#undef mpop
+#undef mmin
+#undef mnextsize
+#undef mnextswap
+#undef MAIN_QSORT_SMALL_THRESH
+#undef MAIN_QSORT_DEPTH_THRESH
+#undef MAIN_QSORT_STACK_SIZE
+
+
+/*---------------------------------------------*/
+/* Pre:
+      nblock > N_OVERSHOOT
+      block32 exists for [0 .. nblock-1 +N_OVERSHOOT]
+      ((UChar*)block32) [0 .. nblock-1] holds block
+      ptr exists for [0 .. nblock-1]
+
+   Post:
+      ((UChar*)block32) [0 .. nblock-1] holds block
+      All other areas of block32 destroyed
+      ftab [0 .. 65536 ] destroyed
+      ptr [0 .. nblock-1] holds sorted order
+      if (*budget < 0), sorting was abandoned
+*/
+
+#define BIGFREQ(b) (ftab[((b)+1) << 8] - ftab[(b) << 8])
+#define SETMASK (1 << 21)
+#define CLEARMASK (~(SETMASK))
+
+static
+void mainSort ( UInt32* ptr, 
+                UChar*  block,
+                UInt16* quadrant, 
+                UInt32* ftab,
+                Int32   nblock,
+                Int32   verb,
+                Int32*  budget )
+{
+   Int32  i, j, k, ss, sb;
+   Int32  runningOrder[256];
+   Bool   bigDone[256];
+   Int32  copyStart[256];
+   Int32  copyEnd  [256];
+   UChar  c1;
+   Int32  numQSorted;
+   UInt16 s;
+   if (verb >= 4) VPrintf0 ( "        main sort initialise ...\n" );
+
+   /*-- set up the 2-byte frequency table --*/
+   for (i = 65536; i >= 0; i--) ftab[i] = 0;
+
+   j = block[0] << 8;
+   i = nblock-1;
+   for (; i >= 3; i -= 4) {
+      quadrant[i] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i]) << 8);
+      ftab[j]++;
+      quadrant[i-1] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i-1]) << 8);
+      ftab[j]++;
+      quadrant[i-2] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i-2]) << 8);
+      ftab[j]++;
+      quadrant[i-3] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i-3]) << 8);
+      ftab[j]++;
+   }
+   for (; i >= 0; i--) {
+      quadrant[i] = 0;
+      j = (j >> 8) | ( ((UInt16)block[i]) << 8);
+      ftab[j]++;
+   }
+
+   /*-- (emphasises close relationship of block & quadrant) --*/
+   for (i = 0; i < BZ_N_OVERSHOOT; i++) {
+      block   [nblock+i] = block[i];
+      quadrant[nblock+i] = 0;
+   }
+
+   if (verb >= 4) VPrintf0 ( "        bucket sorting ...\n" );
+
+   /*-- Complete the initial radix sort --*/
+   for (i = 1; i <= 65536; i++) ftab[i] += ftab[i-1];
+
+   s = block[0] << 8;
+   i = nblock-1;
+   for (; i >= 3; i -= 4) {
+      s = (s >> 8) | (block[i] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i;
+      s = (s >> 8) | (block[i-1] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i-1;
+      s = (s >> 8) | (block[i-2] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i-2;
+      s = (s >> 8) | (block[i-3] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i-3;
+   }
+   for (; i >= 0; i--) {
+      s = (s >> 8) | (block[i] << 8);
+      j = ftab[s] -1;
+      ftab[s] = j;
+      ptr[j] = i;
+   }
+
+   /*--
+      Now ftab contains the first loc of every small bucket.
+      Calculate the running order, from smallest to largest
+      big bucket.
+   --*/
+   for (i = 0; i <= 255; i++) {
+      bigDone     [i] = False;
+      runningOrder[i] = i;
+   }
+
+   {
+      Int32 vv;
+      Int32 h = 1;
+      do h = 3 * h + 1; while (h <= 256);
+      do {
+         h = h / 3;
+         for (i = h; i <= 255; i++) {
+            vv = runningOrder[i];
+            j = i;
+            while ( BIGFREQ(runningOrder[j-h]) > BIGFREQ(vv) ) {
+               runningOrder[j] = runningOrder[j-h];
+               j = j - h;
+               if (j <= (h - 1)) goto zero;
+            }
+            zero:
+            runningOrder[j] = vv;
+         }
+      } while (h != 1);
+   }
+
+   /*--
+      The main sorting loop.
+   --*/
+
+   numQSorted = 0;
+
+   for (i = 0; i <= 255; i++) {
+
+      /*--
+         Process big buckets, starting with the least full.
+         Basically this is a 3-step process in which we call
+         mainQSort3 to sort the small buckets [ss, j], but
+         also make a big effort to avoid the calls if we can.
+      --*/
+      ss = runningOrder[i];
+
+      /*--
+         Step 1:
+         Complete the big bucket [ss] by quicksorting
+         any unsorted small buckets [ss, j], for j != ss.  
+         Hopefully previous pointer-scanning phases have already
+         completed many of the small buckets [ss, j], so
+         we don't have to sort them at all.
+      --*/
+      for (j = 0; j <= 255; j++) {
+         if (j != ss) {
+            sb = (ss << 8) + j;
+            if ( ! (ftab[sb] & SETMASK) ) {
+               Int32 lo = ftab[sb]   & CLEARMASK;
+               Int32 hi = (ftab[sb+1] & CLEARMASK) - 1;
+               if (hi > lo) {
+                  if (verb >= 4)
+                     VPrintf4 ( "        qsort [0x%x, 0x%x]   "
+                                "done %d   this %d\n",
+                                ss, j, numQSorted, hi - lo + 1 );
+                  mainQSort3 ( 
+                     ptr, block, quadrant, nblock, 
+                     lo, hi, BZ_N_RADIX, budget 
+                  );   
+                  numQSorted += (hi - lo + 1);
+                  if (*budget < 0) return;
+               }
+            }
+            ftab[sb] |= SETMASK;
+         }
+      }
+
+      AssertH ( !bigDone[ss], 1006 );
+
+      /*--
+         Step 2:
+         Now scan this big bucket [ss] so as to synthesise the
+         sorted order for small buckets [t, ss] for all t,
+         including, magically, the bucket [ss,ss] too.
+         This will avoid doing Real Work in subsequent Step 1's.
+      --*/
+      {
+         for (j = 0; j <= 255; j++) {
+            copyStart[j] =  ftab[(j << 8) + ss]     & CLEARMASK;
+            copyEnd  [j] = (ftab[(j << 8) + ss + 1] & CLEARMASK) - 1;
+         }
+         for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) {
+            k = ptr[j]-1; if (k < 0) k += nblock;
+            c1 = block[k];
+            if (!bigDone[c1])
+               ptr[ copyStart[c1]++ ] = k;
+         }
+         for (j = (ftab[(ss+1) << 8] & CLEARMASK) - 1; j > copyEnd[ss]; j--) {
+            k = ptr[j]-1; if (k < 0) k += nblock;
+            c1 = block[k];
+            if (!bigDone[c1]) 
+               ptr[ copyEnd[c1]-- ] = k;
+         }
+      }
+
+      AssertH ( (copyStart[ss]-1 == copyEnd[ss])
+                || 
+                /* Extremely rare case missing in bzip2-1.0.0 and 1.0.1.
+                   Necessity for this case is demonstrated by compressing 
+                   a sequence of approximately 48.5 million of character 
+                   251; 1.0.0/1.0.1 will then die here. */
+                (copyStart[ss] == 0 && copyEnd[ss] == nblock-1),
+                1007 )
+
+      for (j = 0; j <= 255; j++) ftab[(j << 8) + ss] |= SETMASK;
+
+      /*--
+         Step 3:
+         The [ss] big bucket is now done.  Record this fact,
+         and update the quadrant descriptors.  Remember to
+         update quadrants in the overshoot area too, if
+         necessary.  The "if (i < 255)" test merely skips
+         this updating for the last bucket processed, since
+         updating for the last bucket is pointless.
+
+         The quadrant array provides a way to incrementally
+         cache sort orderings, as they appear, so as to 
+         make subsequent comparisons in fullGtU() complete
+         faster.  For repetitive blocks this makes a big
+         difference (but not big enough to be able to avoid
+         the fallback sorting mechanism, exponential radix sort).
+
+         The precise meaning is: at all times:
+
+            for 0 <= i < nblock and 0 <= j <= nblock
+
+            if block[i] != block[j], 
+
+               then the relative values of quadrant[i] and 
+                    quadrant[j] are meaningless.
+
+               else {
+                  if quadrant[i] < quadrant[j]
+                     then the string starting at i lexicographically
+                     precedes the string starting at j
+
+                  else if quadrant[i] > quadrant[j]
+                     then the string starting at j lexicographically
+                     precedes the string starting at i
+
+                  else
+                     the relative ordering of the strings starting
+                     at i and j has not yet been determined.
+               }
+      --*/
+      bigDone[ss] = True;
+
+      if (i < 255) {
+         Int32 bbStart  = ftab[ss << 8] & CLEARMASK;
+         Int32 bbSize   = (ftab[(ss+1) << 8] & CLEARMASK) - bbStart;
+         Int32 shifts   = 0;
+
+         while ((bbSize >> shifts) > 65534) shifts++;
+
+         for (j = bbSize-1; j >= 0; j--) {
+            Int32 a2update     = ptr[bbStart + j];
+            UInt16 qVal        = (UInt16)(j >> shifts);
+            quadrant[a2update] = qVal;
+            if (a2update < BZ_N_OVERSHOOT)
+               quadrant[a2update + nblock] = qVal;
+         }
+         AssertH ( ((bbSize-1) >> shifts) <= 65535, 1002 );
+      }
+
+   }
+
+   if (verb >= 4)
+      VPrintf3 ( "        %d pointers, %d sorted, %d scanned\n",
+                 nblock, numQSorted, nblock - numQSorted );
+}
+
+#undef BIGFREQ
+#undef SETMASK
+#undef CLEARMASK
+
+
+/*---------------------------------------------*/
+/* Pre:
+      nblock > 0
+      arr2 exists for [0 .. nblock-1 +N_OVERSHOOT]
+      ((UChar*)arr2)  [0 .. nblock-1] holds block
+      arr1 exists for [0 .. nblock-1]
+
+   Post:
+      ((UChar*)arr2) [0 .. nblock-1] holds block
+      All other areas of block destroyed
+      ftab [ 0 .. 65536 ] destroyed
+      arr1 [0 .. nblock-1] holds sorted order
+*/
+void BZ2_blockSort ( EState* s )
+{
+   UInt32* ptr    = s->ptr; 
+   UChar*  block  = s->block;
+   UInt32* ftab   = s->ftab;
+   Int32   nblock = s->nblock;
+   Int32   verb   = s->verbosity;
+   Int32   wfact  = s->workFactor;
+   UInt16* quadrant;
+   Int32   budget;
+   Int32   budgetInit;
+   Int32   i;
+
+   if (nblock < 10000) {
+      fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
+   } else {
+      /* Calculate the location for quadrant, remembering to get
+         the alignment right.  Assumes that &(block[0]) is at least
+         2-byte aligned -- this should be ok since block is really
+         the first section of arr2.
+      */
+      i = nblock+BZ_N_OVERSHOOT;
+      if (i & 1) i++;
+      quadrant = (UInt16*)(&(block[i]));
+
+      /* (wfact-1) / 3 puts the default-factor-30
+         transition point at very roughly the same place as 
+         with v0.1 and v0.9.0.  
+         Not that it particularly matters any more, since the
+         resulting compressed stream is now the same regardless
+         of whether or not we use the main sort or fallback sort.
+      */
+      if (wfact < 1  ) wfact = 1;
+      if (wfact > 100) wfact = 100;
+      budgetInit = nblock * ((wfact-1) / 3);
+      budget = budgetInit;
+
+      mainSort ( ptr, block, quadrant, ftab, nblock, verb, &budget );
+      if (verb >= 3) 
+         VPrintf3 ( "      %d work, %d block, ratio %5.2f\n",
+                    budgetInit - budget,
+                    nblock, 
+                    (float)(budgetInit - budget) /
+                    (float)(nblock==0 ? 1 : nblock) ); 
+      if (budget < 0) {
+         if (verb >= 2) 
+            VPrintf0 ( "    too repetitive; using fallback"
+                       " sorting algorithm\n" );
+         fallbackSort ( s->arr1, s->arr2, ftab, nblock, verb );
+      }
+   }
+
+   s->origPtr = -1;
+   for (i = 0; i < s->nblock; i++)
+      if (ptr[i] == 0)
+         { s->origPtr = i; break; };
+
+   AssertH( s->origPtr != -1, 1003 );
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                       blocksort.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/usr/src/boot/contrib/bzip2/bzip2.1 b/usr/src/boot/contrib/bzip2/bzip2.1
new file mode 100644
index 0000000..7bd45f0
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/bzip2.1
@@ -0,0 +1,453 @@
+.TH bzip2 1
+.SH NAME
+bzip2, bunzip2 \- a block-sorting file compressor, v1.0.6
+.br
+bzcat \- decompresses files to stdout
+.br
+bzip2recover \- recovers data from damaged bzip2 files
+
+.SH SYNOPSIS
+.ll +8
+.B bzip2
+.RB [ " \-cdfkqstvzVL123456789 " ]
+[
+.I "filenames \&..."
+]
+.ll -8
+.br
+.B bunzip2
+.RB [ " \-fkvsVL " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzcat
+.RB [ " \-s " ]
+[ 
+.I "filenames \&..."
+]
+.br
+.B bzip2recover
+.I "filename"
+
+.SH DESCRIPTION
+.I bzip2
+compresses files using the Burrows-Wheeler block sorting
+text compression algorithm, and Huffman coding.  Compression is
+generally considerably better than that achieved by more conventional
+LZ77/LZ78-based compressors, and approaches the performance of the PPM
+family of statistical compressors.
+
+The command-line options are deliberately very similar to 
+those of 
+.I GNU gzip, 
+but they are not identical.
+
+.I bzip2
+expects a list of file names to accompany the
+command-line flags.  Each file is replaced by a compressed version of
+itself, with the name "original_name.bz2".  
+Each compressed file
+has the same modification date, permissions, and, when possible,
+ownership as the corresponding original, so that these properties can
+be correctly restored at decompression time.  File name handling is
+naive in the sense that there is no mechanism for preserving original
+file names, permissions, ownerships or dates in filesystems which lack
+these concepts, or have serious file name length restrictions, such as
+MS-DOS.
+
+.I bzip2
+and
+.I bunzip2
+will by default not overwrite existing
+files.  If you want this to happen, specify the \-f flag.
+
+If no file names are specified,
+.I bzip2
+compresses from standard
+input to standard output.  In this case,
+.I bzip2
+will decline to
+write compressed output to a terminal, as this would be entirely
+incomprehensible and therefore pointless.
+
+.I bunzip2
+(or
+.I bzip2 \-d) 
+decompresses all
+specified files.  Files which were not created by 
+.I bzip2
+will be detected and ignored, and a warning issued.  
+.I bzip2
+attempts to guess the filename for the decompressed file 
+from that of the compressed file as follows:
+
+       filename.bz2    becomes   filename
+       filename.bz     becomes   filename
+       filename.tbz2   becomes   filename.tar
+       filename.tbz    becomes   filename.tar
+       anyothername    becomes   anyothername.out
+
+If the file does not end in one of the recognised endings, 
+.I .bz2, 
+.I .bz, 
+.I .tbz2
+or
+.I .tbz, 
+.I bzip2 
+complains that it cannot
+guess the name of the original file, and uses the original name
+with
+.I .out
+appended.
+
+As with compression, supplying no
+filenames causes decompression from 
+standard input to standard output.
+
+.I bunzip2 
+will correctly decompress a file which is the
+concatenation of two or more compressed files.  The result is the
+concatenation of the corresponding uncompressed files.  Integrity
+testing (\-t) 
+of concatenated 
+compressed files is also supported.
+
+You can also compress or decompress files to the standard output by
+giving the \-c flag.  Multiple files may be compressed and
+decompressed like this.  The resulting outputs are fed sequentially to
+stdout.  Compression of multiple files 
+in this manner generates a stream
+containing multiple compressed file representations.  Such a stream
+can be decompressed correctly only by
+.I bzip2 
+version 0.9.0 or
+later.  Earlier versions of
+.I bzip2
+will stop after decompressing
+the first file in the stream.
+
+.I bzcat
+(or
+.I bzip2 -dc) 
+decompresses all specified files to
+the standard output.
+
+.I bzip2
+will read arguments from the environment variables
+.I BZIP2
+and
+.I BZIP,
+in that order, and will process them
+before any arguments read from the command line.  This gives a 
+convenient way to supply default arguments.
+
+Compression is always performed, even if the compressed 
+file is slightly
+larger than the original.  Files of less than about one hundred bytes
+tend to get larger, since the compression mechanism has a constant
+overhead in the region of 50 bytes.  Random data (including the output
+of most file compressors) is coded at about 8.05 bits per byte, giving
+an expansion of around 0.5%.
+
+As a self-check for your protection, 
+.I 
+bzip2
+uses 32-bit CRCs to
+make sure that the decompressed version of a file is identical to the
+original.  This guards against corruption of the compressed data, and
+against undetected bugs in
+.I bzip2
+(hopefully very unlikely).  The
+chances of data corruption going undetected is microscopic, about one
+chance in four billion for each file processed.  Be aware, though, that
+the check occurs upon decompression, so it can only tell you that
+something is wrong.  It can't help you 
+recover the original uncompressed
+data.  You can use 
+.I bzip2recover
+to try to recover data from
+damaged files.
+
+Return values: 0 for a normal exit, 1 for environmental problems (file
+not found, invalid flags, I/O errors, &c), 2 to indicate a corrupt
+compressed file, 3 for an internal consistency error (eg, bug) which
+caused
+.I bzip2
+to panic.
+
+.SH OPTIONS
+.TP
+.B \-c --stdout
+Compress or decompress to standard output.
+.TP
+.B \-d --decompress
+Force decompression.  
+.I bzip2, 
+.I bunzip2 
+and
+.I bzcat 
+are
+really the same program, and the decision about what actions to take is
+done on the basis of which name is used.  This flag overrides that
+mechanism, and forces 
+.I bzip2
+to decompress.
+.TP
+.B \-z --compress
+The complement to \-d: forces compression, regardless of the
+invocation name.
+.TP
+.B \-t --test
+Check integrity of the specified file(s), but don't decompress them.
+This really performs a trial decompression and throws away the result.
+.TP
+.B \-f --force
+Force overwrite of output files.  Normally,
+.I bzip2 
+will not overwrite
+existing output files.  Also forces 
+.I bzip2 
+to break hard links
+to files, which it otherwise wouldn't do.
+
+bzip2 normally declines to decompress files which don't have the
+correct magic header bytes.  If forced (-f), however, it will pass
+such files through unmodified.  This is how GNU gzip behaves.
+.TP
+.B \-k --keep
+Keep (don't delete) input files during compression
+or decompression.
+.TP
+.B \-s --small
+Reduce memory usage, for compression, decompression and testing.  Files
+are decompressed and tested using a modified algorithm which only
+requires 2.5 bytes per block byte.  This means any file can be
+decompressed in 2300k of memory, albeit at about half the normal speed.
+
+During compression, \-s selects a block size of 200k, which limits
+memory use to around the same figure, at the expense of your compression
+ratio.  In short, if your machine is low on memory (8 megabytes or
+less), use \-s for everything.  See MEMORY MANAGEMENT below.
+.TP
+.B \-q --quiet
+Suppress non-essential warning messages.  Messages pertaining to
+I/O errors and other critical events will not be suppressed.
+.TP
+.B \-v --verbose
+Verbose mode -- show the compression ratio for each file processed.
+Further \-v's increase the verbosity level, spewing out lots of
+information which is primarily of interest for diagnostic purposes.
+.TP
+.B \-L --license -V --version
+Display the software version, license terms and conditions.
+.TP
+.B \-1 (or \-\-fast) to \-9 (or \-\-best)
+Set the block size to 100 k, 200 k ..  900 k when compressing.  Has no
+effect when decompressing.  See MEMORY MANAGEMENT below.
+The \-\-fast and \-\-best aliases are primarily for GNU gzip 
+compatibility.  In particular, \-\-fast doesn't make things
+significantly faster.  
+And \-\-best merely selects the default behaviour.
+.TP
+.B \--
+Treats all subsequent arguments as file names, even if they start
+with a dash.  This is so you can handle files with names beginning
+with a dash, for example: bzip2 \-- \-myfilename.
+.TP
+.B \--repetitive-fast --repetitive-best
+These flags are redundant in versions 0.9.5 and above.  They provided
+some coarse control over the behaviour of the sorting algorithm in
+earlier versions, which was sometimes useful.  0.9.5 and above have an
+improved algorithm which renders these flags irrelevant.
+
+.SH MEMORY MANAGEMENT
+.I bzip2 
+compresses large files in blocks.  The block size affects
+both the compression ratio achieved, and the amount of memory needed for
+compression and decompression.  The flags \-1 through \-9
+specify the block size to be 100,000 bytes through 900,000 bytes (the
+default) respectively.  At decompression time, the block size used for
+compression is read from the header of the compressed file, and
+.I bunzip2
+then allocates itself just enough memory to decompress
+the file.  Since block sizes are stored in compressed files, it follows
+that the flags \-1 to \-9 are irrelevant to and so ignored
+during decompression.
+
+Compression and decompression requirements, 
+in bytes, can be estimated as:
+
+       Compression:   400k + ( 8 x block size )
+
+       Decompression: 100k + ( 4 x block size ), or
+                      100k + ( 2.5 x block size )
+
+Larger block sizes give rapidly diminishing marginal returns.  Most of
+the compression comes from the first two or three hundred k of block
+size, a fact worth bearing in mind when using
+.I bzip2
+on small machines.
+It is also important to appreciate that the decompression memory
+requirement is set at compression time by the choice of block size.
+
+For files compressed with the default 900k block size,
+.I bunzip2
+will require about 3700 kbytes to decompress.  To support decompression
+of any file on a 4 megabyte machine, 
+.I bunzip2
+has an option to
+decompress using approximately half this amount of memory, about 2300
+kbytes.  Decompression speed is also halved, so you should use this
+option only where necessary.  The relevant flag is -s.
+
+In general, try and use the largest block size memory constraints allow,
+since that maximises the compression achieved.  Compression and
+decompression speed are virtually unaffected by block size.
+
+Another significant point applies to files which fit in a single block
+-- that means most files you'd encounter using a large block size.  The
+amount of real memory touched is proportional to the size of the file,
+since the file is smaller than a block.  For example, compressing a file
+20,000 bytes long with the flag -9 will cause the compressor to
+allocate around 7600k of memory, but only touch 400k + 20000 * 8 = 560
+kbytes of it.  Similarly, the decompressor will allocate 3700k but only
+touch 100k + 20000 * 4 = 180 kbytes.
+
+Here is a table which summarises the maximum memory usage for different
+block sizes.  Also recorded is the total compressed size for 14 files of
+the Calgary Text Compression Corpus totalling 3,141,622 bytes.  This
+column gives some feel for how compression varies with block size.
+These figures tend to understate the advantage of larger block sizes for
+larger files, since the Corpus is dominated by smaller files.
+
+           Compress   Decompress   Decompress   Corpus
+    Flag     usage      usage       -s usage     Size
+
+     -1      1200k       500k         350k      914704
+     -2      2000k       900k         600k      877703
+     -3      2800k      1300k         850k      860338
+     -4      3600k      1700k        1100k      846899
+     -5      4400k      2100k        1350k      845160
+     -6      5200k      2500k        1600k      838626
+     -7      6100k      2900k        1850k      834096
+     -8      6800k      3300k        2100k      828642
+     -9      7600k      3700k        2350k      828642
+
+.SH RECOVERING DATA FROM DAMAGED FILES
+.I bzip2
+compresses files in blocks, usually 900kbytes long.  Each
+block is handled independently.  If a media or transmission error causes
+a multi-block .bz2
+file to become damaged, it may be possible to
+recover data from the undamaged blocks in the file.
+
+The compressed representation of each block is delimited by a 48-bit
+pattern, which makes it possible to find the block boundaries with
+reasonable certainty.  Each block also carries its own 32-bit CRC, so
+damaged blocks can be distinguished from undamaged ones.
+
+.I bzip2recover
+is a simple program whose purpose is to search for
+blocks in .bz2 files, and write each block out into its own .bz2 
+file.  You can then use
+.I bzip2 
+\-t
+to test the
+integrity of the resulting files, and decompress those which are
+undamaged.
+
+.I bzip2recover
+takes a single argument, the name of the damaged file, 
+and writes a number of files "rec00001file.bz2",
+"rec00002file.bz2", etc, containing the  extracted  blocks.
+The  output  filenames  are  designed  so  that the use of
+wildcards in subsequent processing -- for example,  
+"bzip2 -dc  rec*file.bz2 > recovered_data" -- processes the files in
+the correct order.
+
+.I bzip2recover
+should be of most use dealing with large .bz2
+files,  as  these will contain many blocks.  It is clearly
+futile to use it on damaged single-block  files,  since  a
+damaged  block  cannot  be recovered.  If you wish to minimise 
+any potential data loss through media  or  transmission errors, 
+you might consider compressing with a smaller
+block size.
+
+.SH PERFORMANCE NOTES
+The sorting phase of compression gathers together similar strings in the
+file.  Because of this, files containing very long runs of repeated
+symbols, like "aabaabaabaab ..."  (repeated several hundred times) may
+compress more slowly than normal.  Versions 0.9.5 and above fare much
+better than previous versions in this respect.  The ratio between
+worst-case and average-case compression time is in the region of 10:1.
+For previous versions, this figure was more like 100:1.  You can use the
+\-vvvv option to monitor progress in great detail, if you want.
+
+Decompression speed is unaffected by these phenomena.
+
+.I bzip2
+usually allocates several megabytes of memory to operate
+in, and then charges all over it in a fairly random fashion.  This means
+that performance, both for compressing and decompressing, is largely
+determined by the speed at which your machine can service cache misses.
+Because of this, small changes to the code to reduce the miss rate have
+been observed to give disproportionately large performance improvements.
+I imagine 
+.I bzip2
+will perform best on machines with very large caches.
+
+.SH CAVEATS
+I/O error messages are not as helpful as they could be.
+.I bzip2
+tries hard to detect I/O errors and exit cleanly, but the details of
+what the problem is sometimes seem rather misleading.
+
+This manual page pertains to version 1.0.6 of
+.I bzip2.  
+Compressed data created by this version is entirely forwards and
+backwards compatible with the previous public releases, versions
+0.1pl2, 0.9.0, 0.9.5, 1.0.0, 1.0.1, 1.0.2 and above, but with the following
+exception: 0.9.0 and above can correctly decompress multiple
+concatenated compressed files.  0.1pl2 cannot do this; it will stop
+after decompressing just the first file in the stream.
+
+.I bzip2recover
+versions prior to 1.0.2 used 32-bit integers to represent
+bit positions in compressed files, so they could not handle compressed
+files more than 512 megabytes long.  Versions 1.0.2 and above use
+64-bit ints on some platforms which support them (GNU supported
+targets, and Windows).  To establish whether or not bzip2recover was
+built with such a limitation, run it without arguments.  In any event
+you can build yourself an unlimited version if you can recompile it
+with MaybeUInt64 set to be an unsigned 64-bit integer.
+
+
+
+.SH AUTHOR
+Julian Seward, jsewardbzip.org.
+
+http://www.bzip.org
+
+The ideas embodied in
+.I bzip2
+are due to (at least) the following
+people: Michael Burrows and David Wheeler (for the block sorting
+transformation), David Wheeler (again, for the Huffman coder), Peter
+Fenwick (for the structured coding model in the original
+.I bzip,
+and many refinements), and Alistair Moffat, Radford Neal and Ian Witten
+(for the arithmetic coder in the original
+.I bzip).  
+I am much
+indebted for their help, support and advice.  See the manual in the
+source distribution for pointers to sources of documentation.  Christian
+von Roques encouraged me to look for faster sorting algorithms, so as to
+speed up compression.  Bela Lubkin encouraged me to improve the
+worst-case compression performance.  
+Donna Robinson XMLised the documentation.
+The bz* scripts are derived from those of GNU gzip.
+Many people sent patches, helped
+with portability problems, lent machines, gave advice and were generally
+helpful.
diff --git a/usr/src/boot/contrib/bzip2/bzip2.c b/usr/src/boot/contrib/bzip2/bzip2.c
new file mode 100644
index 0000000..6de9d1d
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/bzip2.c
@@ -0,0 +1,2034 @@
+
+/*-----------------------------------------------------------*/
+/*--- A block-sorting, lossless compressor        bzip2.c ---*/
+/*-----------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+/* Place a 1 beside your platform, and 0 elsewhere.
+   Generic 32-bit Unix.
+   Also works on 64-bit Unix boxes.
+   This is the default.
+*/
+#define BZ_UNIX      1
+
+/*--
+  Win32, as seen by Jacob Navia's excellent
+  port of (Chris Fraser & David Hanson)'s excellent
+  lcc compiler.  Or with MS Visual C.
+  This is selected automatically if compiled by a compiler which
+  defines _WIN32, not including the Cygwin GCC.
+--*/
+#define BZ_LCCWIN32  0
+
+#if defined(_WIN32) && !defined(__CYGWIN__)
+#undef  BZ_LCCWIN32
+#define BZ_LCCWIN32 1
+#undef  BZ_UNIX
+#define BZ_UNIX 0
+#endif
+
+
+/*---------------------------------------------*/
+/*--
+  Some stuff for all platforms.
+--*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#include <math.h>
+#include <errno.h>
+#include <ctype.h>
+#include "bzlib.h"
+
+#define ERROR_IF_EOF(i)       { if ((i) == EOF)  ioError(); }
+#define ERROR_IF_NOT_ZERO(i)  { if ((i) != 0)    ioError(); }
+#define ERROR_IF_MINUS_ONE(i) { if ((i) == (-1)) ioError(); }
+
+
+/*---------------------------------------------*/
+/*--
+   Platform-specific stuff.
+--*/
+
+#if BZ_UNIX
+#   include <fcntl.h>
+#   include <sys/types.h>
+#   include <utime.h>
+#   include <unistd.h>
+#   include <sys/stat.h>
+#   include <sys/times.h>
+
+#   define PATH_SEP    '/'
+#   define MY_LSTAT    lstat
+#   define MY_STAT     stat
+#   define MY_S_ISREG  S_ISREG
+#   define MY_S_ISDIR  S_ISDIR
+
+#   define APPEND_FILESPEC(root, name) \
+      root=snocString((root), (name))
+
+#   define APPEND_FLAG(root, name) \
+      root=snocString((root), (name))
+
+#   define SET_BINARY_MODE(fd) /**/
+
+#   ifdef __GNUC__
+#      define NORETURN __attribute__ ((noreturn))
+#   else
+#      define NORETURN /**/
+#   endif
+
+#   ifdef __DJGPP__
+#     include <io.h>
+#     include <fcntl.h>
+#     undef MY_LSTAT
+#     undef MY_STAT
+#     define MY_LSTAT stat
+#     define MY_STAT stat
+#     undef SET_BINARY_MODE
+#     define SET_BINARY_MODE(fd)                        \
+        do {                                            \
+           int retVal = setmode ( fileno ( fd ),        \
+                                  O_BINARY );           \
+           ERROR_IF_MINUS_ONE ( retVal );               \
+        } while ( 0 )
+#   endif
+
+#   ifdef __CYGWIN__
+#     include <io.h>
+#     include <fcntl.h>
+#     undef SET_BINARY_MODE
+#     define SET_BINARY_MODE(fd)                        \
+        do {                                            \
+           int retVal = setmode ( fileno ( fd ),        \
+                                  O_BINARY );           \
+           ERROR_IF_MINUS_ONE ( retVal );               \
+        } while ( 0 )
+#   endif
+#endif /* BZ_UNIX */
+
+
+
+#if BZ_LCCWIN32
+#   include <io.h>
+#   include <fcntl.h>
+#   include <sys\stat.h>
+
+#   define NORETURN       /**/
+#   define PATH_SEP       '\\'
+#   define MY_LSTAT       _stat
+#   define MY_STAT        _stat
+#   define MY_S_ISREG(x)  ((x) & _S_IFREG)
+#   define MY_S_ISDIR(x)  ((x) & _S_IFDIR)
+
+#   define APPEND_FLAG(root, name) \
+      root=snocString((root), (name))
+
+#   define APPEND_FILESPEC(root, name)                \
+      root = snocString ((root), (name))
+
+#   define SET_BINARY_MODE(fd)                        \
+      do {                                            \
+         int retVal = setmode ( fileno ( fd ),        \
+                                O_BINARY );           \
+         ERROR_IF_MINUS_ONE ( retVal );               \
+      } while ( 0 )
+
+#endif /* BZ_LCCWIN32 */
+
+
+/*---------------------------------------------*/
+/*--
+  Some more stuff for all platforms :-)
+--*/
+
+typedef char            Char;
+typedef unsigned char   Bool;
+typedef unsigned char   UChar;
+typedef int             Int32;
+typedef unsigned int    UInt32;
+typedef short           Int16;
+typedef unsigned short  UInt16;
+                                       
+#define True  ((Bool)1)
+#define False ((Bool)0)
+
+/*--
+  IntNative is your platform's `native' int size.
+  Only here to avoid probs with 64-bit platforms.
+--*/
+typedef int IntNative;
+
+
+/*---------------------------------------------------*/
+/*--- Misc (file handling) data decls             ---*/
+/*---------------------------------------------------*/
+
+Int32   verbosity;
+Bool    keepInputFiles, smallMode, deleteOutputOnInterrupt;
+Bool    forceOverwrite, testFailsExist, unzFailsExist, noisy;
+Int32   numFileNames, numFilesProcessed, blockSize100k;
+Int32   exitValue;
+
+/*-- source modes; F==file, I==stdin, O==stdout --*/
+#define SM_I2O           1
+#define SM_F2O           2
+#define SM_F2F           3
+
+/*-- operation modes --*/
+#define OM_Z             1
+#define OM_UNZ           2
+#define OM_TEST          3
+
+Int32   opMode;
+Int32   srcMode;
+
+#define FILE_NAME_LEN 1034
+
+Int32   longestFileName;
+Char    inName [FILE_NAME_LEN];
+Char    outName[FILE_NAME_LEN];
+Char    tmpName[FILE_NAME_LEN];
+Char    *progName;
+Char    progNameReally[FILE_NAME_LEN];
+FILE    *outputHandleJustInCase;
+Int32   workFactor;
+
+static void    panic                 ( const Char* ) NORETURN;
+static void    ioError               ( void )        NORETURN;
+static void    outOfMemory           ( void )        NORETURN;
+static void    configError           ( void )        NORETURN;
+static void    crcError              ( void )        NORETURN;
+static void    cleanUpAndFail        ( Int32 )       NORETURN;
+static void    compressedStreamEOF   ( void )        NORETURN;
+
+static void    copyFileName ( Char*, Char* );
+static void*   myMalloc     ( Int32 );
+static void    applySavedFileAttrToOutputFile ( IntNative fd );
+
+
+
+/*---------------------------------------------------*/
+/*--- An implementation of 64-bit ints.  Sigh.    ---*/
+/*--- Roll on widespread deployment of ANSI C9X ! ---*/
+/*---------------------------------------------------*/
+
+typedef
+   struct { UChar b[8]; } 
+   UInt64;
+
+
+static
+void uInt64_from_UInt32s ( UInt64* n, UInt32 lo32, UInt32 hi32 )
+{
+   n->b[7] = (UChar)((hi32 >> 24) & 0xFF);
+   n->b[6] = (UChar)((hi32 >> 16) & 0xFF);
+   n->b[5] = (UChar)((hi32 >> 8)  & 0xFF);
+   n->b[4] = (UChar) (hi32        & 0xFF);
+   n->b[3] = (UChar)((lo32 >> 24) & 0xFF);
+   n->b[2] = (UChar)((lo32 >> 16) & 0xFF);
+   n->b[1] = (UChar)((lo32 >> 8)  & 0xFF);
+   n->b[0] = (UChar) (lo32        & 0xFF);
+}
+
+
+static
+double uInt64_to_double ( UInt64* n )
+{
+   Int32  i;
+   double base = 1.0;
+   double sum  = 0.0;
+   for (i = 0; i < 8; i++) {
+      sum  += base * (double)(n->b[i]);
+      base *= 256.0;
+   }
+   return sum;
+}
+
+
+static
+Bool uInt64_isZero ( UInt64* n )
+{
+   Int32 i;
+   for (i = 0; i < 8; i++)
+      if (n->b[i] != 0) return 0;
+   return 1;
+}
+
+
+/* Divide *n by 10, and return the remainder.  */
+static 
+Int32 uInt64_qrm10 ( UInt64* n )
+{
+   UInt32 rem, tmp;
+   Int32  i;
+   rem = 0;
+   for (i = 7; i >= 0; i--) {
+      tmp = rem * 256 + n->b[i];
+      n->b[i] = tmp / 10;
+      rem = tmp % 10;
+   }
+   return rem;
+}
+
+
+/* ... and the Whole Entire Point of all this UInt64 stuff is
+   so that we can supply the following function.
+*/
+static
+void uInt64_toAscii ( char* outbuf, UInt64* n )
+{
+   Int32  i, q;
+   UChar  buf[32];
+   Int32  nBuf   = 0;
+   UInt64 n_copy = *n;
+   do {
+      q = uInt64_qrm10 ( &n_copy );
+      buf[nBuf] = q + '0';
+      nBuf++;
+   } while (!uInt64_isZero(&n_copy));
+   outbuf[nBuf] = 0;
+   for (i = 0; i < nBuf; i++) 
+      outbuf[i] = buf[nBuf-i-1];
+}
+
+
+/*---------------------------------------------------*/
+/*--- Processing of complete files and streams    ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static 
+Bool myfeof ( FILE* f )
+{
+   Int32 c = fgetc ( f );
+   if (c == EOF) return True;
+   ungetc ( c, f );
+   return False;
+}
+
+
+/*---------------------------------------------*/
+static 
+void compressStream ( FILE *stream, FILE *zStream )
+{
+   BZFILE* bzf = NULL;
+   UChar   ibuf[5000];
+   Int32   nIbuf;
+   UInt32  nbytes_in_lo32, nbytes_in_hi32;
+   UInt32  nbytes_out_lo32, nbytes_out_hi32;
+   Int32   bzerr, bzerr_dummy, ret;
+
+   SET_BINARY_MODE(stream);
+   SET_BINARY_MODE(zStream);
+
+   if (ferror(stream)) goto errhandler_io;
+   if (ferror(zStream)) goto errhandler_io;
+
+   bzf = BZ2_bzWriteOpen ( &bzerr, zStream, 
+                           blockSize100k, verbosity, workFactor );   
+   if (bzerr != BZ_OK) goto errhandler;
+
+   if (verbosity >= 2) fprintf ( stderr, "\n" );
+
+   while (True) {
+
+      if (myfeof(stream)) break;
+      nIbuf = fread ( ibuf, sizeof(UChar), 5000, stream );
+      if (ferror(stream)) goto errhandler_io;
+      if (nIbuf > 0) BZ2_bzWrite ( &bzerr, bzf, (void*)ibuf, nIbuf );
+      if (bzerr != BZ_OK) goto errhandler;
+
+   }
+
+   BZ2_bzWriteClose64 ( &bzerr, bzf, 0, 
+                        &nbytes_in_lo32, &nbytes_in_hi32,
+                        &nbytes_out_lo32, &nbytes_out_hi32 );
+   if (bzerr != BZ_OK) goto errhandler;
+
+   if (ferror(zStream)) goto errhandler_io;
+   ret = fflush ( zStream );
+   if (ret == EOF) goto errhandler_io;
+   if (zStream != stdout) {
+      Int32 fd = fileno ( zStream );
+      if (fd < 0) goto errhandler_io;
+      applySavedFileAttrToOutputFile ( fd );
+      ret = fclose ( zStream );
+      outputHandleJustInCase = NULL;
+      if (ret == EOF) goto errhandler_io;
+   }
+   outputHandleJustInCase = NULL;
+   if (ferror(stream)) goto errhandler_io;
+   ret = fclose ( stream );
+   if (ret == EOF) goto errhandler_io;
+
+   if (verbosity >= 1) {
+      if (nbytes_in_lo32 == 0 && nbytes_in_hi32 == 0) {
+	 fprintf ( stderr, " no data compressed.\n");
+      } else {
+	 Char   buf_nin[32], buf_nout[32];
+	 UInt64 nbytes_in,   nbytes_out;
+	 double nbytes_in_d, nbytes_out_d;
+	 uInt64_from_UInt32s ( &nbytes_in, 
+			       nbytes_in_lo32, nbytes_in_hi32 );
+	 uInt64_from_UInt32s ( &nbytes_out, 
+			       nbytes_out_lo32, nbytes_out_hi32 );
+	 nbytes_in_d  = uInt64_to_double ( &nbytes_in );
+	 nbytes_out_d = uInt64_to_double ( &nbytes_out );
+	 uInt64_toAscii ( buf_nin, &nbytes_in );
+	 uInt64_toAscii ( buf_nout, &nbytes_out );
+	 fprintf ( stderr, "%6.3f:1, %6.3f bits/byte, "
+		   "%5.2f%% saved, %s in, %s out.\n",
+		   nbytes_in_d / nbytes_out_d,
+		   (8.0 * nbytes_out_d) / nbytes_in_d,
+		   100.0 * (1.0 - nbytes_out_d / nbytes_in_d),
+		   buf_nin,
+		   buf_nout
+		 );
+      }
+   }
+
+   return;
+
+   errhandler:
+   BZ2_bzWriteClose64 ( &bzerr_dummy, bzf, 1, 
+                        &nbytes_in_lo32, &nbytes_in_hi32,
+                        &nbytes_out_lo32, &nbytes_out_hi32 );
+   switch (bzerr) {
+      case BZ_CONFIG_ERROR:
+         configError(); break;
+      case BZ_MEM_ERROR:
+         outOfMemory (); break;
+      case BZ_IO_ERROR:
+         errhandler_io:
+         ioError(); break;
+      default:
+         panic ( "compress:unexpected error" );
+   }
+
+   panic ( "compress:end" );
+   /*notreached*/
+}
+
+
+
+/*---------------------------------------------*/
+static 
+Bool uncompressStream ( FILE *zStream, FILE *stream )
+{
+   BZFILE* bzf = NULL;
+   Int32   bzerr, bzerr_dummy, ret, nread, streamNo, i;
+   UChar   obuf[5000];
+   UChar   unused[BZ_MAX_UNUSED];
+   Int32   nUnused;
+   void*   unusedTmpV;
+   UChar*  unusedTmp;
+
+   nUnused = 0;
+   streamNo = 0;
+
+   SET_BINARY_MODE(stream);
+   SET_BINARY_MODE(zStream);
+
+   if (ferror(stream)) goto errhandler_io;
+   if (ferror(zStream)) goto errhandler_io;
+
+   while (True) {
+
+      bzf = BZ2_bzReadOpen ( 
+               &bzerr, zStream, verbosity, 
+               (int)smallMode, unused, nUnused
+            );
+      if (bzf == NULL || bzerr != BZ_OK) goto errhandler;
+      streamNo++;
+
+      while (bzerr == BZ_OK) {
+         nread = BZ2_bzRead ( &bzerr, bzf, obuf, 5000 );
+         if (bzerr == BZ_DATA_ERROR_MAGIC) goto trycat;
+         if ((bzerr == BZ_OK || bzerr == BZ_STREAM_END) && nread > 0)
+            fwrite ( obuf, sizeof(UChar), nread, stream );
+         if (ferror(stream)) goto errhandler_io;
+      }
+      if (bzerr != BZ_STREAM_END) goto errhandler;
+
+      BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
+      if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" );
+
+      unusedTmp = (UChar*)unusedTmpV;
+      for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i];
+
+      BZ2_bzReadClose ( &bzerr, bzf );
+      if (bzerr != BZ_OK) panic ( "decompress:bzReadGetUnused" );
+
+      if (nUnused == 0 && myfeof(zStream)) break;
+   }
+
+   closeok:
+   if (ferror(zStream)) goto errhandler_io;
+   if (stream != stdout) {
+      Int32 fd = fileno ( stream );
+      if (fd < 0) goto errhandler_io;
+      applySavedFileAttrToOutputFile ( fd );
+   }
+   ret = fclose ( zStream );
+   if (ret == EOF) goto errhandler_io;
+
+   if (ferror(stream)) goto errhandler_io;
+   ret = fflush ( stream );
+   if (ret != 0) goto errhandler_io;
+   if (stream != stdout) {
+      ret = fclose ( stream );
+      outputHandleJustInCase = NULL;
+      if (ret == EOF) goto errhandler_io;
+   }
+   outputHandleJustInCase = NULL;
+   if (verbosity >= 2) fprintf ( stderr, "\n    " );
+   return True;
+
+   trycat: 
+   if (forceOverwrite) {
+      rewind(zStream);
+      while (True) {
+      	 if (myfeof(zStream)) break;
+      	 nread = fread ( obuf, sizeof(UChar), 5000, zStream );
+      	 if (ferror(zStream)) goto errhandler_io;
+      	 if (nread > 0) fwrite ( obuf, sizeof(UChar), nread, stream );
+      	 if (ferror(stream)) goto errhandler_io;
+      }
+      goto closeok;
+   }
+  
+   errhandler:
+   BZ2_bzReadClose ( &bzerr_dummy, bzf );
+   switch (bzerr) {
+      case BZ_CONFIG_ERROR:
+         configError(); break;
+      case BZ_IO_ERROR:
+         errhandler_io:
+         ioError(); break;
+      case BZ_DATA_ERROR:
+         crcError();
+      case BZ_MEM_ERROR:
+         outOfMemory();
+      case BZ_UNEXPECTED_EOF:
+         compressedStreamEOF();
+      case BZ_DATA_ERROR_MAGIC:
+         if (zStream != stdin) fclose(zStream);
+         if (stream != stdout) fclose(stream);
+         if (streamNo == 1) {
+            return False;
+         } else {
+            if (noisy)
+            fprintf ( stderr, 
+                      "\n%s: %s: trailing garbage after EOF ignored\n",
+                      progName, inName );
+            return True;       
+         }
+      default:
+         panic ( "decompress:unexpected error" );
+   }
+
+   panic ( "decompress:end" );
+   return True; /*notreached*/
+}
+
+
+/*---------------------------------------------*/
+static 
+Bool testStream ( FILE *zStream )
+{
+   BZFILE* bzf = NULL;
+   Int32   bzerr, bzerr_dummy, ret, nread, streamNo, i;
+   UChar   obuf[5000];
+   UChar   unused[BZ_MAX_UNUSED];
+   Int32   nUnused;
+   void*   unusedTmpV;
+   UChar*  unusedTmp;
+
+   nUnused = 0;
+   streamNo = 0;
+
+   SET_BINARY_MODE(zStream);
+   if (ferror(zStream)) goto errhandler_io;
+
+   while (True) {
+
+      bzf = BZ2_bzReadOpen ( 
+               &bzerr, zStream, verbosity, 
+               (int)smallMode, unused, nUnused
+            );
+      if (bzf == NULL || bzerr != BZ_OK) goto errhandler;
+      streamNo++;
+
+      while (bzerr == BZ_OK) {
+         nread = BZ2_bzRead ( &bzerr, bzf, obuf, 5000 );
+         if (bzerr == BZ_DATA_ERROR_MAGIC) goto errhandler;
+      }
+      if (bzerr != BZ_STREAM_END) goto errhandler;
+
+      BZ2_bzReadGetUnused ( &bzerr, bzf, &unusedTmpV, &nUnused );
+      if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" );
+
+      unusedTmp = (UChar*)unusedTmpV;
+      for (i = 0; i < nUnused; i++) unused[i] = unusedTmp[i];
+
+      BZ2_bzReadClose ( &bzerr, bzf );
+      if (bzerr != BZ_OK) panic ( "test:bzReadGetUnused" );
+      if (nUnused == 0 && myfeof(zStream)) break;
+
+   }
+
+   if (ferror(zStream)) goto errhandler_io;
+   ret = fclose ( zStream );
+   if (ret == EOF) goto errhandler_io;
+
+   if (verbosity >= 2) fprintf ( stderr, "\n    " );
+   return True;
+
+   errhandler:
+   BZ2_bzReadClose ( &bzerr_dummy, bzf );
+   if (verbosity == 0) 
+      fprintf ( stderr, "%s: %s: ", progName, inName );
+   switch (bzerr) {
+      case BZ_CONFIG_ERROR:
+         configError(); break;
+      case BZ_IO_ERROR:
+         errhandler_io:
+         ioError(); break;
+      case BZ_DATA_ERROR:
+         fprintf ( stderr,
+                   "data integrity (CRC) error in data\n" );
+         return False;
+      case BZ_MEM_ERROR:
+         outOfMemory();
+      case BZ_UNEXPECTED_EOF:
+         fprintf ( stderr,
+                   "file ends unexpectedly\n" );
+         return False;
+      case BZ_DATA_ERROR_MAGIC:
+         if (zStream != stdin) fclose(zStream);
+         if (streamNo == 1) {
+          fprintf ( stderr, 
+                    "bad magic number (file not created by bzip2)\n" );
+            return False;
+         } else {
+            if (noisy)
+            fprintf ( stderr, 
+                      "trailing garbage after EOF ignored\n" );
+            return True;       
+         }
+      default:
+         panic ( "test:unexpected error" );
+   }
+
+   panic ( "test:end" );
+   return True; /*notreached*/
+}
+
+
+/*---------------------------------------------------*/
+/*--- Error [non-] handling grunge                ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static
+void setExit ( Int32 v )
+{
+   if (v > exitValue) exitValue = v;
+}
+
+
+/*---------------------------------------------*/
+static 
+void cadvise ( void )
+{
+   if (noisy)
+   fprintf (
+      stderr,
+      "\nIt is possible that the compressed file(s) have become corrupted.\n"
+        "You can use the -tvv option to test integrity of such files.\n\n"
+        "You can use the `bzip2recover' program to attempt to recover\n"
+        "data from undamaged sections of corrupted files.\n\n"
+    );
+}
+
+
+/*---------------------------------------------*/
+static 
+void showFileNames ( void )
+{
+   if (noisy)
+   fprintf (
+      stderr,
+      "\tInput file = %s, output file = %s\n",
+      inName, outName 
+   );
+}
+
+
+/*---------------------------------------------*/
+static 
+void cleanUpAndFail ( Int32 ec )
+{
+   IntNative      retVal;
+   struct MY_STAT statBuf;
+
+   if ( srcMode == SM_F2F 
+        && opMode != OM_TEST
+        && deleteOutputOnInterrupt ) {
+
+      /* Check whether input file still exists.  Delete output file
+         only if input exists to avoid loss of data.  Joerg Prante, 5
+         January 2002.  (JRS 06-Jan-2002: other changes in 1.0.2 mean
+         this is less likely to happen.  But to be ultra-paranoid, we
+         do the check anyway.)  */
+      retVal = MY_STAT ( inName, &statBuf );
+      if (retVal == 0) {
+         if (noisy)
+            fprintf ( stderr, 
+                      "%s: Deleting output file %s, if it exists.\n",
+                      progName, outName );
+         if (outputHandleJustInCase != NULL)
+            fclose ( outputHandleJustInCase );
+         retVal = remove ( outName );
+         if (retVal != 0)
+            fprintf ( stderr,
+                      "%s: WARNING: deletion of output file "
+                      "(apparently) failed.\n",
+                      progName );
+      } else {
+         fprintf ( stderr,
+                   "%s: WARNING: deletion of output file suppressed\n",
+                    progName );
+         fprintf ( stderr,
+                   "%s:    since input file no longer exists.  Output file\n",
+                   progName );
+         fprintf ( stderr,
+                   "%s:    `%s' may be incomplete.\n",
+                   progName, outName );
+         fprintf ( stderr, 
+                   "%s:    I suggest doing an integrity test (bzip2 -tv)"
+                   " of it.\n",
+                   progName );
+      }
+   }
+
+   if (noisy && numFileNames > 0 && numFilesProcessed < numFileNames) {
+      fprintf ( stderr, 
+                "%s: WARNING: some files have not been processed:\n"
+                "%s:    %d specified on command line, %d not processed yet.\n\n",
+                progName, progName,
+                numFileNames, numFileNames - numFilesProcessed );
+   }
+   setExit(ec);
+   exit(exitValue);
+}
+
+
+/*---------------------------------------------*/
+static 
+void panic ( const Char* s )
+{
+   fprintf ( stderr,
+             "\n%s: PANIC -- internal consistency error:\n"
+             "\t%s\n"
+             "\tThis is a BUG.  Please report it to me at:\n"
+             "\tjseward@bzip.org\n",
+             progName, s );
+   showFileNames();
+   cleanUpAndFail( 3 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void crcError ( void )
+{
+   fprintf ( stderr,
+             "\n%s: Data integrity error when decompressing.\n",
+             progName );
+   showFileNames();
+   cadvise();
+   cleanUpAndFail( 2 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void compressedStreamEOF ( void )
+{
+  if (noisy) {
+    fprintf ( stderr,
+	      "\n%s: Compressed file ends unexpectedly;\n\t"
+	      "perhaps it is corrupted?  *Possible* reason follows.\n",
+	      progName );
+    perror ( progName );
+    showFileNames();
+    cadvise();
+  }
+  cleanUpAndFail( 2 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void ioError ( void )
+{
+   fprintf ( stderr,
+             "\n%s: I/O or other error, bailing out.  "
+             "Possible reason follows.\n",
+             progName );
+   perror ( progName );
+   showFileNames();
+   cleanUpAndFail( 1 );
+}
+
+
+/*---------------------------------------------*/
+static 
+void mySignalCatcher ( IntNative n )
+{
+   fprintf ( stderr,
+             "\n%s: Control-C or similar caught, quitting.\n",
+             progName );
+   cleanUpAndFail(1);
+}
+
+
+/*---------------------------------------------*/
+static 
+void mySIGSEGVorSIGBUScatcher ( IntNative n )
+{
+   if (opMode == OM_Z)
+      fprintf ( 
+      stderr,
+      "\n%s: Caught a SIGSEGV or SIGBUS whilst compressing.\n"
+      "\n"
+      "   Possible causes are (most likely first):\n"
+      "   (1) This computer has unreliable memory or cache hardware\n"
+      "       (a surprisingly common problem; try a different machine.)\n"
+      "   (2) A bug in the compiler used to create this executable\n"
+      "       (unlikely, if you didn't compile bzip2 yourself.)\n"
+      "   (3) A real bug in bzip2 -- I hope this should never be the case.\n"
+      "   The user's manual, Section 4.3, has more info on (1) and (2).\n"
+      "   \n"
+      "   If you suspect this is a bug in bzip2, or are unsure about (1)\n"
+      "   or (2), feel free to report it to me at: jseward@bzip.org.\n"
+      "   Section 4.3 of the user's manual describes the info a useful\n"
+      "   bug report should have.  If the manual is available on your\n"
+      "   system, please try and read it before mailing me.  If you don't\n"
+      "   have the manual or can't be bothered to read it, mail me anyway.\n"
+      "\n",
+      progName );
+      else
+      fprintf ( 
+      stderr,
+      "\n%s: Caught a SIGSEGV or SIGBUS whilst decompressing.\n"
+      "\n"
+      "   Possible causes are (most likely first):\n"
+      "   (1) The compressed data is corrupted, and bzip2's usual checks\n"
+      "       failed to detect this.  Try bzip2 -tvv my_file.bz2.\n"
+      "   (2) This computer has unreliable memory or cache hardware\n"
+      "       (a surprisingly common problem; try a different machine.)\n"
+      "   (3) A bug in the compiler used to create this executable\n"
+      "       (unlikely, if you didn't compile bzip2 yourself.)\n"
+      "   (4) A real bug in bzip2 -- I hope this should never be the case.\n"
+      "   The user's manual, Section 4.3, has more info on (2) and (3).\n"
+      "   \n"
+      "   If you suspect this is a bug in bzip2, or are unsure about (2)\n"
+      "   or (3), feel free to report it to me at: jseward@bzip.org.\n"
+      "   Section 4.3 of the user's manual describes the info a useful\n"
+      "   bug report should have.  If the manual is available on your\n"
+      "   system, please try and read it before mailing me.  If you don't\n"
+      "   have the manual or can't be bothered to read it, mail me anyway.\n"
+      "\n",
+      progName );
+
+   showFileNames();
+   if (opMode == OM_Z)
+      cleanUpAndFail( 3 ); else
+      { cadvise(); cleanUpAndFail( 2 ); }
+}
+
+
+/*---------------------------------------------*/
+static 
+void outOfMemory ( void )
+{
+   fprintf ( stderr,
+             "\n%s: couldn't allocate enough memory\n",
+             progName );
+   showFileNames();
+   cleanUpAndFail(1);
+}
+
+
+/*---------------------------------------------*/
+static 
+void configError ( void )
+{
+   fprintf ( stderr,
+             "bzip2: I'm not configured correctly for this platform!\n"
+             "\tI require Int32, Int16 and Char to have sizes\n"
+             "\tof 4, 2 and 1 bytes to run properly, and they don't.\n"
+             "\tProbably you can fix this by defining them correctly,\n"
+             "\tand recompiling.  Bye!\n" );
+   setExit(3);
+   exit(exitValue);
+}
+
+
+/*---------------------------------------------------*/
+/*--- The main driver machinery                   ---*/
+/*---------------------------------------------------*/
+
+/* All rather crufty.  The main problem is that input files
+   are stat()d multiple times before use.  This should be
+   cleaned up. 
+*/
+
+/*---------------------------------------------*/
+static 
+void pad ( Char *s )
+{
+   Int32 i;
+   if ( (Int32)strlen(s) >= longestFileName ) return;
+   for (i = 1; i <= longestFileName - (Int32)strlen(s); i++)
+      fprintf ( stderr, " " );
+}
+
+
+/*---------------------------------------------*/
+static 
+void copyFileName ( Char* to, Char* from ) 
+{
+   if ( strlen(from) > FILE_NAME_LEN-10 )  {
+      fprintf (
+         stderr,
+         "bzip2: file name\n`%s'\n"
+         "is suspiciously (more than %d chars) long.\n"
+         "Try using a reasonable file name instead.  Sorry! :-)\n",
+         from, FILE_NAME_LEN-10
+      );
+      setExit(1);
+      exit(exitValue);
+   }
+
+  strncpy(to,from,FILE_NAME_LEN-10);
+  to[FILE_NAME_LEN-10]='\0';
+}
+
+
+/*---------------------------------------------*/
+static 
+Bool fileExists ( Char* name )
+{
+   FILE *tmp   = fopen ( name, "rb" );
+   Bool exists = (tmp != NULL);
+   if (tmp != NULL) fclose ( tmp );
+   return exists;
+}
+
+
+/*---------------------------------------------*/
+/* Open an output file safely with O_EXCL and good permissions.
+   This avoids a race condition in versions < 1.0.2, in which
+   the file was first opened and then had its interim permissions
+   set safely.  We instead use open() to create the file with
+   the interim permissions required. (--- --- rw-).
+
+   For non-Unix platforms, if we are not worrying about
+   security issues, simple this simply behaves like fopen.
+*/
+static
+FILE* fopen_output_safely ( Char* name, const char* mode )
+{
+#  if BZ_UNIX
+   FILE*     fp;
+   IntNative fh;
+   fh = open(name, O_WRONLY|O_CREAT|O_EXCL, S_IWUSR|S_IRUSR);
+   if (fh == -1) return NULL;
+   fp = fdopen(fh, mode);
+   if (fp == NULL) close(fh);
+   return fp;
+#  else
+   return fopen(name, mode);
+#  endif
+}
+
+
+/*---------------------------------------------*/
+/*--
+  if in doubt, return True
+--*/
+static 
+Bool notAStandardFile ( Char* name )
+{
+   IntNative      i;
+   struct MY_STAT statBuf;
+
+   i = MY_LSTAT ( name, &statBuf );
+   if (i != 0) return True;
+   if (MY_S_ISREG(statBuf.st_mode)) return False;
+   return True;
+}
+
+
+/*---------------------------------------------*/
+/*--
+  rac 11/21/98 see if file has hard links to it
+--*/
+static 
+Int32 countHardLinks ( Char* name )
+{  
+   IntNative      i;
+   struct MY_STAT statBuf;
+
+   i = MY_LSTAT ( name, &statBuf );
+   if (i != 0) return 0;
+   return (statBuf.st_nlink - 1);
+}
+
+
+/*---------------------------------------------*/
+/* Copy modification date, access date, permissions and owner from the
+   source to destination file.  We have to copy this meta-info off
+   into fileMetaInfo before starting to compress / decompress it,
+   because doing it afterwards means we get the wrong access time.
+
+   To complicate matters, in compress() and decompress() below, the
+   sequence of tests preceding the call to saveInputFileMetaInfo()
+   involves calling fileExists(), which in turn establishes its result
+   by attempting to fopen() the file, and if successful, immediately
+   fclose()ing it again.  So we have to assume that the fopen() call
+   does not cause the access time field to be updated.
+
+   Reading of the man page for stat() (man 2 stat) on RedHat 7.2 seems
+   to imply that merely doing open() will not affect the access time.
+   Therefore we merely need to hope that the C library only does
+   open() as a result of fopen(), and not any kind of read()-ahead
+   cleverness.
+
+   It sounds pretty fragile to me.  Whether this carries across
+   robustly to arbitrary Unix-like platforms (or even works robustly
+   on this one, RedHat 7.2) is unknown to me.  Nevertheless ...  
+*/
+#if BZ_UNIX
+static 
+struct MY_STAT fileMetaInfo;
+#endif
+
+static 
+void saveInputFileMetaInfo ( Char *srcName )
+{
+#  if BZ_UNIX
+   IntNative retVal;
+   /* Note use of stat here, not lstat. */
+   retVal = MY_STAT( srcName, &fileMetaInfo );
+   ERROR_IF_NOT_ZERO ( retVal );
+#  endif
+}
+
+
+static 
+void applySavedTimeInfoToOutputFile ( Char *dstName )
+{
+#  if BZ_UNIX
+   IntNative      retVal;
+   struct utimbuf uTimBuf;
+
+   uTimBuf.actime = fileMetaInfo.st_atime;
+   uTimBuf.modtime = fileMetaInfo.st_mtime;
+
+   retVal = utime ( dstName, &uTimBuf );
+   ERROR_IF_NOT_ZERO ( retVal );
+#  endif
+}
+
+static 
+void applySavedFileAttrToOutputFile ( IntNative fd )
+{
+#  if BZ_UNIX
+   IntNative retVal;
+
+   retVal = fchmod ( fd, fileMetaInfo.st_mode );
+   ERROR_IF_NOT_ZERO ( retVal );
+
+   (void) fchown ( fd, fileMetaInfo.st_uid, fileMetaInfo.st_gid );
+   /* chown() will in many cases return with EPERM, which can
+      be safely ignored.
+   */
+#  endif
+}
+
+
+/*---------------------------------------------*/
+static 
+Bool containsDubiousChars ( Char* name )
+{
+#  if BZ_UNIX
+   /* On unix, files can contain any characters and the file expansion
+    * is performed by the shell.
+    */
+   return False;
+#  else /* ! BZ_UNIX */
+   /* On non-unix (Win* platforms), wildcard characters are not allowed in 
+    * filenames.
+    */
+   for (; *name != '\0'; name++)
+      if (*name == '?' || *name == '*') return True;
+   return False;
+#  endif /* BZ_UNIX */
+}
+
+
+/*---------------------------------------------*/
+#define BZ_N_SUFFIX_PAIRS 4
+
+const Char* zSuffix[BZ_N_SUFFIX_PAIRS] 
+   = { ".bz2", ".bz", ".tbz2", ".tbz" };
+const Char* unzSuffix[BZ_N_SUFFIX_PAIRS] 
+   = { "", "", ".tar", ".tar" };
+
+static 
+Bool hasSuffix ( Char* s, const Char* suffix )
+{
+   Int32 ns = strlen(s);
+   Int32 nx = strlen(suffix);
+   if (ns < nx) return False;
+   if (strcmp(s + ns - nx, suffix) == 0) return True;
+   return False;
+}
+
+static 
+Bool mapSuffix ( Char* name, 
+                 const Char* oldSuffix, 
+                 const Char* newSuffix )
+{
+   if (!hasSuffix(name,oldSuffix)) return False;
+   name[strlen(name)-strlen(oldSuffix)] = 0;
+   strcat ( name, newSuffix );
+   return True;
+}
+
+
+/*---------------------------------------------*/
+static 
+void compress ( Char *name )
+{
+   FILE  *inStr;
+   FILE  *outStr;
+   Int32 n, i;
+   struct MY_STAT statBuf;
+
+   deleteOutputOnInterrupt = False;
+
+   if (name == NULL && srcMode != SM_I2O)
+      panic ( "compress: bad modes\n" );
+
+   switch (srcMode) {
+      case SM_I2O: 
+         copyFileName ( inName, (Char*)"(stdin)" );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+      case SM_F2F: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, name );
+         strcat ( outName, ".bz2" ); 
+         break;
+      case SM_F2O: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+   }
+
+   if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+      if (noisy)
+      fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+      fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                progName, inName, strerror(errno) );
+      setExit(1);
+      return;
+   }
+   for (i = 0; i < BZ_N_SUFFIX_PAIRS; i++) {
+      if (hasSuffix(inName, zSuffix[i])) {
+         if (noisy)
+         fprintf ( stderr, 
+                   "%s: Input file %s already has %s suffix.\n",
+                   progName, inName, zSuffix[i] );
+         setExit(1);
+         return;
+      }
+   }
+   if ( srcMode == SM_F2F || srcMode == SM_F2O ) {
+      MY_STAT(inName, &statBuf);
+      if ( MY_S_ISDIR(statBuf.st_mode) ) {
+         fprintf( stderr,
+                  "%s: Input file %s is a directory.\n",
+                  progName,inName);
+         setExit(1);
+         return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) {
+      if (noisy)
+      fprintf ( stderr, "%s: Input file %s is not a normal file.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode == SM_F2F && fileExists ( outName ) ) {
+      if (forceOverwrite) {
+	 remove(outName);
+      } else {
+	 fprintf ( stderr, "%s: Output file %s already exists.\n",
+		   progName, outName );
+	 setExit(1);
+	 return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite &&
+        (n=countHardLinks ( inName )) > 0) {
+      fprintf ( stderr, "%s: Input file %s has %d other link%s.\n",
+                progName, inName, n, n > 1 ? "s" : "" );
+      setExit(1);
+      return;
+   }
+
+   if ( srcMode == SM_F2F ) {
+      /* Save the file's meta-info before we open it.  Doing it later
+         means we mess up the access times. */
+      saveInputFileMetaInfo ( inName );
+   }
+
+   switch ( srcMode ) {
+
+      case SM_I2O:
+         inStr = stdin;
+         outStr = stdout;
+         if ( isatty ( fileno ( stdout ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't write compressed data to a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2O:
+         inStr = fopen ( inName, "rb" );
+         outStr = stdout;
+         if ( isatty ( fileno ( stdout ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't write compressed data to a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         };
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                      progName, inName, strerror(errno) );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2F:
+         inStr = fopen ( inName, "rb" );
+         outStr = fopen_output_safely ( outName, "wb" );
+         if ( outStr == NULL) {
+            fprintf ( stderr, "%s: Can't create output file %s: %s.\n",
+                      progName, outName, strerror(errno) );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         }
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                      progName, inName, strerror(errno) );
+            if ( outStr != NULL ) fclose ( outStr );
+            setExit(1);
+            return;
+         };
+         break;
+
+      default:
+         panic ( "compress: bad srcMode" );
+         break;
+   }
+
+   if (verbosity >= 1) {
+      fprintf ( stderr,  "  %s: ", inName );
+      pad ( inName );
+      fflush ( stderr );
+   }
+
+   /*--- Now the input and output handles are sane.  Do the Biz. ---*/
+   outputHandleJustInCase = outStr;
+   deleteOutputOnInterrupt = True;
+   compressStream ( inStr, outStr );
+   outputHandleJustInCase = NULL;
+
+   /*--- If there was an I/O error, we won't get here. ---*/
+   if ( srcMode == SM_F2F ) {
+      applySavedTimeInfoToOutputFile ( outName );
+      deleteOutputOnInterrupt = False;
+      if ( !keepInputFiles ) {
+         IntNative retVal = remove ( inName );
+         ERROR_IF_NOT_ZERO ( retVal );
+      }
+   }
+
+   deleteOutputOnInterrupt = False;
+}
+
+
+/*---------------------------------------------*/
+static 
+void uncompress ( Char *name )
+{
+   FILE  *inStr;
+   FILE  *outStr;
+   Int32 n, i;
+   Bool  magicNumberOK;
+   Bool  cantGuess;
+   struct MY_STAT statBuf;
+
+   deleteOutputOnInterrupt = False;
+
+   if (name == NULL && srcMode != SM_I2O)
+      panic ( "uncompress: bad modes\n" );
+
+   cantGuess = False;
+   switch (srcMode) {
+      case SM_I2O: 
+         copyFileName ( inName, (Char*)"(stdin)" );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+      case SM_F2F: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, name );
+         for (i = 0; i < BZ_N_SUFFIX_PAIRS; i++)
+            if (mapSuffix(outName,zSuffix[i],unzSuffix[i]))
+               goto zzz; 
+         cantGuess = True;
+         strcat ( outName, ".out" );
+         break;
+      case SM_F2O: 
+         copyFileName ( inName, name );
+         copyFileName ( outName, (Char*)"(stdout)" ); 
+         break;
+   }
+
+   zzz:
+   if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+      if (noisy)
+      fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+      fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                progName, inName, strerror(errno) );
+      setExit(1);
+      return;
+   }
+   if ( srcMode == SM_F2F || srcMode == SM_F2O ) {
+      MY_STAT(inName, &statBuf);
+      if ( MY_S_ISDIR(statBuf.st_mode) ) {
+         fprintf( stderr,
+                  "%s: Input file %s is a directory.\n",
+                  progName,inName);
+         setExit(1);
+         return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite && notAStandardFile ( inName )) {
+      if (noisy)
+      fprintf ( stderr, "%s: Input file %s is not a normal file.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( /* srcMode == SM_F2F implied && */ cantGuess ) {
+      if (noisy)
+      fprintf ( stderr, 
+                "%s: Can't guess original name for %s -- using %s\n",
+                progName, inName, outName );
+      /* just a warning, no return */
+   }   
+   if ( srcMode == SM_F2F && fileExists ( outName ) ) {
+      if (forceOverwrite) {
+	remove(outName);
+      } else {
+        fprintf ( stderr, "%s: Output file %s already exists.\n",
+                  progName, outName );
+        setExit(1);
+        return;
+      }
+   }
+   if ( srcMode == SM_F2F && !forceOverwrite &&
+        (n=countHardLinks ( inName ) ) > 0) {
+      fprintf ( stderr, "%s: Input file %s has %d other link%s.\n",
+                progName, inName, n, n > 1 ? "s" : "" );
+      setExit(1);
+      return;
+   }
+
+   if ( srcMode == SM_F2F ) {
+      /* Save the file's meta-info before we open it.  Doing it later
+         means we mess up the access times. */
+      saveInputFileMetaInfo ( inName );
+   }
+
+   switch ( srcMode ) {
+
+      case SM_I2O:
+         inStr = stdin;
+         outStr = stdout;
+         if ( isatty ( fileno ( stdin ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't read compressed data from a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2O:
+         inStr = fopen ( inName, "rb" );
+         outStr = stdout;
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s:%s.\n",
+                      progName, inName, strerror(errno) );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         };
+         break;
+
+      case SM_F2F:
+         inStr = fopen ( inName, "rb" );
+         outStr = fopen_output_safely ( outName, "wb" );
+         if ( outStr == NULL) {
+            fprintf ( stderr, "%s: Can't create output file %s: %s.\n",
+                      progName, outName, strerror(errno) );
+            if ( inStr != NULL ) fclose ( inStr );
+            setExit(1);
+            return;
+         }
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s: %s.\n",
+                      progName, inName, strerror(errno) );
+            if ( outStr != NULL ) fclose ( outStr );
+            setExit(1);
+            return;
+         };
+         break;
+
+      default:
+         panic ( "uncompress: bad srcMode" );
+         break;
+   }
+
+   if (verbosity >= 1) {
+      fprintf ( stderr, "  %s: ", inName );
+      pad ( inName );
+      fflush ( stderr );
+   }
+
+   /*--- Now the input and output handles are sane.  Do the Biz. ---*/
+   outputHandleJustInCase = outStr;
+   deleteOutputOnInterrupt = True;
+   magicNumberOK = uncompressStream ( inStr, outStr );
+   outputHandleJustInCase = NULL;
+
+   /*--- If there was an I/O error, we won't get here. ---*/
+   if ( magicNumberOK ) {
+      if ( srcMode == SM_F2F ) {
+         applySavedTimeInfoToOutputFile ( outName );
+         deleteOutputOnInterrupt = False;
+         if ( !keepInputFiles ) {
+            IntNative retVal = remove ( inName );
+            ERROR_IF_NOT_ZERO ( retVal );
+         }
+      }
+   } else {
+      unzFailsExist = True;
+      deleteOutputOnInterrupt = False;
+      if ( srcMode == SM_F2F ) {
+         IntNative retVal = remove ( outName );
+         ERROR_IF_NOT_ZERO ( retVal );
+      }
+   }
+   deleteOutputOnInterrupt = False;
+
+   if ( magicNumberOK ) {
+      if (verbosity >= 1)
+         fprintf ( stderr, "done\n" );
+   } else {
+      setExit(2);
+      if (verbosity >= 1)
+         fprintf ( stderr, "not a bzip2 file.\n" ); else
+         fprintf ( stderr,
+                   "%s: %s is not a bzip2 file.\n",
+                   progName, inName );
+   }
+
+}
+
+
+/*---------------------------------------------*/
+static 
+void testf ( Char *name )
+{
+   FILE *inStr;
+   Bool allOK;
+   struct MY_STAT statBuf;
+
+   deleteOutputOnInterrupt = False;
+
+   if (name == NULL && srcMode != SM_I2O)
+      panic ( "testf: bad modes\n" );
+
+   copyFileName ( outName, (Char*)"(none)" );
+   switch (srcMode) {
+      case SM_I2O: copyFileName ( inName, (Char*)"(stdin)" ); break;
+      case SM_F2F: copyFileName ( inName, name ); break;
+      case SM_F2O: copyFileName ( inName, name ); break;
+   }
+
+   if ( srcMode != SM_I2O && containsDubiousChars ( inName ) ) {
+      if (noisy)
+      fprintf ( stderr, "%s: There are no files matching `%s'.\n",
+                progName, inName );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O && !fileExists ( inName ) ) {
+      fprintf ( stderr, "%s: Can't open input %s: %s.\n",
+                progName, inName, strerror(errno) );
+      setExit(1);
+      return;
+   }
+   if ( srcMode != SM_I2O ) {
+      MY_STAT(inName, &statBuf);
+      if ( MY_S_ISDIR(statBuf.st_mode) ) {
+         fprintf( stderr,
+                  "%s: Input file %s is a directory.\n",
+                  progName,inName);
+         setExit(1);
+         return;
+      }
+   }
+
+   switch ( srcMode ) {
+
+      case SM_I2O:
+         if ( isatty ( fileno ( stdin ) ) ) {
+            fprintf ( stderr,
+                      "%s: I won't read compressed data from a terminal.\n",
+                      progName );
+            fprintf ( stderr, "%s: For help, type: `%s --help'.\n",
+                              progName, progName );
+            setExit(1);
+            return;
+         };
+         inStr = stdin;
+         break;
+
+      case SM_F2O: case SM_F2F:
+         inStr = fopen ( inName, "rb" );
+         if ( inStr == NULL ) {
+            fprintf ( stderr, "%s: Can't open input file %s:%s.\n",
+                      progName, inName, strerror(errno) );
+            setExit(1);
+            return;
+         };
+         break;
+
+      default:
+         panic ( "testf: bad srcMode" );
+         break;
+   }
+
+   if (verbosity >= 1) {
+      fprintf ( stderr, "  %s: ", inName );
+      pad ( inName );
+      fflush ( stderr );
+   }
+
+   /*--- Now the input handle is sane.  Do the Biz. ---*/
+   outputHandleJustInCase = NULL;
+   allOK = testStream ( inStr );
+
+   if (allOK && verbosity >= 1) fprintf ( stderr, "ok\n" );
+   if (!allOK) testFailsExist = True;
+}
+
+
+/*---------------------------------------------*/
+static 
+void license ( void )
+{
+   fprintf ( stderr,
+
+    "bzip2, a block-sorting file compressor.  "
+    "Version %s.\n"
+    "   \n"
+    "   Copyright (C) 1996-2010 by Julian Seward.\n"
+    "   \n"
+    "   This program is free software; you can redistribute it and/or modify\n"
+    "   it under the terms set out in the LICENSE file, which is included\n"
+    "   in the bzip2-1.0.6 source distribution.\n"
+    "   \n"
+    "   This program is distributed in the hope that it will be useful,\n"
+    "   but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+    "   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+    "   LICENSE file for more details.\n"
+    "   \n",
+    BZ2_bzlibVersion()
+   );
+}
+
+
+/*---------------------------------------------*/
+static 
+void usage ( Char *fullProgName )
+{
+   fprintf (
+      stderr,
+      "bzip2, a block-sorting file compressor.  "
+      "Version %s.\n"
+      "\n   usage: %s [flags and input files in any order]\n"
+      "\n"
+      "   -h --help           print this message\n"
+      "   -d --decompress     force decompression\n"
+      "   -z --compress       force compression\n"
+      "   -k --keep           keep (don't delete) input files\n"
+      "   -f --force          overwrite existing output files\n"
+      "   -t --test           test compressed file integrity\n"
+      "   -c --stdout         output to standard out\n"
+      "   -q --quiet          suppress noncritical error messages\n"
+      "   -v --verbose        be verbose (a 2nd -v gives more)\n"
+      "   -L --license        display software version & license\n"
+      "   -V --version        display software version & license\n"
+      "   -s --small          use less memory (at most 2500k)\n"
+      "   -1 .. -9            set block size to 100k .. 900k\n"
+      "   --fast              alias for -1\n"
+      "   --best              alias for -9\n"
+      "\n"
+      "   If invoked as `bzip2', default action is to compress.\n"
+      "              as `bunzip2',  default action is to decompress.\n"
+      "              as `bzcat', default action is to decompress to stdout.\n"
+      "\n"
+      "   If no file names are given, bzip2 compresses or decompresses\n"
+      "   from standard input to standard output.  You can combine\n"
+      "   short flags, so `-v -4' means the same as -v4 or -4v, &c.\n"
+#     if BZ_UNIX
+      "\n"
+#     endif
+      ,
+
+      BZ2_bzlibVersion(),
+      fullProgName
+   );
+}
+
+
+/*---------------------------------------------*/
+static 
+void redundant ( Char* flag )
+{
+   fprintf ( 
+      stderr, 
+      "%s: %s is redundant in versions 0.9.5 and above\n",
+      progName, flag );
+}
+
+
+/*---------------------------------------------*/
+/*--
+  All the garbage from here to main() is purely to
+  implement a linked list of command-line arguments,
+  into which main() copies argv[1 .. argc-1].
+
+  The purpose of this exercise is to facilitate 
+  the expansion of wildcard characters * and ? in 
+  filenames for OSs which don't know how to do it
+  themselves, like MSDOS, Windows 95 and NT.
+
+  The actual Dirty Work is done by the platform-
+  specific macro APPEND_FILESPEC.
+--*/
+
+typedef
+   struct zzzz {
+      Char        *name;
+      struct zzzz *link;
+   }
+   Cell;
+
+
+/*---------------------------------------------*/
+static 
+void *myMalloc ( Int32 n )
+{
+   void* p;
+
+   p = malloc ( (size_t)n );
+   if (p == NULL) outOfMemory ();
+   return p;
+}
+
+
+/*---------------------------------------------*/
+static 
+Cell *mkCell ( void )
+{
+   Cell *c;
+
+   c = (Cell*) myMalloc ( sizeof ( Cell ) );
+   c->name = NULL;
+   c->link = NULL;
+   return c;
+}
+
+
+/*---------------------------------------------*/
+static 
+Cell *snocString ( Cell *root, Char *name )
+{
+   if (root == NULL) {
+      Cell *tmp = mkCell();
+      tmp->name = (Char*) myMalloc ( 5 + strlen(name) );
+      strcpy ( tmp->name, name );
+      return tmp;
+   } else {
+      Cell *tmp = root;
+      while (tmp->link != NULL) tmp = tmp->link;
+      tmp->link = snocString ( tmp->link, name );
+      return root;
+   }
+}
+
+
+/*---------------------------------------------*/
+static 
+void addFlagsFromEnvVar ( Cell** argList, Char* varName ) 
+{
+   Int32 i, j, k;
+   Char *envbase, *p;
+
+   envbase = getenv(varName);
+   if (envbase != NULL) {
+      p = envbase;
+      i = 0;
+      while (True) {
+         if (p[i] == 0) break;
+         p += i;
+         i = 0;
+         while (isspace((Int32)(p[0]))) p++;
+         while (p[i] != 0 && !isspace((Int32)(p[i]))) i++;
+         if (i > 0) {
+            k = i; if (k > FILE_NAME_LEN-10) k = FILE_NAME_LEN-10;
+            for (j = 0; j < k; j++) tmpName[j] = p[j];
+            tmpName[k] = 0;
+            APPEND_FLAG(*argList, tmpName);
+         }
+      }
+   }
+}
+
+
+/*---------------------------------------------*/
+#define ISFLAG(s) (strcmp(aa->name, (s))==0)
+
+IntNative main ( IntNative argc, Char *argv[] )
+{
+   Int32  i, j;
+   Char   *tmp;
+   Cell   *argList;
+   Cell   *aa;
+   Bool   decode;
+
+   /*-- Be really really really paranoid :-) --*/
+   if (sizeof(Int32) != 4 || sizeof(UInt32) != 4  ||
+       sizeof(Int16) != 2 || sizeof(UInt16) != 2  ||
+       sizeof(Char)  != 1 || sizeof(UChar)  != 1)
+      configError();
+
+   /*-- Initialise --*/
+   outputHandleJustInCase  = NULL;
+   smallMode               = False;
+   keepInputFiles          = False;
+   forceOverwrite          = False;
+   noisy                   = True;
+   verbosity               = 0;
+   blockSize100k           = 9;
+   testFailsExist          = False;
+   unzFailsExist           = False;
+   numFileNames            = 0;
+   numFilesProcessed       = 0;
+   workFactor              = 30;
+   deleteOutputOnInterrupt = False;
+   exitValue               = 0;
+   i = j = 0; /* avoid bogus warning from egcs-1.1.X */
+
+   /*-- Set up signal handlers for mem access errors --*/
+   signal (SIGSEGV, mySIGSEGVorSIGBUScatcher);
+#  if BZ_UNIX
+#  ifndef __DJGPP__
+   signal (SIGBUS,  mySIGSEGVorSIGBUScatcher);
+#  endif
+#  endif
+
+   copyFileName ( inName,  (Char*)"(none)" );
+   copyFileName ( outName, (Char*)"(none)" );
+
+   copyFileName ( progNameReally, argv[0] );
+   progName = &progNameReally[0];
+   for (tmp = &progNameReally[0]; *tmp != '\0'; tmp++)
+      if (*tmp == PATH_SEP) progName = tmp + 1;
+
+
+   /*-- Copy flags from env var BZIP2, and 
+        expand filename wildcards in arg list.
+   --*/
+   argList = NULL;
+   addFlagsFromEnvVar ( &argList,  (Char*)"BZIP2" );
+   addFlagsFromEnvVar ( &argList,  (Char*)"BZIP" );
+   for (i = 1; i <= argc-1; i++)
+      APPEND_FILESPEC(argList, argv[i]);
+
+
+   /*-- Find the length of the longest filename --*/
+   longestFileName = 7;
+   numFileNames    = 0;
+   decode          = True;
+   for (aa = argList; aa != NULL; aa = aa->link) {
+      if (ISFLAG("--")) { decode = False; continue; }
+      if (aa->name[0] == '-' && decode) continue;
+      numFileNames++;
+      if (longestFileName < (Int32)strlen(aa->name) )
+         longestFileName = (Int32)strlen(aa->name);
+   }
+
+
+   /*-- Determine source modes; flag handling may change this too. --*/
+   if (numFileNames == 0)
+      srcMode = SM_I2O; else srcMode = SM_F2F;
+
+
+   /*-- Determine what to do (compress/uncompress/test/cat). --*/
+   /*-- Note that subsequent flag handling may change this. --*/
+   opMode = OM_Z;
+
+   if ( (strstr ( progName, "unzip" ) != 0) ||
+        (strstr ( progName, "UNZIP" ) != 0) )
+      opMode = OM_UNZ;
+
+   if ( (strstr ( progName, "z2cat" ) != 0) ||
+        (strstr ( progName, "Z2CAT" ) != 0) ||
+        (strstr ( progName, "zcat" ) != 0)  ||
+        (strstr ( progName, "ZCAT" ) != 0) )  {
+      opMode = OM_UNZ;
+      srcMode = (numFileNames == 0) ? SM_I2O : SM_F2O;
+   }
+
+
+   /*-- Look at the flags. --*/
+   for (aa = argList; aa != NULL; aa = aa->link) {
+      if (ISFLAG("--")) break;
+      if (aa->name[0] == '-' && aa->name[1] != '-') {
+         for (j = 1; aa->name[j] != '\0'; j++) {
+            switch (aa->name[j]) {
+               case 'c': srcMode          = SM_F2O; break;
+               case 'd': opMode           = OM_UNZ; break;
+               case 'z': opMode           = OM_Z; break;
+               case 'f': forceOverwrite   = True; break;
+               case 't': opMode           = OM_TEST; break;
+               case 'k': keepInputFiles   = True; break;
+               case 's': smallMode        = True; break;
+               case 'q': noisy            = False; break;
+               case '1': blockSize100k    = 1; break;
+               case '2': blockSize100k    = 2; break;
+               case '3': blockSize100k    = 3; break;
+               case '4': blockSize100k    = 4; break;
+               case '5': blockSize100k    = 5; break;
+               case '6': blockSize100k    = 6; break;
+               case '7': blockSize100k    = 7; break;
+               case '8': blockSize100k    = 8; break;
+               case '9': blockSize100k    = 9; break;
+               case 'V':
+               case 'L': license();            break;
+               case 'v': verbosity++; break;
+               case 'h': usage ( progName );
+                         exit ( 0 );
+                         break;
+               default:  fprintf ( stderr, "%s: Bad flag `%s'\n",
+                                   progName, aa->name );
+                         usage ( progName );
+                         exit ( 1 );
+                         break;
+            }
+         }
+      }
+   }
+   
+   /*-- And again ... --*/
+   for (aa = argList; aa != NULL; aa = aa->link) {
+      if (ISFLAG("--")) break;
+      if (ISFLAG("--stdout"))            srcMode          = SM_F2O;  else
+      if (ISFLAG("--decompress"))        opMode           = OM_UNZ;  else
+      if (ISFLAG("--compress"))          opMode           = OM_Z;    else
+      if (ISFLAG("--force"))             forceOverwrite   = True;    else
+      if (ISFLAG("--test"))              opMode           = OM_TEST; else
+      if (ISFLAG("--keep"))              keepInputFiles   = True;    else
+      if (ISFLAG("--small"))             smallMode        = True;    else
+      if (ISFLAG("--quiet"))             noisy            = False;   else
+      if (ISFLAG("--version"))           license();                  else
+      if (ISFLAG("--license"))           license();                  else
+      if (ISFLAG("--exponential"))       workFactor = 1;             else 
+      if (ISFLAG("--repetitive-best"))   redundant(aa->name);        else
+      if (ISFLAG("--repetitive-fast"))   redundant(aa->name);        else
+      if (ISFLAG("--fast"))              blockSize100k = 1;          else
+      if (ISFLAG("--best"))              blockSize100k = 9;          else
+      if (ISFLAG("--verbose"))           verbosity++;                else
+      if (ISFLAG("--help"))              { usage ( progName ); exit ( 0 ); }
+         else
+         if (strncmp ( aa->name, "--", 2) == 0) {
+            fprintf ( stderr, "%s: Bad flag `%s'\n", progName, aa->name );
+            usage ( progName );
+            exit ( 1 );
+         }
+   }
+
+   if (verbosity > 4) verbosity = 4;
+   if (opMode == OM_Z && smallMode && blockSize100k > 2) 
+      blockSize100k = 2;
+
+   if (opMode == OM_TEST && srcMode == SM_F2O) {
+      fprintf ( stderr, "%s: -c and -t cannot be used together.\n",
+                progName );
+      exit ( 1 );
+   }
+
+   if (srcMode == SM_F2O && numFileNames == 0)
+      srcMode = SM_I2O;
+
+   if (opMode != OM_Z) blockSize100k = 0;
+
+   if (srcMode == SM_F2F) {
+      signal (SIGINT,  mySignalCatcher);
+      signal (SIGTERM, mySignalCatcher);
+#     if BZ_UNIX
+      signal (SIGHUP,  mySignalCatcher);
+#     endif
+   }
+
+   if (opMode == OM_Z) {
+     if (srcMode == SM_I2O) {
+        compress ( NULL );
+     } else {
+        decode = True;
+        for (aa = argList; aa != NULL; aa = aa->link) {
+           if (ISFLAG("--")) { decode = False; continue; }
+           if (aa->name[0] == '-' && decode) continue;
+           numFilesProcessed++;
+           compress ( aa->name );
+        }
+     }
+   } 
+   else
+
+   if (opMode == OM_UNZ) {
+      unzFailsExist = False;
+      if (srcMode == SM_I2O) {
+         uncompress ( NULL );
+      } else {
+         decode = True;
+         for (aa = argList; aa != NULL; aa = aa->link) {
+            if (ISFLAG("--")) { decode = False; continue; }
+            if (aa->name[0] == '-' && decode) continue;
+            numFilesProcessed++;
+            uncompress ( aa->name );
+         }      
+      }
+      if (unzFailsExist) { 
+         setExit(2); 
+         exit(exitValue);
+      }
+   } 
+
+   else {
+      testFailsExist = False;
+      if (srcMode == SM_I2O) {
+         testf ( NULL );
+      } else {
+         decode = True;
+         for (aa = argList; aa != NULL; aa = aa->link) {
+	    if (ISFLAG("--")) { decode = False; continue; }
+            if (aa->name[0] == '-' && decode) continue;
+            numFilesProcessed++;
+            testf ( aa->name );
+	 }
+      }
+      if (testFailsExist && noisy) {
+         fprintf ( stderr,
+           "\n"
+           "You can use the `bzip2recover' program to attempt to recover\n"
+           "data from undamaged sections of corrupted files.\n\n"
+         );
+         setExit(2);
+         exit(exitValue);
+      }
+   }
+
+   /* Free the argument list memory to mollify leak detectors 
+      (eg) Purify, Checker.  Serves no other useful purpose.
+   */
+   aa = argList;
+   while (aa != NULL) {
+      Cell* aa2 = aa->link;
+      if (aa->name != NULL) free(aa->name);
+      free(aa);
+      aa = aa2;
+   }
+
+   return exitValue;
+}
+
+
+/*-----------------------------------------------------------*/
+/*--- end                                         bzip2.c ---*/
+/*-----------------------------------------------------------*/
diff --git a/usr/src/boot/contrib/bzip2/bzip2recover.c b/usr/src/boot/contrib/bzip2/bzip2recover.c
new file mode 100644
index 0000000..bf3bca5
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/bzip2recover.c
@@ -0,0 +1,514 @@
+/*-----------------------------------------------------------*/
+/*--- Block recoverer program for bzip2                   ---*/
+/*---                                      bzip2recover.c ---*/
+/*-----------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+/* This program is a complete hack and should be rewritten properly.
+	 It isn't very complicated. */
+
+#include <stdio.h>
+#include <errno.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+/* This program records bit locations in the file to be recovered.
+   That means that if 64-bit ints are not supported, we will not
+   be able to recover .bz2 files over 512MB (2^32 bits) long.
+   On GNU supported platforms, we take advantage of the 64-bit
+   int support to circumvent this problem.  Ditto MSVC.
+
+   This change occurred in version 1.0.2; all prior versions have
+   the 512MB limitation.
+*/
+#ifdef __GNUC__
+   typedef  unsigned long long int  MaybeUInt64;
+#  define MaybeUInt64_FMT "%llu"
+#else
+#ifdef _MSC_VER
+   typedef  unsigned __int64  MaybeUInt64;
+#  define MaybeUInt64_FMT "%I64u"
+#else
+   typedef  unsigned int   MaybeUInt64;
+#  define MaybeUInt64_FMT "%u"
+#endif
+#endif
+
+typedef  unsigned int   UInt32;
+typedef  int            Int32;
+typedef  unsigned char  UChar;
+typedef  char           Char;
+typedef  unsigned char  Bool;
+#define True    ((Bool)1)
+#define False   ((Bool)0)
+
+
+#define BZ_MAX_FILENAME 2000
+
+Char inFileName[BZ_MAX_FILENAME];
+Char outFileName[BZ_MAX_FILENAME];
+Char progName[BZ_MAX_FILENAME];
+
+MaybeUInt64 bytesOut = 0;
+MaybeUInt64 bytesIn  = 0;
+
+
+/*---------------------------------------------------*/
+/*--- Header bytes                                ---*/
+/*---------------------------------------------------*/
+
+#define BZ_HDR_B 0x42                         /* 'B' */
+#define BZ_HDR_Z 0x5a                         /* 'Z' */
+#define BZ_HDR_h 0x68                         /* 'h' */
+#define BZ_HDR_0 0x30                         /* '0' */
+ 
+
+/*---------------------------------------------------*/
+/*--- I/O errors                                  ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------*/
+static void readError ( void )
+{
+   fprintf ( stderr,
+             "%s: I/O error reading `%s', possible reason follows.\n",
+            progName, inFileName );
+   perror ( progName );
+   fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void writeError ( void )
+{
+   fprintf ( stderr,
+             "%s: I/O error reading `%s', possible reason follows.\n",
+            progName, inFileName );
+   perror ( progName );
+   fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void mallocFail ( Int32 n )
+{
+   fprintf ( stderr,
+             "%s: malloc failed on request for %d bytes.\n",
+            progName, n );
+   fprintf ( stderr, "%s: warning: output file(s) may be incomplete.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+/*---------------------------------------------*/
+static void tooManyBlocks ( Int32 max_handled_blocks )
+{
+   fprintf ( stderr,
+             "%s: `%s' appears to contain more than %d blocks\n",
+            progName, inFileName, max_handled_blocks );
+   fprintf ( stderr,
+             "%s: and cannot be handled.  To fix, increase\n",
+             progName );
+   fprintf ( stderr, 
+             "%s: BZ_MAX_HANDLED_BLOCKS in bzip2recover.c, and recompile.\n",
+             progName );
+   exit ( 1 );
+}
+
+
+
+/*---------------------------------------------------*/
+/*--- Bit stream I/O                              ---*/
+/*---------------------------------------------------*/
+
+typedef
+   struct {
+      FILE*  handle;
+      Int32  buffer;
+      Int32  buffLive;
+      Char   mode;
+   }
+   BitStream;
+
+
+/*---------------------------------------------*/
+static BitStream* bsOpenReadStream ( FILE* stream )
+{
+   BitStream *bs = malloc ( sizeof(BitStream) );
+   if (bs == NULL) mallocFail ( sizeof(BitStream) );
+   bs->handle = stream;
+   bs->buffer = 0;
+   bs->buffLive = 0;
+   bs->mode = 'r';
+   return bs;
+}
+
+
+/*---------------------------------------------*/
+static BitStream* bsOpenWriteStream ( FILE* stream )
+{
+   BitStream *bs = malloc ( sizeof(BitStream) );
+   if (bs == NULL) mallocFail ( sizeof(BitStream) );
+   bs->handle = stream;
+   bs->buffer = 0;
+   bs->buffLive = 0;
+   bs->mode = 'w';
+   return bs;
+}
+
+
+/*---------------------------------------------*/
+static void bsPutBit ( BitStream* bs, Int32 bit )
+{
+   if (bs->buffLive == 8) {
+      Int32 retVal = putc ( (UChar) bs->buffer, bs->handle );
+      if (retVal == EOF) writeError();
+      bytesOut++;
+      bs->buffLive = 1;
+      bs->buffer = bit & 0x1;
+   } else {
+      bs->buffer = ( (bs->buffer << 1) | (bit & 0x1) );
+      bs->buffLive++;
+   };
+}
+
+
+/*---------------------------------------------*/
+/*--
+   Returns 0 or 1, or 2 to indicate EOF.
+--*/
+static Int32 bsGetBit ( BitStream* bs )
+{
+   if (bs->buffLive > 0) {
+      bs->buffLive --;
+      return ( ((bs->buffer) >> (bs->buffLive)) & 0x1 );
+   } else {
+      Int32 retVal = getc ( bs->handle );
+      if ( retVal == EOF ) {
+         if (errno != 0) readError();
+         return 2;
+      }
+      bs->buffLive = 7;
+      bs->buffer = retVal;
+      return ( ((bs->buffer) >> 7) & 0x1 );
+   }
+}
+
+
+/*---------------------------------------------*/
+static void bsClose ( BitStream* bs )
+{
+   Int32 retVal;
+
+   if ( bs->mode == 'w' ) {
+      while ( bs->buffLive < 8 ) {
+         bs->buffLive++;
+         bs->buffer <<= 1;
+      };
+      retVal = putc ( (UChar) (bs->buffer), bs->handle );
+      if (retVal == EOF) writeError();
+      bytesOut++;
+      retVal = fflush ( bs->handle );
+      if (retVal == EOF) writeError();
+   }
+   retVal = fclose ( bs->handle );
+   if (retVal == EOF) {
+      if (bs->mode == 'w') writeError(); else readError();
+   }
+   free ( bs );
+}
+
+
+/*---------------------------------------------*/
+static void bsPutUChar ( BitStream* bs, UChar c )
+{
+   Int32 i;
+   for (i = 7; i >= 0; i--)
+      bsPutBit ( bs, (((UInt32) c) >> i) & 0x1 );
+}
+
+
+/*---------------------------------------------*/
+static void bsPutUInt32 ( BitStream* bs, UInt32 c )
+{
+   Int32 i;
+
+   for (i = 31; i >= 0; i--)
+      bsPutBit ( bs, (c >> i) & 0x1 );
+}
+
+
+/*---------------------------------------------*/
+static Bool endsInBz2 ( Char* name )
+{
+   Int32 n = strlen ( name );
+   if (n <= 4) return False;
+   return
+      (name[n-4] == '.' &&
+       name[n-3] == 'b' &&
+       name[n-2] == 'z' &&
+       name[n-1] == '2');
+}
+
+
+/*---------------------------------------------------*/
+/*---                                             ---*/
+/*---------------------------------------------------*/
+
+/* This logic isn't really right when it comes to Cygwin. */
+#ifdef _WIN32
+#  define  BZ_SPLIT_SYM  '\\'  /* path splitter on Windows platform */
+#else
+#  define  BZ_SPLIT_SYM  '/'   /* path splitter on Unix platform */
+#endif
+
+#define BLOCK_HEADER_HI  0x00003141UL
+#define BLOCK_HEADER_LO  0x59265359UL
+
+#define BLOCK_ENDMARK_HI 0x00001772UL
+#define BLOCK_ENDMARK_LO 0x45385090UL
+
+/* Increase if necessary.  However, a .bz2 file with > 50000 blocks
+   would have an uncompressed size of at least 40GB, so the chances
+   are low you'll need to up this.
+*/
+#define BZ_MAX_HANDLED_BLOCKS 50000
+
+MaybeUInt64 bStart [BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 bEnd   [BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 rbStart[BZ_MAX_HANDLED_BLOCKS];
+MaybeUInt64 rbEnd  [BZ_MAX_HANDLED_BLOCKS];
+
+Int32 main ( Int32 argc, Char** argv )
+{
+   FILE*       inFile;
+   FILE*       outFile;
+   BitStream*  bsIn, *bsWr;
+   Int32       b, wrBlock, currBlock, rbCtr;
+   MaybeUInt64 bitsRead;
+
+   UInt32      buffHi, buffLo, blockCRC;
+   Char*       p;
+
+   strcpy ( progName, argv[0] );
+   inFileName[0] = outFileName[0] = 0;
+
+   fprintf ( stderr, 
+             "bzip2recover 1.0.6: extracts blocks from damaged .bz2 files.\n" );
+
+   if (argc != 2) {
+      fprintf ( stderr, "%s: usage is `%s damaged_file_name'.\n",
+                        progName, progName );
+      switch (sizeof(MaybeUInt64)) {
+         case 8:
+            fprintf(stderr, 
+                    "\trestrictions on size of recovered file: None\n");
+            break;
+         case 4:
+            fprintf(stderr, 
+                    "\trestrictions on size of recovered file: 512 MB\n");
+            fprintf(stderr, 
+                    "\tto circumvent, recompile with MaybeUInt64 as an\n"
+                    "\tunsigned 64-bit int.\n");
+            break;
+         default:
+            fprintf(stderr, 
+                    "\tsizeof(MaybeUInt64) is not 4 or 8 -- "
+                    "configuration error.\n");
+            break;
+      }
+      exit(1);
+   }
+
+   if (strlen(argv[1]) >= BZ_MAX_FILENAME-20) {
+      fprintf ( stderr, 
+                "%s: supplied filename is suspiciously (>= %d chars) long.  Bye!\n",
+                progName, (int)strlen(argv[1]) );
+      exit(1);
+   }
+
+   strcpy ( inFileName, argv[1] );
+
+   inFile = fopen ( inFileName, "rb" );
+   if (inFile == NULL) {
+      fprintf ( stderr, "%s: can't read `%s'\n", progName, inFileName );
+      exit(1);
+   }
+
+   bsIn = bsOpenReadStream ( inFile );
+   fprintf ( stderr, "%s: searching for block boundaries ...\n", progName );
+
+   bitsRead = 0;
+   buffHi = buffLo = 0;
+   currBlock = 0;
+   bStart[currBlock] = 0;
+
+   rbCtr = 0;
+
+   while (True) {
+      b = bsGetBit ( bsIn );
+      bitsRead++;
+      if (b == 2) {
+         if (bitsRead >= bStart[currBlock] &&
+            (bitsRead - bStart[currBlock]) >= 40) {
+            bEnd[currBlock] = bitsRead-1;
+            if (currBlock > 0)
+               fprintf ( stderr, "   block %d runs from " MaybeUInt64_FMT 
+                                 " to " MaybeUInt64_FMT " (incomplete)\n",
+                         currBlock,  bStart[currBlock], bEnd[currBlock] );
+         } else
+            currBlock--;
+         break;
+      }
+      buffHi = (buffHi << 1) | (buffLo >> 31);
+      buffLo = (buffLo << 1) | (b & 1);
+      if ( ( (buffHi & 0x0000ffff) == BLOCK_HEADER_HI 
+             && buffLo == BLOCK_HEADER_LO)
+           || 
+           ( (buffHi & 0x0000ffff) == BLOCK_ENDMARK_HI 
+             && buffLo == BLOCK_ENDMARK_LO)
+         ) {
+         if (bitsRead > 49) {
+            bEnd[currBlock] = bitsRead-49;
+         } else {
+            bEnd[currBlock] = 0;
+         }
+         if (currBlock > 0 &&
+	     (bEnd[currBlock] - bStart[currBlock]) >= 130) {
+            fprintf ( stderr, "   block %d runs from " MaybeUInt64_FMT 
+                              " to " MaybeUInt64_FMT "\n",
+                      rbCtr+1,  bStart[currBlock], bEnd[currBlock] );
+            rbStart[rbCtr] = bStart[currBlock];
+            rbEnd[rbCtr] = bEnd[currBlock];
+            rbCtr++;
+         }
+         if (currBlock >= BZ_MAX_HANDLED_BLOCKS)
+            tooManyBlocks(BZ_MAX_HANDLED_BLOCKS);
+         currBlock++;
+
+         bStart[currBlock] = bitsRead;
+      }
+   }
+
+   bsClose ( bsIn );
+
+   /*-- identified blocks run from 1 to rbCtr inclusive. --*/
+
+   if (rbCtr < 1) {
+      fprintf ( stderr,
+                "%s: sorry, I couldn't find any block boundaries.\n",
+                progName );
+      exit(1);
+   };
+
+   fprintf ( stderr, "%s: splitting into blocks\n", progName );
+
+   inFile = fopen ( inFileName, "rb" );
+   if (inFile == NULL) {
+      fprintf ( stderr, "%s: can't open `%s'\n", progName, inFileName );
+      exit(1);
+   }
+   bsIn = bsOpenReadStream ( inFile );
+
+   /*-- placate gcc's dataflow analyser --*/
+   blockCRC = 0; bsWr = 0;
+
+   bitsRead = 0;
+   outFile = NULL;
+   wrBlock = 0;
+   while (True) {
+      b = bsGetBit(bsIn);
+      if (b == 2) break;
+      buffHi = (buffHi << 1) | (buffLo >> 31);
+      buffLo = (buffLo << 1) | (b & 1);
+      if (bitsRead == 47+rbStart[wrBlock]) 
+         blockCRC = (buffHi << 16) | (buffLo >> 16);
+
+      if (outFile != NULL && bitsRead >= rbStart[wrBlock]
+                          && bitsRead <= rbEnd[wrBlock]) {
+         bsPutBit ( bsWr, b );
+      }
+
+      bitsRead++;
+
+      if (bitsRead == rbEnd[wrBlock]+1) {
+         if (outFile != NULL) {
+            bsPutUChar ( bsWr, 0x17 ); bsPutUChar ( bsWr, 0x72 );
+            bsPutUChar ( bsWr, 0x45 ); bsPutUChar ( bsWr, 0x38 );
+            bsPutUChar ( bsWr, 0x50 ); bsPutUChar ( bsWr, 0x90 );
+            bsPutUInt32 ( bsWr, blockCRC );
+            bsClose ( bsWr );
+         }
+         if (wrBlock >= rbCtr) break;
+         wrBlock++;
+      } else
+      if (bitsRead == rbStart[wrBlock]) {
+         /* Create the output file name, correctly handling leading paths. 
+            (31.10.2001 by Sergey E. Kusikov) */
+         Char* split;
+         Int32 ofs, k;
+         for (k = 0; k < BZ_MAX_FILENAME; k++) 
+            outFileName[k] = 0;
+         strcpy (outFileName, inFileName);
+         split = strrchr (outFileName, BZ_SPLIT_SYM);
+         if (split == NULL) {
+            split = outFileName;
+         } else {
+            ++split;
+	 }
+	 /* Now split points to the start of the basename. */
+         ofs  = split - outFileName;
+         sprintf (split, "rec%5d", wrBlock+1);
+         for (p = split; *p != 0; p++) if (*p == ' ') *p = '0';
+         strcat (outFileName, inFileName + ofs);
+
+         if ( !endsInBz2(outFileName)) strcat ( outFileName, ".bz2" );
+
+         fprintf ( stderr, "   writing block %d to `%s' ...\n",
+                           wrBlock+1, outFileName );
+
+         outFile = fopen ( outFileName, "wb" );
+         if (outFile == NULL) {
+            fprintf ( stderr, "%s: can't write `%s'\n",
+                      progName, outFileName );
+            exit(1);
+         }
+         bsWr = bsOpenWriteStream ( outFile );
+         bsPutUChar ( bsWr, BZ_HDR_B );    
+         bsPutUChar ( bsWr, BZ_HDR_Z );    
+         bsPutUChar ( bsWr, BZ_HDR_h );    
+         bsPutUChar ( bsWr, BZ_HDR_0 + 9 );
+         bsPutUChar ( bsWr, 0x31 ); bsPutUChar ( bsWr, 0x41 );
+         bsPutUChar ( bsWr, 0x59 ); bsPutUChar ( bsWr, 0x26 );
+         bsPutUChar ( bsWr, 0x53 ); bsPutUChar ( bsWr, 0x59 );
+      }
+   }
+
+   fprintf ( stderr, "%s: finished\n", progName );
+   return 0;
+}
+
+
+
+/*-----------------------------------------------------------*/
+/*--- end                                  bzip2recover.c ---*/
+/*-----------------------------------------------------------*/
diff --git a/usr/src/boot/contrib/bzip2/bzlib.c b/usr/src/boot/contrib/bzip2/bzlib.c
new file mode 100644
index 0000000..c02d076
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/bzlib.c
@@ -0,0 +1,1581 @@
+
+/*-------------------------------------------------------------*/
+/*--- Library top-level functions.                          ---*/
+/*---                                               bzlib.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+/* CHANGES
+   0.9.0    -- original version.
+   0.9.0a/b -- no changes in this file.
+   0.9.0c   -- made zero-length BZ_FLUSH work correctly in bzCompress().
+     fixed bzWrite/bzRead to ignore zero-length requests.
+     fixed bzread to correctly handle read requests after EOF.
+     wrong parameter order in call to bzDecompressInit in
+     bzBuffToBuffDecompress.  Fixed.
+*/
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include "bzlib_private.h"
+
+#ifndef BZ_NO_COMPRESS
+
+/*---------------------------------------------------*/
+/*--- Compression stuff                           ---*/
+/*---------------------------------------------------*/
+
+
+/*---------------------------------------------------*/
+#ifndef BZ_NO_STDIO
+void BZ2_bz__AssertH__fail ( int errcode )
+{
+   fprintf(stderr, 
+      "\n\nbzip2/libbzip2: internal error number %d.\n"
+      "This is a bug in bzip2/libbzip2, %s.\n"
+      "Please report it to me at: jseward@bzip.org.  If this happened\n"
+      "when you were using some program which uses libbzip2 as a\n"
+      "component, you should also report this bug to the author(s)\n"
+      "of that program.  Please make an effort to report this bug;\n"
+      "timely and accurate bug reports eventually lead to higher\n"
+      "quality software.  Thanks.  Julian Seward, 10 December 2007.\n\n",
+      errcode,
+      BZ2_bzlibVersion()
+   );
+
+   if (errcode == 1007) {
+   fprintf(stderr,
+      "\n*** A special note about internal error number 1007 ***\n"
+      "\n"
+      "Experience suggests that a common cause of i.e. 1007\n"
+      "is unreliable memory or other hardware.  The 1007 assertion\n"
+      "just happens to cross-check the results of huge numbers of\n"
+      "memory reads/writes, and so acts (unintendedly) as a stress\n"
+      "test of your memory system.\n"
+      "\n"
+      "I suggest the following: try compressing the file again,\n"
+      "possibly monitoring progress in detail with the -vv flag.\n"
+      "\n"
+      "* If the error cannot be reproduced, and/or happens at different\n"
+      "  points in compression, you may have a flaky memory system.\n"
+      "  Try a memory-test program.  I have used Memtest86\n"
+      "  (www.memtest86.com).  At the time of writing it is free (GPLd).\n"
+      "  Memtest86 tests memory much more thorougly than your BIOSs\n"
+      "  power-on test, and may find failures that the BIOS doesn't.\n"
+      "\n"
+      "* If the error can be repeatably reproduced, this is a bug in\n"
+      "  bzip2, and I would very much like to hear about it.  Please\n"
+      "  let me know, and, ideally, save a copy of the file causing the\n"
+      "  problem -- without which I will be unable to investigate it.\n"
+      "\n"
+   );
+   }
+
+   exit(3);
+}
+#endif
+
+#endif /* BZ_NO_COMPRESS */
+
+/*---------------------------------------------------*/
+static
+int bz_config_ok ( void )
+{
+   if (sizeof(int)   != 4) return 0;
+   if (sizeof(short) != 2) return 0;
+   if (sizeof(char)  != 1) return 0;
+   return 1;
+}
+
+
+/*---------------------------------------------------*/
+static
+void* default_bzalloc ( void* opaque, Int32 items, Int32 size )
+{
+   void* v = malloc ( items * size );
+   return v;
+}
+
+static
+void default_bzfree ( void* opaque, void* addr )
+{
+   if (addr != NULL) free ( addr );
+}
+
+#ifndef BZ_NO_COMPRESS
+
+/*---------------------------------------------------*/
+static
+void prepare_new_block ( EState* s )
+{
+   Int32 i;
+   s->nblock = 0;
+   s->numZ = 0;
+   s->state_out_pos = 0;
+   BZ_INITIALISE_CRC ( s->blockCRC );
+   for (i = 0; i < 256; i++) s->inUse[i] = False;
+   s->blockNo++;
+}
+
+
+/*---------------------------------------------------*/
+static
+void init_RL ( EState* s )
+{
+   s->state_in_ch  = 256;
+   s->state_in_len = 0;
+}
+
+
+static
+Bool isempty_RL ( EState* s )
+{
+   if (s->state_in_ch < 256 && s->state_in_len > 0)
+      return False; else
+      return True;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompressInit) 
+                    ( bz_stream* strm, 
+                     int        blockSize100k,
+                     int        verbosity,
+                     int        workFactor )
+{
+   Int32   n;
+   EState* s;
+
+   if (!bz_config_ok()) return BZ_CONFIG_ERROR;
+
+   if (strm == NULL || 
+       blockSize100k < 1 || blockSize100k > 9 ||
+       workFactor < 0 || workFactor > 250)
+     return BZ_PARAM_ERROR;
+
+   if (workFactor == 0) workFactor = 30;
+   if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc;
+   if (strm->bzfree == NULL) strm->bzfree = default_bzfree;
+
+   s = BZALLOC( sizeof(EState) );
+   if (s == NULL) return BZ_MEM_ERROR;
+   s->strm = strm;
+
+   s->arr1 = NULL;
+   s->arr2 = NULL;
+   s->ftab = NULL;
+
+   n       = 100000 * blockSize100k;
+   s->arr1 = BZALLOC( n                  * sizeof(UInt32) );
+   s->arr2 = BZALLOC( (n+BZ_N_OVERSHOOT) * sizeof(UInt32) );
+   s->ftab = BZALLOC( 65537              * sizeof(UInt32) );
+
+   if (s->arr1 == NULL || s->arr2 == NULL || s->ftab == NULL) {
+      if (s->arr1 != NULL) BZFREE(s->arr1);
+      if (s->arr2 != NULL) BZFREE(s->arr2);
+      if (s->ftab != NULL) BZFREE(s->ftab);
+      if (s       != NULL) BZFREE(s);
+      return BZ_MEM_ERROR;
+   }
+
+   s->blockNo           = 0;
+   s->state             = BZ_S_INPUT;
+   s->mode              = BZ_M_RUNNING;
+   s->combinedCRC       = 0;
+   s->blockSize100k     = blockSize100k;
+   s->nblockMAX         = 100000 * blockSize100k - 19;
+   s->verbosity         = verbosity;
+   s->workFactor        = workFactor;
+
+   s->block             = (UChar*)s->arr2;
+   s->mtfv              = (UInt16*)s->arr1;
+   s->zbits             = NULL;
+   s->ptr               = (UInt32*)s->arr1;
+
+   strm->state          = s;
+   strm->total_in_lo32  = 0;
+   strm->total_in_hi32  = 0;
+   strm->total_out_lo32 = 0;
+   strm->total_out_hi32 = 0;
+   init_RL ( s );
+   prepare_new_block ( s );
+   return BZ_OK;
+}
+
+
+/*---------------------------------------------------*/
+static
+void add_pair_to_block ( EState* s )
+{
+   Int32 i;
+   UChar ch = (UChar)(s->state_in_ch);
+   for (i = 0; i < s->state_in_len; i++) {
+      BZ_UPDATE_CRC( s->blockCRC, ch );
+   }
+   s->inUse[s->state_in_ch] = True;
+   switch (s->state_in_len) {
+      case 1:
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         break;
+      case 2:
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         break;
+      case 3:
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         break;
+      default:
+         s->inUse[s->state_in_len-4] = True;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = (UChar)ch; s->nblock++;
+         s->block[s->nblock] = ((UChar)(s->state_in_len-4));
+         s->nblock++;
+         break;
+   }
+}
+
+
+/*---------------------------------------------------*/
+static
+void flush_RL ( EState* s )
+{
+   if (s->state_in_ch < 256) add_pair_to_block ( s );
+   init_RL ( s );
+}
+
+
+/*---------------------------------------------------*/
+#define ADD_CHAR_TO_BLOCK(zs,zchh0)               \
+{                                                 \
+   UInt32 zchh = (UInt32)(zchh0);                 \
+   /*-- fast track the common case --*/           \
+   if (zchh != zs->state_in_ch &&                 \
+       zs->state_in_len == 1) {                   \
+      UChar ch = (UChar)(zs->state_in_ch);        \
+      BZ_UPDATE_CRC( zs->blockCRC, ch );          \
+      zs->inUse[zs->state_in_ch] = True;          \
+      zs->block[zs->nblock] = (UChar)ch;          \
+      zs->nblock++;                               \
+      zs->state_in_ch = zchh;                     \
+   }                                              \
+   else                                           \
+   /*-- general, uncommon cases --*/              \
+   if (zchh != zs->state_in_ch ||                 \
+      zs->state_in_len == 255) {                  \
+      if (zs->state_in_ch < 256)                  \
+         add_pair_to_block ( zs );                \
+      zs->state_in_ch = zchh;                     \
+      zs->state_in_len = 1;                       \
+   } else {                                       \
+      zs->state_in_len++;                         \
+   }                                              \
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool copy_input_until_stop ( EState* s )
+{
+   Bool progress_in = False;
+
+   if (s->mode == BZ_M_RUNNING) {
+
+      /*-- fast track the common case --*/
+      while (True) {
+         /*-- block full? --*/
+         if (s->nblock >= s->nblockMAX) break;
+         /*-- no input? --*/
+         if (s->strm->avail_in == 0) break;
+         progress_in = True;
+         ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); 
+         s->strm->next_in++;
+         s->strm->avail_in--;
+         s->strm->total_in_lo32++;
+         if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++;
+      }
+
+   } else {
+
+      /*-- general, uncommon case --*/
+      while (True) {
+         /*-- block full? --*/
+         if (s->nblock >= s->nblockMAX) break;
+         /*-- no input? --*/
+         if (s->strm->avail_in == 0) break;
+         /*-- flush/finish end? --*/
+         if (s->avail_in_expect == 0) break;
+         progress_in = True;
+         ADD_CHAR_TO_BLOCK ( s, (UInt32)(*((UChar*)(s->strm->next_in))) ); 
+         s->strm->next_in++;
+         s->strm->avail_in--;
+         s->strm->total_in_lo32++;
+         if (s->strm->total_in_lo32 == 0) s->strm->total_in_hi32++;
+         s->avail_in_expect--;
+      }
+   }
+   return progress_in;
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool copy_output_until_stop ( EState* s )
+{
+   Bool progress_out = False;
+
+   while (True) {
+
+      /*-- no output space? --*/
+      if (s->strm->avail_out == 0) break;
+
+      /*-- block done? --*/
+      if (s->state_out_pos >= s->numZ) break;
+
+      progress_out = True;
+      *(s->strm->next_out) = s->zbits[s->state_out_pos];
+      s->state_out_pos++;
+      s->strm->avail_out--;
+      s->strm->next_out++;
+      s->strm->total_out_lo32++;
+      if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+   }
+
+   return progress_out;
+}
+
+
+/*---------------------------------------------------*/
+static
+Bool handle_compress ( bz_stream* strm )
+{
+   Bool progress_in  = False;
+   Bool progress_out = False;
+   EState* s = strm->state;
+   
+   while (True) {
+
+      if (s->state == BZ_S_OUTPUT) {
+         progress_out |= copy_output_until_stop ( s );
+         if (s->state_out_pos < s->numZ) break;
+         if (s->mode == BZ_M_FINISHING && 
+             s->avail_in_expect == 0 &&
+             isempty_RL(s)) break;
+         prepare_new_block ( s );
+         s->state = BZ_S_INPUT;
+         if (s->mode == BZ_M_FLUSHING && 
+             s->avail_in_expect == 0 &&
+             isempty_RL(s)) break;
+      }
+
+      if (s->state == BZ_S_INPUT) {
+         progress_in |= copy_input_until_stop ( s );
+         if (s->mode != BZ_M_RUNNING && s->avail_in_expect == 0) {
+            flush_RL ( s );
+            BZ2_compressBlock ( s, (Bool)(s->mode == BZ_M_FINISHING) );
+            s->state = BZ_S_OUTPUT;
+         }
+         else
+         if (s->nblock >= s->nblockMAX) {
+            BZ2_compressBlock ( s, False );
+            s->state = BZ_S_OUTPUT;
+         }
+         else
+         if (s->strm->avail_in == 0) {
+            break;
+         }
+      }
+
+   }
+
+   return progress_in || progress_out;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompress) ( bz_stream *strm, int action )
+{
+   Bool progress;
+   EState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   preswitch:
+   switch (s->mode) {
+
+      case BZ_M_IDLE:
+         return BZ_SEQUENCE_ERROR;
+
+      case BZ_M_RUNNING:
+         if (action == BZ_RUN) {
+            progress = handle_compress ( strm );
+            return progress ? BZ_RUN_OK : BZ_PARAM_ERROR;
+         } 
+         else
+	 if (action == BZ_FLUSH) {
+            s->avail_in_expect = strm->avail_in;
+            s->mode = BZ_M_FLUSHING;
+            goto preswitch;
+         }
+         else
+         if (action == BZ_FINISH) {
+            s->avail_in_expect = strm->avail_in;
+            s->mode = BZ_M_FINISHING;
+            goto preswitch;
+         }
+         else 
+            return BZ_PARAM_ERROR;
+
+      case BZ_M_FLUSHING:
+         if (action != BZ_FLUSH) return BZ_SEQUENCE_ERROR;
+         if (s->avail_in_expect != s->strm->avail_in) 
+            return BZ_SEQUENCE_ERROR;
+         progress = handle_compress ( strm );
+         if (s->avail_in_expect > 0 || !isempty_RL(s) ||
+             s->state_out_pos < s->numZ) return BZ_FLUSH_OK;
+         s->mode = BZ_M_RUNNING;
+         return BZ_RUN_OK;
+
+      case BZ_M_FINISHING:
+         if (action != BZ_FINISH) return BZ_SEQUENCE_ERROR;
+         if (s->avail_in_expect != s->strm->avail_in) 
+            return BZ_SEQUENCE_ERROR;
+         progress = handle_compress ( strm );
+         if (!progress) return BZ_SEQUENCE_ERROR;
+         if (s->avail_in_expect > 0 || !isempty_RL(s) ||
+             s->state_out_pos < s->numZ) return BZ_FINISH_OK;
+         s->mode = BZ_M_IDLE;
+         return BZ_STREAM_END;
+   }
+   return BZ_OK; /*--not reached--*/
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzCompressEnd)  ( bz_stream *strm )
+{
+   EState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   if (s->arr1 != NULL) BZFREE(s->arr1);
+   if (s->arr2 != NULL) BZFREE(s->arr2);
+   if (s->ftab != NULL) BZFREE(s->ftab);
+   BZFREE(strm->state);
+
+   strm->state = NULL;   
+
+   return BZ_OK;
+}
+
+#endif /* BZ_NO_COMPRESS */
+
+/*---------------------------------------------------*/
+/*--- Decompression stuff                         ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompressInit) 
+                     ( bz_stream* strm, 
+                       int        verbosity,
+                       int        small )
+{
+   DState* s;
+
+   if (!bz_config_ok()) return BZ_CONFIG_ERROR;
+
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   if (small != 0 && small != 1) return BZ_PARAM_ERROR;
+   if (verbosity < 0 || verbosity > 4) return BZ_PARAM_ERROR;
+
+   if (strm->bzalloc == NULL) strm->bzalloc = default_bzalloc;
+   if (strm->bzfree == NULL) strm->bzfree = default_bzfree;
+
+   s = BZALLOC( sizeof(DState) );
+   if (s == NULL) return BZ_MEM_ERROR;
+   s->strm                  = strm;
+   strm->state              = s;
+   s->state                 = BZ_X_MAGIC_1;
+   s->bsLive                = 0;
+   s->bsBuff                = 0;
+   s->calculatedCombinedCRC = 0;
+   strm->total_in_lo32      = 0;
+   strm->total_in_hi32      = 0;
+   strm->total_out_lo32     = 0;
+   strm->total_out_hi32     = 0;
+   s->smallDecompress       = (Bool)small;
+   s->ll4                   = NULL;
+   s->ll16                  = NULL;
+   s->tt                    = NULL;
+   s->currBlockNo           = 0;
+   s->verbosity             = verbosity;
+
+   return BZ_OK;
+}
+
+
+/*---------------------------------------------------*/
+/* Return  True iff data corruption is discovered.
+   Returns False if there is no problem.
+*/
+static
+Bool unRLE_obuf_to_output_FAST ( DState* s )
+{
+   UChar k1;
+
+   if (s->blockRandomised) {
+
+      while (True) {
+         /* try to finish existing run */
+         while (True) {
+            if (s->strm->avail_out == 0) return False;
+            if (s->state_out_len == 0) break;
+            *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+            BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+            s->state_out_len--;
+            s->strm->next_out++;
+            s->strm->avail_out--;
+            s->strm->total_out_lo32++;
+            if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+         }
+
+         /* can a new run be started? */
+         if (s->nblock_used == s->save_nblock+1) return False;
+               
+         /* Only caused by corrupt data stream? */
+         if (s->nblock_used > s->save_nblock+1)
+            return True;
+   
+         s->state_out_len = 1;
+         s->state_out_ch = s->k0;
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 2;
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 3;
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         BZ_GET_FAST(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         s->state_out_len = ((Int32)k1) + 4;
+         BZ_GET_FAST(s->k0); BZ_RAND_UPD_MASK; 
+         s->k0 ^= BZ_RAND_MASK; s->nblock_used++;
+      }
+
+   } else {
+
+      /* restore */
+      UInt32        c_calculatedBlockCRC = s->calculatedBlockCRC;
+      UChar         c_state_out_ch       = s->state_out_ch;
+      Int32         c_state_out_len      = s->state_out_len;
+      Int32         c_nblock_used        = s->nblock_used;
+      Int32         c_k0                 = s->k0;
+      UInt32*       c_tt                 = s->tt;
+      UInt32        c_tPos               = s->tPos;
+      char*         cs_next_out          = s->strm->next_out;
+      unsigned int  cs_avail_out         = s->strm->avail_out;
+      Int32         ro_blockSize100k     = s->blockSize100k;
+      /* end restore */
+
+      UInt32       avail_out_INIT = cs_avail_out;
+      Int32        s_save_nblockPP = s->save_nblock+1;
+      unsigned int total_out_lo32_old;
+
+      while (True) {
+
+         /* try to finish existing run */
+         if (c_state_out_len > 0) {
+            while (True) {
+               if (cs_avail_out == 0) goto return_notr;
+               if (c_state_out_len == 1) break;
+               *( (UChar*)(cs_next_out) ) = c_state_out_ch;
+               BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch );
+               c_state_out_len--;
+               cs_next_out++;
+               cs_avail_out--;
+            }
+            s_state_out_len_eq_one:
+            {
+               if (cs_avail_out == 0) { 
+                  c_state_out_len = 1; goto return_notr;
+               };
+               *( (UChar*)(cs_next_out) ) = c_state_out_ch;
+               BZ_UPDATE_CRC ( c_calculatedBlockCRC, c_state_out_ch );
+               cs_next_out++;
+               cs_avail_out--;
+            }
+         }   
+         /* Only caused by corrupt data stream? */
+         if (c_nblock_used > s_save_nblockPP)
+            return True;
+
+         /* can a new run be started? */
+         if (c_nblock_used == s_save_nblockPP) {
+            c_state_out_len = 0; goto return_notr;
+         };   
+         c_state_out_ch = c_k0;
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         if (k1 != c_k0) { 
+            c_k0 = k1; goto s_state_out_len_eq_one; 
+         };
+         if (c_nblock_used == s_save_nblockPP) 
+            goto s_state_out_len_eq_one;
+   
+         c_state_out_len = 2;
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         if (c_nblock_used == s_save_nblockPP) continue;
+         if (k1 != c_k0) { c_k0 = k1; continue; };
+   
+         c_state_out_len = 3;
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         if (c_nblock_used == s_save_nblockPP) continue;
+         if (k1 != c_k0) { c_k0 = k1; continue; };
+   
+         BZ_GET_FAST_C(k1); c_nblock_used++;
+         c_state_out_len = ((Int32)k1) + 4;
+         BZ_GET_FAST_C(c_k0); c_nblock_used++;
+      }
+
+      return_notr:
+      total_out_lo32_old = s->strm->total_out_lo32;
+      s->strm->total_out_lo32 += (avail_out_INIT - cs_avail_out);
+      if (s->strm->total_out_lo32 < total_out_lo32_old)
+         s->strm->total_out_hi32++;
+
+      /* save */
+      s->calculatedBlockCRC = c_calculatedBlockCRC;
+      s->state_out_ch       = c_state_out_ch;
+      s->state_out_len      = c_state_out_len;
+      s->nblock_used        = c_nblock_used;
+      s->k0                 = c_k0;
+      s->tt                 = c_tt;
+      s->tPos               = c_tPos;
+      s->strm->next_out     = cs_next_out;
+      s->strm->avail_out    = cs_avail_out;
+      /* end save */
+   }
+   return False;
+}
+
+
+
+/*---------------------------------------------------*/
+__inline__ Int32 BZ2_indexIntoF ( Int32 indx, Int32 *cftab )
+{
+   Int32 nb, na, mid;
+   nb = 0;
+   na = 256;
+   do {
+      mid = (nb + na) >> 1;
+      if (indx >= cftab[mid]) nb = mid; else na = mid;
+   }
+   while (na - nb != 1);
+   return nb;
+}
+
+
+/*---------------------------------------------------*/
+/* Return  True iff data corruption is discovered.
+   Returns False if there is no problem.
+*/
+static
+Bool unRLE_obuf_to_output_SMALL ( DState* s )
+{
+   UChar k1;
+
+   if (s->blockRandomised) {
+
+      while (True) {
+         /* try to finish existing run */
+         while (True) {
+            if (s->strm->avail_out == 0) return False;
+            if (s->state_out_len == 0) break;
+            *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+            BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+            s->state_out_len--;
+            s->strm->next_out++;
+            s->strm->avail_out--;
+            s->strm->total_out_lo32++;
+            if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+         }
+   
+         /* can a new run be started? */
+         if (s->nblock_used == s->save_nblock+1) return False;
+
+         /* Only caused by corrupt data stream? */
+         if (s->nblock_used > s->save_nblock+1)
+            return True;
+   
+         s->state_out_len = 1;
+         s->state_out_ch = s->k0;
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 2;
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 3;
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         BZ_GET_SMALL(k1); BZ_RAND_UPD_MASK; 
+         k1 ^= BZ_RAND_MASK; s->nblock_used++;
+         s->state_out_len = ((Int32)k1) + 4;
+         BZ_GET_SMALL(s->k0); BZ_RAND_UPD_MASK; 
+         s->k0 ^= BZ_RAND_MASK; s->nblock_used++;
+      }
+
+   } else {
+
+      while (True) {
+         /* try to finish existing run */
+         while (True) {
+            if (s->strm->avail_out == 0) return False;
+            if (s->state_out_len == 0) break;
+            *( (UChar*)(s->strm->next_out) ) = s->state_out_ch;
+            BZ_UPDATE_CRC ( s->calculatedBlockCRC, s->state_out_ch );
+            s->state_out_len--;
+            s->strm->next_out++;
+            s->strm->avail_out--;
+            s->strm->total_out_lo32++;
+            if (s->strm->total_out_lo32 == 0) s->strm->total_out_hi32++;
+         }
+   
+         /* can a new run be started? */
+         if (s->nblock_used == s->save_nblock+1) return False;
+
+         /* Only caused by corrupt data stream? */
+         if (s->nblock_used > s->save_nblock+1)
+            return True;
+   
+         s->state_out_len = 1;
+         s->state_out_ch = s->k0;
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 2;
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         s->state_out_len = 3;
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         if (s->nblock_used == s->save_nblock+1) continue;
+         if (k1 != s->k0) { s->k0 = k1; continue; };
+   
+         BZ_GET_SMALL(k1); s->nblock_used++;
+         s->state_out_len = ((Int32)k1) + 4;
+         BZ_GET_SMALL(s->k0); s->nblock_used++;
+      }
+
+   }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompress) ( bz_stream *strm )
+{
+   Bool    corrupt;
+   DState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   while (True) {
+      if (s->state == BZ_X_IDLE) return BZ_SEQUENCE_ERROR;
+      if (s->state == BZ_X_OUTPUT) {
+         if (s->smallDecompress)
+            corrupt = unRLE_obuf_to_output_SMALL ( s ); else
+            corrupt = unRLE_obuf_to_output_FAST  ( s );
+         if (corrupt) return BZ_DATA_ERROR;
+         if (s->nblock_used == s->save_nblock+1 && s->state_out_len == 0) {
+            BZ_FINALISE_CRC ( s->calculatedBlockCRC );
+            if (s->verbosity >= 3) 
+               VPrintf2 ( " {0x%08x, 0x%08x}", s->storedBlockCRC, 
+                          s->calculatedBlockCRC );
+            if (s->verbosity >= 2) VPrintf0 ( "]" );
+            if (s->calculatedBlockCRC != s->storedBlockCRC)
+               return BZ_DATA_ERROR;
+            s->calculatedCombinedCRC 
+               = (s->calculatedCombinedCRC << 1) | 
+                    (s->calculatedCombinedCRC >> 31);
+            s->calculatedCombinedCRC ^= s->calculatedBlockCRC;
+            s->state = BZ_X_BLKHDR_1;
+         } else {
+            return BZ_OK;
+         }
+      }
+      if (s->state >= BZ_X_MAGIC_1) {
+         Int32 r = BZ2_decompress ( s );
+         if (r == BZ_STREAM_END) {
+            if (s->verbosity >= 3)
+               VPrintf2 ( "\n    combined CRCs: stored = 0x%08x, computed = 0x%08x", 
+                          s->storedCombinedCRC, s->calculatedCombinedCRC );
+            if (s->calculatedCombinedCRC != s->storedCombinedCRC)
+               return BZ_DATA_ERROR;
+            return r;
+         }
+         if (s->state != BZ_X_OUTPUT) return r;
+      }
+   }
+
+   AssertH ( 0, 6001 );
+
+   return 0;  /*NOTREACHED*/
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzDecompressEnd)  ( bz_stream *strm )
+{
+   DState* s;
+   if (strm == NULL) return BZ_PARAM_ERROR;
+   s = strm->state;
+   if (s == NULL) return BZ_PARAM_ERROR;
+   if (s->strm != strm) return BZ_PARAM_ERROR;
+
+   if (s->tt   != NULL) BZFREE(s->tt);
+   if (s->ll16 != NULL) BZFREE(s->ll16);
+   if (s->ll4  != NULL) BZFREE(s->ll4);
+
+   BZFREE(strm->state);
+   strm->state = NULL;
+
+   return BZ_OK;
+}
+
+#ifndef BZ_NO_COMPRESS
+
+#ifndef BZ_NO_STDIO
+/*---------------------------------------------------*/
+/*--- File I/O stuff                              ---*/
+/*---------------------------------------------------*/
+
+#define BZ_SETERR(eee)                    \
+{                                         \
+   if (bzerror != NULL) *bzerror = eee;   \
+   if (bzf != NULL) bzf->lastErr = eee;   \
+}
+
+typedef 
+   struct {
+      FILE*     handle;
+      Char      buf[BZ_MAX_UNUSED];
+      Int32     bufN;
+      Bool      writing;
+      bz_stream strm;
+      Int32     lastErr;
+      Bool      initialisedOk;
+   }
+   bzFile;
+
+
+/*---------------------------------------------*/
+static Bool myfeof ( FILE* f )
+{
+   Int32 c = fgetc ( f );
+   if (c == EOF) return True;
+   ungetc ( c, f );
+   return False;
+}
+
+
+/*---------------------------------------------------*/
+BZFILE* BZ_API(BZ2_bzWriteOpen) 
+                    ( int*  bzerror,      
+                      FILE* f, 
+                      int   blockSize100k, 
+                      int   verbosity,
+                      int   workFactor )
+{
+   Int32   ret;
+   bzFile* bzf = NULL;
+
+   BZ_SETERR(BZ_OK);
+
+   if (f == NULL ||
+       (blockSize100k < 1 || blockSize100k > 9) ||
+       (workFactor < 0 || workFactor > 250) ||
+       (verbosity < 0 || verbosity > 4))
+      { BZ_SETERR(BZ_PARAM_ERROR); return NULL; };
+
+   if (ferror(f))
+      { BZ_SETERR(BZ_IO_ERROR); return NULL; };
+
+   bzf = malloc ( sizeof(bzFile) );
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_MEM_ERROR); return NULL; };
+
+   BZ_SETERR(BZ_OK);
+   bzf->initialisedOk = False;
+   bzf->bufN          = 0;
+   bzf->handle        = f;
+   bzf->writing       = True;
+   bzf->strm.bzalloc  = NULL;
+   bzf->strm.bzfree   = NULL;
+   bzf->strm.opaque   = NULL;
+
+   if (workFactor == 0) workFactor = 30;
+   ret = BZ2_bzCompressInit ( &(bzf->strm), blockSize100k, 
+                              verbosity, workFactor );
+   if (ret != BZ_OK)
+      { BZ_SETERR(ret); free(bzf); return NULL; };
+
+   bzf->strm.avail_in = 0;
+   bzf->initialisedOk = True;
+   return bzf;   
+}
+
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzWrite)
+             ( int*    bzerror, 
+               BZFILE* b, 
+               void*   buf, 
+               int     len )
+{
+   Int32 n, n2, ret;
+   bzFile* bzf = (bzFile*)b;
+
+   BZ_SETERR(BZ_OK);
+   if (bzf == NULL || buf == NULL || len < 0)
+      { BZ_SETERR(BZ_PARAM_ERROR); return; };
+   if (!(bzf->writing))
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+   if (ferror(bzf->handle))
+      { BZ_SETERR(BZ_IO_ERROR); return; };
+
+   if (len == 0)
+      { BZ_SETERR(BZ_OK); return; };
+
+   bzf->strm.avail_in = len;
+   bzf->strm.next_in  = buf;
+
+   while (True) {
+      bzf->strm.avail_out = BZ_MAX_UNUSED;
+      bzf->strm.next_out = bzf->buf;
+      ret = BZ2_bzCompress ( &(bzf->strm), BZ_RUN );
+      if (ret != BZ_RUN_OK)
+         { BZ_SETERR(ret); return; };
+
+      if (bzf->strm.avail_out < BZ_MAX_UNUSED) {
+         n = BZ_MAX_UNUSED - bzf->strm.avail_out;
+         n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), 
+                       n, bzf->handle );
+         if (n != n2 || ferror(bzf->handle))
+            { BZ_SETERR(BZ_IO_ERROR); return; };
+      }
+
+      if (bzf->strm.avail_in == 0)
+         { BZ_SETERR(BZ_OK); return; };
+   }
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzWriteClose)
+                  ( int*          bzerror, 
+                    BZFILE*       b, 
+                    int           abandon,
+                    unsigned int* nbytes_in,
+                    unsigned int* nbytes_out )
+{
+   BZ2_bzWriteClose64 ( bzerror, b, abandon, 
+                        nbytes_in, NULL, nbytes_out, NULL );
+}
+
+
+void BZ_API(BZ2_bzWriteClose64)
+                  ( int*          bzerror, 
+                    BZFILE*       b, 
+                    int           abandon,
+                    unsigned int* nbytes_in_lo32,
+                    unsigned int* nbytes_in_hi32,
+                    unsigned int* nbytes_out_lo32,
+                    unsigned int* nbytes_out_hi32 )
+{
+   Int32   n, n2, ret;
+   bzFile* bzf = (bzFile*)b;
+
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_OK); return; };
+   if (!(bzf->writing))
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+   if (ferror(bzf->handle))
+      { BZ_SETERR(BZ_IO_ERROR); return; };
+
+   if (nbytes_in_lo32 != NULL) *nbytes_in_lo32 = 0;
+   if (nbytes_in_hi32 != NULL) *nbytes_in_hi32 = 0;
+   if (nbytes_out_lo32 != NULL) *nbytes_out_lo32 = 0;
+   if (nbytes_out_hi32 != NULL) *nbytes_out_hi32 = 0;
+
+   if ((!abandon) && bzf->lastErr == BZ_OK) {
+      while (True) {
+         bzf->strm.avail_out = BZ_MAX_UNUSED;
+         bzf->strm.next_out = bzf->buf;
+         ret = BZ2_bzCompress ( &(bzf->strm), BZ_FINISH );
+         if (ret != BZ_FINISH_OK && ret != BZ_STREAM_END)
+            { BZ_SETERR(ret); return; };
+
+         if (bzf->strm.avail_out < BZ_MAX_UNUSED) {
+            n = BZ_MAX_UNUSED - bzf->strm.avail_out;
+            n2 = fwrite ( (void*)(bzf->buf), sizeof(UChar), 
+                          n, bzf->handle );
+            if (n != n2 || ferror(bzf->handle))
+               { BZ_SETERR(BZ_IO_ERROR); return; };
+         }
+
+         if (ret == BZ_STREAM_END) break;
+      }
+   }
+
+   if ( !abandon && !ferror ( bzf->handle ) ) {
+      fflush ( bzf->handle );
+      if (ferror(bzf->handle))
+         { BZ_SETERR(BZ_IO_ERROR); return; };
+   }
+
+   if (nbytes_in_lo32 != NULL)
+      *nbytes_in_lo32 = bzf->strm.total_in_lo32;
+   if (nbytes_in_hi32 != NULL)
+      *nbytes_in_hi32 = bzf->strm.total_in_hi32;
+   if (nbytes_out_lo32 != NULL)
+      *nbytes_out_lo32 = bzf->strm.total_out_lo32;
+   if (nbytes_out_hi32 != NULL)
+      *nbytes_out_hi32 = bzf->strm.total_out_hi32;
+
+   BZ_SETERR(BZ_OK);
+   BZ2_bzCompressEnd ( &(bzf->strm) );
+   free ( bzf );
+}
+
+
+/*---------------------------------------------------*/
+BZFILE* BZ_API(BZ2_bzReadOpen) 
+                   ( int*  bzerror, 
+                     FILE* f, 
+                     int   verbosity,
+                     int   small,
+                     void* unused,
+                     int   nUnused )
+{
+   bzFile* bzf = NULL;
+   int     ret;
+
+   BZ_SETERR(BZ_OK);
+
+   if (f == NULL || 
+       (small != 0 && small != 1) ||
+       (verbosity < 0 || verbosity > 4) ||
+       (unused == NULL && nUnused != 0) ||
+       (unused != NULL && (nUnused < 0 || nUnused > BZ_MAX_UNUSED)))
+      { BZ_SETERR(BZ_PARAM_ERROR); return NULL; };
+
+   if (ferror(f))
+      { BZ_SETERR(BZ_IO_ERROR); return NULL; };
+
+   bzf = malloc ( sizeof(bzFile) );
+   if (bzf == NULL) 
+      { BZ_SETERR(BZ_MEM_ERROR); return NULL; };
+
+   BZ_SETERR(BZ_OK);
+
+   bzf->initialisedOk = False;
+   bzf->handle        = f;
+   bzf->bufN          = 0;
+   bzf->writing       = False;
+   bzf->strm.bzalloc  = NULL;
+   bzf->strm.bzfree   = NULL;
+   bzf->strm.opaque   = NULL;
+   
+   while (nUnused > 0) {
+      bzf->buf[bzf->bufN] = *((UChar*)(unused)); bzf->bufN++;
+      unused = ((void*)( 1 + ((UChar*)(unused))  ));
+      nUnused--;
+   }
+
+   ret = BZ2_bzDecompressInit ( &(bzf->strm), verbosity, small );
+   if (ret != BZ_OK)
+      { BZ_SETERR(ret); free(bzf); return NULL; };
+
+   bzf->strm.avail_in = bzf->bufN;
+   bzf->strm.next_in  = bzf->buf;
+
+   bzf->initialisedOk = True;
+   return bzf;   
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzReadClose) ( int *bzerror, BZFILE *b )
+{
+   bzFile* bzf = (bzFile*)b;
+
+   BZ_SETERR(BZ_OK);
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_OK); return; };
+
+   if (bzf->writing)
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+
+   if (bzf->initialisedOk)
+      (void)BZ2_bzDecompressEnd ( &(bzf->strm) );
+   free ( bzf );
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzRead) 
+           ( int*    bzerror, 
+             BZFILE* b, 
+             void*   buf, 
+             int     len )
+{
+   Int32   n, ret;
+   bzFile* bzf = (bzFile*)b;
+
+   BZ_SETERR(BZ_OK);
+
+   if (bzf == NULL || buf == NULL || len < 0)
+      { BZ_SETERR(BZ_PARAM_ERROR); return 0; };
+
+   if (bzf->writing)
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return 0; };
+
+   if (len == 0)
+      { BZ_SETERR(BZ_OK); return 0; };
+
+   bzf->strm.avail_out = len;
+   bzf->strm.next_out = buf;
+
+   while (True) {
+
+      if (ferror(bzf->handle)) 
+         { BZ_SETERR(BZ_IO_ERROR); return 0; };
+
+      if (bzf->strm.avail_in == 0 && !myfeof(bzf->handle)) {
+         n = fread ( bzf->buf, sizeof(UChar), 
+                     BZ_MAX_UNUSED, bzf->handle );
+         if (ferror(bzf->handle))
+            { BZ_SETERR(BZ_IO_ERROR); return 0; };
+         bzf->bufN = n;
+         bzf->strm.avail_in = bzf->bufN;
+         bzf->strm.next_in = bzf->buf;
+      }
+
+      ret = BZ2_bzDecompress ( &(bzf->strm) );
+
+      if (ret != BZ_OK && ret != BZ_STREAM_END)
+         { BZ_SETERR(ret); return 0; };
+
+      if (ret == BZ_OK && myfeof(bzf->handle) && 
+          bzf->strm.avail_in == 0 && bzf->strm.avail_out > 0)
+         { BZ_SETERR(BZ_UNEXPECTED_EOF); return 0; };
+
+      if (ret == BZ_STREAM_END)
+         { BZ_SETERR(BZ_STREAM_END);
+           return len - bzf->strm.avail_out; };
+      if (bzf->strm.avail_out == 0)
+         { BZ_SETERR(BZ_OK); return len; };
+      
+   }
+
+   return 0; /*not reached*/
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzReadGetUnused) 
+                     ( int*    bzerror, 
+                       BZFILE* b, 
+                       void**  unused, 
+                       int*    nUnused )
+{
+   bzFile* bzf = (bzFile*)b;
+   if (bzf == NULL)
+      { BZ_SETERR(BZ_PARAM_ERROR); return; };
+   if (bzf->lastErr != BZ_STREAM_END)
+      { BZ_SETERR(BZ_SEQUENCE_ERROR); return; };
+   if (unused == NULL || nUnused == NULL)
+      { BZ_SETERR(BZ_PARAM_ERROR); return; };
+
+   BZ_SETERR(BZ_OK);
+   *nUnused = bzf->strm.avail_in;
+   *unused = bzf->strm.next_in;
+}
+#endif
+
+
+/*---------------------------------------------------*/
+/*--- Misc convenience stuff                      ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzBuffToBuffCompress) 
+                         ( char*         dest, 
+                           unsigned int* destLen,
+                           char*         source, 
+                           unsigned int  sourceLen,
+                           int           blockSize100k, 
+                           int           verbosity, 
+                           int           workFactor )
+{
+   bz_stream strm;
+   int ret;
+
+   if (dest == NULL || destLen == NULL || 
+       source == NULL ||
+       blockSize100k < 1 || blockSize100k > 9 ||
+       verbosity < 0 || verbosity > 4 ||
+       workFactor < 0 || workFactor > 250) 
+      return BZ_PARAM_ERROR;
+
+   if (workFactor == 0) workFactor = 30;
+   strm.bzalloc = NULL;
+   strm.bzfree = NULL;
+   strm.opaque = NULL;
+   ret = BZ2_bzCompressInit ( &strm, blockSize100k, 
+                              verbosity, workFactor );
+   if (ret != BZ_OK) return ret;
+
+   strm.next_in = source;
+   strm.next_out = dest;
+   strm.avail_in = sourceLen;
+   strm.avail_out = *destLen;
+
+   ret = BZ2_bzCompress ( &strm, BZ_FINISH );
+   if (ret == BZ_FINISH_OK) goto output_overflow;
+   if (ret != BZ_STREAM_END) goto errhandler;
+
+   /* normal termination */
+   *destLen -= strm.avail_out;   
+   BZ2_bzCompressEnd ( &strm );
+   return BZ_OK;
+
+   output_overflow:
+   BZ2_bzCompressEnd ( &strm );
+   return BZ_OUTBUFF_FULL;
+
+   errhandler:
+   BZ2_bzCompressEnd ( &strm );
+   return ret;
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzBuffToBuffDecompress) 
+                           ( char*         dest, 
+                             unsigned int* destLen,
+                             char*         source, 
+                             unsigned int  sourceLen,
+                             int           small,
+                             int           verbosity )
+{
+   bz_stream strm;
+   int ret;
+
+   if (dest == NULL || destLen == NULL || 
+       source == NULL ||
+       (small != 0 && small != 1) ||
+       verbosity < 0 || verbosity > 4) 
+          return BZ_PARAM_ERROR;
+
+   strm.bzalloc = NULL;
+   strm.bzfree = NULL;
+   strm.opaque = NULL;
+   ret = BZ2_bzDecompressInit ( &strm, verbosity, small );
+   if (ret != BZ_OK) return ret;
+
+   strm.next_in = source;
+   strm.next_out = dest;
+   strm.avail_in = sourceLen;
+   strm.avail_out = *destLen;
+
+   ret = BZ2_bzDecompress ( &strm );
+   if (ret == BZ_OK) goto output_overflow_or_eof;
+   if (ret != BZ_STREAM_END) goto errhandler;
+
+   /* normal termination */
+   *destLen -= strm.avail_out;
+   BZ2_bzDecompressEnd ( &strm );
+   return BZ_OK;
+
+   output_overflow_or_eof:
+   if (strm.avail_out > 0) {
+      BZ2_bzDecompressEnd ( &strm );
+      return BZ_UNEXPECTED_EOF;
+   } else {
+      BZ2_bzDecompressEnd ( &strm );
+      return BZ_OUTBUFF_FULL;
+   };      
+
+   errhandler:
+   BZ2_bzDecompressEnd ( &strm );
+   return ret; 
+}
+
+
+/*---------------------------------------------------*/
+/*--
+   Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
+   to support better zlib compatibility.
+   This code is not _officially_ part of libbzip2 (yet);
+   I haven't tested it, documented it, or considered the
+   threading-safeness of it.
+   If this code breaks, please contact both Yoshioka and me.
+--*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+/*--
+   return version like "0.9.5d, 4-Sept-1999".
+--*/
+const char * BZ_API(BZ2_bzlibVersion)(void)
+{
+   return BZ_VERSION;
+}
+
+
+#ifndef BZ_NO_STDIO
+/*---------------------------------------------------*/
+
+#if defined(_WIN32) || defined(OS2) || defined(MSDOS)
+#   include <fcntl.h>
+#   include <io.h>
+#   define SET_BINARY_MODE(file) setmode(fileno(file),O_BINARY)
+#else
+#   define SET_BINARY_MODE(file)
+#endif
+static
+BZFILE * bzopen_or_bzdopen
+               ( const char *path,   /* no use when bzdopen */
+                 int fd,             /* no use when bzdopen */
+                 const char *mode,
+                 int open_mode)      /* bzopen: 0, bzdopen:1 */
+{
+   int    bzerr;
+   char   unused[BZ_MAX_UNUSED];
+   int    blockSize100k = 9;
+   int    writing       = 0;
+   char   mode2[10]     = "";
+   FILE   *fp           = NULL;
+   BZFILE *bzfp         = NULL;
+   int    verbosity     = 0;
+   int    workFactor    = 30;
+   int    smallMode     = 0;
+   int    nUnused       = 0; 
+
+   if (mode == NULL) return NULL;
+   while (*mode) {
+      switch (*mode) {
+      case 'r':
+         writing = 0; break;
+      case 'w':
+         writing = 1; break;
+      case 's':
+         smallMode = 1; break;
+      default:
+         if (isdigit((int)(*mode))) {
+            blockSize100k = *mode-BZ_HDR_0;
+         }
+      }
+      mode++;
+   }
+   strcat(mode2, writing ? "w" : "r" );
+   strcat(mode2,"b");   /* binary mode */
+
+   if (open_mode==0) {
+      if (path==NULL || strcmp(path,"")==0) {
+        fp = (writing ? stdout : stdin);
+        SET_BINARY_MODE(fp);
+      } else {
+        fp = fopen(path,mode2);
+      }
+   } else {
+#ifdef BZ_STRICT_ANSI
+      fp = NULL;
+#else
+      fp = fdopen(fd,mode2);
+#endif
+   }
+   if (fp == NULL) return NULL;
+
+   if (writing) {
+      /* Guard against total chaos and anarchy -- JRS */
+      if (blockSize100k < 1) blockSize100k = 1;
+      if (blockSize100k > 9) blockSize100k = 9; 
+      bzfp = BZ2_bzWriteOpen(&bzerr,fp,blockSize100k,
+                             verbosity,workFactor);
+   } else {
+      bzfp = BZ2_bzReadOpen(&bzerr,fp,verbosity,smallMode,
+                            unused,nUnused);
+   }
+   if (bzfp == NULL) {
+      if (fp != stdin && fp != stdout) fclose(fp);
+      return NULL;
+   }
+   return bzfp;
+}
+
+
+/*---------------------------------------------------*/
+/*--
+   open file for read or write.
+      ex) bzopen("file","w9")
+      case path="" or NULL => use stdin or stdout.
+--*/
+BZFILE * BZ_API(BZ2_bzopen)
+               ( const char *path,
+                 const char *mode )
+{
+   return bzopen_or_bzdopen(path,-1,mode,/*bzopen*/0);
+}
+
+
+/*---------------------------------------------------*/
+BZFILE * BZ_API(BZ2_bzdopen)
+               ( int fd,
+                 const char *mode )
+{
+   return bzopen_or_bzdopen(NULL,fd,mode,/*bzdopen*/1);
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzread) (BZFILE* b, void* buf, int len )
+{
+   int bzerr, nread;
+   if (((bzFile*)b)->lastErr == BZ_STREAM_END) return 0;
+   nread = BZ2_bzRead(&bzerr,b,buf,len);
+   if (bzerr == BZ_OK || bzerr == BZ_STREAM_END) {
+      return nread;
+   } else {
+      return -1;
+   }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzwrite) (BZFILE* b, void* buf, int len )
+{
+   int bzerr;
+
+   BZ2_bzWrite(&bzerr,b,buf,len);
+   if(bzerr == BZ_OK){
+      return len;
+   }else{
+      return -1;
+   }
+}
+
+
+/*---------------------------------------------------*/
+int BZ_API(BZ2_bzflush) (BZFILE *b)
+{
+   /* do nothing now... */
+   return 0;
+}
+
+
+/*---------------------------------------------------*/
+void BZ_API(BZ2_bzclose) (BZFILE* b)
+{
+   int bzerr;
+   FILE *fp;
+   
+   if (b==NULL) {return;}
+   fp = ((bzFile *)b)->handle;
+   if(((bzFile*)b)->writing){
+      BZ2_bzWriteClose(&bzerr,b,0,NULL,NULL);
+      if(bzerr != BZ_OK){
+         BZ2_bzWriteClose(NULL,b,1,NULL,NULL);
+      }
+   }else{
+      BZ2_bzReadClose(&bzerr,b);
+   }
+   if(fp!=stdin && fp!=stdout){
+      fclose(fp);
+   }
+}
+
+
+/*---------------------------------------------------*/
+/*--
+   return last error code 
+--*/
+static const char *bzerrorstrings[] = {
+       "OK"
+      ,"SEQUENCE_ERROR"
+      ,"PARAM_ERROR"
+      ,"MEM_ERROR"
+      ,"DATA_ERROR"
+      ,"DATA_ERROR_MAGIC"
+      ,"IO_ERROR"
+      ,"UNEXPECTED_EOF"
+      ,"OUTBUFF_FULL"
+      ,"CONFIG_ERROR"
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+      ,"???"   /* for future */
+};
+
+
+const char * BZ_API(BZ2_bzerror) (BZFILE *b, int *errnum)
+{
+   int err = ((bzFile *)b)->lastErr;
+
+   if(err>0) err = 0;
+   *errnum = err;
+   return bzerrorstrings[err*-1];
+}
+#endif
+
+#endif /* BZ_NO_COMPRESS */
+
+/*-------------------------------------------------------------*/
+/*--- end                                           bzlib.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/usr/src/boot/contrib/bzip2/bzlib.h b/usr/src/boot/contrib/bzip2/bzlib.h
new file mode 100644
index 0000000..8277123
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/bzlib.h
@@ -0,0 +1,282 @@
+
+/*-------------------------------------------------------------*/
+/*--- Public header file for the library.                   ---*/
+/*---                                               bzlib.h ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#ifndef _BZLIB_H
+#define _BZLIB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define BZ_RUN               0
+#define BZ_FLUSH             1
+#define BZ_FINISH            2
+
+#define BZ_OK                0
+#define BZ_RUN_OK            1
+#define BZ_FLUSH_OK          2
+#define BZ_FINISH_OK         3
+#define BZ_STREAM_END        4
+#define BZ_SEQUENCE_ERROR    (-1)
+#define BZ_PARAM_ERROR       (-2)
+#define BZ_MEM_ERROR         (-3)
+#define BZ_DATA_ERROR        (-4)
+#define BZ_DATA_ERROR_MAGIC  (-5)
+#define BZ_IO_ERROR          (-6)
+#define BZ_UNEXPECTED_EOF    (-7)
+#define BZ_OUTBUFF_FULL      (-8)
+#define BZ_CONFIG_ERROR      (-9)
+
+typedef 
+   struct {
+      char *next_in;
+      unsigned int avail_in;
+      unsigned int total_in_lo32;
+      unsigned int total_in_hi32;
+
+      char *next_out;
+      unsigned int avail_out;
+      unsigned int total_out_lo32;
+      unsigned int total_out_hi32;
+
+      void *state;
+
+      void *(*bzalloc)(void *,int,int);
+      void (*bzfree)(void *,void *);
+      void *opaque;
+   } 
+   bz_stream;
+
+
+#ifndef BZ_IMPORT
+#define BZ_EXPORT
+#endif
+
+#ifndef BZ_NO_STDIO
+/* Need a definitition for FILE */
+#include <stdio.h>
+#endif
+
+#ifdef _WIN32
+#   include <windows.h>
+#   ifdef small
+      /* windows.h define small to char */
+#      undef small
+#   endif
+#   ifdef BZ_EXPORT
+#   define BZ_API(func) WINAPI func
+#   define BZ_EXTERN extern
+#   else
+   /* import windows dll dynamically */
+#   define BZ_API(func) (WINAPI * func)
+#   define BZ_EXTERN
+#   endif
+#else
+#   define BZ_API(func) func
+#   define BZ_EXTERN extern
+#endif
+
+
+/*-- Core (low-level) library functions --*/
+
+BZ_EXTERN int BZ_API(BZ2_bzCompressInit) ( 
+      bz_stream* strm, 
+      int        blockSize100k, 
+      int        verbosity, 
+      int        workFactor 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzCompress) ( 
+      bz_stream* strm, 
+      int action 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzCompressEnd) ( 
+      bz_stream* strm 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzDecompressInit) ( 
+      bz_stream *strm, 
+      int       verbosity, 
+      int       small
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzDecompress) ( 
+      bz_stream* strm 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzDecompressEnd) ( 
+      bz_stream *strm 
+   );
+
+
+
+/*-- High(er) level library functions --*/
+
+#ifndef BZ_NO_STDIO
+#define BZ_MAX_UNUSED 5000
+
+typedef void BZFILE;
+
+BZ_EXTERN BZFILE* BZ_API(BZ2_bzReadOpen) ( 
+      int*  bzerror,   
+      FILE* f, 
+      int   verbosity, 
+      int   small,
+      void* unused,    
+      int   nUnused 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzReadClose) ( 
+      int*    bzerror, 
+      BZFILE* b 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzReadGetUnused) ( 
+      int*    bzerror, 
+      BZFILE* b, 
+      void**  unused,  
+      int*    nUnused 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzRead) ( 
+      int*    bzerror, 
+      BZFILE* b, 
+      void*   buf, 
+      int     len 
+   );
+
+BZ_EXTERN BZFILE* BZ_API(BZ2_bzWriteOpen) ( 
+      int*  bzerror,      
+      FILE* f, 
+      int   blockSize100k, 
+      int   verbosity, 
+      int   workFactor 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzWrite) ( 
+      int*    bzerror, 
+      BZFILE* b, 
+      void*   buf, 
+      int     len 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzWriteClose) ( 
+      int*          bzerror, 
+      BZFILE*       b, 
+      int           abandon, 
+      unsigned int* nbytes_in, 
+      unsigned int* nbytes_out 
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzWriteClose64) ( 
+      int*          bzerror, 
+      BZFILE*       b, 
+      int           abandon, 
+      unsigned int* nbytes_in_lo32, 
+      unsigned int* nbytes_in_hi32, 
+      unsigned int* nbytes_out_lo32, 
+      unsigned int* nbytes_out_hi32
+   );
+#endif
+
+
+/*-- Utility functions --*/
+
+BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffCompress) ( 
+      char*         dest, 
+      unsigned int* destLen,
+      char*         source, 
+      unsigned int  sourceLen,
+      int           blockSize100k, 
+      int           verbosity, 
+      int           workFactor 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzBuffToBuffDecompress) ( 
+      char*         dest, 
+      unsigned int* destLen,
+      char*         source, 
+      unsigned int  sourceLen,
+      int           small, 
+      int           verbosity 
+   );
+
+
+/*--
+   Code contributed by Yoshioka Tsuneo (tsuneo@rr.iij4u.or.jp)
+   to support better zlib compatibility.
+   This code is not _officially_ part of libbzip2 (yet);
+   I haven't tested it, documented it, or considered the
+   threading-safeness of it.
+   If this code breaks, please contact both Yoshioka and me.
+--*/
+
+BZ_EXTERN const char * BZ_API(BZ2_bzlibVersion) (
+      void
+   );
+
+#ifndef BZ_NO_STDIO
+BZ_EXTERN BZFILE * BZ_API(BZ2_bzopen) (
+      const char *path,
+      const char *mode
+   );
+
+BZ_EXTERN BZFILE * BZ_API(BZ2_bzdopen) (
+      int        fd,
+      const char *mode
+   );
+         
+BZ_EXTERN int BZ_API(BZ2_bzread) (
+      BZFILE* b, 
+      void* buf, 
+      int len 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzwrite) (
+      BZFILE* b, 
+      void*   buf, 
+      int     len 
+   );
+
+BZ_EXTERN int BZ_API(BZ2_bzflush) (
+      BZFILE* b
+   );
+
+BZ_EXTERN void BZ_API(BZ2_bzclose) (
+      BZFILE* b
+   );
+
+BZ_EXTERN const char * BZ_API(BZ2_bzerror) (
+      BZFILE *b, 
+      int    *errnum
+   );
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+/*-------------------------------------------------------------*/
+/*--- end                                           bzlib.h ---*/
+/*-------------------------------------------------------------*/
diff --git a/usr/src/boot/contrib/bzip2/bzlib_private.h b/usr/src/boot/contrib/bzip2/bzlib_private.h
new file mode 100644
index 0000000..5d0217f
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/bzlib_private.h
@@ -0,0 +1,509 @@
+
+/*-------------------------------------------------------------*/
+/*--- Private header file for the library.                  ---*/
+/*---                                       bzlib_private.h ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#ifndef _BZLIB_PRIVATE_H
+#define _BZLIB_PRIVATE_H
+
+#include <stdlib.h>
+
+#ifndef BZ_NO_STDIO
+#include <stdio.h>
+#include <ctype.h>
+#include <string.h>
+#endif
+
+#include "bzlib.h"
+
+
+
+/*-- General stuff. --*/
+
+#define BZ_VERSION  "1.0.6, 6-Sept-2010"
+
+typedef char            Char;
+typedef unsigned char   Bool;
+typedef unsigned char   UChar;
+typedef int             Int32;
+typedef unsigned int    UInt32;
+typedef short           Int16;
+typedef unsigned short  UInt16;
+
+#define True  ((Bool)1)
+#define False ((Bool)0)
+
+#ifndef __GNUC__
+#define __inline__  /* */
+#endif 
+
+#ifndef BZ_NO_STDIO
+
+extern void BZ2_bz__AssertH__fail ( int errcode );
+#define AssertH(cond,errcode) \
+   { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
+
+#if BZ_DEBUG
+#define AssertD(cond,msg) \
+   { if (!(cond)) {       \
+      fprintf ( stderr,   \
+        "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\
+      exit(1); \
+   }}
+#else
+#define AssertD(cond,msg) /* */
+#endif
+
+#define VPrintf0(zf) \
+   fprintf(stderr,zf)
+#define VPrintf1(zf,za1) \
+   fprintf(stderr,zf,za1)
+#define VPrintf2(zf,za1,za2) \
+   fprintf(stderr,zf,za1,za2)
+#define VPrintf3(zf,za1,za2,za3) \
+   fprintf(stderr,zf,za1,za2,za3)
+#define VPrintf4(zf,za1,za2,za3,za4) \
+   fprintf(stderr,zf,za1,za2,za3,za4)
+#define VPrintf5(zf,za1,za2,za3,za4,za5) \
+   fprintf(stderr,zf,za1,za2,za3,za4,za5)
+
+#else
+
+extern void bz_internal_error ( int errcode );
+#define AssertH(cond,errcode) \
+   { if (!(cond)) bz_internal_error ( errcode ); }
+#define AssertD(cond,msg)                do { } while (0)
+#define VPrintf0(zf)                     do { } while (0)
+#define VPrintf1(zf,za1)                 do { } while (0)
+#define VPrintf2(zf,za1,za2)             do { } while (0)
+#define VPrintf3(zf,za1,za2,za3)         do { } while (0)
+#define VPrintf4(zf,za1,za2,za3,za4)     do { } while (0)
+#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0)
+
+#endif
+
+
+#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1)
+#define BZFREE(ppp)  (strm->bzfree)(strm->opaque,(ppp))
+
+
+/*-- Header bytes. --*/
+
+#define BZ_HDR_B 0x42   /* 'B' */
+#define BZ_HDR_Z 0x5a   /* 'Z' */
+#define BZ_HDR_h 0x68   /* 'h' */
+#define BZ_HDR_0 0x30   /* '0' */
+  
+/*-- Constants for the back end. --*/
+
+#define BZ_MAX_ALPHA_SIZE 258
+#define BZ_MAX_CODE_LEN    23
+
+#define BZ_RUNA 0
+#define BZ_RUNB 1
+
+#define BZ_N_GROUPS 6
+#define BZ_G_SIZE   50
+#define BZ_N_ITERS  4
+
+#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE))
+
+
+
+/*-- Stuff for randomising repetitive blocks. --*/
+
+extern Int32 BZ2_rNums[512];
+
+#define BZ_RAND_DECLS                          \
+   Int32 rNToGo;                               \
+   Int32 rTPos                                 \
+
+#define BZ_RAND_INIT_MASK                      \
+   s->rNToGo = 0;                              \
+   s->rTPos  = 0                               \
+
+#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0)
+
+#define BZ_RAND_UPD_MASK                       \
+   if (s->rNToGo == 0) {                       \
+      s->rNToGo = BZ2_rNums[s->rTPos];         \
+      s->rTPos++;                              \
+      if (s->rTPos == 512) s->rTPos = 0;       \
+   }                                           \
+   s->rNToGo--;
+
+
+
+/*-- Stuff for doing CRCs. --*/
+
+extern UInt32 BZ2_crc32Table[256];
+
+#define BZ_INITIALISE_CRC(crcVar)              \
+{                                              \
+   crcVar = 0xffffffffL;                       \
+}
+
+#define BZ_FINALISE_CRC(crcVar)                \
+{                                              \
+   crcVar = ~(crcVar);                         \
+}
+
+#define BZ_UPDATE_CRC(crcVar,cha)              \
+{                                              \
+   crcVar = (crcVar << 8) ^                    \
+            BZ2_crc32Table[(crcVar >> 24) ^    \
+                           ((UChar)cha)];      \
+}
+
+
+
+/*-- States and modes for compression. --*/
+
+#define BZ_M_IDLE      1
+#define BZ_M_RUNNING   2
+#define BZ_M_FLUSHING  3
+#define BZ_M_FINISHING 4
+
+#define BZ_S_OUTPUT    1
+#define BZ_S_INPUT     2
+
+#define BZ_N_RADIX 2
+#define BZ_N_QSORT 12
+#define BZ_N_SHELL 18
+#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2)
+
+
+
+
+/*-- Structure holding all the compression-side stuff. --*/
+
+typedef
+   struct {
+      /* pointer back to the struct bz_stream */
+      bz_stream* strm;
+
+      /* mode this stream is in, and whether inputting */
+      /* or outputting data */
+      Int32    mode;
+      Int32    state;
+
+      /* remembers avail_in when flush/finish requested */
+      UInt32   avail_in_expect;
+
+      /* for doing the block sorting */
+      UInt32*  arr1;
+      UInt32*  arr2;
+      UInt32*  ftab;
+      Int32    origPtr;
+
+      /* aliases for arr1 and arr2 */
+      UInt32*  ptr;
+      UChar*   block;
+      UInt16*  mtfv;
+      UChar*   zbits;
+
+      /* for deciding when to use the fallback sorting algorithm */
+      Int32    workFactor;
+
+      /* run-length-encoding of the input */
+      UInt32   state_in_ch;
+      Int32    state_in_len;
+      BZ_RAND_DECLS;
+
+      /* input and output limits and current posns */
+      Int32    nblock;
+      Int32    nblockMAX;
+      Int32    numZ;
+      Int32    state_out_pos;
+
+      /* map of bytes used in block */
+      Int32    nInUse;
+      Bool     inUse[256];
+      UChar    unseqToSeq[256];
+
+      /* the buffer for bit stream creation */
+      UInt32   bsBuff;
+      Int32    bsLive;
+
+      /* block and combined CRCs */
+      UInt32   blockCRC;
+      UInt32   combinedCRC;
+
+      /* misc administratium */
+      Int32    verbosity;
+      Int32    blockNo;
+      Int32    blockSize100k;
+
+      /* stuff for coding the MTF values */
+      Int32    nMTF;
+      Int32    mtfFreq    [BZ_MAX_ALPHA_SIZE];
+      UChar    selector   [BZ_MAX_SELECTORS];
+      UChar    selectorMtf[BZ_MAX_SELECTORS];
+
+      UChar    len     [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    code    [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    rfreq   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      /* second dimension: only 3 needed; 4 makes index calculations faster */
+      UInt32   len_pack[BZ_MAX_ALPHA_SIZE][4];
+
+   }
+   EState;
+
+
+
+/*-- externs for compression. --*/
+
+extern void 
+BZ2_blockSort ( EState* );
+
+extern void 
+BZ2_compressBlock ( EState*, Bool );
+
+extern void 
+BZ2_bsInitWrite ( EState* );
+
+extern void 
+BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 );
+
+extern void 
+BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
+
+
+
+/*-- states for decompression. --*/
+
+#define BZ_X_IDLE        1
+#define BZ_X_OUTPUT      2
+
+#define BZ_X_MAGIC_1     10
+#define BZ_X_MAGIC_2     11
+#define BZ_X_MAGIC_3     12
+#define BZ_X_MAGIC_4     13
+#define BZ_X_BLKHDR_1    14
+#define BZ_X_BLKHDR_2    15
+#define BZ_X_BLKHDR_3    16
+#define BZ_X_BLKHDR_4    17
+#define BZ_X_BLKHDR_5    18
+#define BZ_X_BLKHDR_6    19
+#define BZ_X_BCRC_1      20
+#define BZ_X_BCRC_2      21
+#define BZ_X_BCRC_3      22
+#define BZ_X_BCRC_4      23
+#define BZ_X_RANDBIT     24
+#define BZ_X_ORIGPTR_1   25
+#define BZ_X_ORIGPTR_2   26
+#define BZ_X_ORIGPTR_3   27
+#define BZ_X_MAPPING_1   28
+#define BZ_X_MAPPING_2   29
+#define BZ_X_SELECTOR_1  30
+#define BZ_X_SELECTOR_2  31
+#define BZ_X_SELECTOR_3  32
+#define BZ_X_CODING_1    33
+#define BZ_X_CODING_2    34
+#define BZ_X_CODING_3    35
+#define BZ_X_MTF_1       36
+#define BZ_X_MTF_2       37
+#define BZ_X_MTF_3       38
+#define BZ_X_MTF_4       39
+#define BZ_X_MTF_5       40
+#define BZ_X_MTF_6       41
+#define BZ_X_ENDHDR_2    42
+#define BZ_X_ENDHDR_3    43
+#define BZ_X_ENDHDR_4    44
+#define BZ_X_ENDHDR_5    45
+#define BZ_X_ENDHDR_6    46
+#define BZ_X_CCRC_1      47
+#define BZ_X_CCRC_2      48
+#define BZ_X_CCRC_3      49
+#define BZ_X_CCRC_4      50
+
+
+
+/*-- Constants for the fast MTF decoder. --*/
+
+#define MTFA_SIZE 4096
+#define MTFL_SIZE 16
+
+
+
+/*-- Structure holding all the decompression-side stuff. --*/
+
+typedef
+   struct {
+      /* pointer back to the struct bz_stream */
+      bz_stream* strm;
+
+      /* state indicator for this stream */
+      Int32    state;
+
+      /* for doing the final run-length decoding */
+      UChar    state_out_ch;
+      Int32    state_out_len;
+      Bool     blockRandomised;
+      BZ_RAND_DECLS;
+
+      /* the buffer for bit stream reading */
+      UInt32   bsBuff;
+      Int32    bsLive;
+
+      /* misc administratium */
+      Int32    blockSize100k;
+      Bool     smallDecompress;
+      Int32    currBlockNo;
+      Int32    verbosity;
+
+      /* for undoing the Burrows-Wheeler transform */
+      Int32    origPtr;
+      UInt32   tPos;
+      Int32    k0;
+      Int32    unzftab[256];
+      Int32    nblock_used;
+      Int32    cftab[257];
+      Int32    cftabCopy[257];
+
+      /* for undoing the Burrows-Wheeler transform (FAST) */
+      UInt32   *tt;
+
+      /* for undoing the Burrows-Wheeler transform (SMALL) */
+      UInt16   *ll16;
+      UChar    *ll4;
+
+      /* stored and calculated CRCs */
+      UInt32   storedBlockCRC;
+      UInt32   storedCombinedCRC;
+      UInt32   calculatedBlockCRC;
+      UInt32   calculatedCombinedCRC;
+
+      /* map of bytes used in block */
+      Int32    nInUse;
+      Bool     inUse[256];
+      Bool     inUse16[16];
+      UChar    seqToUnseq[256];
+
+      /* for decoding the MTF values */
+      UChar    mtfa   [MTFA_SIZE];
+      Int32    mtfbase[256 / MTFL_SIZE];
+      UChar    selector   [BZ_MAX_SELECTORS];
+      UChar    selectorMtf[BZ_MAX_SELECTORS];
+      UChar    len  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+
+      Int32    limit  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    base   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    perm   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+      Int32    minLens[BZ_N_GROUPS];
+
+      /* save area for scalars in the main decompress code */
+      Int32    save_i;
+      Int32    save_j;
+      Int32    save_t;
+      Int32    save_alphaSize;
+      Int32    save_nGroups;
+      Int32    save_nSelectors;
+      Int32    save_EOB;
+      Int32    save_groupNo;
+      Int32    save_groupPos;
+      Int32    save_nextSym;
+      Int32    save_nblockMAX;
+      Int32    save_nblock;
+      Int32    save_es;
+      Int32    save_N;
+      Int32    save_curr;
+      Int32    save_zt;
+      Int32    save_zn; 
+      Int32    save_zvec;
+      Int32    save_zj;
+      Int32    save_gSel;
+      Int32    save_gMinlen;
+      Int32*   save_gLimit;
+      Int32*   save_gBase;
+      Int32*   save_gPerm;
+
+   }
+   DState;
+
+
+
+/*-- Macros for decompression. --*/
+
+#define BZ_GET_FAST(cccc)                     \
+    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+    if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
+    s->tPos = s->tt[s->tPos];                 \
+    cccc = (UChar)(s->tPos & 0xff);           \
+    s->tPos >>= 8;
+
+#define BZ_GET_FAST_C(cccc)                   \
+    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+    if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \
+    c_tPos = c_tt[c_tPos];                    \
+    cccc = (UChar)(c_tPos & 0xff);            \
+    c_tPos >>= 8;
+
+#define SET_LL4(i,n)                                          \
+   { if (((i) & 0x1) == 0)                                    \
+        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else    \
+        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4);  \
+   }
+
+#define GET_LL4(i)                             \
+   ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF)
+
+#define SET_LL(i,n)                          \
+   { s->ll16[i] = (UInt16)(n & 0x0000ffff);  \
+     SET_LL4(i, n >> 16);                    \
+   }
+
+#define GET_LL(i) \
+   (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
+
+#define BZ_GET_SMALL(cccc)                            \
+    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
+    if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
+    cccc = BZ2_indexIntoF ( s->tPos, s->cftab );    \
+    s->tPos = GET_LL(s->tPos);
+
+
+/*-- externs for decompression. --*/
+
+extern Int32 
+BZ2_indexIntoF ( Int32, Int32* );
+
+extern Int32 
+BZ2_decompress ( DState* );
+
+extern void 
+BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*,
+                           Int32,  Int32, Int32 );
+
+
+#endif
+
+
+/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/
+
+#ifdef BZ_NO_STDIO
+#ifndef NULL
+#define NULL 0
+#endif
+#endif
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                   bzlib_private.h ---*/
+/*-------------------------------------------------------------*/
diff --git a/usr/src/boot/contrib/bzip2/compress.c b/usr/src/boot/contrib/bzip2/compress.c
new file mode 100644
index 0000000..caf7696
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/compress.c
@@ -0,0 +1,672 @@
+
+/*-------------------------------------------------------------*/
+/*--- Compression machinery (not incl block sorting)        ---*/
+/*---                                            compress.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+/* CHANGES
+    0.9.0    -- original version.
+    0.9.0a/b -- no changes in this file.
+    0.9.0c   -- changed setting of nGroups in sendMTFValues() 
+                so as to do a bit better on small files
+*/
+
+#include "bzlib_private.h"
+
+
+/*---------------------------------------------------*/
+/*--- Bit stream I/O                              ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+void BZ2_bsInitWrite ( EState* s )
+{
+   s->bsLive = 0;
+   s->bsBuff = 0;
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsFinishWrite ( EState* s )
+{
+   while (s->bsLive > 0) {
+      s->zbits[s->numZ] = (UChar)(s->bsBuff >> 24);
+      s->numZ++;
+      s->bsBuff <<= 8;
+      s->bsLive -= 8;
+   }
+}
+
+
+/*---------------------------------------------------*/
+#define bsNEEDW(nz)                           \
+{                                             \
+   while (s->bsLive >= 8) {                   \
+      s->zbits[s->numZ]                       \
+         = (UChar)(s->bsBuff >> 24);          \
+      s->numZ++;                              \
+      s->bsBuff <<= 8;                        \
+      s->bsLive -= 8;                         \
+   }                                          \
+}
+
+
+/*---------------------------------------------------*/
+static
+__inline__
+void bsW ( EState* s, Int32 n, UInt32 v )
+{
+   bsNEEDW ( n );
+   s->bsBuff |= (v << (32 - s->bsLive - n));
+   s->bsLive += n;
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsPutUInt32 ( EState* s, UInt32 u )
+{
+   bsW ( s, 8, (u >> 24) & 0xffL );
+   bsW ( s, 8, (u >> 16) & 0xffL );
+   bsW ( s, 8, (u >>  8) & 0xffL );
+   bsW ( s, 8,  u        & 0xffL );
+}
+
+
+/*---------------------------------------------------*/
+static
+void bsPutUChar ( EState* s, UChar c )
+{
+   bsW( s, 8, (UInt32)c );
+}
+
+
+/*---------------------------------------------------*/
+/*--- The back end proper                         ---*/
+/*---------------------------------------------------*/
+
+/*---------------------------------------------------*/
+static
+void makeMaps_e ( EState* s )
+{
+   Int32 i;
+   s->nInUse = 0;
+   for (i = 0; i < 256; i++)
+      if (s->inUse[i]) {
+         s->unseqToSeq[i] = s->nInUse;
+         s->nInUse++;
+      }
+}
+
+
+/*---------------------------------------------------*/
+static
+void generateMTFValues ( EState* s )
+{
+   UChar   yy[256];
+   Int32   i, j;
+   Int32   zPend;
+   Int32   wr;
+   Int32   EOB;
+
+   /* 
+      After sorting (eg, here),
+         s->arr1 [ 0 .. s->nblock-1 ] holds sorted order,
+         and
+         ((UChar*)s->arr2) [ 0 .. s->nblock-1 ] 
+         holds the original block data.
+
+      The first thing to do is generate the MTF values,
+      and put them in
+         ((UInt16*)s->arr1) [ 0 .. s->nblock-1 ].
+      Because there are strictly fewer or equal MTF values
+      than block values, ptr values in this area are overwritten
+      with MTF values only when they are no longer needed.
+
+      The final compressed bitstream is generated into the
+      area starting at
+         (UChar*) (&((UChar*)s->arr2)[s->nblock])
+
+      These storage aliases are set up in bzCompressInit(),
+      except for the last one, which is arranged in 
+      compressBlock().
+   */
+   UInt32* ptr   = s->ptr;
+   UChar* block  = s->block;
+   UInt16* mtfv  = s->mtfv;
+
+   makeMaps_e ( s );
+   EOB = s->nInUse+1;
+
+   for (i = 0; i <= EOB; i++) s->mtfFreq[i] = 0;
+
+   wr = 0;
+   zPend = 0;
+   for (i = 0; i < s->nInUse; i++) yy[i] = (UChar) i;
+
+   for (i = 0; i < s->nblock; i++) {
+      UChar ll_i;
+      AssertD ( wr <= i, "generateMTFValues(1)" );
+      j = ptr[i]-1; if (j < 0) j += s->nblock;
+      ll_i = s->unseqToSeq[block[j]];
+      AssertD ( ll_i < s->nInUse, "generateMTFValues(2a)" );
+
+      if (yy[0] == ll_i) { 
+         zPend++;
+      } else {
+
+         if (zPend > 0) {
+            zPend--;
+            while (True) {
+               if (zPend & 1) {
+                  mtfv[wr] = BZ_RUNB; wr++; 
+                  s->mtfFreq[BZ_RUNB]++; 
+               } else {
+                  mtfv[wr] = BZ_RUNA; wr++; 
+                  s->mtfFreq[BZ_RUNA]++; 
+               }
+               if (zPend < 2) break;
+               zPend = (zPend - 2) / 2;
+            };
+            zPend = 0;
+         }
+         {
+            register UChar  rtmp;
+            register UChar* ryy_j;
+            register UChar  rll_i;
+            rtmp  = yy[1];
+            yy[1] = yy[0];
+            ryy_j = &(yy[1]);
+            rll_i = ll_i;
+            while ( rll_i != rtmp ) {
+               register UChar rtmp2;
+               ryy_j++;
+               rtmp2  = rtmp;
+               rtmp   = *ryy_j;
+               *ryy_j = rtmp2;
+            };
+            yy[0] = rtmp;
+            j = ryy_j - &(yy[0]);
+            mtfv[wr] = j+1; wr++; s->mtfFreq[j+1]++;
+         }
+
+      }
+   }
+
+   if (zPend > 0) {
+      zPend--;
+      while (True) {
+         if (zPend & 1) {
+            mtfv[wr] = BZ_RUNB; wr++; 
+            s->mtfFreq[BZ_RUNB]++; 
+         } else {
+            mtfv[wr] = BZ_RUNA; wr++; 
+            s->mtfFreq[BZ_RUNA]++; 
+         }
+         if (zPend < 2) break;
+         zPend = (zPend - 2) / 2;
+      };
+      zPend = 0;
+   }
+
+   mtfv[wr] = EOB; wr++; s->mtfFreq[EOB]++;
+
+   s->nMTF = wr;
+}
+
+
+/*---------------------------------------------------*/
+#define BZ_LESSER_ICOST  0
+#define BZ_GREATER_ICOST 15
+
+static
+void sendMTFValues ( EState* s )
+{
+   Int32 v, t, i, j, gs, ge, totc, bt, bc, iter;
+   Int32 nSelectors, alphaSize, minLen, maxLen, selCtr;
+   Int32 nGroups, nBytes;
+
+   /*--
+   UChar  len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+   is a global since the decoder also needs it.
+
+   Int32  code[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+   Int32  rfreq[BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
+   are also globals only used in this proc.
+   Made global to keep stack frame size small.
+   --*/
+
+
+   UInt16 cost[BZ_N_GROUPS];
+   Int32  fave[BZ_N_GROUPS];
+
+   UInt16* mtfv = s->mtfv;
+
+   if (s->verbosity >= 3)
+      VPrintf3( "      %d in block, %d after MTF & 1-2 coding, "
+                "%d+2 syms in use\n", 
+                s->nblock, s->nMTF, s->nInUse );
+
+   alphaSize = s->nInUse+2;
+   for (t = 0; t < BZ_N_GROUPS; t++)
+      for (v = 0; v < alphaSize; v++)
+         s->len[t][v] = BZ_GREATER_ICOST;
+
+   /*--- Decide how many coding tables to use ---*/
+   AssertH ( s->nMTF > 0, 3001 );
+   if (s->nMTF < 200)  nGroups = 2; else
+   if (s->nMTF < 600)  nGroups = 3; else
+   if (s->nMTF < 1200) nGroups = 4; else
+   if (s->nMTF < 2400) nGroups = 5; else
+                       nGroups = 6;
+
+   /*--- Generate an initial set of coding tables ---*/
+   { 
+      Int32 nPart, remF, tFreq, aFreq;
+
+      nPart = nGroups;
+      remF  = s->nMTF;
+      gs = 0;
+      while (nPart > 0) {
+         tFreq = remF / nPart;
+         ge = gs-1;
+         aFreq = 0;
+         while (aFreq < tFreq && ge < alphaSize-1) {
+            ge++;
+            aFreq += s->mtfFreq[ge];
+         }
+
+         if (ge > gs 
+             && nPart != nGroups && nPart != 1 
+             && ((nGroups-nPart) % 2 == 1)) {
+            aFreq -= s->mtfFreq[ge];
+            ge--;
+         }
+
+         if (s->verbosity >= 3)
+            VPrintf5( "      initial group %d, [%d .. %d], "
+                      "has %d syms (%4.1f%%)\n",
+                      nPart, gs, ge, aFreq, 
+                      (100.0 * (float)aFreq) / (float)(s->nMTF) );
+ 
+         for (v = 0; v < alphaSize; v++)
+            if (v >= gs && v <= ge) 
+               s->len[nPart-1][v] = BZ_LESSER_ICOST; else
+               s->len[nPart-1][v] = BZ_GREATER_ICOST;
+ 
+         nPart--;
+         gs = ge+1;
+         remF -= aFreq;
+      }
+   }
+
+   /*--- 
+      Iterate up to BZ_N_ITERS times to improve the tables.
+   ---*/
+   for (iter = 0; iter < BZ_N_ITERS; iter++) {
+
+      for (t = 0; t < nGroups; t++) fave[t] = 0;
+
+      for (t = 0; t < nGroups; t++)
+         for (v = 0; v < alphaSize; v++)
+            s->rfreq[t][v] = 0;
+
+      /*---
+        Set up an auxiliary length table which is used to fast-track
+	the common case (nGroups == 6). 
+      ---*/
+      if (nGroups == 6) {
+         for (v = 0; v < alphaSize; v++) {
+            s->len_pack[v][0] = (s->len[1][v] << 16) | s->len[0][v];
+            s->len_pack[v][1] = (s->len[3][v] << 16) | s->len[2][v];
+            s->len_pack[v][2] = (s->len[5][v] << 16) | s->len[4][v];
+	 }
+      }
+
+      nSelectors = 0;
+      totc = 0;
+      gs = 0;
+      while (True) {
+
+         /*--- Set group start & end marks. --*/
+         if (gs >= s->nMTF) break;
+         ge = gs + BZ_G_SIZE - 1; 
+         if (ge >= s->nMTF) ge = s->nMTF-1;
+
+         /*-- 
+            Calculate the cost of this group as coded
+            by each of the coding tables.
+         --*/
+         for (t = 0; t < nGroups; t++) cost[t] = 0;
+
+         if (nGroups == 6 && 50 == ge-gs+1) {
+            /*--- fast track the common case ---*/
+            register UInt32 cost01, cost23, cost45;
+            register UInt16 icv;
+            cost01 = cost23 = cost45 = 0;
+
+#           define BZ_ITER(nn)                \
+               icv = mtfv[gs+(nn)];           \
+               cost01 += s->len_pack[icv][0]; \
+               cost23 += s->len_pack[icv][1]; \
+               cost45 += s->len_pack[icv][2]; \
+
+            BZ_ITER(0);  BZ_ITER(1);  BZ_ITER(2);  BZ_ITER(3);  BZ_ITER(4);
+            BZ_ITER(5);  BZ_ITER(6);  BZ_ITER(7);  BZ_ITER(8);  BZ_ITER(9);
+            BZ_ITER(10); BZ_ITER(11); BZ_ITER(12); BZ_ITER(13); BZ_ITER(14);
+            BZ_ITER(15); BZ_ITER(16); BZ_ITER(17); BZ_ITER(18); BZ_ITER(19);
+            BZ_ITER(20); BZ_ITER(21); BZ_ITER(22); BZ_ITER(23); BZ_ITER(24);
+            BZ_ITER(25); BZ_ITER(26); BZ_ITER(27); BZ_ITER(28); BZ_ITER(29);
+            BZ_ITER(30); BZ_ITER(31); BZ_ITER(32); BZ_ITER(33); BZ_ITER(34);
+            BZ_ITER(35); BZ_ITER(36); BZ_ITER(37); BZ_ITER(38); BZ_ITER(39);
+            BZ_ITER(40); BZ_ITER(41); BZ_ITER(42); BZ_ITER(43); BZ_ITER(44);
+            BZ_ITER(45); BZ_ITER(46); BZ_ITER(47); BZ_ITER(48); BZ_ITER(49);
+
+#           undef BZ_ITER
+
+            cost[0] = cost01 & 0xffff; cost[1] = cost01 >> 16;
+            cost[2] = cost23 & 0xffff; cost[3] = cost23 >> 16;
+            cost[4] = cost45 & 0xffff; cost[5] = cost45 >> 16;
+
+         } else {
+	    /*--- slow version which correctly handles all situations ---*/
+            for (i = gs; i <= ge; i++) { 
+               UInt16 icv = mtfv[i];
+               for (t = 0; t < nGroups; t++) cost[t] += s->len[t][icv];
+            }
+         }
+ 
+         /*-- 
+            Find the coding table which is best for this group,
+            and record its identity in the selector table.
+         --*/
+         bc = 999999999; bt = -1;
+         for (t = 0; t < nGroups; t++)
+            if (cost[t] < bc) { bc = cost[t]; bt = t; };
+         totc += bc;
+         fave[bt]++;
+         s->selector[nSelectors] = bt;
+         nSelectors++;
+
+         /*-- 
+            Increment the symbol frequencies for the selected table.
+          --*/
+         if (nGroups == 6 && 50 == ge-gs+1) {
+            /*--- fast track the common case ---*/
+
+#           define BZ_ITUR(nn) s->rfreq[bt][ mtfv[gs+(nn)] ]++
+
+            BZ_ITUR(0);  BZ_ITUR(1);  BZ_ITUR(2);  BZ_ITUR(3);  BZ_ITUR(4);
+            BZ_ITUR(5);  BZ_ITUR(6);  BZ_ITUR(7);  BZ_ITUR(8);  BZ_ITUR(9);
+            BZ_ITUR(10); BZ_ITUR(11); BZ_ITUR(12); BZ_ITUR(13); BZ_ITUR(14);
+            BZ_ITUR(15); BZ_ITUR(16); BZ_ITUR(17); BZ_ITUR(18); BZ_ITUR(19);
+            BZ_ITUR(20); BZ_ITUR(21); BZ_ITUR(22); BZ_ITUR(23); BZ_ITUR(24);
+            BZ_ITUR(25); BZ_ITUR(26); BZ_ITUR(27); BZ_ITUR(28); BZ_ITUR(29);
+            BZ_ITUR(30); BZ_ITUR(31); BZ_ITUR(32); BZ_ITUR(33); BZ_ITUR(34);
+            BZ_ITUR(35); BZ_ITUR(36); BZ_ITUR(37); BZ_ITUR(38); BZ_ITUR(39);
+            BZ_ITUR(40); BZ_ITUR(41); BZ_ITUR(42); BZ_ITUR(43); BZ_ITUR(44);
+            BZ_ITUR(45); BZ_ITUR(46); BZ_ITUR(47); BZ_ITUR(48); BZ_ITUR(49);
+
+#           undef BZ_ITUR
+
+         } else {
+	    /*--- slow version which correctly handles all situations ---*/
+            for (i = gs; i <= ge; i++)
+               s->rfreq[bt][ mtfv[i] ]++;
+         }
+
+         gs = ge+1;
+      }
+      if (s->verbosity >= 3) {
+         VPrintf2 ( "      pass %d: size is %d, grp uses are ", 
+                   iter+1, totc/8 );
+         for (t = 0; t < nGroups; t++)
+            VPrintf1 ( "%d ", fave[t] );
+         VPrintf0 ( "\n" );
+      }
+
+      /*--
+        Recompute the tables based on the accumulated frequencies.
+      --*/
+      /* maxLen was changed from 20 to 17 in bzip2-1.0.3.  See 
+         comment in huffman.c for details. */
+      for (t = 0; t < nGroups; t++)
+         BZ2_hbMakeCodeLengths ( &(s->len[t][0]), &(s->rfreq[t][0]), 
+                                 alphaSize, 17 /*20*/ );
+   }
+
+
+   AssertH( nGroups < 8, 3002 );
+   AssertH( nSelectors < 32768 &&
+            nSelectors <= (2 + (900000 / BZ_G_SIZE)),
+            3003 );
+
+
+   /*--- Compute MTF values for the selectors. ---*/
+   {
+      UChar pos[BZ_N_GROUPS], ll_i, tmp2, tmp;
+      for (i = 0; i < nGroups; i++) pos[i] = i;
+      for (i = 0; i < nSelectors; i++) {
+         ll_i = s->selector[i];
+         j = 0;
+         tmp = pos[j];
+         while ( ll_i != tmp ) {
+            j++;
+            tmp2 = tmp;
+            tmp = pos[j];
+            pos[j] = tmp2;
+         };
+         pos[0] = tmp;
+         s->selectorMtf[i] = j;
+      }
+   };
+
+   /*--- Assign actual codes for the tables. --*/
+   for (t = 0; t < nGroups; t++) {
+      minLen = 32;
+      maxLen = 0;
+      for (i = 0; i < alphaSize; i++) {
+         if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
+         if (s->len[t][i] < minLen) minLen = s->len[t][i];
+      }
+      AssertH ( !(maxLen > 17 /*20*/ ), 3004 );
+      AssertH ( !(minLen < 1),  3005 );
+      BZ2_hbAssignCodes ( &(s->code[t][0]), &(s->len[t][0]), 
+                          minLen, maxLen, alphaSize );
+   }
+
+   /*--- Transmit the mapping table. ---*/
+   { 
+      Bool inUse16[16];
+      for (i = 0; i < 16; i++) {
+          inUse16[i] = False;
+          for (j = 0; j < 16; j++)
+             if (s->inUse[i * 16 + j]) inUse16[i] = True;
+      }
+     
+      nBytes = s->numZ;
+      for (i = 0; i < 16; i++)
+         if (inUse16[i]) bsW(s,1,1); else bsW(s,1,0);
+
+      for (i = 0; i < 16; i++)
+         if (inUse16[i])
+            for (j = 0; j < 16; j++) {
+               if (s->inUse[i * 16 + j]) bsW(s,1,1); else bsW(s,1,0);
+            }
+
+      if (s->verbosity >= 3) 
+         VPrintf1( "      bytes: mapping %d, ", s->numZ-nBytes );
+   }
+
+   /*--- Now the selectors. ---*/
+   nBytes = s->numZ;
+   bsW ( s, 3, nGroups );
+   bsW ( s, 15, nSelectors );
+   for (i = 0; i < nSelectors; i++) { 
+      for (j = 0; j < s->selectorMtf[i]; j++) bsW(s,1,1);
+      bsW(s,1,0);
+   }
+   if (s->verbosity >= 3)
+      VPrintf1( "selectors %d, ", s->numZ-nBytes );
+
+   /*--- Now the coding tables. ---*/
+   nBytes = s->numZ;
+
+   for (t = 0; t < nGroups; t++) {
+      Int32 curr = s->len[t][0];
+      bsW ( s, 5, curr );
+      for (i = 0; i < alphaSize; i++) {
+         while (curr < s->len[t][i]) { bsW(s,2,2); curr++; /* 10 */ };
+         while (curr > s->len[t][i]) { bsW(s,2,3); curr--; /* 11 */ };
+         bsW ( s, 1, 0 );
+      }
+   }
+
+   if (s->verbosity >= 3)
+      VPrintf1 ( "code lengths %d, ", s->numZ-nBytes );
+
+   /*--- And finally, the block data proper ---*/
+   nBytes = s->numZ;
+   selCtr = 0;
+   gs = 0;
+   while (True) {
+      if (gs >= s->nMTF) break;
+      ge = gs + BZ_G_SIZE - 1; 
+      if (ge >= s->nMTF) ge = s->nMTF-1;
+      AssertH ( s->selector[selCtr] < nGroups, 3006 );
+
+      if (nGroups == 6 && 50 == ge-gs+1) {
+            /*--- fast track the common case ---*/
+            UInt16 mtfv_i;
+            UChar* s_len_sel_selCtr 
+               = &(s->len[s->selector[selCtr]][0]);
+            Int32* s_code_sel_selCtr
+               = &(s->code[s->selector[selCtr]][0]);
+
+#           define BZ_ITAH(nn)                      \
+               mtfv_i = mtfv[gs+(nn)];              \
+               bsW ( s,                             \
+                     s_len_sel_selCtr[mtfv_i],      \
+                     s_code_sel_selCtr[mtfv_i] )
+
+            BZ_ITAH(0);  BZ_ITAH(1);  BZ_ITAH(2);  BZ_ITAH(3);  BZ_ITAH(4);
+            BZ_ITAH(5);  BZ_ITAH(6);  BZ_ITAH(7);  BZ_ITAH(8);  BZ_ITAH(9);
+            BZ_ITAH(10); BZ_ITAH(11); BZ_ITAH(12); BZ_ITAH(13); BZ_ITAH(14);
+            BZ_ITAH(15); BZ_ITAH(16); BZ_ITAH(17); BZ_ITAH(18); BZ_ITAH(19);
+            BZ_ITAH(20); BZ_ITAH(21); BZ_ITAH(22); BZ_ITAH(23); BZ_ITAH(24);
+            BZ_ITAH(25); BZ_ITAH(26); BZ_ITAH(27); BZ_ITAH(28); BZ_ITAH(29);
+            BZ_ITAH(30); BZ_ITAH(31); BZ_ITAH(32); BZ_ITAH(33); BZ_ITAH(34);
+            BZ_ITAH(35); BZ_ITAH(36); BZ_ITAH(37); BZ_ITAH(38); BZ_ITAH(39);
+            BZ_ITAH(40); BZ_ITAH(41); BZ_ITAH(42); BZ_ITAH(43); BZ_ITAH(44);
+            BZ_ITAH(45); BZ_ITAH(46); BZ_ITAH(47); BZ_ITAH(48); BZ_ITAH(49);
+
+#           undef BZ_ITAH
+
+      } else {
+	 /*--- slow version which correctly handles all situations ---*/
+         for (i = gs; i <= ge; i++) {
+            bsW ( s, 
+                  s->len  [s->selector[selCtr]] [mtfv[i]],
+                  s->code [s->selector[selCtr]] [mtfv[i]] );
+         }
+      }
+
+
+      gs = ge+1;
+      selCtr++;
+   }
+   AssertH( selCtr == nSelectors, 3007 );
+
+   if (s->verbosity >= 3)
+      VPrintf1( "codes %d\n", s->numZ-nBytes );
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_compressBlock ( EState* s, Bool is_last_block )
+{
+   if (s->nblock > 0) {
+
+      BZ_FINALISE_CRC ( s->blockCRC );
+      s->combinedCRC = (s->combinedCRC << 1) | (s->combinedCRC >> 31);
+      s->combinedCRC ^= s->blockCRC;
+      if (s->blockNo > 1) s->numZ = 0;
+
+      if (s->verbosity >= 2)
+         VPrintf4( "    block %d: crc = 0x%08x, "
+                   "combined CRC = 0x%08x, size = %d\n",
+                   s->blockNo, s->blockCRC, s->combinedCRC, s->nblock );
+
+      BZ2_blockSort ( s );
+   }
+
+   s->zbits = (UChar*) (&((UChar*)s->arr2)[s->nblock]);
+
+   /*-- If this is the first block, create the stream header. --*/
+   if (s->blockNo == 1) {
+      BZ2_bsInitWrite ( s );
+      bsPutUChar ( s, BZ_HDR_B );
+      bsPutUChar ( s, BZ_HDR_Z );
+      bsPutUChar ( s, BZ_HDR_h );
+      bsPutUChar ( s, (UChar)(BZ_HDR_0 + s->blockSize100k) );
+   }
+
+   if (s->nblock > 0) {
+
+      bsPutUChar ( s, 0x31 ); bsPutUChar ( s, 0x41 );
+      bsPutUChar ( s, 0x59 ); bsPutUChar ( s, 0x26 );
+      bsPutUChar ( s, 0x53 ); bsPutUChar ( s, 0x59 );
+
+      /*-- Now the block's CRC, so it is in a known place. --*/
+      bsPutUInt32 ( s, s->blockCRC );
+
+      /*-- 
+         Now a single bit indicating (non-)randomisation. 
+         As of version 0.9.5, we use a better sorting algorithm
+         which makes randomisation unnecessary.  So always set
+         the randomised bit to 'no'.  Of course, the decoder
+         still needs to be able to handle randomised blocks
+         so as to maintain backwards compatibility with
+         older versions of bzip2.
+      --*/
+      bsW(s,1,0);
+
+      bsW ( s, 24, s->origPtr );
+      generateMTFValues ( s );
+      sendMTFValues ( s );
+   }
+
+
+   /*-- If this is the last block, add the stream trailer. --*/
+   if (is_last_block) {
+
+      bsPutUChar ( s, 0x17 ); bsPutUChar ( s, 0x72 );
+      bsPutUChar ( s, 0x45 ); bsPutUChar ( s, 0x38 );
+      bsPutUChar ( s, 0x50 ); bsPutUChar ( s, 0x90 );
+      bsPutUInt32 ( s, s->combinedCRC );
+      if (s->verbosity >= 2)
+         VPrintf1( "    final combined CRC = 0x%08x\n   ", s->combinedCRC );
+      bsFinishWrite ( s );
+   }
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                        compress.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/usr/src/boot/contrib/bzip2/crctable.c b/usr/src/boot/contrib/bzip2/crctable.c
new file mode 100644
index 0000000..1fea7e9
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/crctable.c
@@ -0,0 +1,104 @@
+
+/*-------------------------------------------------------------*/
+/*--- Table for doing CRCs                                  ---*/
+/*---                                            crctable.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*--
+  I think this is an implementation of the AUTODIN-II,
+  Ethernet & FDDI 32-bit CRC standard.  Vaguely derived
+  from code by Rob Warnock, in Section 51 of the
+  comp.compression FAQ.
+--*/
+
+UInt32 BZ2_crc32Table[256] = {
+
+   /*-- Ugly, innit? --*/
+
+   0x00000000L, 0x04c11db7L, 0x09823b6eL, 0x0d4326d9L,
+   0x130476dcL, 0x17c56b6bL, 0x1a864db2L, 0x1e475005L,
+   0x2608edb8L, 0x22c9f00fL, 0x2f8ad6d6L, 0x2b4bcb61L,
+   0x350c9b64L, 0x31cd86d3L, 0x3c8ea00aL, 0x384fbdbdL,
+   0x4c11db70L, 0x48d0c6c7L, 0x4593e01eL, 0x4152fda9L,
+   0x5f15adacL, 0x5bd4b01bL, 0x569796c2L, 0x52568b75L,
+   0x6a1936c8L, 0x6ed82b7fL, 0x639b0da6L, 0x675a1011L,
+   0x791d4014L, 0x7ddc5da3L, 0x709f7b7aL, 0x745e66cdL,
+   0x9823b6e0L, 0x9ce2ab57L, 0x91a18d8eL, 0x95609039L,
+   0x8b27c03cL, 0x8fe6dd8bL, 0x82a5fb52L, 0x8664e6e5L,
+   0xbe2b5b58L, 0xbaea46efL, 0xb7a96036L, 0xb3687d81L,
+   0xad2f2d84L, 0xa9ee3033L, 0xa4ad16eaL, 0xa06c0b5dL,
+   0xd4326d90L, 0xd0f37027L, 0xddb056feL, 0xd9714b49L,
+   0xc7361b4cL, 0xc3f706fbL, 0xceb42022L, 0xca753d95L,
+   0xf23a8028L, 0xf6fb9d9fL, 0xfbb8bb46L, 0xff79a6f1L,
+   0xe13ef6f4L, 0xe5ffeb43L, 0xe8bccd9aL, 0xec7dd02dL,
+   0x34867077L, 0x30476dc0L, 0x3d044b19L, 0x39c556aeL,
+   0x278206abL, 0x23431b1cL, 0x2e003dc5L, 0x2ac12072L,
+   0x128e9dcfL, 0x164f8078L, 0x1b0ca6a1L, 0x1fcdbb16L,
+   0x018aeb13L, 0x054bf6a4L, 0x0808d07dL, 0x0cc9cdcaL,
+   0x7897ab07L, 0x7c56b6b0L, 0x71159069L, 0x75d48ddeL,
+   0x6b93dddbL, 0x6f52c06cL, 0x6211e6b5L, 0x66d0fb02L,
+   0x5e9f46bfL, 0x5a5e5b08L, 0x571d7dd1L, 0x53dc6066L,
+   0x4d9b3063L, 0x495a2dd4L, 0x44190b0dL, 0x40d816baL,
+   0xaca5c697L, 0xa864db20L, 0xa527fdf9L, 0xa1e6e04eL,
+   0xbfa1b04bL, 0xbb60adfcL, 0xb6238b25L, 0xb2e29692L,
+   0x8aad2b2fL, 0x8e6c3698L, 0x832f1041L, 0x87ee0df6L,
+   0x99a95df3L, 0x9d684044L, 0x902b669dL, 0x94ea7b2aL,
+   0xe0b41de7L, 0xe4750050L, 0xe9362689L, 0xedf73b3eL,
+   0xf3b06b3bL, 0xf771768cL, 0xfa325055L, 0xfef34de2L,
+   0xc6bcf05fL, 0xc27dede8L, 0xcf3ecb31L, 0xcbffd686L,
+   0xd5b88683L, 0xd1799b34L, 0xdc3abdedL, 0xd8fba05aL,
+   0x690ce0eeL, 0x6dcdfd59L, 0x608edb80L, 0x644fc637L,
+   0x7a089632L, 0x7ec98b85L, 0x738aad5cL, 0x774bb0ebL,
+   0x4f040d56L, 0x4bc510e1L, 0x46863638L, 0x42472b8fL,
+   0x5c007b8aL, 0x58c1663dL, 0x558240e4L, 0x51435d53L,
+   0x251d3b9eL, 0x21dc2629L, 0x2c9f00f0L, 0x285e1d47L,
+   0x36194d42L, 0x32d850f5L, 0x3f9b762cL, 0x3b5a6b9bL,
+   0x0315d626L, 0x07d4cb91L, 0x0a97ed48L, 0x0e56f0ffL,
+   0x1011a0faL, 0x14d0bd4dL, 0x19939b94L, 0x1d528623L,
+   0xf12f560eL, 0xf5ee4bb9L, 0xf8ad6d60L, 0xfc6c70d7L,
+   0xe22b20d2L, 0xe6ea3d65L, 0xeba91bbcL, 0xef68060bL,
+   0xd727bbb6L, 0xd3e6a601L, 0xdea580d8L, 0xda649d6fL,
+   0xc423cd6aL, 0xc0e2d0ddL, 0xcda1f604L, 0xc960ebb3L,
+   0xbd3e8d7eL, 0xb9ff90c9L, 0xb4bcb610L, 0xb07daba7L,
+   0xae3afba2L, 0xaafbe615L, 0xa7b8c0ccL, 0xa379dd7bL,
+   0x9b3660c6L, 0x9ff77d71L, 0x92b45ba8L, 0x9675461fL,
+   0x8832161aL, 0x8cf30badL, 0x81b02d74L, 0x857130c3L,
+   0x5d8a9099L, 0x594b8d2eL, 0x5408abf7L, 0x50c9b640L,
+   0x4e8ee645L, 0x4a4ffbf2L, 0x470cdd2bL, 0x43cdc09cL,
+   0x7b827d21L, 0x7f436096L, 0x7200464fL, 0x76c15bf8L,
+   0x68860bfdL, 0x6c47164aL, 0x61043093L, 0x65c52d24L,
+   0x119b4be9L, 0x155a565eL, 0x18197087L, 0x1cd86d30L,
+   0x029f3d35L, 0x065e2082L, 0x0b1d065bL, 0x0fdc1becL,
+   0x3793a651L, 0x3352bbe6L, 0x3e119d3fL, 0x3ad08088L,
+   0x2497d08dL, 0x2056cd3aL, 0x2d15ebe3L, 0x29d4f654L,
+   0xc5a92679L, 0xc1683bceL, 0xcc2b1d17L, 0xc8ea00a0L,
+   0xd6ad50a5L, 0xd26c4d12L, 0xdf2f6bcbL, 0xdbee767cL,
+   0xe3a1cbc1L, 0xe760d676L, 0xea23f0afL, 0xeee2ed18L,
+   0xf0a5bd1dL, 0xf464a0aaL, 0xf9278673L, 0xfde69bc4L,
+   0x89b8fd09L, 0x8d79e0beL, 0x803ac667L, 0x84fbdbd0L,
+   0x9abc8bd5L, 0x9e7d9662L, 0x933eb0bbL, 0x97ffad0cL,
+   0xafb010b1L, 0xab710d06L, 0xa6322bdfL, 0xa2f33668L,
+   0xbcb4666dL, 0xb8757bdaL, 0xb5365d03L, 0xb1f740b4L
+};
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                        crctable.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/usr/src/boot/contrib/bzip2/decompress.c b/usr/src/boot/contrib/bzip2/decompress.c
new file mode 100644
index 0000000..311f566
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/decompress.c
@@ -0,0 +1,646 @@
+
+/*-------------------------------------------------------------*/
+/*--- Decompression machinery                               ---*/
+/*---                                          decompress.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+
+/*---------------------------------------------------*/
+static
+void makeMaps_d ( DState* s )
+{
+   Int32 i;
+   s->nInUse = 0;
+   for (i = 0; i < 256; i++)
+      if (s->inUse[i]) {
+         s->seqToUnseq[s->nInUse] = i;
+         s->nInUse++;
+      }
+}
+
+
+/*---------------------------------------------------*/
+#define RETURN(rrr)                               \
+   { retVal = rrr; goto save_state_and_return; };
+
+#define GET_BITS(lll,vvv,nnn)                     \
+   case lll: s->state = lll;                      \
+   while (True) {                                 \
+      if (s->bsLive >= nnn) {                     \
+         UInt32 v;                                \
+         v = (s->bsBuff >>                        \
+             (s->bsLive-nnn)) & ((1 << nnn)-1);   \
+         s->bsLive -= nnn;                        \
+         vvv = v;                                 \
+         break;                                   \
+      }                                           \
+      if (s->strm->avail_in == 0) RETURN(BZ_OK);  \
+      s->bsBuff                                   \
+         = (s->bsBuff << 8) |                     \
+           ((UInt32)                              \
+              (*((UChar*)(s->strm->next_in))));   \
+      s->bsLive += 8;                             \
+      s->strm->next_in++;                         \
+      s->strm->avail_in--;                        \
+      s->strm->total_in_lo32++;                   \
+      if (s->strm->total_in_lo32 == 0)            \
+         s->strm->total_in_hi32++;                \
+   }
+
+#define GET_UCHAR(lll,uuu)                        \
+   GET_BITS(lll,uuu,8)
+
+#define GET_BIT(lll,uuu)                          \
+   GET_BITS(lll,uuu,1)
+
+/*---------------------------------------------------*/
+#define GET_MTF_VAL(label1,label2,lval)           \
+{                                                 \
+   if (groupPos == 0) {                           \
+      groupNo++;                                  \
+      if (groupNo >= nSelectors)                  \
+         RETURN(BZ_DATA_ERROR);                   \
+      groupPos = BZ_G_SIZE;                       \
+      gSel = s->selector[groupNo];                \
+      gMinlen = s->minLens[gSel];                 \
+      gLimit = &(s->limit[gSel][0]);              \
+      gPerm = &(s->perm[gSel][0]);                \
+      gBase = &(s->base[gSel][0]);                \
+   }                                              \
+   groupPos--;                                    \
+   zn = gMinlen;                                  \
+   GET_BITS(label1, zvec, zn);                    \
+   while (1) {                                    \
+      if (zn > 20 /* the longest code */)         \
+         RETURN(BZ_DATA_ERROR);                   \
+      if (zvec <= gLimit[zn]) break;              \
+      zn++;                                       \
+      GET_BIT(label2, zj);                        \
+      zvec = (zvec << 1) | zj;                    \
+   };                                             \
+   if (zvec - gBase[zn] < 0                       \
+       || zvec - gBase[zn] >= BZ_MAX_ALPHA_SIZE)  \
+      RETURN(BZ_DATA_ERROR);                      \
+   lval = gPerm[zvec - gBase[zn]];                \
+}
+
+
+/*---------------------------------------------------*/
+Int32 BZ2_decompress ( DState* s )
+{
+   UChar      uc;
+   Int32      retVal;
+   Int32      minLen, maxLen;
+   bz_stream* strm = s->strm;
+
+   /* stuff that needs to be saved/restored */
+   Int32  i;
+   Int32  j;
+   Int32  t;
+   Int32  alphaSize;
+   Int32  nGroups;
+   Int32  nSelectors;
+   Int32  EOB;
+   Int32  groupNo;
+   Int32  groupPos;
+   Int32  nextSym;
+   Int32  nblockMAX;
+   Int32  nblock;
+   Int32  es;
+   Int32  N;
+   Int32  curr;
+   Int32  zt;
+   Int32  zn; 
+   Int32  zvec;
+   Int32  zj;
+   Int32  gSel;
+   Int32  gMinlen;
+   Int32* gLimit;
+   Int32* gBase;
+   Int32* gPerm;
+
+   if (s->state == BZ_X_MAGIC_1) {
+      /*initialise the save area*/
+      s->save_i           = 0;
+      s->save_j           = 0;
+      s->save_t           = 0;
+      s->save_alphaSize   = 0;
+      s->save_nGroups     = 0;
+      s->save_nSelectors  = 0;
+      s->save_EOB         = 0;
+      s->save_groupNo     = 0;
+      s->save_groupPos    = 0;
+      s->save_nextSym     = 0;
+      s->save_nblockMAX   = 0;
+      s->save_nblock      = 0;
+      s->save_es          = 0;
+      s->save_N           = 0;
+      s->save_curr        = 0;
+      s->save_zt          = 0;
+      s->save_zn          = 0;
+      s->save_zvec        = 0;
+      s->save_zj          = 0;
+      s->save_gSel        = 0;
+      s->save_gMinlen     = 0;
+      s->save_gLimit      = NULL;
+      s->save_gBase       = NULL;
+      s->save_gPerm       = NULL;
+   }
+
+   /*restore from the save area*/
+   i           = s->save_i;
+   j           = s->save_j;
+   t           = s->save_t;
+   alphaSize   = s->save_alphaSize;
+   nGroups     = s->save_nGroups;
+   nSelectors  = s->save_nSelectors;
+   EOB         = s->save_EOB;
+   groupNo     = s->save_groupNo;
+   groupPos    = s->save_groupPos;
+   nextSym     = s->save_nextSym;
+   nblockMAX   = s->save_nblockMAX;
+   nblock      = s->save_nblock;
+   es          = s->save_es;
+   N           = s->save_N;
+   curr        = s->save_curr;
+   zt          = s->save_zt;
+   zn          = s->save_zn; 
+   zvec        = s->save_zvec;
+   zj          = s->save_zj;
+   gSel        = s->save_gSel;
+   gMinlen     = s->save_gMinlen;
+   gLimit      = s->save_gLimit;
+   gBase       = s->save_gBase;
+   gPerm       = s->save_gPerm;
+
+   retVal = BZ_OK;
+
+   switch (s->state) {
+
+      GET_UCHAR(BZ_X_MAGIC_1, uc);
+      if (uc != BZ_HDR_B) RETURN(BZ_DATA_ERROR_MAGIC);
+
+      GET_UCHAR(BZ_X_MAGIC_2, uc);
+      if (uc != BZ_HDR_Z) RETURN(BZ_DATA_ERROR_MAGIC);
+
+      GET_UCHAR(BZ_X_MAGIC_3, uc)
+      if (uc != BZ_HDR_h) RETURN(BZ_DATA_ERROR_MAGIC);
+
+      GET_BITS(BZ_X_MAGIC_4, s->blockSize100k, 8)
+      if (s->blockSize100k < (BZ_HDR_0 + 1) || 
+          s->blockSize100k > (BZ_HDR_0 + 9)) RETURN(BZ_DATA_ERROR_MAGIC);
+      s->blockSize100k -= BZ_HDR_0;
+
+      if (s->smallDecompress) {
+         s->ll16 = BZALLOC( s->blockSize100k * 100000 * sizeof(UInt16) );
+         s->ll4  = BZALLOC( 
+                      ((1 + s->blockSize100k * 100000) >> 1) * sizeof(UChar) 
+                   );
+         if (s->ll16 == NULL || s->ll4 == NULL) RETURN(BZ_MEM_ERROR);
+      } else {
+         s->tt  = BZALLOC( s->blockSize100k * 100000 * sizeof(Int32) );
+         if (s->tt == NULL) RETURN(BZ_MEM_ERROR);
+      }
+
+      GET_UCHAR(BZ_X_BLKHDR_1, uc);
+
+      if (uc == 0x17) goto endhdr_2;
+      if (uc != 0x31) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_2, uc);
+      if (uc != 0x41) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_3, uc);
+      if (uc != 0x59) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_4, uc);
+      if (uc != 0x26) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_5, uc);
+      if (uc != 0x53) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_BLKHDR_6, uc);
+      if (uc != 0x59) RETURN(BZ_DATA_ERROR);
+
+      s->currBlockNo++;
+      if (s->verbosity >= 2)
+         VPrintf1 ( "\n    [%d: huff+mtf ", s->currBlockNo );
+ 
+      s->storedBlockCRC = 0;
+      GET_UCHAR(BZ_X_BCRC_1, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_BCRC_2, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_BCRC_3, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_BCRC_4, uc);
+      s->storedBlockCRC = (s->storedBlockCRC << 8) | ((UInt32)uc);
+
+      GET_BITS(BZ_X_RANDBIT, s->blockRandomised, 1);
+
+      s->origPtr = 0;
+      GET_UCHAR(BZ_X_ORIGPTR_1, uc);
+      s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+      GET_UCHAR(BZ_X_ORIGPTR_2, uc);
+      s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+      GET_UCHAR(BZ_X_ORIGPTR_3, uc);
+      s->origPtr = (s->origPtr << 8) | ((Int32)uc);
+
+      if (s->origPtr < 0)
+         RETURN(BZ_DATA_ERROR);
+      if (s->origPtr > 10 + 100000*s->blockSize100k) 
+         RETURN(BZ_DATA_ERROR);
+
+      /*--- Receive the mapping table ---*/
+      for (i = 0; i < 16; i++) {
+         GET_BIT(BZ_X_MAPPING_1, uc);
+         if (uc == 1) 
+            s->inUse16[i] = True; else 
+            s->inUse16[i] = False;
+      }
+
+      for (i = 0; i < 256; i++) s->inUse[i] = False;
+
+      for (i = 0; i < 16; i++)
+         if (s->inUse16[i])
+            for (j = 0; j < 16; j++) {
+               GET_BIT(BZ_X_MAPPING_2, uc);
+               if (uc == 1) s->inUse[i * 16 + j] = True;
+            }
+      makeMaps_d ( s );
+      if (s->nInUse == 0) RETURN(BZ_DATA_ERROR);
+      alphaSize = s->nInUse+2;
+
+      /*--- Now the selectors ---*/
+      GET_BITS(BZ_X_SELECTOR_1, nGroups, 3);
+      if (nGroups < 2 || nGroups > 6) RETURN(BZ_DATA_ERROR);
+      GET_BITS(BZ_X_SELECTOR_2, nSelectors, 15);
+      if (nSelectors < 1) RETURN(BZ_DATA_ERROR);
+      for (i = 0; i < nSelectors; i++) {
+         j = 0;
+         while (True) {
+            GET_BIT(BZ_X_SELECTOR_3, uc);
+            if (uc == 0) break;
+            j++;
+            if (j >= nGroups) RETURN(BZ_DATA_ERROR);
+         }
+         s->selectorMtf[i] = j;
+      }
+
+      /*--- Undo the MTF values for the selectors. ---*/
+      {
+         UChar pos[BZ_N_GROUPS], tmp, v;
+         for (v = 0; v < nGroups; v++) pos[v] = v;
+   
+         for (i = 0; i < nSelectors; i++) {
+            v = s->selectorMtf[i];
+            tmp = pos[v];
+            while (v > 0) { pos[v] = pos[v-1]; v--; }
+            pos[0] = tmp;
+            s->selector[i] = tmp;
+         }
+      }
+
+      /*--- Now the coding tables ---*/
+      for (t = 0; t < nGroups; t++) {
+         GET_BITS(BZ_X_CODING_1, curr, 5);
+         for (i = 0; i < alphaSize; i++) {
+            while (True) {
+               if (curr < 1 || curr > 20) RETURN(BZ_DATA_ERROR);
+               GET_BIT(BZ_X_CODING_2, uc);
+               if (uc == 0) break;
+               GET_BIT(BZ_X_CODING_3, uc);
+               if (uc == 0) curr++; else curr--;
+            }
+            s->len[t][i] = curr;
+         }
+      }
+
+      /*--- Create the Huffman decoding tables ---*/
+      for (t = 0; t < nGroups; t++) {
+         minLen = 32;
+         maxLen = 0;
+         for (i = 0; i < alphaSize; i++) {
+            if (s->len[t][i] > maxLen) maxLen = s->len[t][i];
+            if (s->len[t][i] < minLen) minLen = s->len[t][i];
+         }
+         BZ2_hbCreateDecodeTables ( 
+            &(s->limit[t][0]), 
+            &(s->base[t][0]), 
+            &(s->perm[t][0]), 
+            &(s->len[t][0]),
+            minLen, maxLen, alphaSize
+         );
+         s->minLens[t] = minLen;
+      }
+
+      /*--- Now the MTF values ---*/
+
+      EOB      = s->nInUse+1;
+      nblockMAX = 100000 * s->blockSize100k;
+      groupNo  = -1;
+      groupPos = 0;
+
+      for (i = 0; i <= 255; i++) s->unzftab[i] = 0;
+
+      /*-- MTF init --*/
+      {
+         Int32 ii, jj, kk;
+         kk = MTFA_SIZE-1;
+         for (ii = 256 / MTFL_SIZE - 1; ii >= 0; ii--) {
+            for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
+               s->mtfa[kk] = (UChar)(ii * MTFL_SIZE + jj);
+               kk--;
+            }
+            s->mtfbase[ii] = kk + 1;
+         }
+      }
+      /*-- end MTF init --*/
+
+      nblock = 0;
+      GET_MTF_VAL(BZ_X_MTF_1, BZ_X_MTF_2, nextSym);
+
+      while (True) {
+
+         if (nextSym == EOB) break;
+
+         if (nextSym == BZ_RUNA || nextSym == BZ_RUNB) {
+
+            es = -1;
+            N = 1;
+            do {
+               /* Check that N doesn't get too big, so that es doesn't
+                  go negative.  The maximum value that can be
+                  RUNA/RUNB encoded is equal to the block size (post
+                  the initial RLE), viz, 900k, so bounding N at 2
+                  million should guard against overflow without
+                  rejecting any legitimate inputs. */
+               if (N >= 2*1024*1024) RETURN(BZ_DATA_ERROR);
+               if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
+               if (nextSym == BZ_RUNB) es = es + (1+1) * N;
+               N = N * 2;
+               GET_MTF_VAL(BZ_X_MTF_3, BZ_X_MTF_4, nextSym);
+            }
+               while (nextSym == BZ_RUNA || nextSym == BZ_RUNB);
+
+            es++;
+            uc = s->seqToUnseq[ s->mtfa[s->mtfbase[0]] ];
+            s->unzftab[uc] += es;
+
+            if (s->smallDecompress)
+               while (es > 0) {
+                  if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+                  s->ll16[nblock] = (UInt16)uc;
+                  nblock++;
+                  es--;
+               }
+            else
+               while (es > 0) {
+                  if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+                  s->tt[nblock] = (UInt32)uc;
+                  nblock++;
+                  es--;
+               };
+
+            continue;
+
+         } else {
+
+            if (nblock >= nblockMAX) RETURN(BZ_DATA_ERROR);
+
+            /*-- uc = MTF ( nextSym-1 ) --*/
+            {
+               Int32 ii, jj, kk, pp, lno, off;
+               UInt32 nn;
+               nn = (UInt32)(nextSym - 1);
+
+               if (nn < MTFL_SIZE) {
+                  /* avoid general-case expense */
+                  pp = s->mtfbase[0];
+                  uc = s->mtfa[pp+nn];
+                  while (nn > 3) {
+                     Int32 z = pp+nn;
+                     s->mtfa[(z)  ] = s->mtfa[(z)-1];
+                     s->mtfa[(z)-1] = s->mtfa[(z)-2];
+                     s->mtfa[(z)-2] = s->mtfa[(z)-3];
+                     s->mtfa[(z)-3] = s->mtfa[(z)-4];
+                     nn -= 4;
+                  }
+                  while (nn > 0) { 
+                     s->mtfa[(pp+nn)] = s->mtfa[(pp+nn)-1]; nn--; 
+                  };
+                  s->mtfa[pp] = uc;
+               } else { 
+                  /* general case */
+                  lno = nn / MTFL_SIZE;
+                  off = nn % MTFL_SIZE;
+                  pp = s->mtfbase[lno] + off;
+                  uc = s->mtfa[pp];
+                  while (pp > s->mtfbase[lno]) { 
+                     s->mtfa[pp] = s->mtfa[pp-1]; pp--; 
+                  };
+                  s->mtfbase[lno]++;
+                  while (lno > 0) {
+                     s->mtfbase[lno]--;
+                     s->mtfa[s->mtfbase[lno]] 
+                        = s->mtfa[s->mtfbase[lno-1] + MTFL_SIZE - 1];
+                     lno--;
+                  }
+                  s->mtfbase[0]--;
+                  s->mtfa[s->mtfbase[0]] = uc;
+                  if (s->mtfbase[0] == 0) {
+                     kk = MTFA_SIZE-1;
+                     for (ii = 256 / MTFL_SIZE-1; ii >= 0; ii--) {
+                        for (jj = MTFL_SIZE-1; jj >= 0; jj--) {
+                           s->mtfa[kk] = s->mtfa[s->mtfbase[ii] + jj];
+                           kk--;
+                        }
+                        s->mtfbase[ii] = kk + 1;
+                     }
+                  }
+               }
+            }
+            /*-- end uc = MTF ( nextSym-1 ) --*/
+
+            s->unzftab[s->seqToUnseq[uc]]++;
+            if (s->smallDecompress)
+               s->ll16[nblock] = (UInt16)(s->seqToUnseq[uc]); else
+               s->tt[nblock]   = (UInt32)(s->seqToUnseq[uc]);
+            nblock++;
+
+            GET_MTF_VAL(BZ_X_MTF_5, BZ_X_MTF_6, nextSym);
+            continue;
+         }
+      }
+
+      /* Now we know what nblock is, we can do a better sanity
+         check on s->origPtr.
+      */
+      if (s->origPtr < 0 || s->origPtr >= nblock)
+         RETURN(BZ_DATA_ERROR);
+
+      /*-- Set up cftab to facilitate generation of T^(-1) --*/
+      /* Check: unzftab entries in range. */
+      for (i = 0; i <= 255; i++) {
+         if (s->unzftab[i] < 0 || s->unzftab[i] > nblock)
+            RETURN(BZ_DATA_ERROR);
+      }
+      /* Actually generate cftab. */
+      s->cftab[0] = 0;
+      for (i = 1; i <= 256; i++) s->cftab[i] = s->unzftab[i-1];
+      for (i = 1; i <= 256; i++) s->cftab[i] += s->cftab[i-1];
+      /* Check: cftab entries in range. */
+      for (i = 0; i <= 256; i++) {
+         if (s->cftab[i] < 0 || s->cftab[i] > nblock) {
+            /* s->cftab[i] can legitimately be == nblock */
+            RETURN(BZ_DATA_ERROR);
+         }
+      }
+      /* Check: cftab entries non-descending. */
+      for (i = 1; i <= 256; i++) {
+         if (s->cftab[i-1] > s->cftab[i]) {
+            RETURN(BZ_DATA_ERROR);
+         }
+      }
+
+      s->state_out_len = 0;
+      s->state_out_ch  = 0;
+      BZ_INITIALISE_CRC ( s->calculatedBlockCRC );
+      s->state = BZ_X_OUTPUT;
+      if (s->verbosity >= 2) VPrintf0 ( "rt+rld" );
+
+      if (s->smallDecompress) {
+
+         /*-- Make a copy of cftab, used in generation of T --*/
+         for (i = 0; i <= 256; i++) s->cftabCopy[i] = s->cftab[i];
+
+         /*-- compute the T vector --*/
+         for (i = 0; i < nblock; i++) {
+            uc = (UChar)(s->ll16[i]);
+            SET_LL(i, s->cftabCopy[uc]);
+            s->cftabCopy[uc]++;
+         }
+
+         /*-- Compute T^(-1) by pointer reversal on T --*/
+         i = s->origPtr;
+         j = GET_LL(i);
+         do {
+            Int32 tmp = GET_LL(j);
+            SET_LL(j, i);
+            i = j;
+            j = tmp;
+         }
+            while (i != s->origPtr);
+
+         s->tPos = s->origPtr;
+         s->nblock_used = 0;
+         if (s->blockRandomised) {
+            BZ_RAND_INIT_MASK;
+            BZ_GET_SMALL(s->k0); s->nblock_used++;
+            BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; 
+         } else {
+            BZ_GET_SMALL(s->k0); s->nblock_used++;
+         }
+
+      } else {
+
+         /*-- compute the T^(-1) vector --*/
+         for (i = 0; i < nblock; i++) {
+            uc = (UChar)(s->tt[i] & 0xff);
+            s->tt[s->cftab[uc]] |= (i << 8);
+            s->cftab[uc]++;
+         }
+
+         s->tPos = s->tt[s->origPtr] >> 8;
+         s->nblock_used = 0;
+         if (s->blockRandomised) {
+            BZ_RAND_INIT_MASK;
+            BZ_GET_FAST(s->k0); s->nblock_used++;
+            BZ_RAND_UPD_MASK; s->k0 ^= BZ_RAND_MASK; 
+         } else {
+            BZ_GET_FAST(s->k0); s->nblock_used++;
+         }
+
+      }
+
+      RETURN(BZ_OK);
+
+
+
+    endhdr_2:
+
+      GET_UCHAR(BZ_X_ENDHDR_2, uc);
+      if (uc != 0x72) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_3, uc);
+      if (uc != 0x45) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_4, uc);
+      if (uc != 0x38) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_5, uc);
+      if (uc != 0x50) RETURN(BZ_DATA_ERROR);
+      GET_UCHAR(BZ_X_ENDHDR_6, uc);
+      if (uc != 0x90) RETURN(BZ_DATA_ERROR);
+
+      s->storedCombinedCRC = 0;
+      GET_UCHAR(BZ_X_CCRC_1, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_CCRC_2, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_CCRC_3, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+      GET_UCHAR(BZ_X_CCRC_4, uc);
+      s->storedCombinedCRC = (s->storedCombinedCRC << 8) | ((UInt32)uc);
+
+      s->state = BZ_X_IDLE;
+      RETURN(BZ_STREAM_END);
+
+      default: AssertH ( False, 4001 );
+   }
+
+   AssertH ( False, 4002 );
+
+   save_state_and_return:
+
+   s->save_i           = i;
+   s->save_j           = j;
+   s->save_t           = t;
+   s->save_alphaSize   = alphaSize;
+   s->save_nGroups     = nGroups;
+   s->save_nSelectors  = nSelectors;
+   s->save_EOB         = EOB;
+   s->save_groupNo     = groupNo;
+   s->save_groupPos    = groupPos;
+   s->save_nextSym     = nextSym;
+   s->save_nblockMAX   = nblockMAX;
+   s->save_nblock      = nblock;
+   s->save_es          = es;
+   s->save_N           = N;
+   s->save_curr        = curr;
+   s->save_zt          = zt;
+   s->save_zn          = zn;
+   s->save_zvec        = zvec;
+   s->save_zj          = zj;
+   s->save_gSel        = gSel;
+   s->save_gMinlen     = gMinlen;
+   s->save_gLimit      = gLimit;
+   s->save_gBase       = gBase;
+   s->save_gPerm       = gPerm;
+
+   return retVal;   
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                      decompress.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/usr/src/boot/contrib/bzip2/huffman.c b/usr/src/boot/contrib/bzip2/huffman.c
new file mode 100644
index 0000000..2283fdb
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/huffman.c
@@ -0,0 +1,205 @@
+
+/*-------------------------------------------------------------*/
+/*--- Huffman coding low-level stuff                        ---*/
+/*---                                             huffman.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+/*---------------------------------------------------*/
+#define WEIGHTOF(zz0)  ((zz0) & 0xffffff00)
+#define DEPTHOF(zz1)   ((zz1) & 0x000000ff)
+#define MYMAX(zz2,zz3) ((zz2) > (zz3) ? (zz2) : (zz3))
+
+#define ADDWEIGHTS(zw1,zw2)                           \
+   (WEIGHTOF(zw1)+WEIGHTOF(zw2)) |                    \
+   (1 + MYMAX(DEPTHOF(zw1),DEPTHOF(zw2)))
+
+#define UPHEAP(z)                                     \
+{                                                     \
+   Int32 zz, tmp;                                     \
+   zz = z; tmp = heap[zz];                            \
+   while (weight[tmp] < weight[heap[zz >> 1]]) {      \
+      heap[zz] = heap[zz >> 1];                       \
+      zz >>= 1;                                       \
+   }                                                  \
+   heap[zz] = tmp;                                    \
+}
+
+#define DOWNHEAP(z)                                   \
+{                                                     \
+   Int32 zz, yy, tmp;                                 \
+   zz = z; tmp = heap[zz];                            \
+   while (True) {                                     \
+      yy = zz << 1;                                   \
+      if (yy > nHeap) break;                          \
+      if (yy < nHeap &&                               \
+          weight[heap[yy+1]] < weight[heap[yy]])      \
+         yy++;                                        \
+      if (weight[tmp] < weight[heap[yy]]) break;      \
+      heap[zz] = heap[yy];                            \
+      zz = yy;                                        \
+   }                                                  \
+   heap[zz] = tmp;                                    \
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbMakeCodeLengths ( UChar *len, 
+                             Int32 *freq,
+                             Int32 alphaSize,
+                             Int32 maxLen )
+{
+   /*--
+      Nodes and heap entries run from 1.  Entry 0
+      for both the heap and nodes is a sentinel.
+   --*/
+   Int32 nNodes, nHeap, n1, n2, i, j, k;
+   Bool  tooLong;
+
+   Int32 heap   [ BZ_MAX_ALPHA_SIZE + 2 ];
+   Int32 weight [ BZ_MAX_ALPHA_SIZE * 2 ];
+   Int32 parent [ BZ_MAX_ALPHA_SIZE * 2 ]; 
+
+   for (i = 0; i < alphaSize; i++)
+      weight[i+1] = (freq[i] == 0 ? 1 : freq[i]) << 8;
+
+   while (True) {
+
+      nNodes = alphaSize;
+      nHeap = 0;
+
+      heap[0] = 0;
+      weight[0] = 0;
+      parent[0] = -2;
+
+      for (i = 1; i <= alphaSize; i++) {
+         parent[i] = -1;
+         nHeap++;
+         heap[nHeap] = i;
+         UPHEAP(nHeap);
+      }
+
+      AssertH( nHeap < (BZ_MAX_ALPHA_SIZE+2), 2001 );
+   
+      while (nHeap > 1) {
+         n1 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
+         n2 = heap[1]; heap[1] = heap[nHeap]; nHeap--; DOWNHEAP(1);
+         nNodes++;
+         parent[n1] = parent[n2] = nNodes;
+         weight[nNodes] = ADDWEIGHTS(weight[n1], weight[n2]);
+         parent[nNodes] = -1;
+         nHeap++;
+         heap[nHeap] = nNodes;
+         UPHEAP(nHeap);
+      }
+
+      AssertH( nNodes < (BZ_MAX_ALPHA_SIZE * 2), 2002 );
+
+      tooLong = False;
+      for (i = 1; i <= alphaSize; i++) {
+         j = 0;
+         k = i;
+         while (parent[k] >= 0) { k = parent[k]; j++; }
+         len[i-1] = j;
+         if (j > maxLen) tooLong = True;
+      }
+      
+      if (! tooLong) break;
+
+      /* 17 Oct 04: keep-going condition for the following loop used
+         to be 'i < alphaSize', which missed the last element,
+         theoretically leading to the possibility of the compressor
+         looping.  However, this count-scaling step is only needed if
+         one of the generated Huffman code words is longer than
+         maxLen, which up to and including version 1.0.2 was 20 bits,
+         which is extremely unlikely.  In version 1.0.3 maxLen was
+         changed to 17 bits, which has minimal effect on compression
+         ratio, but does mean this scaling step is used from time to
+         time, enough to verify that it works.
+
+         This means that bzip2-1.0.3 and later will only produce
+         Huffman codes with a maximum length of 17 bits.  However, in
+         order to preserve backwards compatibility with bitstreams
+         produced by versions pre-1.0.3, the decompressor must still
+         handle lengths of up to 20. */
+
+      for (i = 1; i <= alphaSize; i++) {
+         j = weight[i] >> 8;
+         j = 1 + (j / 2);
+         weight[i] = j << 8;
+      }
+   }
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbAssignCodes ( Int32 *code,
+                         UChar *length,
+                         Int32 minLen,
+                         Int32 maxLen,
+                         Int32 alphaSize )
+{
+   Int32 n, vec, i;
+
+   vec = 0;
+   for (n = minLen; n <= maxLen; n++) {
+      for (i = 0; i < alphaSize; i++)
+         if (length[i] == n) { code[i] = vec; vec++; };
+      vec <<= 1;
+   }
+}
+
+
+/*---------------------------------------------------*/
+void BZ2_hbCreateDecodeTables ( Int32 *limit,
+                                Int32 *base,
+                                Int32 *perm,
+                                UChar *length,
+                                Int32 minLen,
+                                Int32 maxLen,
+                                Int32 alphaSize )
+{
+   Int32 pp, i, j, vec;
+
+   pp = 0;
+   for (i = minLen; i <= maxLen; i++)
+      for (j = 0; j < alphaSize; j++)
+         if (length[j] == i) { perm[pp] = j; pp++; };
+
+   for (i = 0; i < BZ_MAX_CODE_LEN; i++) base[i] = 0;
+   for (i = 0; i < alphaSize; i++) base[length[i]+1]++;
+
+   for (i = 1; i < BZ_MAX_CODE_LEN; i++) base[i] += base[i-1];
+
+   for (i = 0; i < BZ_MAX_CODE_LEN; i++) limit[i] = 0;
+   vec = 0;
+
+   for (i = minLen; i <= maxLen; i++) {
+      vec += (base[i+1] - base[i]);
+      limit[i] = vec-1;
+      vec <<= 1;
+   }
+   for (i = minLen + 1; i <= maxLen; i++)
+      base[i] = ((limit[i-1] + 1) << 1) - base[i];
+}
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                         huffman.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/usr/src/boot/contrib/bzip2/libbz2.def b/usr/src/boot/contrib/bzip2/libbz2.def
new file mode 100644
index 0000000..4f83fcc
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/libbz2.def
@@ -0,0 +1,27 @@
+LIBRARY			LIBBZ2
+DESCRIPTION		"libbzip2: library for data compression"
+EXPORTS
+	BZ2_bzCompressInit
+	BZ2_bzCompress
+	BZ2_bzCompressEnd
+	BZ2_bzDecompressInit
+	BZ2_bzDecompress
+	BZ2_bzDecompressEnd
+	BZ2_bzReadOpen
+	BZ2_bzReadClose
+	BZ2_bzReadGetUnused
+	BZ2_bzRead
+	BZ2_bzWriteOpen
+	BZ2_bzWrite
+	BZ2_bzWriteClose
+	BZ2_bzWriteClose64
+	BZ2_bzBuffToBuffCompress
+	BZ2_bzBuffToBuffDecompress
+	BZ2_bzlibVersion
+	BZ2_bzopen
+	BZ2_bzdopen
+	BZ2_bzread
+	BZ2_bzwrite
+	BZ2_bzflush
+	BZ2_bzclose
+	BZ2_bzerror
diff --git a/usr/src/boot/contrib/bzip2/randtable.c b/usr/src/boot/contrib/bzip2/randtable.c
new file mode 100644
index 0000000..6d62459
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/randtable.c
@@ -0,0 +1,84 @@
+
+/*-------------------------------------------------------------*/
+/*--- Table for randomising repetitive blocks               ---*/
+/*---                                           randtable.c ---*/
+/*-------------------------------------------------------------*/
+
+/* ------------------------------------------------------------------
+   This file is part of bzip2/libbzip2, a program and library for
+   lossless, block-sorting data compression.
+
+   bzip2/libbzip2 version 1.0.6 of 6 September 2010
+   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
+
+   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
+   README file.
+
+   This program is released under the terms of the license contained
+   in the file LICENSE.
+   ------------------------------------------------------------------ */
+
+
+#include "bzlib_private.h"
+
+
+/*---------------------------------------------*/
+Int32 BZ2_rNums[512] = { 
+   619, 720, 127, 481, 931, 816, 813, 233, 566, 247, 
+   985, 724, 205, 454, 863, 491, 741, 242, 949, 214, 
+   733, 859, 335, 708, 621, 574, 73, 654, 730, 472, 
+   419, 436, 278, 496, 867, 210, 399, 680, 480, 51, 
+   878, 465, 811, 169, 869, 675, 611, 697, 867, 561, 
+   862, 687, 507, 283, 482, 129, 807, 591, 733, 623, 
+   150, 238, 59, 379, 684, 877, 625, 169, 643, 105, 
+   170, 607, 520, 932, 727, 476, 693, 425, 174, 647, 
+   73, 122, 335, 530, 442, 853, 695, 249, 445, 515, 
+   909, 545, 703, 919, 874, 474, 882, 500, 594, 612, 
+   641, 801, 220, 162, 819, 984, 589, 513, 495, 799, 
+   161, 604, 958, 533, 221, 400, 386, 867, 600, 782, 
+   382, 596, 414, 171, 516, 375, 682, 485, 911, 276, 
+   98, 553, 163, 354, 666, 933, 424, 341, 533, 870, 
+   227, 730, 475, 186, 263, 647, 537, 686, 600, 224, 
+   469, 68, 770, 919, 190, 373, 294, 822, 808, 206, 
+   184, 943, 795, 384, 383, 461, 404, 758, 839, 887, 
+   715, 67, 618, 276, 204, 918, 873, 777, 604, 560, 
+   951, 160, 578, 722, 79, 804, 96, 409, 713, 940, 
+   652, 934, 970, 447, 318, 353, 859, 672, 112, 785, 
+   645, 863, 803, 350, 139, 93, 354, 99, 820, 908, 
+   609, 772, 154, 274, 580, 184, 79, 626, 630, 742, 
+   653, 282, 762, 623, 680, 81, 927, 626, 789, 125, 
+   411, 521, 938, 300, 821, 78, 343, 175, 128, 250, 
+   170, 774, 972, 275, 999, 639, 495, 78, 352, 126, 
+   857, 956, 358, 619, 580, 124, 737, 594, 701, 612, 
+   669, 112, 134, 694, 363, 992, 809, 743, 168, 974, 
+   944, 375, 748, 52, 600, 747, 642, 182, 862, 81, 
+   344, 805, 988, 739, 511, 655, 814, 334, 249, 515, 
+   897, 955, 664, 981, 649, 113, 974, 459, 893, 228, 
+   433, 837, 553, 268, 926, 240, 102, 654, 459, 51, 
+   686, 754, 806, 760, 493, 403, 415, 394, 687, 700, 
+   946, 670, 656, 610, 738, 392, 760, 799, 887, 653, 
+   978, 321, 576, 617, 626, 502, 894, 679, 243, 440, 
+   680, 879, 194, 572, 640, 724, 926, 56, 204, 700, 
+   707, 151, 457, 449, 797, 195, 791, 558, 945, 679, 
+   297, 59, 87, 824, 713, 663, 412, 693, 342, 606, 
+   134, 108, 571, 364, 631, 212, 174, 643, 304, 329, 
+   343, 97, 430, 751, 497, 314, 983, 374, 822, 928, 
+   140, 206, 73, 263, 980, 736, 876, 478, 430, 305, 
+   170, 514, 364, 692, 829, 82, 855, 953, 676, 246, 
+   369, 970, 294, 750, 807, 827, 150, 790, 288, 923, 
+   804, 378, 215, 828, 592, 281, 565, 555, 710, 82, 
+   896, 831, 547, 261, 524, 462, 293, 465, 502, 56, 
+   661, 821, 976, 991, 658, 869, 905, 758, 745, 193, 
+   768, 550, 608, 933, 378, 286, 215, 979, 792, 961, 
+   61, 688, 793, 644, 986, 403, 106, 366, 905, 644, 
+   372, 567, 466, 434, 645, 210, 389, 550, 919, 135, 
+   780, 773, 635, 389, 707, 100, 626, 958, 165, 504, 
+   920, 176, 193, 713, 857, 265, 203, 50, 668, 108, 
+   645, 990, 626, 197, 510, 357, 358, 850, 858, 364, 
+   936, 638
+};
+
+
+/*-------------------------------------------------------------*/
+/*--- end                                       randtable.c ---*/
+/*-------------------------------------------------------------*/
diff --git a/usr/src/boot/contrib/bzip2/sample1.bz2.uu b/usr/src/boot/contrib/bzip2/sample1.bz2.uu
new file mode 100644
index 0000000..5445680
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/sample1.bz2.uu
@@ -0,0 +1,722 @@
+begin 644 sample1.bz2
+M0EIH,3%!62936<SQM:4`OJ;_____________________________________
+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
+F"+`&FNP%5J%=[MCO,A9%D0D'L8&%51TCE#9?_B[DBG"A(9GC:TH`
+`
+end
diff --git a/usr/src/boot/contrib/bzip2/sample1.ref.gz.uu b/usr/src/boot/contrib/bzip2/sample1.ref.gz.uu
new file mode 100644
index 0000000..6c36f44
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/sample1.ref.gz.uu
@@ -0,0 +1,850 @@
+begin 644 sample1.ref.gz
+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
+.WXO\S_\")"$UH(B!`0``
+`
+end
diff --git a/usr/src/boot/contrib/bzip2/sample2.bz2.uu b/usr/src/boot/contrib/bzip2/sample2.bz2.uu
new file mode 100644
index 0000000..b0610ea
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/sample2.bz2.uu
@@ -0,0 +1,1642 @@
+begin 644 sample2.bz2
+M0EIH,C%!629367PQR6$!@_U_____________________________________
+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
+6"B*@22E%*JXT83_Q=R13A0D'@N8^0```
+`
+end
diff --git a/usr/src/boot/contrib/bzip2/sample2.ref.gz.uu b/usr/src/boot/contrib/bzip2/sample2.ref.gz.uu
new file mode 100644
index 0000000..fd78424
--- /dev/null
+++ b/usr/src/boot/contrib/bzip2/sample2.ref.gz.uu
@@ -0,0 +1,1934 @@
+begin 644 sample2.ref.gz
+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
+MLU'V_'>]