/* minilzo.c -- mini subset of the LZO real-time data compression library
This file is part of the LZO real-time data compression library.
Copyright (C) 2011 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2010 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2009 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
All Rights Reserved.
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
The LZO library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with the LZO library; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Markus F.X.J. Oberhumer
<markus@oberhumer.com>
*/
/*
* NOTE:
* the full LZO package can be found at
*/
#if defined(LZO_CFG_FREESTANDING)
#endif
#ifdef MINILZO_HAVE_CONFIG_H
# include <config.h>
#endif
#include <limits.h>
#include <stddef.h>
#if defined(MINILZO_CFG_USE_INTERNAL_LZODEFS)
#ifndef __LZODEFS_H_INCLUDED
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
#endif
#if defined(__IBMCPP__) && !defined(__IBMC__)
#endif
#endif
#endif
# if !defined(__LONG_MAX__)
# endif
#endif
#if defined(__INTEL_COMPILER) && defined(__linux__)
#endif
#endif
# if (_MSC_VER >= 1300)
# endif
#endif
#if 0 && defined(__WATCOMC__)
# endif
#endif
# pragma option -h
#endif
#if 0
#define LZO_0xffffL 0xfffful
#define LZO_0xffffffffL 0xfffffffful
#else
#endif
#if (LZO_0xffffL == LZO_0xffffffffL)
# error "your preprocessor is broken 1"
#endif
#if (16ul * 16384ul != 262144ul)
# error "your preprocessor is broken 2"
#endif
#if 0
#if (32767 >= 4294967295ul)
# error "your preprocessor is broken 3"
#endif
#if (65535u >= 4294967295ul)
# error "your preprocessor is broken 4"
#endif
#endif
#if (UINT_MAX == LZO_0xffffL)
# if !defined(MSDOS)
# endif
# if !defined(_MSDOS)
# endif
# if !defined(__AZTEC_C__)
# endif
# if !defined(__DOS__)
# endif
# endif
#endif
#endif
# define ptrdiff_t long
#endif
#if (UINT_MAX == LZO_0xffffL)
# if defined(__AZTEC_C__) && defined(__DOS__)
# if (_MSC_VER < 600)
# endif
# if !defined(__far)
# endif
# if !defined(__near)
# endif
# endif
# if defined(__LZO_RENAME_A)
# if !defined(__cdecl)
# endif
# if !defined(__far)
# endif
# if !defined(__huge)
# endif
# if !defined(__near)
# endif
# if !defined(__pascal)
# endif
# if !defined(__huge)
# endif
# elif defined(__LZO_RENAME_B)
# if !defined(__cdecl)
# endif
# if !defined(__far)
# endif
# if !defined(__huge)
# endif
# if !defined(__near)
# endif
# if !defined(__pascal)
# endif
# if !defined(__cdecl)
# endif
# if !defined(__pascal)
# endif
# endif
#endif
#if (UINT_MAX == LZO_0xffffL)
#if defined(__AZTEC_C__) && defined(__DOS__)
# if (_MSC_VER < 600)
# endif
# if (_MSC_VER < 700)
# endif
# if (__TURBOC__ < 0x0150)
# endif
# if (__TURBOC__ < 0x0200)
# endif
# endif
#endif
#endif
#endif
#endif
#define LZO_PP_STRINGIZE(x) #x
#define LZO_PP_CONCAT2(a,b) a ## b
#define LZO_PP_CONCAT3(a,b,c) a ## b ## c
#define LZO_PP_CONCAT4(a,b,c,d) a ## b ## c ## d
#define LZO_PP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e
#if 1
#define LZO_CPP_STRINGIZE(x) #x
#define LZO_CPP_CONCAT2(a,b) a ## b
#define LZO_CPP_CONCAT3(a,b,c) a ## b ## c
#define LZO_CPP_CONCAT4(a,b,c,d) a ## b ## c ## d
#define LZO_CPP_CONCAT5(a,b,c,d,e) a ## b ## c ## d ## e
#endif
#if 1 && defined(__cplusplus)
# if !defined(__STDC_CONSTANT_MACROS)
# endif
# if !defined(__STDC_LIMIT_MACROS)
# endif
#endif
#if defined(__cplusplus)
#else
# define LZO_EXTERN_C extern
#endif
#if !defined(__LZO_OS_OVERRIDE)
#if (LZO_OS_FREESTANDING)
# if (UINT_MAX == LZO_0xffffL)
# else
# endif
# if (UINT_MAX == LZO_0xffffL)
# else
# endif
#elif defined(__DOS__) || defined(__MSDOS__) || defined(_MSDOS) || defined(MSDOS) || (defined(__PACIFIC__) && defined(DOS))
# if (UINT_MAX == LZO_0xffffL)
# else
# endif
#elif defined(__WATCOMC__)
# else
# error "please specify a target using the -bt compiler option"
# endif
#elif defined(__palmos__)
#else
#endif
#if (LZO_OS_POSIX)
# elif defined(__FreeBSD__)
# elif defined(__NetBSD__)
# elif defined(__OpenBSD__)
# else
# endif
# else
# endif
#endif
#endif
# if (UINT_MAX != LZO_0xffffL)
# error "this should not happen"
# endif
# if (ULONG_MAX != LZO_0xffffffffL)
# error "this should not happen"
# endif
#endif
# if (UINT_MAX != LZO_0xffffffffL)
# error "this should not happen"
# endif
# if (ULONG_MAX != LZO_0xffffffffL)
# error "this should not happen"
# endif
#endif
# if defined(__CILLY__)
# else
# endif
# define LZO_CC_PATHSCALE (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__)
#elif defined(__INTEL_COMPILER)
# else
# endif
#elif defined(__clang__) && defined(__llvm__) && defined(__GNUC__) && defined(__GNUC_MINOR__) && defined(__VERSION__)
# if defined(__GNUC_PATCHLEVEL__)
# else
# endif
# define LZO_CC_CLANG_CLANG (__clang_major__ * 0x10000L + __clang_minor__ * 0x100 + __clang_patchlevel__)
# else
# endif
# if defined(__GNUC_PATCHLEVEL__)
# else
# endif
# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
# elif defined(__GNUC_MINOR__)
# else
# endif
#elif defined(__AZTEC_C__)
#elif defined(__CODEGEARC__)
#elif defined(__BORLANDC__)
#elif defined(__IAR_SYSTEMS_ICC__)
# if defined(__VER__)
# else
# endif
# if defined(__LCC_VERSION__)
# else
# endif
# if defined(_MSC_FULL_VER)
# else
# endif
#elif defined(__MWERKS__)
#elif defined(__PACIFIC__)
#elif defined(__SUNPRO_C)
# if ((__SUNPRO_C)+0 > 0)
# else
# endif
#elif defined(__SUNPRO_CC)
# if ((__SUNPRO_CC)+0 > 0)
# else
# endif
#elif defined(__WATCOMC__)
#elif defined(__TURBOC__)
# if (__ZTC__ == 0x310)
# else
# endif
#else
#endif
# error "LZO_CC_MSC: _MSC_FULL_VER is not defined"
#endif
# endif
# endif
#endif
#if !defined(__LZO_ARCH_OVERRIDE)
#if (LZO_ARCH_GENERIC)
# else
# endif
#elif defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386)
#elif (LZO_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(__mc68020__) || defined(_M_M68K)
#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR)
# if defined(_CRAYSV1)
# else
# endif
#else
#endif
#endif
# error "FIXME - missing define for CPU architecture"
#endif
# error "FIXME - missing WIN32 define for CPU architecture"
#endif
# error "FIXME - missing WIN64 define for CPU architecture"
#endif
#if (LZO_OS_OS216 || LZO_OS_WIN16)
#endif
#if (LZO_ARCH_ARM_THUMB) && !(LZO_ARCH_ARM)
# error "this should not happen"
#endif
#if (LZO_ARCH_I086PM) && !(LZO_ARCH_I086)
# error "this should not happen"
#endif
#if (LZO_ARCH_I086)
# if (UINT_MAX != LZO_0xffffL)
# error "this should not happen"
# endif
# if (ULONG_MAX != LZO_0xffffffffL)
# error "this should not happen"
# endif
#endif
#if (LZO_ARCH_I386)
# error "this should not happen"
# endif
# error "this should not happen"
# endif
# if (ULONG_MAX != LZO_0xffffffffL)
# error "this should not happen"
# endif
#endif
#if !defined(__LZO_MM_OVERRIDE)
#if (LZO_ARCH_I086)
#if (UINT_MAX != LZO_0xffffL)
# error "this should not happen"
#endif
# if defined(_LARGE_CODE) && defined(_LARGE_DATA)
# elif defined(_LARGE_CODE)
# elif defined(_LARGE_DATA)
# else
# endif
#else
# error "unknown memory model"
#endif
#if (LZO_MM_TINY)
#endif
# if (_MSC_VER < 600)
# endif
#endif
#if (LZO_ARCH_I086PM) && !(LZO_HAVE_MM_HUGE_PTR)
# if (LZO_OS_DOS16)
# error "this should not happen"
# elif (LZO_CC_ZORTECHC)
# else
# error "this should not happen"
# endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
extern unsigned char _HShift;
#else
# error "FIXME - implement LZO_MM_AHSHIFT"
#endif
#ifdef __cplusplus
}
#endif
#endif
#if !defined(__MODEL__)
# error "FIXME - C166 __MODEL__"
#else
# error "FIXME - C166 __MODEL__"
#endif
#if !defined(__MODEL__)
# error "FIXME - MCS251 __MODEL__"
#else
# error "FIXME - MCS251 __MODEL__"
#endif
#if !defined(__MODEL__)
# error "FIXME - MCS51 __MODEL__"
#else
# error "FIXME - MCS51 __MODEL__"
#endif
#else
#endif
#if (LZO_MM_COMPACT)
#elif (LZO_MM_FLAT)
#elif (LZO_MM_HUGE)
#elif (LZO_MM_LARGE)
#elif (LZO_MM_PVP)
#elif (LZO_MM_SMALL)
#elif (LZO_MM_TINY)
#else
# error "unknown memory model"
#endif
#endif
#if defined(SIZEOF_SHORT)
#endif
#if defined(SIZEOF_INT)
#endif
#if defined(SIZEOF_LONG)
#endif
#if defined(SIZEOF_LONG_LONG)
#endif
#if defined(SIZEOF___INT16)
#endif
#if defined(SIZEOF___INT32)
#endif
#if defined(SIZEOF___INT64)
#endif
#if defined(SIZEOF_VOID_P)
#endif
#if defined(SIZEOF_SIZE_T)
#endif
#if defined(SIZEOF_PTRDIFF_T)
#endif
#if !defined(LZO_SIZEOF_SHORT)
# if (LZO_ARCH_CRAY_PVP)
# else
# error "LZO_SIZEOF_SHORT"
# endif
#endif
#if !defined(LZO_SIZEOF_INT)
# if (LZO_ARCH_CRAY_PVP)
# else
# error "LZO_SIZEOF_INT"
# endif
#endif
#if !defined(LZO_SIZEOF_LONG)
# if (ULONG_MAX == LZO_0xffffffffL)
# else
# error "LZO_SIZEOF_LONG"
# endif
#endif
#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
# if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__)
# if (LZO_CC_GNUC >= 0x030300ul)
# if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0)
# endif
# endif
# endif
#endif
#endif
#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
#if (LZO_ARCH_I086 && LZO_CC_DMC)
#endif
#endif
#endif
#if defined(__cplusplus) && (LZO_CC_GNUC)
# if (LZO_CC_GNUC < 0x020800ul)
# endif
#endif
#if (LZO_CFG_NO_LONG_LONG) || defined(__NO_LONG_LONG)
#endif
#if !defined(LZO_SIZEOF_VOID_P)
#if (LZO_ARCH_I086)
# else
# error "LZO_MM"
# endif
# if defined(__NORMAL_MODE__)
# else
# endif
# endif
# if defined(__m32c_cpu__) || defined(__m32cm_cpu__)
# else
# endif
#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
#elif (LZO_ARCH_SPU)
# if 0
# define __LZO_WORDSIZE 16
# endif
#else
#endif
#endif
#if !defined(LZO_WORDSIZE)
# if defined(__LZO_WORDSIZE)
# else
# endif
#endif
#if !defined(LZO_SIZEOF_SIZE_T)
#if (LZO_ARCH_I086 || LZO_ARCH_M16C)
#else
#endif
#endif
#if !defined(LZO_SIZEOF_PTRDIFF_T)
#if (LZO_ARCH_I086)
# if (LZO_CC_BORLANDC || LZO_CC_TURBOC)
# else
# endif
# else
# error "LZO_MM"
# endif
#else
#endif
#endif
#if (LZO_ABI_NEUTRAL_ENDIAN)
#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP)
#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430)
# if (__LITTLE_ENDIAN__ == 1)
# else
# endif
#endif
#endif
#if (LZO_ABI_BIG_ENDIAN) && (LZO_ABI_LITTLE_ENDIAN)
# error "this should not happen"
#endif
#if (LZO_ABI_BIG_ENDIAN)
#endif
#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8)
#endif
#if !defined(__LZO_LIBC_OVERRIDE)
#if (LZO_LIBC_NAKED)
#elif defined(__dietlibc__)
#elif defined(_NEWLIB_VERSION)
# if defined(__UCLIBC_SUBLEVEL__)
# define LZO_LIBC_UCLIBC (__UCLIBC_MAJOR__ * 0x10000L + __UCLIBC_MINOR__ * 0x100 + __UCLIBC_SUBLEVEL__)
# else
# endif
#else
#endif
#endif
#if !defined(__lzo_gnuc_extension__)
#if (LZO_CC_GNUC >= 0x020800ul)
#else
#endif
#endif
#if !defined(__lzo_ua_volatile)
# define __lzo_ua_volatile volatile
#endif
#if !defined(__lzo_alignof)
#endif
#endif
#if defined(__lzo_alignof)
#endif
#if !defined(__lzo_constructor)
#if (LZO_CC_GNUC >= 0x030400ul)
#endif
#endif
#if defined(__lzo_constructor)
#endif
#if !defined(__lzo_destructor)
#if (LZO_CC_GNUC >= 0x030400ul)
#endif
#endif
#if defined(__lzo_destructor)
#endif
#if (__lzo_HAVE_destructor) && !(__lzo_HAVE_constructor)
# error "this should not happen"
#endif
#if !defined(__lzo_inline)
#elif defined(__cplusplus)
# define __lzo_inline inline
#elif (LZO_CC_CILLY || LZO_CC_CLANG || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
#elif (LZO_CC_DMC)
# define __lzo_inline inline
#endif
#endif
#if defined(__lzo_inline)
#else
#endif
#if !defined(__lzo_forceinline)
#if (LZO_CC_GNUC >= 0x030200ul)
#endif
#endif
#if defined(__lzo_forceinline)
#else
#endif
#if !defined(__lzo_noinline)
# if defined(__cplusplus)
# else
# endif
#endif
#endif
#if defined(__lzo_noinline)
#else
#endif
# error "this should not happen"
#endif
#if !defined(__lzo_noreturn)
#if (LZO_CC_GNUC >= 0x020700ul)
#endif
#endif
#if defined(__lzo_noreturn)
#else
#endif
#if !defined(__lzo_nothrow)
#if (LZO_CC_GNUC >= 0x030300ul)
#endif
#endif
#if defined(__lzo_nothrow)
#else
#endif
#if !defined(__lzo_restrict)
#if (LZO_CC_GNUC >= 0x030400ul)
#endif
#endif
#if defined(__lzo_restrict)
#else
#endif
#if !defined(__lzo_likely) && !defined(__lzo_unlikely)
#if (LZO_CC_GNUC >= 0x030200ul)
#endif
#endif
#if defined(__lzo_likely)
#else
# define __lzo_likely(e) (e)
#endif
#if defined(__lzo_unlikely)
#else
# define __lzo_unlikely(e) (e)
#endif
#if !defined(LZO_UNUSED)
# elif (LZO_CC_KEILC)
# elif (LZO_CC_PACIFICC)
# else
# endif
#endif
#if !defined(LZO_UNUSED_FUNC)
# elif (LZO_CC_MSC)
# else
# endif
#endif
#if !defined(LZO_UNUSED_LABEL)
# if (LZO_CC_WATCOMC) && defined(__cplusplus)
# define LZO_UNUSED_LABEL(l) if (0) goto l
# else
# endif
#endif
#if !defined(LZO_DEFINE_UNINITIALIZED_VAR)
# if 0
# elif 0 && (LZO_CC_GNUC)
# else
# endif
#endif
#if !defined(LZO_UNCONST_CAST)
# if 0 && defined(__cplusplus)
# define LZO_UNCONST_CAST(t,e) (const_cast<t> (e))
# else
# define LZO_UNCONST_CAST(t,e) ((t) ((void *) ((char *) ((const void *) (e)))))
# endif
#endif
#if !defined(LZO_COMPILE_TIME_ASSERT_HEADER)
# if (LZO_CC_AZTECC || LZO_CC_ZORTECHC)
# else
# endif
#endif
#if !defined(LZO_COMPILE_TIME_ASSERT)
# if (LZO_CC_AZTECC)
# else
# endif
#endif
#if (LZO_ARCH_I086 || LZO_ARCH_I386) && (LZO_OS_DOS16 || LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_OS216 || LZO_OS_WIN16 || LZO_OS_WIN32 || LZO_OS_WIN64)
# else
# endif
# elif (LZO_CC_WATCOMC)
# else
# endif
# if defined(_DLL)
# else
# endif
# else
# endif
#endif
#if !defined(__lzo_cdecl)
#endif
#if !defined(__lzo_cdecl_atexit)
#endif
#if !defined(__lzo_cdecl_main)
#endif
#if !defined(__lzo_cdecl_qsort)
#endif
#if !defined(__lzo_cdecl_sighandler)
#endif
#if !defined(__lzo_cdecl_va)
#endif
#if !(LZO_CFG_NO_WINDOWS_H)
# else
# endif
#endif
#endif
#if (LZO_ARCH_ALPHA)
#elif (LZO_ARCH_ARM)
# if defined(__mc68020__) && !defined(__mcoldfire__)
# endif
# if (LZO_ABI_BIG_ENDIAN)
# endif
# if (LZO_SIZEOF_SIZE_T == 8)
# endif
#elif (LZO_ARCH_SH)
#endif
#ifndef LZO_CFG_NO_INLINE_ASM
#if (LZO_CC_LLVM)
#endif
#endif
#ifndef LZO_CFG_NO_UNALIGNED
#if (LZO_ABI_NEUTRAL_ENDIAN) || (LZO_ARCH_GENERIC)
#endif
#endif
#if (LZO_CFG_NO_UNALIGNED)
#endif
#if (LZO_CFG_NO_INLINE_ASM)
#elif (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
#endif
#if (LZO_ASM_SYNTAX_GNUC)
#else
#endif
#endif
#if defined(__LZO_INFOSTR_MM)
#elif defined(LZO_INFO_MM)
#else
#endif
#if defined(__LZO_INFOSTR_PM)
#elif defined(LZO_INFO_ABI_PM)
#else
#endif
#if defined(__LZO_INFOSTR_ENDIAN)
#elif defined(LZO_INFO_ABI_ENDIAN)
#else
#endif
#if defined(__LZO_INFOSTR_OSNAME)
#elif defined(LZO_INFO_OS_CONSOLE)
#elif defined(LZO_INFO_OS_POSIX)
#else
#endif
#if defined(__LZO_INFOSTR_LIBC)
#elif defined(LZO_INFO_LIBC)
#else
#endif
#if defined(__LZO_INFOSTR_CCVER)
#elif defined(LZO_INFO_CCVER)
#else
#endif
#define LZO_INFO_STRING \
#endif
#endif
#include "minilzo.h"
# error "version mismatch in miniLZO source files"
#endif
#ifdef MINILZO_HAVE_CONFIG_H
#endif
#ifndef __LZO_CONF_H
#if !defined(__LZO_IN_MINILZO)
#if (LZO_CFG_FREESTANDING)
#endif
#if (LZO_CFG_NO_UNALIGNED)
#endif
#if (LZO_ARCH_GENERIC)
#endif
#if (LZO_ABI_NEUTRAL_ENDIAN)
#endif
#if (LZO_HAVE_CONFIG_H)
#endif
#if defined(LZO_CFG_EXTRA_CONFIG_HEADER)
# include LZO_CFG_EXTRA_CONFIG_HEADER
#endif
#if defined(__LZOCONF_H) || defined(__LZOCONF_H_INCLUDED)
# error "include this file first"
#endif
#endif
# error "version mismatch"
#endif
#if (LZO_CC_BORLANDC && LZO_ARCH_I086)
# pragma option -h
#endif
#endif
#endif
#if (LZO_CC_SUNPROC)
#if !defined(__cplusplus)
#endif
#endif
#if (__LZO_MMODEL_HUGE) && !(LZO_HAVE_MM_HUGE_PTR)
# error "this should not happen - check defines for __huge"
#endif
#if defined(__LZO_IN_MINILZO) || defined(LZO_CFG_FREESTANDING)
#elif 1
# include <string.h>
#else
#endif
#if (LZO_ARCH_I086)
#endif
#if !defined(lzo_uintptr_t)
# if defined(__LZO_MMODEL_HUGE)
# define lzo_uintptr_t unsigned long
typedef char* lzo_uintptr_t;
# define lzo_uintptr_t unsigned long
# define lzo_uintptr_t unsigned int
# define lzo_uintptr_t unsigned long long
# else
# endif
#endif
#if 1 && !defined(LZO_CFG_FREESTANDING)
#if 1 && !defined(HAVE_STRING_H)
#endif
#if 1 && !defined(HAVE_MEMCMP)
#endif
#if 1 && !defined(HAVE_MEMCPY)
#endif
#if 1 && !defined(HAVE_MEMMOVE)
#endif
#if 1 && !defined(HAVE_MEMSET)
#endif
#endif
#if 1 && defined(HAVE_STRING_H)
#include <string.h>
#endif
#if (LZO_CFG_FREESTANDING)
#endif
#if !(HAVE_MEMCMP)
# define lzo_memcmp(a,b,c) memcmp(a,b,c)
#endif
#if !(HAVE_MEMCPY)
# define lzo_memcpy(a,b,c) memcpy(a,b,c)
#endif
#if !(HAVE_MEMMOVE)
# define lzo_memmove(a,b,c) memmove(a,b,c)
#endif
#if !(HAVE_MEMSET)
# define lzo_memset(a,b,c) memset(a,b,c)
#endif
#if (LZO_CFG_FREESTANDING)
# define assert(e) ((void)0)
#else
# if !defined(LZO_DEBUG)
# define NDEBUG 1
# endif
# include <assert.h>
#endif
#if 0 && defined(__BOUNDS_CHECKING_ON)
# include <unchecked.h>
#else
#endif
#if !defined(__lzo_inline)
#endif
#if !defined(__lzo_forceinline)
#endif
#if !defined(__lzo_noinline)
#endif
#if (LZO_CFG_PGO)
# define __acc_likely(e) (e)
# define __acc_unlikely(e) (e)
# define __lzo_likely(e) (e)
# define __lzo_unlikely(e) (e)
#endif
#if 1
# define LZO_BYTE(x) ((unsigned char) (x))
#else
# define LZO_BYTE(x) ((unsigned char) ((x) & 0xff))
#endif
#define LZO_MAX(a,b) ((a) >= (b) ? (a) : (b))
#define LZO_MIN(a,b) ((a) <= (b) ? (a) : (b))
#if !defined(DMUL)
#if 0
#else
#endif
#endif
# if (LZO_SIZEOF_SHORT == 2)
# endif
# if (LZO_SIZEOF_INT == 4)
# endif
#endif
#if 1 && (LZO_ARCH_AMD64)
# if defined(LZO_UINT64_MAX)
# endif
#endif
#if (LZO_CFG_NO_UNALIGNED)
#endif
#if defined(LZO_UNALIGNED_OK_2)
LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(unsigned short) == 2)
# if 1 && defined(ACC_UA_COPY16)
# else
# define UA_GET16(p) (* (__lzo_ua_volatile const lzo_ushortp) (__lzo_ua_volatile const lzo_voidp) (p))
# define UA_SET16(p,v) ((* (__lzo_ua_volatile lzo_ushortp) (__lzo_ua_volatile lzo_voidp) (p)) = (unsigned short) (v))
# endif
#endif
#if defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4)
# if 1 && defined(ACC_UA_COPY32)
# else
# define UA_GET32(p) (* (__lzo_ua_volatile const lzo_uint32p) (__lzo_ua_volatile const lzo_voidp) (p))
# define UA_SET32(p,v) ((* (__lzo_ua_volatile lzo_uint32p) (__lzo_ua_volatile lzo_voidp) (p)) = (lzo_uint32) (v))
# endif
#endif
#if defined(LZO_UNALIGNED_OK_8)
# if 1 && defined(ACC_UA_COPY64)
# else
# define UA_GET64(p) (* (__lzo_ua_volatile const lzo_uint64p) (__lzo_ua_volatile const lzo_voidp) (p))
# define UA_SET64(p,v) ((* (__lzo_ua_volatile lzo_uint64p) (__lzo_ua_volatile lzo_voidp) (p)) = (lzo_uint64) (v))
# endif
#endif
#define BZERO8_PTR(s,l,n) \
#ifndef __LZO_PTR_H
#ifdef __cplusplus
extern "C" {
#endif
#if !defined(lzo_uintptr_t)
# if (__LZO_MMODEL_HUGE)
# define lzo_uintptr_t unsigned long
# else
# ifdef __ACC_INTPTR_T_IS_POINTER
# endif
# endif
#endif
#if (LZO_ARCH_I086)
#elif (LZO_MM_PVP)
#else
#endif
typedef union
{
char a_char;
unsigned char a_uchar;
short a_short;
unsigned short a_ushort;
int a_int;
unsigned int a_uint;
long a_long;
unsigned long a_ulong;
#if defined(LZO_UINT64_MAX)
#endif
void * a_void_p;
unsigned char * a_uchar_p;
char * a_char_p;
}
#ifdef __cplusplus
}
#endif
#endif
#ifndef LZO_DETERMINISTIC
#endif
#ifndef LZO_DICT_USE_PTR
#if 0 && (LZO_ARCH_I086)
# define LZO_DICT_USE_PTR 0
#endif
#endif
#if (LZO_DICT_USE_PTR)
#else
#endif
#endif
#if !defined(MINILZO_CFG_SKIP_LZO_PTR)
{
#if (LZO_ARCH_I086)
#elif (LZO_MM_PVP)
p = (lzo_uintptr_t) (ptr);
p = (p << 3) | (p >> 61);
#else
#endif
return p;
}
LZO_PUBLIC(unsigned)
{
#if defined(__LZO_UINTPTR_T_IS_POINTER)
#else
lzo_uintptr_t p, n;
p = __lzo_ptr_linear(ptr);
#endif
assert((long)n >= 0);
return (unsigned)n;
}
#endif
#if !defined(MINILZO_CFG_SKIP_LZO_UTIL)
/* If you use the LZO library in a product, I would appreciate that you
* keep this copyright string in the executable of your product.
*/
static const char __lzo_copyright[] =
#if !defined(__LZO_IN_MINLZO)
#else
"\r\n\n"
"LZO data compression library.\n"
"$Copyright: LZO Copyright (C) 1996-2011 Markus Franz Xaver Johannes Oberhumer\n"
"<markus@oberhumer.com>\n"
"http://www.oberhumer.com $\n\n"
#endif
LZO_PUBLIC(const lzo_bytep)
lzo_copyright(void)
{
#if (LZO_OS_DOS16 && LZO_CC_TURBOC)
return (lzo_voidp) __lzo_copyright;
#else
return (const lzo_bytep) __lzo_copyright;
#endif
}
LZO_PUBLIC(unsigned)
lzo_version(void)
{
return LZO_VERSION;
}
LZO_PUBLIC(const char *)
lzo_version_string(void)
{
return LZO_VERSION_STRING;
}
LZO_PUBLIC(const char *)
lzo_version_date(void)
{
return LZO_VERSION_DATE;
}
LZO_PUBLIC(const lzo_charp)
_lzo_version_string(void)
{
return LZO_VERSION_STRING;
}
LZO_PUBLIC(const lzo_charp)
_lzo_version_date(void)
{
return LZO_VERSION_DATE;
}
{
unsigned k;
return 1;
while (len > 0)
{
len -= k;
if (k >= 16) do
{
buf += 16;
k -= 16;
} while (k >= 16);
if (k != 0) do
{
} while (--k > 0);
}
}
#endif
#if !defined(MINILZO_CFG_SKIP_LZO_STRING)
#if !defined(__LZO_MMODEL_HUGE)
#endif
#if !defined(LZOLIB_PUBLIC)
#endif
{
#if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMCMP)
if __lzo_likely(len > 0) do
{
if (d != 0)
return d;
} while __lzo_likely(--len > 0);
return 0;
#else
#endif
}
{
#if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMCPY)
return dest;
do
while __lzo_likely(--len > 0);
return dest;
#else
#endif
}
{
#if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMMOVE)
return dest;
{
do
while __lzo_likely(--len > 0);
}
else
{
do
while __lzo_likely(--len > 0);
}
return dest;
#else
#endif
}
{
#if (LZO_HAVE_MM_HUGE_PTR) || !(HAVE_MEMSET)
lzo_hbyte_p p = (lzo_hbyte_p) s;
if __lzo_likely(len > 0) do
*p++ = (unsigned char) c;
while __lzo_likely(--len > 0);
return s;
#else
#endif
}
#endif
#if !defined(MINILZO_CFG_SKIP_LZO_INIT)
#if !defined(__LZO_IN_MINILZO)
#if defined(LZO_UINT64_MAX)
#endif
#if !defined(__LZO_UINTPTR_T_IS_POINTER)
#endif
#endif
#if 0
#define WANT_lzo_bitops_clz32 1
#define WANT_lzo_bitops_clz64 1
#endif
#if (defined(_WIN32) || defined(_WIN64)) && ((LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || (LZO_CC_MSC && (_MSC_VER >= 1400)))
#include <intrin.h>
#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32) && 0
#pragma intrinsic(_BitScanReverse)
{
unsigned long r;
(void) _BitScanReverse(&r, v);
return (unsigned) r;
}
#endif
#pragma intrinsic(_BitScanReverse64)
{
unsigned long r;
(void) _BitScanReverse64(&r, v);
return (unsigned) r;
}
#endif
#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32)
#pragma intrinsic(_BitScanForward)
{
unsigned long r;
(void) _BitScanForward(&r, v);
return (unsigned) r;
}
#endif
#pragma intrinsic(_BitScanForward64)
{
unsigned long r;
(void) _BitScanForward64(&r, v);
return (unsigned) r;
}
#endif
#elif (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x030400ul) || (LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || LZO_CC_LLVM)
#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32)
#define lzo_bitops_clz32(v) ((unsigned) __builtin_clz(v))
#endif
#define lzo_bitops_clz64(v) ((unsigned) __builtin_clzll(v))
#endif
#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32)
#define lzo_bitops_ctz32(v) ((unsigned) __builtin_ctz(v))
#endif
#define lzo_bitops_ctz64(v) ((unsigned) __builtin_ctzll(v))
#endif
#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount32)
#define lzo_bitops_popcount32(v) ((unsigned) __builtin_popcount(v))
#endif
#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount64) && defined(LZO_UINT64_MAX)
#define lzo_bitops_popcount64(v) ((unsigned) __builtin_popcountll(v))
#endif
#endif
#if 0
#else
{
}
#endif
LZO_PUBLIC(int)
_lzo_config_check(void)
{
lzo_bool r = 1;
union {
#if defined(LZO_UNALIGNED_OK_8)
lzo_uint64 c[2];
#endif
} u;
lzo_voidp p;
u.a[0] = u.a[1] = 0;
p = u2p(&u, 0);
r &= ((* (lzo_bytep) p) == 0);
#if !defined(LZO_CFG_NO_CONFIG_CHECK)
#if defined(LZO_ABI_BIG_ENDIAN)
p = u2p(&u, 0);
r &= ((* (lzo_uintp) p) == 128);
#endif
#if defined(LZO_ABI_LITTLE_ENDIAN)
u.a[0] = u.a[1] = 0; u.b[0] = 128;
p = u2p(&u, 0);
r &= ((* (lzo_uintp) p) == 128);
#endif
#if defined(LZO_UNALIGNED_OK_2)
u.a[0] = u.a[1] = 0;
u.b[0] = 1; u.b[sizeof(unsigned short) + 1] = 2;
p = u2p(&u, 1);
r &= ((* (lzo_ushortp) p) == 0);
#endif
#if defined(LZO_UNALIGNED_OK_4)
u.a[0] = u.a[1] = 0;
p = u2p(&u, 1);
r &= ((* (lzo_uint32p) p) == 0);
#endif
#if defined(LZO_UNALIGNED_OK_8)
u.c[0] = u.c[1] = 0;
p = u2p(&u, 1);
r &= ((* (lzo_uint64p) p) == 0);
#endif
#if defined(lzo_bitops_clz32)
{ unsigned i; lzo_uint32 v = 1;
for (i = 0; i < 31; i++, v <<= 1)
r &= lzo_bitops_clz32(v) == 31 - i;
}
#endif
#if defined(lzo_bitops_clz64)
{ unsigned i; lzo_uint64 v = 1;
for (i = 0; i < 63; i++, v <<= 1)
r &= lzo_bitops_clz64(v) == 63 - i;
}
#endif
#if defined(lzo_bitops_ctz32)
{ unsigned i; lzo_uint32 v = 1;
for (i = 0; i < 31; i++, v <<= 1)
r &= lzo_bitops_ctz32(v) == i;
}
#endif
#if defined(lzo_bitops_ctz64)
{ unsigned i; lzo_uint64 v = 1;
for (i = 0; i < 63; i++, v <<= 1)
r &= lzo_bitops_ctz64(v) == i;
}
#endif
#endif
}
LZO_PUBLIC(int)
{
int r;
#if defined(__LZO_IN_MINILZO)
#else
#endif
if (v == 0)
return LZO_E_ERROR;
if (!r)
return LZO_E_ERROR;
r = _lzo_config_check();
if (r != LZO_E_OK)
return r;
return r;
}
#if !defined(__LZO_IN_MINILZO)
#if 0
#else
#endif
{
return 1;
}
#endif
#endif
#endif
#if !defined(MINILZO_CFG_SKIP_LZO1X_1_COMPRESS)
#if 1 && defined(UA_GET32)
#define LZO_DICT_USE_PTR 0
#define lzo_dict_t unsigned short
#endif
#ifndef D_BITS
#endif
#if 1
#else
#endif
#ifndef __LZO_CONFIG1X_H
#endif
#if !defined(__LZO_IN_MINILZO)
#endif
#ifndef LZO_EOF_CODE
#endif
#ifndef M2_MAX_OFFSET
#endif
#ifndef M2_MAX_LEN
#endif
#define M1_MARKER 0
#ifndef MIN_LOOKAHEAD
#endif
#if defined(LZO_NEED_DICT_H)
#ifndef LZO_HASH
#endif
#ifndef __LZO_DICT_H
#ifdef __cplusplus
extern "C" {
#endif
#endif
#if !defined(D_BITS)
# error "D_BITS is not defined"
#endif
#if (D_BITS < 16)
#else
#endif
#if !defined(DD_BITS)
# define DD_BITS 0
#endif
#if !defined(DL_BITS)
#endif
#if (DL_BITS < 16)
#else
#endif
# error "D_BITS does not match"
#endif
# error "invalid D_BITS"
#endif
# error "invalid DL_BITS"
#endif
# error "invalid DD_BITS"
#endif
#if !defined(DL_MIN_LEN)
#endif
#if !defined(DL_SHIFT)
#endif
#if !defined(LZO_HASH)
# error "choose a hashing strategy"
#endif
#if (DL_MIN_LEN == 3)
#else
# error "invalid DL_MIN_LEN"
#endif
#if (LZO_HASH == LZO_HASH_GZIP)
#else
# error "choose a hashing strategy"
#endif
#ifndef DINDEX
#endif
#endif
#endif
#if !defined(__LZO_HASH_INCREMENTAL)
# define DVAL_LOOKAHEAD 0
#endif
#if !defined(DVAL_ASSERT)
#if defined(__LZO_HASH_INCREMENTAL) && !defined(NDEBUG)
static void __attribute__((__unused__))
#else
static void
#endif
{
DVAL_FIRST(df,(p));
}
#else
#endif
#endif
#if (LZO_DICT_USE_PTR)
#else
#endif
#if (DD_BITS == 0)
#else
#endif
#if (LZO_DICT_USE_PTR)
m_off > max_offset )))
#else
(m_off == 0 || \
#endif
#if (LZO_DETERMINISTIC)
#else
#endif
#ifdef __cplusplus
}
#endif
#endif
#endif
#endif
#ifndef DO_COMPRESS
#endif
#endif
#if defined(UA_GET64)
#endif
#if (defined(_WIN32) || defined(_WIN64)) && ((LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || (LZO_CC_MSC && (_MSC_VER >= 1400)))
#include <intrin.h>
#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32) && 0
#pragma intrinsic(_BitScanReverse)
{
unsigned long r;
(void) _BitScanReverse(&r, v);
return (unsigned) r;
}
#endif
#pragma intrinsic(_BitScanReverse64)
{
unsigned long r;
(void) _BitScanReverse64(&r, v);
return (unsigned) r;
}
#endif
#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32)
#pragma intrinsic(_BitScanForward)
{
unsigned long r;
(void) _BitScanForward(&r, v);
return (unsigned) r;
}
#endif
#pragma intrinsic(_BitScanForward64)
{
unsigned long r;
(void) _BitScanForward64(&r, v);
return (unsigned) r;
}
#endif
#elif (LZO_CC_CLANG || (LZO_CC_GNUC >= 0x030400ul) || (LZO_CC_INTELC && (__INTEL_COMPILER >= 1000)) || LZO_CC_LLVM)
#if !defined(lzo_bitops_clz32) && defined(WANT_lzo_bitops_clz32)
#endif
#endif
#if !defined(lzo_bitops_ctz32) && defined(WANT_lzo_bitops_ctz32)
#endif
#endif
#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount32)
#endif
#if !defined(lzo_bitops_popcount32) && defined(WANT_lzo_bitops_popcount64) && defined(LZO_UINT64_MAX)
#endif
#endif
static __lzo_noinline lzo_uint
{
for (;;)
{
#if !(LZO_DETERMINISTIC)
next:
break;
goto literal;
#if 1
goto try_match;
#endif
goto literal;
goto try_match;
goto literal;
#if defined(UA_GET32)
#else
#endif
{
continue;
}
#else
{
next:
break;
goto literal;
}
#endif
{
if (t != 0)
{
if (t <= 3)
{
#if defined(UA_COPY32)
op += t;
#else
#endif
}
else if (t <= 16)
{
#if defined(UA_COPY64)
#else
#endif
op += t;
}
#endif
else
{
if (t <= 18)
else
{
*op++ = 0;
{
tt -= 255;
* (volatile unsigned char *) op++ = 0;
#else
*op++ = 0;
#endif
}
}
do {
#if defined(UA_COPY64)
#else
#endif
} while (t >= 16); if (t > 0)
#endif
}
}
}
m_len = 4;
{
#if defined(UA_GET64)
lzo_uint64 v;
if __lzo_unlikely(v == 0) {
do {
m_len += 8;
goto m_len_done;
} while (v == 0);
}
#if (LZO_ABI_LITTLE_ENDIAN) && defined(lzo_bitops_ctz64)
if ((v & UCHAR_MAX) == 0) do {
v >>= CHAR_BIT;
m_len += 1;
} while ((v & UCHAR_MAX) == 0);
#else
m_len += 1;
#endif
lzo_uint32 v;
if __lzo_unlikely(v == 0) {
do {
m_len += 4;
goto m_len_done;
} while (v == 0);
}
#if (LZO_ABI_LITTLE_ENDIAN) && defined(lzo_bitops_ctz32)
if ((v & UCHAR_MAX) == 0) do {
v >>= CHAR_BIT;
m_len += 1;
} while ((v & UCHAR_MAX) == 0);
#else
m_len += 1;
#endif
#else
do {
m_len += 1;
goto m_len_done;
}
#endif
}
{
m_off -= 1;
#if defined(LZO1X)
#endif
}
else if (m_off <= M3_MAX_OFFSET)
{
m_off -= 1;
if (m_len <= M3_MAX_LEN)
else
{
m_len -= M3_MAX_LEN;
{
m_len -= 255;
* (volatile unsigned char *) op++ = 0;
#else
*op++ = 0;
#endif
}
}
}
else
{
m_off -= 0x4000;
if (m_len <= M4_MAX_LEN)
else
{
m_len -= M4_MAX_LEN;
{
m_len -= 255;
* (volatile unsigned char *) op++ = 0;
#else
*op++ = 0;
#endif
}
}
}
goto next;
}
}
LZO_PUBLIC(int)
{
lzo_uint t = 0;
while (l > 20)
{
#if 0 || (LZO_DETERMINISTIC)
#endif
break;
#if (LZO_DETERMINISTIC)
#endif
l -= ll;
}
t += l;
if (t > 0)
{
else if (t <= 3)
else if (t <= 18)
else
{
*op++ = 0;
while (tt > 255)
{
tt -= 255;
* (volatile unsigned char *) op++ = 0;
#else
*op++ = 0;
#endif
}
}
}
*op++ = 0;
*op++ = 0;
return LZO_E_OK;
}
#endif
#if !defined(MINILZO_CFG_SKIP_LZO1X_DECOMPRESS)
#if defined(LZO_TEST_OVERRUN)
# if !defined(LZO_TEST_OVERRUN_INPUT)
# endif
# if !defined(LZO_TEST_OVERRUN_OUTPUT)
# endif
# if !defined(LZO_TEST_OVERRUN_LOOKBEHIND)
# endif
#endif
#if defined(LZO_TEST_OVERRUN_INPUT)
# if (LZO_TEST_OVERRUN_INPUT >= 1)
# endif
# if (LZO_TEST_OVERRUN_INPUT >= 2)
# define NEED_IP(x) \
# endif
#endif
#if defined(LZO_TEST_OVERRUN_OUTPUT)
# if (LZO_TEST_OVERRUN_OUTPUT >= 1)
# endif
# if (LZO_TEST_OVERRUN_OUTPUT >= 2)
# define NEED_OP(x) \
# endif
#endif
#if defined(LZO_TEST_OVERRUN_LOOKBEHIND)
#else
#endif
#if !defined(LZO_EOF_CODE) && !defined(TEST_IP)
#endif
#if defined(TEST_IP)
#else
#endif
#if defined(TEST_OP)
#else
#endif
#if defined(NEED_IP)
#else
# define NEED_IP(x) ((void) 0)
#endif
#if defined(NEED_OP)
#else
# define NEED_OP(x) ((void) 0)
#endif
#if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP)
#endif
#if defined(HAVE_TEST_OP) || defined(HAVE_NEED_OP)
#endif
#if defined(DO_DECOMPRESS)
LZO_PUBLIC(int)
#endif
{
register lzo_uint t;
#if defined(COPY_DICT)
#else
#endif
#if defined(HAVE_ANY_OP)
#endif
#if defined(LZO1Z)
#endif
#if defined(COPY_DICT)
if (dict)
{
if (dict_len > M4_MAX_OFFSET)
{
}
}
else
{
dict_len = 0;
}
#endif
*out_len = 0;
if (*ip > 17)
{
t = *ip++ - 17;
if (t < 4)
goto match_next;
goto first_literal_run;
}
{
t = *ip++;
if (t >= 16)
goto match;
if (t == 0)
{
NEED_IP(1);
while (*ip == 0)
{
t += 255;
ip++;
NEED_IP(1);
}
t += 15 + *ip++;
}
#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4)
t += 3;
if (t >= 8) do
{
} while (t >= 8);
if (t >= 4)
{
}
if (t > 0)
{
}
#if !defined(LZO_UNALIGNED_OK_4)
{
#endif
if (--t > 0)
{
if (t >= 4)
{
do {
} while (t >= 4);
}
else
}
#if !defined(LZO_UNALIGNED_OK_4)
}
else
#endif
#endif
#if !defined(LZO_UNALIGNED_OK_4) && !defined(LZO_UNALIGNED_OK_8)
{
}
#endif
t = *ip++;
if (t >= 16)
goto match;
#if defined(COPY_DICT)
#if defined(LZO1Z)
last_m_off = m_off;
#else
#endif
NEED_OP(3);
#else
#if defined(LZO1Z)
last_m_off = t;
#else
m_pos -= t >> 2;
#endif
#endif
goto match_done;
do {
if (t >= 64)
{
#if defined(COPY_DICT)
#if defined(LZO1X)
t = (t >> 5) - 1;
t = (t >> 4) - 3;
m_off = t & 0x1f;
if (m_off >= 0x1c)
m_off = last_m_off;
else
{
last_m_off = m_off;
}
t = (t >> 5) - 1;
#endif
#else
#if defined(LZO1X)
t = (t >> 5) - 1;
t = (t >> 4) - 3;
{
if (off >= 0x1c)
{
assert(last_m_off > 0);
m_pos -= last_m_off;
}
else
{
last_m_off = off;
}
}
t = (t >> 5) - 1;
#endif
goto copy_match;
#endif
}
else if (t >= 32)
{
t &= 31;
if (t == 0)
{
NEED_IP(1);
while (*ip == 0)
{
t += 255;
ip++;
NEED_IP(1);
}
t += 31 + *ip++;
}
#if defined(COPY_DICT)
#if defined(LZO1Z)
last_m_off = m_off;
#else
#endif
#else
#if defined(LZO1Z)
{
last_m_off = off;
}
#else
#endif
#endif
ip += 2;
}
else if (t >= 16)
{
#if defined(COPY_DICT)
#else
#endif
t &= 7;
if (t == 0)
{
NEED_IP(1);
while (*ip == 0)
{
t += 255;
ip++;
NEED_IP(1);
}
t += 7 + *ip++;
}
#if defined(COPY_DICT)
#if defined(LZO1Z)
#else
#endif
ip += 2;
if (m_off == 0)
goto eof_found;
m_off += 0x4000;
#if defined(LZO1Z)
last_m_off = m_off;
#endif
#else
#if defined(LZO1Z)
#else
#endif
ip += 2;
goto eof_found;
m_pos -= 0x4000;
#if defined(LZO1Z)
#endif
#endif
}
else
{
#if defined(COPY_DICT)
#if defined(LZO1Z)
last_m_off = m_off;
#else
#endif
NEED_OP(2);
#else
#if defined(LZO1Z)
last_m_off = t;
#else
m_pos -= t >> 2;
#endif
#endif
goto match_done;
}
#if defined(COPY_DICT)
#else
#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4)
{
t += (3 - 1);
if (t >= 8) do
{
} while (t >= 8);
if (t >= 4)
{
}
if (t > 0)
{
}
}
else
#if !defined(LZO_UNALIGNED_OK_4)
{
#else
{
#endif
do {
} while (t >= 4);
}
else
#endif
{
}
#endif
#if defined(LZO1Z)
#else
#endif
if (t == 0)
break;
#if 0
#else
#endif
t = *ip++;
}
#if defined(HAVE_TEST_IP) || defined(HAVE_TEST_OP)
return LZO_E_EOF_NOT_FOUND;
#endif
assert(t == 1);
#if defined(HAVE_NEED_IP)
return LZO_E_INPUT_OVERRUN;
#endif
#if defined(HAVE_NEED_OP)
return LZO_E_OUTPUT_OVERRUN;
#endif
#if defined(LZO_TEST_OVERRUN_LOOKBEHIND)
return LZO_E_LOOKBEHIND_OVERRUN;
#endif
}
#endif
#if !defined(MINILZO_CFG_SKIP_LZO1X_DECOMPRESS_SAFE)
#if defined(LZO_TEST_OVERRUN)
# if !defined(LZO_TEST_OVERRUN_INPUT)
# endif
# if !defined(LZO_TEST_OVERRUN_OUTPUT)
# endif
# if !defined(LZO_TEST_OVERRUN_LOOKBEHIND)
# endif
#endif
#if defined(LZO_TEST_OVERRUN_INPUT)
# if (LZO_TEST_OVERRUN_INPUT >= 1)
# endif
# if (LZO_TEST_OVERRUN_INPUT >= 2)
# define NEED_IP(x) \
# endif
#endif
#if defined(LZO_TEST_OVERRUN_OUTPUT)
# if (LZO_TEST_OVERRUN_OUTPUT >= 1)
# endif
# if (LZO_TEST_OVERRUN_OUTPUT >= 2)
# define NEED_OP(x) \
# endif
#endif
#if defined(LZO_TEST_OVERRUN_LOOKBEHIND)
#else
#endif
#if !defined(LZO_EOF_CODE) && !defined(TEST_IP)
#endif
#if defined(TEST_IP)
#else
#endif
#if defined(TEST_OP)
#else
#endif
#if defined(NEED_IP)
#else
# define NEED_IP(x) ((void) 0)
#endif
#if defined(NEED_OP)
#else
# define NEED_OP(x) ((void) 0)
#endif
#if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP)
#endif
#if defined(HAVE_TEST_OP) || defined(HAVE_NEED_OP)
#endif
#if defined(DO_DECOMPRESS)
LZO_PUBLIC(int)
#endif
{
register lzo_uint t;
#if defined(COPY_DICT)
#else
#endif
#if defined(HAVE_ANY_OP)
#endif
#if defined(LZO1Z)
#endif
#if defined(COPY_DICT)
if (dict)
{
if (dict_len > M4_MAX_OFFSET)
{
}
}
else
{
dict_len = 0;
}
#endif
*out_len = 0;
if (*ip > 17)
{
t = *ip++ - 17;
if (t < 4)
goto match_next;
goto first_literal_run;
}
{
t = *ip++;
if (t >= 16)
goto match;
if (t == 0)
{
NEED_IP(1);
while (*ip == 0)
{
t += 255;
ip++;
NEED_IP(1);
}
t += 15 + *ip++;
}
#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4)
t += 3;
if (t >= 8) do
{
} while (t >= 8);
if (t >= 4)
{
}
if (t > 0)
{
}
#if !defined(LZO_UNALIGNED_OK_4)
{
#endif
if (--t > 0)
{
if (t >= 4)
{
do {
} while (t >= 4);
}
else
}
#if !defined(LZO_UNALIGNED_OK_4)
}
else
#endif
#endif
#if !defined(LZO_UNALIGNED_OK_4) && !defined(LZO_UNALIGNED_OK_8)
{
}
#endif
t = *ip++;
if (t >= 16)
goto match;
#if defined(COPY_DICT)
#if defined(LZO1Z)
last_m_off = m_off;
#else
#endif
NEED_OP(3);
#else
#if defined(LZO1Z)
last_m_off = t;
#else
m_pos -= t >> 2;
#endif
#endif
goto match_done;
do {
if (t >= 64)
{
#if defined(COPY_DICT)
#if defined(LZO1X)
t = (t >> 5) - 1;
t = (t >> 4) - 3;
m_off = t & 0x1f;
if (m_off >= 0x1c)
m_off = last_m_off;
else
{
last_m_off = m_off;
}
t = (t >> 5) - 1;
#endif
#else
#if defined(LZO1X)
t = (t >> 5) - 1;
t = (t >> 4) - 3;
{
if (off >= 0x1c)
{
assert(last_m_off > 0);
m_pos -= last_m_off;
}
else
{
last_m_off = off;
}
}
t = (t >> 5) - 1;
#endif
goto copy_match;
#endif
}
else if (t >= 32)
{
t &= 31;
if (t == 0)
{
NEED_IP(1);
while (*ip == 0)
{
t += 255;
ip++;
NEED_IP(1);
}
t += 31 + *ip++;
}
#if defined(COPY_DICT)
#if defined(LZO1Z)
last_m_off = m_off;
#else
#endif
#else
#if defined(LZO1Z)
{
last_m_off = off;
}
#else
#endif
#endif
ip += 2;
}
else if (t >= 16)
{
#if defined(COPY_DICT)
#else
#endif
t &= 7;
if (t == 0)
{
NEED_IP(1);
while (*ip == 0)
{
t += 255;
ip++;
NEED_IP(1);
}
t += 7 + *ip++;
}
#if defined(COPY_DICT)
#if defined(LZO1Z)
#else
#endif
ip += 2;
if (m_off == 0)
goto eof_found;
m_off += 0x4000;
#if defined(LZO1Z)
last_m_off = m_off;
#endif
#else
#if defined(LZO1Z)
#else
#endif
ip += 2;
goto eof_found;
m_pos -= 0x4000;
#if defined(LZO1Z)
#endif
#endif
}
else
{
#if defined(COPY_DICT)
#if defined(LZO1Z)
last_m_off = m_off;
#else
#endif
NEED_OP(2);
#else
#if defined(LZO1Z)
last_m_off = t;
#else
m_pos -= t >> 2;
#endif
#endif
goto match_done;
}
#if defined(COPY_DICT)
#else
#if defined(LZO_UNALIGNED_OK_8) && defined(LZO_UNALIGNED_OK_4)
{
t += (3 - 1);
if (t >= 8) do
{
} while (t >= 8);
if (t >= 4)
{
}
if (t > 0)
{
}
}
else
#if !defined(LZO_UNALIGNED_OK_4)
{
#else
{
#endif
do {
} while (t >= 4);
}
else
#endif
{
}
#endif
#if defined(LZO1Z)
#else
#endif
if (t == 0)
break;
#if 0
#else
#endif
t = *ip++;
}
#if defined(HAVE_TEST_IP) || defined(HAVE_TEST_OP)
return LZO_E_EOF_NOT_FOUND;
#endif
assert(t == 1);
#if defined(HAVE_NEED_IP)
return LZO_E_INPUT_OVERRUN;
#endif
#if defined(HAVE_NEED_OP)
return LZO_E_OUTPUT_OVERRUN;
#endif
#if defined(LZO_TEST_OVERRUN_LOOKBEHIND)
return LZO_E_LOOKBEHIND_OVERRUN;
#endif
}
#endif
/***** End of minilzo.c *****/