kusano 7d535a
/* minilzo.c -- mini subset of the LZO real-time data compression library
kusano 7d535a
kusano 7d535a
   This file is part of the LZO real-time data compression library.
kusano 7d535a
kusano 7d535a
   Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
kusano 7d535a
   All Rights Reserved.
kusano 7d535a
kusano 7d535a
   The LZO library is free software; you can redistribute it and/or
kusano 7d535a
   modify it under the terms of the GNU General Public License as
kusano 7d535a
   published by the Free Software Foundation; either version 2 of
kusano 7d535a
   the License, or (at your option) any later version.
kusano 7d535a
kusano 7d535a
   The LZO library is distributed in the hope that it will be useful,
kusano 7d535a
   but WITHOUT ANY WARRANTY; without even the implied warranty of
kusano 7d535a
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
kusano 7d535a
   GNU General Public License for more details.
kusano 7d535a
kusano 7d535a
   You should have received a copy of the GNU General Public License
kusano 7d535a
   along with the LZO library; see the file COPYING.
kusano 7d535a
   If not, write to the Free Software Foundation, Inc.,
kusano 7d535a
   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
kusano 7d535a
kusano 7d535a
   Markus F.X.J. Oberhumer
kusano 7d535a
   <markus@oberhumer.com>
kusano 7d535a
   http://www.oberhumer.com/opensource/lzo/
kusano 7d535a
 */
kusano 7d535a
kusano 7d535a
/*
kusano 7d535a
 * NOTE:
kusano 7d535a
 *   the full LZO package can be found at
kusano 7d535a
 *   http://www.oberhumer.com/opensource/lzo/
kusano 7d535a
 */
kusano 7d535a
kusano 7d535a
#define __LZO_IN_MINILZO
kusano 7d535a
#define LZO_BUILD
kusano 7d535a
kusano 7d535a
#if defined(LZO_CFG_FREESTANDING)
kusano 7d535a
#  undef MINILZO_HAVE_CONFIG_H
kusano 7d535a
#  define LZO_LIBC_FREESTANDING 1
kusano 7d535a
#  define LZO_OS_FREESTANDING 1
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#ifdef MINILZO_HAVE_CONFIG_H
kusano 7d535a
#  include <config.h>
kusano 7d535a
#endif
kusano 7d535a
#include <limits.h>
kusano 7d535a
#include <stddef.h>
kusano 7d535a
#if defined(MINILZO_CFG_USE_INTERNAL_LZODEFS)
kusano 7d535a
kusano 7d535a
#ifndef __LZODEFS_H_INCLUDED
kusano 7d535a
#define __LZODEFS_H_INCLUDED 1
kusano 7d535a
kusano 7d535a
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
kusano 7d535a
#  define __CYGWIN__ __CYGWIN32__
kusano 7d535a
#endif
kusano 7d535a
#if defined(__IBMCPP__) && !defined(__IBMC__)
kusano 7d535a
#  define __IBMC__ __IBMCPP__
kusano 7d535a
#endif
kusano 7d535a
#if defined(__ICL) && defined(_WIN32) && !defined(__INTEL_COMPILER)
kusano 7d535a
#  define __INTEL_COMPILER __ICL
kusano 7d535a
#endif
kusano 7d535a
#if 1 && defined(__INTERIX) && defined(__GNUC__) && !defined(_ALL_SOURCE)
kusano 7d535a
#  define _ALL_SOURCE 1
kusano 7d535a
#endif
kusano 7d535a
#if defined(__mips__) && defined(__R5900__)
kusano 7d535a
#  if !defined(__LONG_MAX__)
kusano 7d535a
#    define __LONG_MAX__ 9223372036854775807L
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__INTEL_COMPILER) && defined(__linux__)
kusano 7d535a
#  pragma warning(disable: 193)
kusano 7d535a
#endif
kusano 7d535a
#if defined(__KEIL__) && defined(__C166__)
kusano 7d535a
#  pragma warning disable = 322
kusano 7d535a
#elif 0 && defined(__C251__)
kusano 7d535a
#  pragma warning disable = 322
kusano 7d535a
#endif
kusano 7d535a
#if defined(_MSC_VER) && !defined(__INTEL_COMPILER) && !defined(__MWERKS__)
kusano 7d535a
#  if (_MSC_VER >= 1300)
kusano 7d535a
#    pragma warning(disable: 4668)
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if 0 && defined(__WATCOMC__)
kusano 7d535a
#  if (__WATCOMC__ >= 1050) && (__WATCOMC__ < 1060)
kusano 7d535a
#    pragma warning 203 9
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__BORLANDC__) && defined(__MSDOS__) && !defined(__FLAT__)
kusano 7d535a
#  pragma option -h
kusano 7d535a
#endif
kusano 7d535a
#if 0
kusano 7d535a
#define LZO_0xffffL             0xfffful
kusano 7d535a
#define LZO_0xffffffffL         0xfffffffful
kusano 7d535a
#else
kusano 7d535a
#define LZO_0xffffL             65535ul
kusano 7d535a
#define LZO_0xffffffffL         4294967295ul
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_0xffffL == LZO_0xffffffffL)
kusano 7d535a
#  error "your preprocessor is broken 1"
kusano 7d535a
#endif
kusano 7d535a
#if (16ul * 16384ul != 262144ul)
kusano 7d535a
#  error "your preprocessor is broken 2"
kusano 7d535a
#endif
kusano 7d535a
#if 0
kusano 7d535a
#if (32767 >= 4294967295ul)
kusano 7d535a
#  error "your preprocessor is broken 3"
kusano 7d535a
#endif
kusano 7d535a
#if (65535u >= 4294967295ul)
kusano 7d535a
#  error "your preprocessor is broken 4"
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if (UINT_MAX == LZO_0xffffL)
kusano 7d535a
#if defined(__ZTC__) && defined(__I86__) && !defined(__OS2__)
kusano 7d535a
#  if !defined(MSDOS)
kusano 7d535a
#    define MSDOS 1
kusano 7d535a
#  endif
kusano 7d535a
#  if !defined(_MSDOS)
kusano 7d535a
#    define _MSDOS 1
kusano 7d535a
#  endif
kusano 7d535a
#elif 0 && defined(__VERSION) && defined(MB_LEN_MAX)
kusano 7d535a
#  if (__VERSION == 520) && (MB_LEN_MAX == 1)
kusano 7d535a
#    if !defined(__AZTEC_C__)
kusano 7d535a
#      define __AZTEC_C__ __VERSION
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__DOS__)
kusano 7d535a
#      define __DOS__ 1
kusano 7d535a
#    endif
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(_MSC_VER) && defined(M_I86HM) && (UINT_MAX == LZO_0xffffL)
kusano 7d535a
#  define ptrdiff_t long
kusano 7d535a
#  define _PTRDIFF_T_DEFINED
kusano 7d535a
#endif
kusano 7d535a
#if (UINT_MAX == LZO_0xffffL)
kusano 7d535a
#  undef __LZO_RENAME_A
kusano 7d535a
#  undef __LZO_RENAME_B
kusano 7d535a
#  if defined(__AZTEC_C__) && defined(__DOS__)
kusano 7d535a
#    define __LZO_RENAME_A 1
kusano 7d535a
#  elif defined(_MSC_VER) && defined(MSDOS)
kusano 7d535a
#    if (_MSC_VER < 600)
kusano 7d535a
#      define __LZO_RENAME_A 1
kusano 7d535a
#    elif (_MSC_VER < 700)
kusano 7d535a
#      define __LZO_RENAME_B 1
kusano 7d535a
#    endif
kusano 7d535a
#  elif defined(__TSC__) && defined(__OS2__)
kusano 7d535a
#    define __LZO_RENAME_A 1
kusano 7d535a
#  elif defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0410)
kusano 7d535a
#    define __LZO_RENAME_A 1
kusano 7d535a
#  elif defined(__PACIFIC__) && defined(DOS)
kusano 7d535a
#    if !defined(__far)
kusano 7d535a
#      define __far far
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__near)
kusano 7d535a
#      define __near near
kusano 7d535a
#    endif
kusano 7d535a
#  endif
kusano 7d535a
#  if defined(__LZO_RENAME_A)
kusano 7d535a
#    if !defined(__cdecl)
kusano 7d535a
#      define __cdecl cdecl
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__far)
kusano 7d535a
#      define __far far
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__huge)
kusano 7d535a
#      define __huge huge
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__near)
kusano 7d535a
#      define __near near
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__pascal)
kusano 7d535a
#      define __pascal pascal
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__huge)
kusano 7d535a
#      define __huge huge
kusano 7d535a
#    endif
kusano 7d535a
#  elif defined(__LZO_RENAME_B)
kusano 7d535a
#    if !defined(__cdecl)
kusano 7d535a
#      define __cdecl _cdecl
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__far)
kusano 7d535a
#      define __far _far
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__huge)
kusano 7d535a
#      define __huge _huge
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__near)
kusano 7d535a
#      define __near _near
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__pascal)
kusano 7d535a
#      define __pascal _pascal
kusano 7d535a
#    endif
kusano 7d535a
#  elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__)
kusano 7d535a
#    if !defined(__cdecl)
kusano 7d535a
#      define __cdecl cdecl
kusano 7d535a
#    endif
kusano 7d535a
#    if !defined(__pascal)
kusano 7d535a
#      define __pascal pascal
kusano 7d535a
#    endif
kusano 7d535a
#  endif
kusano 7d535a
#  undef __LZO_RENAME_A
kusano 7d535a
#  undef __LZO_RENAME_B
kusano 7d535a
#endif
kusano 7d535a
#if (UINT_MAX == LZO_0xffffL)
kusano 7d535a
#if defined(__AZTEC_C__) && defined(__DOS__)
kusano 7d535a
#  define LZO_BROKEN_CDECL_ALT_SYNTAX 1
kusano 7d535a
#elif defined(_MSC_VER) && defined(MSDOS)
kusano 7d535a
#  if (_MSC_VER < 600)
kusano 7d535a
#    define LZO_BROKEN_INTEGRAL_CONSTANTS 1
kusano 7d535a
#  endif
kusano 7d535a
#  if (_MSC_VER < 700)
kusano 7d535a
#    define LZO_BROKEN_INTEGRAL_PROMOTION 1
kusano 7d535a
#    define LZO_BROKEN_SIZEOF 1
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(__PACIFIC__) && defined(DOS)
kusano 7d535a
#  define LZO_BROKEN_INTEGRAL_CONSTANTS 1
kusano 7d535a
#elif defined(__TURBOC__) && defined(__MSDOS__)
kusano 7d535a
#  if (__TURBOC__ < 0x0150)
kusano 7d535a
#    define LZO_BROKEN_CDECL_ALT_SYNTAX 1
kusano 7d535a
#    define LZO_BROKEN_INTEGRAL_CONSTANTS 1
kusano 7d535a
#    define LZO_BROKEN_INTEGRAL_PROMOTION 1
kusano 7d535a
#  endif
kusano 7d535a
#  if (__TURBOC__ < 0x0200)
kusano 7d535a
#    define LZO_BROKEN_SIZEOF 1
kusano 7d535a
#  endif
kusano 7d535a
#  if (__TURBOC__ < 0x0400) && defined(__cplusplus)
kusano 7d535a
#    define LZO_BROKEN_CDECL_ALT_SYNTAX 1
kusano 7d535a
#  endif
kusano 7d535a
#elif (defined(__PUREC__) || defined(__TURBOC__)) && defined(__TOS__)
kusano 7d535a
#  define LZO_BROKEN_CDECL_ALT_SYNTAX 1
kusano 7d535a
#  define LZO_BROKEN_SIZEOF 1
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__WATCOMC__) && (__WATCOMC__ < 900)
kusano 7d535a
#  define LZO_BROKEN_INTEGRAL_CONSTANTS 1
kusano 7d535a
#endif
kusano 7d535a
#if defined(_CRAY) && defined(_CRAY1)
kusano 7d535a
#  define LZO_BROKEN_SIGNED_RIGHT_SHIFT 1
kusano 7d535a
#endif
kusano 7d535a
#define LZO_PP_STRINGIZE(x)             #x
kusano 7d535a
#define LZO_PP_MACRO_EXPAND(x)          LZO_PP_STRINGIZE(x)
kusano 7d535a
#define LZO_PP_CONCAT2(a,b)             a ## b
kusano 7d535a
#define LZO_PP_CONCAT3(a,b,c)           a ## b ## c
kusano 7d535a
#define LZO_PP_CONCAT4(a,b,c,d)         a ## b ## c ## d
kusano 7d535a
#define LZO_PP_CONCAT5(a,b,c,d,e)       a ## b ## c ## d ## e
kusano 7d535a
#define LZO_PP_ECONCAT2(a,b)            LZO_PP_CONCAT2(a,b)
kusano 7d535a
#define LZO_PP_ECONCAT3(a,b,c)          LZO_PP_CONCAT3(a,b,c)
kusano 7d535a
#define LZO_PP_ECONCAT4(a,b,c,d)        LZO_PP_CONCAT4(a,b,c,d)
kusano 7d535a
#define LZO_PP_ECONCAT5(a,b,c,d,e)      LZO_PP_CONCAT5(a,b,c,d,e)
kusano 7d535a
#if 1
kusano 7d535a
#define LZO_CPP_STRINGIZE(x)            #x
kusano 7d535a
#define LZO_CPP_MACRO_EXPAND(x)         LZO_CPP_STRINGIZE(x)
kusano 7d535a
#define LZO_CPP_CONCAT2(a,b)            a ## b
kusano 7d535a
#define LZO_CPP_CONCAT3(a,b,c)          a ## b ## c
kusano 7d535a
#define LZO_CPP_CONCAT4(a,b,c,d)        a ## b ## c ## d
kusano 7d535a
#define LZO_CPP_CONCAT5(a,b,c,d,e)      a ## b ## c ## d ## e
kusano 7d535a
#define LZO_CPP_ECONCAT2(a,b)           LZO_CPP_CONCAT2(a,b)
kusano 7d535a
#define LZO_CPP_ECONCAT3(a,b,c)         LZO_CPP_CONCAT3(a,b,c)
kusano 7d535a
#define LZO_CPP_ECONCAT4(a,b,c,d)       LZO_CPP_CONCAT4(a,b,c,d)
kusano 7d535a
#define LZO_CPP_ECONCAT5(a,b,c,d,e)     LZO_CPP_CONCAT5(a,b,c,d,e)
kusano 7d535a
#endif
kusano 7d535a
#define __LZO_MASK_GEN(o,b)     (((((o) << ((b)-1)) - (o)) << 1) + (o))
kusano 7d535a
#if 1 && defined(__cplusplus)
kusano 7d535a
#  if !defined(__STDC_CONSTANT_MACROS)
kusano 7d535a
#    define __STDC_CONSTANT_MACROS 1
kusano 7d535a
#  endif
kusano 7d535a
#  if !defined(__STDC_LIMIT_MACROS)
kusano 7d535a
#    define __STDC_LIMIT_MACROS 1
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__cplusplus)
kusano 7d535a
#  define LZO_EXTERN_C extern "C"
kusano 7d535a
#else
kusano 7d535a
#  define LZO_EXTERN_C extern
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__LZO_OS_OVERRIDE)
kusano 7d535a
#if defined(LZO_OS_FREESTANDING)
kusano 7d535a
#  define LZO_INFO_OS           "freestanding"
kusano 7d535a
#elif defined(LZO_OS_EMBEDDED)
kusano 7d535a
#  define LZO_INFO_OS           "embedded"
kusano 7d535a
#elif 1 && defined(__IAR_SYSTEMS_ICC__)
kusano 7d535a
#  define LZO_OS_EMBEDDED       1
kusano 7d535a
#  define LZO_INFO_OS           "embedded"
kusano 7d535a
#elif defined(__CYGWIN__) && defined(__GNUC__)
kusano 7d535a
#  define LZO_OS_CYGWIN         1
kusano 7d535a
#  define LZO_INFO_OS           "cygwin"
kusano 7d535a
#elif defined(__EMX__) && defined(__GNUC__)
kusano 7d535a
#  define LZO_OS_EMX            1
kusano 7d535a
#  define LZO_INFO_OS           "emx"
kusano 7d535a
#elif defined(__BEOS__)
kusano 7d535a
#  define LZO_OS_BEOS           1
kusano 7d535a
#  define LZO_INFO_OS           "beos"
kusano 7d535a
#elif defined(__Lynx__)
kusano 7d535a
#  define LZO_OS_LYNXOS         1
kusano 7d535a
#  define LZO_INFO_OS           "lynxos"
kusano 7d535a
#elif defined(__OS400__)
kusano 7d535a
#  define LZO_OS_OS400          1
kusano 7d535a
#  define LZO_INFO_OS           "os400"
kusano 7d535a
#elif defined(__QNX__)
kusano 7d535a
#  define LZO_OS_QNX            1
kusano 7d535a
#  define LZO_INFO_OS           "qnx"
kusano 7d535a
#elif defined(__BORLANDC__) && defined(__DPMI32__) && (__BORLANDC__ >= 0x0460)
kusano 7d535a
#  define LZO_OS_DOS32          1
kusano 7d535a
#  define LZO_INFO_OS           "dos32"
kusano 7d535a
#elif defined(__BORLANDC__) && defined(__DPMI16__)
kusano 7d535a
#  define LZO_OS_DOS16          1
kusano 7d535a
#  define LZO_INFO_OS           "dos16"
kusano 7d535a
#elif defined(__ZTC__) && defined(DOS386)
kusano 7d535a
#  define LZO_OS_DOS32          1
kusano 7d535a
#  define LZO_INFO_OS           "dos32"
kusano 7d535a
#elif defined(__OS2__) || defined(__OS2V2__)
kusano 7d535a
#  if (UINT_MAX == LZO_0xffffL)
kusano 7d535a
#    define LZO_OS_OS216        1
kusano 7d535a
#    define LZO_INFO_OS         "os216"
kusano 7d535a
#  elif (UINT_MAX == LZO_0xffffffffL)
kusano 7d535a
#    define LZO_OS_OS2          1
kusano 7d535a
#    define LZO_INFO_OS         "os2"
kusano 7d535a
#  else
kusano 7d535a
#    error "check your limits.h header"
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(__WIN64__) || defined(_WIN64) || defined(WIN64)
kusano 7d535a
#  define LZO_OS_WIN64          1
kusano 7d535a
#  define LZO_INFO_OS           "win64"
kusano 7d535a
#elif defined(__WIN32__) || defined(_WIN32) || defined(WIN32) || defined(__WINDOWS_386__)
kusano 7d535a
#  define LZO_OS_WIN32          1
kusano 7d535a
#  define LZO_INFO_OS           "win32"
kusano 7d535a
#elif defined(__MWERKS__) && defined(__INTEL__)
kusano 7d535a
#  define LZO_OS_WIN32          1
kusano 7d535a
#  define LZO_INFO_OS           "win32"
kusano 7d535a
#elif defined(__WINDOWS__) || defined(_WINDOWS) || defined(_Windows)
kusano 7d535a
#  if (UINT_MAX == LZO_0xffffL)
kusano 7d535a
#    define LZO_OS_WIN16        1
kusano 7d535a
#    define LZO_INFO_OS         "win16"
kusano 7d535a
#  elif (UINT_MAX == LZO_0xffffffffL)
kusano 7d535a
#    define LZO_OS_WIN32        1
kusano 7d535a
#    define LZO_INFO_OS         "win32"
kusano 7d535a
#  else
kusano 7d535a
#    error "check your limits.h header"
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(__DOS__) || defined(__MSDOS__) || defined(_MSDOS) || defined(MSDOS) || (defined(__PACIFIC__) && defined(DOS))
kusano 7d535a
#  if (UINT_MAX == LZO_0xffffL)
kusano 7d535a
#    define LZO_OS_DOS16        1
kusano 7d535a
#    define LZO_INFO_OS         "dos16"
kusano 7d535a
#  elif (UINT_MAX == LZO_0xffffffffL)
kusano 7d535a
#    define LZO_OS_DOS32        1
kusano 7d535a
#    define LZO_INFO_OS         "dos32"
kusano 7d535a
#  else
kusano 7d535a
#    error "check your limits.h header"
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(__WATCOMC__)
kusano 7d535a
#  if defined(__NT__) && (UINT_MAX == LZO_0xffffL)
kusano 7d535a
#    define LZO_OS_DOS16        1
kusano 7d535a
#    define LZO_INFO_OS         "dos16"
kusano 7d535a
#  elif defined(__NT__) && (__WATCOMC__ < 1100)
kusano 7d535a
#    define LZO_OS_WIN32        1
kusano 7d535a
#    define LZO_INFO_OS         "win32"
kusano 7d535a
#  elif defined(__linux__) || defined(__LINUX__)
kusano 7d535a
#    define LZO_OS_POSIX        1
kusano 7d535a
#    define LZO_INFO_OS         "posix"
kusano 7d535a
#  else
kusano 7d535a
#    error "please specify a target using the -bt compiler option"
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(__palmos__)
kusano 7d535a
#  define LZO_OS_PALMOS         1
kusano 7d535a
#  define LZO_INFO_OS           "palmos"
kusano 7d535a
#elif defined(__TOS__) || defined(__atarist__)
kusano 7d535a
#  define LZO_OS_TOS            1
kusano 7d535a
#  define LZO_INFO_OS           "tos"
kusano 7d535a
#elif defined(macintosh) && !defined(__ppc__)
kusano 7d535a
#  define LZO_OS_MACCLASSIC     1
kusano 7d535a
#  define LZO_INFO_OS           "macclassic"
kusano 7d535a
#elif defined(__VMS)
kusano 7d535a
#  define LZO_OS_VMS            1
kusano 7d535a
#  define LZO_INFO_OS           "vms"
kusano 7d535a
#elif ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
kusano 7d535a
#  define LZO_OS_CONSOLE        1
kusano 7d535a
#  define LZO_OS_CONSOLE_PS2    1
kusano 7d535a
#  define LZO_INFO_OS           "console"
kusano 7d535a
#  define LZO_INFO_OS_CONSOLE   "ps2"
kusano 7d535a
#elif (defined(__mips__) && defined(__psp__))
kusano 7d535a
#  define LZO_OS_CONSOLE        1
kusano 7d535a
#  define LZO_OS_CONSOLE_PSP    1
kusano 7d535a
#  define LZO_INFO_OS           "console"
kusano 7d535a
#  define LZO_INFO_OS_CONSOLE   "psp"
kusano 7d535a
#else
kusano 7d535a
#  define LZO_OS_POSIX          1
kusano 7d535a
#  define LZO_INFO_OS           "posix"
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_OS_POSIX)
kusano 7d535a
#  if defined(_AIX) || defined(__AIX__) || defined(__aix__)
kusano 7d535a
#    define LZO_OS_POSIX_AIX        1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "aix"
kusano 7d535a
#  elif defined(__FreeBSD__)
kusano 7d535a
#    define LZO_OS_POSIX_FREEBSD    1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "freebsd"
kusano 7d535a
#  elif defined(__hpux__) || defined(__hpux)
kusano 7d535a
#    define LZO_OS_POSIX_HPUX       1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "hpux"
kusano 7d535a
#  elif defined(__INTERIX)
kusano 7d535a
#    define LZO_OS_POSIX_INTERIX    1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "interix"
kusano 7d535a
#  elif defined(__IRIX__) || defined(__irix__)
kusano 7d535a
#    define LZO_OS_POSIX_IRIX       1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "irix"
kusano 7d535a
#  elif defined(__linux__) || defined(__linux) || defined(__LINUX__)
kusano 7d535a
#    define LZO_OS_POSIX_LINUX      1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "linux"
kusano 7d535a
#  elif defined(__APPLE__) || defined(__MACOS__)
kusano 7d535a
#    define LZO_OS_POSIX_MACOSX     1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "macosx"
kusano 7d535a
#  elif defined(__minix__) || defined(__minix)
kusano 7d535a
#    define LZO_OS_POSIX_MINIX      1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "minix"
kusano 7d535a
#  elif defined(__NetBSD__)
kusano 7d535a
#    define LZO_OS_POSIX_NETBSD     1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "netbsd"
kusano 7d535a
#  elif defined(__OpenBSD__)
kusano 7d535a
#    define LZO_OS_POSIX_OPENBSD    1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "openbsd"
kusano 7d535a
#  elif defined(__osf__)
kusano 7d535a
#    define LZO_OS_POSIX_OSF        1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "osf"
kusano 7d535a
#  elif defined(__solaris__) || defined(__sun)
kusano 7d535a
#    if defined(__SVR4) || defined(__svr4__)
kusano 7d535a
#      define LZO_OS_POSIX_SOLARIS  1
kusano 7d535a
#      define LZO_INFO_OS_POSIX     "solaris"
kusano 7d535a
#    else
kusano 7d535a
#      define LZO_OS_POSIX_SUNOS    1
kusano 7d535a
#      define LZO_INFO_OS_POSIX     "sunos"
kusano 7d535a
#    endif
kusano 7d535a
#  elif defined(__ultrix__) || defined(__ultrix)
kusano 7d535a
#    define LZO_OS_POSIX_ULTRIX     1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "ultrix"
kusano 7d535a
#  elif defined(_UNICOS)
kusano 7d535a
#    define LZO_OS_POSIX_UNICOS     1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "unicos"
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_OS_POSIX_UNKNOWN    1
kusano 7d535a
#    define LZO_INFO_OS_POSIX       "unknown"
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
kusano 7d535a
#  if (UINT_MAX != LZO_0xffffL)
kusano 7d535a
#    error "this should not happen"
kusano 7d535a
#  endif
kusano 7d535a
#  if (ULONG_MAX != LZO_0xffffffffL)
kusano 7d535a
#    error "this should not happen"
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_OS_DOS32 || LZO_OS_OS2 || LZO_OS_WIN32 || LZO_OS_WIN64)
kusano 7d535a
#  if (UINT_MAX != LZO_0xffffffffL)
kusano 7d535a
#    error "this should not happen"
kusano 7d535a
#  endif
kusano 7d535a
#  if (ULONG_MAX != LZO_0xffffffffL)
kusano 7d535a
#    error "this should not happen"
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(CIL) && defined(_GNUCC) && defined(__GNUC__)
kusano 7d535a
#  define LZO_CC_CILLY          1
kusano 7d535a
#  define LZO_INFO_CC           "Cilly"
kusano 7d535a
#  if defined(__CILLY__)
kusano 7d535a
#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__CILLY__)
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_INFO_CCVER      "unknown"
kusano 7d535a
#  endif
kusano 7d535a
#elif 0 && defined(SDCC) && defined(__VERSION__) && !defined(__GNUC__)
kusano 7d535a
#  define LZO_CC_SDCC           1
kusano 7d535a
#  define LZO_INFO_CC           "sdcc"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(SDCC)
kusano 7d535a
#elif defined(__PATHSCALE__) && defined(__PATHCC_PATCHLEVEL__)
kusano 7d535a
#  define LZO_CC_PATHSCALE      (__PATHCC__ * 0x10000L + __PATHCC_MINOR__ * 0x100 + __PATHCC_PATCHLEVEL__)
kusano 7d535a
#  define LZO_INFO_CC           "Pathscale C"
kusano 7d535a
#  define LZO_INFO_CCVER        __PATHSCALE__
kusano 7d535a
#elif defined(__INTEL_COMPILER)
kusano 7d535a
#  define LZO_CC_INTELC         1
kusano 7d535a
#  define LZO_INFO_CC           "Intel C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__INTEL_COMPILER)
kusano 7d535a
#  if defined(_WIN32) || defined(_WIN64)
kusano 7d535a
#    define LZO_CC_SYNTAX_MSC 1
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_CC_SYNTAX_GNUC 1
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(__POCC__) && defined(_WIN32)
kusano 7d535a
#  define LZO_CC_PELLESC        1
kusano 7d535a
#  define LZO_INFO_CC           "Pelles C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__POCC__)
kusano 7d535a
#elif defined(__llvm__) && defined(__GNUC__) && defined(__VERSION__)
kusano 7d535a
#  if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
kusano 7d535a
#    define LZO_CC_LLVM         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_CC_LLVM         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
kusano 7d535a
#  endif
kusano 7d535a
#  define LZO_INFO_CC           "llvm-gcc"
kusano 7d535a
#  define LZO_INFO_CCVER        __VERSION__
kusano 7d535a
#elif defined(__GNUC__) && defined(__VERSION__)
kusano 7d535a
#  if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
kusano 7d535a
#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
kusano 7d535a
#  elif defined(__GNUC_MINOR__)
kusano 7d535a
#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_CC_GNUC         (__GNUC__ * 0x10000L)
kusano 7d535a
#  endif
kusano 7d535a
#  define LZO_INFO_CC           "gcc"
kusano 7d535a
#  define LZO_INFO_CCVER        __VERSION__
kusano 7d535a
#elif defined(__ACK__) && defined(_ACK)
kusano 7d535a
#  define LZO_CC_ACK            1
kusano 7d535a
#  define LZO_INFO_CC           "Amsterdam Compiler Kit C"
kusano 7d535a
#  define LZO_INFO_CCVER        "unknown"
kusano 7d535a
#elif defined(__AZTEC_C__)
kusano 7d535a
#  define LZO_CC_AZTECC         1
kusano 7d535a
#  define LZO_INFO_CC           "Aztec C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__AZTEC_C__)
kusano 7d535a
#elif defined(__BORLANDC__)
kusano 7d535a
#  define LZO_CC_BORLANDC       1
kusano 7d535a
#  define LZO_INFO_CC           "Borland C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__BORLANDC__)
kusano 7d535a
#elif defined(_CRAYC) && defined(_RELEASE)
kusano 7d535a
#  define LZO_CC_CRAYC          1
kusano 7d535a
#  define LZO_INFO_CC           "Cray C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(_RELEASE)
kusano 7d535a
#elif defined(__DMC__) && defined(__SC__)
kusano 7d535a
#  define LZO_CC_DMC            1
kusano 7d535a
#  define LZO_INFO_CC           "Digital Mars C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__DMC__)
kusano 7d535a
#elif defined(__DECC)
kusano 7d535a
#  define LZO_CC_DECC           1
kusano 7d535a
#  define LZO_INFO_CC           "DEC C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__DECC)
kusano 7d535a
#elif defined(__HIGHC__)
kusano 7d535a
#  define LZO_CC_HIGHC          1
kusano 7d535a
#  define LZO_INFO_CC           "MetaWare High C"
kusano 7d535a
#  define LZO_INFO_CCVER        "unknown"
kusano 7d535a
#elif defined(__IAR_SYSTEMS_ICC__)
kusano 7d535a
#  define LZO_CC_IARC           1
kusano 7d535a
#  define LZO_INFO_CC           "IAR C"
kusano 7d535a
#  if defined(__VER__)
kusano 7d535a
#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__VER__)
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_INFO_CCVER      "unknown"
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(__IBMC__)
kusano 7d535a
#  define LZO_CC_IBMC           1
kusano 7d535a
#  define LZO_INFO_CC           "IBM C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__IBMC__)
kusano 7d535a
#elif defined(__KEIL__) && defined(__C166__)
kusano 7d535a
#  define LZO_CC_KEILC          1
kusano 7d535a
#  define LZO_INFO_CC           "Keil C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__C166__)
kusano 7d535a
#elif defined(__LCC__) && defined(_WIN32) && defined(__LCCOPTIMLEVEL)
kusano 7d535a
#  define LZO_CC_LCCWIN32       1
kusano 7d535a
#  define LZO_INFO_CC           "lcc-win32"
kusano 7d535a
#  define LZO_INFO_CCVER        "unknown"
kusano 7d535a
#elif defined(__LCC__)
kusano 7d535a
#  define LZO_CC_LCC            1
kusano 7d535a
#  define LZO_INFO_CC           "lcc"
kusano 7d535a
#  if defined(__LCC_VERSION__)
kusano 7d535a
#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__LCC_VERSION__)
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_INFO_CCVER      "unknown"
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(_MSC_VER)
kusano 7d535a
#  define LZO_CC_MSC            1
kusano 7d535a
#  define LZO_INFO_CC           "Microsoft C"
kusano 7d535a
#  if defined(_MSC_FULL_VER)
kusano 7d535a
#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER) "." LZO_PP_MACRO_EXPAND(_MSC_FULL_VER)
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(_MSC_VER)
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(__MWERKS__)
kusano 7d535a
#  define LZO_CC_MWERKS         1
kusano 7d535a
#  define LZO_INFO_CC           "Metrowerks C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__MWERKS__)
kusano 7d535a
#elif (defined(__NDPC__) || defined(__NDPX__)) && defined(__i386)
kusano 7d535a
#  define LZO_CC_NDPC           1
kusano 7d535a
#  define LZO_INFO_CC           "Microway NDP C"
kusano 7d535a
#  define LZO_INFO_CCVER        "unknown"
kusano 7d535a
#elif defined(__PACIFIC__)
kusano 7d535a
#  define LZO_CC_PACIFICC       1
kusano 7d535a
#  define LZO_INFO_CC           "Pacific C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__PACIFIC__)
kusano 7d535a
#elif defined(__PGI) && (defined(__linux__) || defined(__WIN32__))
kusano 7d535a
#  define LZO_CC_PGI            1
kusano 7d535a
#  define LZO_INFO_CC           "Portland Group PGI C"
kusano 7d535a
#  define LZO_INFO_CCVER        "unknown"
kusano 7d535a
#elif defined(__PUREC__) && defined(__TOS__)
kusano 7d535a
#  define LZO_CC_PUREC          1
kusano 7d535a
#  define LZO_INFO_CC           "Pure C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__PUREC__)
kusano 7d535a
#elif defined(__SC__) && defined(__ZTC__)
kusano 7d535a
#  define LZO_CC_SYMANTECC      1
kusano 7d535a
#  define LZO_INFO_CC           "Symantec C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__SC__)
kusano 7d535a
#elif defined(__SUNPRO_C)
kusano 7d535a
#  define LZO_INFO_CC           "SunPro C"
kusano 7d535a
#  if ((__SUNPRO_C)+0 > 0)
kusano 7d535a
#    define LZO_CC_SUNPROC      __SUNPRO_C
kusano 7d535a
#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_C)
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_CC_SUNPROC      1
kusano 7d535a
#    define LZO_INFO_CCVER      "unknown"
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(__SUNPRO_CC)
kusano 7d535a
#  define LZO_INFO_CC           "SunPro C"
kusano 7d535a
#  if ((__SUNPRO_CC)+0 > 0)
kusano 7d535a
#    define LZO_CC_SUNPROC      __SUNPRO_CC
kusano 7d535a
#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__SUNPRO_CC)
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_CC_SUNPROC      1
kusano 7d535a
#    define LZO_INFO_CCVER      "unknown"
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(__TINYC__)
kusano 7d535a
#  define LZO_CC_TINYC          1
kusano 7d535a
#  define LZO_INFO_CC           "Tiny C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TINYC__)
kusano 7d535a
#elif defined(__TSC__)
kusano 7d535a
#  define LZO_CC_TOPSPEEDC      1
kusano 7d535a
#  define LZO_INFO_CC           "TopSpeed C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TSC__)
kusano 7d535a
#elif defined(__WATCOMC__)
kusano 7d535a
#  define LZO_CC_WATCOMC        1
kusano 7d535a
#  define LZO_INFO_CC           "Watcom C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__WATCOMC__)
kusano 7d535a
#elif defined(__TURBOC__)
kusano 7d535a
#  define LZO_CC_TURBOC         1
kusano 7d535a
#  define LZO_INFO_CC           "Turbo C"
kusano 7d535a
#  define LZO_INFO_CCVER        LZO_PP_MACRO_EXPAND(__TURBOC__)
kusano 7d535a
#elif defined(__ZTC__)
kusano 7d535a
#  define LZO_CC_ZORTECHC       1
kusano 7d535a
#  define LZO_INFO_CC           "Zortech C"
kusano 7d535a
#  if (__ZTC__ == 0x310)
kusano 7d535a
#    define LZO_INFO_CCVER      "0x310"
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_INFO_CCVER      LZO_PP_MACRO_EXPAND(__ZTC__)
kusano 7d535a
#  endif
kusano 7d535a
#else
kusano 7d535a
#  define LZO_CC_UNKNOWN        1
kusano 7d535a
#  define LZO_INFO_CC           "unknown"
kusano 7d535a
#  define LZO_INFO_CCVER        "unknown"
kusano 7d535a
#endif
kusano 7d535a
#if 0 && (LZO_CC_MSC && (_MSC_VER >= 1200)) && !defined(_MSC_FULL_VER)
kusano 7d535a
#  error "LZO_CC_MSC: _MSC_FULL_VER is not defined"
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__LZO_ARCH_OVERRIDE) && !defined(LZO_ARCH_GENERIC) && defined(_CRAY)
kusano 7d535a
#  if (UINT_MAX > LZO_0xffffffffL) && defined(_CRAY)
kusano 7d535a
#    if defined(_CRAYMPP) || defined(_CRAYT3D) || defined(_CRAYT3E)
kusano 7d535a
#      define LZO_ARCH_CRAY_MPP     1
kusano 7d535a
#    elif defined(_CRAY1)
kusano 7d535a
#      define LZO_ARCH_CRAY_PVP     1
kusano 7d535a
#    endif
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__LZO_ARCH_OVERRIDE)
kusano 7d535a
#if defined(LZO_ARCH_GENERIC)
kusano 7d535a
#  define LZO_INFO_ARCH             "generic"
kusano 7d535a
#elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
kusano 7d535a
#  define LZO_ARCH_I086             1
kusano 7d535a
#  define LZO_ARCH_IA16             1
kusano 7d535a
#  define LZO_INFO_ARCH             "i086"
kusano 7d535a
#elif defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA)
kusano 7d535a
#  define LZO_ARCH_ALPHA            1
kusano 7d535a
#  define LZO_INFO_ARCH             "alpha"
kusano 7d535a
#elif (LZO_ARCH_CRAY_MPP) && (defined(_CRAYT3D) || defined(_CRAYT3E))
kusano 7d535a
#  define LZO_ARCH_ALPHA            1
kusano 7d535a
#  define LZO_INFO_ARCH             "alpha"
kusano 7d535a
#elif defined(__amd64__) || defined(__x86_64__) || defined(_M_AMD64)
kusano 7d535a
#  define LZO_ARCH_AMD64            1
kusano 7d535a
#  define LZO_INFO_ARCH             "amd64"
kusano 7d535a
#elif defined(__thumb__) || (defined(_M_ARM) && defined(_M_THUMB))
kusano 7d535a
#  define LZO_ARCH_ARM              1
kusano 7d535a
#  define LZO_ARCH_ARM_THUMB        1
kusano 7d535a
#  define LZO_INFO_ARCH             "arm_thumb"
kusano 7d535a
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__)
kusano 7d535a
#  define LZO_ARCH_ARM              1
kusano 7d535a
#  if defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 1)
kusano 7d535a
#    define LZO_ARCH_ARM_THUMB      1
kusano 7d535a
#    define LZO_INFO_ARCH           "arm_thumb"
kusano 7d535a
#  elif defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 2)
kusano 7d535a
#    define LZO_INFO_ARCH           "arm"
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_INFO_ARCH           "arm"
kusano 7d535a
#  endif
kusano 7d535a
#elif defined(__arm__) || defined(_M_ARM)
kusano 7d535a
#  define LZO_ARCH_ARM              1
kusano 7d535a
#  define LZO_INFO_ARCH             "arm"
kusano 7d535a
#elif (UINT_MAX <= LZO_0xffffL) && defined(__AVR__)
kusano 7d535a
#  define LZO_ARCH_AVR              1
kusano 7d535a
#  define LZO_INFO_ARCH             "avr"
kusano 7d535a
#elif defined(__bfin__)
kusano 7d535a
#  define LZO_ARCH_BLACKFIN         1
kusano 7d535a
#  define LZO_INFO_ARCH             "blackfin"
kusano 7d535a
#elif (UINT_MAX == LZO_0xffffL) && defined(__C166__)
kusano 7d535a
#  define LZO_ARCH_C166             1
kusano 7d535a
#  define LZO_INFO_ARCH             "c166"
kusano 7d535a
#elif defined(__cris__)
kusano 7d535a
#  define LZO_ARCH_CRIS             1
kusano 7d535a
#  define LZO_INFO_ARCH             "cris"
kusano 7d535a
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCEZ80__)
kusano 7d535a
#  define LZO_ARCH_EZ80             1
kusano 7d535a
#  define LZO_INFO_ARCH             "ez80"
kusano 7d535a
#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
kusano 7d535a
#  define LZO_ARCH_H8300            1
kusano 7d535a
#  define LZO_INFO_ARCH             "h8300"
kusano 7d535a
#elif defined(__hppa__) || defined(__hppa)
kusano 7d535a
#  define LZO_ARCH_HPPA             1
kusano 7d535a
#  define LZO_INFO_ARCH             "hppa"
kusano 7d535a
#elif defined(__386__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_M_I386)
kusano 7d535a
#  define LZO_ARCH_I386             1
kusano 7d535a
#  define LZO_ARCH_IA32             1
kusano 7d535a
#  define LZO_INFO_ARCH             "i386"
kusano 7d535a
#elif (LZO_CC_ZORTECHC && defined(__I86__))
kusano 7d535a
#  define LZO_ARCH_I386             1
kusano 7d535a
#  define LZO_ARCH_IA32             1
kusano 7d535a
#  define LZO_INFO_ARCH             "i386"
kusano 7d535a
#elif (LZO_OS_DOS32 && LZO_CC_HIGHC) && defined(_I386)
kusano 7d535a
#  define LZO_ARCH_I386             1
kusano 7d535a
#  define LZO_ARCH_IA32             1
kusano 7d535a
#  define LZO_INFO_ARCH             "i386"
kusano 7d535a
#elif defined(__ia64__) || defined(__ia64) || defined(_M_IA64)
kusano 7d535a
#  define LZO_ARCH_IA64             1
kusano 7d535a
#  define LZO_INFO_ARCH             "ia64"
kusano 7d535a
#elif (UINT_MAX == LZO_0xffffL) && defined(__m32c__)
kusano 7d535a
#  define LZO_ARCH_M16C             1
kusano 7d535a
#  define LZO_INFO_ARCH             "m16c"
kusano 7d535a
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCM16C__)
kusano 7d535a
#  define LZO_ARCH_M16C             1
kusano 7d535a
#  define LZO_INFO_ARCH             "m16c"
kusano 7d535a
#elif defined(__m32r__)
kusano 7d535a
#  define LZO_ARCH_M32R             1
kusano 7d535a
#  define LZO_INFO_ARCH             "m32r"
kusano 7d535a
#elif (LZO_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(__mc68020__) || defined(_M_M68K)
kusano 7d535a
#  define LZO_ARCH_M68K             1
kusano 7d535a
#  define LZO_INFO_ARCH             "m68k"
kusano 7d535a
#elif (UINT_MAX == LZO_0xffffL) && defined(__C251__)
kusano 7d535a
#  define LZO_ARCH_MCS251           1
kusano 7d535a
#  define LZO_INFO_ARCH             "mcs251"
kusano 7d535a
#elif (UINT_MAX == LZO_0xffffL) && defined(__C51__)
kusano 7d535a
#  define LZO_ARCH_MCS51            1
kusano 7d535a
#  define LZO_INFO_ARCH             "mcs51"
kusano 7d535a
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__)
kusano 7d535a
#  define LZO_ARCH_MCS51            1
kusano 7d535a
#  define LZO_INFO_ARCH             "mcs51"
kusano 7d535a
#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000)
kusano 7d535a
#  define LZO_ARCH_MIPS             1
kusano 7d535a
#  define LZO_INFO_ARCH             "mips"
kusano 7d535a
#elif (UINT_MAX == LZO_0xffffL) && defined(__MSP430__)
kusano 7d535a
#  define LZO_ARCH_MSP430           1
kusano 7d535a
#  define LZO_INFO_ARCH             "msp430"
kusano 7d535a
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC430__)
kusano 7d535a
#  define LZO_ARCH_MSP430           1
kusano 7d535a
#  define LZO_INFO_ARCH             "msp430"
kusano 7d535a
#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR)
kusano 7d535a
#  define LZO_ARCH_POWERPC          1
kusano 7d535a
#  define LZO_INFO_ARCH             "powerpc"
kusano 7d535a
#elif defined(__s390__) || defined(__s390) || defined(__s390x__) || defined(__s390x)
kusano 7d535a
#  define LZO_ARCH_S390             1
kusano 7d535a
#  define LZO_INFO_ARCH             "s390"
kusano 7d535a
#elif defined(__sh__) || defined(_M_SH)
kusano 7d535a
#  define LZO_ARCH_SH               1
kusano 7d535a
#  define LZO_INFO_ARCH             "sh"
kusano 7d535a
#elif defined(__sparc__) || defined(__sparc) || defined(__sparcv8)
kusano 7d535a
#  define LZO_ARCH_SPARC            1
kusano 7d535a
#  define LZO_INFO_ARCH             "sparc"
kusano 7d535a
#elif defined(__SPU__)
kusano 7d535a
#  define LZO_ARCH_SPU              1
kusano 7d535a
#  define LZO_INFO_ARCH             "spu"
kusano 7d535a
#elif (UINT_MAX == LZO_0xffffL) && defined(__z80)
kusano 7d535a
#  define LZO_ARCH_Z80              1
kusano 7d535a
#  define LZO_INFO_ARCH             "z80"
kusano 7d535a
#elif (LZO_ARCH_CRAY_PVP)
kusano 7d535a
#  if defined(_CRAYSV1)
kusano 7d535a
#    define LZO_ARCH_CRAY_SV1       1
kusano 7d535a
#    define LZO_INFO_ARCH           "cray_sv1"
kusano 7d535a
#  elif (_ADDR64)
kusano 7d535a
#    define LZO_ARCH_CRAY_T90       1
kusano 7d535a
#    define LZO_INFO_ARCH           "cray_t90"
kusano 7d535a
#  elif (_ADDR32)
kusano 7d535a
#    define LZO_ARCH_CRAY_YMP       1
kusano 7d535a
#    define LZO_INFO_ARCH           "cray_ymp"
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_ARCH_CRAY_XMP       1
kusano 7d535a
#    define LZO_INFO_ARCH           "cray_xmp"
kusano 7d535a
#  endif
kusano 7d535a
#else
kusano 7d535a
#  define LZO_ARCH_UNKNOWN          1
kusano 7d535a
#  define LZO_INFO_ARCH             "unknown"
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_DOS32 || LZO_OS_OS2)
kusano 7d535a
#  error "FIXME - missing define for CPU architecture"
kusano 7d535a
#endif
kusano 7d535a
#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN32)
kusano 7d535a
#  error "FIXME - missing WIN32 define for CPU architecture"
kusano 7d535a
#endif
kusano 7d535a
#if 1 && (LZO_ARCH_UNKNOWN) && (LZO_OS_WIN64)
kusano 7d535a
#  error "FIXME - missing WIN64 define for CPU architecture"
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_OS_OS216 || LZO_OS_WIN16)
kusano 7d535a
#  define LZO_ARCH_I086PM           1
kusano 7d535a
#  define LZO_ARCH_IA16PM           1
kusano 7d535a
#elif 1 && (LZO_OS_DOS16 && defined(BLX286))
kusano 7d535a
#  define LZO_ARCH_I086PM           1
kusano 7d535a
#  define LZO_ARCH_IA16PM           1
kusano 7d535a
#elif 1 && (LZO_OS_DOS16 && defined(DOSX286))
kusano 7d535a
#  define LZO_ARCH_I086PM           1
kusano 7d535a
#  define LZO_ARCH_IA16PM           1
kusano 7d535a
#elif 1 && (LZO_OS_DOS16 && LZO_CC_BORLANDC && defined(__DPMI16__))
kusano 7d535a
#  define LZO_ARCH_I086PM           1
kusano 7d535a
#  define LZO_ARCH_IA16PM           1
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_ARCH_ARM_THUMB) && !defined(LZO_ARCH_ARM)
kusano 7d535a
#  error "this should not happen"
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_ARCH_I086PM) && !defined(LZO_ARCH_I086)
kusano 7d535a
#  error "this should not happen"
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_ARCH_I086)
kusano 7d535a
#  if (UINT_MAX != LZO_0xffffL)
kusano 7d535a
#    error "this should not happen"
kusano 7d535a
#  endif
kusano 7d535a
#  if (ULONG_MAX != LZO_0xffffffffL)
kusano 7d535a
#    error "this should not happen"
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_ARCH_I386)
kusano 7d535a
#  if (UINT_MAX != LZO_0xffffL) && defined(__i386_int16__)
kusano 7d535a
#    error "this should not happen"
kusano 7d535a
#  endif
kusano 7d535a
#  if (UINT_MAX != LZO_0xffffffffL) && !defined(__i386_int16__)
kusano 7d535a
#    error "this should not happen"
kusano 7d535a
#  endif
kusano 7d535a
#  if (ULONG_MAX != LZO_0xffffffffL)
kusano 7d535a
#    error "this should not happen"
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__LZO_MM_OVERRIDE)
kusano 7d535a
#if (LZO_ARCH_I086)
kusano 7d535a
#if (UINT_MAX != LZO_0xffffL)
kusano 7d535a
#  error "this should not happen"
kusano 7d535a
#endif
kusano 7d535a
#if defined(__TINY__) || defined(M_I86TM) || defined(_M_I86TM)
kusano 7d535a
#  define LZO_MM_TINY           1
kusano 7d535a
#elif defined(__HUGE__) || defined(_HUGE_) || defined(M_I86HM) || defined(_M_I86HM)
kusano 7d535a
#  define LZO_MM_HUGE           1
kusano 7d535a
#elif defined(__SMALL__) || defined(M_I86SM) || defined(_M_I86SM) || defined(SMALL_MODEL)
kusano 7d535a
#  define LZO_MM_SMALL          1
kusano 7d535a
#elif defined(__MEDIUM__) || defined(M_I86MM) || defined(_M_I86MM)
kusano 7d535a
#  define LZO_MM_MEDIUM         1
kusano 7d535a
#elif defined(__COMPACT__) || defined(M_I86CM) || defined(_M_I86CM)
kusano 7d535a
#  define LZO_MM_COMPACT        1
kusano 7d535a
#elif defined(__LARGE__) || defined(M_I86LM) || defined(_M_I86LM) || defined(LARGE_MODEL)
kusano 7d535a
#  define LZO_MM_LARGE          1
kusano 7d535a
#elif (LZO_CC_AZTECC)
kusano 7d535a
#  if defined(_LARGE_CODE) && defined(_LARGE_DATA)
kusano 7d535a
#    define LZO_MM_LARGE        1
kusano 7d535a
#  elif defined(_LARGE_CODE)
kusano 7d535a
#    define LZO_MM_MEDIUM       1
kusano 7d535a
#  elif defined(_LARGE_DATA)
kusano 7d535a
#    define LZO_MM_COMPACT      1
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_MM_SMALL        1
kusano 7d535a
#  endif
kusano 7d535a
#elif (LZO_CC_ZORTECHC && defined(__VCM__))
kusano 7d535a
#  define LZO_MM_LARGE          1
kusano 7d535a
#else
kusano 7d535a
#  error "unknown memory model"
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
kusano 7d535a
#define LZO_HAVE_MM_HUGE_PTR        1
kusano 7d535a
#define LZO_HAVE_MM_HUGE_ARRAY      1
kusano 7d535a
#if (LZO_MM_TINY)
kusano 7d535a
#  undef LZO_HAVE_MM_HUGE_ARRAY
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_ZORTECHC)
kusano 7d535a
#  undef LZO_HAVE_MM_HUGE_PTR
kusano 7d535a
#  undef LZO_HAVE_MM_HUGE_ARRAY
kusano 7d535a
#elif (LZO_CC_DMC || LZO_CC_SYMANTECC)
kusano 7d535a
#  undef LZO_HAVE_MM_HUGE_ARRAY
kusano 7d535a
#elif (LZO_CC_MSC && defined(_QC))
kusano 7d535a
#  undef LZO_HAVE_MM_HUGE_ARRAY
kusano 7d535a
#  if (_MSC_VER < 600)
kusano 7d535a
#    undef LZO_HAVE_MM_HUGE_PTR
kusano 7d535a
#  endif
kusano 7d535a
#elif (LZO_CC_TURBOC && (__TURBOC__ < 0x0295))
kusano 7d535a
#  undef LZO_HAVE_MM_HUGE_ARRAY
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_ARCH_I086PM) && !defined(LZO_HAVE_MM_HUGE_PTR)
kusano 7d535a
#  if (LZO_OS_DOS16)
kusano 7d535a
#    error "this should not happen"
kusano 7d535a
#  elif (LZO_CC_ZORTECHC)
kusano 7d535a
#  else
kusano 7d535a
#    error "this should not happen"
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#ifdef __cplusplus
kusano 7d535a
extern "C" {
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0200))
kusano 7d535a
   extern void __near __cdecl _AHSHIFT(void);
