Compare commits

...

107 Commits

Author SHA1 Message Date
Markus F.X.J. Oberhumer ace2359e7b Bump tentative release date. 2007-07-31 15:06:53 +02:00
Markus F.X.J. Oberhumer 617e6510a5 docs: mention a workaround for --exact option. 2007-07-31 15:00:38 +02:00
Markus F.X.J. Oberhumer 26024770b8 For the moment we always throwCantPack() for arm/pe and win32/pe. 2007-07-30 17:47:42 +02:00
Markus F.X.J. Oberhumer d556f58e34 Fix screen problems by not relying on pass number in startCallback(). 2007-07-30 17:27:43 +02:00
Markus F.X.J. Oberhumer b6f302dfc0 Makefile: use /bin/echo for better portability. 2007-07-30 12:56:35 +02:00
Markus F.X.J. Oberhumer 8e9b5f14af Small Makefile updates. 2007-07-11 07:03:05 +02:00
Markus F.X.J. Oberhumer 3635c00143 Added support for LZMA SDK 4.49. Compiles, but pretty much untested. 2007-07-08 13:58:08 +02:00
Markus F.X.J. Oberhumer abc71baaa6 Avoid some warnings. 2007-07-08 11:42:45 +02:00
John Reiser 959aaebede bvmlinuz piggy.o need not be last in bzImage 2007-07-02 14:27:31 -07:00
John Reiser d17f8c5049 linux-2.6.21.5 CONFIG_PARAVIRT 2007-07-02 12:48:14 -07:00
Markus F.X.J. Oberhumer 42a7201a70 Updated README.1ST. 2007-06-19 15:26:02 +02:00
Markus F.X.J. Oberhumer 1f1744a49a Added new options --no-mode, --no-owner and --no-time. 2007-06-19 15:14:12 +02:00
Markus F.X.J. Oberhumer fd7dbe5bd9 Update docs of --exact option. 2007-06-19 14:49:53 +02:00
Markus F.X.J. Oberhumer 984549400d Clean up various names in getFullName(). 2007-06-12 14:25:00 +02:00
Markus F.X.J. Oberhumer cf0c49277e Add processing instructions to gpp_inc.py. 2007-06-12 13:40:35 +02:00
Markus F.X.J. Oberhumer 16c3f9fa9c Small Makefile updates. 2007-06-12 12:46:56 +02:00
John Reiser 2f2539cf34 workaround weak python script gpp_inc.py 2007-06-10 06:54:10 -07:00
John Reiser e66823d017 mipsel.r3000-linux: flush cache for NRV, fix stub copying when big 2007-06-09 17:13:50 -07:00
John Reiser 881c32a3df fix NRV_HEAD and NRV_TAIL in stub for mipsel.r3000-linux 2007-06-09 13:52:56 -07:00
John Reiser ea0a361c35 fix argv[0] on PowerPC with --lzma 2007-06-04 10:13:14 -07:00
László Molnár dc60f8bb7b merge 2007-05-18 16:11:11 +02:00
László Molnár 9e92c9ea12 pe: added a check for too small object alignment 2007-05-17 18:02:50 +02:00
John Reiser a503a54240 mipsel remember /proc/self/exe in environment 2007-05-16 15:37:22 -07:00
John Reiser 265957712a merge 2007-05-16 13:56:37 -07:00
John Reiser c26962bb71 fix build glitch 2007-05-16 13:53:17 -07:00
John Reiser a428eddf93 catch up automatically-generated files 2007-05-16 13:51:44 -07:00
John Reiser dc4f7eb2f9 mipsel close() 2007-05-16 13:51:00 -07:00
John Reiser d54ac1ba91 use register $25 for trampoline 2007-05-16 13:50:16 -07:00
John Reiser a3d46b18ac cacheflush 2007-05-16 13:49:54 -07:00
John Reiser e81dd05666 bug in make_hatch_*(); simplify xfind_pages() when MAP_FIXED; update AT_BASE 2007-05-16 13:48:44 -07:00
Markus F.X.J. Oberhumer 29394935e3 Use -Wstrict-prototypes CFLAGS in stub/Makefile. 2007-05-16 04:34:30 +02:00
Markus F.X.J. Oberhumer df8acc4ed7 Added .NOTPARALLEL to stub/Makefile. 2007-05-14 11:30:40 +02:00
John Reiser 81928d4ab1 mipsel stub escape hatch for munmap 2007-05-10 13:13:11 -07:00
John Reiser 3ebf93e03d mipsel syscall read+write of same register 2007-05-09 22:17:09 -07:00
John Reiser 59e4032f1f mipsel stub syscall registers 2007-05-08 13:33:00 -07:00
John Reiser 8f15777427 merge 2007-05-08 10:43:50 -07:00
John Reiser 748c4bf780 mipsel stub system calls 2007-05-08 10:41:13 -07:00
László Molnár befcf6d2b3 merge 2007-05-08 18:25:00 +02:00
László Molnár 48236ecd3c fixed an incorrect error message caused by a bug in relocation handling 2007-05-08 18:23:41 +02:00
Markus F.X.J. Oberhumer f340f84de7 Avoid warnings. 2007-05-08 16:12:42 +02:00
Markus F.X.J. Oberhumer 40e19293f9 Added throwOutOfMemoryException(). 2007-05-08 15:28:35 +02:00
John Reiser f252f824a4 mipsel conditional stub/src/i386-linux.elf-main.c 2007-05-08 05:48:15 -07:00
John Reiser 1d7e5a8130 typedef struct Extent 2007-05-08 05:18:41 -07:00
John Reiser cb2ff92c2f mipsel hack stub 2007-05-07 21:03:58 -07:00
John Reiser ef373ab54f mipsel hacking 2007-05-07 19:20:25 -07:00
John Reiser 9141a78c29 mipsel stub for mmap on Linux (not NetBSD); and subroutine arg[4..6]
in t0..t2 instead of on stack, to match LMZA_DEC20
2007-05-07 07:02:16 -07:00
John Reiser 10a6370738 hacking UPX_F_LINUX_ELF32_MIPSEL 2007-05-06 14:21:25 -07:00
John Reiser 573009eeb6 new format UPX_F_LINUX_ELF32_MIPSEL [work in progress] 2007-05-06 06:17:49 -07:00
John Reiser c3363712d9 PackVmlinuxBase<T>::pack() EM_PPC filter only contiguous instruction sections 2007-05-01 19:12:55 -07:00
John Reiser faa33d89a2 Documentation: UPX_F_VMLINUX_PPC32 changes to arch/powerpc/boot/main.c 2007-04-30 13:48:50 -07:00
John Reiser f347458c53 new format UPX_F_VMLINUX_PPC32 Linux kernel for PowerPC (32-bit) 2007-04-30 13:34:06 -07:00
Markus F.X.J. Oberhumer 530e6d9196 Bump version for next release. 2007-04-30 19:34:26 +02:00
Markus F.X.J. Oberhumer b398e18e12 Added tag for RELEASE_300. 2007-04-30 19:32:35 +02:00
Markus F.X.J. Oberhumer 747e8370e0 Remove debug leftover. 2007-04-26 16:20:01 +02:00
Markus F.X.J. Oberhumer 2c67875781 Pass and verify original data in all xxx_test_overlap() functions. 2007-04-26 16:15:49 +02:00
Markus F.X.J. Oberhumer c96e8a8c19 Better underflow and overflow handling in Packer::findOverlapOverhead(). 2007-04-26 13:59:01 +02:00
Markus F.X.J. Oberhumer 5f203fc082 Avoid warnings. 2007-04-26 13:13:26 +02:00
John Reiser b943c9b471 fix upx_zlib_test_overlap 2007-04-25 20:24:30 -07:00
John Reiser 1a90a1daa8 Implement upx_zlib_test_overlap() following upx_lzma_test_overlap() 2007-04-25 20:19:40 -07:00
John Reiser 72dfc743fd upx_lzma_test_overlap cleanup 2007-04-25 20:11:04 -07:00
John Reiser 465307655b Implement real upx_lzma_test_overlap().
Also make Packer::findOverlapOverhead() more pessimistic in worst case.
2007-04-25 16:11:33 -07:00
John Reiser 6ce71e6694 upx_lzma_test_overlap revert to 256 [FIXME] 2007-04-25 10:54:00 -07:00
John Reiser 7f01b3b92a upx_lzma_test_overlap() heuristic overlap_overhead up to 0xA00 2007-04-25 09:19:29 -07:00
John Reiser 76950d56b9 PackUnix::canPack allow incompressible extents in getPackHeader() 2007-04-25 09:18:31 -07:00
Markus F.X.J. Oberhumer c11e0d02b3 Added parm "allow_incompressible" to Packer::{get,read}PackHeader(). 2007-04-25 17:33:39 +02:00
Markus F.X.J. Oberhumer 4c798c1718 Use official name "armeb" instead of "armbe". 2007-04-25 16:50:51 +02:00
Markus F.X.J. Oberhumer 450d7e9ad4 Merge. 2007-04-25 16:42:41 +02:00
Markus F.X.J. Oberhumer b8ab79c83e Use offical name "arm" instead of "armel". 2007-04-25 16:42:08 +02:00
John Reiser 6934bdd533 allow unpack of incompressible extents, such as
http://www.equi4.com/pub/tk/8.4.13/tclkit-linux-x86.gz
2007-04-25 07:34:24 -07:00
John Reiser 84dedb73a5 propagate changes arm*-linux.elf-fold.h 2007-04-24 16:08:34 -07:00
John Reiser 8964aa5221 fix endian issue with .b_method (arm-linux.elf-entry.S) 2007-04-24 12:05:53 -07:00
Markus F.X.J. Oberhumer 3481ae236c Added missing armeb generated files. 2007-04-23 18:11:24 +02:00
John Reiser 46adc5f8a4 armeb-linux.kernel.vmlinux.S 2007-04-23 09:00:28 -07:00
John Reiser 5296df5899 add armeb-linux.kernel.vmlinux-head.S 2007-04-23 08:53:53 -07:00
John Reiser 13dad4be16 merge 2007-04-23 07:22:36 -07:00
John Reiser b5d0c343b4 sync src/Makefile with Markus bfb3d24c1fe7 2007-04-23 07:15:42 -07:00
Markus F.X.J. Oberhumer b00b945264 src/Makefile: avoid rebuilding .depend file on clean targets 2007-04-23 08:23:01 +02:00
John Reiser 3bda09e105 more cleanup armel etc 2007-04-22 20:04:13 -07:00
John Reiser 32d32c4e4a cleanup ARMEL etc. 2007-04-22 19:52:23 -07:00
John Reiser 497441b54e merge 2007-04-22 16:19:13 -07:00
John Reiser 9c564fd4c7 Add file formst UPX_F_LINUX_ELF32_ARMEB and normalize spelling
of ARMEL, ARMEB, armel, armeb.
2007-04-22 16:09:18 -07:00
John Reiser 0c2263d0e9 fix O_INP etc because cto8 is not pushed.
This change should have paralleled 1382:367eb149f29c
(Sun Aug 20 11:19:37 2006 -0700)
2007-04-22 15:50:24 -07:00
John Reiser 3d4d30766d merge 2007-04-22 15:24:17 -07:00
John Reiser 99d84d44fc propagate change to O_INP 2007-04-22 14:50:58 -07:00
John Reiser 41ba7077ad propagate change to O_INP 2007-04-22 14:50:58 -07:00
John Reiser 8a929a91c3 Fix O_INP etc because calling sequence changed to omit cto8.
This parallel change was forgotten at:
   changeset:   1382:367eb149f29c
   date:        Sun Aug 20 11:19:37 2006 -0700
   summary:     i386-linux.elf decompress does not need cto8
2007-04-22 14:47:08 -07:00
Markus F.X.J. Oberhumer 0604f06841 Backed out changeset 1b7b0715e0ab0d3b2e8afc96ac95d46d44bf3618 2007-04-23 07:36:46 +02:00
John Reiser 229924adf9 Fix O_INP etc because calling sequence changed to omit cto8.
This parallel change was forgotten at:
   changeset:   1382:367eb149f29c
   date:        Sun Aug 20 11:19:37 2006 -0700
   summary:     i386-linux.elf decompress does not need cto8
2007-04-22 14:47:08 -07:00
Markus F.X.J. Oberhumer df988b7c69 Bump tentative release date. 2007-04-22 16:55:41 +02:00
John Reiser e8106e2e34 propagate change to 'loadcon8' macro 2007-04-18 09:55:15 -07:00
John Reiser c21d3e24f8 fix 'loadcon8'; was bad for big-endian vmlinux ARM 2007-04-18 09:52:52 -07:00
Markus F.X.J. Oberhumer 2d87aa0753 Better ctok32 fix. 2007-04-02 18:57:42 +02:00
László Molnár b2ad4dc9a0 another fix for ctok32 2007-04-02 14:12:16 +02:00
László Molnár 370f2ea98f tmt/adam: fixed a ctok32 related bug 2007-04-01 17:31:48 +02:00
László Molnár a05ca565ff fixed a bug in ctok32 2007-04-01 17:07:43 +02:00
László Molnár 52255637f2 give an error for x86/wince files 2007-03-22 13:45:03 +01:00
Markus F.X.J. Oberhumer 0fcaa3a2f5 Work around broken scanf() implementations. 2007-03-22 07:30:16 +01:00
László Molnár 0e2fa6eb9d no need to warn for x86 wince files 2007-03-20 09:30:30 +01:00
Markus F.X.J. Oberhumer 1aac462c83 Remove trailing whitespace. 2007-03-15 07:36:58 +01:00
Markus F.X.J. Oberhumer 2a0edfd8f7 Small update from Jens. 2007-03-15 01:41:07 +01:00
László Molnár 1f59a9f846 more PS1 updates from Jens 2007-03-12 12:11:17 +01:00
László Molnár 80c20a90ea PS1 updates from Jens 2007-03-12 11:56:16 +01:00
Markus F.X.J. Oberhumer 56a35649fe Update Makefiles. 2007-03-09 07:59:50 +01:00
Markus F.X.J. Oberhumer f07cea0b79 Update help string. 2007-03-09 07:59:36 +01:00
Markus F.X.J. Oberhumer 4c1b08a281 Bump version for next release. 2007-03-08 08:26:28 +01:00
Markus F.X.J. Oberhumer 117f9eddcd src/Makefile: use an explicit .depend file. 2007-03-08 08:19:27 +01:00
Markus F.X.J. Oberhumer 7bbbfce482 Added tag for RELEASE_293. 2007-03-08 06:16:24 +01:00
113 changed files with 7995 additions and 2678 deletions
+1
View File
@@ -8,6 +8,7 @@ syntax: regexp
syntax: glob syntax: glob
.depend
Makevars.local Makevars.local
*.a *.a
+2
View File
@@ -13,3 +13,5 @@ c2e0cd4d621b047f254f2def42132a03683ff52c RELEASE_192
d276aa09033c24d0981bc3f4fee5628aecc988ad RELEASE_290 d276aa09033c24d0981bc3f4fee5628aecc988ad RELEASE_290
eb1ce56dce7dd1835964362470610925963b9043 RELEASE_110 eb1ce56dce7dd1835964362470610925963b9043 RELEASE_110
ed96891ef795bceec6b7ff3ca1ca7764431bfb39 RELEASE_191 ed96891ef795bceec6b7ff3ca1ca7764431bfb39 RELEASE_191
ef9c7f2c9658d73a9b5ab2ed291483d2bbcd8bc7 RELEASE_300
efa52753e366300c0e0ebe20631adcb24ed3c15b RELEASE_293
+7 -6
View File
@@ -1,17 +1,21 @@
# #
# UPX toplevel Makefile - needs GNU make 3.80 or better # UPX toplevel Makefile - needs GNU make 3.81 or better
# #
MAKEFLAGS += -rR MAKEFLAGS += -rR
.SUFFIXES: .SUFFIXES:
export SHELL = /bin/sh export SHELL = /bin/sh
ifneq ($(findstring $(firstword $(MAKE_VERSION)),3.77 3.78 3.78.1 3.79 3.79.1 3.80),)
$(error GNU make 3.81 or better is required)
endif
srcdir = . srcdir = .
top_srcdir = . top_srcdir = .
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
# info: src/stub needs GNU make 3.81 and special build tools # info: src/stub needs special build tools
BUILD_STUB = 0 BUILD_STUB = 0
ifneq ($(wildcard $(HOME)/local/bin/bin-upx/.),) ifneq ($(wildcard $(HOME)/local/bin/bin-upx/.),)
BUILD_STUB = 1 BUILD_STUB = 1
@@ -19,9 +23,6 @@ endif
ifneq ($(wildcard $(HOME)/bin/bin-upx/.),) ifneq ($(wildcard $(HOME)/bin/bin-upx/.),)
BUILD_STUB = 1 BUILD_STUB = 1
endif endif
ifneq ($(findstring $(firstword $(MAKE_VERSION)),3.79 3.79.1 3.80),)
BUILD_STUB = 0
endif
default: default:
+12
View File
@@ -2,6 +2,18 @@
User visible changes for UPX User visible changes for UPX
================================================================== ==================================================================
Changes in 3.01 (31 Jul 2007):
* new options --no-mode, --no-owner and --no-time to disable preservation
of mode (file permissions), file ownership and timestamps.
* dos/exe: fixed an incorrect error message caused by a bug in
relocation handling
* new format linux/mipsel supports ELF on [32-bit] R3000
* fix argv[0] on PowerPC with --lzma
* bug fixes
Changes in 3.00 (27 Apr 2007):
* watcom/le & tmt/adam: fixed a problem when using certain filters
Changes in 2.93 beta (08 Mar 2007): Changes in 2.93 beta (08 Mar 2007):
* new formats Mach/i386 and Mach/fat support Mac OS X i686 and * new formats Mach/i386 and Mach/fat support Mac OS X i686 and
Universal binaries [i686 and PowerPC only] Universal binaries [i686 and PowerPC only]
-8
View File
@@ -12,14 +12,6 @@
http://upx.sourceforge.net http://upx.sourceforge.net
WARNING - UNSTABLE BETA VERSION
===============================
The current stable release is 2.02, and the next stable release
will be called version 3.00.
MAJOR NEWS IN UPX 3 MAJOR NEWS IN UPX 3
=================== ===================
+8 -1
View File
@@ -139,7 +139,11 @@ B<--help>: prints the help
B<--version>: print the version of B<UPX> B<--version>: print the version of B<UPX>
B<--exact>: when compressing, require to be able to get a byte-identical file B<--exact>: when compressing, require to be able to get a byte-identical file
after decompression with option B<-d> after decompression with option B<-d>. [NOTE: this is work in progress and is
not supported for all formats yet. If you do care, as a workaround you can
compress and then decompress your program a first time - any further
compress-decompress steps should then yield byte-identical results
as compared to the first decompressed version.]
[ ...to be written... - type `B<upx --help>' for now ] [ ...to be written... - type `B<upx --help>' for now ]
@@ -684,6 +688,9 @@ Notes:
- UPX creates as default a suitable executable for CD-Mastering - UPX creates as default a suitable executable for CD-Mastering
and console transfer. For a CD-Master main executable you could also try and console transfer. For a CD-Master main executable you could also try
the special option "--boot-only" as described below. the special option "--boot-only" as described below.
It has been reported that upx packed executables are fully compatible with
the Sony PlayStation 2 (PS2, PStwo) and Sony PlayStation Portable (PSP) in
Sony PlayStation (PSone) emulation mode.
- Normally the packed files use the same memory areas like the uncompressed - Normally the packed files use the same memory areas like the uncompressed
versions, so they will not override other memory areas while unpacking. versions, so they will not override other memory areas while unpacking.
+36 -13
View File
@@ -1,5 +1,5 @@
# #
# UPX Makefile - needs GNU make 3.80 or better # UPX Makefile - needs GNU make 3.81 or better
# #
MAKEFLAGS += -rR MAKEFLAGS += -rR
@@ -7,6 +7,10 @@ MAKEFLAGS += -rR
export SHELL = /bin/sh export SHELL = /bin/sh
override e = $($1) $(EXTRA_$1) $(upx_$1) $($(basename $(notdir $@)).$1) override e = $($1) $(EXTRA_$1) $(upx_$1) $($(basename $(notdir $@)).$1)
ifneq ($(findstring $(firstword $(MAKE_VERSION)),3.77 3.78 3.78.1 3.79 3.79.1 3.80),)
$(error GNU make 3.81 or better is required)
endif
ifndef srcdir ifndef srcdir
srcdir := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))) srcdir := $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
srcdir := $(shell echo '$(srcdir)' | sed 's,/*$$,,') srcdir := $(shell echo '$(srcdir)' | sed 's,/*$$,,')
@@ -14,7 +18,7 @@ endif
ifndef top_srcdir ifndef top_srcdir
top_srcdir := $(srcdir)/.. top_srcdir := $(srcdir)/..
endif endif
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
ifneq ($(srcdir),.) ifneq ($(srcdir),.)
##$(info Info: using VPATH . $(srcdir)) ##$(info Info: using VPATH . $(srcdir))
VPATH := . $(srcdir) VPATH := . $(srcdir)
@@ -27,7 +31,6 @@ ifneq ($(findstring $(firstword $(CXX)),g++),)
USE_GNUC ?= 1 USE_GNUC ?= 1
endif endif
ifeq ($(USE_GNUC),1) ifeq ($(USE_GNUC),1)
CXXFLAGS += -MMD
ifeq ($(DEBUG),1) ifeq ($(DEBUG),1)
CXXFLAGS += -O0 -g CXXFLAGS += -O0 -g
else else
@@ -52,37 +55,57 @@ INCLUDES += -I$(UPX_UCLDIR)/include
LIBS += $(addprefix -L,$(dir $(wildcard $(UPX_UCLDIR)/libucl$(libext) $(UPX_UCLDIR)/src/.libs/libucl$(libext)))) LIBS += $(addprefix -L,$(dir $(wildcard $(UPX_UCLDIR)/libucl$(libext) $(UPX_UCLDIR)/src/.libs/libucl$(libext))))
endif endif
LIBS += -lucl -lz LIBS += -lucl -lz
# you should set envvar UPX_LZMADIR to point to your unpacked lzma443.tar.bz2 # you should set envvar UPX_LZMADIR to point to your unpacked LZMA SDK
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) include $(top_srcdir)/src/stub/src/c/Makevars.lzma
DEFS += -DWITH_LZMA=1 ifneq ($(UPX_LZMA_VERSION),)
DEFS += -DWITH_LZMA=$(UPX_LZMA_VERSION)
INCLUDES += -I$(UPX_LZMADIR) INCLUDES += -I$(UPX_LZMADIR)
endif endif
all: upx$(exeext) all: upx$(exeext) | .depend
.DELETE_ON_ERROR: upx$(exeext) $(upx_OBJECTS) .DELETE_ON_ERROR: upx$(exeext) $(upx_OBJECTS) .depend
upx$(exeext): $(upx_OBJECTS) $(upx_DEPENDENCIES) upx$(exeext): $(upx_OBJECTS) $(upx_DEPENDENCIES)
$($(notdir $@).PRE_LINK_STEP) $($(notdir $@).PRE_LINK_STEP)
$(strip $(CXXLD) $(call e,CPPFLAGS) $(call e,CXXFLAGS) $(call e,LDFLAGS) -o $@ $(upx_OBJECTS) $(call e,LDADD) $(call e,LIBS)) $(strip $(CXXLD) $(call e,CPPFLAGS) $(call e,CXXFLAGS) $(call e,LDFLAGS) -o $@ $(upx_OBJECTS) $(call e,LDADD) $(call e,LIBS))
$($(notdir $@).POST_LINK_STEP) $($(notdir $@).POST_LINK_STEP)
%.o : %.cpp %.o : %.cpp | .depend
$(strip $(CXX) $(call e,CPPFLAGS) $(call e,CXXFLAGS) -o $@ -c $<) $(strip $(CXX) $(call e,CPPFLAGS) $(call e,CXXFLAGS) -o $@ -c $<)
.depend: $(wildcard $(srcdir)/*.cpp $(srcdir)/*.h) $(MAKEFILE_LIST)
@rm -f $@
ifeq ($(USE_GNUC),1)
@echo "Updating $@"
@$(strip $(CXX) $(call e,CPPFLAGS) -MM) $(filter %.cpp,$^) > $@
else
touch $@
endif
ifeq ($(USE_GNUC),1) ifeq ($(USE_GNUC),1)
##compress_lzma$(objext) : CXXFLAGS += -O3 -fomit-frame-pointer ##compress_lzma$(objext) : CXXFLAGS += -O3 -fomit-frame-pointer
compress_lzma$(objext) : CXXFLAGS += -Wno-cast-qual compress_lzma$(objext) : CXXFLAGS += -Wno-cast-qual
compress_lzma$(objext) : CXXFLAGS += -Wno-non-virtual-dtor
compress_lzma$(objext) : CXXFLAGS += -Wno-shadow compress_lzma$(objext) : CXXFLAGS += -Wno-shadow
ifeq ($(UPX_LZMA_VERSION),0x443)
compress_lzma$(objext) : CXXFLAGS += -Wno-non-virtual-dtor
compress_lzma$(objext) : CXXFLAGS += -Wno-unused compress_lzma$(objext) : CXXFLAGS += -Wno-unused
##compress_lzma$(objext) : CXXFLAGS += -Wno-error endif
# needed for gcc-4.3:
compress_lzma$(objext) : CXXFLAGS += -Wno-error
endif endif
mostlyclean clean distclean maintainer-clean: mostlyclean clean distclean maintainer-clean:
rm -f *.d *.map *.o *.obj *.res upx.exe upx.out upx.ttp upx$(exeext) rm -f *.d *.map *.o *.obj *.res .depend upx.exe upx.out upx.ttp upx$(exeext)
-include *.d
.PHONY: all mostlyclean clean distclean maintainer-clean .PHONY: all mostlyclean clean distclean maintainer-clean
ifeq ($(MAKECMDGOALS),mostlyclean)
else ifeq ($(MAKECMDGOALS),clean)
else ifeq ($(MAKECMDGOALS),distclean)
else ifeq ($(MAKECMDGOALS),maintainer-clean)
else
-include .depend
endif
+7 -5
View File
@@ -182,8 +182,10 @@ int upx_decompress ( const upx_bytep src, unsigned src_len,
// //
**************************************************************************/ **************************************************************************/
int upx_test_overlap ( const upx_bytep buf, unsigned src_off, int upx_test_overlap ( const upx_bytep buf,
unsigned src_len, unsigned* dst_len, const upx_bytep tbuf,
unsigned src_off, unsigned src_len,
unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ) const upx_compress_result_t *cresult )
{ {
@@ -201,15 +203,15 @@ int upx_test_overlap ( const upx_bytep buf, unsigned src_off,
} }
#if defined(WITH_LZMA) #if defined(WITH_LZMA)
else if (M_IS_LZMA(method)) else if (M_IS_LZMA(method))
r = upx_lzma_test_overlap(buf, src_off, src_len, dst_len, method, cresult); r = upx_lzma_test_overlap(buf, tbuf, src_off, src_len, dst_len, method, cresult);
#endif #endif
#if defined(WITH_NRV) #if defined(WITH_NRV)
else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method)) else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method))
r = upx_nrv_test_overlap(buf, src_off, src_len, dst_len, method, cresult); r = upx_nrv_test_overlap(buf, tbuf, src_off, src_len, dst_len, method, cresult);
#endif #endif
#if defined(WITH_UCL) #if defined(WITH_UCL)
else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method)) else if (M_IS_NRV2B(method) || M_IS_NRV2D(method) || M_IS_NRV2E(method))
r = upx_ucl_test_overlap(buf, src_off, src_len, dst_len, method, cresult); r = upx_ucl_test_overlap(buf, tbuf, src_off, src_len, dst_len, method, cresult);
#endif #endif
else { else {
throwInternalError("unknown decompression method"); throwInternalError("unknown decompression method");
+16 -8
View File
@@ -46,8 +46,10 @@ int upx_lzma_decompress ( const upx_bytep src, unsigned src_len,
upx_bytep dst, unsigned* dst_len, upx_bytep dst, unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ); const upx_compress_result_t *cresult );
int upx_lzma_test_overlap ( const upx_bytep buf, unsigned src_off, int upx_lzma_test_overlap ( const upx_bytep buf,
unsigned src_len, unsigned* dst_len, const upx_bytep tbuf,
unsigned src_off, unsigned src_len,
unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ); const upx_compress_result_t *cresult );
#endif #endif
@@ -65,8 +67,10 @@ int upx_nrv_decompress ( const upx_bytep src, unsigned src_len,
upx_bytep dst, unsigned* dst_len, upx_bytep dst, unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ); const upx_compress_result_t *cresult );
int upx_nrv_test_overlap ( const upx_bytep buf, unsigned src_off, int upx_nrv_test_overlap ( const upx_bytep buf,
unsigned src_len, unsigned* dst_len, const upx_bytep tbuf,
unsigned src_off, unsigned src_len,
unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ); const upx_compress_result_t *cresult );
#endif #endif
@@ -84,8 +88,10 @@ int upx_ucl_decompress ( const upx_bytep src, unsigned src_len,
upx_bytep dst, unsigned* dst_len, upx_bytep dst, unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ); const upx_compress_result_t *cresult );
int upx_ucl_test_overlap ( const upx_bytep buf, unsigned src_off, int upx_ucl_test_overlap ( const upx_bytep buf,
unsigned src_len, unsigned* dst_len, const upx_bytep tbuf,
unsigned src_off, unsigned src_len,
unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ); const upx_compress_result_t *cresult );
#endif #endif
@@ -102,8 +108,10 @@ int upx_zlib_decompress ( const upx_bytep src, unsigned src_len,
upx_bytep dst, unsigned* dst_len, upx_bytep dst, unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ); const upx_compress_result_t *cresult );
int upx_zlib_test_overlap ( const upx_bytep buf, unsigned src_off, int upx_zlib_test_overlap ( const upx_bytep buf,
unsigned src_len, unsigned* dst_len, const upx_bytep tbuf,
unsigned src_off, unsigned src_len,
unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ); const upx_compress_result_t *cresult );
#endif #endif
+71 -35
View File
@@ -28,6 +28,7 @@
#include "conf.h" #include "conf.h"
#include "compress.h" #include "compress.h"
#include "mem.h"
void lzma_compress_config_t::reset() void lzma_compress_config_t::reset()
@@ -101,9 +102,15 @@ int compress_lzma_dummy = 0;
#undef _WIN32_WCE #undef _WIN32_WCE
#undef COMPRESS_MF_MT #undef COMPRESS_MF_MT
#undef _NO_EXCEPTIONS #undef _NO_EXCEPTIONS
#include "C/Common/MyInitGuid.h" #if (WITH_LZMA >= 0x449)
//#include "C/7zip/Compress/LZMA/LZMADecoder.h" # define INITGUID 1
#include "C/7zip/Compress/LZMA/LZMAEncoder.h" //# include "CPP/7zip/Compress/LZMA/LZMADecoder.h"
# include "CPP/7zip/Compress/LZMA/LZMAEncoder.h"
#else
# include "C/Common/MyInitGuid.h"
//# include "C/7zip/Compress/LZMA/LZMADecoder.h"
# include "C/7zip/Compress/LZMA/LZMAEncoder.h"
#endif
namespace MyLzma { namespace MyLzma {
@@ -173,16 +180,29 @@ STDMETHODIMP ProgressInfo::SetRatioInfo(const UInt64 *inSize, const UInt64 *outS
# pragma warning(disable: 424) // #424: extra ";" ignored # pragma warning(disable: 424) // #424: extra ";" ignored
#endif #endif
#include "C/Common/Alloc.cpp" #if (WITH_LZMA >= 0x449)
#include "C/Common/CRC.cpp" # include "C/Alloc.c"
//#include "C/7zip/Common/InBuffer.cpp" # include "C/7zCrc.c"
#include "C/7zip/Common/OutBuffer.cpp" # include "C/Compress/Lz/MatchFinder.c"
#include "C/7zip/Common/StreamUtils.cpp" //# include "CPP/7zip/Common/InBuffer.cpp"
#include "C/7zip/Compress/LZ/LZInWindow.cpp" # include "CPP/7zip/Common/OutBuffer.cpp"
//#include "C/7zip/Compress/LZ/LZOutWindow.cpp" # include "CPP/7zip/Common/StreamUtils.cpp"
//#include "C/7zip/Compress/LZMA/LZMADecoder.cpp" //# include "CPP/7zip/Compress/LZ/LZOutWindow.cpp"
#include "C/7zip/Compress/LZMA/LZMAEncoder.cpp" //# include "CPP/7zip/Compress/LZMA/LZMADecoder.cpp"
#include "C/7zip/Compress/RangeCoder/RangeCoderBit.cpp" # include "CPP/7zip/Compress/LZMA/LZMAEncoder.cpp"
# include "CPP/7zip/Compress/RangeCoder/RangeCoderBit.cpp"
#else
# include "C/Common/Alloc.cpp"
# include "C/Common/CRC.cpp"
//# include "C/7zip/Common/InBuffer.cpp"
# include "C/7zip/Common/OutBuffer.cpp"
# include "C/7zip/Common/StreamUtils.cpp"
# include "C/7zip/Compress/LZ/LZInWindow.cpp"
//# include "C/7zip/Compress/LZ/LZOutWindow.cpp"
//# include "C/7zip/Compress/LZMA/LZMADecoder.cpp"
# include "C/7zip/Compress/LZMA/LZMAEncoder.cpp"
# include "C/7zip/Compress/RangeCoder/RangeCoderBit.cpp"
#endif
#undef RC_NORMALIZE #undef RC_NORMALIZE
@@ -223,7 +243,7 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len,
PROPVARIANT pr[8]; PROPVARIANT pr[8];
pr[0].vt = pr[1].vt = pr[2].vt = pr[3].vt = VT_UI4; pr[0].vt = pr[1].vt = pr[2].vt = pr[3].vt = VT_UI4;
pr[4].vt = pr[5].vt = pr[6].vt = VT_UI4; pr[4].vt = pr[5].vt = pr[6].vt = VT_UI4;
pr[7].vt = VT_BSTR; unsigned nprops = 7;
// setup defaults // setup defaults
pr[0].uintVal = 2; // 0 .. 4 pr[0].uintVal = 2; // 0 .. 4
@@ -235,9 +255,11 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len,
pr[6].uintVal = 0; pr[6].uintVal = 0;
#ifdef COMPRESS_MF_BT4 #ifdef COMPRESS_MF_BT4
static wchar_t matchfinder[] = L"BT4"; static wchar_t matchfinder[] = L"BT4";
#endif
assert(NCompress::NLZMA::FindMatchFinder(matchfinder) >= 0); assert(NCompress::NLZMA::FindMatchFinder(matchfinder) >= 0);
pr[7].bstrVal = matchfinder; pr[nprops].vt = VT_BSTR;
pr[nprops].bstrVal = matchfinder;
nprops++;
#endif
#if 1 #if 1
pr[0].uintVal = lzma_compress_config_t::pos_bits_t::default_value_c; pr[0].uintVal = lzma_compress_config_t::pos_bits_t::default_value_c;
pr[1].uintVal = lzma_compress_config_t::lit_pos_bits_t::default_value_c; pr[1].uintVal = lzma_compress_config_t::lit_pos_bits_t::default_value_c;
@@ -348,7 +370,7 @@ int upx_lzma_compress ( const upx_bytep src, unsigned src_len,
# error # error
#endif #endif
if (enc.SetCoderProperties(propIDs, pr, 8) != S_OK) if (enc.SetCoderProperties(propIDs, pr, nprops) != S_OK)
goto error; goto error;
if (enc.WriteCoderProperties(&os) != S_OK) if (enc.WriteCoderProperties(&os) != S_OK)
goto error; goto error;
@@ -406,8 +428,13 @@ error:
#undef _LZMA_OUT_READ #undef _LZMA_OUT_READ
#undef _LZMA_PROB32 #undef _LZMA_PROB32
#undef _LZMA_LOC_OPT #undef _LZMA_LOC_OPT
#include "C/7zip/Compress/LZMA_C/LzmaDecode.h" #if (WITH_LZMA >= 0x449)
#include "C/7zip/Compress/LZMA_C/LzmaDecode.c" # include "C/Compress/Lzma/LzmaDecode.h"
# include "C/Compress/Lzma/LzmaDecode.c"
#else
# include "C/7zip/Compress/LZMA_C/LzmaDecode.h"
# include "C/7zip/Compress/LZMA_C/LzmaDecode.c"
#endif
int upx_lzma_decompress ( const upx_bytep src, unsigned src_len, int upx_lzma_decompress ( const upx_bytep src, unsigned src_len,
upx_bytep dst, unsigned* dst_len, upx_bytep dst, unsigned* dst_len,
@@ -483,28 +510,32 @@ error:
/************************************************************************* /*************************************************************************
// test_overlap // test_overlap - see <ucl/ucl.h> for semantics
**************************************************************************/ **************************************************************************/
int upx_lzma_test_overlap ( const upx_bytep buf, unsigned src_off, int upx_lzma_test_overlap ( const upx_bytep buf,
unsigned src_len, unsigned* dst_len, const upx_bytep tbuf,
unsigned src_off, unsigned src_len,
unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ) const upx_compress_result_t *cresult )
{ {
assert(M_IS_LZMA(method)); assert(M_IS_LZMA(method));
// FIXME - implement this MemBuffer b(src_off + src_len);
// Note that Packer::verifyOverlappingDecompression() will memcpy(b + src_off, buf + src_off, src_len);
// verify the final result in any case. unsigned saved_dst_len = *dst_len;
UNUSED(buf); int r = upx_lzma_decompress(b + src_off, src_len, b, dst_len, method, cresult);
if (r != UPX_E_OK)
unsigned overlap_overhead = src_off + src_len - *dst_len; return r;
//printf("upx_lzma_test_overlap: %d\n", overlap_overhead); if (*dst_len != saved_dst_len)
if ((int)overlap_overhead >= 256)
return UPX_E_OK;
UNUSED(cresult);
return UPX_E_ERROR; return UPX_E_ERROR;
// NOTE: there is a very tiny possibility that decompression has
// succeeded but the data is not restored correctly because of
// in-place buffer overlapping.
if (tbuf != NULL && memcmp(tbuf, b, *dst_len) != 0)
return UPX_E_ERROR;
return UPX_E_OK;
} }
@@ -514,9 +545,14 @@ int upx_lzma_test_overlap ( const upx_bytep buf, unsigned src_off,
const char *upx_lzma_version_string(void) const char *upx_lzma_version_string(void)
{ {
// FIXME #if (WITH_LZMA == 0x449)
// return NULL; return "4.49";
#elif (WITH_LZMA == 0x443)
return "4.43"; return "4.43";
#else
# error "unknown version"
return NULL;
#endif
} }
+5 -2
View File
@@ -228,12 +228,15 @@ int upx_ucl_decompress ( const upx_bytep src, unsigned src_len,
// //
**************************************************************************/ **************************************************************************/
int upx_ucl_test_overlap ( const upx_bytep buf, unsigned src_off, int upx_ucl_test_overlap ( const upx_bytep buf,
unsigned src_len, unsigned* dst_len, const upx_bytep tbuf,
unsigned src_off, unsigned src_len,
unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ) const upx_compress_result_t *cresult )
{ {
int r; int r;
UNUSED(tbuf); // not needed for UCL
switch (method) switch (method)
{ {
+19 -14
View File
@@ -28,6 +28,7 @@
#include "conf.h" #include "conf.h"
#include "compress.h" #include "compress.h"
#include "mem.h"
void zlib_compress_config_t::reset() void zlib_compress_config_t::reset()
@@ -188,28 +189,32 @@ done:
/************************************************************************* /*************************************************************************
// test_overlap // test_overlap - see <ucl/ucl.h> for semantics
**************************************************************************/ **************************************************************************/
int upx_zlib_test_overlap ( const upx_bytep buf, unsigned src_off, int upx_zlib_test_overlap ( const upx_bytep buf,
unsigned src_len, unsigned* dst_len, const upx_bytep tbuf,
unsigned src_off, unsigned src_len,
unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ) const upx_compress_result_t *cresult )
{ {
assert(method == M_DEFLATE); assert(method == M_DEFLATE);
// FIXME - implement this MemBuffer b(src_off + src_len);
// Note that Packer::verifyOverlappingDecompression() will memcpy(b + src_off, buf + src_off, src_len);
// verify the final result in any case. unsigned saved_dst_len = *dst_len;
UNUSED(buf); int r = upx_zlib_decompress(b + src_off, src_len, b, dst_len, method, cresult);
if (r != UPX_E_OK)
unsigned overlap_overhead = src_off + src_len - *dst_len; return r;
//printf("upx_zlib_test_overlap: %d\n", overlap_overhead); if (*dst_len != saved_dst_len)
if ((int)overlap_overhead >= 256)
return UPX_E_OK;
UNUSED(cresult);
return UPX_E_ERROR; return UPX_E_ERROR;
// NOTE: there is a very tiny possibility that decompression has
// succeeded but the data is not restored correctly because of
// in-place buffer overlapping.
if (tbuf != NULL && memcmp(tbuf, b, *dst_len) != 0)
return UPX_E_ERROR;
return UPX_E_OK;
} }
+10 -5
View File
@@ -448,14 +448,15 @@ private:
#define UPX_F_LINUX_ELFI_i386 20 #define UPX_F_LINUX_ELFI_i386 20
#define UPX_F_WINCE_ARM_PE 21 #define UPX_F_WINCE_ARM_PE 21
#define UPX_F_LINUX_ELF64_AMD 22 #define UPX_F_LINUX_ELF64_AMD 22
#define UPX_F_LINUX_ELF32_ARMLE 23 #define UPX_F_LINUX_ELF32_ARMEL 23
#define UPX_F_BSD_i386 24 #define UPX_F_BSD_i386 24
#define UPX_F_BSD_ELF_i386 25 #define UPX_F_BSD_ELF_i386 25
#define UPX_F_BSD_SH_i386 26 #define UPX_F_BSD_SH_i386 26
#define UPX_F_VMLINUX_AMD64 27 #define UPX_F_VMLINUX_AMD64 27
#define UPX_F_VMLINUX_ARM 28 #define UPX_F_VMLINUX_ARMEL 28
#define UPX_F_MACH_i386 29 #define UPX_F_MACH_i386 29
#define UPX_F_LINUX_ELF32_MIPSEL 30
#define UPX_F_PLAIN_TEXT 127 #define UPX_F_PLAIN_TEXT 127
@@ -463,8 +464,10 @@ private:
#define UPX_F_SOLARIS_SPARC 130 #define UPX_F_SOLARIS_SPARC 130
#define UPX_F_MACH_PPC32 131 #define UPX_F_MACH_PPC32 131
#define UPX_F_LINUX_ELFPPC32 132 #define UPX_F_LINUX_ELFPPC32 132
#define UPX_F_LINUX_ELF32_ARMBE 133 #define UPX_F_LINUX_ELF32_ARMEB 133
#define UPX_F_MACH_FAT 134 #define UPX_F_MACH_FAT 134
#define UPX_F_VMLINUX_ARMEB 135
#define UPX_F_VMLINUX_PPC32 136
// compression methods // compression methods
@@ -778,8 +781,10 @@ int upx_decompress ( const upx_bytep src, unsigned src_len,
upx_bytep dst, unsigned* dst_len, upx_bytep dst, unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ); const upx_compress_result_t *cresult );
int upx_test_overlap ( const upx_bytep buf, unsigned src_off, int upx_test_overlap ( const upx_bytep buf,
unsigned src_len, unsigned* dst_len, const upx_bytep tbuf,
unsigned src_off, unsigned src_len,
unsigned* dst_len,
int method, int method,
const upx_compress_result_t *cresult ); const upx_compress_result_t *cresult );
+8
View File
@@ -161,6 +161,14 @@ void throwBadLoader()
} }
void throwOutOfMemoryException(const char *msg)
{
if (msg == NULL)
msg = "out of memory";
throw OutOfMemoryException(msg);
}
void throwIOException(const char *msg, int e) void throwIOException(const char *msg, int e)
{ {
throw IOException(msg, e); throw IOException(msg, e);
+1
View File
@@ -220,6 +220,7 @@ void throwBadLoader() NORET;
void throwChecksumError() NORET; void throwChecksumError() NORET;
void throwCompressedDataViolation() NORET; void throwCompressedDataViolation() NORET;
void throwInternalError(const char *msg) NORET; void throwInternalError(const char *msg) NORET;
void throwOutOfMemoryException(const char *msg = NULL) NORET;
void throwIOException(const char *msg = NULL, int e = 0) NORET; void throwIOException(const char *msg = NULL, int e = 0) NORET;
void throwEOFException(const char *msg = NULL, int e = 0) NORET; void throwEOFException(const char *msg = NULL, int e = 0) NORET;
+1 -1
View File
@@ -106,7 +106,7 @@ static int F(Filter *f)
f->noncalls = noncalls; f->noncalls = noncalls;
f->lastcall = lastcall; f->lastcall = lastcall;
#if 0 #if 1
printf("\ncalls=%d noncalls=%d text_size=%x calltrickoffset=%x\n", printf("\ncalls=%d noncalls=%d text_size=%x calltrickoffset=%x\n",
calls,noncalls,size,cto8); calls,noncalls,size,cto8);
#endif #endif
+4 -4
View File
@@ -97,14 +97,14 @@ struct PackerNames
const char* fname; const char* fname;
const char* sname; const char* sname;
}; };
Entry names[32]; Entry names[64];
size_t names_count; size_t names_count;
const options_t *o; const options_t *o;
PackerNames() : names_count(0), o(NULL) { } PackerNames() : names_count(0), o(NULL) { }
void add(const Packer *p) void add(const Packer *p)
{ {
p->assertPacker(); p->assertPacker();
assert(names_count < 32); assert(names_count < 64);
names[names_count].fname = p->getFullName(o); names[names_count].fname = p->getFullName(o);
names[names_count].sname = p->getName(); names[names_count].sname = p->getName();
names_count++; names_count++;
@@ -205,8 +205,8 @@ void show_help(int verbose)
con_fprintf(f,"\nCompression tuning options:\n"); con_fprintf(f,"\nCompression tuning options:\n");
fg = con_fg(f,fg); fg = con_fg(f,fg);
con_fprintf(f, con_fprintf(f,
" --brute try all available compression methods & filters\n" " --brute try all available compression methods & filters [slow]\n"
" --ultra-brute try even more compression variants\n" " --ultra-brute try even more compression variants [very slow]\n"
"\n"); "\n");
fg = con_fg(f,FG_YELLOW); fg = con_fg(f,FG_YELLOW);
con_fprintf(f,"Backup options:\n"); con_fprintf(f,"Backup options:\n");
+14 -1
View File
@@ -159,7 +159,9 @@ void ElfLinker::init(const void *pdata_v, int plen)
input = new upx_byte[inputlen + 1]; input = new upx_byte[inputlen + 1];
unsigned new_len = u_len; unsigned new_len = u_len;
int r = upx_decompress(pdata, c_len, input, &new_len, method, NULL); int r = upx_decompress(pdata, c_len, input, &new_len, method, NULL);
if (r != 0 || new_len != u_len) if (r == UPX_E_OUT_OF_MEMORY)
throwOutOfMemoryException();
if (r != UPX_E_OK || new_len != u_len)
throwBadLoader(); throwBadLoader();
} }
else else
@@ -235,7 +237,12 @@ void ElfLinker::preprocessSymbols(char *start, char *end)
addSymbol(s, "*ABS*", value); addSymbol(s, "*ABS*", value);
assert(offset == 0); assert(offset == 0);
} }
#if 0
else if (sscanf(start, "%x%*8c %1023s %*x %1023s", else if (sscanf(start, "%x%*8c %1023s %*x %1023s",
#else
// work around broken scanf implementations
else if (sscanf(start, "%x%*c%*c%*c%*c%*c%*c%*c%*c %1023s %*x %1023s",
#endif
&offset, section, symbol) == 3) &offset, section, symbol) == 3)
{ {
char *s = strstr(start, symbol); char *s = strstr(start, symbol);
@@ -796,6 +803,12 @@ void ElfLinkerPpc32::relocate1(const Relocation *rel, upx_byte *location,
return super::relocate1(rel, location, value, type); return super::relocate1(rel, location, value, type);
type += 6; type += 6;
if (strcmp(type, "ADDR32") == 0)
{
set_be32(location, get_be32(location) + value);
return;
}
if (strncmp(type, "REL", 3) == 0) if (strncmp(type, "REL", 3) == 0)
{ {
value -= rel->section->offset + rel->offset; value -= rel->section->offset + rel->offset;
+15
View File
@@ -56,6 +56,9 @@ void options_t::reset()
o->backup = -1; o->backup = -1;
o->overlay = -1; o->overlay = -1;
o->preserve_mode = true;
o->preserve_ownership = true;
o->preserve_timestamp = true;
o->console = CON_FILE; o->console = CON_FILE;
#if defined(__DJGPP__) #if defined(__DJGPP__)
@@ -646,6 +649,15 @@ static int do_option(int optc, const char *arg)
case 519: case 519:
opt->no_env = true; opt->no_env = true;
break; break;
case 526:
opt->preserve_mode = false;
break;
case 527:
opt->preserve_ownership = false;
break;
case 528:
opt->preserve_timestamp = false;
break;
// compression settings // compression settings
case 520: // --small case 520: // --small
if (opt->small < 0) if (opt->small < 0)
@@ -900,7 +912,10 @@ static const struct mfx_option longopts[] =
{"force-compress", 0, 0, 'f'}, // and compression of suspicious files {"force-compress", 0, 0, 'f'}, // and compression of suspicious files
{"info", 0, 0, 'i'}, // info mode {"info", 0, 0, 'i'}, // info mode
{"no-env", 0x10, 0, 519}, // no environment var {"no-env", 0x10, 0, 519}, // no environment var
{"no-mode", 0x10, 0, 526}, // do not preserve mode (permissions)
{"no-owner", 0x10, 0, 527}, // do not preserve ownership
{"no-progress", 0, 0, 516}, // no progress bar {"no-progress", 0, 0, 516}, // no progress bar
{"no-time", 0x10, 0, 528}, // do not preserve timestamp
{"output", 0x21, 0, 'o'}, {"output", 0x21, 0, 'o'},
{"quiet", 0, 0, 'q'}, // quiet mode {"quiet", 0, 0, 'q'}, // quiet mode
{"silent", 0, 0, 'q'}, // quiet mode {"silent", 0, 0, 'q'}, // quiet mode
+1 -5
View File
@@ -192,11 +192,7 @@ void MemBuffer::alloc(unsigned size)
assert((int)total > 0); assert((int)total > 0);
unsigned char *p = (unsigned char *) malloc(total); unsigned char *p = (unsigned char *) malloc(total);
if (!p) if (!p)
{ throwOutOfMemoryException();
//throw bad_alloc();
throw OutOfMemoryException("out of memory");
//exit(1);
}
b_size = size; b_size = size;
if (use_mcheck) if (use_mcheck)
{ {
+3
View File
@@ -69,6 +69,9 @@ struct options_t {
bool no_env; bool no_env;
bool no_progress; bool no_progress;
const char *output_name; const char *output_name;
bool preserve_mode;
bool preserve_ownership;
bool preserve_timestamp;
int small; int small;
int verbose; int verbose;
bool to_stdout; bool to_stdout;
+8
View File
@@ -507,6 +507,10 @@ void PackArmPe::buildLoader(const Filter *ft)
void PackArmPe::pack(OutputFile *fo) void PackArmPe::pack(OutputFile *fo)
{ {
// FIXME: we need to think about better support for --exact
if (opt->exact)
throwCantPackExact();
const unsigned objs = ih.objects; const unsigned objs = ih.objects;
isection = new pe_section_t[objs]; isection = new pe_section_t[objs];
fi->seek(pe_offset+sizeof(ih),SEEK_SET); fi->seek(pe_offset+sizeof(ih),SEEK_SET);
@@ -542,10 +546,12 @@ void PackArmPe::pack(OutputFile *fo)
else if (opt->win32_pe.strip_relocs < 0) else if (opt->win32_pe.strip_relocs < 0)
opt->win32_pe.strip_relocs = (ih.imagebase >= 0x10000); opt->win32_pe.strip_relocs = (ih.imagebase >= 0x10000);
if (opt->win32_pe.strip_relocs) if (opt->win32_pe.strip_relocs)
{
if (ih.imagebase < 0x10000) if (ih.imagebase < 0x10000)
throwCantPack("--strip-relocs is not allowed when imagebase < 0x10000"); throwCantPack("--strip-relocs is not allowed when imagebase < 0x10000");
else else
ih.flags |= RELOCS_STRIPPED; ih.flags |= RELOCS_STRIPPED;
}
if (memcmp(isection[0].name,"UPX",3) == 0) if (memcmp(isection[0].name,"UPX",3) == 0)
throwAlreadyPackedByUPX(); throwAlreadyPackedByUPX();
@@ -882,6 +888,8 @@ void PackArmPe::pack(OutputFile *fo)
oh.codesize = osection[1].vsize; oh.codesize = osection[1].vsize;
oh.codebase = osection[1].vaddr; oh.codebase = osection[1].vaddr;
oh.headersize = osection[1].rawdataptr; oh.headersize = osection[1].rawdataptr;
if (rvamin < osection[0].rawdataptr)
throwCantPack("object alignment too small");
if (opt->win32_pe.strip_relocs && !isdll) if (opt->win32_pe.strip_relocs && !isdll)
oh.flags |= RELOCS_STRIPPED; oh.flags |= RELOCS_STRIPPED;
+2 -1
View File
@@ -42,7 +42,8 @@ public:
virtual int getVersion() const { return 13; } virtual int getVersion() const { return 13; }
virtual int getFormat() const { return UPX_F_DOS_COM; } virtual int getFormat() const { return UPX_F_DOS_COM; }
virtual const char *getName() const { return "dos/com"; } virtual const char *getName() const { return "dos/com"; }
virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.com" : "i286-dos16.com"; } //virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.com" : "i286-dos16.com"; }
virtual const char *getFullName(const options_t *) const { return "i086-dos16.com"; }
virtual const int *getCompressionMethods(int method, int level) const; virtual const int *getCompressionMethods(int method, int level) const;
virtual const int *getFilters() const; virtual const int *getFilters() const;
+2 -1
View File
@@ -76,10 +76,11 @@ const int *PackDjgpp2::getFilters() const
unsigned PackDjgpp2::findOverlapOverhead(const upx_bytep buf, unsigned PackDjgpp2::findOverlapOverhead(const upx_bytep buf,
const upx_bytep tbuf,
unsigned range, unsigned range,
unsigned upper_limit) const unsigned upper_limit) const
{ {
unsigned o = super::findOverlapOverhead(buf, range, upper_limit); unsigned o = super::findOverlapOverhead(buf, tbuf, range, upper_limit);
o = (o + 0x3ff) &~ 0x1ff; o = (o + 0x3ff) &~ 0x1ff;
return o; return o;
} }
+2 -1
View File
@@ -43,7 +43,7 @@ public:
virtual int getVersion() const { return 14; } virtual int getVersion() const { return 14; }
virtual int getFormat() const { return UPX_F_DJGPP2_COFF; } virtual int getFormat() const { return UPX_F_DJGPP2_COFF; }
virtual const char *getName() const { return "djgpp2/coff"; } virtual const char *getName() const { return "djgpp2/coff"; }
virtual const char *getFullName(const options_t *) const { return "i386-dos32.djgpp2"; } virtual const char *getFullName(const options_t *) const { return "i386-dos32.djgpp2.coff"; }
virtual const int *getCompressionMethods(int method, int level) const; virtual const int *getCompressionMethods(int method, int level) const;
virtual const int *getFilters() const; virtual const int *getFilters() const;
@@ -58,6 +58,7 @@ protected:
virtual int readFileHeader(); virtual int readFileHeader();
virtual unsigned findOverlapOverhead(const upx_bytep buf, virtual unsigned findOverlapOverhead(const upx_bytep buf,
const upx_bytep tbuf,
unsigned range = 0, unsigned range = 0,
unsigned upper_limit = ~0u) const; unsigned upper_limit = ~0u) const;
virtual void buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
+3
View File
@@ -68,10 +68,13 @@
}; };
enum { // e_machine enum { // e_machine
EM_386 = 3, EM_386 = 3,
EM_MIPS = 8,
EM_MIPS_RS3_LE = 10, /* MIPS R3000 little-endian */
EM_PPC = 20, EM_PPC = 20,
EM_PPC64 = 21, EM_PPC64 = 21,
EM_ARM = 40, EM_ARM = 40,
EM_X86_64 = 62 EM_X86_64 = 62
}; };
enum { // e_version enum { // e_version
EV_CURRENT = 1 EV_CURRENT = 1
+1 -1
View File
@@ -478,7 +478,7 @@ void PackExe::pack(OutputFile *fo)
for (ic = 0; ic < ih.relocs; ic++) for (ic = 0; ic < ih.relocs; ic++)
{ {
unsigned jc = get_le32(wr+4*ic); unsigned jc = get_le32(wr+4*ic);
set_le32(wr+4*ic, (jc>>16)*16+(jc&0xffff)); set_le32(wr+4*ic, ((jc>>16)*16+(jc&0xffff)) & 0xfffff);
} }
qsort(wr,ih.relocs,4,le32_compare); qsort(wr,ih.relocs,4,le32_compare);
relocsize = optimize_relocs(ibuf, ih_imagesize, wr, ih.relocs, w, &has_9a); relocsize = optimize_relocs(ibuf, ih_imagesize, wr, ih.relocs, w, &has_9a);
+2 -1
View File
@@ -42,7 +42,8 @@ public:
virtual int getVersion() const { return 13; } virtual int getVersion() const { return 13; }
virtual int getFormat() const { return UPX_F_DOS_EXE; } virtual int getFormat() const { return UPX_F_DOS_EXE; }
virtual const char *getName() const { return "dos/exe"; } virtual const char *getName() const { return "dos/exe"; }
virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.exe" : "i286-dos16.exe"; } //virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.exe" : "i286-dos16.exe"; }
virtual const char *getFullName(const options_t *) const { return "i086-dos16.exe"; }
virtual const int *getCompressionMethods(int method, int level) const; virtual const int *getCompressionMethods(int method, int level) const;
virtual const int *getFilters() const; virtual const int *getFilters() const;
+189 -40
View File
@@ -141,6 +141,7 @@ PackLinuxElf64::checkEhdr(Elf64_Ehdr const *ehdr) const
PackLinuxElf::PackLinuxElf(InputFile *f) PackLinuxElf::PackLinuxElf(InputFile *f)
: super(f), file_image(NULL), dynstr(NULL), : super(f), file_image(NULL), dynstr(NULL),
sz_phdrs(0), sz_elf_hdrs(0), sz_pack2(0), sz_phdrs(0), sz_elf_hdrs(0), sz_pack2(0),
lg2_page(12), page_size(1u<<lg2_page),
e_machine(0), ei_class(0), ei_data(0), ei_osabi(0), osabi_note(NULL) e_machine(0), ei_class(0), ei_data(0), ei_osabi(0), osabi_note(NULL)
{ {
} }
@@ -201,7 +202,7 @@ void PackLinuxElf::defineSymbols(Filter const *)
} }
PackLinuxElf32::PackLinuxElf32(InputFile *f) PackLinuxElf32::PackLinuxElf32(InputFile *f)
: super(f), phdri(NULL), : super(f), phdri(NULL), page_mask(~0u<<lg2_page),
dynseg(NULL), hashtab(NULL), dynsym(NULL) dynseg(NULL), hashtab(NULL), dynsym(NULL)
{ {
} }
@@ -212,7 +213,7 @@ PackLinuxElf32::~PackLinuxElf32()
} }
PackLinuxElf64::PackLinuxElf64(InputFile *f) PackLinuxElf64::PackLinuxElf64(InputFile *f)
: super(f), phdri(NULL) : super(f), phdri(NULL), page_mask(~0ull<<lg2_page)
{ {
} }
@@ -245,6 +246,12 @@ PackLinuxElf32armBe::getCompressionMethods(int method, int level) const
return Packer::getDefaultCompressionMethods_8(method, level); return Packer::getDefaultCompressionMethods_8(method, level);
} }
int const *
PackLinuxElf32mipsel::getCompressionMethods(int method, int level) const
{
return Packer::getDefaultCompressionMethods_le32(method, level);
}
int const * int const *
PackLinuxElf32ppc::getFilters() const PackLinuxElf32ppc::getFilters() const
{ {
@@ -288,6 +295,11 @@ void PackLinuxElf32armBe::updateLoader(OutputFile *fo)
ARM_updateLoader(fo); ARM_updateLoader(fo);
} }
void PackLinuxElf32mipsel::updateLoader(OutputFile *fo)
{
ARM_updateLoader(fo); // not ARM specific; (no 32-bit immediates)
}
void PackLinuxElf32::updateLoader(OutputFile *fo) void PackLinuxElf32::updateLoader(OutputFile *fo)
{ {
set_native32(&elfout.ehdr.e_entry, fo->getBytesWritten() + set_native32(&elfout.ehdr.e_entry, fo->getBytesWritten() +
@@ -469,6 +481,8 @@ PackLinuxElf32::buildLinuxLoader(
unsigned char *tmp = new unsigned char[tmp_len]; unsigned char *tmp = new unsigned char[tmp_len];
memset(tmp, 0, tmp_len); memset(tmp, 0, tmp_len);
r = upx_decompress(sizeof(h) + cprLoader, h.sz_cpr, tmp, &tmp_len, h.b_method, NULL); r = upx_decompress(sizeof(h) + cprLoader, h.sz_cpr, tmp, &tmp_len, h.b_method, NULL);
if (r == UPX_E_OUT_OF_MEMORY)
throwOutOfMemoryException();
printf("\n%d %d: %d %d %d\n", h.b_method, r, h.sz_cpr, h.sz_unc, tmp_len); printf("\n%d %d: %d %d %d\n", h.b_method, r, h.sz_cpr, h.sz_unc, tmp_len);
for (unsigned j=0; j < h.sz_unc; ++j) if (tmp[j]!=uncLoader[j]) { for (unsigned j=0; j < h.sz_unc; ++j) if (tmp[j]!=uncLoader[j]) {
printf("%d: %x %x\n", j, tmp[j], uncLoader[j]); printf("%d: %x %x\n", j, tmp[j], uncLoader[j]);
@@ -560,9 +574,7 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
} }
} }
} }
#define PAGE_MASK (~0u<<12) lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity
#define PAGE_SIZE (-PAGE_MASK)
lsize = /*getLoaderSize()*/ 64 * 1024; // upper bound; avoid circularity
acc_uint64l_t lo_va_stub = get_native64(&elfout.phdr[0].p_vaddr); acc_uint64l_t lo_va_stub = get_native64(&elfout.phdr[0].p_vaddr);
acc_uint64l_t adrc; acc_uint64l_t adrc;
acc_uint64l_t adrm; acc_uint64l_t adrm;
@@ -572,7 +584,7 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
unsigned lenm; unsigned lenm;
unsigned lenu; unsigned lenu;
len += (7&-lsize) + lsize; len += (7&-lsize) + lsize;
bool const is_big = (lo_va_user < (lo_va_stub + len + 2*PAGE_SIZE)); bool const is_big = (lo_va_user < (lo_va_stub + len + 2*page_size));
if (is_big) { if (is_big) {
set_native64( &elfout.ehdr.e_entry, set_native64( &elfout.ehdr.e_entry,
get_native64(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub); get_native64(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
@@ -581,10 +593,10 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
lo_va_stub = lo_va_user; lo_va_stub = lo_va_user;
adrc = lo_va_stub; adrc = lo_va_stub;
adrm = getbrk(phdri, get_native16(&ehdri.e_phnum)); adrm = getbrk(phdri, get_native16(&ehdri.e_phnum));
adru = PAGE_MASK & (~PAGE_MASK + adrm); // round up to page boundary adru = page_mask & (~page_mask + adrm); // round up to page boundary
adrx = adru + hlen; adrx = adru + hlen;
lenm = PAGE_SIZE + len; lenm = page_size + len;
lenu = PAGE_SIZE + len; lenu = page_size + len;
cntc = len >> 3; // over-estimate; corrected at runtime cntc = len >> 3; // over-estimate; corrected at runtime
} }
else { else {
@@ -592,12 +604,12 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
adrc = adrm; adrc = adrm;
adru = lo_va_stub; adru = lo_va_stub;
adrx = lo_va_stub + hlen; adrx = lo_va_stub + hlen;
lenm = PAGE_SIZE; lenm = page_size;
lenu = PAGE_SIZE + len; lenu = page_size + len;
cntc = 0; cntc = 0;
} }
adrm = PAGE_MASK & (~PAGE_MASK + adrm); // round up to page boundary adrm = page_mask & (~page_mask + adrm); // round up to page boundary
adrc = PAGE_MASK & (~PAGE_MASK + adrc); // round up to page boundary adrc = page_mask & (~page_mask + adrc); // round up to page boundary
linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
@@ -614,8 +626,6 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
#undef EI_NIDENT #undef EI_NIDENT
linker->defineSymbol("LENM", lenm); // len for map linker->defineSymbol("LENM", lenm); // len for map
linker->defineSymbol("ADRM", adrm); // addr for map linker->defineSymbol("ADRM", adrm); // addr for map
#undef PAGE_SIZE
#undef PAGE_MASK
//linker->dumpSymbols(); // debug //linker->dumpSymbols(); // debug
} }
@@ -734,6 +744,19 @@ PackLinuxElf32armLe::buildLoader(Filter const *ft)
stub_arm_linux_elf_fold, sizeof(stub_arm_linux_elf_fold), ft); stub_arm_linux_elf_fold, sizeof(stub_arm_linux_elf_fold), ft);
} }
static const
#include "stub/mipsel.r3000-linux.elf-entry.h"
static const
#include "stub/mipsel.r3000-linux.elf-fold.h"
void
PackLinuxElf32mipsel::buildLoader(Filter const *ft)
{
buildLinuxLoader(
stub_mipsel_r3000_linux_elf_entry, sizeof(stub_mipsel_r3000_linux_elf_entry),
stub_mipsel_r3000_linux_elf_fold, sizeof(stub_mipsel_r3000_linux_elf_fold), ft);
}
static const static const
#include "stub/powerpc-linux.elf-entry.h" #include "stub/powerpc-linux.elf-entry.h"
static const static const
@@ -993,6 +1016,10 @@ PackLinuxElf32::generateElfHdr(
cprElfHdr3 *const h3 = (cprElfHdr3 *)&elfout; cprElfHdr3 *const h3 = (cprElfHdr3 *)&elfout;
memcpy(h3, proto, sizeof(*h3)); // reads beyond, but OK memcpy(h3, proto, sizeof(*h3)); // reads beyond, but OK
h3->ehdr.e_ident[Elf32_Ehdr::EI_OSABI] = ei_osabi; h3->ehdr.e_ident[Elf32_Ehdr::EI_OSABI] = ei_osabi;
if (Elf32_Ehdr::EM_MIPS==e_machine) { // MIPS R3000 FIXME
h3->ehdr.e_ident[Elf32_Ehdr::EI_OSABI] = Elf32_Ehdr::ELFOSABI_NONE;
h3->ehdr.e_flags = ehdri.e_flags;
}
assert(get_native32(&h2->ehdr.e_phoff) == sizeof(Elf32_Ehdr)); assert(get_native32(&h2->ehdr.e_phoff) == sizeof(Elf32_Ehdr));
h2->ehdr.e_shoff = 0; h2->ehdr.e_shoff = 0;
@@ -1006,19 +1033,33 @@ PackLinuxElf32::generateElfHdr(
set_native32(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize; set_native32(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize;
h2->phdr[0].p_memsz = h2->phdr[0].p_filesz; h2->phdr[0].p_memsz = h2->phdr[0].p_filesz;
unsigned const e_phnum = get_native16(&ehdri.e_phnum);
Elf32_Phdr const *phdr = phdri;
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
if (phdr->PT_LOAD32 == get_native32(&phdr->p_type)) {
unsigned x = phdr->p_align >> lg2_page;
while (x>>=1) {
++lg2_page;
}
}
}
page_size = 1u<<lg2_page;
page_mask = ~0u<<lg2_page;
for (unsigned j=0; j < 3; ++j) {
set_native32(&h3->phdr[j].p_align, page_size);
}
// Info for OS kernel to set the brk() // Info for OS kernel to set the brk()
if (brka) { if (brka) {
#define PAGE_MASK (~0u<<12)
// linux-2.6.14 binfmt_elf.c: SIGKILL if (0==.p_memsz) on a page boundary // 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); 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_type, PT_LOAD32); // be sure
set_native32(&h2->phdr[1].p_offset, ~PAGE_MASK & brkb); set_native32(&h2->phdr[1].p_offset, ~page_mask & brkb);
set_native32(&h2->phdr[1].p_vaddr, brkb); set_native32(&h2->phdr[1].p_vaddr, brkb);
set_native32(&h2->phdr[1].p_paddr, brkb); set_native32(&h2->phdr[1].p_paddr, brkb);
h2->phdr[1].p_filesz = 0; h2->phdr[1].p_filesz = 0;
h2->phdr[1].p_memsz = 0; h2->phdr[1].p_memsz = 0;
set_native32(&h2->phdr[1].p_flags, Elf32_Phdr::PF_R | Elf32_Phdr::PF_W); set_native32(&h2->phdr[1].p_flags, Elf32_Phdr::PF_R | Elf32_Phdr::PF_W);
#undef PAGE_MASK
} }
if (ph.format==getFormat()) { if (ph.format==getFormat()) {
assert(2==get_native16(&h2->ehdr.e_phnum)); assert(2==get_native16(&h2->ehdr.e_phnum));
@@ -1057,16 +1098,14 @@ PackOpenBSDElf32x86::generateElfHdr(
set_native32(&h3->phdr[0].p_filesz, sizeof(*h3)+sizeof(elfnote)); // + identsize; set_native32(&h3->phdr[0].p_filesz, sizeof(*h3)+sizeof(elfnote)); // + identsize;
h3->phdr[0].p_memsz = h3->phdr[0].p_filesz; h3->phdr[0].p_memsz = h3->phdr[0].p_filesz;
#define PAGE_MASK (~0u<<12) unsigned const brkb = brka | ((0==(~page_mask & brka)) ? 0x20 : 0);
unsigned const brkb = brka | ((0==(~PAGE_MASK & brka)) ? 0x20 : 0);
set_native32(&h3->phdr[1].p_type, PT_LOAD32); // be sure set_native32(&h3->phdr[1].p_type, PT_LOAD32); // be sure
set_native32(&h3->phdr[1].p_offset, ~PAGE_MASK & brkb); set_native32(&h3->phdr[1].p_offset, ~page_mask & brkb);
set_native32(&h3->phdr[1].p_vaddr, brkb); set_native32(&h3->phdr[1].p_vaddr, brkb);
set_native32(&h3->phdr[1].p_paddr, brkb); set_native32(&h3->phdr[1].p_paddr, brkb);
h3->phdr[1].p_filesz = 0; h3->phdr[1].p_filesz = 0;
h3->phdr[1].p_memsz = 0; h3->phdr[1].p_memsz = 0;
set_native32(&h3->phdr[1].p_flags, Elf32_Phdr::PF_R | Elf32_Phdr::PF_W); set_native32(&h3->phdr[1].p_flags, Elf32_Phdr::PF_R | Elf32_Phdr::PF_W);
#undef PAGE_MASK
set_native32(&h3->phdr[2].p_type, Elf32_Phdr::PT_NOTE); set_native32(&h3->phdr[2].p_type, Elf32_Phdr::PT_NOTE);
set_native32(&h3->phdr[2].p_offset, note_offset); set_native32(&h3->phdr[2].p_offset, note_offset);
@@ -1118,19 +1157,33 @@ PackLinuxElf64::generateElfHdr(
set_native64(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize; set_native64(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize;
h2->phdr[0].p_memsz = h2->phdr[0].p_filesz; h2->phdr[0].p_memsz = h2->phdr[0].p_filesz;
unsigned const e_phnum = get_native16(&ehdri.e_phnum);
Elf64_Phdr const *phdr = phdri;
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
if (phdr->PT_LOAD64 == get_native64(&phdr->p_type)) {
unsigned x = phdr->p_align >> lg2_page;
while (x>>=1) {
++lg2_page;
}
}
}
page_size = 1u <<lg2_page;
page_mask = ~0ull<<lg2_page;
for (unsigned j=0; j < 3; ++j) {
set_native64(&h3->phdr[j].p_align, page_size);
}
// Info for OS kernel to set the brk() // Info for OS kernel to set the brk()
if (brka) { if (brka) {
#define PAGE_MASK (~0ul<<12)
// linux-2.6.14 binfmt_elf.c: SIGKILL if (0==.p_memsz) on a page boundary // 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); 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_type, PT_LOAD32); // be sure
set_native64(&h2->phdr[1].p_offset, ~PAGE_MASK & brkb); set_native64(&h2->phdr[1].p_offset, ~page_mask & brkb);
set_native64(&h2->phdr[1].p_vaddr, brkb); set_native64(&h2->phdr[1].p_vaddr, brkb);
set_native64(&h2->phdr[1].p_paddr, brkb); set_native64(&h2->phdr[1].p_paddr, brkb);
h2->phdr[1].p_filesz = 0; h2->phdr[1].p_filesz = 0;
h2->phdr[1].p_memsz = 0; h2->phdr[1].p_memsz = 0;
set_native32(&h2->phdr[1].p_flags, Elf64_Phdr::PF_R | Elf64_Phdr::PF_W); set_native32(&h2->phdr[1].p_flags, Elf64_Phdr::PF_R | Elf64_Phdr::PF_W);
#undef PAGE_MASK
} }
if (ph.format==getFormat()) { if (ph.format==getFormat()) {
assert(2==get_native16(&h2->ehdr.e_phnum)); assert(2==get_native16(&h2->ehdr.e_phnum));
@@ -1187,6 +1240,14 @@ void PackLinuxElf32armBe::pack1(OutputFile *fo, Filter &ft)
generateElfHdr(fo, &h3, getbrk(phdri, get_native16(&ehdri.e_phnum)) ); generateElfHdr(fo, &h3, getbrk(phdri, get_native16(&ehdri.e_phnum)) );
} }
void PackLinuxElf32mipsel::pack1(OutputFile *fo, Filter &ft)
{
super::pack1(fo, ft);
cprElfHdr3 h3;
memcpy(&h3, stub_mipsel_r3000_linux_elf_fold, sizeof(Elf32_Ehdr) + 2*sizeof(Elf32_Phdr));
generateElfHdr(fo, &h3, getbrk(phdri, get_native16(&ehdri.e_phnum)) );
}
void PackLinuxElf32ppc::pack1(OutputFile *fo, Filter &ft) void PackLinuxElf32ppc::pack1(OutputFile *fo, Filter &ft)
{ {
super::pack1(fo, ft); super::pack1(fo, ft);
@@ -1443,12 +1504,17 @@ PackLinuxElf32armLe::getFilters() const
return ARM_getFilters(false); return ARM_getFilters(false);
} }
const int *
PackLinuxElf32mipsel::getFilters() const
{
static const int f_none[] = { FT_END };
return f_none;
}
void PackLinuxElf32::ARM_defineSymbols(Filter const * /*ft*/) void PackLinuxElf32::ARM_defineSymbols(Filter const * /*ft*/)
{ {
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info); unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
#define PAGE_MASK (~0u<<12)
#define PAGE_SIZE (-PAGE_MASK)
lsize = /*getLoaderSize()*/ 4 * 1024; // upper bound; avoid circularity lsize = /*getLoaderSize()*/ 4 * 1024; // upper bound; avoid circularity
unsigned const lo_va_user = 0x8000; // XXX unsigned const lo_va_user = 0x8000; // XXX
unsigned lo_va_stub = get_native32(&elfout.phdr[0].p_vaddr); unsigned lo_va_stub = get_native32(&elfout.phdr[0].p_vaddr);
@@ -1465,17 +1531,15 @@ void PackLinuxElf32::ARM_defineSymbols(Filter const * /*ft*/)
lo_va_stub = lo_va_user; lo_va_stub = lo_va_user;
adrc = lo_va_stub; adrc = lo_va_stub;
adrm = getbrk(phdri, get_native16(&ehdri.e_phnum)); adrm = getbrk(phdri, get_native16(&ehdri.e_phnum));
adrx = hlen + (PAGE_MASK & (~PAGE_MASK + adrm)); // round up to page boundary adrx = hlen + (page_mask & (~page_mask + adrm)); // round up to page boundary
} }
adrm = PAGE_MASK & (~PAGE_MASK + adrm); // round up to page boundary adrm = page_mask & (~page_mask + adrm); // round up to page boundary
adrc = PAGE_MASK & (~PAGE_MASK + adrc); // round up to page boundary adrc = page_mask & (~page_mask + adrc); // round up to page boundary
linker->defineSymbol("CPR0", 4+ linker->getSymbolOffset("cpr0")); linker->defineSymbol("CPR0", 4+ linker->getSymbolOffset("cpr0"));
linker->defineSymbol("LENF", 4+ linker->getSymbolOffset("end_decompress")); linker->defineSymbol("LENF", 4+ linker->getSymbolOffset("end_decompress"));
linker->defineSymbol("ADRM", adrm); // addr for map linker->defineSymbol("ADRM", adrm); // addr for map
#undef PAGE_SIZE
#undef PAGE_MASK
} }
void PackLinuxElf32armLe::defineSymbols(Filter const *ft) void PackLinuxElf32armLe::defineSymbols(Filter const *ft)
@@ -1488,6 +1552,78 @@ void PackLinuxElf32armBe::defineSymbols(Filter const *ft)
ARM_defineSymbols(ft); ARM_defineSymbols(ft);
} }
void PackLinuxElf32mipsel::defineSymbols(Filter const * /*ft*/)
{
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
// We want to know if compressed data, plus stub, plus a couple pages,
// will fit below the uncompressed program in memory. But we don't
// know the final total compressed size yet, so use the uncompressed
// size (total over all PT_LOAD32) as an upper bound.
unsigned len = 0;
unsigned lo_va_user = ~0u; // infinity
for (int j= get_native16(&ehdri.e_phnum); --j>=0; ) {
if (PT_LOAD32 == get_native32(&phdri[j].p_type)) {
len += (unsigned)get_native32(&phdri[j].p_filesz);
unsigned const va = get_native32(&phdri[j].p_vaddr);
if (va < lo_va_user) {
lo_va_user = va;
}
}
}
lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity
unsigned lo_va_stub = get_native32(&elfout.phdr[0].p_vaddr);
unsigned adrc;
unsigned adrm;
unsigned adru;
unsigned adrx;
unsigned cntc;
unsigned lenm;
unsigned lenu;
len += (7&-lsize) + lsize;
bool const is_big = (lo_va_user < (lo_va_stub + len + 2*page_size));
if (is_big) {
set_native32( &elfout.ehdr.e_entry,
get_native32(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
set_native32(&elfout.phdr[0].p_vaddr, lo_va_user);
set_native32(&elfout.phdr[0].p_paddr, lo_va_user);
lo_va_stub = lo_va_user;
adrc = lo_va_stub;
adrm = getbrk(phdri, get_native16(&ehdri.e_phnum));
adru = page_mask & (~page_mask + adrm); // round up to page boundary
adrx = adru + hlen;
lenm = page_size + len;
lenu = page_size + len;
cntc = len >> 3; // over-estimate; corrected at runtime
}
else {
adrm = lo_va_stub + len;
adrc = adrm;
adru = lo_va_stub;
adrx = lo_va_stub + hlen;
lenm = page_size;
lenu = page_size + len;
cntc = 0;
}
adrm = page_mask & (~page_mask + adrm); // round up to page boundary
adrc = page_mask & (~page_mask + adrc); // round up to page boundary
linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
// For actual moving, we need the true count, which depends on sz_pack2
// and is not yet known. So the runtime stub detects "no move"
// if adrm==adrc, and otherwise uses actual sz_pack2 to compute cntc.
//linker->defineSymbol("CNTC", cntc); // count for copy
linker->defineSymbol("ADRC", adrc); // addr for copy
linker->defineSymbol("LENU", lenu); // len for unmap
linker->defineSymbol("ADRU", adru); // addr for unmap
linker->defineSymbol("LENM", lenm); // len for map
linker->defineSymbol("ADRM", adrm); // addr for map
//linker->dumpSymbols(); // debug
}
void PackLinuxElf32::pack4(OutputFile *fo, Filter &ft) void PackLinuxElf32::pack4(OutputFile *fo, Filter &ft)
{ {
overlay_offset = sz_elf_hdrs + sizeof(linfo); overlay_offset = sz_elf_hdrs + sizeof(linfo);
@@ -1502,10 +1638,8 @@ void PackLinuxElf32::pack4(OutputFile *fo, Filter &ft)
// tries to make .bss, which requires PF_W. // tries to make .bss, which requires PF_W.
// But strict SELinux (or PaX, grSecurity) disallows PF_W with PF_X. // But strict SELinux (or PaX, grSecurity) disallows PF_W with PF_X.
#if 0 /*{*/ #if 0 /*{*/
#define PAGE_MASK (~0u<<12)
// pre-calculate for benefit of runtime disappearing act via munmap() // pre-calculate for benefit of runtime disappearing act via munmap()
set_native32(&elfout.phdr[0].p_memsz, PAGE_MASK & (~PAGE_MASK + len)); set_native32(&elfout.phdr[0].p_memsz, page_mask & (~page_mask + len));
#undef PAGE_MASK
#else /*}{*/ #else /*}{*/
set_native32(&elfout.phdr[0].p_memsz, len); set_native32(&elfout.phdr[0].p_memsz, len);
#endif /*}*/ #endif /*}*/
@@ -1552,10 +1686,8 @@ void PackLinuxElf64::pack4(OutputFile *fo, Filter &ft)
// tries to make .bss, which requires PF_W. // tries to make .bss, which requires PF_W.
// But strict SELinux (or PaX, grSecurity) disallows PF_W with PF_X. // But strict SELinux (or PaX, grSecurity) disallows PF_W with PF_X.
#if 0 /*{*/ #if 0 /*{*/
#define PAGE_MASK (~0u<<12)
// pre-calculate for benefit of runtime disappearing act via munmap() // pre-calculate for benefit of runtime disappearing act via munmap()
set_native64(&elfout.phdr[0].p_memsz, PAGE_MASK & (~PAGE_MASK + len)); set_native64(&elfout.phdr[0].p_memsz, page_mask & (~page_mask + len));
#undef PAGE_MASK
#else /*}{*/ #else /*}{*/
set_native64(&elfout.phdr[0].p_memsz, len); set_native64(&elfout.phdr[0].p_memsz, len);
#endif /*}*/ #endif /*}*/
@@ -1873,11 +2005,28 @@ PackLinuxElf32armLe::~PackLinuxElf32armLe()
{ {
} }
PackLinuxElf32mipsel::PackLinuxElf32mipsel(InputFile *f) : super(f)
{
e_machine = Elf32_Ehdr::EM_MIPS;
ei_class = Elf32_Ehdr::ELFCLASS32;
ei_data = Elf32_Ehdr::ELFDATA2LSB;
ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX;
}
PackLinuxElf32mipsel::~PackLinuxElf32mipsel()
{
}
Linker* PackLinuxElf32armLe::newLinker() const Linker* PackLinuxElf32armLe::newLinker() const
{ {
return new ElfLinkerArmLE(); return new ElfLinkerArmLE();
} }
Linker* PackLinuxElf32mipsel::newLinker() const
{
return new ElfLinkerMipsLE();
}
PackLinuxElf32armBe::PackLinuxElf32armBe(InputFile *f) : super(f) PackLinuxElf32armBe::PackLinuxElf32armBe(InputFile *f) : super(f)
{ {
e_machine = Elf32_Ehdr::EM_ARM; e_machine = Elf32_Ehdr::EM_ARM;
+28 -4
View File
@@ -70,6 +70,8 @@ protected:
unsigned sz_phdrs; // sizeof Phdr[] unsigned sz_phdrs; // sizeof Phdr[]
unsigned sz_elf_hdrs; // all Elf headers unsigned sz_elf_hdrs; // all Elf headers
unsigned sz_pack2; // after pack2(), before loader unsigned sz_pack2; // after pack2(), before loader
unsigned lg2_page; // log2(PAGE_SIZE)
unsigned page_size; // 1u<<lg2_page
unsigned short e_machine; unsigned short e_machine;
unsigned char ei_class; unsigned char ei_class;
@@ -126,6 +128,7 @@ protected:
protected: protected:
Elf32_Ehdr ehdri; // from input file Elf32_Ehdr ehdri; // from input file
Elf32_Phdr *phdri; // for input file Elf32_Phdr *phdri; // for input file
unsigned page_mask; // AND clears the offset-within-page
Elf32_Dyn const *dynseg; // from PT_DYNAMIC Elf32_Dyn const *dynseg; // from PT_DYNAMIC
unsigned int const *hashtab; // from DT_HASH unsigned int const *hashtab; // from DT_HASH
@@ -211,6 +214,7 @@ protected:
protected: protected:
Elf64_Ehdr ehdri; // from input file Elf64_Ehdr ehdri; // from input file
Elf64_Phdr *phdri; // for input file Elf64_Phdr *phdri; // for input file
acc_uint64l_t page_mask; // AND clears the offset-within-page
struct cprElfHdr1 { struct cprElfHdr1 {
Elf64_Ehdr ehdr; Elf64_Ehdr ehdr;
@@ -416,8 +420,8 @@ class PackLinuxElf32armLe : public PackLinuxElf32Le
public: public:
PackLinuxElf32armLe(InputFile *f); PackLinuxElf32armLe(InputFile *f);
virtual ~PackLinuxElf32armLe(); virtual ~PackLinuxElf32armLe();
virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMLE; } virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMEL; }
virtual const char *getName() const { return "linux/armLE"; } virtual const char *getName() const { return "linux/armel"; }
virtual const char *getFullName(const options_t *) const { return "arm-linux.elf"; } virtual const char *getFullName(const options_t *) const { return "arm-linux.elf"; }
virtual const int *getFilters() const; virtual const int *getFilters() const;
@@ -436,8 +440,8 @@ class PackLinuxElf32armBe : public PackLinuxElf32Be
public: public:
PackLinuxElf32armBe(InputFile *f); PackLinuxElf32armBe(InputFile *f);
virtual ~PackLinuxElf32armBe(); virtual ~PackLinuxElf32armBe();
virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMBE; } virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMEB; }
virtual const char *getName() const { return "linux/armBE"; } virtual const char *getName() const { return "linux/armeb"; }
virtual const char *getFullName(const options_t *) const { return "armeb-linux.elf"; } virtual const char *getFullName(const options_t *) const { return "armeb-linux.elf"; }
virtual const int *getFilters() const; virtual const int *getFilters() const;
@@ -450,6 +454,26 @@ protected:
virtual void defineSymbols(Filter const *); virtual void defineSymbols(Filter const *);
}; };
class PackLinuxElf32mipsel : public PackLinuxElf32Le
{
typedef PackLinuxElf32Le super;
public:
PackLinuxElf32mipsel(InputFile *f);
virtual ~PackLinuxElf32mipsel();
virtual int getFormat() const { return UPX_F_LINUX_ELF32_MIPSEL; }
virtual const char *getName() const { return "linux/mipsel"; }
virtual const char *getFullName(const options_t *) const { return "mipsel-linux.elf"; }
virtual const int *getFilters() const;
protected:
virtual const int *getCompressionMethods(int method, int level) const;
virtual Linker* newLinker() const;
virtual void pack1(OutputFile *, Filter &); // generate executable header
virtual void buildLoader(const Filter *);
virtual void updateLoader(OutputFile *);
virtual void defineSymbols(Filter const *);
};
#endif /*} already included */ #endif /*} already included */
+1 -1
View File
@@ -138,7 +138,7 @@ class PackBSDI386 : public PackLinuxI386
public: public:
PackBSDI386(InputFile *f); PackBSDI386(InputFile *f);
virtual int getFormat() const { return UPX_F_BSD_i386; } virtual int getFormat() const { return UPX_F_BSD_i386; }
virtual const char *getName() const { return "*BSD/386"; } virtual const char *getName() const { return "BSD/386"; }
virtual const char *getFullName(const options_t *) const { return "i386-bsd.elf.execve"; } virtual const char *getFullName(const options_t *) const { return "i386-bsd.elf.execve"; }
protected: protected:
+25 -8
View File
@@ -194,6 +194,8 @@ bool PackPs1::getBkupHeader(unsigned char *p, unsigned char *dst)
unsigned sz_bh = SZ_IH_BKUP; unsigned sz_bh = SZ_IH_BKUP;
int r = upx_decompress((const unsigned char *)&src->ih_bkup, src->len, int r = upx_decompress((const unsigned char *)&src->ih_bkup, src->len,
unc_bh, &sz_bh, M_NRV2E_8, NULL ); unc_bh, &sz_bh, M_NRV2E_8, NULL );
if (r == UPX_E_OUT_OF_MEMORY)
throwOutOfMemoryException();
if (r != UPX_E_OK || sz_bh != SZ_IH_BKUP) if (r != UPX_E_OK || sz_bh != SZ_IH_BKUP)
throwInternalError("header decompression failed"); throwInternalError("header decompression failed");
unsigned ad = upx_adler32(unc_bh, SZ_IH_BKUP); unsigned ad = upx_adler32(unc_bh, SZ_IH_BKUP);
@@ -254,8 +256,9 @@ bool PackPs1::canPack()
fi->readx(buf, sizeof(buf)); fi->readx(buf, sizeof(buf));
checkAlreadyPacked(buf, sizeof(buf)); checkAlreadyPacked(buf, sizeof(buf));
for (unsigned i = 0; i < sizeof(buf); i++) for (size_t i = 0; i < sizeof(buf); i++)
if (buf[i] != 0) if (buf[i] != 0)
{
if (!opt->force) if (!opt->force)
throwCantPack("unknown data in header (try --force)"); throwCantPack("unknown data in header (try --force)");
else else
@@ -265,6 +268,7 @@ bool PackPs1::canPack()
opt->backup = 1; opt->backup = 1;
break; break;
} }
}
if (!checkFileHeader()) if (!checkFileHeader())
throwCantPack("unsupported header flags (try --force)"); throwCantPack("unsupported header flags (try --force)");
if (!opt->force && file_size < PS_MIN_SIZE) if (!opt->force && file_size < PS_MIN_SIZE)
@@ -318,6 +322,7 @@ void PackPs1::buildLoader(const Filter *)
sa_tmp += overlap = ALIGN_UP((ph.overlap_overhead - sa_tmp), 4u); sa_tmp += overlap = ALIGN_UP((ph.overlap_overhead - sa_tmp), 4u);
} }
if (isCon || M_IS_LZMA(ph.method))
foundBss = findBssSection(); foundBss = findBssSection();
if (M_IS_LZMA(ph.method) && !buildPart2) if (M_IS_LZMA(ph.method) && !buildPart2)
@@ -370,16 +375,20 @@ void PackPs1::buildLoader(const Filter *)
else else
{ {
if (M_IS_LZMA(ph.method)) if (M_IS_LZMA(ph.method))
addLoader("cdb.start.lzma", "pad.code", "cdb.entry.lzma", method, "cdb.lzma.cpr", addLoader(!foundBss ? "cdb.start.lzma" : "bss.cdb.start.lzma", "pad.code",
!foundBss ? "cdb.entry.lzma" : "bss.cdb.entry.lzma",
method, "cdb.lzma.cpr",
ih.tx_ptr & 0xffff ? "dec.ptr" : "dec.ptr.hi", ih.tx_ptr & 0xffff ? "dec.ptr" : "dec.ptr.hi",
"lzma.exec", NULL); "lzma.exec", NULL);
else else
{
assert(foundBss != true);
addLoader("cdb.start", "pad.code", "cdb.entry", addLoader("cdb.start", "pad.code", "cdb.entry",
ih.tx_ptr & 0xffff ? "cdb.dec.ptr" : "cdb.dec.ptr.hi", ih.tx_ptr & 0xffff ? "cdb.dec.ptr" : "cdb.dec.ptr.hi",
method, method,
sa_cnt ? sa_cnt > (0x10000 << 2) ? "memset.long" : "memset.short" : "", sa_cnt ? sa_cnt > (0x10000 << 2) ? "memset.long" : "memset.short" : "",
!foundBss ? "cdb.exit" : "bss.exit", "cdb.exit", NULL);
"pad.code", NULL); }
} }
addLoader("UPX1HEAD", "IDENTSTR", NULL); addLoader("UPX1HEAD", "IDENTSTR", NULL);
} }
@@ -554,7 +563,9 @@ void PackPs1::pack(OutputFile *fo)
} }
else else
{ {
d_len = (lsize - h_len) - getLoaderSectionStart(M_IS_LZMA(ph.method) ? "cdb.entry.lzma" : "cdb.entry"); const char* entry_lzma = !foundBss ? "cdb.entry.lzma" : "bss.cdb.entry.lzma";
d_len = (lsize - h_len) - getLoaderSectionStart(M_IS_LZMA(ph.method) ? entry_lzma : "cdb.entry");
e_len = (lsize - d_len) - h_len; e_len = (lsize - d_len) - h_len;
} }
@@ -565,11 +576,13 @@ void PackPs1::pack(OutputFile *fo)
linker->defineSymbol("ldr_sz", M_IS_LZMA(ph.method) ? sz_lunc + 16 : (d_len-pad_code)); linker->defineSymbol("ldr_sz", M_IS_LZMA(ph.method) ? sz_lunc + 16 : (d_len-pad_code));
if (foundBss) if (foundBss)
{
if (M_IS_LZMA(ph.method)) if (M_IS_LZMA(ph.method))
linker->defineSymbol("wrkmem", bss_end - 160 - getDecompressorWrkmemSize() linker->defineSymbol("wrkmem", bss_end - 160 - getDecompressorWrkmemSize()
- (sz_lunc + 16)); - (sz_lunc + 16));
else else
linker->defineSymbol("wrkmem", bss_end - 16 - (d_len - pad_code)); linker->defineSymbol("wrkmem", bss_end - 16 - (d_len - pad_code));
}
const unsigned entry = comp_data_start - e_len; const unsigned entry = comp_data_start - e_len;
@@ -578,7 +591,7 @@ void PackPs1::pack(OutputFile *fo)
unsigned pad = 0; unsigned pad = 0;
if (!opt->ps1_exe.no_align) if (!opt->ps1_exe.no_align || !isCon)
{ {
pad = oh.tx_len; pad = oh.tx_len;
oh.tx_len = ALIGN_UP(oh.tx_len, CD_SEC); oh.tx_len = ALIGN_UP(oh.tx_len, CD_SEC);
@@ -611,8 +624,12 @@ void PackPs1::pack(OutputFile *fo)
linker->defineSymbol("PSVR", FIX_PSVR); linker->defineSymbol("PSVR", FIX_PSVR);
linker->defineSymbol("CPDO", comp_data_start); linker->defineSymbol("CPDO", comp_data_start);
if (M_IS_LZMA(ph.method)) if (M_IS_LZMA(ph.method))
linker->defineSymbol("lzma_cpr", getLoaderSectionStart("lzma.exec") {
- getLoaderSectionStart("cdb.entry.lzma")); unsigned entry_lzma = getLoaderSectionStart( !foundBss ? "cdb.entry.lzma" :
"bss.cdb.entry.lzma");
linker->defineSymbol("lzma_cpr", getLoaderSectionStart("lzma.exec") - entry_lzma);
}
} }
relocateLoader(); relocateLoader();
+2 -1
View File
@@ -42,7 +42,8 @@ public:
virtual int getVersion() const { return 13; } virtual int getVersion() const { return 13; }
virtual int getFormat() const { return UPX_F_DOS_SYS; } virtual int getFormat() const { return UPX_F_DOS_SYS; }
virtual const char *getName() const { return "dos/sys"; } virtual const char *getName() const { return "dos/sys"; }
virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.sys" : "i286-dos16.sys"; } //virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_8086 ? "i086-dos16.sys" : "i286-dos16.sys"; }
virtual const char *getFullName(const options_t *) const { return "i086-dos16.sys"; }
virtual bool canPack(); virtual bool canPack();
+2 -1
View File
@@ -67,11 +67,12 @@ const int *PackTmt::getFilters() const
unsigned PackTmt::findOverlapOverhead(const upx_bytep buf, unsigned PackTmt::findOverlapOverhead(const upx_bytep buf,
const upx_bytep tbuf,
unsigned range, unsigned range,
unsigned upper_limit) const unsigned upper_limit) const
{ {
// make sure the decompressor will be paragraph aligned // make sure the decompressor will be paragraph aligned
unsigned o = super::findOverlapOverhead(buf, range, upper_limit); unsigned o = super::findOverlapOverhead(buf, tbuf, range, upper_limit);
o = ((o + 0x20) &~ 0xf) - (ph.u_len & 0xf); o = ((o + 0x20) &~ 0xf) - (ph.u_len & 0xf);
return o; return o;
} }
+2 -1
View File
@@ -42,7 +42,7 @@ public:
virtual int getVersion() const { return 13; } virtual int getVersion() const { return 13; }
virtual int getFormat() const { return UPX_F_TMT_ADAM; } virtual int getFormat() const { return UPX_F_TMT_ADAM; }
virtual const char *getName() const { return "tmt/adam"; } virtual const char *getName() const { return "tmt/adam"; }
virtual const char *getFullName(const options_t *) const { return "i386-dos32.tmt"; } virtual const char *getFullName(const options_t *) const { return "i386-dos32.tmt.adam"; }
virtual const int *getCompressionMethods(int method, int level) const; virtual const int *getCompressionMethods(int method, int level) const;
virtual const int *getFilters() const; virtual const int *getFilters() const;
@@ -56,6 +56,7 @@ protected:
virtual int readFileHeader(); virtual int readFileHeader();
virtual unsigned findOverlapOverhead(const upx_bytep buf, virtual unsigned findOverlapOverhead(const upx_bytep buf,
const upx_bytep tbuf,
unsigned range = 0, unsigned range = 0,
unsigned upper_limit = ~0u) const; unsigned upper_limit = ~0u) const;
virtual void buildLoader(const Filter *ft); virtual void buildLoader(const Filter *ft);
+7 -3
View File
@@ -173,8 +173,10 @@ void PackUnix::pack2(OutputFile *fo, Filter &ft)
compressWithFilters(&ft, OVERHEAD, NULL_cconf, filter_strategy); compressWithFilters(&ft, OVERHEAD, NULL_cconf, filter_strategy);
if (ph.c_len < ph.u_len) { if (ph.c_len < ph.u_len) {
const upx_bytep tbuf = NULL;
if (ft.id == 0) tbuf = ibuf;
ph.overlap_overhead = OVERHEAD; ph.overlap_overhead = OVERHEAD;
if (!testOverlappingDecompression(obuf, ph.overlap_overhead)) { if (!testOverlappingDecompression(obuf, tbuf, ph.overlap_overhead)) {
// not in-place compressible // not in-place compressible
ph.c_len = ph.u_len; ph.c_len = ph.u_len;
} }
@@ -353,8 +355,10 @@ void PackUnix::packExtent(
} }
if (ph.c_len < ph.u_len) { if (ph.c_len < ph.u_len) {
const upx_bytep tbuf = NULL;
if (ft == NULL || ft->id == 0) tbuf = ibuf;
ph.overlap_overhead = OVERHEAD; ph.overlap_overhead = OVERHEAD;
if (!testOverlappingDecompression(obuf, ph.overlap_overhead)) { if (!testOverlappingDecompression(obuf, tbuf, ph.overlap_overhead)) {
// not in-place compressible // not in-place compressible
ph.c_len = ph.u_len; ph.c_len = ph.u_len;
} }
@@ -499,7 +503,7 @@ int PackUnix::canUnpack()
fi->seek(-bufsize, SEEK_END); fi->seek(-bufsize, SEEK_END);
fi->readx(buf, bufsize); fi->readx(buf, bufsize);
if (!getPackHeader(buf, bufsize)) if (!getPackHeader(buf, bufsize, true)) // allow incompressible extents
return false; return false;
int l = ph.buf_offset + ph.getPackHeaderSize(); int l = ph.buf_offset + ph.getPackHeaderSize();
+411 -14
View File
@@ -44,6 +44,10 @@ static const
#include "stub/amd64-linux.kernel.vmlinux.h" #include "stub/amd64-linux.kernel.vmlinux.h"
static const static const
#include "stub/arm-linux.kernel.vmlinux.h" #include "stub/arm-linux.kernel.vmlinux.h"
static const
#include "stub/armeb-linux.kernel.vmlinux.h"
static const
#include "stub/powerpc-linux.kernel.vmlinux.h"
/************************************************************************* /*************************************************************************
@@ -201,6 +205,7 @@ bool PackVmlinuxBase<T>::canPack()
return 0 < n_ptload; return 0 < n_ptload;
} }
#include "p_elf.h"
template <class T> template <class T>
void PackVmlinuxBase<T>::pack(OutputFile *fo) void PackVmlinuxBase<T>::pack(OutputFile *fo)
@@ -265,13 +270,224 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
upx_compress_config_t cconf; cconf.reset(); upx_compress_config_t cconf; cconf.reset();
// limit stack size needed for runtime decompression // limit stack size needed for runtime decompression
cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28KB stack cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28KB stack
unsigned ppc32_extra = 0;
if (Ehdr::EM_PPC==my_e_machine) {
// output layout:
// .long UPX_MAGIC_LE32
// .long L20 - L10
// L10:
// b_info for Ehdr; compressed Ehdr; .balign 4 // one block only
// b_info for LOAD; compressed LOAD; .balign 4 // possibly many blocks
// // This allows per-block filters!
// L20:
// b f_decompress
// +4: f_unfilter(char *buf, unsigned len, unsigned cto8, unsigned ftid)
// // Code for multiple filters can "daisy chain" on ftid.
// f_decompress(char const *src, unsigned src_len,
// char *dst, unsigned *dst_len, int method)
unsigned tmp;
tmp = UPX_MAGIC_LE32; fo->write(&tmp, sizeof(tmp)); fo_off += sizeof(tmp);
tmp = 0; fo->write(&tmp, sizeof(tmp)); fo_off += sizeof(tmp);
ppc32_extra += 2*sizeof(tmp);
unsigned const len_unc = sizeof(ehdri) + sizeof(Phdr) * ehdri.e_phnum;
MemBuffer unc_hdr(len_unc);
MemBuffer cpr_hdr; cpr_hdr.allocForCompression(len_unc);
memcpy(&unc_hdr[0], &ehdri, sizeof(ehdri));
memcpy(&unc_hdr[sizeof(ehdri)], phdri, sizeof(Phdr) * ehdri.e_phnum);
unsigned len_cpr = 0;
int const r = upx_compress(unc_hdr, len_unc, cpr_hdr, &len_cpr,
NULL, ph.method, 10, NULL, NULL );
if (UPX_E_OK!=r || len_unc<=len_cpr) // FIXME: allow no compression
throwInternalError("Ehdr compression failed");
struct b_info { // 12-byte header before each compressed block
unsigned sz_unc; // uncompressed_size
unsigned sz_cpr; // compressed_size
unsigned char b_method; // compression algorithm
unsigned char b_ftid; // filter id
unsigned char b_cto8; // filter parameter
unsigned char b_unused; // FIXME: !=0 for partial-block unfilter
// unsigned f_offset, f_len; // only if partial-block unfilter
}
__attribute_packed;
struct b_info hdr_info;
set_be32(&hdr_info.sz_unc, len_unc);
set_be32(&hdr_info.sz_cpr, len_cpr);
hdr_info.b_method = ph.method;
hdr_info.b_ftid = 0;
hdr_info.b_cto8 = 0;
hdr_info.b_unused = 0;
fo->write(&hdr_info, sizeof(hdr_info)); fo_off += sizeof(hdr_info);
unsigned const frag = (3& (0u-len_cpr));
ppc32_extra += sizeof(hdr_info) + len_cpr + frag;
fo_off += len_cpr + frag;
fo->write(cpr_hdr, len_cpr + frag);
// Partial filter: .text and following contiguous SHF_EXECINSTR
upx_bytep f_ptr = ibuf;
unsigned f_len = 0;
Shdr const *shdr = 1+ shdri; // skip empty shdr[0]
if (ft.buf_len==0 // not specified yet FIXME: was set near construction
&& (Shdr::SHF_ALLOC & shdr->sh_flags)
&& (Shdr::SHF_EXECINSTR & shdr->sh_flags)) {
// shdr[1] is instructions (probably .text)
f_ptr = ibuf + (unsigned) (shdr->sh_offset - phdri[0].p_offset);
f_len = shdr->sh_size;
++shdr;
for (int j= ehdri.e_shnum - 2; --j>=0; ++shdr) {
unsigned prev_end = shdr[-1].sh_size + shdr[-1].sh_offset;
prev_end += ~(0u-shdr[0].sh_addralign) & (0u-prev_end); // align_up
if ((Shdr::SHF_ALLOC & shdr->sh_flags)
&& (Shdr::SHF_EXECINSTR & shdr->sh_flags)
&& shdr[0].sh_offset==prev_end) {
f_len += shdr->sh_size;
}
else {
break;
}
}
}
else { // ft.buf_len already specified, or Shdr[1] not instructions
f_ptr = ibuf;
f_len = ph.u_len;
}
compressWithFilters(ibuf, ph.u_len, obuf,
f_ptr, f_len, // filter range
NULL, 0, // hdr_ptr, hdr_len
&ft, 512, &cconf, getStrategy(ft));
set_be32(&hdr_info.sz_unc, ph.u_len);
set_be32(&hdr_info.sz_cpr, ph.c_len);
hdr_info.b_ftid = ft.id;
hdr_info.b_cto8 = ft.cto;
if (ph.u_len!=f_len) {
hdr_info.b_unused = 1; // flag for partial filter
}
fo->write(&hdr_info, sizeof(hdr_info)); fo_off += sizeof(hdr_info);
ppc32_extra += sizeof(hdr_info);
if (ph.u_len!=f_len) {
set_be32(&hdr_info.sz_unc, f_ptr - (upx_bytep) ibuf);
set_be32(&hdr_info.sz_cpr, f_len);
fo->write(&hdr_info, 2*sizeof(unsigned)); fo_off += 2*sizeof(unsigned);
ppc32_extra += 2*sizeof(unsigned);
}
#if 0 /*{ Documentation: changes to arch/powerpc/boot/main.c */
struct b_info {
unsigned sz_unc;
unsigned sz_cpr;
unsigned char b_method;
unsigned char b_ftid;
unsigned char b_cto8;
unsigned char b_unused;
};
typedef int (*upx_f_unc)( /* uncompress */
unsigned char const *src, unsigned src_len,
unsigned char *dst, unsigned *dst_len,
int method
);
typedef int (*upx_f_unf)( /* unfilter */
unsigned char *buf,
unsigned len,
unsigned cto8,
unsigned ftid
);
unsigned char const *upx_expand( // return updated src [aligned, too]
unsigned char const *src,
unsigned char *dst,
unsigned *const dst_len,
upx_f_unc const f_unc
)
{
if (0==*dst_len) {
*dst_len = ((struct b_info const *)src)->sz_unc;
}
upx_f_unf const f_unf = (upx_f_unf)(sizeof(int) + (char *)f_unc);
unsigned total_len = 0;
unsigned need = *dst_len;
while (0 < need) {
struct b_info const *const b_hdr = (struct b_info const *)src;
src = (unsigned char const *)(1+ b_hdr);
unsigned blk_len = b_hdr->sz_unc;
int const rv = (*f_unc)(src, b_hdr->sz_cpr, dst, &blk_len, b_hdr->b_method);
if (0!=rv) {
printf("decompress error %d\n\r", rv);
exit();
}
if (b_hdr->b_ftid) {
(*f_unf)(dst, b_hdr->sz_unc, b_hdr->b_cto8, b_hdr->b_ftid);
}
src += b_hdr->sz_cpr;
src += (3& -(int)src); // 4-byte align
dst += b_hdr->sz_unc;
total_len += b_hdr->sz_unc;
need -= b_hdr->sz_unc;
}
*dst_len = total_len;
return src;
}
void prep_kernel(unsigned long a1, unsigned long a2)
{
upx_f_unc f_unc = (upx_f_unc)0;
vmlinuz.addr = (unsigned long)_vmlinux_start;
vmlinuz.size = (unsigned long)(_vmlinux_end - _vmlinux_start);
if (0x55505821 == *(unsigned *)vmlinuz.addr) {
/* was compressed by upx */
/* Uncompress elfheader */
unsigned const *const fwa = (unsigned *)vmlinuz.addr;
f_unc = (upx_f_unc)((char *)&fwa[2] + fwa[1]);
unsigned dst_len = 0;
unsigned char const *src = (unsigned char const *)&fwa[2];
src = upx_expand(src, (unsigned char *)elfheader, &dst_len, f_unc);
unsigned const src_len = src - (unsigned char const *)&fwa[0];
vmlinuz.addr += src_len;
vmlinuz.size -= src_len;
} else {
memcpy(elfheader, (const void *)vmlinuz.addr,
sizeof(elfheader));
}
=====
/* Eventually gunzip the kernel */
if (f_unc) {
/* was compressed by upx */
printf("upx_expand (0x%lx <- 0x%lx:0x%0lx)...",
vmlinux.addr, vmlinuz.addr, vmlinuz.addr+vmlinuz.size);
unsigned dst_len = vmlinux.size - elfoffset;
upx_expand((unsigned char const *)vmlinuz.addr,
(unsigned char *)vmlinux.addr, &dst_len, f_unc);
printf("done 0x%lx bytes\n\r", len);
} else {
memmove((void *)vmlinux.addr,(void *)vmlinuz.addr,
vmlinuz.size);
/* Skip over the ELF header */
#ifdef DEBUG
printf("... skipping 0x%lx bytes of ELF header\n\r",
elfoffset);
#endif
vmlinux.addr += elfoffset;
}
=====
}
#endif /*}*/
}
else {
compressWithFilters(&ft, 512, &cconf, getStrategy(ft)); compressWithFilters(&ft, 512, &cconf, getStrategy(ft));
}
unsigned const txt_c_len = ph.c_len; unsigned const txt_c_len = ph.c_len;
const unsigned lsize = getLoaderSize(); const unsigned lsize = getLoaderSize();
defineDecompressorSymbols(); defineDecompressorSymbols();
if (ft.id!=0) {
defineFilterSymbols(&ft); defineFilterSymbols(&ft);
}
relocateLoader(); relocateLoader();
MemBuffer loader(lsize); MemBuffer loader(lsize);
@@ -285,13 +501,13 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
shdro[1].sh_name = ptr_diff(p, shstrtab); shdro[1].sh_name = ptr_diff(p, shstrtab);
shdro[1].sh_type = Shdr::SHT_PROGBITS; shdro[1].sh_type = Shdr::SHT_PROGBITS;
shdro[1].sh_flags = Shdr::SHF_ALLOC | Shdr::SHF_EXECINSTR; shdro[1].sh_flags = Shdr::SHF_ALLOC | Shdr::SHF_EXECINSTR;
shdro[1].sh_offset = fo_off; shdro[1].sh_offset = fo_off - ppc32_extra;
shdro[1].sh_size = txt_c_len + lsize; // plus more ... shdro[1].sh_size = ppc32_extra + txt_c_len + lsize; // plus more ...
shdro[1].sh_addralign = 1; // default shdro[1].sh_addralign = 1; // default
fo_off += write_vmlinux_head(fo, &shdro[1]); fo_off += write_vmlinux_head(fo, &shdro[1]);
fo->write(obuf, txt_c_len); fo_off += txt_c_len; fo->write(obuf, txt_c_len); fo_off += txt_c_len;
unsigned const a = (shdro[1].sh_addralign -1) & (0u-txt_c_len); unsigned const a = (shdro[1].sh_addralign -1) & (0u-(ppc32_extra + txt_c_len));
if (0!=a) { // align if (0!=a) { // align
fo_off += a; fo_off += a;
shdro[1].sh_size += a; shdro[1].sh_size += a;
@@ -359,7 +575,7 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
shdro[5].sh_name = ptr_diff(p, shstrtab); shdro[5].sh_name = ptr_diff(p, shstrtab);
shdro[5].sh_type = Shdr::SHT_SYMTAB; shdro[5].sh_type = Shdr::SHT_SYMTAB;
shdro[5].sh_offset = fo_off; shdro[5].sh_offset = fo_off;
shdro[5].sh_size = 5*sizeof(Sym); shdro[5].sh_size = ((Ehdr::EM_PPC==my_e_machine) + 5)*sizeof(Sym);
//shdro[5].sh_flags = Shdr::SHF_INFO_LINK; //shdro[5].sh_flags = Shdr::SHF_INFO_LINK;
shdro[5].sh_link = 6; // to .strtab for symbols shdro[5].sh_link = 6; // to .strtab for symbols
shdro[5].sh_info = 1+3; // number of non-global symbols [binutils/bfd/elf.c] shdro[5].sh_info = 1+3; // number of non-global symbols [binutils/bfd/elf.c]
@@ -386,26 +602,40 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
Sym unc_ker; Sym unc_ker;
unc_ker.st_name = 1; // 1 byte into strtab unc_ker.st_name = 1; // 1 byte into strtab
unc_ker.st_value = 0; unc_ker.st_value = 0;
unc_ker.st_size = txt_c_len; unc_ker.st_size = ppc32_extra + txt_c_len;
unc_ker.st_info = unc_ker.make_st_info(Sym::STB_GLOBAL, Sym::STT_FUNC); unc_ker.st_info = unc_ker.make_st_info(Sym::STB_GLOBAL, Sym::STT_FUNC);
unc_ker.st_other = Sym::STV_DEFAULT; unc_ker.st_other = Sym::STV_DEFAULT;
unc_ker.st_shndx = 1; // .text unc_ker.st_shndx = 1; // .text
fo->write(&unc_ker, sizeof(unc_ker)); fo_off += sizeof(unc_ker); fo->write(&unc_ker, sizeof(unc_ker)); fo_off += sizeof(unc_ker);
unsigned const lablen = strlen(my_boot_label); unsigned const lablen = strlen(my_boot_label);
if (Ehdr::EM_PPC==my_e_machine) {
unc_ker.st_name += 1+ lablen;
unc_ker.st_value = unc_ker.st_size;
unc_ker.st_size = 0;
fo->write(&unc_ker, sizeof(unc_ker)); fo_off += sizeof(unc_ker);
}
while (0!=*p++) ; while (0!=*p++) ;
shdro[6].sh_name = ptr_diff(p, shstrtab); shdro[6].sh_name = ptr_diff(p, shstrtab);
shdro[6].sh_type = Shdr::SHT_STRTAB; shdro[6].sh_type = Shdr::SHT_STRTAB;
shdro[6].sh_offset = fo_off; shdro[6].sh_offset = fo_off;
shdro[6].sh_size = 2+ lablen; // '\0' before and after shdro[6].sh_size = 2+ lablen + (Ehdr::EM_PPC==my_e_machine)*(1+ 12); // '\0' before and after
shdro[6].sh_addralign = 1; shdro[6].sh_addralign = 1;
fo->seek(1, SEEK_CUR); // the '\0' before fo->seek(1, SEEK_CUR); // the '\0' before
fo->write(my_boot_label, 1+ lablen); // include the '\0' terminator fo->write(my_boot_label, 1+ lablen); // include the '\0' terminator
if (Ehdr::EM_PPC==my_e_machine) {
fo->write("_vmlinux_end", 1+ 12); fo_off += 1+ 12;
}
fo_off += 2+ lablen; fo_off += 2+ lablen;
fo->seek(0, SEEK_SET); fo->seek(0, SEEK_SET);
fo->write(&ehdro, sizeof(ehdro)); fo->write(&ehdro, sizeof(ehdro));
fo->write(&shdro, sizeof(shdro)); fo->write(&shdro, sizeof(shdro));
if (Ehdr::EM_PPC==my_e_machine) {
fo->seek(sizeof(unsigned), SEEK_CUR);
set_be32(&ppc32_extra, ppc32_extra - 2*sizeof(unsigned) + txt_c_len);
fo->write(&ppc32_extra, sizeof(ppc32_extra));
}
if (!checkFinalCompressionRatio(fo)) if (!checkFinalCompressionRatio(fo))
throwNotCompressible(); throwNotCompressible();
@@ -547,18 +777,41 @@ const int *PackVmlinuxI386::getFilters() const
return filters; return filters;
} }
const int *PackVmlinuxARM::getCompressionMethods(int method, int level) const const int *PackVmlinuxARMEL::getCompressionMethods(int method, int level) const
{ {
return Packer::getDefaultCompressionMethods_8(method, level); return Packer::getDefaultCompressionMethods_8(method, level);
} }
const int *PackVmlinuxARMEB::getCompressionMethods(int method, int level) const
{
return Packer::getDefaultCompressionMethods_8(method, level);
}
const int *PackVmlinuxARM::getFilters() const const int *PackVmlinuxPPC32::getCompressionMethods(int method, int level) const
{
// No real dependency on LE32.
return Packer::getDefaultCompressionMethods_le32(method, level);
}
const int *PackVmlinuxARMEL::getFilters() const
{ {
static const int f50[] = { 0x50, FT_END }; static const int f50[] = { 0x50, FT_END };
return f50; return f50;
} }
const int *PackVmlinuxARMEB::getFilters() const
{
static const int f51[] = { 0x51, FT_END };
return f51;
}
const int *PackVmlinuxPPC32::getFilters() const
{
static const int fd0[] = { 0xd0, FT_END };
return fd0;
}
// //
// Examples as of 2004-07-16 [readelf --segments vmlinux # before fiddling]: // Examples as of 2004-07-16 [readelf --segments vmlinux # before fiddling]:
// //
@@ -646,18 +899,39 @@ void PackVmlinuxAMD64::buildLoader(const Filter *ft)
"LINUX992,IDENTSTR,UPX1HEAD", NULL); "LINUX992,IDENTSTR,UPX1HEAD", NULL);
} }
bool PackVmlinuxARM::is_valid_e_entry(Addr e_entry) bool PackVmlinuxARMEL::is_valid_e_entry(Addr e_entry)
{ {
return 0xc0008000==e_entry; return 0xc0008000==e_entry;
} }
Linker* PackVmlinuxARM::newLinker() const bool PackVmlinuxARMEB::is_valid_e_entry(Addr e_entry)
{
return 0xc0008000==e_entry;
}
bool PackVmlinuxPPC32::is_valid_e_entry(Addr e_entry)
{
return 0xc0000000==e_entry;
}
Linker* PackVmlinuxARMEL::newLinker() const
{ {
return new ElfLinkerArmLE; return new ElfLinkerArmLE;
} }
Linker* PackVmlinuxARMEB::newLinker() const
{
return new ElfLinkerArmBE;
}
void PackVmlinuxARM::buildLoader(const Filter *ft) Linker* PackVmlinuxPPC32::newLinker() const
{
return new ElfLinkerPpc32;
}
void PackVmlinuxARMEL::buildLoader(const Filter *ft)
{ {
// prepare loader // prepare loader
initLoader(stub_arm_linux_kernel_vmlinux, sizeof(stub_arm_linux_kernel_vmlinux)); initLoader(stub_arm_linux_kernel_vmlinux, sizeof(stub_arm_linux_kernel_vmlinux));
@@ -679,6 +953,50 @@ void PackVmlinuxARM::buildLoader(const Filter *ft)
addLoader("IDENTSTR,UPX1HEAD", NULL); addLoader("IDENTSTR,UPX1HEAD", NULL);
} }
void PackVmlinuxARMEB::buildLoader(const Filter *ft)
{
// prepare loader
initLoader(stub_armeb_linux_kernel_vmlinux, sizeof(stub_armeb_linux_kernel_vmlinux));
addLoader("LINUX000", NULL);
if (ft->id) {
assert(ft->calls > 0);
addLoader("LINUX010", NULL);
}
addLoader("LINUX020", NULL);
if (ft->id) {
addFilter32(ft->id);
}
addLoader("LINUX030", NULL);
if (ph.method == M_NRV2E_8) addLoader("NRV2E", NULL);
else if (ph.method == M_NRV2B_8) addLoader("NRV2B", NULL);
else if (ph.method == M_NRV2D_8) addLoader("NRV2D", NULL);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", NULL);
else throwBadLoader();
addLoader("IDENTSTR,UPX1HEAD", NULL);
}
void PackVmlinuxPPC32::buildLoader(const Filter *ft)
{
// prepare loader
initLoader(stub_powerpc_linux_kernel_vmlinux, sizeof(stub_powerpc_linux_kernel_vmlinux));
addLoader("LINUX000", NULL);
if (ft->id) {
assert(ft->calls > 0);
addLoader("LINUX010", NULL);
}
addLoader("LINUX020", NULL);
if (ft->id) {
addFilter32(ft->id);
}
addLoader("LINUX030", NULL);
if (ph.method == M_NRV2E_LE32) addLoader("NRV2E", NULL);
else if (ph.method == M_NRV2B_LE32) addLoader("NRV2B", NULL);
else if (ph.method == M_NRV2D_LE32) addLoader("NRV2D", NULL);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", NULL);
else throwBadLoader();
addLoader("IDENTSTR,UPX1HEAD", NULL);
}
static const static const
#include "stub/i386-linux.kernel.vmlinux-head.h" #include "stub/i386-linux.kernel.vmlinux-head.h"
@@ -686,6 +1004,10 @@ static const
#include "stub/amd64-linux.kernel.vmlinux-head.h" #include "stub/amd64-linux.kernel.vmlinux-head.h"
static const static const
#include "stub/arm-linux.kernel.vmlinux-head.h" #include "stub/arm-linux.kernel.vmlinux-head.h"
static const
#include "stub/armeb-linux.kernel.vmlinux-head.h"
static const
#include "stub/powerpc-linux.kernel.vmlinux-head.h"
unsigned PackVmlinuxI386::write_vmlinux_head( unsigned PackVmlinuxI386::write_vmlinux_head(
OutputFile *const fo, OutputFile *const fo,
@@ -719,7 +1041,7 @@ printf("UnCompressed length=0x%x\n", ph.u_len);
return sizeof(stub_amd64_linux_kernel_vmlinux_head); return sizeof(stub_amd64_linux_kernel_vmlinux_head);
} }
void PackVmlinuxARM::defineDecompressorSymbols() void PackVmlinuxARMEL::defineDecompressorSymbols()
{ {
super::defineDecompressorSymbols(); super::defineDecompressorSymbols();
linker->defineSymbol( "COMPRESSED_LENGTH", ph.c_len); linker->defineSymbol( "COMPRESSED_LENGTH", ph.c_len);
@@ -727,6 +1049,22 @@ void PackVmlinuxARM::defineDecompressorSymbols()
linker->defineSymbol("METHOD", ph.method); linker->defineSymbol("METHOD", ph.method);
} }
void PackVmlinuxARMEB::defineDecompressorSymbols()
{
super::defineDecompressorSymbols();
linker->defineSymbol( "COMPRESSED_LENGTH", ph.c_len);
linker->defineSymbol("UNCOMPRESSED_LENGTH", ph.u_len);
linker->defineSymbol("METHOD", ph.method);
}
void PackVmlinuxPPC32::defineDecompressorSymbols()
{
super::defineDecompressorSymbols();
// linker->defineSymbol( "COMPRESSED_LENGTH", ph.c_len);
// linker->defineSymbol("UNCOMPRESSED_LENGTH", ph.u_len);
// linker->defineSymbol("METHOD", ph.method);
}
void PackVmlinuxI386::defineDecompressorSymbols() void PackVmlinuxI386::defineDecompressorSymbols()
{ {
super::defineDecompressorSymbols(); super::defineDecompressorSymbols();
@@ -744,7 +1082,7 @@ void PackVmlinuxAMD64::defineDecompressorSymbols()
linker->defineSymbol("PHYSICAL_START", phdri[0].p_paddr); linker->defineSymbol("PHYSICAL_START", phdri[0].p_paddr);
} }
unsigned PackVmlinuxARM::write_vmlinux_head( unsigned PackVmlinuxARMEL::write_vmlinux_head(
OutputFile *const fo, OutputFile *const fo,
Shdr *const stxt Shdr *const stxt
) )
@@ -766,8 +1104,38 @@ unsigned PackVmlinuxARM::write_vmlinux_head(
return sizeof(stub_arm_linux_kernel_vmlinux_head); return sizeof(stub_arm_linux_kernel_vmlinux_head);
} }
unsigned PackVmlinuxARMEB::write_vmlinux_head(
OutputFile *const fo,
Shdr *const stxt
)
{
// First word from vmlinux-head.S
fo->write(&stub_armeb_linux_kernel_vmlinux_head[0], 4);
bool PackVmlinuxARM::has_valid_vmlinux_head() // Second word
U32 tmp_u32;
unsigned const t = (0xff000000 &
BeLePolicy::get32(&stub_armeb_linux_kernel_vmlinux_head[4]))
| (0x00ffffff & (0u - 1 + ((3+ ph.c_len)>>2)));
tmp_u32 = t;
fo->write(&tmp_u32, 4);
stxt->sh_addralign = 4;
stxt->sh_size += sizeof(stub_armeb_linux_kernel_vmlinux_head);
return sizeof(stub_armeb_linux_kernel_vmlinux_head);
}
unsigned PackVmlinuxPPC32::write_vmlinux_head(
OutputFile * /*const fo*/,
Shdr * /*const stxt*/
)
{
return 0;
}
bool PackVmlinuxARMEL::has_valid_vmlinux_head()
{ {
U32 buf[2]; U32 buf[2];
fi->seek(p_text->sh_offset + sizeof(stub_arm_linux_kernel_vmlinux_head) -8, SEEK_SET); fi->seek(p_text->sh_offset + sizeof(stub_arm_linux_kernel_vmlinux_head) -8, SEEK_SET);
@@ -781,6 +1149,34 @@ bool PackVmlinuxARM::has_valid_vmlinux_head()
return false; return false;
} }
bool PackVmlinuxARMEB::has_valid_vmlinux_head()
{
U32 buf[2];
fi->seek(p_text->sh_offset + sizeof(stub_armeb_linux_kernel_vmlinux_head) -8, SEEK_SET);
fi->readx(buf, sizeof(buf));
//unsigned const word0 = buf[0];
unsigned const word1 = buf[1];
if (0xeb==(word1>>24)
&& (0x00ffffff& word1)==(0u - 1 + ((3+ ph.c_len)>>2))) {
return true;
}
return false;
}
bool PackVmlinuxPPC32::has_valid_vmlinux_head()
{
U32 buf[2];
fi->seek(p_text->sh_offset + sizeof(stub_powerpc_linux_kernel_vmlinux_head) -8, SEEK_SET);
fi->readx(buf, sizeof(buf));
//unsigned const word0 = buf[0];
unsigned const word1 = buf[1];
if (0xeb==(word1>>24)
&& (0x00ffffff& word1)==(0u - 1 + ((3+ ph.c_len)>>2))) {
return true;
}
return false;
}
bool PackVmlinuxI386::has_valid_vmlinux_head() bool PackVmlinuxI386::has_valid_vmlinux_head()
{ {
unsigned char buf[5]; unsigned char buf[5];
@@ -1058,6 +1454,7 @@ Linker* PackVmlinuxAMD64::newLinker() const
// instantiate instances // instantiate instances
template class PackVmlinuxBase<ElfClass_LE32>; template class PackVmlinuxBase<ElfClass_LE32>;
template class PackVmlinuxBase<ElfClass_BE32>;
template class PackVmlinuxBase<ElfClass_LE64>; template class PackVmlinuxBase<ElfClass_LE64>;
+52 -4
View File
@@ -119,14 +119,14 @@ protected:
}; };
class PackVmlinuxARM : public PackVmlinuxBase<ElfClass_LE32> class PackVmlinuxARMEL : public PackVmlinuxBase<ElfClass_LE32>
{ {
typedef PackVmlinuxBase<ElfClass_LE32> super; typedef PackVmlinuxBase<ElfClass_LE32> super;
public: public:
PackVmlinuxARM(InputFile *f) : super(f, Ehdr::EM_ARM, PackVmlinuxARMEL(InputFile *f) : super(f, Ehdr::EM_ARM,
Ehdr::ELFCLASS32, Ehdr::ELFDATA2LSB, "decompress_kernel") { } Ehdr::ELFCLASS32, Ehdr::ELFDATA2LSB, "decompress_kernel") { }
virtual int getFormat() const { return UPX_F_VMLINUX_ARM; } virtual int getFormat() const { return UPX_F_VMLINUX_ARMEL; }
virtual const char *getName() const { return "vmlinux/ARM"; } virtual const char *getName() const { return "vmlinux/armel"; }
virtual const char *getFullName(const options_t *) const { return "arm-linux.kernel.vmlinux"; } virtual const char *getFullName(const options_t *) const { return "arm-linux.kernel.vmlinux"; }
virtual const int *getCompressionMethods(int method, int level) const; virtual const int *getCompressionMethods(int method, int level) const;
virtual const int *getFilters() const; virtual const int *getFilters() const;
@@ -143,6 +143,54 @@ protected:
); );
}; };
class PackVmlinuxARMEB : public PackVmlinuxBase<ElfClass_BE32>
{
typedef PackVmlinuxBase<ElfClass_BE32> super;
public:
PackVmlinuxARMEB(InputFile *f) : super(f, Ehdr::EM_ARM,
Ehdr::ELFCLASS32, Ehdr::ELFDATA2MSB, "decompress_kernel") { }
virtual int getFormat() const { return UPX_F_VMLINUX_ARMEB; }
virtual const char *getName() const { return "vmlinux/armeb"; }
virtual const char *getFullName(const options_t *) const { return "armeb-linux.kernel.vmlinux"; }
virtual const int *getCompressionMethods(int method, int level) const;
virtual const int *getFilters() const;
protected:
virtual void buildLoader(const Filter *ft);
virtual void defineDecompressorSymbols();
virtual Linker* newLinker() const;
virtual bool is_valid_e_entry(Addr);
virtual bool has_valid_vmlinux_head();
virtual unsigned write_vmlinux_head(
OutputFile *const fo,
Shdr *const stxt
);
};
class PackVmlinuxPPC32 : public PackVmlinuxBase<ElfClass_BE32>
{
typedef PackVmlinuxBase<ElfClass_BE32> super;
public:
PackVmlinuxPPC32(InputFile *f) : super(f, Ehdr::EM_PPC,
Ehdr::ELFCLASS32, Ehdr::ELFDATA2MSB, "_vmlinux_start") { }
virtual int getFormat() const { return UPX_F_VMLINUX_PPC32; }
virtual const char *getName() const { return "vmlinux/ppc32"; }
virtual const char *getFullName(const options_t *) const { return "powerpc-linux.kernel.vmlinux"; }
virtual const int *getCompressionMethods(int method, int level) const;
virtual const int *getFilters() const;
protected:
virtual void buildLoader(const Filter *ft);
virtual void defineDecompressorSymbols();
virtual Linker* newLinker() const;
virtual bool is_valid_e_entry(Addr);
virtual bool has_valid_vmlinux_head();
virtual unsigned write_vmlinux_head(
OutputFile *const fo,
Shdr *const stxt
);
};
class PackVmlinuxAMD64 : public PackVmlinuxBase<ElfClass_LE64> class PackVmlinuxAMD64 : public PackVmlinuxBase<ElfClass_LE64>
{ {
+12 -3
View File
@@ -208,15 +208,24 @@ int PackVmlinuzI386::decompressKernel()
if (fd_pos != file_size) if (fd_pos != file_size)
{ {
//printf("fd_pos: %ld, file_size: %ld\n", (long)fd_pos, (long)file_size); //printf("fd_pos: %ld, file_size: %ld\n", (long)fd_pos, (long)file_size);
throwCantPack("trailing bytes after kernel image; use option '-f' to force packing");
// linux-2.6.21.5/arch/i386/boot/compressed/vmlinux.lds
// puts .data.compressed ahead of .text, .rodata, etc;
// so piggy.o need not be last in bzImage. Alas.
//throwCantPack("trailing bytes after kernel image; use option '-f' to force packing");
} }
// see /usr/src/linux/arch/i386/kernel/head.S // see /usr/src/linux/arch/i386/kernel/head.S
// 2.4.x: cld; mov $...,%eax // 2.4.x: [cli;] cld; mov $...,%eax
if (memcmp(ibuf, "\xFC\xB8", 2) == 0) goto head_ok; if (memcmp(ibuf, "\xFC\xB8", 2) == 0) goto head_ok;
// 2.6.x: cld; lgdt ... if (memcmp(ibuf, "\xFA\xFC\xB8", 3) == 0) goto head_ok;
// 2.6.21.5 CONFIG_PARAVIRT mov %cs,%eax; test $3,%eax; jne ...;
if (memcmp(ibuf, "\x8c\xc8\xa9\x03\x00\x00\x00\x0f\x85", 9) == 0) goto head_ok;
if (memcmp(ibuf, "\x8c\xc8\xa8\x03\x0f\x85", 6) == 0) goto head_ok;
// 2.6.x: [cli;] cld; lgdt ...
if (memcmp(ibuf, "\xFC\x0F\x01", 3) == 0) goto head_ok; if (memcmp(ibuf, "\xFC\x0F\x01", 3) == 0) goto head_ok;
if (memcmp(ibuf, "\xFA\xFC\x0F\x01", 4) == 0) goto head_ok;
// 2.6.x+grsecurity+strongswan+openwall+trustix: ljmp $0x10,... // 2.6.x+grsecurity+strongswan+openwall+trustix: ljmp $0x10,...
if (ibuf[0] == 0xEA && memcmp(ibuf+5, "\x10\x00", 2) == 0) goto head_ok; if (ibuf[0] == 0xEA && memcmp(ibuf+5, "\x10\x00", 2) == 0) goto head_ok;
// x86_64 2.6.x // x86_64 2.6.x
+2 -1
View File
@@ -42,7 +42,8 @@ public:
virtual int getVersion() const { return 13; } virtual int getVersion() const { return 13; }
virtual int getFormat() const { return UPX_F_WIN16_NE; } virtual int getFormat() const { return UPX_F_WIN16_NE; }
virtual const char *getName() const { return "win16/ne"; } virtual const char *getName() const { return "win16/ne"; }
virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_286 ? "i286-win16.ne" : "i386-win16.ne"; } //virtual const char *getFullName(const options_t *o) const { return o && o->cpu == o->CPU_286 ? "i286-win16.ne" : "i386-win16.ne"; }
virtual const char *getFullName(const options_t *) const { return "i286-win16.ne"; }
virtual const int *getCompressionMethods(int method, int level) const; virtual const int *getCompressionMethods(int method, int level) const;
virtual const int *getFilters() const; virtual const int *getFilters() const;
+13 -1
View File
@@ -592,6 +592,10 @@ void PackW32Pe::buildLoader(const Filter *ft)
void PackW32Pe::pack(OutputFile *fo) void PackW32Pe::pack(OutputFile *fo)
{ {
// FIXME: we need to think about better support for --exact
if (opt->exact)
throwCantPackExact();
const unsigned objs = ih.objects; const unsigned objs = ih.objects;
isection = new pe_section_t[objs]; isection = new pe_section_t[objs];
fi->seek(pe_offset+sizeof(ih),SEEK_SET); fi->seek(pe_offset+sizeof(ih),SEEK_SET);
@@ -607,7 +611,8 @@ void PackW32Pe::pack(OutputFile *fo)
(ih.cpu < 0x14c || ih.cpu > 0x150) (ih.cpu < 0x14c || ih.cpu > 0x150)
|| (ih.opthdrsize != 0xe0) || (ih.opthdrsize != 0xe0)
|| ((ih.flags & EXECUTABLE) == 0) || ((ih.flags & EXECUTABLE) == 0)
|| (ih.subsystem != 2 && ih.subsystem != 3 && ih.subsystem != 1) || (ih.subsystem != 2 && ih.subsystem != 3
&& ih.subsystem != 1 && ih.subsystem != 9)
|| (ih.entry == 0 && !isdll) || (ih.entry == 0 && !isdll)
|| (ih.ddirsentries != 16) || (ih.ddirsentries != 16)
|| IDSIZE(PEDIR_EXCEPTION) // is this used on i386? || IDSIZE(PEDIR_EXCEPTION) // is this used on i386?
@@ -615,6 +620,9 @@ void PackW32Pe::pack(OutputFile *fo)
)) ))
throwCantPack("unexpected value in PE header (try --force)"); throwCantPack("unexpected value in PE header (try --force)");
if (ih.subsystem == 9)
throwCantPack("x86/wince files are not yet supported");
if (IDSIZE(PEDIR_SEC)) if (IDSIZE(PEDIR_SEC))
IDSIZE(PEDIR_SEC) = IDADDR(PEDIR_SEC) = 0; IDSIZE(PEDIR_SEC) = IDADDR(PEDIR_SEC) = 0;
if (IDSIZE(PEDIR_COMRT)) if (IDSIZE(PEDIR_COMRT))
@@ -625,10 +633,12 @@ void PackW32Pe::pack(OutputFile *fo)
else if (opt->win32_pe.strip_relocs < 0) else if (opt->win32_pe.strip_relocs < 0)
opt->win32_pe.strip_relocs = (ih.imagebase >= 0x400000); opt->win32_pe.strip_relocs = (ih.imagebase >= 0x400000);
if (opt->win32_pe.strip_relocs) if (opt->win32_pe.strip_relocs)
{
if (ih.imagebase < 0x400000) if (ih.imagebase < 0x400000)
throwCantPack("--strip-relocs is not allowed when imagebase < 0x400000"); throwCantPack("--strip-relocs is not allowed when imagebase < 0x400000");
else else
ih.flags |= RELOCS_STRIPPED; ih.flags |= RELOCS_STRIPPED;
}
if (memcmp(isection[0].name,"UPX",3) == 0) if (memcmp(isection[0].name,"UPX",3) == 0)
throwAlreadyPackedByUPX(); throwAlreadyPackedByUPX();
@@ -1017,6 +1027,8 @@ void PackW32Pe::pack(OutputFile *fo)
oh.codebase = osection[1].vaddr; oh.codebase = osection[1].vaddr;
// oh.headersize = osection[0].rawdataptr; // oh.headersize = osection[0].rawdataptr;
oh.headersize = rvamin; oh.headersize = rvamin;
if (rvamin < osection[0].rawdataptr)
throwCantPack("object alignment too small");
if (opt->win32_pe.strip_relocs && !isdll) if (opt->win32_pe.strip_relocs && !isdll)
oh.flags |= RELOCS_STRIPPED; oh.flags |= RELOCS_STRIPPED;
+36 -20
View File
@@ -67,8 +67,9 @@ void Packer::assertPacker() const
assert(getVersion() >= 11); assert(getVersion() >= 11);
assert(getVersion() <= 14); assert(getVersion() <= 14);
assert(strlen(getName()) <= 13); assert(strlen(getName()) <= 13);
assert(strlen(getFullName(opt)) <= 26); // "i386-linux.kernel.bvmlinuz" // info: 32 is limit for show_all_packers() in help.cpp
assert(strlen(getFullName(NULL)) <= 26); // "i386-linux.kernel.bvmlinuz" assert(strlen(getFullName(opt)) <= 28);
assert(strlen(getFullName(NULL)) <= 28);
if (bele == NULL) fprintf(stderr, "%s\n", getName()); if (bele == NULL) fprintf(stderr, "%s\n", getName());
assert(bele != NULL); assert(bele != NULL);
#if 1 #if 1
@@ -245,7 +246,7 @@ bool Packer::compress(upx_bytep i_ptr, unsigned i_len, upx_bytep o_ptr,
uip->endCallback(); uip->endCallback();
if (r == UPX_E_OUT_OF_MEMORY) if (r == UPX_E_OUT_OF_MEMORY)
throwCantPack("out of memory"); throwOutOfMemoryException();
if (r != UPX_E_OK) if (r != UPX_E_OK)
throwInternalError("compression failed"); throwInternalError("compression failed");
@@ -282,6 +283,8 @@ bool Packer::compress(upx_bytep i_ptr, unsigned i_len, upx_bytep o_ptr,
// decompress // decompress
unsigned new_len = ph.u_len; unsigned new_len = ph.u_len;
r = upx_decompress(o_ptr, ph.c_len, i_ptr, &new_len, ph.method, &ph.compress_result); r = upx_decompress(o_ptr, ph.c_len, i_ptr, &new_len, ph.method, &ph.compress_result);
if (r == UPX_E_OUT_OF_MEMORY)
throwOutOfMemoryException();
//printf("%d %d: %d %d %d\n", ph.method, r, ph.c_len, ph.u_len, new_len); //printf("%d %d: %d %d %d\n", ph.method, r, ph.c_len, ph.u_len, new_len);
if (r != UPX_E_OK) if (r != UPX_E_OK)
throwInternalError("decompression failed"); throwInternalError("decompression failed");
@@ -360,6 +363,8 @@ void ph_decompress(PackHeader &ph, const upx_bytep in, upx_bytep out,
// decompress // decompress
unsigned new_len = ph.u_len; unsigned new_len = ph.u_len;
int r = upx_decompress(in, ph.c_len, out, &new_len, ph.method, &ph.compress_result); int r = upx_decompress(in, ph.c_len, out, &new_len, ph.method, &ph.compress_result);
if (r == UPX_E_OUT_OF_MEMORY)
throwOutOfMemoryException();
if (r != UPX_E_OK || new_len != ph.u_len) if (r != UPX_E_OK || new_len != ph.u_len)
throwCompressedDataViolation(); throwCompressedDataViolation();
@@ -386,13 +391,16 @@ void Packer::decompress(const upx_bytep in, upx_bytep out,
// overlapping decompression // overlapping decompression
**************************************************************************/ **************************************************************************/
bool ph_testOverlappingDecompression(const PackHeader &ph, const upx_bytep buf, bool ph_testOverlappingDecompression(const PackHeader &ph,
const upx_bytep buf,
const upx_bytep tbuf,
unsigned overlap_overhead) unsigned overlap_overhead)
{ {
if (ph.c_len >= ph.u_len) if (ph.c_len >= ph.u_len)
return false; return false;
assert((int)overlap_overhead >= 0); assert((int) overlap_overhead >= 0);
assert((int) (ph.u_len + overlap_overhead) >= 0);
// Because upx_test_overlap() does not use the asm_fast decompressor // Because upx_test_overlap() does not use the asm_fast decompressor
// we must account for extra 3 bytes that asm_fast does use, // we must account for extra 3 bytes that asm_fast does use,
@@ -406,16 +414,19 @@ bool ph_testOverlappingDecompression(const PackHeader &ph, const upx_bytep buf,
unsigned src_off = ph.u_len + overlap_overhead - ph.c_len; unsigned src_off = ph.u_len + overlap_overhead - ph.c_len;
unsigned new_len = ph.u_len; unsigned new_len = ph.u_len;
int r = upx_test_overlap(buf - src_off, src_off, int r = upx_test_overlap(buf - src_off, tbuf,
ph.c_len, &new_len, ph.method, &ph.compress_result); src_off, ph.c_len, &new_len,
ph.method, &ph.compress_result);
if (r == UPX_E_OUT_OF_MEMORY)
throwOutOfMemoryException();
return (r == UPX_E_OK && new_len == ph.u_len); return (r == UPX_E_OK && new_len == ph.u_len);
} }
bool Packer::testOverlappingDecompression(const upx_bytep buf, bool Packer::testOverlappingDecompression(const upx_bytep buf, const upx_bytep tbuf,
unsigned overlap_overhead) const unsigned overlap_overhead) const
{ {
return ph_testOverlappingDecompression(ph, buf, overlap_overhead); return ph_testOverlappingDecompression(ph, buf, tbuf, overlap_overhead);
} }
@@ -474,6 +485,7 @@ void Packer::verifyOverlappingDecompression(upx_bytep o_ptr, unsigned o_size, Fi
**************************************************************************/ **************************************************************************/
unsigned Packer::findOverlapOverhead(const upx_bytep buf, unsigned Packer::findOverlapOverhead(const upx_bytep buf,
const upx_bytep tbuf,
unsigned range, unsigned range,
unsigned upper_limit) const unsigned upper_limit) const
{ {
@@ -481,7 +493,7 @@ unsigned Packer::findOverlapOverhead(const upx_bytep buf,
// prepare to deal with very pessimistic values // prepare to deal with very pessimistic values
unsigned low = 1; unsigned low = 1;
unsigned high = UPX_MIN(ph.u_len / 4 + 512, upper_limit); unsigned high = UPX_MIN(ph.u_len + 512, upper_limit);
// but be optimistic for first try (speedup) // but be optimistic for first try (speedup)
unsigned m = UPX_MIN(16u, high); unsigned m = UPX_MIN(16u, high);
// //
@@ -493,21 +505,23 @@ unsigned Packer::findOverlapOverhead(const upx_bytep buf,
assert(m >= low); assert(m <= high); assert(m >= low); assert(m <= high);
assert(m < overhead || overhead == 0); assert(m < overhead || overhead == 0);
nr++; nr++;
bool success = testOverlappingDecompression(buf, m); bool success = testOverlappingDecompression(buf, tbuf, m);
//printf("testOverlapOverhead: %d %d -> %d\n", nr, m, (int)success); //printf("testOverlapOverhead(%d): %d %d: %d -> %d\n", nr, low, high, m, (int)success);
if (success) if (success)
{ {
overhead = m; overhead = m;
// Succeed early if m lies in [low .. low+range-1], i.e. if // Succeed early if m lies in [low .. low+range-1], i.e. if
// if the range of the current interval is <= range. // if the range of the current interval is <= range.
//if (m <= low + range - 1) // if (m <= low + range - 1)
if (m + 1 <= low + range) // avoid underflow // if (m < low + range)
if (m - low < range) // avoid underflow
break; break;
high = m - 1; high = m - 1;
} }
else else
low = m + 1; low = m + 1;
m = (low + high) / 2; ////m = (low + high) / 2;
m = (low & high) + ((low ^ high) >> 1); // avoid overflow
} }
//printf("findOverlapOverhead: %d (%d tries)\n", overhead, nr); //printf("findOverlapOverhead: %d (%d tries)\n", overhead, nr);
@@ -684,7 +698,7 @@ int Packer::patchPackHeader(void *b, int blen)
} }
bool Packer::getPackHeader(void *b, int blen) bool Packer::getPackHeader(void *b, int blen, bool allow_incompressible)
{ {
if (!ph.fillPackHeader((unsigned char *)b, blen)) if (!ph.fillPackHeader((unsigned char *)b, blen))
return false; return false;
@@ -697,7 +711,9 @@ bool Packer::getPackHeader(void *b, int blen)
if (!testUnpackVersion(ph.version)) if (!testUnpackVersion(ph.version))
return false; return false;
if (ph.c_len >= ph.u_len || (off_t)ph.c_len >= file_size if (ph.c_len > ph.u_len
|| (ph.c_len == ph.u_len && !allow_incompressible)
|| (off_t)ph.c_len >= file_size
|| ph.version <= 0 || ph.version >= 0xff) || ph.version <= 0 || ph.version >= 0xff)
throwCantUnpack("header corrupted"); throwCantUnpack("header corrupted");
else if ((off_t)ph.u_len > ph.u_file_size) else if ((off_t)ph.u_len > ph.u_file_size)
@@ -722,14 +738,14 @@ bool Packer::getPackHeader(void *b, int blen)
} }
bool Packer::readPackHeader(int len) bool Packer::readPackHeader(int len, bool allow_incompressible)
{ {
assert((int)len > 0); assert((int)len > 0);
MemBuffer buf(len); MemBuffer buf(len);
len = fi->read(buf, len); len = fi->read(buf, len);
if (len <= 0) if (len <= 0)
return false; return false;
return getPackHeader(buf, len); return getPackHeader(buf, len, allow_incompressible);
} }
@@ -1409,7 +1425,7 @@ void Packer::compressWithFilters(upx_bytep i_ptr, unsigned i_len,
if (ph.c_len + lsize + hdr_c_len <= best_ph.c_len + best_ph_lsize + best_hdr_c_len) if (ph.c_len + lsize + hdr_c_len <= best_ph.c_len + best_ph_lsize + best_hdr_c_len)
{ {
// get results // get results
ph.overlap_overhead = findOverlapOverhead(o_tmp, overlap_range); ph.overlap_overhead = findOverlapOverhead(o_tmp, i_ptr, overlap_range);
buildLoader(&ft); buildLoader(&ft);
lsize = getLoaderSize(); lsize = getLoaderSize();
assert(lsize > 0); assert(lsize > 0);
+4 -2
View File
@@ -203,9 +203,11 @@ protected:
// util for verifying overlapping decompresion // util for verifying overlapping decompresion
// non-destructive test // non-destructive test
virtual bool testOverlappingDecompression(const upx_bytep buf, virtual bool testOverlappingDecompression(const upx_bytep buf,
const upx_bytep tbuf,
unsigned overlap_overhead) const; unsigned overlap_overhead) const;
// non-destructive find // non-destructive find
virtual unsigned findOverlapOverhead(const upx_bytep buf, virtual unsigned findOverlapOverhead(const upx_bytep buf,
const upx_bytep tbuf,
unsigned range = 0, unsigned range = 0,
unsigned upper_limit = ~0u) const; unsigned upper_limit = ~0u) const;
// destructive decompress + verify // destructive decompress + verify
@@ -214,8 +216,8 @@ protected:
// packheader handling // packheader handling
virtual int patchPackHeader(void *b, int blen); virtual int patchPackHeader(void *b, int blen);
virtual bool getPackHeader(void *b, int blen); virtual bool getPackHeader(void *b, int blen, bool allow_incompressible=false);
virtual bool readPackHeader(int len); virtual bool readPackHeader(int len, bool allow_incompressible=false);
virtual void checkAlreadyPacked(const void *b, int blen); virtual void checkAlreadyPacked(const void *b, int blen);
// loader core // loader core
+10 -6
View File
@@ -208,11 +208,13 @@ const char *Packer::getDecompressorSections() const
if (UPX_F_LINUX_ELF_i386 ==ph.format if (UPX_F_LINUX_ELF_i386 ==ph.format
|| UPX_F_LINUX_ELFI_i386 ==ph.format || UPX_F_LINUX_ELFI_i386 ==ph.format
|| UPX_F_LINUX_ELF64_AMD ==ph.format || UPX_F_LINUX_ELF64_AMD ==ph.format
|| UPX_F_LINUX_ELF32_ARMLE==ph.format || UPX_F_LINUX_ELF32_ARMEL==ph.format
|| UPX_F_LINUX_ELFPPC32 ==ph.format || UPX_F_LINUX_ELFPPC32 ==ph.format
|| UPX_F_LINUX_ELF32_ARMBE==ph.format || UPX_F_LINUX_ELF32_ARMEB==ph.format
|| UPX_F_BSD_ELF_i386 ==ph.format || UPX_F_BSD_ELF_i386 ==ph.format
|| UPX_F_VMLINUX_ARM ==ph.format || UPX_F_VMLINUX_ARMEL ==ph.format
|| UPX_F_VMLINUX_ARMEB ==ph.format
|| UPX_F_VMLINUX_PPC32 ==ph.format
|| UPX_F_MACH_PPC32 ==ph.format || UPX_F_MACH_PPC32 ==ph.format
|| UPX_F_MACH_i386 ==ph.format || UPX_F_MACH_i386 ==ph.format
) { ) {
@@ -244,11 +246,13 @@ void Packer::defineDecompressorSymbols()
if (UPX_F_LINUX_ELF_i386 ==ph.format if (UPX_F_LINUX_ELF_i386 ==ph.format
|| UPX_F_LINUX_ELFI_i386 ==ph.format || UPX_F_LINUX_ELFI_i386 ==ph.format
|| UPX_F_LINUX_ELF64_AMD ==ph.format || UPX_F_LINUX_ELF64_AMD ==ph.format
|| UPX_F_LINUX_ELF32_ARMLE==ph.format || UPX_F_LINUX_ELF32_ARMEL==ph.format
|| UPX_F_LINUX_ELFPPC32 ==ph.format || UPX_F_LINUX_ELFPPC32 ==ph.format
|| UPX_F_LINUX_ELF32_ARMBE==ph.format || UPX_F_LINUX_ELF32_ARMEB==ph.format
|| UPX_F_BSD_ELF_i386 ==ph.format || UPX_F_BSD_ELF_i386 ==ph.format
|| UPX_F_VMLINUX_ARM ==ph.format || UPX_F_VMLINUX_ARMEL ==ph.format
|| UPX_F_VMLINUX_ARMEB ==ph.format
|| UPX_F_VMLINUX_PPC32 ==ph.format
|| UPX_F_MACH_PPC32 ==ph.format || UPX_F_MACH_PPC32 ==ph.format
|| UPX_F_MACH_i386 ==ph.format || UPX_F_MACH_i386 ==ph.format
) { ) {
+7 -1
View File
@@ -192,7 +192,11 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
// //
// linux kernel // linux kernel
// //
if ((p = func(new PackVmlinuxARM(f), user)) != NULL) if ((p = func(new PackVmlinuxARMEL(f), user)) != NULL)
return p;
if ((p = func(new PackVmlinuxARMEB(f), user)) != NULL)
return p;
if ((p = func(new PackVmlinuxPPC32(f), user)) != NULL)
return p; return p;
if ((p = func(new PackVmlinuxAMD64(f), user)) != NULL) if ((p = func(new PackVmlinuxAMD64(f), user)) != NULL)
return p; return p;
@@ -239,6 +243,8 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
return p; return p;
if ((p = func(new PackLinuxElf32ppc(f), user)) != NULL) if ((p = func(new PackLinuxElf32ppc(f), user)) != NULL)
return p; return p;
if ((p = func(new PackLinuxElf32mipsel(f), user)) != NULL)
return p;
if ((p = func(new PackLinuxI386sh(f), user)) != NULL) if ((p = func(new PackLinuxI386sh(f), user)) != NULL)
return p; return p;
} }
+100 -10
View File
@@ -9,6 +9,7 @@
MAKEFLAGS += -rR MAKEFLAGS += -rR
.SUFFIXES: .SUFFIXES:
.SECONDEXPANSION: .SECONDEXPANSION:
.NOTPARALLEL:
export LC_ALL = C export LC_ALL = C
export SHELL = /bin/sh export SHELL = /bin/sh
@@ -18,7 +19,7 @@ empty :=
space := $(empty) $(empty) space := $(empty) $(empty)
tab := $(empty) $(empty) tab := $(empty) $(empty)
ifneq ($(findstring $(firstword $(MAKE_VERSION)),3.79 3.79.1 3.80),) ifneq ($(findstring $(firstword $(MAKE_VERSION)),3.77 3.78 3.78.1 3.79 3.79.1 3.80),)
$(error GNU make 3.81 or better is required) $(error GNU make 3.81 or better is required)
endif endif
@@ -29,7 +30,7 @@ endif
ifndef top_srcdir ifndef top_srcdir
top_srcdir := $(srcdir)/../.. top_srcdir := $(srcdir)/../..
endif endif
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
# update $PATH for our special stub build tools # update $PATH for our special stub build tools
ifneq ($(wildcard $(HOME)/local/bin/bin-upx/.),) ifneq ($(wildcard $(HOME)/local/bin/bin-upx/.),)
@@ -56,6 +57,8 @@ STUBS += arm-linux.kernel.vmlinux.h
STUBS += arm-linux.kernel.vmlinux-head.h STUBS += arm-linux.kernel.vmlinux-head.h
STUBS += armeb-linux.elf-entry.h STUBS += armeb-linux.elf-entry.h
STUBS += armeb-linux.elf-fold.h STUBS += armeb-linux.elf-fold.h
STUBS += armeb-linux.kernel.vmlinux.h
STUBS += armeb-linux.kernel.vmlinux-head.h
STUBS += arm.v4a-wince.pe.h STUBS += arm.v4a-wince.pe.h
STUBS += arm.v4t-wince.pe.h STUBS += arm.v4t-wince.pe.h
STUBS += i086-dos16.com.h STUBS += i086-dos16.com.h
@@ -86,10 +89,14 @@ STUBS += i386-linux.kernel.vmlinuz.h
STUBS += i386-win32.pe.h STUBS += i386-win32.pe.h
STUBS += m68k-atari.tos.h STUBS += m68k-atari.tos.h
STUBS += mipsel.r3000-ps1.h STUBS += mipsel.r3000-ps1.h
STUBS += mipsel.r3000-linux.elf-entry.h
STUBS += mipsel.r3000-linux.elf-fold.h
STUBS += powerpc-darwin.macho-entry.h STUBS += powerpc-darwin.macho-entry.h
STUBS += powerpc-darwin.macho-fold.h STUBS += powerpc-darwin.macho-fold.h
STUBS += powerpc-linux.elf-entry.h STUBS += powerpc-linux.elf-entry.h
STUBS += powerpc-linux.elf-fold.h STUBS += powerpc-linux.elf-fold.h
STUBS += powerpc-linux.kernel.vmlinux.h
STUBS += powerpc-linux.kernel.vmlinux-head.h
endif endif
@@ -145,8 +152,11 @@ tc_list =
tc_objdump_disasm_options = tc_objdump_disasm_options =
# commands # commands
ECHO_e = /bin/echo -e
ECHO_E = /bin/echo -E
PERL = perl
PYTHON = python PYTHON = python
UNIX2DOS := perl -i -pe 's/$$/\r/;' UNIX2DOS := $(PERL) -i -pe 's/$$/\r/;'
# trim (strip) trailing whitespace # trim (strip) trailing whitespace
RTRIM := sed -e 's/[ $(tab)]*$$//' RTRIM := sed -e 's/[ $(tab)]*$$//'
@@ -235,7 +245,7 @@ amd64-linux.elf%.h : tc_bfdname = elf64-x86-64
tc.amd64-linux.elf.gcc = amd64-linux-gcc-3.4.4 -m64 -nostdinc -MMD -MT $@ tc.amd64-linux.elf.gcc = amd64-linux-gcc-3.4.4 -m64 -nostdinc -MMD -MT $@
tc.amd64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.amd64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
tc.amd64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror tc.amd64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
amd64-linux.elf-entry.h: $(srcdir)/src/$$T.S amd64-linux.elf-entry.h: $(srcdir)/src/$$T.S
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin $(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
@@ -289,7 +299,7 @@ arm-linux.elf%.h : tc_bfdname = elf32-littlearm
tc.arm-linux.elf.gcc = arm-linux-gcc-4.1.0 -march=armv4 -nostdinc -MMD -MT $@ tc.arm-linux.elf.gcc = arm-linux-gcc-4.1.0 -march=armv4 -nostdinc -MMD -MT $@
tc.arm-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.arm-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
tc.arm-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror tc.arm-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
arm-linux.elf-entry.h : $(srcdir)/src/$$T.S arm-linux.elf-entry.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -march=armv4 -c $< -o tmp/$T.bin $(call tc,gcc) -march=armv4 -c $< -o tmp/$T.bin
@@ -323,7 +333,7 @@ arm-linux.kernel.vmlinu%.h : tc_bfdname = elf32-littlearm
tc.arm-linux.kernel.gcc = arm-linux-gcc-4.1.0 -march=armv5 -nostdinc -MMD -MT $@ tc.arm-linux.kernel.gcc = arm-linux-gcc-4.1.0 -march=armv5 -nostdinc -MMD -MT $@
tc.arm-linux.kernel.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.arm-linux.kernel.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
tc.arm-linux.kernel.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror tc.arm-linux.kernel.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
arm-linux.kernel.vmlinu%.h : $(srcdir)/src/$$T.S arm-linux.kernel.vmlinu%.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin $(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
@@ -336,6 +346,28 @@ arm-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
$(call tc,bin2h) tmp/$T.bin $@ $(call tc,bin2h) tmp/$T.bin $@
# /***********************************************************************
# // armeb-linux.kernel.vmlinux
# // armeb-linux.kernel.vmlinuz
# // armeb-linux.kernel.vmlinux-head
# ************************************************************************/
armeb-linux.kernel.vmlinu%.h : tc_list = armeb-linux.kernel default
armeb-linux.kernel.vmlinu%.h : tc_bfdname = elf32-bigarm
tc.armeb-linux.kernel.gcc = $(tc.arm-linux.elf.gcc) -mbig-endian
armeb-linux.kernel.vmlinu%.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
$(call tc,f-embed_objinfo,tmp/$T.bin)
$(call tc,bin2h-c) tmp/$T.bin $@
armeb-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
$(call tc,objcopy) --output-target binary --only-section .text tmp/$T.o tmp/$T.bin
$(call tc,bin2h) tmp/$T.bin $@
# /*********************************************************************** # /***********************************************************************
# // armeb-linux.elf # // armeb-linux.elf
# ************************************************************************/ # ************************************************************************/
@@ -603,7 +635,7 @@ i386-linux.elf%.h : tc_bfdname = elf32-i386
tc.i386-linux.elf.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MMD -MT $@ tc.i386-linux.elf.gcc = i386-linux-gcc-3.4.6 -m32 -march=i386 -nostdinc -MMD -MT $@
tc.i386-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.i386-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
tc.i386-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror tc.i386-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
tc.i386-linux.elf.gcc += -mtune=k6 tc.i386-linux.elf.gcc += -mtune=k6
tc.i386-linux.elf.gcc += -Os -fno-omit-frame-pointer tc.i386-linux.elf.gcc += -Os -fno-omit-frame-pointer
tc.i386-linux.elf.gcc += -momit-leaf-frame-pointer tc.i386-linux.elf.gcc += -momit-leaf-frame-pointer
@@ -764,7 +796,7 @@ m68k-atari.tos.h : tc_objdump_disasm_options = -m m68k:68040
tc.m68k-atari.tos.gcc = m68k-linux-gcc-4.1.1 -m68000 -malign-int -nostdinc -MMD -MT $@ tc.m68k-atari.tos.gcc = m68k-linux-gcc-4.1.1 -m68000 -malign-int -nostdinc -MMD -MT $@
tc.m68k-atari.tos.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.m68k-atari.tos.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
tc.m68k-atari.tos.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror tc.m68k-atari.tos.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
m68k-atari.tos.h : $(srcdir)/src/$$T.S m68k-atari.tos.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c -x assembler-with-cpp -Wa,-m68000,-l,--pcrel,--register-prefix-optional $< -o tmp/$T.bin $(call tc,gcc) -c -x assembler-with-cpp -Wa,-m68000,-l,--pcrel,--register-prefix-optional $< -o tmp/$T.bin
@@ -783,7 +815,7 @@ tc.mipsel.r3000-ps1.as = mipsel-elf-as-20060406 -O -mno-pdr
##tc.mipsel.r3000-ps1.as = mipsel-linux-as-2.16.1 -O -mno-pdr ##tc.mipsel.r3000-ps1.as = mipsel-linux-as-2.16.1 -O -mno-pdr
tc.mipsel.r3000-ps1.gcc = mipsel-linux-gcc-4.1.1 -mel -march=r3000 -mno-abicalls -mabi=eabi -G0 -nostdinc -MMD -MT $@ tc.mipsel.r3000-ps1.gcc = mipsel-linux-gcc-4.1.1 -mel -march=r3000 -mno-abicalls -mabi=eabi -G0 -nostdinc -MMD -MT $@
tc.mipsel.r3000-ps1.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.mipsel.r3000-ps1.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
tc.mipsel.r3000-ps1.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror tc.mipsel.r3000-ps1.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
mipsel.r3000-ps1.h : $(srcdir)/src/$$T.S mipsel.r3000-ps1.h : $(srcdir)/src/$$T.S
ifeq (1,1) ifeq (1,1)
@@ -799,6 +831,45 @@ endif
$(call tc,bin2h-c) tmp/$T.bin $@ $(call tc,bin2h-c) tmp/$T.bin $@
# /***********************************************************************
# // mipsel.r3000-linux.elf
# ************************************************************************/
mipsel.r3000-linux.elf%.h : tc_list = mipsel.r3000-ps1 default
mipsel.r3000-linux.elf%.h : tc_bfdname = elf32-littlemips
mipsel.r3000-linux.elf-entry.h : $(srcdir)/src/$$T.S
ifeq (1,1)
# info: we really need as-2.17 here
$(call tc,pp-as) -D_TARGET_LINUX_ $< -o - | $(RTRIM) > tmp/$T.i
$(call tc,as) tmp/$T.i -o tmp/$T.bin
$(call tc,gpp_mkdep) --mode=c --MMD=$@ $< --MF=tmp/$T.d
else
# info: as-2.16.1 as used by gcc-4.1.1 does _not_ work
$(call tc,gcc) -c -D_TARGET_LINUX_ -Wa,-O,-mno-pdr $< -o tmp/$T.bin
endif
$(call tc,f-embed_objinfo,tmp/$T.bin)
$(call tc,bin2h-c) tmp/$T.bin $@
mipsel.r3000-linux.elf-fold.h : tmp/$$T.o tmp/mipsel.r3000-linux.elf-main.o $(srcdir)/src/$$T.lds
$(call tc,ld) --strip-all -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
$(call tc,f-objstrip,tmp/$T.bin)
$(call tc,sstrip) tmp/$T.bin
$(call tc,bin2h) tmp/$T.bin $@
tmp/mipsel.r3000-linux.elf-fold.o : $(srcdir)/src/$$T.S
$(call tc,gcc) -c -D_TARGET_LINUX_ $< -o $@
$(call tc,f-objstrip,$@)
tmp/mipsel.r3000-linux.elf-main.o : $(srcdir)/src/$$T.c
$(call tc,gcc) -S -Os -MF tmp/$T.d $< -o - | $(RTRIM) > tmp/$T.i
sed -e 's/ j[ ][ ]*$$L/ b $$L/' \
-e 's/ jal[ ][ ]*\([^\$$]\)/ bal \1/' < tmp/$T.i > tmp/$T.s
$(call tc,gcc) -c -Wa,-O,-mno-pdr tmp/$T.s -o $@
$(call tc,f-objstrip,$@)
$(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
# /*********************************************************************** # /***********************************************************************
# // powerpc-darwin.macho # // powerpc-darwin.macho
# ************************************************************************/ # ************************************************************************/
@@ -836,7 +907,7 @@ powerpc-linux.elf%.h : tc_bfdname = elf32-powerpc
tc.powerpc-linux.elf.gcc = powerpc.405-linux-gcc-3.4.5 -m32 -mbig-endian -mcpu=405 -nostdinc -MMD -MT $@ tc.powerpc-linux.elf.gcc = powerpc.405-linux-gcc-3.4.5 -m32 -mbig-endian -mcpu=405 -nostdinc -MMD -MT $@
tc.powerpc-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables tc.powerpc-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
tc.powerpc-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wwrite-strings -Werror tc.powerpc-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
powerpc-linux.elf-entry.h : $(srcdir)/src/$$T.S powerpc-linux.elf-entry.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c $< -o tmp/$T.bin $(call tc,gcc) -c $< -o tmp/$T.bin
@@ -859,6 +930,25 @@ tmp/powerpc-linux.elf-main.o : $(srcdir)/src/$$T.c
$(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm $(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
# /***********************************************************************
# // powerpc-linux.kernel.vmlinux
# ************************************************************************/
powerpc-linux.kernel.vmlinu%.h : tc_list = powerpc-linux.kernel default
powerpc-linux.kernel.vmlinu%.h : tc_bfdname = elf32-powerpc
tc.powerpc-linux.kernel.gcc = $(tc.powerpc-linux.elf.gcc)
powerpc-linux.kernel.vmlinu%.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
$(call tc,f-embed_objinfo,tmp/$T.bin)
$(call tc,bin2h-c) tmp/$T.bin $@
powerpc-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
$(call tc,objcopy) --output-target binary --only-section .text tmp/$T.o tmp/$T.bin
$(call tc,bin2h) tmp/$T.bin $@
# /*********************************************************************** # /***********************************************************************
# // dependencies # // dependencies
# ************************************************************************/ # ************************************************************************/
+3 -3
View File
@@ -29,8 +29,8 @@
#define STUB_ARM_LINUX_ELF_ENTRY_SIZE 16296 #define STUB_ARM_LINUX_ELF_ENTRY_SIZE 16296
#define STUB_ARM_LINUX_ELF_ENTRY_ADLER32 0x9b815c2e #define STUB_ARM_LINUX_ELF_ENTRY_ADLER32 0xdf115bee
#define STUB_ARM_LINUX_ELF_ENTRY_CRC32 0x3b801af9 #define STUB_ARM_LINUX_ELF_ENTRY_CRC32 0x8704e1a1
unsigned char stub_arm_linux_elf_entry[16296] = { unsigned char stub_arm_linux_elf_entry[16296] = {
127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
@@ -44,7 +44,7 @@ unsigned char stub_arm_linux_elf_entry[16296] = {
254, 1,160,232, 15, 0, 0, 58, 9, 64, 64,224, 80, 80,143,226, /* 0x 80 */ 254, 1,160,232, 15, 0, 0, 58, 9, 64, 64,224, 80, 80,143,226, /* 0x 80 */
0,224,160,225, 4, 80,133,224, 5, 0,160,225, 4, 16,137,224, /* 0x 90 */ 0,224,160,225, 4, 80,133,224, 5, 0,160,225, 4, 16,137,224, /* 0x 90 */
0, 32,160,227, 2, 0,159,239, 0,144,156,229,140,144, 73,226, /* 0x a0 */ 0, 32,160,227, 2, 0,159,239, 0,144,156,229,140,144, 73,226, /* 0x a0 */
9,160, 76,224, 4,160,138,224, 8, 0,219,229, 1, 64, 45,233, /* 0x b0 */ 9,160, 76,224, 4,160,138,224, 8, 0,155,229, 1, 64, 45,233, /* 0x b0 */
0, 48,155,229, 12, 0,139,226, 4, 16,155,229, 14, 32,160,225, /* 0x c0 */ 0, 48,155,229, 12, 0,139,226, 4, 16,155,229, 14, 32,160,225, /* 0x c0 */
8, 48,141,229, 8, 48,141,226, 15,224,160,225, 5,240,160,225, /* 0x d0 */ 8, 48,141,229, 8, 48,141,226, 15,224,160,225, 5,240,160,225, /* 0x d0 */
2,128,189,232,252, 64, 45,233, 0,112,129,224, 0, 80,224,227, /* 0x e0 */ 2,128,189,232,252, 64, 45,233, 0,112,129,224, 0, 80,224,227, /* 0x e0 */
+80 -79
View File
@@ -1,5 +1,5 @@
/* arm-linux.elf-fold.h /* arm-linux.elf-fold.h
created from arm-linux.elf-fold.bin, 2108 (0x83c) bytes created from arm-linux.elf-fold.bin, 2128 (0x850) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -28,17 +28,17 @@
*/ */
#define STUB_ARM_LINUX_ELF_FOLD_SIZE 2108 #define STUB_ARM_LINUX_ELF_FOLD_SIZE 2128
#define STUB_ARM_LINUX_ELF_FOLD_ADLER32 0x3e40608e #define STUB_ARM_LINUX_ELF_FOLD_ADLER32 0xf3eb5f7c
#define STUB_ARM_LINUX_ELF_FOLD_CRC32 0xb5be5c29 #define STUB_ARM_LINUX_ELF_FOLD_CRC32 0x79cd3b89
unsigned char stub_arm_linux_elf_fold[2108] = { unsigned char stub_arm_linux_elf_fold[2128] = {
127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
2, 0, 40, 0, 1, 0, 0, 0,128,128, 0, 0, 52, 0, 0, 0, /* 0x 10 */ 2, 0, 40, 0, 1, 0, 0, 0,128,128, 0, 0, 52, 0, 0, 0, /* 0x 10 */
0, 0, 0, 0, 2, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */ 0, 0, 0, 0, 2, 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,128, 0, 0, /* 0x 30 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, /* 0x 30 */
0,128, 0, 0, 60, 8, 0, 0, 60, 8, 0, 0, 5, 0, 0, 0, /* 0x 40 */ 0,128, 0, 0, 80, 8, 0, 0, 80, 8, 0, 0, 5, 0, 0, 0, /* 0x 40 */
0,128, 0, 0, 1, 0, 0, 0, 60, 8, 0, 0, 0, 0, 0, 0, /* 0x 50 */ 0,128, 0, 0, 1, 0, 0, 0, 80, 8, 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 60 */
0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
12, 48,157,229, 3, 49,141,224, 20, 48,131,226, 4, 0,147,228, /* 0x 80 */ 12, 48,157,229, 3, 49,141,224, 20, 48,131,226, 4, 0,147,228, /* 0x 80 */
@@ -46,7 +46,7 @@ unsigned char stub_arm_linux_elf_fold[2108] = {
0, 0, 80,227,252,255,255, 26, 8, 32,141,229, 10,220, 77,226, /* 0x a0 */ 0, 0, 80,227,252,255,255, 26, 8, 32,141,229, 10,220, 77,226, /* 0x a0 */
9, 64,160,225, 4,144,154,229, 13,128,160,225, 0,112,154,229, /* 0x b0 */ 9, 64,160,225, 4,144,154,229, 13,128,160,225, 0,112,154,229, /* 0x b0 */
36, 96,143,226, 12,144,137,226, 0,176,160,227,248, 15, 45,233, /* 0x c0 */ 36, 96,143,226, 12,144,137,226, 0,176,160,227,248, 15, 45,233, /* 0x c0 */
15, 0,189,232,132, 1, 0,235, 0,224,160,225, 20,208,141,226, /* 0x d0 */ 15, 0,189,232,131, 1, 0,235, 0,224,160,225, 20,208,141,226, /* 0x d0 */
10,220,141,226, 7, 0,189,232, 4,240, 18,229,255, 48, 3,226, /* 0x e0 */ 10,220,141,226, 7, 0,189,232, 4,240, 18,229,255, 48, 3,226, /* 0x e0 */
80, 0, 83,227, 14,240,160, 17, 33, 17,176,225, 0, 0, 80, 19, /* 0x f0 */ 80, 0, 83,227, 14,240,160, 17, 33, 17,176,225, 0, 0, 80, 19, /* 0x f0 */
14,240,160, 1, 1, 16, 65,226, 1, 33,144,231, 15, 52, 2,226, /* 0x 100 */ 14,240,160, 1, 1, 16, 65,226, 1, 33,144,231, 15, 52, 2,226, /* 0x 100 */
@@ -91,78 +91,79 @@ unsigned char stub_arm_linux_elf_fold[2108] = {
183,255,255, 26, 20,208,141,226,240,128,189,232, 85, 80, 88, 33, /* 0x 370 */ 183,255,255, 26, 20,208,141,226,240,128,189,232, 85, 80, 88, 33, /* 0x 370 */
240, 79, 45,233, 1,160,160,225,176,193,218,225, 28, 16,145,229, /* 0x 380 */ 240, 79, 45,233, 1,160,160,225,176,193,218,225, 28, 16,145,229, /* 0x 380 */
188,226,218,225, 48,208, 77,226, 2, 0, 92,227, 1, 96,138,224, /* 0x 390 */ 188,226,218,225, 48,208, 77,226, 2, 0, 92,227, 1, 96,138,224, /* 0x 390 */
16, 0,141,229, 16,192,160, 3, 0,192,160, 19, 1,224, 78,226, /* 0x 3a0 */ 16, 0,141,229, 50,192,160, 3, 34,192,160, 19, 1,224, 78,226, /* 0x 3a0 */
6, 16,160,225, 0, 64,224,227, 0, 0,160,227, 12, 32,141,229, /* 0x 3b0 */ 6, 16,160,225, 0, 0,224,227, 0, 80,160,227, 12, 32,141,229, /* 0x 3b0 */
8, 48,141,229, 11, 0, 0,234, 0, 48,145,229, 1, 0, 83,227, /* 0x 3c0 */ 8, 48,141,229, 11, 0, 0,234, 0, 48,145,229, 1, 0, 83,227, /* 0x 3c0 */
6, 0, 0, 26, 8, 32,145,229, 20, 48,145,229, 3, 48,130,224, /* 0x 3d0 */ 6, 0, 0, 26, 8, 32,145,229, 20, 48,145,229, 3, 48,130,224, /* 0x 3d0 */
3, 0, 80,225, 3, 0,160, 49, 2, 0, 84,225, 2, 64,160, 33, /* 0x 3e0 */ 3, 0, 85,225, 3, 80,160, 49, 2, 0, 80,225, 2, 0,160, 33, /* 0x 3e0 */
32, 16,129,226, 1,224, 78,226, 0, 0, 94,227,241,255,255,170, /* 0x 3f0 */ 32, 16,129,226, 1,224, 78,226, 0, 0, 94,227,241,255,255,170, /* 0x 3f0 */
255, 78,196,227, 15, 64,196,227, 0, 48,100,224,255, 62,131,226, /* 0x 400 */ 255, 78,192,227, 15, 64,196,227, 5, 48,100,224,255, 62,131,226, /* 0x 400 */
15, 48,131,226,255, 62,195,227, 15, 48,195,227, 36, 48,141,229, /* 0x 410 */ 15, 48,131,226,255, 62,195,227, 16,224, 28,226, 15, 48,195,227, /* 0x 410 */
0, 80,160,227, 34, 48,140,226, 4, 0,160,225, 0,192,224,227, /* 0x 420 */ 36, 48,141,229, 28, 64,141, 21, 7, 0, 0, 26, 12, 48,160,225, /* 0x 420 */
36, 16,157,229, 5, 32,160,225, 0,192,141,229, 4, 80,141,229, /* 0x 430 */ 14, 32,160,225, 0,192,224,227, 4, 0,160,225, 36, 16,157,229, /* 0x 430 */
75,255,255,235, 52, 48,160,227, 0,176,100,224,155, 3, 3,224, /* 0x 440 */ 0, 80,141,232, 74,255,255,235, 28, 0,141,229, 28, 16,157,229, /* 0x 440 */
28, 0,141,229, 32, 48,141,229, 24, 80,141,229,127, 0, 0,234, /* 0x 450 */ 52, 48,160,227, 1,176,100,224,155, 3, 3,224, 0, 32,160,227, /* 0x 450 */
0, 48,150,229, 6, 0, 83,227, 5, 0, 0, 26, 8, 32,150,229, /* 0x 460 */ 32, 80,134,226, 32, 48,141,229, 24, 32,141,229,127, 0, 0,234, /* 0x 460 */
8, 0,157,229, 2, 32,139,224, 3, 16,160,227, 69,255,255,235, /* 0x 470 */ 12, 48,157,229, 0, 0, 83,227, 8, 0, 0, 10, 32, 48, 21,229, /* 0x 470 */
114, 0, 0,234, 1, 0, 83,227,112, 0, 0, 26, 24, 48,150,229, /* 0x 480 */ 6, 0, 83,227, 5, 0, 0, 26, 24, 32, 21,229, 8, 0,157,229, /* 0x 480 */
72, 34,159,229, 7, 48, 3,226, 3, 49,160,225, 50, 35,160,225, /* 0x 490 */ 2, 32,139,224, 3, 16,160,227, 62,255,255,235,111, 0, 0,234, /* 0x 490 */
8, 48,150,229, 12, 16,157,229, 3,144,139,224, 9, 10,160,225, /* 0x 4a0 */ 32, 48, 21,229, 1, 0, 83,227,108, 0, 0, 26, 8, 48, 21,229, /* 0x 4a0 */
16, 48,150,229, 0, 0, 81,227, 32, 10,160,225, 4,192,150,229, /* 0x 4b0 */ 36, 34,159,229, 7, 48, 3,226, 3, 49,160,225, 50, 35,160,225, /* 0x 4b0 */
7, 80, 2,226, 20, 32,150,229, 0,128,131,224, 16,224,157, 5, /* 0x 4c0 */ 24, 48, 21,229, 3,144,139,224, 12, 48,157,229, 16,224, 21,229, /* 0x 4c0 */
9,112, 96,224, 40, 48,141,229, 20, 32,141,229, 0,224,224, 19, /* 0x 4d0 */ 9, 26,160,225, 0, 0, 83,227, 33, 26,160,225, 28,192, 21,229, /* 0x 4d0 */
12,192, 96,224, 5, 32,160, 1, 18, 48,160, 3, 2, 32,133, 19, /* 0x 4e0 */ 7, 96, 2,226, 12, 32, 21,229, 9,128, 97,224, 16, 64,157, 5, /* 0x 4e0 */
50, 48,160, 19, 7, 0,160,225, 8, 16,160,225, 44,144,141,229, /* 0x 4f0 */ 1,112,142,224, 20, 32,141,229, 0, 64,224, 19, 12,192, 97,224, /* 0x 4f0 */
0,224,141,229, 4,192,141,229, 25,255,255,235, 0, 0, 87,225, /* 0x 500 */ 6, 32,160, 1, 18, 48,160, 3, 2, 32,134, 19, 50, 48,160, 19, /* 0x 500 */
59, 0, 0, 26, 12, 48,157,229, 0, 0, 83,227, 6, 0, 0, 10, /* 0x 510 */ 8, 0,160,225, 7, 16,160,225, 40,224,141,229, 16, 16,141,232, /* 0x 510 */
88, 16,157,229, 4, 48, 21,226, 1, 48,160, 17, 12, 0,157,229, /* 0x 520 */ 44,144,141,229, 18,255,255,235, 0, 0, 88,225, 56, 0, 0, 26, /* 0x 520 */
40, 16,141,226, 16, 32,157,229, 62,255,255,235, 0, 48,104,226, /* 0x 530 */ 12, 48,157,229, 0, 0, 83,227, 6, 0, 0, 10, 88, 16,157,229, /* 0x 530 */
3, 74,160,225, 2, 0, 21,227, 36, 74,160,225, 7, 0, 0, 10, /* 0x 540 */ 4, 48, 22,226, 1, 48,160, 17, 12, 0,157,229, 40, 16,141,226, /* 0x 540 */
0, 0, 84,227, 5, 0, 0, 10, 8, 16,135,224, 4, 32,160,225, /* 0x 550 */ 16, 32,157,229, 55,255,255,235, 0, 48,103,226, 3, 74,160,225, /* 0x 550 */
0, 48,160,227, 1, 32, 82,226, 1, 48,193,228,251,255,255, 26, /* 0x 560 */ 2, 0, 22,227, 36, 74,160,225, 7, 0, 0, 10, 0, 0, 84,227, /* 0x 560 */
12, 32,157,229, 0, 0, 82,227, 35, 0, 0, 10, 0, 48,150,229, /* 0x 570 */ 5, 0, 0, 10, 7, 16,136,224, 4, 32,160,225, 0, 48,160,227, /* 0x 570 */
1, 0, 83,227, 24, 0, 0, 26, 24, 48,150,229, 1, 0, 19,227, /* 0x 580 */ 1, 32, 82,226, 1, 48,193,228,251,255,255, 26, 12, 32,157,229, /* 0x 580 */
21, 0, 0, 10, 20, 32,150,229, 16, 48,150,229, 3, 0, 82,225, /* 0x 590 */ 0, 0, 82,227, 32, 0, 0, 10, 32, 48, 21,229, 1, 0, 83,227, /* 0x 590 */
8, 16,150,229, 70, 0, 0, 26, 1, 48,130,224, 11, 32,131,224, /* 0x 5a0 */ 21, 0, 0, 26, 8, 48, 21,229, 1, 0, 19,227, 18, 0, 0, 10, /* 0x 5a0 */
0, 48, 98,226, 3, 58,160,225, 35, 58,160,225, 7, 0, 83,227, /* 0x 5b0 */ 12, 32, 21,229, 16, 48, 21,229, 3, 0, 82,225, 24, 16, 21,229, /* 0x 5b0 */
63, 0, 0,154, 24, 49,159,229, 0, 48,130,229, 20, 49,159,229, /* 0x 5c0 */ 62, 0, 0, 26, 1, 48,130,224, 11, 32,131,224, 0, 48, 98,226, /* 0x 5c0 */
4, 48,130,229, 1, 0, 0,234, 0, 0, 82,227, 2, 0, 0, 10, /* 0x 5d0 */ 3, 58,160,225, 35, 58,160,225, 7, 0, 83,227, 55, 0, 0,154, /* 0x 5d0 */
8, 0,157,229, 0, 16,160,227,234,254,255,235, 7, 0,160,225, /* 0x 5e0 */ 248, 48,159,229, 0, 48,130,229,244, 48,159,229, 8, 0,157,229, /* 0x 5e0 */
8, 16,160,225, 5, 32,160,225,219,254,255,235, 0, 0, 80,227, /* 0x 5f0 */ 4, 48,130,229, 0, 16,160,227,230,254,255,235, 8, 0,160,225, /* 0x 5f0 */
1, 0, 0, 10,127, 0,160,227,202,254,255,235, 20, 32,157,229, /* 0x 600 */ 7, 16,160,225, 6, 32,160,225,215,254,255,235, 0, 0, 80,227, /* 0x 600 */
4, 48,136,224, 2, 16,137,224, 3, 64,135,224, 1, 0, 84,225, /* 0x 610 */ 1, 0, 0, 10,127, 0,160,227,198,254,255,235, 20, 32,157,229, /* 0x 610 */
10, 0, 0, 42, 0,192,224,227, 0,192,141,229, 1, 16,100,224, /* 0x 620 */ 4, 48,135,224, 2, 16,137,224, 3, 64,136,224, 1, 0, 84,225, /* 0x 620 */
1,192,140,226, 5, 32,160,225, 4, 0,160,225, 50, 48,160,227, /* 0x 630 */ 10, 0, 0, 42, 0,192,224,227, 0,192,141,229, 1, 16,100,224, /* 0x 630 */
4,192,141,229,202,254,255,235, 0, 0, 84,225,236,255,255, 26, /* 0x 640 */ 1,192,140,226, 6, 32,160,225, 4, 0,160,225, 50, 48,160,227, /* 0x 640 */
24, 48,157,229, 1, 48,131,226, 24, 48,141,229, 32, 96,134,226, /* 0x 650 */ 4,192,141,229,198,254,255,235, 0, 0, 84,225,236,255,255, 26, /* 0x 650 */
188, 50,218,225, 24, 16,157,229, 3, 0, 81,225,123,255,255,186, /* 0x 660 */ 24, 48,157,229, 1, 48,131,226, 24, 48,141,229, 32, 80,133,226, /* 0x 660 */
12, 32,157,229, 0, 0, 82,227, 4, 0, 0, 26, 16, 0,157,229, /* 0x 670 */ 188, 50,218,225, 24, 16,157,229, 3, 0, 81,225,123,255,255,186, /* 0x 670 */
179,254,255,235, 0, 0, 80,227,221,255,255, 26, 5, 0, 0,234, /* 0x 680 */ 12, 32,157,229, 0, 0, 82,227, 5, 0, 0, 10,176, 49,218,225, /* 0x 680 */
176, 49,218,225, 3, 0, 83,227, 28, 48,157, 21, 36, 16,157, 21, /* 0x 690 */ 3, 0, 83,227, 28, 48,157, 21, 36, 16,157, 21, 1, 0,131, 16, /* 0x 690 */
1, 0,131, 16,172,254,255, 27, 84, 32,157,229, 0, 0, 82,227, /* 0x 6a0 */ 173,254,255, 27, 84, 32,157,229, 0, 0, 82,227, 0,176,130, 21, /* 0x 6a0 */
0,176,130, 21, 24, 0,154,229, 0, 0,139,224, 48,208,141,226, /* 0x 6b0 */ 24, 0,154,229, 0, 0,139,224, 48,208,141,226,240,143,189,232, /* 0x 6b0 */
240,143,189,232, 4, 48,150,229, 32, 32,157,229, 0, 0, 83,227, /* 0x 6c0 */ 28, 48, 21,229, 0, 0, 83,227, 32, 32,157, 5, 2, 48,129, 0, /* 0x 6c0 */
2, 48,129,224, 8, 32,131,226,185,255,255, 10,189,255,255,234, /* 0x 6d0 */ 8, 32,131, 2,193,255,255, 10,199,255,255,234, 64, 98, 81,115, /* 0x 6d0 */
64, 98, 81,115, 91, 0,144,239, 14,240,160,225,240, 71, 45,233, /* 0x 6e0 */ 91, 0,144,239, 14,240,160,225,240, 71, 45,233, 12,208, 77,226, /* 0x 6e0 */
12,208, 77,226, 52,112,141,226, 0, 80,160,225, 1, 96,160,225, /* 0x 6f0 */ 52, 96,141,226, 0,144,160,225, 1, 80,160,225, 3,128,160,225, /* 0x 6f0 */
3,160,160,225, 7, 0,160,225, 0, 48,160,227, 44, 16,141,226, /* 0x 700 */ 6, 0,160,225, 0, 48,160,227, 44, 16,141,226, 48,160,157,229, /* 0x 700 */
48,144,157,229, 2,128,160,225, 52, 64,157,229,197,254,255,235, /* 0x 710 */ 2,112,160,225, 52, 64,157,229,198,254,255,235, 56, 48,157,229, /* 0x 710 */
56, 48,157,229, 5, 16,160,227, 3, 48,100,224,188, 34,217,225, /* 0x 720 */ 5, 16,160,227, 3, 48,100,224,188, 34,218,225, 9, 0,160,225, /* 0x 720 */
5, 0,160,225, 56, 48,141,229, 52, 96,141,229,149,254,255,235, /* 0x 730 */ 56, 48,141,229, 52, 80,141,229,150,254,255,235, 9, 0,160,225, /* 0x 730 */
5, 0,160,225, 4, 16,160,227,186, 34,217,225,145,254,255,235, /* 0x 740 */ 4, 16,160,227,186, 34,218,225,146,254,255,235, 52, 64,138,226, /* 0x 740 */
52, 96,137,226, 60, 32,157,229, 8, 48,150,229, 52, 32,130,226, /* 0x 750 */ 60, 32,157,229, 8, 48,148,229, 52, 32,130,226, 3, 32,130,224, /* 0x 750 */
3, 32,130,224, 5, 0,160,225, 3, 16,160,227,137,254,255,235, /* 0x 760 */ 9, 0,160,225, 3, 16,160,227,138,254,255,235, 8,192,141,226, /* 0x 760 */
8,192,141,226, 7, 32,160,225, 9, 16,160,225, 5, 48,160,225, /* 0x 770 */ 6, 32,160,225, 10, 16,160,225, 9, 48,160,225, 7, 0,160,225, /* 0x 770 */
8, 0,160,225, 0,192,141,229, 4,160,141,229,251,254,255,235, /* 0x 780 */ 0,192,141,229, 4,128,141,229,252,254,255,235, 0, 80,160,225, /* 0x 780 */
0, 64,160,225, 9, 16,160,227, 4, 32,160,225, 5, 0,160,225, /* 0x 790 */ 9, 16,160,227, 5, 32,160,225, 9, 0,160,225,125,254,255,235, /* 0x 790 */
124,254,255,235,188, 18,217,225, 0, 32,160,227, 29, 0, 0,234, /* 0x 7a0 */ 188, 18,218,225, 0, 32,160,227, 35, 0, 0,234, 0, 48,148,229, /* 0x 7a0 */
0, 48,150,229, 3, 0, 83,227, 24, 0, 0, 26, 8, 48,150,229, /* 0x 7b0 */ 3, 0, 83,227, 30, 0, 0, 26, 8, 48,148,229, 8, 0,157,229, /* 0x 7b0 */
8, 0,157,229, 0, 16,160,227, 0, 0,131,224, 1, 32,160,225, /* 0x 7c0 */ 0, 16,160,227, 0, 0,131,224, 1, 32,160,225, 94,254,255,235, /* 0x 7c0 */
93,254,255,235, 0, 64, 80,226, 4, 0, 0,186, 9, 16,160,225, /* 0x 7d0 */ 0, 64, 80,226, 4, 0, 0,186, 10, 16,160,225, 2, 44,160,227, /* 0x 7d0 */
2, 44,160,227, 84,254,255,235, 2, 12, 80,227, 1, 0, 0, 10, /* 0x 7e0 */ 85,254,255,235, 2, 12, 80,227, 1, 0, 0, 10,127, 0,160,227, /* 0x 7e0 */
127, 0,160,227, 79,254,255,235, 0,192,160,227, 4, 0,160,225, /* 0x 7f0 */ 80,254,255,235, 0,224,160,227, 14, 32,160,225, 8,192,141,226, /* 0x 7f0 */
12, 32,160,225, 9, 16,160,225, 12, 48,160,225, 0,192,141,229, /* 0x 800 */ 10, 16,160,225, 9, 48,160,225, 4, 0,160,225, 0, 80,141,232, /* 0x 800 */
4,192,141,229,217,254,255,235, 0, 64,160,225, 3, 0, 0,234, /* 0x 810 */ 218,254,255,235, 7, 16,160,227, 0, 80,160,225, 8, 32,157,229, /* 0x 810 */
32, 96,134,226, 1, 32,130,226, 1, 0, 82,225,223,255,255,186, /* 0x 820 */ 9, 0,160,225, 91,254,255,235, 4, 0,160,225, 72,254,255,235, /* 0x 820 */
4, 0,160,225, 12,208,141,226,240,135,189,232 /* 0x 830 */ 3, 0, 0,234, 32, 64,132,226, 1, 32,130,226, 1, 0, 82,225, /* 0x 830 */
217,255,255,186, 5, 0,160,225, 12,208,141,226,240,135,189,232 /* 0x 840 */
}; };
+5 -5
View File
@@ -29,8 +29,8 @@
#define STUB_ARM_LINUX_KERNEL_VMLINUX_SIZE 17091 #define STUB_ARM_LINUX_KERNEL_VMLINUX_SIZE 17091
#define STUB_ARM_LINUX_KERNEL_VMLINUX_ADLER32 0x3d6cea16 #define STUB_ARM_LINUX_KERNEL_VMLINUX_ADLER32 0x2af6ea3d
#define STUB_ARM_LINUX_KERNEL_VMLINUX_CRC32 0xab8eacad #define STUB_ARM_LINUX_KERNEL_VMLINUX_CRC32 0x12d16cc6
unsigned char stub_arm_linux_kernel_vmlinux[17091] = { unsigned char stub_arm_linux_kernel_vmlinux[17091] = {
127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
@@ -570,7 +570,7 @@ unsigned char stub_arm_linux_kernel_vmlinux[17091] = {
10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x2160 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x2160 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2170 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2170 */
69, 10, 48, 48, 48, 48, 48, 48, 49, 52, 32, 82, 95, 65, 82, 77, /* 0x2180 */ 69, 10, 48, 48, 48, 48, 48, 48, 49, 52, 32, 82, 95, 65, 82, 77, /* 0x2180 */
95, 65, 66, 83, 56, 32, 32, 32, 32, 32, 32, 32, 32, 77, 69, 84, /* 0x2190 */ 95, 65, 66, 83, 51, 50, 32, 32, 32, 32, 32, 32, 32, 77, 69, 84, /* 0x2190 */
72, 79, 68, 10, 48, 48, 48, 48, 48, 48, 51, 48, 32, 82, 95, 65, /* 0x21a0 */ 72, 79, 68, 10, 48, 48, 48, 48, 48, 48, 51, 48, 32, 82, 95, 65, /* 0x21a0 */
82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 76, /* 0x21b0 */ 82, 77, 95, 80, 67, 50, 52, 32, 32, 32, 32, 32, 32, 32, 32, 76, /* 0x21b0 */
73, 78, 85, 88, 48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 51, 52, /* 0x21c0 */ 73, 78, 85, 88, 48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 51, 52, /* 0x21c0 */
@@ -589,9 +589,9 @@ unsigned char stub_arm_linux_kernel_vmlinux[17091] = {
79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2290 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2290 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x22a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x22a0 */
10, 48, 48, 48, 48, 48, 48, 48, 56, 32, 82, 95, 65, 82, 77, 95, /* 0x22b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 56, 32, 82, 95, 65, 82, 77, 95, /* 0x22b0 */
65, 66, 83, 56, 32, 32, 32, 32, 32, 32, 32, 32,102,105,108,116, /* 0x22c0 */ 65, 66, 83, 51, 50, 32, 32, 32, 32, 32, 32, 32,102,105,108,116, /* 0x22c0 */
101,114, 95, 99,116,111, 10, 48, 48, 48, 48, 48, 48, 48, 99, 32, /* 0x22d0 */ 101,114, 95, 99,116,111, 10, 48, 48, 48, 48, 48, 48, 48, 99, 32, /* 0x22d0 */
82, 95, 65, 82, 77, 95, 65, 66, 83, 56, 32, 32, 32, 32, 32, 32, /* 0x22e0 */ 82, 95, 65, 82, 77, 95, 65, 66, 83, 51, 50, 32, 32, 32, 32, 32, /* 0x22e0 */
32, 32,102,105,108,116,101,114, 95,105,100, 10, 48, 48, 48, 48, /* 0x22f0 */ 32, 32,102,105,108,116,101,114, 95,105,100, 10, 48, 48, 48, 48, /* 0x22f0 */
48, 48, 49, 48, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, /* 0x2300 */ 48, 48, 49, 48, 32, 82, 95, 65, 82, 77, 95, 80, 67, 50, 52, 32, /* 0x2300 */
32, 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, 50, 46, 48, 48, /* 0x2310 */ 32, 32, 32, 32, 32, 32, 32, 99,116,111,107, 51, 50, 46, 48, 48, /* 0x2310 */
+3 -3
View File
@@ -29,8 +29,8 @@
#define STUB_ARMEB_LINUX_ELF_ENTRY_SIZE 16295 #define STUB_ARMEB_LINUX_ELF_ENTRY_SIZE 16295
#define STUB_ARMEB_LINUX_ELF_ENTRY_ADLER32 0x87435b9a #define STUB_ARMEB_LINUX_ELF_ENTRY_ADLER32 0xcad35b5a
#define STUB_ARMEB_LINUX_ELF_ENTRY_CRC32 0x7cf93476 #define STUB_ARMEB_LINUX_ELF_ENTRY_CRC32 0xc07dcf2e
unsigned char stub_armeb_linux_elf_entry[16295] = { unsigned char stub_armeb_linux_elf_entry[16295] = {
127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
@@ -44,7 +44,7 @@ unsigned char stub_armeb_linux_elf_entry[16295] = {
232,160, 1,254, 58, 0, 0, 15,224, 64, 64, 9,226,143, 80, 80, /* 0x 80 */ 232,160, 1,254, 58, 0, 0, 15,224, 64, 64, 9,226,143, 80, 80, /* 0x 80 */
225,160,224, 0,224,133, 80, 4,225,160, 0, 5,224,137, 16, 4, /* 0x 90 */ 225,160,224, 0,224,133, 80, 4,225,160, 0, 5,224,137, 16, 4, /* 0x 90 */
227,160, 32, 0,239,159, 0, 2,229,156,144, 0,226, 73,144,140, /* 0x a0 */ 227,160, 32, 0,239,159, 0, 2,229,156,144, 0,226, 73,144,140, /* 0x a0 */
224, 76,160, 9,224,138,160, 4,229,219, 0, 8,233, 45, 64, 1, /* 0x b0 */ 224, 76,160, 9,224,138,160, 4,229,155, 0, 8,233, 45, 64, 1, /* 0x b0 */
229,155, 48, 0,226,139, 0, 12,229,155, 16, 4,225,160, 32, 14, /* 0x c0 */ 229,155, 48, 0,226,139, 0, 12,229,155, 16, 4,225,160, 32, 14, /* 0x c0 */
229,141, 48, 8,226,141, 48, 8,225,160,224, 15,225,160,240, 5, /* 0x d0 */ 229,141, 48, 8,226,141, 48, 8,225,160,224, 15,225,160,240, 5, /* 0x d0 */
232,189,128, 2,233, 45, 64,252,224,129,112, 0,227,224, 80, 0, /* 0x e0 */ 232,189,128, 2,233, 45, 64,252,224,129,112, 0,227,224, 80, 0, /* 0x e0 */
+80 -79
View File
@@ -1,5 +1,5 @@
/* armeb-linux.elf-fold.h /* armeb-linux.elf-fold.h
created from armeb-linux.elf-fold.bin, 2108 (0x83c) bytes created from armeb-linux.elf-fold.bin, 2128 (0x850) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -28,17 +28,17 @@
*/ */
#define STUB_ARMEB_LINUX_ELF_FOLD_SIZE 2108 #define STUB_ARMEB_LINUX_ELF_FOLD_SIZE 2128
#define STUB_ARMEB_LINUX_ELF_FOLD_ADLER32 0x65a66090 #define STUB_ARMEB_LINUX_ELF_FOLD_ADLER32 0x14dc5f7e
#define STUB_ARMEB_LINUX_ELF_FOLD_CRC32 0xdee2e92e #define STUB_ARMEB_LINUX_ELF_FOLD_CRC32 0xf7b8b4af
unsigned char stub_armeb_linux_elf_fold[2108] = { unsigned char stub_armeb_linux_elf_fold[2128] = {
127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
0, 2, 0, 40, 0, 0, 0, 1, 0, 0,128,128, 0, 0, 0, 52, /* 0x 10 */ 0, 2, 0, 40, 0, 0, 0, 1, 0, 0,128,128, 0, 0, 0, 52, /* 0x 10 */
0, 0, 0, 0, 0, 0, 0, 2, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x 20 */ 0, 0, 0, 0, 0, 0, 0, 2, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x 20 */
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,128, 0, /* 0x 30 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,128, 0, /* 0x 30 */
0, 0,128, 0, 0, 0, 8, 60, 0, 0, 8, 60, 0, 0, 0, 5, /* 0x 40 */ 0, 0,128, 0, 0, 0, 8, 80, 0, 0, 8, 80, 0, 0, 0, 5, /* 0x 40 */
0, 0,128, 0, 0, 0, 0, 1, 0, 0, 8, 60, 0, 0, 0, 0, /* 0x 50 */ 0, 0,128, 0, 0, 0, 0, 1, 0, 0, 8, 80, 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 60 */
0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
229,157, 48, 12,224,141, 49, 3,226,131, 48, 20,228,147, 0, 4, /* 0x 80 */ 229,157, 48, 12,224,141, 49, 3,226,131, 48, 20,228,147, 0, 4, /* 0x 80 */
@@ -46,7 +46,7 @@ unsigned char stub_armeb_linux_elf_fold[2108] = {
227, 80, 0, 0, 26,255,255,252,229,141, 32, 8,226, 77,220, 10, /* 0x a0 */ 227, 80, 0, 0, 26,255,255,252,229,141, 32, 8,226, 77,220, 10, /* 0x a0 */
225,160, 64, 9,229,154,144, 4,225,160,128, 13,229,154,112, 0, /* 0x b0 */ 225,160, 64, 9,229,154,144, 4,225,160,128, 13,229,154,112, 0, /* 0x b0 */
226,143, 96, 36,226,137,144, 12,227,160,176, 0,233, 45, 15,248, /* 0x c0 */ 226,143, 96, 36,226,137,144, 12,227,160,176, 0,233, 45, 15,248, /* 0x c0 */
232,189, 0, 15,235, 0, 1,132,225,160,224, 0,226,141,208, 20, /* 0x d0 */ 232,189, 0, 15,235, 0, 1,131,225,160,224, 0,226,141,208, 20, /* 0x d0 */
226,141,220, 10,232,189, 0, 7,229, 18,240, 4,226, 3, 48,255, /* 0x e0 */ 226,141,220, 10,232,189, 0, 7,229, 18,240, 4,226, 3, 48,255, /* 0x e0 */
227, 83, 0, 81, 17,160,240, 14,225,176, 17, 33, 19, 80, 0, 0, /* 0x f0 */ 227, 83, 0, 81, 17,160,240, 14,225,176, 17, 33, 19, 80, 0, 0, /* 0x f0 */
1,160,240, 14,226, 65, 16, 1,231,144, 33, 1,226, 2, 52, 15, /* 0x 100 */ 1,160,240, 14,226, 65, 16, 1,231,144, 33, 1,226, 2, 52, 15, /* 0x 100 */
@@ -91,78 +91,79 @@ unsigned char stub_armeb_linux_elf_fold[2108] = {
26,255,255,183,226,141,208, 20,232,189,128,240, 33, 88, 80, 85, /* 0x 370 */ 26,255,255,183,226,141,208, 20,232,189,128,240, 33, 88, 80, 85, /* 0x 370 */
233, 45, 79,240,225,160,160, 1,225,218,193,176,229,145, 16, 28, /* 0x 380 */ 233, 45, 79,240,225,160,160, 1,225,218,193,176,229,145, 16, 28, /* 0x 380 */
225,218,226,188,226, 77,208, 48,227, 92, 0, 2,224,138, 96, 1, /* 0x 390 */ 225,218,226,188,226, 77,208, 48,227, 92, 0, 2,224,138, 96, 1, /* 0x 390 */
229,141, 0, 16, 3,160,192, 16, 19,160,192, 0,226, 78,224, 1, /* 0x 3a0 */ 229,141, 0, 16, 3,160,192, 50, 19,160,192, 34,226, 78,224, 1, /* 0x 3a0 */
225,160, 16, 6,227,224, 64, 0,227,160, 0, 0,229,141, 32, 12, /* 0x 3b0 */ 225,160, 16, 6,227,224, 0, 0,227,160, 80, 0,229,141, 32, 12, /* 0x 3b0 */
229,141, 48, 8,234, 0, 0, 11,229,145, 48, 0,227, 83, 0, 1, /* 0x 3c0 */ 229,141, 48, 8,234, 0, 0, 11,229,145, 48, 0,227, 83, 0, 1, /* 0x 3c0 */
26, 0, 0, 6,229,145, 32, 8,229,145, 48, 20,224,130, 48, 3, /* 0x 3d0 */ 26, 0, 0, 6,229,145, 32, 8,229,145, 48, 20,224,130, 48, 3, /* 0x 3d0 */
225, 80, 0, 3, 49,160, 0, 3,225, 84, 0, 2, 33,160, 64, 2, /* 0x 3e0 */ 225, 85, 0, 3, 49,160, 80, 3,225, 80, 0, 2, 33,160, 0, 2, /* 0x 3e0 */
226,129, 16, 32,226, 78,224, 1,227, 94, 0, 0,170,255,255,241, /* 0x 3f0 */ 226,129, 16, 32,226, 78,224, 1,227, 94, 0, 0,170,255,255,241, /* 0x 3f0 */
227,196, 78,255,227,196, 64, 15,224,100, 48, 0,226,131, 62,255, /* 0x 400 */ 227,192, 78,255,227,196, 64, 15,224,100, 48, 5,226,131, 62,255, /* 0x 400 */
226,131, 48, 15,227,195, 62,255,227,195, 48, 15,229,141, 48, 36, /* 0x 410 */ 226,131, 48, 15,227,195, 62,255,226, 28,224, 16,227,195, 48, 15, /* 0x 410 */
227,160, 80, 0,226,140, 48, 34,225,160, 0, 4,227,224,192, 0, /* 0x 420 */ 229,141, 48, 36, 21,141, 64, 28, 26, 0, 0, 7,225,160, 48, 12, /* 0x 420 */
229,157, 16, 36,225,160, 32, 5,229,141,192, 0,229,141, 80, 4, /* 0x 430 */ 225,160, 32, 14,227,224,192, 0,225,160, 0, 4,229,157, 16, 36, /* 0x 430 */
235,255,255, 75,227,160, 48, 52,224,100,176, 0,224, 3, 3,155, /* 0x 440 */ 232,141, 80, 0,235,255,255, 74,229,141, 0, 28,229,157, 16, 28, /* 0x 440 */
229,141, 0, 28,229,141, 48, 32,229,141, 80, 24,234, 0, 0,127, /* 0x 450 */ 227,160, 48, 52,224,100,176, 1,224, 3, 3,155,227,160, 32, 0, /* 0x 450 */
229,150, 48, 0,227, 83, 0, 6, 26, 0, 0, 5,229,150, 32, 8, /* 0x 460 */ 226,134, 80, 32,229,141, 48, 32,229,141, 32, 24,234, 0, 0,127, /* 0x 460 */
229,157, 0, 8,224,139, 32, 2,227,160, 16, 3,235,255,255, 69, /* 0x 470 */ 229,157, 48, 12,227, 83, 0, 0, 10, 0, 0, 8,229, 21, 48, 32, /* 0x 470 */
234, 0, 0,114,227, 83, 0, 1, 26, 0, 0,112,229,150, 48, 24, /* 0x 480 */ 227, 83, 0, 6, 26, 0, 0, 5,229, 21, 32, 24,229,157, 0, 8, /* 0x 480 */
229,159, 34, 72,226, 3, 48, 7,225,160, 49, 3,225,160, 35, 50, /* 0x 490 */ 224,139, 32, 2,227,160, 16, 3,235,255,255, 62,234, 0, 0,111, /* 0x 490 */
229,150, 48, 8,229,157, 16, 12,224,139,144, 3,225,160, 10, 9, /* 0x 4a0 */ 229, 21, 48, 32,227, 83, 0, 1, 26, 0, 0,108,229, 21, 48, 8, /* 0x 4a0 */
229,150, 48, 16,227, 81, 0, 0,225,160, 10, 32,229,150,192, 4, /* 0x 4b0 */ 229,159, 34, 36,226, 3, 48, 7,225,160, 49, 3,225,160, 35, 50, /* 0x 4b0 */
226, 2, 80, 7,229,150, 32, 20,224,131,128, 0, 5,157,224, 16, /* 0x 4c0 */ 229, 21, 48, 24,224,139,144, 3,229,157, 48, 12,229, 21,224, 16, /* 0x 4c0 */
224, 96,112, 9,229,141, 48, 40,229,141, 32, 20, 19,224,224, 0, /* 0x 4d0 */ 225,160, 26, 9,227, 83, 0, 0,225,160, 26, 33,229, 21,192, 28, /* 0x 4d0 */
224, 96,192, 12, 1,160, 32, 5, 3,160, 48, 18, 19,133, 32, 2, /* 0x 4e0 */ 226, 2, 96, 7,229, 21, 32, 12,224, 97,128, 9, 5,157, 64, 16, /* 0x 4e0 */
19,160, 48, 50,225,160, 0, 7,225,160, 16, 8,229,141,144, 44, /* 0x 4f0 */ 224,142,112, 1,229,141, 32, 20, 19,224, 64, 0,224, 97,192, 12, /* 0x 4f0 */
229,141,224, 0,229,141,192, 4,235,255,255, 25,225, 87, 0, 0, /* 0x 500 */ 1,160, 32, 6, 3,160, 48, 18, 19,134, 32, 2, 19,160, 48, 50, /* 0x 500 */
26, 0, 0, 59,229,157, 48, 12,227, 83, 0, 0, 10, 0, 0, 6, /* 0x 510 */ 225,160, 0, 8,225,160, 16, 7,229,141,224, 40,232,141, 16, 16, /* 0x 510 */
229,157, 16, 88,226, 21, 48, 4, 17,160, 48, 1,229,157, 0, 12, /* 0x 520 */ 229,141,144, 44,235,255,255, 18,225, 88, 0, 0, 26, 0, 0, 56, /* 0x 520 */
226,141, 16, 40,229,157, 32, 16,235,255,255, 62,226,104, 48, 0, /* 0x 530 */ 229,157, 48, 12,227, 83, 0, 0, 10, 0, 0, 6,229,157, 16, 88, /* 0x 530 */
225,160, 74, 3,227, 21, 0, 2,225,160, 74, 36, 10, 0, 0, 7, /* 0x 540 */ 226, 22, 48, 4, 17,160, 48, 1,229,157, 0, 12,226,141, 16, 40, /* 0x 540 */
227, 84, 0, 0, 10, 0, 0, 5,224,135, 16, 8,225,160, 32, 4, /* 0x 550 */ 229,157, 32, 16,235,255,255, 55,226,103, 48, 0,225,160, 74, 3, /* 0x 550 */
227,160, 48, 0,226, 82, 32, 1,228,193, 48, 1, 26,255,255,251, /* 0x 560 */ 227, 22, 0, 2,225,160, 74, 36, 10, 0, 0, 7,227, 84, 0, 0, /* 0x 560 */
229,157, 32, 12,227, 82, 0, 0, 10, 0, 0, 35,229,150, 48, 0, /* 0x 570 */ 10, 0, 0, 5,224,136, 16, 7,225,160, 32, 4,227,160, 48, 0, /* 0x 570 */
227, 83, 0, 1, 26, 0, 0, 24,229,150, 48, 24,227, 19, 0, 1, /* 0x 580 */ 226, 82, 32, 1,228,193, 48, 1, 26,255,255,251,229,157, 32, 12, /* 0x 580 */
10, 0, 0, 21,229,150, 32, 20,229,150, 48, 16,225, 82, 0, 3, /* 0x 590 */ 227, 82, 0, 0, 10, 0, 0, 32,229, 21, 48, 32,227, 83, 0, 1, /* 0x 590 */
229,150, 16, 8, 26, 0, 0, 70,224,130, 48, 1,224,131, 32, 11, /* 0x 5a0 */ 26, 0, 0, 21,229, 21, 48, 8,227, 19, 0, 1, 10, 0, 0, 18, /* 0x 5a0 */
226, 98, 48, 0,225,160, 58, 3,225,160, 58, 35,227, 83, 0, 7, /* 0x 5b0 */ 229, 21, 32, 12,229, 21, 48, 16,225, 82, 0, 3,229, 21, 16, 24, /* 0x 5b0 */
154, 0, 0, 63,229,159, 49, 24,229,130, 48, 0,229,159, 49, 20, /* 0x 5c0 */ 26, 0, 0, 62,224,130, 48, 1,224,131, 32, 11,226, 98, 48, 0, /* 0x 5c0 */
229,130, 48, 4,234, 0, 0, 1,227, 82, 0, 0, 10, 0, 0, 2, /* 0x 5d0 */ 225,160, 58, 3,225,160, 58, 35,227, 83, 0, 7,154, 0, 0, 55, /* 0x 5d0 */
229,157, 0, 8,227,160, 16, 0,235,255,254,234,225,160, 0, 7, /* 0x 5e0 */ 229,159, 48,248,229,130, 48, 0,229,159, 48,244,229,157, 0, 8, /* 0x 5e0 */
225,160, 16, 8,225,160, 32, 5,235,255,254,219,227, 80, 0, 0, /* 0x 5f0 */ 229,130, 48, 4,227,160, 16, 0,235,255,254,230,225,160, 0, 8, /* 0x 5f0 */
10, 0, 0, 1,227,160, 0,127,235,255,254,202,229,157, 32, 20, /* 0x 600 */ 225,160, 16, 7,225,160, 32, 6,235,255,254,215,227, 80, 0, 0, /* 0x 600 */
224,136, 48, 4,224,137, 16, 2,224,135, 64, 3,225, 84, 0, 1, /* 0x 610 */ 10, 0, 0, 1,227,160, 0,127,235,255,254,198,229,157, 32, 20, /* 0x 610 */
42, 0, 0, 10,227,224,192, 0,229,141,192, 0,224,100, 16, 1, /* 0x 620 */ 224,135, 48, 4,224,137, 16, 2,224,136, 64, 3,225, 84, 0, 1, /* 0x 620 */
226,140,192, 1,225,160, 32, 5,225,160, 0, 4,227,160, 48, 50, /* 0x 630 */ 42, 0, 0, 10,227,224,192, 0,229,141,192, 0,224,100, 16, 1, /* 0x 630 */
229,141,192, 4,235,255,254,202,225, 84, 0, 0, 26,255,255,236, /* 0x 640 */ 226,140,192, 1,225,160, 32, 6,225,160, 0, 4,227,160, 48, 50, /* 0x 640 */
229,157, 48, 24,226,131, 48, 1,229,141, 48, 24,226,134, 96, 32, /* 0x 650 */ 229,141,192, 4,235,255,254,198,225, 84, 0, 0, 26,255,255,236, /* 0x 650 */
225,218, 50,188,229,157, 16, 24,225, 81, 0, 3,186,255,255,123, /* 0x 660 */ 229,157, 48, 24,226,131, 48, 1,229,141, 48, 24,226,133, 80, 32, /* 0x 660 */
229,157, 32, 12,227, 82, 0, 0, 26, 0, 0, 4,229,157, 0, 16, /* 0x 670 */ 225,218, 50,188,229,157, 16, 24,225, 81, 0, 3,186,255,255,123, /* 0x 670 */
235,255,254,179,227, 80, 0, 0, 26,255,255,221,234, 0, 0, 5, /* 0x 680 */ 229,157, 32, 12,227, 82, 0, 0, 10, 0, 0, 5,225,218, 49,176, /* 0x 680 */
225,218, 49,176,227, 83, 0, 3, 21,157, 48, 28, 21,157, 16, 36, /* 0x 690 */ 227, 83, 0, 3, 21,157, 48, 28, 21,157, 16, 36, 16,131, 0, 1, /* 0x 690 */
16,131, 0, 1, 27,255,254,172,229,157, 32, 84,227, 82, 0, 0, /* 0x 6a0 */ 27,255,254,173,229,157, 32, 84,227, 82, 0, 0, 21,130,176, 0, /* 0x 6a0 */
21,130,176, 0,229,154, 0, 24,224,139, 0, 0,226,141,208, 48, /* 0x 6b0 */ 229,154, 0, 24,224,139, 0, 0,226,141,208, 48,232,189,143,240, /* 0x 6b0 */
232,189,143,240,229,150, 48, 4,229,157, 32, 32,227, 83, 0, 0, /* 0x 6c0 */ 229, 21, 48, 28,227, 83, 0, 0, 5,157, 32, 32, 0,129, 48, 2, /* 0x 6c0 */
224,129, 48, 2,226,131, 32, 8, 10,255,255,185,234,255,255,189, /* 0x 6d0 */ 2,131, 32, 8, 10,255,255,193,234,255,255,199,115, 81, 98, 64, /* 0x 6d0 */
115, 81, 98, 64,239,144, 0, 91,225,160,240, 14,233, 45, 71,240, /* 0x 6e0 */ 239,144, 0, 91,225,160,240, 14,233, 45, 71,240,226, 77,208, 12, /* 0x 6e0 */
226, 77,208, 12,226,141,112, 52,225,160, 80, 0,225,160, 96, 1, /* 0x 6f0 */ 226,141, 96, 52,225,160,144, 0,225,160, 80, 1,225,160,128, 3, /* 0x 6f0 */
225,160,160, 3,225,160, 0, 7,227,160, 48, 0,226,141, 16, 44, /* 0x 700 */ 225,160, 0, 6,227,160, 48, 0,226,141, 16, 44,229,157,160, 48, /* 0x 700 */
229,157,144, 48,225,160,128, 2,229,157, 64, 52,235,255,254,197, /* 0x 710 */ 225,160,112, 2,229,157, 64, 52,235,255,254,198,229,157, 48, 56, /* 0x 710 */
229,157, 48, 56,227,160, 16, 5,224,100, 48, 3,225,217, 34,188, /* 0x 720 */ 227,160, 16, 5,224,100, 48, 3,225,218, 34,188,225,160, 0, 9, /* 0x 720 */
225,160, 0, 5,229,141, 48, 56,229,141, 96, 52,235,255,254,149, /* 0x 730 */ 229,141, 48, 56,229,141, 80, 52,235,255,254,150,225,160, 0, 9, /* 0x 730 */
225,160, 0, 5,227,160, 16, 4,225,217, 34,186,235,255,254,145, /* 0x 740 */ 227,160, 16, 4,225,218, 34,186,235,255,254,146,226,138, 64, 52, /* 0x 740 */
226,137, 96, 52,229,157, 32, 60,229,150, 48, 8,226,130, 32, 52, /* 0x 750 */ 229,157, 32, 60,229,148, 48, 8,226,130, 32, 52,224,130, 32, 3, /* 0x 750 */
224,130, 32, 3,225,160, 0, 5,227,160, 16, 3,235,255,254,137, /* 0x 760 */ 225,160, 0, 9,227,160, 16, 3,235,255,254,138,226,141,192, 8, /* 0x 760 */
226,141,192, 8,225,160, 32, 7,225,160, 16, 9,225,160, 48, 5, /* 0x 770 */ 225,160, 32, 6,225,160, 16, 10,225,160, 48, 9,225,160, 0, 7, /* 0x 770 */
225,160, 0, 8,229,141,192, 0,229,141,160, 4,235,255,254,251, /* 0x 780 */ 229,141,192, 0,229,141,128, 4,235,255,254,252,225,160, 80, 0, /* 0x 780 */
225,160, 64, 0,227,160, 16, 9,225,160, 32, 4,225,160, 0, 5, /* 0x 790 */ 227,160, 16, 9,225,160, 32, 5,225,160, 0, 9,235,255,254,125, /* 0x 790 */
235,255,254,124,225,217, 18,188,227,160, 32, 0,234, 0, 0, 29, /* 0x 7a0 */ 225,218, 18,188,227,160, 32, 0,234, 0, 0, 35,229,148, 48, 0, /* 0x 7a0 */
229,150, 48, 0,227, 83, 0, 3, 26, 0, 0, 24,229,150, 48, 8, /* 0x 7b0 */ 227, 83, 0, 3, 26, 0, 0, 30,229,148, 48, 8,229,157, 0, 8, /* 0x 7b0 */
229,157, 0, 8,227,160, 16, 0,224,131, 0, 0,225,160, 32, 1, /* 0x 7c0 */ 227,160, 16, 0,224,131, 0, 0,225,160, 32, 1,235,255,254, 94, /* 0x 7c0 */
235,255,254, 93,226, 80, 64, 0,186, 0, 0, 4,225,160, 16, 9, /* 0x 7d0 */ 226, 80, 64, 0,186, 0, 0, 4,225,160, 16, 10,227,160, 44, 2, /* 0x 7d0 */
227,160, 44, 2,235,255,254, 84,227, 80, 12, 2, 10, 0, 0, 1, /* 0x 7e0 */ 235,255,254, 85,227, 80, 12, 2, 10, 0, 0, 1,227,160, 0,127, /* 0x 7e0 */
227,160, 0,127,235,255,254, 79,227,160,192, 0,225,160, 0, 4, /* 0x 7f0 */ 235,255,254, 80,227,160,224, 0,225,160, 32, 14,226,141,192, 8, /* 0x 7f0 */
225,160, 32, 12,225,160, 16, 9,225,160, 48, 12,229,141,192, 0, /* 0x 800 */ 225,160, 16, 10,225,160, 48, 9,225,160, 0, 4,232,141, 80, 0, /* 0x 800 */
229,141,192, 4,235,255,254,217,225,160, 64, 0,234, 0, 0, 3, /* 0x 810 */ 235,255,254,218,227,160, 16, 7,225,160, 80, 0,229,157, 32, 8, /* 0x 810 */
226,134, 96, 32,226,130, 32, 1,225, 82, 0, 1,186,255,255,223, /* 0x 820 */ 225,160, 0, 9,235,255,254, 91,225,160, 0, 4,235,255,254, 72, /* 0x 820 */
225,160, 0, 4,226,141,208, 12,232,189,135,240 /* 0x 830 */ 234, 0, 0, 3,226,132, 64, 32,226,130, 32, 1,225, 82, 0, 1, /* 0x 830 */
186,255,255,217,225,160, 0, 5,226,141,208, 12,232,189,135,240 /* 0x 840 */
}; };
@@ -0,0 +1,37 @@
/* armeb-linux.kernel.vmlinux-head.h
created from armeb-linux.kernel.vmlinux-head.bin, 8 (0x8) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2007 Laszlo Molnar
Copyright (C) 2000-2007 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>
*/
#define STUB_ARMEB_LINUX_KERNEL_VMLINUX_HEAD_SIZE 8
#define STUB_ARMEB_LINUX_KERNEL_VMLINUX_HEAD_ADLER32 0x19db0637
#define STUB_ARMEB_LINUX_KERNEL_VMLINUX_HEAD_CRC32 0xb5ec5990
unsigned char stub_armeb_linux_kernel_vmlinux_head[8] = {
225,160,192, 14,235,255,255,254 /* 0x 0 */
};
File diff suppressed because it is too large Load Diff
+8 -8
View File
@@ -29,15 +29,15 @@
#define STUB_I386_BSD_ELF_ENTRY_SIZE 37562 #define STUB_I386_BSD_ELF_ENTRY_SIZE 37562
#define STUB_I386_BSD_ELF_ENTRY_ADLER32 0xb6d5917d #define STUB_I386_BSD_ELF_ENTRY_ADLER32 0x0c31915d
#define STUB_I386_BSD_ELF_ENTRY_CRC32 0x57a02d3a #define STUB_I386_BSD_ELF_ENTRY_CRC32 0x68fd1b14
unsigned char stub_i386_bsd_elf_entry[37562] = { unsigned char stub_i386_bsd_elf_entry[37562] = {
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */ 1, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
116, 34, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */ 116, 34, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */
243, 0,240, 0,232,123, 0, 0, 0, 96,139,116, 36, 40,139,124, /* 0x 30 */ 243, 0,240, 0,232,123, 0, 0, 0, 96,139,116, 36, 36,139,124, /* 0x 30 */
36, 48,131,205,255,235, 3,164,235, 3,138, 6, 70,136, 7, 71, /* 0x 40 */ 36, 44,131,205,255,235, 3,164,235, 3,138, 6, 70,136, 7, 71, /* 0x 40 */
1,219,117, 7,139, 30,131,238,252, 17,219,114, 1, 49,192, 64, /* 0x 50 */ 1,219,117, 7,139, 30,131,238,252, 17,219,114, 1, 49,192, 64, /* 0x 50 */
138, 7,114,255,184, 1, 0, 0, 0, 1,219,117, 7,139, 30,131, /* 0x 60 */ 138, 7,114,255,184, 1, 0, 0, 0, 1,219,117, 7,139, 30,131, /* 0x 60 */
238,252, 17,219, 17,192, 1,219,117, 7,139, 30,131,238,252, 17, /* 0x 70 */ 238,252, 17,219, 17,192, 1,219,117, 7,139, 30,131,238,252, 17, /* 0x 70 */
@@ -88,10 +88,10 @@ unsigned char stub_i386_bsd_elf_entry[37562] = {
4,119,241, 1,207,233,252,255,255,255,137,229,141,156, 36, 0, /* 0x 340 */ 4,119,241, 1,207,233,252,255,255,255,137,229,141,156, 36, 0, /* 0x 340 */
0, 0, 0, 49,192, 80, 57,220,117,251, 70, 70, 83,104, 0, 0, /* 0x 350 */ 0, 0, 0, 49,192, 80, 57,220,117,251, 70, 70, 83,104, 0, 0, /* 0x 350 */
0, 0, 87,131,195, 4, 83,104, 0, 0, 0, 0, 86,131,195, 4, /* 0x 360 */ 0, 0, 87,131,195, 4, 83,104, 0, 0, 0, 0, 86,131,195, 4, /* 0x 360 */
83, 80,199, 3, 0, 0, 0, 0,137,229,139, 85, 44,172, 74,136, /* 0x 370 */ 83, 80,199, 3, 0, 0, 0, 0,137,229,139, 85, 40,172, 74,136, /* 0x 370 */
193, 36, 7,192,233, 3,187, 0,253,255,255,211,227,141,164, 92, /* 0x 380 */ 193, 36, 7,192,233, 3,187, 0,253,255,255,211,227,141,164, 92, /* 0x 380 */
144,241,255,255,131,228,224,106, 0,106, 0,137,227, 83,131,195, /* 0x 390 */ 144,241,255,255,131,228,224,106, 0,106, 0,137,227, 83,131,195, /* 0x 390 */
4,139, 77, 52,255, 49, 87, 83,131,195, 4,136, 67, 2,172, 74, /* 0x 3a0 */ 4,139, 77, 48,255, 49, 87, 83,131,195, 4,136, 67, 2,172, 74, /* 0x 3a0 */
136,193, 36, 15,136, 3,192,233, 4,136, 75, 1, 82, 86, 83, 80, /* 0x 3b0 */ 136,193, 36, 15,136, 3,192,233, 4,136, 75, 1, 82, 86, 83, 80, /* 0x 3b0 */
85, 87, 86, 83,131,236,124,139,148, 36,144, 0, 0, 0,199, 68, /* 0x 3c0 */ 85, 87, 86, 83,131,236,124,139,148, 36,144, 0, 0, 0,199, 68, /* 0x 3c0 */
36,116, 0, 0, 0, 0,198, 68, 36,115, 0,139,172, 36,156, 0, /* 0x 3d0 */ 36,116, 0, 0, 0, 0,198, 68, 36,115, 0,139,172, 36,156, 0, /* 0x 3d0 */
@@ -431,8 +431,8 @@ unsigned char stub_i386_bsd_elf_entry[37562] = {
148, 36,156, 0, 0, 0,139, 76, 36,116,137, 26,139,156, 36,168, /* 0x18b0 */ 148, 36,156, 0, 0, 0,139, 76, 36,116,137, 26,139,156, 36,168, /* 0x18b0 */
0, 0, 0,137, 11,131,196,124, 91, 94, 95, 93, 3,115,252, 3, /* 0x18c0 */ 0, 0, 0,137, 11,131,196,124, 91, 94, 95, 93, 3,115,252, 3, /* 0x18c0 */
123,248, 49,192,141,140, 36, 0,255,255,255,137,236, 80, 57,204, /* 0x18d0 */ 123,248, 49,192,141,140, 36, 0,255,255,255,137,236, 80, 57,204, /* 0x18d0 */
117,251,137,236, 49,201,139, 84, 36, 40, 3, 84, 36, 44, 57,214, /* 0x18e0 */ 117,251,137,236, 49,201,139, 84, 36, 36, 3, 84, 36, 40, 57,214, /* 0x18e0 */
116, 1, 72, 43,124, 36, 48,139, 84, 36, 52,137, 58,137, 68, 36, /* 0x18f0 */ 116, 1, 72, 43,124, 36, 44,139, 84, 36, 48,137, 58,137, 68, 36, /* 0x18f0 */
28, 97,195,235, 4, 90, 88, 89,151, 96, 49,219,187, 0, 0, 0, /* 0x1900 */ 28, 97,195,235, 4, 90, 88, 89,151, 96, 49,219,187, 0, 0, 0, /* 0x1900 */
0,106, 15, 88,138,100, 36, 32,106, 15, 91,138,124, 36, 32,138, /* 0x1910 */ 0,106, 15, 88,138,100, 36, 32,106, 15, 91,138,124, 36, 32,138, /* 0x1910 */
84, 36, 32,233,252,255,255,255, 15,183, 47, 43,110, 12, 41,221, /* 0x1920 */ 84, 36, 32,233,252,255,255,255, 15,183, 47, 43,110, 12, 41,221, /* 0x1920 */
+3 -3
View File
@@ -29,8 +29,8 @@
#define STUB_I386_DOS32_TMT_SIZE 27032 #define STUB_I386_DOS32_TMT_SIZE 27032
#define STUB_I386_DOS32_TMT_ADLER32 0xe058a94c #define STUB_I386_DOS32_TMT_ADLER32 0x60faa944
#define STUB_I386_DOS32_TMT_CRC32 0x76e13290 #define STUB_I386_DOS32_TMT_CRC32 0x1e38f90e
unsigned char stub_i386_dos32_tmt[27032] = { unsigned char stub_i386_dos32_tmt[27032] = {
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
@@ -444,7 +444,7 @@ unsigned char stub_i386_dos32_tmt[27032] = {
0, 0,235, 30,138, 7,131,199, 1, 60,128,114, 10, 60,143,119, /* 0x1980 */ 0, 0,235, 30,138, 7,131,199, 1, 60,128,114, 10, 60,143,119, /* 0x1980 */
6,128,127,254, 15,116, 5, 44,232, 60, 1,119,255,128, 63, 0, /* 0x1990 */ 6,128,127,254, 15,116, 5, 44,232, 60, 1,119,255,128, 63, 0, /* 0x1990 */
117,255,139, 7,102,193,232, 8,193,192, 16,134,196, 41,248, 1, /* 0x19a0 */ 117,255,139, 7,102,193,232, 8,193,192, 16,134,196, 41,248, 1, /* 0x19a0 */
240,137, 7,131,199, 4,131,233, 4,138, 7,131,199, 1,226, 13, /* 0x19b0 */ 232,137, 7,131,199, 4,131,233, 4,138, 7,131,199, 1,226, 13, /* 0x19b0 */
131,233, 1,127, 6,141,125,252, 49,192,138, 6, 70, 9,192,116, /* 0x19c0 */ 131,233, 1,127, 6,141,125,252, 49,192,138, 6, 70, 9,192,116, /* 0x19c0 */
1, 60,239,119, 17, 1,199,139, 7,134,196,193,192, 16,134,196, /* 0x19d0 */ 1, 60,239,119, 17, 1,199,139, 7,134,196,193,192, 16,134,196, /* 0x19d0 */
1,232,137, 7,235,226, 36, 15,193,224, 16,102,139, 6,131,198, /* 0x19e0 */ 1,232,137, 7,235,226, 36, 15,193,224, 16,102,139, 6,131,198, /* 0x19e0 */
+3 -3
View File
@@ -29,8 +29,8 @@
#define STUB_I386_DOS32_WATCOM_LE_SIZE 27436 #define STUB_I386_DOS32_WATCOM_LE_SIZE 27436
#define STUB_I386_DOS32_WATCOM_LE_ADLER32 0x1fda144c #define STUB_I386_DOS32_WATCOM_LE_ADLER32 0x946d1444
#define STUB_I386_DOS32_WATCOM_LE_CRC32 0xd84b8031 #define STUB_I386_DOS32_WATCOM_LE_CRC32 0x39b33888
unsigned char stub_i386_dos32_watcom_le[27436] = { unsigned char stub_i386_dos32_watcom_le[27436] = {
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
@@ -445,7 +445,7 @@ unsigned char stub_i386_dos32_watcom_le[27436] = {
4,185, 0, 0, 0, 0,235, 30,138, 7,131,199, 1, 60,128,114, /* 0x1990 */ 4,185, 0, 0, 0, 0,235, 30,138, 7,131,199, 1, 60,128,114, /* 0x1990 */
10, 60,143,119, 6,128,127,254, 15,116, 5, 44,232, 60, 1,119, /* 0x19a0 */ 10, 60,143,119, 6,128,127,254, 15,116, 5, 44,232, 60, 1,119, /* 0x19a0 */
255,128, 63, 0,117,255,139, 7,102,193,232, 8,193,192, 16,134, /* 0x19b0 */ 255,128, 63, 0,117,255,139, 7,102,193,232, 8,193,192, 16,134, /* 0x19b0 */
196, 41,248, 1,240,137, 7,131,199, 4,131,233, 4,138, 7,131, /* 0x19c0 */ 196, 41,248, 1,232,137, 7,131,199, 4,131,233, 4,138, 7,131, /* 0x19c0 */
199, 1,226, 13,131,233, 1,127, 6,141,125,252, 49,192,138, 6, /* 0x19d0 */ 199, 1,226, 13,131,233, 1,127, 6,141,125,252, 49,192,138, 6, /* 0x19d0 */
70, 9,192,116, 1, 60,239,119, 17, 1,199,139, 7,134,196,193, /* 0x19e0 */ 70, 9,192,116, 1, 60,239,119, 17, 1,199,139, 7,134,196,193, /* 0x19e0 */
192, 16,134,196, 1,232,137, 7,235,226, 36, 15,193,224, 16,102, /* 0x19f0 */ 192, 16,134,196, 1,232,137, 7,235,226, 36, 15,193,224, 16,102, /* 0x19f0 */
+76 -73
View File
@@ -1,5 +1,5 @@
/* i386-linux.elf-fold.h /* i386-linux.elf-fold.h
created from i386-linux.elf-fold.bin, 1691 (0x69b) bytes created from i386-linux.elf-fold.bin, 1730 (0x6c2) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -28,17 +28,17 @@
*/ */
#define STUB_I386_LINUX_ELF_FOLD_SIZE 1691 #define STUB_I386_LINUX_ELF_FOLD_SIZE 1730
#define STUB_I386_LINUX_ELF_FOLD_ADLER32 0x5710d32e #define STUB_I386_LINUX_ELF_FOLD_ADLER32 0x8b6ce726
#define STUB_I386_LINUX_ELF_FOLD_CRC32 0xcf21929e #define STUB_I386_LINUX_ELF_FOLD_CRC32 0xb81886c1
unsigned char stub_i386_linux_elf_fold[1691] = { unsigned char stub_i386_linux_elf_fold[1730] = {
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
2, 0, 3, 0, 1, 0, 0, 0,128, 16,192, 0, 52, 0, 0, 0, /* 0x 10 */ 2, 0, 3, 0, 1, 0, 0, 0,128, 16,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, 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, 16,192, 0, /* 0x 30 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16,192, 0, /* 0x 30 */
0, 16,192, 0,155, 6, 0, 0,156, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */ 0, 16,192, 0,194, 6, 0, 0,196, 6, 0, 0, 5, 0, 0, 0, /* 0x 40 */
0, 16, 0, 0, 1, 0, 0, 0,155, 6, 0, 0, 0, 0, 0, 0, /* 0x 50 */ 0, 16, 0, 0, 1, 0, 0, 0,194, 6, 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 60 */
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
83, 41,201,186,120, 2, 0, 0,137,230,137,231, 41,219,232,181, /* 0x 80 */ 83, 41,201,186,120, 2, 0, 0,137,230,137,231, 41,219,232,181, /* 0x 80 */
@@ -51,7 +51,7 @@ unsigned char stub_i386_linux_elf_fold[1691] = {
148, 26,255, 31, 0, 0,129,226, 0,240,255,255, 82, 41,192,102, /* 0x f0 */ 148, 26,255, 31, 0, 0,129,226, 0,240,255,255, 82, 41,192,102, /* 0x f0 */
131,123, 16, 3,117, 1,146, 80,139,115, 24,141,131,140, 0, 0, /* 0x 100 */ 131,123, 16, 3,117, 1,146, 80,139,115, 24,141,131,140, 0, 0, /* 0x 100 */
0, 41,198,139, 24,139, 72, 4,131,193, 12,141, 84, 36, 12, 96, /* 0x 110 */ 0, 41,198,139, 24,139, 72, 4,131,193, 12,141, 84, 36, 12, 96, /* 0x 110 */
71,232, 98, 4, 0, 0,131,196, 36, 89, 91,129,196, 0, 10, 0, /* 0x 120 */ 71,232,102, 4, 0, 0,131,196, 36, 89, 91,129,196, 0, 10, 0, /* 0x 120 */
0, 80, 79, 41,192, 60,175,175,117,252, 80, 80, 80, 80, 80, 80, /* 0x 130 */ 0, 80, 79, 41,192, 60,175,175,117,252, 80, 80, 80, 80, 80, 80, /* 0x 130 */
80, 80, 41,217,176, 91,255, 39,173,171,133,192,117,250,135,223, /* 0x 140 */ 80, 80, 41,217,176, 91,255, 39,173,171,133,192,117,250,135,223, /* 0x 140 */
1,223,173,171,133,192,117,250, 87,173,171,131,248, 32,115, 3, /* 0x 150 */ 1,223,173,171,133,192,117,250, 87,173,171,131,248, 32,115, 3, /* 0x 150 */
@@ -74,69 +74,72 @@ unsigned char stub_i386_linux_elf_fold[1691] = {
196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 10,139, 83, 4,137, /* 0x 260 */ 196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 10,139, 83, 4,137, /* 0x 260 */
240,232, 14,255,255,255,139, 85,228,139, 3, 1, 83, 4, 41,208, /* 0x 270 */ 240,232, 14,255,255,255,139, 85,228,139, 3, 1, 83, 4, 41,208, /* 0x 270 */
133,192,137, 3,233, 65,255,255,255,141,101,244, 91, 94, 95,201, /* 0x 280 */ 133,192,137, 3,233, 65,255,255,255,141,101,244, 91, 94, 95,201, /* 0x 280 */
195,133,192, 83,137,211,116, 29,168, 1,117, 25,139, 16, 57,218, /* 0x 290 */ 195,133,192, 83,137,211,116, 26,168, 1,117, 22,139, 16, 57,218, /* 0x 290 */
116, 7, 74,117, 11,133,219,116, 7,137, 24,137, 72, 4,235, 5, /* 0x 2a0 */ 116, 7, 74,117, 8,133,219,116, 4,137, 24,235, 7,131,192, 8, /* 0x 2a0 */
131,192, 8,235,231, 91,195, 85,137,229, 87, 86, 83,131,236, 68, /* 0x 2b0 */ 235,234, 49,192,133,192,116, 3,137, 72, 4, 91,195, 85,137,229, /* 0x 2b0 */
137, 69,228,139, 69, 8,137, 85,224,139, 93,224,139, 85, 12,137, /* 0x 2c0 */ 87, 86, 83,131,236, 68,137, 69,228,139, 69, 8,137, 85,224,139, /* 0x 2c0 */
69,220,139, 69,224,139, 77, 20,137, 85,216, 3, 91, 28,139, 85, /* 0x 2d0 */ 93,224,139, 85, 12,137, 69,220,139, 69,224,139, 77, 20,137, 85, /* 0x 2d0 */
224,137, 77,212,102,131,120, 16, 2, 15,183, 74, 44,137, 93,208, /* 0x 2e0 */ 216, 3, 91, 28,139, 85,224,137, 77,212,102,131,120, 16, 2, 15, /* 0x 2e0 */
15,148,192,131,207,255, 15,182,192,137,202,193,224, 4, 49,246, /* 0x 2f0 */ 183, 74, 44,137, 93,208, 15,148,192,131,206,255, 15,182,192,137, /* 0x 2f0 */
131,192, 34, 74,120, 28,131, 59, 1,117, 18,139, 83, 8, 57,250, /* 0x 300 */ 202,193,224, 4, 49,255,131,192, 34, 74,120, 28,131, 59, 1,117, /* 0x 300 */
115, 2,137,215, 3, 83, 20, 57,214,115, 2,137,214,131,195, 32, /* 0x 310 */ 18,139, 83, 8, 57,242,115, 2,137,214, 3, 83, 20, 57,215,115, /* 0x 310 */
226,228,137,251,106, 0,129,227, 0,240,255,255,106,255, 41,222, /* 0x 320 */ 2,137,215,131,195, 32,226,228,129,230, 0,240,255,255, 41,247, /* 0x 320 */
80,129,198,255, 15, 0, 0,106, 0,129,230, 0,240,255,255, 86, /* 0x 330 */ 137,242,141,159,255, 15, 0, 0,129,227, 0,240,255,255,168, 16, /* 0x 330 */
83,232, 50,254,255,255,139, 77,224,141, 52, 48,131,196, 24, 41, /* 0x 340 */ 117, 19,106, 0,106,255, 80,106, 0, 83, 86,232, 40,254,255,255, /* 0x 340 */
216,102,131,121, 44, 0,137,117,240,137, 69,204,199, 69,200, 0, /* 0x 350 */ 131,196, 24,137,194,139, 77,224,141, 4, 26, 41,242,199, 69,200, /* 0x 350 */
0, 0, 0, 15,132,215, 1, 0, 0,139, 93,208,139, 3,131,248, /* 0x 360 */ 0, 0, 0, 0,102,131,121, 44, 0,137, 69,240,137, 85,204, 15, /* 0x 360 */
6,117, 24,139, 77,204,186, 3, 0, 0, 0, 3, 75, 8,139, 69, /* 0x 370 */ 132,221, 1, 0, 0,131,125,220, 0,116, 32,139, 93,208,131, 59, /* 0x 370 */
216,232, 11,255,255,255,233,158, 1, 0, 0, 72, 15,133,151, 1, /* 0x 380 */ 6,117, 24,139, 77,204,186, 3, 0, 0, 0, 3, 75, 8,139, 69, /* 0x 380 */
0, 0,139, 69,208,199, 69,196, 64, 98, 81,115,139, 85,208,139, /* 0x 390 */ 216,232,251,254,255,255,233,160, 1, 0, 0,139, 69,208,131, 56, /* 0x 390 */
72, 24,139, 90, 20,131,225, 7,193,225, 2,211,109,196,139, 72, /* 0x 3a0 */ 1, 15,133,148, 1, 0, 0,139, 72, 24,199, 69,196, 64, 98, 81, /* 0x 3a0 */
16,139, 69,204, 3, 66, 8,137, 77,232,131,101,196, 7,137,194, /* 0x 3b0 */ 115,139, 85,208,131,225, 7,193,225, 2,139, 90, 20,211,109,196, /* 0x 3b0 */
1,195,129,226,255, 15, 0, 0,137,199,141, 52, 17,139, 77,208, /* 0x 3c0 */ 139, 72, 16,139, 69,204, 3, 66, 8,137, 77,232,131,101,196, 7, /* 0x 3c0 */
137, 69,236, 41,215,139, 65, 4,137, 93,192, 41,208,131,125,220, /* 0x 3d0 */ 137,194, 1,195,129,226,255, 15, 0, 0,137,199,141, 52, 17,139, /* 0x 3d0 */
0, 80,139, 69,228,116, 3,131,200,255,131,125,220, 1, 80, 25, /* 0x 3e0 */ 77,208,137, 69,236, 41,215,139, 65, 4,137, 93,192, 41,208,131, /* 0x 3e0 */
192,131,224,224,131,192, 50,131,125,220, 0, 80,139, 69,196,116, /* 0x 3f0 */ 125,220, 0, 80,139, 69,228,116, 3,131,200,255,131,125,220, 1, /* 0x 3f0 */
3,131,200, 2,131,125,220, 0, 80,137,240,116, 3,141, 70, 3, /* 0x 400 */ 80, 25,192,131,224,224,131,192, 50,131,125,220, 0, 80,139, 69, /* 0x 400 */
80, 87,232, 97,253,255,255,131,196, 24, 57,199, 15,133,184, 0, /* 0x 410 */ 196,116, 3,131,200, 2,131,125,220, 0, 80,137,240,116, 3,141, /* 0x 410 */
0, 0,131,125,220, 0,116, 28,246, 69,196, 4,139, 69,212,117, /* 0x 420 */ 70, 3, 80, 87,232, 79,253,255,255,131,196, 24, 57,199, 15,133, /* 0x 420 */
2, 49,192, 80,139, 69,220,255,117,228,141, 85,232,232,111,253, /* 0x 430 */ 184, 0, 0, 0,131,125,220, 0,116, 28,246, 69,196, 4,139, 69, /* 0x 430 */
255,255, 88, 90,137,243,247,219,129,227,255, 15, 0, 0,246, 69, /* 0x 440 */ 212,117, 2, 49,192, 80,139, 69,220,255,117,228,141, 85,232,232, /* 0x 440 */
196, 2,137, 93,188,116, 15,133,219,141, 4, 55,116, 8,137,217, /* 0x 450 */ 93,253,255,255, 88, 90,137,243,247,219,129,227,255, 15, 0, 0, /* 0x 450 */
198, 0, 0, 64,226,250,131,125,220, 0,116,120,139, 69,208,131, /* 0x 460 */ 246, 69,196, 2,137, 93,188,116, 15,133,219,141, 4, 55,116, 8, /* 0x 460 */
56, 1,117, 86,246, 64, 24, 1,116, 80,139, 80, 20,139, 88, 8, /* 0x 470 */ 137,217,198, 0, 0, 64,226,250,131,125,220, 0,116,120,139, 69, /* 0x 470 */
141, 12, 26, 3, 77,204, 59, 80, 16,117, 14,137,200,247,216, 37, /* 0x 480 */ 208,131, 56, 1,117, 86,246, 64, 24, 1,116, 80,139, 80, 20,139, /* 0x 480 */
255, 15, 0, 0,131,248, 3,119, 17,139, 85,208,107, 69,204, 52, /* 0x 490 */ 88, 8,141, 12, 26, 3, 77,204, 59, 80, 16,117, 14,137,200,247, /* 0x 490 */
131,122, 4, 0,141, 76, 3, 12,117, 15,139, 1, 61,205,128, 97, /* 0x 4a0 */ 216, 37,255, 15, 0, 0,131,248, 3,119, 17,139, 85,208,107, 69, /* 0x 4a0 */
195,116, 6,199, 1,205,128, 97,195,133,201,116, 13,139, 69,216, /* 0x 4b0 */ 204, 52,131,122, 4, 0,141, 76, 3, 12,117, 32,139, 1, 61,205, /* 0x 4b0 */
49,210,131,224,254,232,199,253,255,255,137,251,137,241,139, 85, /* 0x 4c0 */ 128, 97,195,116, 6,199, 1,205,128, 97,195,133,201,116, 13,139, /* 0x 4c0 */
196,106,125, 88,205,128,133,192,116, 10,106,127, 91,106, 1, 88, /* 0x 4d0 */ 69,216, 49,210,131,224,254,232,181,253,255,255,137,251,137,241, /* 0x 4d0 */
205,128,235,254,139, 85,188,141, 4, 22,141, 28, 7, 59, 93,192, /* 0x 4e0 */ 139, 85,196,106,125, 88,205,128,133,192,116, 10,106,127, 91,106, /* 0x 4e0 */
115, 30,106, 0,106,255,106, 50,255,117,196, 41, 93,192,255,117, /* 0x 4f0 */ 1, 88,205,128,235,254,139, 85,188,141, 4, 22,141, 28, 7, 59, /* 0x 4f0 */
192, 83,232,113,252,255,255,131,196, 24, 57,195,116, 27,235,202, /* 0x 500 */ 93,192,115, 30,106, 0,106,255,106, 50,255,117,196, 41, 93,192, /* 0x 500 */
131,125,220, 0,116, 19,141, 78, 3,129,225,255, 15, 0, 0,131, /* 0x 510 */ 255,117,192, 83,232, 95,252,255,255,131,196, 24, 57,195,116, 27, /* 0x 510 */
249, 3,119, 5,106, 91, 88,205,128,139, 77,224,255, 69,200, 15, /* 0x 520 */ 235,202,131,125,220, 0,116, 19,141, 78, 3,129,225,255, 15, 0, /* 0x 520 */
183, 65, 44,131, 69,208, 32, 57, 69,200, 15,140, 41,254,255,255, /* 0x 530 */ 0,131,249, 3,119, 5,106, 91, 88,205,128,139, 77,224,255, 69, /* 0x 530 */
131,125,220, 0,117, 14,139, 93,228,106, 6, 88,205,128,133,192, /* 0x 540 */ 200, 15,183, 65, 44,131, 69,208, 32, 57, 69,200, 15,140, 35,254, /* 0x 540 */
116, 20,235,134,139, 69,224,102,131,120, 16, 3,116, 8,139, 93, /* 0x 550 */ 255,255,131,125,220, 0,116, 18,139, 93,224,102,131,123, 16, 3, /* 0x 550 */
240,106, 45, 88,205,128,131,125, 16, 0,116, 8,139, 77,204,139, /* 0x 560 */ 116, 8,139, 93,240,106, 45, 88,205,128,131,125, 16, 0,116, 8, /* 0x 560 */
85, 16,137, 10,139, 93,224,139, 91, 24, 1, 93,204,139, 69,204, /* 0x 570 */ 139, 85,204,139, 69, 16,137, 16,139, 77,224,139, 73, 24, 1, 77, /* 0x 570 */
141,101,244, 91, 94, 95,201,195, 85,137,229, 87, 86, 83,131,236, /* 0x 580 */ 204,139, 69,204,141,101,244, 91, 94, 95,201,195, 85,137,229, 87, /* 0x 580 */
28,139,125, 28,106, 0,139, 69, 16,141, 87, 52,139,117, 8,137, /* 0x 590 */ 86, 83,131,236, 32,139,125, 28,106, 0,139,117, 16,139, 69, 8, /* 0x 590 */
69,236,131,192, 2,255,117,236,137, 85,228,139, 93, 32,137, 69, /* 0x 5a0 */ 141, 87, 52,141, 78, 2,139, 93, 32,137, 69,236,137, 85,228,141, /* 0x 5a0 */
232,141, 85, 24,141, 69, 32,232,245,251,255,255,139, 69, 12, 15, /* 0x 5b0 */ 69, 32,141, 85, 24, 86,137, 77,232,232,243,251,255,255,139, 69, /* 0x 5b0 */
183, 79, 44,186, 5, 0, 0, 0,137, 69, 32,137,240, 41, 93, 36, /* 0x 5c0 */ 12,186, 5, 0, 0, 0, 15,183, 79, 44,137, 69, 32,139, 69,236, /* 0x 5c0 */
232,188,252,255,255, 15,183, 79, 42,186, 4, 0, 0, 0,137,240, /* 0x 5d0 */ 41, 93, 36,232,185,252,255,255, 15,183, 79, 42,139, 69,236,186, /* 0x 5d0 */
232,172,252,255,255,139, 93,228,139, 77, 40,186, 3, 0, 0, 0, /* 0x 5e0 */ 4, 0, 0, 0,232,168,252,255,255,139, 93,228,139, 77, 40,186, /* 0x 5e0 */
3, 75, 8,137,240,131,193, 52,232,148,252,255,255,141, 69,240, /* 0x 5f0 */ 3, 0, 0, 0, 3, 75, 8,139, 69,236,131,193, 52,232,143,252, /* 0x 5f0 */
255,117,232,137,250, 80,141, 69, 32, 86, 80,139, 69,236,232,164, /* 0x 600 */ 255,255,141, 69,240,255,117,232,137,250, 80,255,117,236,141, 69, /* 0x 600 */
252,255,255,186, 9, 0, 0, 0,137,193,137,195,137,240,232,110, /* 0x 610 */ 32, 80,137,240,232,164,252,255,255,186, 9, 0, 0, 0,137,193, /* 0x 610 */
252,255,255,102,139, 79, 44,131,196, 24, 49,210,102,133,201,116, /* 0x 620 */ 137, 69,224,139, 69,236,232,102,252,255,255,102,139, 79, 44,131, /* 0x 620 */
96,139, 69,228,131, 56, 3,117, 76,139, 93,240, 49,201, 3, 88, /* 0x 630 */ 196, 24, 49,210,102,133,201,116,126,139, 93,228,131, 59, 3,117, /* 0x 630 */
8,137,202,106, 5, 88,205,128,133,192,137,198,120, 21,186, 0, /* 0x 640 */ 106,139, 69,228, 49,201,139, 93,240,137,202, 3, 88, 8,106, 5, /* 0x 640 */
2, 0, 0,137,195,137,249,106, 3, 88,205,128, 61, 0, 2, 0, /* 0x 650 */ 88,205,128,133,192,137,198,120, 21,186, 0, 2, 0, 0,137,195, /* 0x 650 */
0,116, 10,106,127, 91,106, 1, 88,205,128,235,254,106, 0,137, /* 0x 660 */ 137,249,106, 3, 88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, /* 0x 660 */
250,106, 0,137,240,106, 0,106, 0,232, 57,252,255,255,131,196, /* 0x 670 */ 91,106, 1, 88,205,128,235,254,141, 69,240,137,250,106, 0,137, /* 0x 670 */
16,137,195,235, 12, 66, 15,183,193,131, 69,228, 32, 57,194,124, /* 0x 680 */ 243, 80,137,240,255,117,236,106, 0,232, 47,252,255,255,139, 77, /* 0x 680 */
160,141,101,244,137,216, 91, 94, 95,201,195 /* 0x 690 */ 240,137, 69,224,139, 69,236,186, 7, 0, 0, 0,232,240,251,255, /* 0x 690 */
255,131,196, 16,106, 6, 88,205,128,235, 12, 66, 15,183,193,131, /* 0x 6a0 */
69,228, 32, 57,194,124,130,139, 69,224,141,101,244, 91, 94, 95, /* 0x 6b0 */
201,195 /* 0x 6c0 */
}; };
+675
View File
@@ -0,0 +1,675 @@
/* mipsel.r3000-linux.elf-entry.h
created from mipsel.r3000-linux.elf-entry.bin, 10221 (0x27ed) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2007 Laszlo Molnar
Copyright (C) 2000-2007 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>
*/
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_SIZE 10221
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_ADLER32 0x9a8b8343
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_CRC32 0xc53813db
unsigned char stub_mipsel_r3000_linux_elf_entry[10221] = {
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
1, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
0, 30, 0, 0, 1, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */
21, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 30 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 17, 4, /* 0x 40 */
0, 0,247, 39, 0,128, 13, 60, 33, 72,160, 1, 1, 0, 11, 36, /* 0x 50 */
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, /* 0x 60 */
3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 70 */
1, 0, 41, 37, 1, 0, 15, 36, 5, 0,192, 17, 0, 0,142,144, /* 0x 80 */
1, 0,132, 36, 0, 0,206,160,241,255, 0, 16, 1, 0,198, 36, /* 0x 90 */
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, /* 0x a0 */
3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x b0 */
1, 0, 41, 37, 64,120, 15, 0, 33,120,238, 1,194,119, 9, 0, /* 0x c0 */
7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, /* 0x d0 */
4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x e0 */
13, 0,192, 21,254,255,238, 37, 33,120,238, 1,194,119, 9, 0, /* 0x f0 */
7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, /* 0x 100 */
4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 110 */
223,255, 0, 16, 33,120,238, 1, 13, 0,192, 21,253,255,239, 37, /* 0x 120 */
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, /* 0x 130 */
3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 140 */
1, 0, 41, 37, 33,120, 96, 1, 11, 0, 0, 16, 1, 0,204, 49, /* 0x 150 */
0, 0,142,144, 0,122, 15, 0, 33,120,238, 1, 1, 0,238, 37, /* 0x 160 */
255,255,192, 17, 1, 0,132, 36, 66,120, 15, 0, 1, 0,239, 37, /* 0x 170 */
33, 88,224, 1, 1, 0,204, 49,194,119, 9, 0, 7, 0,169, 21, /* 0x 180 */
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 190 */
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 35, 0,128, 21, /* 0x 1a0 */
254,255,204, 37, 12, 0,192, 17, 1, 0, 12, 36,194,119, 9, 0, /* 0x 1b0 */
7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, /* 0x 1c0 */
4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 1d0 */
22, 0, 0, 16, 33, 96,192, 1,194,119, 9, 0, 7, 0,169, 21, /* 0x 1e0 */
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 1f0 */
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 64, 96, 12, 0, /* 0x 200 */
33, 96,142, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 210 */
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 220 */
64, 72, 9, 0, 1, 0, 41, 37,235,255,192, 17, 1, 5,238, 45, /* 0x 230 */
5, 0,140, 37, 35, 96,142, 1, 35,120,207, 0, 0, 0,238,145, /* 0x 240 */
255,255,140, 37, 1, 0,239, 37, 1, 0,198, 36,251,255,128, 21, /* 0x 250 */
255,255,206,160,127,255, 0, 16,194,119, 9, 0, 0,128, 13, 60, /* 0x 260 */
33, 72,160, 1, 1, 0, 11, 36,194,119, 9, 0, 7, 0,169, 21, /* 0x 270 */
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 280 */
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 1, 0, 15, 36, /* 0x 290 */
5, 0,192, 17, 0, 0,142,144, 1, 0,132, 36, 0, 0,206,160, /* 0x 2a0 */
241,255, 0, 16, 1, 0,198, 36,194,119, 9, 0, 7, 0,169, 21, /* 0x 2b0 */
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 2c0 */
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 64,120, 15, 0, /* 0x 2d0 */
33,120,238, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 2e0 */
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 2f0 */
64, 72, 9, 0, 1, 0, 41, 37, 13, 0,192, 21,254,255,238, 37, /* 0x 300 */
33,120,207, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 310 */
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 320 */
64, 72, 9, 0, 1, 0, 41, 37,223,255, 0, 16, 33,120,238, 1, /* 0x 330 */
13, 0,192, 21,253,255,239, 37,194,119, 9, 0, 7, 0,169, 21, /* 0x 340 */
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 350 */
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 33,120, 96, 1, /* 0x 360 */
11, 0, 0, 16, 1, 0,204, 49, 0, 0,142,144, 0,122, 15, 0, /* 0x 370 */
33,120,238, 1, 1, 0,238, 37,255,255,192, 17, 1, 0,132, 36, /* 0x 380 */
66,120, 15, 0, 1, 0,239, 37, 33, 88,224, 1, 1, 0,204, 49, /* 0x 390 */
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, /* 0x 3a0 */
3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 3b0 */
1, 0, 41, 37, 64, 96, 12, 0, 33, 96,142, 1, 23, 0,128, 21, /* 0x 3c0 */
254,255,140, 37, 1, 0, 12, 36,194,119, 9, 0, 7, 0,169, 21, /* 0x 3d0 */
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 3e0 */
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 64, 96, 12, 0, /* 0x 3f0 */
33, 96,142, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 400 */
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 410 */
64, 72, 9, 0, 1, 0, 41, 37,235,255,192, 17, 1, 5,238, 45, /* 0x 420 */
4, 0,140, 37, 35, 96,142, 1, 35,120,207, 0, 0, 0,238,145, /* 0x 430 */
255,255,140, 37, 1, 0,239, 37, 1, 0,198, 36,251,255,128, 21, /* 0x 440 */
255,255,206,160,137,255, 0, 16,194,119, 9, 0, 0,128, 13, 60, /* 0x 450 */
33, 72,160, 1, 1, 0, 11, 36,194,119, 9, 0, 7, 0,169, 21, /* 0x 460 */
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 470 */
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 1, 0, 15, 36, /* 0x 480 */
5, 0,192, 17, 0, 0,142,144, 1, 0,132, 36, 0, 0,206,160, /* 0x 490 */
241,255, 0, 16, 1, 0,198, 36,194,119, 9, 0, 7, 0,169, 21, /* 0x 4a0 */
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 4b0 */
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 64,120, 15, 0, /* 0x 4c0 */
33,120,238, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 4d0 */
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 4e0 */
64, 72, 9, 0, 1, 0, 41, 37,235,255,192, 17, 2, 0, 14, 36, /* 0x 4f0 */
3, 0,238, 21,253,255,239, 37, 8, 0, 0, 16, 33,120, 96, 1, /* 0x 500 */
0, 0,142,144, 0,122, 15, 0, 33,120,238, 1, 1, 0,239, 37, /* 0x 510 */
255,255,224, 17, 1, 0,132, 36, 33, 88,224, 1,194,119, 9, 0, /* 0x 520 */
7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, /* 0x 530 */
4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 540 */
33, 96,192, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 550 */
0, 0,137,152, 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, /* 0x 560 */
64, 72, 9, 0, 1, 0, 41, 37, 64, 96, 12, 0, 33, 96,142, 1, /* 0x 570 */
23, 0,128, 21,254,255,140, 37, 1, 0, 12, 36,194,119, 9, 0, /* 0x 580 */
7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, /* 0x 590 */
4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 5a0 */
64, 96, 12, 0, 33, 96,142, 1,194,119, 9, 0, 7, 0,169, 21, /* 0x 5b0 */
64, 72, 9, 0, 0, 0,137,152, 3, 0,137,136, 4, 0,132, 36, /* 0x 5c0 */
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37,235,255,192, 17, /* 0x 5d0 */
1, 13,238, 45, 4, 0,140, 37, 35, 96,142, 1, 35,120,207, 0, /* 0x 5e0 */
0, 0,238,145,255,255,140, 37, 1, 0,239, 37, 1, 0,198, 36, /* 0x 5f0 */
251,255,128, 21,255,255,206,160,152,255, 0, 16,194,119, 9, 0, /* 0x 600 */
0, 0,153,144, 0,250, 1, 36, 1, 0,152,144, 7, 0, 34, 51, /* 0x 610 */
194,200, 25, 0, 4, 8, 33, 3, 96,241, 33, 36, 33,232,161, 3, /* 0x 620 */
40, 0,161,175, 32, 0,170, 39, 44, 0,191,175, 0, 0,233,140, /* 0x 630 */
36, 0,166,175, 33, 64,192, 0, 28, 0,167, 39,254,255,166, 36, /* 0x 640 */
2, 0,133, 36, 48, 0,164, 39, 2, 0,130,160, 15, 0, 1, 51, /* 0x 650 */
0, 0,129,160, 2,193, 24, 0, 12, 0, 17, 4, 1, 0,152,160, /* 0x 660 */
33,192, 64, 0, 36, 0,164,143, 32, 0,165,143, 3, 0, 6, 36, /* 0x 670 */
51, 16, 2, 36, 12, 0, 0, 0, 33, 16, 0, 3, 44, 0,191,143, /* 0x 680 */
40, 0,161,143, 8, 0,224, 3, 35,232,161, 3,200,255,189, 39, /* 0x 690 */
52, 0,183,175, 48, 0,182,175, 44, 0,181,175, 40, 0,180,175, /* 0x 6a0 */
36, 0,179,175, 32, 0,178,175, 28, 0,177,175, 24, 0,176,175, /* 0x 6b0 */
33,168,160, 0, 12, 0,167,175, 33,152, 0, 1, 16, 0,169,175, /* 0x 6c0 */
20, 0,170,175, 4, 0,144, 36, 2, 0,130,144, 1, 0, 3, 36, /* 0x 6d0 */
4, 16, 67, 0,255,255, 66, 36, 8, 0,162,175, 1, 0,130,144, /* 0x 6e0 */
0, 0, 0, 0, 4, 16, 67, 0,255,255, 66, 36, 4, 0,162,175, /* 0x 6f0 */
0, 0,150,144, 0, 0,224,172, 0, 0, 64,173, 1, 0,132,144, /* 0x 700 */
0, 0, 0, 0, 33, 32,196, 2, 0, 3, 2, 36, 4, 32,130, 0, /* 0x 710 */
54, 7,132, 36, 33, 16, 0, 2, 4, 0, 0, 16, 33, 88, 0, 0, /* 0x 720 */
0, 4, 3, 36,254,255, 67,164, 1, 0,107, 37,252,255,100, 21, /* 0x 730 */
2, 0, 66, 36, 33, 56,166, 2, 33,104,160, 2, 33,192, 0, 0, /* 0x 740 */
33, 32, 0, 0, 35, 16,245, 0,123, 2,130, 16, 0, 26, 24, 0, /* 0x 750 */
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,132, 36, /* 0x 760 */
5, 0, 2, 36,247,255,130, 20, 1, 0,173, 37, 33, 80, 0, 0, /* 0x 770 */
33,112, 0, 0, 33,144, 0, 0, 1, 0, 17, 36, 1, 0, 20, 36, /* 0x 780 */
1, 0, 23, 36, 0, 0,183,175, 87, 2, 0, 16,255,255, 15, 36, /* 0x 790 */
255,255, 70, 52, 43, 16,207, 0, 8, 0, 64, 20, 0, 0, 0, 0, /* 0x 7a0 */
101, 2,167, 17, 0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x 7b0 */
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 8, 0,163,143, /* 0x 7c0 */
0, 0, 0, 0, 36, 40, 67, 1, 0,201, 18, 0, 33, 16,185, 0, /* 0x 7d0 */
64, 16, 2, 0, 33, 88, 2, 2, 0, 0, 99,149,194, 18, 15, 0, /* 0x 7e0 */
24, 0, 67, 0, 18, 96, 0, 0, 43, 16, 12, 3,125, 0, 64, 16, /* 0x 7f0 */
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x 800 */
0, 0, 98,165, 4, 0,163,143, 0, 0, 0, 0, 36, 16, 67, 1, /* 0x 810 */
4, 24,194, 2, 8, 0, 2, 36, 35, 16, 86, 0, 7, 16, 78, 0, /* 0x 820 */
33, 16, 98, 0, 64, 26, 2, 0,192, 18, 2, 0, 35, 16, 67, 0, /* 0x 830 */
33, 16, 2, 2,108, 14, 70, 36, 7, 0, 66, 42, 3, 0, 64, 16, /* 0x 840 */
33,120,128, 1, 85, 0, 0, 16, 1, 0, 5, 36, 35, 16, 81, 1, /* 0x 850 */
33, 16, 98, 2, 0, 0, 89,144, 1, 0, 5, 36,255, 0, 2, 60, /* 0x 860 */
255,255, 66, 52, 43, 16, 79, 0, 8, 0, 64, 20, 0, 0, 0, 0, /* 0x 870 */
49, 2,167, 17, 0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x 880 */
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 64,200, 25, 0, /* 0x 890 */
0, 1, 44, 51, 64, 16, 12, 0, 33, 16,194, 0, 64,112, 5, 0, /* 0x 8a0 */
33, 88, 78, 0, 0, 2, 99,149,194, 18, 15, 0, 24, 0, 67, 0, /* 0x 8b0 */
18, 32, 0, 0, 43, 16, 4, 3, 9, 0, 64, 16, 0, 8, 2, 36, /* 0x 8c0 */
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 0, 2, 98,165, /* 0x 8d0 */
41, 0,128, 21, 33, 40,192, 1, 9, 0, 0, 16, 33,120,128, 0, /* 0x 8e0 */
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x 8f0 */
0, 2, 98,165, 1, 0,162, 36, 40, 0,128, 17, 33, 40,162, 0, /* 0x 900 */
0, 1,162, 40, 37, 0, 64, 16,255, 0, 2, 60,213,255, 0, 16, /* 0x 910 */
255,255, 66, 52,255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, /* 0x 920 */
64, 96, 5, 0, 4, 2,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x 930 */
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x 940 */
64, 96, 5, 0, 33, 88,204, 0, 0, 0, 99,149,194, 18, 15, 0, /* 0x 950 */
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, /* 0x 960 */
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x 970 */
0, 0, 98,165, 33, 40,128, 1, 8, 0, 0, 16, 33,120,128, 0, /* 0x 980 */
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x 990 */
0, 0, 98,165, 1, 0,162, 36, 33, 40,162, 0, 0, 1,162, 40, /* 0x 9a0 */
220,255, 64, 20,255, 0, 2, 60,255, 0,174, 48, 33, 16,106, 2, /* 0x 9b0 */
0, 0, 78,160, 4, 0, 66, 42, 3, 0, 64, 16, 1, 0, 67, 37, /* 0x 9c0 */
200, 1, 0, 16, 33,144, 0, 0, 10, 0, 66, 42, 3, 0, 64, 16, /* 0x 9d0 */
0, 0, 0, 0,195, 1, 0, 16,253,255, 82, 38,193, 1, 0, 16, /* 0x 9e0 */
250,255, 82, 38, 35, 32,236, 1, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x 9f0 */
0, 0, 98,165, 43, 16,196, 0, 8, 0, 64, 20, 35,192, 12, 3, /* 0x a00 */
205, 1,167, 17, 0, 34, 4, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x a10 */
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 64, 16, 18, 0, /* 0x a20 */
33,112, 2, 2,128, 1,195,149,194, 18, 4, 0, 24, 0, 67, 0, /* 0x a30 */
18, 96, 0, 0, 43, 16, 12, 3, 15, 0, 64, 16, 0, 8, 2, 36, /* 0x a40 */
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0,128, 1,194,165, /* 0x a50 */
7, 0, 66, 42, 2, 0, 64, 20, 33,144, 0, 0, 3, 0, 18, 36, /* 0x a60 */
100, 6, 14, 38, 0, 0,183,175, 33,184,128, 2, 33,160, 32, 2, /* 0x a70 */
144, 0, 0, 16, 33, 88,128, 1, 35, 88,140, 0, 66, 17, 3, 0, /* 0x a80 */
35, 16, 98, 0,128, 1,194,165, 43, 16,203, 0, 8, 0, 64, 20, /* 0x a90 */
35,192, 12, 3,168, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, /* 0x aa0 */
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x ab0 */
152, 1,195,149,194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x ac0 */
43, 16, 4, 3, 50, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x ad0 */
67, 17, 2, 0, 33, 16, 98, 0,152, 1,194,165, 0, 1, 2, 60, /* 0x ae0 */
43, 16,130, 0, 8, 0, 64, 16, 33, 88,128, 0,146, 1,167, 17, /* 0x af0 */
0, 90, 4, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x b00 */
37,192, 98, 0, 1, 0,173, 37, 64, 16, 25, 0, 33, 24, 2, 2, /* 0x b10 */
64, 16, 5, 0, 33, 32, 98, 0,224, 1,131,148,194, 18, 11, 0, /* 0x b20 */
24, 0, 67, 0, 18, 96, 0, 0, 43, 16, 12, 3, 18, 0, 64, 16, /* 0x b30 */
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x b40 */
125, 1, 64, 17,224, 1,130,164, 7, 0, 66, 42, 2, 0, 64, 20, /* 0x b50 */
9, 0, 18, 36, 11, 0, 18, 36, 35, 16, 81, 1, 33, 16, 98, 2, /* 0x b60 */
0, 0, 78,144, 33, 16,106, 2, 0, 0, 78,160, 1, 0, 67, 37, /* 0x b70 */
92, 1, 0, 16, 33,120,128, 1, 35, 88,108, 1, 35,192, 12, 3, /* 0x b80 */
66, 17, 3, 0, 35, 16, 98, 0, 69, 0, 0, 16,224, 1,130,164, /* 0x b90 */
35, 88,100, 1, 66, 17, 3, 0, 35, 16, 98, 0,152, 1,194,165, /* 0x ba0 */
43, 16,203, 0, 8, 0, 64, 20, 35,192, 4, 3, 98, 1,167, 17, /* 0x bb0 */
0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x bc0 */
37,192, 98, 0, 1, 0,173, 37,176, 1,195,149,194, 18, 11, 0, /* 0x bd0 */
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 7, 0, 64, 16, /* 0x be0 */
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x bf0 */
176, 1,194,165, 28, 0, 0, 16, 33, 16,128, 2, 35, 88,100, 1, /* 0x c00 */
66, 17, 3, 0, 35, 16, 98, 0,176, 1,194,165, 43, 16,203, 0, /* 0x c10 */
8, 0, 64, 20, 35,192, 4, 3, 71, 1,167, 17, 0, 90, 11, 0, /* 0x c20 */
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x c30 */
1, 0,173, 37,200, 1,195,149,194, 18, 11, 0, 24, 0, 67, 0, /* 0x c40 */
18, 32, 0, 0, 43, 16, 4, 3, 11, 0, 64, 16, 0, 8, 2, 36, /* 0x c50 */
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0,200, 1,194,165, /* 0x c60 */
33, 16,224, 2, 33,184,128, 2, 33,160, 32, 2, 33,136, 64, 0, /* 0x c70 */
11, 0, 0, 16, 33, 88,128, 0, 35, 88,100, 1, 35,192, 4, 3, /* 0x c80 */
66, 17, 3, 0, 35, 16, 98, 0,200, 1,194,165, 0, 0,162,143, /* 0x c90 */
0, 0,183,175, 33,184,128, 2, 33,160, 32, 2, 33,136, 64, 0, /* 0x ca0 */
7, 0, 66, 42, 2, 0, 64, 20, 8, 0, 18, 36, 11, 0, 18, 36, /* 0x cb0 */
104, 10, 14, 38,255, 0, 2, 60,255,255, 76, 52, 43, 16,139, 1, /* 0x cc0 */
8, 0, 64, 20, 0, 0, 0, 0, 27, 1,167, 17, 0, 90, 11, 0, /* 0x cd0 */
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x ce0 */
1, 0,173, 37, 0, 0,195,149,194, 18, 11, 0, 24, 0, 67, 0, /* 0x cf0 */
18, 32, 0, 0, 43, 16, 4, 3, 12, 0, 64, 16, 0, 8, 2, 36, /* 0x d00 */
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 0, 0,194,165, /* 0x d10 */
0, 17, 5, 0, 33, 16,194, 1, 4, 0, 69, 36, 33,120,128, 0, /* 0x d20 */
3, 0, 8, 36, 41, 0, 0, 16, 33, 48, 0, 0, 35, 88,100, 1, /* 0x d30 */
66, 17, 3, 0, 35, 16, 98, 0, 0, 0,194,165, 43, 16,139, 1, /* 0x d40 */
8, 0, 64, 20, 35,192, 4, 3,251, 0,167, 17, 0, 90, 11, 0, /* 0x d50 */
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x d60 */
1, 0,173, 37, 2, 0,195,149,194, 18, 11, 0, 24, 0, 67, 0, /* 0x d70 */
18, 32, 0, 0, 43, 16, 4, 3, 12, 0, 64, 16, 0, 8, 2, 36, /* 0x d80 */
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 2, 0,194,165, /* 0x d90 */
0, 17, 5, 0, 33, 16,194, 1, 4, 1, 69, 36, 33,120,128, 0, /* 0x da0 */
3, 0, 8, 36, 9, 0, 0, 16, 8, 0, 6, 36, 35,120,100, 1, /* 0x db0 */
35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, 2, 0,194,165, /* 0x dc0 */
4, 2,197, 37, 8, 0, 8, 36, 16, 0, 6, 36, 33,112, 0, 1, /* 0x dd0 */
1, 0, 25, 36,255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, /* 0x de0 */
9, 0, 64, 20, 64, 96, 25, 0,211, 0,167, 17, 0,122, 15, 0, /* 0x df0 */
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x e00 */
1, 0,173, 37, 64, 96, 25, 0, 33, 88,172, 0, 0, 0, 99,149, /* 0x e10 */
194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x e20 */
8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x e30 */
33, 16, 98, 0, 0, 0, 98,165, 33,200,128, 1, 8, 0, 0, 16, /* 0x e40 */
33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, /* 0x e50 */
35, 16, 98, 0, 0, 0, 98,165, 1, 0, 34, 39, 33,200, 34, 3, /* 0x e60 */
255,255,206, 37,220,255,192, 21,255, 0, 2, 60, 1, 0, 2, 36, /* 0x e70 */
4, 16, 2, 1, 35, 16, 34, 3, 33, 72, 70, 0, 4, 0, 66, 42, /* 0x e80 */
134, 0, 64, 16, 4, 0, 34, 41, 2, 0, 64, 20, 33, 24, 32, 1, /* 0x e90 */
3, 0, 3, 36,192, 17, 3, 0, 33, 16, 2, 2, 96, 3, 70, 36, /* 0x ea0 */
1, 0, 14, 36, 6, 0, 25, 36,255, 0, 2, 60,255,255, 66, 52, /* 0x eb0 */
43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 14, 0,158, 0,167, 17, /* 0x ec0 */
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x ed0 */
37,192, 98, 0, 1, 0,173, 37, 64, 96, 14, 0, 33, 88,204, 0, /* 0x ee0 */
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x ef0 */
43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x f00 */
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 33,112,128, 1, /* 0x f10 */
8, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x f20 */
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 1, 0,194, 37, /* 0x f30 */
33,112,194, 1,255,255, 57, 39,220,255, 32, 23,255, 0, 2, 60, /* 0x f40 */
192,255,195, 37, 4, 0, 98, 40, 80, 0, 64, 20, 33,112, 96, 0, /* 0x f50 */
67, 32, 3, 0, 1, 0, 98, 48, 2, 0, 75, 52, 14, 0, 98, 40, /* 0x f60 */
8, 0, 64, 16,255,255,153, 36, 4,112, 43, 3, 64, 16, 14, 0, /* 0x f70 */
33, 32, 2, 2, 64, 16, 3, 0, 35, 16,130, 0, 26, 0, 0, 16, /* 0x f80 */
94, 5, 72, 36,251,255,132, 36,255, 0, 2, 60,255,255, 66, 52, /* 0x f90 */
43, 16, 79, 0, 8, 0, 64, 20, 0, 0, 0, 0,102, 0,167, 17, /* 0x fa0 */
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x fb0 */
37,192, 98, 0, 1, 0,173, 37, 66,120, 15, 0, 43, 16, 15, 3, /* 0x fc0 */
3, 0, 64, 20, 64, 88, 11, 0, 35,192, 15, 3, 1, 0,107, 53, /* 0x fd0 */
255,255,132, 36,237,255,128, 20,255, 0, 2, 60, 68, 6, 8, 38, /* 0x fe0 */
0,113, 11, 0, 4, 0, 25, 36, 1, 0, 6, 36, 1, 0, 5, 36, /* 0x ff0 */
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, /* 0x1000 */
64, 96, 5, 0, 76, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x1010 */
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x1020 */
64, 96, 5, 0, 33, 88, 12, 1, 0, 0, 99,149,194, 18, 15, 0, /* 0x1030 */
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, /* 0x1040 */
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x1050 */
0, 0, 98,165, 33, 40,128, 1, 9, 0, 0, 16, 33,120,128, 0, /* 0x1060 */
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1070 */
0, 0, 98,165, 1, 0,162, 36, 33, 40,162, 0, 37,112,198, 1, /* 0x1080 */
255,255, 57, 39,218,255, 32, 23, 64, 48, 6, 0, 1, 0,209, 37, /* 0x1090 */
26, 0, 32, 18,255, 0, 2, 60, 7, 0, 82, 38, 43, 16, 81, 1, /* 0x10a0 */
38, 0, 64, 20, 1, 0, 2, 36, 35, 16, 81, 1, 33, 88, 98, 2, /* 0x10b0 */
33, 32,106, 2, 33, 24, 64, 1, 0, 0,110,145, 1, 0, 99, 36, /* 0x10c0 */
33, 16, 73, 1, 2, 0, 66, 36, 6, 0, 98, 16, 0, 0,142,160, /* 0x10d0 */
1, 0,107, 37, 16, 0,162,143, 0, 0, 0, 0,246,255, 98, 20, /* 0x10e0 */
1, 0,132, 36, 33, 80, 96, 0, 16, 0,163,143, 0, 0, 0, 0, /* 0x10f0 */
43, 16, 67, 1,166,253, 64, 20,255, 0, 2, 60,255,255, 66, 52, /* 0x1100 */
43, 16, 79, 0, 4, 0, 64, 20, 35, 40,181, 1, 10, 0,167, 17, /* 0x1110 */
1, 0,173, 37, 35, 40,181, 1, 12, 0,162,143, 0, 0, 0, 0, /* 0x1120 */
0, 0, 69,172, 20, 0,163,143, 0, 0, 0, 0, 0, 0,106,172, /* 0x1130 */
2, 0, 0, 16, 33, 16, 0, 0, 1, 0, 2, 36, 52, 0,183,143, /* 0x1140 */
48, 0,182,143, 44, 0,181,143, 40, 0,180,143, 36, 0,179,143, /* 0x1150 */
32, 0,178,143, 28, 0,177,143, 24, 0,176,143, 8, 0,224, 3, /* 0x1160 */
56, 0,189, 39,200,255,189, 39, 52, 0,183,175, 48, 0,182,175, /* 0x1170 */
44, 0,181,175, 40, 0,180,175, 36, 0,179,175, 32, 0,178,175, /* 0x1180 */
28, 0,177,175, 24, 0,176,175, 33,168,160, 0, 12, 0,167,175, /* 0x1190 */
33,152, 0, 1, 16, 0,169,175, 20, 0,170,175, 4, 0,144, 36, /* 0x11a0 */
2, 0,130,144, 1, 0, 3, 36, 4, 16, 67, 0,255,255, 66, 36, /* 0x11b0 */
8, 0,162,175, 1, 0,130,144, 0, 0, 0, 0, 4, 16, 67, 0, /* 0x11c0 */
255,255, 66, 36, 4, 0,162,175, 0, 0,150,144, 0, 0,224,172, /* 0x11d0 */
0, 0, 64,173, 1, 0,132,144, 0, 0, 0, 0, 33, 32,196, 2, /* 0x11e0 */
0, 3, 2, 36, 4, 32,130, 0, 54, 7,132, 36, 33, 16, 0, 2, /* 0x11f0 */
4, 0, 0, 16, 33, 88, 0, 0, 0, 4, 3, 36,254,255, 67,164, /* 0x1200 */
1, 0,107, 37,252,255,100, 21, 2, 0, 66, 36, 33, 56,166, 2, /* 0x1210 */
33,104,160, 2, 33,192, 0, 0, 33, 32, 0, 0, 35, 16,245, 0, /* 0x1220 */
123, 2,130, 16, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1230 */
37,192, 98, 0, 1, 0,132, 36, 5, 0, 2, 36,247,255,130, 20, /* 0x1240 */
1, 0,173, 37, 33, 80, 0, 0, 33,112, 0, 0, 33,144, 0, 0, /* 0x1250 */
1, 0, 17, 36, 1, 0, 20, 36, 1, 0, 23, 36, 0, 0,183,175, /* 0x1260 */
87, 2, 0, 16,255,255, 15, 36,255,255, 70, 52, 43, 16,207, 0, /* 0x1270 */
8, 0, 64, 20, 0, 0, 0, 0,101, 2,167, 17, 0,122, 15, 0, /* 0x1280 */
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x1290 */
1, 0,173, 37, 8, 0,163,143, 0, 0, 0, 0, 36, 40, 67, 1, /* 0x12a0 */
0,201, 18, 0, 33, 16,185, 0, 64, 16, 2, 0, 33, 88, 2, 2, /* 0x12b0 */
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 96, 0, 0, /* 0x12c0 */
43, 16, 12, 3,125, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x12d0 */
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 4, 0,163,143, /* 0x12e0 */
0, 0, 0, 0, 36, 16, 67, 1, 4, 24,194, 2, 8, 0, 2, 36, /* 0x12f0 */
35, 16, 86, 0, 7, 16, 78, 0, 33, 16, 98, 0, 64, 26, 2, 0, /* 0x1300 */
192, 18, 2, 0, 35, 16, 67, 0, 33, 16, 2, 2,108, 14, 70, 36, /* 0x1310 */
7, 0, 66, 42, 3, 0, 64, 16, 33,120,128, 1, 85, 0, 0, 16, /* 0x1320 */
1, 0, 5, 36, 35, 16, 81, 1, 33, 16, 98, 2, 0, 0, 89,144, /* 0x1330 */
1, 0, 5, 36,255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, /* 0x1340 */
8, 0, 64, 20, 0, 0, 0, 0, 49, 2,167, 17, 0,122, 15, 0, /* 0x1350 */
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x1360 */
1, 0,173, 37, 64,200, 25, 0, 0, 1, 44, 51, 64, 16, 12, 0, /* 0x1370 */
33, 16,194, 0, 64,112, 5, 0, 33, 88, 78, 0, 0, 2, 99,149, /* 0x1380 */
194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x1390 */
9, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x13a0 */
33, 16, 98, 0, 0, 2, 98,165, 41, 0,128, 21, 33, 40,192, 1, /* 0x13b0 */
9, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x13c0 */
66, 17, 3, 0, 35, 16, 98, 0, 0, 2, 98,165, 1, 0,162, 36, /* 0x13d0 */
40, 0,128, 17, 33, 40,162, 0, 0, 1,162, 40, 37, 0, 64, 16, /* 0x13e0 */
255, 0, 2, 60,213,255, 0, 16,255,255, 66, 52,255,255, 66, 52, /* 0x13f0 */
43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 5, 0, 4, 2,167, 17, /* 0x1400 */
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1410 */
37,192, 98, 0, 1, 0,173, 37, 64, 96, 5, 0, 33, 88,204, 0, /* 0x1420 */
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x1430 */
43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x1440 */
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 33, 40,128, 1, /* 0x1450 */
8, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x1460 */
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 1, 0,162, 36, /* 0x1470 */
33, 40,162, 0, 0, 1,162, 40,220,255, 64, 20,255, 0, 2, 60, /* 0x1480 */
255, 0,174, 48, 33, 16,106, 2, 0, 0, 78,160, 4, 0, 66, 42, /* 0x1490 */
3, 0, 64, 16, 1, 0, 67, 37,200, 1, 0, 16, 33,144, 0, 0, /* 0x14a0 */
10, 0, 66, 42, 3, 0, 64, 16, 0, 0, 0, 0,195, 1, 0, 16, /* 0x14b0 */
253,255, 82, 38,193, 1, 0, 16,250,255, 82, 38, 35, 32,236, 1, /* 0x14c0 */
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 43, 16,196, 0, /* 0x14d0 */
8, 0, 64, 20, 35,192, 12, 3,205, 1,167, 17, 0, 34, 4, 0, /* 0x14e0 */
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x14f0 */
1, 0,173, 37, 64, 16, 18, 0, 33,112, 2, 2,128, 1,195,149, /* 0x1500 */
194, 18, 4, 0, 24, 0, 67, 0, 18, 96, 0, 0, 43, 16, 12, 3, /* 0x1510 */
15, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x1520 */
33, 16, 98, 0,128, 1,194,165, 7, 0, 66, 42, 2, 0, 64, 20, /* 0x1530 */
33,144, 0, 0, 3, 0, 18, 36,100, 6, 14, 38, 0, 0,183,175, /* 0x1540 */
33,184,128, 2, 33,160, 32, 2,144, 0, 0, 16, 33, 88,128, 1, /* 0x1550 */
35, 88,140, 0, 66, 17, 3, 0, 35, 16, 98, 0,128, 1,194,165, /* 0x1560 */
43, 16,203, 0, 8, 0, 64, 20, 35,192, 12, 3,168, 1,167, 17, /* 0x1570 */
0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1580 */
37,192, 98, 0, 1, 0,173, 37,152, 1,195,149,194, 18, 11, 0, /* 0x1590 */
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 50, 0, 64, 16, /* 0x15a0 */
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x15b0 */
152, 1,194,165, 0, 1, 2, 60, 43, 16,130, 0, 8, 0, 64, 16, /* 0x15c0 */
33, 88,128, 0,146, 1,167, 17, 0, 90, 4, 0, 0, 26, 24, 0, /* 0x15d0 */
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x15e0 */
64, 16, 25, 0, 33, 24, 2, 2, 64, 16, 5, 0, 33, 32, 98, 0, /* 0x15f0 */
224, 1,131,148,194, 18, 11, 0, 24, 0, 67, 0, 18, 96, 0, 0, /* 0x1600 */
43, 16, 12, 3, 18, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x1610 */
67, 17, 2, 0, 33, 16, 98, 0,125, 1, 64, 17,224, 1,130,164, /* 0x1620 */
7, 0, 66, 42, 2, 0, 64, 20, 9, 0, 18, 36, 11, 0, 18, 36, /* 0x1630 */
35, 16, 81, 1, 33, 16, 98, 2, 0, 0, 78,144, 33, 16,106, 2, /* 0x1640 */
0, 0, 78,160, 1, 0, 67, 37, 92, 1, 0, 16, 33,120,128, 1, /* 0x1650 */
35, 88,108, 1, 35,192, 12, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1660 */
69, 0, 0, 16,224, 1,130,164, 35, 88,100, 1, 66, 17, 3, 0, /* 0x1670 */
35, 16, 98, 0,152, 1,194,165, 43, 16,203, 0, 8, 0, 64, 20, /* 0x1680 */
35,192, 4, 3, 98, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, /* 0x1690 */
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x16a0 */
176, 1,195,149,194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x16b0 */
43, 16, 4, 3, 7, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x16c0 */
67, 17, 2, 0, 33, 16, 98, 0,176, 1,194,165, 28, 0, 0, 16, /* 0x16d0 */
33, 16,128, 2, 35, 88,100, 1, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x16e0 */
176, 1,194,165, 43, 16,203, 0, 8, 0, 64, 20, 35,192, 4, 3, /* 0x16f0 */
71, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x1700 */
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37,200, 1,195,149, /* 0x1710 */
194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x1720 */
11, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x1730 */
33, 16, 98, 0,200, 1,194,165, 33, 16,224, 2, 33,184,128, 2, /* 0x1740 */
33,160, 32, 2, 33,136, 64, 0, 11, 0, 0, 16, 33, 88,128, 0, /* 0x1750 */
35, 88,100, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1760 */
200, 1,194,165, 0, 0,162,143, 0, 0,183,175, 33,184,128, 2, /* 0x1770 */
33,160, 32, 2, 33,136, 64, 0, 7, 0, 66, 42, 2, 0, 64, 20, /* 0x1780 */
8, 0, 18, 36, 11, 0, 18, 36,104, 10, 14, 38,255, 0, 2, 60, /* 0x1790 */
255,255, 76, 52, 43, 16,139, 1, 8, 0, 64, 20, 0, 0, 0, 0, /* 0x17a0 */
27, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x17b0 */
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 0, 0,195,149, /* 0x17c0 */
194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x17d0 */
12, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x17e0 */
33, 16, 98, 0, 0, 0,194,165, 0, 17, 5, 0, 33, 16,194, 1, /* 0x17f0 */
4, 0, 69, 36, 33,120,128, 0, 3, 0, 8, 36, 41, 0, 0, 16, /* 0x1800 */
33, 48, 0, 0, 35, 88,100, 1, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1810 */
0, 0,194,165, 43, 16,139, 1, 8, 0, 64, 20, 35,192, 4, 3, /* 0x1820 */
251, 0,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x1830 */
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 2, 0,195,149, /* 0x1840 */
194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x1850 */
12, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x1860 */
33, 16, 98, 0, 2, 0,194,165, 0, 17, 5, 0, 33, 16,194, 1, /* 0x1870 */
4, 1, 69, 36, 33,120,128, 0, 3, 0, 8, 36, 9, 0, 0, 16, /* 0x1880 */
8, 0, 6, 36, 35,120,100, 1, 35,192, 4, 3, 66, 17, 3, 0, /* 0x1890 */
35, 16, 98, 0, 2, 0,194,165, 4, 2,197, 37, 8, 0, 8, 36, /* 0x18a0 */
16, 0, 6, 36, 33,112, 0, 1, 1, 0, 25, 36,255, 0, 2, 60, /* 0x18b0 */
255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 25, 0, /* 0x18c0 */
211, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x18d0 */
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 64, 96, 25, 0, /* 0x18e0 */
33, 88,172, 0, 0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, /* 0x18f0 */
18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, /* 0x1900 */
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, /* 0x1910 */
33,200,128, 1, 8, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, /* 0x1920 */
35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, /* 0x1930 */
1, 0, 34, 39, 33,200, 34, 3,255,255,206, 37,220,255,192, 21, /* 0x1940 */
255, 0, 2, 60, 1, 0, 2, 36, 4, 16, 2, 1, 35, 16, 34, 3, /* 0x1950 */
33, 72, 70, 0, 4, 0, 66, 42,134, 0, 64, 16, 4, 0, 34, 41, /* 0x1960 */
2, 0, 64, 20, 33, 24, 32, 1, 3, 0, 3, 36,192, 17, 3, 0, /* 0x1970 */
33, 16, 2, 2, 96, 3, 70, 36, 1, 0, 14, 36, 6, 0, 25, 36, /* 0x1980 */
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, /* 0x1990 */
64, 96, 14, 0,158, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x19a0 */
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x19b0 */
64, 96, 14, 0, 33, 88,204, 0, 0, 0, 99,149,194, 18, 15, 0, /* 0x19c0 */
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, /* 0x19d0 */
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x19e0 */
0, 0, 98,165, 33,112,128, 1, 8, 0, 0, 16, 33,120,128, 0, /* 0x19f0 */
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1a00 */
0, 0, 98,165, 1, 0,194, 37, 33,112,194, 1,255,255, 57, 39, /* 0x1a10 */
220,255, 32, 23,255, 0, 2, 60,192,255,195, 37, 4, 0, 98, 40, /* 0x1a20 */
80, 0, 64, 20, 33,112, 96, 0, 67, 32, 3, 0, 1, 0, 98, 48, /* 0x1a30 */
2, 0, 75, 52, 14, 0, 98, 40, 8, 0, 64, 16,255,255,153, 36, /* 0x1a40 */
4,112, 43, 3, 64, 16, 14, 0, 33, 32, 2, 2, 64, 16, 3, 0, /* 0x1a50 */
35, 16,130, 0, 26, 0, 0, 16, 94, 5, 72, 36,251,255,132, 36, /* 0x1a60 */
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 8, 0, 64, 20, /* 0x1a70 */
0, 0, 0, 0,102, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x1a80 */
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x1a90 */
66,120, 15, 0, 43, 16, 15, 3, 3, 0, 64, 20, 64, 88, 11, 0, /* 0x1aa0 */
35,192, 15, 3, 1, 0,107, 53,255,255,132, 36,237,255,128, 20, /* 0x1ab0 */
255, 0, 2, 60, 68, 6, 8, 38, 0,113, 11, 0, 4, 0, 25, 36, /* 0x1ac0 */
1, 0, 6, 36, 1, 0, 5, 36,255, 0, 2, 60,255,255, 66, 52, /* 0x1ad0 */
43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 5, 0, 76, 0,167, 17, /* 0x1ae0 */
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1af0 */
37,192, 98, 0, 1, 0,173, 37, 64, 96, 5, 0, 33, 88, 12, 1, /* 0x1b00 */
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x1b10 */
43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x1b20 */
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 33, 40,128, 1, /* 0x1b30 */
9, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x1b40 */
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 1, 0,162, 36, /* 0x1b50 */
33, 40,162, 0, 37,112,198, 1,255,255, 57, 39,218,255, 32, 23, /* 0x1b60 */
64, 48, 6, 0, 1, 0,209, 37, 26, 0, 32, 18,255, 0, 2, 60, /* 0x1b70 */
7, 0, 82, 38, 43, 16, 81, 1, 38, 0, 64, 20, 1, 0, 2, 36, /* 0x1b80 */
35, 16, 81, 1, 33, 88, 98, 2, 33, 32,106, 2, 33, 24, 64, 1, /* 0x1b90 */
0, 0,110,145, 1, 0, 99, 36, 33, 16, 73, 1, 2, 0, 66, 36, /* 0x1ba0 */
6, 0, 98, 16, 0, 0,142,160, 1, 0,107, 37, 16, 0,162,143, /* 0x1bb0 */
0, 0, 0, 0,246,255, 98, 20, 1, 0,132, 36, 33, 80, 96, 0, /* 0x1bc0 */
16, 0,163,143, 0, 0, 0, 0, 43, 16, 67, 1,166,253, 64, 20, /* 0x1bd0 */
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 4, 0, 64, 20, /* 0x1be0 */
35, 40,181, 1, 10, 0,167, 17, 1, 0,173, 37, 35, 40,181, 1, /* 0x1bf0 */
12, 0,162,143, 0, 0, 0, 0, 0, 0, 69,172, 20, 0,163,143, /* 0x1c00 */
0, 0, 0, 0, 0, 0,106,172, 2, 0, 0, 16, 33, 16, 0, 0, /* 0x1c10 */
1, 0, 2, 36, 52, 0,183,143, 48, 0,182,143, 44, 0,181,143, /* 0x1c20 */
40, 0,180,143, 36, 0,179,143, 32, 0,178,143, 28, 0,177,143, /* 0x1c30 */
24, 0,176,143, 8, 0,224, 3, 56, 0,189, 39, 13, 0, 0, 0, /* 0x1c40 */
32, 40,164, 0, 0, 0,230,172, 0, 0,227,140, 35,192,133, 0, /* 0x1c50 */
33, 32, 96, 0, 35, 40,195, 0, 0, 0,229,172, 3, 0, 6, 36, /* 0x1c60 */
51, 16, 2, 36, 12, 0, 0, 0, 8, 0,224, 3, 33, 16, 0, 3, /* 0x1c70 */
30, 0, 6, 36,255,255, 17, 4, 33, 40,224, 3, 80, 82, 79, 84, /* 0x1c80 */
95, 69, 88, 69, 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, /* 0x1c90 */
32,102, 97,105,108,101,100, 46, 10, 0, 2, 0, 4, 36,164, 15, /* 0x1ca0 */
2, 36, 12, 0, 0, 0,127, 0, 4, 36,161, 15, 2, 36, 12, 0, /* 0x1cb0 */
0, 0,224,255,189, 39,224,255,228,142, 7, 0, 6, 36,228,255, /* 0x1cc0 */
229,142, 18, 8, 7, 36, 16, 0,160,175,250, 15, 2, 36, 12, 0, /* 0x1cd0 */
0, 0, 27, 0,224, 20, 33, 32, 64, 0,236,255,229,142,232,255, /* 0x1ce0 */
243,142,240,255,242,142,244,255,241,142, 13, 0,133, 16, 35, 64, /* 0x1cf0 */
133, 0, 35, 48,215, 2, 33, 48,213, 0, 33,184,232, 2, 0, 0, /* 0x1d00 */
168,140, 8, 0,132, 36, 4, 0,169,140,248,255,198, 36,248,255, /* 0x1d10 */
136,172, 8, 0,165, 36,249,255,192, 28,252,255,137,172, 33, 16, /* 0x1d20 */
128, 0, 0, 0,200,142, 33, 56,160, 3, 0, 0,168,175, 33, 48, /* 0x1d30 */
64, 0, 4, 0,197,142, 12, 0,196, 38, 8, 0,224, 2, 33,248, /* 0x1d40 */
192, 0,255,255, 0, 16, 0, 0, 0, 0,220,255,245,142,216,255, /* 0x1d50 */
17, 4, 33,176,224, 3,116,109,112, 47,109,105,112,115,101,108, /* 0x1d60 */
46,114, 51, 48, 48, 48, 45,108,105,110,117,120, 46,101,108,102, /* 0x1d70 */
45,101,110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32, /* 0x1d80 */
102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, /* 0x1d90 */
50, 45,108,105,116,116,108,101,109,105,112,115, 10, 10, 83,101, /* 0x1da0 */
99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, /* 0x1db0 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, /* 0x1dc0 */
32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, /* 0x1dd0 */
65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, /* 0x1de0 */
32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, /* 0x1df0 */
48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, /* 0x1e00 */
48, 48, 48, 48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1e10 */
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1e20 */
48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1e30 */
78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x1e40 */
69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 50, /* 0x1e50 */
69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 50, /* 0x1e60 */
49, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1e70 */
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 53, 52, /* 0x1e80 */
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1e90 */
44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1ea0 */
89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, /* 0x1eb0 */
32, 32, 32, 32, 48, 48, 48, 48, 48, 49,102, 48, 32, 32, 48, 48, /* 0x1ec0 */
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ed0 */
32, 32, 48, 48, 48, 48, 48, 50, 54, 99, 32, 32, 50, 42, 42, 48, /* 0x1ee0 */
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x1ef0 */
67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, /* 0x1f00 */
78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1f10 */
48, 48, 48, 49, 98, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f20 */
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1f30 */
48, 52, 53, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1f40 */
69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1f50 */
68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 76, 90, 77, 65, 95, 69, /* 0x1f60 */
76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 99, /* 0x1f70 */
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1f80 */
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 54, 49, 48, 32, 32, /* 0x1f90 */
50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1fa0 */
82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, /* 0x1fb0 */
65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1fc0 */
97,100, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1fd0 */
48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 54, 57, /* 0x1fe0 */
99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1ff0 */
83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, /* 0x2000 */
76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, /* 0x2010 */
48, 48, 48, 97,100, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2020 */
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x2030 */
49, 49, 55, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x2040 */
69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x2050 */
32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, /* 0x2060 */
32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, /* 0x2070 */
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2080 */
48, 48, 48, 49, 99, 52, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x2090 */
79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x20a0 */
89, 10, 32, 32, 56, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 32, /* 0x20b0 */
32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, /* 0x20c0 */
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20d0 */
32, 32, 48, 48, 48, 48, 49, 99, 53, 48, 32, 32, 50, 42, 42, 48, /* 0x20e0 */
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x20f0 */
79, 78, 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, /* 0x2100 */
76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 56, 32, /* 0x2110 */
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x2120 */
48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 53, 56, 32, 32, 50, /* 0x2130 */
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x2140 */
69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 69, 76, 70, 77, /* 0x2150 */
65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2160 */
50, 97, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x2170 */
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 56, 48, /* 0x2180 */
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x2190 */
44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x21a0 */
89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, /* 0x21b0 */
32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 98, 99, 32, 32, 48, 48, /* 0x21c0 */
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x21d0 */
32, 32, 48, 48, 48, 48, 49, 99, 97, 97, 32, 32, 50, 42, 42, 48, /* 0x21e0 */
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x21f0 */
79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, /* 0x2200 */
69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2210 */
32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, /* 0x2220 */
48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, /* 0x2230 */
48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2240 */
69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2250 */
48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, /* 0x2260 */
48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, /* 0x2270 */
65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, /* 0x2280 */
70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2290 */
108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, /* 0x22a0 */
48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, /* 0x22b0 */
48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x22c0 */
86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, /* 0x22d0 */
50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x22e0 */
32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, /* 0x22f0 */
48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2300 */
48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, /* 0x2310 */
76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x2320 */
77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2330 */
48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x2340 */
69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x2350 */
77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2360 */
48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x2370 */
69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x2380 */
77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2390 */
48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x23a0 */
69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x23b0 */
77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x23c0 */
48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, /* 0x23d0 */
65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, /* 0x23e0 */
72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x23f0 */
32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, /* 0x2400 */
48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2410 */
10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x2420 */
32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2430 */
32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2440 */
32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, /* 0x2450 */
48, 48, 48, 48, 48, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, /* 0x2460 */
48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, /* 0x2470 */
42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 85, 10, /* 0x2480 */
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2490 */
32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x24a0 */
65, 68, 82, 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x24b0 */
32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x24c0 */
48, 48, 48, 48, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, /* 0x24d0 */
48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x24e0 */
9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 88, 10, 48, /* 0x24f0 */
48, 48, 48, 48, 48, 49, 56, 32,103, 32, 32, 32, 32, 32, 79, 32, /* 0x2500 */
69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2510 */
48, 32, 95,115,116, 97,114,116, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x2520 */
84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x2530 */
32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, /* 0x2540 */
83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2550 */
32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2560 */
48, 48, 48, 48, 48, 48, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x2570 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48, /* 0x2580 */
48, 48, 48, 48, 48, 52, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x2590 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, /* 0x25a0 */
48, 48, 48, 48, 48, 56, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x25b0 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 85, 10, 48, 48, /* 0x25c0 */
48, 48, 48, 48, 48, 99, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x25d0 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 67, 10, 48, 48, /* 0x25e0 */
48, 48, 48, 48, 49, 48, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x25f0 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 85, 10, 48, 48, /* 0x2600 */
48, 48, 48, 48, 49, 52, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x2610 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 88, 10, 48, 48, /* 0x2620 */
48, 48, 48, 48, 49, 56, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, /* 0x2630 */
49, 54, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x2640 */
90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x2650 */
67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, /* 0x2660 */
93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x2670 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x2680 */
76, 85, 69, 10, 48, 48, 48, 48, 48, 49, 49, 99, 32, 82, 95, 77, /* 0x2690 */
73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x26a0 */
82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x26b0 */
73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x26c0 */
91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x26d0 */
32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x26e0 */
32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 49, /* 0x26f0 */
49, 99, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, /* 0x2700 */
32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, /* 0x2710 */
69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x2720 */
83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, /* 0x2730 */
70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x2740 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, /* 0x2750 */
48, 48, 48, 48, 48, 48, 99, 52, 32, 82, 95, 77, 73, 80, 83, 95, /* 0x2760 */
80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, /* 0x2770 */
65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x2780 */
82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, /* 0x2790 */
77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, /* 0x27a0 */
32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x27b0 */
32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x27c0 */
52, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, /* 0x27d0 */
32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10 /* 0x27e0 */
};
+196
View File
@@ -0,0 +1,196 @@
/* mipsel.r3000-linux.elf-fold.h
created from mipsel.r3000-linux.elf-fold.bin, 2560 (0xa00) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2007 Laszlo Molnar
Copyright (C) 2000-2007 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>
*/
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 2560
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x62582e6c
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0xbf4a45c4
unsigned char stub_mipsel_r3000_linux_elf_fold[2560] = {
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
2, 0, 8, 0, 1, 0, 0, 0,128, 0, 16, 0, 52, 0, 0, 0, /* 0x 10 */
0, 0, 0, 0, 1, 48, 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, 16, 0, /* 0x 30 */
0, 0, 16, 0, 0, 10, 0, 0, 0, 10, 0, 0, 5, 0, 0, 0, /* 0x 40 */
0, 16, 0, 0, 1, 0, 0, 0, 0, 10, 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, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
32, 0,162, 39, 24,240,189, 39, 33, 24,160, 3, 0, 0, 65,140, /* 0x 80 */
4, 0, 66, 36, 0, 0, 97,172, 4, 0, 99, 36,251,255, 32, 20, /* 0x 90 */
33,128, 96, 0, 4, 0, 99, 36, 0, 0, 65,140, 4, 0, 66, 36, /* 0x a0 */
0, 0, 97,172, 4, 0, 99, 36,251,255, 32, 20, 33,160, 96, 0, /* 0x b0 */
0, 0, 65,140, 4, 0, 72,140, 8, 0, 66, 36, 0, 0, 97,172, /* 0x c0 */
4, 0,104,172, 8, 0, 99, 36,249,255, 32, 20, 33,176, 96, 0, /* 0x d0 */
0, 0, 3,174, 32, 0, 1, 36, 0, 0, 97,160, 1, 0, 97,160, /* 0x e0 */
2, 0, 97,160, 61, 0, 1, 36, 3, 0, 97,160,255, 15, 6, 36, /* 0x f0 */
4, 0,101, 36, 5, 0, 17, 4, 33, 32,224, 3, 47,112,114,111, /* 0x 100 */
99, 47,115,101,108,102, 47,101,120,101, 0, 0,245, 15, 2, 36, /* 0x 110 */
12, 0, 0, 0, 2, 0,224, 4, 33, 8,162, 0, 0, 0, 32,160, /* 0x 120 */
0,254,189, 39, 33, 72, 0, 0, 33, 64,224, 2, 33, 56,128, 2, /* 0x 130 */
33, 48,160, 3,116,255,165, 38, 1, 0, 16, 4, 80, 1, 2, 36, /* 0x 140 */
35, 16,226, 3, 84, 8, 66, 36, 9,248, 64, 0, 33, 32, 32, 2, /* 0x 150 */
33,200, 64, 0, 0, 2,189, 39,252,255,193,142, 33, 40, 64, 2, /* 0x 160 */
3, 0, 32, 16, 33, 32, 96, 2, 8, 0, 32, 0,251, 15, 2, 36, /* 0x 170 */
8, 0, 32, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 180 */
250, 15, 2, 36,224,255,189, 39, 16, 0,168,175, 20, 0,169,175, /* 0x 190 */
12, 0, 0, 0, 2, 0, 0, 16, 32, 0,189, 39, 12, 0, 0, 0, /* 0x 1a0 */
3, 0,224, 20, 0, 0, 0, 0, 8, 0,224, 3, 0, 0, 0, 0, /* 0x 1b0 */
8, 0,224, 3,255,255, 2, 36, 8, 0,224, 3, 0, 0, 0, 0, /* 0x 1c0 */
0, 0,130,140, 4, 0,135,140, 43, 16, 70, 0, 3, 0, 64, 20, /* 0x 1d0 */
161, 15, 2, 36, 10, 0, 0, 16, 33, 24,192, 0,127, 0, 4, 36, /* 0x 1e0 */
238,255, 17, 4, 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0, /* 0x 1f0 */
0, 0,226,144, 1, 0,231, 36, 0, 0,162,160, 1, 0,165, 36, /* 0x 200 */
255,255, 99, 36,255,255, 2, 36,249,255, 98, 20, 0, 0, 0, 0, /* 0x 210 */
4, 0,131,140, 0, 0,130,140, 33, 24,102, 0, 35, 16, 70, 0, /* 0x 220 */
0, 0,130,172, 8, 0,224, 3, 4, 0,131,172,216,255,189, 39, /* 0x 230 */
28, 0,179,175, 24, 0,178,175, 20, 0,177,175, 16, 0,176,175, /* 0x 240 */
33,136,128, 0, 33,128,160, 0, 33,152,192, 0, 33,144,224, 0, /* 0x 250 */
82, 0, 0, 16, 32, 0,191,175, 33, 32, 32, 2,216,255, 17, 4, /* 0x 260 */
4, 0,165, 39, 4, 0,163,143, 8, 0,166,143, 10, 0, 96, 20, /* 0x 270 */
88, 33, 2, 60, 85, 80, 66, 52, 10, 0,194, 20,127, 0, 4, 36, /* 0x 280 */
0, 0, 34,142, 0, 0, 0, 0, 7, 0, 64, 20,161, 15, 2, 36, /* 0x 290 */
70, 0, 0, 16, 0, 0, 0, 0, 7, 0,192, 20, 43, 16,102, 0, /* 0x 2a0 */
127, 0, 4, 36,161, 15, 2, 36,188,255, 17, 4, 0, 0, 0, 0, /* 0x 2b0 */
255,255, 0, 16, 0, 0, 0, 0,250,255, 64, 20,127, 0, 4, 36, /* 0x 2c0 */
0, 0, 2,142, 0, 0, 0, 0, 43, 16, 67, 0,245,255, 64, 20, /* 0x 2d0 */
43, 16,195, 0, 4, 0, 7,142, 39, 0, 64, 16, 33, 40,224, 0, /* 0x 2e0 */
4, 0, 36,142, 12, 0,168,143, 33, 40,192, 0, 0, 0,163,175, /* 0x 2f0 */
33, 48,224, 0, 9,248, 96, 2, 33, 56,160, 3,233,255, 64, 20, /* 0x 300 */
127, 0, 4, 36, 0, 0,165,143, 4, 0,162,143, 0, 0, 0, 0, /* 0x 310 */
228,255,162, 20, 0, 0, 0, 0, 13, 0,167,147, 0, 0, 0, 0, /* 0x 320 */
13, 0,224, 16, 0, 0, 0, 0, 11, 0, 64, 18, 1, 2,162, 44, /* 0x 330 */
5, 0, 64, 16, 0, 0, 0, 0, 0, 0, 2,142, 0, 0, 0, 0, /* 0x 340 */
5, 0, 69, 20, 0, 0, 0, 0, 4, 0, 4,142, 14, 0,166,147, /* 0x 350 */
9,248, 64, 2, 0, 0, 0, 0, 8, 0,162,143, 4, 0, 35,142, /* 0x 360 */
0, 0, 36,142, 33, 24, 98, 0, 35, 32,130, 0, 4, 0, 35,174, /* 0x 370 */
3, 0, 0, 16, 0, 0, 36,174,145,255, 17, 4, 33, 32, 32, 2, /* 0x 380 */
4, 0,162,143, 4, 0, 3,142, 0, 0, 4,142, 33, 24, 98, 0, /* 0x 390 */
35, 32,130, 0, 4, 0, 3,174, 0, 0, 4,174, 0, 0, 2,142, /* 0x 3a0 */
0, 0, 0, 0,172,255, 64, 20, 12, 0, 6, 36, 32, 0,191,143, /* 0x 3b0 */
28, 0,179,143, 24, 0,178,143, 20, 0,177,143, 16, 0,176,143, /* 0x 3c0 */
8, 0,224, 3, 40, 0,189, 39, 14, 0,128, 16, 33, 16,128, 0, /* 0x 3d0 */
1, 0, 4, 36, 0, 0, 67,140, 0, 0, 0, 0, 5, 0,101, 16, /* 0x 3e0 */
0, 0, 0, 0, 5, 0,100, 20, 0, 0, 0, 0, 3, 0,160, 16, /* 0x 3f0 */
0, 0, 0, 0, 8, 0,224, 3, 0, 0, 69,172,245,255, 0, 16, /* 0x 400 */
8, 0, 66, 36, 8, 0,224, 3, 0, 0, 0, 0,248,255,189, 39, /* 0x 410 */
0, 0,176,175, 4, 0,191,175,235,255, 17, 4, 33,128,192, 0, /* 0x 420 */
2, 0, 64, 16, 0, 0, 0, 0, 4, 0, 80,172, 4, 0,191,143, /* 0x 430 */
0, 0,176,143, 8, 0,224, 3, 8, 0,189, 39,168,255,189, 39, /* 0x 440 */
80, 0,190,175, 68, 0,181,175, 52, 0,177,175, 84, 0,191,175, /* 0x 450 */
76, 0,183,175, 72, 0,182,175, 64, 0,180,175, 60, 0,179,175, /* 0x 460 */
56, 0,178,175, 48, 0,176,175, 28, 0,162,140, 33,168,160, 0, /* 0x 470 */
28, 0,164,175, 6, 0, 5, 36, 33, 32,224, 0, 32, 0,167,175, /* 0x 480 */
33,240,192, 0, 36, 0,168,175, 40, 0,169,175,206,255, 17, 4, /* 0x 490 */
33,136,162, 2, 3, 0, 64, 20, 0, 0, 0, 0, 4, 0, 0, 16, /* 0x 4a0 */
255,255, 2, 52, 4, 0, 66,140, 0, 0, 0, 0,255,255, 66, 36, /* 0x 4b0 */
20, 0,162,175, 16, 0,162,150, 20, 0,164,143, 2, 0, 66, 56, /* 0x 4c0 */
44, 0,163,150, 1, 0, 66, 44, 0, 17, 2, 0, 39, 40, 4, 0, /* 0x 4d0 */
2, 8, 71, 36,255,255, 99, 36, 33, 64, 32, 2,255,255, 4, 36, /* 0x 4e0 */
33, 72, 0, 0, 19, 0, 0, 16, 1, 0, 10, 36, 0, 0, 2,141, /* 0x 4f0 */
0, 0, 0, 0, 14, 0, 74, 20,255,255, 99, 36, 8, 0, 6,141, /* 0x 500 */
0, 0, 0, 0, 43, 16,196, 0, 2, 0, 64, 16, 0, 0, 0, 0, /* 0x 510 */
33, 32,192, 0, 20, 0, 2,141, 0, 0, 0, 0, 33, 48,194, 0, /* 0x 520 */
43, 16, 38, 1, 2, 0, 64, 16, 0, 0, 0, 0, 33, 72,192, 0, /* 0x 530 */
32, 0, 8, 37,237,255, 97, 4, 36,128,164, 0, 35, 16, 48, 1, /* 0x 540 */
35, 16, 69, 0,255,255, 66, 36, 36, 40,162, 0, 16, 0,227, 48, /* 0x 550 */
3, 0, 96, 16, 8, 0,165,175, 8, 0, 0, 16, 12, 0,176,175, /* 0x 560 */
8, 0,165,143, 33, 32, 0, 2, 33, 48, 0, 0,255,255, 8, 36, /* 0x 570 */
3,255, 17, 4, 33, 72, 0, 0, 12, 0,162,175, 12, 0,165,143, /* 0x 580 */
16, 0,160,175,133, 0, 0, 16, 35,184,176, 0, 12, 0,192, 19, /* 0x 590 */
6, 0, 2, 36, 0, 0, 35,142, 0, 0, 0, 0, 10, 0, 98, 20, /* 0x 5a0 */
1, 0, 2, 36, 8, 0, 38,142, 32, 0,164,143, 33, 48,230, 2, /* 0x 5b0 */
150,255, 17, 4, 3, 0, 5, 36,116, 0, 0, 16, 0, 0, 0, 0, /* 0x 5c0 */
0, 0, 35,142, 1, 0, 2, 36,112, 0, 98, 20, 0, 0, 0, 0, /* 0x 5d0 */
8, 0, 34,142, 24, 0, 35,142, 33,176,226, 2, 81,115, 2, 60, /* 0x 5e0 */
128, 24, 3, 0, 64, 98, 66, 52, 6, 16, 98, 0, 20, 0,165,143, /* 0x 5f0 */
16, 0, 36,142, 7, 0, 82, 48, 20, 0, 34,142, 36, 24,197, 2, /* 0x 600 */
0, 0,164,175, 4, 0,182,175, 33,160,131, 0, 24, 0,162,175, /* 0x 610 */
122, 0,192, 19, 35,152,195, 2, 2, 0, 70, 54,255,255, 8, 36, /* 0x 620 */
18, 8, 7, 36, 4, 0, 41,142, 33, 32, 96, 2, 35, 72, 35, 1, /* 0x 630 */
211,254, 17, 4, 33, 40,128, 2, 64, 0, 98, 22,127, 0, 4, 36, /* 0x 640 */
11, 0,192, 19, 4, 0, 66, 50, 4, 0, 64, 16, 0, 0, 0, 0, /* 0x 650 */
40, 0,167,143, 2, 0, 0, 16, 0, 0, 0, 0, 33, 56, 0, 0, /* 0x 660 */
28, 0,166,143, 33, 32,192, 3,240,254, 17, 4, 33, 40,160, 3, /* 0x 670 */
20, 0,164,143, 35, 16, 20, 0, 2, 0, 67, 50, 8, 0, 96, 16, /* 0x 680 */
36,128, 68, 0, 6, 0, 0, 18, 33, 24,116, 2, 33, 16, 0, 2, /* 0x 690 */
255,255, 66, 36, 0, 0, 96,160,253,255, 64, 20, 1, 0, 99, 36, /* 0x 6a0 */
43, 0,192, 19, 1, 0, 2, 36, 0, 0, 35,142, 0, 0, 0, 0, /* 0x 6b0 */
28, 0, 98, 20, 33, 32, 96, 2, 24, 0, 34,142, 0, 0, 0, 0, /* 0x 6c0 */
1, 0, 66, 48, 24, 0, 64, 16, 33, 40,128, 2, 20, 0, 36,142, /* 0x 6d0 */
16, 0, 34,142, 8, 0, 35,142, 17, 0,130, 20, 33, 16,131, 0, /* 0x 6e0 */
33, 48, 87, 0, 20, 0,165,143, 35, 16, 6, 0, 36, 16,162, 0, /* 0x 6f0 */
12, 0, 66, 44, 11, 0, 64, 20, 33, 32, 96, 2, 12, 0, 2, 36, /* 0x 700 */
0, 0,194,172, 32, 3, 2, 60, 8, 0, 66, 52, 32, 0,164,143, /* 0x 710 */
4, 0,194,172, 8, 0,192,172, 60,255, 17, 4, 33, 40, 0, 0, /* 0x 720 */
33, 32, 96, 2, 33, 40,128, 2, 33, 48, 64, 2,155,254, 17, 4, /* 0x 730 */
29, 16, 2, 36, 6, 0, 64, 16,127, 0, 4, 36,161, 15, 2, 36, /* 0x 740 */
150,254, 17, 4, 0, 0, 0, 0,255,255, 0, 16, 0, 0, 0, 0, /* 0x 750 */
24, 0,163,143, 33, 16,144, 2, 33, 40,195, 2, 33,128, 98, 2, /* 0x 760 */
43, 16, 5, 2, 9, 0, 64, 16, 35, 40,176, 0, 33, 48, 64, 2, /* 0x 770 */
33, 32, 0, 2, 18, 8, 7, 36,255,255, 8, 36,128,254, 17, 4, /* 0x 780 */
33, 72, 0, 0,237,255, 2, 22,127, 0, 4, 36, 16, 0,164,143, /* 0x 790 */
32, 0, 49, 38, 1, 0,132, 36, 16, 0,164,175, 44, 0,162,150, /* 0x 7a0 */
16, 0,165,143, 0, 0, 0, 0, 42, 16,162, 0,119,255, 64, 20, /* 0x 7b0 */
0, 0, 0, 0, 11, 0,192, 19, 3, 0, 2, 36, 16, 0,163,150, /* 0x 7c0 */
0, 0, 0, 0, 7, 0, 98, 16, 0, 0, 0, 0, 12, 0,162,143, /* 0x 7d0 */
8, 0,163,143, 0, 0, 0, 0, 33, 32, 67, 0,111,254, 17, 4, /* 0x 7e0 */
205, 15, 2, 36, 36, 0,164,143, 0, 0, 0, 0, 7, 0,128, 16, /* 0x 7f0 */
0, 0, 0, 0, 5, 0, 0, 16, 0, 0,151,172, 28, 0,168,143, /* 0x 800 */
33, 48, 64, 2,135,255, 0, 16, 18, 0, 7, 36, 24, 0,162,142, /* 0x 810 */
84, 0,191,143, 33, 16,226, 2, 80, 0,190,143, 76, 0,183,143, /* 0x 820 */
72, 0,182,143, 68, 0,181,143, 64, 0,180,143, 60, 0,179,143, /* 0x 830 */
56, 0,178,143, 52, 0,177,143, 48, 0,176,143, 8, 0,224, 3, /* 0x 840 */
88, 0,189, 39,200,255,189, 39, 52, 0,191,175, 48, 0,180,175, /* 0x 850 */
44, 0,179,175, 40, 0,178,175, 36, 0,177,175, 32, 0,176,175, /* 0x 860 */
33,128, 0, 1, 0, 0,136,140, 33, 24,160, 0, 33, 16,128, 0, /* 0x 870 */
33,144,192, 0, 33,160,224, 0, 4, 0,165, 39, 33, 56, 0, 0, /* 0x 880 */
33, 48, 0, 2, 20, 0,164, 39, 20, 0,163,175, 33,136, 32, 1, /* 0x 890 */
12, 0,163,175, 4, 0,168,175, 24, 0,162,175, 16, 0,162,175, /* 0x 8a0 */
98,254, 17, 4, 8, 0,178,175, 44, 0, 70,150, 33, 32,128, 2, /* 0x 8b0 */
214,254, 17, 4, 5, 0, 5, 36, 42, 0, 70,150, 33, 32,128, 2, /* 0x 8c0 */
4, 0, 5, 36,209,254, 17, 4, 52, 0, 83, 38, 8, 0,102,142, /* 0x 8d0 */
33, 32,128, 2, 52, 0,198, 36,204,254, 17, 4, 3, 0, 5, 36, /* 0x 8e0 */
33, 72, 32, 2, 33, 32, 0, 2, 33, 40, 64, 2, 12, 0,166, 39, /* 0x 8f0 */
33, 56,128, 2,209,254, 17, 4, 33, 64,160, 3, 33, 48, 64, 0, /* 0x 900 */
33, 32,128, 2, 9, 0, 5, 36,192,254, 17, 4, 33,136, 64, 0, /* 0x 910 */
44, 0, 69,150, 42, 0, 0, 16, 33, 32, 0, 0, 0, 0, 99,142, /* 0x 920 */
3, 0, 2, 36, 38, 0, 98, 20, 32, 0,115, 38,224,255,115, 38, /* 0x 930 */
8, 0, 98,142, 0, 0,164,143, 33, 40, 0, 0, 33, 32, 68, 0, /* 0x 940 */
33, 48, 0, 0, 21,254, 17, 4,165, 15, 2, 36, 9, 0, 64, 4, /* 0x 950 */
33,128, 64, 0, 33, 32, 64, 0, 33, 40, 64, 2, 0, 2, 6, 36, /* 0x 960 */
14,254, 17, 4,163, 15, 2, 36, 0, 2, 3, 36, 6, 0, 67, 16, /* 0x 970 */
33, 56,128, 2,127, 0, 4, 36, 8,254, 17, 4,161, 15, 2, 36, /* 0x 980 */
255,255, 0, 16, 0, 0, 0, 0, 33, 64,160, 3, 33, 72, 0, 0, /* 0x 990 */
170,254, 17, 4, 33, 48, 0, 0, 0, 0,166,143, 33, 32,128, 2, /* 0x 9a0 */
7, 0, 5, 36,153,254, 17, 4, 33,136, 64, 0, 33, 32, 0, 2, /* 0x 9b0 */
250,253, 17, 4,166, 15, 2, 36, 5, 0, 0, 16, 33, 16, 32, 2, /* 0x 9c0 */
42, 16,133, 0,213,255, 64, 20, 1, 0,132, 36, 33, 16, 32, 2, /* 0x 9d0 */
52, 0,191,143, 48, 0,180,143, 44, 0,179,143, 40, 0,178,143, /* 0x 9e0 */
36, 0,177,143, 32, 0,176,143, 8, 0,224, 3, 56, 0,189, 39 /* 0x 9f0 */
};
+1320 -1297
View File
File diff suppressed because it is too large Load Diff
+155 -155
View File
@@ -1,5 +1,5 @@
/* powerpc-darwin.macho-entry.h /* powerpc-darwin.macho-entry.h
created from powerpc-darwin.macho-entry.bin, 8406 (0x20d6) bytes created from powerpc-darwin.macho-entry.bin, 8410 (0x20da) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -28,15 +28,15 @@
*/ */
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_SIZE 8406 #define STUB_POWERPC_DARWIN_MACHO_ENTRY_SIZE 8410
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_ADLER32 0x8291963e #define STUB_POWERPC_DARWIN_MACHO_ENTRY_ADLER32 0xd0d29892
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_CRC32 0x977e3f05 #define STUB_POWERPC_DARWIN_MACHO_ENTRY_CRC32 0xbe74f591
unsigned char stub_powerpc_darwin_macho_entry[8406] = { unsigned char stub_powerpc_darwin_macho_entry[8410] = {
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */ 0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
0, 0, 24,120, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */ 0, 0, 24,124, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */
0, 21, 0, 18, 72, 0, 0, 69,124, 0, 41,236,125,168, 2,166, /* 0x 30 */ 0, 21, 0, 18, 72, 0, 0, 73,124, 0, 41,236,125,168, 2,166, /* 0x 30 */
40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, /* 0x 40 */ 40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, /* 0x 40 */
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 50 */ 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 50 */
57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 60 */ 57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 60 */
@@ -92,7 +92,7 @@ unsigned char stub_powerpc_darwin_macho_entry[8406] = {
141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0, /* 0x 380 */ 141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0, /* 0x 380 */
124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14, /* 0x 390 */ 124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14, /* 0x 390 */
64,130, 0, 16,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, /* 0x 3a0 */ 64,130, 0, 16,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, /* 0x 3a0 */
124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 4, /* 0x 3b0 */ 124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 8, /* 0x 3b0 */
136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0, /* 0x 3c0 */ 136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0, /* 0x 3c0 */
124, 99, 88, 48, 56, 99,241,132,124, 38, 11,120,124, 33, 26, 20, /* 0x 3d0 */ 124, 99, 88, 48, 56, 99,241,132,124, 38, 11,120,124, 33, 26, 20, /* 0x 3d0 */
84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0, /* 0x 3e0 */ 84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0, /* 0x 3e0 */
@@ -406,157 +406,157 @@ unsigned char stub_powerpc_darwin_macho_entry[8406] = {
65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, /* 0x1720 */ 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, /* 0x1720 */
57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, /* 0x1730 */ 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, /* 0x1730 */
56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, /* 0x1740 */ 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, /* 0x1740 */
124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0,128, 1, 0, 4, /* 0x1750 */ 124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0,128, 1, 0, 8, /* 0x1750 */
124, 8, 3,166, 78,128, 0, 32,128, 6, 0, 0,125,168, 3,166, /* 0x1760 */ 124, 8, 3,166, 78,128, 0, 32,128, 6, 0, 0,125,168, 3,166, /* 0x1760 */
56,165, 0, 1, 56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80, /* 0x1770 */ 56,165, 0, 1, 56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80, /* 0x1770 */
144,166, 0, 0, 78,128, 0, 32,124, 72, 2,166,128,130, 0, 8, /* 0x1780 */ 144,166, 0, 0, 78,128, 0, 32,124, 72, 2,166,128,130, 0, 8, /* 0x1780 */
124,137, 3,166,128,194, 0, 4,136,226, 0, 12,124,164, 18, 20, /* 0x1790 */ 124,137, 3,166,128,194, 0, 4,136,226, 0, 12,124,164, 18, 20, /* 0x1790 */
56,165, 0, 16,124,102, 18, 20, 56, 99, 0,192,140, 5,255,255, /* 0x17a0 */ 56,165, 0, 16,124,102, 18, 20, 56, 99, 0,192,140, 5,255,255, /* 0x17a0 */
156, 3,255,255, 66, 0,255,248,127,233, 3,166, 56,162, 0,128, /* 0x17b0 */ 156, 3,255,255, 66, 0,255,248,127,233, 3,166, 56,162, 0,128, /* 0x17b0 */
144,193,255,252, 56,193,255,252, 78,128, 4, 32,127,232, 2,166, /* 0x17c0 */ 144,193,255,252, 56,193,255,252, 56, 33,255,232, 78,128, 4, 32, /* 0x17c0 */
75,255,255,185, 72, 0, 0,128,116,109,112, 47,112,111,119,101, /* 0x17d0 */ 127,232, 2,166, 75,255,255,181, 72, 0, 0,128,116,109,112, 47, /* 0x17d0 */
114,112, 99, 45,100, 97,114,119,105,110, 46,109, 97, 99,104,111, /* 0x17e0 */ 112,111,119,101,114,112, 99, 45,100, 97,114,119,105,110, 46,109, /* 0x17e0 */
45,101,110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32, /* 0x17f0 */ 97, 99,104,111, 45,101,110,116,114,121, 46, 98,105,110, 58, 32, /* 0x17f0 */
102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, /* 0x1800 */ 32, 32, 32, 32,102,105,108,101, 32,102,111,114,109, 97,116, 32, /* 0x1800 */
50, 45,112,111,119,101,114,112, 99, 10, 10, 83,101, 99,116,105, /* 0x1810 */ 101,108,102, 51, 50, 45,112,111,119,101,114,112, 99, 10, 10, 83, /* 0x1810 */
111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, /* 0x1820 */ 101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109, /* 0x1820 */
32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, /* 0x1830 */ 101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, /* 0x1830 */
32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, /* 0x1840 */ 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, /* 0x1840 */
32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65, /* 0x1850 */ 77, 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102, /* 0x1850 */
108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 77, /* 0x1860 */ 102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, /* 0x1860 */
65, 67, 79, 83, 48, 48, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1870 */ 32, 48, 32, 77, 65, 67, 79, 83, 48, 48, 48, 32, 32, 32, 32, 32, /* 0x1870 */
48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1880 */ 32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, /* 0x1880 */
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1890 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1890 */
48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x18a0 */ 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x18a0 */
78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x18b0 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x18b0 */
79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, 69, 65, /* 0x18c0 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, /* 0x18c0 */
68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x18d0 */ 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x18d0 */
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x18e0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x18e0 */
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, 32, 50, /* 0x18f0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, /* 0x18f0 */
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1900 */ 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1900 */
69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, /* 0x1910 */ 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, /* 0x1910 */
69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, /* 0x1920 */ 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1920 */
52, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1930 */ 48, 48, 48, 49, 52, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1930 */
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, /* 0x1940 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1940 */
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1950 */ 48, 48, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1950 */
44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1960 */ 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1960 */
89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, /* 0x1970 */ 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, /* 0x1970 */
32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 99, 32, 32, 48, 48, /* 0x1980 */ 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 99, /* 0x1980 */
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1990 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1990 */
32, 32, 48, 48, 48, 48, 48, 49, 56, 48, 32, 32, 50, 42, 42, 48, /* 0x19a0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 56, 48, 32, 32, /* 0x19a0 */
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x19b0 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x19b0 */
67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, /* 0x19c0 */ 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x19c0 */
78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x19d0 */ 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, /* 0x19d0 */
48, 48, 48, 48,102, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x19e0 */ 32, 32, 48, 48, 48, 48, 48, 48,102, 48, 32, 32, 48, 48, 48, 48, /* 0x19e0 */
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x19f0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x19f0 */
48, 50, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1a00 */ 48, 48, 48, 48, 48, 50, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1a00 */
69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1a10 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x1a10 */
68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, 65, 95, 69, /* 0x1a20 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, /* 0x1a20 */
76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 52, /* 0x1a30 */ 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1a30 */
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1a40 */ 48, 48, 56, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1a40 */
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 57, 99, 32, 32, /* 0x1a50 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, /* 0x1a50 */
50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1a60 */ 57, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1a60 */
82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1a70 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x1a70 */
32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, /* 0x1a80 */ 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1a80 */
32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, /* 0x1a90 */ 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, /* 0x1a90 */
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1aa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1aa0 */
48, 48, 48, 48, 48, 52, 50, 48, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1ab0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 50, 48, 32, 32, 50, 42, /* 0x1ab0 */
67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1ac0 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1ac0 */
76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, /* 0x1ad0 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, /* 0x1ad0 */
48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, /* 0x1ae0 */ 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, /* 0x1ae0 */
48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1af0 */ 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1af0 */
48, 32, 32, 48, 48, 48, 48, 48,100, 98, 99, 32, 32, 50, 42, 42, /* 0x1b00 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,100, 98, 99, 32, /* 0x1b00 */
48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1b10 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1b10 */
68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, /* 0x1b20 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, /* 0x1b20 */
69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 48, /* 0x1b30 */ 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1b30 */
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1b40 */ 48, 48, 49, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1b40 */
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 53, 56, 32, 32, /* 0x1b50 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, /* 0x1b50 */
50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1b60 */ 53, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1b60 */
82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, /* 0x1b70 */ 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, /* 0x1b70 */
95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1b80 */ 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, /* 0x1b80 */
48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1b90 */ 48, 48, 48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1b90 */
48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 54, /* 0x1ba0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1ba0 */
56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1bb0 */ 48, 49, 55, 54, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1bb0 */
83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, /* 0x1bc0 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1bc0 */
69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1bd0 */ 32, 49, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, /* 0x1bd0 */
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1be0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1be0 */
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1bf0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1bf0 */
49, 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1c00 */ 48, 48, 48, 48, 49, 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1c00 */
69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1c10 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1c10 */
49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, /* 0x1c20 */ 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, /* 0x1c20 */
32, 48, 48, 48, 48, 48, 48, 53, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1c30 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 53, 52, 32, 32, 48, /* 0x1c30 */
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1c40 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1c40 */
48, 48, 48, 49, 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1c50 */ 48, 32, 32, 48, 48, 48, 48, 49, 55, 56, 56, 32, 32, 50, 42, 42, /* 0x1c50 */
79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1c60 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1c60 */
89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, /* 0x1c70 */ 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, /* 0x1c70 */
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1c80 */ 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1c80 */
32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, /* 0x1c90 */ 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, /* 0x1c90 */
48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, /* 0x1ca0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1ca0 */
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1cb0 */ 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1cb0 */
32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, /* 0x1cc0 */ 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, /* 0x1cc0 */
48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, /* 0x1cd0 */ 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, /* 0x1cd0 */
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, /* 0x1ce0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1ce0 */
77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, /* 0x1cf0 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, /* 0x1cf0 */
76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d00 */ 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, /* 0x1d00 */
32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67, 79, 83, 48, 48, /* 0x1d10 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67, /* 0x1d10 */
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 79, 83, /* 0x1d20 */ 79, 83, 48, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, /* 0x1d20 */
48, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1d30 */ 65, 67, 79, 83, 48, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d30 */
32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, /* 0x1d40 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, /* 0x1d40 */
48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, /* 0x1d50 */ 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, /* 0x1d50 */
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1d60 */ 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1d60 */
32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1d70 */ 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, /* 0x1d70 */
78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1d80 */ 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x1d80 */
32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, /* 0x1d90 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, /* 0x1d90 */
48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, /* 0x1da0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, /* 0x1da0 */
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x1db0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1db0 */
50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, /* 0x1dc0 */ 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1dc0 */
66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1dd0 */ 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1dd0 */
100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, /* 0x1de0 */ 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x1de0 */
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x1df0 */ 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1df0 */
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e00 */ 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1e00 */
100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, /* 0x1e10 */ 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x1e10 */
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x1e20 */ 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1e20 */
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e30 */ 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1e30 */
100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, /* 0x1e40 */ 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, /* 0x1e40 */
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, /* 0x1e50 */ 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1e50 */
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e60 */ 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1e60 */
100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, /* 0x1e70 */ 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, /* 0x1e70 */
48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, /* 0x1e80 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x1e80 */
48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 77, /* 0x1e90 */ 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, /* 0x1e90 */
65, 67, 79, 83, 48, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ea0 */ 32, 32, 32, 77, 65, 67, 79, 83, 48, 48, 48, 9, 48, 48, 48, 48, /* 0x1ea0 */
32, 95,115,116, 97,114,116, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x1eb0 */ 48, 48, 48, 48, 32, 95,115,116, 97,114,116, 10, 10, 82, 69, 76, /* 0x1eb0 */
73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x1ec0 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x1ec0 */
91, 77, 65, 67, 79, 83, 48, 48, 48, 93, 58, 10, 79, 70, 70, 83, /* 0x1ed0 */ 70, 79, 82, 32, 91, 77, 65, 67, 79, 83, 48, 48, 48, 93, 58, 10, /* 0x1ed0 */
69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x1ee0 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x1ee0 */
32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, /* 0x1ef0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x1ef0 */
48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, /* 0x1f00 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, /* 0x1f00 */
52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x1f10 */ 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x1f10 */
43, 48,120, 48, 48, 48, 48, 48, 48, 52, 52, 10, 10, 82, 69, 76, /* 0x1f20 */ 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 52, 56, 10, /* 0x1f20 */
79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x1f30 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x1f30 */
70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, /* 0x1f40 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, /* 0x1f40 */
83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x1f50 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x1f50 */
32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x1f60 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x1f60 */
48, 48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, /* 0x1f70 */ 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, /* 0x1f70 */
49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, /* 0x1f80 */ 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, /* 0x1f80 */
76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x1f90 */ 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x1f90 */
67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, /* 0x1fa0 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, /* 0x1fa0 */
93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x1fb0 */ 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x1fb0 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x1fc0 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1fc0 */
76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, /* 0x1fd0 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, /* 0x1fd0 */
80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x1fe0 */ 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, /* 0x1fe0 */
82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x1ff0 */ 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, /* 0x1ff0 */
73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2000 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2000 */
91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x2010 */ 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, /* 0x2010 */
32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2020 */ 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2020 */
32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x2030 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2030 */
57, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, /* 0x2040 */ 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, /* 0x2040 */
32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, /* 0x2050 */ 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, /* 0x2050 */
69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x2060 */ 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x2060 */
83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x2070 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, /* 0x2070 */
48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, /* 0x2080 */ 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, /* 0x2080 */
69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x2090 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2090 */
65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, /* 0x20a0 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x20a0 */
80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, /* 0x20b0 */ 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, /* 0x20b0 */
76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, /* 0x20c0 */ 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48, /* 0x20c0 */
48, 48, 48, 49, 48, 10 /* 0x20d0 */ 120, 48, 48, 48, 48, 48, 48, 49, 48, 10 /* 0x20d0 */
}; };
+103 -103
View File
@@ -1,5 +1,5 @@
/* powerpc-darwin.macho-fold.h /* powerpc-darwin.macho-fold.h
created from powerpc-darwin.macho-fold.bin, 1660 (0x67c) bytes created from powerpc-darwin.macho-fold.bin, 1664 (0x680) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -28,113 +28,113 @@
*/ */
#define STUB_POWERPC_DARWIN_MACHO_FOLD_SIZE 1660 #define STUB_POWERPC_DARWIN_MACHO_FOLD_SIZE 1664
#define STUB_POWERPC_DARWIN_MACHO_FOLD_ADLER32 0xfc8b272c #define STUB_POWERPC_DARWIN_MACHO_FOLD_ADLER32 0x2e3a279d
#define STUB_POWERPC_DARWIN_MACHO_FOLD_CRC32 0x62ce0ae3 #define STUB_POWERPC_DARWIN_MACHO_FOLD_CRC32 0xf61322eb
unsigned char stub_powerpc_darwin_macho_fold[1660] = { unsigned char stub_powerpc_darwin_macho_fold[1664] = {
72, 0, 0,105, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 0 */ 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 */ 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 */ 124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252, /* 0x 20 */
124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80, /* 0x 30 */ 124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80, /* 0x 30 */
125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32, /* 0x 40 */ 125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32, /* 0x 40 */
132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, /* 0x 50 */ 132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, /* 0x 50 */
66, 0,255,240, 78,128, 0, 32, 57, 32, 0, 0,149, 33,255,252, /* 0x 60 */ 66, 0,255,240, 78,128, 0, 32, 56, 33, 0, 24, 57, 32, 0, 0, /* 0x 60 */
124, 41, 11,120,125, 8, 2,166,128,159,255,248,124,100,248, 80, /* 0x 70 */ 149, 33,255,252,124, 41, 11,120,125, 8, 2,166,128,159,255,248, /* 0x 70 */
128,195, 0, 24, 40, 6, 8, 0, 65,129, 0, 8, 56,192, 8, 0, /* 0x 80 */ 124,100,248, 80,128,195, 0, 24, 40, 6, 8, 0, 65,129, 0, 8, /* 0x 80 */
124, 61, 11,120,124, 38, 8, 80,124, 37, 11,120, 56, 33,255,232, /* 0x 90 */ 56,192, 8, 0,124, 61, 11,120,124, 38, 8, 80,124, 37, 11,120, /* 0x 90 */
127,231,251,120, 72, 0, 4, 61,127,161,235,120,128, 67, 0, 0, /* 0x a0 */ 56, 33,255,232,127,231,251,120, 72, 0, 4, 61,127,161,235,120, /* 0x a0 */
124, 73, 3,166,128, 67, 0,136,124, 79,241, 32,128, 67, 0,140, /* 0x b0 */ 128, 67, 0, 0,124, 73, 3,166,128, 67, 0,136,124, 79,241, 32, /* 0x b0 */
124, 65, 3,166,128, 67, 0,144,124, 72, 3,166,184,131, 0, 24, /* 0x c0 */ 128, 67, 0,140,124, 65, 3,166,128, 67, 0,144,124, 72, 3,166, /* 0x c0 */
128, 3, 0, 8,128, 67, 0, 16,128, 99, 0, 20, 78,128, 4, 32, /* 0x d0 */ 184,131, 0, 24,128, 3, 0, 8,128, 67, 0, 16,128, 99, 0, 20, /* 0x d0 */
124,199, 51,120, 56,192, 0, 0, 56, 0, 0,153, 72, 0, 0, 16, /* 0x e0 */ 78,128, 4, 32,124,199, 51,120, 56,192, 0, 0, 56, 0, 0,153, /* 0x e0 */
125, 9, 67,120, 57, 0, 0, 0, 56, 0, 0,197, 68, 0, 0, 2, /* 0x f0 */ 72, 0, 0, 16,125, 9, 67,120, 57, 0, 0, 0, 56, 0, 0,197, /* 0x f0 */
56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, 75,255,255,240, /* 0x 100 */ 68, 0, 0, 2, 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, /* 0x 100 */
56, 0, 0, 3, 75,255,255,232, 56, 0, 0, 5, 75,255,255,224, /* 0x 110 */ 75,255,255,240, 56, 0, 0, 3, 75,255,255,232, 56, 0, 0, 5, /* 0x 110 */
56, 0, 0, 6, 75,255,255,216, 56, 0, 0, 74, 75,255,255,208, /* 0x 120 */ 75,255,255,224, 56, 0, 0, 6, 75,255,255,216, 56, 0, 0, 74, /* 0x 120 */
124, 8, 2,166,148, 33,255,240,144, 1, 0, 20,128, 3, 0, 0, /* 0x 130 */ 75,255,255,208,124, 8, 2,166,148, 33,255,240,144, 1, 0, 20, /* 0x 130 */
129, 35, 0, 4,127,128, 40, 64, 64,188, 0, 12, 56, 96, 0,127, /* 0x 140 */ 128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, 64,188, 0, 12, /* 0x 140 */
75,255,255,185, 47,133, 0, 0, 65,158, 0, 28,124,169, 3,166, /* 0x 150 */ 56, 96, 0,127, 75,255,255,185, 47,133, 0, 0, 65,158, 0, 28, /* 0x 150 */
136, 9, 0, 0, 57, 41, 0, 1,152, 4, 0, 0, 56,132, 0, 1, /* 0x 160 */ 124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1,152, 4, 0, 0, /* 0x 160 */
66, 0,255,240,128, 3, 0, 0,129, 35, 0, 4,124, 5, 0, 80, /* 0x 170 */ 56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0,129, 35, 0, 4, /* 0x 170 */
144, 3, 0, 0,128, 1, 0, 20,125, 41, 42, 20,124, 8, 3,166, /* 0x 180 */ 124, 5, 0, 80,144, 3, 0, 0,128, 1, 0, 20,125, 41, 42, 20, /* 0x 180 */
56, 33, 0, 16,145, 35, 0, 4, 78,128, 0, 32,124, 8, 2,166, /* 0x 190 */ 124, 8, 3,166, 56, 33, 0, 16,145, 35, 0, 4, 78,128, 0, 32, /* 0x 190 */
148, 33,255,192,144, 1, 0, 68,128, 4, 0, 0,191,129, 0, 48, /* 0x 1a0 */ 124, 8, 2,166,148, 33,255,192,144, 1, 0, 68,128, 4, 0, 0, /* 0x 1a0 */
47,128, 0, 0,124,159, 35,120,124,126, 27,120,124,188, 43,120, /* 0x 1b0 */ 191,129, 0, 48, 47,128, 0, 0,124,159, 35,120,124,126, 27,120, /* 0x 1b0 */
124,221, 51,120, 65,158, 1, 36, 56,160, 0, 12,127,195,243,120, /* 0x 1c0 */ 124,188, 43,120,124,221, 51,120, 65,158, 1, 36, 56,160, 0, 12, /* 0x 1c0 */
56,129, 0, 16, 75,255,255, 93,129, 33, 0, 16,128,161, 0, 20, /* 0x 1d0 */ 127,195,243,120, 56,129, 0, 16, 75,255,255, 93,129, 33, 0, 16, /* 0x 1d0 */
47,137, 0, 0, 64,190, 0, 36, 60, 0, 33, 88, 96, 0, 80, 85, /* 0x 1e0 */ 128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, 60, 0, 33, 88, /* 0x 1e0 */
127,133, 0, 0, 64,190, 0, 28,128, 30, 0, 0, 47,128, 0, 0, /* 0x 1f0 */ 96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28,128, 30, 0, 0, /* 0x 1f0 */
65,190, 0,232, 72, 0, 0, 12, 47,133, 0, 0, 64,190, 0, 12, /* 0x 200 */ 47,128, 0, 0, 65,190, 0,232, 72, 0, 0, 12, 47,133, 0, 0, /* 0x 200 */
56, 96, 0,127, 75,255,254,245,127, 5, 72, 64, 65,185,255,244, /* 0x 210 */ 64,190, 0, 12, 56, 96, 0,127, 75,255,254,245,127, 5, 72, 64, /* 0x 210 */
128, 31, 0, 0,127,137, 0, 64, 65,189,255,232,128, 31, 0, 4, /* 0x 220 */ 65,185,255,244,128, 31, 0, 0,127,137, 0, 64, 65,189,255,232, /* 0x 220 */
64,152, 0,136,124,164, 43,120,128,126, 0, 4,124, 5, 3,120, /* 0x 230 */ 128, 31, 0, 4, 64,152, 0,136,124,164, 43,120,128,126, 0, 4, /* 0x 230 */
56,193, 0, 32,136,225, 0, 24,145, 33, 0, 32,127,136, 3,166, /* 0x 240 */ 124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24,145, 33, 0, 32, /* 0x 240 */
78,128, 0, 33, 47,131, 0, 0, 64,190,255,184,128,129, 0, 32, /* 0x 250 */ 127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0, 64,190,255,184, /* 0x 250 */
128, 1, 0, 16,127,132, 0, 0, 64,190,255,168,136,193, 0, 25, /* 0x 260 */ 128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0, 64,190,255,168, /* 0x 260 */
49, 61,255,255,124, 9,233, 16,125, 38, 0,208, 85, 41, 15,254, /* 0x 270 */ 136,193, 0, 25, 49, 61,255,255,124, 9,233, 16,125, 38, 0,208, /* 0x 270 */
125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4,136,161, 0, 26, /* 0x 280 */ 85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4, /* 0x 280 */
127,168, 3,166, 78,128, 0, 33,128, 30, 0, 4,129, 97, 0, 20, /* 0x 290 */ 136,161, 0, 26,127,168, 3,166, 78,128, 0, 33,128, 30, 0, 4, /* 0x 290 */
129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80,144, 30, 0, 4, /* 0x 2a0 */ 129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80, /* 0x 2a0 */
145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120,127,195,243,120, /* 0x 2b0 */ 144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120, /* 0x 2b0 */
75,255,254,113,129, 97, 0, 16,129, 63, 0, 0,128, 31, 0, 4, /* 0x 2c0 */ 127,195,243,120, 75,255,254,113,129, 97, 0, 16,129, 63, 0, 0, /* 0x 2c0 */
125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20,144, 31, 0, 4, /* 0x 2d0 */ 128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20, /* 0x 2d0 */
145, 63, 0, 0, 75,255,254,224,128, 1, 0, 68,187,129, 0, 48, /* 0x 2e0 */ 144, 31, 0, 4,145, 63, 0, 0, 75,255,254,224,128, 1, 0, 68, /* 0x 2e0 */
124, 8, 3,166, 56, 33, 0, 64, 78,128, 0, 32,124, 8, 2,166, /* 0x 2f0 */ 187,129, 0, 48,124, 8, 3,166, 56, 33, 0, 64, 78,128, 0, 32, /* 0x 2f0 */
148, 33,255,176,144, 1, 0, 84,128, 3, 0, 16,190, 65, 0, 24, /* 0x 300 */ 124, 8, 2,166,148, 33,255,176,144, 1, 0, 84,128, 3, 0, 16, /* 0x 300 */
58,224, 0, 0,125,128, 0, 38,127,151, 0, 64,145,129, 0, 20, /* 0x 310 */ 190, 65, 0, 24, 58,224, 0, 0,125,128, 0, 38,127,151, 0, 64, /* 0x 310 */
124,122, 27,120,124,146, 35,120,124,187, 43,120,124,211, 51,120, /* 0x 320 */ 145,129, 0, 20,124,122, 27,120,124,146, 35,120,124,187, 43,120, /* 0x 320 */
124,244, 59,120,125, 21, 67,120,125, 54, 75,120, 59,195, 0, 28, /* 0x 330 */ 124,211, 51,120,124,244, 59,120,125, 21, 67,120,125, 54, 75,120, /* 0x 330 */
59, 0, 0, 0, 64,156, 1,124,129, 62, 0, 0, 47,137, 0, 1, /* 0x 340 */ 59,195, 0, 28, 59, 0, 0, 0, 64,156, 1,124,129, 62, 0, 0, /* 0x 340 */
64,190, 1, 48,129, 62, 0, 24,129,126, 0, 36, 85, 61, 5, 62, /* 0x 350 */ 47,137, 0, 1, 64,190, 1, 48,129, 62, 0, 24,129,126, 0, 36, /* 0x 350 */
127,139,234, 20, 46, 28, 0, 0,128, 30, 0, 28,145, 97, 0, 8, /* 0x 360 */ 85, 61, 5, 62,127,139,234, 20, 46, 28, 0, 0,128, 30, 0, 28, /* 0x 360 */
127, 41, 2, 20,145, 33, 0, 12,127,253, 72, 80, 65,146, 0, 76, /* 0x 370 */ 145, 97, 0, 8,127, 41, 2, 20,145, 33, 0, 12,127,253, 72, 80, /* 0x 370 */
47,155, 0, 0, 64,190, 0, 16, 47,139, 0, 0, 56,192, 0, 18, /* 0x 380 */ 65,146, 0, 76, 47,155, 0, 0, 64,190, 0, 16, 47,139, 0, 0, /* 0x 380 */
64,158, 0, 8, 56,192, 16, 18, 47,139, 0, 0,126,103,155,120, /* 0x 390 */ 56,192, 0, 18, 64,158, 0, 8, 56,192, 16, 18, 47,139, 0, 0, /* 0x 390 */
64,158, 0, 8, 56,224,255,255,129, 30, 0, 32,127,227,251,120, /* 0x 3a0 */ 126,103,155,120, 64,158, 0, 8, 56,224,255,255,129, 30, 0, 32, /* 0x 3a0 */
125, 8,146, 20,127,132,227,120, 56,160, 0, 3, 75,255,253, 53, /* 0x 3b0 */ 127,227,251,120,125, 8,146, 20,127,132,227,120, 56,160, 0, 3, /* 0x 3b0 */
127,159, 24, 0, 64,158, 0,124, 47,155, 0, 0, 65,158, 0, 52, /* 0x 3c0 */ 75,255,253, 53,127,159, 24, 0, 64,158, 0,124, 47,155, 0, 0, /* 0x 3c0 */
128, 30, 0, 36, 47,128, 0, 0, 65,158, 0, 40,128, 30, 0, 32, /* 0x 3d0 */ 65,158, 0, 52,128, 30, 0, 36, 47,128, 0, 0, 65,158, 0, 40, /* 0x 3d0 */
47,128, 0, 0, 64,158, 0, 8,147,244, 0, 0,127, 99,219,120, /* 0x 3e0 */ 128, 30, 0, 32, 47,128, 0, 0, 64,158, 0, 8,147,244, 0, 0, /* 0x 3e0 */
56,129, 0, 8,126,165,171,120,126,198,179,120, 75,255,253,161, /* 0x 3f0 */ 127, 99,219,120, 56,129, 0, 8,126,165,171,120,126,198,179,120, /* 0x 3f0 */
124, 28, 0,208,112, 29, 15,255,125, 63,226, 20, 65,130, 0, 24, /* 0x 400 */ 75,255,253,161,124, 28, 0,208,112, 29, 15,255,125, 63,226, 20, /* 0x 400 */
127,169, 3,166, 56, 0, 0, 0,152, 9, 0, 0, 57, 41, 0, 1, /* 0x 410 */ 65,130, 0, 24,127,169, 3,166, 56, 0, 0, 0,152, 9, 0, 0, /* 0x 410 */
66, 0,255,248, 65,178, 0, 36,128,190, 0, 44,127,227,251,120, /* 0x 420 */ 57, 41, 0, 1, 66, 0,255,248, 65,178, 0, 36,128,190, 0, 44, /* 0x 420 */
127,132,227,120, 75,255,252,245, 47,131, 0, 0, 65,190, 0, 12, /* 0x 430 */ 127,227,251,120,127,132,227,120, 75,255,252,245, 47,131, 0, 0, /* 0x 430 */
56, 96, 0,127, 75,255,252,197,124, 28,234, 20,127,255, 2, 20, /* 0x 440 */ 65,190, 0, 12, 56, 96, 0,127, 75,255,252,197,124, 28,234, 20, /* 0x 440 */
127,159,200, 64, 64,188, 0, 84,128,190, 0, 44,124,159,200, 80, /* 0x 450 */ 127,255, 2, 20,127,159,200, 64, 64,188, 0, 84,128,190, 0, 44, /* 0x 450 */
127,227,251,120, 56,192, 16, 18, 56,224,255,255, 57, 0, 0, 0, /* 0x 460 */ 124,159,200, 80,127,227,251,120, 56,192, 16, 18, 56,224,255,255, /* 0x 460 */
75,255,252,129,127,159, 24, 0, 65,190, 0, 48, 75,255,255,196, /* 0x 470 */ 57, 0, 0, 0, 75,255,252,129,127,159, 24, 0, 65,190, 0, 48, /* 0x 470 */
56, 9,255,252, 43,128, 0, 1, 65,157, 0, 32,128, 30, 0, 8, /* 0x 480 */ 75,255,255,196, 56, 9,255,252, 43,128, 0, 1, 65,157, 0, 32, /* 0x 480 */
47,128, 0, 1, 64,190, 0, 20,128, 30, 0, 12, 47,128, 0, 40, /* 0x 490 */ 128, 30, 0, 8, 47,128, 0, 1, 64,190, 0, 20,128, 30, 0, 12, /* 0x 490 */
64,190, 0, 8, 58,254, 0, 16,128, 26, 0, 16, 59, 24, 0, 1, /* 0x 4a0 */ 47,128, 0, 40, 64,190, 0, 8, 58,254, 0, 16,128, 26, 0, 16, /* 0x 4a0 */
127,152, 0, 64,128, 30, 0, 4,127,222, 2, 20, 75,255,254,136, /* 0x 4b0 */ 59, 24, 0, 1,127,152, 0, 64,128, 30, 0, 4,127,222, 2, 20, /* 0x 4b0 */
128, 1, 0, 84,129,129, 0, 20,126,227,187,120,124, 8, 3,166, /* 0x 4c0 */ 75,255,254,136,128, 1, 0, 84,129,129, 0, 20,126,227,187,120, /* 0x 4c0 */
186, 65, 0, 24,125,128,129, 32, 56, 33, 0, 80, 78,128, 0, 32, /* 0x 4d0 */ 124, 8, 3,166,186, 65, 0, 24,125,128,129, 32, 56, 33, 0, 80, /* 0x 4d0 */
148, 33,255,192,144,129, 0, 8,124, 8, 2,166,129, 97, 0, 8, /* 0x 4e0 */ 78,128, 0, 32,148, 33,255,192,144,129, 0, 8,124, 8, 2,166, /* 0x 4e0 */
144, 1, 0, 68, 57,107,255,232, 56, 3, 0, 24,145, 97, 0, 16, /* 0x 4f0 */ 129, 97, 0, 8,144, 1, 0, 68, 57,107,255,232, 56, 3, 0, 24, /* 0x 4f0 */
144, 1, 0, 20,191, 97, 0, 44,128, 3, 0, 24,129, 65, 0, 20, /* 0x 500 */ 145, 97, 0, 16,144, 1, 0, 20,191, 97, 0, 44,128, 3, 0, 24, /* 0x 500 */
125, 60, 75,120,129, 33, 0, 16,124,191, 43,120,125, 27, 67,120, /* 0x 510 */ 129, 65, 0, 20,125, 60, 75,120,129, 33, 0, 16,124,191, 43,120, /* 0x 510 */
124,253, 59,120,124,229, 59,120, 56, 97, 0, 16, 56,129, 0, 24, /* 0x 520 */ 125, 27, 67,120,124,253, 59,120,124,229, 59,120, 56, 97, 0, 16, /* 0x 520 */
124,222, 51,120, 56,192, 0, 0,145, 65, 0, 36,144, 1, 0, 24, /* 0x 530 */ 56,129, 0, 24,124,222, 51,120, 56,192, 0, 0,145, 65, 0, 36, /* 0x 530 */
145, 33, 0, 32,147,225, 0, 28, 75,255,252, 85,127,105,219,120, /* 0x 540 */ 144, 1, 0, 24,145, 33, 0, 32,147,225, 0, 28, 75,255,252, 85, /* 0x 540 */
127,135,227,120,127,227,251,120,127,168,235,120, 56,128, 0, 0, /* 0x 550 */ 127,105,219,120,127,135,227,120,127,227,251,120,127,168,235,120, /* 0x 550 */
56,161, 0, 32, 56,192,255,255, 75,255,253,149,129, 95, 0, 16, /* 0x 560 */ 56,128, 0, 0, 56,161, 0, 32, 56,192,255,255, 75,255,253,149, /* 0x 560 */
57, 96, 0, 0,127,139, 80, 64,124,124, 27,120, 59, 96, 0, 0, /* 0x 570 */ 129, 95, 0, 16, 57, 96, 0, 0,127,139, 80, 64,124,124, 27,120, /* 0x 570 */
57, 63, 0, 28, 64,156, 0,224,128, 9, 0, 0, 57,107, 0, 1, /* 0x 580 */ 59, 96, 0, 0, 57, 63, 0, 28, 64,156, 0,224,128, 9, 0, 0, /* 0x 580 */
47,128, 0, 14,127, 11, 80, 64, 64,190, 0,192,128,105, 0, 8, /* 0x 590 */ 57,107, 0, 1, 47,128, 0, 14,127, 11, 80, 64, 64,190, 0,192, /* 0x 590 */
56,128, 0, 0,124,105, 26, 20, 56,160, 0, 0, 75,255,251,109, /* 0x 5a0 */ 128,105, 0, 8, 56,128, 0, 0,124,105, 26, 20, 56,160, 0, 0, /* 0x 5a0 */
124,125, 27,121, 65,128, 0, 32,127,163,235,120,127,228,251,120, /* 0x 5b0 */ 75,255,251,109,124,125, 27,121, 65,128, 0, 32,127,163,235,120, /* 0x 5b0 */
127,197,243,120,127,102,219,120, 75,255,251, 25,127,158, 24, 0, /* 0x 5c0 */ 127,228,251,120,127,197,243,120,127,102,219,120, 75,255,251, 25, /* 0x 5c0 */
65,190, 0, 20, 56, 96, 0,127, 75,255,251, 49,131,105, 0, 8, /* 0x 5d0 */ 127,158, 24, 0, 65,190, 0, 20, 56, 96, 0,127, 75,255,251, 49, /* 0x 5d0 */
75,255,255,216,128, 31, 0, 0, 61, 32,202,254, 97, 41,186,190, /* 0x 5e0 */ 131,105, 0, 8, 75,255,255,216,128, 31, 0, 0, 61, 32,202,254, /* 0x 5e0 */
127,128, 72, 0, 64,158, 0, 52,129, 95, 0, 4, 57, 96, 0, 0, /* 0x 5f0 */ 97, 41,186,190,127,128, 72, 0, 64,158, 0, 52,129, 95, 0, 4, /* 0x 5f0 */
127,139, 80, 64, 57, 63, 0, 8, 64,156, 0, 32,128, 9, 0, 0, /* 0x 600 */ 57, 96, 0, 0,127,139, 80, 64, 57, 63, 0, 8, 64,156, 0, 32, /* 0x 600 */
57,107, 0, 1, 47,128, 0, 18,127, 11, 80, 64, 65,190,255,192, /* 0x 610 */ 128, 9, 0, 0, 57,107, 0, 1, 47,128, 0, 18,127, 11, 80, 64, /* 0x 610 */
57, 41, 0, 20, 65,152,255,232,127,227,251,120,127,100,219,120, /* 0x 620 */ 65,190,255,192, 57, 41, 0, 20, 65,152,255,232,127,227,251,120, /* 0x 620 */
56,160, 0, 0,127,166,235,120, 56,224, 0, 0, 57, 0, 0, 0, /* 0x 630 */ 127,100,219,120, 56,160, 0, 0,127,166,235,120, 56,224, 0, 0, /* 0x 630 */
57, 32, 0, 0, 75,255,252,185,124,124, 27,120,127,163,235,120, /* 0x 640 */ 57, 0, 0, 0, 57, 32, 0, 0, 75,255,252,185,124,124, 27,120, /* 0x 640 */
75,255,250,209, 72, 0, 0, 16,128, 9, 0, 4,125, 41, 2, 20, /* 0x 650 */ 127,163,235,120, 75,255,250,209, 72, 0, 0, 16,128, 9, 0, 4, /* 0x 650 */
65,152,255, 40,128, 1, 0, 68,127,131,227,120,124, 8, 3,166, /* 0x 660 */ 125, 41, 2, 20, 65,152,255, 40,128, 1, 0, 68,127,131,227,120, /* 0x 660 */
187, 97, 0, 44, 56, 33, 0, 64, 78,128, 0, 32 /* 0x 670 */ 124, 8, 3,166,187, 97, 0, 44, 56, 33, 0, 64, 78,128, 0, 32 /* 0x 670 */
}; };
+169 -169
View File
@@ -1,5 +1,5 @@
/* powerpc-linux.elf-entry.h /* powerpc-linux.elf-entry.h
created from powerpc-linux.elf-entry.bin, 8721 (0x2211) bytes created from powerpc-linux.elf-entry.bin, 8725 (0x2215) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -28,15 +28,15 @@
*/ */
#define STUB_POWERPC_LINUX_ELF_ENTRY_SIZE 8721 #define STUB_POWERPC_LINUX_ELF_ENTRY_SIZE 8725
#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0x94d0dad3 #define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0x7980dcbb
#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0xed9c5363 #define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0x37bf2c85
unsigned char stub_powerpc_linux_elf_entry[8721] = { unsigned char stub_powerpc_linux_elf_entry[8725] = {
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */ 0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
0, 0, 24,224, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */ 0, 0, 24,228, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */
0, 23, 0, 20, 72, 0, 0,125,124, 0, 41,236,125,168, 2,166, /* 0x 30 */ 0, 23, 0, 20, 72, 0, 0,129,124, 0, 41,236,125,168, 2,166, /* 0x 30 */
40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, /* 0x 40 */ 40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, /* 0x 40 */
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 50 */ 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 50 */
57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 60 */ 57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 60 */
@@ -92,7 +92,7 @@ unsigned char stub_powerpc_linux_elf_entry[8721] = {
141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0, /* 0x 380 */ 141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0, /* 0x 380 */
124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14, /* 0x 390 */ 124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14, /* 0x 390 */
64,130, 0, 16,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, /* 0x 3a0 */ 64,130, 0, 16,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, /* 0x 3a0 */
124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 4, /* 0x 3b0 */ 124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 8, /* 0x 3b0 */
136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0, /* 0x 3c0 */ 136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0, /* 0x 3c0 */
124, 99, 88, 48, 56, 99,241,132,124, 38, 11,120,124, 33, 26, 20, /* 0x 3d0 */ 124, 99, 88, 48, 56, 99,241,132,124, 38, 11,120,124, 33, 26, 20, /* 0x 3d0 */
84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0, /* 0x 3e0 */ 84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0, /* 0x 3e0 */
@@ -406,7 +406,7 @@ unsigned char stub_powerpc_linux_elf_entry[8721] = {
65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, /* 0x1720 */ 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, /* 0x1720 */
57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, /* 0x1730 */ 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, /* 0x1730 */
56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, /* 0x1740 */ 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, /* 0x1740 */
124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0,128, 1, 0, 4, /* 0x1750 */ 124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0,128, 1, 0, 8, /* 0x1750 */
124, 8, 3,166, 78,128, 0, 32,128, 6, 0, 0,125,168, 3,166, /* 0x1760 */ 124, 8, 3,166, 78,128, 0, 32,128, 6, 0, 0,125,168, 3,166, /* 0x1760 */
56,165, 0, 1, 56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80, /* 0x1770 */ 56,165, 0, 1, 56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80, /* 0x1770 */
144,166, 0, 0, 78,128, 0, 32, 72, 0, 0, 1, 80, 82, 79, 84, /* 0x1780 */ 144,166, 0, 0, 78,128, 0, 32, 72, 0, 0, 1, 80, 82, 79, 84, /* 0x1780 */
@@ -419,164 +419,164 @@ unsigned char stub_powerpc_linux_elf_entry[8721] = {
16, 11, 84, 99, 0, 38, 68, 0, 0, 2, 65,131, 0, 0,127,233, /* 0x17f0 */ 16, 11, 84, 99, 0, 38, 68, 0, 0, 2, 65,131, 0, 0,127,233, /* 0x17f0 */
3,166,128, 30, 0, 0,136,254, 0, 8, 56,193, 0,124,144, 1, /* 0x1800 */ 3,166,128, 30, 0, 0,136,254, 0, 8, 56,193, 0,124,144, 1, /* 0x1800 */
0,124,124,101, 27,120,124,104, 3,166,128,158, 0, 4, 56,126, /* 0x1810 */ 0,124,124,101, 27,120,124,104, 3,166,128,158, 0, 4, 56,126, /* 0x1810 */
0, 12, 78,128, 4, 32,148, 33,255,128,188, 65, 0, 4,127,232, /* 0x1820 */ 0, 12, 56, 33,255,232, 78,128, 4, 32,148, 33,255,128,188, 65, /* 0x1820 */
2,166, 75,255,255,153,116,109,112, 47,112,111,119,101,114,112, /* 0x1830 */ 0, 4,127,232, 2,166, 75,255,255,149,116,109,112, 47,112,111, /* 0x1830 */
99, 45,108,105,110,117,120, 46,101,108,102, 45,101,110,116,114, /* 0x1840 */ 119,101,114,112, 99, 45,108,105,110,117,120, 46,101,108,102, 45, /* 0x1840 */
121, 46, 98,105,110, 58, 32, 32, 32, 32, 32,102,105,108,101, 32, /* 0x1850 */ 101,110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32,102, /* 0x1850 */
102,111,114,109, 97,116, 32,101,108,102, 51, 50, 45,112,111,119, /* 0x1860 */ 105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, 50, /* 0x1860 */
101,114,112, 99, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, /* 0x1870 */ 45,112,111,119,101,114,112, 99, 10, 10, 83,101, 99,116,105,111, /* 0x1870 */
73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1880 */ 110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, /* 0x1880 */
32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, /* 0x1890 */ 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, /* 0x1890 */
32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, /* 0x18a0 */ 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, /* 0x18a0 */
70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, /* 0x18b0 */ 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108, /* 0x18b0 */
70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, /* 0x18c0 */ 103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, /* 0x18c0 */
78, 88, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 52, /* 0x18d0 */ 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x18d0 */
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x18e0 */ 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x18e0 */
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, /* 0x18f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x18f0 */
50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1900 */ 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1900 */
82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1910 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x1910 */
32, 32, 49, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, /* 0x1920 */ 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, 69, 65, 68, /* 0x1920 */
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1930 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1930 */
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1940 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1940 */
48, 48, 48, 48, 48, 48, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1950 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, 32, 50, 42, /* 0x1950 */
67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1960 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1960 */
76, 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, /* 0x1970 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, /* 0x1970 */
32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 52, 56, 32, 32, 48, /* 0x1980 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 52, /* 0x1980 */
48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1990 */ 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1990 */
48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, 32, 50, 42, 42, /* 0x19a0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, /* 0x19a0 */
48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x19b0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x19b0 */
79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, /* 0x19c0 */ 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x19c0 */
32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, /* 0x19d0 */ 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, /* 0x19d0 */
48, 48, 48, 48, 49, 50, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x19e0 */ 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 99, 32, 32, 48, 48, 48, /* 0x19e0 */
48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x19f0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x19f0 */
48, 48, 49, 56, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1a00 */ 32, 48, 48, 48, 48, 48, 49, 56, 48, 32, 32, 50, 42, 42, 48, 32, /* 0x1a00 */
84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x1a10 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1a10 */
65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, /* 0x1a20 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 78, /* 0x1a20 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,102, /* 0x1a30 */ 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1a30 */
48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1a40 */ 48, 48, 48,102, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1a40 */
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 97, 99, 32, /* 0x1a50 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1a50 */
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1a60 */ 50, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1a60 */
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1a70 */ 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x1a70 */
10, 32, 32, 53, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, /* 0x1a80 */ 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, 65, 95, 69, 76, /* 0x1a80 */
32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 52, 32, 32, 48, 48, 48, /* 0x1a90 */ 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 52, 32, /* 0x1a90 */
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1aa0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1aa0 */
32, 48, 48, 48, 48, 48, 51, 57, 99, 32, 32, 50, 42, 42, 48, 32, /* 0x1ab0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 57, 99, 32, 32, 50, /* 0x1ab0 */
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1ac0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1ac0 */
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, /* 0x1ad0 */ 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1ad0 */
90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, /* 0x1ae0 */ 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, /* 0x1ae0 */
48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1af0 */ 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, /* 0x1af0 */
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1b00 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1b00 */
52, 50, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1b10 */ 48, 48, 48, 48, 52, 50, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1b10 */
78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x1b20 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1b20 */
55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, /* 0x1b30 */ 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, /* 0x1b30 */
48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1b40 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, /* 0x1b40 */
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1b50 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b50 */
48, 48, 48,100, 98, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1b60 */ 32, 32, 48, 48, 48, 48, 48,100, 98, 99, 32, 32, 50, 42, 42, 48, /* 0x1b60 */
78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1b70 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1b70 */
10, 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, /* 0x1b80 */ 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1b80 */
32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 48, 32, 32, 48, 48, 48, /* 0x1b90 */ 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 48, 32, /* 0x1b90 */
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ba0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1ba0 */
32, 48, 48, 48, 48, 49, 55, 53, 56, 32, 32, 50, 42, 42, 48, 32, /* 0x1bb0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 53, 56, 32, 32, 50, /* 0x1bb0 */
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x1bc0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1bc0 */
78, 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, /* 0x1bd0 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, 95, /* 0x1bd0 */
32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 48, 32, 32, /* 0x1be0 */ 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1be0 */
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1bf0 */ 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1bf0 */
48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 54, 56, 32, 32, 50, 42, /* 0x1c00 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 54, 56, /* 0x1c00 */
42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1c10 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1c10 */
65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 69, 76, 70, 77, 65, /* 0x1c20 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 69, /* 0x1c20 */
73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, /* 0x1c30 */ 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1c30 */
50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1c40 */ 48, 48, 48, 50, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1c40 */
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 56, 56, 32, /* 0x1c50 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, /* 0x1c50 */
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1c60 */ 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1c60 */
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1c70 */ 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x1c70 */
10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, /* 0x1c80 */ 79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x1c80 */
32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 99, 32, 32, 48, 48, 48, /* 0x1c90 */ 90, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 57, 48, 32, /* 0x1c90 */
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ca0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1ca0 */
32, 48, 48, 48, 48, 49, 55, 97, 97, 32, 32, 50, 42, 42, 48, 32, /* 0x1cb0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 97, 97, 32, 32, 50, /* 0x1cb0 */
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1cc0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1cc0 */
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, /* 0x1cd0 */ 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, /* 0x1cd0 */
76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1ce0 */ 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, /* 0x1ce0 */
48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x1cf0 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, /* 0x1cf0 */
69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x1d00 */ 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x1d00 */
77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1d10 */ 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, /* 0x1d10 */
48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, /* 0x1d20 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x1d20 */
73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, /* 0x1d30 */ 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1d30 */
84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1d40 */ 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1d40 */
32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, /* 0x1d50 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, /* 0x1d50 */
48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x1d60 */ 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, /* 0x1d60 */
10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1d70 */ 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1d70 */
32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, /* 0x1d80 */ 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, /* 0x1d80 */
48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, /* 0x1d90 */ 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x1d90 */
48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, /* 0x1da0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1da0 */
70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1db0 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, /* 0x1db0 */
69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1dc0 */ 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, /* 0x1dc0 */
48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, /* 0x1dd0 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x1dd0 */
65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, /* 0x1de0 */ 86, 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1de0 */
72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1df0 */ 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1df0 */
32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, /* 0x1e00 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, /* 0x1e00 */
48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, /* 0x1e10 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, /* 0x1e10 */
48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, /* 0x1e20 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x1e20 */
68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, /* 0x1e30 */ 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, /* 0x1e30 */
10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1e40 */ 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1e40 */
32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e50 */ 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, /* 0x1e50 */
32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1e60 */ 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, /* 0x1e60 */
108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, /* 0x1e70 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x1e70 */
48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x1e80 */ 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1e80 */
95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1e90 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, /* 0x1e90 */
108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1ea0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x1ea0 */
49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x1eb0 */ 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1eb0 */
95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ec0 */ 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, /* 0x1ec0 */
108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1ed0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x1ed0 */
50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x1ee0 */ 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ee0 */
95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ef0 */ 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, /* 0x1ef0 */
103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x1f00 */ 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x1f00 */
9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, /* 0x1f10 */ 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115, /* 0x1f10 */
10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x1f20 */ 116, 97,114,116, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x1f20 */
79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, /* 0x1f30 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, /* 0x1f30 */
78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, /* 0x1f40 */ 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x1f40 */
80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1f50 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1f50 */
86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, /* 0x1f60 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x1f60 */
95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, /* 0x1f70 */ 48, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, /* 0x1f70 */
32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, /* 0x1f80 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, /* 0x1f80 */
48, 48, 55, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x1f90 */ 48, 48, 48, 48, 48, 48, 56, 48, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x1f90 */
32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, /* 0x1fa0 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x1fa0 */
86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x1fb0 */ 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x1fb0 */
89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1fc0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1fc0 */
32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, /* 0x1fd0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, /* 0x1fd0 */
82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, /* 0x1fe0 */ 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, /* 0x1fe0 */
32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, /* 0x1ff0 */ 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, /* 0x1ff0 */
67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x2000 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2000 */
79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, /* 0x2010 */ 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, /* 0x2010 */
69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x2020 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2020 */
32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, /* 0x2030 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2030 */
48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, /* 0x2040 */ 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, /* 0x2040 */
52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, /* 0x2050 */ 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, /* 0x2050 */
10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x2060 */ 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x2060 */
79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, /* 0x2070 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, /* 0x2070 */
58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x2080 */ 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x2080 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2090 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2090 */
85, 69, 10, 48, 48, 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, /* 0x20a0 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 57, 48, 32, /* 0x20a0 */
67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x20b0 */ 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, /* 0x20b0 */
86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x20c0 */ 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, /* 0x20c0 */
79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x20d0 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x20d0 */
76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, /* 0x20e0 */ 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, /* 0x20e0 */
83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x20f0 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x20f0 */
32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2100 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2100 */
48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, /* 0x2110 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67, /* 0x2110 */
49, 52, 32, 32, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x2120 */ 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 76, 90, 77, /* 0x2120 */
67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48, 49, 48, 10, 10, /* 0x2130 */ 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48, /* 0x2130 */
82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2140 */ 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x2140 */
68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2150 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, /* 0x2150 */
93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x2160 */ 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x2160 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x2170 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2170 */
76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, /* 0x2180 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2180 */
80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 69, /* 0x2190 */ 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, /* 0x2190 */
76, 70, 77, 65, 73, 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x21a0 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 10, 82, 69, 76, /* 0x21a0 */
73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x21b0 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x21b0 */
91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, /* 0x21c0 */ 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, /* 0x21c0 */
69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x21d0 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x21d0 */
32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, /* 0x21e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x21e0 */
48, 48, 48, 53, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, /* 0x21f0 */ 10, 48, 48, 48, 48, 48, 48, 53, 48, 32, 82, 95, 80, 80, 67, 95, /* 0x21f0 */
52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2200 */ 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x2200 */
10 /* 0x2210 */ 65, 73, 78, 89, 10 /* 0x2210 */
}; };
+114 -114
View File
@@ -1,5 +1,5 @@
/* powerpc-linux.elf-fold.h /* powerpc-linux.elf-fold.h
created from powerpc-linux.elf-fold.bin, 1944 (0x798) bytes created from powerpc-linux.elf-fold.bin, 1948 (0x79c) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -28,17 +28,17 @@
*/ */
#define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 1944 #define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 1948
#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0x727175e2 #define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0x5d84765f
#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0xe344893c #define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0x99711a49
unsigned char stub_powerpc_linux_elf_fold[1944] = { unsigned char stub_powerpc_linux_elf_fold[1948] = {
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
0, 2, 0, 20, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52, /* 0x 10 */ 0, 2, 0, 20, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52, /* 0x 10 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x 20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x 20 */
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0, /* 0x 30 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0, /* 0x 30 */
0, 16, 0, 0, 0, 0, 7,152, 0, 0, 7,152, 0, 0, 0, 5, /* 0x 40 */ 0, 16, 0, 0, 0, 0, 7,156, 0, 0, 7,156, 0, 0, 0, 5, /* 0x 40 */
0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,152, 0, 0, 0, 0, /* 0x 50 */ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,156, 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 60 */
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
72, 0, 0,125, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 80 */ 72, 0, 0,125, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 80 */
@@ -48,111 +48,111 @@ unsigned char stub_powerpc_linux_elf_fold[1944] = {
125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32, /* 0x c0 */ 125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32, /* 0x c0 */
132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, /* 0x d0 */ 132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, /* 0x d0 */
66, 0,255,240, 78,128, 0, 32,128, 73, 0, 0, 57, 41, 0, 4, /* 0x e0 */ 66, 0,255,240, 78,128, 0, 32,128, 73, 0, 0, 57, 41, 0, 4, /* 0x e0 */
47,130, 0, 0, 64,158,255,244, 78,128, 0, 32,125, 8, 2,166, /* 0x f0 */ 47,130, 0, 0, 64,158,255,244, 78,128, 0, 32, 56, 33, 0, 24, /* 0x f0 */
129, 33, 0, 0, 75,255,255,229, 75,255,255,225,128,159,255,248, /* 0x 100 */ 125, 8, 2,166,129, 33, 0, 0, 75,255,255,225, 75,255,255,221, /* 0x 100 */
85, 30, 0, 38,127,231,251,120,127,164,248, 80, 56,161,248, 0, /* 0x 110 */ 128,159,255,248, 85, 30, 0, 38,127,231,251,120,127,164,248, 80, /* 0x 110 */
59,189,255,248, 56,132,255,140, 56,125, 0,116, 56, 33,247,240, /* 0x 120 */ 56,161,248, 0, 59,189,255,248, 56,132,255,140, 56,125, 0,116, /* 0x 120 */
128,195, 0, 24, 72, 0, 5, 13,124,127, 27,120,127,163,235,120, /* 0x 130 */ 56, 33,247,232,128,195, 0, 24, 72, 0, 5, 13,124,127, 27,120, /* 0x 130 */
124,157,240, 80, 72, 0, 0, 81,127,232, 3,166,184, 65, 8, 20, /* 0x 140 */ 127,163,235,120,124,157,240, 80, 72, 0, 0, 81,127,232, 3,166, /* 0x 140 */
128, 33, 8, 16, 78,128, 0, 32, 56, 0, 0, 90, 68, 0, 0, 2, /* 0x 150 */ 184, 65, 8, 28,128, 33, 8, 24, 78,128, 0, 32, 56, 0, 0, 90, /* 0x 150 */
64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, /* 0x 160 */ 68, 0, 0, 2, 64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32, /* 0x 160 */
75,255,255,236, 56, 0, 0, 3, 75,255,255,228, 56, 0, 0, 5, /* 0x 170 */ 56, 0, 0, 1, 75,255,255,236, 56, 0, 0, 3, 75,255,255,228, /* 0x 170 */
75,255,255,220, 56, 0, 0, 6, 75,255,255,212, 56, 0, 0,125, /* 0x 180 */ 56, 0, 0, 5, 75,255,255,220, 56, 0, 0, 6, 75,255,255,212, /* 0x 180 */
75,255,255,204, 56, 0, 0, 91, 75,255,255,196, 56, 0, 0, 45, /* 0x 190 */ 56, 0, 0,125, 75,255,255,204, 56, 0, 0, 91, 75,255,255,196, /* 0x 190 */
75,255,255,188,124, 8, 2,166,148, 33,255,240,144, 1, 0, 20, /* 0x 1a0 */ 56, 0, 0, 45, 75,255,255,188,124, 8, 2,166,148, 33,255,240, /* 0x 1a0 */
128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, 64,188, 0, 12, /* 0x 1b0 */ 144, 1, 0, 20,128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, /* 0x 1b0 */
56, 96, 0,127, 75,255,255,169, 47,133, 0, 0, 65,158, 0, 28, /* 0x 1c0 */ 64,188, 0, 12, 56, 96, 0,127, 75,255,255,169, 47,133, 0, 0, /* 0x 1c0 */
124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1,152, 4, 0, 0, /* 0x 1d0 */ 65,158, 0, 28,124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1, /* 0x 1d0 */
56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0,129, 35, 0, 4, /* 0x 1e0 */ 152, 4, 0, 0, 56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0, /* 0x 1e0 */
124, 5, 0, 80,144, 3, 0, 0,128, 1, 0, 20,125, 41, 42, 20, /* 0x 1f0 */ 129, 35, 0, 4,124, 5, 0, 80,144, 3, 0, 0,128, 1, 0, 20, /* 0x 1f0 */
124, 8, 3,166, 56, 33, 0, 16,145, 35, 0, 4, 78,128, 0, 32, /* 0x 200 */ 125, 41, 42, 20,124, 8, 3,166, 56, 33, 0, 16,145, 35, 0, 4, /* 0x 200 */
124, 8, 2,166,148, 33,255,192,144, 1, 0, 68,128, 4, 0, 0, /* 0x 210 */ 78,128, 0, 32,124, 8, 2,166,148, 33,255,192,144, 1, 0, 68, /* 0x 210 */
191,129, 0, 48, 47,128, 0, 0,124,159, 35,120,124,126, 27,120, /* 0x 220 */ 128, 4, 0, 0,191,129, 0, 48, 47,128, 0, 0,124,159, 35,120, /* 0x 220 */
124,188, 43,120,124,221, 51,120, 65,158, 1, 36, 56,160, 0, 12, /* 0x 230 */ 124,126, 27,120,124,188, 43,120,124,221, 51,120, 65,158, 1, 36, /* 0x 230 */
127,195,243,120, 56,129, 0, 16, 75,255,255, 93,129, 33, 0, 16, /* 0x 240 */ 56,160, 0, 12,127,195,243,120, 56,129, 0, 16, 75,255,255, 93, /* 0x 240 */
128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, 60, 0, 33, 88, /* 0x 250 */ 129, 33, 0, 16,128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, /* 0x 250 */
96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28,128, 30, 0, 0, /* 0x 260 */ 60, 0, 33, 88, 96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28, /* 0x 260 */
47,128, 0, 0, 65,190, 0,232, 72, 0, 0, 12, 47,133, 0, 0, /* 0x 270 */ 128, 30, 0, 0, 47,128, 0, 0, 65,190, 0,232, 72, 0, 0, 12, /* 0x 270 */
64,190, 0, 12, 56, 96, 0,127, 75,255,254,229,127, 5, 72, 64, /* 0x 280 */ 47,133, 0, 0, 64,190, 0, 12, 56, 96, 0,127, 75,255,254,229, /* 0x 280 */
65,185,255,244,128, 31, 0, 0,127,137, 0, 64, 65,189,255,232, /* 0x 290 */ 127, 5, 72, 64, 65,185,255,244,128, 31, 0, 0,127,137, 0, 64, /* 0x 290 */
128, 31, 0, 4, 64,152, 0,136,124,164, 43,120,128,126, 0, 4, /* 0x 2a0 */ 65,189,255,232,128, 31, 0, 4, 64,152, 0,136,124,164, 43,120, /* 0x 2a0 */
124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24,145, 33, 0, 32, /* 0x 2b0 */ 128,126, 0, 4,124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24, /* 0x 2b0 */
127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0, 64,190,255,184, /* 0x 2c0 */ 145, 33, 0, 32,127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0, /* 0x 2c0 */
128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0, 64,190,255,168, /* 0x 2d0 */ 64,190,255,184,128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0, /* 0x 2d0 */
136,193, 0, 25, 49, 61,255,255,124, 9,233, 16,125, 38, 0,208, /* 0x 2e0 */ 64,190,255,168,136,193, 0, 25, 49, 61,255,255,124, 9,233, 16, /* 0x 2e0 */
85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4, /* 0x 2f0 */ 125, 38, 0,208, 85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20, /* 0x 2f0 */
136,161, 0, 26,127,168, 3,166, 78,128, 0, 33,128, 30, 0, 4, /* 0x 300 */ 128,127, 0, 4,136,161, 0, 26,127,168, 3,166, 78,128, 0, 33, /* 0x 300 */
129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80, /* 0x 310 */ 128, 30, 0, 4,129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20, /* 0x 310 */
144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120, /* 0x 320 */ 125, 43, 72, 80,144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16, /* 0x 320 */
127,195,243,120, 75,255,254,113,129, 97, 0, 16,129, 63, 0, 0, /* 0x 330 */ 124, 4, 3,120,127,195,243,120, 75,255,254,113,129, 97, 0, 16, /* 0x 330 */
128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20, /* 0x 340 */ 129, 63, 0, 0,128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0, /* 0x 340 */
144, 31, 0, 4,145, 63, 0, 0, 75,255,254,224,128, 1, 0, 68, /* 0x 350 */ 124, 0, 90, 20,144, 31, 0, 4,145, 63, 0, 0, 75,255,254,224, /* 0x 350 */
187,129, 0, 48,124, 8, 3,166, 56, 33, 0, 64, 78,128, 0, 32, /* 0x 360 */ 128, 1, 0, 68,187,129, 0, 48,124, 8, 3,166, 56, 33, 0, 64, /* 0x 360 */
44, 3, 0, 0, 77,130, 0, 32, 48, 4,255,255,125, 96, 33, 16, /* 0x 370 */ 78,128, 0, 32, 44, 3, 0, 0, 77,130, 0, 32, 48, 4,255,255, /* 0x 370 */
128, 3, 0, 0,127,128, 32, 0,104, 9, 0, 1, 33, 73, 0, 0, /* 0x 380 */ 125, 96, 33, 16,128, 3, 0, 0,127,128, 32, 0,104, 9, 0, 1, /* 0x 380 */
125, 42, 73, 20,125, 42, 88, 57, 65,158, 0, 8, 65,162, 0, 16, /* 0x 390 */ 33, 73, 0, 0,125, 42, 73, 20,125, 42, 88, 57, 65,158, 0, 8, /* 0x 390 */
144,163, 0, 4,144,131, 0, 0, 78,128, 0, 32, 56, 99, 0, 8, /* 0x 3a0 */ 65,162, 0, 16,144,163, 0, 4,144,131, 0, 0, 78,128, 0, 32, /* 0x 3a0 */
75,255,255,208,124, 8, 2,166,148, 33,255,160,144, 1, 0,100, /* 0x 3b0 */ 56, 99, 0, 8, 75,255,255,208,124, 8, 2,166,148, 33,255,160, /* 0x 3b0 */
160, 3, 0, 16,161, 67, 0, 44,125,128, 0, 38,129, 35, 0, 28, /* 0x 3c0 */ 144, 1, 0,100,160, 3, 0, 16,161, 67, 0, 44,125,128, 0, 38, /* 0x 3c0 */
104, 0, 0, 3, 53, 74,255,255,124, 0, 0,208,190, 65, 0, 40, /* 0x 3d0 */ 129, 35, 0, 28,104, 0, 0, 3, 53, 74,255,255,124, 0, 0,208, /* 0x 3d0 */
127,163, 74, 20,124,121, 27,120, 84, 3, 46,246,145,129, 0, 36, /* 0x 3e0 */ 190, 65, 0, 40,127,163, 74, 20,124,121, 27,120, 84, 3, 46,246, /* 0x 3e0 */
124,151, 35,120,124,178, 43,120,124,211, 51,120,124,244, 59,120, /* 0x 3f0 */ 145,129, 0, 36,124,151, 35,120,124,178, 43,120,124,211, 51,120, /* 0x 3f0 */
125, 21, 67,120, 56, 99, 8, 34,127,171,235,120, 59,224,255,255, /* 0x 400 */ 124,244, 59,120,125, 21, 67,120, 56, 99, 8, 34,127,171,235,120, /* 0x 400 */
59,192, 0, 0, 65,128, 0, 68, 57, 74, 0, 1,125, 73, 3,166, /* 0x 410 */ 59,224,255,255, 59,192, 0, 0, 65,128, 0, 68, 57, 74, 0, 1, /* 0x 410 */
128, 11, 0, 0, 47,128, 0, 1, 64,190, 0, 40,129, 43, 0, 8, /* 0x 420 */ 125, 73, 3,166,128, 11, 0, 0, 47,128, 0, 1, 64,190, 0, 40, /* 0x 420 */
127,137,248, 64, 64,156, 0, 8,125, 63, 75,120,128, 11, 0, 20, /* 0x 430 */ 129, 43, 0, 8,127,137,248, 64, 64,156, 0, 8,125, 63, 75,120, /* 0x 430 */
124, 0, 74, 20,127,158, 0, 64, 64,156, 0, 8,124, 30, 3,120, /* 0x 440 */ 128, 11, 0, 20,124, 0, 74, 20,127,158, 0, 64, 64,156, 0, 8, /* 0x 440 */
57,107, 0, 32, 66, 0,255,204, 87,255, 0, 38,125, 63,240, 80, /* 0x 450 */ 124, 30, 3,120, 57,107, 0, 32, 66, 0,255,204, 87,255, 0, 38, /* 0x 450 */
57, 41, 15,255, 85, 62, 0, 38,124,102, 27,120,127,196,243,120, /* 0x 460 */ 125, 63,240, 80, 57, 41, 15,255, 85, 62, 0, 38,124,102, 27,120, /* 0x 460 */
127,227,251,120, 56,160, 0, 0, 56,224,255,255, 57, 0, 0, 0, /* 0x 470 */ 127,196,243,120,127,227,251,120, 56,160, 0, 0, 56,224,255,255, /* 0x 470 */
75,255,252,217,160, 25, 0, 44, 58,192, 0, 0,127,150, 0, 0, /* 0x 480 */ 57, 0, 0, 0, 75,255,252,217,160, 25, 0, 44, 58,192, 0, 0, /* 0x 480 */
124, 3,242, 20,144, 1, 0, 8,127, 31, 24, 80, 64,156, 1,128, /* 0x 490 */ 127,150, 0, 0,124, 3,242, 20,144, 1, 0, 8,127, 31, 24, 80, /* 0x 490 */
46, 23, 0, 0, 65,146, 0, 40,128, 29, 0, 0, 47,128, 0, 6, /* 0x 4a0 */ 64,156, 1,128, 46, 23, 0, 0, 65,146, 0, 40,128, 29, 0, 0, /* 0x 4a0 */
64,190, 0, 28,128,189, 0, 8,126, 99,155,120,124,165,194, 20, /* 0x 4b0 */ 47,128, 0, 6, 64,190, 0, 28,128,189, 0, 8,126, 99,155,120, /* 0x 4b0 */
56,128, 0, 3, 75,255,254,173, 72, 0, 1, 64,128, 29, 0, 0, /* 0x 4c0 */ 124,165,194, 20, 56,128, 0, 3, 75,255,254,173, 72, 0, 1, 64, /* 0x 4c0 */
47,128, 0, 1, 64,190, 1, 52,128, 29, 0, 24,129, 93, 0, 8, /* 0x 4d0 */ 128, 29, 0, 0, 47,128, 0, 1, 64,190, 1, 52,128, 29, 0, 24, /* 0x 4d0 */
61, 32,115, 81, 84, 0, 22,250, 97, 41, 98, 64,129,125, 0, 20, /* 0x 4e0 */ 129, 93, 0, 8, 61, 32,115, 81, 84, 0, 22,250, 97, 41, 98, 64, /* 0x 4e0 */
125, 41, 4, 48, 85, 94, 5, 62, 48, 23,255,255,124,160,185, 16, /* 0x 4f0 */ 129,125, 0, 20,125, 41, 4, 48, 85, 94, 5, 62, 48, 23,255,255, /* 0x 4f0 */
128, 29, 0, 16, 85, 58, 7,126,127,106, 90, 20, 84,165, 8, 60, /* 0x 500 */ 124,160,185, 16,128, 29, 0, 16, 85, 58, 7,126,127,106, 90, 20, /* 0x 500 */
127,254, 80, 80,144, 1, 0, 16,145, 65, 0, 20,127,128,242, 20, /* 0x 510 */ 84,165, 8, 60,127,254, 80, 80,144, 1, 0, 16,145, 65, 0, 20, /* 0x 510 */
127,255,194, 20,127,123,194, 20,124,165,211,120, 65,146, 0, 12, /* 0x 520 */ 127,128,242, 20,127,255,194, 20,127,123,194, 20,124,165,211,120, /* 0x 520 */
56,192, 0, 50, 72, 0, 0, 8, 56,192, 0, 18, 64,146, 0, 12, /* 0x 530 */ 65,146, 0, 12, 56,192, 0, 50, 72, 0, 0, 8, 56,192, 0, 18, /* 0x 530 */
126, 71,147,120, 72, 0, 0, 8, 56,224,255,255,129, 29, 0, 4, /* 0x 540 */ 64,146, 0, 12,126, 71,147,120, 72, 0, 0, 8, 56,224,255,255, /* 0x 540 */
127,227,251,120,125, 30, 64, 80,127,132,227,120, 75,255,251,253, /* 0x 550 */ 129, 29, 0, 4,127,227,251,120,125, 30, 64, 80,127,132,227,120, /* 0x 550 */
127,159, 24, 0, 64,158, 0,104, 65,178, 0, 24,126,227,187,120, /* 0x 560 */ 75,255,251,253,127,159, 24, 0, 64,158, 0,104, 65,178, 0, 24, /* 0x 560 */
56,129, 0, 16,126,133,163,120,126,166,171,120, 75,255,252,149, /* 0x 570 */ 126,227,187,120, 56,129, 0, 16,126,133,163,120,126,166,171,120, /* 0x 570 */
115, 64, 0, 2,124, 28, 0,208, 84, 30, 5, 62, 65,130, 0, 36, /* 0x 580 */ 75,255,252,149,115, 64, 0, 2,124, 28, 0,208, 84, 30, 5, 62, /* 0x 580 */
47,158, 0, 0,125, 63,226, 20, 65,158, 0, 24,127,201, 3,166, /* 0x 590 */ 65,130, 0, 36, 47,158, 0, 0,125, 63,226, 20, 65,158, 0, 24, /* 0x 590 */
56, 0, 0, 0,152, 9, 0, 0, 57, 41, 0, 1, 66, 0,255,248, /* 0x 5a0 */ 127,201, 3,166, 56, 0, 0, 0,152, 9, 0, 0, 57, 41, 0, 1, /* 0x 5a0 */
65,178, 0, 36,127,227,251,120,127,132,227,120,127, 69,211,120, /* 0x 5b0 */ 66, 0,255,248, 65,178, 0, 36,127,227,251,120,127,132,227,120, /* 0x 5b0 */
75,255,251,205, 47,131, 0, 0, 65,190, 0, 12, 56, 96, 0,127, /* 0x 5c0 */ 127, 69,211,120, 75,255,251,205, 47,131, 0, 0, 65,190, 0, 12, /* 0x 5c0 */
75,255,251,157,124, 28,242, 20,127,255, 2, 20,127,159,216, 64, /* 0x 5d0 */ 56, 96, 0,127, 75,255,251,157,124, 28,242, 20,127,255, 2, 20, /* 0x 5d0 */
64,188, 0, 40,124,159,216, 80,127, 69,211,120,127,227,251,120, /* 0x 5e0 */ 127,159,216, 64, 64,188, 0, 40,124,159,216, 80,127, 69,211,120, /* 0x 5e0 */
56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, 75,255,251, 93, /* 0x 5f0 */ 127,227,251,120, 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, /* 0x 5f0 */
127,159, 24, 0, 64,190,255,200,160, 25, 0, 44, 58,214, 0, 1, /* 0x 600 */ 75,255,251, 93,127,159, 24, 0, 64,190,255,200,160, 25, 0, 44, /* 0x 600 */
127,150, 0, 0, 59,189, 0, 32, 75,255,254,132,128,121, 0, 24, /* 0x 610 */ 58,214, 0, 1,127,150, 0, 0, 59,189, 0, 32, 75,255,254,132, /* 0x 610 */
128, 1, 0,100,129,129, 0, 36,124, 99,194, 20,124, 8, 3,166, /* 0x 620 */ 128,121, 0, 24,128, 1, 0,100,129,129, 0, 36,124, 99,194, 20, /* 0x 620 */
186, 65, 0, 40,125,128,129, 32, 56, 33, 0, 96, 78,128, 0, 32, /* 0x 630 */ 124, 8, 3,166,186, 65, 0, 40,125,128,129, 32, 56, 33, 0, 96, /* 0x 630 */
124, 8, 2,166,148, 33,255,192,144, 1, 0, 68, 56,132,255,232, /* 0x 640 */ 78,128, 0, 32,124, 8, 2,166,148, 33,255,192,144, 1, 0, 68, /* 0x 640 */
56, 3, 0, 24,144, 1, 0, 12,144,129, 0, 8,128, 3, 0, 24, /* 0x 650 */ 56,132,255,232, 56, 3, 0, 24,144, 1, 0, 12,144,129, 0, 8, /* 0x 650 */
191, 97, 0, 44,129, 97, 0, 8,124,191, 43,120,129,129, 0, 12, /* 0x 660 */ 128, 3, 0, 24,191, 97, 0, 44,129, 97, 0, 8,124,191, 43,120, /* 0x 660 */
124,229, 59,120, 56,192, 0, 0, 56, 97, 0, 8, 56,129, 0, 16, /* 0x 670 */ 129,129, 0, 12,124,229, 59,120, 56,192, 0, 0, 56, 97, 0, 8, /* 0x 670 */
59,223, 0, 52,125, 61, 75,120,124,251, 59,120,144, 1, 0, 16, /* 0x 680 */ 56,129, 0, 16, 59,223, 0, 52,125, 61, 75,120,124,251, 59,120, /* 0x 680 */
125, 28, 67,120,145, 97, 0, 24,145,129, 0, 28,147,225, 0, 20, /* 0x 690 */ 144, 1, 0, 16,125, 28, 67,120,145, 97, 0, 24,145,129, 0, 28, /* 0x 690 */
75,255,251,113,128,190, 0, 8,127,163,235,120, 56,165, 0, 52, /* 0x 6a0 */ 147,225, 0, 20, 75,255,251,113,128,190, 0, 8,127,163,235,120, /* 0x 6a0 */
56,128, 0, 3, 75,255,252,189,160,191, 0, 44,127,163,235,120, /* 0x 6b0 */ 56,165, 0, 52, 56,128, 0, 3, 75,255,252,189,160,191, 0, 44, /* 0x 6b0 */
56,128, 0, 5, 75,255,252,173,128,191, 0, 24,127,163,235,120, /* 0x 6c0 */ 127,163,235,120, 56,128, 0, 5, 75,255,252,173,128,191, 0, 24, /* 0x 6c0 */
56,128, 0, 9, 75,255,252,157,127,103,219,120,127,136,227,120, /* 0x 6d0 */ 127,163,235,120, 56,128, 0, 9, 75,255,252,157,127,103,219,120, /* 0x 6d0 */
127,227,251,120,127,166,235,120, 56,129, 0, 24, 56,160, 0, 0, /* 0x 6e0 */ 127,136,227,120,127,227,251,120,127,166,235,120, 56,129, 0, 24, /* 0x 6e0 */
75,255,252,197,160, 31, 0, 44,124,124, 27,120, 59, 96, 0, 0, /* 0x 6f0 */ 56,160, 0, 0, 75,255,252,197,160, 31, 0, 44,124,124, 27,120, /* 0x 6f0 */
127,155, 0, 0, 64,156, 0,124,128, 30, 0, 0, 59,123, 0, 1, /* 0x 700 */ 59, 96, 0, 0,127,155, 0, 0, 64,156, 0,124,128, 30, 0, 0, /* 0x 700 */
47,128, 0, 3, 56,128, 0, 0, 56,160, 0, 0, 64,190, 0, 88, /* 0x 710 */ 59,123, 0, 1, 47,128, 0, 3, 56,128, 0, 0, 56,160, 0, 0, /* 0x 710 */
128,126, 0, 8, 75,255,250, 89,124,125, 27,121,127,228,251,120, /* 0x 720 */ 64,190, 0, 88,128,126, 0, 8, 75,255,250, 89,124,125, 27,121, /* 0x 720 */
56,160, 2, 0, 65,128, 0, 40, 75,255,250, 61, 47,131, 2, 0, /* 0x 730 */ 127,228,251,120, 56,160, 2, 0, 65,128, 0, 40, 75,255,250, 61, /* 0x 730 */
56,128, 0, 0,127,227,251,120,127,165,235,120, 56,192, 0, 0, /* 0x 740 */ 47,131, 2, 0, 56,128, 0, 0,127,227,251,120,127,165,235,120, /* 0x 740 */
56,224, 0, 0, 57, 0, 0, 0, 65,190, 0, 12, 56, 96, 0,127, /* 0x 750 */ 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, 65,190, 0, 12, /* 0x 750 */
75,255,250, 13, 75,255,252, 81,124,124, 27,120,127,163,235,120, /* 0x 760 */ 56, 96, 0,127, 75,255,250, 13, 75,255,252, 81,124,124, 27,120, /* 0x 760 */
75,255,250, 21,160, 31, 0, 44, 59,222, 0, 32, 75,255,255,132, /* 0x 770 */ 127,163,235,120, 75,255,250, 21,160, 31, 0, 44, 59,222, 0, 32, /* 0x 770 */
128, 1, 0, 68,127,131,227,120,124, 8, 3,166,187, 97, 0, 44, /* 0x 780 */ 75,255,255,132,128, 1, 0, 68,127,131,227,120,124, 8, 3,166, /* 0x 780 */
56, 33, 0, 64, 78,128, 0, 32 /* 0x 790 */ 187, 97, 0, 44, 56, 33, 0, 64, 78,128, 0, 32 /* 0x 790 */
}; };
@@ -0,0 +1,37 @@
/* powerpc-linux.kernel.vmlinux-head.h
created from powerpc-linux.kernel.vmlinux-head.bin, 8 (0x8) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2007 Laszlo Molnar
Copyright (C) 2000-2007 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>
*/
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_HEAD_SIZE 8
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_HEAD_ADLER32 0x0ec30259
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_HEAD_CRC32 0xbb153f5c
unsigned char stub_powerpc_linux_kernel_vmlinux_head[8] = {
127,232, 2,166, 72, 0, 0, 1 /* 0x 0 */
};
+588
View File
@@ -0,0 +1,588 @@
/* powerpc-linux.kernel.vmlinux.h
created from powerpc-linux.kernel.vmlinux.bin, 8823 (0x2277) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2007 Laszlo Molnar
Copyright (C) 2000-2007 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>
*/
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_SIZE 8823
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_ADLER32 0xf9f4e72f
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_CRC32 0x2ccf6e01
unsigned char stub_powerpc_linux_kernel_vmlinux[8823] = {
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
0, 0, 24,164, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */
0, 23, 0, 20, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, /* 0x 30 */
0, 0, 0, 0, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 40 */
77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8, /* 0x 50 */
124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252, /* 0x 60 */
124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80, /* 0x 70 */
125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32, /* 0x 80 */
132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, /* 0x 90 */
66, 0,255,240, 78,128, 0, 32,124, 0, 41,236,125,168, 2,166, /* 0x a0 */
40, 7, 0, 2, 64,130, 0,228,144,166, 0, 0,124,132, 26, 20, /* 0x b0 */
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x c0 */
57, 64,255,255, 72, 0, 0,180,124, 9, 0, 64,125, 41, 72, 20, /* 0x d0 */
76,162, 0, 32, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4, /* 0x e0 */
124, 9, 0, 64,125, 41, 73, 20, 78,128, 0, 32,141, 3, 0, 1, /* 0x f0 */
157, 5, 0, 1, 75,255,255,213, 65,129,255,244, 56,224, 0, 1, /* 0x 100 */
75,255,255,201,124,231, 57, 21, 75,255,255,193, 65,160,255,244, /* 0x 110 */
52,231,255,253, 57, 0, 0, 0, 65,128, 0, 20,140, 67, 0, 1, /* 0x 120 */
84,231, 64, 46,124,234, 16,249, 65,130, 0, 0, 75,255,255,157, /* 0x 130 */
125, 8, 65, 21, 75,255,255,149,125, 8, 65, 21, 56,224, 0, 1, /* 0x 140 */
64,130, 0, 28, 56,224, 0, 3, 57, 0, 0, 1, 75,255,255,125, /* 0x 150 */
125, 8, 65, 21, 75,255,255,117, 65,160,255,244, 32, 74,242,255, /* 0x 160 */
125, 8, 57, 20,124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1, /* 0x 170 */
157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,124, 7, 41,236, /* 0x 180 */
124, 7, 26, 44, 75,255,255,112,124, 0, 41,236,125,168, 2,166, /* 0x 190 */
40, 7, 0, 5, 64,130, 1, 32,144,166, 0, 0,124,132, 26, 20, /* 0x 1a0 */
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 1b0 */
57, 64,255,255, 72, 0, 0,240, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 1c0 */
56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1, /* 0x 1d0 */
78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64, /* 0x 1e0 */
125, 41, 74, 20, 65,162,255,213, 65,129,255,236, 56,224, 0, 1, /* 0x 1f0 */
72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,162,255,189, /* 0x 200 */
124,231, 57, 21,125, 41, 72, 21, 65,162,255,177,124,231, 57, 21, /* 0x 210 */
124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161, 65,160,255,216, /* 0x 220 */
57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,128, 0, 24, /* 0x 230 */
140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,130, 0, 0, /* 0x 240 */
72, 0, 0, 12,125, 41, 72, 21, 65,162,255,113,125, 8, 65, 21, /* 0x 250 */
125, 41, 72, 21, 65,162,255,101,125, 8, 65, 21, 64,130, 0, 40, /* 0x 260 */
57, 0, 0, 1,125, 41, 72, 21, 65,162,255, 81,125, 8, 65, 21, /* 0x 270 */
124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 65, 65,160,255,232, /* 0x 280 */
57, 8, 0, 2, 32,234,250,255, 57, 8, 0, 1,125, 8, 1,148, /* 0x 290 */
124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, /* 0x 2a0 */
66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, /* 0x 2b0 */
75,255,255, 44,124, 0, 41,236,125,168, 2,166, 40, 7, 0, 8, /* 0x 2c0 */
64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0, /* 0x 2d0 */
61, 32,128, 0, 56, 99,255,255, 56,165,255,255, 57, 64,255,255, /* 0x 2e0 */
72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4, /* 0x 2f0 */
124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1, 78,128, 0, 32, /* 0x 300 */
141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64,125, 41, 74, 20, /* 0x 310 */
65,162,255,213, 65,129,255,236, 56,224, 0, 1, 72, 0, 0, 20, /* 0x 320 */
56,231,255,255,125, 41, 72, 21, 65,162,255,189,124,231, 57, 20, /* 0x 330 */
125, 41, 72, 21, 65,162,255,177,124,231, 57, 20,124, 9, 0, 64, /* 0x 340 */
125, 41, 74, 20, 65,162,255,161, 65,160,255,216, 57, 0, 0, 0, /* 0x 350 */
52,231,255,253, 84,231, 64, 46, 65,128, 0, 32,140, 67, 0, 1, /* 0x 360 */
124,234, 16,249,125, 74, 14,112, 65,130, 0, 0,112, 66, 0, 1, /* 0x 370 */
65,162, 0, 80, 72, 0, 0, 20,124, 9, 0, 64,125, 41, 74, 20, /* 0x 380 */
65,162,255,101, 65,161, 0, 60, 57, 0, 0, 1,124, 9, 0, 64, /* 0x 390 */
125, 41, 74, 20, 65,162,255, 81, 65,161, 0, 40,125, 41, 72, 21, /* 0x 3a0 */
65,162,255, 69,125, 8, 65, 20,124, 9, 0, 64,125, 41, 74, 20, /* 0x 3b0 */
65,162,255, 53, 65,160,255,232, 57, 8, 0, 2, 72, 0, 0, 16, /* 0x 3c0 */
125, 41, 72, 21, 65,162,255, 33,125, 8, 65, 20, 32,234,250,255, /* 0x 3d0 */
57, 8, 0, 2,125, 8, 1,148,124,234, 42, 20,125, 9, 3,166, /* 0x 3e0 */
141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0, /* 0x 3f0 */
124, 7, 41,236,124, 7, 26, 44, 75,255,255, 16, 40, 7, 0, 14, /* 0x 400 */
64,130, 0, 16,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, /* 0x 410 */
124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 8, /* 0x 420 */
136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0, /* 0x 430 */
124, 99, 88, 48, 56, 99,241,132,124, 38, 11,120,124, 33, 26, 20, /* 0x 440 */
84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0, /* 0x 450 */
148, 3,255,252,124, 1, 24, 64, 65,128,255,248,144,193, 0, 0, /* 0x 460 */
136, 4,255,255, 56,193, 0, 8, 56, 97, 0, 12, 84, 11,225, 62, /* 0x 470 */
84, 0, 7, 62,152, 67, 0, 2,153, 99, 0, 1,152, 3, 0, 0, /* 0x 480 */
124, 8, 2,166,148, 33,255,160,189,193, 0, 24,144, 1, 0,100, /* 0x 490 */
59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0, /* 0x 4a0 */
147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166, /* 0x 4b0 */
124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54, /* 0x 4c0 */
127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48, /* 0x 4d0 */
57, 41,255,255, 57,107,255,255,145, 33, 0, 8,124,206, 51,120, /* 0x 4e0 */
124,147, 35,120,124,245, 59,120,125, 20, 67,120,145, 97, 0, 12, /* 0x 4f0 */
59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1, /* 0x 500 */
58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0, /* 0x 510 */
64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60, /* 0x 520 */
125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20, /* 0x 530 */
126,108,155,120, 56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0, /* 0x 540 */
127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46, /* 0x 550 */
65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120, /* 0x 560 */
64,153,255,224,127,153,160, 64, 64,156, 8,100, 62,192, 0,255, /* 0x 570 */
98,214,255,255,128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56, /* 0x 580 */
86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32, /* 0x 590 */
127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46, /* 0x 5a0 */
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46, /* 0x 5b0 */
85, 0,170,254,125, 64, 57,214,127,133, 80, 64, 64,156, 1,172, /* 0x 5c0 */
128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8, /* 0x 5d0 */
127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0, /* 0x 5e0 */
32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20, /* 0x 5f0 */
124, 6,195, 46,125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1, /* 0x 600 */
64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,127,245, 0,174, /* 0x 610 */
99,123,255,255, 87,255, 8, 60, 87,252, 5,238,127,136,216, 64, /* 0x 620 */
87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0, /* 0x 630 */
84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176, /* 0x 640 */
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x 650 */
161,103, 2, 0, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x 660 */
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x 670 */
47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,125, 10, 64, 80, /* 0x 680 */
64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24, /* 0x 690 */
72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1, /* 0x 6a0 */
65,154, 0, 12, 47,131, 0,255, 64,157,255,108, 47,131, 0,255, /* 0x 6b0 */
65,157, 0,132, 63,224, 0,255, 99,255,255,255,127,136,248, 64, /* 0x 6c0 */
84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, /* 0x 6d0 */
65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46, /* 0x 6e0 */
57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254, /* 0x 6f0 */
125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, /* 0x 700 */
85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, /* 0x 710 */
64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16, /* 0x 720 */
124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255, /* 0x 730 */
64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,127,249,169,174, /* 0x 740 */
59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120, /* 0x 750 */
47,151, 0, 9, 65,157, 0, 12, 58,247,255,253, 72, 0, 6,104, /* 0x 760 */
58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64, /* 0x 770 */
84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46, /* 0x 780 */
124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,127,140,232, 0, /* 0x 790 */
65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x 7a0 */
85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128, 85, 0,170,254, /* 0x 7b0 */
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0, /* 0x 7c0 */
47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128, /* 0x 7d0 */
126, 15,131,120,125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0, /* 0x 7e0 */
127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120, /* 0x 7f0 */
56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64, /* 0x 800 */
85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128, /* 0x 810 */
65,157, 0, 32,127,140,232, 0, 65,158, 5,212,137, 44, 0, 0, /* 0x 820 */
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x 830 */
161,103, 1,152, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x 840 */
64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,124, 0, 46,112, /* 0x 850 */
86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60, /* 0x 860 */
176, 7, 1,152,125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32, /* 0x 870 */
127,140,232, 0, 65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46, /* 0x 880 */
124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224, /* 0x 890 */
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72, /* 0x 8a0 */
32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20, /* 0x 8b0 */
176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6, /* 0x 8c0 */
57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80, /* 0x 8d0 */
127,245, 0,174,125, 55, 75,120,127,249,169,174, 59, 57, 0, 1, /* 0x 8e0 */
72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x 8f0 */
125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80, /* 0x 900 */
127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x 910 */
176, 7, 1,152, 65,157, 0, 32,127,140,232, 0, 65,158, 4,208, /* 0x 920 */
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x 930 */
57,140, 0, 1,161,103, 1,176, 85, 0,170,254,125, 64, 89,214, /* 0x 940 */
127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112, /* 0x 950 */
124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,176, 7, 1,176, /* 0x 960 */
72, 0, 0,140,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126, /* 0x 970 */
124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32, /* 0x 980 */
127,140,232, 0, 65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46, /* 0x 990 */
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200, /* 0x 9a0 */
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, /* 0x 9b0 */
32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, /* 0x 9c0 */
126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126, /* 0x 9d0 */
124, 0, 88, 80,125,233,123,120,176, 7, 1,200,124,170, 40, 80, /* 0x 9e0 */
125, 10, 64, 80,126, 15,131,120,126, 48,139,120,127, 81,211,120, /* 0x 9f0 */
125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8, /* 0x a00 */
56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,127,136,176, 64, /* 0x a10 */
65,157, 0, 32,127,140,232, 0, 65,158, 3,212,137, 44, 0, 0, /* 0x a20 */
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x a30 */
161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x a40 */
64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20, /* 0x a50 */
124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4, /* 0x a60 */
59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156, /* 0x a70 */
125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80, /* 0x a80 */
124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0, /* 0x a90 */
65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x aa0 */
85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2, 85, 0,170,254, /* 0x ab0 */
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, /* 0x ac0 */
84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20, /* 0x ad0 */
125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3, /* 0x ae0 */
176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80, /* 0x af0 */
124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4, /* 0x b00 */
59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166, 63,224, 0,255, /* 0x b10 */
99,255,255,255, 56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60, /* 0x b20 */
127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, /* 0x b30 */
65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x b40 */
125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x b50 */
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x b60 */
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x b70 */
125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80, /* 0x b80 */
56,103, 0, 1,125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1, /* 0x b90 */
47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20, /* 0x ba0 */
65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,124,105, 27,120, /* 0x bb0 */
64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20, /* 0x bc0 */
56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255, /* 0x bd0 */
99,255,255,255, 56,128, 0, 1,127,136,248, 64, 84,135, 8, 60, /* 0x be0 */
127, 12,232, 0, 84,169, 64, 46,124,228, 59,120, 65,157, 0, 24, /* 0x bf0 */
65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x c00 */
125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x c10 */
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x c20 */
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x c30 */
125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80, /* 0x c40 */
56,135, 0, 1,125,102, 59, 46, 66, 0,255,144, 56,132,255,192, /* 0x c50 */
47,132, 0, 3,124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13, /* 0x c60 */
124,137, 14,112, 84,128, 7,254, 57,105,255,255, 96, 26, 0, 2, /* 0x c70 */
125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60, /* 0x c80 */
125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94, /* 0x c90 */
72, 0, 0,100, 57, 41,255,251,125, 41, 3,166, 61, 96, 0,255, /* 0x ca0 */
97,107,255,255,127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46, /* 0x cb0 */
87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0, /* 0x cc0 */
85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, 85, 8,248,126, /* 0x cd0 */
127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1, /* 0x ce0 */
66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54, /* 0x cf0 */
56,216, 6, 68, 60,128, 0,255, 96,132,255,255, 59,128, 0, 1, /* 0x d00 */
59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0, /* 0x d10 */
84,169, 64, 46,124,255, 59,120, 65,157, 0, 24, 65,154, 0,208, /* 0x d20 */
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x d30 */
125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x d40 */
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x d50 */
125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120, /* 0x d60 */
124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1, /* 0x d70 */
125,102, 59, 46,127, 90,227,120, 87,156, 8, 60, 66, 0,255,136, /* 0x d80 */
55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2, /* 0x d90 */
65,157, 0, 92,124, 26,200, 80,127,245, 0,174, 56, 99,255,255, /* 0x da0 */
127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16, /* 0x db0 */
124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57, /* 0x dc0 */
64,130,255,212,127,153,160, 64, 65,156,247,172, 60, 0, 0,255, /* 0x dd0 */
96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,127,140,232, 0, /* 0x de0 */
56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, /* 0x df0 */
72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80, /* 0x e00 */
144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100, /* 0x e10 */
185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96,124, 8, 2,166, /* 0x e20 */
148, 33,255,160,189,193, 0, 24,144, 1, 0,100, 59, 32, 0, 0, /* 0x e30 */
137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0,147, 38, 0, 0, /* 0x e40 */
147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166,124, 18, 2, 20, /* 0x e50 */
57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54,127,153, 0, 64, /* 0x e60 */
57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48, 57, 41,255,255, /* 0x e70 */
57,107,255,255,145, 33, 0, 8,124,206, 51,120,124,147, 35,120, /* 0x e80 */
124,245, 59,120,125, 20, 67,120,145, 97, 0, 12, 59, 3, 0, 4, /* 0x e90 */
59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1, 58, 32, 0, 1, /* 0x ea0 */
58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0, 64,156, 0, 28, /* 0x eb0 */
124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60,125,120, 3, 46, /* 0x ec0 */
57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20,126,108,155,120, /* 0x ed0 */
56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0,127,140,232, 0, /* 0x ee0 */
57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46, 65,158, 8,156, /* 0x ef0 */
136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120, 64,153,255,224, /* 0x f00 */
127,153,160, 64, 64,156, 8,100, 62,192, 0,255, 98,214,255,255, /* 0x f10 */
128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56, 86,224, 32, 54, /* 0x f20 */
124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32,127,140,232, 0, /* 0x f30 */
65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x f40 */
85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46, 85, 0,170,254, /* 0x f50 */
125, 64, 57,214,127,133, 80, 64, 64,156, 1,172,128, 1, 0, 12, /* 0x f60 */
47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8,127,224, 6, 48, /* 0x f70 */
125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0, 32, 7, 8, 0, /* 0x f80 */
124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20,124, 6,195, 46, /* 0x f90 */
125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1, 64,157, 0,180, /* 0x fa0 */
124, 26,200, 80, 63, 96, 0,255,127,245, 0,174, 99,123,255,255, /* 0x fb0 */
87,255, 8, 60, 87,252, 5,238,127,136,216, 64, 87,128, 8, 60, /* 0x fc0 */
84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0, 84,169, 64, 46, /* 0x fd0 */
124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176,136, 12, 0, 0, /* 0x fe0 */
85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,161,103, 2, 0, /* 0x ff0 */
85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64, /* 0x1000 */
124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, 47, 28, 0, 0, /* 0x1010 */
125,105, 88, 80,124,131, 35,120,125, 10, 64, 80, 64,156, 0, 20, /* 0x1020 */
176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24, 72, 0, 0, 28, /* 0x1030 */
177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1, 65,154, 0, 12, /* 0x1040 */
47,131, 0,255, 64,157,255,108, 47,131, 0,255, 65,157, 0,132, /* 0x1050 */
63,224, 0,255, 99,255,255,255,127,136,248, 64, 84,103, 8, 60, /* 0x1060 */
127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, /* 0x1070 */
65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x1080 */
125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x1090 */
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x10a0 */
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x10b0 */
125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80, /* 0x10c0 */
125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255, 64,157,255,140, /* 0x10d0 */
47,151, 0, 3, 84,127, 6, 62,127,249,169,174, 59, 57, 0, 1, /* 0x10e0 */
65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120, 47,151, 0, 9, /* 0x10f0 */
65,157, 0, 12, 58,247,255,253, 72, 0, 6,104, 58,247,255,250, /* 0x1100 */
72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64, 84,224,217,126, /* 0x1110 */
124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46,124,170, 40, 80, /* 0x1120 */
124,248, 74, 20, 65,157, 0, 32,127,140,232, 0, 65,158, 6, 92, /* 0x1130 */
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x1140 */
57,140, 0, 1,161,103, 1,128, 85, 0,170,254,125, 64, 89,214, /* 0x1150 */
127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0, 47,151, 0, 6, /* 0x1160 */
124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128,126, 15,131,120, /* 0x1170 */
125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0,127, 81,211,120, /* 0x1180 */
64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120, 56,216, 6,100, /* 0x1190 */
72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126, /* 0x11a0 */
124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128, 65,157, 0, 32, /* 0x11b0 */
127,140,232, 0, 65,158, 5,212,137, 44, 0, 0, 84,160, 64, 46, /* 0x11c0 */
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,152, /* 0x11d0 */
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0,188, /* 0x11e0 */
32, 11, 8, 0,127,138,176, 64,124, 0, 46,112, 86,233, 40, 52, /* 0x11f0 */
124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60,176, 7, 1,152, /* 0x1200 */
125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32,127,140,232, 0, /* 0x1210 */
65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x1220 */
85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224, 85, 0,170,254, /* 0x1230 */
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72, 32, 11, 8, 0, /* 0x1240 */
47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,224, /* 0x1250 */
125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6, 57, 32, 0, 9, /* 0x1260 */
64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80,127,245, 0,174, /* 0x1270 */
125, 55, 75,120,127,249,169,174, 59, 57, 0, 1, 72, 0, 4,228, /* 0x1280 */
85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,125, 10, 64, 80, /* 0x1290 */
176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80,127,136,176, 64, /* 0x12a0 */
85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,152, /* 0x12b0 */
65,157, 0, 32,127,140,232, 0, 65,158, 4,208,137, 44, 0, 0, /* 0x12c0 */
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x12d0 */
161,103, 1,176, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x12e0 */
64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20, /* 0x12f0 */
125, 72, 83,120,126, 41,139,120,176, 7, 1,176, 72, 0, 0,140, /* 0x1300 */
125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80, /* 0x1310 */
124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32,127,140,232, 0, /* 0x1320 */
65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x1330 */
85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200, 85, 0,170,254, /* 0x1340 */
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0, /* 0x1350 */
124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,126, 9,131,120, /* 0x1360 */
176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126,124, 0, 88, 80, /* 0x1370 */
125,233,123,120,176, 7, 1,200,124,170, 40, 80,125, 10, 64, 80, /* 0x1380 */
126, 15,131,120,126, 48,139,120,127, 81,211,120,125, 58, 75,120, /* 0x1390 */
47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8, 56, 0, 0, 11, /* 0x13a0 */
124, 23, 3,120, 56,216, 10,104,127,136,176, 64, 65,157, 0, 32, /* 0x13b0 */
127,140,232, 0, 65,158, 3,212,137, 44, 0, 0, 84,160, 64, 46, /* 0x13c0 */
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 0, /* 0x13d0 */
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, /* 0x13e0 */
32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112, /* 0x13f0 */
124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4, 59,128, 0, 0, /* 0x1400 */
59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156,125, 10, 64, 80, /* 0x1410 */
127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x1420 */
176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0, 65,158, 3, 92, /* 0x1430 */
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x1440 */
57,140, 0, 1,161,102, 0, 2, 85, 0,170,254,125, 64, 89,214, /* 0x1450 */
127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54, /* 0x1460 */
125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, /* 0x1470 */
56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3,176, 6, 0, 2, /* 0x1480 */
72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x1490 */
176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4, 59,128, 0, 16, /* 0x14a0 */
59, 96, 0, 8,127,105, 3,166, 63,224, 0,255, 99,255,255,255, /* 0x14b0 */
56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60,127, 12,232, 0, /* 0x14c0 */
84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, 65,154, 2,188, /* 0x14d0 */
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x14e0 */
125,100, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x14f0 */
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x1500 */
125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120, /* 0x1510 */
124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80, 56,103, 0, 1, /* 0x1520 */
125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1, 47,151, 0, 3, /* 0x1530 */
124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20, 65,157, 1,232, /* 0x1540 */
47,131, 0, 3, 58,247, 0, 7,124,105, 27,120, 64,157, 0, 8, /* 0x1550 */
57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20, 56,201, 3, 96, /* 0x1560 */
57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255, 99,255,255,255, /* 0x1570 */
56,128, 0, 1,127,136,248, 64, 84,135, 8, 60,127, 12,232, 0, /* 0x1580 */
84,169, 64, 46,124,228, 59,120, 65,157, 0, 24, 65,154, 1,252, /* 0x1590 */
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x15a0 */
125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x15b0 */
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x15c0 */
125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120, /* 0x15d0 */
124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80, 56,135, 0, 1, /* 0x15e0 */
125,102, 59, 46, 66, 0,255,144, 56,132,255,192, 47,132, 0, 3, /* 0x15f0 */
124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13,124,137, 14,112, /* 0x1600 */
84,128, 7,254, 57,105,255,255, 96, 26, 0, 2,125,105, 3,166, /* 0x1610 */
65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60,125, 56, 74, 20, /* 0x1620 */
84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94, 72, 0, 0,100, /* 0x1630 */
57, 41,255,251,125, 41, 3,166, 61, 96, 0,255, 97,107,255,255, /* 0x1640 */
127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46, 87, 90, 8, 60, /* 0x1650 */
65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0, 85, 8, 64, 46, /* 0x1660 */
57,140, 0, 1,125, 37, 3,120, 85, 8,248,126,127,133, 64, 64, /* 0x1670 */
65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1, 66, 0,255,196, /* 0x1680 */
56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54, 56,216, 6, 68, /* 0x1690 */
60,128, 0,255, 96,132,255,255, 59,128, 0, 1, 59,224, 0, 1, /* 0x16a0 */
127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0, 84,169, 64, 46, /* 0x16b0 */
124,255, 59,120, 65,157, 0, 24, 65,154, 0,208,136, 12, 0, 0, /* 0x16c0 */
85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, /* 0x16d0 */
85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64, /* 0x16e0 */
124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80, /* 0x16f0 */
125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, /* 0x1700 */
72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1,125,102, 59, 46, /* 0x1710 */
127, 90,227,120, 87,156, 8, 60, 66, 0,255,136, 55, 90, 0, 1, /* 0x1720 */
65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2, 65,157, 0, 92, /* 0x1730 */
124, 26,200, 80,127,245, 0,174, 56, 99,255,255,127,249,169,174, /* 0x1740 */
59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16,124, 20,200, 16, /* 0x1750 */
124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57, 64,130,255,212, /* 0x1760 */
127,153,160, 64, 65,156,247,172, 60, 0, 0,255, 96, 0,255,255, /* 0x1770 */
127,136, 0, 64, 65,157, 0, 32,127,140,232, 0, 56, 96, 0, 1, /* 0x1780 */
65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, /* 0x1790 */
57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, /* 0x17a0 */
56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, /* 0x17b0 */
124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0,128, 1, 0, 8, /* 0x17c0 */
124, 8, 3,166, 78,128, 0, 32, 85, 80, 88, 33,161,216,208,213, /* 0x17d0 */
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x17e0 */
0, 0, 0, 0, 0, 0, 0, 45,116,109,112, 47,112,111,119,101, /* 0x17f0 */
114,112, 99, 45,108,105,110,117,120, 46,107,101,114,110,101,108, /* 0x1800 */
46,118,109,108,105,110,117,120, 46, 98,105,110, 58, 32, 32, 32, /* 0x1810 */
32, 32,102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108, /* 0x1820 */
102, 51, 50, 45,112,111,119,101,114,112, 99, 10, 10, 83,101, 99, /* 0x1830 */
116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, /* 0x1840 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, /* 0x1850 */
32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, /* 0x1860 */
32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, /* 0x1870 */
32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, /* 0x1880 */
32, 76, 73, 78, 85, 88, 48, 48, 48, 32, 32, 32, 32, 32, 32, 48, /* 0x1890 */
48, 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x18a0 */
48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x18b0 */
48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x18c0 */
84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x18d0 */
65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 76, 73, 78, 85, 88, /* 0x18e0 */
48, 49, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x18f0 */
56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1900 */
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 99, 32, /* 0x1910 */
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1920 */
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1930 */
10, 32, 32, 50, 32, 76, 73, 78, 85, 88, 48, 50, 48, 32, 32, 32, /* 0x1940 */
32, 32, 32, 48, 48, 48, 48, 48, 48, 54, 52, 32, 32, 48, 48, 48, /* 0x1950 */
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1960 */
32, 48, 48, 48, 48, 48, 48, 52, 52, 32, 32, 50, 42, 42, 48, 32, /* 0x1970 */
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x1980 */
78, 76, 89, 10, 32, 32, 51, 32, 76, 73, 78, 85, 88, 48, 51, 48, /* 0x1990 */
32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x19a0 */
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x19b0 */
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 97, 56, 32, 32, 50, 42, /* 0x19c0 */
42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x19d0 */
65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, /* 0x19e0 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,102, /* 0x19f0 */
48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1a00 */
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 97, 56, 32, /* 0x1a10 */
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1a20 */
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1a30 */
10, 32, 32, 53, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, /* 0x1a40 */
32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 99, 32, 32, 48, 48, 48, /* 0x1a50 */
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1a60 */
32, 48, 48, 48, 48, 48, 49, 57, 56, 32, 32, 50, 42, 42, 48, 32, /* 0x1a70 */
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1a80 */
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 78, /* 0x1a90 */
82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1aa0 */
48, 48, 49, 52, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ab0 */
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1ac0 */
50, 99, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1ad0 */
78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x1ae0 */
79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 32, 32, 32, /* 0x1af0 */
32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1b00 */
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1b10 */
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 48, 99, 32, 32, 50, /* 0x1b20 */
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1b30 */
69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, /* 0x1b40 */
95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1b50 */
56, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1b60 */
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 48, 99, /* 0x1b70 */
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1b80 */
44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1b90 */
89, 10, 32, 32, 57, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, /* 0x1ba0 */
32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, /* 0x1bb0 */
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1bc0 */
32, 32, 48, 48, 48, 48, 48, 52, 57, 48, 32, 32, 50, 42, 42, 48, /* 0x1bd0 */
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1be0 */
79, 78, 76, 89, 10, 32, 49, 48, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1bf0 */
67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, /* 0x1c00 */
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1c10 */
48, 48, 48, 32, 32, 48, 48, 48, 48, 48,101, 50, 99, 32, 32, 50, /* 0x1c20 */
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1c30 */
69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 76, 90, 77, 65, /* 0x1c40 */
95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1c50 */
49, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1c60 */
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 99, 56, /* 0x1c70 */
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1c80 */
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, 32, 85, /* 0x1c90 */
80, 88, 49, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1ca0 */
48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1cb0 */
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, /* 0x1cc0 */
55,100, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1cd0 */
78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, /* 0x1ce0 */
77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, /* 0x1cf0 */
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 73, 78, /* 0x1d00 */
85, 88, 48, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, /* 0x1d10 */
73, 78, 85, 88, 48, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d20 */
32,108, 32, 32, 32, 32,100, 32, 32, 76, 73, 78, 85, 88, 48, 51, /* 0x1d30 */
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 73, 78, 85, 88, /* 0x1d40 */
48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1d50 */
32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, /* 0x1d60 */
48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1d70 */
67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1d80 */
32, 32,100, 32, 32, 76, 73, 78, 85, 88, 48, 48, 48, 9, 48, 48, /* 0x1d90 */
48, 48, 48, 48, 48, 48, 32, 76, 73, 78, 85, 88, 48, 48, 48, 10, /* 0x1da0 */
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1db0 */
32, 76, 73, 78, 85, 88, 48, 49, 48, 9, 48, 48, 48, 48, 48, 48, /* 0x1dc0 */
48, 48, 32, 76, 73, 78, 85, 88, 48, 49, 48, 10, 48, 48, 48, 48, /* 0x1dd0 */
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x1de0 */
50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, /* 0x1df0 */
66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e00 */
100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x1e10 */
48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e20 */
32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, /* 0x1e30 */
48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, /* 0x1e40 */
48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, /* 0x1e50 */
90, 77, 65, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, /* 0x1e60 */
65, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e70 */
100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, /* 0x1e80 */
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x1e90 */
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1ea0 */
100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, /* 0x1eb0 */
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x1ec0 */
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1ed0 */
100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, /* 0x1ee0 */
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, /* 0x1ef0 */
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1f00 */
100, 32, 32, 85, 80, 88, 49, 72, 69, 65, 68, 9, 48, 48, 48, 48, /* 0x1f10 */
48, 48, 48, 48, 32, 85, 80, 88, 49, 72, 69, 65, 68, 10, 48, 48, /* 0x1f20 */
48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x1f30 */
85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,102,105, /* 0x1f40 */
108,116,101,114, 95,108,101,110,103,116,104, 10, 48, 48, 48, 48, /* 0x1f50 */
48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, /* 0x1f60 */
68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,102,105,108,116, /* 0x1f70 */
101,114, 95, 99,116,111, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1f80 */
32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, /* 0x1f90 */
48, 48, 48, 48, 48, 48, 32,101,111,102, 95,110,114,118, 10, 10, /* 0x1fa0 */
82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x1fb0 */
68, 83, 32, 70, 79, 82, 32, 91, 76, 73, 78, 85, 88, 48, 48, 48, /* 0x1fc0 */
93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x1fd0 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x1fe0 */
76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, /* 0x1ff0 */
80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 76, /* 0x2000 */
73, 78, 85, 88, 48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 52, /* 0x2010 */
32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, /* 0x2020 */
32, 32, 32, 76, 73, 78, 85, 88, 48, 50, 48, 10, 10, 82, 69, 76, /* 0x2030 */
79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2040 */
70, 79, 82, 32, 91, 76, 73, 78, 85, 88, 48, 49, 48, 93, 58, 10, /* 0x2050 */
79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2060 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2070 */
10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, /* 0x2080 */
65, 68, 68, 82, 51, 50, 32, 32, 32, 32, 32, 32,102,105,108,116, /* 0x2090 */
101,114, 95,108,101,110,103,116,104, 10, 48, 48, 48, 48, 48, 48, /* 0x20a0 */
48, 52, 32, 82, 95, 80, 80, 67, 95, 65, 68, 68, 82, 51, 50, 32, /* 0x20b0 */
32, 32, 32, 32, 32,102,105,108,116,101,114, 95, 99,116,111, 10, /* 0x20c0 */
10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x20d0 */
82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, /* 0x20e0 */
10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x20f0 */
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2100 */
69, 10, 48, 48, 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, 67, /* 0x2110 */
95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32,101,111,102, /* 0x2120 */
95,110,114,118, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x2130 */
32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, /* 0x2140 */
86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x2150 */
89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2160 */
32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, /* 0x2170 */
82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, /* 0x2180 */
32, 32,101,111,102, 95,110,114,118, 10, 10, 82, 69, 76, 79, 67, /* 0x2190 */
65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, /* 0x21a0 */
82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x21b0 */
84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x21c0 */
32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, /* 0x21d0 */
48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, /* 0x21e0 */
32, 32, 32, 32, 32, 32, 32,101,111,102, 95,110,114,118, 10, 10, /* 0x21f0 */
82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2200 */
68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, /* 0x2210 */
48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, /* 0x2220 */
80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2230 */
86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, /* 0x2240 */
95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, /* 0x2250 */
32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, /* 0x2260 */
48, 48, 48, 48, 49, 48, 10 /* 0x2270 */
};
+38 -27
View File
@@ -54,56 +54,67 @@ def add_dep(state, fn, mode):
fn = os.path.normcase(fn) fn = os.path.normcase(fn)
if fn in files: if fn in files:
return return
# FIXME: could use samestat() etc. # FIXME: could use os.path.samestat() etc.
files.append(fn) files.append(fn)
files_st[fn] = os.stat(fn) files_st[fn] = os.stat(fn)
def not_found(l, s, state): def not_found(state, l, inc, fatal=None):
if opts.fatal: if fatal is None:
raise Exception, "%s:%d: include file %s not found" % (state[0], state[2], s) fatal = opts.fatal
if fatal:
raise Exception, "%s:%d: include file %s not found" % (state[0], state[2], inc)
return l return l
def handle_inc_c(l, state, ofp): def parse_comment(state, l, comment):
m = re.search(r"^\s*\#\s*include\s+([\"\<].+)", l) cf = {}
if not comment: return cf
m = re.search(r"gpp_inc:(.+?):", comment.strip())
if not m: return cf
flags = re.split(r"\s+", m.group(1).strip())
for f in flags:
assert f, (f, flags, m.groups(), comment)
if f == "ignore=0": cf["fatal"] = 1
elif f == "ignore=1": cf["fatal"] = 0
else:
raise Exception, "%s:%d: bad flags %s %s" % (state[0], state[2], f, str(flags))
return cf
def handle_inc_c(state, l, ofp):
m = re.search(r"^\s*\#\s*include\s+([\"\<])(.+?)([\"\>])(.*)$", l)
if not m: if not m:
return l return l
s = m.group(1).strip() q1, inc, q2, comment = m.groups()
# FIXME: strip comments ? cf = parse_comment(state, l, comment)
if len(s) < 3: if q1 == '<' and q2 == '>':
return not_found(l, s, state)
if s[0] == '<' and s[-1] == '>':
dirs = opts.includes dirs = opts.includes
elif s[0] == '"' and s[-1] == '"': elif q1 == '"' and q2 == '"':
dirs = [state[1]] + opts.includes dirs = [state[1]] + opts.includes
else: else:
raise Exception, "syntax error: include line " + l raise Exception, "syntax error: include line " + l
inc = s[1:-1]
for dir in dirs: for dir in dirs:
fn = os.path.join(dir, inc) fn = os.path.join(dir, inc)
if os.path.isfile(fn): if os.path.isfile(fn):
add_dep(state, fn, s[0] == '<') add_dep(state, fn, q1 == '<')
handle_file(fn, ofp, state) handle_file(fn, ofp, state)
return None return None
return not_found(l, s, state) return not_found(state, l, inc, cf.get("fatal"))
def handle_inc_nasm(l, state, ofp): def handle_inc_nasm(state, l, ofp):
m = re.search(r"^\s*\%\s*include\s+([\"\<].+)", l) m = re.search(r"^\s*\%\s*include\s+([\"\<])(.+?)([\"\>])(.*)$", l)
if not m: if not m:
return l return l
s = m.group(1).strip() q1, inc, q2, comment = m.groups()
# FIXME: strip comments ? cf = parse_comment(state, l, comment)
if len(s) < 3: if q1 == '<' and q2 == '>':
return not_found(l, s, state)
if s[0] == '<' and s[-1] == '>':
pass pass
elif s[0] == '"' and s[-1] == '"': elif q1 == '"' and q2 == '"':
pass pass
else: else:
raise Exception, "syntax error: include line " + l raise Exception, "syntax error: include line " + l
inc = s[1:-1]
# info: nasm simply does concat the includes # info: nasm simply does concat the includes
for prefix in opts.includes + [""]: for prefix in opts.includes + [""]:
fn = prefix + inc fn = prefix + inc
@@ -111,7 +122,7 @@ def handle_inc_nasm(l, state, ofp):
add_dep(state, fn, False) add_dep(state, fn, False)
handle_file(fn, ofp, state) handle_file(fn, ofp, state)
return None return None
return not_found(l, s, state) return not_found(state, l, inc, cf.get("fatal"))
def handle_file(ifn, ofp, parent_state=None): def handle_file(ifn, ofp, parent_state=None):
@@ -121,9 +132,9 @@ def handle_file(ifn, ofp, parent_state=None):
state[2] += 1 # line counter state[2] += 1 # line counter
l = l.rstrip("\n") l = l.rstrip("\n")
if opts.mode == "c": if opts.mode == "c":
l = handle_inc_c(l, state, ofp) l = handle_inc_c(state, l, ofp)
elif opts.mode == "nasm": elif opts.mode == "nasm":
l = handle_inc_nasm(l, state, ofp) l = handle_inc_nasm(state, l, ofp)
if l is not None: if l is not None:
ofp.write(l + "\n") ofp.write(l + "\n")
+4 -2
View File
@@ -8,11 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) __dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
endif endif
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
vpath %.c $(top_srcdir)/src/stub/src/c vpath %.c $(top_srcdir)/src/stub/src/c
STUBS = STUBS =
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) include $(top_srcdir)/src/stub/src/c/Makevars.lzma
ifneq ($(UPX_LZMA_VERSION),)
STUBS += lzma_d_cf.S lzma_d_cs.S STUBS += lzma_d_cf.S lzma_d_cs.S
endif endif
@@ -37,6 +38,7 @@ $c += -Os -fomit-frame-pointer
$c += -fno-unit-at-a-time $c += -fno-unit-at-a-time
$c += -ffunction-sections $c += -ffunction-sections
$c += -fwrapv $c += -fwrapv
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
$c += -I$(UPX_LZMADIR) $c += -I$(UPX_LZMADIR)
$c += -I$(top_srcdir)/src $c += -I$(top_srcdir)/src
+4 -2
View File
@@ -8,11 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) __dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
endif endif
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
vpath %.c $(top_srcdir)/src/stub/src/c vpath %.c $(top_srcdir)/src/stub/src/c
STUBS = STUBS =
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) include $(top_srcdir)/src/stub/src/c/Makevars.lzma
ifneq ($(UPX_LZMA_VERSION),)
STUBS += lzma_d_cf.S lzma_d_cs.S STUBS += lzma_d_cf.S lzma_d_cs.S
endif endif
@@ -40,6 +41,7 @@ $c += -Os -fomit-frame-pointer
$c += -fno-unit-at-a-time $c += -fno-unit-at-a-time
$c += -ffunction-sections $c += -ffunction-sections
$c += -fwrapv $c += -fwrapv
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
$c += -I$(UPX_LZMADIR) $c += -I$(UPX_LZMADIR)
$c += -I$(top_srcdir)/src $c += -I$(top_srcdir)/src
+4
View File
@@ -128,7 +128,11 @@
#include "lzma_d_cs.S" #include "lzma_d_cs.S"
section LZMA_DEC20 section LZMA_DEC20
#if 1 /*{*/
#include "lzma_d_cf.S" #include "lzma_d_cf.S"
#else /*}{*/
#include "lzma_d-arm.S"
#endif /*}*/
section LZMA_DEC30 section LZMA_DEC30
+4 -2
View File
@@ -8,11 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) __dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
endif endif
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
vpath %.c $(top_srcdir)/src/stub/src/c vpath %.c $(top_srcdir)/src/stub/src/c
STUBS = STUBS =
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) include $(top_srcdir)/src/stub/src/c/Makevars.lzma
ifneq ($(UPX_LZMA_VERSION),)
STUBS += lzma_d_cf.S lzma_d_cs.S STUBS += lzma_d_cf.S lzma_d_cs.S
endif endif
@@ -38,6 +39,7 @@ $c += -Os -fomit-frame-pointer
$c += -fno-unit-at-a-time $c += -fno-unit-at-a-time
$c += -ffunction-sections $c += -ffunction-sections
$c += -fwrapv $c += -fwrapv
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
$c += -I$(UPX_LZMADIR) $c += -I$(UPX_LZMADIR)
$c += -I$(top_srcdir)/src $c += -I$(top_srcdir)/src
+1 -1
View File
@@ -35,7 +35,7 @@
.endm .endm
.macro loadcon8 reg,val8 .macro loadcon8 reg,val8
.byte \val8, \reg<<4, 0xa0, 0xe3 /* mov \reg,#\val8 */ .long (0xe3<<24)|(0xa0<<16)|((\reg<<4)<<8)+(\val8) /* mov \reg,#\val8 */
.endm .endm
// vi:ts=8:et:nowrap // vi:ts=8:et:nowrap
+32 -27
View File
@@ -1,9 +1,3 @@
#
# highly experimental support for i086 using Open Watcom C/C++
#
##export WATCOM ?= /opt/cc-i386-linux/watcom/open-watcom-1.6
#
MAKEFLAGS += -rR MAKEFLAGS += -rR
.SUFFIXES: .SUFFIXES:
.SECONDEXPANSION: .SECONDEXPANSION:
@@ -14,11 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) __dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
endif endif
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
vpath %.c $(top_srcdir)/src/stub/src/c vpath %.c $(top_srcdir)/src/stub/src/c
STUBS = STUBS =
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) include $(top_srcdir)/src/stub/src/c/Makevars.lzma
ifneq ($(UPX_LZMA_VERSION),)
ifneq ($(wildcard $(WATCOM)/binl/wcl),) ifneq ($(wildcard $(WATCOM)/binl/wcl),)
STUBS += lzma_d_cf.S lzma_d_cs.S STUBS += lzma_d_cf.S lzma_d_cs.S
endif endif
@@ -47,9 +42,9 @@ DOSBOX = true
DOSBOX = dosbox DOSBOX = dosbox
DOSBOX = /usr/bin/time -p dosbox -exit DOSBOX = /usr/bin/time -p dosbox -exit
ifneq ($(wildcard /usr/bin/wine),) ifneq ($(wildcard /usr/bin/wine /usr/local/bin/wine),)
WINEENV = @env WINEENV = @env
WINEENV = @env -i $(call __minienv_expand,DISPLAY HOME PATH USER TERM) WINEENV = @env -i $(call __minienv_expand,DISPLAY HOME LANG LC_ALL PATH USER TERM)
winedir_s = z:$(shell winepath -s $(realpath $1)) winedir_s = z:$(shell winepath -s $(realpath $1))
winedir_w = $(shell winepath -w $(realpath $1)) winedir_w = $(shell winepath -w $(realpath $1))
else else
@@ -60,16 +55,16 @@ endif
# work around limitations of wine's cmd.exe # work around limitations of wine's cmd.exe
define mkbat define mkbat
echo -E '@set PATH=$3;%PATH%' > $1 $(ECHO_E) '@set PATH=$3;%PATH%' > $1
echo -E '@set INCLUDE=$4' >> $1 $(ECHO_E) '@set INCLUDE=$4' >> $1
echo -E '@set LIB=$5' >> $1 $(ECHO_E) '@set LIB=$5' >> $1
echo -E '@set a=%1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1 $(ECHO_E) '@set a=%1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1
echo -e '@shift\n@shift\n@shift\n@shift\n@shift' >> $1 $(ECHO_e) '@shift\n@shift\n@shift\n@shift\n@shift' >> $1
echo -e '@shift\n@shift\n@shift\n@shift' >> $1 $(ECHO_e) '@shift\n@shift\n@shift\n@shift' >> $1
echo -E '@set b=%1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1 $(ECHO_E) '@set b=%1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1
echo -e '@shift\n@shift\n@shift\n@shift\n@shift' >> $1 $(ECHO_e) '@shift\n@shift\n@shift\n@shift\n@shift' >> $1
echo -e '@shift\n@shift\n@shift\n@shift' >> $1 $(ECHO_e) '@shift\n@shift\n@shift\n@shift' >> $1
echo -E '$2 %a% %b% %1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1 $(ECHO_E) '$2 %a% %b% %1 %2 %3 %4 %5 %6 %7 %8 %9' >> $1
$(UNIX2DOS) $1 $(UNIX2DOS) $1
endef endef
@@ -94,6 +89,7 @@ lzma_d_c% : tc_bfdname =
c := tc.arch-i086.gcc c := tc.arch-i086.gcc
$c += -MF /dev/null $c += -MF /dev/null
$c += -Wall -W $c += -Wall -W
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
$c += -I$(UPX_LZMADIR) $c += -I$(UPX_LZMADIR)
$c += -I$(top_srcdir)/src $c += -I$(top_srcdir)/src
@@ -105,7 +101,12 @@ $c += -ms
$c += -O1 -1 $c += -O1 -1
$c += -w $c += -w
$c += -D__INT_MAX__=32767 $c += -D__INT_MAX__=32767
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
ifeq ($(UPX_LZMA_VERSION),0x449)
$c += -I$(subst \,/,$(call winedir_w,$(UPX_LZMADIR)/C/Compress/Lzma))
else
$c += -I$(subst \,/,$(call winedir_w,$(UPX_LZMADIR)/C/7zip/Compress/LZMA_C)) $c += -I$(subst \,/,$(call winedir_w,$(UPX_LZMADIR)/C/7zip/Compress/LZMA_C))
endif
$c += -I$(top_srcdir)/src $c += -I$(top_srcdir)/src
endif endif
@@ -113,14 +114,16 @@ endif
# http://www.digitalmars.com/download/freecompiler.html # http://www.digitalmars.com/download/freecompiler.html
ifneq ($(wildcard $(DM849DIR)/bin/dmc.exe),) ifneq ($(wildcard $(DM849DIR)/bin/dmc.exe),)
c := tc.method-lzma.dmc c := tc.method-lzma.dmc
$c = $(WINEENV) CFLAGS='$(DMC)' wine cmd.exe /c tmp/dmc.bat $c = $(WINEENV) DMC1='$(DMC1)' DMC2='$(DMC2)' wine cmd.exe /c tmp/dmc.bat
$c += -ms -R $c += -ms -R
$c += -NS $c += -NS
$c += -w- -w7 -r $c += -w- -w7 -r
DMC := -o -0 $c += @DMC1 @DMC2
DMC += -D__INT_MAX__=32767 DMC1 := -o -0
DMC += -I$(call winedir_w,$(UPX_LZMADIR)) DMC1 += -D__INT_MAX__=32767
DMC += -I$(call winedir_w,$(top_srcdir)/src) DMC1 += -DWITH_LZMA=$(UPX_LZMA_VERSION)
DMC2 := -I$(call winedir_w,$(UPX_LZMADIR))
DMC2 += -I$(call winedir_w,$(top_srcdir)/src)
endif endif
# Visual C/C++ 1.52 (8.00c) # Visual C/C++ 1.52 (8.00c)
@@ -133,6 +136,7 @@ $c += -O2 -Gf -Gs -G0
$c += -W4 $c += -W4
CL := -nologo CL := -nologo
CL += -D__INT_MAX__=32767 CL += -D__INT_MAX__=32767
CL += -DWITH_LZMA=$(UPX_LZMA_VERSION)
CL += -I$(call winedir_s,$(UPX_LZMADIR)) CL += -I$(call winedir_s,$(UPX_LZMADIR))
CL += -I$(call winedir_s,$(top_srcdir)/src) CL += -I$(call winedir_s,$(top_srcdir)/src)
endif endif
@@ -147,12 +151,13 @@ $c += -zm -zc
$c += -os -s -0 -d0 $c += -os -s -0 -d0
$c += -w5 -we -fr=/dev/null $c += -w5 -we -fr=/dev/null
$c += -D__INT_MAX__=32767 $c += -D__INT_MAX__=32767
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
$c += -I$(UPX_LZMADIR) $c += -I$(UPX_LZMADIR)
$c += -I$(top_srcdir)/src $c += -I$(top_srcdir)/src
endif endif
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) ifneq ($(UPX_LZMA_VERSION),)
ifneq ($(wildcard $(WATCOM)/binl/wcl),) ifneq ($(wildcard $(WATCOM)/binl/wcl),)
lzma_d_c%.S : tmp/lzma_d_c%.i cleanasm.py $(MAKEFILE_LIST) lzma_d_c%.S : tmp/lzma_d_c%.i cleanasm.py $(MAKEFILE_LIST)
@@ -181,7 +186,7 @@ endif
$(PYTHON) wdis2gas.py tmp/$T_wc.obj.disasm tmp/$T.S $(PYTHON) wdis2gas.py tmp/$T_wc.obj.disasm tmp/$T.S
$(call tc,gcc) -c -o tmp/$T.o tmp/$T.S $(call tc,gcc) -c -o tmp/$T.o tmp/$T.S
$(call tc,f-objstrip,tmp/$T.o) $(call tc,f-objstrip,tmp/$T.o)
$(call tc,objdump) -b elf32-i386 -m i8086 -M intel -dr -j .text.LzmaDecode --no-show -w tmp/$T.o | $(RTRIM) | perl -pe 's/DWORD/dword/g; s/WORD/word/g; s/BYTE/byte/g; s/PTR/ptr/g;' > $@ $(call tc,objdump) -b elf32-i386 -m i8086 -M intel -dr -j .text.LzmaDecode --no-show -w tmp/$T.o | $(RTRIM) | $(PERL) -pe 's/\bDWORD\b/dword/g; s/\bWORD\b/word/g; s/\bBYTE\b/byte/g; s/\bPTR\b/ptr/g;' > $@
.PRECIOUS: lzma_d_c%.i tmp/lzma_d_c%.i .PRECIOUS: lzma_d_c%.i tmp/lzma_d_c%.i
+4 -2
View File
@@ -8,11 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) __dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
endif endif
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
vpath %.c $(top_srcdir)/src/stub/src/c vpath %.c $(top_srcdir)/src/stub/src/c
STUBS = STUBS =
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) include $(top_srcdir)/src/stub/src/c/Makevars.lzma
ifneq ($(UPX_LZMA_VERSION),)
STUBS += lzma_d_cf.S lzma_d_cs.S STUBS += lzma_d_cf.S lzma_d_cs.S
endif endif
@@ -36,6 +37,7 @@ $c = $(tc.i386-linux.elf.gcc)
$c += -fno-unit-at-a-time $c += -fno-unit-at-a-time
$c += -ffunction-sections $c += -ffunction-sections
$c += -fwrapv $c += -fwrapv
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
$c += -I$(UPX_LZMADIR) $c += -I$(UPX_LZMADIR)
$c += -I$(top_srcdir)/src $c += -I$(top_srcdir)/src
+7 -1
View File
@@ -300,8 +300,10 @@ ctend:
// 2nd param: where is cto8 (dl, bl, or literal) // 2nd param: where is cto8 (dl, bl, or literal)
section ctok32.00 section ctok32.00
.ifnc \addvalue, 0
.ifc \addvalue, edi .ifc \addvalue, edi
mov esi, \addvalue mov esi, edi
.endif
.endif .endif
jmps ckstart jmps ckstart
ckloop3: ckloop3:
@@ -333,7 +335,11 @@ ckmark:
sub eax, edi sub eax, edi
.ifnc \addvalue, 0 .ifnc \addvalue, 0
.ifc \addvalue, edi
add eax, esi add eax, esi
.else
add eax, \addvalue
.endif
.endif .endif
mov [edi], eax mov [edi], eax
add edi, 4 add edi, 4
+4 -2
View File
@@ -8,11 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) __dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
endif endif
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
vpath %.c $(top_srcdir)/src/stub/src/c vpath %.c $(top_srcdir)/src/stub/src/c
STUBS = STUBS =
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) include $(top_srcdir)/src/stub/src/c/Makevars.lzma
ifneq ($(UPX_LZMA_VERSION),)
STUBS += lzma_d_cf.S lzma_d_cs.S STUBS += lzma_d_cf.S lzma_d_cs.S
endif endif
@@ -38,6 +39,7 @@ $c += -Os -fomit-frame-pointer
$c += -fno-unit-at-a-time $c += -fno-unit-at-a-time
$c += -ffunction-sections $c += -ffunction-sections
$c += -fwrapv $c += -fwrapv
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
$c += -I$(UPX_LZMADIR) $c += -I$(UPX_LZMADIR)
$c += -I$(top_srcdir)/src $c += -I$(top_srcdir)/src
+4 -2
View File
@@ -8,11 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) __dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
endif endif
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
vpath %.c $(top_srcdir)/src/stub/src/c vpath %.c $(top_srcdir)/src/stub/src/c
STUBS = STUBS =
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) include $(top_srcdir)/src/stub/src/c/Makevars.lzma
ifneq ($(UPX_LZMA_VERSION),)
STUBS += lzma_d_cf.S lzma_d_cs.S STUBS += lzma_d_cf.S lzma_d_cs.S
endif endif
@@ -38,6 +39,7 @@ $c += -Os -fomit-frame-pointer
$c += -fno-unit-at-a-time $c += -fno-unit-at-a-time
$c += -ffunction-sections $c += -ffunction-sections
$c += -fwrapv $c += -fwrapv
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
$c += -I$(UPX_LZMADIR) $c += -I$(UPX_LZMADIR)
$c += -I$(top_srcdir)/src $c += -I$(top_srcdir)/src
@@ -8,11 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) __dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
endif endif
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
vpath %.c $(top_srcdir)/src/stub/src/c vpath %.c $(top_srcdir)/src/stub/src/c
STUBS = STUBS =
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) include $(top_srcdir)/src/stub/src/c/Makevars.lzma
ifneq ($(UPX_LZMA_VERSION),)
STUBS += lzma_d_cf.S lzma_d_cs.S STUBS += lzma_d_cf.S lzma_d_cs.S
endif endif
@@ -69,7 +70,8 @@ $c += -ffixed-30
else else
$(error unknown gcc version: $(firstword $($c))) $(error unknown gcc version: $(firstword $($c)))
endif endif
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) ifneq ($(UPX_LZMA_VERSION),)
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
$c += -I$(UPX_LZMADIR) $c += -I$(UPX_LZMADIR)
endif endif
$c += -I$(top_srcdir)/src $c += -I$(top_srcdir)/src
@@ -100,7 +102,7 @@ define __test_stub_compression
@ls -l $1.tmp.* @ls -l $1.tmp.*
endef endef
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) ifneq ($(UPX_LZMA_VERSION),)
test-stub-compression: tc_list = mipsel.r3000-ps1 default test-stub-compression: tc_list = mipsel.r3000-ps1 default
test-stub-compression: lzma_d_cf.S lzma_d_cs.S test-stub-compression: lzma_d_cf.S lzma_d_cs.S
$(call __test_stub_compression,tmp/lzma_d_cs.out,tmp/lzma_d_cs.o) $(call __test_stub_compression,tmp/lzma_d_cs.out,tmp/lzma_d_cs.o)
+231 -77
View File
@@ -34,11 +34,15 @@
#ifndef _MR3K_STD_CONF_ #ifndef _MR3K_STD_CONF_
#define _MR3K_STD_CONF_ #define _MR3K_STD_CONF_
#define JOHN 1
#define ALT_SMALL 1
;////////////////////////////////////// ;//////////////////////////////////////
;// register defines ;// register defines
;////////////////////////////////////// ;//////////////////////////////////////
#if defined(PS1) /*{*/
#define tmp at #define tmp at
#define dst t0 #define dst t0
@@ -58,6 +62,48 @@
#define m_off t7 #define m_off t7
#define m_pos t7 #define m_pos t7
#elif defined(_TARGET_LINUX_) /*}{*/
#define tmp at
/* decompress(src, src_len, dst, &dst_len, method); */
#define src a0
#define dst a2
#define src_ilen src
#define bb t1
#define ilen t2
#define last_m_off t3
#define m_len t4
#define bc t5
#define var t6
#define m_off t7
#define m_pos t7
#else /*}{*/
.print "\nwarning redefined src / dst\n"
#define tmp v1
#define src a0
#define dst a1
#define pc v0
#define cnt a2
#define src_ilen src
#define bb t1
#define ilen t2
#define last_m_off t3
#define m_len t4
#define bc t5
#define var t6
#define m_off t7
#define m_pos t7
#endif /*}*/
;////////////////////////////////////// ;//////////////////////////////////////
;// init bitaccess ;// init bitaccess
@@ -89,12 +135,32 @@
.macro init .macro init
init_sz = .
.if (JOHN == 0)
move bc,zero move bc,zero
.else // John's method
.if (UCL_SMALL == 1)
.if (ALT_SMALL == 1)
lui bc,1 << (31 - 16)
move bb,bc
.else
move bc,zero
.endif
.else
lui bc,1 << (31 - 16)
move bb,bc
.endif
.endif
li last_m_off,1 li last_m_off,1
.if (src != src_ilen) .if (src != src_ilen)
move src_ilen,src move src_ilen,src
.endif .endif
init_sz = . - init_sz
.endm .endm
@@ -104,6 +170,7 @@
.macro ADDBITS .macro ADDBITS
.if (JOHN == 0)
.if (UCL_SMALL == 1) .if (UCL_SMALL == 1)
addiu bc, -1 addiu bc, -1
bltz bc, 2b bltz bc, 2b
@@ -112,32 +179,92 @@
addiu bc, -1 addiu bc, -1
.endif .endif
.else // John's method
.if (UCL_SMALL == 1)
.if (ALT_SMALL == 1)
beq bc,bb,2b # detect flag bit [empty]
.else
addiu bc,-1
bltz bc,2b
.endif
.else
srl var,bb,31 # var= most significant bit of bb
bne bc,bb,2f # detect flag bit [empty]
sll bb,1
.endif
.endif
.endm .endm
.macro ADDBITS_DONE .macro ADDBITS_DONE
.if (JOHN == 0)
srlv var,bb,bc srlv var,bb,bc
.if (UCL_SMALL == 1) .if (UCL_SMALL == 1)
jr ra jr ra
.endif .endif
andi var,0x0001 andi var,0x0001
.else // John's method
.if (UCL_SMALL == 1)
.if (ALT_SMALL == 1)
srl var,bb,31 # var= most significant bit of bb
jr ra
sll bb,1
.else
srlv var,bb,bc
jr ra
andi var,0x0001
.endif
.else
.if (UCL_NRV_BB == 8)
sll bb,1
addiu bb,1 # the flag bit
srl var,bb,8 # var= most significant bit of bb
sll bb,24 # left-justify in register
.else
srl var,bb,31 # var= most significant bit of bb
sll bb,1
addiu bb,1
.endif
.endif
.endif
.endm .endm
.macro FILLBYTES_8 .macro FILLBYTES_8
.if (UCL_SMALL == 1) .if (JOHN == 0)
li bc,8
.else
li bc,7 li bc,7
.endif
lbu bb,0(src_ilen) lbu bb,0(src_ilen)
addiu src_ilen,1 addiu src_ilen,1
.else // John's method
.if (ALT_SMALL == 0)
.if (UCL_SMALL == 1)
li bc,8
.endif
.endif
lbu bb,0(src_ilen)
addiu src_ilen,1
.if ((ALT_SMALL == 1) && (UCL_SMALL == 1))
sll bb,1
addiu bb,1 # the flag bit
sll bb,24-1 # left-justify in register
.endif
.endif
.endm .endm
.macro FILLBYTES_32 .macro FILLBYTES_32
.if (JOHN == 0)
.if (UCL_SMALL == 1) .if (UCL_SMALL == 1)
li bc,32 li bc,32
.else .else
@@ -147,9 +274,27 @@
lwl bb,3(src_ilen) lwl bb,3(src_ilen)
addiu src_ilen,4 addiu src_ilen,4
.else // John's method
.if (ALT_SMALL == 0)
.if (UCL_SMALL == 1)
li bc,32
.endif
.endif
lwr bb,0(src_ilen)
lwl bb,3(src_ilen)
addiu src_ilen,4
.if ((ALT_SMALL == 1) && (UCL_SMALL == 1))
srl var,bb,31 # var= most significant bit of bb
sll bb,1
jr ra
addiu bb,1
.endif
.endif
.endm .endm
.macro FILLBYTES .macro FILLBITS
.if (UCL_NRV_BB == 8) .if (UCL_NRV_BB == 8)
FILLBYTES_8 FILLBYTES_8
@@ -159,79 +304,29 @@
.endm .endm
// This alternate for UCL_SMALL is 1 cycle faster for most getbit
// at a cost of 1 cycle (32 bits) or 3 cycles (8 bits) during refill.
// [Refill could save 1 cycle if MIPS had "set CarryIn" for ADD or SHIFT.]
// Call 'getbit'; it returns the next bit (0 or 1), in register 'var'.
// Register 'bb' is the bit buffer; register 'bc' contains the 'empty' value.
// The cases for widths 8 and 32 are not as similar as before,
// and 64-bit registers would require other code.
// But it is 1 cycle faster 31/32 of the time.
// [Indentation after control transfer emphasizes delay slot.]
//
//init:
// lui bc,1<<(31 - 16) # 1<<31 the flag bit
// lui bb,1<<(31 - 16) # 1<<31 empty
//--
// .if (8==UCL_NRV_BB)
//refill:
// lbu bb,0(src_ilen)
// addiu src_len,1
// sll bb,1
// ori bb,1 # the flag bit
// sll bb,24-1 # left-justify in register
// // falling through the 'beq' below saves 3 words of space
// .endif
//getbit:
// beq bc,bb,refill # detect flag bit [empty]
// srl var,bb,31 # var= most significant bit of bb
// jr ra
// sll bb,1
// .if (32==UCL_NRV_BB)
//refill:
// lwr bb,0(src_ilen)
// lwl bb,3(src_ilen)
// addiu src_ilen,4
// srl var,bb,31 # var= most significant bit of bb
// sll bb,1
// jr ra
// ori bb,1 # the flag bit
// .endif
// 2006-09-06 Faster by 3 cycles for inline expansion:
// beq bc,bb,7f # detect flag bit [empty]
// srl var,bb,31 # var= most significant bit of bb
// sll bb,1
//6:
// .subsection 1 # somewhere out-of-line
//7:
// b refill
// addi ra,r_bd_base,6b - bd_base # return past the 'sll' above
// .subsection 0 # return to main in-line code
//
// which is 3 cycles usually, +2 cycles for entering refill,
// +8 bytes (2 instructions) per getbit [7 in nrv2b, 9 in nrv2e]
// and requires another register r_bd_base which holds a handy
// address within +/- 32KB of the returns from refill.
//
.macro GBIT .macro GBIT
.if (UCL_SMALL == 1) .if (UCL_SMALL == 1)
2: 2:
FILLBYTES FILLBITS
1: 1:
ADDBITS ADDBITS
ADDBITS_DONE ADDBITS_DONE
.else .else
ADDBITS ADDBITS
FILLBYTES FILLBITS
.if (JOHN == 1)
ADDBITS_DONE
2:
.else
2: 2:
ADDBITS_DONE ADDBITS_DONE
.endif
.endif .endif
.endm .endm
;////////////////////////////////////// ;//////////////////////////////////////
;// getbit call macro for SMALL version ;// getbit call macro for SMALL version
;////////////////////////////////////// ;//////////////////////////////////////
@@ -247,8 +342,23 @@
.ifb p1 .ifb p1
bal t // gb_sub bal t // gb_sub
.else .else
.if (JOHN == 0)
bal t+4 // gb_sub+4 bal t+4 // gb_sub+4
addiu bc,-1 addiu bc,-1
.else // John's method
.if (UCL_SMALL == 1)
.if (ALT_SMALL == 0)
bal t+4 // gb_sub+4
addiu bc,-1
.else
bal t // gb_sub+4
nop
.endif
.endif
.endif
.endif .endif
.else .else
GBIT GBIT
@@ -271,20 +381,20 @@
.endif .endif
\type decomp_done \type decomp_done
.if (UCL_SMALL == 1) .if (UCL_SMALL == 1)
WITHOUT_SUB = 0
GBIT GBIT
.endif .endif
.else .else
.ifc "\option", "sub_only" .ifc "\option", "sub_only"
2: 2:
FILLBYTES FILLBITS
.ifnb label .ifnb label
.global \label .global \label
\label: \label:
.endif .endif
ADDBITS ADDBITS
ADDBITS_DONE ADDBITS_DONE
.else .else
.ifc "\option", "without_sub" .ifc "\option", "without_sub"
.if (UCL_SMALL == 1) .if (UCL_SMALL == 1)
@@ -309,12 +419,12 @@
.macro uclmcpy ret .macro uclmcpy ret
local wordchk, bcpy local wordchk, prepbcpy
local bcpy_chk, skip local bcopy, skip
.if (UCL_FAST == 1) .if (UCL_FAST == 1)
slti var,m_off,4 slti var,m_off,4
bnez var,bcpy bnez var,prepbcpy
subu m_pos,dst,m_off subu m_pos,dst,m_off
wordchk: wordchk:
slti var,m_len,4 slti var,m_len,4
@@ -327,22 +437,66 @@ wordchk:
addiu m_pos,4 addiu m_pos,4
bnez m_len,wordchk bnez m_len,wordchk
addiu dst,4 addiu dst,4
.if (UCL_SMALL == 1)
.if (WITHOUT_SUB == 1)
t = gb_e
.else
t = 1f
.endif
.if (1 == 1)
b \ret b \ret
nop nop
.else .else
subu m_pos,dst,m_off bal t
addiu ra, (\ret + 4) - (. + 4)
.endif .endif
bcpy_chk: .else
beqz m_len,\ret .if (JOHN == 0)
bcpy: b \ret
nop
.else
b \ret + 4
srl var,bb,31 # var= most significant bit of bb
.endif
.endif
prepbcpy:
.else
subu m_pos,dst,m_off
.endif
bcopy:
lbu var,0(m_pos) lbu var,0(m_pos)
skip: skip:
addiu m_len,-1 addiu m_len,-1
sb var,0(dst)
addiu m_pos,1 addiu m_pos,1
b bcpy_chk
addiu dst,1 addiu dst,1
bnez m_len,bcopy
sb var,-1(dst)
.if (UCL_SMALL == 1)
.if (WITHOUT_SUB == 1)
t = gb_e
.else
t = 1f
.endif
.if (1 == 1)
b \ret
nop
.else
bal t
addiu ra, (\ret + 4) - (. + 4)
.endif
.else
.if (JOHN == 0)
b \ret
nop
.else
b \ret + 4
srl var,bb,31 # var= most significant bit of bb
.endif
.endif
.endm .endm
#endif //_MR3K_STD_CONF_ #endif //_MR3K_STD_CONF_
@@ -30,41 +30,11 @@
<jreiser@users.sourceforge.net> <jssg@users.sourceforge.net> <jreiser@users.sourceforge.net> <jssg@users.sourceforge.net>
*/ */
section lzma.init
li tmp,%lo(lzma_stack_adjust-lzma_args_sz)
addu sp,tmp
/*
move var,sp
1:
sw zero,0(var)
addiu tmp,4
bnez tmp,1b
addiu var,4
*/
addiu src,2
la inSize,lzma_c_len
la outSize,lzma_u_len
addu poutSizeProcessed,sp,outSizeProcessed
addiu pinSizeprocessed,sp,inSizeProcessed
la tmp,lzma_properties
sw dst,dst_save(sp)
addiu CLzmaDecoderState,sp,lzma_args_sz
bal decompressor
sw tmp,0(CLzmaDecoderState)
lw dst,dst_save(sp)
lw outSize,outSizeProcessed(sp)
li tmp,%lo(lzma_stack_adjust-lzma_args_sz)
addu dst,outSize
subu sp,tmp
section LZMA_DEC10 section LZMA_DEC10
#include "lzma_d_cs.S" #include "lzma_d_cs.S"
section LZMA_DEC20 section LZMA_DEC20
#include "lzma_d_cf.S" #include "lzma_d_cf.S"
// vi:ts=8:et // vi:ts=8:et
+4 -2
View File
@@ -8,11 +8,12 @@ __dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3) __dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND) top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
endif endif
-include $(top_srcdir)/Makevars.global ./Makevars.local include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
vpath %.c $(top_srcdir)/src/stub/src/c vpath %.c $(top_srcdir)/src/stub/src/c
STUBS = STUBS =
ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),) include $(top_srcdir)/src/stub/src/c/Makevars.lzma
ifneq ($(UPX_LZMA_VERSION),)
STUBS += lzma_d_cf.S lzma_d_cs.S STUBS += lzma_d_cf.S lzma_d_cs.S
endif endif
@@ -38,6 +39,7 @@ $c += -Os -fomit-frame-pointer
$c += -fno-unit-at-a-time $c += -fno-unit-at-a-time
$c += -ffunction-sections $c += -ffunction-sections
$c += -fwrapv $c += -fwrapv
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
$c += -I$(UPX_LZMADIR) $c += -I$(UPX_LZMADIR)
$c += -I$(top_srcdir)/src $c += -I$(top_srcdir)/src
+5
View File
@@ -62,3 +62,8 @@ L20:
bdnz+ L20 # if (0!=--ctr) goto L20; // likely bdnz+ L20 # if (0!=--ctr) goto L20; // likely
ret ret
#undef ptr0
#undef ftid
#undef cto8
#undef len
#undef ptr
+3 -2
View File
@@ -28,6 +28,7 @@
*/ */
#include "ppc_regs.h" #include "ppc_regs.h"
retaddr = 2*4 // (sp,cr,pc, xx,yy,zz) save area per calling convention
#define section .section #define section .section
@@ -59,7 +60,7 @@
addi a2,lsrc,-2 // inSize addi a2,lsrc,-2 // inSize
la a1,2(src) // inp la a1,2(src) // inp
stw r0,4(sp) // ret.addr stw r0,retaddr(sp) // save return address in caller's frame
lbz r0,0(src) // first byte, replaces LzmaDecodeProperties() lbz r0,0(src) // first byte, replaces LzmaDecodeProperties()
rlwinm t1,r0,32-3,3,31 // t1= (r0>>3)==(lit_context-bits + lit_pos_bits) rlwinm t1,r0,32-3,3,31 // t1= (r0>>3)==(lit_context-bits + lit_pos_bits)
rlwinm t0,r0,0,32-3,31 // t0= (7& t0)==pos_bits rlwinm t0,r0,0,32-3,31 // t0= (7& t0)==pos_bits
@@ -102,7 +103,7 @@
section LZMA_DEC30 section LZMA_DEC30
lwz sp,0(sp) // old sp lwz sp,0(sp) // old sp
lwz r0,4(sp) // ret.addr lwz r0,retaddr(sp)
mtlr r0 mtlr r0
blr blr
+1 -1
View File
@@ -103,7 +103,7 @@ copy:
sub r10,r12,r9 // &b_info sub r10,r12,r9 // &b_info
add r10,r10,r4 // relocated &b_info add r10,r10,r4 // relocated &b_info
ldrb r0,[r11,# b_method ] // 5th param ldr r0,[r11,# b_method ] // 5th param (whole word: endian issues!)
stmdb sp!,{r0,lr} stmdb sp!,{r0,lr}
ldr r3,[r11,# sz_unc] ldr r3,[r11,# sz_unc]
add r0, r11,# sz_b_info add r0, r11,# sz_b_info
@@ -0,0 +1,30 @@
/*
; armeb-linux.kernel.vmlinux-head.S -- set up stack for vmlinux/armeb format
;
; This file is part of the UPX executable compressor.
;
; Copyright (C) 2006-2007 John 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.
;
; John Reiser
; <jreiser@users.sourceforge.net>
*/
#include "arm-linux.kernel.vmlinux-head.S"
// vi:ts=8:et:nowrap
+35
View File
@@ -0,0 +1,35 @@
/*
; armeb-linux.kernel.vmlinux.S -- loader & decompressor for the vmlinux/armeb format
;
; This file is part of the UPX executable compressor.
;
; Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
; Copyright (C) 1996-2007 Laszlo Molnar
; Copyright (C) 2004-2007 John 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 Reiser
; <jreiser@users.sourceforge.net>
*/
#include "arm-linux.kernel.vmlinux.S"
// vi:ts=8:et:nowrap
+8
View File
@@ -0,0 +1,8 @@
# you should set envvar UPX_LZMADIR to point to your unpacked LZMA SDK lzma443.tar.bz2
# NOTE: only version 4.43 is currently sufficiently tested !
ifneq ($(wildcard $(UPX_LZMADIR)/CPP/7zip/.),)
UPX_LZMA_VERSION = 0x449
else ifneq ($(wildcard $(UPX_LZMADIR)/C/7zip/.),)
UPX_LZMA_VERSION = 0x443
endif
+15 -2
View File
@@ -48,6 +48,9 @@
# define _LZMA_UINT32_IS_ULONG 1 # define _LZMA_UINT32_IS_ULONG 1
# endif # endif
#endif #endif
#if !defined(_LZMA_NO_SYSTEM_SIZE_T)
# define _LZMA_NO_SYSTEM_SIZE_T 1
#endif
#if 0 #if 0
@@ -66,7 +69,11 @@ ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(CLzmaDecoderState) == 16)
#if (ACC_CC_BORLANDC) #if (ACC_CC_BORLANDC)
#include "LzmaDecode.h" #include "LzmaDecode.h"
#else #else
#include "C/7zip/Compress/LZMA_C/LzmaDecode.h" #if (WITH_LZMA >= 0x449)
# include "C/Compress/Lzma/LzmaDecode.h"
#else
# include "C/7zip/Compress/LZMA_C/LzmaDecode.h"
#endif
#endif #endif
#undef CLzmaDecoderState #undef CLzmaDecoderState
#undef LzmaDecodeProperties #undef LzmaDecodeProperties
@@ -88,10 +95,16 @@ ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(SizeT) >= 4)
#else #else
#define CLzmaDecoderState const CLzmaDecoderState #define CLzmaDecoderState const CLzmaDecoderState
#endif #endif
int LzmaDecodeProperties(CLzmaProperties *, const unsigned char *, int);
int LzmaDecode(CLzmaDecoderState *, const unsigned char *, SizeT, SizeT *, unsigned char *, SizeT, SizeT *);
#if (ACC_CC_BORLANDC) #if (ACC_CC_BORLANDC)
#include "LzmaDecode.c" #include "LzmaDecode.c"
#else #else
#include "C/7zip/Compress/LZMA_C/LzmaDecode.c" #if (WITH_LZMA >= 0x449)
# include "C/Compress/Lzma/LzmaDecode.c"
#else
# include "C/7zip/Compress/LZMA_C/LzmaDecode.c"
#endif
#endif #endif
#undef char #undef char
#undef CLzmaDecoderState #undef CLzmaDecoderState
+6 -6
View File
@@ -67,12 +67,12 @@ decompress:
// // C callable decompressor // // C callable decompressor
// **************************************************************************/ // **************************************************************************/
// /* Offsets to parameters, allowing for {push + pusha + call} */ // /* Offsets to parameters, allowing for {pusha + call} */
#define O_INP (4+ 8*4 +1*4) #define O_INP (8*4 +1*4)
#define O_INS (4+ 8*4 +2*4) #define O_INS (8*4 +2*4)
#define O_OUTP (4+ 8*4 +3*4) #define O_OUTP (8*4 +3*4)
#define O_OUTS (4+ 8*4 +4*4) #define O_OUTS (8*4 +4*4)
#define O_PARAM (4+ 8*4 +5*4) #define O_PARAM (8*4 +5*4)
#define INP dword ptr [esp+O_INP] #define INP dword ptr [esp+O_INP]
#define INS dword ptr [esp+O_INS] #define INS dword ptr [esp+O_INS]
+156 -54
View File
@@ -32,6 +32,7 @@
#include "include/linux.h" #include "include/linux.h"
void *mmap(void *, size_t, int, int, int, off_t); void *mmap(void *, size_t, int, int, int, off_t);
ssize_t write(int, void const *, size_t);
/************************************************************************* /*************************************************************************
@@ -45,7 +46,14 @@ void *mmap(void *, size_t, int, int, int, off_t);
#if 1 /*{*/ #if 1 /*{*/
#define DPRINTF(a) /* empty: no debug drivel */ #define DPRINTF(a) /* empty: no debug drivel */
#else /*}{*/ #else /*}{*/
#if 0
#include "stdarg.h" #include "stdarg.h"
#else
#define va_arg __builtin_va_arg
#define va_end __builtin_va_end
#define va_list __builtin_va_list
#define va_start __builtin_va_start
#endif
static int static int
unsimal(unsigned x, char *ptr, int n) unsimal(unsigned x, char *ptr, int n)
@@ -68,7 +76,7 @@ decimal(int x, char *ptr, int n)
return unsimal(x, ptr, n); return unsimal(x, ptr, n);
} }
extern char const *STR_hex(); extern char const *STR_hex(void);
static int static int
heximal(unsigned x, char *ptr, int n) heximal(unsigned x, char *ptr, int n)
@@ -83,16 +91,15 @@ heximal(unsigned x, char *ptr, int n)
#define DPRINTF(a) dprintf a #define DPRINTF(a) dprintf a
extern char const *STR_0x(); extern char const *STR_0x(void);
extern char const *STR_xread(); extern char const *STR_xread(void);
extern char const *STR_unpackExtent(); extern char const *STR_unpackExtent(void);
extern char const *STR_make_hatch_arm(); extern char const *STR_make_hatch_arm(void);
extern char const *STR_auxv_up(); extern char const *STR_auxv_up(void);
extern char const *STR_xfind_pages(); extern char const *STR_xfind_pages(void);
extern char const *STR_do_xmap(); extern char const *STR_do_xmap(void);
extern char const *STR_upx_main(); extern char const *STR_upx_main(void);
extern int write(int fd, char const *buf, size_t n);
static int static int
dprintf(char const *fmt, ...) dprintf(char const *fmt, ...)
@@ -136,17 +143,17 @@ done:
// "file" util // "file" util
**************************************************************************/ **************************************************************************/
struct Extent { typedef struct {
size_t size; // must be first to match size[0] uncompressed size size_t size; // must be first to match size[0] uncompressed size
char *buf; char *buf;
}; } Extent;
static void static void
#if (ACC_CC_GNUC >= 0x030300) && defined(__i386__) /*{*/ #if (ACC_CC_GNUC >= 0x030300) && defined(__i386__) /*{*/
__attribute__((__noinline__, __used__, regparm(3), stdcall)) __attribute__((__noinline__, __used__, regparm(3), stdcall))
#endif /*}*/ #endif /*}*/
xread(struct Extent *x, char *buf, size_t count) xread(Extent *x, char *buf, size_t count)
{ {
char *p=x->buf, *q=buf; char *p=x->buf, *q=buf;
size_t j; size_t j;
@@ -171,8 +178,8 @@ xread(struct Extent *x, char *buf, size_t count)
#define err_exit(a) goto error #define err_exit(a) goto error
#else //}{ save debugging time #else //}{ save debugging time
#define ERR_LAB #define ERR_LAB
static void static void __attribute__ ((__noreturn__))
err_exit(int a) __attribute__ ((__noreturn__)); err_exit(int a)
{ {
(void)a; // debugging convenience (void)a; // debugging convenience
exit(127); exit(127);
@@ -202,8 +209,8 @@ typedef int f_expand(
static void static void
unpackExtent( unpackExtent(
struct Extent *const xi, // input Extent *const xi, // input
struct Extent *const xo, // output Extent *const xo, // output
f_expand *const f_decompress, f_expand *const f_decompress,
f_unfilter *f_unf f_unfilter *f_unf
) )
@@ -291,6 +298,9 @@ make_hatch_x86(Elf32_Phdr const *const phdr, unsigned const reloc)
* hatch = escape; * hatch = escape;
} }
} }
else {
hatch = 0;
}
} }
return hatch; return hatch;
} }
@@ -312,7 +322,7 @@ make_hatch_arm(Elf32_Phdr const *const phdr, unsigned const reloc)
// Try page fragmentation just beyond .text . // Try page fragmentation just beyond .text .
if ( ( (hatch = (void *)(phdr->p_memsz + phdr->p_vaddr + reloc)), if ( ( (hatch = (void *)(phdr->p_memsz + phdr->p_vaddr + reloc)),
( phdr->p_memsz==phdr->p_filesz // don't pollute potential .bss ( phdr->p_memsz==phdr->p_filesz // don't pollute potential .bss
&& 8<=(~PAGE_MASK & -(int)hatch) ) ) // space left on page && (2*4)<=(~PAGE_MASK & -(int)hatch) ) ) // space left on page
// Try Elf32_Ehdr.e_ident[8..15] . warning: 'const' cast away // Try Elf32_Ehdr.e_ident[8..15] . warning: 'const' cast away
|| ( (hatch = (void *)(&((Elf32_Ehdr *)phdr->p_vaddr + reloc)->e_ident[8])), || ( (hatch = (void *)(&((Elf32_Ehdr *)phdr->p_vaddr + reloc)->e_ident[8])),
(phdr->p_offset==0) ) ) (phdr->p_offset==0) ) )
@@ -320,6 +330,35 @@ make_hatch_arm(Elf32_Phdr const *const phdr, unsigned const reloc)
hatch[0]= 0xef90005b; // syscall __NR_unmap hatch[0]= 0xef90005b; // syscall __NR_unmap
hatch[1]= 0xe1a0f00e; // mov pc,lr hatch[1]= 0xe1a0f00e; // mov pc,lr
} }
else {
hatch = 0;
}
}
return hatch;
}
#elif defined(__mips__) /*}{*/
static void *
make_hatch_mips(
Elf32_Phdr const *const phdr,
unsigned const reloc,
unsigned const frag_mask)
{
unsigned *hatch = 0;
DPRINTF((STR_make_hatch_arm(),phdr,reloc));
if (phdr->p_type==PT_LOAD && phdr->p_flags & PF_X) {
// Try page fragmentation just beyond .text .
if ( ( (hatch = (void *)(phdr->p_memsz + phdr->p_vaddr + reloc)),
( phdr->p_memsz==phdr->p_filesz // don't pollute potential .bss
&& (3*4)<=(frag_mask & -(int)hatch) ) ) // space left on page
)
{
hatch[0]= 0x0000000c; // syscall
hatch[1]= 0x03200008; // jr $25 # $25 === $t9 === jp
hatch[2]= 0x00000000; // nop
}
else {
hatch = 0;
}
} }
return hatch; return hatch;
} }
@@ -338,13 +377,12 @@ upx_bzero(char *p, size_t len)
#define bzero upx_bzero #define bzero upx_bzero
static void static Elf32_auxv_t *
#if defined(__i386__) /*{*/ #if defined(__i386__) /*{*/
__attribute__((regparm(3), stdcall)) __attribute__((regparm(2), stdcall))
#endif /*}*/ #endif /*}*/
auxv_up(Elf32_auxv_t *av, unsigned const type, unsigned const value) auxv_find(Elf32_auxv_t *av, unsigned const type)
{ {
DPRINTF((STR_auxv_up(),av,type,value));
if (av if (av
#if defined(__i386__) /*{*/ #if defined(__i386__) /*{*/
&& 0==(1&(int)av) /* PT_INTERP usually inhibits, except for hatch */ && 0==(1&(int)av) /* PT_INTERP usually inhibits, except for hatch */
@@ -353,10 +391,23 @@ auxv_up(Elf32_auxv_t *av, unsigned const type, unsigned const value)
for (;; ++av) { for (;; ++av) {
if (av->a_type==type || (av->a_type==AT_IGNORE && type!=AT_NULL)) { if (av->a_type==type || (av->a_type==AT_IGNORE && type!=AT_NULL)) {
av->a_type = type; av->a_type = type;
av->a_un.a_val = value; return av;
return;
} }
} }
return 0;
}
static void
#if defined(__i386__) /*{*/
__attribute__((regparm(3), stdcall))
#endif /*}*/
auxv_up(Elf32_auxv_t *av, unsigned const type, unsigned const value)
{
DPRINTF((STR_auxv_up(),av,type,value));
av = auxv_find(av, type);
if (av) {
av->a_un.a_val = value;
}
} }
// The PF_* and PROT_* bits are {1,2,4}; the conversion table fits in 32 bits. // The PF_* and PROT_* bits are {1,2,4}; the conversion table fits in 32 bits.
@@ -381,6 +432,11 @@ __attribute__((regparm(3), stdcall))
#endif /*}*/ #endif /*}*/
xfind_pages(unsigned mflags, Elf32_Phdr const *phdr, int phnum, xfind_pages(unsigned mflags, Elf32_Phdr const *phdr, int phnum,
char **const p_brk char **const p_brk
#if defined(__mips__) /*{ any machine with varying PAGE_SIZE */
, unsigned const page_mask
#else /*}{*/
#define page_mask PAGE_MASK
#endif /*}*/
) )
{ {
size_t lo= ~0, hi= 0, szlo= 0; size_t lo= ~0, hi= 0, szlo= 0;
@@ -396,39 +452,59 @@ xfind_pages(unsigned mflags, Elf32_Phdr const *phdr, int phnum,
hi = phdr->p_memsz + phdr->p_vaddr; hi = phdr->p_memsz + phdr->p_vaddr;
} }
} }
szlo += ~PAGE_MASK & lo; // page fragment on lo edge szlo += ~page_mask & lo; // page fragment on lo edge
lo -= ~PAGE_MASK & lo; // round down to page boundary lo -= ~page_mask & lo; // round down to page boundary
hi = PAGE_MASK & (hi - lo - PAGE_MASK -1); // page length hi = page_mask & (hi - lo - page_mask -1); // page length
szlo = PAGE_MASK & (szlo - PAGE_MASK -1); // page length szlo = page_mask & (szlo - page_mask -1); // page length
if (MAP_FIXED & mflags) {
addr = (char *)lo;
}
else {
addr = mmap((void *)lo, hi, PROT_NONE, mflags, -1, 0); addr = mmap((void *)lo, hi, PROT_NONE, mflags, -1, 0);
//munmap(szlo + addr, hi - szlo);
}
*p_brk = hi + addr; // the logical value of brk(0) *p_brk = hi + addr; // the logical value of brk(0)
//mprotect(szlo + addr, hi - szlo, PROT_NONE); // no access, but keep the frames!
return (unsigned long)addr - lo; return (unsigned long)addr - lo;
} }
static Elf32_Addr // entry address static Elf32_Addr // entry address
do_xmap(int const fdi, Elf32_Ehdr const *const ehdr, struct Extent *const xi, do_xmap(int const fdi, Elf32_Ehdr const *const ehdr, Extent *const xi,
Elf32_auxv_t *const av, unsigned *p_reloc, f_unfilter *const f_unf) Elf32_auxv_t *const av, unsigned *p_reloc, f_unfilter *const f_unf)
{ {
Elf32_Phdr const *phdr = (Elf32_Phdr const *) (ehdr->e_phoff + Elf32_Phdr const *phdr = (Elf32_Phdr const *) (ehdr->e_phoff +
(void const *)ehdr); (void const *)ehdr);
#if defined(__mips__) /*{ any machine with varying PAGE_SIZE */
unsigned frag_mask = ~PAGE_MASK;
{
Elf32_auxv_t const *const av_pgsz = auxv_find(av, AT_PAGESZ);
if (av_pgsz) {
frag_mask = av_pgsz->a_un.a_val -1;
}
}
#else /*}{*/
unsigned const frag_mask = ~PAGE_MASK;
#endif /*}*/
char *v_brk; char *v_brk;
unsigned const reloc = xfind_pages( unsigned const reloc = xfind_pages(((ET_EXEC==ehdr->e_type) ? MAP_FIXED : 0),
((ET_EXEC==ehdr->e_type) ? MAP_FIXED : 0), phdr, ehdr->e_phnum, &v_brk); phdr, ehdr->e_phnum, &v_brk
#if defined(__mips__) /*{ any machine with varying PAGE_SIZE */
, ~frag_mask
#endif /*}*/
);
int j; int j;
DPRINTF((STR_do_xmap(), DPRINTF((STR_do_xmap(),
fdi, ehdr, xi, (xi? xi->size: 0), (xi? xi->buf: 0), av, p_reloc, f_unf)); fdi, ehdr, xi, (xi? xi->size: 0), (xi? xi->buf: 0), av, p_reloc, f_unf));
for (j=0; j < ehdr->e_phnum; ++phdr, ++j) for (j=0; j < ehdr->e_phnum; ++phdr, ++j)
if (PT_PHDR==phdr->p_type) { if (xi && PT_PHDR==phdr->p_type) {
auxv_up(av, AT_PHDR, phdr->p_vaddr + reloc); auxv_up(av, AT_PHDR, phdr->p_vaddr + reloc);
} }
else if (PT_LOAD==phdr->p_type) { else if (PT_LOAD==phdr->p_type) {
unsigned const prot = PF_TO_PROT(phdr->p_flags); unsigned const prot = PF_TO_PROT(phdr->p_flags);
struct Extent xo; Extent xo;
size_t mlen = xo.size = phdr->p_filesz; size_t mlen = xo.size = phdr->p_filesz;
char *addr = xo.buf = (char *)(phdr->p_vaddr + reloc); char * addr = xo.buf = (char *)(phdr->p_vaddr + reloc);
char *haddr = phdr->p_memsz + addr; char *const haddr = phdr->p_memsz + addr;
size_t frag = (int)addr &~ PAGE_MASK; size_t frag = (int)addr & frag_mask;
mlen += frag; mlen += frag;
addr -= frag; addr -= frag;
@@ -447,10 +523,12 @@ do_xmap(int const fdi, Elf32_Ehdr const *const ehdr, struct Extent *const xi,
((PROT_EXEC & prot) ? f_unf : 0) ); ((PROT_EXEC & prot) ? f_unf : 0) );
} }
// Linux does not fixup the low end, so neither do we. // Linux does not fixup the low end, so neither do we.
// Indeed, must leave it alone because some PT_GNU_RELRO
// dangle below PT_LOAD (but still on the low page)!
//if (PROT_WRITE & prot) { //if (PROT_WRITE & prot) {
// bzero(addr, frag); // fragment at lo end // bzero(addr, frag); // fragment at lo end
//} //}
frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary frag = (-mlen) & frag_mask; // distance to next page boundary
if (PROT_WRITE & prot) { // note: read-only .bss not supported here if (PROT_WRITE & prot) { // note: read-only .bss not supported here
bzero(mlen+addr, frag); // fragment at hi end bzero(mlen+addr, frag); // fragment at hi end
} }
@@ -464,7 +542,12 @@ do_xmap(int const fdi, Elf32_Ehdr const *const ehdr, struct Extent *const xi,
#elif defined(__arm__) /*}{*/ #elif defined(__arm__) /*}{*/
void *const hatch = make_hatch_arm(phdr, reloc); void *const hatch = make_hatch_arm(phdr, reloc);
if (0!=hatch) { if (0!=hatch) {
auxv_up((Elf32_auxv_t *)(void *)av, AT_NULL, (unsigned)hatch); auxv_up(av, AT_NULL, (unsigned)hatch);
}
#elif defined(__mips__) /*}{*/
void *const hatch = make_hatch_mips(phdr, reloc, frag_mask);
if (0!=hatch) {
auxv_up(av, AT_NULL, (unsigned)hatch);
} }
#endif /*}*/ #endif /*}*/
if (0!=mprotect(addr, mlen, prot)) { if (0!=mprotect(addr, mlen, prot)) {
@@ -481,24 +564,17 @@ ERR_LAB
} }
#if defined(__i386__) /*{*/ #if defined(__i386__) /*{*/
else if (xi) { // cleanup if decompressor overrun crosses page boundary else if (xi) { // cleanup if decompressor overrun crosses page boundary
mlen = ~PAGE_MASK & (3+ mlen); mlen = frag_mask & (3+ mlen);
if (mlen<=3) { // page fragment was overrun buffer only if (mlen<=3) { // page fragment was overrun buffer only
munmap(addr, mlen); munmap(addr, mlen);
} }
} }
#endif /*}*/ #endif /*}*/
} }
if (!xi) { // 2nd call (PT_INTERP); close()+check is smaller here if (xi && ET_DYN!=ehdr->e_type) {
if (0!=close(fdi)) {
err_exit(11);
}
}
else { // 1st call (main); also have (0!=av) here
if (ET_DYN!=ehdr->e_type) {
// Needed only if compressed shell script invokes compressed shell. // Needed only if compressed shell script invokes compressed shell.
do_brk(v_brk); do_brk(v_brk);
} }
}
if (0!=p_reloc) { if (0!=p_reloc) {
*p_reloc = reloc; *p_reloc = reloc;
} }
@@ -512,13 +588,23 @@ ERR_LAB
// This function is optimized for size. // This function is optimized for size.
**************************************************************************/ **************************************************************************/
#if defined(__mips__) /*{*/
void *upx_main( // returns entry address
struct b_info const *const bi, // 1st block header
size_t const sz_compressed, // total length
Elf32_Ehdr *const ehdr, // temp char[sz_ehdr] for decompressing
Elf32_auxv_t *const av,
f_expand *const f_decompress,
f_unfilter *const f_unf
)
#else /*}{ !__mips__ */
void *upx_main( void *upx_main(
Elf32_auxv_t *const av, Elf32_auxv_t *const av,
unsigned const sz_compressed, unsigned const sz_compressed,
f_expand *const f_decompress, f_expand *const f_decompress,
f_unfilter */*const*/ f_unfilter, f_unfilter */*const*/ f_unfilter,
struct Extent xo, Extent xo,
struct Extent xi, Extent xi,
unsigned const volatile dynbase unsigned const volatile dynbase
) __asm__("upx_main"); ) __asm__("upx_main");
@@ -527,16 +613,30 @@ void *upx_main(
unsigned const sz_compressed, unsigned const sz_compressed,
f_expand *const f_decompress, f_expand *const f_decompress,
f_unfilter */*const*/ f_unf, f_unfilter */*const*/ f_unf,
struct Extent xo, // {sz_unc, ehdr} for ELF headers Extent xo, // {sz_unc, ehdr} for ELF headers
struct Extent xi, // {sz_cpr, &b_info} for ELF headers Extent xi, // {sz_cpr, &b_info} for ELF headers
unsigned const volatile dynbase // value+result: compiler must not change unsigned const volatile dynbase // value+result: compiler must not change
) )
#endif /*}*/
{ {
#if !defined(__mips__) /*{*/
Elf32_Ehdr *const ehdr = (Elf32_Ehdr *)(void *)xo.buf; // temp char[MAX_ELF_HDR+OVERHEAD] Elf32_Ehdr *const ehdr = (Elf32_Ehdr *)(void *)xo.buf; // temp char[MAX_ELF_HDR+OVERHEAD]
#endif /*}*/
Elf32_Phdr const *phdr = (Elf32_Phdr const *)(1+ ehdr); Elf32_Phdr const *phdr = (Elf32_Phdr const *)(1+ ehdr);
Elf32_Addr reloc; Elf32_Addr reloc;
Elf32_Addr entry; Elf32_Addr entry;
#if defined(__mips__) /*{*/
unsigned dynbase = 0;
Extent xo, xi, xj;
xo.buf = (char *)ehdr;
xo.size = bi->sz_unc;
xi.buf = CONST_CAST(char *, bi); xi.size = sz_compressed;
xj.buf = CONST_CAST(char *, bi); xj.size = sz_compressed;
// ehdr = Uncompress Ehdr and Phdrs
unpackExtent(&xj, &xo, f_decompress, 0); // never filtered?
#else /*}{ !__mips__ */
// sizeof(Ehdr+Phdrs), compressed; including b_info header // sizeof(Ehdr+Phdrs), compressed; including b_info header
size_t const sz_pckhdrs = xi.size; size_t const sz_pckhdrs = xi.size;
@@ -553,6 +653,7 @@ void *upx_main(
// Prepare to decompress the Elf headers again, into the first PT_LOAD. // Prepare to decompress the Elf headers again, into the first PT_LOAD.
xi.buf -= sz_pckhdrs; xi.buf -= sz_pckhdrs;
xi.size = sz_compressed; xi.size = sz_compressed;
#endif /*}*/
// Some kernels omit AT_PHNUM,AT_PHENT,AT_PHDR because this stub has no PT_INTERP. // Some kernels omit AT_PHNUM,AT_PHENT,AT_PHDR because this stub has no PT_INTERP.
// That is "too much" optimization. Linux 2.6.x seems to give all AT_*. // That is "too much" optimization. Linux 2.6.x seems to give all AT_*.
@@ -577,7 +678,9 @@ void *upx_main(
ERR_LAB ERR_LAB
err_exit(19); err_exit(19);
} }
entry = do_xmap(fdi, ehdr, 0, 0, 0, 0); entry = do_xmap(fdi, ehdr, 0, av, &reloc, 0);
auxv_up(av, AT_BASE, reloc); // uClibc only?
close(fdi);
break; break;
} }
} }
@@ -585,7 +688,6 @@ ERR_LAB
return (void *)entry; return (void *)entry;
} }
/* /*
vi:ts=4:et:nowrap vi:ts=4:et:nowrap
*/ */
+178
View File
@@ -96,6 +96,9 @@ struct timespec {
#elif defined(__i386__) || defined(__powerpc__) || defined(__arm__) #elif defined(__i386__) || defined(__powerpc__) || defined(__arm__)
#define PAGE_MASK (~0ul<<12) // discards the offset, keeps the page #define PAGE_MASK (~0ul<<12) // discards the offset, keeps the page
#define PAGE_SIZE ( 1ul<<12) #define PAGE_SIZE ( 1ul<<12)
#elif defined(__mips__)
#define PAGE_MASK (~0ul<<16) // discards the offset, keeps the page
#define PAGE_SIZE ( 1ul<<16)
#endif #endif
#define SEEK_SET 0 #define SEEK_SET 0
@@ -348,6 +351,181 @@ static inline _syscall1(int,unlink,const char *,file)
#undef Z0 #undef Z0
#undef Z1 #undef Z1
#elif defined(__mips__) /*}{*/
#undef MAP_ANONYMOUS
#define MAP_ANONYMOUS 0x800
/* Cannot write an inline assembler constraint for a specific register.
http://gcc.gnu.org/ml/gcc-help/2007-02/msg00068.html
Workaround:
const register int num asm("v0") = 4;
const register char *const str asm("a0") = string;
asm volatile("syscall" : : "r"(num), "r"(str));
*/
static void *mmap(
void *addr, size_t len,
int prot, int flags,
int fd, off_t offset
)
{
#define __NR_mmap (90+ 4000)
register void * const a0 asm("a0") = addr;
register size_t const a1 asm("a1") = len;
register int const a2 asm("a2") = prot;
register int a3 asm("a3") = flags;
register int const t0 asm("t0") = fd;
register off_t const t1 asm("t1") = offset;
register int v0 asm("v0") = __NR_mmap;
__asm__ __volatile__(
/*"break\n"*/ /* debug only */
"addiu $29,$29,-0x20\n"
"\tsw $8,0x10($29)\n"
"\tsw $9,0x14($29)\n"
"\tsyscall\n"
"\taddiu $29,$29, 0x20\n"
"\tb sysret\n"
"sysgo:"
/*"break\n"*/ /* debug only */
"\tsyscall\n"
"sysret:"
"\tbnez $7,sysbad\n" /* $7 === a3 */
"\tjr $31\n"
"sysbad:"
"\tli $2,-1\n" /* $2 === v0; overwrite 'errno' */
"\tjr $31"
: "+r"(v0), "+r"(a3) /* "+r" ==> both read and write */
: "r"(a0), "r"(a1), "r"(a2), "r"(t0), "r"(t1)
);
return (void *)v0;
}
static ssize_t read(int fd, void *buf, size_t len)
{
#define __NR_read (3+ 4000)
register int const a0 asm("a0") = fd;
register void * const a1 asm("a1") = buf;
register size_t const a2 asm("a2") = len;
register size_t v0 asm("v0") = __NR_read;
__asm__ __volatile__(
"bal sysgo"
: "+r"(v0)
: "r"(a0), "r"(a1), "r"(a2)
: "a3"
);
return v0;
}
static void *brk(void *addr)
{
#define __NR_brk (45+ 4000)
register void *const a0 asm("a0") = addr;
register void * v0 asm("v0") = (void *)__NR_brk;
__asm__ __volatile__(
"bal sysgo"
: "+r"(v0)
: "r"(a0)
: "a3"
);
return v0;
}
static int close(int fd)
{
#define __NR_close (6+ 4000)
register int const a0 asm("a0") = fd;
register int v0 asm("v0") = __NR_close;
__asm__ __volatile__(
"bal sysgo"
: "+r"(v0)
: "r"(a0)
: "a3"
);
return v0;
}
static void exit(int code) __attribute__ ((__noreturn__));
static void exit(int code)
{
#define __NR_exit (1+ 4000)
register int const a0 asm("a0") = code;
register int v0 asm("v0") = __NR_exit;
__asm__ __volatile__(
"bal sysgo"
:
: "r"(v0), "r"(a0)
: "a3"
);
for (;;) {}
}
#if 0 /*{ UNUSED */
static int munmap(void *addr, size_t len)
{
#define __NR_munmap (91+ 4000)
register void *const a0 asm("a0") = addr;
register size_t const a1 asm("a2") = len;
register size_t v0 asm("v0");
__asm__ __volatile__(
"bal sysgo"
: "=r"(v0)
: [v0] "r"(__NR_munmap), "r"(a0), "r"(a1)
: "a3"
);
return v0;
}
#endif /*}*/
static int mprotect(void const *addr, size_t len, int prot)
{
#define __NR_mprotect (125+ 4000)
register void const *const a0 asm("a0") = addr;
register size_t const a1 asm("a1") = len;
register int const a2 asm("a2") = prot;
register size_t v0 asm("v0") = __NR_mprotect;
__asm__ __volatile__(
"bal sysgo"
: "+r"(v0)
: "r"(a0), "r"(a1), "r"(a2)
: "a3"
);
return v0;
}
static ssize_t open(char const *path, int kind, int mode)
{
#define __NR_open (5+ 4000)
register char const *const a0 asm("a0") = path;
register int const a1 asm("a1") = kind;
register int const a2 asm("a2") = mode;
register size_t v0 asm("v0") = __NR_open;
__asm__ __volatile__(
"bal sysgo"
: "+r"(v0)
: "r"(a0), "r"(a1), "r"(a2)
: "a3"
);
return v0;
}
#if 0 /*{ UNUSED */
static ssize_t write(int fd, void const *buf, size_t len)
{
#define __NR_write (4+ 4000)
register int const a0 asm("a0") = fd;
register void const * const a1 asm("a1") = buf;
register size_t const a2 asm("a2") = len;
register size_t v0 asm("v0") = __NR_write;
__asm__ __volatile__(
"bal sysgo"
: "+r"(v0)
: "r"(a0), "r"(a1), "r"(a2)
: "a3"
);
return v0;
}
#endif /*}*/
#else /*}{ generic */ #else /*}{ generic */
void *brk(void *); void *brk(void *);
+317
View File
@@ -0,0 +1,317 @@
/* mipsel-linux.elf-entry.S -- Linux program entry point & decompressor (Elf binary)
*
* This file is part of the UPX executable compressor.
*
* Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
* Copyright (C) 1996-2007 Laszlo Molnar
* Copyright (C) 2000-2007 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>
*/
#include "arch/mips/mipsel.r3000/macros.ash"
#include "arch/mips/mipsel.r3000/bits.ash"
.set mips1
.set noreorder
.set noat
.altmacro
sz_Ehdr= 52
sz_Phdr= 32
sz_l_info= 12
l_lsize= 8
sz_p_info= 12
sz_b_info= 12
sz_unc= 0
sz_cpr= 4
b_method= 8
b_ftid= 9
b_cto8= 10
b_unused=11
PROT_READ= 1
PROT_WRITE= 2
PROT_EXEC= 4
MAP_PRIVATE= 2
MAP_FIXED= 0x10
MAP_ANONYMOUS= 0x800
M_NRV2B_LE32=2 // ../conf.h
M_NRV2D_LE32=5
M_NRV2E_LE32=8
/* These from /usr/include/asm/unistd.h */
__NR_Linux = 4000
__NR_write = 4+ __NR_Linux
__NR_exit = 1+ __NR_Linux
__NR_mmap = 90+ __NR_Linux
__NR_cacheflush = 147+ __NR_Linux
/* asm/cachectl.h */
ICACHE= 1<<0
DCACHE= 1<<1
//BAL=0x04110000
section ELFMAINX
sz_pack2 = . - 4
adrm: .long ADRM
lenm: .long LENM
adru: .long ADRU
adrc: .long ADRC
lenu: .long LENU
adrx: .long ADRX
_start: .globl _start
//// break # debug only
bal main
addiu s7,ra, decompressor - 0f // s7= &decompress
0:
/* Returns 0 on success; non-zero on failure. */
decompressor: // (uchar const *lxsrc, size_t lxsrclen, uchar *lxdst, u32 &lxdstlen, uint method)
#define lxsrc a0
#define lxsrclen a1
#define lxdst a2
#define lxdstlen a3
#undef src /* bits.ash */
#define src lxsrc
#undef dst /* bits.ash */
#define dst lxdst
#include "arch/mips/mipsel.r3000/nrv2e_d.ash"
section NRV2E
nrv2e eof
#include "arch/mips/mipsel.r3000/nrv2d_d.ash"
section NRV2D
nrv2d eof
#include "arch/mips/mipsel.r3000/nrv2b_d.ash"
section NRV2B
nrv2b eof
section LZMA_ELF00 # (a0=lxsrc, a1=lxsrclen, a2=lxdst, a3= &lxdstlen)
/* LzmaDecode(a0=CLzmaDecoderState *,
a1=src, a2=srclen, a3=*psrcdone,
dst, dstlen, *pdstdone);
struct CLzmaDecoderState {
uchar lit_context_bits;
uchar lit_pos_bits;
uchar pos_bits;
uchar unused;
struct CProb[LZMA_BASE_SIZE + (LZMA_LIT_SIZE<<n)];
};
*/
LZMA_BASE_NUM = 1846
LZMA_LIT_NUM = 768
lxlzma_szframe = 12*4
lxlzma_sv_pc = 11*4
lxlzma_sv_sp = 10*4
lxlzma_dst = 9*4
lxlzma_dstdone = 8*4
lxlzma_srcdone = 7*4
#define a4 t0
#define a5 t1
#define a6 t2
lbu t9,0(lxsrc) # ((lit_context_bits + lit_pos_bits)<<3) | pos_bits
li tmp,-2*LZMA_LIT_NUM
lbu t8,1(lxsrc) # (lit_pos_bits<<4) | lit_context_bits
andi v0,t9,7 # pos_bits
srl t9,t9,3 # (lit_context_bits + lit_pos_bits)
sllv tmp,tmp,t9
addiu tmp,tmp,-4 - 2*LZMA_BASE_NUM - lxlzma_szframe
addu sp,sp,tmp # alloca
sw tmp,lxlzma_sv_sp(sp) # dynamic frame size
addiu a6,sp,lxlzma_dstdone
sw ra, lxlzma_sv_pc(sp)
lw a5,0(lxdstlen)
sw lxdst,lxlzma_dst(sp)
move a4,lxdst
addiu a3,sp,lxlzma_srcdone
addiu a2,lxsrclen,-2 # 2 header bytes
addiu a1,lxsrc,2 # 2 header bytes
addiu a0,sp,lxlzma_szframe # &CLzamDecoderState
sb v0,2(a0) # pos_bits
andi tmp,t8,0xf
sb tmp, 0(a0) # lit_context_bits
srl t8,t8,4
bal lzma_decode
sb t8,1(a0) # lit_pos_bits
/* It seems that for our uses the icache does not need to be invalidated,
because no lines from the destination have ever been fetched. However,
if the dcache is write-back, then some of the results might not be in
memory yet, and the icache could fetch stale data; so memory must be
updated from dcache.
The *next* call of the decompressor will tend to sweep much of the dcache
anyway, because the probability history array (typically ushort[7990] or
ushort[14134]) gets initialized.
*/
move t8,v0 # return value from decompression
lw a0,lxlzma_dst(sp)
lw a1,lxlzma_dstdone(sp)
li a2,ICACHE|DCACHE
li v0,__NR_cacheflush
syscall
move v0,t8 # return value from decompression
lw ra,lxlzma_sv_pc(sp)
lw tmp,lxlzma_sv_sp(sp)
jr ra
subu sp,sp,tmp # un_alloca
lzma_decode:
section LZMA_DEC20
#if 1 /*{*/
#include "arch/mips/mipsel.r3000/lzma_d.S"
#else /*}{*/
#include "arch/mips/mipsel.r3000/lzma_d-mips3k.S" /* gpp_inc:ignore=1: */
#endif /*}*/
section LZMA_DEC30
break // FIXME
section NRV_HEAD
add lxsrclen,lxsrclen,lxsrc // src_EOF
sw lxdst,(lxdstlen) // original lxdst in &lxdstlen
section NRV_TAIL
eof:
lw v1,(lxdstlen) // original lxdst
subu t8,lxsrc,lxsrclen // new_src - src_EOF; // return 0: good; else: bad
move a0,v1 // original lxdst
subu a1,lxdst,v1 // actual length generated
sw a1,(lxdstlen)
li a2,ICACHE|DCACHE
li v0,__NR_cacheflush
syscall
jr ra
move v0,t8 # return value from decompression
section ELFMAINY
msg_SELinux:
addiu a2,zero,L71 - L70 // length
bal L72
move a1,ra
L70:
.asciz "PROT_EXEC|PROT_WRITE failed.\n"
L71:
// IDENTSTR goes here
section ELFMAINZ
L72:
li a0,2 // fd stderr
li v0,__NR_write
syscall
die:
li a0,127
li v0,__NR_exit
syscall
/* Decompress the rest of this loader, and jump to it.
Map a page to hold the decompressed bytes. Logically this could
be done by setting .p_memsz for our first PT_LOAD. But as of 2005-11-09,
linux 2.6.14 only does ".bss expansion" on the PT_LOAD that describes the
highest address. [I regard this as a bug, and it makes the kernel's
fs/binfmt_elf.c complicated, buggy, and insecure.] For us, that is the 2nd
PT_LOAD, which is the only way that linux allows to set the brk() for the
uncompressed program. [This is a significant kernel misfeature.]
*/
unfold: // s7= &decompress; s6= &b_info(fold); s5= sz_pack2
/* Get some pages. If small, then get 1 page located just after the end
of the first PT_LOAD of the compressed program. This will still be below
all of the uncompressed program. If large (>=3MB uncompressed), then enough
to duplicate the entire compressed PT_LOAD, plus 1 page, located just after
the brk() of the _un_compressed program. The address and length are pre-
calculated by PackLinuxElf64amd::defineSymbols().
*/
#define a4_sys 0x10
#define a5_sys 0x14
#define sp_frame 0x20
addiu sp,sp,-sp_frame
lw a0,adrm - decompressor(s7)
li a2, PROT_READ | PROT_WRITE | PROT_EXEC
lw a1,lenm - decompressor(s7)
li a3, MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS
sw zero,a4_sys(sp) //; sw zero,a5_sys(sp) // MAP_ANON ==> ignore offset
li v0,__NR_mmap; syscall; bnez a3,err_syscall
move a0,v0 // &new page(s)
lw a1,adrc - decompressor(s7)
lw s3,adru - decompressor(s7) // for unmap in fold
lw s2,lenu - decompressor(s7) // for unmap in fold
lw s1,adrx - decompressor(s7) // for upx_main
beq a0,a1,L80 // no copy
subu t0,a0,a1 // (ADRM - ADRC) == relocation amount
subu a2,s6,s7 // &b_info(fold) - &decompress; >= sizeof(decompress)
addu a2,a2,s5 // + sz_pack2; length to copy
addu s7,s7,t0 // update &decompress
move_up: // memcpy(dst=a0, src=a1, len=round_up(a2, 8))
lw t0, 0(a1); addiu a0,a0, 8
lw t1, 4(a1); addiu a2,a2,-8
sw t0,-8(a0); addiu a1,a1, 8
bgtz a2,move_up
sw t1,-4(a0)
move v0,a0 // unfolded stub follows copied decompressor
L80:
// Decompress the folded part of this stub, then execute it.
lw t0,sz_unc(s6); move a3,sp; sw t0,0(sp) // &dst_len
move a2,v0 // &dst
lw a1,sz_cpr(s6) // src_len
addiu a0,s6,sz_b_info
jr s7 // decompress(src, srclen, dst, &dstlen /*, method*/)
move ra,a2 // return to decompressed code
err_syscall:
b err_syscall
nop
main:
lw s5,sz_pack2 - decompressor(s7) // length before stub
bal unfold
move s6,ra
// { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...}
/*__XTHEENDX__*/
/*
vi:ts=8:et:nowrap
*/
+201
View File
@@ -0,0 +1,201 @@
/* mipsel-linux.elf-fold.S -- linkage to C code to process Elf binary
*
* This file is part of the UPX executable compressor.
*
* Copyright (C) 2000-2007 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>
*/
#include "arch/mips/mipsel.r3000/macros.ash"
#include "arch/mips/mipsel.r3000/bits.ash"
.set mips1
.set noreorder
.set noat
.altmacro
PAGE_SHIFT= 12
PAGE_MASK= 0xffffffffffffffff<<PAGE_SHIFT
sz_Ehdr= 52
sz_Phdr= 32
sz_b_info= 12
sz_unc= 0
sz_cpr= 4
sz_l_info= 12
sz_p_info= 12
sz_auxv= 8
a_type = 0 # Elf32_auxv_t
a_val = 4
__NR_Linux = 4000
__NR_brk = 45+ __NR_Linux
__NR_close = 6+ __NR_Linux
__NR_exit = 1+ __NR_Linux
__NR_mmap = 90+ __NR_Linux
__NR_mprotect = 125+ __NR_Linux
__NR_munmap = 91+ __NR_Linux
__NR_open = 5+ __NR_Linux
__NR_read = 3+ __NR_Linux
__NR_readlink = 85+ __NR_Linux
PATHSIZE=4096
OVERHEAD=2048
MAX_ELF_HDR=512
#define sp_frame 0x20
BAL=0x04110000
/* In:
s7= &decompress
s5= sz_pack2
s3= ADRU
s2= LENU
s1= ADRX
sp= -sp_frame + &{argc,argv...,0,env...,0,auxv...,0,0,strings}
*/
fold_begin:
addiu v0,sp,sp_frame # &argc
addiu sp,-(4+ 4+ PATHSIZE - sp_frame) # alloca: new envp[0], " =", buffer
move v1,sp
L10: # copy argc,argv
lw tmp,0(v0); addiu v0,4
sw tmp,0(v1); addiu v1,4
bnez tmp,L10 # stop when v0= &env[0]
move s0,v1 # new &env[0]
addiu v1,4 # leave space for new env[0]
L20: # copy env
lw tmp,0(v0); addiu v0,4
sw tmp,0(v1); addiu v1,4
bnez tmp,L20 # stop when v0= &auxv[0]
move s4,v1 # new &auxv[0]
L30: # copy auxv
lw tmp,0(v0); lw t0,4(v0); addiu v0,sz_auxv
sw tmp,0(v1); sw t0,4(v1); addiu v1,sz_auxv
bnez tmp,L30 # stop when v0= &auxv[N]
move s6,v1 # new &auxv[N]
sw v1,0(s0) # new env[0]
li tmp,' '
sb tmp,0(v1) # endian neutral!
sb tmp,1(v1)
sb tmp,2(v1)
li tmp,'='
sb tmp,3(v1)
li a2,PATHSIZE-1
addiu a1,v1,4 # &buf[0]
bal 9f
move a0,ra
.asciz "/proc/self/exe"
.balign 4
9:
li v0,__NR_readlink
syscall
bltz a3,0f
addu tmp,a1,v0
sb $0,(tmp) # null terminate the path
0:
addiu sp,-MAX_ELF_HDR # alloca
move t1,zero # &f_unfilter
move t0,s7 # &f_decompress
move a3,s4 # new &auxv[0]
move a2,sp # &Elf32_Ehdr tmp space
addiu a1,s5,-(sz_Ehdr + 2*sz_Phdr + sz_l_info + sz_p_info)
/* We need a position-independent call of upx_main, which is external.
"bal upx_main" cannot be assembled by mipsel-elf-as-20060406.
".long BAL + upx_main" then changing R_MIPS_32 to R_MIPS_PC16
in a utility program, is botched when loaded by multiarch-ld-2.17
(relocates as if R_MIPS_32, changing the opcode and not
subtracting the current location).
So do it the hard way.
*/
bltzal $0,9f # ra= &9f; no branch (condition is false!)
li v0,%lo(9f)
9:
subu v0,ra,v0
addiu v0,v0,%lo(upx_main)
jalr v0
move a0,s1
/* entry= upx_main(b_info *a0, total_size a1, Elf32_Ehdr *a2,
Elf32_Auxv_t *a3, f_decompr t0, f_unfilter t1 )
*/
move jp,v0 # &entry
addiu sp, MAX_ELF_HDR # un-alloca
lw tmp,-sz_auxv+ a_val(s6)
move a1,s2 # LENU
beqz tmp,L40 # could not make escape hatch
move a0,s3 # ADRU
jr tmp # goto munmap escape hatch: [syscall; jr jp; nop]
li v0,__NR_munmap
L40:
jr jp # omit munmap
nop
#if 0 /*{ replaced by macros in include/linux.h because of 'bal' vs gcc */
err_syscall:
li a0,-1
exit: .globl exit
li v0,__NR_exit
sysgo:
syscall
sysret:
sltiu tmp,v0,PAGE_MASK
addiu tmp,tmp,-1
j ra
or v0,v0,tmp
read: .globl read
b sysgo; li v0,__NR_read
open: .globl open
b sysgo; li v0,__NR_open
close: .globl close
b sysgo; li v0,__NR_close
brk: .globl brk
b sysgo; li v0,__NR_brk
munmap: .globl munmap
b sysgo; li v0,__NR_munmap
mprotect: .globl mprotect
b sysgo; li v0,__NR_mprotect
#define a4_sys 0x10
#define a5_sys 0x14
mmap: .globl mmap
addiu sp,sp,-sp_frame
sw t0,a4_sys(sp)
sw t1,a5_sys(sp)
li v0,__NR_mmap
syscall
b sysret
addiu sp,sp, sp_frame
#endif /*}*/
# vi:ts=8:et:nowrap
@@ -0,0 +1,48 @@
/* mipsel.r3000-linux.elf-fold.lds --
This file is part of the UPX executable compressor.
Copyright (C) 2000-2007 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>
*/
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips", "elf32-littlemips")
OUTPUT_ARCH(mips)
/*ENTRY(_start)*/
PHDRS
{
text PT_LOAD FILEHDR PHDRS ;
data PT_LOAD ; /* for setting brk(0) */
}
SECTIONS
{
. = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */
.text : {
*(.text)
*(.data)
} : text
.data : {
} : data
}
@@ -0,0 +1,2 @@
#include "i386-linux.elf-main.c"
+32 -3
View File
@@ -237,13 +237,13 @@ section con.exit
section bss.cdb.start.lzma section bss.cdb.start.lzma
la t0,PSVR // prepare to compute value la t0,PSVR // prepare to compute value
subu t0,s0,t0 // get stored header offset in mem subu t0,s0,t0 // get stored header offset in mem
lui var,%hi(wrkmem-REG_SZ) // size of decomp. routine la var,wrkmem-REG_SZ
jr t0 jr t0
addiu var,%lo(wrkmem-REG_SZ) // adjust the stack with this size move tmp,sp
section bss.cdb.entry.lzma section bss.cdb.entry.lzma
move tmp,sp
push 1,var // push used regs push 1,var // push used regs
move sp,var
addiu src,t0,lzma_cpr // compressed lzma decoder offset addiu src,t0,lzma_cpr // compressed lzma decoder offset
addiu dst,sp,REG_SZ addiu dst,sp,REG_SZ
@@ -333,6 +333,35 @@ decomp_done:
section decompressor.start section decompressor.start
decompressor: decompressor:
section lzma.init
li tmp,%lo(lzma_stack_adjust-lzma_args_sz)
addu sp,tmp
/*
move var,sp
1:
sw zero,0(var)
addiu tmp,4
bnez tmp,1b
addiu var,4
*/
addiu src,2
la inSize,lzma_c_len
la outSize,lzma_u_len
addu poutSizeProcessed,sp,outSizeProcessed
addiu pinSizeprocessed,sp,inSizeProcessed
la tmp,lzma_properties
sw dst,dst_save(sp)
addiu CLzmaDecoderState,sp,lzma_args_sz
bal decompressor
sw tmp,0(CLzmaDecoderState)
lw dst,dst_save(sp)
lw outSize,outSizeProcessed(sp)
li tmp,%lo(lzma_stack_adjust-lzma_args_sz)
addu dst,outSize
subu sp,tmp
#include "arch/mips/mipsel.r3000/lzma_d.S" #include "arch/mips/mipsel.r3000/lzma_d.S"
#include "include/header.S" #include "include/header.S"
@@ -101,6 +101,7 @@ movup: # descending copy moves folded_loader to higher address
addi dst,t0,GAP # &unfolded result addi dst,t0,GAP # &unfolded result
stw ldst,-4(sp) # LZMA needs for EOF stw ldst,-4(sp) # LZMA needs for EOF
la ldst,-4(sp) # &sz_result la ldst,-4(sp) # &sz_result
la sp,-6*4(sp) // (sp,cr,pc, xx,yy,zz) save area per calling convention
bctr # call decompress: branch to counter register, return to link register bctr # call decompress: branch to counter register, return to link register
main: main:
+3 -1
View File
@@ -31,6 +31,7 @@
#include "arch/powerpc/32/macros.S" #include "arch/powerpc/32/macros.S"
#include "arch/powerpc/32/ppc_regs.h" #include "arch/powerpc/32/ppc_regs.h"
retaddr = 2*4 // (sp,cr,pc, xx,yy,zz) save area per calling convention
sz_b_info= 12 sz_b_info= 12
sz_unc= 0 sz_unc= 0
@@ -61,8 +62,9 @@ fold_begin:
#include "arch/powerpc/32/bxx.S" #include "arch/powerpc/32/bxx.S"
L90: L90:
la sp,6*4(sp) // trim save area used by decompressor
li a6,0 li a6,0
stwu a6,-4(sp) # default value stwu a6,-4(sp) # _push_ default value for dyld
movr a6,sp # &mhdrp movr a6,sp # &mhdrp
mflr a5 # &ppcbxx: f_unfilter mflr a5 # &ppcbxx: f_unfilter
+1
View File
@@ -144,6 +144,7 @@ unfold:
mtlr a0 // &continuation mtlr a0 // &continuation
lwz lsrc,sz_cpr(r30) lwz lsrc,sz_cpr(r30)
addi src,r30,sz_b_info addi src,r30,sz_b_info
la sp,-6*4(sp) // (sp,cr,pc, xx,yy,zz) save area per calling convention
bctr // goto decomrpess; return to link register (mmap'ed page) bctr // goto decomrpess; return to link register (mmap'ed page)
main: main:
+2 -1
View File
@@ -43,7 +43,7 @@ sz_l_info= 12
sz_p_info= 12 sz_p_info= 12
OVERHEAD= 2048 OVERHEAD= 2048
LINKAREA= 4*4 // SysV C linkage area: (sp, lr); but 16-byte align LINKAREA= 6*4 // (sp,cr,pc, xx,yy.zz) save area per calling convention
/* In: /* In:
r31= &decompress; also 8+ (char *)&(#bytes which preceed &-8(r31) r31= &decompress; also 8+ (char *)&(#bytes which preceed &-8(r31)
*/ */
@@ -67,6 +67,7 @@ zfind:
cmpi cr7,t0,0; bne+ cr7,zfind cmpi cr7,t0,0; bne+ cr7,zfind
ret ret
L90: L90:
la sp,6*4(sp) // trim save area used by decompressor
mflr a5 // &ppcbxx: f_unfilter mflr a5 // &ppcbxx: f_unfilter
lwz a6,0(sp) // sp at execve lwz a6,0(sp) // sp at execve
call zfind // a6= &env call zfind // a6= &env

Some files were not shown because too many files have changed in this diff Show More