Compare commits
63 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 08c0796719 | |||
| edc7994ce5 | |||
| bcfcfbd064 | |||
| 9e79b3258d | |||
| 243873cd2d | |||
| c7b8a4b0c1 | |||
| e39e0c7140 | |||
| d4a3f11dbb | |||
| 0962f266b3 | |||
| 69e4d3fdad | |||
| c0908f463a | |||
| b00a61a17b | |||
| 553c2f886a | |||
| 4fd9c5772a | |||
| 04e0e06d85 | |||
| 4d7829d72b | |||
| 6b751aac57 | |||
| 813349fd23 | |||
| 16a2744782 | |||
| 7b6870db22 | |||
| 3e38e7d52c | |||
| 8142d3474d | |||
| 8773649de6 | |||
| c117920ff9 | |||
| c8dd2a3eb8 | |||
| 90b1817e92 | |||
| d6c3ff5997 | |||
| 984ec25132 | |||
| a7bff34784 | |||
| a6e7afbc91 | |||
| 33f1d63b64 | |||
| f95e171e11 | |||
| c82b50b212 | |||
| 2b402b77f1 | |||
| adcb551020 | |||
| 2680aabe06 | |||
| d5c0533b74 | |||
| 609307668b | |||
| cdaf36572a | |||
| 033c8d5d51 | |||
| 6216ec1d6a | |||
| 6c9c67f6c5 | |||
| 5bd32b5521 | |||
| 549336f75b | |||
| f0e75f30b3 | |||
| 144c09f175 | |||
| ee50c0f97c | |||
| ade921bf02 | |||
| 676cacff04 | |||
| a3097d5e25 | |||
| fd78148558 | |||
| a4d79d7375 | |||
| df04e8183d | |||
| c43c484a62 | |||
| 0608c35669 | |||
| 7dd4d06e26 | |||
| 1ee0310b86 | |||
| cc0a52038f | |||
| 6aed1fe231 | |||
| 680608fe18 | |||
| ec6acbc602 | |||
| cb7ee4c5d2 | |||
| 88d5798f45 |
+13
@@ -0,0 +1,13 @@
|
||||
.bzr*
|
||||
.darcs*
|
||||
.git*
|
||||
.hg*
|
||||
_darcs
|
||||
B
|
||||
build*
|
||||
doxygen
|
||||
maint
|
||||
ChangeLog.cvs*
|
||||
GNUmakefile
|
||||
MMakefile
|
||||
TODO.*
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
|
||||
The Ultimate Packer for eXecutables
|
||||
Copyright (c) 1996-2006 Markus Oberhumer & Laszlo Molnar
|
||||
Copyright (c) 1996-2006 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||
http://upx.sourceforge.net
|
||||
|
||||
|
||||
|
||||
@@ -2,10 +2,13 @@
|
||||
User visible changes for UPX
|
||||
==================================================================
|
||||
|
||||
[ UNSTABLE BETA VERSION - please see README.1ST for some more info ]
|
||||
Changes in 1.95 beta (09 Apr 2006):
|
||||
* arm/pe: added DLL support
|
||||
* arm/pe: added thumb mode stub support
|
||||
* arm/pe: added unpacking support
|
||||
* win32/pe: really worked around R6002 runtime errors
|
||||
|
||||
Changes in 1.94 beta (11 Mar 2006):
|
||||
* UNSTABLE BETA VERSION - DO NOT USE EXCEPT FOR TESTING
|
||||
* new format: added support for arm/pe (ARM executables running on WinCE)
|
||||
* new format: added support for linux elf/amd64
|
||||
* new format: added support for linux elf/ppc32
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
|
||||
The Ultimate Packer for eXecutables
|
||||
Copyright (c) 1996-2006 Markus Oberhumer & Laszlo Molnar
|
||||
Copyright (c) 1996-2006 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||
http://upx.sourceforge.net
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
|
||||
The Ultimate Packer for eXecutables
|
||||
Copyright (c) 1996-2006 Markus Oberhumer & Laszlo Molnar
|
||||
Copyright (c) 1996-2006 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||
http://upx.sourceforge.net
|
||||
|
||||
|
||||
@@ -135,6 +135,7 @@ COPYRIGHT
|
||||
|
||||
Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2006 Laszlo Molnar
|
||||
Copyright (C) 2000-2006 John F. Reiser
|
||||
|
||||
This program may be used freely, and you are welcome to
|
||||
redistribute it under certain conditions.
|
||||
|
||||
+4
-8
@@ -8,7 +8,7 @@
|
||||
|
||||
|
||||
The Ultimate Packer for eXecutables
|
||||
Copyright (c) 1996-2006 Markus Oberhumer & Laszlo Molnar
|
||||
Copyright (c) 1996-2006 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||
http://upx.sourceforge.net
|
||||
|
||||
|
||||
@@ -16,10 +16,6 @@
|
||||
WARNING - UNSTABLE BETA VERSION
|
||||
===============================
|
||||
|
||||
All versions 1.9x are unstable beta releases - use them only for testing,
|
||||
and never distribute a program that is packed with them !
|
||||
There will be hidden bugs. Really.
|
||||
|
||||
The current stable release is 1.25, and the next stable release
|
||||
will be called version 2.00.
|
||||
|
||||
@@ -31,8 +27,8 @@ The main news since 1.25 are:
|
||||
- direct Linux ELF-to-memory decompression ("linux/elf386") and
|
||||
shell-to-memory decompression ("linux/sh386")
|
||||
- support for arm/WinCE ("arm/pe") exes
|
||||
- support for mach/ppc32
|
||||
- support for Linux elf/ppc32
|
||||
- support for Linux elf/amd64
|
||||
- support for Linux elf/ppc32
|
||||
- support for mach/ppc32
|
||||
- support for playstation exes ("ps1/exe")
|
||||
- lots of new bugs ;-) take care
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
|
||||
The Ultimate Packer for eXecutables
|
||||
Copyright (c) 1996-2006 Markus Oberhumer & Laszlo Molnar
|
||||
Copyright (c) 1996-2006 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||
http://upx.sourceforge.net
|
||||
|
||||
|
||||
@@ -39,8 +39,6 @@ Ice
|
||||
for debugging the PE headersize problem down
|
||||
Joergen Ibsen <jibz@hotmail.com> and d'b
|
||||
for the relocation & address optimization ideas
|
||||
John F. Reiser <jreiser@BitWagon.com>
|
||||
for the new Linux executable formats
|
||||
John S. Fine <johnfine@erols.com>
|
||||
for the new version of the dos/exe decompressor
|
||||
Lukundoo <Lukundoo@softhome.net>
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
upx.1
|
||||
upx.doc
|
||||
upx.html
|
||||
upx.man
|
||||
upx.ps
|
||||
upx.tex
|
||||
+4
-4
@@ -1,9 +1,11 @@
|
||||
MAKEFLAGS += -rR
|
||||
.SUFFIXES:
|
||||
SHELL = /bin/sh
|
||||
|
||||
top_srcdir = ..
|
||||
|
||||
PACKAGE = upx
|
||||
VERSION_DATE = 11 Mar 2006
|
||||
VERSION_DATE := $(shell sed -n 's/^.*UPX_VERSION_DATE_ISO .*"\(.*\)".*/\1/p' $(top_srcdir)/src/version.h)
|
||||
VERSION := $(shell sed -n 's/^.*UPX_VERSION_STRING .*"\(.*\)".*/\1/p' $(top_srcdir)/src/version.h)
|
||||
|
||||
TRIMSPACE = cat
|
||||
@@ -62,7 +64,5 @@ maintainer-clean: distclean
|
||||
### dependencies
|
||||
###
|
||||
|
||||
$(BUILT_SOURCES): $(top_srcdir)/src/version.h Makefile
|
||||
|
||||
.NOEXPORT:
|
||||
$(BUILT_SOURCES): $(top_srcdir)/src/version.h $(MAKEFILE_LIST)
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ B<upx> S<[ I<command> ]> S<[ I<options> ]> I<filename>...
|
||||
=head1 ABSTRACT
|
||||
|
||||
The Ultimate Packer for eXecutables
|
||||
Copyright (c) 1996-2006 Markus Oberhumer & Laszlo Molnar
|
||||
Copyright (c) 1996-2006 Markus Oberhumer, Laszlo Molnar & John Reiser
|
||||
http://upx.sourceforge.net
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
*.0??
|
||||
*.d
|
||||
*.dat
|
||||
*.idb
|
||||
*.img
|
||||
*.map
|
||||
*.raw
|
||||
*.rc
|
||||
*.rel
|
||||
*.res
|
||||
*.pdb
|
||||
*.out
|
||||
*.upx
|
||||
.gdbinit
|
||||
GNUmakefile
|
||||
MMakefile
|
||||
compress_nrv.*
|
||||
upx
|
||||
version1*.h
|
||||
+21
-3
@@ -262,9 +262,12 @@ struct BE16
|
||||
BE16& operator += (unsigned v) { set_be16(d, get_be16(d) + v); return *this; }
|
||||
BE16& operator -= (unsigned v) { set_be16(d, get_be16(d) - v); return *this; }
|
||||
BE16& operator *= (unsigned v) { set_be16(d, get_be16(d) * v); return *this; }
|
||||
BE16& operator /= (unsigned v) { set_be16(d, get_be16(d) / v); return *this; }
|
||||
BE16& operator &= (unsigned v) { set_be16(d, get_be16(d) & v); return *this; }
|
||||
BE16& operator |= (unsigned v) { set_be16(d, get_be16(d) | v); return *this; }
|
||||
BE16& operator ^= (unsigned v) { set_be16(d, get_be16(d) ^ v); return *this; }
|
||||
BE16& operator <<= (unsigned v) { set_be16(d, get_be16(d) << v); return *this; }
|
||||
BE16& operator >>= (unsigned v) { set_be16(d, get_be16(d) >> v); return *this; }
|
||||
|
||||
operator unsigned () const { return get_be16(d); }
|
||||
}
|
||||
@@ -279,9 +282,12 @@ struct BE32
|
||||
BE32& operator += (unsigned v) { set_be32(d, get_be32(d) + v); return *this; }
|
||||
BE32& operator -= (unsigned v) { set_be32(d, get_be32(d) - v); return *this; }
|
||||
BE32& operator *= (unsigned v) { set_be32(d, get_be32(d) * v); return *this; }
|
||||
BE32& operator /= (unsigned v) { set_be32(d, get_be32(d) / v); return *this; }
|
||||
BE32& operator &= (unsigned v) { set_be32(d, get_be32(d) & v); return *this; }
|
||||
BE32& operator |= (unsigned v) { set_be32(d, get_be32(d) | v); return *this; }
|
||||
BE32& operator ^= (unsigned v) { set_be32(d, get_be32(d) ^ v); return *this; }
|
||||
BE32& operator <<= (unsigned v) { set_be32(d, get_be32(d) << v); return *this; }
|
||||
BE32& operator >>= (unsigned v) { set_be32(d, get_be32(d) >> v); return *this; }
|
||||
|
||||
operator unsigned () const { return get_be32(d); }
|
||||
}
|
||||
@@ -296,9 +302,12 @@ struct BE64
|
||||
BE64& operator += (acc_uint64l_t v) { set_be64(d, get_be64(d) + v); return *this; }
|
||||
BE64& operator -= (acc_uint64l_t v) { set_be64(d, get_be64(d) - v); return *this; }
|
||||
BE64& operator *= (acc_uint64l_t v) { set_be64(d, get_be64(d) * v); return *this; }
|
||||
BE64& operator /= (acc_uint64l_t v) { set_be64(d, get_be64(d) / v); return *this; }
|
||||
BE64& operator &= (acc_uint64l_t v) { set_be64(d, get_be64(d) & v); return *this; }
|
||||
BE64& operator |= (acc_uint64l_t v) { set_be64(d, get_be64(d) | v); return *this; }
|
||||
BE64& operator ^= (acc_uint64l_t v) { set_be64(d, get_be64(d) ^ v); return *this; }
|
||||
BE64& operator <<= (unsigned v) { set_be64(d, get_be64(d) << v); return *this; }
|
||||
BE64& operator >>= (unsigned v) { set_be64(d, get_be64(d) >> v); return *this; }
|
||||
|
||||
operator acc_uint64l_t () const { return get_be64(d); }
|
||||
}
|
||||
@@ -313,9 +322,12 @@ struct LE16
|
||||
LE16& operator += (unsigned v) { set_le16(d, get_le16(d) + v); return *this; }
|
||||
LE16& operator -= (unsigned v) { set_le16(d, get_le16(d) - v); return *this; }
|
||||
LE16& operator *= (unsigned v) { set_le16(d, get_le16(d) * v); return *this; }
|
||||
LE16& operator /= (unsigned v) { set_le16(d, get_le16(d) / v); return *this; }
|
||||
LE16& operator &= (unsigned v) { set_le16(d, get_le16(d) & v); return *this; }
|
||||
LE16& operator |= (unsigned v) { set_le16(d, get_le16(d) | v); return *this; }
|
||||
LE16& operator ^= (unsigned v) { set_le16(d, get_le16(d) ^ v); return *this; }
|
||||
LE16& operator <<= (unsigned v) { set_le16(d, get_le16(d) << v); return *this; }
|
||||
LE16& operator >>= (unsigned v) { set_le16(d, get_le16(d) >> v); return *this; }
|
||||
|
||||
operator unsigned () const { return get_le16(d); }
|
||||
}
|
||||
@@ -330,9 +342,12 @@ struct LE32
|
||||
LE32& operator += (unsigned v) { set_le32(d, get_le32(d) + v); return *this; }
|
||||
LE32& operator -= (unsigned v) { set_le32(d, get_le32(d) - v); return *this; }
|
||||
LE32& operator *= (unsigned v) { set_le32(d, get_le32(d) * v); return *this; }
|
||||
LE32& operator /= (unsigned v) { set_le32(d, get_le32(d) / v); return *this; }
|
||||
LE32& operator &= (unsigned v) { set_le32(d, get_le32(d) & v); return *this; }
|
||||
LE32& operator |= (unsigned v) { set_le32(d, get_le32(d) | v); return *this; }
|
||||
LE32& operator ^= (unsigned v) { set_le32(d, get_le32(d) ^ v); return *this; }
|
||||
LE32& operator <<= (unsigned v) { set_le32(d, get_le32(d) << v); return *this; }
|
||||
LE32& operator >>= (unsigned v) { set_le32(d, get_le32(d) >> v); return *this; }
|
||||
|
||||
operator unsigned () const { return get_le32(d); }
|
||||
}
|
||||
@@ -347,9 +362,12 @@ struct LE64
|
||||
LE64& operator += (acc_uint64l_t v) { set_le64(d, get_le64(d) + v); return *this; }
|
||||
LE64& operator -= (acc_uint64l_t v) { set_le64(d, get_le64(d) - v); return *this; }
|
||||
LE64& operator *= (acc_uint64l_t v) { set_le64(d, get_le64(d) * v); return *this; }
|
||||
LE64& operator /= (acc_uint64l_t v) { set_le64(d, get_le64(d) / v); return *this; }
|
||||
LE64& operator &= (acc_uint64l_t v) { set_le64(d, get_le64(d) & v); return *this; }
|
||||
LE64& operator |= (acc_uint64l_t v) { set_le64(d, get_le64(d) | v); return *this; }
|
||||
LE64& operator ^= (acc_uint64l_t v) { set_le64(d, get_le64(d) ^ v); return *this; }
|
||||
LE64& operator <<= (unsigned v) { set_le64(d, get_le64(d) << v); return *this; }
|
||||
LE64& operator >>= (unsigned v) { set_le64(d, get_le64(d) >> v); return *this; }
|
||||
|
||||
operator acc_uint64l_t () const { return get_le64(d); }
|
||||
}
|
||||
@@ -430,7 +448,7 @@ int __acc_cdecl_qsort le64_compare_signed(const void *, const void *);
|
||||
# ifndef LE16
|
||||
# define LE16 LE16_unaligned
|
||||
# endif
|
||||
# ifndef LE16
|
||||
# ifndef LE32
|
||||
# define LE32 LE32_unaligned
|
||||
# endif
|
||||
#endif
|
||||
@@ -440,7 +458,7 @@ int __acc_cdecl_qsort le64_compare_signed(const void *, const void *);
|
||||
# ifndef LE16
|
||||
# define LE16 LE16_unaligned
|
||||
# endif
|
||||
# ifndef LE16
|
||||
# ifndef LE32
|
||||
# define LE32 LE32_unaligned
|
||||
# endif
|
||||
#endif
|
||||
@@ -450,7 +468,7 @@ int __acc_cdecl_qsort le64_compare_signed(const void *, const void *);
|
||||
# ifndef LE16
|
||||
# define LE16 LE16_unaligned
|
||||
# endif
|
||||
# ifndef LE16
|
||||
# ifndef LE32
|
||||
# define LE32 LE32_unaligned
|
||||
# endif
|
||||
# pragma warning(disable: 4244) // Wx: conversion, possible loss of data
|
||||
|
||||
@@ -292,6 +292,9 @@
|
||||
#define index upx_index
|
||||
#define outp upx_outp
|
||||
|
||||
#undef PAGE_MASK
|
||||
#undef PAGE_SIZE
|
||||
|
||||
|
||||
#undef __attribute_packed
|
||||
#if (ACC_CC_GNUC || ACC_CC_INTELC || ACC_CC_PATHSCALE)
|
||||
|
||||
+5
-4
@@ -256,13 +256,14 @@ void show_help(int x)
|
||||
" dos/sys,"
|
||||
"\n "
|
||||
//" elks/8086,"
|
||||
" linux/386,"
|
||||
" linux/elf386,"
|
||||
" linux/sh386,"
|
||||
" linux/amd64,"
|
||||
" linux/i386,"
|
||||
" linux/ppc32,"
|
||||
" mach/ppc32,"
|
||||
" ps1/exe,"
|
||||
" rtm32/pe,"
|
||||
" tmt/adam,"
|
||||
"\n "
|
||||
" tmt/adam,"
|
||||
" vmlinux/386,"
|
||||
" vmlinuz/386,"
|
||||
" watcom/le,"
|
||||
|
||||
@@ -1070,6 +1070,8 @@ static int test(void)
|
||||
assert( (v1 < v2)); assert(!(v1 > v2));
|
||||
v2 += 2;
|
||||
assert(v1 == 1); assert(v2 == 0);
|
||||
v1 <<= 1; v1 |= v2; v1 >>= 1; v2 &= v1; v2 /= v1; v2 *= v1;
|
||||
assert(v1 == 1); assert(v2 == 0);
|
||||
return (v1 ^ v2) == 1;
|
||||
}};
|
||||
|
||||
|
||||
+5
-3
@@ -60,6 +60,8 @@ static int mcheck_init()
|
||||
MemBuffer::MemBuffer() :
|
||||
b(NULL), b_size(0)
|
||||
{
|
||||
if (use_mcheck < 0)
|
||||
mcheck_init();
|
||||
}
|
||||
|
||||
MemBuffer::MemBuffer(unsigned size) :
|
||||
@@ -87,7 +89,7 @@ void MemBuffer::dealloc()
|
||||
set_be32(b + b_size, 0);
|
||||
set_be32(b + b_size + 4, 0);
|
||||
//
|
||||
::free(b - 8);
|
||||
::free(b - 16);
|
||||
}
|
||||
else
|
||||
::free(b);
|
||||
@@ -173,7 +175,7 @@ void MemBuffer::alloc(unsigned size)
|
||||
assert(b_size == 0);
|
||||
//
|
||||
assert((int)size > 0);
|
||||
unsigned total = use_mcheck ? size + 16 : size;
|
||||
unsigned total = use_mcheck ? size + 32 : size;
|
||||
assert((int)total > 0);
|
||||
unsigned char *p = (unsigned char *) malloc(total);
|
||||
if (!p)
|
||||
@@ -185,7 +187,7 @@ void MemBuffer::alloc(unsigned size)
|
||||
b_size = size;
|
||||
if (use_mcheck)
|
||||
{
|
||||
b = p + 8;
|
||||
b = p + 16;
|
||||
// store magic constants to detect buffer overruns
|
||||
set_be32(b - 8, b_size);
|
||||
set_be32(b - 4, MAGIC1(b));
|
||||
|
||||
+99
-22
@@ -37,7 +37,7 @@
|
||||
|
||||
#ifndef __ACC_H_INCLUDED
|
||||
#define __ACC_H_INCLUDED 1
|
||||
#define ACC_VERSION 20060309L
|
||||
#define ACC_VERSION 20060404L
|
||||
#if defined(__CYGWIN32__) && !defined(__CYGWIN__)
|
||||
# define __CYGWIN__ __CYGWIN32__
|
||||
#endif
|
||||
@@ -330,6 +330,9 @@
|
||||
# define ACC_INFO_OS "freestanding"
|
||||
#elif defined(ACC_OS_EMBEDDED)
|
||||
# define ACC_INFO_OS "embedded"
|
||||
#elif 1 && defined(__IAR_SYSTEMS_ICC__)
|
||||
# define ACC_OS_EMBEDDED 1
|
||||
# define ACC_INFO_OS "embedded"
|
||||
#elif defined(__CYGWIN__) && defined(__GNUC__)
|
||||
# define ACC_OS_CYGWIN 1
|
||||
# define ACC_INFO_OS "cygwin"
|
||||
@@ -573,6 +576,14 @@
|
||||
# define ACC_CC_HIGHC 1
|
||||
# define ACC_INFO_CC "MetaWare High C"
|
||||
# define ACC_INFO_CCVER "unknown"
|
||||
#elif defined(__IAR_SYSTEMS_ICC__)
|
||||
# define ACC_CC_IARC 1
|
||||
# define ACC_INFO_CC "IAR C"
|
||||
# if defined(__VER__)
|
||||
# define ACC_INFO_CCVER ACC_CPP_MACRO_EXPAND(__VER__)
|
||||
# else
|
||||
# define ACC_INFO_CCVER "unknown"
|
||||
# endif
|
||||
#elif defined(__IBMC__)
|
||||
# define ACC_CC_IBMC 1
|
||||
# define ACC_INFO_CC "IBM C"
|
||||
@@ -704,6 +715,16 @@
|
||||
# define ACC_ARCH_ARM 1
|
||||
# define ACC_ARCH_ARM_THUMB 1
|
||||
# define ACC_INFO_ARCH "arm_thumb"
|
||||
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCARM__)
|
||||
# define ACC_ARCH_ARM 1
|
||||
# if defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 1)
|
||||
# define ACC_ARCH_ARM_THUMB 1
|
||||
# define ACC_INFO_ARCH "arm_thumb"
|
||||
# elif defined(__CPU_MODE__) && ((__CPU_MODE__)+0 == 2)
|
||||
# define ACC_INFO_ARCH "arm"
|
||||
# else
|
||||
# define ACC_INFO_ARCH "arm"
|
||||
# endif
|
||||
#elif defined(__arm__) || defined(_M_ARM)
|
||||
# define ACC_ARCH_ARM 1
|
||||
# define ACC_INFO_ARCH "arm"
|
||||
@@ -719,6 +740,9 @@
|
||||
#elif defined(__cris__)
|
||||
# define ACC_ARCH_CRIS 1
|
||||
# define ACC_INFO_ARCH "cris"
|
||||
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCEZ80__)
|
||||
# define ACC_ARCH_EZ80 1
|
||||
# define ACC_INFO_ARCH "ez80"
|
||||
#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__) || defined(__H8300SX__)
|
||||
# define ACC_ARCH_H8300 1
|
||||
# define ACC_INFO_ARCH "h8300"
|
||||
@@ -743,10 +767,13 @@
|
||||
#elif (UINT_MAX == ACC_0xffffL) && defined(__m32c__)
|
||||
# define ACC_ARCH_M16C 1
|
||||
# define ACC_INFO_ARCH "m16c"
|
||||
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICCM16C__)
|
||||
# define ACC_ARCH_M16C 1
|
||||
# define ACC_INFO_ARCH "m16c"
|
||||
#elif defined(__m32r__)
|
||||
# define ACC_ARCH_M32R 1
|
||||
# define ACC_INFO_ARCH "m32r"
|
||||
#elif (ACC_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(_M_M68K)
|
||||
#elif (ACC_OS_TOS) || defined(__m68k__) || defined(__m68000__) || defined(__mc68000__) || defined(__mc68020__) || defined(_M_M68K)
|
||||
# define ACC_ARCH_M68K 1
|
||||
# define ACC_INFO_ARCH "m68k"
|
||||
#elif (UINT_MAX == ACC_0xffffL) && defined(__C251__)
|
||||
@@ -755,12 +782,18 @@
|
||||
#elif (UINT_MAX == ACC_0xffffL) && defined(__C51__)
|
||||
# define ACC_ARCH_MCS51 1
|
||||
# define ACC_INFO_ARCH "mcs51"
|
||||
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC8051__)
|
||||
# define ACC_ARCH_MCS51 1
|
||||
# define ACC_INFO_ARCH "mcs51"
|
||||
#elif defined(__mips__) || defined(__mips) || defined(_MIPS_ARCH) || defined(_M_MRX000)
|
||||
# define ACC_ARCH_MIPS 1
|
||||
# define ACC_INFO_ARCH "mips"
|
||||
#elif (UINT_MAX == ACC_0xffffL) && defined(__MSP430__)
|
||||
# define ACC_ARCH_MSP430 1
|
||||
# define ACC_INFO_ARCH "msp430"
|
||||
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC430__)
|
||||
# define ACC_ARCH_MSP430 1
|
||||
# define ACC_INFO_ARCH "msp430"
|
||||
#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR)
|
||||
# define ACC_ARCH_POWERPC 1
|
||||
# define ACC_INFO_ARCH "powerpc"
|
||||
@@ -1256,6 +1289,12 @@ extern "C" {
|
||||
# define ACC_ABI_LITTLE_ENDIAN 1
|
||||
#elif (ACC_ARCH_M68K || ACC_ARCH_S390)
|
||||
# define ACC_ABI_BIG_ENDIAN 1
|
||||
#elif 1 && defined(__IAR_SYSTEMS_ICC__) && defined(__LITTLE_ENDIAN__)
|
||||
# if (__LITTLE_ENDIAN__ == 1)
|
||||
# define ACC_ABI_LITTLE_ENDIAN 1
|
||||
# else
|
||||
# define ACC_ABI_BIG_ENDIAN 1
|
||||
# endif
|
||||
#elif 1 && defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
|
||||
# define ACC_ABI_BIG_ENDIAN 1
|
||||
#elif 1 && defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
|
||||
@@ -1328,6 +1367,9 @@ extern "C" {
|
||||
#elif (ACC_CC_MWERKS) && defined(__MSL__)
|
||||
# define ACC_LIBC_MSL __MSL__
|
||||
# define ACC_INFO_LIBC "msl"
|
||||
#elif 1 && defined(__IAR_SYSTEMS_ICC__)
|
||||
# define ACC_LIBC_ISOC90 1
|
||||
# define ACC_INFO_LIBC "isoc90"
|
||||
#else
|
||||
# define ACC_LIBC_DEFAULT 1
|
||||
# define ACC_INFO_LIBC "default"
|
||||
@@ -1815,11 +1857,11 @@ extern "C" {
|
||||
#elif (ACC_OS_EMX)
|
||||
# define HAVE_ALLOCA_H 1
|
||||
# define HAVE_IO_H 1
|
||||
#elif (ACC_OS_TOS && ACC_CC_GNUC)
|
||||
#elif (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC)
|
||||
# if !defined(__MINT__)
|
||||
# undef HAVE_MALLOC_H
|
||||
# endif
|
||||
#elif (ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
|
||||
#elif (ACC_ARCH_M68K && ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
|
||||
# undef HAVE_DIRENT_H
|
||||
# undef HAVE_FCNTL_H
|
||||
# undef HAVE_MALLOC_H
|
||||
@@ -1982,7 +2024,10 @@ extern "C" {
|
||||
#endif
|
||||
#if (ACC_LIBC_ISOC90 || ACC_LIBC_ISOC99)
|
||||
# undef HAVE_DIRENT_H
|
||||
# undef HAVE_FCNTL_H
|
||||
# undef HAVE_MALLOC_H
|
||||
# undef HAVE_UNISTD_H
|
||||
# undef HAVE_UTIME_H
|
||||
# undef HAVE_SYS_STAT_H
|
||||
# undef HAVE_SYS_TIME_H
|
||||
# undef HAVE_SYS_TYPES_H
|
||||
@@ -2027,6 +2072,7 @@ extern "C" {
|
||||
#define HAVE_FSTAT 1
|
||||
#define HAVE_GETTIMEOFDAY 1
|
||||
#define HAVE_GMTIME 1
|
||||
#define HAVE_ISATTY 1
|
||||
#define HAVE_LOCALTIME 1
|
||||
#define HAVE_LONGJMP 1
|
||||
#define HAVE_LSTAT 1
|
||||
@@ -2034,9 +2080,11 @@ extern "C" {
|
||||
#define HAVE_MEMCPY 1
|
||||
#define HAVE_MEMMOVE 1
|
||||
#define HAVE_MEMSET 1
|
||||
#define HAVE_MKDIR 1
|
||||
#define HAVE_MKTIME 1
|
||||
#define HAVE_QSORT 1
|
||||
#define HAVE_RAISE 1
|
||||
#define HAVE_RMDIR 1
|
||||
#define HAVE_SETJMP 1
|
||||
#define HAVE_SIGNAL 1
|
||||
#define HAVE_SNPRINTF 1
|
||||
@@ -2094,12 +2142,12 @@ extern "C" {
|
||||
#elif (ACC_OS_EMX)
|
||||
# undef HAVE_CHOWN
|
||||
# undef HAVE_LSTAT
|
||||
#elif (ACC_OS_TOS && ACC_CC_GNUC)
|
||||
#elif (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC)
|
||||
# if !defined(__MINT__)
|
||||
# undef HAVE_SNPRINTF
|
||||
# undef HAVE_VSNPRINTF
|
||||
# endif
|
||||
#elif (ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
|
||||
#elif (ACC_ARCH_M68K && ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
|
||||
# undef HAVE_ALLOCA
|
||||
# undef HAVE_ACCESS
|
||||
# undef HAVE_CHMOD
|
||||
@@ -2290,6 +2338,15 @@ extern "C" {
|
||||
# undef HAVE_STAT
|
||||
# undef HAVE_UMASK
|
||||
# undef HAVE_UTIME
|
||||
# if 1
|
||||
# undef HAVE_ALLOCA
|
||||
# undef HAVE_ISATTY
|
||||
# undef HAVE_MKDIR
|
||||
# undef HAVE_RMDIR
|
||||
# undef HAVE_STRDUP
|
||||
# undef HAVE_STRICMP
|
||||
# undef HAVE_STRNICMP
|
||||
# endif
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
@@ -3571,7 +3628,7 @@ ACCLIB_EXTERN_NOINLINE(const acc_hvoid_p, acc_vget_acc_hvoid_cp) (const acc_hvoi
|
||||
#if !defined(ACC_FN_NAME_MAX)
|
||||
#if (ACC_OS_DOS16 || ACC_OS_WIN16)
|
||||
# define ACC_FN_NAME_MAX 12
|
||||
#elif (ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
|
||||
#elif (ACC_ARCH_M68K && ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
|
||||
# define ACC_FN_NAME_MAX 12
|
||||
#elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
|
||||
#elif (ACC_OS_DOS32)
|
||||
@@ -3593,7 +3650,7 @@ ACCLIB_EXTERN(int, acc_fnmatch) (const acc_hchar_p, const acc_hchar_p, int);
|
||||
# if (ACC_OS_DOS32 && defined(__BORLANDC__))
|
||||
# elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
|
||||
# elif (ACC_OS_OS2 || ACC_OS_OS216)
|
||||
# elif (ACC_OS_TOS && ACC_CC_GNUC)
|
||||
# elif (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC)
|
||||
# elif (ACC_OS_WIN32 && !defined(ACC_HAVE_WINDOWS_H))
|
||||
# elif (ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_TOS || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
|
||||
# undef __ACCLIB_USE_OPENDIR
|
||||
@@ -3671,6 +3728,7 @@ ACCLIB_EXTERN(int, acc_closedir) (acc_dir_p);
|
||||
ACCLIB_EXTERN(acclib_handle_t, acc_get_osfhandle) (int);
|
||||
ACCLIB_EXTERN(int, acc_isatty) (int);
|
||||
ACCLIB_EXTERN(int, acc_mkdir) (const char*, unsigned);
|
||||
ACCLIB_EXTERN(int, acc_rmdir) (const char*);
|
||||
ACCLIB_EXTERN(int, acc_response) (int*, char***);
|
||||
ACCLIB_EXTERN(int, acc_set_binmode) (int, int);
|
||||
ACCLIB_EXTERN(acc_int32l_t, acc_muldiv32) (acc_int32l_t, acc_int32l_t, acc_int32l_t);
|
||||
@@ -3745,7 +3803,7 @@ struct acc_pclock_handle_t {
|
||||
const char* name;
|
||||
int (*gettime) (acc_pclock_handle_p, acc_pclock_p);
|
||||
#if defined(acc_int64l_t)
|
||||
acc_int64l_t ticks_base;
|
||||
acc_uint64l_t ticks_base;
|
||||
#endif
|
||||
#if defined(__ACCLIB_PCLOCK_USE_PERFCTR)
|
||||
acc_perfctr_handle_t pch;
|
||||
@@ -4094,7 +4152,8 @@ ACCLIB_EXTERN(int, acc_spawnve) (int mode, const char* fn, const char* const * a
|
||||
ACCCHK_ASSERT((~0l & ~0u) == ~0u)
|
||||
ACCCHK_ASSERT((~0ul & ~0) == ~0ul)
|
||||
ACCCHK_ASSERT((~0ul & ~0u) == ~0u)
|
||||
#if (SIZEOF_INT == 2)
|
||||
#if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150)
|
||||
#elif (SIZEOF_INT == 2)
|
||||
ACCCHK_ASSERT((~0l & ~0u) == 0xffffU)
|
||||
ACCCHK_ASSERT((~0ul & ~0u) == 0xffffU)
|
||||
#elif (SIZEOF_INT == 4)
|
||||
@@ -4205,7 +4264,7 @@ ACCLIB_EXTERN(int, acc_spawnve) (int mode, const char* fn, const char* const * a
|
||||
ACCCHK_ASSERT((((1u << 15) + 1) >> 15) == 1)
|
||||
ACCCHK_ASSERT((((1ul << 31) + 1) >> 31) == 1)
|
||||
#endif
|
||||
#if (ACC_CC_TURBOC && (__TURBOC__ < 0x0150))
|
||||
#if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150)
|
||||
#elif 1 && (ACC_CC_SUNPROC) && !defined(ACCCHK_CFG_PEDANTIC)
|
||||
#else
|
||||
ACCCHK_ASSERT((1 << (8*SIZEOF_INT-1)) < 0)
|
||||
@@ -4223,7 +4282,7 @@ ACCLIB_EXTERN(int, acc_spawnve) (int mode, const char* fn, const char* const * a
|
||||
ACCCHK_ASSERT(sizeof(acc_int16e_t) == sizeof(acc_uint16e_t))
|
||||
ACCCHK_ASSERT_IS_SIGNED_T(acc_int16e_t)
|
||||
ACCCHK_ASSERT_IS_UNSIGNED_T(acc_uint16e_t)
|
||||
#if (ACC_CC_TURBOC && (__TURBOC__ < 0x0150))
|
||||
#if defined(__MSDOS__) && defined(__TURBOC__) && (__TURBOC__ < 0x0150)
|
||||
#else
|
||||
ACCCHK_ASSERT(((acc_uint16e_t)(~(acc_uint16e_t)0ul) >> 15) == 1)
|
||||
#endif
|
||||
@@ -4773,7 +4832,7 @@ ACCLIB_PUBLIC(acc_hvoid_p, acc_hmemcpy) (acc_hvoid_p dest, const acc_hvoid_p src
|
||||
#if (ACC_HAVE_MM_HUGE_PTR) || !defined(HAVE_MEMCPY)
|
||||
acc_hbyte_p p1 = (acc_hbyte_p) dest;
|
||||
const acc_hbyte_p p2 = (const acc_hbyte_p) src;
|
||||
if (len <= 0 || p1 == p2)
|
||||
if (!(len > 0) || p1 == p2)
|
||||
return dest;
|
||||
do
|
||||
*p1++ = *p2++;
|
||||
@@ -4788,7 +4847,7 @@ ACCLIB_PUBLIC(acc_hvoid_p, acc_hmemmove) (acc_hvoid_p dest, const acc_hvoid_p sr
|
||||
#if (ACC_HAVE_MM_HUGE_PTR) || !defined(HAVE_MEMMOVE)
|
||||
acc_hbyte_p p1 = (acc_hbyte_p) dest;
|
||||
const acc_hbyte_p p2 = (const acc_hbyte_p) src;
|
||||
if (len <= 0 || p1 == p2)
|
||||
if (!(len > 0) || p1 == p2)
|
||||
return dest;
|
||||
if (p1 < p2)
|
||||
{
|
||||
@@ -5125,7 +5184,7 @@ ACC_EXTERN_C int __far __pascal GlobalUnlock(const void __near*);
|
||||
ACCLIB_PUBLIC(acc_hvoid_p, acc_halloc) (acc_hsize_t size)
|
||||
{
|
||||
acc_hvoid_p p = 0;
|
||||
if (size <= 0)
|
||||
if (!(size > 0))
|
||||
return p;
|
||||
#if 0 && defined(__palmos__)
|
||||
p = MemPtrNew(size);
|
||||
@@ -5405,7 +5464,7 @@ static int acc_pclock_read_clock(acc_pclock_handle_p h, acc_pclock_p c)
|
||||
ticks = clock();
|
||||
secs = (double)ticks / (CLOCKS_PER_SEC);
|
||||
nsecs = (acc_uint64l_t) (secs * 1000000000.0);
|
||||
c->tv_sec = nsecs / 1000000000ul;
|
||||
c->tv_sec = (acc_int64l_t) (nsecs / 1000000000ul);
|
||||
c->tv_nsec = (acc_uint32l_t) (nsecs % 1000000000ul);
|
||||
#else
|
||||
ticks = clock();
|
||||
@@ -5463,7 +5522,7 @@ static int acc_pclock_read_getprocesstimes(acc_pclock_handle_p h, acc_pclock_p c
|
||||
h->ticks_base = ticks;
|
||||
else
|
||||
ticks -= h->ticks_base;
|
||||
c->tv_sec = ticks / 10000000ul;
|
||||
c->tv_sec = (acc_int64l_t) (ticks / 10000000ul);
|
||||
c->tv_nsec = (acc_uint32l_t)(ticks % 10000000ul) * 100u;
|
||||
ACC_UNUSED(h); return 0;
|
||||
}
|
||||
@@ -5537,7 +5596,7 @@ static int acc_pclock_read_getthreadtimes(acc_pclock_handle_p h, acc_pclock_p c)
|
||||
h->ticks_base = ticks;
|
||||
else
|
||||
ticks -= h->ticks_base;
|
||||
c->tv_sec = ticks / 10000000ul;
|
||||
c->tv_sec = (acc_int64l_t) (ticks / 10000000ul);
|
||||
c->tv_nsec = (acc_uint32l_t)(ticks % 10000000ul) * 100;
|
||||
ACC_UNUSED(h); return 0;
|
||||
}
|
||||
@@ -5819,7 +5878,7 @@ ACCLIB_PUBLIC(int, acc_uclock_close) (acc_uclock_handle_p h)
|
||||
ACCLIB_PUBLIC(void, acc_uclock_read) (acc_uclock_handle_p h, acc_uclock_p c)
|
||||
{
|
||||
#if (__ACCLIB_UCLOCK_USE_RDTSC)
|
||||
acc_tsc_read((acc_uint32e_t*) &c->tsc);
|
||||
acc_tsc_read((acc_uint32e_t*) (void*) &c->tsc);
|
||||
#endif
|
||||
#if (__ACCLIB_UCLOCK_USE_PERFCTR)
|
||||
if (h->pch.h) {
|
||||
@@ -5999,7 +6058,7 @@ ACCLIB_PUBLIC(acclib_handle_t, acc_get_osfhandle) (int fd)
|
||||
}
|
||||
ACCLIB_PUBLIC(int, acc_set_binmode) (int fd, int binary)
|
||||
{
|
||||
#if (ACC_OS_TOS && defined(__MINT__))
|
||||
#if (ACC_ARCH_M68K && ACC_OS_TOS && defined(__MINT__))
|
||||
FILE* fp; int old_binary;
|
||||
if (fd == STDIN_FILENO) fp = stdin;
|
||||
else if (fd == STDOUT_FILENO) fp = stdout;
|
||||
@@ -6008,7 +6067,7 @@ ACCLIB_PUBLIC(int, acc_set_binmode) (int fd, int binary)
|
||||
old_binary = fp->__mode.__binary;
|
||||
__set_binmode(fp, binary ? 1 : 0);
|
||||
return old_binary ? 1 : 0;
|
||||
#elif (ACC_OS_TOS)
|
||||
#elif (ACC_ARCH_M68K && ACC_OS_TOS)
|
||||
ACC_UNUSED(fd); ACC_UNUSED(binary);
|
||||
return -1;
|
||||
#elif (ACC_OS_DOS16 && (ACC_CC_AZTECC || ACC_CC_PACIFICC))
|
||||
@@ -6092,11 +6151,18 @@ ACCLIB_PUBLIC(int, acc_isatty) (int fd)
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#if defined(HAVE_ISATTY)
|
||||
return (isatty(fd)) ? 1 : 0;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
ACCLIB_PUBLIC(int, acc_mkdir) (const char* name, unsigned mode)
|
||||
{
|
||||
#if (ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
|
||||
#if !defined(HAVE_MKDIR)
|
||||
ACC_UNUSED(name); ACC_UNUSED(mode);
|
||||
return -1;
|
||||
#elif (ACC_ARCH_M68K && ACC_OS_TOS && (ACC_CC_PUREC || ACC_CC_TURBOC))
|
||||
ACC_UNUSED(mode);
|
||||
return Dcreate(name);
|
||||
#elif (ACC_OS_DOS32 && ACC_CC_GNUC) && defined(__DJGPP__)
|
||||
@@ -6114,6 +6180,17 @@ ACCLIB_PUBLIC(int, acc_mkdir) (const char* name, unsigned mode)
|
||||
return mkdir(name, mode);
|
||||
#endif
|
||||
}
|
||||
ACCLIB_PUBLIC(int, acc_rmdir) (const char* name)
|
||||
{
|
||||
#if !defined(HAVE_RMDIR)
|
||||
ACC_UNUSED(name);
|
||||
return -1;
|
||||
#elif ((ACC_OS_DOS16 || ACC_OS_DOS32) && (ACC_CC_HIGHC || ACC_CC_PACIFICC))
|
||||
return rmdir((char *) name);
|
||||
#else
|
||||
return rmdir(name);
|
||||
#endif
|
||||
}
|
||||
ACCLIB_PUBLIC(acc_int32l_t, acc_muldiv32) (acc_int32l_t a, acc_int32l_t b, acc_int32l_t x)
|
||||
{
|
||||
acc_int32l_t r = 0;
|
||||
|
||||
+463
-58
@@ -158,7 +158,9 @@ PackArmPe::PackArmPe(InputFile *f) : super(f)
|
||||
kernel32ordinal = false;
|
||||
tlsindex = 0;
|
||||
big_relocs = 0;
|
||||
sorelocs = 0;
|
||||
soxrelocs = 0;
|
||||
use_thumb_stub = false;
|
||||
}
|
||||
|
||||
|
||||
@@ -178,8 +180,19 @@ PackArmPe::~PackArmPe()
|
||||
|
||||
const int *PackArmPe::getCompressionMethods(int method, int level) const
|
||||
{
|
||||
static const int m_nrv2e[] = { M_NRV2E_8, -1 };
|
||||
UNUSED(method); UNUSED(level);
|
||||
static const int m_nrv2b[] = { M_NRV2B_8, M_NRV2E_8, -1 };
|
||||
static const int m_nrv2e[] = { M_NRV2E_8, M_NRV2B_8, -1 };
|
||||
static const int m_nrv2e_v4[] = { M_NRV2E_8, -1 };
|
||||
UNUSED(level);
|
||||
|
||||
// FIXME this when we have v4 mode nrv2b
|
||||
if (!use_thumb_stub)
|
||||
return m_nrv2e_v4;
|
||||
|
||||
if (M_IS_NRV2B(method))
|
||||
return m_nrv2b;
|
||||
if (M_IS_NRV2E(method))
|
||||
return m_nrv2e;
|
||||
return m_nrv2e;
|
||||
}
|
||||
|
||||
@@ -341,7 +354,7 @@ void Interval::dump() const
|
||||
/*************************************************************************
|
||||
// relocation handling
|
||||
**************************************************************************/
|
||||
#if 0
|
||||
|
||||
class Reloc
|
||||
{
|
||||
upx_byte *start;
|
||||
@@ -506,7 +519,7 @@ void PackArmPe::processRelocs() // pass1
|
||||
delete [] fix[3];
|
||||
info("Relocations: original size: %u bytes, preprocessed size: %u bytes",(unsigned) IDSIZE(PEDIR_RELOC),sorelocs);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// import handling
|
||||
@@ -565,7 +578,6 @@ unsigned PackArmPe::processImports() // pass 1
|
||||
LE32 *lookupt;
|
||||
unsigned npos;
|
||||
bool isk32;
|
||||
unsigned _; // padding to 32
|
||||
|
||||
static int __acc_cdecl_qsort compare(const void *p1, const void *p2)
|
||||
{
|
||||
@@ -581,8 +593,7 @@ unsigned PackArmPe::processImports() // pass 1
|
||||
if (!u2->shname) return -1;
|
||||
return strlen(u1->shname) - strlen(u2->shname);
|
||||
}
|
||||
}
|
||||
__attribute_packed;
|
||||
};
|
||||
|
||||
// +1 for dllnum=0
|
||||
Array(struct udll, dlls, dllnum+1);
|
||||
@@ -611,7 +622,6 @@ unsigned PackArmPe::processImports() // pass 1
|
||||
importbyordinal = true;
|
||||
soimport += 2; // ordinal num: 2 bytes
|
||||
dlls[ic].ordinal = *tarr & 0xffff;
|
||||
|
||||
//if (dlls[ic].isk32)
|
||||
// kernel32ordinal = true,k32o++;
|
||||
}
|
||||
@@ -658,8 +668,8 @@ unsigned PackArmPe::processImports() // pass 1
|
||||
strcpy(dllnames,kernel32dll);
|
||||
im->dllname = k32namepos;
|
||||
im->iat = ptr_diff(ordinals,oimpdlls);
|
||||
*ordinals++ = ptr_diff(importednames,oimpdlls);
|
||||
*ordinals++ = ptr_diff(importednames,oimpdlls) + 14;
|
||||
*ordinals++ = ptr_diff(importednames,oimpdlls); // LoadLibraryW
|
||||
*ordinals++ = ptr_diff(importednames,oimpdlls) + 14; // GetProcAddressA
|
||||
dllnames += sizeof(kernel32dll);
|
||||
importednames += sizeof(llgpa);
|
||||
|
||||
@@ -702,6 +712,7 @@ unsigned PackArmPe::processImports() // pass 1
|
||||
|
||||
Interval names(ibuf),iats(ibuf),lookups(ibuf);
|
||||
// create the preprocessed data
|
||||
//ordinals -= k32o;
|
||||
upx_byte *ppi = oimport; // preprocessed imports
|
||||
for (ic = 0; ic < dllnum; ic++)
|
||||
{
|
||||
@@ -801,7 +812,7 @@ unsigned PackArmPe::processImports() // pass 1
|
||||
/*************************************************************************
|
||||
// export handling
|
||||
**************************************************************************/
|
||||
#if 0
|
||||
|
||||
class Export
|
||||
{
|
||||
struct export_dir_t
|
||||
@@ -1008,6 +1019,9 @@ void PackArmPe::processTls(Interval *iv) // pass 1
|
||||
if ((sotls = ALIGN_UP(IDSIZE(PEDIR_TLS),4)) == 0)
|
||||
return;
|
||||
|
||||
// never should happen on wince
|
||||
throwCantPack("Static TLS entries found. Send a report please.");
|
||||
|
||||
const tls * const tlsp = (const tls*) (ibuf + IDADDR(PEDIR_TLS));
|
||||
// note: TLS callbacks are not implemented in Windows 95/98/ME
|
||||
if (tlsp->callbacks)
|
||||
@@ -1075,7 +1089,7 @@ void PackArmPe::processTls(Reloc *rel,const Interval *iv,unsigned newaddr) // pa
|
||||
tlsp->dataend = newaddr + sotls + ih.imagebase;
|
||||
tlsp->callbacks = 0; // note: TLS callbacks are not implemented in Windows 95/98/ME
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// resource handling
|
||||
@@ -1529,8 +1543,9 @@ unsigned PackArmPe::stripDebug(unsigned overlaystart)
|
||||
|
||||
bool PackArmPe::canPack()
|
||||
{
|
||||
if (!readFileHeader() || ih.cpu != 0x1c0)
|
||||
if (!readFileHeader() || (ih.cpu != 0x1c0 && ih.cpu != 0x1c2))
|
||||
return false;
|
||||
use_thumb_stub |= ih.cpu == 0x1c2 || (ih.entry & 1) == 1;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1540,10 +1555,14 @@ int PackArmPe::buildLoader(const Filter *ft)
|
||||
UNUSED(ft);
|
||||
// prepare loader
|
||||
initLoader(nrv_loader, sizeof(nrv_loader), -1, 2);
|
||||
addLoader("ARMWPE00,ARMWPE99,"
|
||||
"IDENTSTR,UPX1HEAD",
|
||||
NULL
|
||||
);
|
||||
|
||||
char stubname[20];
|
||||
strcpy(stubname, "ARMPE");
|
||||
strcat(stubname, use_thumb_stub ? "T" : "A");
|
||||
strcat(stubname, isdll ? "D" : "X");
|
||||
strcat(stubname, ph.method == M_NRV2E_8 ? "E" : "B");
|
||||
|
||||
addLoader(stubname, "IDENTSTR,UPX1HEAD", NULL);
|
||||
return getLoaderSize();
|
||||
}
|
||||
|
||||
@@ -1562,37 +1581,31 @@ void PackArmPe::pack(OutputFile *fo)
|
||||
// check the PE header
|
||||
// FIXME: add more checks
|
||||
if (!opt->force && (
|
||||
ih.opthdrsize != 0xE0
|
||||
|| (ih.flags & EXECUTABLE) == 0
|
||||
|| ih.subsystem != 9
|
||||
|| (ih.entry == 0 && !isdll)
|
||||
|| ih.ddirsentries != 16
|
||||
/*|| IDSIZE(PEDIR_EXCEPTION*/) // is this used on i386?
|
||||
(ih.cpu != 0x1c0 && ih.cpu != 0x1c2)
|
||||
|| (ih.opthdrsize != 0xe0)
|
||||
|| ((ih.flags & EXECUTABLE) == 0)
|
||||
|| (ih.subsystem != 9)
|
||||
|| (ih.entry == 0 /*&& !isdll*/)
|
||||
|| (ih.ddirsentries != 16)
|
||||
// || IDSIZE(PEDIR_EXCEPTION) // is this used on arm?
|
||||
// || IDSIZE(PEDIR_COPYRIGHT)
|
||||
)
|
||||
))
|
||||
throwCantPack("unexpected value in PE header (try --force)");
|
||||
|
||||
if (IDSIZE(PEDIR_SEC))
|
||||
throwCantPack("compressing certificate info is not supported");
|
||||
IDSIZE(PEDIR_SEC) = IDADDR(PEDIR_SEC) = 0;
|
||||
// throwCantPack("compressing certificate info is not supported");
|
||||
|
||||
if (IDSIZE(PEDIR_COMRT))
|
||||
throwCantPack(".NET files (win32/net) are not yet supported");
|
||||
#if 1
|
||||
if (IDSIZE(PEDIR_EXPORT))
|
||||
IDSIZE(PEDIR_EXPORT) = IDADDR(PEDIR_EXPORT) = 0;
|
||||
#else
|
||||
if (IDSIZE(PEDIR_EXPORT))
|
||||
throwCantPack("exports not yet supported");
|
||||
#endif
|
||||
if (IDSIZE(PEDIR_RELOC))
|
||||
throwCantPack("relocations not yet supported");
|
||||
|
||||
if (isdll)
|
||||
opt->win32_pe.strip_relocs = false;
|
||||
else if (opt->win32_pe.strip_relocs < 0)
|
||||
opt->win32_pe.strip_relocs = (ih.imagebase >= 0x400000);
|
||||
opt->win32_pe.strip_relocs = (ih.imagebase >= 0x10000);
|
||||
if (opt->win32_pe.strip_relocs)
|
||||
if (ih.imagebase < 0x400000)
|
||||
throwCantPack("--strip-relocs is not allowed when imagebase < 0x400000");
|
||||
if (ih.imagebase < 0x10000)
|
||||
throwCantPack("--strip-relocs is not allowed when imagebase < 0x10000");
|
||||
else
|
||||
ih.flags |= RELOCS_STRIPPED;
|
||||
|
||||
@@ -1671,13 +1684,13 @@ void PackArmPe::pack(OutputFile *fo)
|
||||
|
||||
Resource res;
|
||||
Interval tlsiv(ibuf);
|
||||
//Export xport((char*)(unsigned char*)ibuf);
|
||||
Export xport((char*)(unsigned char*)ibuf);
|
||||
|
||||
const unsigned dllstrings = processImports();
|
||||
//processTls(&tlsiv); // call before processRelocs!!
|
||||
processTls(&tlsiv); // call before processRelocs!!
|
||||
processResources(&res);
|
||||
//processExports(&xport);
|
||||
//processRelocs();
|
||||
processExports(&xport);
|
||||
processRelocs();
|
||||
|
||||
//OutputFile::dump("x1", ibuf, usize);
|
||||
|
||||
@@ -1791,19 +1804,25 @@ void PackArmPe::pack(OutputFile *fo)
|
||||
|
||||
const unsigned ncsection = (s1addr + s1size + oam1) &~ oam1;
|
||||
const unsigned upxsection = s1addr + ic + clen;
|
||||
const unsigned myimport = ncsection + soresources - rvamin;
|
||||
|
||||
// FIXME
|
||||
const unsigned assumed_soxrelocs = isdll ? 0x18 : 0;
|
||||
const unsigned myimport = ncsection + assumed_soxrelocs + soresources - rvamin;
|
||||
|
||||
const int src0_offset = find(loader, lsize, "SRC0", 4);
|
||||
|
||||
// patch loader
|
||||
patch_le32(loader, codesize, "DSTL", ph.u_len);
|
||||
patch_le32(loader, codesize, "SRCL", ph.c_len);
|
||||
|
||||
patch_le32(loader, codesize, "BREL", crelocs + rvamin + ih.imagebase);
|
||||
patch_le32(loader, codesize, "ENTR", ih.entry + ih.imagebase);
|
||||
patch_le32(loader, codesize, "LOAD", ih.imagebase + rvamin + myimport + get_le32(oimpdlls + 16));
|
||||
patch_le32(loader, codesize, "GETP", ih.imagebase + rvamin + myimport + get_le32(oimpdlls + 16) + 4);
|
||||
patch_le32(loader, codesize, "ONAM", ih.imagebase + myimport + rvamin);
|
||||
patch_le32(loader, codesize, "BIMP", ih.imagebase + rvamin + cimports);
|
||||
patch_le32(loader, codesize, "DSTL", ph.u_len);
|
||||
patch_le32(loader, codesize, "DST0", ih.imagebase + rvamin);
|
||||
patch_le32(loader, codesize, "SRC0", ih.imagebase + s1addr + ic);
|
||||
patch_le32(loader, codesize, "SRCL", ph.c_len);
|
||||
patch_le32(loader, codesize, "SRC0", ih.imagebase + s1addr + identsize - identsplit);
|
||||
|
||||
#if 0
|
||||
if (ih.entry)
|
||||
{
|
||||
@@ -1853,10 +1872,16 @@ void PackArmPe::pack(OutputFile *fo)
|
||||
const unsigned esi0 = s1addr + ic;
|
||||
patch_le32(loader,codesize,"EDI0", 0u - esi0 + rvamin);
|
||||
patch_le32(loader,codesize,"ESI0", esi0 + ih.imagebase);
|
||||
ic = getLoaderSection("PEMAIN01") + 2 + upxsection;
|
||||
#endif
|
||||
//Reloc rel(1024); // new relocations are put here
|
||||
//rel.add(ic,3);
|
||||
Reloc rel(1024); // new relocations are put here
|
||||
rel.add(upxsection + src0_offset, 3);
|
||||
rel.add(upxsection + src0_offset + 8, 3);
|
||||
rel.add(upxsection + src0_offset + 16, 3);
|
||||
rel.add(upxsection + src0_offset + 20, 3);
|
||||
rel.add(upxsection + src0_offset + 24, 3);
|
||||
rel.add(upxsection + src0_offset + 28, 3);
|
||||
rel.add(upxsection + src0_offset + 32, 3);
|
||||
rel.add(upxsection + src0_offset + 36, 3);
|
||||
|
||||
// new PE header
|
||||
memcpy(&oh,&ih,sizeof(oh));
|
||||
@@ -1878,7 +1903,7 @@ void PackArmPe::pack(OutputFile *fo)
|
||||
// tls is put into section 1
|
||||
|
||||
ic = s1addr + s1size - sotls;
|
||||
//processTls(&rel,&tlsiv,ic);
|
||||
processTls(&rel,&tlsiv,ic);
|
||||
ODADDR(PEDIR_TLS) = sotls ? ic : 0;
|
||||
ODSIZE(PEDIR_TLS) = sotls ? 0x18 : 0;
|
||||
ic += sotls;
|
||||
@@ -1886,16 +1911,25 @@ void PackArmPe::pack(OutputFile *fo)
|
||||
// these are put into section 2
|
||||
|
||||
ic = ncsection;
|
||||
|
||||
// wince wants relocation data at the beginning of a section
|
||||
processRelocs(&rel);
|
||||
ODADDR(PEDIR_RELOC) = soxrelocs ? ic : 0;
|
||||
ODSIZE(PEDIR_RELOC) = soxrelocs;
|
||||
ic += soxrelocs;
|
||||
|
||||
if (soresources)
|
||||
processResources(&res,ic);
|
||||
ODADDR(PEDIR_RESOURCE) = soresources ? ic : 0;
|
||||
ODSIZE(PEDIR_RESOURCE) = soresources;
|
||||
ic += soresources;
|
||||
|
||||
processImports(ic);
|
||||
ODADDR(PEDIR_IMPORT) = ic;
|
||||
ODSIZE(PEDIR_IMPORT) = soimpdlls;
|
||||
ic += soimpdlls;
|
||||
//processExports(&xport,ic);
|
||||
|
||||
processExports(&xport,ic);
|
||||
ODADDR(PEDIR_EXPORT) = soexport ? ic : 0;
|
||||
ODSIZE(PEDIR_EXPORT) = soexport;
|
||||
if (!isdll && opt->win32_pe.compress_exports)
|
||||
@@ -1904,13 +1938,12 @@ void PackArmPe::pack(OutputFile *fo)
|
||||
ODSIZE(PEDIR_EXPORT) = IDSIZE(PEDIR_EXPORT);
|
||||
}
|
||||
ic += soexport;
|
||||
//processRelocs(&rel);
|
||||
ODADDR(PEDIR_RELOC) = soxrelocs ? ic : 0;
|
||||
ODSIZE(PEDIR_RELOC) = soxrelocs;
|
||||
ic += soxrelocs;
|
||||
|
||||
if (isdll && soxrelocs != assumed_soxrelocs)
|
||||
throwInternalError("FIXME: soxrelocs != assumed_soxrelocs");
|
||||
|
||||
// this is computed here, because soxrelocs changes some lines above
|
||||
const unsigned ncsize = soresources + soimpdlls + soexport + soxrelocs;
|
||||
const unsigned ncsize = soxrelocs + soresources + soimpdlls + soexport;
|
||||
ic = oh.filealign - 1;
|
||||
|
||||
// this one is tricky: it seems windoze touches 4 bytes after
|
||||
@@ -1986,15 +2019,17 @@ void PackArmPe::pack(OutputFile *fo)
|
||||
fo->write(obuf,clen);
|
||||
infoWriting("compressed data", clen);
|
||||
fo->write(loader,codesize);
|
||||
if (opt->debug.dump_stub_loader)
|
||||
OutputFile::dump(opt->debug.dump_stub_loader, loader, codesize);
|
||||
if ((ic = fo->getBytesWritten() & 3) != 0)
|
||||
fo->write(ibuf,4 - ic);
|
||||
fo->write(otls,sotls);
|
||||
if ((ic = fo->getBytesWritten() & (oh.filealign-1)) != 0)
|
||||
fo->write(ibuf,oh.filealign - ic);
|
||||
fo->write(oxrelocs,soxrelocs);
|
||||
fo->write(oresources,soresources);
|
||||
fo->write(oimpdlls,soimpdlls);
|
||||
fo->write(oexport,soexport);
|
||||
fo->write(oxrelocs,soxrelocs);
|
||||
|
||||
if ((ic = fo->getBytesWritten() & (oh.filealign-1)) != 0)
|
||||
fo->write(ibuf,oh.filealign - ic);
|
||||
@@ -2030,13 +2065,383 @@ void PackArmPe::pack(OutputFile *fo)
|
||||
|
||||
int PackArmPe::canUnpack()
|
||||
{
|
||||
if (!readFileHeader() || (ih.cpu != 0x1c0 && ih.cpu != 0x1c2))
|
||||
return false;
|
||||
|
||||
unsigned objs = ih.objects;
|
||||
isection = new pe_section_t[objs];
|
||||
fi->seek(pe_offset+sizeof(ih),SEEK_SET);
|
||||
fi->readx(isection,sizeof(pe_section_t)*objs);
|
||||
if (ih.objects < 3)
|
||||
return -1;
|
||||
bool is_packed = (ih.objects == 3 &&
|
||||
(IDSIZE(15) || ih.entry > isection[1].vaddr));
|
||||
bool found_ph = false;
|
||||
if (memcmp(isection[0].name,"UPX",3) == 0)
|
||||
{
|
||||
// current version
|
||||
fi->seek(isection[1].rawdataptr - 64, SEEK_SET);
|
||||
found_ph = readPackHeader(1024);
|
||||
if (!found_ph)
|
||||
{
|
||||
// old versions
|
||||
fi->seek(isection[2].rawdataptr, SEEK_SET);
|
||||
found_ph = readPackHeader(1024);
|
||||
}
|
||||
}
|
||||
if (is_packed && found_ph)
|
||||
return true;
|
||||
if (!is_packed && !found_ph)
|
||||
return -1;
|
||||
if (is_packed && ih.entry < isection[2].vaddr)
|
||||
{
|
||||
unsigned char buf[256];
|
||||
bool x = false;
|
||||
|
||||
memset(buf, 0, sizeof(buf));
|
||||
try {
|
||||
fi->seek(ih.entry - isection[1].vaddr + isection[1].rawdataptr, SEEK_SET);
|
||||
fi->read(buf, sizeof(buf));
|
||||
|
||||
// FIXME this is for x86
|
||||
static const unsigned char magic[] = "\x8b\x1e\x83\xee\xfc\x11\xdb";
|
||||
// mov ebx, [esi]; sub esi, -4; adc ebx,ebx
|
||||
|
||||
int offset = find(buf, sizeof(buf), magic, 7);
|
||||
if (offset >= 0 && find(buf + offset + 1, sizeof(buf) - offset - 1, magic, 7) >= 0)
|
||||
x = true;
|
||||
} catch (...) {
|
||||
//x = true;
|
||||
}
|
||||
if (x)
|
||||
throwCantUnpack("file is modified/hacked/protected; take care!!!");
|
||||
else
|
||||
throwCantUnpack("file is possibly modified/hacked/protected; take care!");
|
||||
return false; // not reached
|
||||
}
|
||||
|
||||
// FIXME: what should we say here ?
|
||||
//throwCantUnpack("file is possibly modified/hacked/protected; take care!");
|
||||
return false;
|
||||
}
|
||||
|
||||
void PackArmPe::unpack(OutputFile *)
|
||||
|
||||
void PackArmPe::rebuildImports(upx_byte *& extrainfo)
|
||||
{
|
||||
if (ODADDR(PEDIR_IMPORT) == 0)
|
||||
return;
|
||||
|
||||
// const upx_byte * const idata = obuf + get_le32(extrainfo);
|
||||
OPTR_C(const upx_byte, idata, obuf + get_le32(extrainfo));
|
||||
const unsigned inamespos = get_le32(extrainfo + 4);
|
||||
extrainfo += 8;
|
||||
|
||||
unsigned sdllnames = 0;
|
||||
|
||||
// const upx_byte *import = ibuf + IDADDR(PEDIR_IMPORT) - isection[2].vaddr;
|
||||
// const upx_byte *p;
|
||||
IPTR_I(const upx_byte, import, ibuf + IDADDR(PEDIR_IMPORT) - isection[2].vaddr);
|
||||
OPTR(const upx_byte, p);
|
||||
|
||||
for (p = idata; get_le32(p) != 0; ++p)
|
||||
{
|
||||
const upx_byte *dname = get_le32(p) + import;
|
||||
const unsigned dlen = strlen(dname);
|
||||
ICHECK(dname, dlen + 1);
|
||||
|
||||
sdllnames += dlen + 1;
|
||||
for (p += 8; *p;)
|
||||
if (*p == 1)
|
||||
p += strlen(++p) + 1;
|
||||
else if (*p == 0xff)
|
||||
p += 3; // ordinal
|
||||
else
|
||||
p += 5;
|
||||
}
|
||||
sdllnames = ALIGN_UP(sdllnames,2);
|
||||
|
||||
upx_byte * const Obuf = obuf - rvamin;
|
||||
import_desc * const im0 = (import_desc*) (Obuf + ODADDR(PEDIR_IMPORT));
|
||||
import_desc *im = im0;
|
||||
upx_byte *dllnames = Obuf + inamespos;
|
||||
upx_byte *importednames = dllnames + sdllnames;
|
||||
|
||||
for (p = idata; get_le32(p) != 0; ++p)
|
||||
{
|
||||
// restore the name of the dll
|
||||
const upx_byte *dname = get_le32(p) + import;
|
||||
const unsigned dlen = strlen(dname);
|
||||
ICHECK(dname, dlen + 1);
|
||||
|
||||
const unsigned iatoffs = get_le32(p + 4) + rvamin;
|
||||
if (inamespos)
|
||||
{
|
||||
// now I rebuild the dll names
|
||||
OCHECK(dllnames, dlen + 1);
|
||||
strcpy(dllnames, dname);
|
||||
im->dllname = ptr_diff(dllnames,Obuf);
|
||||
//;;;printf("\ndll: %s:",dllnames);
|
||||
dllnames += dlen + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
OCHECK(Obuf + im->dllname, dlen + 1);
|
||||
strcpy(Obuf + im->dllname, dname);
|
||||
}
|
||||
im->oft = im->iat = iatoffs;
|
||||
|
||||
// LE32 *newiat = (LE32 *) (Obuf + iatoffs);
|
||||
OPTR_I(LE32, newiat, (LE32 *) (Obuf + iatoffs));
|
||||
|
||||
// restore the imported names+ordinals
|
||||
for (p += 8; *p; ++newiat)
|
||||
if (*p == 1)
|
||||
{
|
||||
const unsigned ilen = strlen(++p) + 1;
|
||||
if (inamespos)
|
||||
{
|
||||
if (ptr_diff(importednames,oimpdlls) & 1)
|
||||
importednames -= 1;
|
||||
omemcpy(importednames + 2, p, ilen);
|
||||
//;;;printf(" %s",importednames+2);
|
||||
*newiat = ptr_diff(importednames, Obuf);
|
||||
importednames += 2 + ilen;
|
||||
}
|
||||
else
|
||||
{
|
||||
OCHECK(Obuf + *newiat + 2, ilen + 1);
|
||||
strcpy(Obuf + *newiat + 2, p);
|
||||
}
|
||||
p += ilen;
|
||||
}
|
||||
else if (*p == 0xff)
|
||||
{
|
||||
*newiat = get_le16(p + 1) + 0x80000000;
|
||||
//;;;printf(" %x",(unsigned)*newiat);
|
||||
p += 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
*newiat = get_le32(get_le32(p + 1) + import);
|
||||
assert(*newiat & 0x80000000);
|
||||
p += 5;
|
||||
}
|
||||
*newiat = 0;
|
||||
im++;
|
||||
}
|
||||
//memset(idata,0,p - idata);
|
||||
}
|
||||
|
||||
void PackArmPe::rebuildRelocs(upx_byte *& extrainfo)
|
||||
{
|
||||
if (!ODADDR(PEDIR_RELOC) || !ODSIZE(PEDIR_RELOC) || (oh.flags & RELOCS_STRIPPED))
|
||||
return;
|
||||
|
||||
if (ODSIZE(PEDIR_RELOC) == 8) // some tricky dlls use this
|
||||
{
|
||||
omemcpy(obuf + ODADDR(PEDIR_RELOC) - rvamin, "\x0\x0\x0\x0\x8\x0\x0\x0", 8);
|
||||
return;
|
||||
}
|
||||
|
||||
upx_byte *rdata = obuf + get_le32(extrainfo);
|
||||
const upx_byte big = extrainfo[4];
|
||||
extrainfo += 5;
|
||||
|
||||
// upx_byte *p = rdata;
|
||||
OPTR_I(upx_byte, p, rdata);
|
||||
MemBuffer wrkmem;
|
||||
unsigned relocn = unoptimizeReloc32(&rdata,obuf,&wrkmem,1);
|
||||
unsigned r16 = 0;
|
||||
if (big & 6) // 16 bit relocations
|
||||
{
|
||||
const LE32 *q = (LE32*) rdata;
|
||||
while (*q++)
|
||||
r16++;
|
||||
if ((big & 6) == 6)
|
||||
while (*++q)
|
||||
r16++;
|
||||
}
|
||||
Reloc rel(relocn + r16);
|
||||
|
||||
if (big & 6)
|
||||
{
|
||||
LE32 *q = (LE32*) rdata;
|
||||
while (*q)
|
||||
rel.add(*q++ + rvamin,(big & 4) ? 2 : 1);
|
||||
if ((big & 6) == 6)
|
||||
while (*++q)
|
||||
rel.add(*q + rvamin,1);
|
||||
rdata = (upx_byte*) q;
|
||||
}
|
||||
|
||||
//memset(p,0,rdata - p);
|
||||
|
||||
for (unsigned ic = 0; ic < relocn; ic++)
|
||||
{
|
||||
p = obuf + get_le32(wrkmem + 4 * ic);
|
||||
set_le32(p, get_le32((unsigned char *)p) + oh.imagebase + rvamin);
|
||||
rel.add(rvamin + get_le32(wrkmem + 4 * ic),3);
|
||||
}
|
||||
rel.finish (oxrelocs,soxrelocs);
|
||||
|
||||
if (opt->win32_pe.strip_relocs && !isdll)
|
||||
{
|
||||
obuf.clear(ODADDR(PEDIR_RELOC) - rvamin, ODSIZE(PEDIR_RELOC));
|
||||
ODADDR(PEDIR_RELOC) = 0;
|
||||
soxrelocs = 0;
|
||||
// FIXME: try to remove the original relocation section somehow
|
||||
}
|
||||
else
|
||||
omemcpy(obuf + ODADDR(PEDIR_RELOC) - rvamin,oxrelocs,soxrelocs);
|
||||
delete [] oxrelocs; oxrelocs = NULL;
|
||||
wrkmem.dealloc();
|
||||
|
||||
ODSIZE(PEDIR_RELOC) = soxrelocs;
|
||||
}
|
||||
|
||||
void PackArmPe::rebuildExports()
|
||||
{
|
||||
if (ODSIZE(PEDIR_EXPORT) == 0 || ODADDR(PEDIR_EXPORT) == IDADDR(PEDIR_EXPORT))
|
||||
return; // nothing to do
|
||||
|
||||
opt->win32_pe.compress_exports = 0;
|
||||
Export xport((char*)(unsigned char*) ibuf - isection[2].vaddr);
|
||||
processExports(&xport);
|
||||
processExports(&xport,ODADDR(PEDIR_EXPORT));
|
||||
omemcpy(obuf + ODADDR(PEDIR_EXPORT) - rvamin,oexport,soexport);
|
||||
}
|
||||
|
||||
void PackArmPe::rebuildTls()
|
||||
{
|
||||
// this is an easy one : just do nothing ;-)
|
||||
}
|
||||
|
||||
void PackArmPe::rebuildResources(upx_byte *& extrainfo)
|
||||
{
|
||||
if (ODSIZE(PEDIR_RESOURCE) == 0)
|
||||
return;
|
||||
|
||||
icondir_count = get_le16(extrainfo);
|
||||
extrainfo += 2;
|
||||
|
||||
const unsigned vaddr = IDADDR(PEDIR_RESOURCE);
|
||||
const upx_byte *r = ibuf - isection[2].vaddr;
|
||||
Resource res(r + vaddr);
|
||||
while (res.next())
|
||||
if (res.offs() > vaddr)
|
||||
{
|
||||
unsigned origoffs = get_le32(r + res.offs() - 4);
|
||||
res.newoffs() = origoffs;
|
||||
omemcpy(obuf + origoffs - rvamin,r + res.offs(),res.size());
|
||||
if (icondir_count && res.itype() == RT_GROUP_ICON)
|
||||
{
|
||||
set_le16(obuf + origoffs - rvamin + 4,icondir_count);
|
||||
icondir_count = 0;
|
||||
}
|
||||
}
|
||||
upx_byte *p = res.build();
|
||||
// write back when the original is zeroed
|
||||
if (get_le32(obuf + ODADDR(PEDIR_RESOURCE) - rvamin + 12) == 0)
|
||||
omemcpy(obuf + ODADDR(PEDIR_RESOURCE) - rvamin,p,res.dirsize());
|
||||
delete [] p;
|
||||
}
|
||||
|
||||
void PackArmPe::unpack(OutputFile *fo)
|
||||
{
|
||||
//infoHeader("[Processing %s, format %s, %d sections]", fn_basename(fi->getName()), getName(), objs);
|
||||
|
||||
handleStub(fi,fo,pe_offset);
|
||||
|
||||
const unsigned overlay = file_size - ALIGN_UP(isection[2].rawdataptr + isection[2].size,ih.filealign);
|
||||
checkOverlay(overlay);
|
||||
|
||||
ibuf.alloc(ph.c_len);
|
||||
obuf.allocForUncompression(ph.u_len);
|
||||
fi->seek(isection[1].rawdataptr - 64 + ph.buf_offset + ph.getPackHeaderSize(),SEEK_SET);
|
||||
fi->readx(ibuf,ph.c_len);
|
||||
|
||||
// decompress
|
||||
decompress(ibuf,obuf);
|
||||
upx_byte *extrainfo = obuf + get_le32(obuf + ph.u_len - 4);
|
||||
//upx_byte * const eistart = extrainfo;
|
||||
|
||||
memcpy(&oh, extrainfo, sizeof (oh));
|
||||
extrainfo += sizeof (oh);
|
||||
unsigned objs = oh.objects;
|
||||
|
||||
Array(pe_section_t, osection, objs);
|
||||
memcpy(osection,extrainfo,sizeof(pe_section_t) * objs);
|
||||
rvamin = osection[0].vaddr;
|
||||
extrainfo += sizeof(pe_section_t) * objs;
|
||||
|
||||
// read the noncompressed section
|
||||
ibuf.dealloc();
|
||||
ibuf.alloc(isection[2].size);
|
||||
fi->seek(isection[2].rawdataptr,SEEK_SET);
|
||||
fi->readx(ibuf,isection[2].size);
|
||||
|
||||
// unfilter
|
||||
if (ph.filter)
|
||||
{
|
||||
Filter ft(ph.level);
|
||||
ft.init(ph.filter,oh.codebase - rvamin);
|
||||
ft.cto = (unsigned char) ph.filter_cto;
|
||||
ft.unfilter(obuf + oh.codebase - rvamin, oh.codesize);
|
||||
}
|
||||
|
||||
rebuildImports(extrainfo);
|
||||
rebuildRelocs(extrainfo);
|
||||
rebuildTls();
|
||||
rebuildExports();
|
||||
rebuildResources(extrainfo);
|
||||
|
||||
//FIXME: this does bad things if the relocation section got removed
|
||||
// during compression ...
|
||||
//memset(eistart,0,extrainfo - eistart + 4);
|
||||
|
||||
// fill the data directory
|
||||
ODADDR(PEDIR_DEBUG) = 0;
|
||||
ODSIZE(PEDIR_DEBUG) = 0;
|
||||
ODADDR(PEDIR_IAT) = 0;
|
||||
ODSIZE(PEDIR_IAT) = 0;
|
||||
ODADDR(PEDIR_BOUNDIM) = 0;
|
||||
ODSIZE(PEDIR_BOUNDIM) = 0;
|
||||
|
||||
// oh.headersize = osection[0].rawdataptr;
|
||||
// oh.headersize = ALIGN_UP(pe_offset + sizeof(oh) + sizeof(pe_section_t) * objs, oh.filealign);
|
||||
oh.headersize = rvamin;
|
||||
oh.chksum = 0;
|
||||
|
||||
// FIXME: ih.flags is checked here because of a bug in UPX 0.92
|
||||
if ((opt->win32_pe.strip_relocs && !isdll) || (ih.flags & RELOCS_STRIPPED))
|
||||
{
|
||||
oh.flags |= RELOCS_STRIPPED;
|
||||
ODADDR(PEDIR_RELOC) = 0;
|
||||
ODSIZE(PEDIR_RELOC) = 0;
|
||||
}
|
||||
|
||||
// write decompressed file
|
||||
if (fo)
|
||||
{
|
||||
ibuf.dealloc();
|
||||
ibuf.alloc(osection[0].rawdataptr);
|
||||
ibuf.clear();
|
||||
infoHeader("[Writing uncompressed file]");
|
||||
|
||||
// write loader + compressed file
|
||||
fo->write(&oh,sizeof(oh));
|
||||
fo->write(osection,objs * sizeof(pe_section_t));
|
||||
fo->write(ibuf,osection[0].rawdataptr - fo->getBytesWritten());
|
||||
for(unsigned ic = 0; ic < objs; ic++)
|
||||
if (osection[ic].rawdataptr)
|
||||
fo->write(obuf + osection[ic].vaddr - rvamin,ALIGN_UP(osection[ic].size,oh.filealign));
|
||||
copyOverlay(fo, overlay, &obuf);
|
||||
}
|
||||
ibuf.dealloc();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
vi:ts=4:et
|
||||
*/
|
||||
|
||||
|
||||
+4
-2
@@ -37,7 +37,7 @@ class PackArmPe_Export;
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// w32/pe
|
||||
// arm/pe
|
||||
**************************************************************************/
|
||||
|
||||
class PackArmPe : public Packer
|
||||
@@ -61,7 +61,7 @@ public:
|
||||
|
||||
// unpacker capabilities
|
||||
virtual bool canUnpackVersion(int version) const
|
||||
{ UNUSED(version); return false; }
|
||||
{ return version == 13; }
|
||||
|
||||
protected:
|
||||
virtual int readFileHeader();
|
||||
@@ -118,6 +118,8 @@ protected:
|
||||
unsigned crelocs; // rva of preprocessed fixups
|
||||
int big_relocs;
|
||||
|
||||
bool use_thumb_stub;
|
||||
|
||||
struct pe_header_t
|
||||
{
|
||||
// 0x0
|
||||
|
||||
+14
-8
@@ -587,12 +587,16 @@ PackLinuxElf32::generateElfHdr(
|
||||
|
||||
// Info for OS kernel to set the brk()
|
||||
if (brka) {
|
||||
#define PAGE_MASK (~0u<<12)
|
||||
// linux-2.6.14 binfmt_elf.c: SIGKILL if (0==.p_memsz) on a page boundary
|
||||
unsigned const brkb = brka | ((0==(~PAGE_MASK & brka)) ? 0x20 : 0);
|
||||
set_native32(&h2->phdr[1].p_type, PT_LOAD32); // be sure
|
||||
set_native32(&h2->phdr[1].p_offset, 0xfff&brka);
|
||||
set_native32(&h2->phdr[1].p_vaddr, brka);
|
||||
set_native32(&h2->phdr[1].p_paddr, brka);
|
||||
set_native32(&h2->phdr[1].p_offset, ~PAGE_MASK & brkb);
|
||||
set_native32(&h2->phdr[1].p_vaddr, brkb);
|
||||
set_native32(&h2->phdr[1].p_paddr, brkb);
|
||||
h2->phdr[1].p_filesz = 0;
|
||||
h2->phdr[1].p_memsz = 0;
|
||||
#undef PAGE_MASK
|
||||
}
|
||||
}
|
||||
|
||||
@@ -625,12 +629,16 @@ PackLinuxElf64::generateElfHdr(
|
||||
|
||||
// Info for OS kernel to set the brk()
|
||||
if (brka) {
|
||||
#define PAGE_MASK (~0ul<<12)
|
||||
// linux-2.6.14 binfmt_elf.c: SIGKILL if (0==.p_memsz) on a page boundary
|
||||
unsigned const brkb = brka | ((0==(~PAGE_MASK & brka)) ? 0x20 : 0);
|
||||
set_native32(&h2->phdr[1].p_type, PT_LOAD32); // be sure
|
||||
set_native64(&h2->phdr[1].p_offset, 0xfff&brka);
|
||||
set_native64(&h2->phdr[1].p_vaddr, brka);
|
||||
set_native64(&h2->phdr[1].p_paddr, brka);
|
||||
set_native64(&h2->phdr[1].p_offset, ~PAGE_MASK & brkb);
|
||||
set_native64(&h2->phdr[1].p_vaddr, brkb);
|
||||
set_native64(&h2->phdr[1].p_paddr, brkb);
|
||||
h2->phdr[1].p_filesz = 0;
|
||||
h2->phdr[1].p_memsz = 0;
|
||||
#undef PAGE_MASK
|
||||
}
|
||||
}
|
||||
|
||||
@@ -941,8 +949,6 @@ void PackLinuxElf64amd::pack3(OutputFile *fo, Filter &ft)
|
||||
fo->write(&zero, frag);
|
||||
len += frag;
|
||||
|
||||
#undef PAGE_MASK
|
||||
#undef PAGE_SIZE
|
||||
#define PAGE_MASK (~0u<<12)
|
||||
#define PAGE_SIZE (-PAGE_MASK)
|
||||
upx_byte *const p = const_cast<upx_byte *>(getLoader());
|
||||
|
||||
+32
-7
@@ -108,12 +108,22 @@ PackLinuxI386::generateElfHdr(
|
||||
|
||||
// Info for OS kernel to set the brk()
|
||||
if (brka) {
|
||||
#define PAGE_MASK (~0ul<<12)
|
||||
// linux-2.6.14 binfmt_elf.c: SIGKILL if (0==.p_memsz) on a page boundary
|
||||
unsigned const brkb = brka | ((0==(~PAGE_MASK & brka)) ? 0x20 : 0);
|
||||
h2->phdr[1].p_type = PT_LOAD; // be sure
|
||||
h2->phdr[1].p_offset = 0xfff&brka;
|
||||
h2->phdr[1].p_vaddr = brka;
|
||||
h2->phdr[1].p_paddr = brka;
|
||||
h2->phdr[1].p_offset = ~PAGE_MASK & brkb;
|
||||
h2->phdr[1].p_vaddr = brkb;
|
||||
h2->phdr[1].p_paddr = brkb;
|
||||
h2->phdr[1].p_filesz = 0;
|
||||
h2->phdr[1].p_memsz = 0;
|
||||
if (0==h2->phdr[1].p_flags) {
|
||||
h2->phdr[1].p_flags = Elf32_Phdr::PF_R|Elf32_Phdr::PF_W;
|
||||
}
|
||||
if (0==h2->phdr[1].p_align) {
|
||||
h2->phdr[1].p_align = 0x1000;
|
||||
}
|
||||
#undef PAGE_MASK
|
||||
}
|
||||
|
||||
if (ph.format==UPX_F_LINUX_i386 ) {
|
||||
@@ -128,7 +138,7 @@ PackLinuxI386::generateElfHdr(
|
||||
}
|
||||
else if (ph.format==UPX_F_LINUX_SH_i386) {
|
||||
assert(h2->ehdr.e_phnum==1);
|
||||
h2->ehdr.e_phnum = 2;
|
||||
h2->ehdr.e_phnum = 1;
|
||||
memset(&h2->linfo, 0, sizeof(h2->linfo));
|
||||
fo->write(h2, sizeof(*h2));
|
||||
}
|
||||
@@ -250,8 +260,12 @@ PackLinuxI386::buildLinuxLoader(
|
||||
unsigned fold_hdrlen = 0;
|
||||
if (0 < szfold) {
|
||||
cprElfHdr1 const *const hf = (cprElfHdr1 const *)fold;
|
||||
fold_hdrlen = umax(0x80, sizeof(hf->ehdr) +
|
||||
hf->ehdr.e_phentsize * hf->ehdr.e_phnum + sizeof(l_info) );
|
||||
fold_hdrlen = sizeof(hf->ehdr) + hf->ehdr.e_phentsize * hf->ehdr.e_phnum +
|
||||
sizeof(l_info);
|
||||
if (0 == get_le32(fold_hdrlen + fold)) {
|
||||
// inconsistent SIZEOF_HEADERS in *.lds (ld, binutils)
|
||||
fold_hdrlen = umax(0x80, fold_hdrlen);
|
||||
}
|
||||
h.sz_unc = (szfold < fold_hdrlen) ? 0 : (szfold - fold_hdrlen);
|
||||
h.b_method = (unsigned char) ph.method;
|
||||
h.b_ftid = (unsigned char) ph.filter;
|
||||
@@ -352,6 +366,9 @@ PackLinuxI386::buildLinuxLoader(
|
||||
addLoader("LEXEC017", NULL);
|
||||
}
|
||||
}
|
||||
else {
|
||||
addLoader("LEXEC017", NULL);
|
||||
}
|
||||
|
||||
addLoader("IDENTSTR", NULL);
|
||||
addLoader("LEXEC020", NULL);
|
||||
@@ -392,7 +409,14 @@ PackLinuxI386::buildLoader(Filter const *ft)
|
||||
|
||||
// filter
|
||||
optimizeFilter(&fold_ft, buf, sz_fold);
|
||||
bool success = fold_ft.filter(buf + sizeof(cprElfHdr2), sz_fold - sizeof(cprElfHdr2));
|
||||
|
||||
unsigned fold_hdrlen = sizeof(l_info) + sizeof(Elf32_Ehdr) +
|
||||
sizeof(Elf32_Phdr) * get_native32(&((Elf32_Ehdr const *)(void *)buf)->e_phnum);
|
||||
if (0 == get_le32(fold_hdrlen + buf)) {
|
||||
// inconsistent SIZEOF_HEADERS in *.lds (ld, binutils)
|
||||
fold_hdrlen = umax(0x80, fold_hdrlen);
|
||||
}
|
||||
bool success = fold_ft.filter(buf + fold_hdrlen, sz_fold - fold_hdrlen);
|
||||
(void)success;
|
||||
|
||||
return buildLinuxLoader(
|
||||
@@ -400,6 +424,7 @@ PackLinuxI386::buildLoader(Filter const *ft)
|
||||
buf, sz_fold, ft );
|
||||
}
|
||||
|
||||
// FIXME: getLoaderPrefixSize is unused?
|
||||
int PackLinuxI386::getLoaderPrefixSize() const
|
||||
{
|
||||
return 116;
|
||||
|
||||
+16
-1
@@ -59,6 +59,15 @@ PackLinuxI386sh::~PackLinuxI386sh()
|
||||
{
|
||||
}
|
||||
|
||||
static unsigned
|
||||
umax(unsigned a, unsigned b)
|
||||
{
|
||||
if (a <= b) {
|
||||
return b;
|
||||
}
|
||||
return a;
|
||||
}
|
||||
|
||||
int
|
||||
PackLinuxI386sh::buildLoader(Filter const *ft)
|
||||
{
|
||||
@@ -78,7 +87,13 @@ PackLinuxI386sh::buildLoader(Filter const *ft)
|
||||
|
||||
// filter
|
||||
optimizeFilter(&fold_ft, buf, sz_fold);
|
||||
bool success = fold_ft.filter(buf + sizeof(cprElfHdr2), sz_fold - sizeof(cprElfHdr2));
|
||||
unsigned fold_hdrlen = sizeof(l_info) + sizeof(Elf32_Ehdr) +
|
||||
sizeof(Elf32_Phdr) * get_native32(&((Elf32_Ehdr const *)(void *)buf)->e_phnum);
|
||||
if (0 == get_le32(fold_hdrlen + buf)) {
|
||||
// inconsistent SIZEOF_HEADERS in *.lds (ld, binutils)
|
||||
fold_hdrlen = umax(0x80, fold_hdrlen);
|
||||
}
|
||||
bool success = fold_ft.filter(buf + fold_hdrlen, sz_fold - fold_hdrlen);
|
||||
UNUSED(success);
|
||||
|
||||
return buildLinuxLoader(
|
||||
|
||||
+83
-18
@@ -180,26 +180,67 @@ PackMachPPC32::pack3(OutputFile *fo, Filter &ft) // append loader
|
||||
super::pack3(fo, ft);
|
||||
}
|
||||
|
||||
// Determine length of gap between PT_LOAD phdri[k] and closest PT_LOAD
|
||||
// which follows in the file (or end-of-file). Optimize for common case
|
||||
// where the PT_LOAD are adjacent ascending by .p_offset. Assume no overlap.
|
||||
|
||||
unsigned PackMachPPC32::find_SEGMENT_gap(
|
||||
unsigned const k
|
||||
)
|
||||
{
|
||||
if (Mach_segment_command::LC_SEGMENT!=msegcmd[k].cmd
|
||||
|| 0==msegcmd[k].filesize ) {
|
||||
return 0;
|
||||
}
|
||||
unsigned const hi = get_native32(&msegcmd[k].fileoff) +
|
||||
get_native32(&msegcmd[k].filesize);
|
||||
unsigned lo = ph.u_file_size;
|
||||
unsigned j = k;
|
||||
for (;;) { // circular search, optimize for adjacent ascending
|
||||
++j;
|
||||
if (n_segment==j) {
|
||||
j = 0;
|
||||
}
|
||||
if (k==j) {
|
||||
break;
|
||||
}
|
||||
if (Mach_segment_command::LC_SEGMENT==msegcmd[j].cmd
|
||||
&& 0!=msegcmd[j].filesize ) {
|
||||
unsigned const t = get_native32(&msegcmd[j].fileoff);
|
||||
if ((t - hi) < (lo - hi)) {
|
||||
lo = t;
|
||||
if (hi==lo) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return lo - hi;
|
||||
}
|
||||
|
||||
void
|
||||
PackMachPPC32::pack2(OutputFile *fo, Filter &ft) // append compressed body
|
||||
{
|
||||
Extent x;
|
||||
unsigned k;
|
||||
|
||||
ui_total_passes = n_segment;
|
||||
// count passes, set ptload vars
|
||||
ui_total_passes = 0;
|
||||
for (k = 0; k < n_segment; ++k) {
|
||||
if (Mach_segment_command::LC_SEGMENT==msegcmd[k].cmd
|
||||
&& 0!=msegcmd[k].filesize ) {
|
||||
ui_total_passes++;
|
||||
if (find_SEGMENT_gap(k)) {
|
||||
ui_total_passes++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// compress extents
|
||||
unsigned total_in = 0;
|
||||
unsigned total_out = 0;
|
||||
|
||||
ui_pass = -1; // Compressing Mach headers is invisible to UI.
|
||||
x.offset = 0;
|
||||
x.size = mhdri.sizeofcmds;
|
||||
{
|
||||
int const old_level = ph.level; ph.level = 10;
|
||||
packExtent(x, total_in, total_out, 0, fo);
|
||||
ph.level = old_level;
|
||||
}
|
||||
unsigned hdr_ulen = mhdri.sizeofcmds;
|
||||
|
||||
ui_pass = 0;
|
||||
ft.addvalue = 0;
|
||||
@@ -217,14 +258,18 @@ PackMachPPC32::pack2(OutputFile *fo, Filter &ft) // append compressed body
|
||||
}
|
||||
packExtent(x, total_in, total_out,
|
||||
((Mach_segment_command::VM_PROT_EXECUTE & msegcmd[k].initprot)
|
||||
? &ft : 0 ), fo );
|
||||
? &ft : 0 ), fo, hdr_ulen );
|
||||
hdr_ulen = 0;
|
||||
++nx;
|
||||
}
|
||||
if ((off_t)total_in < file_size) { // non-LC_SEGMENT stuff
|
||||
x.offset = total_in;
|
||||
x.size = file_size - total_in;
|
||||
for (k = 0; k < n_segment; ++k) {
|
||||
x.size = find_SEGMENT_gap(k);
|
||||
if (x.size) {
|
||||
x.offset = get_native32(&msegcmd[k].fileoff) +
|
||||
get_native32(&msegcmd[k].filesize);
|
||||
packExtent(x, total_in, total_out, 0, fo);
|
||||
}
|
||||
}
|
||||
|
||||
if ((off_t)total_in != file_size)
|
||||
throwEOFException();
|
||||
@@ -296,6 +341,21 @@ PackMachPPC32::unpack(OutputFile *fo)
|
||||
fi->readx(ibuf, ph.c_len);
|
||||
Mach_header *const mhdr = (Mach_header *)new upx_byte[ph.u_len];
|
||||
decompress(ibuf, (upx_byte *)mhdr, false);
|
||||
unsigned const ncmds = mhdr->ncmds;
|
||||
|
||||
msegcmd = new Mach_segment_command[ncmds];
|
||||
unsigned char *ptr = (unsigned char *)(1+mhdr);
|
||||
for (unsigned j= 0; j < ncmds; ++j) {
|
||||
msegcmd[j] = *(Mach_segment_command *)ptr;
|
||||
ptr += (unsigned) ((Mach_segment_command *)ptr)->cmdsize;
|
||||
}
|
||||
|
||||
// Put LC_SEGMENT together at the beginning, ascending by .vmaddr.
|
||||
qsort(msegcmd, ncmds, sizeof(*msegcmd), compare_segment_command);
|
||||
n_segment = 0;
|
||||
for (unsigned j= 0; j < ncmds; ++j) {
|
||||
n_segment += (Mach_segment_command::LC_SEGMENT==msegcmd[j].cmd);
|
||||
}
|
||||
|
||||
unsigned total_in = 0;
|
||||
unsigned total_out = 0;
|
||||
@@ -307,7 +367,7 @@ PackMachPPC32::unpack(OutputFile *fo)
|
||||
fi->seek(- (off_t)(sizeof(bhdr) + ph.c_len), SEEK_CUR);
|
||||
for (
|
||||
k = 0;
|
||||
k < mhdr->ncmds;
|
||||
k < ncmds;
|
||||
(++k), (sc = (Mach_segment_command const *)(sc->cmdsize + (char const *)sc))
|
||||
) {
|
||||
if (Mach_segment_command::LC_SEGMENT==sc->cmd
|
||||
@@ -316,11 +376,16 @@ PackMachPPC32::unpack(OutputFile *fo)
|
||||
unpackExtent(filesize, fo, total_in, total_out, c_adler, u_adler, false, sizeof(bhdr));
|
||||
}
|
||||
}
|
||||
unsigned const rest = orig_file_size - total_out;
|
||||
if (0!=rest) { // non-LC_SEGMENT stuff
|
||||
for (unsigned j = 0; j < ncmds; ++j) {
|
||||
unsigned const size = find_SEGMENT_gap(j);
|
||||
if (size) {
|
||||
unsigned const where = get_native32(&msegcmd[k].fileoff) +
|
||||
get_native32(&msegcmd[k].filesize);
|
||||
if (fo)
|
||||
fo->seek(0, SEEK_END);
|
||||
unpackExtent(rest, fo, total_in, total_out, c_adler, u_adler, false, sizeof(bhdr));
|
||||
fo->seek(where, SEEK_SET);
|
||||
unpackExtent(size, fo, total_in, total_out,
|
||||
c_adler, u_adler, false, sizeof(bhdr));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -177,6 +177,7 @@ public:
|
||||
virtual void unpack(OutputFile *fo);
|
||||
|
||||
virtual bool canPack();
|
||||
virtual unsigned find_SEGMENT_gap(unsigned const k);
|
||||
|
||||
protected:
|
||||
virtual int buildLoader(const Filter *ft);
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ static const
|
||||
|
||||
PackPs1::PackPs1(InputFile *f) :
|
||||
super(f),
|
||||
isCon(true^opt->ps1_exe.boot_only), is32Bit(true^opt->ps1_exe.do_8bit),
|
||||
isCon(!opt->ps1_exe.boot_only), is32Bit(!opt->ps1_exe.do_8bit),
|
||||
overlap(0), sa_cnt(0)
|
||||
{
|
||||
COMPILE_TIME_ASSERT(sizeof(ps1_exe_t) == 188);
|
||||
|
||||
+20
-12
@@ -159,6 +159,8 @@ PackW32Pe::PackW32Pe(InputFile *f) : super(f)
|
||||
kernel32ordinal = false;
|
||||
tlsindex = 0;
|
||||
big_relocs = 0;
|
||||
sorelocs = 0;
|
||||
soxrelocs = 0;
|
||||
soloadconf = 0;
|
||||
use_dep_hack = true;
|
||||
use_clear_dirty_stack = true;
|
||||
@@ -573,7 +575,6 @@ unsigned PackW32Pe::processImports() // pass 1
|
||||
LE32 *lookupt;
|
||||
unsigned npos;
|
||||
bool isk32;
|
||||
unsigned _; // padding to 32
|
||||
|
||||
static int __acc_cdecl_qsort compare(const void *p1, const void *p2)
|
||||
{
|
||||
@@ -589,8 +590,7 @@ unsigned PackW32Pe::processImports() // pass 1
|
||||
if (!u2->shname) return -1;
|
||||
return strlen(u1->shname) - strlen(u2->shname);
|
||||
}
|
||||
}
|
||||
__attribute_packed;
|
||||
};
|
||||
|
||||
// +1 for dllnum=0
|
||||
Array(struct udll, dlls, dllnum+1);
|
||||
@@ -1483,6 +1483,7 @@ void PackW32Pe::processResources(Resource *res)
|
||||
info("Resources: compressed %u (%u bytes), not compressed %u (%u bytes)",cnum,csize,unum,usize);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// Load Configuration handling
|
||||
**************************************************************************/
|
||||
@@ -1673,12 +1674,12 @@ void PackW32Pe::pack(OutputFile *fo)
|
||||
// check the PE header
|
||||
// FIXME: add more checks
|
||||
if (!opt->force && (
|
||||
ih.cpu < 0x14c || ih.cpu > 0x150
|
||||
|| ih.opthdrsize != 0xE0
|
||||
|| (ih.flags & EXECUTABLE) == 0
|
||||
(ih.cpu < 0x14c || ih.cpu > 0x150)
|
||||
|| (ih.opthdrsize != 0xe0)
|
||||
|| ((ih.flags & EXECUTABLE) == 0)
|
||||
|| (ih.subsystem != 2 && ih.subsystem != 3 && ih.subsystem != 1)
|
||||
|| (ih.entry == 0 && !isdll)
|
||||
|| ih.ddirsentries != 16
|
||||
|| (ih.ddirsentries != 16)
|
||||
|| IDSIZE(PEDIR_EXCEPTION) // is this used on i386?
|
||||
// || IDSIZE(PEDIR_COPYRIGHT)
|
||||
))
|
||||
@@ -1915,11 +1916,11 @@ void PackW32Pe::pack(OutputFile *fo)
|
||||
// file. If this check fails the runtime does "interesting" things
|
||||
// like not running the floating point initialization code - the result
|
||||
// is an R6002 runtime error.
|
||||
// These supposed to be read only addresses are covered by the section
|
||||
// UPX0 in the compressed files, so we have to patch the PE header
|
||||
// These supposed to be read only addresses are covered by the sections
|
||||
// UPX0 & UPX1 in the compressed files, so we have to patch the PE header
|
||||
// in the memory. And the page on which the PE header is stored is read
|
||||
// only so we must make it rw, fix the flag (i.e. clear
|
||||
// PEFL_WRITE of osection[0].flags), and make it ro again.
|
||||
// only so we must make it rw, fix the flags (i.e. clear
|
||||
// PEFL_WRITE of osection[x].flags), and make it ro again.
|
||||
|
||||
// rva of the most significant byte of member "flags" in section "UPX0"
|
||||
const unsigned swri = pe_offset + sizeof(oh) + sizeof(pe_section_t) - 1;
|
||||
@@ -1927,11 +1928,18 @@ void PackW32Pe::pack(OutputFile *fo)
|
||||
if (swri >= 0x1000)
|
||||
throwCantPack("swri >= 0x1000! Send a bug report please!");
|
||||
patch_le32(loader, codesize, "SWRI", swri);
|
||||
patch_le32(loader, codesize, "IMGL", 0x1000); // one page
|
||||
patch_le32(loader, codesize, "IMGB", 0u - rvamin);
|
||||
#else
|
||||
// make sure we only touch exactly one page
|
||||
// make sure we only touch the minimum number of pages
|
||||
const unsigned addr = 0u - rvamin + swri;
|
||||
patch_le32(loader, codesize, "SWRI", addr & 0xfff); // page offset
|
||||
// check whether osection[0].flags and osection[1].flags
|
||||
// are on the same page
|
||||
if ((addr & 0xfff) + 0x28 >= 0x1000)
|
||||
patch_le32(loader, codesize, "IMGL", 0x2000); // two pages
|
||||
else
|
||||
patch_le32(loader, codesize, "IMGL", 0x1000); // one page
|
||||
patch_le32(loader, codesize, "IMGB", addr &~ 0xfff); // page mask
|
||||
#endif
|
||||
patch_le32(loader, codesize, "VPRO", myimport + get_le32(oimpdlls + 16) + 8);
|
||||
|
||||
+5
-5
@@ -295,7 +295,7 @@ bool Packer::checkFinalCompressionRatio(const OutputFile *fo) const
|
||||
**************************************************************************/
|
||||
|
||||
void Packer::decompress(const upx_bytep in, upx_bytep out,
|
||||
bool verify_checksum, Filter *fp)
|
||||
bool verify_checksum, Filter *ft)
|
||||
{
|
||||
unsigned adler;
|
||||
|
||||
@@ -316,8 +316,8 @@ void Packer::decompress(const upx_bytep in, upx_bytep out,
|
||||
// verify checksum of decompressed data
|
||||
if (verify_checksum)
|
||||
{
|
||||
if (fp) {
|
||||
fp->unfilter(out, ph.u_len);
|
||||
if (ft) {
|
||||
ft->unfilter(out, ph.u_len);
|
||||
}
|
||||
adler = upx_adler32(out, ph.u_len, ph.saved_u_adler);
|
||||
if (adler != ph.u_adler)
|
||||
@@ -358,7 +358,7 @@ bool Packer::testOverlappingDecompression(const upx_bytep buf,
|
||||
}
|
||||
|
||||
|
||||
void Packer::verifyOverlappingDecompression(Filter *fp)
|
||||
void Packer::verifyOverlappingDecompression(Filter *ft)
|
||||
{
|
||||
assert(ph.c_len < ph.u_len);
|
||||
assert((int)ph.overlap_overhead > 0);
|
||||
@@ -384,7 +384,7 @@ void Packer::verifyOverlappingDecompression(Filter *fp)
|
||||
if (offset + ph.c_len > obuf.getSize())
|
||||
return;
|
||||
memmove(obuf + offset, obuf, ph.c_len);
|
||||
decompress(obuf + offset, obuf, true, fp);
|
||||
decompress(obuf + offset, obuf, true, ft);
|
||||
obuf.checkState();
|
||||
#endif /* !UNUPX */
|
||||
}
|
||||
|
||||
+2
-2
@@ -161,7 +161,7 @@ protected:
|
||||
virtual bool compress(upx_bytep in, upx_bytep out,
|
||||
unsigned max_offset = 0, unsigned max_match = 0);
|
||||
virtual void decompress(const upx_bytep in, upx_bytep out,
|
||||
bool verify_checksum = true, Filter *fp = 0);
|
||||
bool verify_checksum = true, Filter *ft = NULL);
|
||||
virtual bool checkCompressionRatio(unsigned u_len, unsigned c_len) const;
|
||||
virtual bool checkFinalCompressionRatio(const OutputFile *fo) const;
|
||||
|
||||
@@ -185,7 +185,7 @@ protected:
|
||||
unsigned range = 0,
|
||||
unsigned upper_limit = ~0u) const;
|
||||
// destructive decompress + verify
|
||||
virtual void verifyOverlappingDecompression(Filter *fp = 0);
|
||||
virtual void verifyOverlappingDecompression(Filter *ft = NULL);
|
||||
|
||||
|
||||
// packheader handling
|
||||
|
||||
+1
-1
@@ -7,8 +7,8 @@
|
||||
*.i
|
||||
*.lst
|
||||
*.map
|
||||
*.out
|
||||
*.o
|
||||
*.out
|
||||
*.tmp
|
||||
GNUmakefile
|
||||
MMakefile
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
.*-stamp
|
||||
*.ah
|
||||
*.asx
|
||||
*.asy
|
||||
*.bin
|
||||
*.d
|
||||
*.i
|
||||
*.lst
|
||||
*.map
|
||||
*.o
|
||||
*.out
|
||||
*.tmp
|
||||
GNUmakefile
|
||||
MMakefile
|
||||
stamp-h
|
||||
stubify.exe
|
||||
upxb
|
||||
upxd
|
||||
+70
-28
@@ -101,28 +101,23 @@ O2BIN = perl -w $(srcdir)/scripts/o2bin.pl
|
||||
### i386-linux
|
||||
###
|
||||
|
||||
LD_LINUX_I386 = ld-2.13.2 -m elf_i386
|
||||
LD_LINUX_I386 = ld -m elf_i386
|
||||
OBJCOPY_LINUX_I386 = objcopy -F elf32-i386
|
||||
OBJSTRIP_LINUX_I386 = $(OBJCOPY_LINUX_I386) -R .comment -R .note
|
||||
STRIPELF_LINUX_I386 = ./util/sstrip/i386-linux-sstrip
|
||||
|
||||
# gcc 2.7.2.3 (fold_*86.bin: 1839 / 1011 / xxxx / 1390)
|
||||
# gcc 2.7.2.3 (fold_*86.bin: 1900 / 1011 / 1786 / 1401)
|
||||
CC_LINUX_I386_GCC272 = gcc-2.72 -m386 -O2 -MMD
|
||||
CC_LINUX_I386_GCC272 += -malign-functions=0 -malign-jumps=0 -malign-loops=0
|
||||
|
||||
# gcc 2.95.3 (fold_*86.bin: 1721 / 995 / xxxx / 1321)
|
||||
# gcc 2.95.3 (fold_*86.bin: 1770 / 995 / 1661 / 1314)
|
||||
CC_LINUX_I386_GCC295 = gcc-2.95.3 -march=i386 -mcpu=k6 -fno-exceptions -MMD
|
||||
CC_LINUX_I386_GCC295 += -Os -fno-omit-frame-pointer
|
||||
CC_LINUX_I386_GCC295 += -malign-functions=0 -malign-jumps=0 -malign-loops=0
|
||||
CC_LINUX_I386_GCC295 += -Werror
|
||||
|
||||
# gcc 3.4.5 (fold_*86.bin: 1670 / 947 / 1552 / 1212)
|
||||
# gcc 3.4.6 (fold_*86.bin: 1670 / 947 / 1552 / 1212) [unchanged from 3.4.5]
|
||||
# gcc 4.0.3 (fold_*86.bin: 1741 / 995 / 1639 / 1202)
|
||||
# gcc 4.1.0 (fold_*86.bin: 1644 / 947 / 1524 / 1144)
|
||||
## ==> TODO: upgrade to 4.1.0
|
||||
CC_LINUX_I386_GCC34 = gcc-3.4.5
|
||||
# gcc 3.4.6 (fold_*86.bin: 1651 / 947 / 1537 / 1190)
|
||||
CC_LINUX_I386_GCC34 = gcc-3.4.6
|
||||
CC_LINUX_I386_GCC34 += -m32 -march=i386 -mtune=k6 -fno-exceptions -MMD
|
||||
CC_LINUX_I386_GCC34 += -Os -fno-omit-frame-pointer
|
||||
CC_LINUX_I386_GCC34 += -momit-leaf-frame-pointer
|
||||
@@ -131,8 +126,20 @@ CC_LINUX_I386_GCC34 += -mpreferred-stack-boundary=2
|
||||
CC_LINUX_I386_GCC34 += -fweb
|
||||
CC_LINUX_I386_GCC34 += -Werror
|
||||
|
||||
# gcc 4.1.0 (fold_*86.bin: 1725 / 963 / 1620 / 1202)
|
||||
# gcc 4.0.3 (fold_*86.bin: 1731 / 995 / 1625 / 1195)
|
||||
CC_LINUX_I386_GCC41 = gcc-4.1.0
|
||||
CC_LINUX_I386_GCC41 += -m32 -march=i386 -mtune=k6 -fno-exceptions -MMD
|
||||
CC_LINUX_I386_GCC41 += -Os -fno-omit-frame-pointer
|
||||
CC_LINUX_I386_GCC41 += -momit-leaf-frame-pointer
|
||||
CC_LINUX_I386_GCC41 += -fno-align-functions -fno-align-jumps -fno-align-labels -fno-align-loops
|
||||
CC_LINUX_I386_GCC41 += -mpreferred-stack-boundary=2
|
||||
CC_LINUX_I386_GCC41 += -fweb
|
||||
CC_LINUX_I386_GCC41 += -Werror
|
||||
|
||||
CC_LINUX_I386 = $(CC_LINUX_I386_GCC272)
|
||||
CC_LINUX_I386 = $(CC_LINUX_I386_GCC295)
|
||||
CC_LINUX_I386 = $(CC_LINUX_I386_GCC41)
|
||||
CC_LINUX_I386 = $(CC_LINUX_I386_GCC34)
|
||||
CC_LINUX_I386 += -nostdinc
|
||||
CC_LINUX_I386 += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings
|
||||
@@ -186,6 +193,7 @@ ifneq ($(wildcard $d),)
|
||||
LD_PPC32 := $d/powerpc-750-linux-gnu-ld
|
||||
OBJCOPY_PPC32 := $d/powerpc-750-linux-gnu-objcopy
|
||||
endif
|
||||
GCC_PPC32 += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
||||
|
||||
|
||||
###
|
||||
@@ -209,15 +217,18 @@ ifneq ($(wildcard $d),)
|
||||
LD_AMD64 := $d/x86_64-unknown-linux-gnu-ld -m elf_x86_64
|
||||
OBJCOPY_AMD64 := $d/x86_64-unknown-linux-gnu-objcopy -F elf64-x86-64
|
||||
endif
|
||||
GCC_AMD64 += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
||||
|
||||
|
||||
###
|
||||
### ARM-PE-WINCE
|
||||
###
|
||||
|
||||
GCC_WINCE := arm-wince-pe-gcc -Os
|
||||
LD_WINCE := arm-wince-pe-ld
|
||||
OBJCOPY_WINCE := arm-wince-pe-objcopy
|
||||
GCC_ARM := arm-9tdmi-linux-gnu-gcc -march=armv4 -nostdinc -MMD
|
||||
GCC_ARM += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror
|
||||
GCC_ARM_T := $(GCC_ARM) -march=armv4t -mthumb-interwork -mthumb
|
||||
LD_ARM := arm-9tdmi-linux-gnu-ld
|
||||
OBJCOPY_ARM := arm-9tdmi-linux-gnu-objcopy
|
||||
BIN2H_WINCE := perl -ne 'print "db\t", join(",", map { sprintf "%\#02x", $$_ } unpack("C*", $$_)), "\n"'
|
||||
|
||||
|
||||
@@ -238,7 +249,7 @@ stubs: $(STUBS)
|
||||
|
||||
mostlyclean:
|
||||
-rm -f *.bin *.bkp *.d *.i *.lst *.map stubify.exe
|
||||
-rm -f *.o *.asx *.asy
|
||||
-rm -f *.ah *.asx *.asy *.o *.out
|
||||
|
||||
clean: mostlyclean
|
||||
ifneq ($(strip $(wildcard stamp-h)),)
|
||||
@@ -264,10 +275,10 @@ strings: all
|
||||
# // rules
|
||||
# ************************************************************************/
|
||||
|
||||
%.asx : %.asm
|
||||
%.asx : %.asm $(srcdir)/scripts/app_i386.pl
|
||||
$(APP_I386) $< $@
|
||||
|
||||
%.asy : %.ash
|
||||
%.asy : %.ash $(srcdir)/scripts/app_i386.pl
|
||||
$(APP_I386) $< $@
|
||||
|
||||
|
||||
@@ -319,6 +330,7 @@ l_w32pe.h: l_w32pe.asx
|
||||
$(NASM) -f bin -o $T.bin $<
|
||||
$(BIN2H) $T.bin nrv_loader $@
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // atari/tos rules
|
||||
# ************************************************************************/
|
||||
@@ -414,7 +426,8 @@ l_lx_elfppc32.h: l_lx_elfppc32.S ppc_d_nrv2e.S
|
||||
$(BIN2H) $T.bin linux_elfppc32_loader $@
|
||||
|
||||
l_lx_elf64amd.h: l_lx_elf64amd.S amd_d_nrv2e.S
|
||||
$(GCC_AMD64) -c $T.S
|
||||
$(GCC_AMD64) -c $<
|
||||
$(OBJSTRIP_AMD64) $T.o
|
||||
$(LD_AMD64) -o $T.bin --oformat binary $T.o
|
||||
$(BIN2H) $T.bin linux_elf64amd_loader $@
|
||||
|
||||
@@ -436,6 +449,7 @@ l_lx_sh.o: l_lx_sh.c linux.hh $(MAKEFILE_DEPS)
|
||||
|
||||
l_lx_pti.o: l_lx_pti.c linux.hh $(MAKEFILE_DEPS)
|
||||
$(CC_LINUX_I386) -c $<
|
||||
$(OBJSTRIP_LINUX_I386) $@
|
||||
|
||||
fold_elf86.o: fold_elf86.asm
|
||||
$(NASM) -f elf -o $@ $<
|
||||
@@ -450,18 +464,20 @@ fold_elf86.h: l_lx_elf.o fold_elf86.o l_lx_elf86.lds
|
||||
$(BIN2H) $T.bin linux_i386elf_fold $@
|
||||
|
||||
m_lx_elfppc32.o: m_lx_elfppc32.c $(MAKEFILE_DEPS)
|
||||
$(GCC_PPC32) -Os -c $<
|
||||
$(GCC_PPC32) -c -Os $<
|
||||
$(OBJSTRIP_PPC32) $@
|
||||
|
||||
a_lx_elf64amd.o: a_lx_elf64.c $(MAKEFILE_DEPS)
|
||||
$(GCC_AMD64) -c -Os -o $@ $<
|
||||
$(OBJSTRIP_AMD64) $@
|
||||
|
||||
fold_elfppc32.o: fold_elfppc32.S ppc_bxx.S $(MAKEFILE_DEPS)
|
||||
$(GCC_PPC32) -c $<
|
||||
$(OBJSTRIP_PPC32) $@
|
||||
|
||||
fold_elf64amd.o: fold_elf64amd.S amd_bxx.S $(MAKEFILE_DEPS)
|
||||
$(GCC_AMD64) -c -O $T.S
|
||||
$(GCC_AMD64) -c $<
|
||||
$(OBJSTRIP_AMD64) $@
|
||||
|
||||
fold_elfppc32.h: m_lx_elfppc32.o fold_elfppc32.o l_lx_elfppc32.lds
|
||||
$(LD_PPC32) -T $(srcdir)/l_lx_elfppc32.lds -Map $T.map -o $T.bin --strip-all \
|
||||
@@ -499,7 +515,8 @@ fold_sh86.h: l_lx_sh.o fold_sh86.o l_lx_sh86.lds
|
||||
$(BIN2H) $T.bin linux_i386sh_fold $@
|
||||
|
||||
fold_pti86.o: fold_pti86.asm
|
||||
$(NASM) -i$(UCL_I386)/ -f elf -o $@ $<
|
||||
$(NASM) -f elf -i$(UCL_I386)/ -o $@ $<
|
||||
$(OBJSTRIP_LINUX_I386) $@
|
||||
|
||||
fold_pti86.h: l_lx_pti.o fold_pti86.o l_lx_pti86.lds
|
||||
$(LD_LINUX_I386) -T $(srcdir)/l_lx_pti86.lds -Map $T.map -o $T.bin $T.o l_lx_pti.o
|
||||
@@ -523,28 +540,53 @@ fold_machppc32.o: fold_machppc32.S ppc_bxx.S $(MAKEFILE_DEPS)
|
||||
$(OBJSTRIP_PPC32) $@
|
||||
|
||||
upxb: l_lx_sep.o l_lx_sep86.asm
|
||||
$(NASM) -i$(UCL_I386)/ -f elf -dNRV2B -o $T.o l_lx_sep86.asm
|
||||
$(NASM) -f elf -i$(UCL_I386)/ -dNRV2B -o $T.o l_lx_sep86.asm
|
||||
$(OBJSTRIP_LINUX_I386) $T.o
|
||||
$(LD_LINUX_I386) -T $(srcdir)/l_lx_sep86.lds -Map $T.map -o $@ $T.o l_lx_sep.o
|
||||
$(OBJSTRIP_LINUX_I386) $@
|
||||
$(STRIPELF_LINUX_I386) $@
|
||||
$(BRANDELF) $@
|
||||
|
||||
upxd: l_lx_sep.o l_lx_sep86.asm
|
||||
$(NASM) -i$(UCL_I386)/ -f elf -dNRV2D -o $T.o l_lx_sep86.asm
|
||||
$(NASM) -f elf -i$(UCL_I386)/ -dNRV2D -o $T.o l_lx_sep86.asm
|
||||
$(OBJSTRIP_LINUX_I386) $T.o
|
||||
$(LD_LINUX_I386) -T $(srcdir)/l_lx_sep86.lds -Map $T.map -o $@ $T.o l_lx_sep.o
|
||||
$(OBJSTRIP_LINUX_I386) $@
|
||||
$(STRIPELF_LINUX_I386) $@
|
||||
$(BRANDELF) $@
|
||||
|
||||
l_armpe.h: l_armpe.asx l_armpe_s.S l_armpe_c.c
|
||||
$(GCC_WINCE) -c l_armpe_s.S l_armpe_c.c
|
||||
$(LD_WINCE) -nostdlib -o l_armpe_.out l_armpe_s.o l_armpe_c.o
|
||||
$(OBJCOPY_WINCE) --only-section .text -O binary l_armpe_.out l_armpe_.bin
|
||||
$(BIN2H_WINCE) <l_armpe_.bin >l_armpe_.ah
|
||||
l_armpe.h: l_armpe.asx l_armpe_s.S l_armpe_c.c arm_nrv2e_d8.S arm_nrv2b_d8.S armv4_n2e_d8.S $(MAKEFILE_LIST)
|
||||
$(GCC_ARM_T) -c l_armpe_s.S arm_nrv2e_d8.S arm_nrv2b_d8.S
|
||||
$(GCC_ARM_T) -Os -c l_armpe_c.c -DUCL_DECOMPRESS=thumb_nrv2e_d8
|
||||
$(LD_ARM) -o l_armpe_txe.out l_armpe_s.o l_armpe_c.o arm_nrv2e_d8.o
|
||||
$(OBJCOPY_ARM) --only-section .text -O binary l_armpe_txe.out l_armpe_txe.bin
|
||||
$(BIN2H_WINCE) <l_armpe_txe.bin >l_armpe_txe.ah
|
||||
$(GCC_ARM_T) -Os -c l_armpe_c.c -DUCL_DECOMPRESS=go_thumb_n2b
|
||||
$(LD_ARM) -o l_armpe_txb.out l_armpe_s.o l_armpe_c.o arm_nrv2b_d8.o
|
||||
$(OBJCOPY_ARM) --only-section .text -O binary l_armpe_txb.out l_armpe_txb.bin
|
||||
$(BIN2H_WINCE) <l_armpe_txb.bin >l_armpe_txb.ah
|
||||
$(GCC_ARM_T) -DSTUB_FOR_DLL -c l_armpe_s.S
|
||||
$(GCC_ARM_T) -DSTUB_FOR_DLL -Os -c l_armpe_c.c -DUCL_DECOMPRESS=thumb_nrv2e_d8
|
||||
$(LD_ARM) -o l_armpe_tde.out l_armpe_s.o l_armpe_c.o arm_nrv2e_d8.o
|
||||
$(OBJCOPY_ARM) --only-section .text -O binary l_armpe_tde.out l_armpe_tde.bin
|
||||
$(BIN2H_WINCE) <l_armpe_tde.bin >l_armpe_tde.ah
|
||||
$(GCC_ARM_T) -DSTUB_FOR_DLL -Os -c l_armpe_c.c -DUCL_DECOMPRESS=go_thumb_n2b
|
||||
$(LD_ARM) -o l_armpe_tdb.out l_armpe_s.o l_armpe_c.o arm_nrv2b_d8.o
|
||||
$(OBJCOPY_ARM) --only-section .text -O binary l_armpe_tdb.out l_armpe_tdb.bin
|
||||
$(BIN2H_WINCE) <l_armpe_tdb.bin >l_armpe_tdb.ah
|
||||
$(GCC_ARM) -Os -c l_armpe_c.c -DUCL_DECOMPRESS=ucl_nrv2e_decompress_8
|
||||
$(GCC_ARM) -c armv4_n2e_d8.S l_armpe_s.S
|
||||
$(LD_ARM) -o l_armpe_axe.out l_armpe_s.o l_armpe_c.o armv4_n2e_d8.o
|
||||
$(OBJCOPY_ARM) --only-section .text -O binary l_armpe_axe.out l_armpe_axe.bin
|
||||
$(BIN2H_WINCE) <l_armpe_axe.bin >l_armpe_axe.ah
|
||||
$(GCC_ARM) -DSTUB_FOR_DLL -Os -c l_armpe_c.c -DUCL_DECOMPRESS=ucl_nrv2e_decompress_8
|
||||
$(GCC_ARM) -DSTUB_FOR_DLL -c l_armpe_s.S
|
||||
$(LD_ARM) -o l_armpe_ade.out l_armpe_s.o l_armpe_c.o armv4_n2e_d8.o
|
||||
$(OBJCOPY_ARM) --only-section .text -O binary l_armpe_ade.out l_armpe_ade.bin
|
||||
$(BIN2H_WINCE) <l_armpe_ade.bin >l_armpe_ade.ah
|
||||
$(NASM) -f bin -o $T.bin $<
|
||||
$(BIN2H) $T.bin nrv_loader $@
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // dependencies
|
||||
# ************************************************************************/
|
||||
@@ -577,6 +619,7 @@ l_w32pe.h: $(DEPS2) $(DEPS3)
|
||||
|
||||
l_lx_elf86.h: l_lx_elf86.asm macros.ash macros.asy $(DEPS3)
|
||||
l_lx_exec86.h: l_lx_exec86.asm macros.ash macros.asy $(DEPS3)
|
||||
l_lx_pti86.h: l_lx_pti86.asm macros.ash macros.asy $(DEPS3)
|
||||
l_lx_sh86.h: l_lx_sh86.asm macros.ash macros.asy $(DEPS3)
|
||||
|
||||
|
||||
@@ -588,5 +631,4 @@ start-interp.o: start-interp.S
|
||||
interp.o: interp.c
|
||||
gcc -c -g $<
|
||||
|
||||
|
||||
# vi:nowrap
|
||||
|
||||
@@ -170,6 +170,8 @@ upx_bzero(char *p, size_t len)
|
||||
} while (--len);
|
||||
}
|
||||
#define bzero upx_bzero
|
||||
#else
|
||||
#define bzero(a,b) __builtin_memset(a,0,b)
|
||||
#endif /*}*/
|
||||
|
||||
static void
|
||||
@@ -317,8 +319,8 @@ upx_main( // returns entry address
|
||||
Extent xo, xi1, xi2;
|
||||
xo.buf = (char *)ehdr;
|
||||
xo.size = bi->sz_unc;
|
||||
xi2.buf = (char *)bi; xi2.size = sz_compressed;
|
||||
xi1.buf = (char *)bi; xi1.size = sz_compressed;
|
||||
xi2.buf = CONST_CAST(char *, bi); xi2.size = sz_compressed;
|
||||
xi1.buf = CONST_CAST(char *, bi); xi1.size = sz_compressed;
|
||||
|
||||
// ehdr = Uncompress Ehdr and Phdrs
|
||||
unpackExtent(&xi2, &xo, f_decompress, 0); // never filtered?
|
||||
|
||||
+7
-12
@@ -35,12 +35,12 @@
|
||||
#define tmp r3
|
||||
#define bits r4
|
||||
#define off r5
|
||||
#define g1b r6
|
||||
/* r6 UNUSED */
|
||||
#define wrnk r7 /* 0xd00 M2_MAX_OFFSET before "wrinkle" */
|
||||
|
||||
/* r12 ("ip") is assumed to be a scratch register. */
|
||||
|
||||
#define GETBIT blx g1b
|
||||
#define GETBIT add bits,bits; mov lr,pc; beq get1_n2b
|
||||
|
||||
#define getnextb(reg) GETBIT; adc reg,reg
|
||||
#define jnextb0 GETBIT; bcc
|
||||
@@ -53,15 +53,14 @@ ucl_nrv2b_decompress_8: .globl ucl_nrv2b_decompress_8 @ ARM mode
|
||||
bx r12 @ enter THUMB mode
|
||||
|
||||
.code 16 @ THUMB mode
|
||||
go_thumb_n2b:
|
||||
.thumb_func
|
||||
go_thumb_n2b: .globl go_thumb_n2b
|
||||
add r1,len,src @ r1= eof_src;
|
||||
push {r1,r2,r3, r4,r5,r6,r7, lr}
|
||||
mov bits,#1; neg off,bits @ off= -1 initial condition
|
||||
lsl bits,#31 @ 1<<31: refill next time
|
||||
mov wrnk,#0xd
|
||||
lsl wrnk,#8 @ 0xd00
|
||||
adr g1b,get1_n2b @ load pc-relative address
|
||||
add g1b,#1 @ force THUMB mode
|
||||
b top_n2b
|
||||
|
||||
eof_n2b:
|
||||
@@ -69,25 +68,21 @@ eof_n2b:
|
||||
sub src,r1 @ 0 if actual src length equals expected length
|
||||
sub dst,r3 @ actual dst length
|
||||
str dst,[r4]
|
||||
pop {r4,r5,r6,r7, pc} @ return
|
||||
pop {r4,r5,r6,r7 /*,pc*/}
|
||||
pop {r1}; bx r1 @ "pop {,pc}" fails return to ARM mode on ARMv4T
|
||||
|
||||
|
||||
.align 2 @ 1<<2 for benefit of loading address with 'adr' above
|
||||
get1_n2b:
|
||||
adc bits,bits; bne get1r_n2b @ CarryOut has data bit
|
||||
ldrb bits,[src] @ zero-extend next byte
|
||||
adc bits,bits @ double and insert CarryIn as low bit
|
||||
add src,#1
|
||||
lsl bits,#24 @ move to top byte, and set CarryOut from old bit 8
|
||||
get1r_n2b:
|
||||
bx lr
|
||||
mov pc,lr
|
||||
|
||||
lit_n2b:
|
||||
ldrb tmp,[src]; add src,#1
|
||||
strb tmp,[dst]; add dst,#1
|
||||
top_n2b:
|
||||
jnextb1 lit_n2b
|
||||
|
||||
mov len,#1 @ the msb
|
||||
getoff_n2b: @ ss11 len= [2..)
|
||||
getnextb(len)
|
||||
|
||||
+69
-22
@@ -28,6 +28,7 @@
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
#define SAFE 0 /* 1 for src+dst bounds checking: cost 40 bytes */
|
||||
|
||||
#define src r0
|
||||
#define len r1 /* overlaps 'cnt' */
|
||||
@@ -35,12 +36,34 @@
|
||||
#define tmp r3
|
||||
#define bits r4
|
||||
#define off r5
|
||||
#define g1b r6
|
||||
#define wrnk r7 /* 0x500 M2_MAX_OFFSET before "wrinkle" */
|
||||
#define wrnk r6 /* 0x500 M2_MAX_OFFSET before "wrinkle" */
|
||||
#define srclim r7
|
||||
#if 1==SAFE /*{*/
|
||||
#define dstlim r12
|
||||
#endif /*}*/
|
||||
|
||||
#define cnt r1 /* overlaps 'len' while reading an offset */
|
||||
|
||||
#define GETBIT blx g1b
|
||||
#if 1==SAFE /*{*/
|
||||
#define CHECK_SRC cmp src,srclim; bhs bad_src_n2e
|
||||
#define CHECK_DST cmp dst,dstlim; bhs bad_dst_n2e
|
||||
#else /*}{*/
|
||||
#define CHECK_SRC /*empty*/
|
||||
#define CHECK_DST /*empty*/
|
||||
#endif /*}*/
|
||||
|
||||
#if 0 /*{ DEBUG only: check newly-decompressed against original dst */
|
||||
#define CHECK_BYTE \
|
||||
push {wrnk}; \
|
||||
ldrb wrnk,[dst]; \
|
||||
cmp wrnk,tmp; beq 0f; bkpt; \
|
||||
0: pop {wrnk}
|
||||
#else /*}{*/
|
||||
#define CHECK_BYTE /*empty*/
|
||||
#endif /*}*/
|
||||
|
||||
/* "mov lr,pc; bxx ..." implements conditional subroutine call */
|
||||
#define GETBIT add bits,bits; mov lr,pc; beq get1_n2e
|
||||
|
||||
#define getnextb(reg) GETBIT; adc reg,reg
|
||||
#define jnextb0 GETBIT; bcc
|
||||
@@ -48,39 +71,55 @@
|
||||
|
||||
ucl_nrv2e_decompress_8: .globl ucl_nrv2e_decompress_8 @ ARM mode
|
||||
.type ucl_nrv2e_decompress_8, %function
|
||||
/* error = (*)(char const *src, int len_src, char *dst, int *plen_dst) */
|
||||
/* error = (*)(char const *src, int len_src, char *dst, int *plen_dst)
|
||||
Actual decompressed length is stored through plen_dst.
|
||||
For SAFE mode: at call, *plen_dst must be allowed length of output buffer.
|
||||
*/
|
||||
adr r12,1+thumb_nrv2e_d8; bx r12 @ enter THUMB mode
|
||||
.code 16 @ THUMB mode
|
||||
.globl thumb_nrv2e_d8
|
||||
.thumb_func
|
||||
thumb_nrv2e_d8:
|
||||
add r1,len,src @ r1= eof_src;
|
||||
push {r1,r2,r3, r4,r5,r6,r7, lr}
|
||||
push {r2,r3, r4,r5,r6,r7, lr}
|
||||
#define sp_DST0 0 /* stack offset of original dst */
|
||||
add srclim,len,src @ srclim= eof_src;
|
||||
#if 1==SAFE /*{*/
|
||||
ldr tmp,[r3] @ len_dst
|
||||
add tmp,dst
|
||||
mov dstlim,tmp
|
||||
#endif /*}*/
|
||||
mov bits,#1; neg off,bits @ off= -1 initial condition
|
||||
lsl bits,#31 @ 1<<31; refill next time
|
||||
mov wrnk,#5
|
||||
lsl wrnk,#8 @ 0x500
|
||||
adr g1b,get1_n2e @ load pc-relative address
|
||||
add g1b,#1 @ force THUMB mode
|
||||
lsl wrnk,#8 @ 0x500 @ nrv2e M2_MAX_OFFSET
|
||||
b top_n2e
|
||||
|
||||
#if 1==SAFE /*{*/
|
||||
bad_dst_n2e: # return value will be 2
|
||||
add src,srclim,#1
|
||||
bad_src_n2e: # return value will be 1
|
||||
add src,#1
|
||||
#endif /*}*/
|
||||
eof_n2e:
|
||||
pop {r1,r3,r4} @ r1= eof_src; r3= orig_dst; r4= plen_dst
|
||||
sub src,r1 @ 0 if actual src length equals expected length
|
||||
pop {r3,r4} @ r3= orig_dst; r4= plen_dst
|
||||
sub src,srclim @ 0 if actual src length equals expected length
|
||||
sub dst,r3 @ actual dst length
|
||||
str dst,[r4]
|
||||
pop {r4,r5,r6,r7, pc} @ return
|
||||
pop {r4,r5,r6,r7 /*,pc*/}
|
||||
pop {r1}; bx r1 @ "pop {,pc}" fails return to ARM mode on ARMv4T
|
||||
|
||||
.align 2 @ 1<<2 for benefit of loading address with 'adr' above
|
||||
get1_n2e:
|
||||
adc bits,bits; bne get1r_n2e @ CarryOut has data bit
|
||||
get1_n2e: @ In: Carry set [from adding 0x80000000 (1<<31) to itself]
|
||||
ldrb bits,[src] @ zero-extend next byte
|
||||
adc bits,bits @ double and insert CarryIn as low bit
|
||||
CHECK_SRC
|
||||
add src,#1
|
||||
lsl bits,#24 @ move to top byte, and set CarryOut from old bit 8
|
||||
get1r_n2e:
|
||||
bx lr
|
||||
mov pc,lr @ return, stay in current (THUMB) mode
|
||||
|
||||
lit_n2e:
|
||||
ldrb tmp,[src]; add src,#1
|
||||
strb tmp,[dst]; add dst,#1
|
||||
CHECK_SRC; ldrb tmp,[src]; add src,#1
|
||||
CHECK_BYTE
|
||||
CHECK_DST; strb tmp,[dst]; add dst,#1
|
||||
top_n2e:
|
||||
jnextb1 lit_n2e
|
||||
mov cnt,#1; b getoff_n2e
|
||||
@@ -96,7 +135,7 @@ getoff_n2e:
|
||||
mov len,#0 @ Carry unaffected
|
||||
blo offprev_n2e @ cnt was 2; tests Carry only
|
||||
lsl tmp,#8
|
||||
ldrb off,[src]; add src,#1 @ low 7+1 bits
|
||||
CHECK_SRC; ldrb off,[src]; add src,#1 @ low 7+1 bits
|
||||
orr off,tmp
|
||||
mvn off,off; beq eof_n2e @ off= ~off
|
||||
asr off,#1; bcs lenlast_n2e
|
||||
@@ -117,16 +156,24 @@ lenlast_n2e:
|
||||
getnextb(len) @ 0,1,2,3
|
||||
add len,#2
|
||||
gotlen_n2e: @ 'cmn': add the inputs, set condition codes, discard the sum
|
||||
cmn off,wrnk; bcs near_n2e @ within M2_MAX_OFFSET
|
||||
cmn wrnk,off; bcs near_n2e @ within M2_MAX_OFFSET
|
||||
add len,#1 @ too far away, so minimum match length is 3
|
||||
near_n2e:
|
||||
#if 1==SAFE /*{*/
|
||||
ldr tmp,[sp,#sp_DST0]
|
||||
sub tmp,dst
|
||||
sub tmp,off; bhi bad_dst_n2e @ reaching back too far
|
||||
|
||||
add tmp,dst,cnt
|
||||
cmp tmp,dstlim; bhi bad_dst_n2e @ too much output
|
||||
#endif /*}*/
|
||||
ldrb tmp,[dst] @ force cacheline allocate
|
||||
copy_n2e:
|
||||
ldrb tmp,[dst,off]
|
||||
CHECK_BYTE
|
||||
strb tmp,[dst]; add dst,#1
|
||||
sub len,#1; bne copy_n2e
|
||||
b top_n2e
|
||||
|
||||
.size ucl_nrv2e_decompress_8, .-ucl_nrv2e_decompress_8
|
||||
|
||||
/*
|
||||
|
||||
@@ -0,0 +1,181 @@
|
||||
/* armv4_n2e_d8.S -- ARM decompressor for NRV2E
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2004 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2004 Laszlo Molnar
|
||||
Copyright (C) 2000-2006 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
and/or modify them under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
<mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
#define SAFE 0 /* 1 for src+dst bounds checking: cost 76 bytes */
|
||||
|
||||
#define src r0
|
||||
#define len r1 /* overlaps 'cnt' */
|
||||
#define dst r2
|
||||
#define tmp r3
|
||||
#define bits r4
|
||||
#define off r5
|
||||
/* r6 UNUSED in ARM code unless DEBUG mode */
|
||||
#define srclim r7
|
||||
#if 1==SAFE /*{*/
|
||||
#define dstlim r12
|
||||
#endif /*}*/
|
||||
|
||||
#define cnt r1 /* overlaps 'len' while reading an offset */
|
||||
|
||||
/* macros reduce "noise" when comparing this ARM code to corresponding THUMB code */
|
||||
#define PUSH stmdb sp!,
|
||||
#define POP ldmia sp!,
|
||||
#define ADD2( dst,src) add dst,dst,src
|
||||
#define ADD2S(dst,src) adds dst,dst,src
|
||||
#define ADC2( dst,src) adc dst,dst,src
|
||||
#define ADC2S(dst,src) adcs dst,dst,src
|
||||
#define SUB2( dst,src) sub dst,dst,src
|
||||
#define SUB2S(dst,src) subs dst,dst,src
|
||||
#define LDRB3(reg,psrc,incr) ldrb reg,psrc,incr
|
||||
#define STRB3(reg,pdst,incr) strb reg,pdst,incr
|
||||
|
||||
#if 1==SAFE /*{*/
|
||||
#define CHECK_SRC cmp srclim,src; bls bad_src_n2e /* Out: 1==Carry for get8_n2e */
|
||||
#define CHECK_DST cmp dst,dstlim; bhs bad_dst_n2e
|
||||
#else /*}{*/
|
||||
#define CHECK_SRC /*empty*/
|
||||
#define CHECK_DST /*empty*/
|
||||
#endif /*}*/
|
||||
|
||||
#if 0 /*{ DEBUG only: check newly-decompressed against original dst */
|
||||
#define CHECK_BYTE \
|
||||
ldrb r6,[dst]; \
|
||||
cmp r6,tmp; beq 0f; bkpt; 0:
|
||||
#else /*}{*/
|
||||
#define CHECK_BYTE /*empty*/
|
||||
#endif /*}*/
|
||||
|
||||
#define GETBIT ADD2S(bits,bits); bleq get8_n2e
|
||||
|
||||
#define getnextb(reg) GETBIT; ADC2(reg,reg) /* Out: condition code not changed */
|
||||
#define jnextb0 GETBIT; bcc
|
||||
#define jnextb1 GETBIT; bcs
|
||||
|
||||
ucl_nrv2e_decompress_8: .globl ucl_nrv2e_decompress_8 @ ARM mode
|
||||
.type ucl_nrv2e_decompress_8, %function
|
||||
/* error = (*)(char const *src, int len_src, char *dst, int *plen_dst)
|
||||
Actual decompressed length is stored through plen_dst.
|
||||
For SAFE mode: at call, *plen_dst must be allowed length of output buffer.
|
||||
*/
|
||||
PUSH {r2,r3, r4,r5,r6,r7, lr}
|
||||
#define sp_DST0 0 /* stack offset of original dst */
|
||||
add srclim,len,src @ srclim= eof_src;
|
||||
#if 1==SAFE /*{*/
|
||||
ldr tmp,[r3] @ len_dst
|
||||
add dstlim,tmp,dst
|
||||
#endif /*}*/
|
||||
mvn off,#~-1 @ off= -1 initial condition
|
||||
mov bits,#1<<31 @ refill next time
|
||||
b top_n2e
|
||||
|
||||
#if 1==SAFE /*{*/
|
||||
bad_dst_n2e: # return value will be 2
|
||||
bkpt
|
||||
add src,srclim,#1
|
||||
bad_src_n2e: # return value will be 1
|
||||
ADD2(src,#1)
|
||||
#endif /*}*/
|
||||
eof_n2e:
|
||||
POP {r3,r4} @ r3= orig_dst; r4= plen_dst
|
||||
SUB2(src,srclim) @ 0 if actual src length equals expected length
|
||||
SUB2(dst,r3) @ actual dst length
|
||||
str dst,[r4]
|
||||
POP {r4,r5,r6,r7 ,pc}
|
||||
|
||||
get8_n2e: @ In: Carry set [from adding 0x80000000 (1<<31) to itself]
|
||||
CHECK_SRC; LDRB3(bits,[src],#1) @ zero-extend next byte
|
||||
adc bits,bits,bits @ double and insert CarryIn as low bit
|
||||
movs bits,bits,lsl #24 @ move to top byte, and set CarryOut from old bit 8
|
||||
mov pc,lr
|
||||
|
||||
lit_n2e:
|
||||
CHECK_SRC; LDRB3(tmp,[src],#1)
|
||||
CHECK_BYTE
|
||||
CHECK_DST; STRB3(tmp,[dst],#1)
|
||||
top_n2e:
|
||||
jnextb1 lit_n2e
|
||||
mov cnt,#1; b getoff_n2e
|
||||
|
||||
off_n2e:
|
||||
SUB2(cnt,#1)
|
||||
getnextb(cnt)
|
||||
getoff_n2e:
|
||||
getnextb(cnt)
|
||||
jnextb0 off_n2e
|
||||
|
||||
subs tmp,cnt,#3 @ set Carry
|
||||
mov len,#0 @ Carry unaffected
|
||||
blo offprev_n2e @ cnt was 2; tests Carry only
|
||||
CHECK_SRC; LDRB3(off,[src],#1) @ low 7+1 bits
|
||||
orr off,off,tmp,lsl #8
|
||||
mvns off,off; beq eof_n2e @ off= ~off
|
||||
movs off,off,asr #1; bcs lenlast_n2e
|
||||
b lenmore_n2e
|
||||
|
||||
offprev_n2e:
|
||||
jnextb1 lenlast_n2e
|
||||
lenmore_n2e:
|
||||
mov len,#1
|
||||
jnextb1 lenlast_n2e
|
||||
len_n2e:
|
||||
getnextb(len)
|
||||
jnextb0 len_n2e
|
||||
ADD2(len,#6-2)
|
||||
b gotlen_n2e
|
||||
|
||||
lenlast_n2e:
|
||||
getnextb(len) @ 0,1,2,3
|
||||
ADD2(len,#2)
|
||||
gotlen_n2e: @ 'cmn': add the inputs, set condition codes, discard the sum
|
||||
cmn off,#5<<8; bcs near_n2e @ within M2_MAX_OFFSET
|
||||
ADD2(len,#1) @ too far away, so minimum match length is 3
|
||||
near_n2e:
|
||||
#if 1==SAFE /*{*/
|
||||
ldr tmp,[sp,#sp_DST0]
|
||||
SUB2( tmp,dst)
|
||||
SUB2S(tmp,off); bhi bad_dst_n2e @ reaching back too far
|
||||
|
||||
add tmp,dst,cnt
|
||||
cmp tmp,dstlim; bhi bad_dst_n2e @ too much output
|
||||
#endif /*}*/
|
||||
ldrb tmp,[dst] @ force cacheline allocate
|
||||
copy_n2e:
|
||||
ldrb tmp,[dst,off]
|
||||
CHECK_BYTE
|
||||
STRB3(tmp,[dst],#1)
|
||||
SUB2S(len,#1); bne copy_n2e
|
||||
b top_n2e
|
||||
|
||||
.size ucl_nrv2e_decompress_8, .-ucl_nrv2e_decompress_8
|
||||
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
||||
|
||||
@@ -209,5 +209,17 @@ L32:
|
||||
pop edi ; &auxtab
|
||||
ret
|
||||
|
||||
%define __NR_mmap 90
|
||||
|
||||
global mmap
|
||||
mmap:
|
||||
push ebx
|
||||
lea ebx, [2*4 + esp]
|
||||
push byte __NR_mmap
|
||||
pop eax
|
||||
int 0x80
|
||||
pop ebx
|
||||
ret
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
|
||||
|
||||
+95
-96
@@ -1,4 +1,4 @@
|
||||
/* fold_elf86.h -- created from fold_elf86.bin, 1670 (0x686) bytes
|
||||
/* fold_elf86.h -- created from fold_elf86.bin, 1651 (0x673) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,114 +27,113 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_I386ELF_FOLD_SIZE 1670
|
||||
#define LINUX_I386ELF_FOLD_ADLER32 0x2e7cd8c9
|
||||
#define LINUX_I386ELF_FOLD_CRC32 0x2993f845
|
||||
#define LINUX_I386ELF_FOLD_SIZE 1651
|
||||
#define LINUX_I386ELF_FOLD_ADLER32 0x3a4ad069
|
||||
#define LINUX_I386ELF_FOLD_CRC32 0xd4e0324c
|
||||
|
||||
unsigned char linux_i386elf_fold[1670] = {
|
||||
unsigned char linux_i386elf_fold[1651] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
||||
2, 0, 3, 0, 1, 0, 0, 0,128, 0,192, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 0, /* 0x 30 */
|
||||
0, 0,192, 0,134, 6, 0, 0,136, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 1, 0, 0, 0,134, 6, 0, 0,136, 6,192, 0, /* 0x 50 */
|
||||
136, 6,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */
|
||||
0, 0,192, 0,115, 6, 0, 0,116, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 1, 0, 0, 0,115, 6, 0, 0,116, 6,192, 0, /* 0x 50 */
|
||||
116, 6,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */
|
||||
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||
41,201,186,120, 2, 0, 0,137,230,137,231,232,112, 0, 0, 0, /* 0x 80 */
|
||||
137,230,209,234, 25,192, 41,193,141, 36,196,133,210,117,243,137, /* 0x 90 */
|
||||
231,232, 90, 0, 0, 0,129,236, 0, 10, 0, 0,137,226, 83, 49, /* 0x a0 */
|
||||
201, 81,141,131,140, 0, 0, 0,139,115, 24,102,131,123, 16, 3, /* 0x b0 */
|
||||
117, 11, 89, 1,222,181, 16, 3, 91, 72, 1,203, 83, 41,198,139, /* 0x c0 */
|
||||
24,139, 72, 4,131,193, 12, 96, 71,232,163, 4, 0, 0,131,196, /* 0x d0 */
|
||||
24,139, 72, 4,131,193, 12, 96, 71,232,144, 4, 0, 0,131,196, /* 0x d0 */
|
||||
32, 89, 91,129,196, 0, 10, 0, 0, 80, 79, 41,192, 60,175,175, /* 0x e0 */
|
||||
117,252, 80, 80, 80, 80, 80, 80, 80, 80, 41,217,176, 91,255, 39, /* 0x f0 */
|
||||
173,171,133,192,117,250,173,171,133,192,117,250, 87,173,171,131, /* 0x 100 */
|
||||
248, 32,115, 3, 15,179,194,133,192,173,171,117,240,131,239, 8, /* 0x 110 */
|
||||
1,201, 64,243,171, 72,171,171, 95,195, 0, 0, 85, 87,137,207, /* 0x 120 */
|
||||
86,137,198, 83, 57, 8,139,104, 4,115, 8,106,127, 91,106, 1, /* 0x 130 */
|
||||
88,205,128,133,255,116, 11,137,249,138, 69, 0, 69,136, 2, 66, /* 0x 140 */
|
||||
226,247, 91, 1,126, 4, 41, 62, 94, 95, 93,195, 83,141, 92, 36, /* 0x 150 */
|
||||
8,106, 90, 88,205,128, 91,195, 85,137,229, 87, 86,137,199, 83, /* 0x 160 */
|
||||
137,214,131,236, 24,139, 69, 8,131, 58, 0,137, 69,220, 15,132, /* 0x 170 */
|
||||
189, 0, 0, 0,141, 85,228,137,248,185, 12, 0, 0, 0,232,153, /* 0x 180 */
|
||||
255,255,255,131,125,228, 0,139, 69,232,117, 18, 61, 85, 80, 88, /* 0x 190 */
|
||||
33,117, 15,131, 63, 0, 15,132,149, 0, 0, 0,235, 4,133,192, /* 0x 1a0 */
|
||||
117, 8,106,127, 91,106, 1, 88,205,128,139, 77,232,139, 69,228, /* 0x 1b0 */
|
||||
57,193,119,238, 59, 6,119,234, 57,193,115, 88, 15,182, 69,236, /* 0x 1c0 */
|
||||
80,141, 69,224, 80,255,118, 4, 81,255,119, 4,255, 85,220,131, /* 0x 1d0 */
|
||||
196, 20,133,192,117,204,139, 85,224, 59, 85,228,117,196,138, 69, /* 0x 1e0 */
|
||||
237,132,192,116, 37,131,125, 12, 0,116, 31,129,250, 0, 2, 0, /* 0x 1f0 */
|
||||
0,119, 4, 57, 22,117, 19, 15,182,192, 80, 15,182, 69,238, 80, /* 0x 200 */
|
||||
82,255,118, 4,255, 85, 12,131,196, 16,139, 69,232, 1, 71, 4, /* 0x 210 */
|
||||
41, 7,235, 10,139, 86, 4,137,248,232,254,254,255,255,139, 85, /* 0x 220 */
|
||||
228,139, 6, 1, 86, 4, 41,208,133,192,137, 6,233, 61,255,255, /* 0x 230 */
|
||||
255,141,101,244, 91, 94, 95,201,195,133,210,137,209,116, 6,198, /* 0x 240 */
|
||||
0, 0, 64,226,250,195,133,192, 83,137,211,116, 29,168, 1,117, /* 0x 250 */
|
||||
25,139, 16, 57,218,116, 7, 74,117, 11,133,219,116, 7,137, 24, /* 0x 260 */
|
||||
137, 72, 4,235, 5,131,192, 8,235,231, 91,195, 85,137,229, 87, /* 0x 270 */
|
||||
86, 83,131,236, 72,137, 85,224,139, 77,224,137, 69,228,139, 93, /* 0x 280 */
|
||||
224,199, 69,208, 0, 0, 0, 0, 3, 73, 28,139, 69, 8,139, 85, /* 0x 290 */
|
||||
12,137, 69,220, 49,192,102,131,123, 16, 2,137, 85,216,137, 77, /* 0x 2a0 */
|
||||
212,137,202, 15,183, 75, 44, 15,148,192,131,206,255,193,224, 4, /* 0x 2b0 */
|
||||
137,207,131,192, 34, 49,219, 79,137, 69,180,120, 34,131, 58, 1, /* 0x 2c0 */
|
||||
117, 24,139, 66, 8, 57,240,115, 8,139,122, 16,137,198,137,125, /* 0x 2d0 */
|
||||
208, 3, 66, 20, 57,195,115, 2,137,195,131,194, 32,226,222,137, /* 0x 2e0 */
|
||||
247,106, 0,129,231, 0,240,255,255,106, 0, 41,251,255,117,180, /* 0x 2f0 */
|
||||
129,195,255, 15, 0, 0,106, 7,129,227, 0,240,255,255,139, 85, /* 0x 300 */
|
||||
208, 83,137,240, 37,255, 15, 0, 0, 87,137, 93,172,141,180, 2, /* 0x 310 */
|
||||
255, 15, 0, 0,232, 51,254,255,255,137,194,131,196, 24, 1,218, /* 0x 320 */
|
||||
129,230, 0,240,255,255,137, 85,240,137,194, 41,243, 1,242,137, /* 0x 330 */
|
||||
217,137, 69,176,137,211,106, 91, 88,205,128,139,117,176,139, 69, /* 0x 340 */
|
||||
224, 41,254, 49,255,102,131,120, 44, 0, 15,132,221, 1, 0, 0, /* 0x 350 */
|
||||
139, 85,212,139, 2,131,248, 6,117, 23,139, 74, 8,186, 3, 0, /* 0x 360 */
|
||||
0, 0,139, 69,216, 1,241,232,218,254,255,255,233,168, 1, 0, /* 0x 370 */
|
||||
0, 72, 15,133,161, 1, 0, 0,139, 93,212,199, 69,200, 64, 98, /* 0x 380 */
|
||||
81,115,139, 75, 24,139, 67, 8,131,225, 7,139, 83, 16, 1,240, /* 0x 390 */
|
||||
193,225, 2,211,109,200,139, 75, 20,137,195,129,227,255, 15, 0, /* 0x 3a0 */
|
||||
0,137, 85,232, 1,218, 1,193,137, 85,196,139, 85,212,137, 69, /* 0x 3b0 */
|
||||
236, 41,216,137, 69,192,139, 66, 4,131,101,200, 7, 41,216,131, /* 0x 3c0 */
|
||||
125,220, 1, 80,255,117,228, 25,192,137, 77,188,131,224,224,137, /* 0x 3d0 */
|
||||
93,184,131,192, 50,131,125,220, 0, 80,139, 69,196,106, 3,116, /* 0x 3e0 */
|
||||
3,131,192, 3, 80,255,117,192,232, 95,253,255,255,131,196, 24, /* 0x 3f0 */
|
||||
57, 69,192, 15,133,198, 0, 0, 0,131,125,220, 0,116, 34,139, /* 0x 400 */
|
||||
77,212, 49,192,246, 65, 24, 1,116, 6,139, 69,228,131,192, 2, /* 0x 410 */
|
||||
80,139, 69,220,255,117,228,141, 85,232,232, 57,253,255,255, 88, /* 0x 420 */
|
||||
90,139, 85,184,139, 69,192,232, 13,254,255,255,139, 93,196,139, /* 0x 430 */
|
||||
69,192,247,219, 3, 69,196,129,227,255, 15, 0, 0,137,218,137, /* 0x 440 */
|
||||
93,184,232,242,253,255,255,131,125,220, 0,116, 96,139, 69,212, /* 0x 450 */
|
||||
131, 56, 1,117, 88,246, 64, 24, 1,116, 82,139, 80, 20,139, 88, /* 0x 460 */
|
||||
8,141, 4, 26,141, 12, 48,139, 69,212, 59, 80, 16,117, 14,137, /* 0x 470 */
|
||||
200,247,216, 37,255, 15, 0, 0,131,248, 3,119, 16,139, 85,212, /* 0x 480 */
|
||||
107,198, 52,131,122, 4, 0,141, 76, 3, 12,117, 15,139, 1, 61, /* 0x 490 */
|
||||
205,128, 97,195,116, 6,199, 1,205,128, 97,195,133,201,116, 13, /* 0x 4a0 */
|
||||
139, 69,216, 49,210,131,224,254,232,153,253,255,255,139, 93,192, /* 0x 4b0 */
|
||||
139, 77,196,139, 85,200,106,125, 88,205,128,133,192,116, 8,106, /* 0x 4c0 */
|
||||
127, 91,106, 1, 88,205,128,139, 69,196, 3, 69,184, 1, 69,192, /* 0x 4d0 */
|
||||
139, 69,188, 57, 69,192,115, 31,106, 0, 43, 69,192,106, 0,106, /* 0x 4e0 */
|
||||
50,255,117,200, 80,255,117,192,232, 95,252,255,255,131,196, 24, /* 0x 4f0 */
|
||||
57, 69,192,116, 36,235,200,131,125,220, 0,116, 28,131, 69,196, /* 0x 500 */
|
||||
3,129,101,196,255, 15, 0, 0,131,125,196, 3,119, 11,139, 93, /* 0x 510 */
|
||||
192,139, 77,196,106, 91, 88,205,128,139, 85,224, 71,131, 69,212, /* 0x 520 */
|
||||
32, 15,183, 66, 44, 57,199, 15,140, 35,254,255,255,131,125,220, /* 0x 530 */
|
||||
0,117, 17,139, 93,228,106, 6, 88,205,128,133,192,116, 23,233, /* 0x 540 */
|
||||
123,255,255,255,139,125,224,102,131,127, 16, 3,116, 8,139, 93, /* 0x 550 */
|
||||
240,106, 45, 88,205,128,131,125, 16, 0,116, 5,139, 69, 16,137, /* 0x 560 */
|
||||
48,139, 85,224, 3,114, 24,141,101,244, 91,137,240, 94, 95,201, /* 0x 570 */
|
||||
195, 85,137,229, 87, 86, 83,131,236, 12,139,125, 28,106, 0,139, /* 0x 580 */
|
||||
69, 16,141, 87, 52,139,117, 8, 80,139, 93, 32,137, 69,236,137, /* 0x 590 */
|
||||
85,232,141, 69, 32,141, 85, 24,232,187,251,255,255,139, 69, 12, /* 0x 5a0 */
|
||||
15,183, 79, 44,186, 5, 0, 0, 0,137, 69, 32,137,240, 41, 93, /* 0x 5b0 */
|
||||
36,232,144,252,255,255, 15,183, 79, 42,186, 4, 0, 0, 0,137, /* 0x 5c0 */
|
||||
240,232,128,252,255,255,139, 93,232,139, 77, 40,186, 3, 0, 0, /* 0x 5d0 */
|
||||
0, 3, 75, 8,137,240,131,193, 52,232,104,252,255,255,141, 69, /* 0x 5e0 */
|
||||
240,137,250, 80,141, 69, 32, 86, 80,139, 69,236,232,123,252,255, /* 0x 5f0 */
|
||||
255,186, 9, 0, 0, 0,137,193,137,195,137,240,232, 69,252,255, /* 0x 600 */
|
||||
255,102,139, 79, 44,131,196, 20, 49,210,102,133,201,116, 93,139, /* 0x 610 */
|
||||
69,232,131, 56, 3,117, 73,139, 93,240, 49,201, 3, 88, 8,137, /* 0x 620 */
|
||||
202,106, 5, 88,205,128,133,192,137,198,120, 20,102,186, 0, 2, /* 0x 630 */
|
||||
137,195,137,249,106, 3, 88,205,128, 61, 0, 2, 0, 0,116, 10, /* 0x 640 */
|
||||
106,127, 91,106, 1, 88,205,128,235,246,106, 0,137,250,106, 0, /* 0x 650 */
|
||||
137,240,106, 0,232, 19,252,255,255,131,196, 12,137,195,235, 12, /* 0x 660 */
|
||||
66, 15,183,193,131, 69,232, 32, 57,194,124,163,141,101,244,137, /* 0x 670 */
|
||||
216, 91, 94, 95,201,195 /* 0x 680 */
|
||||
1,201, 64,243,171, 72,171,171, 95,195, 83,141, 92, 36, 8,106, /* 0x 120 */
|
||||
90, 88,205,128, 91,195, 0, 0, 87, 86,137,206, 83,137,195, 57, /* 0x 130 */
|
||||
8,139,120, 4,115, 10,106,127, 91,106, 1, 88,205,128,235,254, /* 0x 140 */
|
||||
133,201,116, 8,138, 7, 71,136, 2, 66,226,248, 1,115, 4, 41, /* 0x 150 */
|
||||
51, 91, 94, 95,195, 85,137,229, 87, 86,137,198, 83,137,211,131, /* 0x 160 */
|
||||
236, 24,139, 69, 8,139,125, 12,137, 69,220,131, 58, 0, 15,132, /* 0x 170 */
|
||||
184, 0, 0, 0,141, 85,228,185, 12, 0, 0, 0,137,240,232,165, /* 0x 180 */
|
||||
255,255,255,139, 69,228,139, 77,232,133,192,117, 19,129,249, 85, /* 0x 190 */
|
||||
80, 88, 33,117, 15,131, 62, 0, 15,132,142, 0, 0, 0,235, 4, /* 0x 1a0 */
|
||||
133,201,117, 10,106,127, 91,106, 1, 88,205,128,235,254, 57,193, /* 0x 1b0 */
|
||||
119,242, 59, 3,119,238, 57,193,115, 85, 15,182, 69,236, 80,141, /* 0x 1c0 */
|
||||
69,224, 80,255,115, 4, 81,255,118, 4,255, 85,220,131,196, 20, /* 0x 1d0 */
|
||||
133,192,117,208,139, 85,224, 59, 85,228,117,200,138, 69,237,132, /* 0x 1e0 */
|
||||
192,116, 34,133,255,116, 30,129,250, 0, 2, 0, 0,119, 4, 57, /* 0x 1f0 */
|
||||
19,117, 18, 15,182,192, 80, 15,182, 69,238, 80, 82,255,115, 4, /* 0x 200 */
|
||||
255,215,131,196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 10,139, /* 0x 210 */
|
||||
83, 4,137,240,232, 15,255,255,255,139, 85,228,139, 3, 1, 83, /* 0x 220 */
|
||||
4, 41,208,133,192,137, 3,233, 66,255,255,255,141,101,244, 91, /* 0x 230 */
|
||||
94, 95,201,195,133,210,137,209,116, 6,198, 0, 0, 64,226,250, /* 0x 240 */
|
||||
195,133,192, 83,137,211,116, 29,168, 1,117, 25,139, 16, 57,218, /* 0x 250 */
|
||||
116, 7, 74,117, 11,133,219,116, 7,137, 24,137, 72, 4,235, 5, /* 0x 260 */
|
||||
131,192, 8,235,231, 91,195, 85,137,229, 87, 86, 83,131,236, 72, /* 0x 270 */
|
||||
137, 85,224,139, 77,224,137, 69,228,139, 93,224,199, 69,204, 0, /* 0x 280 */
|
||||
0, 0, 0, 3, 73, 28,139, 69, 8,139, 85, 12,137, 69,220, 49, /* 0x 290 */
|
||||
192,102,131,123, 16, 2,137, 85,216,137, 77,212,137,202, 15,183, /* 0x 2a0 */
|
||||
75, 44, 15,148,192,131,206,255,193,224, 4,137,207,131,192, 34, /* 0x 2b0 */
|
||||
49,219, 79,137, 69,184,120, 34,131, 58, 1,117, 24,139, 66, 8, /* 0x 2c0 */
|
||||
57,240,115, 8,139,122, 16,137,198,137,125,204, 3, 66, 20, 57, /* 0x 2d0 */
|
||||
195,115, 2,137,195,131,194, 32,226,222,137,247,106, 0,129,231, /* 0x 2e0 */
|
||||
0,240,255,255,106, 0, 41,251,255,117,184,129,195,255, 15, 0, /* 0x 2f0 */
|
||||
0,106, 7,129,227, 0,240,255,255,139, 85,204, 83,137,240, 37, /* 0x 300 */
|
||||
255, 15, 0, 0, 87,137, 93,172,141,180, 2,255, 15, 0, 0,232, /* 0x 310 */
|
||||
6,254,255,255,137,194,131,196, 24, 1,218,129,230, 0,240,255, /* 0x 320 */
|
||||
255,137, 85,240,137,194, 41,243, 1,242,137,217,137, 69,176,137, /* 0x 330 */
|
||||
211,106, 91, 88,205,128,139, 69,176,199, 69,196, 0, 0, 0, 0, /* 0x 340 */
|
||||
139, 85,224, 41,248,102,131,122, 44, 0,137, 69,208, 15,132,195, /* 0x 350 */
|
||||
1, 0, 0,139, 77,212,139, 1,131,248, 6,117, 27,139, 93,212, /* 0x 360 */
|
||||
186, 3, 0, 0, 0,139, 77,208, 3, 75, 8,139, 69,216,232,206, /* 0x 370 */
|
||||
254,255,255,233,135, 1, 0, 0, 72, 15,133,128, 1, 0, 0,139, /* 0x 380 */
|
||||
125,212,199, 69,192, 64, 98, 81,115,139, 69,208,139, 79, 24, 3, /* 0x 390 */
|
||||
71, 8,131,225, 7,139, 87, 16,193,225, 2,211,109,192,137,195, /* 0x 3a0 */
|
||||
139, 79, 20,137,199,129,231,255, 15, 0, 0,137, 85,232,141, 52, /* 0x 3b0 */
|
||||
58,139, 85,212, 1,193,137, 69,236,139, 66, 4, 41,251,131,101, /* 0x 3c0 */
|
||||
192, 7, 41,248,131,125,220, 1, 80,255,117,228, 25,192,137, 77, /* 0x 3d0 */
|
||||
188,131,224,224,131,192, 50,131,125,220, 0, 80,137,240,106, 3, /* 0x 3e0 */
|
||||
116, 3,141, 70, 3, 80, 83,232, 46,253,255,255,131,196, 24, 57, /* 0x 3f0 */
|
||||
195, 15,133,186, 0, 0, 0,131,125,220, 0,116, 34,139, 77,212, /* 0x 400 */
|
||||
49,192,246, 65, 24, 1,116, 6,139, 69,228,131,192, 2, 80,139, /* 0x 410 */
|
||||
69,220,255,117,228,141, 85,232,232, 56,253,255,255, 88, 90,137, /* 0x 420 */
|
||||
250,137,247,137,216,247,223,232, 8,254,255,255,129,231,255, 15, /* 0x 430 */
|
||||
0, 0,141, 4, 51,137,250,137,125,180,232,245,253,255,255,131, /* 0x 440 */
|
||||
125,220, 0,116, 94,139, 69,212,131, 56, 1,117, 86,246, 64, 24, /* 0x 450 */
|
||||
1,116, 80,139, 80, 20,139,120, 8,141, 12, 58, 3, 77,208, 59, /* 0x 460 */
|
||||
80, 16,117, 14,137,200,247,216, 37,255, 15, 0, 0,131,248, 3, /* 0x 470 */
|
||||
119, 17,139, 85,212,107, 69,208, 52,131,122, 4, 0,141, 76, 7, /* 0x 480 */
|
||||
12,117, 15,139, 1, 61,205,128, 97,195,116, 6,199, 1,205,128, /* 0x 490 */
|
||||
97,195,133,201,116, 13,139, 69,216, 49,210,131,224,254,232,158, /* 0x 4a0 */
|
||||
253,255,255,137,241,139, 85,192,106,125, 88,205,128,133,192,116, /* 0x 4b0 */
|
||||
10,106,127, 91,106, 1, 88,205,128,235,254,139,125,180,141, 4, /* 0x 4c0 */
|
||||
62, 1,195, 59, 93,188,115, 30,106, 0,106, 0,106, 50,255,117, /* 0x 4d0 */
|
||||
192, 41, 93,188,255,117,188, 83,232, 61,252,255,255,131,196, 24, /* 0x 4e0 */
|
||||
57,195,116, 27,235,203,131,125,220, 0,116, 19,141, 78, 3,129, /* 0x 4f0 */
|
||||
225,255, 15, 0, 0,131,249, 3,119, 5,106, 91, 88,205,128,139, /* 0x 500 */
|
||||
85,224,255, 69,196, 15,183, 66, 44,131, 69,212, 32, 57, 69,196, /* 0x 510 */
|
||||
15,140, 61,254,255,255,131,125,220, 0,117, 14,139, 93,228,106, /* 0x 520 */
|
||||
6, 88,205,128,133,192,116, 20,235,135,139,125,224,102,131,127, /* 0x 530 */
|
||||
16, 3,116, 8,139, 93,240,106, 45, 88,205,128,131,125, 16, 0, /* 0x 540 */
|
||||
116, 8,139, 85,208,139, 69, 16,137, 16,139, 77,224,139, 73, 24, /* 0x 550 */
|
||||
1, 77,208,139, 69,208,141,101,244, 91, 94, 95,201,195, 85,137, /* 0x 560 */
|
||||
229, 87, 86, 83,131,236, 12,139,125, 28,106, 0,139, 69, 16,141, /* 0x 570 */
|
||||
87, 52,139,117, 8, 80,139, 93, 32,137, 69,236,137, 85,232,141, /* 0x 580 */
|
||||
69, 32,141, 85, 24,232,203,251,255,255,139, 69, 12, 15,183, 79, /* 0x 590 */
|
||||
44,186, 5, 0, 0, 0,137, 69, 32,137,240, 41, 93, 36,232,158, /* 0x 5a0 */
|
||||
252,255,255, 15,183, 79, 42,186, 4, 0, 0, 0,137,240,232,142, /* 0x 5b0 */
|
||||
252,255,255,139, 93,232,139, 77, 40,186, 3, 0, 0, 0, 3, 75, /* 0x 5c0 */
|
||||
8,137,240,131,193, 52,232,118,252,255,255,141, 69,240,137,250, /* 0x 5d0 */
|
||||
80,141, 69, 32, 86, 80,139, 69,236,232,137,252,255,255,186, 9, /* 0x 5e0 */
|
||||
0, 0, 0,137,193,137,195,137,240,232, 83,252,255,255,102,139, /* 0x 5f0 */
|
||||
79, 44,131,196, 20, 49,210,102,133,201,116, 93,139, 69,232,131, /* 0x 600 */
|
||||
56, 3,117, 73,139, 93,240, 49,201, 3, 88, 8,137,202,106, 5, /* 0x 610 */
|
||||
88,205,128,133,192,137,198,120, 20,102,186, 0, 2,137,195,137, /* 0x 620 */
|
||||
249,106, 3, 88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, 91, /* 0x 630 */
|
||||
106, 1, 88,205,128,235,254,106, 0,137,250,106, 0,137,240,106, /* 0x 640 */
|
||||
0,232, 33,252,255,255,131,196, 12,137,195,235, 12, 66, 15,183, /* 0x 650 */
|
||||
193,131, 69,232, 32, 57,194,124,163,141,101,244,137,216, 91, 94, /* 0x 660 */
|
||||
95,201,195 /* 0x 670 */
|
||||
};
|
||||
|
||||
@@ -59,4 +59,16 @@ EXTERN upx_main
|
||||
call upx_main ; Call the UPX main function
|
||||
hlt ; Crash if somehow upx_main does return
|
||||
|
||||
%define __NR_mmap 90
|
||||
|
||||
global mmap
|
||||
mmap:
|
||||
push ebx
|
||||
lea ebx, [2*4 + esp]
|
||||
push byte __NR_mmap
|
||||
pop eax
|
||||
int 0x80
|
||||
pop ebx
|
||||
ret
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
|
||||
+15
-15
@@ -28,8 +28,8 @@
|
||||
|
||||
|
||||
#define LINUX_I386EXEC_FOLD_SIZE 947
|
||||
#define LINUX_I386EXEC_FOLD_ADLER32 0xf7998d99
|
||||
#define LINUX_I386EXEC_FOLD_CRC32 0x4ada49e8
|
||||
#define LINUX_I386EXEC_FOLD_ADLER32 0x14ec8f58
|
||||
#define LINUX_I386EXEC_FOLD_CRC32 0x81e80623
|
||||
|
||||
unsigned char linux_i386exec_fold[947] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
||||
@@ -39,10 +39,10 @@ unsigned char linux_i386exec_fold[947] = {
|
||||
0, 16, 64, 0,179, 3, 0, 0,180, 3, 0, 0, 7, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 50 */
|
||||
88, 88, 88,137,225,141, 84,132, 4,139,115, 24,131,195, 96, 41, /* 0x 60 */
|
||||
222,141,125, 2, 96,232,197, 0, 0, 0,244, 0, 83,137,195,139, /* 0x 70 */
|
||||
76, 36, 8,136,208,131,224, 31, 60, 25,118, 3,131,232, 43,131, /* 0x 80 */
|
||||
192, 65, 75,136, 3,137,208,193,232, 5,137,194,226,229, 91,195, /* 0x 90 */
|
||||
83,141, 92, 36, 8,106, 90, 88,205,128, 91,195, 85, 49,201,137, /* 0x a0 */
|
||||
222,141,125, 2, 96,232,197, 0, 0, 0,244, 83,141, 92, 36, 8, /* 0x 70 */
|
||||
106, 90, 88,205,128, 91,195, 0, 83,137,195,139, 76, 36, 8,136, /* 0x 80 */
|
||||
208,131,224, 31, 60, 25,118, 3,131,232, 43,131,192, 65, 75,136, /* 0x 90 */
|
||||
3,137,208,193,232, 5,137,194,226,229, 91,195, 85, 49,201,137, /* 0x a0 */
|
||||
229, 87, 86,137,202, 83,131,236, 32,139, 93, 8,106, 5, 88,205, /* 0x b0 */
|
||||
128,133,192,137,199,120,108,199, 69,212, 47,112,114,111,199, 69, /* 0x c0 */
|
||||
216, 99, 47, 0, 0,106, 20, 88,205,128,141, 85,218,141,117,212, /* 0x d0 */
|
||||
@@ -58,17 +58,17 @@ unsigned char linux_i386exec_fold[947] = {
|
||||
12,129,125,228, 85, 80, 88, 51,137,117,152, 15,133,100, 1, 0, /* 0x 170 */
|
||||
0,199, 69,196, 47,116,109,112,199, 69,200, 47,117,112,120,141, /* 0x 180 */
|
||||
77,215,106, 20, 88,205,128,137,194,106, 4,137,200,141,117,211, /* 0x 190 */
|
||||
232,215,254,255,255,141, 93,172,137,199,198, 69,215, 0, 51,125, /* 0x 1a0 */
|
||||
232,227,254,255,255,141, 93,172,137,199,198, 69,215, 0, 51,125, /* 0x 1a0 */
|
||||
228, 49,201,106, 78, 88,205,128, 51,125,172,139, 85,176,137,240, /* 0x 1b0 */
|
||||
199, 4, 36, 7, 0, 0, 0,193,226, 12,141, 93,196, 49,250,232, /* 0x 1c0 */
|
||||
168,254,255,255, 88,106, 10, 88,205,128,131,248,254,116, 8,133, /* 0x 1d0 */
|
||||
180,254,255,255, 88,106, 10, 88,205,128,131,248,254,116, 8,133, /* 0x 1d0 */
|
||||
192, 15,133,254, 0, 0, 0,185,194, 0, 0, 0,186,192, 1, 0, /* 0x 1e0 */
|
||||
0,141, 93,196,106, 5, 88,205,128,137, 69,136,139, 77,232,137, /* 0x 1f0 */
|
||||
195,106, 93, 88,205,128,133,192, 15,133,207, 0, 0, 0,106, 0, /* 0x 200 */
|
||||
83,106, 1,106, 3, 81,106, 0,232,131,254,255,255,131,196, 24, /* 0x 210 */
|
||||
83,106, 1,106, 3, 81,106, 0,232, 94,254,255,255,131,196, 24, /* 0x 210 */
|
||||
61, 0,240,255,255,137, 69,132, 15,135,175, 0, 0, 0,139, 69, /* 0x 220 */
|
||||
232,106, 0,106, 0, 5,255, 15, 0, 0,106, 50, 37, 0,240,255, /* 0x 230 */
|
||||
255,106, 3, 3, 69,132,104, 0, 16, 0, 0, 80,232, 79,254,255, /* 0x 240 */
|
||||
255,106, 3, 3, 69,132,104, 0, 16, 0, 0, 80,232, 42,254,255, /* 0x 240 */
|
||||
255,131,196, 24,141,125,180,139,117,152,165,165,165,139, 77,180, /* 0x 250 */
|
||||
131,109,148, 12,133,201,137,117,152,139, 85,184,117, 20,129,250, /* 0x 260 */
|
||||
85, 80, 88, 33,117,103,131,125,232, 0, 15,132,141, 0, 0, 0, /* 0x 270 */
|
||||
@@ -78,17 +78,17 @@ unsigned char linux_i386exec_fold[947] = {
|
||||
44,235, 8,139,125,132,139,117,152,243,164,139, 77,180,139, 93, /* 0x 2b0 */
|
||||
132,106, 91, 88,205,128,139, 69,184, 1,203, 41, 69,148, 41, 77, /* 0x 2c0 */
|
||||
232, 1, 69,152,131,125,148, 0,137, 93,132,121, 18,141, 93,196, /* 0x 2d0 */
|
||||
106, 10, 88,205,128,106,127, 91,106, 1, 88,205,128,235,246,139, /* 0x 2e0 */
|
||||
106, 10, 88,205,128,106,127, 91,106, 1, 88,205,128,235,254,139, /* 0x 2e0 */
|
||||
77,152,139, 93,144,129,225, 0,240,255,255, 43, 77,144,106, 91, /* 0x 2f0 */
|
||||
88,205,128, 1,203,137, 93,144,233, 71,255,255,255,139, 93,136, /* 0x 300 */
|
||||
106, 6, 88,205,128,133,192,117,196,255,117, 28,255,117, 32,141, /* 0x 310 */
|
||||
117,196, 86,232,132,253,255,255,133,192,120,177,106, 2, 88,205, /* 0x 320 */
|
||||
128,133,192,117, 49,106, 2, 88,205,128,133,192,137,193,117, 31, /* 0x 330 */
|
||||
128,133,192,117, 51,106, 2, 88,205,128,133,192,137,193,117, 31, /* 0x 330 */
|
||||
199, 69,160, 85, 80, 88, 52,184,162, 0, 0, 0,141, 93,160,199, /* 0x 340 */
|
||||
69,164, 0, 0, 0, 0,205,128,137,243,106, 10, 88,205,128, 49, /* 0x 350 */
|
||||
219,106, 1, 88,205,128, 49,201,131,203,255,137,202,106, 7, 88, /* 0x 360 */
|
||||
205,128,141, 93,196,139, 77, 32,139, 85, 28,106, 11, 88,205,128, /* 0x 370 */
|
||||
233, 88,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 380 */
|
||||
219,106, 1, 88,205,128,235,254, 49,201,131,203,255,137,202,106, /* 0x 360 */
|
||||
7, 88,205,128,141, 93,196,139, 77, 32,139, 85, 28,106, 11, 88, /* 0x 370 */
|
||||
205,128,233, 86,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 380 */
|
||||
87,137,215,106, 10,252, 89,232, 5, 0, 0, 0,136, 39,151, 95, /* 0x 390 */
|
||||
195,153,247,241, 82,133,192,116, 5,232,243,255,255,255, 88, 4, /* 0x 3a0 */
|
||||
48,170,195 /* 0x 3b0 */
|
||||
|
||||
@@ -50,6 +50,7 @@ reg_mq = 38*4
|
||||
reg_vrsave = 39*4
|
||||
|
||||
|
||||
_start: .globl _start # ignored, but silence "cannot find entry symbol _start" from ld
|
||||
/* In:
|
||||
r31= &decompress; also 8+ (char *)&(offset to {l_info; p_info; b_info})
|
||||
*/
|
||||
|
||||
+42
-43
@@ -1,4 +1,4 @@
|
||||
/* fold_machppc32.h -- created from fold_machppc32.bin, 1544 (0x608) bytes
|
||||
/* fold_machppc32.h -- created from fold_machppc32.bin, 1528 (0x5f8) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,11 +27,11 @@
|
||||
*/
|
||||
|
||||
|
||||
#define FOLD_MACHPPC32_SIZE 1544
|
||||
#define FOLD_MACHPPC32_ADLER32 0xa57805a9
|
||||
#define FOLD_MACHPPC32_CRC32 0x2fb8902f
|
||||
#define FOLD_MACHPPC32_SIZE 1528
|
||||
#define FOLD_MACHPPC32_ADLER32 0xb665fdb7
|
||||
#define FOLD_MACHPPC32_CRC32 0x0feee296
|
||||
|
||||
unsigned char fold_machppc32[1544] = {
|
||||
unsigned char fold_machppc32[1528] = {
|
||||
72, 0, 0,105, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 0 */
|
||||
77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8, /* 0x 10 */
|
||||
124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252, /* 0x 20 */
|
||||
@@ -42,7 +42,7 @@ unsigned char fold_machppc32[1544] = {
|
||||
124, 41, 11,120,125, 8, 2,166,128,159,255,248,124,100,248, 80, /* 0x 70 */
|
||||
128,195, 0, 24, 40, 6, 8, 0, 65,129, 0, 8, 56,192, 8, 0, /* 0x 80 */
|
||||
124, 61, 11,120,124, 38, 8, 80,124, 37, 11,120, 56, 33,255,232, /* 0x 90 */
|
||||
127,231,251,120, 72, 0, 4, 37,127,161,235,120,128, 67, 0, 0, /* 0x a0 */
|
||||
127,231,251,120, 72, 0, 4, 33,127,161,235,120,128, 67, 0, 0, /* 0x a0 */
|
||||
124, 73, 3,166,128, 67, 0,136,124, 79,241, 32,128, 67, 0,140, /* 0x b0 */
|
||||
124, 65, 3,166,128, 67, 0,144,124, 72, 3,166,184,131, 0, 24, /* 0x c0 */
|
||||
128, 3, 0, 8,128, 67, 0, 16,128, 99, 0, 20, 78,128, 4, 32, /* 0x d0 */
|
||||
@@ -72,7 +72,7 @@ unsigned char fold_machppc32[1544] = {
|
||||
127,132, 0, 0, 64,190,255,172,136,193, 0, 25, 49, 61,255,255, /* 0x 250 */
|
||||
124, 9,233, 16,125, 38, 0,208, 85, 41, 15,254,125, 43, 0, 57, /* 0x 260 */
|
||||
65,162, 0, 20,128,127, 0, 4,127,168, 3,166,136,161, 0, 26, /* 0x 270 */
|
||||
78,128, 0, 33,129, 97, 0, 20,128, 30, 0, 4,129, 62, 0, 0, /* 0x 280 */
|
||||
78,128, 0, 33,128, 30, 0, 4,129, 97, 0, 20,129, 62, 0, 0, /* 0x 280 */
|
||||
124, 0, 90, 20,125, 43, 72, 80,144, 30, 0, 4,145, 62, 0, 0, /* 0x 290 */
|
||||
72, 0, 0, 16,124, 4, 3,120,127,195,243,120, 75,255,254,117, /* 0x 2a0 */
|
||||
129, 97, 0, 16,129, 63, 0, 0,128, 31, 0, 4,125, 43, 72, 80, /* 0x 2b0 */
|
||||
@@ -82,51 +82,50 @@ unsigned char fold_machppc32[1544] = {
|
||||
190, 97, 0, 28,125,128, 0, 38, 58,224, 0, 0,124,122, 27,120, /* 0x 2f0 */
|
||||
144, 1, 0, 84,124,155, 35,120,128, 3, 0, 16,124,179, 43,120, /* 0x 300 */
|
||||
145,129, 0, 24,124,212, 51,120,127,151, 0, 64,124,245, 59,120, /* 0x 310 */
|
||||
125, 22, 67,120, 59,195, 0, 28, 59, 0, 0, 0, 64,156, 1,124, /* 0x 320 */
|
||||
129, 62, 0, 0, 47,137, 0, 1, 64,190, 1, 48,129, 62, 0, 24, /* 0x 330 */
|
||||
125, 22, 67,120, 59,195, 0, 28, 59, 0, 0, 0, 64,156, 1,120, /* 0x 320 */
|
||||
129, 62, 0, 0, 47,137, 0, 1, 64,190, 1, 44,129, 62, 0, 24, /* 0x 330 */
|
||||
129,126, 0, 36, 85, 61, 5, 62,128, 30, 0, 28,127,139,234, 20, /* 0x 340 */
|
||||
145, 97, 0, 8, 46, 28, 0, 0,127, 41, 2, 20,145, 33, 0, 12, /* 0x 350 */
|
||||
127,253, 72, 80, 65,146, 0, 72, 47,155, 0, 0, 64,190, 0, 16, /* 0x 360 */
|
||||
47,139, 0, 0, 56,192, 0, 18, 64,158, 0, 8, 56,192, 16, 18, /* 0x 370 */
|
||||
47,139, 0, 0,126,103,155,120, 64,158, 0, 8, 56,224,255,255, /* 0x 380 */
|
||||
129, 30, 0, 32,127,227,251,120,127,132,227,120, 56,160, 0, 3, /* 0x 390 */
|
||||
75,255,253, 65,127,159, 24, 0, 64,158, 0,128, 47,155, 0, 0, /* 0x 3a0 */
|
||||
75,255,253, 65,127,159, 24, 0, 64,158, 0,124, 47,155, 0, 0, /* 0x 3a0 */
|
||||
65,158, 0, 52,128, 30, 0, 36, 47,128, 0, 0, 65,158, 0, 40, /* 0x 3b0 */
|
||||
128, 30, 0, 32, 47,128, 0, 0, 64,158, 0, 8,147,244, 0, 0, /* 0x 3c0 */
|
||||
127, 99,219,120, 56,129, 0, 8,126,165,171,120,126,198,179,120, /* 0x 3d0 */
|
||||
75,255,253,173,124, 28, 0,208,125, 63,226, 20,112, 29, 15,255, /* 0x 3e0 */
|
||||
65,130, 0, 24,127,169, 3,166, 56, 0, 0, 0,152, 9, 0, 0, /* 0x 3f0 */
|
||||
57, 41, 0, 1, 66, 0,255,248, 65,178, 0, 40,128,190, 0, 44, /* 0x 400 */
|
||||
127,227,251,120,127,132,227,120, 76,198, 49,130, 75,255,252,253, /* 0x 410 */
|
||||
47,131, 0, 0, 65,190, 0, 12, 56, 96, 0,127, 75,255,252,205, /* 0x 420 */
|
||||
124, 28,234, 20,127,255, 2, 20,127,159,200, 64, 64,188, 0, 84, /* 0x 430 */
|
||||
128,190, 0, 44,124,159,200, 80,127,227,251,120, 56,192, 16, 18, /* 0x 440 */
|
||||
56,224,255,255, 57, 0, 0, 0, 75,255,252,137,127,159, 24, 0, /* 0x 450 */
|
||||
65,190, 0, 48, 75,255,255,196, 56, 9,255,252, 43,128, 0, 1, /* 0x 460 */
|
||||
65,157, 0, 32,128, 30, 0, 8, 47,128, 0, 1, 64,190, 0, 20, /* 0x 470 */
|
||||
128, 30, 0, 12, 47,128, 0, 40, 64,190, 0, 8, 58,254, 0, 16, /* 0x 480 */
|
||||
128, 26, 0, 16, 59, 24, 0, 1,127,152, 0, 64,128, 30, 0, 4, /* 0x 490 */
|
||||
127,222, 2, 20, 75,255,254,136,128, 1, 0, 84,126,227,187,120, /* 0x 4a0 */
|
||||
129,129, 0, 24,186, 97, 0, 28,124, 8, 3,166, 56, 33, 0, 80, /* 0x 4b0 */
|
||||
125,128,129, 32, 78,128, 0, 32,148, 33,255,192,124, 8, 2,166, /* 0x 4c0 */
|
||||
144,129, 0, 8,191, 65, 0, 40,129, 97, 0, 8,124,191, 43,120, /* 0x 4d0 */
|
||||
144, 1, 0, 68, 56, 3, 0, 24, 57,107,255,232,144, 1, 0, 20, /* 0x 4e0 */
|
||||
145, 97, 0, 16,124,253, 59,120,128, 3, 0, 24,125, 60, 75,120, /* 0x 4f0 */
|
||||
200, 1, 0, 16,125, 27, 67,120,124,229, 59,120, 56, 97, 0, 16, /* 0x 500 */
|
||||
56,129, 0, 24,124,218, 51,120, 56,192, 0, 0,144, 1, 0, 24, /* 0x 510 */
|
||||
216, 1, 0, 32, 59,192, 0, 0,147,225, 0, 28, 75,255,252, 97, /* 0x 520 */
|
||||
127,167,235,120,127,104,219,120,127,227,251,120,127,134,227,120, /* 0x 530 */
|
||||
56,129, 0, 32, 56,160,255,255, 75,255,253,161,128, 31, 0, 16, /* 0x 540 */
|
||||
124,123, 27,120, 59,191, 0, 28,127,158, 0, 64, 64,156, 0,148, /* 0x 550 */
|
||||
128, 29, 0, 0, 59,222, 0, 1, 56,128, 0, 0, 56,160, 0, 0, /* 0x 560 */
|
||||
47,128, 0, 14, 64,190, 0,104,128,125, 0, 8,124,125, 26, 20, /* 0x 570 */
|
||||
76,198, 49,130, 75,255,251,133,127,228,251,120,124,124, 27,121, /* 0x 580 */
|
||||
127, 69,211,120, 65,128, 0, 44, 76,198, 49,130, 75,255,251,101, /* 0x 590 */
|
||||
56,128, 0, 0,127,154, 24, 0,127,133,227,120,127,227,251,120, /* 0x 5a0 */
|
||||
56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, 65,190, 0, 12, /* 0x 5b0 */
|
||||
56, 96, 0,127, 75,255,251, 53, 75,255,253, 33,124,123, 27,120, /* 0x 5c0 */
|
||||
127,131,227,120, 76,198, 49,130, 75,255,251, 57,128, 31, 0, 16, /* 0x 5d0 */
|
||||
129, 61, 0, 4,127,158, 0, 64,127,189, 74, 20, 75,255,255,112, /* 0x 5e0 */
|
||||
128, 1, 0, 68,127, 99,219,120,187, 65, 0, 40, 56, 33, 0, 64, /* 0x 5f0 */
|
||||
124, 8, 3,166, 78,128, 0, 32 /* 0x 600 */
|
||||
57, 41, 0, 1, 66, 0,255,248, 65,178, 0, 36,128,190, 0, 44, /* 0x 400 */
|
||||
127,227,251,120,127,132,227,120, 75,255,253, 1, 47,131, 0, 0, /* 0x 410 */
|
||||
65,190, 0, 12, 56, 96, 0,127, 75,255,252,209,124, 28,234, 20, /* 0x 420 */
|
||||
127,255, 2, 20,127,159,200, 64, 64,188, 0, 84,128,190, 0, 44, /* 0x 430 */
|
||||
124,159,200, 80,127,227,251,120, 56,192, 16, 18, 56,224,255,255, /* 0x 440 */
|
||||
57, 0, 0, 0, 75,255,252,141,127,159, 24, 0, 65,190, 0, 48, /* 0x 450 */
|
||||
75,255,255,196, 56, 9,255,252, 43,128, 0, 1, 65,157, 0, 32, /* 0x 460 */
|
||||
128, 30, 0, 8, 47,128, 0, 1, 64,190, 0, 20,128, 30, 0, 12, /* 0x 470 */
|
||||
47,128, 0, 40, 64,190, 0, 8, 58,254, 0, 16,128, 26, 0, 16, /* 0x 480 */
|
||||
59, 24, 0, 1,127,152, 0, 64,128, 30, 0, 4,127,222, 2, 20, /* 0x 490 */
|
||||
75,255,254,140,128, 1, 0, 84,126,227,187,120,129,129, 0, 24, /* 0x 4a0 */
|
||||
186, 97, 0, 28,124, 8, 3,166, 56, 33, 0, 80,125,128,129, 32, /* 0x 4b0 */
|
||||
78,128, 0, 32,148, 33,255,192,124, 8, 2,166,144,129, 0, 8, /* 0x 4c0 */
|
||||
191, 65, 0, 40,129, 97, 0, 8,124,191, 43,120,144, 1, 0, 68, /* 0x 4d0 */
|
||||
56, 3, 0, 24, 57,107,255,232,144, 1, 0, 20,145, 97, 0, 16, /* 0x 4e0 */
|
||||
124,253, 59,120,128, 3, 0, 24,125, 60, 75,120,200, 1, 0, 16, /* 0x 4f0 */
|
||||
125, 27, 67,120,124,229, 59,120, 56, 97, 0, 16, 56,129, 0, 24, /* 0x 500 */
|
||||
124,218, 51,120, 56,192, 0, 0,144, 1, 0, 24,216, 1, 0, 32, /* 0x 510 */
|
||||
59,192, 0, 0,147,225, 0, 28, 75,255,252,101,127,167,235,120, /* 0x 520 */
|
||||
127,104,219,120,127,227,251,120,127,134,227,120, 56,129, 0, 32, /* 0x 530 */
|
||||
56,160,255,255, 75,255,253,165,128, 31, 0, 16,124,123, 27,120, /* 0x 540 */
|
||||
59,191, 0, 28,127,158, 0, 64, 64,156, 0,136,128, 29, 0, 0, /* 0x 550 */
|
||||
59,222, 0, 1, 56,128, 0, 0, 56,160, 0, 0, 47,128, 0, 14, /* 0x 560 */
|
||||
64,190, 0, 92,128,125, 0, 8,124,125, 26, 20, 75,255,251,141, /* 0x 570 */
|
||||
127,228,251,120,124,124, 27,121,127, 69,211,120, 65,128, 0, 40, /* 0x 580 */
|
||||
75,255,251,113, 56,128, 0, 0,127,154, 24, 0,127,133,227,120, /* 0x 590 */
|
||||
127,227,251,120, 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, /* 0x 5a0 */
|
||||
65,190, 0, 12, 56, 96, 0,127, 75,255,251, 65, 75,255,253, 45, /* 0x 5b0 */
|
||||
124,123, 27,120,127,131,227,120, 75,255,251, 73,128, 31, 0, 16, /* 0x 5c0 */
|
||||
129, 61, 0, 4,127,158, 0, 64,127,189, 74, 20, 75,255,255,124, /* 0x 5d0 */
|
||||
128, 1, 0, 68,127, 99,219,120,187, 65, 0, 40, 56, 33, 0, 64, /* 0x 5e0 */
|
||||
124, 8, 3,166, 78,128, 0, 32 /* 0x 5f0 */
|
||||
};
|
||||
|
||||
@@ -115,5 +115,17 @@ EXTERN pti_main
|
||||
sub edi,edi
|
||||
ret ; goto entry point
|
||||
|
||||
%define __NR_mmap 90
|
||||
|
||||
global mmap
|
||||
mmap:
|
||||
push ebx
|
||||
lea ebx, [2*4 + esp]
|
||||
push byte __NR_mmap
|
||||
pop eax
|
||||
int 0x80
|
||||
pop ebx
|
||||
ret
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
|
||||
|
||||
+91
-91
@@ -1,4 +1,4 @@
|
||||
/* fold_pti86.h -- created from fold_pti86.bin, 1552 (0x610) bytes
|
||||
/* fold_pti86.h -- created from fold_pti86.bin, 1537 (0x601) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,106 +27,106 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_I386PTI_FOLD_SIZE 1552
|
||||
#define LINUX_I386PTI_FOLD_ADLER32 0x7ae39f1d
|
||||
#define LINUX_I386PTI_FOLD_CRC32 0x67ccdc9d
|
||||
#define LINUX_I386PTI_FOLD_SIZE 1537
|
||||
#define LINUX_I386PTI_FOLD_ADLER32 0xf6d697b8
|
||||
#define LINUX_I386PTI_FOLD_CRC32 0xcce6fcb1
|
||||
|
||||
unsigned char linux_i386pti_fold[1552] = {
|
||||
unsigned char linux_i386pti_fold[1537] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
||||
2, 0, 3, 0, 1, 0, 0, 0,128, 0, 1, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x 30 */
|
||||
0, 0, 1, 0, 16, 6, 0, 0, 16, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 1, 0, 0, 0, 16, 6, 0, 0, 16, 6, 1, 0, /* 0x 50 */
|
||||
16, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */
|
||||
0, 0, 1, 0, 1, 6, 0, 0, 4, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0, 4, 6, 1, 0, /* 0x 50 */
|
||||
4, 6, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */
|
||||
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||
93, 89, 88,141,124,132, 4, 80, 41,192,175,117,253,175,137,254, /* 0x 80 */
|
||||
139, 6,131,248, 3,116, 8,131,198, 8,131,248, 0,117,241,139, /* 0x 90 */
|
||||
94, 4, 83,129,236, 0, 10, 0, 0,137,226, 81,141, 67, 88,139, /* 0x a0 */
|
||||
115, 24, 41,198,139, 24,139, 72, 4,131,193, 12, 96,232, 86, 4, /* 0x b0 */
|
||||
115, 24, 41,198,139, 24,139, 72, 4,131,193, 12, 96,232, 71, 4, /* 0x b0 */
|
||||
0, 0,129,196, 36, 10, 0, 0, 91, 80,139, 75, 20,139, 91, 8, /* 0x c0 */
|
||||
184, 91, 0, 0, 0,205,128, 41,192, 41,201, 41,210, 41,219, 41, /* 0x d0 */
|
||||
237, 41,246, 41,255,195, 0, 0, 85, 87,137,207, 86,137,198, 83, /* 0x e0 */
|
||||
57, 8,139,104, 4,115, 8,106,127, 91,106, 1, 88,205,128,133, /* 0x f0 */
|
||||
255,116, 11,137,249,138, 69, 0, 69,136, 2, 66,226,247, 91, 1, /* 0x 100 */
|
||||
126, 4, 41, 62, 94, 95, 93,195, 83,141, 92, 36, 8,106, 90, 88, /* 0x 110 */
|
||||
205,128, 91,195, 85,137,229, 87, 86,137,199, 83,137,214,131,236, /* 0x 120 */
|
||||
20,131, 58, 0, 15,132,188, 0, 0, 0,141, 85,228,137,248,185, /* 0x 130 */
|
||||
12, 0, 0, 0,232,159,255,255,255,131,125,228, 0,139, 69,232, /* 0x 140 */
|
||||
117, 18, 61, 85, 80, 88, 33,117, 15,131, 63, 0, 15,132,148, 0, /* 0x 150 */
|
||||
0, 0,235, 4,133,192,117, 8,106,127, 91,106, 1, 88,205,128, /* 0x 160 */
|
||||
139, 77,232,139, 69,228, 57,193,119,238, 59, 6,119,234, 57,193, /* 0x 170 */
|
||||
115, 87, 15,182, 69,236, 80,255, 85, 8, 15,182, 85,236,137, 20, /* 0x 180 */
|
||||
36,141, 85,224, 82,255,118, 4,255,117,232,255,119, 4,255, 16, /* 0x 190 */
|
||||
131,196, 20,133,192,117,193,139, 69,228, 57, 69,224,117,185,138, /* 0x 1a0 */
|
||||
69,237,132,192,116, 25, 15,182,192, 80,255, 85, 12, 15,182, 85, /* 0x 1b0 */
|
||||
238,137, 20, 36,255,117,224,255,118, 4,255, 16,131,196, 12,139, /* 0x 1c0 */
|
||||
69,232, 1, 71, 4, 41, 7,235, 10,139, 86, 4,137,248,232, 5, /* 0x 1d0 */
|
||||
255,255,255,139, 85,228,139, 6, 1, 86, 4, 41,208,133,192,137, /* 0x 1e0 */
|
||||
6,233, 62,255,255,255,141,101,244, 91, 94, 95,201,195,133,210, /* 0x 1f0 */
|
||||
137,209,116, 6,198, 0, 0, 64,226,250,195,133,192, 83,137,211, /* 0x 200 */
|
||||
116, 29,168, 1,117, 25,139, 16, 57,218,116, 7, 74,117, 11,133, /* 0x 210 */
|
||||
219,116, 7,137, 24,137, 72, 4,235, 5,131,192, 8,235,231, 91, /* 0x 220 */
|
||||
195, 85,137,229, 87, 86, 83,131,236, 76,137, 69,228,139, 69, 8, /* 0x 230 */
|
||||
137, 85,224,139, 77, 16,199, 69,204, 0, 0, 0, 0,137, 69,220, /* 0x 240 */
|
||||
3, 64, 28,139, 93,220,137, 77,212,139, 85, 12,137, 69,208, 49, /* 0x 250 */
|
||||
192,102,131,123, 16, 3,137, 85,216, 15,183, 75, 44,139, 85,208, /* 0x 260 */
|
||||
15,149,192,131,206,255,193,224, 4,137,207,131,192, 34, 49,219, /* 0x 270 */
|
||||
79,137, 69,184,120, 34,131, 58, 1,117, 24,139, 66, 8, 57,240, /* 0x 280 */
|
||||
115, 8,139,122, 16,137,198,137,125,204, 3, 66, 20, 57,195,115, /* 0x 290 */
|
||||
2,137,195,131,194, 32,226,222,137,247,106, 0,129,231, 0,240, /* 0x 2a0 */
|
||||
255,255,106, 0, 41,251,255,117,184,129,195,255, 15, 0, 0,106, /* 0x 2b0 */
|
||||
7,129,227, 0,240,255,255,139, 85,204, 83,137,240, 37,255, 15, /* 0x 2c0 */
|
||||
0, 0, 87,137, 93,168,141,180, 2,255, 15, 0, 0,232, 54,254, /* 0x 2d0 */
|
||||
255,255,137,194,131,196, 24, 1,218,129,230, 0,240,255,255,137, /* 0x 2e0 */
|
||||
85,240,137,194, 41,243, 1,242,137,217,137, 69,172,137,211,106, /* 0x 2f0 */
|
||||
91, 88,205,128,139,117,172,139, 69,220, 41,254, 49,255,102,131, /* 0x 300 */
|
||||
120, 44, 0, 15,132,198, 1, 0, 0,139, 85,208,139, 2,131,248, /* 0x 310 */
|
||||
6,117, 23,139, 74, 8,186, 3, 0, 0, 0,139, 69,212, 1,241, /* 0x 320 */
|
||||
232,214,254,255,255,233,145, 1, 0, 0, 72, 15,133,138, 1, 0, /* 0x 330 */
|
||||
0,139, 93,208,199, 69,196, 64, 98, 81,115,139, 75, 24,139, 67, /* 0x 340 */
|
||||
8,131,225, 7,139, 83, 16,193,225, 2,137, 69,236,211,109,196, /* 0x 350 */
|
||||
137,193, 3, 75, 20,137,195,129,227,255, 15, 0, 0,137, 85,232, /* 0x 360 */
|
||||
1,218, 41,216,137, 85,192,139, 85,208, 1,240, 1,241,137, 69, /* 0x 370 */
|
||||
180,139, 66, 4,131,101,196, 7, 41,216,131,125,216, 1, 80,255, /* 0x 380 */
|
||||
117,228, 25,192,137, 93,188,131,224,224,137, 77,176,131,192, 50, /* 0x 390 */
|
||||
131,125,216, 0, 80,139, 69,192,106, 3,116, 3,131,192, 3, 80, /* 0x 3a0 */
|
||||
255,117,180,232, 96,253,255,255,131,196, 24, 57, 69,180, 15,133, /* 0x 3b0 */
|
||||
173, 0, 0, 0,131,125,216, 0,116, 19,255,117,224,255,117,228, /* 0x 3c0 */
|
||||
141, 85,232,139, 69,216,232, 73,253,255,255, 88, 90,139, 85,188, /* 0x 3d0 */
|
||||
139, 69,180,232, 22,254,255,255,139, 77,192,139, 69,180,247,217, /* 0x 3e0 */
|
||||
3, 69,192,129,225,255, 15, 0, 0,137,202,137, 77,188,232,251, /* 0x 3f0 */
|
||||
253,255,255,131,125,216, 0,116, 86,139, 93,208,131, 59, 1,117, /* 0x 400 */
|
||||
78,246, 67, 24, 1,116, 72,139, 67, 20, 59, 67, 16,139, 83, 8, /* 0x 410 */
|
||||
141, 12, 16,117, 14,137,200,247,216, 37,255, 15, 0, 0,131,248, /* 0x 420 */
|
||||
3,119, 12,139, 69,208,141, 74, 12,131,120, 4, 0,117, 15,139, /* 0x 430 */
|
||||
237, 41,246, 41,255,195, 83,141, 92, 36, 8,106, 90, 88,205,128, /* 0x e0 */
|
||||
91,195, 0, 0, 87, 86,137,206, 83,137,195, 57, 8,139,120, 4, /* 0x f0 */
|
||||
115, 10,106,127, 91,106, 1, 88,205,128,235,254,133,201,116, 8, /* 0x 100 */
|
||||
138, 7, 71,136, 2, 66,226,248, 1,115, 4, 41, 51, 91, 94, 95, /* 0x 110 */
|
||||
195, 85,137,229, 87, 86,137,198, 83,137,211,131,236, 20,139,125, /* 0x 120 */
|
||||
12,131, 58, 0, 15,132,185, 0, 0, 0,141, 85,228,185, 12, 0, /* 0x 130 */
|
||||
0, 0,137,240,232,171,255,255,255,139, 69,228,139, 77,232,133, /* 0x 140 */
|
||||
192,117, 19,129,249, 85, 80, 88, 33,117, 15,131, 62, 0, 15,132, /* 0x 150 */
|
||||
143, 0, 0, 0,235, 4,133,201,117, 10,106,127, 91,106, 1, 88, /* 0x 160 */
|
||||
205,128,235,254, 57,193,119,242, 59, 3,119,238, 57,193,115, 86, /* 0x 170 */
|
||||
15,182, 69,236, 80,255, 85, 8, 15,182, 85,236,137, 20, 36,141, /* 0x 180 */
|
||||
85,224, 82,255,115, 4,255,117,232,255,118, 4,255, 16,131,196, /* 0x 190 */
|
||||
20,133,192,117,197,139, 69,228, 57, 69,224,117,189,138, 69,237, /* 0x 1a0 */
|
||||
132,192,116, 24, 15,182,192, 80,255,215, 15,182, 85,238,137, 20, /* 0x 1b0 */
|
||||
36,255,117,224,255,115, 4,255, 16,131,196, 12,139, 69,232, 1, /* 0x 1c0 */
|
||||
70, 4, 41, 6,235, 10,139, 83, 4,137,240,232, 20,255,255,255, /* 0x 1d0 */
|
||||
139, 85,228,139, 3, 1, 83, 4, 41,208,133,192,137, 3,233, 65, /* 0x 1e0 */
|
||||
255,255,255,141,101,244, 91, 94, 95,201,195,133,210,137,209,116, /* 0x 1f0 */
|
||||
6,198, 0, 0, 64,226,250,195,133,192, 83,137,211,116, 29,168, /* 0x 200 */
|
||||
1,117, 25,139, 16, 57,218,116, 7, 74,117, 11,133,219,116, 7, /* 0x 210 */
|
||||
137, 24,137, 72, 4,235, 5,131,192, 8,235,231, 91,195, 85,137, /* 0x 220 */
|
||||
229, 87, 86, 83,131,236, 80,137, 69,228,139, 69, 8,137, 85,224, /* 0x 230 */
|
||||
139, 77, 16,199, 69,200, 0, 0, 0, 0,137, 69,220, 3, 64, 28, /* 0x 240 */
|
||||
139, 93,220,137, 77,212,139, 85, 12,137, 69,208, 49,192,102,131, /* 0x 250 */
|
||||
123, 16, 3,137, 85,216, 15,183, 75, 44,139, 85,208, 15,149,192, /* 0x 260 */
|
||||
131,206,255,193,224, 4,137,207,131,192, 34, 49,219, 79,137, 69, /* 0x 270 */
|
||||
184,120, 34,131, 58, 1,117, 24,139, 66, 8, 57,240,115, 8,139, /* 0x 280 */
|
||||
122, 16,137,198,137,125,200, 3, 66, 20, 57,195,115, 2,137,195, /* 0x 290 */
|
||||
131,194, 32,226,222,137,247,106, 0,129,231, 0,240,255,255,106, /* 0x 2a0 */
|
||||
0, 41,251,255,117,184,129,195,255, 15, 0, 0,106, 7,129,227, /* 0x 2b0 */
|
||||
0,240,255,255,139, 85,200, 83,137,240, 37,255, 15, 0, 0, 87, /* 0x 2c0 */
|
||||
137, 93,172,141,180, 2,255, 15, 0, 0,232, 7,254,255,255,137, /* 0x 2d0 */
|
||||
194,131,196, 24, 1,218,129,230, 0,240,255,255,137, 85,240,137, /* 0x 2e0 */
|
||||
194, 41,243, 1,242,137,217,137, 69,176,137,211,106, 91, 88,205, /* 0x 2f0 */
|
||||
128,139, 69,176,199, 69,192, 0, 0, 0, 0,139, 85,220, 41,248, /* 0x 300 */
|
||||
102,131,122, 44, 0,137, 69,204, 15,132,177, 1, 0, 0,139, 77, /* 0x 310 */
|
||||
208,139, 1,131,248, 6,117, 27,139, 93,208,186, 3, 0, 0, 0, /* 0x 320 */
|
||||
139, 77,204, 3, 75, 8,139, 69,212,232,202,254,255,255,233,117, /* 0x 330 */
|
||||
1, 0, 0, 72, 15,133,110, 1, 0, 0,139,125,208,199, 69,188, /* 0x 340 */
|
||||
64, 98, 81,115,139, 79, 24,139, 71, 8,131,225, 7,139, 87, 16, /* 0x 350 */
|
||||
193,225, 2,137, 69,236,211,109,188,137,193, 3, 79, 20,137,199, /* 0x 360 */
|
||||
129,231,255, 15, 0, 0,137, 85,232,141, 52, 58,139, 85,204, 41, /* 0x 370 */
|
||||
248,131,101,188, 7, 1,209,141, 28, 16,137, 77,180,139, 77,208, /* 0x 380 */
|
||||
139, 65, 4, 41,248,131,125,216, 1, 80,255,117,228, 25,192,131, /* 0x 390 */
|
||||
224,224,131,192, 50,131,125,216, 0, 80,137,240,106, 3,116, 3, /* 0x 3a0 */
|
||||
141, 70, 3, 80, 83,232, 44,253,255,255,131,196, 24, 57,195, 15, /* 0x 3b0 */
|
||||
133,168, 0, 0, 0,131,125,216, 0,116, 19,255,117,224,255,117, /* 0x 3c0 */
|
||||
228,141, 85,232,139, 69,216,232, 69,253,255,255, 88, 90,137,250, /* 0x 3d0 */
|
||||
137,247,137,216,247,223,232, 16,254,255,255,129,231,255, 15, 0, /* 0x 3e0 */
|
||||
0,141, 4, 51,137,250,232, 0,254,255,255,131,125,216, 0,116, /* 0x 3f0 */
|
||||
94,139, 69,208,131, 56, 1,117, 86,246, 64, 24, 1,116, 80,139, /* 0x 400 */
|
||||
80, 20,139, 72, 8,137, 77,164,137,209, 3, 77,164, 59, 80, 16, /* 0x 410 */
|
||||
117, 14,137,200,247,216, 37,255, 15, 0, 0,131,248, 3,119, 15, /* 0x 420 */
|
||||
139, 77,164,139, 69,208,131,193, 12,131,120, 4, 0,117, 15,139, /* 0x 430 */
|
||||
1, 61,205,128, 97,195,116, 6,199, 1,205,128, 97,195,133,201, /* 0x 440 */
|
||||
116, 13,139, 69,212, 49,210,131,224,254,232,172,253,255,255,139, /* 0x 450 */
|
||||
93,180,139, 77,192,139, 85,196,106,125, 88,205,128,133,192,116, /* 0x 460 */
|
||||
8,106,127, 91,106, 1, 88,205,128,139, 69,192, 3, 69,188, 1, /* 0x 470 */
|
||||
69,180,139, 69,176, 57, 69,180,115, 31,106, 0, 43, 69,180,106, /* 0x 480 */
|
||||
0,106, 50,255,117,196, 80,255,117,180,232,121,252,255,255,131, /* 0x 490 */
|
||||
196, 24, 57, 69,180,116, 36,235,200,131,125,216, 0,116, 28,131, /* 0x 4a0 */
|
||||
69,192, 3,129,101,192,255, 15, 0, 0,131,125,192, 3,119, 11, /* 0x 4b0 */
|
||||
139, 93,180,139, 77,192,106, 91, 88,205,128,139, 85,220, 71,131, /* 0x 4c0 */
|
||||
69,208, 32, 15,183, 66, 44, 57,199, 15,140, 58,254,255,255,131, /* 0x 4d0 */
|
||||
125,216, 0,117, 17,139, 93,228,106, 6, 88,205,128,133,192,116, /* 0x 4e0 */
|
||||
23,233,123,255,255,255,139,125,220,102,131,127, 16, 3,116, 8, /* 0x 4f0 */
|
||||
139, 93,240,106, 45, 88,205,128,139, 69,220, 3,112, 24,141,101, /* 0x 500 */
|
||||
244, 91,137,240, 94, 95,201,195, 85,137,229, 87, 86, 83, 81,139, /* 0x 510 */
|
||||
125, 20,141, 85, 24,255,117, 40,141, 71, 52,139, 93, 8,255,117, /* 0x 520 */
|
||||
16,137, 69,240,139,117, 32,141, 69, 32,232,229,251,255,255,139, /* 0x 530 */
|
||||
85,240,139, 69, 12,139, 74, 8,186, 3, 0, 0, 0,137, 69, 32, /* 0x 540 */
|
||||
137,216,131,193, 52, 41,117, 36,232,174,252,255,255, 15,183, 79, /* 0x 550 */
|
||||
42,137,216,186, 4, 0, 0, 0,232,158,252,255,255, 15,183, 79, /* 0x 560 */
|
||||
44,137,216,186, 5, 0, 0, 0,232,142,252,255,255,139, 79, 24, /* 0x 570 */
|
||||
137,216,186, 9, 0, 0, 0,232,127,252,255,255,141, 69, 32, 83, /* 0x 580 */
|
||||
139, 85, 40, 80,139, 69, 16, 87,232,148,252,255,255,102,139, 79, /* 0x 590 */
|
||||
44,131,196, 20, 49,210,102,133,201,137,195,116, 89,139, 69,240, /* 0x 5a0 */
|
||||
131, 56, 3,117, 69, 49,201,139, 88, 8,137,202,106, 5, 88,205, /* 0x 5b0 */
|
||||
128,133,192,137,198,120, 20,102,186, 0, 2,137,195,137,249,106, /* 0x 5c0 */
|
||||
3, 88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, 91,106, 1, /* 0x 5d0 */
|
||||
88,205,128,235,246,106, 0, 49,210,106, 0,137,240, 87,232, 62, /* 0x 5e0 */
|
||||
252,255,255,131,196, 12,137,195,235, 12, 66, 15,183,193,131, 69, /* 0x 5f0 */
|
||||
240, 32, 57,194,124,167,141,101,244,137,216, 91, 94, 95,201,195 /* 0x 600 */
|
||||
116, 13,139, 69,212, 49,210,131,224,254,232,169,253,255,255,137, /* 0x 450 */
|
||||
241,139, 85,188,106,125, 88,205,128,133,192,116, 10,106,127, 91, /* 0x 460 */
|
||||
106, 1, 88,205,128,235,254,141, 4, 62, 1,195, 59, 93,180,115, /* 0x 470 */
|
||||
30,106, 0,106, 0,106, 50,255,117,188, 41, 93,180,255,117,180, /* 0x 480 */
|
||||
83,232, 80,252,255,255,131,196, 24, 57,195,116, 27,235,206,131, /* 0x 490 */
|
||||
125,216, 0,116, 19,141, 78, 3,129,225,255, 15, 0, 0,131,249, /* 0x 4a0 */
|
||||
3,119, 5,106, 91, 88,205,128,139, 93,220,255, 69,192, 15,183, /* 0x 4b0 */
|
||||
67, 44,131, 69,208, 32, 57, 69,192, 15,140, 79,254,255,255,131, /* 0x 4c0 */
|
||||
125,216, 0,117, 14,139, 93,228,106, 6, 88,205,128,133,192,116, /* 0x 4d0 */
|
||||
20,235,138,139,125,220,102,131,127, 16, 3,116, 8,139, 93,240, /* 0x 4e0 */
|
||||
106, 45, 88,205,128,139, 69,220,139, 64, 24, 1, 69,204,139, 69, /* 0x 4f0 */
|
||||
204,141,101,244, 91, 94, 95,201,195, 85,137,229, 87, 86, 83, 81, /* 0x 500 */
|
||||
139,125, 20,141, 85, 24,255,117, 40,141, 71, 52,139, 93, 8,255, /* 0x 510 */
|
||||
117, 16,137, 69,240,139,117, 32,141, 69, 32,232,241,251,255,255, /* 0x 520 */
|
||||
139, 85,240,139, 69, 12,139, 74, 8,186, 3, 0, 0, 0,137, 69, /* 0x 530 */
|
||||
32,137,216,131,193, 52, 41,117, 36,232,186,252,255,255, 15,183, /* 0x 540 */
|
||||
79, 42,137,216,186, 4, 0, 0, 0,232,170,252,255,255, 15,183, /* 0x 550 */
|
||||
79, 44,137,216,186, 5, 0, 0, 0,232,154,252,255,255,139, 79, /* 0x 560 */
|
||||
24,137,216,186, 9, 0, 0, 0,232,139,252,255,255,141, 69, 32, /* 0x 570 */
|
||||
83,139, 85, 40, 80,139, 69, 16, 87,232,160,252,255,255,102,139, /* 0x 580 */
|
||||
79, 44,131,196, 20, 49,210,102,133,201,137,195,116, 89,139, 69, /* 0x 590 */
|
||||
240,131, 56, 3,117, 69, 49,201,139, 88, 8,137,202,106, 5, 88, /* 0x 5a0 */
|
||||
205,128,133,192,137,198,120, 20,102,186, 0, 2,137,195,137,249, /* 0x 5b0 */
|
||||
106, 3, 88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, 91,106, /* 0x 5c0 */
|
||||
1, 88,205,128,235,254,106, 0, 49,210,106, 0,137,240, 87,232, /* 0x 5d0 */
|
||||
74,252,255,255,131,196, 12,137,195,235, 12, 66, 15,183,193,131, /* 0x 5e0 */
|
||||
69,240, 32, 57,194,124,167,141,101,244,137,216, 91, 94, 95,201, /* 0x 5f0 */
|
||||
195 /* 0x 600 */
|
||||
};
|
||||
|
||||
+13
-1
@@ -159,10 +159,22 @@ EXTERN upx_main
|
||||
; ourselves the stub. We would need a place to put the escape hatch
|
||||
; "int $0x80; popa; ret", and some kernels do not allow execution
|
||||
; on the stack. So, we would have to dirty a page of the shell
|
||||
; or of /lib/ld-linux.so. It's simpler just to omit the unapping.
|
||||
; or of /lib/ld-linux.so. It's simpler just to omit the unmapping.
|
||||
popa
|
||||
ret
|
||||
|
||||
%define __NR_mmap 90
|
||||
|
||||
global mmap
|
||||
mmap:
|
||||
push ebx
|
||||
lea ebx, [2*4 + esp]
|
||||
push byte __NR_mmap
|
||||
pop eax
|
||||
int 0x80
|
||||
pop ebx
|
||||
ret
|
||||
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
|
||||
|
||||
+64
-65
@@ -1,4 +1,4 @@
|
||||
/* fold_sh86.h -- created from fold_sh86.bin, 1212 (0x4bc) bytes
|
||||
/* fold_sh86.h -- created from fold_sh86.bin, 1190 (0x4a6) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,16 +27,16 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_I386SH_FOLD_SIZE 1212
|
||||
#define LINUX_I386SH_FOLD_ADLER32 0x3f61f91a
|
||||
#define LINUX_I386SH_FOLD_CRC32 0x17eab497
|
||||
#define LINUX_I386SH_FOLD_SIZE 1190
|
||||
#define LINUX_I386SH_FOLD_ADLER32 0x93daf2db
|
||||
#define LINUX_I386SH_FOLD_CRC32 0x4e35857e
|
||||
|
||||
unsigned char linux_i386sh_fold[1212] = {
|
||||
unsigned char linux_i386sh_fold[1190] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
||||
2, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 1, 0, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, /* 0x 30 */
|
||||
0, 0, 64, 1,188, 4, 0, 0,188, 4, 0, 0, 7, 0, 0, 0, /* 0x 40 */
|
||||
0, 0, 64, 1,166, 4, 0, 0,168, 4, 0, 0, 7, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 50 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 60 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||
@@ -48,64 +48,63 @@ unsigned char linux_i386sh_fold[1212] = {
|
||||
0, 10, 0, 0, 89, 90, 82, 65, 86,131,238, 3,102,199, 6, 45, /* 0x d0 */
|
||||
99, 65, 86, 65, 82, 81, 87,141,188, 36, 0,245,255,255, 96,137, /* 0x e0 */
|
||||
227,137,252,185,192, 2, 0, 0, 49,192,243,171,137,220, 97,195, /* 0x f0 */
|
||||
85, 87, 86,137,198, 83,139,108, 36, 20, 57, 40,139,120, 4,115, /* 0x 100 */
|
||||
8,106,127, 91,106, 1, 88,205,128,133,237,116, 10,137,233,138, /* 0x 110 */
|
||||
7, 71,136, 2, 66,226,248, 91, 1,110, 4, 41, 46, 94, 95, 93, /* 0x 120 */
|
||||
195, 83,141, 92, 36, 8,106, 90, 88,205,128, 91,195,133,210,137, /* 0x 130 */
|
||||
83,141, 92, 36, 8,106, 90, 88,205,128, 91,195, 87, 86, 83,137, /* 0x 100 */
|
||||
195,139,124, 36, 16, 57, 56,139,112, 4,115, 10,106,127, 91,106, /* 0x 110 */
|
||||
1, 88,205,128,235,254,133,255,116, 10,137,249,138, 6, 70,136, /* 0x 120 */
|
||||
2, 66,226,248, 1,123, 4, 41, 59, 91, 94, 95,195,133,210,137, /* 0x 130 */
|
||||
209,116, 6,198, 0, 0, 64,226,250,195, 85, 49,201,137,229, 87, /* 0x 140 */
|
||||
86, 83,137,195,131,236, 44,137, 85,240,139, 69, 8,137,202,137, /* 0x 150 */
|
||||
69,236,106, 5, 88,205,128,133,192,137, 69,232,121, 8,106,127, /* 0x 160 */
|
||||
91,106, 1, 88,205,128,186, 0, 2, 0, 0,139, 93,232,139, 77, /* 0x 170 */
|
||||
240,106, 3, 88,205,128, 61, 0, 2, 0, 0,117,225,139, 69,240, /* 0x 180 */
|
||||
199, 69,224,255,255,255,255, 3, 73, 28,102,131,120, 16, 3,139, /* 0x 190 */
|
||||
93,240,137, 77,228,137,202, 15,149,192, 15,183, 75, 44, 15,182, /* 0x 1a0 */
|
||||
192, 49,246,193,224, 4,131,192, 34,137, 69,204,137,200, 72,120, /* 0x 1b0 */
|
||||
32,131, 58, 1,117, 22,139, 66, 8, 59, 69,224,115, 3,137, 69, /* 0x 1c0 */
|
||||
224,139, 90, 20, 1,195, 57,222,115, 2,137,222,131,194, 32,226, /* 0x 1d0 */
|
||||
224,246, 69,204, 16,116, 7,137,243,106, 45, 88,205,128,139, 93, /* 0x 1e0 */
|
||||
224,106, 0,106, 0,129,227, 0,240,255,255,255,117,204, 41,222, /* 0x 1f0 */
|
||||
106, 7,141,134,255, 15, 0, 0, 37, 0,240,255,255, 80, 83,232, /* 0x 200 */
|
||||
29,255,255,255,131,196, 24,137,198,139, 69,240, 41,222,199, 69, /* 0x 210 */
|
||||
220, 0, 0, 0, 0,102,131,120, 44, 0, 15,132,247, 0, 0, 0, /* 0x 220 */
|
||||
139, 85,228,139, 2,131,248, 6,117, 14,139, 66, 8,139, 77,236, /* 0x 230 */
|
||||
137, 65, 20,233,200, 0, 0, 0, 72, 15,133,193, 0, 0, 0,139, /* 0x 240 */
|
||||
93,228,199, 69,216, 64, 98, 81,115,139, 75, 24,139, 67, 8,131, /* 0x 250 */
|
||||
225, 7,193,225, 2,137,194,211,109,216,137,193,129,225,255, 15, /* 0x 260 */
|
||||
0, 0, 3, 83, 20,137, 77,208, 3, 75, 16, 43, 69,208, 1,242, /* 0x 270 */
|
||||
131,101,216, 7,137, 77,212,141, 60, 48,139, 67, 4, 43, 69,208, /* 0x 280 */
|
||||
137, 85,200, 80,255,117,232,106, 18,106, 3, 81, 87,232,143,254, /* 0x 290 */
|
||||
255,255,131,196, 24, 57,199,117, 54,139, 85,208,137,248,232,138, /* 0x 2a0 */
|
||||
254,255,255,139, 93,212,139, 85,212,247,219,129,227,255, 15, 0, /* 0x 2b0 */
|
||||
0,141, 4, 23,137,218,137, 93,208,232,111,254,255,255,137,251, /* 0x 2c0 */
|
||||
139, 77,212,139, 85,216,106,125, 88,205,128,133,192,116, 8,106, /* 0x 2d0 */
|
||||
127, 91,106, 1, 88,205,128,139, 69,212, 3, 69,208, 1,199, 59, /* 0x 2e0 */
|
||||
125,200,115, 28,106, 0,139, 69,200,106, 0,106, 50, 41,248,255, /* 0x 2f0 */
|
||||
117,216, 80, 87,232, 40,254,255,255,131,196, 24, 57,199,117,207, /* 0x 300 */
|
||||
139, 85,240,255, 69,220, 15,183, 66, 44,131, 69,228, 32, 57, 69, /* 0x 310 */
|
||||
220, 15,140, 9,255,255,255,139, 93,232,106, 6, 88,205,128,133, /* 0x 320 */
|
||||
192,117,172,139, 69,240, 3,112, 24,141,101,244, 91,137,240, 94, /* 0x 330 */
|
||||
95,201,195, 85,137,229, 87, 86, 83,131,236, 40,141,125, 32,139, /* 0x 340 */
|
||||
69, 8,141,117, 24,139, 85, 16,137, 69,212,139, 69, 20,137, 85, /* 0x 350 */
|
||||
208,137, 69,204,139, 69, 36, 5, 85, 80, 88, 50,137, 69,240,139, /* 0x 360 */
|
||||
69,240, 5, 85, 80, 88, 51,131,125, 32, 0,137, 69,236, 15,132, /* 0x 370 */
|
||||
141, 0, 0, 0,141, 85,220,137,240,106, 12,232,112,253,255,255, /* 0x 380 */
|
||||
131,125,220, 0, 88,139, 69,224,117, 14, 61, 85, 80, 88, 33,117, /* 0x 390 */
|
||||
11,131, 62, 0,116,107,235, 4,133,192,117, 8,106,127, 91,106, /* 0x 3a0 */
|
||||
1, 88,205,128,139, 77,224,139, 69,220, 57,193,119,238, 59, 7, /* 0x 3b0 */
|
||||
119,234, 57,193,115, 44, 15,182, 69,228, 80,141, 69,216, 80,255, /* 0x 3c0 */
|
||||
119, 4, 81,255,118, 4,255, 85,208,131,196, 20,133,192,117,204, /* 0x 3d0 */
|
||||
139, 69,220, 57, 69,216,117,196,139, 69,224, 1, 70, 4, 41, 6, /* 0x 3e0 */
|
||||
235, 12,139, 87, 4,137,240, 81,232, 3,253,255,255, 91,139, 85, /* 0x 3f0 */
|
||||
220,139, 7, 1, 87, 4, 41,208,133,192,137, 7,233,109,255,255, /* 0x 400 */
|
||||
255,139, 69,236,139, 85,204,138, 24,139, 69,236,198, 0, 0,255, /* 0x 410 */
|
||||
117,212,139, 69,240,232, 32,253,255,255,139, 85,212,137,198,139, /* 0x 420 */
|
||||
69,236,136, 24,199, 66, 16, 3, 0, 0, 0,199, 66, 24, 4, 0, /* 0x 430 */
|
||||
0, 0,139, 85,204, 15,183, 66, 42,139, 85,212,137, 66, 28,199, /* 0x 440 */
|
||||
66, 32, 5, 0, 0, 0,139, 85,204, 15,183, 66, 44,139, 85,212, /* 0x 450 */
|
||||
137, 66, 36,139, 69,204,199, 66, 44, 0, 16, 0, 0,137,114, 68, /* 0x 460 */
|
||||
199, 66, 40, 6, 0, 0, 0,102,139, 88, 44,199, 66, 64, 9, 0, /* 0x 470 */
|
||||
0, 0,139, 85,204, 89, 49,201,131,194, 52,102,133,219,116, 34, /* 0x 480 */
|
||||
131, 58, 3,117, 18,139, 66, 8,106, 0,139, 85,204,232,168,252, /* 0x 490 */
|
||||
255,255,137,198, 88,235, 11, 65, 15,183,195,131,194, 32, 57,193, /* 0x 4a0 */
|
||||
124,222,141,101,244,137,240, 91, 94, 95,201,195 /* 0x 4b0 */
|
||||
86, 83,137,195,131,236, 40,137, 85,240,139, 69, 8,137,202,137, /* 0x 150 */
|
||||
69,236,106, 5, 88,205,128,133,192,137, 69,232,121, 10,106,127, /* 0x 160 */
|
||||
91,106, 1, 88,205,128,235,254,186, 0, 2, 0, 0,139, 93,232, /* 0x 170 */
|
||||
139, 77,240,106, 3, 88,205,128, 61, 0, 2, 0, 0,117,223,139, /* 0x 180 */
|
||||
69,240, 3, 73, 28,102,131,120, 16, 3,139, 93,240,137, 77,228, /* 0x 190 */
|
||||
137,202, 15,149,192, 15,183, 75, 44, 15,182,192,131,207,255,193, /* 0x 1a0 */
|
||||
224, 4,131,192, 34, 49,246,137, 69,212,137,200, 72,120, 30,131, /* 0x 1b0 */
|
||||
58, 1,117, 20,139, 66, 8, 57,248,115, 2,137,199,139, 90, 20, /* 0x 1c0 */
|
||||
1,195, 57,222,115, 2,137,222,131,194, 32,226,226,246, 69,212, /* 0x 1d0 */
|
||||
16,116, 7,137,243,106, 45, 88,205,128,137,251,106, 0,129,227, /* 0x 1e0 */
|
||||
0,240,255,255,106, 0, 41,222,255,117,212,141,134,255, 15, 0, /* 0x 1f0 */
|
||||
0,106, 7, 37, 0,240,255,255, 80, 83,232,241,254,255,255,131, /* 0x 200 */
|
||||
196, 24, 41,216,199, 69,220, 0, 0, 0, 0,137, 69,224,139, 69, /* 0x 210 */
|
||||
240,102,131,120, 44, 0, 15,132,247, 0, 0, 0,139, 85,228,139, /* 0x 220 */
|
||||
2,131,248, 6,117, 14,139, 66, 8,139, 77,236,137, 65, 20,233, /* 0x 230 */
|
||||
200, 0, 0, 0, 72, 15,133,193, 0, 0, 0,139, 93,228,199, 69, /* 0x 240 */
|
||||
216, 64, 98, 81,115,139, 75, 24,139, 67, 8,131,225, 7,193,225, /* 0x 250 */
|
||||
2,137,194,211,109,216,139, 77,228, 3, 83, 20,137,195,139,121, /* 0x 260 */
|
||||
16,129,227,255, 15, 0, 0,139, 77,224, 41,216, 1,223,131,101, /* 0x 270 */
|
||||
216, 7, 1,202,141, 52, 8,137, 85,208,139, 85,228,139, 66, 4, /* 0x 280 */
|
||||
41,216, 80,255,117,232,106, 18,106, 3, 87, 86,232, 95,254,255, /* 0x 290 */
|
||||
255,131,196, 24, 57,198,117, 48,137,218,137,240,232,140,254,255, /* 0x 2a0 */
|
||||
255,137,249,247,217,141, 4, 62,129,225,255, 15, 0, 0,137,243, /* 0x 2b0 */
|
||||
137,202,137, 77,204,232,115,254,255,255,137,249,139, 85,216,106, /* 0x 2c0 */
|
||||
125, 88,205,128,133,192,116, 10,106,127, 91,106, 1, 88,205,128, /* 0x 2d0 */
|
||||
235,254,139, 85,204,141, 4, 23,141, 28, 6, 59, 93,208,115, 28, /* 0x 2e0 */
|
||||
106, 0,106, 0,106, 50,255,117,216, 41, 93,208,255,117,208, 83, /* 0x 2f0 */
|
||||
232,251,253,255,255,131,196, 24, 57,195,117,204,139, 77,240,255, /* 0x 300 */
|
||||
69,220, 15,183, 65, 44,131, 69,228, 32, 57, 69,220, 15,140, 9, /* 0x 310 */
|
||||
255,255,255,139, 93,232,106, 6, 88,205,128,133,192,117,169,139, /* 0x 320 */
|
||||
69,240,139, 64, 24, 1, 69,224,139, 69,224,141,101,244, 91, 94, /* 0x 330 */
|
||||
95,201,195, 85,137,229, 87, 86, 83,131,236, 36,141,117, 32,139, /* 0x 340 */
|
||||
69, 16,141, 93, 24,139, 85, 20,137, 69,212,139, 69, 36,139,125, /* 0x 350 */
|
||||
8,137, 85,208, 5, 85, 80, 88, 50,137, 69,240,139, 69,240, 5, /* 0x 360 */
|
||||
85, 80, 88, 51,131,125, 32, 0,137, 69,236, 15,132,139, 0, 0, /* 0x 370 */
|
||||
0,141, 85,220,137,216,106, 12,232,127,253,255,255, 88,139, 69, /* 0x 380 */
|
||||
220,139, 77,224,133,192,117, 15,129,249, 85, 80, 88, 33,117, 11, /* 0x 390 */
|
||||
131, 59, 0,116,103,235, 4,133,201,117, 10,106,127, 91,106, 1, /* 0x 3a0 */
|
||||
88,205,128,235,254, 57,193,119,242, 59, 6,119,238, 57,193,115, /* 0x 3b0 */
|
||||
44, 15,182, 69,228, 80,141, 69,216, 80,255,118, 4, 81,255,115, /* 0x 3c0 */
|
||||
4,255, 85,212,131,196, 20,133,192,117,208,139, 69,220, 57, 69, /* 0x 3d0 */
|
||||
216,117,200,139, 69,224, 1, 67, 4, 41, 3,235, 12,139, 86, 4, /* 0x 3e0 */
|
||||
137,216, 81,232, 20,253,255,255, 88,139, 85,220,139, 6, 1, 86, /* 0x 3f0 */
|
||||
4, 41,208,133,192,137, 6,233,111,255,255,255,139, 69,236,139, /* 0x 400 */
|
||||
85,208,138, 24,139, 69,236,198, 0, 0,139, 69,240, 87,232, 39, /* 0x 410 */
|
||||
253,255,255,139, 85,208,137,198,139, 69,236,136, 24, 15,183, 66, /* 0x 420 */
|
||||
42,199, 71, 16, 3, 0, 0, 0,199, 71, 24, 4, 0, 0, 0,199, /* 0x 430 */
|
||||
71, 32, 5, 0, 0, 0,137, 71, 28, 15,183, 66, 44,199, 71, 44, /* 0x 440 */
|
||||
0, 16, 0, 0,137,119, 68,131,194, 52,199, 71, 40, 6, 0, 0, /* 0x 450 */
|
||||
0,137, 71, 36,139, 69,208,199, 71, 64, 9, 0, 0, 0,102,139, /* 0x 460 */
|
||||
88, 44, 89, 49,201,102,133,219,116, 34,131, 58, 3,117, 18,139, /* 0x 470 */
|
||||
66, 8,106, 0,139, 85,208,232,190,252,255,255,137,198, 88,235, /* 0x 480 */
|
||||
11, 65, 15,183,195,131,194, 32, 57,193,124,222,141,101,244,137, /* 0x 490 */
|
||||
240, 91, 94, 95,201,195 /* 0x 4a0 */
|
||||
};
|
||||
|
||||
+14
-4
@@ -39,12 +39,22 @@
|
||||
; ============= ENTRY POINT
|
||||
; =============
|
||||
|
||||
; __ARMWPE00__
|
||||
start:
|
||||
%include "l_armpe_.ah"
|
||||
; __ARMPEAXE__
|
||||
%include "l_armpe_axe.ah"
|
||||
; __ARMPEADE__
|
||||
%include "l_armpe_ade.ah"
|
||||
; __ARMPETXE__
|
||||
%include "l_armpe_txe.ah"
|
||||
; __ARMPETDE__
|
||||
%include "l_armpe_tde.ah"
|
||||
; __ARMPETXB__
|
||||
%include "l_armpe_txb.ah"
|
||||
; __ARMPETDB__
|
||||
%include "l_armpe_tdb.ah"
|
||||
; __ARMPEHEAD__
|
||||
%include "header.ash"
|
||||
eof:
|
||||
; __ARMWPE99__
|
||||
; __ARMPEEOF__
|
||||
section .data
|
||||
dd -1
|
||||
dw eof
|
||||
|
||||
+233
-73
@@ -1,9 +1,10 @@
|
||||
/* l_armpe.h -- created from l_armpe.bin, 1069 (0x42d) bytes
|
||||
/* l_armpe.h -- created from l_armpe.bin, 3592 (0xe08) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2005 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2005 Laszlo Molnar
|
||||
Copyright (C) 1996-2006 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2006 Laszlo Molnar
|
||||
Copyright (C) 2000-2006 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
@@ -26,75 +27,234 @@
|
||||
*/
|
||||
|
||||
|
||||
#define NRV_LOADER_ADLER32 0x793a99ed
|
||||
#define NRV_LOADER_CRC32 0x90e7375f
|
||||
#define NRV_LOADER_SIZE 3592
|
||||
#define NRV_LOADER_ADLER32 0x7cf0b17d
|
||||
#define NRV_LOADER_CRC32 0x03faeff7
|
||||
|
||||
unsigned char nrv_loader[1069] = {
|
||||
15, 64, 45,233, 12, 0,160,227, 0, 0,143,224, 11, 0, 0,235, /* 0x 0 */
|
||||
15, 64,189,232, 24,240,159,229, 88,120,120, 88, 83, 82, 67, 48, /* 0x 10 */
|
||||
68, 83, 84, 48, 66, 73, 77, 80, 79, 78, 65, 77, 71, 69, 84, 80, /* 0x 20 */
|
||||
76, 79, 65, 68, 69, 78, 84, 82, 83, 82, 67, 76, 68, 83, 84, 76, /* 0x 30 */
|
||||
240, 71, 45,233, 4, 80,144,228, 0, 48,160,227, 4,112,144,228, /* 0x 40 */
|
||||
136,208, 77,226, 4, 32,144,228, 4, 48,141,229, 4,144,144,228, /* 0x 50 */
|
||||
3, 64,160,225, 4,128,144,228, 0, 32,141,229, 0, 96,144,229, /* 0x 60 */
|
||||
3,192,160,225, 3, 0,160,225, 1,160,160,227, 4, 0, 0,234, /* 0x 70 */
|
||||
5, 48,132,224, 0, 48,211,229, 1, 64,132,226, 7, 48,192,231, /* 0x 80 */
|
||||
1, 0,128,226,127, 0, 28,227, 5, 48,212, 7,140, 48,160, 17, /* 0x 90 */
|
||||
131, 48,160, 1, 1, 48,131, 2, 1, 64,132, 2, 1, 12, 19,227, /* 0x a0 */
|
||||
3,192,160,225,241,255,255, 26, 1, 16,160,227,127, 0, 28,227, /* 0x b0 */
|
||||
5, 48,212, 7,140, 48,160, 17,131, 48,160, 1, 1, 48,131, 2, /* 0x c0 */
|
||||
1, 64,132, 2, 3,192,160,225,127, 0, 19,227,129, 32,160,225, /* 0x d0 */
|
||||
131, 59,160,225,163, 31,130,225, 5, 48,212, 7,140, 48,160, 17, /* 0x e0 */
|
||||
131, 48,160, 1, 1, 48,131, 2, 1, 64,132, 2, 1, 12, 19,227, /* 0x f0 */
|
||||
3,192,160,225, 11, 0, 0, 26,127, 0, 19,227, 5, 48,212, 7, /* 0x 100 */
|
||||
131, 48,160, 17,131, 48,160, 1, 1, 48,131, 2,129, 32,160,225, /* 0x 110 */
|
||||
3,192,160,225,131, 59,160,225,163, 63,130,225, 1, 64,132, 2, /* 0x 120 */
|
||||
2, 16, 67,226,224,255,255,234, 2, 0, 81,227, 10, 0, 0, 26, /* 0x 130 */
|
||||
127, 0, 19,227, 5, 48,212, 7,131, 48,160, 17,131, 48,160, 1, /* 0x 140 */
|
||||
1, 48,131, 2, 3,192,160,225, 35, 52,160,225, 10, 16,160,225, /* 0x 150 */
|
||||
1, 64,132, 2, 1, 32, 3,226, 10, 0, 0,234, 5, 48,212,231, /* 0x 160 */
|
||||
1, 64,132,226, 1, 52,131,224, 3, 28, 67,226, 1, 0,113,227, /* 0x 170 */
|
||||
71, 0, 0, 10, 1, 48,224,225,161, 16,160,225, 1, 16,129,226, /* 0x 180 */
|
||||
1, 32, 3,226, 1,160,160,225, 0, 0, 82,227,127, 48, 12,226, /* 0x 190 */
|
||||
10, 0, 0, 10, 0, 0, 83,227, 5, 48,212, 7,140, 48,160, 17, /* 0x 1a0 */
|
||||
131, 48,160, 1, 1, 48,131, 2, 3,192,160,225, 35, 52,160,225, /* 0x 1b0 */
|
||||
1, 48, 3,226, 1, 64,132, 2, 1, 32,131,226, 39, 0, 0,234, /* 0x 1c0 */
|
||||
0, 0, 83,227, 5, 48,212, 7,140, 48,160, 17,131, 48,160, 1, /* 0x 1d0 */
|
||||
1, 48,131, 2, 1, 64,132, 2, 1, 12, 19,227, 3,192,160,225, /* 0x 1e0 */
|
||||
1, 32,160, 3, 10, 0, 0, 10,127, 0, 19,227, 5, 48,212, 7, /* 0x 1f0 */
|
||||
131, 48,160, 17,131, 48,160, 1, 1, 48,131, 2, 3,192,160,225, /* 0x 200 */
|
||||
35, 52,160,225, 1, 48, 3,226, 1, 64,132, 2, 3, 32,131,226, /* 0x 210 */
|
||||
18, 0, 0,234,127, 0, 28,227,140, 48,160,225, 5, 48,212, 7, /* 0x 220 */
|
||||
130, 32,160,225,131, 48,160, 1, 1, 48,131, 2,131,224,160,225, /* 0x 230 */
|
||||
1, 64,132, 2,127, 0, 19,227,131, 59,160,225,163, 47,130,225, /* 0x 240 */
|
||||
5, 48,212, 7, 1, 64,132, 2,131, 48,160, 1, 1,224,131, 2, /* 0x 250 */
|
||||
1, 12, 30,227, 14,192,160,225,237,255,255, 10, 3, 32,130,226, /* 0x 260 */
|
||||
0, 48,135,224, 3,224, 97,224, 1, 48,222,228, 5, 12, 81,227, /* 0x 270 */
|
||||
1, 32,130,130, 0, 48,199,231, 1, 0,128,226, 1, 48,222,228, /* 0x 280 */
|
||||
1, 32, 82,226, 7, 48,192,231, 1, 0,128,226,250,255,255, 26, /* 0x 290 */
|
||||
123,255,255,234, 0,160,150,229, 0,128,152,229, 0, 64,157,229, /* 0x 2a0 */
|
||||
4, 0,141,229, 3, 16,212,229, 2, 48,212,229, 1, 32,212,229, /* 0x 2b0 */
|
||||
1, 52,131,224, 0, 16,212,229, 3, 36,130,224, 2,228,129,224, /* 0x 2c0 */
|
||||
0, 0, 94,227, 59, 0, 0, 10, 4, 48,132,226, 3, 16,211,229, /* 0x 2d0 */
|
||||
2, 32,211,229, 1, 48,211,229, 1, 36,130,224, 4, 16,212,229, /* 0x 2e0 */
|
||||
2, 52,131,224, 9,192,254,231, 3, 20,129,224, 8, 0,141,226, /* 0x 2f0 */
|
||||
0, 0, 92,227, 7, 80,129,224, 0, 48,160,225, 3, 0, 0, 10, /* 0x 300 */
|
||||
178,192,195,224, 1,192,254,229, 0, 0, 92,227,250,255,255,234, /* 0x 310 */
|
||||
0, 32,160,227,176, 32,195,225, 15,224,160,225, 10,240,160,225, /* 0x 320 */
|
||||
8, 48,244,229, 0, 96,160,225, 0, 0, 83,227, 31, 0, 0, 10, /* 0x 330 */
|
||||
255, 48, 3,226, 1, 0, 83,227, 1, 64,132,226, 2, 0, 0, 10, /* 0x 340 */
|
||||
255, 0, 83,227, 9, 0, 0, 10, 19, 0, 0,234, 6, 0,160,225, /* 0x 350 */
|
||||
4, 16,160,225, 15,224,160,225, 8,240,160,225, 4, 0,133,228, /* 0x 360 */
|
||||
1, 48,212,228, 0, 0, 83,227,252,255,255, 26, 13, 0, 0,234, /* 0x 370 */
|
||||
0, 48,212,229, 1, 16,212,229, 6, 0,160,225, 1, 20,131,224, /* 0x 380 */
|
||||
15,224,160,225, 8,240,160,225, 2, 64,132,226, 5, 48,160,225, /* 0x 390 */
|
||||
4, 80,133,226, 0, 0,131,229, 2, 0, 0,234, 0, 32,160,227, /* 0x 3a0 */
|
||||
1, 48,160,227, 0, 32,131,229, 0, 48,212,229,221,255,255,234, /* 0x 3b0 */
|
||||
1, 64,132,226,186,255,255,234,136,208,141,226,240,135,189,232, /* 0x 3c0 */
|
||||
255,255,255,255, 0, 0, 0, 0,255,255,255,255, 0, 0, 0, 0, /* 0x 3d0 */
|
||||
85, 80, 88, 33,161,216,208,213, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 3e0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, /* 0x 3f0 */
|
||||
65, 82, 77, 87, 80, 69, 48, 48, 0, 0, 0, 0, 0, 85, 80, 88, /* 0x 400 */
|
||||
49, 72, 69, 65, 68, 0,224, 3, 0, 0, 65, 82, 77, 87, 80, 69, /* 0x 410 */
|
||||
57, 57, 0, 0, 4, 0, 0,255,255,255,255, 0, 4 /* 0x 420 */
|
||||
unsigned char nrv_loader[3592] = {
|
||||
15, 64, 45,233, 52, 0,143,226, 22, 0, 0,235, 15, 64,189,232, /* 0x 0 */
|
||||
72,240,159,229, 64, 48,159,229, 0,240,147,229, 52, 48,159,229, /* 0x 10 */
|
||||
0,240,147,229, 3, 32,160,227, 2, 48,208,231, 1, 32, 82,226, /* 0x 20 */
|
||||
1, 20,131,224,251,255,255, 90, 1, 0,160,225, 14,240,160,225, /* 0x 30 */
|
||||
83, 82, 67, 48, 83, 82, 67, 76, 68, 83, 84, 48, 68, 83, 84, 76, /* 0x 40 */
|
||||
66, 73, 77, 80, 79, 78, 65, 77, 71, 69, 84, 80, 76, 79, 65, 68, /* 0x 50 */
|
||||
69, 78, 84, 82, 66, 82, 69, 76,240, 65, 45,233, 0,224,160,227, /* 0x 60 */
|
||||
8,112,144,229,132,208, 77,226, 0,192,160,225, 3, 0,144,232, /* 0x 70 */
|
||||
0,224,141,229, 7, 32,160,225, 13, 48,160,225, 16, 64,140,226, /* 0x 80 */
|
||||
16, 1,148,232, 52, 0, 0,235, 4, 0,160,225,224,255,255,235, /* 0x 90 */
|
||||
0, 80, 80,226, 46, 0, 0, 10, 4, 0,132,226,220,255,255,235, /* 0x a0 */
|
||||
8, 80,133,224, 0, 48,213,229, 4, 16,141,226, 0, 0, 83,227, /* 0x b0 */
|
||||
7, 96,128,224, 1, 32,160,225, 3, 0, 0, 10,178, 48,194,224, /* 0x c0 */
|
||||
1, 48,245,229, 0, 0, 83,227,250,255,255,234, 0, 48,160,227, /* 0x d0 */
|
||||
176, 48,194,225, 1, 0,160,225,201,255,255,235, 8, 48,244,229, /* 0x e0 */
|
||||
0, 80,160,225, 0, 0, 83,227, 23, 0, 0, 10,255, 48, 3,226, /* 0x f0 */
|
||||
1, 0, 83,227, 1, 64,132,226, 2, 0, 0, 10,255, 0, 83,227, /* 0x 100 */
|
||||
8, 0, 0, 10, 14, 0, 0,234, 5, 0,160,225, 4, 16,160,225, /* 0x 110 */
|
||||
189,255,255,235, 4, 0,134,228, 1, 48,212,228, 0, 0, 83,227, /* 0x 120 */
|
||||
252,255,255, 26, 6, 0, 0,234, 0, 48,212,229, 1, 16,212,229, /* 0x 130 */
|
||||
5, 0,160,225, 1, 20,131,224,179,255,255,235, 2, 64,132,226, /* 0x 140 */
|
||||
4, 0,134,228, 0, 48,212,229,229,255,255,234, 1, 64,132,226, /* 0x 150 */
|
||||
204,255,255,234,132,208,141,226,240,129,189,232,252, 64, 45,233, /* 0x 160 */
|
||||
0,112,129,224, 0, 80,224,227, 2, 65,160,227, 10, 0, 0,234, /* 0x 170 */
|
||||
24, 0,189,232, 7, 0, 64,224, 3, 32, 66,224, 0, 32,132,229, /* 0x 180 */
|
||||
240,128,189,232, 1, 64,208,228, 4, 64,164,224, 4, 76,176,225, /* 0x 190 */
|
||||
14,240,160,225, 1, 48,208,228, 1, 48,194,228, 4, 64,148,224, /* 0x 1a0 */
|
||||
247,255,255, 11,250,255,255, 42, 1, 16,160,227, 3, 0, 0,234, /* 0x 1b0 */
|
||||
1, 16, 65,226, 4, 64,148,224,241,255,255, 11, 1, 16,161,224, /* 0x 1c0 */
|
||||
4, 64,148,224,238,255,255, 11, 1, 16,161,224, 4, 64,148,224, /* 0x 1d0 */
|
||||
235,255,255, 11,245,255,255, 58, 3, 48, 81,226, 0, 16,160,227, /* 0x 1e0 */
|
||||
6, 0, 0, 58, 1, 80,208,228, 3, 84,133,225, 5, 80,240,225, /* 0x 1f0 */
|
||||
222,255,255, 10,197, 80,176,225, 15, 0, 0, 42, 2, 0, 0,234, /* 0x 200 */
|
||||
4, 64,148,224,222,255,255, 11, 11, 0, 0, 42, 1, 16,160,227, /* 0x 210 */
|
||||
4, 64,148,224,218,255,255, 11, 7, 0, 0, 42, 4, 64,148,224, /* 0x 220 */
|
||||
215,255,255, 11, 1, 16,161,224, 4, 64,148,224,212,255,255, 11, /* 0x 230 */
|
||||
249,255,255, 58, 4, 16,129,226, 3, 0, 0,234, 4, 64,148,224, /* 0x 240 */
|
||||
207,255,255, 11, 1, 16,161,224, 2, 16,129,226, 5, 12,117,227, /* 0x 250 */
|
||||
0, 0, 0, 42, 1, 16,129,226, 0, 48,210,229, 5, 48,210,231, /* 0x 260 */
|
||||
1, 48,194,228, 1, 16, 81,226,251,255,255, 26,202,255,255,234, /* 0x 270 */
|
||||
1, 0, 81,227, 3, 0, 0, 26, 15, 64, 45,233,148, 0,143,226, /* 0x 280 */
|
||||
46, 0, 0,235, 15, 64,189,232,168,240,159,229,160, 48,159,229, /* 0x 290 */
|
||||
0,240,147,229,148, 48,159,229, 0,240,147,229, 3, 32,160,227, /* 0x 2a0 */
|
||||
2, 48,208,231, 1, 32, 82,226, 1, 20,131,224,251,255,255, 90, /* 0x 2b0 */
|
||||
1, 0,160,225, 14,240,160,225,124, 0,159,229, 92, 32,159,229, /* 0x 2c0 */
|
||||
4, 16, 66,226, 1, 48,208,228, 0, 0, 83,227,248,255,255, 10, /* 0x 2d0 */
|
||||
240, 0, 83,227,240,192,195, 35, 1, 48,208, 37, 12,196,131, 32, /* 0x 2e0 */
|
||||
2, 48,208, 36, 12, 52,131, 32, 3, 16,129,224, 0, 48,209,229, /* 0x 2f0 */
|
||||
12,196,131,224, 1, 48,209,229, 12,196,131,224, 2, 48,209,229, /* 0x 300 */
|
||||
12,196,131,224, 3, 48,209,229, 12,196,131,224, 2,192,140,224, /* 0x 310 */
|
||||
0,192,129,229,234,255,255,234, 83, 82, 67, 48, 83, 82, 67, 76, /* 0x 320 */
|
||||
68, 83, 84, 48, 68, 83, 84, 76, 66, 73, 77, 80, 79, 78, 65, 77, /* 0x 330 */
|
||||
71, 69, 84, 80, 76, 79, 65, 68, 69, 78, 84, 82, 66, 82, 69, 76, /* 0x 340 */
|
||||
240, 65, 45,233, 0,224,160,227, 8,112,144,229,132,208, 77,226, /* 0x 350 */
|
||||
0,192,160,225, 3, 0,144,232, 0,224,141,229, 7, 32,160,225, /* 0x 360 */
|
||||
13, 48,160,225, 16, 64,140,226, 16, 1,148,232, 53, 0, 0,235, /* 0x 370 */
|
||||
4, 0,160,225,200,255,255,235, 0, 80, 80,226, 46, 0, 0, 10, /* 0x 380 */
|
||||
4, 0,132,226,196,255,255,235, 8, 80,133,224, 0, 48,213,229, /* 0x 390 */
|
||||
4, 16,141,226, 0, 0, 83,227, 7, 96,128,224, 1, 32,160,225, /* 0x 3a0 */
|
||||
3, 0, 0, 10,178, 48,194,224, 1, 48,245,229, 0, 0, 83,227, /* 0x 3b0 */
|
||||
250,255,255,234, 0, 48,160,227,176, 48,194,225, 1, 0,160,225, /* 0x 3c0 */
|
||||
177,255,255,235, 8, 48,244,229, 0, 80,160,225, 0, 0, 83,227, /* 0x 3d0 */
|
||||
23, 0, 0, 10,255, 48, 3,226, 1, 0, 83,227, 1, 64,132,226, /* 0x 3e0 */
|
||||
2, 0, 0, 10,255, 0, 83,227, 8, 0, 0, 10, 14, 0, 0,234, /* 0x 3f0 */
|
||||
5, 0,160,225, 4, 16,160,225,165,255,255,235, 4, 0,134,228, /* 0x 400 */
|
||||
1, 48,212,228, 0, 0, 83,227,252,255,255, 26, 6, 0, 0,234, /* 0x 410 */
|
||||
0, 48,212,229, 1, 16,212,229, 5, 0,160,225, 1, 20,131,224, /* 0x 420 */
|
||||
155,255,255,235, 2, 64,132,226, 4, 0,134,228, 0, 48,212,229, /* 0x 430 */
|
||||
229,255,255,234, 1, 64,132,226,204,255,255,234,157,255,255,235, /* 0x 440 */
|
||||
132,208,141,226,240,129,189,232,252, 64, 45,233, 0,112,129,224, /* 0x 450 */
|
||||
0, 80,224,227, 2, 65,160,227, 10, 0, 0,234, 24, 0,189,232, /* 0x 460 */
|
||||
7, 0, 64,224, 3, 32, 66,224, 0, 32,132,229,240,128,189,232, /* 0x 470 */
|
||||
1, 64,208,228, 4, 64,164,224, 4, 76,176,225, 14,240,160,225, /* 0x 480 */
|
||||
1, 48,208,228, 1, 48,194,228, 4, 64,148,224,247,255,255, 11, /* 0x 490 */
|
||||
250,255,255, 42, 1, 16,160,227, 3, 0, 0,234, 1, 16, 65,226, /* 0x 4a0 */
|
||||
4, 64,148,224,241,255,255, 11, 1, 16,161,224, 4, 64,148,224, /* 0x 4b0 */
|
||||
238,255,255, 11, 1, 16,161,224, 4, 64,148,224,235,255,255, 11, /* 0x 4c0 */
|
||||
245,255,255, 58, 3, 48, 81,226, 0, 16,160,227, 6, 0, 0, 58, /* 0x 4d0 */
|
||||
1, 80,208,228, 3, 84,133,225, 5, 80,240,225,222,255,255, 10, /* 0x 4e0 */
|
||||
197, 80,176,225, 15, 0, 0, 42, 2, 0, 0,234, 4, 64,148,224, /* 0x 4f0 */
|
||||
222,255,255, 11, 11, 0, 0, 42, 1, 16,160,227, 4, 64,148,224, /* 0x 500 */
|
||||
218,255,255, 11, 7, 0, 0, 42, 4, 64,148,224,215,255,255, 11, /* 0x 510 */
|
||||
1, 16,161,224, 4, 64,148,224,212,255,255, 11,249,255,255, 58, /* 0x 520 */
|
||||
4, 16,129,226, 3, 0, 0,234, 4, 64,148,224,207,255,255, 11, /* 0x 530 */
|
||||
1, 16,161,224, 2, 16,129,226, 5, 12,117,227, 0, 0, 0, 42, /* 0x 540 */
|
||||
1, 16,129,226, 0, 48,210,229, 5, 48,210,231, 1, 48,194,228, /* 0x 550 */
|
||||
1, 16, 81,226,251,255,255, 26,202,255,255,234, 15, 64, 45,233, /* 0x 560 */
|
||||
72, 0,143,226, 14, 0,144,232, 2, 16,129,224, 0, 32,147,229, /* 0x 570 */
|
||||
1, 58,131,226, 1, 0, 83,225,251,255,255,154, 4,224,143,226, /* 0x 580 */
|
||||
23,192,143,226, 28,255, 47,225, 15, 64,189,232, 60,192,159,229, /* 0x 590 */
|
||||
28,255, 47,225, 12, 75, 27,104, 24, 71, 12, 75,251,231, 27,224, /* 0x 5a0 */
|
||||
3, 33, 67, 92, 18, 2,210, 24, 1, 57,250,213, 16, 28,112, 71, /* 0x 5b0 */
|
||||
83, 82, 67, 48, 83, 82, 67, 76, 68, 83, 84, 48, 68, 83, 84, 76, /* 0x 5c0 */
|
||||
66, 73, 77, 80, 79, 78, 65, 77, 71, 69, 84, 80, 76, 79, 65, 68, /* 0x 5d0 */
|
||||
69, 78, 84, 82, 66, 82, 69, 76,240,181,163,176, 0, 34, 2,146, /* 0x 5e0 */
|
||||
130,104, 1,146, 66,105, 3, 28, 4,105, 0,146, 89,104, 0,104, /* 0x 5f0 */
|
||||
1,154, 2,171, 0,240, 76,248, 37, 28, 40, 28,255,247,208,255, /* 0x 600 */
|
||||
4, 30, 61,208, 0,155, 40, 29,228, 24,255,247,201,255, 1,154, /* 0x 610 */
|
||||
134, 24, 3,168, 2, 28, 35,120, 27, 6, 0, 43, 4,208, 27, 14, /* 0x 620 */
|
||||
19,128, 1, 52, 2, 50,246,231, 0, 35, 19,128,255,247,181,255, /* 0x 630 */
|
||||
8, 53, 7, 28, 43,120, 27, 6, 0, 43, 31,208, 27, 14, 1, 53, /* 0x 640 */
|
||||
1, 43, 2,208,255, 43, 13,208,244,231, 56, 28, 41, 28,255,247, /* 0x 650 */
|
||||
161,255, 52, 28, 32, 96, 4, 54, 43,120, 27, 6, 1, 53, 0, 43, /* 0x 660 */
|
||||
250,209,231,231,105,120, 43,120, 9, 2, 56, 28, 89, 24,255,247, /* 0x 670 */
|
||||
145,255, 52, 28, 2, 53, 4, 54, 32, 96,219,231, 1, 53,188,231, /* 0x 680 */
|
||||
35,176,240,188, 1,188, 0, 71, 1,192,143,226, 28,255, 47,225, /* 0x 690 */
|
||||
252,181, 15, 24, 1, 36,101, 66,228, 7, 5, 38, 54, 2, 15,224, /* 0x 6a0 */
|
||||
24,188,192, 27,210, 26, 34, 96,240,188, 2,188, 8, 71, 4,120, /* 0x 6b0 */
|
||||
100, 65, 1, 48, 36, 6,247, 70, 3,120, 1, 48, 19,112, 1, 50, /* 0x 6c0 */
|
||||
36, 25,254, 70,243,208,247,210, 1, 33, 4,224, 1, 57, 36, 25, /* 0x 6d0 */
|
||||
254, 70,236,208, 73, 65, 36, 25,254, 70,232,208, 73, 65, 36, 25, /* 0x 6e0 */
|
||||
254, 70,228,208,242,211,203, 30, 0, 33, 8,211, 27, 2, 5,120, /* 0x 6f0 */
|
||||
1, 48, 29, 67,237, 67,211,208,109, 16, 19,210, 3,224, 36, 25, /* 0x 700 */
|
||||
254, 70,212,208, 14,210, 1, 33, 36, 25,254, 70,207,208, 9,210, /* 0x 710 */
|
||||
36, 25,254, 70,203,208, 73, 65, 36, 25,254, 70,199,208,247,211, /* 0x 720 */
|
||||
4, 49, 4,224, 36, 25,254, 70,193,208, 73, 65, 2, 49,238, 66, /* 0x 730 */
|
||||
0,210, 1, 49, 19,120, 83, 93, 19,112, 1, 50, 1, 57,250,209, /* 0x 740 */
|
||||
190,231, 0, 0, 1, 0, 81,227, 11, 0, 0, 26, 15, 64, 45,233, /* 0x 750 */
|
||||
136, 0,143,226, 14, 0,144,232, 2, 16,129,224, 0, 32,147,229, /* 0x 760 */
|
||||
1, 58,131,226, 1, 0, 83,225,251,255,255,154, 4,224,143,226, /* 0x 770 */
|
||||
23,192,143,226, 28,255, 47,225, 15, 64,189,232,124,192,159,229, /* 0x 780 */
|
||||
28,255, 47,225, 28, 75, 27,104, 24, 71, 28, 75,251,231, 59,224, /* 0x 790 */
|
||||
3, 33, 67, 92, 18, 2,210, 24, 1, 57,250,213, 16, 28,112, 71, /* 0x 7a0 */
|
||||
48,180, 24, 72, 16, 74, 17, 31, 3,120, 1, 48, 0, 43, 21,208, /* 0x 7b0 */
|
||||
240, 43, 8,211, 15, 36, 28, 64, 67,120, 36, 2,228, 24, 3,120, /* 0x 7c0 */
|
||||
2, 48, 36, 2, 27, 25,201, 24, 0, 37, 75, 93, 36, 2,228, 24, /* 0x 7d0 */
|
||||
1, 53, 4, 45,249,209,164, 24, 12, 96,229,231, 48,188,112, 71, /* 0x 7e0 */
|
||||
83, 82, 67, 48, 83, 82, 67, 76, 68, 83, 84, 48, 68, 83, 84, 76, /* 0x 7f0 */
|
||||
66, 73, 77, 80, 79, 78, 65, 77, 71, 69, 84, 80, 76, 79, 65, 68, /* 0x 800 */
|
||||
69, 78, 84, 82, 66, 82, 69, 76,240,181,163,176, 0, 34, 2,146, /* 0x 810 */
|
||||
130,104, 1,146, 66,105, 3, 28, 4,105, 0,146, 89,104, 0,104, /* 0x 820 */
|
||||
1,154, 2,171, 0,240, 78,248, 37, 28, 40, 28,255,247,176,255, /* 0x 830 */
|
||||
4, 30, 61,208, 0,155, 40, 29,228, 24,255,247,169,255, 1,154, /* 0x 840 */
|
||||
134, 24, 3,168, 2, 28, 35,120, 27, 6, 0, 43, 4,208, 27, 14, /* 0x 850 */
|
||||
19,128, 1, 52, 2, 50,246,231, 0, 35, 19,128,255,247,149,255, /* 0x 860 */
|
||||
8, 53, 7, 28, 43,120, 27, 6, 0, 43, 31,208, 27, 14, 1, 53, /* 0x 870 */
|
||||
1, 43, 2,208,255, 43, 13,208,244,231, 56, 28, 41, 28,255,247, /* 0x 880 */
|
||||
129,255, 52, 28, 32, 96, 4, 54, 43,120, 27, 6, 1, 53, 0, 43, /* 0x 890 */
|
||||
250,209,231,231,105,120, 43,120, 9, 2, 56, 28, 89, 24,255,247, /* 0x 8a0 */
|
||||
113,255, 52, 28, 2, 53, 4, 54, 32, 96,219,231, 1, 53,188,231, /* 0x 8b0 */
|
||||
255,247,118,255, 35,176,240,188, 1,188, 0, 71, 1,192,143,226, /* 0x 8c0 */
|
||||
28,255, 47,225,252,181, 15, 24, 1, 36,101, 66,228, 7, 5, 38, /* 0x 8d0 */
|
||||
54, 2, 15,224, 24,188,192, 27,210, 26, 34, 96,240,188, 2,188, /* 0x 8e0 */
|
||||
8, 71, 4,120,100, 65, 1, 48, 36, 6,247, 70, 3,120, 1, 48, /* 0x 8f0 */
|
||||
19,112, 1, 50, 36, 25,254, 70,243,208,247,210, 1, 33, 4,224, /* 0x 900 */
|
||||
1, 57, 36, 25,254, 70,236,208, 73, 65, 36, 25,254, 70,232,208, /* 0x 910 */
|
||||
73, 65, 36, 25,254, 70,228,208,242,211,203, 30, 0, 33, 8,211, /* 0x 920 */
|
||||
27, 2, 5,120, 1, 48, 29, 67,237, 67,211,208,109, 16, 19,210, /* 0x 930 */
|
||||
3,224, 36, 25,254, 70,212,208, 14,210, 1, 33, 36, 25,254, 70, /* 0x 940 */
|
||||
207,208, 9,210, 36, 25,254, 70,203,208, 73, 65, 36, 25,254, 70, /* 0x 950 */
|
||||
199,208,247,211, 4, 49, 4,224, 36, 25,254, 70,193,208, 73, 65, /* 0x 960 */
|
||||
2, 49,238, 66, 0,210, 1, 49, 19,120, 83, 93, 19,112, 1, 50, /* 0x 970 */
|
||||
1, 57,250,209,190,231, 0, 0, 15, 64, 45,233, 72, 0,143,226, /* 0x 980 */
|
||||
14, 0,144,232, 2, 16,129,224, 0, 32,147,229, 1, 58,131,226, /* 0x 990 */
|
||||
1, 0, 83,225,251,255,255,154, 4,224,143,226, 23,192,143,226, /* 0x 9a0 */
|
||||
28,255, 47,225, 15, 64,189,232, 60,192,159,229, 28,255, 47,225, /* 0x 9b0 */
|
||||
12, 75, 27,104, 24, 71, 12, 75,251,231, 27,224, 3, 33, 67, 92, /* 0x 9c0 */
|
||||
18, 2,210, 24, 1, 57,250,213, 16, 28,112, 71, 83, 82, 67, 48, /* 0x 9d0 */
|
||||
83, 82, 67, 76, 68, 83, 84, 48, 68, 83, 84, 76, 66, 73, 77, 80, /* 0x 9e0 */
|
||||
79, 78, 65, 77, 71, 69, 84, 80, 76, 79, 65, 68, 69, 78, 84, 82, /* 0x 9f0 */
|
||||
66, 82, 69, 76,240,181,163,176, 0, 34, 2,146,130,104, 1,146, /* 0x a00 */
|
||||
66,105, 3, 28, 4,105, 0,146, 89,104, 0,104, 1,154, 2,171, /* 0x a10 */
|
||||
0,240, 76,248, 37, 28, 40, 28,255,247,208,255, 4, 30, 61,208, /* 0x a20 */
|
||||
0,155, 40, 29,228, 24,255,247,201,255, 1,154,134, 24, 3,168, /* 0x a30 */
|
||||
2, 28, 35,120, 27, 6, 0, 43, 4,208, 27, 14, 19,128, 1, 52, /* 0x a40 */
|
||||
2, 50,246,231, 0, 35, 19,128,255,247,181,255, 8, 53, 7, 28, /* 0x a50 */
|
||||
43,120, 27, 6, 0, 43, 31,208, 27, 14, 1, 53, 1, 43, 2,208, /* 0x a60 */
|
||||
255, 43, 13,208,244,231, 56, 28, 41, 28,255,247,161,255, 52, 28, /* 0x a70 */
|
||||
32, 96, 4, 54, 43,120, 27, 6, 1, 53, 0, 43,250,209,231,231, /* 0x a80 */
|
||||
105,120, 43,120, 9, 2, 56, 28, 89, 24,255,247,145,255, 52, 28, /* 0x a90 */
|
||||
2, 53, 4, 54, 32, 96,219,231, 1, 53,188,231, 35,176,240,188, /* 0x aa0 */
|
||||
1,188, 0, 71, 1,192,143,226, 28,255, 47,225, 9, 24,254,181, /* 0x ab0 */
|
||||
1, 36,101, 66,228, 7, 13, 39, 63, 2, 15,224, 26,188, 64, 26, /* 0x ac0 */
|
||||
210, 26, 34, 96,240,188, 2,188, 8, 71, 4,120,100, 65, 1, 48, /* 0x ad0 */
|
||||
36, 6,247, 70, 3,120, 1, 48, 19,112, 1, 50, 36, 25,254, 70, /* 0x ae0 */
|
||||
243,208,247,210, 1, 33, 36, 25,254, 70,238,208, 73, 65, 36, 25, /* 0x af0 */
|
||||
254, 70,234,208,247,211,203, 30, 0, 33, 5,211, 27, 2, 5,120, /* 0x b00 */
|
||||
1, 48, 29, 67,237, 67,217,208, 36, 25,254, 70,221,208, 73, 65, /* 0x b10 */
|
||||
36, 25,254, 70,217,208, 73, 65, 9,209, 1, 33, 36, 25,254, 70, /* 0x b20 */
|
||||
211,208, 73, 65, 36, 25,254, 70,207,208,247,211, 2, 49, 1, 49, /* 0x b30 */
|
||||
253, 66, 0,210, 1, 49, 19,120, 83, 93, 19,112, 1, 50, 1, 57, /* 0x b40 */
|
||||
250,209,203,231, 1, 0, 81,227, 11, 0, 0, 26, 15, 64, 45,233, /* 0x b50 */
|
||||
136, 0,143,226, 14, 0,144,232, 2, 16,129,224, 0, 32,147,229, /* 0x b60 */
|
||||
1, 58,131,226, 1, 0, 83,225,251,255,255,154, 4,224,143,226, /* 0x b70 */
|
||||
23,192,143,226, 28,255, 47,225, 15, 64,189,232,124,192,159,229, /* 0x b80 */
|
||||
28,255, 47,225, 28, 75, 27,104, 24, 71, 28, 75,251,231, 59,224, /* 0x b90 */
|
||||
3, 33, 67, 92, 18, 2,210, 24, 1, 57,250,213, 16, 28,112, 71, /* 0x ba0 */
|
||||
48,180, 24, 72, 16, 74, 17, 31, 3,120, 1, 48, 0, 43, 21,208, /* 0x bb0 */
|
||||
240, 43, 8,211, 15, 36, 28, 64, 67,120, 36, 2,228, 24, 3,120, /* 0x bc0 */
|
||||
2, 48, 36, 2, 27, 25,201, 24, 0, 37, 75, 93, 36, 2,228, 24, /* 0x bd0 */
|
||||
1, 53, 4, 45,249,209,164, 24, 12, 96,229,231, 48,188,112, 71, /* 0x be0 */
|
||||
83, 82, 67, 48, 83, 82, 67, 76, 68, 83, 84, 48, 68, 83, 84, 76, /* 0x bf0 */
|
||||
66, 73, 77, 80, 79, 78, 65, 77, 71, 69, 84, 80, 76, 79, 65, 68, /* 0x c00 */
|
||||
69, 78, 84, 82, 66, 82, 69, 76,240,181,163,176, 0, 34, 2,146, /* 0x c10 */
|
||||
130,104, 1,146, 66,105, 3, 28, 4,105, 0,146, 89,104, 0,104, /* 0x c20 */
|
||||
1,154, 2,171, 0,240, 78,248, 37, 28, 40, 28,255,247,176,255, /* 0x c30 */
|
||||
4, 30, 61,208, 0,155, 40, 29,228, 24,255,247,169,255, 1,154, /* 0x c40 */
|
||||
134, 24, 3,168, 2, 28, 35,120, 27, 6, 0, 43, 4,208, 27, 14, /* 0x c50 */
|
||||
19,128, 1, 52, 2, 50,246,231, 0, 35, 19,128,255,247,149,255, /* 0x c60 */
|
||||
8, 53, 7, 28, 43,120, 27, 6, 0, 43, 31,208, 27, 14, 1, 53, /* 0x c70 */
|
||||
1, 43, 2,208,255, 43, 13,208,244,231, 56, 28, 41, 28,255,247, /* 0x c80 */
|
||||
129,255, 52, 28, 32, 96, 4, 54, 43,120, 27, 6, 1, 53, 0, 43, /* 0x c90 */
|
||||
250,209,231,231,105,120, 43,120, 9, 2, 56, 28, 89, 24,255,247, /* 0x ca0 */
|
||||
113,255, 52, 28, 2, 53, 4, 54, 32, 96,219,231, 1, 53,188,231, /* 0x cb0 */
|
||||
255,247,118,255, 35,176,240,188, 1,188, 0, 71, 1,192,143,226, /* 0x cc0 */
|
||||
28,255, 47,225, 9, 24,254,181, 1, 36,101, 66,228, 7, 13, 39, /* 0x cd0 */
|
||||
63, 2, 15,224, 26,188, 64, 26,210, 26, 34, 96,240,188, 2,188, /* 0x ce0 */
|
||||
8, 71, 4,120,100, 65, 1, 48, 36, 6,247, 70, 3,120, 1, 48, /* 0x cf0 */
|
||||
19,112, 1, 50, 36, 25,254, 70,243,208,247,210, 1, 33, 36, 25, /* 0x d00 */
|
||||
254, 70,238,208, 73, 65, 36, 25,254, 70,234,208,247,211,203, 30, /* 0x d10 */
|
||||
0, 33, 5,211, 27, 2, 5,120, 1, 48, 29, 67,237, 67,217,208, /* 0x d20 */
|
||||
36, 25,254, 70,221,208, 73, 65, 36, 25,254, 70,217,208, 73, 65, /* 0x d30 */
|
||||
9,209, 1, 33, 36, 25,254, 70,211,208, 73, 65, 36, 25,254, 70, /* 0x d40 */
|
||||
207,208,247,211, 2, 49, 1, 49,253, 66, 0,210, 1, 49, 19,120, /* 0x d50 */
|
||||
83, 93, 19,112, 1, 50, 1, 57,250,209,203,231, 85, 80, 88, 33, /* 0x d60 */
|
||||
161,216,208,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x d70 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 65, 82, 77, 80, /* 0x d80 */
|
||||
69, 65, 88, 69, 0, 0, 0, 0, 0, 65, 82, 77, 80, 69, 65, 68, /* 0x d90 */
|
||||
69, 0,128, 2, 0, 0, 65, 82, 77, 80, 69, 84, 88, 69, 0,108, /* 0x da0 */
|
||||
5, 0, 0, 65, 82, 77, 80, 69, 84, 68, 69, 0, 84, 7, 0, 0, /* 0x db0 */
|
||||
65, 82, 77, 80, 69, 84, 88, 66, 0,136, 9, 0, 0, 65, 82, 77, /* 0x dc0 */
|
||||
80, 69, 84, 68, 66, 0, 84, 11, 0, 0, 65, 82, 77, 80, 69, 72, /* 0x dd0 */
|
||||
69, 65, 68, 0,108, 13, 0, 0, 85, 80, 88, 49, 72, 69, 65, 68, /* 0x de0 */
|
||||
0,108, 13, 0, 0, 65, 82, 77, 80, 69, 69, 79, 70, 0,140, 13, /* 0x df0 */
|
||||
0, 0,255,255,255,255,140, 13 /* 0x e00 */
|
||||
};
|
||||
|
||||
+61
-279
@@ -29,127 +29,20 @@
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#define WRITEFILE(name0, buf, len) \
|
||||
do { short b[3]; b[0] = '\\'; b[1] = name0; b[2] = 0; \
|
||||
typedef int (*CF)(short *, int, int, int, int, int, int); CF cf = (CF) 0x1f99c58; \
|
||||
typedef void (*WF)(int, const void *, int, int *, int); WF wf = (WF) 0x1f99d60; \
|
||||
typedef void (*CH)(int); CH ch = (CH) 0x1f9a2f0; \
|
||||
int h = cf(b, 0x40000000L, 3, 0, 2, 0x80, 0);\
|
||||
int l; wf(h, buf, len, &l, 0); \
|
||||
ch(h); } while (0)
|
||||
#ifndef UCL_DECOMPRESS
|
||||
# error please define UCL_DECOMPRESS
|
||||
#endif
|
||||
|
||||
int UCL_DECOMPRESS(const unsigned char * src, unsigned src_len,
|
||||
unsigned char * dst, unsigned * dst_len);
|
||||
|
||||
typedef unsigned int ucl_uint32;
|
||||
typedef int ucl_int32;
|
||||
typedef unsigned int ucl_uint;
|
||||
typedef int ucl_int;
|
||||
void *LoadLibraryW(const unsigned short *);
|
||||
void *GetProcAddressA(const void *, const void *);
|
||||
void *get_le32(const void *);
|
||||
void reloc_main();
|
||||
|
||||
static int
|
||||
ucl_nrv2e_decompress_8 ( const unsigned char * src, ucl_uint src_len,
|
||||
unsigned char * dst, ucl_uint * dst_len)
|
||||
{
|
||||
|
||||
{
|
||||
ucl_uint32 bb = 0;
|
||||
|
||||
|
||||
|
||||
ucl_uint ilen = 0, olen = 0, last_m_off = 1;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
for (;;)
|
||||
{
|
||||
ucl_uint m_off, m_len;
|
||||
|
||||
while ((((bb = bb & 0x7f ? bb*2 : ((unsigned)src[ilen++]*2+1)) >> 8) & 1))
|
||||
{
|
||||
;
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
dst[olen++] = src[ilen++];
|
||||
|
||||
}
|
||||
m_off = 1;
|
||||
for (;;)
|
||||
{
|
||||
m_off = m_off*2 + (((bb = bb & 0x7f ? bb*2 : ((unsigned)src[ilen++]*2+1)) >> 8) & 1);
|
||||
;
|
||||
;
|
||||
if ((((bb = bb & 0x7f ? bb*2 : ((unsigned)src[ilen++]*2+1)) >> 8) & 1)) break;
|
||||
m_off = (m_off-1)*2 + (((bb = bb & 0x7f ? bb*2 : ((unsigned)src[ilen++]*2+1)) >> 8) & 1);
|
||||
}
|
||||
if (m_off == 2)
|
||||
{
|
||||
m_off = last_m_off;
|
||||
m_len = (((bb = bb & 0x7f ? bb*2 : ((unsigned)src[ilen++]*2+1)) >> 8) & 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
;
|
||||
m_off = (m_off-3)*256 + src[ilen++];
|
||||
if (m_off == ((0xffffffff) + 0U))
|
||||
break;
|
||||
m_len = (m_off ^ ((0xffffffff) + 0U)) & 1;
|
||||
m_off >>= 1;
|
||||
last_m_off = ++m_off;
|
||||
}
|
||||
if (m_len)
|
||||
m_len = 1 + (((bb = bb & 0x7f ? bb*2 : ((unsigned)src[ilen++]*2+1)) >> 8) & 1);
|
||||
else if ((((bb = bb & 0x7f ? bb*2 : ((unsigned)src[ilen++]*2+1)) >> 8) & 1))
|
||||
m_len = 3 + (((bb = bb & 0x7f ? bb*2 : ((unsigned)src[ilen++]*2+1)) >> 8) & 1);
|
||||
else
|
||||
{
|
||||
m_len++;
|
||||
do {
|
||||
m_len = m_len*2 + (((bb = bb & 0x7f ? bb*2 : ((unsigned)src[ilen++]*2+1)) >> 8) & 1);
|
||||
;
|
||||
;
|
||||
} while (!(((bb = bb & 0x7f ? bb*2 : ((unsigned)src[ilen++]*2+1)) >> 8) & 1));
|
||||
m_len += 3;
|
||||
}
|
||||
m_len += (m_off > 0x500);
|
||||
;
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
{
|
||||
const unsigned char * m_pos;
|
||||
m_pos = dst + olen - m_off;
|
||||
dst[olen++] = *m_pos++;
|
||||
do dst[olen++] = *m_pos++; while (--m_len > 0);
|
||||
}
|
||||
|
||||
}
|
||||
*dst_len = olen;
|
||||
return ilen == src_len ? 0 : (ilen < src_len ? (-205) : (-201));
|
||||
}
|
||||
}
|
||||
|
||||
typedef void *(*loadlibraryw)(unsigned short *);
|
||||
typedef void *(*getprocaddra)(void *, void *);
|
||||
|
||||
#define T(a,b,c,d) ((a) + ((b) * 0x100) + ((c) * 0x10000) + ((d) * 0x1000000))
|
||||
|
||||
static inline void *get_le32(unsigned char *p)
|
||||
{
|
||||
return (void*) T(p[0], p[1], p[2], p[3]);
|
||||
}
|
||||
|
||||
static void handle_imports(unsigned char *imp,
|
||||
unsigned name_offset,
|
||||
unsigned iat_offset,
|
||||
loadlibraryw ll,
|
||||
getprocaddra gpa)
|
||||
static void handle_imports(const unsigned char *imp, unsigned name_offset,
|
||||
unsigned iat_offset)
|
||||
{
|
||||
unsigned short buf[64];
|
||||
while (1)
|
||||
@@ -166,7 +59,7 @@ static void handle_imports(unsigned char *imp,
|
||||
*b = *name;
|
||||
*b = 0;
|
||||
|
||||
void *dll = ll(buf);
|
||||
void *dll = LoadLibraryW(buf);
|
||||
imp += 8;
|
||||
unsigned ord;
|
||||
|
||||
@@ -176,7 +69,7 @@ static void handle_imports(unsigned char *imp,
|
||||
{
|
||||
case 1:
|
||||
// by name
|
||||
*iat++ = (unsigned) gpa(dll, imp);
|
||||
*iat++ = (unsigned) GetProcAddressA(dll, imp);
|
||||
while (*imp++)
|
||||
;
|
||||
break;
|
||||
@@ -184,10 +77,10 @@ static void handle_imports(unsigned char *imp,
|
||||
// by ordinal
|
||||
ord = ((unsigned) imp[0]) + imp[1] * 0x100;
|
||||
imp += 2;
|
||||
*iat++ = (unsigned) gpa(dll, (void *) ord);
|
||||
*iat++ = (unsigned) GetProcAddressA(dll, (void *) ord);
|
||||
break;
|
||||
default:
|
||||
*(int*) 1 = 0;
|
||||
// *(int*) 1 = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -195,163 +88,52 @@ static void handle_imports(unsigned char *imp,
|
||||
}
|
||||
}
|
||||
|
||||
void upx_main(unsigned *info)
|
||||
// debugging stuff
|
||||
int CFwrap(short *, int, int, int, int, int, int);
|
||||
void WFwrap(int, const void *, int, int *, int);
|
||||
void CHwrap(int);
|
||||
#define WRITEFILE2(name0, buf, len) \
|
||||
do { short b[3]; b[0] = '\\'; b[1] = name0; b[2] = 0; \
|
||||
int h = CFwrap(b, 0x40000000L, 3, 0, 2, 0x80, 0);\
|
||||
int l; WFwrap(h, buf, len, &l, 0); \
|
||||
CHwrap(h); \
|
||||
} while (0)
|
||||
|
||||
void upx_main(const unsigned *info)
|
||||
{
|
||||
int dlen = 0;
|
||||
unsigned src0 = *info++;
|
||||
unsigned dst0 = *info++;
|
||||
unsigned bimp = *info++;
|
||||
unsigned onam = *info++;
|
||||
unsigned getp = *info++;
|
||||
unsigned load = *info++;
|
||||
unsigned entr = *info++;
|
||||
unsigned srcl = *info++;
|
||||
unsigned dstl = *info++;
|
||||
|
||||
//WRITEFILE('1', (void*) 0x11000, load + 256 - 0x11000);
|
||||
ucl_nrv2e_decompress_8((void *) src0, srcl, (void *) dst0, &dlen);
|
||||
handle_imports((void *) bimp, onam, dst0, *(void**) load, *(void**) getp);
|
||||
//WRITEFILE('2', (void*) 0x11000, load + 256 - 0x11000);
|
||||
}
|
||||
|
||||
#ifndef __pe__
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
static void *test_loadlibraryw(unsigned short *x)
|
||||
{
|
||||
printf("loadlibraryw called: ");
|
||||
while (*x)
|
||||
printf("%c", *x++);
|
||||
printf("\n");
|
||||
|
||||
static unsigned ret = 0x2a2a2a00;
|
||||
return (void*) ret++;
|
||||
}
|
||||
|
||||
static void *test_getprocaddra(void *a, void *x)
|
||||
{
|
||||
if ((unsigned) x < 0x10000)
|
||||
printf("getprocaddra called: %p %x\n", a, (unsigned) x);
|
||||
else
|
||||
printf("getprocaddra called: %p %s\n", a, (char*) x);
|
||||
|
||||
static unsigned ret = 1;
|
||||
return a + ret++;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if (argc != 2)
|
||||
return printf("usage: %s <compressed.exe>\n", argv[0]);
|
||||
|
||||
void *mem = malloc(32*1024*1024);
|
||||
void *mem16m = (void*) ((((unsigned) mem) + 0xffffff) & 0xff000000);
|
||||
printf("mem: %p %p\n", mem, mem16m);
|
||||
|
||||
char command[100 + strlen(argv[1])];
|
||||
snprintf(command, sizeof(command),
|
||||
"arm-wince-pe-objdump -h '%s'|grep '2[*][*]2'", argv[1]);
|
||||
FILE *fp = popen(command, "r");
|
||||
if (fgets(command, 100, fp) == NULL)
|
||||
return printf("error while calling objdump\n");
|
||||
|
||||
unsigned start_uncompressed;
|
||||
if (sscanf(command, "%*d %*s %*x %x", &start_uncompressed) != 1)
|
||||
return printf("scanf failed on '%s'", command);
|
||||
printf("start_uncompressed=%x ", start_uncompressed);
|
||||
|
||||
if (fgets(command, 100, fp) == NULL)
|
||||
return printf("error while calling objdump\n");
|
||||
unsigned size;
|
||||
unsigned offset;
|
||||
unsigned vma;
|
||||
if (sscanf(command, "%*d %*s %x %x %*x %x", &size, &vma, &offset) != 3)
|
||||
return printf("scanf failed on '%s'" , command);
|
||||
printf("size=%x vma=%x offset=%x\n", size, vma, offset);
|
||||
|
||||
if (fgets(command, 100, fp) == NULL)
|
||||
return printf("error while calling objdump\n");
|
||||
|
||||
unsigned size2;
|
||||
unsigned offset2;
|
||||
unsigned vma2;
|
||||
if (sscanf(command, "%*d %*s %x %x %*x %x", &size2, &vma2, &offset2) != 3)
|
||||
return printf("scanf failed on '%s'" , command);
|
||||
printf("size2=%x vma2=%x offset2=%x\n", size2, vma2, offset2);
|
||||
|
||||
pclose(fp);
|
||||
|
||||
FILE *f1 = fopen(argv[1], "rb");
|
||||
if (f1 == NULL)
|
||||
return printf("can not open %s\n", argv[1]);
|
||||
if (fseek(f1, offset, SEEK_SET))
|
||||
return printf("fseek failed\n");
|
||||
if (fread(mem16m + vma, size, 1, f1) != 1)
|
||||
return printf("fread failed\n");
|
||||
if (fseek(f1, offset2, SEEK_SET))
|
||||
return printf("fseek failed\n");
|
||||
if (fread(mem16m + vma2, size2, 1, f1) != 1)
|
||||
return printf("fread failed\n");
|
||||
fclose(f1);
|
||||
|
||||
unsigned *info = (unsigned *) memmem(mem16m + vma, size, "XxxX", 4);
|
||||
if (info == NULL)
|
||||
return printf("decompression info not found\n");
|
||||
|
||||
info++;
|
||||
unsigned src0 = *info++;
|
||||
unsigned dst0 = *info++;
|
||||
unsigned bimp = *info++;
|
||||
unsigned onam = *info++;
|
||||
unsigned getp = *info++;
|
||||
unsigned load = *info++;
|
||||
unsigned entr = *info++;
|
||||
unsigned srcl = *info++;
|
||||
unsigned dstl = *info++;
|
||||
|
||||
printf("%x %x %x %x %x %x %x %x %x\n", src0, srcl, dst0, dstl, bimp, onam, load, getp, entr);
|
||||
|
||||
int dlen = 0;
|
||||
int ret = ucl_nrv2e_decompress_8(mem16m + src0, srcl, mem16m + dst0, &dlen);
|
||||
|
||||
printf("dlen=%x, ret=%d\n", dlen, ret);
|
||||
if (dlen != (int) dstl)
|
||||
return printf("corrupt compressed data\n");
|
||||
|
||||
f1 = fopen("/tmp/image.out", "w");
|
||||
fwrite(mem16m, vma + size + 0x10000, 1, f1);
|
||||
fclose(f1);
|
||||
|
||||
handle_imports(bimp + mem16m, onam + mem16m, dst0 + mem16m,
|
||||
test_loadlibraryw, test_getprocaddra);
|
||||
|
||||
f1 = fopen("/tmp/image.out", "w");
|
||||
fwrite(mem16m, vma2 + size2, 1, f1);
|
||||
fclose(f1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
unsigned dlen = 0;
|
||||
#if 0
|
||||
int main(void)
|
||||
{
|
||||
FILE *f1 = fopen("/r", "w");
|
||||
int h = LoadLibraryW(L"coredll.dll");
|
||||
fprintf(f1, "%p\n", GetProcAddressA(h, "DeleteFileW"));
|
||||
fclose(f1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
typedef void (*df)(ushort *);
|
||||
df dfw = 0x1f99bc8;
|
||||
dfw(L"\\r");
|
||||
return 0;
|
||||
}
|
||||
unsigned src0 = *info++;
|
||||
unsigned srcl = *info++;
|
||||
unsigned dst0 = *info++;
|
||||
unsigned dstl = *info++;
|
||||
unsigned bimp = *info++;
|
||||
unsigned onam = *info++;
|
||||
unsigned getp = *info++;
|
||||
unsigned load = *info++;
|
||||
unsigned entr = *info++;
|
||||
#else
|
||||
unsigned src0 = info[0];
|
||||
unsigned srcl = info[1];
|
||||
unsigned dst0 = info[2];
|
||||
// unsigned dstl = info[3];
|
||||
unsigned bimp = info[4];
|
||||
unsigned onam = info[5];
|
||||
// unsigned getp = info[6];
|
||||
// unsigned load = info[7];
|
||||
// unsigned entr = info[8];
|
||||
#endif
|
||||
|
||||
#ifdef SAFE
|
||||
dlen = info[3];
|
||||
#endif
|
||||
//WRITEFILE2('0', (void*) dst0, info[7] + 256 - dst0);
|
||||
UCL_DECOMPRESS((void *) src0, srcl, (void *) dst0, &dlen);
|
||||
//WRITEFILE2('1', (void*) dst0, info[7] + 256 - dst0);
|
||||
handle_imports((void *) bimp, onam, dst0);
|
||||
//WRITEFILE2('2', (void*) dst0, info[7] + 256 - dst0);
|
||||
#ifdef STUB_FOR_DLL
|
||||
reloc_main();
|
||||
//WRITEFILE2('3', (void*) dst0, info[7] + 256 - dst0);
|
||||
#endif
|
||||
}
|
||||
|
||||
+323
-12
@@ -29,20 +29,331 @@
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
|
||||
#undef STUB_IN_THUMB_MODE
|
||||
#if defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_5T__)
|
||||
# define STUB_IN_THUMB_MODE
|
||||
#endif
|
||||
|
||||
#ifdef STUB_FOR_DLL
|
||||
#define START _start: cmp r1, #1; bne .Lstart_orig
|
||||
#else
|
||||
#define START _start:
|
||||
#endif
|
||||
|
||||
|
||||
.text
|
||||
.align 0
|
||||
.global _mainCRTStartup
|
||||
.globl upx_main
|
||||
.globl _start
|
||||
|
||||
_mainCRTStartup:
|
||||
#ifdef STUB_IN_THUMB_MODE
|
||||
|
||||
START
|
||||
stmfd sp!, {r0 - r3, lr}
|
||||
mov r0, #L2 - L0 - 8
|
||||
L0:
|
||||
add r0, pc, r0
|
||||
bl _upx_main
|
||||
|
||||
@ touch all pages in ARM mode - this seems to be required
|
||||
@ otherwise the THUMB mode stuff fails
|
||||
|
||||
adr r0, SRC0
|
||||
|
||||
ldmia r0, {r1, r2, r3} @ r1 - src, r2 - slen, r3 - dst
|
||||
add r1, r1, r2
|
||||
.L01:
|
||||
ldr r2, [r3]
|
||||
add r3, r3, #4096
|
||||
cmp r3, r1
|
||||
bls .L01
|
||||
|
||||
# ifdef __ARM_ARCH_4T__
|
||||
adr lr, .Larmret
|
||||
adr ip, call_upxmain + 1
|
||||
bx ip
|
||||
.Larmret:
|
||||
ldmfd sp!, {r0 - r3, lr}
|
||||
ldr pc, L21
|
||||
.ascii "XxxX"
|
||||
L2:
|
||||
.ascii "SRC0DST0BIMPONAMGETPLOAD"
|
||||
L21:
|
||||
.ascii "ENTRSRCLDSTL"
|
||||
.Lstart_orig:
|
||||
ldr ip, ENTR
|
||||
bx ip
|
||||
# else
|
||||
blx upx_main @ call thumb armv5t style
|
||||
ldmfd sp!, {r0 - r3, lr}
|
||||
.Lstart_orig:
|
||||
ldr pc, ENTR @ original entry
|
||||
# endif
|
||||
|
||||
@@@@@@@@@@@@@@@@
|
||||
|
||||
.code 16
|
||||
.global GetProcAddressA
|
||||
.thumb_func
|
||||
|
||||
GetProcAddressA:
|
||||
ldr r3, GETP
|
||||
.Lcallr3:
|
||||
ldr r3, [r3]
|
||||
bx r3
|
||||
|
||||
@@@@@@@@@@@@@@@@
|
||||
|
||||
.global LoadLibraryW
|
||||
.thumb_func
|
||||
|
||||
LoadLibraryW:
|
||||
ldr r3, LLIB
|
||||
b .Lcallr3
|
||||
|
||||
# ifdef __ARM_ARCH_4T__
|
||||
call_upxmain:
|
||||
b upx_main
|
||||
# endif
|
||||
|
||||
@@@@@@@@@@@@@@@@
|
||||
|
||||
.global get_le32
|
||||
.thumb_func
|
||||
get_le32: @ optimized for size
|
||||
mov r1, #3
|
||||
.Lg0:
|
||||
ldrb r3, [r0, r1]
|
||||
lsl r2, r2, #8
|
||||
add r2, r2, r3
|
||||
sub r1, #1
|
||||
bpl .Lg0
|
||||
mov r0, r2
|
||||
bx lr
|
||||
|
||||
# ifdef STUB_FOR_DLL
|
||||
.global reloc_main
|
||||
.thumb_func
|
||||
buffer .req r0
|
||||
dest .req r1
|
||||
addval .req r2
|
||||
|
||||
reloc_main:
|
||||
push {r4, r5}
|
||||
ldr buffer, BREL
|
||||
ldr addval, DST0
|
||||
sub dest, addval, #4
|
||||
|
||||
.Lreloc_loop:
|
||||
ldrb r3, [buffer]
|
||||
add buffer, #1
|
||||
cmp r3, #0
|
||||
beq .Lreloc_end
|
||||
cmp r3, #0xf0
|
||||
blo .Lreloc_add
|
||||
|
||||
mov r4, #0x0f
|
||||
and r4, r3
|
||||
ldrb r3, [buffer, #1] @ get_le16
|
||||
lsl r4, #8
|
||||
add r4, r3
|
||||
ldrb r3, [buffer]
|
||||
add buffer, #2
|
||||
lsl r4, #8
|
||||
add r3, r4
|
||||
|
||||
.Lreloc_add:
|
||||
add dest, r3
|
||||
mov r5, #0
|
||||
|
||||
.Lread_be32:
|
||||
ldrb r3, [dest, r5]
|
||||
lsl r4, #8
|
||||
add r4, r3
|
||||
add r5, #1
|
||||
cmp r5, #4
|
||||
bne .Lread_be32
|
||||
|
||||
add r4, addval
|
||||
str r4, [dest]
|
||||
b .Lreloc_loop
|
||||
|
||||
.Lreloc_end:
|
||||
pop {r4, r5}
|
||||
bx lr
|
||||
|
||||
# endif
|
||||
|
||||
# if 0
|
||||
|
||||
// debugging stuff - helpers for dumping memory to a file or deleting a file
|
||||
|
||||
// !!!!! check the lines with "system dependent" below before calling
|
||||
|
||||
.global CFwrap
|
||||
.thumb_func
|
||||
CFwrap:
|
||||
push {r3}
|
||||
ldr r3, createfilew
|
||||
mov ip, r3
|
||||
pop {r3}
|
||||
bx ip
|
||||
|
||||
.global WFwrap
|
||||
.thumb_func
|
||||
WFwrap:
|
||||
push {r3}
|
||||
ldr r3, writefile
|
||||
mov ip, r3
|
||||
pop {r3}
|
||||
bx ip
|
||||
|
||||
.global CHwrap
|
||||
.thumb_func
|
||||
CHwrap:
|
||||
push {r3}
|
||||
ldr r3, closehandle
|
||||
mov ip, r3
|
||||
pop {r3}
|
||||
bx ip
|
||||
|
||||
.global DelFile
|
||||
.thumb_func
|
||||
DelFile:
|
||||
adr r1, filename
|
||||
strb r0, [r1, #2]
|
||||
mov r0, r1
|
||||
ldr r3, deleteffilew
|
||||
mov ip, r3
|
||||
bx ip
|
||||
|
||||
.code 32
|
||||
createfilew:
|
||||
.word 0x1f7927c @ system dependent
|
||||
closehandle:
|
||||
.word 0x1f71594 @ system dependent
|
||||
deleteffilew:
|
||||
.word 0x1f7b920 @ system dependent
|
||||
writefile:
|
||||
.word 0x1f79434 @ system dependent
|
||||
filename:
|
||||
.byte '\\', 0, 'r', 0, 0, 0
|
||||
|
||||
# endif
|
||||
|
||||
#else // stub in ARM mode
|
||||
|
||||
START
|
||||
|
||||
stmfd sp!, {r0 - r3, lr}
|
||||
adr r0, SRC0
|
||||
bl upx_main
|
||||
ldmfd sp!, {r0 - r3, lr}
|
||||
.Lstart_orig:
|
||||
ldr pc, ENTR
|
||||
|
||||
.global LoadLibraryW
|
||||
LoadLibraryW:
|
||||
ldr r3, LLIB
|
||||
ldr pc, [r3]
|
||||
|
||||
.global GetProcAddressA
|
||||
GetProcAddressA:
|
||||
ldr r3, GETP
|
||||
ldr pc, [r3]
|
||||
|
||||
.global get_le32
|
||||
get_le32: @ optimized for size
|
||||
mov r2, #3
|
||||
.Lg0:
|
||||
ldrb r3, [r0, r2]
|
||||
subs r2, r2, #1
|
||||
add r1, r3, r1, asl #8
|
||||
bpl .Lg0
|
||||
mov r0, r1
|
||||
gret:
|
||||
mov pc, lr
|
||||
|
||||
# ifdef STUB_FOR_DLL
|
||||
.global reloc_main
|
||||
buffer .req r0
|
||||
dest .req r1
|
||||
addval .req r2
|
||||
|
||||
reloc_main:
|
||||
ldr buffer, BREL
|
||||
ldr addval, DST0
|
||||
sub dest, addval, #4
|
||||
|
||||
.Lreloc_loop:
|
||||
ldrb r3, [buffer], #1
|
||||
cmp r3, #0
|
||||
beq gret
|
||||
cmp r3, #0xf0
|
||||
|
||||
bichs ip, r3, #0xf0
|
||||
ldrhsb r3, [buffer, #1] @ get_le16
|
||||
addhs ip, r3, ip, lsl #8
|
||||
ldrhsb r3, [buffer], #2
|
||||
addhs r3, r3, ip, lsl #8
|
||||
|
||||
add dest, dest, r3
|
||||
ldrb r3, [dest] @ get_be32
|
||||
add ip, r3, ip, lsl #8
|
||||
ldrb r3, [dest, #1]
|
||||
add ip, r3, ip, lsl #8
|
||||
ldrb r3, [dest, #2]
|
||||
add ip, r3, ip, lsl #8
|
||||
ldrb r3, [dest, #3]
|
||||
add ip, r3, ip, lsl #8
|
||||
add ip, ip, addval
|
||||
str ip, [dest]
|
||||
b .Lreloc_loop
|
||||
# endif
|
||||
|
||||
# if 0
|
||||
|
||||
// debugging stuff - helpers for dumping memory to a file or deleting a file
|
||||
|
||||
// !!!!! check the lines with "system dependent" below before calling
|
||||
|
||||
.global CFwrap
|
||||
CFwrap:
|
||||
ldr pc, createfilew
|
||||
|
||||
.global WFwrap
|
||||
WFwrap:
|
||||
ldr pc, writefile
|
||||
|
||||
.global CHwrap
|
||||
CHwrap:
|
||||
ldr pc, closehandle
|
||||
|
||||
.global DelFile
|
||||
DelFile:
|
||||
adr r1, filename
|
||||
strb r0, [r1, #2]
|
||||
mov r0, r1
|
||||
ldr pc, deleteffilew
|
||||
|
||||
.code 32
|
||||
createfilew:
|
||||
.word 0x1f7927c @ system dependent
|
||||
closehandle:
|
||||
.word 0x1f71594 @ system dependent
|
||||
deleteffilew:
|
||||
.word 0x1f7b920 @ system dependent
|
||||
writefile:
|
||||
.word 0x1f79434 @ system dependent
|
||||
filename:
|
||||
.byte '\\', 0, 'r', 0, 0, 0
|
||||
|
||||
# endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@@@@@@@@@@@@@@@ paramater area for UPX
|
||||
|
||||
.code 32
|
||||
.align 2
|
||||
SRC0: .ascii "SRC0"
|
||||
SRCL: .ascii "SRCL"
|
||||
DST0: .ascii "DST0"
|
||||
.ascii "DSTL"
|
||||
.ascii "BIMPONAM"
|
||||
GETP: .ascii "GETP"
|
||||
LLIB: .ascii "LOAD"
|
||||
ENTR: .ascii "ENTR"
|
||||
BREL: .ascii "BREL"
|
||||
|
||||
+7
-13
@@ -96,14 +96,8 @@ do_brk(void *addr)
|
||||
return brk(addr);
|
||||
}
|
||||
|
||||
static char *
|
||||
__attribute_cdecl
|
||||
do_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)
|
||||
{
|
||||
(void)len; (void)prot; (void)flags; (void)fd; (void)offset;
|
||||
return mmap((void *)&addr);
|
||||
}
|
||||
|
||||
extern char *mmap(void *addr, size_t len,
|
||||
int prot, int flags, int fd, off_t offset);
|
||||
|
||||
/*************************************************************************
|
||||
// UPX & NRV stuff
|
||||
@@ -274,7 +268,7 @@ xfind_pages(unsigned mflags, Elf32_Phdr const *phdr, int phnum,
|
||||
lo -= ~PAGE_MASK & lo; // round down to page boundary
|
||||
hi = PAGE_MASK & (hi - lo - PAGE_MASK -1); // page length
|
||||
szlo = PAGE_MASK & (szlo - PAGE_MASK -1); // page length
|
||||
addr = do_mmap((void *)lo, hi, PROT_READ|PROT_WRITE|PROT_EXEC,
|
||||
addr = mmap((void *)lo, hi, PROT_READ|PROT_WRITE|PROT_EXEC,
|
||||
mflags, 0, 0 );
|
||||
*p_brk = hi + addr; // the logical value of brk(0)
|
||||
munmap(szlo + addr, hi - szlo); // desirable if PT_LOAD non-contiguous
|
||||
@@ -306,7 +300,7 @@ do_xmap(int const fdi, Elf32_Ehdr const *const ehdr, struct Extent *const xi,
|
||||
addr -= frag;
|
||||
|
||||
// Decompressor can overrun the destination by 3 bytes.
|
||||
if (addr != do_mmap(addr, mlen + (xi ? 3 : 0), PROT_READ | PROT_WRITE,
|
||||
if (addr != mmap(addr, mlen + (xi ? 3 : 0), PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_PRIVATE | (xi ? MAP_ANONYMOUS : 0),
|
||||
fdi, phdr->p_offset - frag) ) {
|
||||
err_exit(8);
|
||||
@@ -331,7 +325,7 @@ ERR_LAB
|
||||
}
|
||||
addr += mlen + frag; /* page boundary on hi end */
|
||||
if (addr < haddr) { // need pages for .bss
|
||||
if (addr != do_mmap(addr, haddr - addr, prot,
|
||||
if (addr != mmap(addr, haddr - addr, prot,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 ) ) {
|
||||
err_exit(9);
|
||||
}
|
||||
@@ -392,11 +386,11 @@ void *upx_main(
|
||||
Elf32_Addr reloc;
|
||||
Elf32_Addr entry;
|
||||
|
||||
(void)junk;
|
||||
|
||||
// sizeof(Ehdr+Phdrs), compressed; including b_info header
|
||||
size_t const sz_pckhdrs = xi.size;
|
||||
|
||||
(void)junk;
|
||||
|
||||
// Uncompress Ehdr and Phdrs.
|
||||
unpackExtent(&xi, &xo, f_decompress, 0);
|
||||
|
||||
|
||||
+5
-11
@@ -127,14 +127,8 @@ static uint32_t ascii5(char *p, uint32_t v, unsigned n)
|
||||
}
|
||||
|
||||
|
||||
static unsigned char *
|
||||
__attribute_cdecl
|
||||
do_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)
|
||||
{
|
||||
(void)len; (void)prot; (void)flags; (void)fd; (void)offset;
|
||||
return (unsigned char *) mmap((void *)&addr);
|
||||
}
|
||||
|
||||
extern char *mmap(void *addr, size_t len,
|
||||
int prot, int flags, int fd, off_t offset);
|
||||
|
||||
#if defined(__i386__)
|
||||
# define SET2(p, c0, c1) \
|
||||
@@ -359,7 +353,7 @@ void upx_main(
|
||||
|
||||
#if defined(USE_MMAP_FO)
|
||||
// FIXME: packer could set length
|
||||
buf = do_mmap(0, header.p_filesize,
|
||||
buf = (unsigned char *)mmap(0, header.p_filesize,
|
||||
PROT_READ | PROT_WRITE, MAP_SHARED, fdo, 0);
|
||||
if ((unsigned long) buf >= (unsigned long) -4095)
|
||||
goto error;
|
||||
@@ -367,13 +361,13 @@ void upx_main(
|
||||
// Decompressor can overrun the output by 3 bytes.
|
||||
// Defend against SIGSEGV by using a scratch page.
|
||||
// FIXME: packer could set address delta
|
||||
do_mmap(buf + (PAGE_MASK & (header.p_filesize + ~PAGE_MASK)),
|
||||
mmap(buf + (PAGE_MASK & (header.p_filesize + ~PAGE_MASK)),
|
||||
-PAGE_MASK, PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 );
|
||||
#else
|
||||
// Temporary decompression buffer.
|
||||
// FIXME: packer could set length
|
||||
buf = do_mmap(0, (header.p_blocksize + OVERHEAD + ~PAGE_MASK) & PAGE_MASK,
|
||||
buf = mmap(0, (header.p_blocksize + OVERHEAD + ~PAGE_MASK) & PAGE_MASK,
|
||||
PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 );
|
||||
if ((unsigned long) buf >= (unsigned long) -4095)
|
||||
goto error;
|
||||
|
||||
+5
-11
@@ -96,14 +96,8 @@ do_brk(void *addr)
|
||||
return brk(addr);
|
||||
}
|
||||
|
||||
static char *
|
||||
__attribute_cdecl
|
||||
do_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)
|
||||
{
|
||||
(void)len; (void)prot; (void)flags; (void)fd; (void)offset;
|
||||
return mmap((void *)&addr);
|
||||
}
|
||||
|
||||
extern char *mmap(void *addr, size_t len,
|
||||
int prot, int flags, int fd, off_t offset);
|
||||
|
||||
/*************************************************************************
|
||||
// UPX & NRV stuff
|
||||
@@ -270,7 +264,7 @@ xfind_pages(unsigned mflags, Elf32_Phdr const *phdr, int phnum,
|
||||
lo -= ~PAGE_MASK & lo; // round down to page boundary
|
||||
hi = PAGE_MASK & (hi - lo - PAGE_MASK -1); // page length
|
||||
szlo = PAGE_MASK & (szlo - PAGE_MASK -1); // page length
|
||||
addr = do_mmap((void *)lo, hi, PROT_READ|PROT_WRITE|PROT_EXEC, mflags, 0, 0);
|
||||
addr = mmap((void *)lo, hi, PROT_READ|PROT_WRITE|PROT_EXEC, mflags, 0, 0);
|
||||
*p_brk = hi + addr; // the logical value of brk(0)
|
||||
munmap(szlo + addr, hi - szlo); // desirable if PT_LOAD non-contiguous
|
||||
return (unsigned long)addr - lo;
|
||||
@@ -310,7 +304,7 @@ do_xmap(
|
||||
haddr += reloc;
|
||||
|
||||
// Decompressor can overrun the destination by 3 bytes.
|
||||
if (addr != do_mmap(addr, mlen + (xi ? 3 : 0), PROT_READ | PROT_WRITE,
|
||||
if (addr != mmap(addr, mlen + (xi ? 3 : 0), PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_PRIVATE | (xi ? MAP_ANONYMOUS : 0),
|
||||
fdi, phdr->p_offset - frag) ) {
|
||||
err_exit(8);
|
||||
@@ -334,7 +328,7 @@ ERR_LAB
|
||||
}
|
||||
addr += mlen + frag; /* page boundary on hi end */
|
||||
if (addr < haddr) { // need pages for .bss
|
||||
if (addr != do_mmap(addr, haddr - addr, prot,
|
||||
if (addr != mmap(addr, haddr - addr, prot,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 ) ) {
|
||||
err_exit(9);
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
GLOBAL _start
|
||||
;__LXPTI000__
|
||||
_start:
|
||||
int3
|
||||
;;;; int3
|
||||
;; How to debug this code: Uncomment the 'int3' breakpoint instruction above.
|
||||
;; Build the stubs and upx. Compress a testcase, such as a copy of /bin/date.
|
||||
;; Invoke gdb, and give a 'run' command. Define a single-step macro such as
|
||||
|
||||
+414
-415
@@ -1,4 +1,4 @@
|
||||
/* l_lx_pti86.h -- created from l_lx_pti86.bin, 6546 (0x1992) bytes
|
||||
/* l_lx_pti86.h -- created from l_lx_pti86.bin, 6542 (0x198e) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,419 +27,418 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_I386PTI_LOADER_SIZE 6546
|
||||
#define LINUX_I386PTI_LOADER_ADLER32 0x0cc7d0ff
|
||||
#define LINUX_I386PTI_LOADER_CRC32 0x04a4071e
|
||||
#define LINUX_I386PTI_LOADER_SIZE 6542
|
||||
#define LINUX_I386PTI_LOADER_ADLER32 0xe080d1eb
|
||||
#define LINUX_I386PTI_LOADER_CRC32 0xa507af83
|
||||
|
||||
unsigned char linux_i386pti_loader[6546] = {
|
||||
204,232, 28, 0, 0, 0,131,248, 70,185,210, 5, 0, 0,116, 15, /* 0x 0 */
|
||||
131,248, 73,185,210, 5, 0, 0,116, 5,185, 33, 0, 0, 0,137, /* 0x 10 */
|
||||
200,195,232, 0, 0, 0, 0,131,248, 2,185, 84, 0, 0, 0,116, /* 0x 20 */
|
||||
238,131,248, 5,185, 84, 0, 0, 0,116,228,131,248, 8,185, 84, /* 0x 30 */
|
||||
0, 0, 0,116,218,131,248, 11,185, 84, 0, 0, 0,116,208,233, /* 0x 40 */
|
||||
198,255,255,255, 96,131,205,255,139,116, 36, 36,139,124, 36, 44, /* 0x 50 */
|
||||
235, 0,164,235, 0,138, 6, 70,136, 7, 71, 1,219,117, 7,139, /* 0x 60 */
|
||||
30,131,238,252, 17,219,114, 0, 49,192, 64,138, 7,114, 0,184, /* 0x 70 */
|
||||
1, 0, 0, 0, 1,219,117, 7,139, 30,131,238,252, 17,219, 17, /* 0x 80 */
|
||||
192, 1,219,117, 7,139, 30,131,238,252, 17,219,115, 0, 1,219, /* 0x 90 */
|
||||
115, 0,117, 9,139, 30,131,238,252, 17,219,115, 0, 49,201,131, /* 0x a0 */
|
||||
232, 3,114, 13,193,224, 8,138, 6, 70,131,240,255,116, 0,137, /* 0x b0 */
|
||||
197, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201, 1,219, /* 0x c0 */
|
||||
117, 7,139, 30,131,238,252, 17,219, 17,201,117, 0, 65, 1,219, /* 0x d0 */
|
||||
117, 7,139, 30,131,238,252, 17,219, 17,201, 1,219,117, 7,139, /* 0x e0 */
|
||||
30,131,238,252, 17,219,115, 0, 1,219,115, 0,117, 9,139, 30, /* 0x f0 */
|
||||
131,238,252, 17,219,115, 0, 65, 65,131,193, 2,129,253, 0,243, /* 0x 100 */
|
||||
255,255,131,209, 1, 86,141, 52, 47,243,164, 94,233, 0, 0, 0, /* 0x 110 */
|
||||
0,141, 20, 47,131,253,252,138, 4, 15,118, 0,138, 2, 66,136, /* 0x 120 */
|
||||
7, 71, 73,117,247,233, 0, 0, 0, 0,139, 2,131,194, 4,137, /* 0x 130 */
|
||||
7,131,199, 4,131,233, 4,119,241, 1,207,233, 0, 0, 0, 0, /* 0x 140 */
|
||||
235, 0,164,235, 0,138, 6, 70,136, 7, 71, 1,219,117, 7,139, /* 0x 150 */
|
||||
30,131,238,252, 17,219,114, 0, 49,192, 64,138, 7,114, 0,184, /* 0x 160 */
|
||||
1, 0, 0, 0, 1,219,117, 7,139, 30,131,238,252, 17,219, 17, /* 0x 170 */
|
||||
192, 1,219,117, 7,139, 30,131,238,252, 17,219,114, 0, 1,219, /* 0x 180 */
|
||||
115, 11,117, 0,139, 30,131,238,252, 17,219,114, 0, 72, 1,219, /* 0x 190 */
|
||||
117, 7,139, 30,131,238,252, 17,219, 17,192,235, 0, 49,201,131, /* 0x 1a0 */
|
||||
232, 3,114, 17,193,224, 8,138, 6, 70,131,240,255,116, 0,209, /* 0x 1b0 */
|
||||
248,137,197,235, 11, 1,219,117, 7,139, 30,131,238,252, 17,219, /* 0x 1c0 */
|
||||
17,201, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201,117, /* 0x 1d0 */
|
||||
0, 65, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201, 1, /* 0x 1e0 */
|
||||
219,117, 7,139, 30,131,238,252, 17,219,115, 0, 1,219,115, 0, /* 0x 1f0 */
|
||||
117, 9,139, 30,131,238,252, 17,219,115, 0, 65, 65,131,193, 2, /* 0x 200 */
|
||||
129,253, 0,251,255,255,131,209, 1, 86,141, 52, 47,243,164, 94, /* 0x 210 */
|
||||
233, 0, 0, 0, 0,141, 20, 47,131,253,252,138, 4, 15,118, 0, /* 0x 220 */
|
||||
138, 2, 66,136, 7, 71, 73,117,247,233, 0, 0, 0, 0,139, 2, /* 0x 230 */
|
||||
131,194, 4,137, 7,131,199, 4,131,233, 4,119,241, 1,207,233, /* 0x 240 */
|
||||
0, 0, 0, 0,235, 0,164,235, 0,138, 6, 70,136, 7, 71, 1, /* 0x 250 */
|
||||
219,117, 7,139, 30,131,238,252, 17,219,114, 0, 49,192, 64,138, /* 0x 260 */
|
||||
7,114, 0,184, 1, 0, 0, 0, 1,219,117, 7,139, 30,131,238, /* 0x 270 */
|
||||
252, 17,219, 17,192, 1,219,117, 7,139, 30,131,238,252, 17,219, /* 0x 280 */
|
||||
114, 0, 1,219,115, 11,117, 0,139, 30,131,238,252, 17,219,114, /* 0x 290 */
|
||||
0, 72, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,192,235, /* 0x 2a0 */
|
||||
0, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201,235, 0, /* 0x 2b0 */
|
||||
49,201,131,232, 3,114, 17,193,224, 8,138, 6, 70,131,240,255, /* 0x 2c0 */
|
||||
116, 0,209,248,137,197,235, 11, 1,219,117, 7,139, 30,131,238, /* 0x 2d0 */
|
||||
252, 17,219,114,204, 65, 1,219,117, 7,139, 30,131,238,252, 17, /* 0x 2e0 */
|
||||
219,114,190, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201, /* 0x 2f0 */
|
||||
1,219,117, 7,139, 30,131,238,252, 17,219,115, 0, 1,219,115, /* 0x 300 */
|
||||
0,117, 9,139, 30,131,238,252, 17,219,115, 0, 65, 65,131,193, /* 0x 310 */
|
||||
2,129,253, 0,251,255,255,131,209, 2, 86,141, 52, 47,243,164, /* 0x 320 */
|
||||
94,233, 0, 0, 0, 0,141, 20, 47,131,253,252,138, 4, 15,118, /* 0x 330 */
|
||||
0,138, 2, 66,136, 7, 71, 73,117,247,233, 0, 0, 0, 0,139, /* 0x 340 */
|
||||
2,131,194, 4,137, 7,131,199, 4,131,233, 4,119,241, 1,207, /* 0x 350 */
|
||||
233, 0, 0, 0, 0,255,210, 1,219,117, 2,255,210,144,232, 0, /* 0x 360 */
|
||||
0, 0, 0, 1,219,116, 0,195,139, 30,131,238,252, 17,219,195, /* 0x 370 */
|
||||
41,201, 17,201,114, 0, 17,201,114, 0, 17,201, 17,192, 72, 17, /* 0x 380 */
|
||||
192,131,233, 1,115, 0,141, 72, 15, 61,240,255, 0, 0,114, 0, /* 0x 390 */
|
||||
141, 4, 14, 80,233, 0, 0, 0, 0, 17,201, 17,201,131,193, 13, /* 0x 3a0 */
|
||||
235, 0,133,201,116, 0, 65,131,193, 8,235, 0, 41,201, 90, 41, /* 0x 3b0 */
|
||||
219,141, 65, 1,115, 0,114, 0,114, 0,114, 0,131,193, 2,114, /* 0x 3c0 */
|
||||
0, 65,114, 5,233, 0, 0, 0, 0, 17,201,209,233,115, 1,164, /* 0x 3d0 */
|
||||
209,233,115, 2,102,165,243,165,141, 65, 1,235, 3,164,164,164, /* 0x 3e0 */
|
||||
17,192,115, 0,131,232, 3,114, 11,193,224, 8,172,131,240,255, /* 0x 3f0 */
|
||||
116, 0,137,197, 17,201, 17,201,117, 0, 65, 17,201,115, 0,131, /* 0x 400 */
|
||||
193, 2,129,253, 0,243,255,255,131,209, 1, 86,141, 52, 47,131, /* 0x 410 */
|
||||
253,252,119, 19,209,233,115, 1,164,209,233,115, 2,102,165,243, /* 0x 420 */
|
||||
165, 94,233, 0, 0, 0, 0,131,253,255,117, 5,172,243,170,235, /* 0x 430 */
|
||||
240,243,164,235,236,233, 0, 0, 0, 0,139, 84, 36, 36, 3, 84, /* 0x 440 */
|
||||
36, 40, 57,214,116, 1, 72, 43,124, 36, 44,139, 84, 36, 48,137, /* 0x 450 */
|
||||
58,137, 68, 36, 28, 97,195,185, 84, 69, 88, 76,138, 7, 71, 44, /* 0x 460 */
|
||||
232, 60, 1,119,247,128, 63, 63,117, 0,139, 7,138, 95, 4,102, /* 0x 470 */
|
||||
193,232, 8,134,196,193,192, 16,134,196, 41,248,128,235,232,137, /* 0x 480 */
|
||||
7,131,199, 5,136,216,226, 0,185, 84, 69, 88, 76,176,232,176, /* 0x 490 */
|
||||
233,242,174,117, 0,128, 63, 63,117, 0,139, 7,102,193,232, 8, /* 0x 4a0 */
|
||||
134,196,193,192, 16,134,196, 41,248,171,235, 0,235, 0, 90, 88, /* 0x 4b0 */
|
||||
89,151, 96, 49,219,187, 78, 77, 82, 85,106, 15, 88,138,100, 36, /* 0x 4c0 */
|
||||
32,106, 15, 91,138,124, 36, 32,138, 84, 36, 32,233, 0, 0, 0, /* 0x 4d0 */
|
||||
0, 15,183, 47, 43,110, 12, 41,221,117, 0,131,237, 1,115, 0, /* 0x 4e0 */
|
||||
136, 95,255, 73,136, 7, 71,139, 7,156,102,193,232, 8,193,192, /* 0x 4f0 */
|
||||
16,134,196,157,115, 0,176, 0, 15,200,115, 0,209,232,115, 0, /* 0x 500 */
|
||||
254,203, 75, 35, 30,125, 2, 3, 30,137, 4,156,235, 0,141, 20, /* 0x 510 */
|
||||
24, 15,182,210, 35, 22, 59, 22,114, 2, 43, 22,139, 4,148,254, /* 0x 520 */
|
||||
203, 75, 35, 30,125, 2, 3, 30,139, 44,156,133,237,117, 0, 80, /* 0x 530 */
|
||||
139, 70, 4,254,200, 72, 35, 6,125, 2, 3, 6, 49,237,137, 70, /* 0x 540 */
|
||||
4,135,108,132, 4, 88,137, 44,148,137, 4,156, 41,248,131,233, /* 0x 550 */
|
||||
4, 3, 70, 16, 1,240,137, 7,131,199, 4,235, 0,235, 0, 80, /* 0x 560 */
|
||||
176,233,176,232, 80,106, 0, 83,137,230, 94,137,218,178,233,178, /* 0x 570 */
|
||||
232, 67,106, 0,254,203, 75,117, 0, 15,183, 7,131,199, 1, 60, /* 0x 580 */
|
||||
128,114, 4, 60,143,118, 0, 41,208, 43, 70, 8,131,232, 2,116, /* 0x 590 */
|
||||
0,131,232, 1,114, 0,115, 0,122, 0,123, 0,248,235, 0,131, /* 0x 5a0 */
|
||||
233, 1,127, 0,137,231,185, 4, 1, 0, 0,139, 14,131,193, 5, /* 0x 5b0 */
|
||||
139, 14,131,193, 4, 49,192,243,171,137,252, 86, 97,151, 81, 80, /* 0x 5c0 */
|
||||
82,195, 96,139,124, 36, 36,139, 76, 36, 40,139, 84, 36, 44,137, /* 0x 5d0 */
|
||||
254,235, 0,138, 7,131,199, 1, 60,128,114, 10, 60,143,119, 6, /* 0x 5e0 */
|
||||
128,127,254, 15,116, 0, 44,232, 60, 1,119, 0, 56, 23,117, 0, /* 0x 5f0 */
|
||||
139, 7,102,193,232, 8,193,192, 16,134,196, 41,248, 1,240,137, /* 0x 600 */
|
||||
7,131,199, 4,131,233, 4,138, 7,131,199, 1,226, 0,131,233, /* 0x 610 */
|
||||
1,127, 0, 97,195, 0, 0, 0, 76, 88, 80, 84, 73, 48, 48, 48, /* 0x 620 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 76, 88, 80, /* 0x 630 */
|
||||
84, 73, 50, 48, 48, 0, 0, 0, 0, 0, 76, 88, 80, 84, 73, 48, /* 0x 640 */
|
||||
52, 48, 0, 84, 0, 0, 0, 76, 88, 80, 84, 73, 48, 52, 49, 0, /* 0x 650 */
|
||||
84, 0, 0, 0, 76, 88, 80, 84, 73, 48, 52, 50, 0, 84, 0, 0, /* 0x 660 */
|
||||
0, 76, 88, 80, 84, 73, 48, 52, 51, 0, 84, 0, 0, 0, 76, 88, /* 0x 670 */
|
||||
80, 84, 73, 48, 53, 48, 0, 84, 0, 0, 0, 78, 50, 66, 83, 77, /* 0x 680 */
|
||||
65, 49, 48, 0, 96, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, /* 0x 690 */
|
||||
78, 50, 66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, /* 0x 6a0 */
|
||||
70, 65, 83, 49, 48, 0, 99, 0, 0, 0, 0, 0, 0, 0,101, 0, /* 0x 6b0 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, /* 0x 6c0 */
|
||||
50, 66, 70, 65, 83, 49, 49, 0,101, 0, 0, 0, 78, 50, 66, 68, /* 0x 6d0 */
|
||||
69, 67, 49, 48, 0,107, 0, 0, 0, 78, 50, 66, 83, 77, 65, 50, /* 0x 6e0 */
|
||||
48, 0,118, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, 78, 50, /* 0x 6f0 */
|
||||
66, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 66, 70, 65, /* 0x 700 */
|
||||
83, 50, 48, 0,123, 0, 0, 0, 0, 0, 0, 0,127, 0, 0, 0, /* 0x 710 */
|
||||
78, 50, 66, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 66, /* 0x 720 */
|
||||
68, 69, 67, 50, 48, 0,132, 0, 0, 0, 78, 50, 66, 83, 77, 65, /* 0x 730 */
|
||||
51, 48, 0,145, 0, 0, 0, 0, 0, 0, 0,158, 0, 0, 0, 78, /* 0x 740 */
|
||||
50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, /* 0x 750 */
|
||||
65, 83, 51, 48, 0,158, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, /* 0x 760 */
|
||||
0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x 770 */
|
||||
0, 0,173, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, /* 0x 780 */
|
||||
0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0,173, 0, 0, 0, /* 0x 790 */
|
||||
0, 0, 0, 0,191, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, /* 0x 7a0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 78, 50, 66, /* 0x 7b0 */
|
||||
68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, 50, 66, 83, 77, 65, /* 0x 7c0 */
|
||||
52, 48, 0,235, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 78, /* 0x 7d0 */
|
||||
50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 70, /* 0x 7e0 */
|
||||
65, 83, 52, 48, 0,248, 0, 0, 0, 0, 0, 0, 0,252, 0, 0, /* 0x 7f0 */
|
||||
0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 0, 0, /* 0x 800 */
|
||||
0, 0, 7, 1, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, /* 0x 810 */
|
||||
0, 0, 0, 78, 50, 66, 68, 85, 77, 77, 49, 0, 7, 1, 0, 0, /* 0x 820 */
|
||||
78, 50, 66, 83, 77, 65, 53, 48, 0, 7, 1, 0, 0, 78, 50, 66, /* 0x 830 */
|
||||
70, 65, 83, 53, 48, 0, 9, 1, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 840 */
|
||||
53, 48, 0, 12, 1, 0, 0, 78, 50, 66, 83, 77, 65, 54, 48, 0, /* 0x 850 */
|
||||
21, 1, 0, 0, 0, 0, 0, 0, 33, 1, 0, 0, 78, 50, 66, 68, /* 0x 860 */
|
||||
69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, /* 0x 870 */
|
||||
48, 0, 33, 1, 0, 0, 0, 0, 0, 0, 44, 1, 0, 0, 78, 50, /* 0x 880 */
|
||||
66, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, /* 0x 890 */
|
||||
1, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, /* 0x 8a0 */
|
||||
78, 50, 66, 70, 65, 83, 54, 49, 0, 58, 1, 0, 0, 0, 0, 0, /* 0x 8b0 */
|
||||
0, 80, 1, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, /* 0x 8c0 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, 80, 1, 0, 0, 78, /* 0x 8d0 */
|
||||
82, 86, 50, 66, 69, 78, 68, 0, 80, 1, 0, 0, 78, 50, 68, 83, /* 0x 8e0 */
|
||||
77, 65, 49, 48, 0, 80, 1, 0, 0, 0, 0, 0, 0, 82, 1, 0, /* 0x 8f0 */
|
||||
0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, /* 0x 900 */
|
||||
68, 70, 65, 83, 49, 48, 0, 83, 1, 0, 0, 0, 0, 0, 0, 85, /* 0x 910 */
|
||||
1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, /* 0x 920 */
|
||||
78, 50, 68, 70, 65, 83, 49, 49, 0, 85, 1, 0, 0, 78, 50, 68, /* 0x 930 */
|
||||
68, 69, 67, 49, 48, 0, 91, 1, 0, 0, 78, 50, 68, 83, 77, 65, /* 0x 940 */
|
||||
50, 48, 0,102, 1, 0, 0, 0, 0, 0, 0,104, 1, 0, 0, 78, /* 0x 950 */
|
||||
50, 68, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 68, 70, /* 0x 960 */
|
||||
65, 83, 50, 48, 0,107, 1, 0, 0, 0, 0, 0, 0,111, 1, 0, /* 0x 970 */
|
||||
0, 78, 50, 68, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, /* 0x 980 */
|
||||
68, 68, 69, 67, 50, 48, 0,116, 1, 0, 0, 78, 50, 68, 83, 77, /* 0x 990 */
|
||||
65, 51, 48, 0,129, 1, 0, 0, 0, 0, 0, 0,142, 1, 0, 0, /* 0x 9a0 */
|
||||
78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, /* 0x 9b0 */
|
||||
70, 65, 83, 51, 48, 0,142, 1, 0, 0, 0, 0, 0, 0,148, 1, /* 0x 9c0 */
|
||||
0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 0, /* 0x 9d0 */
|
||||
0, 0, 0,157, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, /* 0x 9e0 */
|
||||
16, 0, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0,157, 1, 0, /* 0x 9f0 */
|
||||
0, 0, 0, 0, 0,173, 1, 0, 0, 78, 50, 68, 68, 69, 67, 50, /* 0x a00 */
|
||||
48, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 78, 50, /* 0x a10 */
|
||||
68, 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,225, /* 0x a20 */
|
||||
1, 0, 0, 78, 50, 68, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, /* 0x a30 */
|
||||
78, 50, 68, 83, 77, 65, 52, 48, 0,239, 1, 0, 0, 0, 0, 0, /* 0x a40 */
|
||||
0,252, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, /* 0x a50 */
|
||||
0, 0, 78, 50, 68, 70, 65, 83, 52, 48, 0,252, 1, 0, 0, 0, /* 0x a60 */
|
||||
0, 0, 0, 0, 2, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, /* 0x a70 */
|
||||
69, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 78, 50, 68, 68, /* 0x a80 */
|
||||
69, 67, 51, 48, 0, 69, 0, 0, 0, 78, 50, 68, 68, 85, 77, 77, /* 0x a90 */
|
||||
49, 0, 11, 2, 0, 0, 78, 50, 68, 83, 77, 65, 53, 48, 0, 11, /* 0x aa0 */
|
||||
2, 0, 0, 78, 50, 68, 70, 65, 83, 53, 48, 0, 13, 2, 0, 0, /* 0x ab0 */
|
||||
78, 50, 68, 68, 69, 67, 53, 48, 0, 16, 2, 0, 0, 78, 50, 68, /* 0x ac0 */
|
||||
83, 77, 65, 54, 48, 0, 25, 2, 0, 0, 0, 0, 0, 0, 37, 2, /* 0x ad0 */
|
||||
0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, /* 0x ae0 */
|
||||
50, 68, 70, 65, 83, 54, 48, 0, 37, 2, 0, 0, 0, 0, 0, 0, /* 0x af0 */
|
||||
48, 2, 0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 0, 0, 0, /* 0x b00 */
|
||||
0, 0, 0, 0, 0, 62, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, /* 0x b10 */
|
||||
48, 0, 0, 0, 0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 62, /* 0x b20 */
|
||||
2, 0, 0, 0, 0, 0, 0, 84, 2, 0, 0, 78, 50, 68, 68, 69, /* 0x b30 */
|
||||
67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, /* 0x b40 */
|
||||
0, 84, 2, 0, 0, 78, 82, 86, 50, 68, 69, 78, 68, 0, 84, 2, /* 0x b50 */
|
||||
0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 84, 2, 0, 0, 0, /* 0x b60 */
|
||||
0, 0, 0, 86, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, /* 0x b70 */
|
||||
4, 0, 0, 0, 78, 50, 69, 70, 65, 83, 49, 48, 0, 87, 2, 0, /* 0x b80 */
|
||||
0, 0, 0, 0, 0, 89, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, /* 0x b90 */
|
||||
48, 0, 4, 0, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 89, /* 0x ba0 */
|
||||
2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 95, 2, 0, 0, /* 0x bb0 */
|
||||
78, 50, 69, 83, 77, 65, 50, 48, 0,106, 2, 0, 0, 0, 0, 0, /* 0x bc0 */
|
||||
0,108, 2, 0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 2, 0, /* 0x bd0 */
|
||||
0, 0, 78, 50, 69, 70, 65, 83, 50, 48, 0,111, 2, 0, 0, 0, /* 0x be0 */
|
||||
0, 0, 0,115, 2, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, /* 0x bf0 */
|
||||
0, 0, 0, 0, 78, 50, 69, 68, 69, 67, 50, 48, 0,120, 2, 0, /* 0x c00 */
|
||||
0, 78, 50, 69, 83, 77, 65, 51, 48, 0,133, 2, 0, 0, 0, 0, /* 0x c10 */
|
||||
0, 0,146, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, /* 0x c20 */
|
||||
0, 0, 0, 78, 50, 69, 70, 65, 83, 51, 48, 0,146, 2, 0, 0, /* 0x c30 */
|
||||
0, 0, 0, 0,152, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, /* 0x c40 */
|
||||
0, 31, 0, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 78, 50, 69, /* 0x c50 */
|
||||
68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x c60 */
|
||||
51, 48, 0,161, 2, 0, 0, 0, 0, 0, 0,177, 2, 0, 0, 78, /* 0x c70 */
|
||||
50, 69, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c80 */
|
||||
192, 2, 0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0, 0, 0, 0, /* 0x c90 */
|
||||
0, 0, 0, 0, 0,210, 2, 0, 0, 78, 50, 69, 68, 69, 67, 54, /* 0x ca0 */
|
||||
48, 0, 0, 0, 0, 0, 78, 50, 69, 83, 77, 65, 52, 48, 0, 0, /* 0x cb0 */
|
||||
3, 0, 0, 0, 0, 0, 0, 13, 3, 0, 0, 78, 50, 69, 68, 69, /* 0x cc0 */
|
||||
67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, 70, 65, 83, 52, 48, /* 0x cd0 */
|
||||
0, 13, 3, 0, 0, 0, 0, 0, 0, 17, 3, 0, 0, 78, 50, 69, /* 0x ce0 */
|
||||
68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 0, 0, 0, 0, 28, 3, /* 0x cf0 */
|
||||
0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, /* 0x d00 */
|
||||
50, 69, 68, 85, 77, 77, 49, 0, 28, 3, 0, 0, 78, 50, 69, 83, /* 0x d10 */
|
||||
77, 65, 53, 48, 0, 28, 3, 0, 0, 78, 50, 69, 70, 65, 83, 53, /* 0x d20 */
|
||||
48, 0, 30, 3, 0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0, 33, /* 0x d30 */
|
||||
3, 0, 0, 78, 50, 69, 83, 77, 65, 54, 48, 0, 42, 3, 0, 0, /* 0x d40 */
|
||||
0, 0, 0, 0, 54, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, /* 0x d50 */
|
||||
0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, 54, 48, 0, 54, 3, /* 0x d60 */
|
||||
0, 0, 0, 0, 0, 0, 65, 3, 0, 0, 78, 50, 69, 70, 65, 83, /* 0x d70 */
|
||||
54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 3, 0, 0, 78, /* 0x d80 */
|
||||
50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, /* 0x d90 */
|
||||
65, 83, 54, 49, 0, 79, 3, 0, 0, 0, 0, 0, 0,101, 3, 0, /* 0x da0 */
|
||||
0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, /* 0x db0 */
|
||||
69, 68, 69, 67, 54, 48, 0,101, 3, 0, 0, 78, 82, 86, 50, 69, /* 0x dc0 */
|
||||
69, 78, 68, 0,101, 3, 0, 0, 67, 76, 49, 83, 77, 65, 49, 66, /* 0x dd0 */
|
||||
0,101, 3, 0, 0, 67, 76, 49, 70, 65, 83, 49, 66, 0,103, 3, /* 0x de0 */
|
||||
0, 0, 67, 76, 49, 71, 69, 84, 49, 66, 0,109, 3, 0, 0, 67, /* 0x df0 */
|
||||
76, 49, 69, 78, 84, 69, 82, 0,109, 3, 0, 0, 0, 0, 0, 0, /* 0x e00 */
|
||||
115, 3, 0, 0, 67, 76, 49, 83, 84, 65, 82, 84, 0, 0, 0, 0, /* 0x e10 */
|
||||
0, 67, 76, 49, 83, 77, 65, 49, 48, 0,115, 3, 0, 0, 0, 0, /* 0x e20 */
|
||||
0, 0,119, 3, 0, 0, 67, 76, 49, 82, 76, 79, 65, 68, 0, 0, /* 0x e30 */
|
||||
0, 0, 0, 67, 76, 49, 82, 76, 79, 65, 68, 0,120, 3, 0, 0, /* 0x e40 */
|
||||
67, 76, 49, 87, 73, 68, 48, 49, 0,128, 3, 0, 0, 67, 76, 49, /* 0x e50 */
|
||||
87, 73, 68, 48, 50, 0,130, 3, 0, 0, 67, 76, 49, 87, 73, 68, /* 0x e60 */
|
||||
48, 51, 0,132, 3, 0, 0, 0, 0, 0, 0,134, 3, 0, 0, 67, /* 0x e70 */
|
||||
76, 49, 87, 73, 68, 49, 48, 0, 12, 0, 0, 0, 67, 76, 49, 87, /* 0x e80 */
|
||||
73, 68, 48, 52, 0,134, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, /* 0x e90 */
|
||||
53, 0,136, 3, 0, 0, 0, 0, 0, 0,138, 3, 0, 0, 67, 76, /* 0x ea0 */
|
||||
49, 87, 73, 68, 49, 48, 0, 7, 0, 0, 0, 67, 76, 49, 87, 73, /* 0x eb0 */
|
||||
68, 48, 54, 0,138, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 55, /* 0x ec0 */
|
||||
0,140, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 56, 0,143, 3, /* 0x ed0 */
|
||||
0, 0, 0, 0, 0, 0,150, 3, 0, 0, 67, 76, 49, 87, 73, 68, /* 0x ee0 */
|
||||
48, 54, 0, 2, 0, 0, 0, 0, 0, 0, 0,160, 3, 0, 0, 67, /* 0x ef0 */
|
||||
76, 49, 87, 73, 68, 49, 48, 0, 15, 0, 0, 0, 0, 0, 0, 0, /* 0x f00 */
|
||||
169, 3, 0, 0, 67, 76, 49, 67, 79, 80, 89, 48, 0, 18, 0, 0, /* 0x f10 */
|
||||
0, 67, 76, 49, 87, 73, 68, 48, 57, 0,169, 3, 0, 0, 67, 76, /* 0x f20 */
|
||||
49, 87, 73, 68, 49, 48, 0,171, 3, 0, 0, 0, 0, 0, 0,178, /* 0x f30 */
|
||||
3, 0, 0, 67, 76, 49, 84, 79, 80, 48, 55, 0, 2, 0, 0, 0, /* 0x f40 */
|
||||
0, 0, 0, 0,182, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 56, /* 0x f50 */
|
||||
0, 26, 0, 0, 0, 0, 0, 0, 0,188, 3, 0, 0, 67, 76, 49, /* 0x f60 */
|
||||
84, 79, 80, 48, 55, 0, 2, 0, 0, 0, 67, 76, 49, 83, 84, 65, /* 0x f70 */
|
||||
82, 84, 0,188, 3, 0, 0, 67, 76, 49, 84, 79, 80, 48, 48, 0, /* 0x f80 */
|
||||
193, 3, 0, 0, 67, 76, 49, 84, 79, 80, 48, 49, 0,196, 3, 0, /* 0x f90 */
|
||||
0, 0, 0, 0, 0,198, 3, 0, 0, 67, 76, 49, 84, 79, 80, 48, /* 0x fa0 */
|
||||
55, 0, 23, 0, 0, 0, 67, 76, 49, 84, 79, 80, 48, 50, 0,198, /* 0x fb0 */
|
||||
3, 0, 0, 0, 0, 0, 0,200, 3, 0, 0, 67, 76, 49, 84, 79, /* 0x fc0 */
|
||||
80, 48, 55, 0, 22, 0, 0, 0, 67, 76, 49, 84, 79, 80, 48, 51, /* 0x fd0 */
|
||||
0,200, 3, 0, 0, 0, 0, 0, 0,202, 3, 0, 0, 67, 76, 49, /* 0x fe0 */
|
||||
84, 79, 80, 48, 55, 0, 21, 0, 0, 0, 67, 76, 49, 84, 79, 80, /* 0x ff0 */
|
||||
48, 52, 0,202, 3, 0, 0, 0, 0, 0, 0,204, 3, 0, 0, 67, /* 0x1000 */
|
||||
76, 49, 84, 79, 80, 48, 55, 0, 20, 0, 0, 0, 67, 76, 49, 84, /* 0x1010 */
|
||||
79, 80, 48, 53, 0,207, 3, 0, 0, 0, 0, 0, 0,209, 3, 0, /* 0x1020 */
|
||||
0, 67, 76, 49, 84, 79, 80, 48, 54, 0, 7, 0, 0, 0, 67, 76, /* 0x1030 */
|
||||
49, 84, 79, 80, 48, 54, 0,210, 3, 0, 0, 0, 0, 0, 0,217, /* 0x1040 */
|
||||
3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 49, 0, 0, 0, 0, 0, /* 0x1050 */
|
||||
67, 76, 49, 84, 79, 80, 48, 55, 0,217, 3, 0, 0, 67, 76, 49, /* 0x1060 */
|
||||
79, 70, 70, 48, 49, 0,240, 3, 0, 0, 67, 76, 49, 79, 70, 70, /* 0x1070 */
|
||||
48, 50, 0,242, 3, 0, 0, 0, 0, 0, 0,244, 3, 0, 0, 67, /* 0x1080 */
|
||||
76, 49, 84, 79, 80, 48, 55, 0, 23, 0, 0, 0, 0, 0, 0, 0, /* 0x1090 */
|
||||
2, 4, 0, 0, 67, 76, 49, 67, 79, 80, 89, 48, 0, 51, 0, 0, /* 0x10a0 */
|
||||
0, 67, 76, 49, 79, 70, 70, 48, 51, 0, 4, 4, 0, 0, 67, 76, /* 0x10b0 */
|
||||
49, 79, 70, 70, 48, 52, 0, 6, 4, 0, 0, 0, 0, 0, 0, 10, /* 0x10c0 */
|
||||
4, 0, 0, 67, 76, 49, 67, 79, 80, 89, 48, 0, 0, 0, 0, 0, /* 0x10d0 */
|
||||
67, 76, 49, 76, 69, 78, 48, 48, 0, 10, 4, 0, 0, 67, 76, 49, /* 0x10e0 */
|
||||
76, 69, 78, 48, 49, 0, 11, 4, 0, 0, 67, 76, 49, 76, 69, 78, /* 0x10f0 */
|
||||
48, 50, 0, 13, 4, 0, 0, 0, 0, 0, 0, 15, 4, 0, 0, 67, /* 0x1100 */
|
||||
76, 49, 76, 69, 78, 48, 48, 0, 1, 0, 0, 0, 67, 76, 49, 67, /* 0x1110 */
|
||||
79, 80, 89, 48, 0, 18, 4, 0, 0, 0, 0, 0, 0, 55, 4, 0, /* 0x1120 */
|
||||
0, 67, 76, 49, 84, 79, 80, 48, 48, 0, 0, 0, 0, 0, 67, 76, /* 0x1130 */
|
||||
49, 69, 78, 68, 0, 69, 4, 0, 0, 76, 88, 80, 84, 73, 48, 57, /* 0x1140 */
|
||||
48, 0, 69, 4, 0, 0, 0, 0, 0, 0, 74, 4, 0, 0, 76, 88, /* 0x1150 */
|
||||
80, 84, 73, 48, 57, 49, 0, 0, 0, 0, 0, 76, 88, 80, 84, 73, /* 0x1160 */
|
||||
48, 57, 49, 0, 74, 4, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, /* 0x1170 */
|
||||
0,103, 4, 0, 0, 67, 84, 67, 76, 69, 86, 69, 49, 0,117, 4, /* 0x1180 */
|
||||
0, 0, 0, 0, 0, 0,122, 4, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x1190 */
|
||||
48, 48, 0, 5, 0, 0, 0, 67, 65, 76, 76, 84, 82, 48, 49, 0, /* 0x11a0 */
|
||||
122, 4, 0, 0, 67, 84, 68, 85, 77, 77, 89, 49, 0,127, 4, 0, /* 0x11b0 */
|
||||
0, 67, 84, 66, 83, 72, 82, 48, 49, 0,127, 4, 0, 0, 67, 84, /* 0x11c0 */
|
||||
66, 82, 79, 82, 48, 49, 0,131, 4, 0, 0, 67, 84, 66, 83, 87, /* 0x11d0 */
|
||||
65, 48, 49, 0,133, 4, 0, 0, 67, 65, 76, 76, 84, 82, 48, 50, /* 0x11e0 */
|
||||
0,138, 4, 0, 0, 0, 0, 0, 0,152, 4, 0, 0, 67, 65, 76, /* 0x11f0 */
|
||||
76, 84, 82, 48, 48, 0, 10, 0, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x1200 */
|
||||
49, 48, 0,152, 4, 0, 0, 67, 65, 76, 76, 84, 82, 69, 56, 0, /* 0x1210 */
|
||||
157, 4, 0, 0, 67, 65, 76, 76, 84, 82, 69, 57, 0,159, 4, 0, /* 0x1220 */
|
||||
0, 67, 65, 76, 76, 84, 82, 49, 49, 0,161, 4, 0, 0, 0, 0, /* 0x1230 */
|
||||
0, 0,165, 4, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0, 5, /* 0x1240 */
|
||||
0, 0, 0, 67, 84, 67, 76, 69, 86, 69, 50, 0,165, 4, 0, 0, /* 0x1250 */
|
||||
0, 0, 0, 0,170, 4, 0, 0, 67, 65, 76, 76, 84, 82, 49, 49, /* 0x1260 */
|
||||
0, 0, 0, 0, 0, 67, 65, 76, 76, 84, 82, 49, 50, 0,170, 4, /* 0x1270 */
|
||||
0, 0, 67, 84, 68, 85, 77, 77, 89, 50, 0,172, 4, 0, 0, 67, /* 0x1280 */
|
||||
84, 66, 83, 72, 82, 49, 49, 0,172, 4, 0, 0, 67, 84, 66, 82, /* 0x1290 */
|
||||
79, 82, 49, 49, 0,176, 4, 0, 0, 67, 84, 66, 83, 87, 65, 49, /* 0x12a0 */
|
||||
49, 0,178, 4, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0,183, /* 0x12b0 */
|
||||
4, 0, 0, 0, 0, 0, 0,188, 4, 0, 0, 67, 65, 76, 76, 84, /* 0x12c0 */
|
||||
82, 49, 48, 0, 5, 0, 0, 0, 67, 84, 84, 72, 69, 69, 78, 68, /* 0x12d0 */
|
||||
0,188, 4, 0, 0, 76, 88, 85, 78, 70, 48, 48, 48, 0,188, 4, /* 0x12e0 */
|
||||
0, 0, 0, 0, 0, 0,190, 4, 0, 0, 76, 88, 85, 78, 70, 48, /* 0x12f0 */
|
||||
49, 48, 0, 5, 0, 0, 0, 76, 88, 85, 78, 70, 48, 48, 50, 0, /* 0x1300 */
|
||||
190, 4, 0, 0, 77, 82, 85, 66, 89, 84, 69, 48, 0,195, 4, 0, /* 0x1310 */
|
||||
0, 76, 88, 77, 82, 85, 48, 48, 53, 0,197, 4, 0, 0, 76, 88, /* 0x1320 */
|
||||
77, 82, 85, 48, 48, 54, 0,202, 4, 0, 0, 76, 88, 77, 82, 85, /* 0x1330 */
|
||||
48, 48, 55, 0,209, 4, 0, 0, 76, 88, 85, 78, 70, 48, 48, 56, /* 0x1340 */
|
||||
0,216, 4, 0, 0, 76, 88, 85, 78, 70, 48, 49, 48, 0,220, 4, /* 0x1350 */
|
||||
0, 0, 0, 0, 0, 0,225, 4, 0, 0, 76, 88, 85, 78, 70, 48, /* 0x1360 */
|
||||
52, 50, 0, 0, 0, 0, 0, 76, 88, 74, 67, 67, 48, 49, 48, 0, /* 0x1370 */
|
||||
225, 4, 0, 0, 76, 88, 77, 82, 85, 48, 52, 53, 0,228, 4, 0, /* 0x1380 */
|
||||
0, 76, 88, 77, 82, 85, 48, 52, 54, 0,231, 4, 0, 0, 76, 88, /* 0x1390 */
|
||||
74, 67, 67, 48, 50, 48, 0,233, 4, 0, 0, 0, 0, 0, 0,235, /* 0x13a0 */
|
||||
4, 0, 0, 76, 88, 85, 78, 70, 48, 51, 52, 0, 0, 0, 0, 0, /* 0x13b0 */
|
||||
76, 88, 74, 67, 67, 48, 50, 49, 0,235, 4, 0, 0, 0, 0, 0, /* 0x13c0 */
|
||||
0,240, 4, 0, 0, 76, 88, 85, 78, 70, 48, 51, 52, 0, 0, 0, /* 0x13d0 */
|
||||
0, 0, 76, 88, 74, 67, 67, 48, 50, 51, 0,240, 4, 0, 0, 76, /* 0x13e0 */
|
||||
88, 85, 78, 70, 48, 51, 55, 0,247, 4, 0, 0, 76, 88, 85, 78, /* 0x13f0 */
|
||||
70, 51, 56, 54, 0,249, 4, 0, 0, 76, 88, 85, 78, 70, 51, 56, /* 0x1400 */
|
||||
55, 0,250, 4, 0, 0, 76, 88, 85, 78, 70, 51, 56, 56, 0, 3, /* 0x1410 */
|
||||
5, 0, 0, 0, 0, 0, 0, 6, 5, 0, 0, 76, 88, 85, 78, 70, /* 0x1420 */
|
||||
48, 52, 48, 0, 0, 0, 0, 0, 76, 88, 85, 78, 70, 52, 56, 54, /* 0x1430 */
|
||||
0, 6, 5, 0, 0, 76, 88, 85, 78, 70, 52, 56, 55, 0, 10, 5, /* 0x1440 */
|
||||
0, 0, 0, 0, 0, 0, 12, 5, 0, 0, 76, 88, 85, 78, 70, 48, /* 0x1450 */
|
||||
52, 48, 0, 0, 0, 0, 0, 76, 88, 77, 82, 85, 48, 54, 53, 0, /* 0x1460 */
|
||||
12, 5, 0, 0, 0, 0, 0, 0, 16, 5, 0, 0, 76, 88, 77, 82, /* 0x1470 */
|
||||
85, 48, 55, 48, 0, 5, 0, 0, 0, 77, 82, 85, 66, 89, 84, 69, /* 0x1480 */
|
||||
51, 0, 16, 5, 0, 0, 77, 82, 85, 65, 82, 66, 51, 48, 0, 18, /* 0x1490 */
|
||||
5, 0, 0, 77, 82, 85, 66, 73, 84, 83, 51, 0, 19, 5, 0, 0, /* 0x14a0 */
|
||||
77, 82, 85, 65, 82, 66, 52, 48, 0, 21, 5, 0, 0, 76, 88, 77, /* 0x14b0 */
|
||||
82, 85, 48, 55, 48, 0, 25, 5, 0, 0, 0, 0, 0, 0, 30, 5, /* 0x14c0 */
|
||||
0, 0, 76, 88, 85, 78, 70, 48, 52, 48, 0, 0, 0, 0, 0, 77, /* 0x14d0 */
|
||||
82, 85, 66, 89, 84, 69, 52, 0, 33, 5, 0, 0, 77, 82, 85, 66, /* 0x14e0 */
|
||||
73, 84, 83, 52, 0, 36, 5, 0, 0, 77, 82, 85, 65, 82, 66, 53, /* 0x14f0 */
|
||||
48, 0, 38, 5, 0, 0, 76, 88, 77, 82, 85, 48, 56, 48, 0, 44, /* 0x1500 */
|
||||
5, 0, 0, 77, 82, 85, 66, 89, 84, 69, 53, 0, 47, 5, 0, 0, /* 0x1510 */
|
||||
77, 82, 85, 65, 82, 66, 54, 48, 0, 49, 5, 0, 0, 77, 82, 85, /* 0x1520 */
|
||||
66, 73, 84, 83, 53, 0, 50, 5, 0, 0, 77, 82, 85, 65, 82, 66, /* 0x1530 */
|
||||
55, 48, 0, 52, 5, 0, 0, 76, 88, 77, 82, 85, 48, 57, 48, 0, /* 0x1540 */
|
||||
56, 5, 0, 0, 0, 0, 0, 0, 63, 5, 0, 0, 76, 88, 77, 82, /* 0x1550 */
|
||||
85, 49, 48, 48, 0, 10, 0, 0, 0, 77, 82, 85, 66, 89, 84, 69, /* 0x1560 */
|
||||
54, 0, 67, 5, 0, 0, 77, 82, 85, 65, 82, 66, 56, 48, 0, 69, /* 0x1570 */
|
||||
5, 0, 0, 77, 82, 85, 66, 73, 84, 83, 54, 0, 70, 5, 0, 0, /* 0x1580 */
|
||||
77, 82, 85, 65, 82, 66, 57, 48, 0, 72, 5, 0, 0, 76, 88, 77, /* 0x1590 */
|
||||
82, 85, 49, 48, 48, 0, 76, 5, 0, 0, 76, 88, 85, 78, 70, 48, /* 0x15a0 */
|
||||
52, 48, 0, 92, 5, 0, 0, 76, 88, 77, 82, 85, 49, 49, 48, 0, /* 0x15b0 */
|
||||
97, 5, 0, 0, 76, 88, 77, 82, 85, 49, 49, 49, 0,100, 5, 0, /* 0x15c0 */
|
||||
0, 76, 88, 85, 78, 70, 48, 52, 49, 0,102, 5, 0, 0, 0, 0, /* 0x15d0 */
|
||||
0, 0,109, 5, 0, 0, 76, 88, 85, 78, 70, 48, 51, 52, 0, 0, /* 0x15e0 */
|
||||
0, 0, 0, 76, 88, 85, 78, 70, 48, 52, 50, 0,109, 5, 0, 0, /* 0x15f0 */
|
||||
76, 69, 88, 69, 67, 48, 49, 54, 0,109, 5, 0, 0, 0, 0, 0, /* 0x1600 */
|
||||
0,111, 5, 0, 0, 76, 88, 85, 78, 70, 48, 52, 50, 0, 0, 0, /* 0x1610 */
|
||||
0, 0, 76, 88, 77, 82, 85, 48, 49, 48, 0,111, 5, 0, 0, 76, /* 0x1620 */
|
||||
88, 74, 77, 80, 65, 48, 48, 0,112, 5, 0, 0, 76, 88, 67, 65, /* 0x1630 */
|
||||
76, 76, 66, 48, 0,114, 5, 0, 0, 76, 88, 85, 78, 70, 48, 50, /* 0x1640 */
|
||||
49, 0,116, 5, 0, 0, 76, 88, 77, 82, 85, 48, 50, 50, 0,122, /* 0x1650 */
|
||||
5, 0, 0, 76, 88, 74, 77, 80, 65, 48, 49, 0,125, 5, 0, 0, /* 0x1660 */
|
||||
76, 88, 67, 65, 76, 76, 66, 49, 0,127, 5, 0, 0, 77, 82, 85, /* 0x1670 */
|
||||
66, 73, 84, 83, 49, 0,129, 5, 0, 0, 76, 88, 77, 82, 85, 48, /* 0x1680 */
|
||||
51, 48, 0,130, 5, 0, 0, 77, 82, 85, 66, 89, 84, 69, 49, 0, /* 0x1690 */
|
||||
132, 5, 0, 0, 77, 82, 85, 65, 82, 66, 49, 48, 0,134, 5, 0, /* 0x16a0 */
|
||||
0, 76, 88, 77, 82, 85, 48, 52, 48, 0,135, 5, 0, 0, 0, 0, /* 0x16b0 */
|
||||
0, 0,137, 5, 0, 0, 76, 88, 77, 82, 85, 48, 51, 48, 0, 0, /* 0x16c0 */
|
||||
0, 0, 0, 76, 88, 85, 78, 70, 48, 51, 48, 0,137, 5, 0, 0, /* 0x16d0 */
|
||||
76, 88, 74, 67, 67, 48, 48, 48, 0,143, 5, 0, 0, 0, 0, 0, /* 0x16e0 */
|
||||
0,151, 5, 0, 0, 76, 88, 74, 67, 67, 48, 49, 48, 0, 0, 0, /* 0x16f0 */
|
||||
0, 0, 76, 88, 67, 74, 48, 77, 82, 85, 0,151, 5, 0, 0, 76, /* 0x1700 */
|
||||
88, 67, 74, 49, 77, 82, 85, 0,153, 5, 0, 0, 76, 88, 67, 65, /* 0x1710 */
|
||||
76, 74, 77, 80, 0,156, 5, 0, 0, 76, 88, 67, 65, 76, 76, 48, /* 0x1720 */
|
||||
48, 0,159, 5, 0, 0, 0, 0, 0, 0,161, 5, 0, 0, 76, 88, /* 0x1730 */
|
||||
85, 78, 70, 48, 51, 55, 0, 0, 0, 0, 0, 76, 88, 67, 65, 76, /* 0x1740 */
|
||||
76, 48, 49, 0,161, 5, 0, 0, 76, 88, 67, 74, 50, 77, 82, 85, /* 0x1750 */
|
||||
0,164, 5, 0, 0, 0, 0, 0, 0,166, 5, 0, 0, 76, 88, 85, /* 0x1760 */
|
||||
78, 70, 48, 51, 55, 0, 0, 0, 0, 0, 76, 88, 67, 74, 52, 77, /* 0x1770 */
|
||||
82, 85, 0,166, 5, 0, 0, 0, 0, 0, 0,168, 5, 0, 0, 76, /* 0x1780 */
|
||||
88, 85, 78, 70, 48, 51, 52, 0, 0, 0, 0, 0, 76, 88, 67, 74, /* 0x1790 */
|
||||
54, 77, 82, 85, 0,168, 5, 0, 0, 0, 0, 0, 0,170, 5, 0, /* 0x17a0 */
|
||||
0, 76, 88, 67, 74, 56, 77, 82, 85, 0, 1, 0, 0, 0, 76, 88, /* 0x17b0 */
|
||||
67, 74, 55, 77, 82, 85, 0,170, 5, 0, 0, 0, 0, 0, 0,172, /* 0x17c0 */
|
||||
5, 0, 0, 76, 88, 67, 74, 56, 77, 82, 85, 0, 1, 0, 0, 0, /* 0x17d0 */
|
||||
76, 88, 67, 74, 56, 77, 82, 85, 0,172, 5, 0, 0, 0, 0, 0, /* 0x17e0 */
|
||||
0,175, 5, 0, 0, 76, 88, 85, 78, 70, 48, 51, 55, 0, 0, 0, /* 0x17f0 */
|
||||
0, 0, 76, 88, 85, 78, 70, 48, 51, 52, 0,175, 5, 0, 0, 0, /* 0x1800 */
|
||||
0, 0, 0,180, 5, 0, 0, 76, 88, 85, 78, 70, 48, 51, 48, 0, /* 0x1810 */
|
||||
0, 0, 0, 0, 76, 88, 77, 82, 85, 48, 53, 53, 0,180, 5, 0, /* 0x1820 */
|
||||
0, 77, 82, 85, 66, 89, 84, 69, 50, 0,182, 5, 0, 0, 77, 82, /* 0x1830 */
|
||||
85, 66, 73, 84, 83, 50, 0,187, 5, 0, 0, 77, 82, 85, 65, 82, /* 0x1840 */
|
||||
66, 50, 48, 0,192, 5, 0, 0, 76, 88, 77, 82, 85, 48, 53, 55, /* 0x1850 */
|
||||
0,197, 5, 0, 0, 76, 88, 77, 82, 85, 48, 53, 56, 0,203, 5, /* 0x1860 */
|
||||
0, 0, 76, 88, 85, 78, 70, 48, 51, 53, 0,204, 5, 0, 0, 76, /* 0x1870 */
|
||||
88, 80, 84, 73, 49, 52, 48, 0,210, 5, 0, 0, 76, 88, 80, 84, /* 0x1880 */
|
||||
73, 49, 52, 49, 0,210, 5, 0, 0, 76, 88, 80, 84, 73, 49, 53, /* 0x1890 */
|
||||
48, 0,210, 5, 0, 0, 67, 75, 76, 76, 84, 82, 48, 48, 0,223, /* 0x18a0 */
|
||||
5, 0, 0, 0, 0, 0, 0,227, 5, 0, 0, 67, 75, 76, 76, 84, /* 0x18b0 */
|
||||
82, 50, 48, 0, 30, 0, 0, 0, 67, 75, 76, 76, 84, 82, 49, 48, /* 0x18c0 */
|
||||
0,232, 5, 0, 0, 0, 0, 0, 0,246, 5, 0, 0, 67, 75, 76, /* 0x18d0 */
|
||||
76, 84, 82, 50, 48, 0, 6, 0, 0, 0, 67, 75, 76, 76, 84, 82, /* 0x18e0 */
|
||||
50, 48, 0,246, 5, 0, 0, 0, 0, 0, 0,252, 5, 0, 0, 67, /* 0x18f0 */
|
||||
75, 76, 76, 84, 82, 52, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1900 */
|
||||
0, 6, 0, 0, 67, 75, 76, 76, 84, 82, 52, 48, 0, 0, 0, 0, /* 0x1910 */
|
||||
0, 67, 75, 76, 76, 84, 82, 51, 48, 0, 23, 6, 0, 0, 0, 0, /* 0x1920 */
|
||||
0, 0, 30, 6, 0, 0, 67, 75, 76, 76, 84, 82, 49, 48, 0, 14, /* 0x1930 */
|
||||
0, 0, 0, 67, 75, 76, 76, 84, 82, 52, 48, 0, 30, 6, 0, 0, /* 0x1940 */
|
||||
0, 0, 0, 0, 35, 6, 0, 0, 67, 75, 76, 76, 84, 82, 48, 48, /* 0x1950 */
|
||||
0, 4, 0, 0, 0, 76, 88, 80, 84, 73, 49, 54, 48, 0, 35, 6, /* 0x1960 */
|
||||
0, 0, 76, 88, 80, 84, 73, 50, 48, 48, 0, 37, 6, 0, 0, 88, /* 0x1970 */
|
||||
84, 72, 69, 69, 78, 68, 88, 0, 37, 6, 0, 0,255,255,255,255, /* 0x1980 */
|
||||
37, 6 /* 0x1990 */
|
||||
unsigned char linux_i386pti_loader[6542] = {
|
||||
232, 28, 0, 0, 0,131,248, 70,185,209, 5, 0, 0,116, 15,131, /* 0x 0 */
|
||||
248, 73,185,209, 5, 0, 0,116, 5,185, 32, 0, 0, 0,137,200, /* 0x 10 */
|
||||
195,232, 0, 0, 0, 0,131,248, 2,185, 83, 0, 0, 0,116,238, /* 0x 20 */
|
||||
131,248, 5,185, 83, 0, 0, 0,116,228,131,248, 8,185, 83, 0, /* 0x 30 */
|
||||
0, 0,116,218,131,248, 11,185, 83, 0, 0, 0,116,208,233,198, /* 0x 40 */
|
||||
255,255,255, 96,131,205,255,139,116, 36, 36,139,124, 36, 44,235, /* 0x 50 */
|
||||
0,164,235, 0,138, 6, 70,136, 7, 71, 1,219,117, 7,139, 30, /* 0x 60 */
|
||||
131,238,252, 17,219,114, 0, 49,192, 64,138, 7,114, 0,184, 1, /* 0x 70 */
|
||||
0, 0, 0, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,192, /* 0x 80 */
|
||||
1,219,117, 7,139, 30,131,238,252, 17,219,115, 0, 1,219,115, /* 0x 90 */
|
||||
0,117, 9,139, 30,131,238,252, 17,219,115, 0, 49,201,131,232, /* 0x a0 */
|
||||
3,114, 13,193,224, 8,138, 6, 70,131,240,255,116, 0,137,197, /* 0x b0 */
|
||||
1,219,117, 7,139, 30,131,238,252, 17,219, 17,201, 1,219,117, /* 0x c0 */
|
||||
7,139, 30,131,238,252, 17,219, 17,201,117, 0, 65, 1,219,117, /* 0x d0 */
|
||||
7,139, 30,131,238,252, 17,219, 17,201, 1,219,117, 7,139, 30, /* 0x e0 */
|
||||
131,238,252, 17,219,115, 0, 1,219,115, 0,117, 9,139, 30,131, /* 0x f0 */
|
||||
238,252, 17,219,115, 0, 65, 65,131,193, 2,129,253, 0,243,255, /* 0x 100 */
|
||||
255,131,209, 1, 86,141, 52, 47,243,164, 94,233, 0, 0, 0, 0, /* 0x 110 */
|
||||
141, 20, 47,131,253,252,138, 4, 15,118, 0,138, 2, 66,136, 7, /* 0x 120 */
|
||||
71, 73,117,247,233, 0, 0, 0, 0,139, 2,131,194, 4,137, 7, /* 0x 130 */
|
||||
131,199, 4,131,233, 4,119,241, 1,207,233, 0, 0, 0, 0,235, /* 0x 140 */
|
||||
0,164,235, 0,138, 6, 70,136, 7, 71, 1,219,117, 7,139, 30, /* 0x 150 */
|
||||
131,238,252, 17,219,114, 0, 49,192, 64,138, 7,114, 0,184, 1, /* 0x 160 */
|
||||
0, 0, 0, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,192, /* 0x 170 */
|
||||
1,219,117, 7,139, 30,131,238,252, 17,219,114, 0, 1,219,115, /* 0x 180 */
|
||||
11,117, 0,139, 30,131,238,252, 17,219,114, 0, 72, 1,219,117, /* 0x 190 */
|
||||
7,139, 30,131,238,252, 17,219, 17,192,235, 0, 49,201,131,232, /* 0x 1a0 */
|
||||
3,114, 17,193,224, 8,138, 6, 70,131,240,255,116, 0,209,248, /* 0x 1b0 */
|
||||
137,197,235, 11, 1,219,117, 7,139, 30,131,238,252, 17,219, 17, /* 0x 1c0 */
|
||||
201, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201,117, 0, /* 0x 1d0 */
|
||||
65, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201, 1,219, /* 0x 1e0 */
|
||||
117, 7,139, 30,131,238,252, 17,219,115, 0, 1,219,115, 0,117, /* 0x 1f0 */
|
||||
9,139, 30,131,238,252, 17,219,115, 0, 65, 65,131,193, 2,129, /* 0x 200 */
|
||||
253, 0,251,255,255,131,209, 1, 86,141, 52, 47,243,164, 94,233, /* 0x 210 */
|
||||
0, 0, 0, 0,141, 20, 47,131,253,252,138, 4, 15,118, 0,138, /* 0x 220 */
|
||||
2, 66,136, 7, 71, 73,117,247,233, 0, 0, 0, 0,139, 2,131, /* 0x 230 */
|
||||
194, 4,137, 7,131,199, 4,131,233, 4,119,241, 1,207,233, 0, /* 0x 240 */
|
||||
0, 0, 0,235, 0,164,235, 0,138, 6, 70,136, 7, 71, 1,219, /* 0x 250 */
|
||||
117, 7,139, 30,131,238,252, 17,219,114, 0, 49,192, 64,138, 7, /* 0x 260 */
|
||||
114, 0,184, 1, 0, 0, 0, 1,219,117, 7,139, 30,131,238,252, /* 0x 270 */
|
||||
17,219, 17,192, 1,219,117, 7,139, 30,131,238,252, 17,219,114, /* 0x 280 */
|
||||
0, 1,219,115, 11,117, 0,139, 30,131,238,252, 17,219,114, 0, /* 0x 290 */
|
||||
72, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,192,235, 0, /* 0x 2a0 */
|
||||
1,219,117, 7,139, 30,131,238,252, 17,219, 17,201,235, 0, 49, /* 0x 2b0 */
|
||||
201,131,232, 3,114, 17,193,224, 8,138, 6, 70,131,240,255,116, /* 0x 2c0 */
|
||||
0,209,248,137,197,235, 11, 1,219,117, 7,139, 30,131,238,252, /* 0x 2d0 */
|
||||
17,219,114,204, 65, 1,219,117, 7,139, 30,131,238,252, 17,219, /* 0x 2e0 */
|
||||
114,190, 1,219,117, 7,139, 30,131,238,252, 17,219, 17,201, 1, /* 0x 2f0 */
|
||||
219,117, 7,139, 30,131,238,252, 17,219,115, 0, 1,219,115, 0, /* 0x 300 */
|
||||
117, 9,139, 30,131,238,252, 17,219,115, 0, 65, 65,131,193, 2, /* 0x 310 */
|
||||
129,253, 0,251,255,255,131,209, 2, 86,141, 52, 47,243,164, 94, /* 0x 320 */
|
||||
233, 0, 0, 0, 0,141, 20, 47,131,253,252,138, 4, 15,118, 0, /* 0x 330 */
|
||||
138, 2, 66,136, 7, 71, 73,117,247,233, 0, 0, 0, 0,139, 2, /* 0x 340 */
|
||||
131,194, 4,137, 7,131,199, 4,131,233, 4,119,241, 1,207,233, /* 0x 350 */
|
||||
0, 0, 0, 0,255,210, 1,219,117, 2,255,210,144,232, 0, 0, /* 0x 360 */
|
||||
0, 0, 1,219,116, 0,195,139, 30,131,238,252, 17,219,195, 41, /* 0x 370 */
|
||||
201, 17,201,114, 0, 17,201,114, 0, 17,201, 17,192, 72, 17,192, /* 0x 380 */
|
||||
131,233, 1,115, 0,141, 72, 15, 61,240,255, 0, 0,114, 0,141, /* 0x 390 */
|
||||
4, 14, 80,233, 0, 0, 0, 0, 17,201, 17,201,131,193, 13,235, /* 0x 3a0 */
|
||||
0,133,201,116, 0, 65,131,193, 8,235, 0, 41,201, 90, 41,219, /* 0x 3b0 */
|
||||
141, 65, 1,115, 0,114, 0,114, 0,114, 0,131,193, 2,114, 0, /* 0x 3c0 */
|
||||
65,114, 5,233, 0, 0, 0, 0, 17,201,209,233,115, 1,164,209, /* 0x 3d0 */
|
||||
233,115, 2,102,165,243,165,141, 65, 1,235, 3,164,164,164, 17, /* 0x 3e0 */
|
||||
192,115, 0,131,232, 3,114, 11,193,224, 8,172,131,240,255,116, /* 0x 3f0 */
|
||||
0,137,197, 17,201, 17,201,117, 0, 65, 17,201,115, 0,131,193, /* 0x 400 */
|
||||
2,129,253, 0,243,255,255,131,209, 1, 86,141, 52, 47,131,253, /* 0x 410 */
|
||||
252,119, 19,209,233,115, 1,164,209,233,115, 2,102,165,243,165, /* 0x 420 */
|
||||
94,233, 0, 0, 0, 0,131,253,255,117, 5,172,243,170,235,240, /* 0x 430 */
|
||||
243,164,235,236,233, 0, 0, 0, 0,139, 84, 36, 36, 3, 84, 36, /* 0x 440 */
|
||||
40, 57,214,116, 1, 72, 43,124, 36, 44,139, 84, 36, 48,137, 58, /* 0x 450 */
|
||||
137, 68, 36, 28, 97,195,185, 84, 69, 88, 76,138, 7, 71, 44,232, /* 0x 460 */
|
||||
60, 1,119,247,128, 63, 63,117, 0,139, 7,138, 95, 4,102,193, /* 0x 470 */
|
||||
232, 8,134,196,193,192, 16,134,196, 41,248,128,235,232,137, 7, /* 0x 480 */
|
||||
131,199, 5,136,216,226, 0,185, 84, 69, 88, 76,176,232,176,233, /* 0x 490 */
|
||||
242,174,117, 0,128, 63, 63,117, 0,139, 7,102,193,232, 8,134, /* 0x 4a0 */
|
||||
196,193,192, 16,134,196, 41,248,171,235, 0,235, 0, 90, 88, 89, /* 0x 4b0 */
|
||||
151, 96, 49,219,187, 78, 77, 82, 85,106, 15, 88,138,100, 36, 32, /* 0x 4c0 */
|
||||
106, 15, 91,138,124, 36, 32,138, 84, 36, 32,233, 0, 0, 0, 0, /* 0x 4d0 */
|
||||
15,183, 47, 43,110, 12, 41,221,117, 0,131,237, 1,115, 0,136, /* 0x 4e0 */
|
||||
95,255, 73,136, 7, 71,139, 7,156,102,193,232, 8,193,192, 16, /* 0x 4f0 */
|
||||
134,196,157,115, 0,176, 0, 15,200,115, 0,209,232,115, 0,254, /* 0x 500 */
|
||||
203, 75, 35, 30,125, 2, 3, 30,137, 4,156,235, 0,141, 20, 24, /* 0x 510 */
|
||||
15,182,210, 35, 22, 59, 22,114, 2, 43, 22,139, 4,148,254,203, /* 0x 520 */
|
||||
75, 35, 30,125, 2, 3, 30,139, 44,156,133,237,117, 0, 80,139, /* 0x 530 */
|
||||
70, 4,254,200, 72, 35, 6,125, 2, 3, 6, 49,237,137, 70, 4, /* 0x 540 */
|
||||
135,108,132, 4, 88,137, 44,148,137, 4,156, 41,248,131,233, 4, /* 0x 550 */
|
||||
3, 70, 16, 1,240,137, 7,131,199, 4,235, 0,235, 0, 80,176, /* 0x 560 */
|
||||
233,176,232, 80,106, 0, 83,137,230, 94,137,218,178,233,178,232, /* 0x 570 */
|
||||
67,106, 0,254,203, 75,117, 0, 15,183, 7,131,199, 1, 60,128, /* 0x 580 */
|
||||
114, 4, 60,143,118, 0, 41,208, 43, 70, 8,131,232, 2,116, 0, /* 0x 590 */
|
||||
131,232, 1,114, 0,115, 0,122, 0,123, 0,248,235, 0,131,233, /* 0x 5a0 */
|
||||
1,127, 0,137,231,185, 4, 1, 0, 0,139, 14,131,193, 5,139, /* 0x 5b0 */
|
||||
14,131,193, 4, 49,192,243,171,137,252, 86, 97,151, 81, 80, 82, /* 0x 5c0 */
|
||||
195, 96,139,124, 36, 36,139, 76, 36, 40,139, 84, 36, 44,137,254, /* 0x 5d0 */
|
||||
235, 0,138, 7,131,199, 1, 60,128,114, 10, 60,143,119, 6,128, /* 0x 5e0 */
|
||||
127,254, 15,116, 0, 44,232, 60, 1,119, 0, 56, 23,117, 0,139, /* 0x 5f0 */
|
||||
7,102,193,232, 8,193,192, 16,134,196, 41,248, 1,240,137, 7, /* 0x 600 */
|
||||
131,199, 4,131,233, 4,138, 7,131,199, 1,226, 0,131,233, 1, /* 0x 610 */
|
||||
127, 0, 97,195, 76, 88, 80, 84, 73, 48, 48, 48, 0, 0, 0, 0, /* 0x 620 */
|
||||
0, 0, 0, 0, 0, 38, 0, 0, 0, 76, 88, 80, 84, 73, 50, 48, /* 0x 630 */
|
||||
48, 0, 0, 0, 0, 0, 76, 88, 80, 84, 73, 48, 52, 48, 0, 83, /* 0x 640 */
|
||||
0, 0, 0, 76, 88, 80, 84, 73, 48, 52, 49, 0, 83, 0, 0, 0, /* 0x 650 */
|
||||
76, 88, 80, 84, 73, 48, 52, 50, 0, 83, 0, 0, 0, 76, 88, 80, /* 0x 660 */
|
||||
84, 73, 48, 52, 51, 0, 83, 0, 0, 0, 76, 88, 80, 84, 73, 48, /* 0x 670 */
|
||||
53, 48, 0, 83, 0, 0, 0, 78, 50, 66, 83, 77, 65, 49, 48, 0, /* 0x 680 */
|
||||
95, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 78, 50, 66, 68, /* 0x 690 */
|
||||
69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, 65, 83, 49, /* 0x 6a0 */
|
||||
48, 0, 98, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 78, 50, /* 0x 6b0 */
|
||||
66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, 65, /* 0x 6c0 */
|
||||
83, 49, 49, 0,100, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, /* 0x 6d0 */
|
||||
0,106, 0, 0, 0, 78, 50, 66, 83, 77, 65, 50, 48, 0,117, 0, /* 0x 6e0 */
|
||||
0, 0, 0, 0, 0, 0,119, 0, 0, 0, 78, 50, 66, 83, 77, 65, /* 0x 6f0 */
|
||||
49, 48, 0, 2, 0, 0, 0, 78, 50, 66, 70, 65, 83, 50, 48, 0, /* 0x 700 */
|
||||
122, 0, 0, 0, 0, 0, 0, 0,126, 0, 0, 0, 78, 50, 66, 70, /* 0x 710 */
|
||||
65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, /* 0x 720 */
|
||||
48, 0,131, 0, 0, 0, 78, 50, 66, 83, 77, 65, 51, 48, 0,144, /* 0x 730 */
|
||||
0, 0, 0, 0, 0, 0, 0,157, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x 740 */
|
||||
67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 51, 48, /* 0x 750 */
|
||||
0,157, 0, 0, 0, 0, 0, 0, 0,161, 0, 0, 0, 78, 50, 66, /* 0x 760 */
|
||||
68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,172, 0, /* 0x 770 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 78, /* 0x 780 */
|
||||
50, 66, 68, 69, 67, 51, 48, 0,172, 0, 0, 0, 0, 0, 0, 0, /* 0x 790 */
|
||||
190, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, 0, 0, 0, /* 0x 7a0 */
|
||||
0, 0, 0, 0, 0,220, 0, 0, 0, 78, 50, 66, 68, 69, 67, 53, /* 0x 7b0 */
|
||||
48, 0, 0, 0, 0, 0, 78, 50, 66, 83, 77, 65, 52, 48, 0,234, /* 0x 7c0 */
|
||||
0, 0, 0, 0, 0, 0, 0,247, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x 7d0 */
|
||||
67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 70, 65, 83, 52, 48, /* 0x 7e0 */
|
||||
0,247, 0, 0, 0, 0, 0, 0, 0,251, 0, 0, 0, 78, 50, 66, /* 0x 7f0 */
|
||||
68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, 6, 1, /* 0x 800 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 78, /* 0x 810 */
|
||||
50, 66, 68, 85, 77, 77, 49, 0, 6, 1, 0, 0, 78, 50, 66, 83, /* 0x 820 */
|
||||
77, 65, 53, 48, 0, 6, 1, 0, 0, 78, 50, 66, 70, 65, 83, 53, /* 0x 830 */
|
||||
48, 0, 8, 1, 0, 0, 78, 50, 66, 68, 69, 67, 53, 48, 0, 11, /* 0x 840 */
|
||||
1, 0, 0, 78, 50, 66, 83, 77, 65, 54, 48, 0, 20, 1, 0, 0, /* 0x 850 */
|
||||
0, 0, 0, 0, 32, 1, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, /* 0x 860 */
|
||||
0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 48, 0, 32, 1, /* 0x 870 */
|
||||
0, 0, 0, 0, 0, 0, 43, 1, 0, 0, 78, 50, 66, 70, 65, 83, /* 0x 880 */
|
||||
54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 1, 0, 0, 78, /* 0x 890 */
|
||||
50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, /* 0x 8a0 */
|
||||
65, 83, 54, 49, 0, 57, 1, 0, 0, 0, 0, 0, 0, 79, 1, 0, /* 0x 8b0 */
|
||||
0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, /* 0x 8c0 */
|
||||
66, 68, 69, 67, 54, 48, 0, 79, 1, 0, 0, 78, 82, 86, 50, 66, /* 0x 8d0 */
|
||||
69, 78, 68, 0, 79, 1, 0, 0, 78, 50, 68, 83, 77, 65, 49, 48, /* 0x 8e0 */
|
||||
0, 79, 1, 0, 0, 0, 0, 0, 0, 81, 1, 0, 0, 78, 50, 68, /* 0x 8f0 */
|
||||
68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, 70, 65, 83, /* 0x 900 */
|
||||
49, 48, 0, 82, 1, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 78, /* 0x 910 */
|
||||
50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, 70, /* 0x 920 */
|
||||
65, 83, 49, 49, 0, 84, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, /* 0x 930 */
|
||||
48, 0, 90, 1, 0, 0, 78, 50, 68, 83, 77, 65, 50, 48, 0,101, /* 0x 940 */
|
||||
1, 0, 0, 0, 0, 0, 0,103, 1, 0, 0, 78, 50, 68, 83, 77, /* 0x 950 */
|
||||
65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 68, 70, 65, 83, 50, 48, /* 0x 960 */
|
||||
0,106, 1, 0, 0, 0, 0, 0, 0,110, 1, 0, 0, 78, 50, 68, /* 0x 970 */
|
||||
70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x 980 */
|
||||
50, 48, 0,115, 1, 0, 0, 78, 50, 68, 83, 77, 65, 51, 48, 0, /* 0x 990 */
|
||||
128, 1, 0, 0, 0, 0, 0, 0,141, 1, 0, 0, 78, 50, 68, 68, /* 0x 9a0 */
|
||||
69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, 70, 65, 83, 51, /* 0x 9b0 */
|
||||
48, 0,141, 1, 0, 0, 0, 0, 0, 0,147, 1, 0, 0, 78, 50, /* 0x 9c0 */
|
||||
68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 0, 0, 0, 0,156, /* 0x 9d0 */
|
||||
1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, /* 0x 9e0 */
|
||||
78, 50, 68, 68, 69, 67, 51, 48, 0,156, 1, 0, 0, 0, 0, 0, /* 0x 9f0 */
|
||||
0,172, 1, 0, 0, 78, 50, 68, 68, 69, 67, 50, 48, 0, 0, 0, /* 0x a00 */
|
||||
0, 0, 0, 0, 0, 0,190, 1, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x a10 */
|
||||
54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 1, 0, 0, 78, /* 0x a20 */
|
||||
50, 68, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, 50, 68, 83, /* 0x a30 */
|
||||
77, 65, 52, 48, 0,238, 1, 0, 0, 0, 0, 0, 0,251, 1, 0, /* 0x a40 */
|
||||
0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, 78, 50, /* 0x a50 */
|
||||
68, 70, 65, 83, 52, 48, 0,251, 1, 0, 0, 0, 0, 0, 0,255, /* 0x a60 */
|
||||
1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, /* 0x a70 */
|
||||
0, 0, 0, 0, 10, 2, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, /* 0x a80 */
|
||||
0, 69, 0, 0, 0, 78, 50, 68, 68, 85, 77, 77, 49, 0, 10, 2, /* 0x a90 */
|
||||
0, 0, 78, 50, 68, 83, 77, 65, 53, 48, 0, 10, 2, 0, 0, 78, /* 0x aa0 */
|
||||
50, 68, 70, 65, 83, 53, 48, 0, 12, 2, 0, 0, 78, 50, 68, 68, /* 0x ab0 */
|
||||
69, 67, 53, 48, 0, 15, 2, 0, 0, 78, 50, 68, 83, 77, 65, 54, /* 0x ac0 */
|
||||
48, 0, 24, 2, 0, 0, 0, 0, 0, 0, 36, 2, 0, 0, 78, 50, /* 0x ad0 */
|
||||
68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 70, 65, /* 0x ae0 */
|
||||
83, 54, 48, 0, 36, 2, 0, 0, 0, 0, 0, 0, 47, 2, 0, 0, /* 0x af0 */
|
||||
78, 50, 68, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x b00 */
|
||||
0, 61, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, 0, /* 0x b10 */
|
||||
0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 61, 2, 0, 0, 0, /* 0x b20 */
|
||||
0, 0, 0, 83, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, /* 0x b30 */
|
||||
0, 0, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, 0, 83, 2, 0, /* 0x b40 */
|
||||
0, 78, 82, 86, 50, 68, 69, 78, 68, 0, 83, 2, 0, 0, 78, 50, /* 0x b50 */
|
||||
69, 83, 77, 65, 49, 48, 0, 83, 2, 0, 0, 0, 0, 0, 0, 85, /* 0x b60 */
|
||||
2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, /* 0x b70 */
|
||||
78, 50, 69, 70, 65, 83, 49, 48, 0, 86, 2, 0, 0, 0, 0, 0, /* 0x b80 */
|
||||
0, 88, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, 0, /* 0x b90 */
|
||||
0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 88, 2, 0, 0, 78, /* 0x ba0 */
|
||||
50, 69, 68, 69, 67, 49, 48, 0, 94, 2, 0, 0, 78, 50, 69, 83, /* 0x bb0 */
|
||||
77, 65, 50, 48, 0,105, 2, 0, 0, 0, 0, 0, 0,107, 2, 0, /* 0x bc0 */
|
||||
0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, /* 0x bd0 */
|
||||
69, 70, 65, 83, 50, 48, 0,110, 2, 0, 0, 0, 0, 0, 0,114, /* 0x be0 */
|
||||
2, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, /* 0x bf0 */
|
||||
78, 50, 69, 68, 69, 67, 50, 48, 0,119, 2, 0, 0, 78, 50, 69, /* 0x c00 */
|
||||
83, 77, 65, 51, 48, 0,132, 2, 0, 0, 0, 0, 0, 0,145, 2, /* 0x c10 */
|
||||
0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 78, /* 0x c20 */
|
||||
50, 69, 70, 65, 83, 51, 48, 0,145, 2, 0, 0, 0, 0, 0, 0, /* 0x c30 */
|
||||
151, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, /* 0x c40 */
|
||||
0, 0, 0, 0, 0,160, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, /* 0x c50 */
|
||||
48, 0, 31, 0, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0,160, /* 0x c60 */
|
||||
2, 0, 0, 0, 0, 0, 0,176, 2, 0, 0, 78, 50, 69, 68, 69, /* 0x c70 */
|
||||
67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 2, 0, 0, /* 0x c80 */
|
||||
78, 50, 69, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c90 */
|
||||
0,209, 2, 0, 0, 78, 50, 69, 68, 69, 67, 54, 48, 0, 0, 0, /* 0x ca0 */
|
||||
0, 0, 78, 50, 69, 83, 77, 65, 52, 48, 0,255, 2, 0, 0, 0, /* 0x cb0 */
|
||||
0, 0, 0, 12, 3, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, /* 0x cc0 */
|
||||
82, 0, 0, 0, 78, 50, 69, 70, 65, 83, 52, 48, 0, 12, 3, 0, /* 0x cd0 */
|
||||
0, 0, 0, 0, 0, 16, 3, 0, 0, 78, 50, 69, 68, 69, 67, 51, /* 0x ce0 */
|
||||
48, 0, 82, 0, 0, 0, 0, 0, 0, 0, 27, 3, 0, 0, 78, 50, /* 0x cf0 */
|
||||
69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, 68, 85, /* 0x d00 */
|
||||
77, 77, 49, 0, 27, 3, 0, 0, 78, 50, 69, 83, 77, 65, 53, 48, /* 0x d10 */
|
||||
0, 27, 3, 0, 0, 78, 50, 69, 70, 65, 83, 53, 48, 0, 29, 3, /* 0x d20 */
|
||||
0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0, 32, 3, 0, 0, 78, /* 0x d30 */
|
||||
50, 69, 83, 77, 65, 54, 48, 0, 41, 3, 0, 0, 0, 0, 0, 0, /* 0x d40 */
|
||||
53, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, /* 0x d50 */
|
||||
0, 78, 50, 69, 70, 65, 83, 54, 48, 0, 53, 3, 0, 0, 0, 0, /* 0x d60 */
|
||||
0, 0, 64, 3, 0, 0, 78, 50, 69, 70, 65, 83, 54, 49, 0, 0, /* 0x d70 */
|
||||
0, 0, 0, 0, 0, 0, 0, 78, 3, 0, 0, 78, 50, 69, 68, 69, /* 0x d80 */
|
||||
67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, 54, 49, /* 0x d90 */
|
||||
0, 78, 3, 0, 0, 0, 0, 0, 0,100, 3, 0, 0, 78, 50, 69, /* 0x da0 */
|
||||
68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x db0 */
|
||||
54, 48, 0,100, 3, 0, 0, 78, 82, 86, 50, 69, 69, 78, 68, 0, /* 0x dc0 */
|
||||
100, 3, 0, 0, 67, 76, 49, 83, 77, 65, 49, 66, 0,100, 3, 0, /* 0x dd0 */
|
||||
0, 67, 76, 49, 70, 65, 83, 49, 66, 0,102, 3, 0, 0, 67, 76, /* 0x de0 */
|
||||
49, 71, 69, 84, 49, 66, 0,108, 3, 0, 0, 67, 76, 49, 69, 78, /* 0x df0 */
|
||||
84, 69, 82, 0,108, 3, 0, 0, 0, 0, 0, 0,114, 3, 0, 0, /* 0x e00 */
|
||||
67, 76, 49, 83, 84, 65, 82, 84, 0, 0, 0, 0, 0, 67, 76, 49, /* 0x e10 */
|
||||
83, 77, 65, 49, 48, 0,114, 3, 0, 0, 0, 0, 0, 0,118, 3, /* 0x e20 */
|
||||
0, 0, 67, 76, 49, 82, 76, 79, 65, 68, 0, 0, 0, 0, 0, 67, /* 0x e30 */
|
||||
76, 49, 82, 76, 79, 65, 68, 0,119, 3, 0, 0, 67, 76, 49, 87, /* 0x e40 */
|
||||
73, 68, 48, 49, 0,127, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, /* 0x e50 */
|
||||
50, 0,129, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 51, 0,131, /* 0x e60 */
|
||||
3, 0, 0, 0, 0, 0, 0,133, 3, 0, 0, 67, 76, 49, 87, 73, /* 0x e70 */
|
||||
68, 49, 48, 0, 12, 0, 0, 0, 67, 76, 49, 87, 73, 68, 48, 52, /* 0x e80 */
|
||||
0,133, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 53, 0,135, 3, /* 0x e90 */
|
||||
0, 0, 0, 0, 0, 0,137, 3, 0, 0, 67, 76, 49, 87, 73, 68, /* 0x ea0 */
|
||||
49, 48, 0, 7, 0, 0, 0, 67, 76, 49, 87, 73, 68, 48, 54, 0, /* 0x eb0 */
|
||||
137, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 55, 0,139, 3, 0, /* 0x ec0 */
|
||||
0, 67, 76, 49, 87, 73, 68, 48, 56, 0,142, 3, 0, 0, 0, 0, /* 0x ed0 */
|
||||
0, 0,149, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 54, 0, 2, /* 0x ee0 */
|
||||
0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 67, 76, 49, 87, 73, /* 0x ef0 */
|
||||
68, 49, 48, 0, 15, 0, 0, 0, 0, 0, 0, 0,168, 3, 0, 0, /* 0x f00 */
|
||||
67, 76, 49, 67, 79, 80, 89, 48, 0, 18, 0, 0, 0, 67, 76, 49, /* 0x f10 */
|
||||
87, 73, 68, 48, 57, 0,168, 3, 0, 0, 67, 76, 49, 87, 73, 68, /* 0x f20 */
|
||||
49, 48, 0,170, 3, 0, 0, 0, 0, 0, 0,177, 3, 0, 0, 67, /* 0x f30 */
|
||||
76, 49, 84, 79, 80, 48, 55, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x f40 */
|
||||
181, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 56, 0, 26, 0, 0, /* 0x f50 */
|
||||
0, 0, 0, 0, 0,187, 3, 0, 0, 67, 76, 49, 84, 79, 80, 48, /* 0x f60 */
|
||||
55, 0, 2, 0, 0, 0, 67, 76, 49, 83, 84, 65, 82, 84, 0,187, /* 0x f70 */
|
||||
3, 0, 0, 67, 76, 49, 84, 79, 80, 48, 48, 0,192, 3, 0, 0, /* 0x f80 */
|
||||
67, 76, 49, 84, 79, 80, 48, 49, 0,195, 3, 0, 0, 0, 0, 0, /* 0x f90 */
|
||||
0,197, 3, 0, 0, 67, 76, 49, 84, 79, 80, 48, 55, 0, 23, 0, /* 0x fa0 */
|
||||
0, 0, 67, 76, 49, 84, 79, 80, 48, 50, 0,197, 3, 0, 0, 0, /* 0x fb0 */
|
||||
0, 0, 0,199, 3, 0, 0, 67, 76, 49, 84, 79, 80, 48, 55, 0, /* 0x fc0 */
|
||||
22, 0, 0, 0, 67, 76, 49, 84, 79, 80, 48, 51, 0,199, 3, 0, /* 0x fd0 */
|
||||
0, 0, 0, 0, 0,201, 3, 0, 0, 67, 76, 49, 84, 79, 80, 48, /* 0x fe0 */
|
||||
55, 0, 21, 0, 0, 0, 67, 76, 49, 84, 79, 80, 48, 52, 0,201, /* 0x ff0 */
|
||||
3, 0, 0, 0, 0, 0, 0,203, 3, 0, 0, 67, 76, 49, 84, 79, /* 0x1000 */
|
||||
80, 48, 55, 0, 20, 0, 0, 0, 67, 76, 49, 84, 79, 80, 48, 53, /* 0x1010 */
|
||||
0,206, 3, 0, 0, 0, 0, 0, 0,208, 3, 0, 0, 67, 76, 49, /* 0x1020 */
|
||||
84, 79, 80, 48, 54, 0, 7, 0, 0, 0, 67, 76, 49, 84, 79, 80, /* 0x1030 */
|
||||
48, 54, 0,209, 3, 0, 0, 0, 0, 0, 0,216, 3, 0, 0, 67, /* 0x1040 */
|
||||
76, 49, 87, 73, 68, 48, 49, 0, 0, 0, 0, 0, 67, 76, 49, 84, /* 0x1050 */
|
||||
79, 80, 48, 55, 0,216, 3, 0, 0, 67, 76, 49, 79, 70, 70, 48, /* 0x1060 */
|
||||
49, 0,239, 3, 0, 0, 67, 76, 49, 79, 70, 70, 48, 50, 0,241, /* 0x1070 */
|
||||
3, 0, 0, 0, 0, 0, 0,243, 3, 0, 0, 67, 76, 49, 84, 79, /* 0x1080 */
|
||||
80, 48, 55, 0, 23, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, /* 0x1090 */
|
||||
67, 76, 49, 67, 79, 80, 89, 48, 0, 51, 0, 0, 0, 67, 76, 49, /* 0x10a0 */
|
||||
79, 70, 70, 48, 51, 0, 3, 4, 0, 0, 67, 76, 49, 79, 70, 70, /* 0x10b0 */
|
||||
48, 52, 0, 5, 4, 0, 0, 0, 0, 0, 0, 9, 4, 0, 0, 67, /* 0x10c0 */
|
||||
76, 49, 67, 79, 80, 89, 48, 0, 0, 0, 0, 0, 67, 76, 49, 76, /* 0x10d0 */
|
||||
69, 78, 48, 48, 0, 9, 4, 0, 0, 67, 76, 49, 76, 69, 78, 48, /* 0x10e0 */
|
||||
49, 0, 10, 4, 0, 0, 67, 76, 49, 76, 69, 78, 48, 50, 0, 12, /* 0x10f0 */
|
||||
4, 0, 0, 0, 0, 0, 0, 14, 4, 0, 0, 67, 76, 49, 76, 69, /* 0x1100 */
|
||||
78, 48, 48, 0, 1, 0, 0, 0, 67, 76, 49, 67, 79, 80, 89, 48, /* 0x1110 */
|
||||
0, 17, 4, 0, 0, 0, 0, 0, 0, 54, 4, 0, 0, 67, 76, 49, /* 0x1120 */
|
||||
84, 79, 80, 48, 48, 0, 0, 0, 0, 0, 67, 76, 49, 69, 78, 68, /* 0x1130 */
|
||||
0, 68, 4, 0, 0, 76, 88, 80, 84, 73, 48, 57, 48, 0, 68, 4, /* 0x1140 */
|
||||
0, 0, 0, 0, 0, 0, 73, 4, 0, 0, 76, 88, 80, 84, 73, 48, /* 0x1150 */
|
||||
57, 49, 0, 0, 0, 0, 0, 76, 88, 80, 84, 73, 48, 57, 49, 0, /* 0x1160 */
|
||||
73, 4, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0,102, 4, 0, /* 0x1170 */
|
||||
0, 67, 84, 67, 76, 69, 86, 69, 49, 0,116, 4, 0, 0, 0, 0, /* 0x1180 */
|
||||
0, 0,121, 4, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0, 5, /* 0x1190 */
|
||||
0, 0, 0, 67, 65, 76, 76, 84, 82, 48, 49, 0,121, 4, 0, 0, /* 0x11a0 */
|
||||
67, 84, 68, 85, 77, 77, 89, 49, 0,126, 4, 0, 0, 67, 84, 66, /* 0x11b0 */
|
||||
83, 72, 82, 48, 49, 0,126, 4, 0, 0, 67, 84, 66, 82, 79, 82, /* 0x11c0 */
|
||||
48, 49, 0,130, 4, 0, 0, 67, 84, 66, 83, 87, 65, 48, 49, 0, /* 0x11d0 */
|
||||
132, 4, 0, 0, 67, 65, 76, 76, 84, 82, 48, 50, 0,137, 4, 0, /* 0x11e0 */
|
||||
0, 0, 0, 0, 0,151, 4, 0, 0, 67, 65, 76, 76, 84, 82, 48, /* 0x11f0 */
|
||||
48, 0, 10, 0, 0, 0, 67, 65, 76, 76, 84, 82, 49, 48, 0,151, /* 0x1200 */
|
||||
4, 0, 0, 67, 65, 76, 76, 84, 82, 69, 56, 0,156, 4, 0, 0, /* 0x1210 */
|
||||
67, 65, 76, 76, 84, 82, 69, 57, 0,158, 4, 0, 0, 67, 65, 76, /* 0x1220 */
|
||||
76, 84, 82, 49, 49, 0,160, 4, 0, 0, 0, 0, 0, 0,164, 4, /* 0x1230 */
|
||||
0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0, 5, 0, 0, 0, 67, /* 0x1240 */
|
||||
84, 67, 76, 69, 86, 69, 50, 0,164, 4, 0, 0, 0, 0, 0, 0, /* 0x1250 */
|
||||
169, 4, 0, 0, 67, 65, 76, 76, 84, 82, 49, 49, 0, 0, 0, 0, /* 0x1260 */
|
||||
0, 67, 65, 76, 76, 84, 82, 49, 50, 0,169, 4, 0, 0, 67, 84, /* 0x1270 */
|
||||
68, 85, 77, 77, 89, 50, 0,171, 4, 0, 0, 67, 84, 66, 83, 72, /* 0x1280 */
|
||||
82, 49, 49, 0,171, 4, 0, 0, 67, 84, 66, 82, 79, 82, 49, 49, /* 0x1290 */
|
||||
0,175, 4, 0, 0, 67, 84, 66, 83, 87, 65, 49, 49, 0,177, 4, /* 0x12a0 */
|
||||
0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0,182, 4, 0, 0, 0, /* 0x12b0 */
|
||||
0, 0, 0,187, 4, 0, 0, 67, 65, 76, 76, 84, 82, 49, 48, 0, /* 0x12c0 */
|
||||
5, 0, 0, 0, 67, 84, 84, 72, 69, 69, 78, 68, 0,187, 4, 0, /* 0x12d0 */
|
||||
0, 76, 88, 85, 78, 70, 48, 48, 48, 0,187, 4, 0, 0, 0, 0, /* 0x12e0 */
|
||||
0, 0,189, 4, 0, 0, 76, 88, 85, 78, 70, 48, 49, 48, 0, 5, /* 0x12f0 */
|
||||
0, 0, 0, 76, 88, 85, 78, 70, 48, 48, 50, 0,189, 4, 0, 0, /* 0x1300 */
|
||||
77, 82, 85, 66, 89, 84, 69, 48, 0,194, 4, 0, 0, 76, 88, 77, /* 0x1310 */
|
||||
82, 85, 48, 48, 53, 0,196, 4, 0, 0, 76, 88, 77, 82, 85, 48, /* 0x1320 */
|
||||
48, 54, 0,201, 4, 0, 0, 76, 88, 77, 82, 85, 48, 48, 55, 0, /* 0x1330 */
|
||||
208, 4, 0, 0, 76, 88, 85, 78, 70, 48, 48, 56, 0,215, 4, 0, /* 0x1340 */
|
||||
0, 76, 88, 85, 78, 70, 48, 49, 48, 0,219, 4, 0, 0, 0, 0, /* 0x1350 */
|
||||
0, 0,224, 4, 0, 0, 76, 88, 85, 78, 70, 48, 52, 50, 0, 0, /* 0x1360 */
|
||||
0, 0, 0, 76, 88, 74, 67, 67, 48, 49, 48, 0,224, 4, 0, 0, /* 0x1370 */
|
||||
76, 88, 77, 82, 85, 48, 52, 53, 0,227, 4, 0, 0, 76, 88, 77, /* 0x1380 */
|
||||
82, 85, 48, 52, 54, 0,230, 4, 0, 0, 76, 88, 74, 67, 67, 48, /* 0x1390 */
|
||||
50, 48, 0,232, 4, 0, 0, 0, 0, 0, 0,234, 4, 0, 0, 76, /* 0x13a0 */
|
||||
88, 85, 78, 70, 48, 51, 52, 0, 0, 0, 0, 0, 76, 88, 74, 67, /* 0x13b0 */
|
||||
67, 48, 50, 49, 0,234, 4, 0, 0, 0, 0, 0, 0,239, 4, 0, /* 0x13c0 */
|
||||
0, 76, 88, 85, 78, 70, 48, 51, 52, 0, 0, 0, 0, 0, 76, 88, /* 0x13d0 */
|
||||
74, 67, 67, 48, 50, 51, 0,239, 4, 0, 0, 76, 88, 85, 78, 70, /* 0x13e0 */
|
||||
48, 51, 55, 0,246, 4, 0, 0, 76, 88, 85, 78, 70, 51, 56, 54, /* 0x13f0 */
|
||||
0,248, 4, 0, 0, 76, 88, 85, 78, 70, 51, 56, 55, 0,249, 4, /* 0x1400 */
|
||||
0, 0, 76, 88, 85, 78, 70, 51, 56, 56, 0, 2, 5, 0, 0, 0, /* 0x1410 */
|
||||
0, 0, 0, 5, 5, 0, 0, 76, 88, 85, 78, 70, 48, 52, 48, 0, /* 0x1420 */
|
||||
0, 0, 0, 0, 76, 88, 85, 78, 70, 52, 56, 54, 0, 5, 5, 0, /* 0x1430 */
|
||||
0, 76, 88, 85, 78, 70, 52, 56, 55, 0, 9, 5, 0, 0, 0, 0, /* 0x1440 */
|
||||
0, 0, 11, 5, 0, 0, 76, 88, 85, 78, 70, 48, 52, 48, 0, 0, /* 0x1450 */
|
||||
0, 0, 0, 76, 88, 77, 82, 85, 48, 54, 53, 0, 11, 5, 0, 0, /* 0x1460 */
|
||||
0, 0, 0, 0, 15, 5, 0, 0, 76, 88, 77, 82, 85, 48, 55, 48, /* 0x1470 */
|
||||
0, 5, 0, 0, 0, 77, 82, 85, 66, 89, 84, 69, 51, 0, 15, 5, /* 0x1480 */
|
||||
0, 0, 77, 82, 85, 65, 82, 66, 51, 48, 0, 17, 5, 0, 0, 77, /* 0x1490 */
|
||||
82, 85, 66, 73, 84, 83, 51, 0, 18, 5, 0, 0, 77, 82, 85, 65, /* 0x14a0 */
|
||||
82, 66, 52, 48, 0, 20, 5, 0, 0, 76, 88, 77, 82, 85, 48, 55, /* 0x14b0 */
|
||||
48, 0, 24, 5, 0, 0, 0, 0, 0, 0, 29, 5, 0, 0, 76, 88, /* 0x14c0 */
|
||||
85, 78, 70, 48, 52, 48, 0, 0, 0, 0, 0, 77, 82, 85, 66, 89, /* 0x14d0 */
|
||||
84, 69, 52, 0, 32, 5, 0, 0, 77, 82, 85, 66, 73, 84, 83, 52, /* 0x14e0 */
|
||||
0, 35, 5, 0, 0, 77, 82, 85, 65, 82, 66, 53, 48, 0, 37, 5, /* 0x14f0 */
|
||||
0, 0, 76, 88, 77, 82, 85, 48, 56, 48, 0, 43, 5, 0, 0, 77, /* 0x1500 */
|
||||
82, 85, 66, 89, 84, 69, 53, 0, 46, 5, 0, 0, 77, 82, 85, 65, /* 0x1510 */
|
||||
82, 66, 54, 48, 0, 48, 5, 0, 0, 77, 82, 85, 66, 73, 84, 83, /* 0x1520 */
|
||||
53, 0, 49, 5, 0, 0, 77, 82, 85, 65, 82, 66, 55, 48, 0, 51, /* 0x1530 */
|
||||
5, 0, 0, 76, 88, 77, 82, 85, 48, 57, 48, 0, 55, 5, 0, 0, /* 0x1540 */
|
||||
0, 0, 0, 0, 62, 5, 0, 0, 76, 88, 77, 82, 85, 49, 48, 48, /* 0x1550 */
|
||||
0, 10, 0, 0, 0, 77, 82, 85, 66, 89, 84, 69, 54, 0, 66, 5, /* 0x1560 */
|
||||
0, 0, 77, 82, 85, 65, 82, 66, 56, 48, 0, 68, 5, 0, 0, 77, /* 0x1570 */
|
||||
82, 85, 66, 73, 84, 83, 54, 0, 69, 5, 0, 0, 77, 82, 85, 65, /* 0x1580 */
|
||||
82, 66, 57, 48, 0, 71, 5, 0, 0, 76, 88, 77, 82, 85, 49, 48, /* 0x1590 */
|
||||
48, 0, 75, 5, 0, 0, 76, 88, 85, 78, 70, 48, 52, 48, 0, 91, /* 0x15a0 */
|
||||
5, 0, 0, 76, 88, 77, 82, 85, 49, 49, 48, 0, 96, 5, 0, 0, /* 0x15b0 */
|
||||
76, 88, 77, 82, 85, 49, 49, 49, 0, 99, 5, 0, 0, 76, 88, 85, /* 0x15c0 */
|
||||
78, 70, 48, 52, 49, 0,101, 5, 0, 0, 0, 0, 0, 0,108, 5, /* 0x15d0 */
|
||||
0, 0, 76, 88, 85, 78, 70, 48, 51, 52, 0, 0, 0, 0, 0, 76, /* 0x15e0 */
|
||||
88, 85, 78, 70, 48, 52, 50, 0,108, 5, 0, 0, 76, 69, 88, 69, /* 0x15f0 */
|
||||
67, 48, 49, 54, 0,108, 5, 0, 0, 0, 0, 0, 0,110, 5, 0, /* 0x1600 */
|
||||
0, 76, 88, 85, 78, 70, 48, 52, 50, 0, 0, 0, 0, 0, 76, 88, /* 0x1610 */
|
||||
77, 82, 85, 48, 49, 48, 0,110, 5, 0, 0, 76, 88, 74, 77, 80, /* 0x1620 */
|
||||
65, 48, 48, 0,111, 5, 0, 0, 76, 88, 67, 65, 76, 76, 66, 48, /* 0x1630 */
|
||||
0,113, 5, 0, 0, 76, 88, 85, 78, 70, 48, 50, 49, 0,115, 5, /* 0x1640 */
|
||||
0, 0, 76, 88, 77, 82, 85, 48, 50, 50, 0,121, 5, 0, 0, 76, /* 0x1650 */
|
||||
88, 74, 77, 80, 65, 48, 49, 0,124, 5, 0, 0, 76, 88, 67, 65, /* 0x1660 */
|
||||
76, 76, 66, 49, 0,126, 5, 0, 0, 77, 82, 85, 66, 73, 84, 83, /* 0x1670 */
|
||||
49, 0,128, 5, 0, 0, 76, 88, 77, 82, 85, 48, 51, 48, 0,129, /* 0x1680 */
|
||||
5, 0, 0, 77, 82, 85, 66, 89, 84, 69, 49, 0,131, 5, 0, 0, /* 0x1690 */
|
||||
77, 82, 85, 65, 82, 66, 49, 48, 0,133, 5, 0, 0, 76, 88, 77, /* 0x16a0 */
|
||||
82, 85, 48, 52, 48, 0,134, 5, 0, 0, 0, 0, 0, 0,136, 5, /* 0x16b0 */
|
||||
0, 0, 76, 88, 77, 82, 85, 48, 51, 48, 0, 0, 0, 0, 0, 76, /* 0x16c0 */
|
||||
88, 85, 78, 70, 48, 51, 48, 0,136, 5, 0, 0, 76, 88, 74, 67, /* 0x16d0 */
|
||||
67, 48, 48, 48, 0,142, 5, 0, 0, 0, 0, 0, 0,150, 5, 0, /* 0x16e0 */
|
||||
0, 76, 88, 74, 67, 67, 48, 49, 48, 0, 0, 0, 0, 0, 76, 88, /* 0x16f0 */
|
||||
67, 74, 48, 77, 82, 85, 0,150, 5, 0, 0, 76, 88, 67, 74, 49, /* 0x1700 */
|
||||
77, 82, 85, 0,152, 5, 0, 0, 76, 88, 67, 65, 76, 74, 77, 80, /* 0x1710 */
|
||||
0,155, 5, 0, 0, 76, 88, 67, 65, 76, 76, 48, 48, 0,158, 5, /* 0x1720 */
|
||||
0, 0, 0, 0, 0, 0,160, 5, 0, 0, 76, 88, 85, 78, 70, 48, /* 0x1730 */
|
||||
51, 55, 0, 0, 0, 0, 0, 76, 88, 67, 65, 76, 76, 48, 49, 0, /* 0x1740 */
|
||||
160, 5, 0, 0, 76, 88, 67, 74, 50, 77, 82, 85, 0,163, 5, 0, /* 0x1750 */
|
||||
0, 0, 0, 0, 0,165, 5, 0, 0, 76, 88, 85, 78, 70, 48, 51, /* 0x1760 */
|
||||
55, 0, 0, 0, 0, 0, 76, 88, 67, 74, 52, 77, 82, 85, 0,165, /* 0x1770 */
|
||||
5, 0, 0, 0, 0, 0, 0,167, 5, 0, 0, 76, 88, 85, 78, 70, /* 0x1780 */
|
||||
48, 51, 52, 0, 0, 0, 0, 0, 76, 88, 67, 74, 54, 77, 82, 85, /* 0x1790 */
|
||||
0,167, 5, 0, 0, 0, 0, 0, 0,169, 5, 0, 0, 76, 88, 67, /* 0x17a0 */
|
||||
74, 56, 77, 82, 85, 0, 1, 0, 0, 0, 76, 88, 67, 74, 55, 77, /* 0x17b0 */
|
||||
82, 85, 0,169, 5, 0, 0, 0, 0, 0, 0,171, 5, 0, 0, 76, /* 0x17c0 */
|
||||
88, 67, 74, 56, 77, 82, 85, 0, 1, 0, 0, 0, 76, 88, 67, 74, /* 0x17d0 */
|
||||
56, 77, 82, 85, 0,171, 5, 0, 0, 0, 0, 0, 0,174, 5, 0, /* 0x17e0 */
|
||||
0, 76, 88, 85, 78, 70, 48, 51, 55, 0, 0, 0, 0, 0, 76, 88, /* 0x17f0 */
|
||||
85, 78, 70, 48, 51, 52, 0,174, 5, 0, 0, 0, 0, 0, 0,179, /* 0x1800 */
|
||||
5, 0, 0, 76, 88, 85, 78, 70, 48, 51, 48, 0, 0, 0, 0, 0, /* 0x1810 */
|
||||
76, 88, 77, 82, 85, 48, 53, 53, 0,179, 5, 0, 0, 77, 82, 85, /* 0x1820 */
|
||||
66, 89, 84, 69, 50, 0,181, 5, 0, 0, 77, 82, 85, 66, 73, 84, /* 0x1830 */
|
||||
83, 50, 0,186, 5, 0, 0, 77, 82, 85, 65, 82, 66, 50, 48, 0, /* 0x1840 */
|
||||
191, 5, 0, 0, 76, 88, 77, 82, 85, 48, 53, 55, 0,196, 5, 0, /* 0x1850 */
|
||||
0, 76, 88, 77, 82, 85, 48, 53, 56, 0,202, 5, 0, 0, 76, 88, /* 0x1860 */
|
||||
85, 78, 70, 48, 51, 53, 0,203, 5, 0, 0, 76, 88, 80, 84, 73, /* 0x1870 */
|
||||
49, 52, 48, 0,209, 5, 0, 0, 76, 88, 80, 84, 73, 49, 52, 49, /* 0x1880 */
|
||||
0,209, 5, 0, 0, 76, 88, 80, 84, 73, 49, 53, 48, 0,209, 5, /* 0x1890 */
|
||||
0, 0, 67, 75, 76, 76, 84, 82, 48, 48, 0,222, 5, 0, 0, 0, /* 0x18a0 */
|
||||
0, 0, 0,226, 5, 0, 0, 67, 75, 76, 76, 84, 82, 50, 48, 0, /* 0x18b0 */
|
||||
30, 0, 0, 0, 67, 75, 76, 76, 84, 82, 49, 48, 0,231, 5, 0, /* 0x18c0 */
|
||||
0, 0, 0, 0, 0,245, 5, 0, 0, 67, 75, 76, 76, 84, 82, 50, /* 0x18d0 */
|
||||
48, 0, 6, 0, 0, 0, 67, 75, 76, 76, 84, 82, 50, 48, 0,245, /* 0x18e0 */
|
||||
5, 0, 0, 0, 0, 0, 0,251, 5, 0, 0, 67, 75, 76, 76, 84, /* 0x18f0 */
|
||||
82, 52, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 5, 0, 0, /* 0x1900 */
|
||||
67, 75, 76, 76, 84, 82, 52, 48, 0, 0, 0, 0, 0, 67, 75, 76, /* 0x1910 */
|
||||
76, 84, 82, 51, 48, 0, 22, 6, 0, 0, 0, 0, 0, 0, 29, 6, /* 0x1920 */
|
||||
0, 0, 67, 75, 76, 76, 84, 82, 49, 48, 0, 14, 0, 0, 0, 67, /* 0x1930 */
|
||||
75, 76, 76, 84, 82, 52, 48, 0, 29, 6, 0, 0, 0, 0, 0, 0, /* 0x1940 */
|
||||
34, 6, 0, 0, 67, 75, 76, 76, 84, 82, 48, 48, 0, 4, 0, 0, /* 0x1950 */
|
||||
0, 76, 88, 80, 84, 73, 49, 54, 48, 0, 34, 6, 0, 0, 76, 88, /* 0x1960 */
|
||||
80, 84, 73, 50, 48, 48, 0, 36, 6, 0, 0, 88, 84, 72, 69, 69, /* 0x1970 */
|
||||
78, 68, 88, 0, 36, 6, 0, 0,255,255,255,255, 36, 6 /* 0x1980 */
|
||||
};
|
||||
|
||||
+3
-11
@@ -111,15 +111,6 @@ do_brk(void *addr)
|
||||
return brk(addr);
|
||||
}
|
||||
|
||||
static char *
|
||||
__attribute_cdecl
|
||||
do_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)
|
||||
{
|
||||
(void)len; (void)prot; (void)flags; (void)fd; (void)offset;
|
||||
return mmap((int *)&addr);
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// UPX & NRV stuff
|
||||
**************************************************************************/
|
||||
@@ -264,7 +255,7 @@ do_xmap(int fdi, Elf32_Ehdr const *const ehdr, f_expand *const f_decompress,
|
||||
do_brk(haddr+OVERHEAD); // Also takes care of whole pages of .bss
|
||||
}
|
||||
// Decompressor can overrun the destination by 3 bytes.
|
||||
if (addr != do_mmap(addr, mlen + (f_decompress ? 3 : 0), PROT_READ | PROT_WRITE,
|
||||
if (addr != mmap(addr, mlen + (f_decompress ? 3 : 0), PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_PRIVATE | (f_decompress ? MAP_ANONYMOUS : 0),
|
||||
fdi, phdr->p_offset - frag) ) {
|
||||
err_exit(8);
|
||||
@@ -286,7 +277,7 @@ do_xmap(int fdi, Elf32_Ehdr const *const ehdr, f_expand *const f_decompress,
|
||||
addr += frag + mlen;
|
||||
mlen = haddr - addr;
|
||||
if (0 < (int)mlen) { // need more pages, too
|
||||
if (addr != do_mmap(addr, mlen, PROT_READ | PROT_WRITE,
|
||||
if (addr != mmap(addr, mlen, PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 ) ) {
|
||||
err_exit(9);
|
||||
ERR_LAB
|
||||
@@ -418,6 +409,7 @@ ERR_LAB
|
||||
return (void *)entry;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
vi:ts=4:et:nowrap
|
||||
*/
|
||||
|
||||
+5
-11
@@ -93,14 +93,8 @@ do_brk(void *addr)
|
||||
return brk(addr);
|
||||
}
|
||||
|
||||
static char *
|
||||
__attribute_cdecl
|
||||
do_mmap(void *addr, size_t len, int prot, int flags, int fd, off_t offset)
|
||||
{
|
||||
(void)len; (void)prot; (void)flags; (void)fd; (void)offset;
|
||||
return mmap((void *)&addr);
|
||||
}
|
||||
|
||||
extern char *mmap(void *addr, size_t len,
|
||||
int prot, int flags, int fd, off_t offset);
|
||||
|
||||
/*************************************************************************
|
||||
// UPX & NRV stuff
|
||||
@@ -215,7 +209,7 @@ xfind_pages(unsigned mflags, Elf32_Phdr const *phdr, int phnum)
|
||||
lo -= ~PAGE_MASK & lo; // round down to page boundary
|
||||
hi = PAGE_MASK & (hi - lo - PAGE_MASK -1); // page length
|
||||
szlo = PAGE_MASK & (szlo - PAGE_MASK -1); // page length
|
||||
addr = do_mmap((void *)lo, hi, PROT_READ|PROT_WRITE|PROT_EXEC, mflags, 0, 0);
|
||||
addr = mmap((void *)lo, hi, PROT_READ|PROT_WRITE|PROT_EXEC, mflags, 0, 0);
|
||||
|
||||
// Doing this may destroy the brk() that we set so carefully above.
|
||||
// The munmap() is "needed" only for discontiguous PT_LOAD,
|
||||
@@ -257,7 +251,7 @@ do_xmap(int const fdi, Elf32_Ehdr const *const ehdr, Elf32_auxv_t *const av)
|
||||
haddr += reloc;
|
||||
|
||||
// Decompressor can overrun the destination by 3 bytes.
|
||||
if (addr != do_mmap(addr, mlen, PROT_READ | PROT_WRITE,
|
||||
if (addr != mmap(addr, mlen, PROT_READ | PROT_WRITE,
|
||||
MAP_FIXED | MAP_PRIVATE,
|
||||
fdi, phdr->p_offset - frag) ) {
|
||||
err_exit(8);
|
||||
@@ -271,7 +265,7 @@ ERR_LAB
|
||||
}
|
||||
addr += mlen + frag; /* page boundary on hi end */
|
||||
if (addr < haddr) { // need pages for .bss
|
||||
if (addr != do_mmap(addr, haddr - addr, prot,
|
||||
if (addr != mmap(addr, haddr - addr, prot,
|
||||
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, 0, 0 ) ) {
|
||||
err_exit(9);
|
||||
}
|
||||
|
||||
@@ -85,6 +85,7 @@ decompress:
|
||||
%include "n2b_d32.ash"
|
||||
%include "n2d_d32.ash"
|
||||
%include "n2e_d32.ash"
|
||||
%include "cl1_d32.ash"
|
||||
%include "macros.ash"
|
||||
cjt32 0
|
||||
|
||||
@@ -106,6 +107,7 @@ decompress:
|
||||
mov [edx], edi
|
||||
|
||||
mov [7*4 + esp], eax
|
||||
;__LEXEC017__
|
||||
popa
|
||||
ret
|
||||
|
||||
|
||||
+232
-163
@@ -1,4 +1,4 @@
|
||||
/* l_lx_sh86.h -- created from l_lx_sh86.bin, 3298 (0xce2) bytes
|
||||
/* l_lx_sh86.h -- created from l_lx_sh86.bin, 4416 (0x1140) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,11 +27,11 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_I386SH_LOADER_SIZE 3298
|
||||
#define LINUX_I386SH_LOADER_ADLER32 0x7510019f
|
||||
#define LINUX_I386SH_LOADER_CRC32 0x09311322
|
||||
#define LINUX_I386SH_LOADER_SIZE 4416
|
||||
#define LINUX_I386SH_LOADER_ADLER32 0x93e2f039
|
||||
#define LINUX_I386SH_LOADER_CRC32 0x1614a613
|
||||
|
||||
unsigned char linux_i386sh_loader[3298] = {
|
||||
unsigned char linux_i386sh_loader[4416] = {
|
||||
232, 0, 0, 0, 0, 96,139,116, 36, 36,139,124, 36, 44,131,205, /* 0x 0 */
|
||||
255,235, 0,164,235, 0,138, 6, 70,136, 7, 71, 1,219,117, 7, /* 0x 10 */
|
||||
139, 30,131,238,252, 17,219,114, 0, 49,192, 64,138, 7,114, 0, /* 0x 20 */
|
||||
@@ -81,162 +81,231 @@ unsigned char linux_i386sh_loader[3298] = {
|
||||
164, 94,233, 0, 0, 0, 0,141, 20, 47,131,253,252,138, 4, 15, /* 0x 2e0 */
|
||||
118, 0,138, 2, 66,136, 7, 71, 73,117,247,233, 0, 0, 0, 0, /* 0x 2f0 */
|
||||
139, 2,131,194, 4,137, 7,131,199, 4,131,233, 4,119,241, 1, /* 0x 300 */
|
||||
207,233, 0, 0, 0, 0,185, 84, 69, 88, 76,138, 7, 71, 44,232, /* 0x 310 */
|
||||
60, 1,119,247,128, 63, 63,117, 0,139, 7,138, 95, 4,102,193, /* 0x 320 */
|
||||
232, 8,134,196,193,192, 16,134,196, 41,248,128,235,232,137, 7, /* 0x 330 */
|
||||
131,199, 5,136,216,226, 0,185, 84, 69, 88, 76,176,232,176,233, /* 0x 340 */
|
||||
242,174,117, 0,128, 63, 63,117, 0,139, 7,102,193,232, 8,134, /* 0x 350 */
|
||||
196,193,192, 16,134,196, 41,248,171,235, 0,139, 84, 36, 36, 3, /* 0x 360 */
|
||||
84, 36, 40, 57,214,116, 1, 72, 43,124, 36, 44,139, 84, 36, 48, /* 0x 370 */
|
||||
137, 58,137, 68, 36, 28, 97,195, 94,252,173, 80, 84,186, 0, 0, /* 0x 380 */
|
||||
64, 1,139, 66, 72, 1,208,131,194,116, 80,139, 74, 16,129,193, /* 0x 390 */
|
||||
6, 16, 0, 0, 80, 80,106, 50,106, 7, 81, 80,137,227,106, 90, /* 0x 3a0 */
|
||||
88,205,128,141,152, 3, 16, 0, 0,131,196, 24,173, 80,173, 86, /* 0x 3b0 */
|
||||
255,213, 88, 88,195, 93,232,189,255,255,255, 0, 76, 69, 88, 69, /* 0x 3c0 */
|
||||
67, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, /* 0x 3d0 */
|
||||
0, 76, 69, 88, 69, 67, 48, 50, 48, 0, 61, 0, 0, 0, 76, 69, /* 0x 3e0 */
|
||||
88, 69, 67, 48, 49, 48, 0, 5, 0, 0, 0, 78, 50, 66, 83, 77, /* 0x 3f0 */
|
||||
65, 49, 48, 0, 17, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, /* 0x 400 */
|
||||
78, 50, 66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, /* 0x 410 */
|
||||
70, 65, 83, 49, 48, 0, 20, 0, 0, 0, 0, 0, 0, 0, 22, 0, /* 0x 420 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, /* 0x 430 */
|
||||
50, 66, 70, 65, 83, 49, 49, 0, 22, 0, 0, 0, 78, 50, 66, 68, /* 0x 440 */
|
||||
69, 67, 49, 48, 0, 28, 0, 0, 0, 78, 50, 66, 83, 77, 65, 50, /* 0x 450 */
|
||||
48, 0, 39, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 78, 50, /* 0x 460 */
|
||||
66, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 66, 70, 65, /* 0x 470 */
|
||||
83, 50, 48, 0, 44, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, /* 0x 480 */
|
||||
78, 50, 66, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 66, /* 0x 490 */
|
||||
68, 69, 67, 50, 48, 0, 53, 0, 0, 0, 78, 50, 66, 83, 77, 65, /* 0x 4a0 */
|
||||
51, 48, 0, 66, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 78, /* 0x 4b0 */
|
||||
50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, /* 0x 4c0 */
|
||||
65, 83, 51, 48, 0, 79, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, /* 0x 4d0 */
|
||||
0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x 4e0 */
|
||||
0, 0, 94, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, /* 0x 4f0 */
|
||||
0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 94, 0, 0, 0, /* 0x 500 */
|
||||
0, 0, 0, 0,112, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, /* 0x 510 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 78, 50, 66, /* 0x 520 */
|
||||
68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, 50, 66, 83, 77, 65, /* 0x 530 */
|
||||
52, 48, 0,156, 0, 0, 0, 0, 0, 0, 0,169, 0, 0, 0, 78, /* 0x 540 */
|
||||
50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 70, /* 0x 550 */
|
||||
65, 83, 52, 48, 0,169, 0, 0, 0, 0, 0, 0, 0,173, 0, 0, /* 0x 560 */
|
||||
0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 0, 0, /* 0x 570 */
|
||||
0, 0,184, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, /* 0x 580 */
|
||||
0, 0, 0, 78, 50, 66, 68, 85, 77, 77, 49, 0,184, 0, 0, 0, /* 0x 590 */
|
||||
78, 50, 66, 83, 77, 65, 53, 48, 0,184, 0, 0, 0, 78, 50, 66, /* 0x 5a0 */
|
||||
70, 65, 83, 53, 48, 0,186, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 5b0 */
|
||||
53, 48, 0,189, 0, 0, 0, 78, 50, 66, 83, 77, 65, 54, 48, 0, /* 0x 5c0 */
|
||||
198, 0, 0, 0, 0, 0, 0, 0,210, 0, 0, 0, 78, 50, 66, 68, /* 0x 5d0 */
|
||||
69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, /* 0x 5e0 */
|
||||
48, 0,210, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 78, 50, /* 0x 5f0 */
|
||||
66, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,235, /* 0x 600 */
|
||||
0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, /* 0x 610 */
|
||||
78, 50, 66, 70, 65, 83, 54, 49, 0,235, 0, 0, 0, 0, 0, 0, /* 0x 620 */
|
||||
0, 1, 1, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, /* 0x 630 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, 1, 1, 0, 0, 78, /* 0x 640 */
|
||||
82, 86, 50, 66, 69, 78, 68, 0, 1, 1, 0, 0, 78, 50, 68, 83, /* 0x 650 */
|
||||
77, 65, 49, 48, 0, 1, 1, 0, 0, 0, 0, 0, 0, 3, 1, 0, /* 0x 660 */
|
||||
0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, /* 0x 670 */
|
||||
68, 70, 65, 83, 49, 48, 0, 4, 1, 0, 0, 0, 0, 0, 0, 6, /* 0x 680 */
|
||||
1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, /* 0x 690 */
|
||||
78, 50, 68, 70, 65, 83, 49, 49, 0, 6, 1, 0, 0, 78, 50, 68, /* 0x 6a0 */
|
||||
68, 69, 67, 49, 48, 0, 12, 1, 0, 0, 78, 50, 68, 83, 77, 65, /* 0x 6b0 */
|
||||
50, 48, 0, 23, 1, 0, 0, 0, 0, 0, 0, 25, 1, 0, 0, 78, /* 0x 6c0 */
|
||||
50, 68, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 68, 70, /* 0x 6d0 */
|
||||
65, 83, 50, 48, 0, 28, 1, 0, 0, 0, 0, 0, 0, 32, 1, 0, /* 0x 6e0 */
|
||||
0, 78, 50, 68, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, /* 0x 6f0 */
|
||||
68, 68, 69, 67, 50, 48, 0, 37, 1, 0, 0, 78, 50, 68, 83, 77, /* 0x 700 */
|
||||
65, 51, 48, 0, 50, 1, 0, 0, 0, 0, 0, 0, 63, 1, 0, 0, /* 0x 710 */
|
||||
78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, /* 0x 720 */
|
||||
70, 65, 83, 51, 48, 0, 63, 1, 0, 0, 0, 0, 0, 0, 69, 1, /* 0x 730 */
|
||||
0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 0, /* 0x 740 */
|
||||
0, 0, 0, 78, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, /* 0x 750 */
|
||||
16, 0, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 78, 1, 0, /* 0x 760 */
|
||||
0, 0, 0, 0, 0, 94, 1, 0, 0, 78, 50, 68, 68, 69, 67, 50, /* 0x 770 */
|
||||
48, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 1, 0, 0, 78, 50, /* 0x 780 */
|
||||
68, 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,146, /* 0x 790 */
|
||||
1, 0, 0, 78, 50, 68, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, /* 0x 7a0 */
|
||||
78, 50, 68, 83, 77, 65, 52, 48, 0,160, 1, 0, 0, 0, 0, 0, /* 0x 7b0 */
|
||||
0,173, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, /* 0x 7c0 */
|
||||
0, 0, 78, 50, 68, 70, 65, 83, 52, 48, 0,173, 1, 0, 0, 0, /* 0x 7d0 */
|
||||
0, 0, 0,177, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, /* 0x 7e0 */
|
||||
69, 0, 0, 0, 0, 0, 0, 0,188, 1, 0, 0, 78, 50, 68, 68, /* 0x 7f0 */
|
||||
69, 67, 51, 48, 0, 69, 0, 0, 0, 78, 50, 68, 68, 85, 77, 77, /* 0x 800 */
|
||||
49, 0,188, 1, 0, 0, 78, 50, 68, 83, 77, 65, 53, 48, 0,188, /* 0x 810 */
|
||||
1, 0, 0, 78, 50, 68, 70, 65, 83, 53, 48, 0,190, 1, 0, 0, /* 0x 820 */
|
||||
78, 50, 68, 68, 69, 67, 53, 48, 0,193, 1, 0, 0, 78, 50, 68, /* 0x 830 */
|
||||
83, 77, 65, 54, 48, 0,202, 1, 0, 0, 0, 0, 0, 0,214, 1, /* 0x 840 */
|
||||
0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, /* 0x 850 */
|
||||
50, 68, 70, 65, 83, 54, 48, 0,214, 1, 0, 0, 0, 0, 0, 0, /* 0x 860 */
|
||||
225, 1, 0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 0, 0, 0, /* 0x 870 */
|
||||
0, 0, 0, 0, 0,239, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, /* 0x 880 */
|
||||
48, 0, 0, 0, 0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0,239, /* 0x 890 */
|
||||
1, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 78, 50, 68, 68, 69, /* 0x 8a0 */
|
||||
67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, /* 0x 8b0 */
|
||||
0, 5, 2, 0, 0, 78, 82, 86, 50, 68, 69, 78, 68, 0, 5, 2, /* 0x 8c0 */
|
||||
0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 5, 2, 0, 0, 0, /* 0x 8d0 */
|
||||
0, 0, 0, 7, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, /* 0x 8e0 */
|
||||
4, 0, 0, 0, 78, 50, 69, 70, 65, 83, 49, 48, 0, 8, 2, 0, /* 0x 8f0 */
|
||||
0, 0, 0, 0, 0, 10, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, /* 0x 900 */
|
||||
48, 0, 4, 0, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 10, /* 0x 910 */
|
||||
2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 16, 2, 0, 0, /* 0x 920 */
|
||||
78, 50, 69, 83, 77, 65, 50, 48, 0, 27, 2, 0, 0, 0, 0, 0, /* 0x 930 */
|
||||
0, 29, 2, 0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 2, 0, /* 0x 940 */
|
||||
0, 0, 78, 50, 69, 70, 65, 83, 50, 48, 0, 32, 2, 0, 0, 0, /* 0x 950 */
|
||||
0, 0, 0, 36, 2, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, /* 0x 960 */
|
||||
0, 0, 0, 0, 78, 50, 69, 68, 69, 67, 50, 48, 0, 41, 2, 0, /* 0x 970 */
|
||||
0, 78, 50, 69, 83, 77, 65, 51, 48, 0, 54, 2, 0, 0, 0, 0, /* 0x 980 */
|
||||
0, 0, 67, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, /* 0x 990 */
|
||||
0, 0, 0, 78, 50, 69, 70, 65, 83, 51, 48, 0, 67, 2, 0, 0, /* 0x 9a0 */
|
||||
0, 0, 0, 0, 73, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, /* 0x 9b0 */
|
||||
0, 31, 0, 0, 0, 0, 0, 0, 0, 82, 2, 0, 0, 78, 50, 69, /* 0x 9c0 */
|
||||
68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x 9d0 */
|
||||
51, 48, 0, 82, 2, 0, 0, 0, 0, 0, 0, 98, 2, 0, 0, 78, /* 0x 9e0 */
|
||||
50, 69, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 9f0 */
|
||||
113, 2, 0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0, 0, 0, 0, /* 0x a00 */
|
||||
0, 0, 0, 0, 0,131, 2, 0, 0, 78, 50, 69, 68, 69, 67, 54, /* 0x a10 */
|
||||
48, 0, 0, 0, 0, 0, 78, 50, 69, 83, 77, 65, 52, 48, 0,177, /* 0x a20 */
|
||||
2, 0, 0, 0, 0, 0, 0,190, 2, 0, 0, 78, 50, 69, 68, 69, /* 0x a30 */
|
||||
67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, 70, 65, 83, 52, 48, /* 0x a40 */
|
||||
0,190, 2, 0, 0, 0, 0, 0, 0,194, 2, 0, 0, 78, 50, 69, /* 0x a50 */
|
||||
68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 0, 0, 0, 0,205, 2, /* 0x a60 */
|
||||
0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, /* 0x a70 */
|
||||
50, 69, 68, 85, 77, 77, 49, 0,205, 2, 0, 0, 78, 50, 69, 83, /* 0x a80 */
|
||||
77, 65, 53, 48, 0,205, 2, 0, 0, 78, 50, 69, 70, 65, 83, 53, /* 0x a90 */
|
||||
48, 0,207, 2, 0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0,210, /* 0x aa0 */
|
||||
2, 0, 0, 78, 50, 69, 83, 77, 65, 54, 48, 0,219, 2, 0, 0, /* 0x ab0 */
|
||||
0, 0, 0, 0,231, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, /* 0x ac0 */
|
||||
0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, 54, 48, 0,231, 2, /* 0x ad0 */
|
||||
0, 0, 0, 0, 0, 0,242, 2, 0, 0, 78, 50, 69, 70, 65, 83, /* 0x ae0 */
|
||||
54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 78, /* 0x af0 */
|
||||
50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, /* 0x b00 */
|
||||
65, 83, 54, 49, 0, 0, 3, 0, 0, 0, 0, 0, 0, 22, 3, 0, /* 0x b10 */
|
||||
0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, /* 0x b20 */
|
||||
69, 68, 69, 67, 54, 48, 0, 22, 3, 0, 0, 78, 82, 86, 50, 69, /* 0x b30 */
|
||||
69, 78, 68, 0, 22, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, /* 0x b40 */
|
||||
0, 22, 3, 0, 0, 67, 84, 67, 76, 69, 86, 69, 49, 0, 36, 3, /* 0x b50 */
|
||||
0, 0, 0, 0, 0, 0, 41, 3, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x b60 */
|
||||
48, 48, 0, 5, 0, 0, 0, 67, 65, 76, 76, 84, 82, 48, 49, 0, /* 0x b70 */
|
||||
41, 3, 0, 0, 67, 84, 68, 85, 77, 77, 89, 49, 0, 46, 3, 0, /* 0x b80 */
|
||||
0, 67, 84, 66, 83, 72, 82, 48, 49, 0, 46, 3, 0, 0, 67, 84, /* 0x b90 */
|
||||
66, 82, 79, 82, 48, 49, 0, 50, 3, 0, 0, 67, 84, 66, 83, 87, /* 0x ba0 */
|
||||
65, 48, 49, 0, 52, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 50, /* 0x bb0 */
|
||||
0, 57, 3, 0, 0, 0, 0, 0, 0, 71, 3, 0, 0, 67, 65, 76, /* 0x bc0 */
|
||||
76, 84, 82, 48, 48, 0, 10, 0, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x bd0 */
|
||||
49, 48, 0, 71, 3, 0, 0, 67, 65, 76, 76, 84, 82, 69, 56, 0, /* 0x be0 */
|
||||
76, 3, 0, 0, 67, 65, 76, 76, 84, 82, 69, 57, 0, 78, 3, 0, /* 0x bf0 */
|
||||
0, 67, 65, 76, 76, 84, 82, 49, 49, 0, 80, 3, 0, 0, 0, 0, /* 0x c00 */
|
||||
0, 0, 84, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0, 5, /* 0x c10 */
|
||||
0, 0, 0, 67, 84, 67, 76, 69, 86, 69, 50, 0, 84, 3, 0, 0, /* 0x c20 */
|
||||
0, 0, 0, 0, 89, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 49, /* 0x c30 */
|
||||
0, 0, 0, 0, 0, 67, 65, 76, 76, 84, 82, 49, 50, 0, 89, 3, /* 0x c40 */
|
||||
0, 0, 67, 84, 68, 85, 77, 77, 89, 50, 0, 91, 3, 0, 0, 67, /* 0x c50 */
|
||||
84, 66, 83, 72, 82, 49, 49, 0, 91, 3, 0, 0, 67, 84, 66, 82, /* 0x c60 */
|
||||
79, 82, 49, 49, 0, 95, 3, 0, 0, 67, 84, 66, 83, 87, 65, 49, /* 0x c70 */
|
||||
49, 0, 97, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0,102, /* 0x c80 */
|
||||
3, 0, 0, 0, 0, 0, 0,107, 3, 0, 0, 67, 65, 76, 76, 84, /* 0x c90 */
|
||||
82, 49, 48, 0, 5, 0, 0, 0, 67, 84, 84, 72, 69, 69, 78, 68, /* 0x ca0 */
|
||||
0,107, 3, 0, 0, 76, 69, 88, 69, 67, 48, 49, 53, 0,107, 3, /* 0x cb0 */
|
||||
0, 0, 76, 69, 88, 69, 67, 48, 50, 48, 0,136, 3, 0, 0, 88, /* 0x cc0 */
|
||||
84, 72, 69, 69, 78, 68, 88, 0,203, 3, 0, 0,255,255,255,255, /* 0x cd0 */
|
||||
203, 3 /* 0x ce0 */
|
||||
207,233, 0, 0, 0, 0,255,210, 1,219,117, 2,255,210,144,232, /* 0x 310 */
|
||||
0, 0, 0, 0, 1,219,116, 0,195,139, 30,131,238,252, 17,219, /* 0x 320 */
|
||||
195, 41,201, 17,201,114, 0, 17,201,114, 0, 17,201, 17,192, 72, /* 0x 330 */
|
||||
17,192,131,233, 1,115, 0,141, 72, 15, 61,240,255, 0, 0,114, /* 0x 340 */
|
||||
0,141, 4, 14, 80,233, 0, 0, 0, 0, 17,201, 17,201,131,193, /* 0x 350 */
|
||||
13,235, 0,133,201,116, 0, 65,131,193, 8,235, 0, 41,201, 90, /* 0x 360 */
|
||||
41,219,141, 65, 1,115, 0,114, 0,114, 0,114, 0,131,193, 2, /* 0x 370 */
|
||||
114, 0, 65,114, 5,233, 0, 0, 0, 0, 17,201,209,233,115, 1, /* 0x 380 */
|
||||
164,209,233,115, 2,102,165,243,165,141, 65, 1,235, 3,164,164, /* 0x 390 */
|
||||
164, 17,192,115, 0,131,232, 3,114, 11,193,224, 8,172,131,240, /* 0x 3a0 */
|
||||
255,116, 0,137,197, 17,201, 17,201,117, 0, 65, 17,201,115, 0, /* 0x 3b0 */
|
||||
131,193, 2,129,253, 0,243,255,255,131,209, 1, 86,141, 52, 47, /* 0x 3c0 */
|
||||
131,253,252,119, 19,209,233,115, 1,164,209,233,115, 2,102,165, /* 0x 3d0 */
|
||||
243,165, 94,233, 0, 0, 0, 0,131,253,255,117, 5,172,243,170, /* 0x 3e0 */
|
||||
235,240,243,164,235,236,185, 84, 69, 88, 76,138, 7, 71, 44,232, /* 0x 3f0 */
|
||||
60, 1,119,247,128, 63, 63,117, 0,139, 7,138, 95, 4,102,193, /* 0x 400 */
|
||||
232, 8,134,196,193,192, 16,134,196, 41,248,128,235,232,137, 7, /* 0x 410 */
|
||||
131,199, 5,136,216,226, 0,185, 84, 69, 88, 76,176,232,176,233, /* 0x 420 */
|
||||
242,174,117, 0,128, 63, 63,117, 0,139, 7,102,193,232, 8,134, /* 0x 430 */
|
||||
196,193,192, 16,134,196, 41,248,171,235, 0,139, 84, 36, 36, 3, /* 0x 440 */
|
||||
84, 36, 40, 57,214,116, 1, 72, 43,124, 36, 44,139, 84, 36, 48, /* 0x 450 */
|
||||
137, 58,137, 68, 36, 28, 97,195, 94,252,173, 80, 84,186, 0, 0, /* 0x 460 */
|
||||
64, 1,139, 66, 72, 1,208,131,194,116, 80,139, 74, 16,129,193, /* 0x 470 */
|
||||
6, 16, 0, 0, 80, 80,106, 50,106, 7, 81, 80,137,227,106, 90, /* 0x 480 */
|
||||
88,205,128,141,152, 3, 16, 0, 0,131,196, 24,173, 80,173, 86, /* 0x 490 */
|
||||
255,213, 88, 88,195, 93,232,189,255,255,255, 0, 76, 69, 88, 69, /* 0x 4a0 */
|
||||
67, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, /* 0x 4b0 */
|
||||
0, 76, 69, 88, 69, 67, 48, 50, 48, 0, 61, 0, 0, 0, 76, 69, /* 0x 4c0 */
|
||||
88, 69, 67, 48, 49, 48, 0, 5, 0, 0, 0, 78, 50, 66, 83, 77, /* 0x 4d0 */
|
||||
65, 49, 48, 0, 17, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, /* 0x 4e0 */
|
||||
78, 50, 66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, /* 0x 4f0 */
|
||||
70, 65, 83, 49, 48, 0, 20, 0, 0, 0, 0, 0, 0, 0, 22, 0, /* 0x 500 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, /* 0x 510 */
|
||||
50, 66, 70, 65, 83, 49, 49, 0, 22, 0, 0, 0, 78, 50, 66, 68, /* 0x 520 */
|
||||
69, 67, 49, 48, 0, 28, 0, 0, 0, 78, 50, 66, 83, 77, 65, 50, /* 0x 530 */
|
||||
48, 0, 39, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 78, 50, /* 0x 540 */
|
||||
66, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 66, 70, 65, /* 0x 550 */
|
||||
83, 50, 48, 0, 44, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, /* 0x 560 */
|
||||
78, 50, 66, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 66, /* 0x 570 */
|
||||
68, 69, 67, 50, 48, 0, 53, 0, 0, 0, 78, 50, 66, 83, 77, 65, /* 0x 580 */
|
||||
51, 48, 0, 66, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 78, /* 0x 590 */
|
||||
50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, /* 0x 5a0 */
|
||||
65, 83, 51, 48, 0, 79, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, /* 0x 5b0 */
|
||||
0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x 5c0 */
|
||||
0, 0, 94, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, /* 0x 5d0 */
|
||||
0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 94, 0, 0, 0, /* 0x 5e0 */
|
||||
0, 0, 0, 0,112, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, /* 0x 5f0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 78, 50, 66, /* 0x 600 */
|
||||
68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, 50, 66, 83, 77, 65, /* 0x 610 */
|
||||
52, 48, 0,156, 0, 0, 0, 0, 0, 0, 0,169, 0, 0, 0, 78, /* 0x 620 */
|
||||
50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 70, /* 0x 630 */
|
||||
65, 83, 52, 48, 0,169, 0, 0, 0, 0, 0, 0, 0,173, 0, 0, /* 0x 640 */
|
||||
0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 0, 0, /* 0x 650 */
|
||||
0, 0,184, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, /* 0x 660 */
|
||||
0, 0, 0, 78, 50, 66, 68, 85, 77, 77, 49, 0,184, 0, 0, 0, /* 0x 670 */
|
||||
78, 50, 66, 83, 77, 65, 53, 48, 0,184, 0, 0, 0, 78, 50, 66, /* 0x 680 */
|
||||
70, 65, 83, 53, 48, 0,186, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 690 */
|
||||
53, 48, 0,189, 0, 0, 0, 78, 50, 66, 83, 77, 65, 54, 48, 0, /* 0x 6a0 */
|
||||
198, 0, 0, 0, 0, 0, 0, 0,210, 0, 0, 0, 78, 50, 66, 68, /* 0x 6b0 */
|
||||
69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, /* 0x 6c0 */
|
||||
48, 0,210, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 78, 50, /* 0x 6d0 */
|
||||
66, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,235, /* 0x 6e0 */
|
||||
0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, /* 0x 6f0 */
|
||||
78, 50, 66, 70, 65, 83, 54, 49, 0,235, 0, 0, 0, 0, 0, 0, /* 0x 700 */
|
||||
0, 1, 1, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, /* 0x 710 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, 1, 1, 0, 0, 78, /* 0x 720 */
|
||||
82, 86, 50, 66, 69, 78, 68, 0, 1, 1, 0, 0, 78, 50, 68, 83, /* 0x 730 */
|
||||
77, 65, 49, 48, 0, 1, 1, 0, 0, 0, 0, 0, 0, 3, 1, 0, /* 0x 740 */
|
||||
0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, /* 0x 750 */
|
||||
68, 70, 65, 83, 49, 48, 0, 4, 1, 0, 0, 0, 0, 0, 0, 6, /* 0x 760 */
|
||||
1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, /* 0x 770 */
|
||||
78, 50, 68, 70, 65, 83, 49, 49, 0, 6, 1, 0, 0, 78, 50, 68, /* 0x 780 */
|
||||
68, 69, 67, 49, 48, 0, 12, 1, 0, 0, 78, 50, 68, 83, 77, 65, /* 0x 790 */
|
||||
50, 48, 0, 23, 1, 0, 0, 0, 0, 0, 0, 25, 1, 0, 0, 78, /* 0x 7a0 */
|
||||
50, 68, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 68, 70, /* 0x 7b0 */
|
||||
65, 83, 50, 48, 0, 28, 1, 0, 0, 0, 0, 0, 0, 32, 1, 0, /* 0x 7c0 */
|
||||
0, 78, 50, 68, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, /* 0x 7d0 */
|
||||
68, 68, 69, 67, 50, 48, 0, 37, 1, 0, 0, 78, 50, 68, 83, 77, /* 0x 7e0 */
|
||||
65, 51, 48, 0, 50, 1, 0, 0, 0, 0, 0, 0, 63, 1, 0, 0, /* 0x 7f0 */
|
||||
78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, /* 0x 800 */
|
||||
70, 65, 83, 51, 48, 0, 63, 1, 0, 0, 0, 0, 0, 0, 69, 1, /* 0x 810 */
|
||||
0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 0, /* 0x 820 */
|
||||
0, 0, 0, 78, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, /* 0x 830 */
|
||||
16, 0, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 78, 1, 0, /* 0x 840 */
|
||||
0, 0, 0, 0, 0, 94, 1, 0, 0, 78, 50, 68, 68, 69, 67, 50, /* 0x 850 */
|
||||
48, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 1, 0, 0, 78, 50, /* 0x 860 */
|
||||
68, 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,146, /* 0x 870 */
|
||||
1, 0, 0, 78, 50, 68, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, /* 0x 880 */
|
||||
78, 50, 68, 83, 77, 65, 52, 48, 0,160, 1, 0, 0, 0, 0, 0, /* 0x 890 */
|
||||
0,173, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, /* 0x 8a0 */
|
||||
0, 0, 78, 50, 68, 70, 65, 83, 52, 48, 0,173, 1, 0, 0, 0, /* 0x 8b0 */
|
||||
0, 0, 0,177, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, /* 0x 8c0 */
|
||||
69, 0, 0, 0, 0, 0, 0, 0,188, 1, 0, 0, 78, 50, 68, 68, /* 0x 8d0 */
|
||||
69, 67, 51, 48, 0, 69, 0, 0, 0, 78, 50, 68, 68, 85, 77, 77, /* 0x 8e0 */
|
||||
49, 0,188, 1, 0, 0, 78, 50, 68, 83, 77, 65, 53, 48, 0,188, /* 0x 8f0 */
|
||||
1, 0, 0, 78, 50, 68, 70, 65, 83, 53, 48, 0,190, 1, 0, 0, /* 0x 900 */
|
||||
78, 50, 68, 68, 69, 67, 53, 48, 0,193, 1, 0, 0, 78, 50, 68, /* 0x 910 */
|
||||
83, 77, 65, 54, 48, 0,202, 1, 0, 0, 0, 0, 0, 0,214, 1, /* 0x 920 */
|
||||
0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, /* 0x 930 */
|
||||
50, 68, 70, 65, 83, 54, 48, 0,214, 1, 0, 0, 0, 0, 0, 0, /* 0x 940 */
|
||||
225, 1, 0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 0, 0, 0, /* 0x 950 */
|
||||
0, 0, 0, 0, 0,239, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, /* 0x 960 */
|
||||
48, 0, 0, 0, 0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0,239, /* 0x 970 */
|
||||
1, 0, 0, 0, 0, 0, 0, 5, 2, 0, 0, 78, 50, 68, 68, 69, /* 0x 980 */
|
||||
67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, /* 0x 990 */
|
||||
0, 5, 2, 0, 0, 78, 82, 86, 50, 68, 69, 78, 68, 0, 5, 2, /* 0x 9a0 */
|
||||
0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 5, 2, 0, 0, 0, /* 0x 9b0 */
|
||||
0, 0, 0, 7, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, /* 0x 9c0 */
|
||||
4, 0, 0, 0, 78, 50, 69, 70, 65, 83, 49, 48, 0, 8, 2, 0, /* 0x 9d0 */
|
||||
0, 0, 0, 0, 0, 10, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, /* 0x 9e0 */
|
||||
48, 0, 4, 0, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 10, /* 0x 9f0 */
|
||||
2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 16, 2, 0, 0, /* 0x a00 */
|
||||
78, 50, 69, 83, 77, 65, 50, 48, 0, 27, 2, 0, 0, 0, 0, 0, /* 0x a10 */
|
||||
0, 29, 2, 0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 2, 0, /* 0x a20 */
|
||||
0, 0, 78, 50, 69, 70, 65, 83, 50, 48, 0, 32, 2, 0, 0, 0, /* 0x a30 */
|
||||
0, 0, 0, 36, 2, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, /* 0x a40 */
|
||||
0, 0, 0, 0, 78, 50, 69, 68, 69, 67, 50, 48, 0, 41, 2, 0, /* 0x a50 */
|
||||
0, 78, 50, 69, 83, 77, 65, 51, 48, 0, 54, 2, 0, 0, 0, 0, /* 0x a60 */
|
||||
0, 0, 67, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, /* 0x a70 */
|
||||
0, 0, 0, 78, 50, 69, 70, 65, 83, 51, 48, 0, 67, 2, 0, 0, /* 0x a80 */
|
||||
0, 0, 0, 0, 73, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, /* 0x a90 */
|
||||
0, 31, 0, 0, 0, 0, 0, 0, 0, 82, 2, 0, 0, 78, 50, 69, /* 0x aa0 */
|
||||
68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x ab0 */
|
||||
51, 48, 0, 82, 2, 0, 0, 0, 0, 0, 0, 98, 2, 0, 0, 78, /* 0x ac0 */
|
||||
50, 69, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x ad0 */
|
||||
113, 2, 0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0, 0, 0, 0, /* 0x ae0 */
|
||||
0, 0, 0, 0, 0,131, 2, 0, 0, 78, 50, 69, 68, 69, 67, 54, /* 0x af0 */
|
||||
48, 0, 0, 0, 0, 0, 78, 50, 69, 83, 77, 65, 52, 48, 0,177, /* 0x b00 */
|
||||
2, 0, 0, 0, 0, 0, 0,190, 2, 0, 0, 78, 50, 69, 68, 69, /* 0x b10 */
|
||||
67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, 70, 65, 83, 52, 48, /* 0x b20 */
|
||||
0,190, 2, 0, 0, 0, 0, 0, 0,194, 2, 0, 0, 78, 50, 69, /* 0x b30 */
|
||||
68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 0, 0, 0, 0,205, 2, /* 0x b40 */
|
||||
0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, /* 0x b50 */
|
||||
50, 69, 68, 85, 77, 77, 49, 0,205, 2, 0, 0, 78, 50, 69, 83, /* 0x b60 */
|
||||
77, 65, 53, 48, 0,205, 2, 0, 0, 78, 50, 69, 70, 65, 83, 53, /* 0x b70 */
|
||||
48, 0,207, 2, 0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0,210, /* 0x b80 */
|
||||
2, 0, 0, 78, 50, 69, 83, 77, 65, 54, 48, 0,219, 2, 0, 0, /* 0x b90 */
|
||||
0, 0, 0, 0,231, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, /* 0x ba0 */
|
||||
0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, 54, 48, 0,231, 2, /* 0x bb0 */
|
||||
0, 0, 0, 0, 0, 0,242, 2, 0, 0, 78, 50, 69, 70, 65, 83, /* 0x bc0 */
|
||||
54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 78, /* 0x bd0 */
|
||||
50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, /* 0x be0 */
|
||||
65, 83, 54, 49, 0, 0, 3, 0, 0, 0, 0, 0, 0, 22, 3, 0, /* 0x bf0 */
|
||||
0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, /* 0x c00 */
|
||||
69, 68, 69, 67, 54, 48, 0, 22, 3, 0, 0, 78, 82, 86, 50, 69, /* 0x c10 */
|
||||
69, 78, 68, 0, 22, 3, 0, 0, 67, 76, 49, 83, 77, 65, 49, 66, /* 0x c20 */
|
||||
0, 22, 3, 0, 0, 67, 76, 49, 70, 65, 83, 49, 66, 0, 24, 3, /* 0x c30 */
|
||||
0, 0, 67, 76, 49, 71, 69, 84, 49, 66, 0, 30, 3, 0, 0, 67, /* 0x c40 */
|
||||
76, 49, 69, 78, 84, 69, 82, 0, 30, 3, 0, 0, 0, 0, 0, 0, /* 0x c50 */
|
||||
36, 3, 0, 0, 67, 76, 49, 83, 84, 65, 82, 84, 0, 0, 0, 0, /* 0x c60 */
|
||||
0, 67, 76, 49, 83, 77, 65, 49, 48, 0, 36, 3, 0, 0, 0, 0, /* 0x c70 */
|
||||
0, 0, 40, 3, 0, 0, 67, 76, 49, 82, 76, 79, 65, 68, 0, 0, /* 0x c80 */
|
||||
0, 0, 0, 67, 76, 49, 82, 76, 79, 65, 68, 0, 41, 3, 0, 0, /* 0x c90 */
|
||||
67, 76, 49, 87, 73, 68, 48, 49, 0, 49, 3, 0, 0, 67, 76, 49, /* 0x ca0 */
|
||||
87, 73, 68, 48, 50, 0, 51, 3, 0, 0, 67, 76, 49, 87, 73, 68, /* 0x cb0 */
|
||||
48, 51, 0, 53, 3, 0, 0, 0, 0, 0, 0, 55, 3, 0, 0, 67, /* 0x cc0 */
|
||||
76, 49, 87, 73, 68, 49, 48, 0, 12, 0, 0, 0, 67, 76, 49, 87, /* 0x cd0 */
|
||||
73, 68, 48, 52, 0, 55, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, /* 0x ce0 */
|
||||
53, 0, 57, 3, 0, 0, 0, 0, 0, 0, 59, 3, 0, 0, 67, 76, /* 0x cf0 */
|
||||
49, 87, 73, 68, 49, 48, 0, 7, 0, 0, 0, 67, 76, 49, 87, 73, /* 0x d00 */
|
||||
68, 48, 54, 0, 59, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 55, /* 0x d10 */
|
||||
0, 61, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 56, 0, 64, 3, /* 0x d20 */
|
||||
0, 0, 0, 0, 0, 0, 71, 3, 0, 0, 67, 76, 49, 87, 73, 68, /* 0x d30 */
|
||||
48, 54, 0, 2, 0, 0, 0, 0, 0, 0, 0, 81, 3, 0, 0, 67, /* 0x d40 */
|
||||
76, 49, 87, 73, 68, 49, 48, 0, 15, 0, 0, 0, 0, 0, 0, 0, /* 0x d50 */
|
||||
90, 3, 0, 0, 67, 76, 49, 67, 79, 80, 89, 48, 0, 18, 0, 0, /* 0x d60 */
|
||||
0, 67, 76, 49, 87, 73, 68, 48, 57, 0, 90, 3, 0, 0, 67, 76, /* 0x d70 */
|
||||
49, 87, 73, 68, 49, 48, 0, 92, 3, 0, 0, 0, 0, 0, 0, 99, /* 0x d80 */
|
||||
3, 0, 0, 67, 76, 49, 84, 79, 80, 48, 55, 0, 2, 0, 0, 0, /* 0x d90 */
|
||||
0, 0, 0, 0,103, 3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 56, /* 0x da0 */
|
||||
0, 26, 0, 0, 0, 0, 0, 0, 0,109, 3, 0, 0, 67, 76, 49, /* 0x db0 */
|
||||
84, 79, 80, 48, 55, 0, 2, 0, 0, 0, 67, 76, 49, 83, 84, 65, /* 0x dc0 */
|
||||
82, 84, 0,109, 3, 0, 0, 67, 76, 49, 84, 79, 80, 48, 48, 0, /* 0x dd0 */
|
||||
114, 3, 0, 0, 67, 76, 49, 84, 79, 80, 48, 49, 0,117, 3, 0, /* 0x de0 */
|
||||
0, 0, 0, 0, 0,119, 3, 0, 0, 67, 76, 49, 84, 79, 80, 48, /* 0x df0 */
|
||||
55, 0, 23, 0, 0, 0, 67, 76, 49, 84, 79, 80, 48, 50, 0,119, /* 0x e00 */
|
||||
3, 0, 0, 0, 0, 0, 0,121, 3, 0, 0, 67, 76, 49, 84, 79, /* 0x e10 */
|
||||
80, 48, 55, 0, 22, 0, 0, 0, 67, 76, 49, 84, 79, 80, 48, 51, /* 0x e20 */
|
||||
0,121, 3, 0, 0, 0, 0, 0, 0,123, 3, 0, 0, 67, 76, 49, /* 0x e30 */
|
||||
84, 79, 80, 48, 55, 0, 21, 0, 0, 0, 67, 76, 49, 84, 79, 80, /* 0x e40 */
|
||||
48, 52, 0,123, 3, 0, 0, 0, 0, 0, 0,125, 3, 0, 0, 67, /* 0x e50 */
|
||||
76, 49, 84, 79, 80, 48, 55, 0, 20, 0, 0, 0, 67, 76, 49, 84, /* 0x e60 */
|
||||
79, 80, 48, 53, 0,128, 3, 0, 0, 0, 0, 0, 0,130, 3, 0, /* 0x e70 */
|
||||
0, 67, 76, 49, 84, 79, 80, 48, 54, 0, 7, 0, 0, 0, 67, 76, /* 0x e80 */
|
||||
49, 84, 79, 80, 48, 54, 0,131, 3, 0, 0, 0, 0, 0, 0,138, /* 0x e90 */
|
||||
3, 0, 0, 67, 76, 49, 87, 73, 68, 48, 49, 0, 0, 0, 0, 0, /* 0x ea0 */
|
||||
67, 76, 49, 84, 79, 80, 48, 55, 0,138, 3, 0, 0, 67, 76, 49, /* 0x eb0 */
|
||||
79, 70, 70, 48, 49, 0,161, 3, 0, 0, 67, 76, 49, 79, 70, 70, /* 0x ec0 */
|
||||
48, 50, 0,163, 3, 0, 0, 0, 0, 0, 0,165, 3, 0, 0, 67, /* 0x ed0 */
|
||||
76, 49, 84, 79, 80, 48, 55, 0, 23, 0, 0, 0, 0, 0, 0, 0, /* 0x ee0 */
|
||||
179, 3, 0, 0, 67, 76, 49, 67, 79, 80, 89, 48, 0, 51, 0, 0, /* 0x ef0 */
|
||||
0, 67, 76, 49, 79, 70, 70, 48, 51, 0,181, 3, 0, 0, 67, 76, /* 0x f00 */
|
||||
49, 79, 70, 70, 48, 52, 0,183, 3, 0, 0, 0, 0, 0, 0,187, /* 0x f10 */
|
||||
3, 0, 0, 67, 76, 49, 67, 79, 80, 89, 48, 0, 0, 0, 0, 0, /* 0x f20 */
|
||||
67, 76, 49, 76, 69, 78, 48, 48, 0,187, 3, 0, 0, 67, 76, 49, /* 0x f30 */
|
||||
76, 69, 78, 48, 49, 0,188, 3, 0, 0, 67, 76, 49, 76, 69, 78, /* 0x f40 */
|
||||
48, 50, 0,190, 3, 0, 0, 0, 0, 0, 0,192, 3, 0, 0, 67, /* 0x f50 */
|
||||
76, 49, 76, 69, 78, 48, 48, 0, 1, 0, 0, 0, 67, 76, 49, 67, /* 0x f60 */
|
||||
79, 80, 89, 48, 0,195, 3, 0, 0, 0, 0, 0, 0,232, 3, 0, /* 0x f70 */
|
||||
0, 67, 76, 49, 84, 79, 80, 48, 48, 0, 0, 0, 0, 0, 67, 76, /* 0x f80 */
|
||||
49, 69, 78, 68, 0,246, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, /* 0x f90 */
|
||||
48, 0,246, 3, 0, 0, 67, 84, 67, 76, 69, 86, 69, 49, 0, 4, /* 0x fa0 */
|
||||
4, 0, 0, 0, 0, 0, 0, 9, 4, 0, 0, 67, 65, 76, 76, 84, /* 0x fb0 */
|
||||
82, 48, 48, 0, 5, 0, 0, 0, 67, 65, 76, 76, 84, 82, 48, 49, /* 0x fc0 */
|
||||
0, 9, 4, 0, 0, 67, 84, 68, 85, 77, 77, 89, 49, 0, 14, 4, /* 0x fd0 */
|
||||
0, 0, 67, 84, 66, 83, 72, 82, 48, 49, 0, 14, 4, 0, 0, 67, /* 0x fe0 */
|
||||
84, 66, 82, 79, 82, 48, 49, 0, 18, 4, 0, 0, 67, 84, 66, 83, /* 0x ff0 */
|
||||
87, 65, 48, 49, 0, 20, 4, 0, 0, 67, 65, 76, 76, 84, 82, 48, /* 0x1000 */
|
||||
50, 0, 25, 4, 0, 0, 0, 0, 0, 0, 39, 4, 0, 0, 67, 65, /* 0x1010 */
|
||||
76, 76, 84, 82, 48, 48, 0, 10, 0, 0, 0, 67, 65, 76, 76, 84, /* 0x1020 */
|
||||
82, 49, 48, 0, 39, 4, 0, 0, 67, 65, 76, 76, 84, 82, 69, 56, /* 0x1030 */
|
||||
0, 44, 4, 0, 0, 67, 65, 76, 76, 84, 82, 69, 57, 0, 46, 4, /* 0x1040 */
|
||||
0, 0, 67, 65, 76, 76, 84, 82, 49, 49, 0, 48, 4, 0, 0, 0, /* 0x1050 */
|
||||
0, 0, 0, 52, 4, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0, /* 0x1060 */
|
||||
5, 0, 0, 0, 67, 84, 67, 76, 69, 86, 69, 50, 0, 52, 4, 0, /* 0x1070 */
|
||||
0, 0, 0, 0, 0, 57, 4, 0, 0, 67, 65, 76, 76, 84, 82, 49, /* 0x1080 */
|
||||
49, 0, 0, 0, 0, 0, 67, 65, 76, 76, 84, 82, 49, 50, 0, 57, /* 0x1090 */
|
||||
4, 0, 0, 67, 84, 68, 85, 77, 77, 89, 50, 0, 59, 4, 0, 0, /* 0x10a0 */
|
||||
67, 84, 66, 83, 72, 82, 49, 49, 0, 59, 4, 0, 0, 67, 84, 66, /* 0x10b0 */
|
||||
82, 79, 82, 49, 49, 0, 63, 4, 0, 0, 67, 84, 66, 83, 87, 65, /* 0x10c0 */
|
||||
49, 49, 0, 65, 4, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0, /* 0x10d0 */
|
||||
70, 4, 0, 0, 0, 0, 0, 0, 75, 4, 0, 0, 67, 65, 76, 76, /* 0x10e0 */
|
||||
84, 82, 49, 48, 0, 5, 0, 0, 0, 67, 84, 84, 72, 69, 69, 78, /* 0x10f0 */
|
||||
68, 0, 75, 4, 0, 0, 76, 69, 88, 69, 67, 48, 49, 53, 0, 75, /* 0x1100 */
|
||||
4, 0, 0, 76, 69, 88, 69, 67, 48, 49, 55, 0,102, 4, 0, 0, /* 0x1110 */
|
||||
76, 69, 88, 69, 67, 48, 50, 48, 0,104, 4, 0, 0, 88, 84, 72, /* 0x1120 */
|
||||
69, 69, 78, 68, 88, 0,171, 4, 0, 0,255,255,255,255,171, 4 /* 0x1130 */
|
||||
};
|
||||
|
||||
@@ -203,7 +203,7 @@ relhi0:
|
||||
%ifdef __PEDEPHAK__
|
||||
mov ebp, [esi + 'VPRO'] ; VirtualProtect
|
||||
lea edi, [esi + 'IMGB']
|
||||
mov ebx, 0x1000
|
||||
mov ebx, 'IMGL' ; 0x1000 or 0x2000
|
||||
|
||||
push eax ; provide 4 bytes stack
|
||||
|
||||
@@ -218,7 +218,9 @@ relhi0:
|
||||
jz pedep9 ; VirtualProtect failed
|
||||
%endif
|
||||
|
||||
and byte [edi + 'SWRI'], 0x7f
|
||||
lea eax, [edi + 'SWRI']
|
||||
and byte [eax], 0x7f ; marks UPX0 non writeable
|
||||
and byte [eax + 0x28], 0x7f ; marks UPX1 non writeable
|
||||
|
||||
%if 0
|
||||
push esp
|
||||
|
||||
+207
-207
@@ -1,4 +1,4 @@
|
||||
/* l_w32pe.h -- created from l_w32pe.bin, 4361 (0x1109) bytes
|
||||
/* l_w32pe.h -- created from l_w32pe.bin, 4365 (0x110d) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@@ -27,11 +27,11 @@
|
||||
*/
|
||||
|
||||
|
||||
#define NRV_LOADER_SIZE 4361
|
||||
#define NRV_LOADER_ADLER32 0x709f14e3
|
||||
#define NRV_LOADER_CRC32 0x4fed4b58
|
||||
#define NRV_LOADER_SIZE 4365
|
||||
#define NRV_LOADER_ADLER32 0xf651185e
|
||||
#define NRV_LOADER_CRC32 0x6461513e
|
||||
|
||||
unsigned char nrv_loader[4361] = {
|
||||
unsigned char nrv_loader[4365] = {
|
||||
128,124, 36, 8, 1, 15,133, 0, 0, 0, 0, 96,190, 69, 83, 73, /* 0x 0 */
|
||||
48,141,190, 69, 68, 73, 48,102,255,135, 73, 67, 79, 78,102,129, /* 0x 10 */
|
||||
135, 73, 67, 79, 78, 68, 82,199,135, 84, 76, 83, 65, 84, 76, 83, /* 0x 20 */
|
||||
@@ -102,207 +102,207 @@ unsigned char nrv_loader[4361] = {
|
||||
224, 16,102,139, 7,131,199, 2, 9,192,117, 0,139, 7,131,199, /* 0x 430 */
|
||||
4,235, 0,135,254,141,143, 68, 69, 76, 84,169,102, 1, 12, 7, /* 0x 440 */
|
||||
173, 9,192,117,247,193,233, 16,169,102, 1, 12, 7,173, 9,192, /* 0x 450 */
|
||||
117,247,139,174, 86, 80, 82, 79,141,190, 73, 77, 71, 66,187, 0, /* 0x 460 */
|
||||
16, 0, 0, 80, 84,106, 4, 83, 87,255,213,128,167, 83, 87, 82, /* 0x 470 */
|
||||
73,127, 88, 80, 84, 80, 83, 87,255,213, 88, 97,141, 68, 36,128, /* 0x 480 */
|
||||
106, 0, 57,196,117,250,131,236,128,141, 68, 36,128,106, 0, 57, /* 0x 490 */
|
||||
196,117,250,131,236,128, 49,192, 64,194, 12, 0,233, 74, 77, 80, /* 0x 4a0 */
|
||||
79, 85, 80, 88, 33,161,216,208,213, 0, 0, 0, 0, 0, 0, 0, /* 0x 4b0 */
|
||||
117,247,139,174, 86, 80, 82, 79,141,190, 73, 77, 71, 66,187, 73, /* 0x 460 */
|
||||
77, 71, 76, 80, 84,106, 4, 83, 87,255,213,141,135, 83, 87, 82, /* 0x 470 */
|
||||
73,128, 32,127,128, 96, 40,127, 88, 80, 84, 80, 83, 87,255,213, /* 0x 480 */
|
||||
88, 97,141, 68, 36,128,106, 0, 57,196,117,250,131,236,128,141, /* 0x 490 */
|
||||
68, 36,128,106, 0, 57,196,117,250,131,236,128, 49,192, 64,194, /* 0x 4a0 */
|
||||
12, 0,233, 74, 77, 80, 79, 85, 80, 88, 33,161,216,208,213, 0, /* 0x 4b0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4c0 */
|
||||
45, 0, 0, 0, 80, 69, 73, 83, 68, 76, 76, 49, 0, 0, 0, 0, /* 0x 4d0 */
|
||||
0, 0, 0, 0, 0, 11, 0, 0, 0, 80, 69, 77, 65, 73, 78, 50, /* 0x 4e0 */
|
||||
49, 0, 0, 0, 0, 0, 80, 69, 77, 65, 73, 78, 48, 49, 0, 11, /* 0x 4f0 */
|
||||
0, 0, 0, 80, 69, 73, 67, 79, 78, 83, 49, 0, 23, 0, 0, 0, /* 0x 500 */
|
||||
80, 69, 73, 67, 79, 78, 83, 50, 0, 30, 0, 0, 0, 80, 69, 73, /* 0x 510 */
|
||||
67, 79, 78, 83, 90, 0, 39, 0, 0, 0, 80, 69, 84, 76, 83, 72, /* 0x 520 */
|
||||
65, 75, 0, 39, 0, 0, 0, 80, 69, 77, 65, 73, 78, 48, 50, 0, /* 0x 530 */
|
||||
49, 0, 0, 0, 78, 50, 66, 83, 77, 65, 49, 48, 0, 53, 0, 0, /* 0x 540 */
|
||||
0, 0, 0, 0, 0, 55, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, /* 0x 550 */
|
||||
48, 0, 4, 0, 0, 0, 78, 50, 66, 70, 65, 83, 49, 48, 0, 56, /* 0x 560 */
|
||||
0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x 570 */
|
||||
67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, 65, 83, 49, 49, /* 0x 580 */
|
||||
0, 58, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 64, 0, /* 0x 590 */
|
||||
0, 0, 78, 50, 66, 83, 77, 65, 50, 48, 0, 75, 0, 0, 0, 0, /* 0x 5a0 */
|
||||
0, 0, 0, 77, 0, 0, 0, 78, 50, 66, 83, 77, 65, 49, 48, 0, /* 0x 5b0 */
|
||||
2, 0, 0, 0, 78, 50, 66, 70, 65, 83, 50, 48, 0, 80, 0, 0, /* 0x 5c0 */
|
||||
0, 0, 0, 0, 0, 82, 0, 0, 0, 78, 50, 66, 70, 65, 83, 49, /* 0x 5d0 */
|
||||
49, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 87, /* 0x 5e0 */
|
||||
0, 0, 0, 78, 50, 66, 83, 77, 65, 51, 48, 0,100, 0, 0, 0, /* 0x 5f0 */
|
||||
0, 0, 0, 0,113, 0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, /* 0x 600 */
|
||||
0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 51, 48, 0,113, 0, /* 0x 610 */
|
||||
0, 0, 0, 0, 0, 0,117, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 620 */
|
||||
50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 78, /* 0x 630 */
|
||||
50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 68, /* 0x 640 */
|
||||
69, 67, 51, 48, 0,128, 0, 0, 0, 0, 0, 0, 0,146, 0, 0, /* 0x 650 */
|
||||
0, 78, 50, 66, 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x 660 */
|
||||
0, 0,176, 0, 0, 0, 78, 50, 66, 68, 69, 67, 53, 48, 0, 0, /* 0x 670 */
|
||||
0, 0, 0, 78, 50, 66, 83, 77, 65, 52, 48, 0,190, 0, 0, 0, /* 0x 680 */
|
||||
0, 0, 0, 0,203, 0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, /* 0x 690 */
|
||||
0, 49, 0, 0, 0, 78, 50, 66, 70, 65, 83, 52, 48, 0,203, 0, /* 0x 6a0 */
|
||||
0, 0, 0, 0, 0, 0,207, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 6b0 */
|
||||
51, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0,218, 0, 0, 0, 78, /* 0x 6c0 */
|
||||
50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 68, /* 0x 6d0 */
|
||||
85, 77, 77, 49, 0,218, 0, 0, 0, 78, 50, 66, 83, 77, 65, 53, /* 0x 6e0 */
|
||||
48, 0,218, 0, 0, 0, 78, 50, 66, 70, 65, 83, 53, 48, 0,220, /* 0x 6f0 */
|
||||
0, 0, 0, 78, 50, 66, 68, 69, 67, 53, 48, 0,223, 0, 0, 0, /* 0x 700 */
|
||||
78, 50, 66, 83, 77, 65, 54, 48, 0,232, 0, 0, 0, 0, 0, 0, /* 0x 710 */
|
||||
0,246, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, /* 0x 720 */
|
||||
0, 0, 78, 50, 66, 70, 65, 83, 54, 48, 0,246, 0, 0, 0, 0, /* 0x 730 */
|
||||
0, 0, 0,254, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 49, 0, /* 0x 740 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 0, 0, 78, 50, 66, 68, /* 0x 750 */
|
||||
69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, /* 0x 760 */
|
||||
49, 0, 12, 1, 0, 0, 0, 0, 0, 0, 34, 1, 0, 0, 78, 50, /* 0x 770 */
|
||||
66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, /* 0x 780 */
|
||||
67, 54, 48, 0, 34, 1, 0, 0, 78, 82, 86, 50, 66, 69, 78, 68, /* 0x 790 */
|
||||
0, 34, 1, 0, 0, 78, 50, 68, 83, 77, 65, 49, 48, 0, 34, 1, /* 0x 7a0 */
|
||||
0, 0, 0, 0, 0, 0, 36, 1, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x 7b0 */
|
||||
49, 48, 0, 4, 0, 0, 0, 78, 50, 68, 70, 65, 83, 49, 48, 0, /* 0x 7c0 */
|
||||
37, 1, 0, 0, 0, 0, 0, 0, 39, 1, 0, 0, 78, 50, 68, 68, /* 0x 7d0 */
|
||||
69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, 70, 65, 83, 49, /* 0x 7e0 */
|
||||
49, 0, 39, 1, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 45, /* 0x 7f0 */
|
||||
1, 0, 0, 78, 50, 68, 83, 77, 65, 50, 48, 0, 56, 1, 0, 0, /* 0x 800 */
|
||||
0, 0, 0, 0, 58, 1, 0, 0, 78, 50, 68, 83, 77, 65, 49, 48, /* 0x 810 */
|
||||
0, 2, 0, 0, 0, 78, 50, 68, 70, 65, 83, 50, 48, 0, 61, 1, /* 0x 820 */
|
||||
0, 0, 0, 0, 0, 0, 63, 1, 0, 0, 78, 50, 68, 70, 65, 83, /* 0x 830 */
|
||||
49, 49, 0, 0, 0, 0, 0, 78, 50, 68, 68, 69, 67, 50, 48, 0, /* 0x 840 */
|
||||
68, 1, 0, 0, 78, 50, 68, 83, 77, 65, 51, 48, 0, 81, 1, 0, /* 0x 850 */
|
||||
0, 0, 0, 0, 0, 94, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, /* 0x 860 */
|
||||
48, 0, 16, 0, 0, 0, 78, 50, 68, 70, 65, 83, 51, 48, 0, 94, /* 0x 870 */
|
||||
1, 0, 0, 0, 0, 0, 0,100, 1, 0, 0, 78, 50, 68, 68, 69, /* 0x 880 */
|
||||
67, 51, 48, 0, 16, 0, 0, 0, 0, 0, 0, 0,109, 1, 0, 0, /* 0x 890 */
|
||||
78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, /* 0x 8a0 */
|
||||
68, 69, 67, 51, 48, 0,109, 1, 0, 0, 0, 0, 0, 0,125, 1, /* 0x 8b0 */
|
||||
0, 0, 78, 50, 68, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, /* 0x 8c0 */
|
||||
0, 0, 0,143, 1, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, 0, /* 0x 8d0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,177, 1, 0, 0, 78, 50, 68, 68, /* 0x 8e0 */
|
||||
69, 67, 53, 48, 0, 0, 0, 0, 0, 78, 50, 68, 83, 77, 65, 52, /* 0x 8f0 */
|
||||
48, 0,191, 1, 0, 0, 0, 0, 0, 0,204, 1, 0, 0, 78, 50, /* 0x 900 */
|
||||
68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, 78, 50, 68, 70, 65, /* 0x 910 */
|
||||
83, 52, 48, 0,204, 1, 0, 0, 0, 0, 0, 0,208, 1, 0, 0, /* 0x 920 */
|
||||
78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, 0, 0, 0, /* 0x 930 */
|
||||
0,219, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, /* 0x 940 */
|
||||
0, 0, 78, 50, 68, 68, 85, 77, 77, 49, 0,219, 1, 0, 0, 78, /* 0x 950 */
|
||||
50, 68, 83, 77, 65, 53, 48, 0,219, 1, 0, 0, 78, 50, 68, 70, /* 0x 960 */
|
||||
65, 83, 53, 48, 0,221, 1, 0, 0, 78, 50, 68, 68, 69, 67, 53, /* 0x 970 */
|
||||
48, 0,224, 1, 0, 0, 78, 50, 68, 83, 77, 65, 54, 48, 0,233, /* 0x 980 */
|
||||
1, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 78, 50, 68, 68, 69, /* 0x 990 */
|
||||
67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 70, 65, 83, 54, 48, /* 0x 9a0 */
|
||||
0,247, 1, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 78, 50, 68, /* 0x 9b0 */
|
||||
70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 2, /* 0x 9c0 */
|
||||
0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, /* 0x 9d0 */
|
||||
50, 68, 70, 65, 83, 54, 49, 0, 13, 2, 0, 0, 0, 0, 0, 0, /* 0x 9e0 */
|
||||
35, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, /* 0x 9f0 */
|
||||
0, 78, 50, 68, 68, 69, 67, 54, 48, 0, 35, 2, 0, 0, 78, 82, /* 0x a00 */
|
||||
86, 50, 68, 69, 78, 68, 0, 35, 2, 0, 0, 78, 50, 69, 83, 77, /* 0x a10 */
|
||||
65, 49, 48, 0, 35, 2, 0, 0, 0, 0, 0, 0, 37, 2, 0, 0, /* 0x a20 */
|
||||
78, 50, 69, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 69, /* 0x a30 */
|
||||
70, 65, 83, 49, 48, 0, 38, 2, 0, 0, 0, 0, 0, 0, 40, 2, /* 0x a40 */
|
||||
0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, /* 0x a50 */
|
||||
50, 69, 70, 65, 83, 49, 49, 0, 40, 2, 0, 0, 78, 50, 69, 68, /* 0x a60 */
|
||||
69, 67, 49, 48, 0, 46, 2, 0, 0, 78, 50, 69, 83, 77, 65, 50, /* 0x a70 */
|
||||
48, 0, 57, 2, 0, 0, 0, 0, 0, 0, 59, 2, 0, 0, 78, 50, /* 0x a80 */
|
||||
69, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 69, 70, 65, /* 0x a90 */
|
||||
83, 50, 48, 0, 62, 2, 0, 0, 0, 0, 0, 0, 64, 2, 0, 0, /* 0x aa0 */
|
||||
78, 50, 69, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 69, /* 0x ab0 */
|
||||
68, 69, 67, 50, 48, 0, 69, 2, 0, 0, 78, 50, 69, 83, 77, 65, /* 0x ac0 */
|
||||
51, 48, 0, 82, 2, 0, 0, 0, 0, 0, 0, 95, 2, 0, 0, 78, /* 0x ad0 */
|
||||
50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 78, 50, 69, 70, /* 0x ae0 */
|
||||
65, 83, 51, 48, 0, 95, 2, 0, 0, 0, 0, 0, 0,101, 2, 0, /* 0x af0 */
|
||||
0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, 0, 0, /* 0x b00 */
|
||||
0, 0,110, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, /* 0x b10 */
|
||||
0, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0,110, 2, 0, 0, /* 0x b20 */
|
||||
0, 0, 0, 0,126, 2, 0, 0, 78, 50, 69, 68, 69, 67, 50, 48, /* 0x b30 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, 0, 78, 50, 69, /* 0x b40 */
|
||||
68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 2, /* 0x b50 */
|
||||
0, 0, 78, 50, 69, 68, 69, 67, 54, 48, 0, 0, 0, 0, 0, 78, /* 0x b60 */
|
||||
50, 69, 83, 77, 65, 52, 48, 0,205, 2, 0, 0, 0, 0, 0, 0, /* 0x b70 */
|
||||
218, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, /* 0x b80 */
|
||||
0, 78, 50, 69, 70, 65, 83, 52, 48, 0,218, 2, 0, 0, 0, 0, /* 0x b90 */
|
||||
0, 0,222, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 82, /* 0x ba0 */
|
||||
0, 0, 0, 0, 0, 0, 0,233, 2, 0, 0, 78, 50, 69, 68, 69, /* 0x bb0 */
|
||||
67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, 68, 85, 77, 77, 49, /* 0x bc0 */
|
||||
0,233, 2, 0, 0, 78, 50, 69, 83, 77, 65, 53, 48, 0,233, 2, /* 0x bd0 */
|
||||
0, 0, 78, 50, 69, 70, 65, 83, 53, 48, 0,235, 2, 0, 0, 78, /* 0x be0 */
|
||||
50, 69, 68, 69, 67, 53, 48, 0,238, 2, 0, 0, 78, 50, 69, 83, /* 0x bf0 */
|
||||
77, 65, 54, 48, 0,247, 2, 0, 0, 0, 0, 0, 0, 5, 3, 0, /* 0x c00 */
|
||||
0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, /* 0x c10 */
|
||||
69, 70, 65, 83, 54, 48, 0, 5, 3, 0, 0, 0, 0, 0, 0, 13, /* 0x c20 */
|
||||
3, 0, 0, 78, 50, 69, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, /* 0x c30 */
|
||||
0, 0, 0, 0, 27, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, /* 0x c40 */
|
||||
0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, 54, 49, 0, 27, 3, /* 0x c50 */
|
||||
0, 0, 0, 0, 0, 0, 49, 3, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x c60 */
|
||||
49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 68, 69, 67, 54, 48, 0, /* 0x c70 */
|
||||
49, 3, 0, 0, 78, 82, 86, 50, 69, 69, 78, 68, 0, 49, 3, 0, /* 0x c80 */
|
||||
0, 80, 69, 77, 85, 76, 84, 73, 80, 0, 49, 3, 0, 0, 0, 0, /* 0x c90 */
|
||||
0, 0, 58, 3, 0, 0, 80, 69, 77, 65, 73, 78, 48, 50, 0, 1, /* 0x ca0 */
|
||||
0, 0, 0, 80, 69, 77, 65, 73, 78, 49, 48, 0, 58, 3, 0, 0, /* 0x cb0 */
|
||||
80, 69, 67, 65, 76, 76, 84, 82, 0, 59, 3, 0, 0, 80, 69, 67, /* 0x cc0 */
|
||||
84, 84, 80, 79, 83, 0, 59, 3, 0, 0, 80, 69, 67, 84, 84, 78, /* 0x cd0 */
|
||||
85, 76, 0, 65, 3, 0, 0, 80, 69, 68, 85, 77, 77, 89, 48, 0, /* 0x ce0 */
|
||||
67, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0, 67, 3, 0, /* 0x cf0 */
|
||||
0, 67, 84, 67, 76, 69, 86, 69, 49, 0, 81, 3, 0, 0, 0, 0, /* 0x d00 */
|
||||
0, 0, 86, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, 0, 5, /* 0x d10 */
|
||||
0, 0, 0, 67, 65, 76, 76, 84, 82, 48, 49, 0, 86, 3, 0, 0, /* 0x d20 */
|
||||
67, 84, 68, 85, 77, 77, 89, 49, 0, 91, 3, 0, 0, 67, 84, 66, /* 0x d30 */
|
||||
83, 72, 82, 48, 49, 0, 91, 3, 0, 0, 67, 84, 66, 82, 79, 82, /* 0x d40 */
|
||||
48, 49, 0, 95, 3, 0, 0, 67, 84, 66, 83, 87, 65, 48, 49, 0, /* 0x d50 */
|
||||
97, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 50, 0,102, 3, 0, /* 0x d60 */
|
||||
0, 0, 0, 0, 0,118, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, /* 0x d70 */
|
||||
48, 0, 10, 0, 0, 0, 67, 65, 76, 76, 84, 82, 49, 48, 0,118, /* 0x d80 */
|
||||
3, 0, 0, 67, 65, 76, 76, 84, 82, 69, 56, 0,123, 3, 0, 0, /* 0x d90 */
|
||||
67, 65, 76, 76, 84, 82, 69, 57, 0,125, 3, 0, 0, 67, 65, 76, /* 0x da0 */
|
||||
76, 84, 82, 49, 49, 0,127, 3, 0, 0, 0, 0, 0, 0,131, 3, /* 0x db0 */
|
||||
0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0, 7, 0, 0, 0, 67, /* 0x dc0 */
|
||||
84, 67, 76, 69, 86, 69, 50, 0,131, 3, 0, 0, 0, 0, 0, 0, /* 0x dd0 */
|
||||
136, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 49, 0, 0, 0, 0, /* 0x de0 */
|
||||
0, 67, 65, 76, 76, 84, 82, 49, 50, 0,136, 3, 0, 0, 67, 84, /* 0x df0 */
|
||||
68, 85, 77, 77, 89, 50, 0,138, 3, 0, 0, 67, 84, 66, 83, 72, /* 0x e00 */
|
||||
82, 49, 49, 0,138, 3, 0, 0, 67, 84, 66, 82, 79, 82, 49, 49, /* 0x e10 */
|
||||
0,142, 3, 0, 0, 67, 84, 66, 83, 87, 65, 49, 49, 0,144, 3, /* 0x e20 */
|
||||
0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0,149, 3, 0, 0, 0, /* 0x e30 */
|
||||
0, 0, 0,156, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 48, 0, /* 0x e40 */
|
||||
5, 0, 0, 0, 67, 84, 84, 72, 69, 69, 78, 68, 0,156, 3, 0, /* 0x e50 */
|
||||
0, 80, 69, 68, 85, 77, 77, 89, 49, 0,156, 3, 0, 0, 80, 69, /* 0x e60 */
|
||||
73, 77, 80, 79, 82, 84, 0,156, 3, 0, 0, 0, 0, 0, 0,168, /* 0x e70 */
|
||||
3, 0, 0, 80, 69, 73, 77, 68, 79, 78, 69, 0, 0, 0, 0, 0, /* 0x e80 */
|
||||
80, 69, 73, 66, 89, 79, 82, 68, 0,200, 3, 0, 0, 0, 0, 0, /* 0x e90 */
|
||||
0,202, 3, 0, 0, 80, 69, 73, 77, 79, 82, 68, 49, 0, 7, 0, /* 0x ea0 */
|
||||
0, 0, 80, 69, 75, 51, 50, 79, 82, 68, 0,202, 3, 0, 0, 0, /* 0x eb0 */
|
||||
0, 0, 0,218, 3, 0, 0, 80, 69, 73, 77, 80, 79, 82, 50, 0, /* 0x ec0 */
|
||||
15, 0, 0, 0, 80, 69, 73, 77, 79, 82, 68, 49, 0,218, 3, 0, /* 0x ed0 */
|
||||
0, 80, 69, 73, 77, 80, 79, 82, 50, 0,225, 3, 0, 0, 0, 0, /* 0x ee0 */
|
||||
0, 0,247, 3, 0, 0, 80, 69, 73, 77, 80, 79, 82, 84, 0, 35, /* 0x ef0 */
|
||||
0, 0, 0, 80, 69, 73, 69, 82, 68, 76, 76, 0,247, 3, 0, 0, /* 0x f00 */
|
||||
80, 69, 73, 69, 82, 69, 88, 69, 0,253, 3, 0, 0, 80, 69, 73, /* 0x f10 */
|
||||
77, 68, 79, 78, 69, 0, 3, 4, 0, 0, 80, 69, 73, 77, 80, 79, /* 0x f20 */
|
||||
82, 57, 0, 3, 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 49, 0, /* 0x f30 */
|
||||
3, 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 50, 0, 9, 4, 0, /* 0x f40 */
|
||||
0, 80, 69, 82, 69, 76, 79, 67, 51, 0, 12, 4, 0, 0, 82, 69, /* 0x f50 */
|
||||
76, 79, 67, 51, 50, 48, 0, 15, 4, 0, 0, 0, 0, 0, 0, 24, /* 0x f60 */
|
||||
4, 0, 0, 82, 69, 76, 79, 67, 51, 50, 74, 0, 2, 0, 0, 0, /* 0x f70 */
|
||||
82, 69, 76, 51, 50, 66, 73, 71, 0, 56, 4, 0, 0, 0, 0, 0, /* 0x f80 */
|
||||
0, 60, 4, 0, 0, 82, 69, 76, 79, 67, 51, 50, 48, 0, 13, 0, /* 0x f90 */
|
||||
0, 0, 82, 69, 76, 79, 67, 51, 50, 74, 0, 65, 4, 0, 0, 0, /* 0x fa0 */
|
||||
0, 0, 0, 67, 4, 0, 0, 82, 69, 76, 79, 67, 51, 50, 48, 0, /* 0x fb0 */
|
||||
13, 0, 0, 0, 82, 69, 76, 51, 50, 69, 78, 68, 0, 67, 4, 0, /* 0x fc0 */
|
||||
0, 80, 69, 82, 69, 76, 79, 67, 57, 0, 67, 4, 0, 0, 80, 69, /* 0x fd0 */
|
||||
82, 76, 79, 72, 73, 48, 0, 67, 4, 0, 0, 80, 69, 82, 76, 79, /* 0x fe0 */
|
||||
72, 73, 90, 0, 75, 4, 0, 0, 80, 69, 82, 69, 76, 76, 79, 48, /* 0x ff0 */
|
||||
0, 75, 4, 0, 0, 80, 69, 82, 69, 76, 76, 79, 90, 0, 85, 4, /* 0x1000 */
|
||||
0, 0, 80, 69, 82, 69, 76, 72, 73, 48, 0, 85, 4, 0, 0, 80, /* 0x1010 */
|
||||
69, 82, 69, 76, 72, 73, 90, 0, 98, 4, 0, 0, 80, 69, 68, 69, /* 0x1020 */
|
||||
80, 72, 65, 75, 0, 98, 4, 0, 0, 80, 69, 68, 69, 80, 72, 65, /* 0x1030 */
|
||||
88, 0,139, 4, 0, 0, 80, 69, 77, 65, 73, 78, 50, 48, 0,139, /* 0x1040 */
|
||||
4, 0, 0, 80, 69, 82, 69, 84, 85, 82, 78, 95, 67, 76, 69, 65, /* 0x1050 */
|
||||
82, 83, 84, 65, 67, 75, 0,140, 4, 0, 0, 80, 69, 82, 69, 84, /* 0x1060 */
|
||||
85, 82, 78, 95, 67, 76, 69, 65, 82, 83, 84, 65, 67, 75, 57, 0, /* 0x1070 */
|
||||
153, 4, 0, 0, 80, 69, 68, 79, 74, 85, 77, 80, 95, 67, 76, 69, /* 0x1080 */
|
||||
65, 82, 83, 84, 65, 67, 75, 0,153, 4, 0, 0, 80, 69, 68, 79, /* 0x1090 */
|
||||
74, 85, 77, 80, 95, 67, 76, 69, 65, 82, 83, 84, 65, 67, 75, 57, /* 0x10a0 */
|
||||
0,166, 4, 0, 0, 80, 69, 77, 65, 73, 78, 50, 49, 0,166, 4, /* 0x10b0 */
|
||||
0, 0, 80, 69, 82, 69, 84, 85, 82, 78, 0,166, 4, 0, 0, 80, /* 0x10c0 */
|
||||
69, 68, 79, 74, 85, 77, 80, 0,172, 4, 0, 0, 80, 69, 68, 85, /* 0x10d0 */
|
||||
77, 77, 89, 51, 0,177, 4, 0, 0, 85, 80, 88, 49, 72, 69, 65, /* 0x10e0 */
|
||||
68, 0,177, 4, 0, 0, 80, 69, 84, 72, 69, 69, 78, 68, 0,209, /* 0x10f0 */
|
||||
4, 0, 0,255,255,255,255,209, 4 /* 0x1100 */
|
||||
0, 0, 0, 0, 0, 0, 45, 0, 80, 69, 73, 83, 68, 76, 76, 49, /* 0x 4d0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 80, 69, 77, /* 0x 4e0 */
|
||||
65, 73, 78, 50, 49, 0, 0, 0, 0, 0, 80, 69, 77, 65, 73, 78, /* 0x 4f0 */
|
||||
48, 49, 0, 11, 0, 0, 0, 80, 69, 73, 67, 79, 78, 83, 49, 0, /* 0x 500 */
|
||||
23, 0, 0, 0, 80, 69, 73, 67, 79, 78, 83, 50, 0, 30, 0, 0, /* 0x 510 */
|
||||
0, 80, 69, 73, 67, 79, 78, 83, 90, 0, 39, 0, 0, 0, 80, 69, /* 0x 520 */
|
||||
84, 76, 83, 72, 65, 75, 0, 39, 0, 0, 0, 80, 69, 77, 65, 73, /* 0x 530 */
|
||||
78, 48, 50, 0, 49, 0, 0, 0, 78, 50, 66, 83, 77, 65, 49, 48, /* 0x 540 */
|
||||
0, 53, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 78, 50, 66, /* 0x 550 */
|
||||
68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, 65, 83, /* 0x 560 */
|
||||
49, 48, 0, 56, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 78, /* 0x 570 */
|
||||
50, 66, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 66, 70, /* 0x 580 */
|
||||
65, 83, 49, 49, 0, 58, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, /* 0x 590 */
|
||||
48, 0, 64, 0, 0, 0, 78, 50, 66, 83, 77, 65, 50, 48, 0, 75, /* 0x 5a0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 78, 50, 66, 83, 77, /* 0x 5b0 */
|
||||
65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 66, 70, 65, 83, 50, 48, /* 0x 5c0 */
|
||||
0, 80, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 78, 50, 66, /* 0x 5d0 */
|
||||
70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 5e0 */
|
||||
50, 48, 0, 87, 0, 0, 0, 78, 50, 66, 83, 77, 65, 51, 48, 0, /* 0x 5f0 */
|
||||
100, 0, 0, 0, 0, 0, 0, 0,113, 0, 0, 0, 78, 50, 66, 68, /* 0x 600 */
|
||||
69, 67, 50, 48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 51, /* 0x 610 */
|
||||
48, 0,113, 0, 0, 0, 0, 0, 0, 0,117, 0, 0, 0, 78, 50, /* 0x 620 */
|
||||
66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, /* 0x 630 */
|
||||
0, 0, 0, 78, 50, 66, 68, 69, 67, 50, 48, 0, 0, 0, 0, 0, /* 0x 640 */
|
||||
78, 50, 66, 68, 69, 67, 51, 48, 0,128, 0, 0, 0, 0, 0, 0, /* 0x 650 */
|
||||
0,146, 0, 0, 0, 78, 50, 66, 68, 69, 67, 54, 48, 0, 0, 0, /* 0x 660 */
|
||||
0, 0, 0, 0, 0, 0,176, 0, 0, 0, 78, 50, 66, 68, 69, 67, /* 0x 670 */
|
||||
53, 48, 0, 0, 0, 0, 0, 78, 50, 66, 83, 77, 65, 52, 48, 0, /* 0x 680 */
|
||||
190, 0, 0, 0, 0, 0, 0, 0,203, 0, 0, 0, 78, 50, 66, 68, /* 0x 690 */
|
||||
69, 67, 51, 48, 0, 49, 0, 0, 0, 78, 50, 66, 70, 65, 83, 52, /* 0x 6a0 */
|
||||
48, 0,203, 0, 0, 0, 0, 0, 0, 0,207, 0, 0, 0, 78, 50, /* 0x 6b0 */
|
||||
66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0,218, /* 0x 6c0 */
|
||||
0, 0, 0, 78, 50, 66, 68, 69, 67, 51, 48, 0, 49, 0, 0, 0, /* 0x 6d0 */
|
||||
78, 50, 66, 68, 85, 77, 77, 49, 0,218, 0, 0, 0, 78, 50, 66, /* 0x 6e0 */
|
||||
83, 77, 65, 53, 48, 0,218, 0, 0, 0, 78, 50, 66, 70, 65, 83, /* 0x 6f0 */
|
||||
53, 48, 0,220, 0, 0, 0, 78, 50, 66, 68, 69, 67, 53, 48, 0, /* 0x 700 */
|
||||
223, 0, 0, 0, 78, 50, 66, 83, 77, 65, 54, 48, 0,232, 0, 0, /* 0x 710 */
|
||||
0, 0, 0, 0, 0,246, 0, 0, 0, 78, 50, 66, 68, 69, 67, 49, /* 0x 720 */
|
||||
48, 0, 0, 0, 0, 0, 78, 50, 66, 70, 65, 83, 54, 48, 0,246, /* 0x 730 */
|
||||
0, 0, 0, 0, 0, 0, 0,254, 0, 0, 0, 78, 50, 66, 70, 65, /* 0x 740 */
|
||||
83, 54, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 1, 0, 0, /* 0x 750 */
|
||||
78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 66, /* 0x 760 */
|
||||
70, 65, 83, 54, 49, 0, 12, 1, 0, 0, 0, 0, 0, 0, 34, 1, /* 0x 770 */
|
||||
0, 0, 78, 50, 66, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, /* 0x 780 */
|
||||
50, 66, 68, 69, 67, 54, 48, 0, 34, 1, 0, 0, 78, 82, 86, 50, /* 0x 790 */
|
||||
66, 69, 78, 68, 0, 34, 1, 0, 0, 78, 50, 68, 83, 77, 65, 49, /* 0x 7a0 */
|
||||
48, 0, 34, 1, 0, 0, 0, 0, 0, 0, 36, 1, 0, 0, 78, 50, /* 0x 7b0 */
|
||||
68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, 70, 65, /* 0x 7c0 */
|
||||
83, 49, 48, 0, 37, 1, 0, 0, 0, 0, 0, 0, 39, 1, 0, 0, /* 0x 7d0 */
|
||||
78, 50, 68, 68, 69, 67, 49, 48, 0, 4, 0, 0, 0, 78, 50, 68, /* 0x 7e0 */
|
||||
70, 65, 83, 49, 49, 0, 39, 1, 0, 0, 78, 50, 68, 68, 69, 67, /* 0x 7f0 */
|
||||
49, 48, 0, 45, 1, 0, 0, 78, 50, 68, 83, 77, 65, 50, 48, 0, /* 0x 800 */
|
||||
56, 1, 0, 0, 0, 0, 0, 0, 58, 1, 0, 0, 78, 50, 68, 83, /* 0x 810 */
|
||||
77, 65, 49, 48, 0, 2, 0, 0, 0, 78, 50, 68, 70, 65, 83, 50, /* 0x 820 */
|
||||
48, 0, 61, 1, 0, 0, 0, 0, 0, 0, 63, 1, 0, 0, 78, 50, /* 0x 830 */
|
||||
68, 70, 65, 83, 49, 49, 0, 0, 0, 0, 0, 78, 50, 68, 68, 69, /* 0x 840 */
|
||||
67, 50, 48, 0, 68, 1, 0, 0, 78, 50, 68, 83, 77, 65, 51, 48, /* 0x 850 */
|
||||
0, 81, 1, 0, 0, 0, 0, 0, 0, 94, 1, 0, 0, 78, 50, 68, /* 0x 860 */
|
||||
68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 78, 50, 68, 70, 65, 83, /* 0x 870 */
|
||||
51, 48, 0, 94, 1, 0, 0, 0, 0, 0, 0,100, 1, 0, 0, 78, /* 0x 880 */
|
||||
50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, 0, 0, 0, 0, 0, /* 0x 890 */
|
||||
109, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 16, 0, 0, /* 0x 8a0 */
|
||||
0, 78, 50, 68, 68, 69, 67, 51, 48, 0,109, 1, 0, 0, 0, 0, /* 0x 8b0 */
|
||||
0, 0,125, 1, 0, 0, 78, 50, 68, 68, 69, 67, 50, 48, 0, 0, /* 0x 8c0 */
|
||||
0, 0, 0, 0, 0, 0, 0,143, 1, 0, 0, 78, 50, 68, 68, 69, /* 0x 8d0 */
|
||||
67, 54, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,177, 1, 0, 0, /* 0x 8e0 */
|
||||
78, 50, 68, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 78, 50, 68, /* 0x 8f0 */
|
||||
83, 77, 65, 52, 48, 0,191, 1, 0, 0, 0, 0, 0, 0,204, 1, /* 0x 900 */
|
||||
0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, 0, 78, /* 0x 910 */
|
||||
50, 68, 70, 65, 83, 52, 48, 0,204, 1, 0, 0, 0, 0, 0, 0, /* 0x 920 */
|
||||
208, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, 48, 0, 69, 0, 0, /* 0x 930 */
|
||||
0, 0, 0, 0, 0,219, 1, 0, 0, 78, 50, 68, 68, 69, 67, 51, /* 0x 940 */
|
||||
48, 0, 69, 0, 0, 0, 78, 50, 68, 68, 85, 77, 77, 49, 0,219, /* 0x 950 */
|
||||
1, 0, 0, 78, 50, 68, 83, 77, 65, 53, 48, 0,219, 1, 0, 0, /* 0x 960 */
|
||||
78, 50, 68, 70, 65, 83, 53, 48, 0,221, 1, 0, 0, 78, 50, 68, /* 0x 970 */
|
||||
68, 69, 67, 53, 48, 0,224, 1, 0, 0, 78, 50, 68, 83, 77, 65, /* 0x 980 */
|
||||
54, 48, 0,233, 1, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 78, /* 0x 990 */
|
||||
50, 68, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 68, 70, /* 0x 9a0 */
|
||||
65, 83, 54, 48, 0,247, 1, 0, 0, 0, 0, 0, 0,255, 1, 0, /* 0x 9b0 */
|
||||
0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 0, 0, 0, 0, 0, 0, /* 0x 9c0 */
|
||||
0, 0, 13, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, 0, 0, /* 0x 9d0 */
|
||||
0, 0, 0, 78, 50, 68, 70, 65, 83, 54, 49, 0, 13, 2, 0, 0, /* 0x 9e0 */
|
||||
0, 0, 0, 0, 35, 2, 0, 0, 78, 50, 68, 68, 69, 67, 49, 48, /* 0x 9f0 */
|
||||
0, 0, 0, 0, 0, 78, 50, 68, 68, 69, 67, 54, 48, 0, 35, 2, /* 0x a00 */
|
||||
0, 0, 78, 82, 86, 50, 68, 69, 78, 68, 0, 35, 2, 0, 0, 78, /* 0x a10 */
|
||||
50, 69, 83, 77, 65, 49, 48, 0, 35, 2, 0, 0, 0, 0, 0, 0, /* 0x a20 */
|
||||
37, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, 0, 0, /* 0x a30 */
|
||||
0, 78, 50, 69, 70, 65, 83, 49, 48, 0, 38, 2, 0, 0, 0, 0, /* 0x a40 */
|
||||
0, 0, 40, 2, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 4, /* 0x a50 */
|
||||
0, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 40, 2, 0, 0, /* 0x a60 */
|
||||
78, 50, 69, 68, 69, 67, 49, 48, 0, 46, 2, 0, 0, 78, 50, 69, /* 0x a70 */
|
||||
83, 77, 65, 50, 48, 0, 57, 2, 0, 0, 0, 0, 0, 0, 59, 2, /* 0x a80 */
|
||||
0, 0, 78, 50, 69, 83, 77, 65, 49, 48, 0, 2, 0, 0, 0, 78, /* 0x a90 */
|
||||
50, 69, 70, 65, 83, 50, 48, 0, 62, 2, 0, 0, 0, 0, 0, 0, /* 0x aa0 */
|
||||
64, 2, 0, 0, 78, 50, 69, 70, 65, 83, 49, 49, 0, 0, 0, 0, /* 0x ab0 */
|
||||
0, 78, 50, 69, 68, 69, 67, 50, 48, 0, 69, 2, 0, 0, 78, 50, /* 0x ac0 */
|
||||
69, 83, 77, 65, 51, 48, 0, 82, 2, 0, 0, 0, 0, 0, 0, 95, /* 0x ad0 */
|
||||
2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, 0, 0, /* 0x ae0 */
|
||||
78, 50, 69, 70, 65, 83, 51, 48, 0, 95, 2, 0, 0, 0, 0, 0, /* 0x af0 */
|
||||
0,101, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, 31, 0, /* 0x b00 */
|
||||
0, 0, 0, 0, 0, 0,110, 2, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x b10 */
|
||||
51, 48, 0, 31, 0, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, 0, /* 0x b20 */
|
||||
110, 2, 0, 0, 0, 0, 0, 0,126, 2, 0, 0, 78, 50, 69, 68, /* 0x b30 */
|
||||
69, 67, 50, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 2, 0, /* 0x b40 */
|
||||
0, 78, 50, 69, 68, 69, 67, 53, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x b50 */
|
||||
0, 0,159, 2, 0, 0, 78, 50, 69, 68, 69, 67, 54, 48, 0, 0, /* 0x b60 */
|
||||
0, 0, 0, 78, 50, 69, 83, 77, 65, 52, 48, 0,205, 2, 0, 0, /* 0x b70 */
|
||||
0, 0, 0, 0,218, 2, 0, 0, 78, 50, 69, 68, 69, 67, 51, 48, /* 0x b80 */
|
||||
0, 82, 0, 0, 0, 78, 50, 69, 70, 65, 83, 52, 48, 0,218, 2, /* 0x b90 */
|
||||
0, 0, 0, 0, 0, 0,222, 2, 0, 0, 78, 50, 69, 68, 69, 67, /* 0x ba0 */
|
||||
51, 48, 0, 82, 0, 0, 0, 0, 0, 0, 0,233, 2, 0, 0, 78, /* 0x bb0 */
|
||||
50, 69, 68, 69, 67, 51, 48, 0, 82, 0, 0, 0, 78, 50, 69, 68, /* 0x bc0 */
|
||||
85, 77, 77, 49, 0,233, 2, 0, 0, 78, 50, 69, 83, 77, 65, 53, /* 0x bd0 */
|
||||
48, 0,233, 2, 0, 0, 78, 50, 69, 70, 65, 83, 53, 48, 0,235, /* 0x be0 */
|
||||
2, 0, 0, 78, 50, 69, 68, 69, 67, 53, 48, 0,238, 2, 0, 0, /* 0x bf0 */
|
||||
78, 50, 69, 83, 77, 65, 54, 48, 0,247, 2, 0, 0, 0, 0, 0, /* 0x c00 */
|
||||
0, 5, 3, 0, 0, 78, 50, 69, 68, 69, 67, 49, 48, 0, 0, 0, /* 0x c10 */
|
||||
0, 0, 78, 50, 69, 70, 65, 83, 54, 48, 0, 5, 3, 0, 0, 0, /* 0x c20 */
|
||||
0, 0, 0, 13, 3, 0, 0, 78, 50, 69, 70, 65, 83, 54, 49, 0, /* 0x c30 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 27, 3, 0, 0, 78, 50, 69, 68, /* 0x c40 */
|
||||
69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 70, 65, 83, 54, /* 0x c50 */
|
||||
49, 0, 27, 3, 0, 0, 0, 0, 0, 0, 49, 3, 0, 0, 78, 50, /* 0x c60 */
|
||||
69, 68, 69, 67, 49, 48, 0, 0, 0, 0, 0, 78, 50, 69, 68, 69, /* 0x c70 */
|
||||
67, 54, 48, 0, 49, 3, 0, 0, 78, 82, 86, 50, 69, 69, 78, 68, /* 0x c80 */
|
||||
0, 49, 3, 0, 0, 80, 69, 77, 85, 76, 84, 73, 80, 0, 49, 3, /* 0x c90 */
|
||||
0, 0, 0, 0, 0, 0, 58, 3, 0, 0, 80, 69, 77, 65, 73, 78, /* 0x ca0 */
|
||||
48, 50, 0, 1, 0, 0, 0, 80, 69, 77, 65, 73, 78, 49, 48, 0, /* 0x cb0 */
|
||||
58, 3, 0, 0, 80, 69, 67, 65, 76, 76, 84, 82, 0, 59, 3, 0, /* 0x cc0 */
|
||||
0, 80, 69, 67, 84, 84, 80, 79, 83, 0, 59, 3, 0, 0, 80, 69, /* 0x cd0 */
|
||||
67, 84, 84, 78, 85, 76, 0, 65, 3, 0, 0, 80, 69, 68, 85, 77, /* 0x ce0 */
|
||||
77, 89, 48, 0, 67, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 48, /* 0x cf0 */
|
||||
0, 67, 3, 0, 0, 67, 84, 67, 76, 69, 86, 69, 49, 0, 81, 3, /* 0x d00 */
|
||||
0, 0, 0, 0, 0, 0, 86, 3, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x d10 */
|
||||
48, 48, 0, 5, 0, 0, 0, 67, 65, 76, 76, 84, 82, 48, 49, 0, /* 0x d20 */
|
||||
86, 3, 0, 0, 67, 84, 68, 85, 77, 77, 89, 49, 0, 91, 3, 0, /* 0x d30 */
|
||||
0, 67, 84, 66, 83, 72, 82, 48, 49, 0, 91, 3, 0, 0, 67, 84, /* 0x d40 */
|
||||
66, 82, 79, 82, 48, 49, 0, 95, 3, 0, 0, 67, 84, 66, 83, 87, /* 0x d50 */
|
||||
65, 48, 49, 0, 97, 3, 0, 0, 67, 65, 76, 76, 84, 82, 48, 50, /* 0x d60 */
|
||||
0,102, 3, 0, 0, 0, 0, 0, 0,118, 3, 0, 0, 67, 65, 76, /* 0x d70 */
|
||||
76, 84, 82, 48, 48, 0, 10, 0, 0, 0, 67, 65, 76, 76, 84, 82, /* 0x d80 */
|
||||
49, 48, 0,118, 3, 0, 0, 67, 65, 76, 76, 84, 82, 69, 56, 0, /* 0x d90 */
|
||||
123, 3, 0, 0, 67, 65, 76, 76, 84, 82, 69, 57, 0,125, 3, 0, /* 0x da0 */
|
||||
0, 67, 65, 76, 76, 84, 82, 49, 49, 0,127, 3, 0, 0, 0, 0, /* 0x db0 */
|
||||
0, 0,131, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0, 7, /* 0x dc0 */
|
||||
0, 0, 0, 67, 84, 67, 76, 69, 86, 69, 50, 0,131, 3, 0, 0, /* 0x dd0 */
|
||||
0, 0, 0, 0,136, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 49, /* 0x de0 */
|
||||
0, 0, 0, 0, 0, 67, 65, 76, 76, 84, 82, 49, 50, 0,136, 3, /* 0x df0 */
|
||||
0, 0, 67, 84, 68, 85, 77, 77, 89, 50, 0,138, 3, 0, 0, 67, /* 0x e00 */
|
||||
84, 66, 83, 72, 82, 49, 49, 0,138, 3, 0, 0, 67, 84, 66, 82, /* 0x e10 */
|
||||
79, 82, 49, 49, 0,142, 3, 0, 0, 67, 84, 66, 83, 87, 65, 49, /* 0x e20 */
|
||||
49, 0,144, 3, 0, 0, 67, 65, 76, 76, 84, 82, 49, 51, 0,149, /* 0x e30 */
|
||||
3, 0, 0, 0, 0, 0, 0,156, 3, 0, 0, 67, 65, 76, 76, 84, /* 0x e40 */
|
||||
82, 49, 48, 0, 5, 0, 0, 0, 67, 84, 84, 72, 69, 69, 78, 68, /* 0x e50 */
|
||||
0,156, 3, 0, 0, 80, 69, 68, 85, 77, 77, 89, 49, 0,156, 3, /* 0x e60 */
|
||||
0, 0, 80, 69, 73, 77, 80, 79, 82, 84, 0,156, 3, 0, 0, 0, /* 0x e70 */
|
||||
0, 0, 0,168, 3, 0, 0, 80, 69, 73, 77, 68, 79, 78, 69, 0, /* 0x e80 */
|
||||
0, 0, 0, 0, 80, 69, 73, 66, 89, 79, 82, 68, 0,200, 3, 0, /* 0x e90 */
|
||||
0, 0, 0, 0, 0,202, 3, 0, 0, 80, 69, 73, 77, 79, 82, 68, /* 0x ea0 */
|
||||
49, 0, 7, 0, 0, 0, 80, 69, 75, 51, 50, 79, 82, 68, 0,202, /* 0x eb0 */
|
||||
3, 0, 0, 0, 0, 0, 0,218, 3, 0, 0, 80, 69, 73, 77, 80, /* 0x ec0 */
|
||||
79, 82, 50, 0, 15, 0, 0, 0, 80, 69, 73, 77, 79, 82, 68, 49, /* 0x ed0 */
|
||||
0,218, 3, 0, 0, 80, 69, 73, 77, 80, 79, 82, 50, 0,225, 3, /* 0x ee0 */
|
||||
0, 0, 0, 0, 0, 0,247, 3, 0, 0, 80, 69, 73, 77, 80, 79, /* 0x ef0 */
|
||||
82, 84, 0, 35, 0, 0, 0, 80, 69, 73, 69, 82, 68, 76, 76, 0, /* 0x f00 */
|
||||
247, 3, 0, 0, 80, 69, 73, 69, 82, 69, 88, 69, 0,253, 3, 0, /* 0x f10 */
|
||||
0, 80, 69, 73, 77, 68, 79, 78, 69, 0, 3, 4, 0, 0, 80, 69, /* 0x f20 */
|
||||
73, 77, 80, 79, 82, 57, 0, 3, 4, 0, 0, 80, 69, 82, 69, 76, /* 0x f30 */
|
||||
79, 67, 49, 0, 3, 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 50, /* 0x f40 */
|
||||
0, 9, 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 51, 0, 12, 4, /* 0x f50 */
|
||||
0, 0, 82, 69, 76, 79, 67, 51, 50, 48, 0, 15, 4, 0, 0, 0, /* 0x f60 */
|
||||
0, 0, 0, 24, 4, 0, 0, 82, 69, 76, 79, 67, 51, 50, 74, 0, /* 0x f70 */
|
||||
2, 0, 0, 0, 82, 69, 76, 51, 50, 66, 73, 71, 0, 56, 4, 0, /* 0x f80 */
|
||||
0, 0, 0, 0, 0, 60, 4, 0, 0, 82, 69, 76, 79, 67, 51, 50, /* 0x f90 */
|
||||
48, 0, 13, 0, 0, 0, 82, 69, 76, 79, 67, 51, 50, 74, 0, 65, /* 0x fa0 */
|
||||
4, 0, 0, 0, 0, 0, 0, 67, 4, 0, 0, 82, 69, 76, 79, 67, /* 0x fb0 */
|
||||
51, 50, 48, 0, 13, 0, 0, 0, 82, 69, 76, 51, 50, 69, 78, 68, /* 0x fc0 */
|
||||
0, 67, 4, 0, 0, 80, 69, 82, 69, 76, 79, 67, 57, 0, 67, 4, /* 0x fd0 */
|
||||
0, 0, 80, 69, 82, 76, 79, 72, 73, 48, 0, 67, 4, 0, 0, 80, /* 0x fe0 */
|
||||
69, 82, 76, 79, 72, 73, 90, 0, 75, 4, 0, 0, 80, 69, 82, 69, /* 0x ff0 */
|
||||
76, 76, 79, 48, 0, 75, 4, 0, 0, 80, 69, 82, 69, 76, 76, 79, /* 0x1000 */
|
||||
90, 0, 85, 4, 0, 0, 80, 69, 82, 69, 76, 72, 73, 48, 0, 85, /* 0x1010 */
|
||||
4, 0, 0, 80, 69, 82, 69, 76, 72, 73, 90, 0, 98, 4, 0, 0, /* 0x1020 */
|
||||
80, 69, 68, 69, 80, 72, 65, 75, 0, 98, 4, 0, 0, 80, 69, 68, /* 0x1030 */
|
||||
69, 80, 72, 65, 88, 0,145, 4, 0, 0, 80, 69, 77, 65, 73, 78, /* 0x1040 */
|
||||
50, 48, 0,145, 4, 0, 0, 80, 69, 82, 69, 84, 85, 82, 78, 95, /* 0x1050 */
|
||||
67, 76, 69, 65, 82, 83, 84, 65, 67, 75, 0,146, 4, 0, 0, 80, /* 0x1060 */
|
||||
69, 82, 69, 84, 85, 82, 78, 95, 67, 76, 69, 65, 82, 83, 84, 65, /* 0x1070 */
|
||||
67, 75, 57, 0,159, 4, 0, 0, 80, 69, 68, 79, 74, 85, 77, 80, /* 0x1080 */
|
||||
95, 67, 76, 69, 65, 82, 83, 84, 65, 67, 75, 0,159, 4, 0, 0, /* 0x1090 */
|
||||
80, 69, 68, 79, 74, 85, 77, 80, 95, 67, 76, 69, 65, 82, 83, 84, /* 0x10a0 */
|
||||
65, 67, 75, 57, 0,172, 4, 0, 0, 80, 69, 77, 65, 73, 78, 50, /* 0x10b0 */
|
||||
49, 0,172, 4, 0, 0, 80, 69, 82, 69, 84, 85, 82, 78, 0,172, /* 0x10c0 */
|
||||
4, 0, 0, 80, 69, 68, 79, 74, 85, 77, 80, 0,178, 4, 0, 0, /* 0x10d0 */
|
||||
80, 69, 68, 85, 77, 77, 89, 51, 0,183, 4, 0, 0, 85, 80, 88, /* 0x10e0 */
|
||||
49, 72, 69, 65, 68, 0,183, 4, 0, 0, 80, 69, 84, 72, 69, 69, /* 0x10f0 */
|
||||
78, 68, 0,215, 4, 0, 0,255,255,255,255,215, 4 /* 0x1100 */
|
||||
};
|
||||
|
||||
+58
-36
@@ -31,19 +31,33 @@
|
||||
// section is now completely freestanding
|
||||
|
||||
|
||||
#if defined(__GNUC__)
|
||||
# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
|
||||
# define ACC_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
|
||||
# elif defined(__GNUC_MINOR__)
|
||||
# define ACC_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
|
||||
# else
|
||||
# define ACC_CC_GNUC (__GNUC__ * 0x10000L)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define ACC_UNUSED(var) ((void) var)
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
//
|
||||
**************************************************************************/
|
||||
|
||||
// <stddef.h>
|
||||
typedef long ptrdiff_t;
|
||||
typedef long ssize_t;
|
||||
typedef unsigned long size_t;
|
||||
// <stdint.h>
|
||||
typedef unsigned char uint8_t;
|
||||
typedef unsigned short uint16_t;
|
||||
typedef int int32_t;
|
||||
typedef unsigned uint32_t;
|
||||
#if defined(__GNUC__)
|
||||
#if (ACC_CC_GNUC >= 0x020800ul)
|
||||
__extension__ typedef long long int64_t;
|
||||
__extension__ typedef unsigned long long uint64_t;
|
||||
#elif defined(_WIN32)
|
||||
@@ -119,6 +133,16 @@ struct timespec {
|
||||
#define MAP_DENYWRITE 0x0800 /* ETXTBSY */
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// i386 syscalls
|
||||
//
|
||||
// Because of different <asm/unistd.h> versions and subtle bugs
|
||||
// in both gcc and egcs we define all syscalls manually.
|
||||
//
|
||||
// Also, errno conversion is not necessary in our case, and we
|
||||
// use optimized assembly statements to further decrease the size.
|
||||
**************************************************************************/
|
||||
|
||||
#if defined(__i386__) /*{*/
|
||||
|
||||
// <asm/unistd.h>
|
||||
@@ -148,17 +172,6 @@ struct timespec {
|
||||
#define __NR_nanosleep 162
|
||||
#define __NR_getcwd 183
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// syscalls
|
||||
//
|
||||
// Because of different <asm/unistd.h> versions and subtle bugs
|
||||
// in both gcc and egcs we define all syscalls manually.
|
||||
//
|
||||
// Also, errno conversion is not necessary in our case, and we
|
||||
// use optimized assembly statements to further decrease the size.
|
||||
**************************************************************************/
|
||||
|
||||
#undef _syscall0
|
||||
#undef _syscall1
|
||||
#undef _syscall2
|
||||
@@ -214,6 +227,27 @@ type name(type1 arg1) \
|
||||
return (type) __res; \
|
||||
}
|
||||
|
||||
#define _syscall1nr(name,type1,arg1) \
|
||||
void __attribute__((__noreturn__)) name(type1 arg1) \
|
||||
{ \
|
||||
if (Z1(__NR_##name)) { \
|
||||
if (Z0(arg1)) { \
|
||||
__asm__ __volatile__ ("xorl %%ebx,%%ebx; push %0; popl %%eax; int $0x80" \
|
||||
: : "g" (__NR_##name) ); \
|
||||
} else if (Z1(arg1)) { \
|
||||
__asm__ __volatile__ ("push %1; popl %%ebx; push %0; popl %%eax; int $0x80" \
|
||||
: : "g" (__NR_##name),"g" ((long)(arg1)) ); \
|
||||
} else { \
|
||||
__asm__ __volatile__ ("push %0; popl %%eax; int $0x80" \
|
||||
: : "g" (__NR_##name),"b" ((long)(arg1))); \
|
||||
} \
|
||||
} else { \
|
||||
__asm__ __volatile__ ("int $0x80" \
|
||||
: : "a" (__NR_##name),"b" ((long)(arg1))); \
|
||||
} \
|
||||
for(;;) ; \
|
||||
}
|
||||
|
||||
// special for mmap; somehow Z0(arg1) and Z1(arg1) do not work
|
||||
#define _syscall1m(type,name,type1,arg1) \
|
||||
type name(type1 arg1) \
|
||||
@@ -310,7 +344,7 @@ static inline _syscall1(int,adjtimex,struct timex *,ntx)
|
||||
static inline _syscall1(void *,brk,void *,high)
|
||||
static inline _syscall1(int,close,int,fd)
|
||||
static inline _syscall3(int,execve,const char *,file,char **,argv,char **,envp)
|
||||
static inline _syscall1(int,_exit,int,exitcode)
|
||||
static inline _syscall1nr(_exit,int,exitcode)
|
||||
static inline _syscall3(int,fcntl,int,fd,int,cmd,long,arg)
|
||||
static inline _syscall2(int,ftruncate,int,fd,size_t,len)
|
||||
static inline _syscall0(pid_t,fork)
|
||||
@@ -319,31 +353,29 @@ static inline _syscall0(pid_t,getpid)
|
||||
static inline _syscall2(int,getrusage,int,who,struct rusage *,usage);
|
||||
static inline _syscall2(int,gettimeofday,struct timeval *,tv,void *,tz)
|
||||
static inline _syscall3(off_t,lseek,int,fd,off_t,offset,int,whence)
|
||||
static inline _syscall1m(caddr_t,mmap,const int *,args)
|
||||
static inline _syscall3(int,mprotect,void *,addr,size_t,len,int,prot)
|
||||
static inline _syscall3(int,msync,const void *,start,size_t,length,int,flags)
|
||||
static inline _syscall2(int,munmap,void *,start,size_t,length)
|
||||
static inline _syscall2(int,nanosleep,const struct timespec *,rqtp,struct timespec *,rmtp)
|
||||
static inline _syscall3(int,open,const char *,file,int,flag,int,mode)
|
||||
static inline _syscall1(int,personality,unsigned long,persona)
|
||||
static inline _syscall3(int,read,int,fd,char *,buf,off_t,count)
|
||||
static inline _syscall3(ssize_t,read,int,fd,void *,buf,size_t,count)
|
||||
static inline _syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
|
||||
static inline _syscall3(int,write,int,fd,const char *,buf,off_t,count)
|
||||
static inline _syscall3(ssize_t,write,int,fd,const void *,buf,size_t,count)
|
||||
static inline _syscall1(int,unlink,const char *,file)
|
||||
|
||||
|
||||
#undef Z0
|
||||
#undef Z1
|
||||
|
||||
#else /*}{ generic */
|
||||
|
||||
extern void *brk(void *);
|
||||
extern int close(int);
|
||||
extern void *mmap(void *, size_t, int, int, int, off_t);
|
||||
extern int munmap(void *, size_t);
|
||||
extern int mprotect(void const *, size_t, int);
|
||||
extern int open(char const *, unsigned, unsigned);
|
||||
extern size_t read(int, void *, size_t);
|
||||
void *brk(void *);
|
||||
int close(int);
|
||||
void *mmap(void *, size_t, int, int, int, off_t);
|
||||
int munmap(void *, size_t);
|
||||
int mprotect(void const *, size_t, int);
|
||||
int open(char const *, unsigned, unsigned);
|
||||
ssize_t read(int, void *, size_t);
|
||||
|
||||
#endif /*}*/
|
||||
|
||||
@@ -499,8 +531,8 @@ typedef unsigned int nrv_uint32;
|
||||
|
||||
// From ../p_unix.h
|
||||
struct b_info { // 12-byte header before each compressed block
|
||||
unsigned sz_unc; // uncompressed_size
|
||||
unsigned sz_cpr; // compressed_size
|
||||
uint32_t sz_unc; // uncompressed_size
|
||||
uint32_t sz_cpr; // compressed_size
|
||||
unsigned char b_method; // compression algorithm
|
||||
unsigned char b_ftid; // filter id
|
||||
unsigned char b_cto8; // filter parameter
|
||||
@@ -528,16 +560,6 @@ struct p_info // 12-byte packed program header follows stub loader
|
||||
((type) ((uintptr_t) (var)))
|
||||
|
||||
|
||||
#if defined(__GNUC__)
|
||||
# if defined(__GNUC_MINOR__) && defined(__GNUC_PATCHLEVEL__)
|
||||
# define ACC_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100 + __GNUC_PATCHLEVEL__)
|
||||
# elif defined(__GNUC_MINOR__)
|
||||
# define ACC_CC_GNUC (__GNUC__ * 0x10000L + __GNUC_MINOR__ * 0x100)
|
||||
# else
|
||||
# define ACC_CC_GNUC (__GNUC__ * 0x10000L)
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if (ACC_CC_GNUC >= 0x030300)
|
||||
# define __attribute_cdecl __attribute__((__cdecl__, __used__))
|
||||
#elif (ACC_CC_GNUC >= 0x020700)
|
||||
|
||||
@@ -168,7 +168,7 @@ upx_bzero(char *p, size_t len)
|
||||
|
||||
|
||||
static void
|
||||
auxv_up(Elf32_auxv_t *av, int const type, unsigned const value)
|
||||
auxv_up(Elf32_auxv_t *av, unsigned type, unsigned const value)
|
||||
{
|
||||
if (av)
|
||||
for (;; ++av) {
|
||||
@@ -306,12 +306,14 @@ void *upx_main(
|
||||
Elf32_Addr entry;
|
||||
|
||||
Extent xi, xo, xi0;
|
||||
xi.buf = (char *)(1+ (struct p_info const *)(1+ li)); // &b_info
|
||||
xi.buf = CONST_CAST(char *, 1+ (struct p_info const *)(1+ li)); // &b_info
|
||||
xi.size = sz_compressed - (sizeof(struct l_info) + sizeof(struct p_info));
|
||||
xo.buf = (char *)ehdr;
|
||||
xo.size = ((struct b_info const *)xi.buf)->sz_unc;
|
||||
xi0 = xi;
|
||||
|
||||
ACC_UNUSED(sz_ehdr);
|
||||
|
||||
// ehdr = Uncompress Ehdr and Phdrs
|
||||
unpackExtent(&xi, &xo, f_decompress, 0); // never filtered?
|
||||
|
||||
|
||||
+17
-7
@@ -29,8 +29,10 @@
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
typedef unsigned int size_t;
|
||||
typedef unsigned long long off_t;
|
||||
typedef long ssize_t;
|
||||
typedef unsigned long size_t;
|
||||
typedef size_t uintptr_t;
|
||||
__extension__ typedef unsigned long long off_t;
|
||||
typedef unsigned char nrv_byte;
|
||||
typedef unsigned int nrv_uint;
|
||||
|
||||
@@ -39,7 +41,15 @@ typedef unsigned int nrv_uint;
|
||||
#define PAGE_SIZE -PAGE_MASK
|
||||
#define O_RDONLY 0
|
||||
|
||||
/*extern int exit(int) __attribute__ ((__noreturn__));*/
|
||||
int close(int);
|
||||
void exit(int) __attribute__((__noreturn__));
|
||||
int mprotect(void *, size_t, int);
|
||||
int open(char const *, unsigned, unsigned);
|
||||
ssize_t read(int, void *, size_t);
|
||||
|
||||
#define CONST_CAST(type, var) \
|
||||
((type) ((uintptr_t) (var)))
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// configuration section
|
||||
@@ -318,7 +328,7 @@ do_xmap(
|
||||
{
|
||||
Mach_segment_command const *sc = (Mach_segment_command const *)(1+ mhdr);
|
||||
Mach_ppc_thread_state const *entry = 0;
|
||||
int j;
|
||||
unsigned j;
|
||||
|
||||
for ( j=0; j < mhdr->ncmds; ++j,
|
||||
(sc = (Mach_segment_command const *)(sc->cmdsize + (char const *)sc))
|
||||
@@ -387,7 +397,7 @@ upx_main(
|
||||
{
|
||||
Mach_ppc_thread_state const *entry;
|
||||
Extent xi, xo, xi0;
|
||||
xi.buf = (char *)(1+ (struct p_info const *)(1+ li)); // &b_info
|
||||
xi.buf = CONST_CAST(char *, 1+ (struct p_info const *)(1+ li)); // &b_info
|
||||
xi.size = sz_compressed - (sizeof(struct l_info) + sizeof(struct p_info));
|
||||
xo.buf = (char *)mhdr;
|
||||
xo.size = ((struct b_info const *)xi.buf)->sz_unc;
|
||||
@@ -400,7 +410,7 @@ upx_main(
|
||||
|
||||
{ // Map dyld dynamic loader
|
||||
Mach_load_command const *lc = (Mach_load_command const *)(1+ mhdr);
|
||||
int j;
|
||||
unsigned j;
|
||||
|
||||
for (j=0; j < mhdr->ncmds; ++j,
|
||||
(lc = (Mach_load_command const *)(lc->cmdsize + (char const *)lc))
|
||||
@@ -411,7 +421,7 @@ upx_main(
|
||||
if (0 > fdi) {
|
||||
err_exit(18);
|
||||
}
|
||||
if (sz_mhdr!=read(fdi, (void *)mhdr, sz_mhdr)) {
|
||||
if ((ssize_t)sz_mhdr!=read(fdi, (void *)mhdr, sz_mhdr)) {
|
||||
ERR_LAB
|
||||
err_exit(19);
|
||||
}
|
||||
|
||||
@@ -38,3 +38,9 @@
|
||||
#define movr mr
|
||||
|
||||
#endif /*} __PPC_REGS__ */
|
||||
|
||||
|
||||
/*
|
||||
vi:ts=4:et:nowrap
|
||||
*/
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
amd64-linux-sstrip
|
||||
i386-linux-sstrip
|
||||
sstrip
|
||||
sstrip.exe
|
||||
+5
-5
@@ -1,6 +1,6 @@
|
||||
#define UPX_VERSION_HEX 0x019400 /* 01.94.00 */
|
||||
#define UPX_VERSION_STRING "1.94 beta"
|
||||
#define UPX_VERSION_STRING4 "1.94"
|
||||
#define UPX_VERSION_DATE "Mar 11th 2006"
|
||||
#define UPX_VERSION_DATE_ISO "2006-03-11"
|
||||
#define UPX_VERSION_HEX 0x019500 /* 01.95.00 */
|
||||
#define UPX_VERSION_STRING "1.95 beta"
|
||||
#define UPX_VERSION_STRING4 "1.95"
|
||||
#define UPX_VERSION_DATE "Apr 9th 2006"
|
||||
#define UPX_VERSION_DATE_ISO "2006-04-09"
|
||||
#define UPX_VERSION_YEAR "2006"
|
||||
|
||||
Reference in New Issue
Block a user