kusano 7d535a
#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
kusano 7d535a
#elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
kusano 7d535a
   extern void __near __cdecl _AHSHIFT(void);
kusano 7d535a
#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
kusano 7d535a
#elif (LZO_CC_MSC || LZO_CC_TOPSPEEDC)
kusano 7d535a
   extern void __near __cdecl _AHSHIFT(void);
kusano 7d535a
#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
kusano 7d535a
#elif (LZO_CC_TURBOC && (__TURBOC__ >= 0x0295))
kusano 7d535a
   extern void __near __cdecl _AHSHIFT(void);
kusano 7d535a
#  define LZO_MM_AHSHIFT      ((unsigned) _AHSHIFT)
kusano 7d535a
#elif ((LZO_CC_AZTECC || LZO_CC_PACIFICC || LZO_CC_TURBOC) && LZO_OS_DOS16)
kusano 7d535a
#  define LZO_MM_AHSHIFT      12
kusano 7d535a
#elif (LZO_CC_WATCOMC)
kusano 7d535a
   extern unsigned char _HShift;
kusano 7d535a
#  define LZO_MM_AHSHIFT      ((unsigned) _HShift)
kusano 7d535a
#else
kusano 7d535a
#  error "FIXME - implement LZO_MM_AHSHIFT"
kusano 7d535a
#endif
kusano 7d535a
#ifdef __cplusplus
kusano 7d535a
}
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#elif (LZO_ARCH_C166)
kusano 7d535a
#if !defined(__MODEL__)
kusano 7d535a
#  error "FIXME - C166 __MODEL__"
kusano 7d535a
#elif ((__MODEL__) == 0)
kusano 7d535a
#  define LZO_MM_SMALL          1
kusano 7d535a
#elif ((__MODEL__) == 1)
kusano 7d535a
#  define LZO_MM_SMALL          1
kusano 7d535a
#elif ((__MODEL__) == 2)
kusano 7d535a
#  define LZO_MM_LARGE          1
kusano 7d535a
#elif ((__MODEL__) == 3)
kusano 7d535a
#  define LZO_MM_TINY           1
kusano 7d535a
#elif ((__MODEL__) == 4)
kusano 7d535a
#  define LZO_MM_XTINY          1
kusano 7d535a
#elif ((__MODEL__) == 5)
kusano 7d535a
#  define LZO_MM_XSMALL         1
kusano 7d535a
#else
kusano 7d535a
#  error "FIXME - C166 __MODEL__"
kusano 7d535a
#endif
kusano 7d535a
#elif (LZO_ARCH_MCS251)
kusano 7d535a
#if !defined(__MODEL__)
kusano 7d535a
#  error "FIXME - MCS251 __MODEL__"
kusano 7d535a
#elif ((__MODEL__) == 0)
kusano 7d535a
#  define LZO_MM_SMALL          1
kusano 7d535a
#elif ((__MODEL__) == 2)
kusano 7d535a
#  define LZO_MM_LARGE          1
kusano 7d535a
#elif ((__MODEL__) == 3)
kusano 7d535a
#  define LZO_MM_TINY           1
kusano 7d535a
#elif ((__MODEL__) == 4)
kusano 7d535a
#  define LZO_MM_XTINY          1
kusano 7d535a
#elif ((__MODEL__) == 5)
kusano 7d535a
#  define LZO_MM_XSMALL         1
kusano 7d535a
#else
kusano 7d535a
#  error "FIXME - MCS251 __MODEL__"
kusano 7d535a
#endif
kusano 7d535a
#elif (LZO_ARCH_MCS51)
kusano 7d535a
#if !defined(__MODEL__)
kusano 7d535a
#  error "FIXME - MCS51 __MODEL__"
kusano 7d535a
#elif ((__MODEL__) == 1)
kusano 7d535a
#  define LZO_MM_SMALL          1
kusano 7d535a
#elif ((__MODEL__) == 2)
kusano 7d535a
#  define LZO_MM_LARGE          1
kusano 7d535a
#elif ((__MODEL__) == 3)
kusano 7d535a
#  define LZO_MM_TINY           1
kusano 7d535a
#elif ((__MODEL__) == 4)
kusano 7d535a
#  define LZO_MM_XTINY          1
kusano 7d535a
#elif ((__MODEL__) == 5)
kusano 7d535a
#  define LZO_MM_XSMALL         1
kusano 7d535a
#else
kusano 7d535a
#  error "FIXME - MCS51 __MODEL__"
kusano 7d535a
#endif
kusano 7d535a
#elif (LZO_ARCH_CRAY_PVP)
kusano 7d535a
#  define LZO_MM_PVP            1
kusano 7d535a
#else
kusano 7d535a
#  define LZO_MM_FLAT           1
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_MM_COMPACT)
kusano 7d535a
#  define LZO_INFO_MM           "compact"
kusano 7d535a
#elif (LZO_MM_FLAT)
kusano 7d535a
#  define LZO_INFO_MM           "flat"
kusano 7d535a
#elif (LZO_MM_HUGE)
kusano 7d535a
#  define LZO_INFO_MM           "huge"
kusano 7d535a
#elif (LZO_MM_LARGE)
kusano 7d535a
#  define LZO_INFO_MM           "large"
kusano 7d535a
#elif (LZO_MM_MEDIUM)
kusano 7d535a
#  define LZO_INFO_MM           "medium"
kusano 7d535a
#elif (LZO_MM_PVP)
kusano 7d535a
#  define LZO_INFO_MM           "pvp"
kusano 7d535a
#elif (LZO_MM_SMALL)
kusano 7d535a
#  define LZO_INFO_MM           "small"
kusano 7d535a
#elif (LZO_MM_TINY)
kusano 7d535a
#  define LZO_INFO_MM           "tiny"
kusano 7d535a
#else
kusano 7d535a
#  error "unknown memory model"
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(SIZEOF_SHORT)
kusano 7d535a
#  define LZO_SIZEOF_SHORT          (SIZEOF_SHORT)
kusano 7d535a
#endif
kusano 7d535a
#if defined(SIZEOF_INT)
kusano 7d535a
#  define LZO_SIZEOF_INT            (SIZEOF_INT)
kusano 7d535a
#endif
kusano 7d535a
#if defined(SIZEOF_LONG)
kusano 7d535a
#  define LZO_SIZEOF_LONG           (SIZEOF_LONG)
kusano 7d535a
#endif
kusano 7d535a
#if defined(SIZEOF_LONG_LONG)
kusano 7d535a
#  define LZO_SIZEOF_LONG_LONG      (SIZEOF_LONG_LONG)
kusano 7d535a
#endif
kusano 7d535a
#if defined(SIZEOF___INT16)
kusano 7d535a
#  define LZO_SIZEOF___INT16        (SIZEOF___INT16)
kusano 7d535a
#endif
kusano 7d535a
#if defined(SIZEOF___INT32)
kusano 7d535a
#  define LZO_SIZEOF___INT32        (SIZEOF___INT32)
kusano 7d535a
#endif
kusano 7d535a
#if defined(SIZEOF___INT64)
kusano 7d535a
#  define LZO_SIZEOF___INT64        (SIZEOF___INT64)
kusano 7d535a
#endif
kusano 7d535a
#if defined(SIZEOF_VOID_P)
kusano 7d535a
#  define LZO_SIZEOF_VOID_P         (SIZEOF_VOID_P)
kusano 7d535a
#endif
kusano 7d535a
#if defined(SIZEOF_SIZE_T)
kusano 7d535a
#  define LZO_SIZEOF_SIZE_T         (SIZEOF_SIZE_T)
kusano 7d535a
#endif
kusano 7d535a
#if defined(SIZEOF_PTRDIFF_T)
kusano 7d535a
#  define LZO_SIZEOF_PTRDIFF_T      (SIZEOF_PTRDIFF_T)
kusano 7d535a
#endif
kusano 7d535a
#define __LZO_LSR(x,b)    (((x)+0ul) >> (b))
kusano 7d535a
#if !defined(LZO_SIZEOF_SHORT)
kusano 7d535a
#  if (LZO_ARCH_CRAY_PVP)
kusano 7d535a
#    define LZO_SIZEOF_SHORT        8
kusano 7d535a
#  elif (USHRT_MAX == LZO_0xffffL)
kusano 7d535a
#    define LZO_SIZEOF_SHORT        2
kusano 7d535a
#  elif (__LZO_LSR(USHRT_MAX,7) == 1)
kusano 7d535a
#    define LZO_SIZEOF_SHORT        1
kusano 7d535a
#  elif (__LZO_LSR(USHRT_MAX,15) == 1)
kusano 7d535a
#    define LZO_SIZEOF_SHORT        2
kusano 7d535a
#  elif (__LZO_LSR(USHRT_MAX,31) == 1)
kusano 7d535a
#    define LZO_SIZEOF_SHORT        4
kusano 7d535a
#  elif (__LZO_LSR(USHRT_MAX,63) == 1)
kusano 7d535a
#    define LZO_SIZEOF_SHORT        8
kusano 7d535a
#  elif (__LZO_LSR(USHRT_MAX,127) == 1)
kusano 7d535a
#    define LZO_SIZEOF_SHORT        16
kusano 7d535a
#  else
kusano 7d535a
#    error "LZO_SIZEOF_SHORT"
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_SIZEOF_INT)
kusano 7d535a
#  if (LZO_ARCH_CRAY_PVP)
kusano 7d535a
#    define LZO_SIZEOF_INT          8
kusano 7d535a
#  elif (UINT_MAX == LZO_0xffffL)
kusano 7d535a
#    define LZO_SIZEOF_INT          2
kusano 7d535a
#  elif (UINT_MAX == LZO_0xffffffffL)
kusano 7d535a
#    define LZO_SIZEOF_INT          4
kusano 7d535a
#  elif (__LZO_LSR(UINT_MAX,7) == 1)
kusano 7d535a
#    define LZO_SIZEOF_INT          1
kusano 7d535a
#  elif (__LZO_LSR(UINT_MAX,15) == 1)
kusano 7d535a
#    define LZO_SIZEOF_INT          2
kusano 7d535a
#  elif (__LZO_LSR(UINT_MAX,31) == 1)
kusano 7d535a
#    define LZO_SIZEOF_INT          4
kusano 7d535a
#  elif (__LZO_LSR(UINT_MAX,63) == 1)
kusano 7d535a
#    define LZO_SIZEOF_INT          8
kusano 7d535a
#  elif (__LZO_LSR(UINT_MAX,127) == 1)
kusano 7d535a
#    define LZO_SIZEOF_INT          16
kusano 7d535a
#  else
kusano 7d535a
#    error "LZO_SIZEOF_INT"
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_SIZEOF_LONG)
kusano 7d535a
#  if (ULONG_MAX == LZO_0xffffffffL)
kusano 7d535a
#    define LZO_SIZEOF_LONG         4
kusano 7d535a
#  elif (__LZO_LSR(ULONG_MAX,7) == 1)
kusano 7d535a
#    define LZO_SIZEOF_LONG         1
kusano 7d535a
#  elif (__LZO_LSR(ULONG_MAX,15) == 1)
kusano 7d535a
#    define LZO_SIZEOF_LONG         2
kusano 7d535a
#  elif (__LZO_LSR(ULONG_MAX,31) == 1)
kusano 7d535a
#    define LZO_SIZEOF_LONG         4
kusano 7d535a
#  elif (__LZO_LSR(ULONG_MAX,63) == 1)
kusano 7d535a
#    define LZO_SIZEOF_LONG         8
kusano 7d535a
#  elif (__LZO_LSR(ULONG_MAX,127) == 1)
kusano 7d535a
#    define LZO_SIZEOF_LONG         16
kusano 7d535a
#  else
kusano 7d535a
#    error "LZO_SIZEOF_LONG"
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
kusano 7d535a
#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
kusano 7d535a
#  if defined(__LONG_MAX__) && defined(__LONG_LONG_MAX__)
kusano 7d535a
#    if (LZO_CC_GNUC >= 0x030300ul)
kusano 7d535a
#      if ((__LONG_MAX__)+0 == (__LONG_LONG_MAX__)+0)
kusano 7d535a
#        define LZO_SIZEOF_LONG_LONG      LZO_SIZEOF_LONG
kusano 7d535a
#      elif (__LZO_LSR(__LONG_LONG_MAX__,30) == 1)
kusano 7d535a
#        define LZO_SIZEOF_LONG_LONG      4
kusano 7d535a
#      endif
kusano 7d535a
#    endif
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_SIZEOF_LONG_LONG) && !defined(LZO_SIZEOF___INT64)
kusano 7d535a
#if (LZO_SIZEOF_LONG > 0 && LZO_SIZEOF_LONG < 8)
kusano 7d535a
#if (LZO_ARCH_I086 && LZO_CC_DMC)
kusano 7d535a
#elif (LZO_CC_CILLY) && defined(__GNUC__)
kusano 7d535a
#  define LZO_SIZEOF_LONG_LONG      8
kusano 7d535a
#elif (LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
kusano 7d535a
#  define LZO_SIZEOF_LONG_LONG      8
kusano 7d535a
#elif ((LZO_OS_WIN32 || LZO_OS_WIN64 || defined(_WIN32)) && LZO_CC_MSC && (_MSC_VER >= 1400))
kusano 7d535a
#  define LZO_SIZEOF_LONG_LONG      8
kusano 7d535a
#elif (LZO_OS_WIN64 || defined(_WIN64))
kusano 7d535a
#  define LZO_SIZEOF___INT64        8
kusano 7d535a
#elif (LZO_ARCH_I386 && (LZO_CC_DMC))
kusano 7d535a
#  define LZO_SIZEOF_LONG_LONG      8
kusano 7d535a
#elif (LZO_ARCH_I386 && (LZO_CC_SYMANTECC && (__SC__ >= 0x700)))
kusano 7d535a
#  define LZO_SIZEOF_LONG_LONG      8
kusano 7d535a
#elif (LZO_ARCH_I386 && (LZO_CC_INTELC && defined(__linux__)))
kusano 7d535a
#  define LZO_SIZEOF_LONG_LONG      8
kusano 7d535a
#elif (LZO_ARCH_I386 && (LZO_CC_MWERKS || LZO_CC_PELLESC || LZO_CC_PGI || LZO_CC_SUNPROC))
kusano 7d535a
#  define LZO_SIZEOF_LONG_LONG      8
kusano 7d535a
#elif (LZO_ARCH_I386 && (LZO_CC_INTELC || LZO_CC_MSC))
kusano 7d535a
#  define LZO_SIZEOF___INT64        8
kusano 7d535a
#elif ((LZO_OS_WIN32 || defined(_WIN32)) && (LZO_CC_MSC))
kusano 7d535a
#  define LZO_SIZEOF___INT64        8
kusano 7d535a
#elif (LZO_ARCH_I386 && (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0520)))
kusano 7d535a
#  define LZO_SIZEOF___INT64        8
kusano 7d535a
#elif (LZO_ARCH_I386 && (LZO_CC_WATCOMC && (__WATCOMC__ >= 1100)))
kusano 7d535a
#  define LZO_SIZEOF___INT64        8
kusano 7d535a
#elif (LZO_CC_WATCOMC && defined(_INTEGRAL_MAX_BITS) && (_INTEGRAL_MAX_BITS == 64))
kusano 7d535a
#  define LZO_SIZEOF___INT64        8
kusano 7d535a
#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
kusano 7d535a
#  define LZO_SIZEOF_LONG_LONG      8
kusano 7d535a
#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
kusano 7d535a
#  define LZO_SIZEOF_LONG_LONG      8
kusano 7d535a
#elif (LZO_CC_SDCC) && (LZO_SIZEOF_INT == 2)
kusano 7d535a
#elif 1 && defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
kusano 7d535a
#  define LZO_SIZEOF_LONG_LONG      8
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__cplusplus) && defined(LZO_CC_GNUC)
kusano 7d535a
#  if (LZO_CC_GNUC < 0x020800ul)
kusano 7d535a
#    undef LZO_SIZEOF_LONG_LONG
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_CFG_NO_LONG_LONG) || defined(__NO_LONG_LONG)
kusano 7d535a
#  undef LZO_SIZEOF_LONG_LONG
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_SIZEOF_VOID_P)
kusano 7d535a
#if (LZO_ARCH_I086)
kusano 7d535a
#  define __LZO_WORDSIZE            2
kusano 7d535a
#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM)
kusano 7d535a
#    define LZO_SIZEOF_VOID_P       2
kusano 7d535a
#  elif (LZO_MM_COMPACT || LZO_MM_LARGE || LZO_MM_HUGE)
kusano 7d535a
#    define LZO_SIZEOF_VOID_P       4
kusano 7d535a
#  else
kusano 7d535a
#    error "LZO_MM"
kusano 7d535a
#  endif
kusano 7d535a
#elif (LZO_ARCH_AVR || LZO_ARCH_Z80)
kusano 7d535a
#  define __LZO_WORDSIZE            1
kusano 7d535a
#  define LZO_SIZEOF_VOID_P         2
kusano 7d535a
#elif (LZO_ARCH_C166 || LZO_ARCH_MCS51 || LZO_ARCH_MCS251 || LZO_ARCH_MSP430)
kusano 7d535a
#  define LZO_SIZEOF_VOID_P         2
kusano 7d535a
#elif (LZO_ARCH_H8300)
kusano 7d535a
#  if defined(__NORMAL_MODE__)
kusano 7d535a
#    define __LZO_WORDSIZE          4
kusano 7d535a
#    define LZO_SIZEOF_VOID_P       2
kusano 7d535a
#  elif defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
kusano 7d535a
#    define __LZO_WORDSIZE          4
kusano 7d535a
#    define LZO_SIZEOF_VOID_P       4
kusano 7d535a
#  else
kusano 7d535a
#    define __LZO_WORDSIZE          2
kusano 7d535a
#    define LZO_SIZEOF_VOID_P       2
kusano 7d535a
#  endif
kusano 7d535a
#  if (LZO_CC_GNUC && (LZO_CC_GNUC < 0x040000ul)) && (LZO_SIZEOF_INT == 4)
kusano 7d535a
#    define LZO_SIZEOF_SIZE_T       LZO_SIZEOF_INT
kusano 7d535a
#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_INT
kusano 7d535a
#  endif
kusano 7d535a
#elif (LZO_ARCH_M16C)
kusano 7d535a
#  define __LZO_WORDSIZE            2
kusano 7d535a
#  if defined(__m32c_cpu__) || defined(__m32cm_cpu__)
kusano 7d535a
#    define LZO_SIZEOF_VOID_P       4
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_SIZEOF_VOID_P       2
kusano 7d535a
#  endif
kusano 7d535a
#elif (LZO_SIZEOF_LONG == 8) && ((defined(__mips__) && defined(__R5900__)) || defined(__MIPS_PSX2__))
kusano 7d535a
#  define __LZO_WORDSIZE            8
kusano 7d535a
#  define LZO_SIZEOF_VOID_P         4
kusano 7d535a
#elif defined(__LLP64__) || defined(__LLP64) || defined(_LLP64) || defined(_WIN64)
kusano 7d535a
#  define __LZO_WORDSIZE            8
kusano 7d535a
#  define LZO_SIZEOF_VOID_P         8
kusano 7d535a
#elif (LZO_OS_OS400 || defined(__OS400__)) && defined(__LLP64_IFC__)
kusano 7d535a
#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
kusano 7d535a
#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
kusano 7d535a
#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
kusano 7d535a
#elif (LZO_OS_OS400 || defined(__OS400__))
kusano 7d535a
#  define __LZO_WORDSIZE            LZO_SIZEOF_LONG
kusano 7d535a
#  define LZO_SIZEOF_VOID_P         16
kusano 7d535a
#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
kusano 7d535a
#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
kusano 7d535a
#elif (defined(__vms) || defined(__VMS)) && (__INITIAL_POINTER_SIZE+0 == 64)
kusano 7d535a
#  define LZO_SIZEOF_VOID_P         8
kusano 7d535a
#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_LONG
kusano 7d535a
#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_LONG
kusano 7d535a
#elif (LZO_ARCH_SPU)
kusano 7d535a
# if 0
kusano 7d535a
#  define __LZO_WORDSIZE            16
kusano 7d535a
# endif
kusano 7d535a
#  define LZO_SIZEOF_VOID_P         4
kusano 7d535a
#else
kusano 7d535a
#  define LZO_SIZEOF_VOID_P         LZO_SIZEOF_LONG
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_WORDSIZE)
kusano 7d535a
#  if defined(__LZO_WORDSIZE)
kusano 7d535a
#    define LZO_WORDSIZE            __LZO_WORDSIZE
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_WORDSIZE            LZO_SIZEOF_VOID_P
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_SIZEOF_SIZE_T)
kusano 7d535a
#if (LZO_ARCH_I086 || LZO_ARCH_M16C)
kusano 7d535a
#  define LZO_SIZEOF_SIZE_T         2
kusano 7d535a
#else
kusano 7d535a
#  define LZO_SIZEOF_SIZE_T         LZO_SIZEOF_VOID_P
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_SIZEOF_PTRDIFF_T)
kusano 7d535a
#if (LZO_ARCH_I086)
kusano 7d535a
#  if (LZO_MM_TINY || LZO_MM_SMALL || LZO_MM_MEDIUM || LZO_MM_HUGE)
kusano 7d535a
#    define LZO_SIZEOF_PTRDIFF_T    LZO_SIZEOF_VOID_P
kusano 7d535a
#  elif (LZO_MM_COMPACT || LZO_MM_LARGE)
kusano 7d535a
#    if (LZO_CC_BORLANDC || LZO_CC_TURBOC)
kusano 7d535a
#      define LZO_SIZEOF_PTRDIFF_T  4
kusano 7d535a
#    else
kusano 7d535a
#      define LZO_SIZEOF_PTRDIFF_T  2
kusano 7d535a
#    endif
kusano 7d535a
#  else
kusano 7d535a
#    error "LZO_MM"
kusano 7d535a
#  endif
kusano 7d535a
#else
kusano 7d535a
#  define LZO_SIZEOF_PTRDIFF_T      LZO_SIZEOF_SIZE_T
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_ABI_NEUTRAL_ENDIAN)
kusano 7d535a
#  undef LZO_ABI_BIG_ENDIAN
kusano 7d535a
#  undef LZO_ABI_LITTLE_ENDIAN
kusano 7d535a
#elif !defined(LZO_ABI_BIG_ENDIAN) && !defined(LZO_ABI_LITTLE_ENDIAN)
kusano 7d535a
#if (LZO_ARCH_ALPHA) && (LZO_ARCH_CRAY_MPP)
kusano 7d535a
#  define LZO_ABI_BIG_ENDIAN        1
kusano 7d535a
#elif (LZO_ARCH_ALPHA || LZO_ARCH_AMD64 || LZO_ARCH_BLACKFIN || LZO_ARCH_CRIS || LZO_ARCH_I086 || LZO_ARCH_I386 || LZO_ARCH_MSP430)
kusano 7d535a
#  define LZO_ABI_LITTLE_ENDIAN     1
kusano 7d535a
#elif (LZO_ARCH_M68K || LZO_ARCH_S390)
kusano 7d535a
#  define LZO_ABI_BIG_ENDIAN        1
kusano 7d535a
#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__)
kusano 7d535a
#  if (__LITTLE_ENDIAN__ == 1)
kusano 7d535a
#    define LZO_ABI_LITTLE_ENDIAN   1
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_ABI_BIG_ENDIAN      1
kusano 7d535a
#  endif
kusano 7d535a
#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
kusano 7d535a
#  define LZO_ABI_BIG_ENDIAN        1
kusano 7d535a
#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
kusano 7d535a
#  define LZO_ABI_LITTLE_ENDIAN     1
kusano 7d535a
#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEB__) && !defined(__ARMEL__)
kusano 7d535a
#  define LZO_ABI_BIG_ENDIAN        1
kusano 7d535a
#elif 1 && (LZO_ARCH_ARM) && defined(__ARMEL__) && !defined(__ARMEB__)
kusano 7d535a
#  define LZO_ABI_LITTLE_ENDIAN     1
kusano 7d535a
#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEB__) && !defined(__MIPSEL__)
kusano 7d535a
#  define LZO_ABI_BIG_ENDIAN        1
kusano 7d535a
#elif 1 && (LZO_ARCH_MIPS) && defined(__MIPSEL__) && !defined(__MIPSEB__)
kusano 7d535a
#  define LZO_ABI_LITTLE_ENDIAN     1
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_ABI_BIG_ENDIAN) && defined(LZO_ABI_LITTLE_ENDIAN)
kusano 7d535a
#  error "this should not happen"
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_ABI_BIG_ENDIAN)
kusano 7d535a
#  define LZO_INFO_ABI_ENDIAN       "be"
kusano 7d535a
#elif defined(LZO_ABI_LITTLE_ENDIAN)
kusano 7d535a
#  define LZO_INFO_ABI_ENDIAN       "le"
kusano 7d535a
#elif defined(LZO_ABI_NEUTRAL_ENDIAN)
kusano 7d535a
#  define LZO_INFO_ABI_ENDIAN       "neutral"
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_SIZEOF_INT == 1 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
kusano 7d535a
#  define LZO_ABI_I8LP16         1
kusano 7d535a
#  define LZO_INFO_ABI_PM       "i8lp16"
kusano 7d535a
#elif (LZO_SIZEOF_INT == 2 && LZO_SIZEOF_LONG == 2 && LZO_SIZEOF_VOID_P == 2)
kusano 7d535a
#  define LZO_ABI_ILP16         1
kusano 7d535a
#  define LZO_INFO_ABI_PM       "ilp16"
kusano 7d535a
#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 4)
kusano 7d535a
#  define LZO_ABI_ILP32         1
kusano 7d535a
#  define LZO_INFO_ABI_PM       "ilp32"
kusano 7d535a
#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 4 && LZO_SIZEOF_VOID_P == 8 && LZO_SIZEOF_SIZE_T == 8)
kusano 7d535a
#  define LZO_ABI_LLP64         1
kusano 7d535a
#  define LZO_INFO_ABI_PM       "llp64"
kusano 7d535a
#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
kusano 7d535a
#  define LZO_ABI_LP64          1
kusano 7d535a
#  define LZO_INFO_ABI_PM       "lp64"
kusano 7d535a
#elif (LZO_SIZEOF_INT == 8 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 8)
kusano 7d535a
#  define LZO_ABI_ILP64         1
kusano 7d535a
#  define LZO_INFO_ABI_PM       "ilp64"
kusano 7d535a
#elif (LZO_SIZEOF_INT == 4 && LZO_SIZEOF_LONG == 8 && LZO_SIZEOF_VOID_P == 4)
kusano 7d535a
#  define LZO_ABI_IP32L64       1
kusano 7d535a
#  define LZO_INFO_ABI_PM       "ip32l64"
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__LZO_LIBC_OVERRIDE)
kusano 7d535a
#if defined(LZO_LIBC_NAKED)
kusano 7d535a
#  define LZO_INFO_LIBC         "naked"
kusano 7d535a
#elif defined(LZO_LIBC_FREESTANDING)
kusano 7d535a
#  define LZO_INFO_LIBC         "freestanding"
kusano 7d535a
#elif defined(LZO_LIBC_MOSTLY_FREESTANDING)
kusano 7d535a
#  define LZO_INFO_LIBC         "mfreestanding"
kusano 7d535a
#elif defined(LZO_LIBC_ISOC90)
kusano 7d535a
#  define LZO_INFO_LIBC         "isoc90"
kusano 7d535a
#elif defined(LZO_LIBC_ISOC99)
kusano 7d535a
#  define LZO_INFO_LIBC         "isoc99"
kusano 7d535a
#elif defined(__dietlibc__)
kusano 7d535a
#  define LZO_LIBC_DIETLIBC     1
kusano 7d535a
#  define LZO_INFO_LIBC         "dietlibc"
kusano 7d535a
#elif defined(_NEWLIB_VERSION)
kusano 7d535a
#  define LZO_LIBC_NEWLIB       1
kusano 7d535a
#  define LZO_INFO_LIBC         "newlib"
kusano 7d535a
#elif defined(__UCLIBC__) && defined(__UCLIBC_MAJOR__) && defined(__UCLIBC_MINOR__)
kusano 7d535a
#  if defined(__UCLIBC_SUBLEVEL__)
kusano 7d535a
#    define LZO_LIBC_UCLIBC     (__UCLIBC_MAJOR__ * 0x10000L + __UCLIBC_MINOR__ * 0x100 + __UCLIBC_SUBLEVEL__)
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_LIBC_UCLIBC     0x00090bL
kusano 7d535a
#  endif
kusano 7d535a
#  define LZO_INFO_LIBC         "uclibc"
kusano 7d535a
#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__)
kusano 7d535a
#  define LZO_LIBC_GLIBC        (__GLIBC__ * 0x10000L + __GLIBC_MINOR__ * 0x100)
kusano 7d535a
#  define LZO_INFO_LIBC         "glibc"
kusano 7d535a
#elif (LZO_CC_MWERKS) && defined(__MSL__)
kusano 7d535a
#  define LZO_LIBC_MSL          __MSL__
kusano 7d535a
#  define LZO_INFO_LIBC         "msl"
kusano 7d535a
#elif 1 && defined(__IAR_SYSTEMS_ICC__)
kusano 7d535a
#  define LZO_LIBC_ISOC90       1
kusano 7d535a
#  define LZO_INFO_LIBC         "isoc90"
kusano 7d535a
#else
kusano 7d535a
#  define LZO_LIBC_DEFAULT      1
kusano 7d535a
#  define LZO_INFO_LIBC         "default"
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_gnuc_extension__)
kusano 7d535a
#if (LZO_CC_GNUC >= 0x020800ul)
kusano 7d535a
#  define __lzo_gnuc_extension__    __extension__
kusano 7d535a
#elif (LZO_CC_LLVM || LZO_CC_PATHSCALE)
kusano 7d535a
#  define __lzo_gnuc_extension__    __extension__
kusano 7d535a
#else
kusano 7d535a
#  define __lzo_gnuc_extension__
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_ua_volatile)
kusano 7d535a
#  define __lzo_ua_volatile     volatile
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_alignof)
kusano 7d535a
#if (LZO_CC_CILLY || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
kusano 7d535a
#  define __lzo_alignof(e)      __alignof__(e)
kusano 7d535a
#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 700))
kusano 7d535a
#  define __lzo_alignof(e)      __alignof__(e)
kusano 7d535a
#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
kusano 7d535a
#  define __lzo_alignof(e)      __alignof(e)
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_alignof)
kusano 7d535a
#  define __lzo_HAVE_alignof 1
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_constructor)
kusano 7d535a
#if (LZO_CC_GNUC >= 0x030400ul)
kusano 7d535a
#  define __lzo_constructor     __attribute__((__constructor__,__used__))
kusano 7d535a
#elif (LZO_CC_GNUC >= 0x020700ul)
kusano 7d535a
#  define __lzo_constructor     __attribute__((__constructor__))
kusano 7d535a
#elif (LZO_CC_LLVM || LZO_CC_PATHSCALE)
kusano 7d535a
#  define __lzo_constructor     __attribute__((__constructor__))
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_constructor)
kusano 7d535a
#  define __lzo_HAVE_constructor 1
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_destructor)
kusano 7d535a
#if (LZO_CC_GNUC >= 0x030400ul)
kusano 7d535a
#  define __lzo_destructor      __attribute__((__destructor__,__used__))
kusano 7d535a
#elif (LZO_CC_GNUC >= 0x020700ul)
kusano 7d535a
#  define __lzo_destructor      __attribute__((__destructor__))
kusano 7d535a
#elif (LZO_CC_LLVM || LZO_CC_PATHSCALE)
kusano 7d535a
#  define __lzo_destructor      __attribute__((__destructor__))
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_destructor)
kusano 7d535a
#  define __lzo_HAVE_destructor 1
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_HAVE_destructor) && !defined(__lzo_HAVE_constructor)
kusano 7d535a
#  error "this should not happen"
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_inline)
kusano 7d535a
#if (LZO_CC_TURBOC && (__TURBOC__ <= 0x0295))
kusano 7d535a
#elif defined(__cplusplus)
kusano 7d535a
#  define __lzo_inline          inline
kusano 7d535a
#elif (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0550))
kusano 7d535a
#  define __lzo_inline          __inline
kusano 7d535a
#elif (LZO_CC_CILLY || LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE || LZO_CC_PGI)
kusano 7d535a
#  define __lzo_inline          __inline__
kusano 7d535a
#elif (LZO_CC_DMC)
kusano 7d535a
#  define __lzo_inline          __inline
kusano 7d535a
#elif (LZO_CC_INTELC)
kusano 7d535a
#  define __lzo_inline          __inline
kusano 7d535a
#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x2405))
kusano 7d535a
#  define __lzo_inline          __inline
kusano 7d535a
#elif (LZO_CC_MSC && (_MSC_VER >= 900))
kusano 7d535a
#  define __lzo_inline          __inline
kusano 7d535a
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
kusano 7d535a
#  define __lzo_inline          inline
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_inline)
kusano 7d535a
#  define __lzo_HAVE_inline 1
kusano 7d535a
#else
kusano 7d535a
#  define __lzo_inline
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_forceinline)
kusano 7d535a
#if (LZO_CC_GNUC >= 0x030200ul)
kusano 7d535a
#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
kusano 7d535a
#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC)
kusano 7d535a
#  define __lzo_forceinline     __forceinline
kusano 7d535a
#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC)
kusano 7d535a
#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
kusano 7d535a
#elif (LZO_CC_LLVM || LZO_CC_PATHSCALE)
kusano 7d535a
#  define __lzo_forceinline     __inline__ __attribute__((__always_inline__))
kusano 7d535a
#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
kusano 7d535a
#  define __lzo_forceinline     __forceinline
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_forceinline)
kusano 7d535a
#  define __lzo_HAVE_forceinline 1
kusano 7d535a
#else
kusano 7d535a
#  define __lzo_forceinline
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_noinline)
kusano 7d535a
#if 1 && (LZO_ARCH_I386) && (LZO_CC_GNUC >= 0x040000ul) && (LZO_CC_GNUC < 0x040003ul)
kusano 7d535a
#  define __lzo_noinline        __attribute__((__noinline__,__used__))
kusano 7d535a
#elif (LZO_CC_GNUC >= 0x030200ul)
kusano 7d535a
#  define __lzo_noinline        __attribute__((__noinline__))
kusano 7d535a
#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_MSC)
kusano 7d535a
#  define __lzo_noinline        __declspec(noinline)
kusano 7d535a
#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC)
kusano 7d535a
#  define __lzo_noinline        __attribute__((__noinline__))
kusano 7d535a
#elif (LZO_CC_LLVM || LZO_CC_PATHSCALE)
kusano 7d535a
#  define __lzo_noinline        __attribute__((__noinline__))
kusano 7d535a
#elif (LZO_CC_MSC && (_MSC_VER >= 1300))
kusano 7d535a
#  define __lzo_noinline        __declspec(noinline)
kusano 7d535a
#elif (LZO_CC_MWERKS && (__MWERKS__ >= 0x3200) && (LZO_OS_WIN32 || LZO_OS_WIN64))
kusano 7d535a
#  if defined(__cplusplus)
kusano 7d535a
#  else
kusano 7d535a
#    define __lzo_noinline      __declspec(noinline)
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_noinline)
kusano 7d535a
#  define __lzo_HAVE_noinline 1
kusano 7d535a
#else
kusano 7d535a
#  define __lzo_noinline
kusano 7d535a
#endif
kusano 7d535a
#if (defined(__lzo_HAVE_forceinline) || defined(__lzo_HAVE_noinline)) && !defined(__lzo_HAVE_inline)
kusano 7d535a
#  error "this should not happen"
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_noreturn)
kusano 7d535a
#if (LZO_CC_GNUC >= 0x020700ul)
kusano 7d535a
#  define __lzo_noreturn        __attribute__((__noreturn__))
kusano 7d535a
#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC)
kusano 7d535a
#  define __lzo_noreturn        __declspec(noreturn)
kusano 7d535a
#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC)
kusano 7d535a
#  define __lzo_noreturn        __attribute__((__noreturn__))
kusano 7d535a
#elif (LZO_CC_LLVM || LZO_CC_PATHSCALE)
kusano 7d535a
#  define __lzo_noreturn        __attribute__((__noreturn__))
kusano 7d535a
#elif (LZO_CC_MSC && (_MSC_VER >= 1200))
kusano 7d535a
#  define __lzo_noreturn        __declspec(noreturn)
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_noreturn)
kusano 7d535a
#  define __lzo_HAVE_noreturn 1
kusano 7d535a
#else
kusano 7d535a
#  define __lzo_noreturn
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_nothrow)
kusano 7d535a
#if (LZO_CC_GNUC >= 0x030300ul)
kusano 7d535a
#  define __lzo_nothrow         __attribute__((__nothrow__))
kusano 7d535a
#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 450) && LZO_CC_SYNTAX_MSC) && defined(__cplusplus)
kusano 7d535a
#  define __lzo_nothrow         __declspec(nothrow)
kusano 7d535a
#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800) && LZO_CC_SYNTAX_GNUC)
kusano 7d535a
#  define __lzo_nothrow         __attribute__((__nothrow__))
kusano 7d535a
#elif (LZO_CC_LLVM || LZO_CC_PATHSCALE)
kusano 7d535a
#  define __lzo_nothrow         __attribute__((__nothrow__))
kusano 7d535a
#elif (LZO_CC_MSC && (_MSC_VER >= 1200)) && defined(__cplusplus)
kusano 7d535a
#  define __lzo_nothrow         __declspec(nothrow)
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_nothrow)
kusano 7d535a
#  define __lzo_HAVE_nothrow 1
kusano 7d535a
#else
kusano 7d535a
#  define __lzo_nothrow
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_restrict)
kusano 7d535a
#if (LZO_CC_GNUC >= 0x030400ul)
kusano 7d535a
#  define __lzo_restrict        __restrict__
kusano 7d535a
#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 600) && LZO_CC_SYNTAX_GNUC)
kusano 7d535a
#  define __lzo_restrict        __restrict__
kusano 7d535a
#elif (LZO_CC_LLVM)
kusano 7d535a
#  define __lzo_restrict        __restrict__
kusano 7d535a
#elif (LZO_CC_MSC && (_MSC_VER >= 1400))
kusano 7d535a
#  define __lzo_restrict        __restrict
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_restrict)
kusano 7d535a
#  define __lzo_HAVE_restrict 1
kusano 7d535a
#else
kusano 7d535a
#  define __lzo_restrict
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_likely) && !defined(__lzo_unlikely)
kusano 7d535a
#if (LZO_CC_GNUC >= 0x030200ul)
kusano 7d535a
#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
kusano 7d535a
#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
kusano 7d535a
#elif (LZO_CC_INTELC && (__INTEL_COMPILER >= 800))
kusano 7d535a
#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
kusano 7d535a
#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
kusano 7d535a
#elif (LZO_CC_LLVM || LZO_CC_PATHSCALE)
kusano 7d535a
#  define __lzo_likely(e)       (__builtin_expect(!!(e),1))
kusano 7d535a
#  define __lzo_unlikely(e)     (__builtin_expect(!!(e),0))
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_likely)
kusano 7d535a
#  define __lzo_HAVE_likely 1
kusano 7d535a
#else
kusano 7d535a
#  define __lzo_likely(e)       (e)
kusano 7d535a
#endif
kusano 7d535a
#if defined(__lzo_unlikely)
kusano 7d535a
#  define __lzo_HAVE_unlikely 1
kusano 7d535a
#else
kusano 7d535a
#  define __lzo_unlikely(e)     (e)
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_UNUSED)
kusano 7d535a
#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
kusano 7d535a
#    define LZO_UNUSED(var)         ((void) &var)
kusano 7d535a
#  elif (LZO_CC_BORLANDC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PELLESC || LZO_CC_TURBOC)
kusano 7d535a
#    define LZO_UNUSED(var)         if (&var) ; else
kusano 7d535a
#  elif (LZO_CC_GNUC || LZO_CC_LLVM || LZO_CC_PATHSCALE)
kusano 7d535a
#    define LZO_UNUSED(var)         ((void) var)
kusano 7d535a
#  elif (LZO_CC_MSC && (_MSC_VER < 900))
kusano 7d535a
#    define LZO_UNUSED(var)         if (&var) ; else
kusano 7d535a
#  elif (LZO_CC_KEILC)
kusano 7d535a
#    define LZO_UNUSED(var)         {extern int __lzo_unused[1-2*!(sizeof(var)>0)];}
kusano 7d535a
#  elif (LZO_CC_PACIFICC)
kusano 7d535a
#    define LZO_UNUSED(var)         ((void) sizeof(var))
kusano 7d535a
#  elif (LZO_CC_WATCOMC) && defined(__cplusplus)
kusano 7d535a
#    define LZO_UNUSED(var)         ((void) var)
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_UNUSED(var)         ((void) &var)
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_UNUSED_FUNC)
kusano 7d535a
#  if (LZO_CC_BORLANDC && (__BORLANDC__ >= 0x0600))
kusano 7d535a
#    define LZO_UNUSED_FUNC(func)   ((void) func)
kusano 7d535a
#  elif (LZO_CC_BORLANDC || LZO_CC_NDPC || LZO_CC_TURBOC)
kusano 7d535a
#    define LZO_UNUSED_FUNC(func)   if (func) ; else
kusano 7d535a
#  elif (LZO_CC_LLVM)
kusano 7d535a
#    define LZO_UNUSED_FUNC(func)   ((void) &func)
kusano 7d535a
#  elif (LZO_CC_MSC && (_MSC_VER < 900))
kusano 7d535a
#    define LZO_UNUSED_FUNC(func)   if (func) ; else
kusano 7d535a
#  elif (LZO_CC_MSC)
kusano 7d535a
#    define LZO_UNUSED_FUNC(func)   ((void) &func)
kusano 7d535a
#  elif (LZO_CC_KEILC || LZO_CC_PELLESC)
kusano 7d535a
#    define LZO_UNUSED_FUNC(func)   {extern int __lzo_unused[1-2*!(sizeof((int)func)>0)];}
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_UNUSED_FUNC(func)   ((void) func)
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_UNUSED_LABEL)
kusano 7d535a
#  if (LZO_CC_WATCOMC) && defined(__cplusplus)
kusano 7d535a
#    define LZO_UNUSED_LABEL(l)     switch(0) case 1:goto l
kusano 7d535a
#  elif (LZO_CC_INTELC || LZO_CC_WATCOMC)
kusano 7d535a
#    define LZO_UNUSED_LABEL(l)     if (0) goto l
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_UNUSED_LABEL(l)     switch(0) case 1:goto l
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_DEFINE_UNINITIALIZED_VAR)
kusano 7d535a
#  if 0
kusano 7d535a
#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var
kusano 7d535a
#  elif 0 && (LZO_CC_GNUC)
kusano 7d535a
#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = var
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_DEFINE_UNINITIALIZED_VAR(type,var,init)  type var = init
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_COMPILE_TIME_ASSERT_HEADER)
kusano 7d535a
#  if (LZO_CC_AZTECC || LZO_CC_ZORTECHC)
kusano 7d535a
#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-!(e)];
kusano 7d535a
#  elif (LZO_CC_DMC || LZO_CC_SYMANTECC)
kusano 7d535a
#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1u-2*!(e)];
kusano 7d535a
#  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
kusano 7d535a
#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-!(e)];
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_COMPILE_TIME_ASSERT_HEADER(e)  extern int __lzo_cta[1-2*!(e)];
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_COMPILE_TIME_ASSERT)
kusano 7d535a
#  if (LZO_CC_AZTECC)
kusano 7d535a
#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __lzo_cta_t[1-!(e)];}
kusano 7d535a
#  elif (LZO_CC_DMC || LZO_CC_PACIFICC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
kusano 7d535a
#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
kusano 7d535a
#  elif (LZO_CC_MSC && (_MSC_VER < 900))
kusano 7d535a
#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
kusano 7d535a
#  elif (LZO_CC_TURBOC && (__TURBOC__ == 0x0295))
kusano 7d535a
#    define LZO_COMPILE_TIME_ASSERT(e)  switch(0) case 1:case !(e):break;
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_COMPILE_TIME_ASSERT(e)  {typedef int __lzo_cta_t[1-2*!(e)];}
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#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)
kusano 7d535a
#  if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC)
kusano 7d535a
#  elif (LZO_CC_DMC || LZO_CC_SYMANTECC || LZO_CC_ZORTECHC)
kusano 7d535a
#    define __lzo_cdecl                 __cdecl
kusano 7d535a
#    define __lzo_cdecl_atexit
kusano 7d535a
#    define __lzo_cdecl_main            __cdecl
kusano 7d535a
#    if (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC))
kusano 7d535a
#      define __lzo_cdecl_qsort         __pascal
kusano 7d535a
#    elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC))
kusano 7d535a
#      define __lzo_cdecl_qsort         _stdcall
kusano 7d535a
#    else
kusano 7d535a
#      define __lzo_cdecl_qsort         __cdecl
kusano 7d535a
#    endif
kusano 7d535a
#  elif (LZO_CC_WATCOMC)
kusano 7d535a
#    define __lzo_cdecl                 __cdecl
kusano 7d535a
#  else
kusano 7d535a
#    define __lzo_cdecl                 __cdecl
kusano 7d535a
#    define __lzo_cdecl_atexit          __cdecl
kusano 7d535a
#    define __lzo_cdecl_main            __cdecl
kusano 7d535a
#    define __lzo_cdecl_qsort           __cdecl
kusano 7d535a
#  endif
kusano 7d535a
#  if (LZO_CC_GNUC || LZO_CC_HIGHC || LZO_CC_NDPC || LZO_CC_PACIFICC || LZO_CC_WATCOMC)
kusano 7d535a
#  elif (LZO_OS_OS2 && (LZO_CC_DMC || LZO_CC_SYMANTECC))
kusano 7d535a
#    define __lzo_cdecl_sighandler      __pascal
kusano 7d535a
#  elif (LZO_OS_OS2 && (LZO_CC_ZORTECHC))
kusano 7d535a
#    define __lzo_cdecl_sighandler      _stdcall
kusano 7d535a
#  elif (LZO_CC_MSC && (_MSC_VER >= 1400)) && defined(_M_CEE_PURE)
kusano 7d535a
#    define __lzo_cdecl_sighandler      __clrcall
kusano 7d535a
#  elif (LZO_CC_MSC && (_MSC_VER >= 600 && _MSC_VER < 700))
kusano 7d535a
#    if defined(_DLL)
kusano 7d535a
#      define __lzo_cdecl_sighandler    _far _cdecl _loadds
kusano 7d535a
#    elif defined(_MT)
kusano 7d535a
#      define __lzo_cdecl_sighandler    _far _cdecl
kusano 7d535a
#    else
kusano 7d535a
#      define __lzo_cdecl_sighandler    _cdecl
kusano 7d535a
#    endif
kusano 7d535a
#  else
kusano 7d535a
#    define __lzo_cdecl_sighandler      __cdecl
kusano 7d535a
#  endif
kusano 7d535a
#elif (LZO_ARCH_I386) && (LZO_CC_WATCOMC)
kusano 7d535a
#  define __lzo_cdecl                   __cdecl
kusano 7d535a
#elif (LZO_ARCH_M68K && LZO_OS_TOS && (LZO_CC_PUREC || LZO_CC_TURBOC))
kusano 7d535a
#  define __lzo_cdecl                   cdecl
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_cdecl)
kusano 7d535a
#  define __lzo_cdecl
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_cdecl_atexit)
kusano 7d535a
#  define __lzo_cdecl_atexit
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_cdecl_main)
kusano 7d535a
#  define __lzo_cdecl_main
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_cdecl_qsort)
kusano 7d535a
#  define __lzo_cdecl_qsort
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_cdecl_sighandler)
kusano 7d535a
#  define __lzo_cdecl_sighandler
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_cdecl_va)
kusano 7d535a
#  define __lzo_cdecl_va                __lzo_cdecl
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_CFG_NO_WINDOWS_H)
kusano 7d535a
#if (LZO_OS_CYGWIN || (LZO_OS_EMX && defined(__RSXNT__)) || LZO_OS_WIN32 || LZO_OS_WIN64)
kusano 7d535a
#  if (LZO_CC_WATCOMC && (__WATCOMC__ < 1000))
kusano 7d535a
#  elif (LZO_OS_WIN32 && LZO_CC_GNUC) && defined(__PW32__)
kusano 7d535a
#  elif ((LZO_OS_CYGWIN || defined(__MINGW32__)) && (LZO_CC_GNUC && (LZO_CC_GNUC < 0x025f00ul)))
kusano 7d535a
#  else
kusano 7d535a
#    define LZO_HAVE_WINDOWS_H 1
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_ARCH_ALPHA)
kusano 7d535a
#  define LZO_OPT_AVOID_UINT_INDEX  1
kusano 7d535a
#  define LZO_OPT_AVOID_SHORT       1
kusano 7d535a
#  define LZO_OPT_AVOID_USHORT      1
kusano 7d535a
#elif (LZO_ARCH_AMD64)
kusano 7d535a
#  define LZO_OPT_AVOID_INT_INDEX   1
kusano 7d535a
#  define LZO_OPT_AVOID_UINT_INDEX  1
kusano 7d535a
#  define LZO_OPT_UNALIGNED16       1
kusano 7d535a
#  define LZO_OPT_UNALIGNED32       1
kusano 7d535a
#  define LZO_OPT_UNALIGNED64       1
kusano 7d535a
#elif (LZO_ARCH_ARM && LZO_ARCH_ARM_THUMB)
kusano 7d535a
#elif (LZO_ARCH_ARM)
kusano 7d535a
#  define LZO_OPT_AVOID_SHORT       1
kusano 7d535a
#  define LZO_OPT_AVOID_USHORT      1
kusano 7d535a
#elif (LZO_ARCH_CRIS)
kusano 7d535a
#  define LZO_OPT_UNALIGNED16       1
kusano 7d535a
#  define LZO_OPT_UNALIGNED32       1
kusano 7d535a
#elif (LZO_ARCH_I386)
kusano 7d535a
#  define LZO_OPT_UNALIGNED16       1
kusano 7d535a
#  define LZO_OPT_UNALIGNED32       1
kusano 7d535a
#elif (LZO_ARCH_IA64)
kusano 7d535a
#  define LZO_OPT_AVOID_INT_INDEX   1
kusano 7d535a
#  define LZO_OPT_AVOID_UINT_INDEX  1
kusano 7d535a
#  define LZO_OPT_PREFER_POSTINC    1
kusano 7d535a
#elif (LZO_ARCH_M68K)
kusano 7d535a
#  define LZO_OPT_PREFER_POSTINC    1
kusano 7d535a
#  define LZO_OPT_PREFER_PREDEC     1
kusano 7d535a
#  if defined(__mc68020__) && !defined(__mcoldfire__)
kusano 7d535a
#    define LZO_OPT_UNALIGNED16     1
kusano 7d535a
#    define LZO_OPT_UNALIGNED32     1
kusano 7d535a
#  endif
kusano 7d535a
#elif (LZO_ARCH_MIPS)
kusano 7d535a
#  define LZO_OPT_AVOID_UINT_INDEX  1
kusano 7d535a
#elif (LZO_ARCH_POWERPC)
kusano 7d535a
#  define LZO_OPT_PREFER_PREINC     1
kusano 7d535a
#  define LZO_OPT_PREFER_PREDEC     1
kusano 7d535a
#  if defined(LZO_ABI_BIG_ENDIAN)
kusano 7d535a
#    define LZO_OPT_UNALIGNED16     1
kusano 7d535a
#    define LZO_OPT_UNALIGNED32     1
kusano 7d535a
#  endif
kusano 7d535a
#elif (LZO_ARCH_S390)
kusano 7d535a
#  define LZO_OPT_UNALIGNED16       1
kusano 7d535a
#  define LZO_OPT_UNALIGNED32       1
kusano 7d535a
#  if (LZO_SIZEOF_SIZE_T == 8)
kusano 7d535a
#    define LZO_OPT_UNALIGNED64     1
kusano 7d535a
#  endif
kusano 7d535a
#elif (LZO_ARCH_SH)
kusano 7d535a
#  define LZO_OPT_PREFER_POSTINC    1
kusano 7d535a
#  define LZO_OPT_PREFER_PREDEC     1
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_CFG_NO_INLINE_ASM)
kusano 7d535a
#if defined(LZO_CC_LLVM)
kusano 7d535a
#  define LZO_CFG_NO_INLINE_ASM 1
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_CFG_NO_UNALIGNED)
kusano 7d535a
#if defined(LZO_ABI_NEUTRAL_ENDIAN) || defined(LZO_ARCH_GENERIC)
kusano 7d535a
#  define LZO_CFG_NO_UNALIGNED 1
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_CFG_NO_UNALIGNED)
kusano 7d535a
#  undef LZO_OPT_UNALIGNED16
kusano 7d535a
#  undef LZO_OPT_UNALIGNED32
kusano 7d535a
#  undef LZO_OPT_UNALIGNED64
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_CFG_NO_INLINE_ASM)
kusano 7d535a
#elif (LZO_ARCH_I386 && (LZO_OS_DOS32 || LZO_OS_WIN32) && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
kusano 7d535a
#  define LZO_ASM_SYNTAX_MSC 1
kusano 7d535a
#elif (LZO_OS_WIN64 && (LZO_CC_DMC || LZO_CC_INTELC || LZO_CC_MSC || LZO_CC_PELLESC))
kusano 7d535a
#elif (LZO_ARCH_I386 && (LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
kusano 7d535a
#  define LZO_ASM_SYNTAX_GNUC 1
kusano 7d535a
#elif (LZO_ARCH_AMD64 && (LZO_CC_GNUC || LZO_CC_INTELC || LZO_CC_PATHSCALE))
kusano 7d535a
#  define LZO_ASM_SYNTAX_GNUC 1
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_ASM_SYNTAX_GNUC)
kusano 7d535a
#if (LZO_ARCH_I386 && LZO_CC_GNUC && (LZO_CC_GNUC < 0x020000ul))
kusano 7d535a
#  define __LZO_ASM_CLOBBER         "ax"
kusano 7d535a
#elif (LZO_CC_INTELC)
kusano 7d535a
#  define __LZO_ASM_CLOBBER         "memory"
kusano 7d535a
#else
kusano 7d535a
#  define __LZO_ASM_CLOBBER         "cc", "memory"
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if defined(__LZO_INFOSTR_MM)
kusano 7d535a
#elif (LZO_MM_FLAT) && (defined(__LZO_INFOSTR_PM) || defined(LZO_INFO_ABI_PM))
kusano 7d535a
#  define __LZO_INFOSTR_MM          ""
kusano 7d535a
#elif defined(LZO_INFO_MM)
kusano 7d535a
#  define __LZO_INFOSTR_MM          "." LZO_INFO_MM
kusano 7d535a
#else
kusano 7d535a
#  define __LZO_INFOSTR_MM          ""
kusano 7d535a
#endif
kusano 7d535a
#if defined(__LZO_INFOSTR_PM)
kusano 7d535a
#elif defined(LZO_INFO_ABI_PM)
kusano 7d535a
#  define __LZO_INFOSTR_PM          "." LZO_INFO_ABI_PM
kusano 7d535a
#else
kusano 7d535a
#  define __LZO_INFOSTR_PM          ""
kusano 7d535a
#endif
kusano 7d535a
#if defined(__LZO_INFOSTR_ENDIAN)
kusano 7d535a
#elif defined(LZO_INFO_ABI_ENDIAN)
kusano 7d535a
#  define __LZO_INFOSTR_ENDIAN      "." LZO_INFO_ABI_ENDIAN
kusano 7d535a
#else
kusano 7d535a
#  define __LZO_INFOSTR_ENDIAN      ""
kusano 7d535a
#endif
kusano 7d535a
#if defined(__LZO_INFOSTR_OSNAME)
kusano 7d535a
#elif defined(LZO_INFO_OS_CONSOLE)
kusano 7d535a
#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS "." LZO_INFO_OS_CONSOLE
kusano 7d535a
#elif defined(LZO_INFO_OS_POSIX)
kusano 7d535a
#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS "." LZO_INFO_OS_POSIX
kusano 7d535a
#else
kusano 7d535a
#  define __LZO_INFOSTR_OSNAME      LZO_INFO_OS
kusano 7d535a
#endif
kusano 7d535a
#if defined(__LZO_INFOSTR_LIBC)
kusano 7d535a
#elif defined(LZO_INFO_LIBC)
kusano 7d535a
#  define __LZO_INFOSTR_LIBC        "." LZO_INFO_LIBC
kusano 7d535a
#else
kusano 7d535a
#  define __LZO_INFOSTR_LIBC        ""
kusano 7d535a
#endif
kusano 7d535a
#if defined(__LZO_INFOSTR_CCVER)
kusano 7d535a
#elif defined(LZO_INFO_CCVER)
kusano 7d535a
#  define __LZO_INFOSTR_CCVER       " " LZO_INFO_CCVER
kusano 7d535a
#else
kusano 7d535a
#  define __LZO_INFOSTR_CCVER       ""
kusano 7d535a
#endif
kusano 7d535a
#define LZO_INFO_STRING \
kusano 7d535a
    LZO_INFO_ARCH __LZO_INFOSTR_MM __LZO_INFOSTR_PM __LZO_INFOSTR_ENDIAN \
kusano 7d535a
    " " __LZO_INFOSTR_OSNAME __LZO_INFOSTR_LIBC " " LZO_INFO_CC __LZO_INFOSTR_CCVER
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#undef LZO_HAVE_CONFIG_H
kusano 7d535a
#include "minilzo.h"
kusano 7d535a
kusano 7d535a
#if !defined(MINILZO_VERSION) || (MINILZO_VERSION != 0x2030)
kusano 7d535a
#  error "version mismatch in miniLZO source files"
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#ifdef MINILZO_HAVE_CONFIG_H
kusano 7d535a
#  define LZO_HAVE_CONFIG_H
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#ifndef __LZO_CONF_H
kusano 7d535a
#define __LZO_CONF_H
kusano 7d535a
kusano 7d535a
#if !defined(__LZO_IN_MINILZO)
kusano 7d535a
#if defined(LZO_CFG_FREESTANDING)
kusano 7d535a
#  define LZO_LIBC_FREESTANDING 1
kusano 7d535a
#  define LZO_OS_FREESTANDING 1
kusano 7d535a
#  define ACC_LIBC_FREESTANDING 1
kusano 7d535a
#  define ACC_OS_FREESTANDING 1
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_CFG_NO_UNALIGNED)
kusano 7d535a
#  define ACC_CFG_NO_UNALIGNED 1
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_ARCH_GENERIC)
kusano 7d535a
#  define ACC_ARCH_GENERIC 1
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_ABI_NEUTRAL_ENDIAN)
kusano 7d535a
#  define ACC_ABI_NEUTRAL_ENDIAN 1
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_HAVE_CONFIG_H)
kusano 7d535a
#  define ACC_CONFIG_NO_HEADER 1
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_CFG_EXTRA_CONFIG_HEADER)
kusano 7d535a
#  include LZO_CFG_EXTRA_CONFIG_HEADER
kusano 7d535a
#endif
kusano 7d535a
#if defined(__LZOCONF_H) || defined(__LZOCONF_H_INCLUDED)
kusano 7d535a
#  error "include this file first"
kusano 7d535a
#endif
kusano 7d535a
#include "lzo/lzoconf.h"
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if (LZO_VERSION < 0x02000) || !defined(__LZOCONF_H_INCLUDED)
kusano 7d535a
#  error "version mismatch"
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if (LZO_CC_BORLANDC && LZO_ARCH_I086)
kusano 7d535a
#  pragma option -h
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if (LZO_CC_MSC && (_MSC_VER >= 1000))
kusano 7d535a
#  pragma warning(disable: 4127 4701)
kusano 7d535a
#endif
kusano 7d535a
#if (LZO_CC_MSC && (_MSC_VER >= 1300))
kusano 7d535a
#  pragma warning(disable: 4820)
kusano 7d535a
#  pragma warning(disable: 4514 4710 4711)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if (LZO_CC_SUNPROC)
kusano 7d535a
#  pragma error_messages(off,E_END_OF_LOOP_CODE_NOT_REACHED)
kusano 7d535a
#  pragma error_messages(off,E_LOOP_NOT_ENTERED_AT_TOP)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(__LZO_MMODEL_HUGE) && (!LZO_HAVE_MM_HUGE_PTR)
kusano 7d535a
#  error "this should not happen - check defines for __huge"
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(__LZO_IN_MINILZO) || defined(LZO_CFG_FREESTANDING)
kusano 7d535a
#elif (LZO_OS_DOS16 || LZO_OS_OS216 || LZO_OS_WIN16)
kusano 7d535a
#  define ACC_WANT_ACC_INCD_H 1
kusano 7d535a
#  define ACC_WANT_ACC_INCE_H 1
kusano 7d535a
#  define ACC_WANT_ACC_INCI_H 1
kusano 7d535a
#elif 1
kusano 7d535a
#  include <string.h>
kusano 7d535a
#else
kusano 7d535a
#  define ACC_WANT_ACC_INCD_H 1
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if (LZO_ARCH_I086)
kusano 7d535a
#  define ACC_MM_AHSHIFT        LZO_MM_AHSHIFT
kusano 7d535a
#  define ACC_PTR_FP_OFF(x)     (((const unsigned __far*)&(x))[0])
kusano 7d535a
#  define ACC_PTR_FP_SEG(x)     (((const unsigned __far*)&(x))[1])
kusano 7d535a
#  define ACC_PTR_MK_FP(s,o)    ((void __far*)(((unsigned long)(s)<<16)+(unsigned)(o)))
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(lzo_uintptr_t)
kusano 7d535a
#  if defined(__LZO_MMODEL_HUGE)
kusano 7d535a
#    define lzo_uintptr_t       unsigned long
kusano 7d535a
#  elif 1 && defined(LZO_OS_OS400) && (LZO_SIZEOF_VOID_P == 16)
kusano 7d535a
#    define __LZO_UINTPTR_T_IS_POINTER 1
kusano 7d535a
     typedef char*              lzo_uintptr_t;
kusano 7d535a
#    define lzo_uintptr_t       lzo_uintptr_t
kusano 7d535a
#  elif (LZO_SIZEOF_SIZE_T == LZO_SIZEOF_VOID_P)
kusano 7d535a
#    define lzo_uintptr_t       size_t
kusano 7d535a
#  elif (LZO_SIZEOF_LONG == LZO_SIZEOF_VOID_P)
kusano 7d535a
#    define lzo_uintptr_t       unsigned long
kusano 7d535a
#  elif (LZO_SIZEOF_INT == LZO_SIZEOF_VOID_P)
kusano 7d535a
#    define lzo_uintptr_t       unsigned int
kusano 7d535a
#  elif (LZO_SIZEOF_LONG_LONG == LZO_SIZEOF_VOID_P)
kusano 7d535a
#    define lzo_uintptr_t       unsigned long long
kusano 7d535a
#  else
kusano 7d535a
#    define lzo_uintptr_t       size_t
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uintptr_t) >= sizeof(lzo_voidp))
kusano 7d535a
kusano 7d535a
#if 1 && !defined(LZO_CFG_FREESTANDING)
kusano 7d535a
#if 1 && !defined(HAVE_STRING_H)
kusano 7d535a
#define HAVE_STRING_H 1
kusano 7d535a
#endif
kusano 7d535a
#if 1 && !defined(HAVE_MEMCMP)
kusano 7d535a
#define HAVE_MEMCMP 1
kusano 7d535a
#endif
kusano 7d535a
#if 1 && !defined(HAVE_MEMCPY)
kusano 7d535a
#define HAVE_MEMCPY 1
kusano 7d535a
#endif
kusano 7d535a
#if 1 && !defined(HAVE_MEMMOVE)
kusano 7d535a
#define HAVE_MEMMOVE 1
kusano 7d535a
#endif
kusano 7d535a
#if 1 && !defined(HAVE_MEMSET)
kusano 7d535a
#define HAVE_MEMSET 1
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if 1 && defined(HAVE_STRING_H)
kusano 7d535a
#include <string.h>
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_CFG_FREESTANDING)
kusano 7d535a
#  undef HAVE_MEMCMP
kusano 7d535a
#  undef HAVE_MEMCPY
kusano 7d535a
#  undef HAVE_MEMMOVE
kusano 7d535a
#  undef HAVE_MEMSET
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(HAVE_MEMCMP)
kusano 7d535a
#  undef memcmp
kusano 7d535a
#  define memcmp(a,b,c)         lzo_memcmp(a,b,c)
kusano 7d535a
#elif !defined(__LZO_MMODEL_HUGE)
kusano 7d535a
#  define lzo_memcmp(a,b,c)     memcmp(a,b,c)
kusano 7d535a
#endif
kusano 7d535a
#if !defined(HAVE_MEMCPY)
kusano 7d535a
#  undef memcpy
kusano 7d535a
#  define memcpy(a,b,c)         lzo_memcpy(a,b,c)
kusano 7d535a
#elif !defined(__LZO_MMODEL_HUGE)
kusano 7d535a
#  define lzo_memcpy(a,b,c)     memcpy(a,b,c)
kusano 7d535a
#endif
kusano 7d535a
#if !defined(HAVE_MEMMOVE)
kusano 7d535a
#  undef memmove
kusano 7d535a
#  define memmove(a,b,c)        lzo_memmove(a,b,c)
kusano 7d535a
#elif !defined(__LZO_MMODEL_HUGE)
kusano 7d535a
#  define lzo_memmove(a,b,c)    memmove(a,b,c)
kusano 7d535a
#endif
kusano 7d535a
#if !defined(HAVE_MEMSET)
kusano 7d535a
#  undef memset
kusano 7d535a
#  define memset(a,b,c)         lzo_memset(a,b,c)
kusano 7d535a
#elif !defined(__LZO_MMODEL_HUGE)
kusano 7d535a
#  define lzo_memset(a,b,c)     memset(a,b,c)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#undef NDEBUG
kusano 7d535a
#if defined(LZO_CFG_FREESTANDING)
kusano 7d535a
#  undef LZO_DEBUG
kusano 7d535a
#  define NDEBUG 1
kusano 7d535a
#  undef assert
kusano 7d535a
#  define assert(e) ((void)0)
kusano 7d535a
#else
kusano 7d535a
#  if !defined(LZO_DEBUG)
kusano 7d535a
#    define NDEBUG 1
kusano 7d535a
#  endif
kusano 7d535a
#  include <assert.h>
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if 0 && defined(__BOUNDS_CHECKING_ON)
kusano 7d535a
#  include <unchecked.h>
kusano 7d535a
#else
kusano 7d535a
#  define BOUNDS_CHECKING_OFF_DURING(stmt)      stmt
kusano 7d535a
#  define BOUNDS_CHECKING_OFF_IN_EXPR(expr)     (expr)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(__lzo_inline)
kusano 7d535a
#  define __lzo_inline
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_forceinline)
kusano 7d535a
#  define __lzo_forceinline
kusano 7d535a
#endif
kusano 7d535a
#if !defined(__lzo_noinline)
kusano 7d535a
#  define __lzo_noinline
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if 1
kusano 7d535a
#  define LZO_BYTE(x)       ((unsigned char) (x))
kusano 7d535a
#else
kusano 7d535a
#  define LZO_BYTE(x)       ((unsigned char) ((x) & 0xff))
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#define LZO_MAX(a,b)        ((a) >= (b) ? (a) : (b))
kusano 7d535a
#define LZO_MIN(a,b)        ((a) <= (b) ? (a) : (b))
kusano 7d535a
#define LZO_MAX3(a,b,c)     ((a) >= (b) ? LZO_MAX(a,c) : LZO_MAX(b,c))
kusano 7d535a
#define LZO_MIN3(a,b,c)     ((a) <= (b) ? LZO_MIN(a,c) : LZO_MIN(b,c))
kusano 7d535a
kusano 7d535a
#define lzo_sizeof(type)    ((lzo_uint) (sizeof(type)))
kusano 7d535a
kusano 7d535a
#define LZO_HIGH(array)     ((lzo_uint) (sizeof(array)/sizeof(*(array))))
kusano 7d535a
kusano 7d535a
#define LZO_SIZE(bits)      (1u << (bits))
kusano 7d535a
#define LZO_MASK(bits)      (LZO_SIZE(bits) - 1)
kusano 7d535a
kusano 7d535a
#define LZO_LSIZE(bits)     (1ul << (bits))
kusano 7d535a
#define LZO_LMASK(bits)     (LZO_LSIZE(bits) - 1)
kusano 7d535a
kusano 7d535a
#define LZO_USIZE(bits)     ((lzo_uint) 1 << (bits))
kusano 7d535a
#define LZO_UMASK(bits)     (LZO_USIZE(bits) - 1)
kusano 7d535a
kusano 7d535a
#if !defined(DMUL)
kusano 7d535a
#if 0
kusano 7d535a
kusano 7d535a
#  define DMUL(a,b) ((lzo_xint) ((lzo_uint32)(a) * (lzo_uint32)(b)))
kusano 7d535a
#else
kusano 7d535a
#  define DMUL(a,b) ((lzo_xint) ((a) * (b)))
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if 1 && !defined(LZO_CFG_NO_UNALIGNED)
kusano 7d535a
#if 1 && (LZO_ARCH_AMD64 || LZO_ARCH_I386)
kusano 7d535a
#  if (LZO_SIZEOF_SHORT == 2)
kusano 7d535a
#    define LZO_UNALIGNED_OK_2
kusano 7d535a
#  endif
kusano 7d535a
#  if (LZO_SIZEOF_INT == 4)
kusano 7d535a
#    define LZO_UNALIGNED_OK_4
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_UNALIGNED_OK_2)
kusano 7d535a
  LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(short) == 2)
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
  LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint32) == 4)
kusano 7d535a
#elif defined(LZO_ALIGNED_OK_4)
kusano 7d535a
  LZO_COMPILE_TIME_ASSERT_HEADER(sizeof(lzo_uint32) == 4)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#define MEMCPY8_DS(dest,src,len) \
kusano 7d535a
    lzo_memcpy(dest,src,len); dest += len; src += len
kusano 7d535a
kusano 7d535a
#define BZERO8_PTR(s,l,n) \
kusano 7d535a
    lzo_memset((lzo_voidp)(s),0,(lzo_uint)(l)*(n))
kusano 7d535a
kusano 7d535a
#define MEMCPY_DS(dest,src,len) \
kusano 7d535a
    do *dest++ = *src++; while (--len > 0)
kusano 7d535a
kusano 7d535a
__LZO_EXTERN_C int __lzo_init_done;
kusano 7d535a
__LZO_EXTERN_C const char __lzo_copyright[];
kusano 7d535a
LZO_EXTERN(const lzo_bytep) lzo_copyright(void);
kusano 7d535a
kusano 7d535a
#ifndef __LZO_PTR_H
kusano 7d535a
#define __LZO_PTR_H
kusano 7d535a
kusano 7d535a
#ifdef __cplusplus
kusano 7d535a
extern "C" {
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(lzo_uintptr_t)
kusano 7d535a
#  if defined(__LZO_MMODEL_HUGE)
kusano 7d535a
#    define lzo_uintptr_t   unsigned long
kusano 7d535a
#  else
kusano 7d535a
#    define lzo_uintptr_t   acc_uintptr_t
kusano 7d535a
#    ifdef __ACC_INTPTR_T_IS_POINTER
kusano 7d535a
#      define __LZO_UINTPTR_T_IS_POINTER 1
kusano 7d535a
#    endif
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if (LZO_ARCH_I086)
kusano 7d535a
#define PTR(a)              ((lzo_bytep) (a))
kusano 7d535a
#define PTR_ALIGNED_4(a)    ((ACC_PTR_FP_OFF(a) & 3) == 0)
kusano 7d535a
#define PTR_ALIGNED2_4(a,b) (((ACC_PTR_FP_OFF(a) | ACC_PTR_FP_OFF(b)) & 3) == 0)
kusano 7d535a
#elif (LZO_MM_PVP)
kusano 7d535a
#define PTR(a)              ((lzo_bytep) (a))
kusano 7d535a
#define PTR_ALIGNED_8(a)    ((((lzo_uintptr_t)(a)) >> 61) == 0)
kusano 7d535a
#define PTR_ALIGNED2_8(a,b) ((((lzo_uintptr_t)(a)|(lzo_uintptr_t)(b)) >> 61) == 0)
kusano 7d535a
#else
kusano 7d535a
#define PTR(a)              ((lzo_uintptr_t) (a))
kusano 7d535a
#define PTR_LINEAR(a)       PTR(a)
kusano 7d535a
#define PTR_ALIGNED_4(a)    ((PTR_LINEAR(a) & 3) == 0)
kusano 7d535a
#define PTR_ALIGNED_8(a)    ((PTR_LINEAR(a) & 7) == 0)
kusano 7d535a
#define PTR_ALIGNED2_4(a,b) (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 3) == 0)
kusano 7d535a
#define PTR_ALIGNED2_8(a,b) (((PTR_LINEAR(a) | PTR_LINEAR(b)) & 7) == 0)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#define PTR_LT(a,b)         (PTR(a) < PTR(b))
kusano 7d535a
#define PTR_GE(a,b)         (PTR(a) >= PTR(b))
kusano 7d535a
#define PTR_DIFF(a,b)       (PTR(a) - PTR(b))
kusano 7d535a
#define pd(a,b)             ((lzo_uint) ((a)-(b)))
kusano 7d535a
kusano 7d535a
LZO_EXTERN(lzo_uintptr_t)
kusano 7d535a
__lzo_ptr_linear(const lzo_voidp ptr);
kusano 7d535a
kusano 7d535a
typedef union
kusano 7d535a
{
kusano 7d535a
    char            a_char;
kusano 7d535a
    unsigned char   a_uchar;
kusano 7d535a
    short           a_short;
kusano 7d535a
    unsigned short  a_ushort;
kusano 7d535a
    int             a_int;
kusano 7d535a
    unsigned int    a_uint;
kusano 7d535a
    long            a_long;
kusano 7d535a
    unsigned long   a_ulong;
kusano 7d535a
    lzo_int         a_lzo_int;
kusano 7d535a
    lzo_uint        a_lzo_uint;
kusano 7d535a
    lzo_int32       a_lzo_int32;
kusano 7d535a
    lzo_uint32      a_lzo_uint32;
kusano 7d535a
    ptrdiff_t       a_ptrdiff_t;
kusano 7d535a
    lzo_uintptr_t   a_lzo_uintptr_t;
kusano 7d535a
    lzo_voidp       a_lzo_voidp;
kusano 7d535a
    void *          a_void_p;
kusano 7d535a
    lzo_bytep       a_lzo_bytep;
kusano 7d535a
    lzo_bytepp      a_lzo_bytepp;
kusano 7d535a
    lzo_uintp       a_lzo_uintp;
kusano 7d535a
    lzo_uint *      a_lzo_uint_p;
kusano 7d535a
    lzo_uint32p     a_lzo_uint32p;
kusano 7d535a
    lzo_uint32 *    a_lzo_uint32_p;
kusano 7d535a
    unsigned char * a_uchar_p;
kusano 7d535a
    char *          a_char_p;
kusano 7d535a
}
kusano 7d535a
lzo_full_align_t;
kusano 7d535a
kusano 7d535a
#ifdef __cplusplus
kusano 7d535a
}
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#define LZO_DETERMINISTIC
kusano 7d535a
kusano 7d535a
#define LZO_DICT_USE_PTR
kusano 7d535a
#if 0 && (LZO_ARCH_I086)
kusano 7d535a
#  undef LZO_DICT_USE_PTR
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_DICT_USE_PTR)
kusano 7d535a
#  define lzo_dict_t    const lzo_bytep
kusano 7d535a
#  define lzo_dict_p    lzo_dict_t __LZO_MMODEL *
kusano 7d535a
#else
kusano 7d535a
#  define lzo_dict_t    lzo_uint
kusano 7d535a
#  define lzo_dict_p    lzo_dict_t __LZO_MMODEL *
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(MINILZO_CFG_SKIP_LZO_PTR)
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(lzo_uintptr_t)
kusano 7d535a
__lzo_ptr_linear(const lzo_voidp ptr)
kusano 7d535a
{
kusano 7d535a
    lzo_uintptr_t p;
kusano 7d535a
kusano 7d535a
#if (LZO_ARCH_I086)
kusano 7d535a
    p = (((lzo_uintptr_t)(ACC_PTR_FP_SEG(ptr))) << (16 - ACC_MM_AHSHIFT)) + (ACC_PTR_FP_OFF(ptr));
kusano 7d535a
#elif (LZO_MM_PVP)
kusano 7d535a
    p = (lzo_uintptr_t) (ptr);
kusano 7d535a
    p = (p << 3) | (p >> 61);
kusano 7d535a
#else
kusano 7d535a
    p = (lzo_uintptr_t) PTR_LINEAR(ptr);
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
    return p;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(unsigned)
kusano 7d535a
__lzo_align_gap(const lzo_voidp ptr, lzo_uint size)
kusano 7d535a
{
kusano 7d535a
#if defined(__LZO_UINTPTR_T_IS_POINTER)
kusano 7d535a
    size_t n = (size_t) ptr;
kusano 7d535a
    n = (((n + size - 1) / size) * size) - n;
kusano 7d535a
#else
kusano 7d535a
    lzo_uintptr_t p, n;
kusano 7d535a
    p = __lzo_ptr_linear(ptr);
kusano 7d535a
    n = (((p + size - 1) / size) * size) - p;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
    assert(size > 0);
kusano 7d535a
    assert((long)n >= 0);
kusano 7d535a
    assert(n <= size);
kusano 7d535a
    return (unsigned)n;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
/* If you use the LZO library in a product, I would appreciate that you
kusano 7d535a
 * keep this copyright string in the executable of your product.
kusano 7d535a
 */
kusano 7d535a
kusano 7d535a
const char __lzo_copyright[] =
kusano 7d535a
#if !defined(__LZO_IN_MINLZO)
kusano 7d535a
    LZO_VERSION_STRING;
kusano 7d535a
#else
kusano 7d535a
    "\r\n\n"
kusano 7d535a
    "LZO data compression library.\n"
kusano 7d535a
    "$Copyright: LZO (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Markus Franz Xaver Johannes Oberhumer\n"
kusano 7d535a
    "<markus@oberhumer.com>\n"
kusano 7d535a
    "http://www.oberhumer.com $\n\n"
kusano 7d535a
    "$Id: LZO version: v" LZO_VERSION_STRING ", " LZO_VERSION_DATE " $\n"
kusano 7d535a
    "$Built: " __DATE__ " " __TIME__ " $\n"
kusano 7d535a
    "$Info: " LZO_INFO_STRING " $\n";
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(const lzo_bytep)
kusano 7d535a
lzo_copyright(void)
kusano 7d535a
{
kusano 7d535a
#if (LZO_OS_DOS16 && LZO_CC_TURBOC)
kusano 7d535a
    return (lzo_voidp) __lzo_copyright;
kusano 7d535a
#else
kusano 7d535a
    return (const lzo_bytep) __lzo_copyright;
kusano 7d535a
#endif
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(unsigned)
kusano 7d535a
lzo_version(void)
kusano 7d535a
{
kusano 7d535a
    return LZO_VERSION;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(const char *)
kusano 7d535a
lzo_version_string(void)
kusano 7d535a
{
kusano 7d535a
    return LZO_VERSION_STRING;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(const char *)
kusano 7d535a
lzo_version_date(void)
kusano 7d535a
{
kusano 7d535a
    return LZO_VERSION_DATE;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(const lzo_charp)
kusano 7d535a
_lzo_version_string(void)
kusano 7d535a
{
kusano 7d535a
    return LZO_VERSION_STRING;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(const lzo_charp)
kusano 7d535a
_lzo_version_date(void)
kusano 7d535a
{
kusano 7d535a
    return LZO_VERSION_DATE;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
#define LZO_BASE 65521u
kusano 7d535a
#define LZO_NMAX 5552
kusano 7d535a
kusano 7d535a
#define LZO_DO1(buf,i)  s1 += buf[i]; s2 += s1
kusano 7d535a
#define LZO_DO2(buf,i)  LZO_DO1(buf,i); LZO_DO1(buf,i+1);
kusano 7d535a
#define LZO_DO4(buf,i)  LZO_DO2(buf,i); LZO_DO2(buf,i+2);
kusano 7d535a
#define LZO_DO8(buf,i)  LZO_DO4(buf,i); LZO_DO4(buf,i+4);
kusano 7d535a
#define LZO_DO16(buf,i) LZO_DO8(buf,i); LZO_DO8(buf,i+8);
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(lzo_uint32)
kusano 7d535a
lzo_adler32(lzo_uint32 adler, const lzo_bytep buf, lzo_uint len)
kusano 7d535a
{
kusano 7d535a
    lzo_uint32 s1 = adler & 0xffff;
kusano 7d535a
    lzo_uint32 s2 = (adler >> 16) & 0xffff;
kusano 7d535a
    unsigned k;
kusano 7d535a
kusano 7d535a
    if (buf == NULL)
kusano 7d535a
        return 1;
kusano 7d535a
kusano 7d535a
    while (len > 0)
kusano 7d535a
    {
kusano 7d535a
        k = len < LZO_NMAX ? (unsigned) len : LZO_NMAX;
kusano 7d535a
        len -= k;
kusano 7d535a
        if (k >= 16) do
kusano 7d535a
        {
kusano 7d535a
            LZO_DO16(buf,0);
kusano 7d535a
            buf += 16;
kusano 7d535a
            k -= 16;
kusano 7d535a
        } while (k >= 16);
kusano 7d535a
        if (k != 0) do
kusano 7d535a
        {
kusano 7d535a
            s1 += *buf++;
kusano 7d535a
            s2 += s1;
kusano 7d535a
        } while (--k > 0);
kusano 7d535a
        s1 %= LZO_BASE;
kusano 7d535a
        s2 %= LZO_BASE;
kusano 7d535a
    }
kusano 7d535a
    return (s2 << 16) | s1;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
#undef LZO_DO1
kusano 7d535a
#undef LZO_DO2
kusano 7d535a
#undef LZO_DO4
kusano 7d535a
#undef LZO_DO8
kusano 7d535a
#undef LZO_DO16
kusano 7d535a
kusano 7d535a
#if !defined(MINILZO_CFG_SKIP_LZO_STRING)
kusano 7d535a
#undef lzo_memcmp
kusano 7d535a
#undef lzo_memcpy
kusano 7d535a
#undef lzo_memmove
kusano 7d535a
#undef lzo_memset
kusano 7d535a
#if !defined(__LZO_MMODEL_HUGE)
kusano 7d535a
#  undef LZO_HAVE_MM_HUGE_PTR
kusano 7d535a
#endif
kusano 7d535a
#define lzo_hsize_t             lzo_uint
kusano 7d535a
#define lzo_hvoid_p             lzo_voidp
kusano 7d535a
#define lzo_hbyte_p             lzo_bytep
kusano 7d535a
#define LZOLIB_PUBLIC(r,f)      LZO_PUBLIC(r) f
kusano 7d535a
#define lzo_hmemcmp             lzo_memcmp
kusano 7d535a
#define lzo_hmemcpy             lzo_memcpy
kusano 7d535a
#define lzo_hmemmove            lzo_memmove
kusano 7d535a
#define lzo_hmemset             lzo_memset
kusano 7d535a
#define __LZOLIB_HMEMCPY_CH_INCLUDED 1
kusano 7d535a
#if !defined(LZOLIB_PUBLIC)
kusano 7d535a
#  define LZOLIB_PUBLIC(r,f)    r __LZOLIB_FUNCNAME(f)
kusano 7d535a
#endif
kusano 7d535a
LZOLIB_PUBLIC(int, lzo_hmemcmp) (const lzo_hvoid_p s1, const lzo_hvoid_p s2, lzo_hsize_t len)
kusano 7d535a
{
kusano 7d535a
#if (LZO_HAVE_MM_HUGE_PTR) || !defined(HAVE_MEMCMP)
kusano 7d535a
    const lzo_hbyte_p p1 = (const lzo_hbyte_p) s1;
kusano 7d535a
    const lzo_hbyte_p p2 = (const lzo_hbyte_p) s2;
kusano 7d535a
    if __lzo_likely(len > 0) do
kusano 7d535a
    {
kusano 7d535a
        int d = *p1 - *p2;
kusano 7d535a
        if (d != 0)
kusano 7d535a
            return d;
kusano 7d535a
        p1++; p2++;
kusano 7d535a
    } while __lzo_likely(--len > 0);
kusano 7d535a
    return 0;
kusano 7d535a
#else
kusano 7d535a
    return memcmp(s1, s2, len);
kusano 7d535a
#endif
kusano 7d535a
}
kusano 7d535a
LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemcpy) (lzo_hvoid_p dest, const lzo_hvoid_p src, lzo_hsize_t len)
kusano 7d535a
{
kusano 7d535a
#if (LZO_HAVE_MM_HUGE_PTR) || !defined(HAVE_MEMCPY)
kusano 7d535a
    lzo_hbyte_p p1 = (lzo_hbyte_p) dest;
kusano 7d535a
    const lzo_hbyte_p p2 = (const lzo_hbyte_p) src;
kusano 7d535a
    if (!(len > 0) || p1 == p2)
kusano 7d535a
        return dest;
kusano 7d535a
    do
kusano 7d535a
        *p1++ = *p2++;
kusano 7d535a
    while __lzo_likely(--len > 0);
kusano 7d535a
    return dest;
kusano 7d535a
#else
kusano 7d535a
    return memcpy(dest, src, len);
kusano 7d535a
#endif
kusano 7d535a
}
kusano 7d535a
LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemmove) (lzo_hvoid_p dest, const lzo_hvoid_p src, lzo_hsize_t len)
kusano 7d535a
{
kusano 7d535a
#if (LZO_HAVE_MM_HUGE_PTR) || !defined(HAVE_MEMMOVE)
kusano 7d535a
    lzo_hbyte_p p1 = (lzo_hbyte_p) dest;
kusano 7d535a
    const lzo_hbyte_p p2 = (const lzo_hbyte_p) src;
kusano 7d535a
    if (!(len > 0) || p1 == p2)
kusano 7d535a
        return dest;
kusano 7d535a
    if (p1 < p2)
kusano 7d535a
    {
kusano 7d535a
        do
kusano 7d535a
            *p1++ = *p2++;
kusano 7d535a
        while __lzo_likely(--len > 0);
kusano 7d535a
    }
kusano 7d535a
    else
kusano 7d535a
    {
kusano 7d535a
        p1 += len;
kusano 7d535a
        p2 += len;
kusano 7d535a
        do
kusano 7d535a
            *--p1 = *--p2;
kusano 7d535a
        while __lzo_likely(--len > 0);
kusano 7d535a
    }
kusano 7d535a
    return dest;
kusano 7d535a
#else
kusano 7d535a
    return memmove(dest, src, len);
kusano 7d535a
#endif
kusano 7d535a
}
kusano 7d535a
LZOLIB_PUBLIC(lzo_hvoid_p, lzo_hmemset) (lzo_hvoid_p s, int c, lzo_hsize_t len)
kusano 7d535a
{
kusano 7d535a
#if (LZO_HAVE_MM_HUGE_PTR) || !defined(HAVE_MEMSET)
kusano 7d535a
    lzo_hbyte_p p = (lzo_hbyte_p) s;
kusano 7d535a
    if __lzo_likely(len > 0) do
kusano 7d535a
        *p++ = (unsigned char) c;
kusano 7d535a
    while __lzo_likely(--len > 0);
kusano 7d535a
    return s;
kusano 7d535a
#else
kusano 7d535a
    return memset(s, c, len);
kusano 7d535a
#endif
kusano 7d535a
}
kusano 7d535a
#undef LZOLIB_PUBLIC
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(__LZO_IN_MINILZO)
kusano 7d535a
kusano 7d535a
#define ACC_WANT_ACC_CHK_CH 1
kusano 7d535a
#undef ACCCHK_ASSERT
kusano 7d535a
kusano 7d535a
    ACCCHK_ASSERT_IS_SIGNED_T(lzo_int)
kusano 7d535a
    ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uint)
kusano 7d535a
kusano 7d535a
    ACCCHK_ASSERT_IS_SIGNED_T(lzo_int32)
kusano 7d535a
    ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uint32)
kusano 7d535a
    ACCCHK_ASSERT((LZO_UINT32_C(1) << (int)(8*sizeof(LZO_UINT32_C(1))-1)) > 0)
kusano 7d535a
    ACCCHK_ASSERT(sizeof(lzo_uint32) >= 4)
kusano 7d535a
kusano 7d535a
#if !defined(__LZO_UINTPTR_T_IS_POINTER)
kusano 7d535a
    ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_uintptr_t)
kusano 7d535a
#endif
kusano 7d535a
    ACCCHK_ASSERT(sizeof(lzo_uintptr_t) >= sizeof(lzo_voidp))
kusano 7d535a
kusano 7d535a
    ACCCHK_ASSERT_IS_UNSIGNED_T(lzo_xint)
kusano 7d535a
    ACCCHK_ASSERT(sizeof(lzo_xint) >= sizeof(lzo_uint32))
kusano 7d535a
    ACCCHK_ASSERT(sizeof(lzo_xint) >= sizeof(lzo_uint))
kusano 7d535a
    ACCCHK_ASSERT(sizeof(lzo_xint) == sizeof(lzo_uint32) || sizeof(lzo_xint) == sizeof(lzo_uint))
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
#undef ACCCHK_ASSERT
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(int)
kusano 7d535a
_lzo_config_check(void)
kusano 7d535a
{
kusano 7d535a
    lzo_bool r = 1;
kusano 7d535a
    union { unsigned char c[2*sizeof(lzo_xint)]; lzo_xint l[2]; } u;
kusano 7d535a
    lzo_uintptr_t p;
kusano 7d535a
kusano 7d535a
#if !defined(LZO_CFG_NO_CONFIG_CHECK)
kusano 7d535a
#if defined(LZO_ABI_BIG_ENDIAN)
kusano 7d535a
    u.l[0] = u.l[1] = 0; u.c[sizeof(lzo_xint) - 1] = 128;
kusano 7d535a
    r &= (u.l[0] == 128);
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_ABI_LITTLE_ENDIAN)
kusano 7d535a
    u.l[0] = u.l[1] = 0; u.c[0] = 128;
kusano 7d535a
    r &= (u.l[0] == 128);
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_UNALIGNED_OK_2)
kusano 7d535a
    p = (lzo_uintptr_t) (const lzo_voidp) &u.c[0];
kusano 7d535a
    u.l[0] = u.l[1] = 0;
kusano 7d535a
    r &= ((* (const lzo_ushortp) (p+1)) == 0);
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
    p = (lzo_uintptr_t) (const lzo_voidp) &u.c[0];
kusano 7d535a
    u.l[0] = u.l[1] = 0;
kusano 7d535a
    r &= ((* (const lzo_uint32p) (p+1)) == 0);
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
    LZO_UNUSED(u); LZO_UNUSED(p);
kusano 7d535a
    return r == 1 ? LZO_E_OK : LZO_E_ERROR;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
int __lzo_init_done = 0;
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(int)
kusano 7d535a
__lzo_init_v2(unsigned v, int s1, int s2, int s3, int s4, int s5,
kusano 7d535a
                          int s6, int s7, int s8, int s9)
kusano 7d535a
{
kusano 7d535a
    int r;
kusano 7d535a
kusano 7d535a
#if defined(__LZO_IN_MINILZO)
kusano 7d535a
#elif (LZO_CC_MSC && ((_MSC_VER) < 700))
kusano 7d535a
#else
kusano 7d535a
#define ACC_WANT_ACC_CHK_CH 1
kusano 7d535a
#undef ACCCHK_ASSERT
kusano 7d535a
#define ACCCHK_ASSERT(expr)  LZO_COMPILE_TIME_ASSERT(expr)
kusano 7d535a
#endif
kusano 7d535a
#undef ACCCHK_ASSERT
kusano 7d535a
kusano 7d535a
    __lzo_init_done = 1;
kusano 7d535a
kusano 7d535a
    if (v == 0)
kusano 7d535a
        return LZO_E_ERROR;
kusano 7d535a
kusano 7d535a
    r = (s1 == -1 || s1 == (int) sizeof(short)) &&
kusano 7d535a
        (s2 == -1 || s2 == (int) sizeof(int)) &&
kusano 7d535a
        (s3 == -1 || s3 == (int) sizeof(long)) &&
kusano 7d535a
        (s4 == -1 || s4 == (int) sizeof(lzo_uint32)) &&
kusano 7d535a
        (s5 == -1 || s5 == (int) sizeof(lzo_uint)) &&
kusano 7d535a
        (s6 == -1 || s6 == (int) lzo_sizeof_dict_t) &&
kusano 7d535a
        (s7 == -1 || s7 == (int) sizeof(char *)) &&
kusano 7d535a
        (s8 == -1 || s8 == (int) sizeof(lzo_voidp)) &&
kusano 7d535a
        (s9 == -1 || s9 == (int) sizeof(lzo_callback_t));
kusano 7d535a
    if (!r)
kusano 7d535a
        return LZO_E_ERROR;
kusano 7d535a
kusano 7d535a
    r = _lzo_config_check();
kusano 7d535a
    if (r != LZO_E_OK)
kusano 7d535a
        return r;
kusano 7d535a
kusano 7d535a
    return r;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
#if !defined(__LZO_IN_MINILZO)
kusano 7d535a
kusano 7d535a
#if (LZO_OS_WIN16 && LZO_CC_WATCOMC) && defined(__SW_BD)
kusano 7d535a
kusano 7d535a
#if 0
kusano 7d535a
BOOL FAR PASCAL LibMain ( HANDLE hInstance, WORD wDataSegment,
kusano 7d535a
                          WORD wHeapSize, LPSTR lpszCmdLine )
kusano 7d535a
#else
kusano 7d535a
int __far __pascal LibMain ( int a, short b, short c, long d )
kusano 7d535a
#endif
kusano 7d535a
{
kusano 7d535a
    LZO_UNUSED(a); LZO_UNUSED(b); LZO_UNUSED(c); LZO_UNUSED(d);
kusano 7d535a
    return 1;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#define do_compress         _lzo1x_1_do_compress
kusano 7d535a
kusano 7d535a
#if !defined(MINILZO_CFG_SKIP_LZO1X_1_COMPRESS)
kusano 7d535a
kusano 7d535a
#define LZO_NEED_DICT_H
kusano 7d535a
#define D_BITS          14
kusano 7d535a
#define D_INDEX1(d,p)       d = DM(DMUL(0x21,DX3(p,5,5,6)) >> 5)
kusano 7d535a
#define D_INDEX2(d,p)       d = (d & (D_MASK & 0x7ff)) ^ (D_HIGH | 0x1f)
kusano 7d535a
kusano 7d535a
#ifndef __LZO_CONFIG1X_H
kusano 7d535a
#define __LZO_CONFIG1X_H
kusano 7d535a
kusano 7d535a
#if !defined(LZO1X) && !defined(LZO1Y) && !defined(LZO1Z)
kusano 7d535a
#  define LZO1X
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(__LZO_IN_MINILZO)
kusano 7d535a
#include "lzo/lzo1x.h"
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#define LZO_EOF_CODE
kusano 7d535a
#undef LZO_DETERMINISTIC
kusano 7d535a
kusano 7d535a
#define M1_MAX_OFFSET   0x0400
kusano 7d535a
#ifndef M2_MAX_OFFSET
kusano 7d535a
#define M2_MAX_OFFSET   0x0800
kusano 7d535a
#endif
kusano 7d535a
#define M3_MAX_OFFSET   0x4000
kusano 7d535a
#define M4_MAX_OFFSET   0xbfff
kusano 7d535a
kusano 7d535a
#define MX_MAX_OFFSET   (M1_MAX_OFFSET + M2_MAX_OFFSET)
kusano 7d535a
kusano 7d535a
#define M1_MIN_LEN      2
kusano 7d535a
#define M1_MAX_LEN      2
kusano 7d535a
#define M2_MIN_LEN      3
kusano 7d535a
#ifndef M2_MAX_LEN
kusano 7d535a
#define M2_MAX_LEN      8
kusano 7d535a
#endif
kusano 7d535a
#define M3_MIN_LEN      3
kusano 7d535a
#define M3_MAX_LEN      33
kusano 7d535a
#define M4_MIN_LEN      3
kusano 7d535a
#define M4_MAX_LEN      9
kusano 7d535a
kusano 7d535a
#define M1_MARKER       0
kusano 7d535a
#define M2_MARKER       64
kusano 7d535a
#define M3_MARKER       32
kusano 7d535a
#define M4_MARKER       16
kusano 7d535a
kusano 7d535a
#ifndef MIN_LOOKAHEAD
kusano 7d535a
#define MIN_LOOKAHEAD       (M2_MAX_LEN + 1)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_NEED_DICT_H)
kusano 7d535a
kusano 7d535a
#ifndef LZO_HASH
kusano 7d535a
#define LZO_HASH            LZO_HASH_LZO_INCREMENTAL_B
kusano 7d535a
#endif
kusano 7d535a
#define DL_MIN_LEN          M2_MIN_LEN
kusano 7d535a
kusano 7d535a
#ifndef __LZO_DICT_H
kusano 7d535a
#define __LZO_DICT_H
kusano 7d535a
kusano 7d535a
#ifdef __cplusplus
kusano 7d535a
extern "C" {
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(D_BITS) && defined(DBITS)
kusano 7d535a
#  define D_BITS        DBITS
kusano 7d535a
#endif
kusano 7d535a
#if !defined(D_BITS)
kusano 7d535a
#  error "D_BITS is not defined"
kusano 7d535a
#endif
kusano 7d535a
#if (D_BITS < 16)
kusano 7d535a
#  define D_SIZE        LZO_SIZE(D_BITS)
kusano 7d535a
#  define D_MASK        LZO_MASK(D_BITS)
kusano 7d535a
#else
kusano 7d535a
#  define D_SIZE        LZO_USIZE(D_BITS)
kusano 7d535a
#  define D_MASK        LZO_UMASK(D_BITS)
kusano 7d535a
#endif
kusano 7d535a
#define D_HIGH          ((D_MASK >> 1) + 1)
kusano 7d535a
kusano 7d535a
#if !defined(DD_BITS)
kusano 7d535a
#  define DD_BITS       0
kusano 7d535a
#endif
kusano 7d535a
#define DD_SIZE         LZO_SIZE(DD_BITS)
kusano 7d535a
#define DD_MASK         LZO_MASK(DD_BITS)
kusano 7d535a
kusano 7d535a
#if !defined(DL_BITS)
kusano 7d535a
#  define DL_BITS       (D_BITS - DD_BITS)
kusano 7d535a
#endif
kusano 7d535a
#if (DL_BITS < 16)
kusano 7d535a
#  define DL_SIZE       LZO_SIZE(DL_BITS)
kusano 7d535a
#  define DL_MASK       LZO_MASK(DL_BITS)
kusano 7d535a
#else
kusano 7d535a
#  define DL_SIZE       LZO_USIZE(DL_BITS)
kusano 7d535a
#  define DL_MASK       LZO_UMASK(DL_BITS)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if (D_BITS != DL_BITS + DD_BITS)
kusano 7d535a
#  error "D_BITS does not match"
kusano 7d535a
#endif
kusano 7d535a
#if (D_BITS < 8 || D_BITS > 18)
kusano 7d535a
#  error "invalid D_BITS"
kusano 7d535a
#endif
kusano 7d535a
#if (DL_BITS < 8 || DL_BITS > 20)
kusano 7d535a
#  error "invalid DL_BITS"
kusano 7d535a
#endif
kusano 7d535a
#if (DD_BITS < 0 || DD_BITS > 6)
kusano 7d535a
#  error "invalid DD_BITS"
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(DL_MIN_LEN)
kusano 7d535a
#  define DL_MIN_LEN    3
kusano 7d535a
#endif
kusano 7d535a
#if !defined(DL_SHIFT)
kusano 7d535a
#  define DL_SHIFT      ((DL_BITS + (DL_MIN_LEN - 1)) / DL_MIN_LEN)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#define LZO_HASH_GZIP                   1
kusano 7d535a
#define LZO_HASH_GZIP_INCREMENTAL       2
kusano 7d535a
#define LZO_HASH_LZO_INCREMENTAL_A      3
kusano 7d535a
#define LZO_HASH_LZO_INCREMENTAL_B      4
kusano 7d535a
kusano 7d535a
#if !defined(LZO_HASH)
kusano 7d535a
#  error "choose a hashing strategy"
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#undef DM
kusano 7d535a
#undef DX
kusano 7d535a
kusano 7d535a
#if (DL_MIN_LEN == 3)
kusano 7d535a
#  define _DV2_A(p,shift1,shift2) \
kusano 7d535a
        (((( (lzo_xint)((p)[0]) << shift1) ^ (p)[1]) << shift2) ^ (p)[2])
kusano 7d535a
#  define _DV2_B(p,shift1,shift2) \
kusano 7d535a
        (((( (lzo_xint)((p)[2]) << shift1) ^ (p)[1]) << shift2) ^ (p)[0])
kusano 7d535a
#  define _DV3_B(p,shift1,shift2,shift3) \
kusano 7d535a
        ((_DV2_B((p)+1,shift1,shift2) << (shift3)) ^ (p)[0])
kusano 7d535a
#elif (DL_MIN_LEN == 2)
kusano 7d535a
#  define _DV2_A(p,shift1,shift2) \
kusano 7d535a
        (( (lzo_xint)(p[0]) << shift1) ^ p[1])
kusano 7d535a
#  define _DV2_B(p,shift1,shift2) \
kusano 7d535a
        (( (lzo_xint)(p[1]) << shift1) ^ p[2])
kusano 7d535a
#else
kusano 7d535a
#  error "invalid DL_MIN_LEN"
kusano 7d535a
#endif
kusano 7d535a
#define _DV_A(p,shift)      _DV2_A(p,shift,shift)
kusano 7d535a
#define _DV_B(p,shift)      _DV2_B(p,shift,shift)
kusano 7d535a
#define DA2(p,s1,s2) \
kusano 7d535a
        (((((lzo_xint)((p)[2]) << (s2)) + (p)[1]) << (s1)) + (p)[0])
kusano 7d535a
#define DS2(p,s1,s2) \
kusano 7d535a
        (((((lzo_xint)((p)[2]) << (s2)) - (p)[1]) << (s1)) - (p)[0])
kusano 7d535a
#define DX2(p,s1,s2) \
kusano 7d535a
        (((((lzo_xint)((p)[2]) << (s2)) ^ (p)[1]) << (s1)) ^ (p)[0])
kusano 7d535a
#define DA3(p,s1,s2,s3) ((DA2((p)+1,s2,s3) << (s1)) + (p)[0])
kusano 7d535a
#define DS3(p,s1,s2,s3) ((DS2((p)+1,s2,s3) << (s1)) - (p)[0])
kusano 7d535a
#define DX3(p,s1,s2,s3) ((DX2((p)+1,s2,s3) << (s1)) ^ (p)[0])
kusano 7d535a
#define DMS(v,s)        ((lzo_uint) (((v) & (D_MASK >> (s))) << (s)))
kusano 7d535a
#define DM(v)           DMS(v,0)
kusano 7d535a
kusano 7d535a
#if (LZO_HASH == LZO_HASH_GZIP)
kusano 7d535a
#  define _DINDEX(dv,p)     (_DV_A((p),DL_SHIFT))
kusano 7d535a
kusano 7d535a
#elif (LZO_HASH == LZO_HASH_GZIP_INCREMENTAL)
kusano 7d535a
#  define __LZO_HASH_INCREMENTAL
kusano 7d535a
#  define DVAL_FIRST(dv,p)  dv = _DV_A((p),DL_SHIFT)
kusano 7d535a
#  define DVAL_NEXT(dv,p)   dv = (((dv) << DL_SHIFT) ^ p[2])
kusano 7d535a
#  define _DINDEX(dv,p)     (dv)
kusano 7d535a
#  define DVAL_LOOKAHEAD    DL_MIN_LEN
kusano 7d535a
kusano 7d535a
#elif (LZO_HASH == LZO_HASH_LZO_INCREMENTAL_A)
kusano 7d535a
#  define __LZO_HASH_INCREMENTAL
kusano 7d535a
#  define DVAL_FIRST(dv,p)  dv = _DV_A((p),5)
kusano 7d535a
#  define DVAL_NEXT(dv,p) \
kusano 7d535a
                dv ^= (lzo_xint)(p[-1]) << (2*5); dv = (((dv) << 5) ^ p[2])
kusano 7d535a
#  define _DINDEX(dv,p)     ((DMUL(0x9f5f,dv)) >> 5)
kusano 7d535a
#  define DVAL_LOOKAHEAD    DL_MIN_LEN
kusano 7d535a
kusano 7d535a
#elif (LZO_HASH == LZO_HASH_LZO_INCREMENTAL_B)
kusano 7d535a
#  define __LZO_HASH_INCREMENTAL
kusano 7d535a
#  define DVAL_FIRST(dv,p)  dv = _DV_B((p),5)
kusano 7d535a
#  define DVAL_NEXT(dv,p) \
kusano 7d535a
                dv ^= p[-1]; dv = (((dv) >> 5) ^ ((lzo_xint)(p[2]) << (2*5)))
kusano 7d535a
#  define _DINDEX(dv,p)     ((DMUL(0x9f5f,dv)) >> 5)
kusano 7d535a
#  define DVAL_LOOKAHEAD    DL_MIN_LEN
kusano 7d535a
kusano 7d535a
#else
kusano 7d535a
#  error "choose a hashing strategy"
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#ifndef DINDEX
kusano 7d535a
#define DINDEX(dv,p)        ((lzo_uint)((_DINDEX(dv,p)) & DL_MASK) << DD_BITS)
kusano 7d535a
#endif
kusano 7d535a
#if !defined(DINDEX1) && defined(D_INDEX1)
kusano 7d535a
#define DINDEX1             D_INDEX1
kusano 7d535a
#endif
kusano 7d535a
#if !defined(DINDEX2) && defined(D_INDEX2)
kusano 7d535a
#define DINDEX2             D_INDEX2
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(__LZO_HASH_INCREMENTAL)
kusano 7d535a
#  define DVAL_FIRST(dv,p)  ((void) 0)
kusano 7d535a
#  define DVAL_NEXT(dv,p)   ((void) 0)
kusano 7d535a
#  define DVAL_LOOKAHEAD    0
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(DVAL_ASSERT)
kusano 7d535a
#if defined(__LZO_HASH_INCREMENTAL) && !defined(NDEBUG)
kusano 7d535a
static void DVAL_ASSERT(lzo_xint dv, const lzo_bytep p)
kusano 7d535a
{
kusano 7d535a
    lzo_xint df;
kusano 7d535a
    DVAL_FIRST(df,(p));
kusano 7d535a
    assert(DINDEX(dv,p) == DINDEX(df,p));
kusano 7d535a
}
kusano 7d535a
#else
kusano 7d535a
#  define DVAL_ASSERT(dv,p) ((void) 0)
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_DICT_USE_PTR)
kusano 7d535a
#  define DENTRY(p,in)                          (p)
kusano 7d535a
#  define GINDEX(m_pos,m_off,dict,dindex,in)    m_pos = dict[dindex]
kusano 7d535a
#else
kusano 7d535a
#  define DENTRY(p,in)                          ((lzo_uint) ((p)-(in)))
kusano 7d535a
#  define GINDEX(m_pos,m_off,dict,dindex,in)    m_off = dict[dindex]
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if (DD_BITS == 0)
kusano 7d535a
kusano 7d535a
#  define UPDATE_D(dict,drun,dv,p,in)       dict[ DINDEX(dv,p) ] = DENTRY(p,in)
kusano 7d535a
#  define UPDATE_I(dict,drun,index,p,in)    dict[index] = DENTRY(p,in)
kusano 7d535a
#  define UPDATE_P(ptr,drun,p,in)           (ptr)[0] = DENTRY(p,in)
kusano 7d535a
kusano 7d535a
#else
kusano 7d535a
kusano 7d535a
#  define UPDATE_D(dict,drun,dv,p,in)   \
kusano 7d535a
        dict[ DINDEX(dv,p) + drun++ ] = DENTRY(p,in); drun &= DD_MASK
kusano 7d535a
#  define UPDATE_I(dict,drun,index,p,in)    \
kusano 7d535a
        dict[ (index) + drun++ ] = DENTRY(p,in); drun &= DD_MASK
kusano 7d535a
#  define UPDATE_P(ptr,drun,p,in)   \
kusano 7d535a
        (ptr) [ drun++ ] = DENTRY(p,in); drun &= DD_MASK
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_DICT_USE_PTR)
kusano 7d535a
kusano 7d535a
#define LZO_CHECK_MPOS_DET(m_pos,m_off,in,ip,max_offset) \
kusano 7d535a
        (m_pos == NULL || (m_off = pd(ip, m_pos)) > max_offset)
kusano 7d535a
kusano 7d535a
#define LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,max_offset) \
kusano 7d535a
    (BOUNDS_CHECKING_OFF_IN_EXPR(( \
kusano 7d535a
        m_pos = ip - (lzo_uint) PTR_DIFF(ip,m_pos), \
kusano 7d535a
        PTR_LT(m_pos,in) || \
kusano 7d535a
        (m_off = (lzo_uint) PTR_DIFF(ip,m_pos)) <= 0 || \
kusano 7d535a
         m_off > max_offset )))
kusano 7d535a
kusano 7d535a
#else
kusano 7d535a
kusano 7d535a
#define LZO_CHECK_MPOS_DET(m_pos,m_off,in,ip,max_offset) \
kusano 7d535a
        (m_off == 0 || \
kusano 7d535a
         ((m_off = pd(ip, in) - m_off) > max_offset) || \
kusano 7d535a
         (m_pos = (ip) - (m_off), 0) )
kusano 7d535a
kusano 7d535a
#define LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,max_offset) \
kusano 7d535a
        (pd(ip, in) <= m_off || \
kusano 7d535a
         ((m_off = pd(ip, in) - m_off) > max_offset) || \
kusano 7d535a
         (m_pos = (ip) - (m_off), 0) )
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_DETERMINISTIC)
kusano 7d535a
#  define LZO_CHECK_MPOS    LZO_CHECK_MPOS_DET
kusano 7d535a
#else
kusano 7d535a
#  define LZO_CHECK_MPOS    LZO_CHECK_MPOS_NON_DET
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#ifdef __cplusplus
kusano 7d535a
}
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#define DO_COMPRESS     lzo1x_1_compress
kusano 7d535a
kusano 7d535a
static __lzo_noinline lzo_uint
kusano 7d535a
do_compress ( const lzo_bytep in , lzo_uint  in_len,
kusano 7d535a
                    lzo_bytep out, lzo_uintp out_len,
kusano 7d535a
                    lzo_voidp wrkmem )
kusano 7d535a
{
kusano 7d535a
    register const lzo_bytep ip;
kusano 7d535a
    lzo_bytep op;
kusano 7d535a
    const lzo_bytep const in_end = in + in_len;
kusano 7d535a
    const lzo_bytep const ip_end = in + in_len - M2_MAX_LEN - 5;
kusano 7d535a
    const lzo_bytep ii;
kusano 7d535a
    lzo_dict_p const dict = (lzo_dict_p) wrkmem;
kusano 7d535a
kusano 7d535a
    op = out;
kusano 7d535a
    ip = in;
kusano 7d535a
    ii = ip;
kusano 7d535a
kusano 7d535a
    ip += 4;
kusano 7d535a
    for (;;)
kusano 7d535a
    {
kusano 7d535a
        register const lzo_bytep m_pos;
kusano 7d535a
        lzo_uint m_off;
kusano 7d535a
        lzo_uint m_len;
kusano 7d535a
        lzo_uint dindex;
kusano 7d535a
kusano 7d535a
        DINDEX1(dindex,ip);
kusano 7d535a
        GINDEX(m_pos,m_off,dict,dindex,in);
kusano 7d535a
        if (LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,M4_MAX_OFFSET))
kusano 7d535a
            goto literal;
kusano 7d535a
#if 1
kusano 7d535a
        if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
kusano 7d535a
            goto try_match;
kusano 7d535a
        DINDEX2(dindex,ip);
kusano 7d535a
#endif
kusano 7d535a
        GINDEX(m_pos,m_off,dict,dindex,in);
kusano 7d535a
        if (LZO_CHECK_MPOS_NON_DET(m_pos,m_off,in,ip,M4_MAX_OFFSET))
kusano 7d535a
            goto literal;
kusano 7d535a
        if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
kusano 7d535a
            goto try_match;
kusano 7d535a
        goto literal;
kusano 7d535a
kusano 7d535a
try_match:
kusano 7d535a
#if 1 && defined(LZO_UNALIGNED_OK_2)
kusano 7d535a
        if (* (const lzo_ushortp) m_pos != * (const lzo_ushortp) ip)
kusano 7d535a
#else
kusano 7d535a
        if (m_pos[0] != ip[0] || m_pos[1] != ip[1])
kusano 7d535a
#endif
kusano 7d535a
        {
kusano 7d535a
        }
kusano 7d535a
        else
kusano 7d535a
        {
kusano 7d535a
            if __lzo_likely(m_pos[2] == ip[2])
kusano 7d535a
            {
kusano 7d535a
#if 0
kusano 7d535a
                if (m_off <= M2_MAX_OFFSET)
kusano 7d535a
                    goto match;
kusano 7d535a
                if (lit <= 3)
kusano 7d535a
                    goto match;
kusano 7d535a
                if (lit == 3)
kusano 7d535a
                {
kusano 7d535a
                    assert(op - 2 > out); op[-2] |= LZO_BYTE(3);
kusano 7d535a
                    *op++ = *ii++; *op++ = *ii++; *op++ = *ii++;
kusano 7d535a
                    goto code_match;
kusano 7d535a
                }
kusano 7d535a
                if (m_pos[3] == ip[3])
kusano 7d535a
#endif
kusano 7d535a
                    goto match;
kusano 7d535a
            }
kusano 7d535a
            else
kusano 7d535a
            {
kusano 7d535a
#if 0
kusano 7d535a
#if 0
kusano 7d535a
                if (m_off <= M1_MAX_OFFSET && lit > 0 && lit <= 3)
kusano 7d535a
#else
kusano 7d535a
                if (m_off <= M1_MAX_OFFSET && lit == 3)
kusano 7d535a
#endif
kusano 7d535a
                {
kusano 7d535a
                    register lzo_uint t;
kusano 7d535a
kusano 7d535a
                    t = lit;
kusano 7d535a
                    assert(op - 2 > out); op[-2] |= LZO_BYTE(t);
kusano 7d535a
                    do *op++ = *ii++; while (--t > 0);
kusano 7d535a
                    assert(ii == ip);
kusano 7d535a
                    m_off -= 1;
kusano 7d535a
                    *op++ = LZO_BYTE(M1_MARKER | ((m_off & 3) << 2));
kusano 7d535a
                    *op++ = LZO_BYTE(m_off >> 2);
kusano 7d535a
                    ip += 2;
kusano 7d535a
                    goto match_done;
kusano 7d535a
                }
kusano 7d535a
#endif
kusano 7d535a
            }
kusano 7d535a
        }
kusano 7d535a
kusano 7d535a
literal:
kusano 7d535a
        UPDATE_I(dict,0,dindex,ip,in);
kusano 7d535a
        ++ip;
kusano 7d535a
        if __lzo_unlikely(ip >= ip_end)
kusano 7d535a
            break;
kusano 7d535a
        continue;
kusano 7d535a
kusano 7d535a
match:
kusano 7d535a
        UPDATE_I(dict,0,dindex,ip,in);
kusano 7d535a
        if (pd(ip,ii) > 0)
kusano 7d535a
        {
kusano 7d535a
            register lzo_uint t = pd(ip,ii);
kusano 7d535a
kusano 7d535a
            if (t <= 3)
kusano 7d535a
            {
kusano 7d535a
                assert(op - 2 > out);
kusano 7d535a
                op[-2] |= LZO_BYTE(t);
kusano 7d535a
            }
kusano 7d535a
            else if (t <= 18)
kusano 7d535a
                *op++ = LZO_BYTE(t - 3);
kusano 7d535a
            else
kusano 7d535a
            {
kusano 7d535a
                register lzo_uint tt = t - 18;
kusano 7d535a
kusano 7d535a
                *op++ = 0;
kusano 7d535a
                while (tt > 255)
kusano 7d535a
                {
kusano 7d535a
                    tt -= 255;
kusano 7d535a
                    *op++ = 0;
kusano 7d535a
                }
kusano 7d535a
                assert(tt > 0);
kusano 7d535a
                *op++ = LZO_BYTE(tt);
kusano 7d535a
            }
kusano 7d535a
            do *op++ = *ii++; while (--t > 0);
kusano 7d535a
        }
kusano 7d535a
kusano 7d535a
        assert(ii == ip);
kusano 7d535a
        ip += 3;
kusano 7d535a
        if (m_pos[3] != *ip++ || m_pos[4] != *ip++ || m_pos[5] != *ip++ ||
kusano 7d535a
            m_pos[6] != *ip++ || m_pos[7] != *ip++ || m_pos[8] != *ip++
kusano 7d535a
#ifdef LZO1Y
kusano 7d535a
            || m_pos[ 9] != *ip++ || m_pos[10] != *ip++ || m_pos[11] != *ip++
kusano 7d535a
            || m_pos[12] != *ip++ || m_pos[13] != *ip++ || m_pos[14] != *ip++
kusano 7d535a
#endif
kusano 7d535a
           )
kusano 7d535a
        {
kusano 7d535a
            --ip;
kusano 7d535a
            m_len = pd(ip, ii);
kusano 7d535a
            assert(m_len >= 3); assert(m_len <= M2_MAX_LEN);
kusano 7d535a
kusano 7d535a
            if (m_off <= M2_MAX_OFFSET)
kusano 7d535a
            {
kusano 7d535a
                m_off -= 1;
kusano 7d535a
#if defined(LZO1X)
kusano 7d535a
                *op++ = LZO_BYTE(((m_len - 1) << 5) | ((m_off & 7) << 2));
kusano 7d535a
                *op++ = LZO_BYTE(m_off >> 3);
kusano 7d535a
#elif defined(LZO1Y)
kusano 7d535a
                *op++ = LZO_BYTE(((m_len + 1) << 4) | ((m_off & 3) << 2));
kusano 7d535a
                *op++ = LZO_BYTE(m_off >> 2);
kusano 7d535a
#endif
kusano 7d535a
            }
kusano 7d535a
            else if (m_off <= M3_MAX_OFFSET)
kusano 7d535a
            {
kusano 7d535a
                m_off -= 1;
kusano 7d535a
                *op++ = LZO_BYTE(M3_MARKER | (m_len - 2));
kusano 7d535a
                goto m3_m4_offset;
kusano 7d535a
            }
kusano 7d535a
            else
kusano 7d535a
#if defined(LZO1X)
kusano 7d535a
            {
kusano 7d535a
                m_off -= 0x4000;
kusano 7d535a
                assert(m_off > 0); assert(m_off <= 0x7fff);
kusano 7d535a
                *op++ = LZO_BYTE(M4_MARKER |
kusano 7d535a
                                 ((m_off & 0x4000) >> 11) | (m_len - 2));
kusano 7d535a
                goto m3_m4_offset;
kusano 7d535a
            }
kusano 7d535a
#elif defined(LZO1Y)
kusano 7d535a
                goto m4_match;
kusano 7d535a
#endif
kusano 7d535a
        }
kusano 7d535a
        else
kusano 7d535a
        {
kusano 7d535a
            {
kusano 7d535a
                const lzo_bytep end = in_end;
kusano 7d535a
                const lzo_bytep m = m_pos + M2_MAX_LEN + 1;
kusano 7d535a
                while (ip < end && *m == *ip)
kusano 7d535a
                    m++, ip++;
kusano 7d535a
                m_len = pd(ip, ii);
kusano 7d535a
            }
kusano 7d535a
            assert(m_len > M2_MAX_LEN);
kusano 7d535a
kusano 7d535a
            if (m_off <= M3_MAX_OFFSET)
kusano 7d535a
            {
kusano 7d535a
                m_off -= 1;
kusano 7d535a
                if (m_len <= 33)
kusano 7d535a
                    *op++ = LZO_BYTE(M3_MARKER | (m_len - 2));
kusano 7d535a
                else
kusano 7d535a
                {
kusano 7d535a
                    m_len -= 33;
kusano 7d535a
                    *op++ = M3_MARKER | 0;
kusano 7d535a
                    goto m3_m4_len;
kusano 7d535a
                }
kusano 7d535a
            }
kusano 7d535a
            else
kusano 7d535a
            {
kusano 7d535a
#if defined(LZO1Y)
kusano 7d535a
m4_match:
kusano 7d535a
#endif
kusano 7d535a
                m_off -= 0x4000;
kusano 7d535a
                assert(m_off > 0); assert(m_off <= 0x7fff);
kusano 7d535a
                if (m_len <= M4_MAX_LEN)
kusano 7d535a
                    *op++ = LZO_BYTE(M4_MARKER |
kusano 7d535a
                                     ((m_off & 0x4000) >> 11) | (m_len - 2));
kusano 7d535a
                else
kusano 7d535a
                {
kusano 7d535a
                    m_len -= M4_MAX_LEN;
kusano 7d535a
                    *op++ = LZO_BYTE(M4_MARKER | ((m_off & 0x4000) >> 11));
kusano 7d535a
m3_m4_len:
kusano 7d535a
                    while (m_len > 255)
kusano 7d535a
                    {
kusano 7d535a
                        m_len -= 255;
kusano 7d535a
                        *op++ = 0;
kusano 7d535a
                    }
kusano 7d535a
                    assert(m_len > 0);
kusano 7d535a
                    *op++ = LZO_BYTE(m_len);
kusano 7d535a
                }
kusano 7d535a
            }
kusano 7d535a
kusano 7d535a
m3_m4_offset:
kusano 7d535a
            *op++ = LZO_BYTE((m_off & 63) << 2);
kusano 7d535a
            *op++ = LZO_BYTE(m_off >> 6);
kusano 7d535a
        }
kusano 7d535a
kusano 7d535a
#if 0
kusano 7d535a
match_done:
kusano 7d535a
#endif
kusano 7d535a
        ii = ip;
kusano 7d535a
        if __lzo_unlikely(ip >= ip_end)
kusano 7d535a
            break;
kusano 7d535a
    }
kusano 7d535a
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return pd(in_end,ii);
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
LZO_PUBLIC(int)
kusano 7d535a
DO_COMPRESS      ( const lzo_bytep in , lzo_uint  in_len,
kusano 7d535a
                         lzo_bytep out, lzo_uintp out_len,
kusano 7d535a
                         lzo_voidp wrkmem )
kusano 7d535a
{
kusano 7d535a
    lzo_bytep op = out;
kusano 7d535a
    lzo_uint t;
kusano 7d535a
kusano 7d535a
    if __lzo_unlikely(in_len <= M2_MAX_LEN + 5)
kusano 7d535a
        t = in_len;
kusano 7d535a
    else
kusano 7d535a
    {
kusano 7d535a
        t = do_compress(in,in_len,op,out_len,wrkmem);
kusano 7d535a
        op += *out_len;
kusano 7d535a
    }
kusano 7d535a
kusano 7d535a
    if (t > 0)
kusano 7d535a
    {
kusano 7d535a
        const lzo_bytep ii = in + in_len - t;
kusano 7d535a
kusano 7d535a
        if (op == out && t <= 238)
kusano 7d535a
            *op++ = LZO_BYTE(17 + t);
kusano 7d535a
        else if (t <= 3)
kusano 7d535a
            op[-2] |= LZO_BYTE(t);
kusano 7d535a
        else if (t <= 18)
kusano 7d535a
            *op++ = LZO_BYTE(t - 3);
kusano 7d535a
        else
kusano 7d535a
        {
kusano 7d535a
            lzo_uint tt = t - 18;
kusano 7d535a
kusano 7d535a
            *op++ = 0;
kusano 7d535a
            while (tt > 255)
kusano 7d535a
            {
kusano 7d535a
                tt -= 255;
kusano 7d535a
                *op++ = 0;
kusano 7d535a
            }
kusano 7d535a
            assert(tt > 0);
kusano 7d535a
            *op++ = LZO_BYTE(tt);
kusano 7d535a
        }
kusano 7d535a
        do *op++ = *ii++; while (--t > 0);
kusano 7d535a
    }
kusano 7d535a
kusano 7d535a
    *op++ = M4_MARKER | 1;
kusano 7d535a
    *op++ = 0;
kusano 7d535a
    *op++ = 0;
kusano 7d535a
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return LZO_E_OK;
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#undef do_compress
kusano 7d535a
#undef DO_COMPRESS
kusano 7d535a
#undef LZO_HASH
kusano 7d535a
kusano 7d535a
#undef LZO_TEST_OVERRUN
kusano 7d535a
#undef DO_DECOMPRESS
kusano 7d535a
#define DO_DECOMPRESS       lzo1x_decompress
kusano 7d535a
kusano 7d535a
#if !defined(MINILZO_CFG_SKIP_LZO1X_DECOMPRESS)
kusano 7d535a
kusano 7d535a
#if defined(LZO_TEST_OVERRUN)
kusano 7d535a
#  if !defined(LZO_TEST_OVERRUN_INPUT)
kusano 7d535a
#    define LZO_TEST_OVERRUN_INPUT       2
kusano 7d535a
#  endif
kusano 7d535a
#  if !defined(LZO_TEST_OVERRUN_OUTPUT)
kusano 7d535a
#    define LZO_TEST_OVERRUN_OUTPUT      2
kusano 7d535a
#  endif
kusano 7d535a
#  if !defined(LZO_TEST_OVERRUN_LOOKBEHIND)
kusano 7d535a
#    define LZO_TEST_OVERRUN_LOOKBEHIND
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#undef TEST_IP
kusano 7d535a
#undef TEST_OP
kusano 7d535a
#undef TEST_LB
kusano 7d535a
#undef TEST_LBO
kusano 7d535a
#undef NEED_IP
kusano 7d535a
#undef NEED_OP
kusano 7d535a
#undef HAVE_TEST_IP
kusano 7d535a
#undef HAVE_TEST_OP
kusano 7d535a
#undef HAVE_NEED_IP
kusano 7d535a
#undef HAVE_NEED_OP
kusano 7d535a
#undef HAVE_ANY_IP
kusano 7d535a
#undef HAVE_ANY_OP
kusano 7d535a
kusano 7d535a
#if defined(LZO_TEST_OVERRUN_INPUT)
kusano 7d535a
#  if (LZO_TEST_OVERRUN_INPUT >= 1)
kusano 7d535a
#    define TEST_IP             (ip < ip_end)
kusano 7d535a
#  endif
kusano 7d535a
#  if (LZO_TEST_OVERRUN_INPUT >= 2)
kusano 7d535a
#    define NEED_IP(x) \
kusano 7d535a
            if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x))  goto input_overrun
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_TEST_OVERRUN_OUTPUT)
kusano 7d535a
#  if (LZO_TEST_OVERRUN_OUTPUT >= 1)
kusano 7d535a
#    define TEST_OP             (op <= op_end)
kusano 7d535a
#  endif
kusano 7d535a
#  if (LZO_TEST_OVERRUN_OUTPUT >= 2)
kusano 7d535a
#    undef TEST_OP
kusano 7d535a
#    define NEED_OP(x) \
kusano 7d535a
            if ((lzo_uint)(op_end - op) < (lzo_uint)(x))  goto output_overrun
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_TEST_OVERRUN_LOOKBEHIND)
kusano 7d535a
#  define TEST_LB(m_pos)        if (m_pos < out || m_pos >= op) goto lookbehind_overrun
kusano 7d535a
#  define TEST_LBO(m_pos,o)     if (m_pos < out || m_pos >= op - (o)) goto lookbehind_overrun
kusano 7d535a
#else
kusano 7d535a
#  define TEST_LB(m_pos)        ((void) 0)
kusano 7d535a
#  define TEST_LBO(m_pos,o)     ((void) 0)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(LZO_EOF_CODE) && !defined(TEST_IP)
kusano 7d535a
#  define TEST_IP               (ip < ip_end)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(TEST_IP)
kusano 7d535a
#  define HAVE_TEST_IP
kusano 7d535a
#else
kusano 7d535a
#  define TEST_IP               1
kusano 7d535a
#endif
kusano 7d535a
#if defined(TEST_OP)
kusano 7d535a
#  define HAVE_TEST_OP
kusano 7d535a
#else
kusano 7d535a
#  define TEST_OP               1
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(NEED_IP)
kusano 7d535a
#  define HAVE_NEED_IP
kusano 7d535a
#else
kusano 7d535a
#  define NEED_IP(x)            ((void) 0)
kusano 7d535a
#endif
kusano 7d535a
#if defined(NEED_OP)
kusano 7d535a
#  define HAVE_NEED_OP
kusano 7d535a
#else
kusano 7d535a
#  define NEED_OP(x)            ((void) 0)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP)
kusano 7d535a
#  define HAVE_ANY_IP
kusano 7d535a
#endif
kusano 7d535a
#if defined(HAVE_TEST_OP) || defined(HAVE_NEED_OP)
kusano 7d535a
#  define HAVE_ANY_OP
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#undef __COPY4
kusano 7d535a
#define __COPY4(dst,src)    * (lzo_uint32p)(dst) = * (const lzo_uint32p)(src)
kusano 7d535a
kusano 7d535a
#undef COPY4
kusano 7d535a
#if defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
#  define COPY4(dst,src)    __COPY4(dst,src)
kusano 7d535a
#elif defined(LZO_ALIGNED_OK_4)
kusano 7d535a
#  define COPY4(dst,src)    __COPY4((lzo_uintptr_t)(dst),(lzo_uintptr_t)(src))
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(DO_DECOMPRESS)
kusano 7d535a
LZO_PUBLIC(int)
kusano 7d535a
DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
kusano 7d535a
                       lzo_bytep out, lzo_uintp out_len,
kusano 7d535a
                       lzo_voidp wrkmem )
kusano 7d535a
#endif
kusano 7d535a
{
kusano 7d535a
    register lzo_bytep op;
kusano 7d535a
    register const lzo_bytep ip;
kusano 7d535a
    register lzo_uint t;
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
    lzo_uint m_off;
kusano 7d535a
    const lzo_bytep dict_end;
kusano 7d535a
#else
kusano 7d535a
    register const lzo_bytep m_pos;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
    const lzo_bytep const ip_end = in + in_len;
kusano 7d535a
#if defined(HAVE_ANY_OP)
kusano 7d535a
    lzo_bytep const op_end = out + *out_len;
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
    lzo_uint last_m_off = 0;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
    LZO_UNUSED(wrkmem);
kusano 7d535a
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
    if (dict)
kusano 7d535a
    {
kusano 7d535a
        if (dict_len > M4_MAX_OFFSET)
kusano 7d535a
        {
kusano 7d535a
            dict += dict_len - M4_MAX_OFFSET;
kusano 7d535a
            dict_len = M4_MAX_OFFSET;
kusano 7d535a
        }
kusano 7d535a
        dict_end = dict + dict_len;
kusano 7d535a
    }
kusano 7d535a
    else
kusano 7d535a
    {
kusano 7d535a
        dict_len = 0;
kusano 7d535a
        dict_end = NULL;
kusano 7d535a
    }
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
    *out_len = 0;
kusano 7d535a
kusano 7d535a
    op = out;
kusano 7d535a
    ip = in;
kusano 7d535a
kusano 7d535a
    if (*ip > 17)
kusano 7d535a
    {
kusano 7d535a
        t = *ip++ - 17;
kusano 7d535a
        if (t < 4)
kusano 7d535a
            goto match_next;
kusano 7d535a
        assert(t > 0); NEED_OP(t); NEED_IP(t+1);
kusano 7d535a
        do *op++ = *ip++; while (--t > 0);
kusano 7d535a
        goto first_literal_run;
kusano 7d535a
    }
kusano 7d535a
kusano 7d535a
    while (TEST_IP && TEST_OP)
kusano 7d535a
    {
kusano 7d535a
        t = *ip++;
kusano 7d535a
        if (t >= 16)
kusano 7d535a
            goto match;
kusano 7d535a
        if (t == 0)
kusano 7d535a
        {
kusano 7d535a
            NEED_IP(1);
kusano 7d535a
            while (*ip == 0)
kusano 7d535a
            {
kusano 7d535a
                t += 255;
kusano 7d535a
                ip++;
kusano 7d535a
                NEED_IP(1);
kusano 7d535a
            }
kusano 7d535a
            t += 15 + *ip++;
kusano 7d535a
        }
kusano 7d535a
        assert(t > 0); NEED_OP(t+3); NEED_IP(t+4);
kusano 7d535a
#if defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4)
kusano 7d535a
#if !defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
        if (PTR_ALIGNED2_4(op,ip))
kusano 7d535a
        {
kusano 7d535a
#endif
kusano 7d535a
        COPY4(op,ip);
kusano 7d535a
        op += 4; ip += 4;
kusano 7d535a
        if (--t > 0)
kusano 7d535a
        {
kusano 7d535a
            if (t >= 4)
kusano 7d535a
            {
kusano 7d535a
                do {
kusano 7d535a
                    COPY4(op,ip);
kusano 7d535a
                    op += 4; ip += 4; t -= 4;
kusano 7d535a
                } while (t >= 4);
kusano 7d535a
                if (t > 0) do *op++ = *ip++; while (--t > 0);
kusano 7d535a
            }
kusano 7d535a
            else
kusano 7d535a
                do *op++ = *ip++; while (--t > 0);
kusano 7d535a
        }
kusano 7d535a
#if !defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
        }
kusano 7d535a
        else
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
        {
kusano 7d535a
            *op++ = *ip++; *op++ = *ip++; *op++ = *ip++;
kusano 7d535a
            do *op++ = *ip++; while (--t > 0);
kusano 7d535a
        }
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
first_literal_run:
kusano 7d535a
kusano 7d535a
        t = *ip++;
kusano 7d535a
        if (t >= 16)
kusano 7d535a
            goto match;
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
        m_off = (1 + M2_MAX_OFFSET) + (t << 6) + (*ip++ >> 2);
kusano 7d535a
        last_m_off = m_off;
kusano 7d535a
#else
kusano 7d535a
        m_off = (1 + M2_MAX_OFFSET) + (t >> 2) + (*ip++ << 2);
kusano 7d535a
#endif
kusano 7d535a
        NEED_OP(3);
kusano 7d535a
        t = 3; COPY_DICT(t,m_off)
kusano 7d535a
#else
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
        t = (1 + M2_MAX_OFFSET) + (t << 6) + (*ip++ >> 2);
kusano 7d535a
        m_pos = op - t;
kusano 7d535a
        last_m_off = t;
kusano 7d535a
#else
kusano 7d535a
        m_pos = op - (1 + M2_MAX_OFFSET);
kusano 7d535a
        m_pos -= t >> 2;
kusano 7d535a
        m_pos -= *ip++ << 2;
kusano 7d535a
#endif
kusano 7d535a
        TEST_LB(m_pos); NEED_OP(3);
kusano 7d535a
        *op++ = *m_pos++; *op++ = *m_pos++; *op++ = *m_pos;
kusano 7d535a
#endif
kusano 7d535a
        goto match_done;
kusano 7d535a
kusano 7d535a
        do {
kusano 7d535a
match:
kusano 7d535a
            if (t >= 64)
kusano 7d535a
            {
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
#if defined(LZO1X)
kusano 7d535a
                m_off = 1 + ((t >> 2) & 7) + (*ip++ << 3);
kusano 7d535a
                t = (t >> 5) - 1;
kusano 7d535a
#elif defined(LZO1Y)
kusano 7d535a
                m_off = 1 + ((t >> 2) & 3) + (*ip++ << 2);
kusano 7d535a
                t = (t >> 4) - 3;
kusano 7d535a
#elif defined(LZO1Z)
kusano 7d535a
                m_off = t & 0x1f;
kusano 7d535a
                if (m_off >= 0x1c)
kusano 7d535a
                    m_off = last_m_off;
kusano 7d535a
                else
kusano 7d535a
                {
kusano 7d535a
                    m_off = 1 + (m_off << 6) + (*ip++ >> 2);
kusano 7d535a
                    last_m_off = m_off;
kusano 7d535a
                }
kusano 7d535a
                t = (t >> 5) - 1;
kusano 7d535a
#endif
kusano 7d535a
#else
kusano 7d535a
#if defined(LZO1X)
kusano 7d535a
                m_pos = op - 1;
kusano 7d535a
                m_pos -= (t >> 2) & 7;
kusano 7d535a
                m_pos -= *ip++ << 3;
kusano 7d535a
                t = (t >> 5) - 1;
kusano 7d535a
#elif defined(LZO1Y)
kusano 7d535a
                m_pos = op - 1;
kusano 7d535a
                m_pos -= (t >> 2) & 3;
kusano 7d535a
                m_pos -= *ip++ << 2;
kusano 7d535a
                t = (t >> 4) - 3;
kusano 7d535a
#elif defined(LZO1Z)
kusano 7d535a
                {
kusano 7d535a
                    lzo_uint off = t & 0x1f;
kusano 7d535a
                    m_pos = op;
kusano 7d535a
                    if (off >= 0x1c)
kusano 7d535a
                    {
kusano 7d535a
                        assert(last_m_off > 0);
kusano 7d535a
                        m_pos -= last_m_off;
kusano 7d535a
                    }
kusano 7d535a
                    else
kusano 7d535a
                    {
kusano 7d535a
                        off = 1 + (off << 6) + (*ip++ >> 2);
kusano 7d535a
                        m_pos -= off;
kusano 7d535a
                        last_m_off = off;
kusano 7d535a
                    }
kusano 7d535a
                }
kusano 7d535a
                t = (t >> 5) - 1;
kusano 7d535a
#endif
kusano 7d535a
                TEST_LB(m_pos); assert(t > 0); NEED_OP(t+3-1);
kusano 7d535a
                goto copy_match;
kusano 7d535a
#endif
kusano 7d535a
            }
kusano 7d535a
            else if (t >= 32)
kusano 7d535a
            {
kusano 7d535a
                t &= 31;
kusano 7d535a
                if (t == 0)
kusano 7d535a
                {
kusano 7d535a
                    NEED_IP(1);
kusano 7d535a
                    while (*ip == 0)
kusano 7d535a
                    {
kusano 7d535a
                        t += 255;
kusano 7d535a
                        ip++;
kusano 7d535a
                        NEED_IP(1);
kusano 7d535a
                    }
kusano 7d535a
                    t += 31 + *ip++;
kusano 7d535a
                }
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                m_off = 1 + (ip[0] << 6) + (ip[1] >> 2);
kusano 7d535a
                last_m_off = m_off;
kusano 7d535a
#else
kusano 7d535a
                m_off = 1 + (ip[0] >> 2) + (ip[1] << 6);
kusano 7d535a
#endif
kusano 7d535a
#else
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                {
kusano 7d535a
                    lzo_uint off = 1 + (ip[0] << 6) + (ip[1] >> 2);
kusano 7d535a
                    m_pos = op - off;
kusano 7d535a
                    last_m_off = off;
kusano 7d535a
                }
kusano 7d535a
#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN)
kusano 7d535a
                m_pos = op - 1;
kusano 7d535a
                m_pos -= (* (const lzo_ushortp) ip) >> 2;
kusano 7d535a
#else
kusano 7d535a
                m_pos = op - 1;
kusano 7d535a
                m_pos -= (ip[0] >> 2) + (ip[1] << 6);
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
                ip += 2;
kusano 7d535a
            }
kusano 7d535a
            else if (t >= 16)
kusano 7d535a
            {
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
                m_off = (t & 8) << 11;
kusano 7d535a
#else
kusano 7d535a
                m_pos = op;
kusano 7d535a
                m_pos -= (t & 8) << 11;
kusano 7d535a
#endif
kusano 7d535a
                t &= 7;
kusano 7d535a
                if (t == 0)
kusano 7d535a
                {
kusano 7d535a
                    NEED_IP(1);
kusano 7d535a
                    while (*ip == 0)
kusano 7d535a
                    {
kusano 7d535a
                        t += 255;
kusano 7d535a
                        ip++;
kusano 7d535a
                        NEED_IP(1);
kusano 7d535a
                    }
kusano 7d535a
                    t += 7 + *ip++;
kusano 7d535a
                }
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                m_off += (ip[0] << 6) + (ip[1] >> 2);
kusano 7d535a
#else
kusano 7d535a
                m_off += (ip[0] >> 2) + (ip[1] << 6);
kusano 7d535a
#endif
kusano 7d535a
                ip += 2;
kusano 7d535a
                if (m_off == 0)
kusano 7d535a
                    goto eof_found;
kusano 7d535a
                m_off += 0x4000;
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                last_m_off = m_off;
kusano 7d535a
#endif
kusano 7d535a
#else
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                m_pos -= (ip[0] << 6) + (ip[1] >> 2);
kusano 7d535a
#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN)
kusano 7d535a
                m_pos -= (* (const lzo_ushortp) ip) >> 2;
kusano 7d535a
#else
kusano 7d535a
                m_pos -= (ip[0] >> 2) + (ip[1] << 6);
kusano 7d535a
#endif
kusano 7d535a
                ip += 2;
kusano 7d535a
                if (m_pos == op)
kusano 7d535a
                    goto eof_found;
kusano 7d535a
                m_pos -= 0x4000;
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                last_m_off = pd((const lzo_bytep)op, m_pos);
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
            }
kusano 7d535a
            else
kusano 7d535a
            {
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                m_off = 1 + (t << 6) + (*ip++ >> 2);
kusano 7d535a
                last_m_off = m_off;
kusano 7d535a
#else
kusano 7d535a
                m_off = 1 + (t >> 2) + (*ip++ << 2);
kusano 7d535a
#endif
kusano 7d535a
                NEED_OP(2);
kusano 7d535a
                t = 2; COPY_DICT(t,m_off)
kusano 7d535a
#else
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                t = 1 + (t << 6) + (*ip++ >> 2);
kusano 7d535a
                m_pos = op - t;
kusano 7d535a
                last_m_off = t;
kusano 7d535a
#else
kusano 7d535a
                m_pos = op - 1;
kusano 7d535a
                m_pos -= t >> 2;
kusano 7d535a
                m_pos -= *ip++ << 2;
kusano 7d535a
#endif
kusano 7d535a
                TEST_LB(m_pos); NEED_OP(2);
kusano 7d535a
                *op++ = *m_pos++; *op++ = *m_pos;
kusano 7d535a
#endif
kusano 7d535a
                goto match_done;
kusano 7d535a
            }
kusano 7d535a
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
kusano 7d535a
            NEED_OP(t+3-1);
kusano 7d535a
            t += 3-1; COPY_DICT(t,m_off)
kusano 7d535a
kusano 7d535a
#else
kusano 7d535a
kusano 7d535a
            TEST_LB(m_pos); assert(t > 0); NEED_OP(t+3-1);
kusano 7d535a
#if defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4)
kusano 7d535a
#if !defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
            if (t >= 2 * 4 - (3 - 1) && PTR_ALIGNED2_4(op,m_pos))
kusano 7d535a
            {
kusano 7d535a
                assert((op - m_pos) >= 4);
kusano 7d535a
#else
kusano 7d535a
            if (t >= 2 * 4 - (3 - 1) && (op - m_pos) >= 4)
kusano 7d535a
            {
kusano 7d535a
#endif
kusano 7d535a
                COPY4(op,m_pos);
kusano 7d535a
                op += 4; m_pos += 4; t -= 4 - (3 - 1);
kusano 7d535a
                do {
kusano 7d535a
                    COPY4(op,m_pos);
kusano 7d535a
                    op += 4; m_pos += 4; t -= 4;
kusano 7d535a
                } while (t >= 4);
kusano 7d535a
                if (t > 0) do *op++ = *m_pos++; while (--t > 0);
kusano 7d535a
            }
kusano 7d535a
            else
kusano 7d535a
#endif
kusano 7d535a
            {
kusano 7d535a
copy_match:
kusano 7d535a
                *op++ = *m_pos++; *op++ = *m_pos++;
kusano 7d535a
                do *op++ = *m_pos++; while (--t > 0);
kusano 7d535a
            }
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
match_done:
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
            t = ip[-1] & 3;
kusano 7d535a
#else
kusano 7d535a
            t = ip[-2] & 3;
kusano 7d535a
#endif
kusano 7d535a
            if (t == 0)
kusano 7d535a
                break;
kusano 7d535a
kusano 7d535a
match_next:
kusano 7d535a
            assert(t > 0); assert(t < 4); NEED_OP(t); NEED_IP(t+1);
kusano 7d535a
#if 0
kusano 7d535a
            do *op++ = *ip++; while (--t > 0);
kusano 7d535a
#else
kusano 7d535a
            *op++ = *ip++;
kusano 7d535a
            if (t > 1) { *op++ = *ip++; if (t > 2) { *op++ = *ip++; } }
kusano 7d535a
#endif
kusano 7d535a
            t = *ip++;
kusano 7d535a
        } while (TEST_IP && TEST_OP);
kusano 7d535a
    }
kusano 7d535a
kusano 7d535a
#if defined(HAVE_TEST_IP) || defined(HAVE_TEST_OP)
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return LZO_E_EOF_NOT_FOUND;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
eof_found:
kusano 7d535a
    assert(t == 1);
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return (ip == ip_end ? LZO_E_OK :
kusano 7d535a
           (ip < ip_end  ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
kusano 7d535a
kusano 7d535a
#if defined(HAVE_NEED_IP)
kusano 7d535a
input_overrun:
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return LZO_E_INPUT_OVERRUN;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(HAVE_NEED_OP)
kusano 7d535a
output_overrun:
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return LZO_E_OUTPUT_OVERRUN;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_TEST_OVERRUN_LOOKBEHIND)
kusano 7d535a
lookbehind_overrun:
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return LZO_E_LOOKBEHIND_OVERRUN;
kusano 7d535a
#endif
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#define LZO_TEST_OVERRUN
kusano 7d535a
#undef DO_DECOMPRESS
kusano 7d535a
#define DO_DECOMPRESS       lzo1x_decompress_safe
kusano 7d535a
kusano 7d535a
#if !defined(MINILZO_CFG_SKIP_LZO1X_DECOMPRESS_SAFE)
kusano 7d535a
kusano 7d535a
#if defined(LZO_TEST_OVERRUN)
kusano 7d535a
#  if !defined(LZO_TEST_OVERRUN_INPUT)
kusano 7d535a
#    define LZO_TEST_OVERRUN_INPUT       2
kusano 7d535a
#  endif
kusano 7d535a
#  if !defined(LZO_TEST_OVERRUN_OUTPUT)
kusano 7d535a
#    define LZO_TEST_OVERRUN_OUTPUT      2
kusano 7d535a
#  endif
kusano 7d535a
#  if !defined(LZO_TEST_OVERRUN_LOOKBEHIND)
kusano 7d535a
#    define LZO_TEST_OVERRUN_LOOKBEHIND
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#undef TEST_IP
kusano 7d535a
#undef TEST_OP
kusano 7d535a
#undef TEST_LB
kusano 7d535a
#undef TEST_LBO
kusano 7d535a
#undef NEED_IP
kusano 7d535a
#undef NEED_OP
kusano 7d535a
#undef HAVE_TEST_IP
kusano 7d535a
#undef HAVE_TEST_OP
kusano 7d535a
#undef HAVE_NEED_IP
kusano 7d535a
#undef HAVE_NEED_OP
kusano 7d535a
#undef HAVE_ANY_IP
kusano 7d535a
#undef HAVE_ANY_OP
kusano 7d535a
kusano 7d535a
#if defined(LZO_TEST_OVERRUN_INPUT)
kusano 7d535a
#  if (LZO_TEST_OVERRUN_INPUT >= 1)
kusano 7d535a
#    define TEST_IP             (ip < ip_end)
kusano 7d535a
#  endif
kusano 7d535a
#  if (LZO_TEST_OVERRUN_INPUT >= 2)
kusano 7d535a
#    define NEED_IP(x) \
kusano 7d535a
            if ((lzo_uint)(ip_end - ip) < (lzo_uint)(x))  goto input_overrun
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_TEST_OVERRUN_OUTPUT)
kusano 7d535a
#  if (LZO_TEST_OVERRUN_OUTPUT >= 1)
kusano 7d535a
#    define TEST_OP             (op <= op_end)
kusano 7d535a
#  endif
kusano 7d535a
#  if (LZO_TEST_OVERRUN_OUTPUT >= 2)
kusano 7d535a
#    undef TEST_OP
kusano 7d535a
#    define NEED_OP(x) \
kusano 7d535a
            if ((lzo_uint)(op_end - op) < (lzo_uint)(x))  goto output_overrun
kusano 7d535a
#  endif
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_TEST_OVERRUN_LOOKBEHIND)
kusano 7d535a
#  define TEST_LB(m_pos)        if (m_pos < out || m_pos >= op) goto lookbehind_overrun
kusano 7d535a
#  define TEST_LBO(m_pos,o)     if (m_pos < out || m_pos >= op - (o)) goto lookbehind_overrun
kusano 7d535a
#else
kusano 7d535a
#  define TEST_LB(m_pos)        ((void) 0)
kusano 7d535a
#  define TEST_LBO(m_pos,o)     ((void) 0)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if !defined(LZO_EOF_CODE) && !defined(TEST_IP)
kusano 7d535a
#  define TEST_IP               (ip < ip_end)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(TEST_IP)
kusano 7d535a
#  define HAVE_TEST_IP
kusano 7d535a
#else
kusano 7d535a
#  define TEST_IP               1
kusano 7d535a
#endif
kusano 7d535a
#if defined(TEST_OP)
kusano 7d535a
#  define HAVE_TEST_OP
kusano 7d535a
#else
kusano 7d535a
#  define TEST_OP               1
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(NEED_IP)
kusano 7d535a
#  define HAVE_NEED_IP
kusano 7d535a
#else
kusano 7d535a
#  define NEED_IP(x)            ((void) 0)
kusano 7d535a
#endif
kusano 7d535a
#if defined(NEED_OP)
kusano 7d535a
#  define HAVE_NEED_OP
kusano 7d535a
#else
kusano 7d535a
#  define NEED_OP(x)            ((void) 0)
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(HAVE_TEST_IP) || defined(HAVE_NEED_IP)
kusano 7d535a
#  define HAVE_ANY_IP
kusano 7d535a
#endif
kusano 7d535a
#if defined(HAVE_TEST_OP) || defined(HAVE_NEED_OP)
kusano 7d535a
#  define HAVE_ANY_OP
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#undef __COPY4
kusano 7d535a
#define __COPY4(dst,src)    * (lzo_uint32p)(dst) = * (const lzo_uint32p)(src)
kusano 7d535a
kusano 7d535a
#undef COPY4
kusano 7d535a
#if defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
#  define COPY4(dst,src)    __COPY4(dst,src)
kusano 7d535a
#elif defined(LZO_ALIGNED_OK_4)
kusano 7d535a
#  define COPY4(dst,src)    __COPY4((lzo_uintptr_t)(dst),(lzo_uintptr_t)(src))
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(DO_DECOMPRESS)
kusano 7d535a
LZO_PUBLIC(int)
kusano 7d535a
DO_DECOMPRESS  ( const lzo_bytep in , lzo_uint  in_len,
kusano 7d535a
                       lzo_bytep out, lzo_uintp out_len,
kusano 7d535a
                       lzo_voidp wrkmem )
kusano 7d535a
#endif
kusano 7d535a
{
kusano 7d535a
    register lzo_bytep op;
kusano 7d535a
    register const lzo_bytep ip;
kusano 7d535a
    register lzo_uint t;
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
    lzo_uint m_off;
kusano 7d535a
    const lzo_bytep dict_end;
kusano 7d535a
#else
kusano 7d535a
    register const lzo_bytep m_pos;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
    const lzo_bytep const ip_end = in + in_len;
kusano 7d535a
#if defined(HAVE_ANY_OP)
kusano 7d535a
    lzo_bytep const op_end = out + *out_len;
kusano 7d535a
#endif
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
    lzo_uint last_m_off = 0;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
    LZO_UNUSED(wrkmem);
kusano 7d535a
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
    if (dict)
kusano 7d535a
    {
kusano 7d535a
        if (dict_len > M4_MAX_OFFSET)
kusano 7d535a
        {
kusano 7d535a
            dict += dict_len - M4_MAX_OFFSET;
kusano 7d535a
            dict_len = M4_MAX_OFFSET;
kusano 7d535a
        }
kusano 7d535a
        dict_end = dict + dict_len;
kusano 7d535a
    }
kusano 7d535a
    else
kusano 7d535a
    {
kusano 7d535a
        dict_len = 0;
kusano 7d535a
        dict_end = NULL;
kusano 7d535a
    }
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
    *out_len = 0;
kusano 7d535a
kusano 7d535a
    op = out;
kusano 7d535a
    ip = in;
kusano 7d535a
kusano 7d535a
    if (*ip > 17)
kusano 7d535a
    {
kusano 7d535a
        t = *ip++ - 17;
kusano 7d535a
        if (t < 4)
kusano 7d535a
            goto match_next;
kusano 7d535a
        assert(t > 0); NEED_OP(t); NEED_IP(t+1);
kusano 7d535a
        do *op++ = *ip++; while (--t > 0);
kusano 7d535a
        goto first_literal_run;
kusano 7d535a
    }
kusano 7d535a
kusano 7d535a
    while (TEST_IP && TEST_OP)
kusano 7d535a
    {
kusano 7d535a
        t = *ip++;
kusano 7d535a
        if (t >= 16)
kusano 7d535a
            goto match;
kusano 7d535a
        if (t == 0)
kusano 7d535a
        {
kusano 7d535a
            NEED_IP(1);
kusano 7d535a
            while (*ip == 0)
kusano 7d535a
            {
kusano 7d535a
                t += 255;
kusano 7d535a
                ip++;
kusano 7d535a
                NEED_IP(1);
kusano 7d535a
            }
kusano 7d535a
            t += 15 + *ip++;
kusano 7d535a
        }
kusano 7d535a
        assert(t > 0); NEED_OP(t+3); NEED_IP(t+4);
kusano 7d535a
#if defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4)
kusano 7d535a
#if !defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
        if (PTR_ALIGNED2_4(op,ip))
kusano 7d535a
        {
kusano 7d535a
#endif
kusano 7d535a
        COPY4(op,ip);
kusano 7d535a
        op += 4; ip += 4;
kusano 7d535a
        if (--t > 0)
kusano 7d535a
        {
kusano 7d535a
            if (t >= 4)
kusano 7d535a
            {
kusano 7d535a
                do {
kusano 7d535a
                    COPY4(op,ip);
kusano 7d535a
                    op += 4; ip += 4; t -= 4;
kusano 7d535a
                } while (t >= 4);
kusano 7d535a
                if (t > 0) do *op++ = *ip++; while (--t > 0);
kusano 7d535a
            }
kusano 7d535a
            else
kusano 7d535a
                do *op++ = *ip++; while (--t > 0);
kusano 7d535a
        }
kusano 7d535a
#if !defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
        }
kusano 7d535a
        else
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
#if !defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
        {
kusano 7d535a
            *op++ = *ip++; *op++ = *ip++; *op++ = *ip++;
kusano 7d535a
            do *op++ = *ip++; while (--t > 0);
kusano 7d535a
        }
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
first_literal_run:
kusano 7d535a
kusano 7d535a
        t = *ip++;
kusano 7d535a
        if (t >= 16)
kusano 7d535a
            goto match;
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
        m_off = (1 + M2_MAX_OFFSET) + (t << 6) + (*ip++ >> 2);
kusano 7d535a
        last_m_off = m_off;
kusano 7d535a
#else
kusano 7d535a
        m_off = (1 + M2_MAX_OFFSET) + (t >> 2) + (*ip++ << 2);
kusano 7d535a
#endif
kusano 7d535a
        NEED_OP(3);
kusano 7d535a
        t = 3; COPY_DICT(t,m_off)
kusano 7d535a
#else
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
        t = (1 + M2_MAX_OFFSET) + (t << 6) + (*ip++ >> 2);
kusano 7d535a
        m_pos = op - t;
kusano 7d535a
        last_m_off = t;
kusano 7d535a
#else
kusano 7d535a
        m_pos = op - (1 + M2_MAX_OFFSET);
kusano 7d535a
        m_pos -= t >> 2;
kusano 7d535a
        m_pos -= *ip++ << 2;
kusano 7d535a
#endif
kusano 7d535a
        TEST_LB(m_pos); NEED_OP(3);
kusano 7d535a
        *op++ = *m_pos++; *op++ = *m_pos++; *op++ = *m_pos;
kusano 7d535a
#endif
kusano 7d535a
        goto match_done;
kusano 7d535a
kusano 7d535a
        do {
kusano 7d535a
match:
kusano 7d535a
            if (t >= 64)
kusano 7d535a
            {
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
#if defined(LZO1X)
kusano 7d535a
                m_off = 1 + ((t >> 2) & 7) + (*ip++ << 3);
kusano 7d535a
                t = (t >> 5) - 1;
kusano 7d535a
#elif defined(LZO1Y)
kusano 7d535a
                m_off = 1 + ((t >> 2) & 3) + (*ip++ << 2);
kusano 7d535a
                t = (t >> 4) - 3;
kusano 7d535a
#elif defined(LZO1Z)
kusano 7d535a
                m_off = t & 0x1f;
kusano 7d535a
                if (m_off >= 0x1c)
kusano 7d535a
                    m_off = last_m_off;
kusano 7d535a
                else
kusano 7d535a
                {
kusano 7d535a
                    m_off = 1 + (m_off << 6) + (*ip++ >> 2);
kusano 7d535a
                    last_m_off = m_off;
kusano 7d535a
                }
kusano 7d535a
                t = (t >> 5) - 1;
kusano 7d535a
#endif
kusano 7d535a
#else
kusano 7d535a
#if defined(LZO1X)
kusano 7d535a
                m_pos = op - 1;
kusano 7d535a
                m_pos -= (t >> 2) & 7;
kusano 7d535a
                m_pos -= *ip++ << 3;
kusano 7d535a
                t = (t >> 5) - 1;
kusano 7d535a
#elif defined(LZO1Y)
kusano 7d535a
                m_pos = op - 1;
kusano 7d535a
                m_pos -= (t >> 2) & 3;
kusano 7d535a
                m_pos -= *ip++ << 2;
kusano 7d535a
                t = (t >> 4) - 3;
kusano 7d535a
#elif defined(LZO1Z)
kusano 7d535a
                {
kusano 7d535a
                    lzo_uint off = t & 0x1f;
kusano 7d535a
                    m_pos = op;
kusano 7d535a
                    if (off >= 0x1c)
kusano 7d535a
                    {
kusano 7d535a
                        assert(last_m_off > 0);
kusano 7d535a
                        m_pos -= last_m_off;
kusano 7d535a
                    }
kusano 7d535a
                    else
kusano 7d535a
                    {
kusano 7d535a
                        off = 1 + (off << 6) + (*ip++ >> 2);
kusano 7d535a
                        m_pos -= off;
kusano 7d535a
                        last_m_off = off;
kusano 7d535a
                    }
kusano 7d535a
                }
kusano 7d535a
                t = (t >> 5) - 1;
kusano 7d535a
#endif
kusano 7d535a
                TEST_LB(m_pos); assert(t > 0); NEED_OP(t+3-1);
kusano 7d535a
                goto copy_match;
kusano 7d535a
#endif
kusano 7d535a
            }
kusano 7d535a
            else if (t >= 32)
kusano 7d535a
            {
kusano 7d535a
                t &= 31;
kusano 7d535a
                if (t == 0)
kusano 7d535a
                {
kusano 7d535a
                    NEED_IP(1);
kusano 7d535a
                    while (*ip == 0)
kusano 7d535a
                    {
kusano 7d535a
                        t += 255;
kusano 7d535a
                        ip++;
kusano 7d535a
                        NEED_IP(1);
kusano 7d535a
                    }
kusano 7d535a
                    t += 31 + *ip++;
kusano 7d535a
                }
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                m_off = 1 + (ip[0] << 6) + (ip[1] >> 2);
kusano 7d535a
                last_m_off = m_off;
kusano 7d535a
#else
kusano 7d535a
                m_off = 1 + (ip[0] >> 2) + (ip[1] << 6);
kusano 7d535a
#endif
kusano 7d535a
#else
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                {
kusano 7d535a
                    lzo_uint off = 1 + (ip[0] << 6) + (ip[1] >> 2);
kusano 7d535a
                    m_pos = op - off;
kusano 7d535a
                    last_m_off = off;
kusano 7d535a
                }
kusano 7d535a
#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN)
kusano 7d535a
                m_pos = op - 1;
kusano 7d535a
                m_pos -= (* (const lzo_ushortp) ip) >> 2;
kusano 7d535a
#else
kusano 7d535a
                m_pos = op - 1;
kusano 7d535a
                m_pos -= (ip[0] >> 2) + (ip[1] << 6);
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
                ip += 2;
kusano 7d535a
            }
kusano 7d535a
            else if (t >= 16)
kusano 7d535a
            {
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
                m_off = (t & 8) << 11;
kusano 7d535a
#else
kusano 7d535a
                m_pos = op;
kusano 7d535a
                m_pos -= (t & 8) << 11;
kusano 7d535a
#endif
kusano 7d535a
                t &= 7;
kusano 7d535a
                if (t == 0)
kusano 7d535a
                {
kusano 7d535a
                    NEED_IP(1);
kusano 7d535a
                    while (*ip == 0)
kusano 7d535a
                    {
kusano 7d535a
                        t += 255;
kusano 7d535a
                        ip++;
kusano 7d535a
                        NEED_IP(1);
kusano 7d535a
                    }
kusano 7d535a
                    t += 7 + *ip++;
kusano 7d535a
                }
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                m_off += (ip[0] << 6) + (ip[1] >> 2);
kusano 7d535a
#else
kusano 7d535a
                m_off += (ip[0] >> 2) + (ip[1] << 6);
kusano 7d535a
#endif
kusano 7d535a
                ip += 2;
kusano 7d535a
                if (m_off == 0)
kusano 7d535a
                    goto eof_found;
kusano 7d535a
                m_off += 0x4000;
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                last_m_off = m_off;
kusano 7d535a
#endif
kusano 7d535a
#else
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                m_pos -= (ip[0] << 6) + (ip[1] >> 2);
kusano 7d535a
#elif defined(LZO_UNALIGNED_OK_2) && defined(LZO_ABI_LITTLE_ENDIAN)
kusano 7d535a
                m_pos -= (* (const lzo_ushortp) ip) >> 2;
kusano 7d535a
#else
kusano 7d535a
                m_pos -= (ip[0] >> 2) + (ip[1] << 6);
kusano 7d535a
#endif
kusano 7d535a
                ip += 2;
kusano 7d535a
                if (m_pos == op)
kusano 7d535a
                    goto eof_found;
kusano 7d535a
                m_pos -= 0x4000;
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                last_m_off = pd((const lzo_bytep)op, m_pos);
kusano 7d535a
#endif
kusano 7d535a
#endif
kusano 7d535a
            }
kusano 7d535a
            else
kusano 7d535a
            {
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                m_off = 1 + (t << 6) + (*ip++ >> 2);
kusano 7d535a
                last_m_off = m_off;
kusano 7d535a
#else
kusano 7d535a
                m_off = 1 + (t >> 2) + (*ip++ << 2);
kusano 7d535a
#endif
kusano 7d535a
                NEED_OP(2);
kusano 7d535a
                t = 2; COPY_DICT(t,m_off)
kusano 7d535a
#else
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
                t = 1 + (t << 6) + (*ip++ >> 2);
kusano 7d535a
                m_pos = op - t;
kusano 7d535a
                last_m_off = t;
kusano 7d535a
#else
kusano 7d535a
                m_pos = op - 1;
kusano 7d535a
                m_pos -= t >> 2;
kusano 7d535a
                m_pos -= *ip++ << 2;
kusano 7d535a
#endif
kusano 7d535a
                TEST_LB(m_pos); NEED_OP(2);
kusano 7d535a
                *op++ = *m_pos++; *op++ = *m_pos;
kusano 7d535a
#endif
kusano 7d535a
                goto match_done;
kusano 7d535a
            }
kusano 7d535a
kusano 7d535a
#if defined(COPY_DICT)
kusano 7d535a
kusano 7d535a
            NEED_OP(t+3-1);
kusano 7d535a
            t += 3-1; COPY_DICT(t,m_off)
kusano 7d535a
kusano 7d535a
#else
kusano 7d535a
kusano 7d535a
            TEST_LB(m_pos); assert(t > 0); NEED_OP(t+3-1);
kusano 7d535a
#if defined(LZO_UNALIGNED_OK_4) || defined(LZO_ALIGNED_OK_4)
kusano 7d535a
#if !defined(LZO_UNALIGNED_OK_4)
kusano 7d535a
            if (t >= 2 * 4 - (3 - 1) && PTR_ALIGNED2_4(op,m_pos))
kusano 7d535a
            {
kusano 7d535a
                assert((op - m_pos) >= 4);
kusano 7d535a
#else
kusano 7d535a
            if (t >= 2 * 4 - (3 - 1) && (op - m_pos) >= 4)
kusano 7d535a
            {
kusano 7d535a
#endif
kusano 7d535a
                COPY4(op,m_pos);
kusano 7d535a
                op += 4; m_pos += 4; t -= 4 - (3 - 1);
kusano 7d535a
                do {
kusano 7d535a
                    COPY4(op,m_pos);
kusano 7d535a
                    op += 4; m_pos += 4; t -= 4;
kusano 7d535a
                } while (t >= 4);
kusano 7d535a
                if (t > 0) do *op++ = *m_pos++; while (--t > 0);
kusano 7d535a
            }
kusano 7d535a
            else
kusano 7d535a
#endif
kusano 7d535a
            {
kusano 7d535a
copy_match:
kusano 7d535a
                *op++ = *m_pos++; *op++ = *m_pos++;
kusano 7d535a
                do *op++ = *m_pos++; while (--t > 0);
kusano 7d535a
            }
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
match_done:
kusano 7d535a
#if defined(LZO1Z)
kusano 7d535a
            t = ip[-1] & 3;
kusano 7d535a
#else
kusano 7d535a
            t = ip[-2] & 3;
kusano 7d535a
#endif
kusano 7d535a
            if (t == 0)
kusano 7d535a
                break;
kusano 7d535a
kusano 7d535a
match_next:
kusano 7d535a
            assert(t > 0); assert(t < 4); NEED_OP(t); NEED_IP(t+1);
kusano 7d535a
#if 0
kusano 7d535a
            do *op++ = *ip++; while (--t > 0);
kusano 7d535a
#else
kusano 7d535a
            *op++ = *ip++;
kusano 7d535a
            if (t > 1) { *op++ = *ip++; if (t > 2) { *op++ = *ip++; } }
kusano 7d535a
#endif
kusano 7d535a
            t = *ip++;
kusano 7d535a
        } while (TEST_IP && TEST_OP);
kusano 7d535a
    }
kusano 7d535a
kusano 7d535a
#if defined(HAVE_TEST_IP) || defined(HAVE_TEST_OP)
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return LZO_E_EOF_NOT_FOUND;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
eof_found:
kusano 7d535a
    assert(t == 1);
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return (ip == ip_end ? LZO_E_OK :
kusano 7d535a
           (ip < ip_end  ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
kusano 7d535a
kusano 7d535a
#if defined(HAVE_NEED_IP)
kusano 7d535a
input_overrun:
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return LZO_E_INPUT_OVERRUN;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(HAVE_NEED_OP)
kusano 7d535a
output_overrun:
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return LZO_E_OUTPUT_OVERRUN;
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
#if defined(LZO_TEST_OVERRUN_LOOKBEHIND)
kusano 7d535a
lookbehind_overrun:
kusano 7d535a
    *out_len = pd(op, out);
kusano 7d535a
    return LZO_E_LOOKBEHIND_OVERRUN;
kusano 7d535a
#endif
kusano 7d535a
}
kusano 7d535a
kusano 7d535a
#endif
kusano 7d535a
kusano 7d535a
/***** End of minilzo.c *****/
kusano 7d535a