Compare commits

..

65 Commits

Author SHA1 Message Date
Markus F.X.J. Oberhumer 3757579ffc all: prepare for release 2024-05-09 12:03:12 +02:00
Markus F.X.J. Oberhumer 2962dc351b CI updates 2024-05-09 10:21:39 +02:00
Markus F.X.J. Oberhumer c04c685469 src: restrict upx::atomic_exchange to pointer-size for now 2024-05-08 23:08:33 +02:00
Markus F.X.J. Oberhumer 72c9769953 src: avoid warnings when compiling with llvm-mingw-nightly 2024-05-08 22:22:13 +02:00
Markus F.X.J. Oberhumer 42759b94bd all: more clang-tidy cleanups 2024-05-08 15:12:57 +02:00
Markus F.X.J. Oberhumer aa9e69f03e submodules: update for new versions 2024-05-08 15:09:56 +02:00
Markus F.X.J. Oberhumer 0f3939df15 src: pacify clang-tidy 2024-05-07 14:46:02 +02:00
RainRat 62265a1bc9 fix typos 2024-05-07 01:41:41 -07:00
Markus F.X.J. Oberhumer 76b2cec8ee src: fix compilation with clang 2024-05-07 12:33:55 +02:00
Markus F.X.J. Oberhumer 3d82f0cfe1 src: introduce upx::atomic_exchange; cleanups 2024-05-07 10:05:44 +02:00
John Reiser e5546bc8b0 32-bit ELF escape hatch when no fit on last executable page
... about 1/1000 (4/PAGE_SIZE) chance
	modified:   src/stub/src/i386-linux.elf-main.c
	modified:   misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
   plus all 32-bit elf-fold.h, elf-fold.map
2024-05-06 09:42:13 -07:00
Markus F.X.J. Oberhumer 6fc0a00ac8 all: update for clang-tidy-18 2024-05-06 05:40:22 +02:00
Markus F.X.J. Oberhumer 3e5ba5c064 CI updates 2024-05-05 09:35:35 +02:00
John Reiser 4c32a8e3d4 Fix attempted recovery from corrupted b_info
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66271&q=label%3AProj-upx
	modified:   p_lx_elf.cpp
2024-05-04 10:35:39 -07:00
John Reiser 2ea316d754 Detect sizeofcmds too small
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66330&q=label%3AProj-upx
	modified:   p_mach.cpp
2024-05-04 10:10:37 -07:00
John Reiser 548227a55b mb_dt_offsets.clear() prevents undef from corrupted input
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66344&q=label%3AProj-upx
	modified:   p_lx_elf.cpp
2024-05-04 09:56:34 -07:00
John Reiser a831a20910 unpackExtent detects corrupted compression method
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66338&q=label%3AProj-upx
	modified:   p_unix.cpp
2024-05-04 09:43:47 -07:00
John Reiser 811f66de84 Check gnu_shift during unpack
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66273&q=label%3AProj-upx
	modified:   p_lx_elf.cpp
2024-05-04 09:05:48 -07:00
Markus F.X.J. Oberhumer 84d806328b CI updates 2024-05-02 23:31:10 +02:00
Markus F.X.J. Oberhumer 285d4c4c65 submodules: update for new versions 2024-05-02 19:41:50 +02:00
Markus F.X.J. Oberhumer 8506f5b17c testsuite: update checksums caused by version change 2024-05-02 19:38:46 +02:00
Markus F.X.J. Oberhumer a87fd56b3e all: update version 2024-05-02 18:51:55 +02:00
Markus F.X.J. Oberhumer f0cb30e2b9 all: minor cleanups 2024-05-02 18:50:23 +02:00
Markus F.X.J. Oberhumer 038743c694 CI updates 2024-05-02 03:21:27 +02:00
John Reiser 0e6cef99a0 Guard against empty PT_NOTE
https://github.com/upx/upx/issues/817
	modified:   p_lx_elf.cpp
2024-05-01 10:09:52 -07:00
John Reiser 92c925fe95 New i386/lzma-multi_d.S enables unpacking more than one block
Used by p_lx_exe.cpp; others keep old i386/lzma_d.S
which allows only one block, but avoids trouble with
anti-virus utilities for some OS.
	modified:   misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
	new file:   src/stub/src/arch/i386/lzma-multi_d.S
	modified:   src/stub/src/arch/i386/lzma_d.S
	modified:   src/stub/src/i386-bsd.elf.execve-entry.S
	modified:   src/stub/src/i386-linux.elf.execve-entry.S
    plus stub/*.h, *.dump

    Notable:
	modified:   src/stub/i386-dos32.djgpp2.h
	modified:   src/stub/i386-dos32.tmt.h
	modified:   src/stub/i386-dos32.watcom.le.h
	modified:   src/stub/i386-win32.pe.h
2024-05-01 10:09:52 -07:00
John Reiser 4562d5459d Some non-ELF --lzma stubs assumed only one block, and <= 0.5MiB
Fixed for p_lx_exc.cpp; others remain a mystery.
https://github.com/upx/upx/issues/816
2024-05-01 10:09:52 -07:00
Markus F.X.J. Oberhumer 8393ded1b3 CI updates 2024-05-01 13:11:12 +02:00
Markus F.X.J. Oberhumer b0dc483165 CI updates 2024-04-29 07:53:21 +02:00
Markus F.X.J. Oberhumer 3c0ca81311 CI updates 2024-04-29 06:24:45 +02:00
Markus F.X.J. Oberhumer 157a63a023 CI updates 2024-04-28 22:18:47 +02:00
John Reiser 80e22a7e38 Fix --preserve-build-id
https://github.com/upx/upx/issues/815
	modified:   p_lx_elf.cpp
2024-04-27 08:21:48 -07:00
Markus F.X.J. Oberhumer ddf2da3d76 cmake: run tests in parallel; misc/podman: add 30-rebuild-stubs.sh 2024-04-26 10:36:01 +02:00
Markus F.X.J. Oberhumer 0e6478a60f submodules: update for new versions 2024-04-26 09:51:10 +02:00
Markus F.X.J. Oberhumer aed2c085b8 misc: update mimic_ctest.sh 2024-04-25 10:56:24 +02:00
Markus F.X.J. Oberhumer a7592b2ca2 all: enhance tests 2024-04-25 03:19:59 +02:00
John Reiser 265c100845 PowerPC64 nrv2d decompressor
https://github.com/upx/upx/issues/813
	modified:   misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
	modified:   src/stub/src/arch/powerpc/64le/nrv2d_d.S

	modified:   src/stub/powerpc64-darwin.dylib-entry.h
	modified:   src/stub/powerpc64-darwin.macho-entry.h
	modified:   src/stub/powerpc64-linux.elf-entry.h
	modified:   src/stub/powerpc64le-linux.elf-entry.h
	modified:   src/stub/powerpc64le-linux.kernel.vmlinux.h
2024-04-24 14:37:09 -07:00
John Reiser 84e8288f61 Propagate yesterday's fix to stub decoding on PowerPC
https://github.com/upx/upx/issues/813
	modified:   misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
	modified:   src/stub/src/arch/powerpc/32/nrv2d_d.S
	modified:   src/stub/src/arch/powerpc/32/nrv2e_d.S
	modified:   src/stub/src/arch/powerpc/64le/nrv2b_d.S
	modified:   src/stub/src/arch/powerpc/64le/nrv2d_d.S

	modified:   src/stub/powerpc-darwin.dylib-entry.h
	modified:   src/stub/powerpc-darwin.macho-entry.h
	modified:   src/stub/powerpc-linux.elf-entry.h
	modified:   src/stub/powerpc-linux.kernel.vmlinux.h
	modified:   src/stub/powerpc64-darwin.dylib-entry.h
	modified:   src/stub/powerpc64-darwin.macho-entry.h
	modified:   src/stub/powerpc64-linux.elf-entry.h
	modified:   src/stub/powerpc64le-linux.elf-entry.h
	modified:   src/stub/powerpc64le-linux.kernel.vmlinux.h
	modified:   src/stub/tmp/powerpc-darwin.dylib-entry.bin.dump
	modified:   src/stub/tmp/powerpc-darwin.macho-entry.bin.dump
	modified:   src/stub/tmp/powerpc-linux.elf-entry.bin.dump
	modified:   src/stub/tmp/powerpc-linux.kernel.vmlinux.bin.dump
	modified:   src/stub/tmp/powerpc64-darwin.dylib-entry.bin.dump
	modified:   src/stub/tmp/powerpc64-darwin.macho-entry.bin.dump
	modified:   src/stub/tmp/powerpc64-linux.elf-entry.bin.dump
	modified:   src/stub/tmp/powerpc64le-linux.elf-entry.bin.dump
	modified:   src/stub/tmp/powerpc64le-linux.kernel.vmlinux.bin.dump
2024-04-24 10:36:55 -07:00
Markus F.X.J. Oberhumer c69b4561fb src: initialize some fields to suppress harmless valgrind errors 2024-04-24 12:36:22 +02:00
John Reiser 6db0af8d04 PowerPC cannot branch on CArry; requires contortions
https://github.com/upx/upx/issues/813
	modified:   src/stub/src/arch/powerpc/32/nrv2b_d.S
	modified:   misc/testsuite/upx_testsuite_1-expected_sha256sums.sh

	modified:   src/stub/powerpc-darwin.dylib-entry.h
	modified:   src/stub/powerpc-darwin.macho-entry.h
	modified:   src/stub/powerpc-linux.elf-entry.h
	modified:   src/stub/powerpc-linux.kernel.vmlinux.h
	modified:   src/stub/src/i386-linux.elf-main.c
	modified:   src/stub/tmp/powerpc-darwin.dylib-entry.bin.dump
	modified:   src/stub/tmp/powerpc-darwin.macho-entry.bin.dump
	modified:   src/stub/tmp/powerpc-linux.elf-entry.bin.dump
	modified:   src/stub/tmp/powerpc-linux.kernel.vmlinux.bin.dump
2024-04-23 17:40:07 -07:00
Markus F.X.J. Oberhumer 842d2cbb0d testsuite: update checksums 2024-04-21 19:46:05 -07:00
John Reiser 9fb64ded10 Syscall on powerpc linux wipes arg registers, unlike x86_64
Also squeaky-clean 'get_page_mask' for I/D cache consistency.
https://github.com/upx/upx/issues/813

	modified:   stub/powerpc-linux.elf-entry.h
	modified:   stub/powerpc-linux.elf-fold.h
	modified:   stub/src/powerpc-linux.elf-entry.S
	modified:   stub/src/powerpc-linux.elf-fold.S
	modified:   stub/tmp/powerpc-linux.elf-entry.bin.dump
	modified:   stub/tmp/powerpc-linux.elf-fold.map
2024-04-21 19:46:05 -07:00
Markus F.X.J. Oberhumer 9d26713b1a Add experimental (and undocumented) --help-verbose and --help-short options. 2024-04-21 14:20:18 +02:00
Markus F.X.J. Oberhumer eb3c55b5cb all: add more tests 2024-04-21 12:17:38 +02:00
Markus F.X.J. Oberhumer 896596f672 cmake update 2024-04-20 21:08:09 +02:00
Markus F.X.J. Oberhumer e4de14612f CI updates 2024-04-20 12:29:32 +02:00
Markus F.X.J. Oberhumer 1d2b276425 all: improve tests 2024-04-16 15:20:56 +02:00
Markus F.X.J. Oberhumer 35c6a200ad CI updates 2024-04-14 02:15:26 +02:00
Markus F.X.J. Oberhumer 90a7faa15e CI updates 2024-04-10 10:52:48 +02:00
John Reiser 91f5fe1c0e arm64 --nrv2d instruction confusion
https://github.com/upx/upx/issues/806

ARM Architecture Reference Manual
    ARMv8, for ARMv8-A architecture profile
Section C6.2.47, page C6-595 (note the 'invert'!)
    CINC <Wd>, <Wn>, <cond>
    is equivalent to
    CSINC <Wd>, <Wn>, <Wn>, invert(<cond>)

	modified:   src/stub/src/arch/arm64/v8/nrv2d_d32.S
	modified:   misc/testsuite/upx_testsuite_1-expected_sha256sums.sh

	modified:   src/stub/arm64-darwin.macho-entry.h
	modified:   src/stub/arm64-linux.elf-entry.h
	modified:   src/stub/arm64-linux.elf-so_fold.h
	modified:   src/stub/arm64-linux.shlib-init.h
	modified:   src/stub/arm64-win64.pe.h
2024-04-07 14:01:19 -07:00
John Reiser d48a7d303d Sync checksums for testsuite_1 (-release)
modified:   misc/testsuite/upx_testsuite_1-expected_sha256sums.sh
2024-04-06 18:37:34 -07:00
John Reiser bb816f0c74 arm64 --nrv2d preserve sign when decoding offset
https://github.com/upx/upx/issues/806
	modified:   src/stub/arm64-darwin.macho-entry.h
	modified:   src/stub/arm64-linux.elf-entry.h
	modified:   src/stub/arm64-linux.elf-so_fold.h
	modified:   src/stub/arm64-linux.shlib-init.h
	modified:   src/stub/arm64-win64.pe.h
	modified:   src/stub/src/arch/arm64/v8/nrv2d_d32.S
2024-04-06 16:16:28 -07:00
John Reiser 93abe97ea5 powerpc64le --nrv2d register conflict
modified:   stub/powerpc64-darwin.dylib-entry.h
	modified:   stub/powerpc64-darwin.macho-entry.h
	modified:   stub/powerpc64-linux.elf-entry.h
	modified:   stub/powerpc64le-linux.elf-entry.h
	modified:   stub/powerpc64le-linux.kernel.vmlinux.h
	modified:   stub/src/arch/powerpc/64le/nrv2d_d.S
	modified:   stub/src/arch/powerpc/64le/nrv2e_d.S

https://github.com/upx/upx/issues/806
2024-04-06 16:16:28 -07:00
Markus F.X.J. Oberhumer 97cf29ffbb all: enhance CMake tests; assorted updates 2024-04-06 15:47:46 +02:00
Markus F.X.J. Oberhumer ed35613d64 misc/podman/rebuild-stubs: upgrade to ubuntu-24.04 2024-04-05 20:04:23 +02:00
Markus F.X.J. Oberhumer f5ec8363b4 CI updates 2024-04-05 18:16:29 +02:00
Markus F.X.J. Oberhumer 87956de092 CI updates 2024-04-04 03:01:03 +02:00
Markus F.X.J. Oberhumer 0f9315383c cmake: only enable UBSAN for clang versions >= 9 2024-04-02 09:21:56 +02:00
Markus F.X.J. Oberhumer 3538d796a7 CI updates 2024-04-02 08:05:43 +02:00
Markus F.X.J. Oberhumer 24f3824524 CI updates and minor cleanups 2024-04-01 20:31:05 +02:00
Markus F.X.J. Oberhumer 70b20d7d89 CI updates 2024-03-29 12:11:41 +01:00
Markus F.X.J. Oberhumer 7b21a0620b CI updates 2024-03-28 20:21:11 +01:00
John Reiser 3949af6d3c Unpacking detects and defends against malicious ELF 2024-03-28 07:48:55 -07:00
Markus F.X.J. Oberhumer d1f62e3ab4 testsuite: update checksums caused by version bump 2024-03-28 19:51:57 +01:00
Markus F.X.J. Oberhumer 6e644fa480 all: post-release version bump 2024-03-28 19:47:04 +01:00
156 changed files with 13517 additions and 12475 deletions
+6 -1
View File
@@ -7,9 +7,11 @@ Checks: >
bugprone-*,
-bugprone-assignment-in-if-condition,
-bugprone-branch-clone,
-bugprone-casting-through-void,
-bugprone-easily-swappable-parameters,
-bugprone-empty-catch,
-bugprone-implicit-widening-of-multiplication-result,
-bugprone-inc-dec-in-conditions,
-bugprone-macro-parentheses,
-bugprone-narrowing-conversions,
-bugprone-reserved-identifier,
@@ -21,10 +23,13 @@ Checks: >
clang-analyzer-*,
-clang-analyzer-optin.performance.Padding,
-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
-clang-analyzer-security.insecureAPI.rand,
-clang-analyzer-security.insecureAPI.strcpy,
clang-diagnostics-*',
clang-diagnostic-*,
performance-*,
-performance-avoid-endl,
-performance-enum-size,
-performance-no-int-to-ptr,
-performance-unnecessary-value-param,
FormatStyle: file
HeaderFilterRegex: '.*'
+2 -1
View File
@@ -17,7 +17,8 @@ If:
CompileFlags:
Add:
- -std=gnu++17
# -std=gnu++20 # requires clang >= 10.0
# -std=gnu++20 # requires clangd >= 11.0
# -std=gnu++23 # requires clangd >= 18.0
---
# common flags for all C/C++ files
If:
+4
View File
@@ -3,6 +3,10 @@
#
# HINT: check settings with
# git ls-files | git check-attr --stdin --all
# git ls-files --eol
# disable all line ending conversions
* -text
#
# tell diff tools that these files are generated automatically
+243 -246
View File
@@ -4,7 +4,7 @@
# unfortunately this sometimes breaks builds in mysterious ways...
# see https://github.com/actions/runner-images.git
name: 'CI'
name: CI
on: [push, workflow_dispatch]
@@ -16,38 +16,44 @@ env:
UPX_CMAKE_BUILD_FLAGS: --verbose
UPX_CMAKE_CONFIG_FLAGS: -Wdev --warn-uninitialized
UPX_DEBUG_TEST_FLOAT_DIVISION_BY_ZERO: 1
# 2024-03-23
ZIG_DIST_VERSION: 0.12.0-dev.3429+13a9d94a8
UPX_DEBUG_TEST_LIBC_QSORT: 1
# 2024-04-20
ZIG_DIST_VERSION: 0.12.0
jobs:
job-rebuild-and-verify-stubs:
name: 'Rebuild stubs'
runs-on: ubuntu-20.04
name: Rebuild stubs
runs-on: ubuntu-latest
container: ubuntu:24.04 # glibc-2.39
#container: debian:12-slim # also works; glibc-2.36
#container: debian:testing-slim # also works
steps:
- name: 'Install extra packages'
- name: Install packages
run: |
uname -a; pwd; id; umask
mkdir ../deps; cd ../deps; mkdir packages
if ! test -e /usr/bin/python2; then
####sudo apt-get update && sudo apt-get install -y --no-install-recommends python2-minimal
dpkg --add-architecture i386
apt-get update && apt-get upgrade -y
# install system packages
apt-get install -y --no-install-recommends bash ca-certificates curl git libmpc3 make perl-base xz-utils libc6:i386 zlib1g:i386
# install python2-minimal packages from Debian-11
wget -q 'https://ftp.debian.org/debian/pool/main/p/python2.7/libpython2.7-minimal_2.7.18-8+deb11u1_amd64.deb'
wget -q 'https://ftp.debian.org/debian/pool/main/p/python2.7/python2.7-minimal_2.7.18-8+deb11u1_amd64.deb'
sudo dpkg -i ./*python2*.deb && rm ./*python2*.deb && sudo ldconfig
sudo ln -s -v python2.7 /usr/bin/python2
fi
mkdir ../deps; cd ../deps; mkdir packages
curl -sS -L -O https://ftp.debian.org/debian/pool/main/p/python2.7/libpython2.7-minimal_2.7.18-8+deb11u1_amd64.deb
curl -sS -L -O https://ftp.debian.org/debian/pool/main/p/python2.7/python2.7-minimal_2.7.18-8+deb11u1_amd64.deb
dpkg -i ./*python2*.deb && rm ./*python2*.deb && ldconfig
ln -s -v python2.7 /usr/bin/python2
# manually unpack and install compat libs from Ubuntu-16.04
wget -q 'https://archive.kernel.org/ubuntu-archive/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.6-1_amd64.deb'
curl -sS -L -O https://archive.kernel.org/ubuntu-archive/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.6-1_amd64.deb
for f in ./*.deb; do dpkg -x $f ./packages; done
sudo mv -v -n ./packages/usr/lib/x86_64-linux-gnu/lib* /usr/lib/x86_64-linux-gnu/
rm -rf ./*.deb ./packages
sudo ldconfig
mv -v -n ./packages/usr/lib/x86_64-linux-gnu/lib* /usr/lib/x86_64-linux-gnu/
rm -rf ./*.deb ./packages && ldconfig
# install upx-stubtools
wget -q -O - https://github.com/upx/upx-stubtools/releases/download/v20221212/bin-upx-20221212.tar.xz | tar -xJ
- name: 'Check out code'
uses: actions/checkout@v4
with: { submodules: true }
- name: 'Rebuild and verify stubs'
curl -sS -L https://github.com/upx/upx-stubtools/releases/download/v20221212/bin-upx-20221212.tar.xz | tar -xJ
- name: Check out code
run: |
git config --global --add safe.directory '*' # needed when running in a container
git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" .
git submodule update --init -- vendor/lzma-sdk
- name: Rebuild and verify stubs
run: |
export PATH="$(readlink -en ../deps/bin-upx-20221212):$PATH"
make -C src/stub maintainer-clean extra-clean
@@ -55,10 +61,15 @@ jobs:
make -C src/stub extra-all all
if ! git diff --quiet; then git diff; exit 1; fi
- run: bash ./misc/scripts/check_whitespace_git.sh
- name: 'Check source code formatting'
- name: Check source code formatting
run: |
UPX_CLANG_FORMAT="$PWD/../deps/bin-upx-20221212/clang-format-15.0.6" make -C src clang-format
export UPX_CLANG_FORMAT="$PWD/../deps/bin-upx-20221212/clang-format-15.0.6"
make -C src clang-format
if ! git diff --quiet; then git diff; exit 1; fi
- name: Rebuild docs
run: |
make -C doc clean all
if ! git diff --quiet; then git diff || true; fi # ignore diff error
job-linux-cmake: # uses cmake + make
if: true
@@ -69,122 +80,111 @@ jobs:
fail-fast: false
matrix:
include:
- { os: ubuntu-22.04, use_m32: true }
- { os: ubuntu-20.04, use_m32: true } # use_m32 also works here, but save some CI time
env:
UPX_CONFIG_EXPECT_THREADS: 'ON'
- { os: ubuntu-22.04, use_extra: true, use_wine: true }
- { os: ubuntu-20.04, use_extra: true }
steps:
- name: 'Install extra 32-bit and Windows packages'
if: ${{ matrix.use_m32 }}
- name: Install extra 32-bit and MinGW packages
if: ${{ matrix.use_extra }}
run: |
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y g++-multilib g++-mingw-w64-i686 g++-mingw-w64-x86-64
# make sure that we use posix-threads (pthread/winpthreads) and NOT win32-threads
for f in i686-w64-mingw32-g++ i686-w64-mingw32-gcc x86_64-w64-mingw32-g++ x86_64-w64-mingw32-gcc; do
if test -f /usr/bin/$f-posix; then sudo update-alternatives --set $f /usr/bin/$f-posix; fi
ls -l /usr/bin/${f}*
done
sudo apt-get install libc6-dbg:i386 valgrind
- name: 'Check out code'
uses: actions/checkout@v4
ls -l /etc/alternatives/*mingw* || true
sudo apt-get install -y libc6-dbg:i386 valgrind
- name: Install Wine
if: ${{ matrix.use_extra && matrix.use_wine }}
run: |
sudo apt-get install -y wine wine32:i386 wine64
ls -l /usr/bin/wine*
mkdir -p -v ~/.wine && wineboot --init
- uses: actions/checkout@v4
with: { submodules: true }
- name: 'Check out test suite'
run: 'git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite'
- name: 'Build extra/gcc/debug'
run: 'make build/extra/gcc/debug'
- name: 'Build extra/gcc/release'
run: 'make build/extra/gcc/release'
- name: 'Build extra/clang/debug'
run: 'make build/extra/clang/debug'
- name: 'Build extra/clang/release'
run: 'make build/extra/clang/release'
- name: 'Build extra/gcc-m32/debug'
if: ${{ matrix.use_m32 }}
run: 'make build/extra/gcc-m32/debug'
- name: 'Build extra/gcc-m32/release'
if: ${{ matrix.use_m32 && (success() || failure()) }} # run this step even if the previous step failed
run: 'make build/extra/gcc-m32/release'
- name: 'Build extra/cross-windows-mingw32/release'
if: ${{ matrix.use_m32 && (success() || failure()) }} # run this step even if the previous step failed
run: 'make build/extra/cross-windows-mingw32/release'
- name: 'Build extra/cross-windows-mingw64/release'
if: ${{ matrix.use_m32 && (success() || failure()) }} # run this step even if the previous step failed
run: 'make build/extra/cross-windows-mingw64/release'
- name: 'Make artifact'
- name: Check out test suite
run: git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite
- run: make build/extra/gcc/all
- run: make build/extra/clang/all
- run: make build/extra/gcc-m32/all
if: ${{ matrix.use_extra }}
- run: make build/extra/gcc-mx32/all
if: ${{ matrix.use_extra }}
- run: make build/extra/cross-windows-mingw32/all
if: ${{ matrix.use_extra }}
- run: make build/extra/cross-windows-mingw64/all
if: ${{ matrix.use_extra }}
- name: Make artifact
run: |
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-${{ matrix.os }}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
mkdir -p "tmp/artifact/$N"
(cd build && shopt -s nullglob && cp -ai --parents */upx{,.exe} */*/*/upx{,.exe} "../tmp/artifact/$N")
(cd tmp/artifact && tar --sort=name -czf "$N.tar.gz" "$N" && rm -rf "./$N")
# GitHub Actions magic: set "artifact_name" environment value for use in next step
echo "artifact_name=$N" >> $GITHUB_ENV
- name: ${{ format('Upload artifact {0}', env.artifact_name) }}
uses: actions/upload-artifact@v4
with:
name: ${{ env.artifact_name }}
path: tmp/artifact
- name: 'Run install tests'
with: { name: '${{ env.artifact_name }}', path: tmp/artifact }
- name: Run install tests
run: |
(cd build/extra/gcc/release && DESTDIR="$PWD/Install with cmake" cmake --install .)
(cd build/extra/gcc/release && DESTDIR="$PWD/Install with make" make install)
- name: 'Run ctest tests'
- name: Run ctest tests
run: |
make -C build/extra/gcc/debug test
make -C build/extra/gcc/release test
make -C build/extra/clang/debug test
make -C build/extra/clang/release test
- name: 'Run ctest tests 32-bit'
if: ${{ matrix.use_m32 }}
jobs="gcc/debug gcc/release clang/debug clang/release"
test "${{ matrix.use_extra }}" = "true" && jobs="$jobs gcc-m32/debug gcc-m32/release"
command -v wine >/dev/null && jobs="$jobs cross-windows-mingw32/debug cross-windows-mingw32/release"
command -v wine >/dev/null && jobs="$jobs cross-windows-mingw64/debug cross-windows-mingw64/release"
echo "===== parallel jobs: $jobs"
CTEST_JOBS=2 parallel -kv --lb 'make build/extra/{}+test' ::: $jobs
- name: Mimic ctest tests
run: |
make -C build/extra/gcc-m32/debug test
make -C build/extra/gcc-m32/release test
- name: 'Mimic ctest tests'
run: |
env -C build/extra/gcc/debug bash "$PWD"/misc/testsuite/mimic_ctest.sh
env -C build/extra/gcc/release bash "$PWD"/misc/testsuite/mimic_ctest.sh
env -C build/extra/clang/debug bash "$PWD"/misc/testsuite/mimic_ctest.sh
env -C build/extra/clang/release bash "$PWD"/misc/testsuite/mimic_ctest.sh
- name: 'Mimic ctest tests 32-bit'
if: ${{ matrix.use_m32 }}
run: |
env -C build/extra/gcc-m32/debug bash "$PWD"/misc/testsuite/mimic_ctest.sh
env -C build/extra/gcc-m32/release bash "$PWD"/misc/testsuite/mimic_ctest.sh
- name: 'Mimic ctest tests with Valgrind'
jobs="gcc/debug gcc/release clang/debug clang/release"
test "${{ matrix.use_extra }}" = "true" && jobs="$jobs gcc-m32/debug gcc-m32/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
- name: Mimic ctest tests with Valgrind
if: true # note: valgrind is SLOW
run: |
if command -v valgrind >/dev/null; then
export UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS=ON # valgrind is SLOW
export upx_exe_runner="valgrind --leak-check=no --error-exitcode=1 --quiet --gen-suppressions=all"
env -C build/extra/gcc/debug bash "$PWD"/misc/testsuite/mimic_ctest.sh
env -C build/extra/gcc/release bash "$PWD"/misc/testsuite/mimic_ctest.sh
# clang/debug does not work before valgrind-3.20, see https://bugs.kde.org/show_bug.cgi?id=452758
##env -C build/extra/clang/debug bash "$PWD"/misc/testsuite/mimic_ctest.sh
env -C build/extra/clang/release bash "$PWD"/misc/testsuite/mimic_ctest.sh
jobs="gcc/debug gcc/release clang/release"
test "${{ matrix.use_extra }}" = "true" && jobs="$jobs gcc-m32/debug gcc-m32/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
fi
- name: 'Mimic ctest tests 32-bit with Valgrind'
if: ${{ matrix.use_m32 }}
- name: Run file system test suite
run: |
jobs="gcc/debug gcc/release clang/debug clang/release"
test "${{ matrix.use_extra }}" = "true" && jobs="$jobs gcc-m32/debug gcc-m32/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/test_symlinks.sh' ::: $jobs
- name: Run file system test suite with Valgrind
if: false # note: valgrind is SLOW
run: |
if command -v valgrind >/dev/null; then
export upx_exe_runner="valgrind --leak-check=no --error-exitcode=1 --quiet --gen-suppressions=all"
env -C build/extra/gcc-m32/debug bash "$PWD"/misc/testsuite/mimic_ctest.sh
env -C build/extra/gcc-m32/release bash "$PWD"/misc/testsuite/mimic_ctest.sh
# clang/debug does not work before valgrind-3.20, see https://bugs.kde.org/show_bug.cgi?id=452758
jobs="gcc/debug gcc/release clang/release"
test "${{ matrix.use_extra }}" = "true" && jobs="$jobs gcc-m32/debug gcc-m32/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/test_symlinks.sh' ::: $jobs
fi
- name: 'Run file system test suite'
run: |
env -C build/extra/gcc/release bash "$PWD"/misc/testsuite/test_symlinks.sh
- name: 'Run file system test suite with Valgrind'
run: |
if command -v valgrind >/dev/null; then
export upx_exe_runner="valgrind --leak-check=no --error-exitcode=1 --quiet --gen-suppressions=all"
env -C build/extra/gcc/release bash "$PWD"/misc/testsuite/test_symlinks.sh
fi
- name: 'Run test suite build/extra/gcc/release'
- name: Run test suite
run: |
export upx_testsuite_SRCDIR="$(readlink -en ../deps/upx-testsuite)"
env -C build/extra/gcc/release bash "$PWD"/misc/testsuite/upx_testsuite_1.sh
jobs="gcc/debug gcc/release clang/debug clang/release"
test "${{ matrix.use_extra }}" = "true" && jobs="$jobs gcc-m32/debug gcc-m32/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/upx_testsuite_1.sh' ::: $jobs
job-macos-cmake: # uses cmake + make
if: true
needs: [ job-rebuild-and-verify-stubs ]
name: ${{ format('{0} {1}', matrix.os, matrix.xcode_version) }}
name: ${{ format('{0} {1}{2}', matrix.os, matrix.xcode_version && 'xcode-' || '', matrix.xcode_version) }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
@@ -192,99 +192,96 @@ jobs:
include:
# NOTE: macos does not have "env -C"; only with brew coreutils
# NOTE: macos-11 does not have "readlink -f"; only on macos >= 12 or with brew coreutils
- { os: macos-11, gcc: gcc-10, gxx: 'g++-10', testsuite: true }
- { os: macos-12, gcc: gcc-11, gxx: 'g++-11', testsuite: true }
- { os: macos-13, gcc: gcc-12, gxx: 'g++-12', testsuite: true, xcode_version: 14.3.1 }
- { os: macos-13, testsuite: true } # use default Xcode-15
# { os: macos-14, gcc: gcc-13, gxx: 'g++-13', testsuite: true } # gcc-13: INTERNAL ERROR in ld64
# { os: macos-14, gcc: gcc-13, gxx: 'g++-13', testsuite: true, xcode_version: 14.3.1 } # gcc-13: MISSING HEADER FILES
- { os: macos-14, gcc: gcc-12, gxx: 'g++-12', testsuite: true } # => use gcc-12 for now
env:
UPX_CONFIG_EXPECT_THREADS: 'ON'
- { os: macos-11, gcc: gcc-10, gxx: g++-10, testsuite: true }
- { os: macos-12, gcc: gcc-11, gxx: g++-11, testsuite: true }
- { os: macos-13, testsuite: true } # use default Xcode-15; NOTE: gcc-12 on macos-13 does not work with Xcode-15
- { os: macos-13, gcc: gcc-12, gxx: g++-12, testsuite: true, xcode_version: 14.3.1 }
# { os: macos-14, gcc: gcc-13, gxx: g++-13, testsuite: true } # gcc-13: INTERNAL ERROR in ld64
# { os: macos-14, gcc: gcc-13, gxx: g++-13, testsuite: true, xcode_version: 14.3.1 } # gcc-13: MISSING HEADER FILES
- { os: macos-14, gcc: gcc-12, gxx: g++-12, testsuite: true } # => use gcc-12 for now
steps:
- uses: maxim-lobanov/setup-xcode@v1
if: matrix.xcode_version # NOTE: gcc-12 on macos-13 does not work with Xcode-15
with:
xcode-version: ${{ matrix.xcode_version }}
- name: 'Install brew packages'
if: ${{ matrix.xcode_version }}
with: { xcode-version: '${{ matrix.xcode_version }}' }
- name: Install brew packages
if: ${{ matrix.testsuite }}
run: |
test -z "$HOMEBREW_PREFIX" && HOMEBREW_PREFIX="$(brew --prefix)"
echo "HOMEBREW_PREFIX=$HOMEBREW_PREFIX" >> $GITHUB_ENV
# testsuite needs working "readlink -en" and "sha256sum -b"
if ! test -e "$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin/readlink"; then
packages="ninja parallel"
test -e "$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin/readlink" || packages="$packages coreutils"
if test -n "$packages"; then
echo "===== brew leaves:"; brew leaves; echo "===== brew list:"; brew list --versions
# only run "brew update" if needed
if ! brew install coreutils; then brew update && brew install coreutils; fi
if ! brew install $packages; then brew update && brew install $packages; fi
fi
mkdir -p ~/.parallel && : > ~/.parallel/$(echo 6305-4721 | tr 0-7 leticlwi)
echo "UPX_DEBUG_FORCE_PACK_MACOS=1" >> $GITHUB_ENV
case "${{ matrix.os }}" in
macos-11 | macos-12) echo "UPX_DEBUG_FORCE_PACK_MACOS=1" >> $GITHUB_ENV ;;
# FIXME: UPX on macos-13+ is broken => disable self-test for now
macos-13 | macos-14) echo "UPX_CONFIG_DISABLE_SELF_PACK_TEST=ON" >> $GITHUB_ENV ;;
# TODO FIXME: UPX on macos-13+ is broken => disable run-packed for now
macos-13 | macos-14) echo "UPX_CONFIG_DISABLE_RUN_PACKED_TEST=ON" >> $GITHUB_ENV ;;
esac
- name: 'Check out code'
uses: actions/checkout@v4
- uses: actions/checkout@v4
with: { submodules: true }
- name: 'Check out test suite'
- name: Check out test suite
if: ${{ matrix.testsuite }}
run: 'git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite'
- name: 'Build extra/clang/debug'
run: 'make build/extra/clang/debug'
- name: 'Build extra/clang/release'
run: 'make build/extra/clang/release'
- name: 'Build extra/gcc/debug'
if: ${{ matrix.gcc != '' }}
run: 'make build/extra/gcc/debug CC="${{ matrix.gcc }} -static-libgcc" CXX="${{ matrix.gxx }} -static-libgcc -static-libstdc++"'
- name: 'Build extra/gcc/release'
if: ${{ matrix.gcc != '' }}
run: 'make build/extra/gcc/release CC="${{ matrix.gcc }} -static-libgcc" CXX="${{ matrix.gxx }} -static-libgcc -static-libstdc++"'
- name: 'Build xtarget/cross-darwin-arm64/debug'
run: git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite
- run: make build/extra/clang/all
- name: Build extra/gcc/all
if: ${{ matrix.gcc }}
run: make build/extra/gcc/all CC="${{ matrix.gcc }} -static-libgcc" CXX="${{ matrix.gxx }} -static-libgcc -static-libstdc++"
- name: Build xtarget/cross-darwin-arm64/all
run: |
make UPX_XTARGET=xtarget/cross-darwin-arm64 xtarget/debug \
make UPX_XTARGET=xtarget/cross-darwin-arm64 xtarget/all \
CC="clang -target arm64-apple-darwin" CXX="clang++ -target arm64-apple-darwin"
- name: 'Build xtarget/cross-darwin-arm64/release'
run: |
make UPX_XTARGET=xtarget/cross-darwin-arm64 xtarget/release \
CC="clang -target arm64-apple-darwin" CXX="clang++ -target arm64-apple-darwin"
- name: 'Make artifact'
- name: Make artifact
run: |
X="${{ matrix.xcode_version }}"; test -n "$X" && X="-xcode-$X"
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-${{ matrix.os }}$X" | sed 's/[^0-9a-zA-Z_.-]/-/g')
mkdir -p "tmp/artifact/$N"
(cd build && rsync -R -a */*/*/upx "../tmp/artifact/$N/")
(cd tmp/artifact && gtar --sort=name -czf "$N.tar.gz" "$N" && rm -rf "./$N")
# GitHub Actions magic: set "artifact_name" environment value for use in next step
echo "artifact_name=$N" >> $GITHUB_ENV
- name: ${{ format('Upload artifact {0}', env.artifact_name) }}
uses: actions/upload-artifact@v4
with:
name: ${{ env.artifact_name }}
path: tmp/artifact
- name: 'Run install tests'
with: { name: '${{ env.artifact_name }}', path: tmp/artifact }
- name: Run install tests
run: |
(cd build/extra/clang/release && DESTDIR="$PWD/Install with cmake" cmake --install .)
(cd build/extra/clang/release && DESTDIR="$PWD/Install with make" make install)
- name: 'Run ctest tests'
- name: Run ctest tests
run: |
make -C build/extra/clang/debug test
make -C build/extra/clang/release test
for f in ./build/extra/*/*/upx; do echo "===== $f"; $f --sysinfo -v; done
- name: 'Mimic ctest tests'
for f in ./build/extra/*/*/upx; do file $f; done
jobs="clang/debug clang/release"
test -n "${{ matrix.gcc }}" && jobs="$jobs gcc/debug gcc/release"
echo "===== parallel jobs: $jobs"
CTEST_JOBS=2 parallel -kv --lb 'make build/extra/{}+test' ::: $jobs
- name: Mimic ctest tests
run: |
export PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH"
env -C build/extra/clang/debug bash "$PWD"/misc/testsuite/mimic_ctest.sh
env -C build/extra/clang/release bash "$PWD"/misc/testsuite/mimic_ctest.sh
- name: 'Run file system test suite'
jobs="clang/debug clang/release"
test -n "${{ matrix.gcc }}" && jobs="$jobs gcc/debug gcc/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
- name: Run file system test suite
if: ${{ matrix.testsuite }} # for coreutils readlink
run: |
export PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH"
env -C build/extra/clang/release bash "$PWD"/misc/testsuite/test_symlinks.sh
- name: 'Run test suite build/extra/clang/release'
export upx_test_file="$PWD"/build/extra/clang/release/upx
jobs="clang/debug clang/release"
test -n "${{ matrix.gcc }}" && jobs="$jobs gcc/debug gcc/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/test_symlinks.sh' ::: $jobs
- name: Run test suite
if: ${{ matrix.testsuite }}
run: |
export PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH"
export upx_testsuite_SRCDIR="$(readlink -en ../deps/upx-testsuite)"
env -C build/extra/clang/release bash "$PWD"/misc/testsuite/upx_testsuite_1.sh
jobs="clang/debug clang/release"
test -n "${{ matrix.gcc }}" && jobs="$jobs gcc/debug gcc/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/extra/{} && bash ../../../../misc/testsuite/upx_testsuite_1.sh' ::: $jobs
job-windows-cmake: # uses cmake + msbuild
if: true
@@ -295,46 +292,35 @@ jobs:
fail-fast: false
matrix:
include:
- { name: windows-2019-amd64, os: windows-2019, vsversion: 2019, arch: amd64 }
- { name: windows-2022-amd64, os: windows-2022, vsversion: 2022, arch: amd64 }
env:
UPX_CONFIG_EXPECT_THREADS: 'ON'
- { name: windows-2019-amd64, os: windows-2019, vsversion: 2019, vsarch: amd64 }
- { name: windows-2022-amd64, os: windows-2022, vsversion: 2022, vsarch: amd64 }
steps:
- run: git config --global core.autocrlf false
- name: 'Check out code'
uses: actions/checkout@v4
- uses: actions/checkout@v4
with: { submodules: true }
- name: 'Check out test suite'
run: 'git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite'
- name: 'Set up Developer Command Prompt'
uses: ilammy/msvc-dev-cmd@v1
with:
vsversion: ${{ matrix.vsversion }}
arch: ${{ matrix.arch }}
- name: 'Build debug'
run: 'make build/debug'
- name: 'Build release'
run: 'make build/release'
- name: 'Make artifact'
- name: Check out test suite
run: git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite
- uses: ilammy/msvc-dev-cmd@v1
with: { vsversion: '${{ matrix.vsversion }}', arch: '${{ matrix.vsarch }}' }
- run: make build/debug
- run: make build/release
- name: Make artifact
shell: bash
run: |
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-${{ matrix.os }}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
mkdir -p "tmp/artifact/$N"
(cd build && cp -ai --parents */*/upx.exe "../tmp/artifact/$N")
# GitHub Actions magic: set "artifact_name" environment value for use in next step
echo "artifact_name=$N" >> $GITHUB_ENV
- name: ${{ format('Upload artifact {0}', env.artifact_name) }}
uses: actions/upload-artifact@v4
with:
name: ${{ env.artifact_name }}
path: tmp/artifact
- name: 'Run ctest tests'
if: ${{ matrix.arch != 'amd64_arm64' }}
with: { name: '${{ env.artifact_name }}', path: tmp/artifact }
- name: Run ctest tests
if: ${{ matrix.vsarch != 'amd64_arm64' }}
run: |
ctest --test-dir build/debug -C Debug
ctest --test-dir build/release -C Release
- name: 'Run test suite build/release'
if: ${{ matrix.arch != 'amd64_arm64' }}
ctest --test-dir build/debug --parallel 8 -C Debug
ctest --test-dir build/release --parallel 8 -C Release
- name: Run test suite build/release
if: ${{ matrix.vsarch != 'amd64_arm64' }}
shell: bash
run: |
export upx_testsuite_SRCDIR="$(readlink -en ../deps/upx-testsuite)"
@@ -352,32 +338,28 @@ jobs:
fail-fast: false
matrix:
include:
- { name: amd64-win64-vs2019, os: windows-2019, vsversion: 2019, arch: amd64 }
- { name: amd64-win64-vs2022, os: windows-2022, vsversion: 2022, arch: amd64 }
- { name: arm64-win64-vs2019, os: windows-2019, vsversion: 2019, arch: amd64_arm64 }
- { name: arm64-win64-vs2022, os: windows-2022, vsversion: 2022, arch: amd64_arm64 }
- { name: arm64ec-win64-vs2022, os: windows-2022, vsversion: 2022, arch: amd64_arm64, cl_machine_flags: -arm64EC, link_machine_flags: '/machine:arm64ec' }
# { name: arm64x-win64-vs2022, os: windows-2022, vsversion: 2022, arch: amd64_arm64, cl_machine_flags: -arm64EC, link_machine_flags: '/machine:arm64x' }
- { name: i386-win32-vs2019, os: windows-2019, vsversion: 2019, arch: amd64_x86 }
- { name: i386-win32-vs2022, os: windows-2022, vsversion: 2022, arch: amd64_x86 }
- { name: amd64-win64-vs2019, os: windows-2019, vsversion: 2019, vsarch: amd64 }
- { name: amd64-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64 }
- { name: arm64-win64-vs2019, os: windows-2019, vsversion: 2019, vsarch: amd64_arm64 }
- { name: arm64-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_arm64 }
- { name: arm64ec-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_arm64, cl_machine_flags: -arm64EC, link_machine_flags: '/machine:arm64ec' }
# { name: arm64x-win64-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_arm64, cl_machine_flags: -arm64EC, link_machine_flags: '/machine:arm64x' }
- { name: i386-win32-vs2019, os: windows-2019, vsversion: 2019, vsarch: amd64_x86 }
- { name: i386-win32-vs2022, os: windows-2022, vsversion: 2022, vsarch: amd64_x86 }
steps:
- run: git config --global core.autocrlf false
- name: 'Check out code'
uses: actions/checkout@v4
- uses: actions/checkout@v4
with: { submodules: true }
- name: 'Prepare sources and Check out test suite'
- name: Prepare sources and Check out test suite
shell: bash
run: |
git clone --depth=1 https://github.com/upx/upx-testsuite ../deps/upx-testsuite
mkdir -p -v build/$C/$B/{bzip2,ucl,upx,zlib,zstd}
repository_name="${GITHUB_REPOSITORY##*/}" # basename
echo "H=d:\\a\\$repository_name\\$repository_name" >> $GITHUB_ENV
- name: 'Set up Developer Command Prompt'
uses: ilammy/msvc-dev-cmd@v1
with:
vsversion: ${{ matrix.vsversion }}
arch: ${{ matrix.arch }}
- name: 'Build by hand'
- uses: ilammy/msvc-dev-cmd@v1
with: { vsversion: '${{ matrix.vsversion }}', arch: '${{ matrix.vsarch }}' }
- name: Build by hand
shell: cmd
run: |
@REM ===== set vars =====
@@ -416,21 +398,18 @@ jobs:
@rem set UPX_LIBS=%BDIR%\bzip2\bzip2.lib %BDIR%\ucl\ucl.lib %BDIR%\zlib\zlib.lib %BDIR%\zstd\zstd.lib
set sources=%s%\*.cpp %s%\check\*.cpp %s%\compress\*.cpp %s%\console\*.cpp %s%\filter\*.cpp %s%\util\*.cpp
%RUN_CL% -J -O2 -W4 -WX -std:c++17 -Zc:__cplusplus -EHsc -DUPX_VERSION_GITREV="""%GITREV%""" %DEFS% %UPX_DEFS% -I%H%\vendor -Feupx.exe %sources% %UPX_LIBS% /link ${{ matrix.link_machine_flags }} setargv.obj
- name: 'Make artifact'
- name: Make artifact
shell: bash
run: |
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-windows-${{ matrix.name }}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
mkdir -p "tmp/artifact/$N/$B"
cp -ai build/$C/$B/upx/upx*.exe "tmp/artifact/$N/$B"
# GitHub Actions magic: set "artifact_name" environment value for use in next step
echo "artifact_name=$N" >> $GITHUB_ENV
- name: ${{ format('Upload artifact {0}', env.artifact_name) }}
uses: actions/upload-artifact@v4
with:
name: ${{ env.artifact_name }}
path: tmp/artifact
- name: 'Run basic tests'
if: ${{ matrix.arch != 'amd64_arm64' }}
with: { name: '${{ env.artifact_name }}', path: tmp/artifact }
- name: Run basic tests
if: ${{ matrix.vsarch != 'amd64_arm64' }}
run: |
$ErrorActionPreference = 'stop'
$ErrorView = 'NormalView'
@@ -443,8 +422,8 @@ jobs:
.\upx.exe -l upx_packed.exe
.\upx.exe -t upx_packed.exe
.\upx_packed.exe --version
- name: 'Run test suite'
if: ${{ matrix.arch != 'amd64_arm64' }}
- name: Run test suite
if: ${{ matrix.vsarch != 'amd64_arm64' }}
shell: bash
run: |
export upx_testsuite_SRCDIR="$(readlink -en ../deps/upx-testsuite)"
@@ -455,7 +434,7 @@ jobs:
needs: [ job-rebuild-and-verify-stubs ]
name: ${{ format('zigcc {0} {1}', matrix.zig_target, matrix.zig_pic) }}
runs-on: ubuntu-latest
container: 'alpine:3.19'
container: alpine:3.19
strategy:
fail-fast: false
matrix:
@@ -470,15 +449,18 @@ jobs:
- { zig_target: aarch64-windows-gnu }
- { zig_target: arm-linux-musleabihf, qemu: qemu-arm }
# { zig_target: arm-linux-musleabihf, qemu: qemu-arm, zig_pic: -fPIE }
- { zig_target: i386-linux-musl, qemu: qemu-i386 -cpu Conroe }
# { zig_target: i386-linux-musl, qemu: qemu-i386 -cpu Conroe, zig_pic: -fPIE }
- { zig_target: i386-linux-gnu.2.3.4, zig_flags: -march=i586 }
- { zig_target: i386-linux-musl, zig_flags: -march=i586, qemu: qemu-i386 }
# { zig_target: i386-linux-musl, zig_flags: -march=i586, qemu: qemu-i386, zig_pic: -fPIE }
- { zig_target: i386-windows-gnu }
# mips and mipsel: bad hard-float code generation(??); or QEMU bug; or UPX bug; see https://github.com/upx/upx/issues/788
- { zig_target: mips-linux-musl, zig_flags: -msoft-float, qemu: qemu-mips }
- { zig_target: mipsel-linux-musl, zig_flags: -msoft-float, qemu: qemu-mipsel }
- { zig_target: powerpc-linux-musl, qemu: qemu-ppc }
- { zig_target: powerpc64-linux-musl, qemu: qemu-ppc64 }
# powerpc64: obscure problem with C++ exceptions in UPX doctest checks; use -fPIC to work-around
- { zig_target: powerpc64-linux-musl, zig_flags: -fPIC, qemu: qemu-ppc64 }
- { zig_target: powerpc64le-linux-musl, qemu: qemu-ppc64le }
- { zig_target: x86_64-linux-gnu.2.3.4, qemu: qemu-x86_64 } # can use QEMU because of gcompat
- { zig_target: x86_64-linux-musl, qemu: qemu-x86_64 }
# { zig_target: x86_64-linux-musl, qemu: qemu-x86_64, zig_pic: -fPIE }
# { zig_target: x86_64-macos-none }
@@ -487,7 +469,6 @@ jobs:
# { zig_target: x86_64-macos.13.0-none }
- { zig_target: x86_64-windows-gnu }
env:
##UPX_CONFIG_EXPECT_THREADS: 'ON'
# zig is currently missing winpthreads; see https://github.com/ziglang/zig/issues/10989
UPX_CONFIG_EXPECT_THREADS: ${{ contains(matrix.zig_target, '-windows-') && 'OFF' || 'ON' }}
# for zig-cc wrapper scripts (see below):
@@ -496,24 +477,27 @@ jobs:
ZIG_PIC: ${{ matrix.zig_pic }}
ZIG_TARGET: ${{ matrix.zig_target }}
steps:
- name: 'Install Alpine Linux container packages'
- name: Install Alpine Linux container packages
if: ${{ job.container }}
shell: sh
run: |
apk update && apk upgrade && apk add bash cmake file git make tar xz
apk update && apk upgrade && apk add bash cmake curl file git make parallel tar xz
mkdir -p ~/.parallel && : > ~/.parallel/$(echo 6305-4721 | tr 0-7 leticlwi)
# set PATH like in Ubuntu
echo "PATH=$HOME/.local/bin:$PATH" >> $GITHUB_ENV
# this seems to be needed when running in a container (beause of UID mismatch??)
git config --global --add safe.directory '*'
- name: 'Check out code'
uses: actions/checkout@v4
git config --global --add safe.directory '*' # needed when running in a container
- uses: actions/checkout@v4
with: { submodules: true }
- name: ${{ format('Install Zig {0}', env.ZIG_DIST_VERSION) }}
shell: bash
run: |
# GitHub Actions magic: set "UPX_GITREV_SHORT" environment value for use in steps below
rev=$(git rev-parse --short=7 HEAD)
echo "UPX_GITREV_SHORT=$rev" >> $GITHUB_ENV
if [[ "${{ matrix.zig_target }}" == x86_64-linux-gnu.2.3.4 ]]; then
echo "NEED_GCOMPAT=1" >> $GITHUB_ENV
# TODO FIXME: problem with self-packed upx and musl+gcompat: "Not a valid dynamic program"
echo "UPX_CONFIG_DISABLE_RUN_PACKED_TEST=ON" >> $GITHUB_ENV
fi
# update ZIG_TARGET (i386 => x86)
ZIG_TARGET=${ZIG_TARGET/i386-/x86-}
echo "ZIG_TARGET=$ZIG_TARGET" >> $GITHUB_ENV
@@ -521,7 +505,7 @@ jobs:
mkdir -p -v ~/.local/bin
cd ~/.local/bin
ZIG_DIST_NAME=zig-linux-x86_64-${ZIG_DIST_VERSION}
wget -q https://ziglang.org/builds/${ZIG_DIST_NAME}.tar.xz
curl -sS -L -O https://ziglang.org/builds/${ZIG_DIST_NAME}.tar.xz
ls -l ${ZIG_DIST_NAME}.tar.xz
tar -xoJf ${ZIG_DIST_NAME}.tar.xz
rm ${ZIG_DIST_NAME}.tar.xz
@@ -552,42 +536,55 @@ jobs:
mkdir -p "tmp/artifact/$N"
(cd build && shopt -s nullglob && cp -ai --parents */upx{,.exe} */*/*/upx{,.exe} "../tmp/artifact/$N")
(cd tmp/artifact && tar --sort=name -czf "$N.tar.gz" "$N" && rm -rf "./$N")
# GitHub Actions magic: set "artifact_name" environment value for use in next step
echo "artifact_name=$N" >> $GITHUB_ENV
- name: ${{ format('Upload artifact {0}', env.artifact_name) }}
uses: actions/upload-artifact@v4
with:
name: ${{ env.artifact_name }}
path: tmp/artifact
- name: 'Run install tests'
with: { name: '${{ env.artifact_name }}', path: tmp/artifact }
- name: Run install tests
if: ${{ contains(matrix.zig_target, '-linux') }}
run: |
(cd build/zig/${ZIG_TARGET}${ZIG_PIC}/release && DESTDIR="$PWD/Install with cmake" cmake --install .)
(cd build/zig/${ZIG_TARGET}${ZIG_PIC}/release && DESTDIR="$PWD/Install with make" make install)
- name: 'Run ctest tests'
if: ${{ matrix.zig_target == 'i386-linux-musl' || matrix.zig_target == 'x86_64-linux-musl' }}
- name: Run ctest tests
if: ${{ matrix.zig_target == 'i386-linux-musl' || matrix.zig_target == 'x86_64-linux-musl' || matrix.zig_target == 'x86_64-linux-gnu.2.3.4' }}
run: |
make -C build/zig/${ZIG_TARGET}${ZIG_PIC}/debug test
make -C build/zig/${ZIG_TARGET}${ZIG_PIC}/release test
- name: 'Mimic ctest tests'
if: ${{ matrix.zig_target == 'i386-linux-musl' || matrix.zig_target == 'x86_64-linux-musl' }}
test -n "$NEED_GCOMPAT" && apk add gcompat
jobs="${ZIG_TARGET}${ZIG_PIC}/debug ${ZIG_TARGET}${ZIG_PIC}/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'make build/zig/{}+test' ::: $jobs
- name: Mimic ctest tests
if: ${{ matrix.zig_target == 'i386-linux-musl' || matrix.zig_target == 'x86_64-linux-musl' || matrix.zig_target == 'x86_64-linux-gnu.2.3.4' }}
run: |
apk add coreutils
env -C build/zig/${ZIG_TARGET}${ZIG_PIC}/debug bash "$PWD"/misc/testsuite/mimic_ctest.sh
env -C build/zig/${ZIG_TARGET}${ZIG_PIC}/release bash "$PWD"/misc/testsuite/mimic_ctest.sh
test -n "$NEED_GCOMPAT" && apk add gcompat
jobs="${ZIG_TARGET}${ZIG_PIC}/debug ${ZIG_TARGET}${ZIG_PIC}/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/zig/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
- name: ${{ format('Mimic ctest tests with QEMU {0}', matrix.qemu) }}
if: ${{ matrix.qemu }}
run: |
qemu="${{ matrix.qemu }}"
apk add coreutils "${qemu%% *}"
test -n "$NEED_GCOMPAT" && apk add gcompat
export upx_exe_runner="$qemu"
env -C build/zig/${ZIG_TARGET}${ZIG_PIC}/debug bash "$PWD"/misc/testsuite/mimic_ctest.sh
env -C build/zig/${ZIG_TARGET}${ZIG_PIC}/release bash "$PWD"/misc/testsuite/mimic_ctest.sh
- name: 'Mimic ctest tests with Valgrind'
if: ${{ matrix.zig_target == 'x86_64-linux-musl' }}
jobs="${ZIG_TARGET}${ZIG_PIC}/debug ${ZIG_TARGET}${ZIG_PIC}/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/zig/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
- name: Mimic ctest tests with Valgrind
if: ${{ matrix.zig_target == 'x86_64-linux-musl' || matrix.zig_target == 'x86_64-linux-gnu.2.3.4' }}
run: |
export UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS=ON # valgrind is SLOW
apk add coreutils valgrind
test -n "$NEED_GCOMPAT" && apk add gcompat
export upx_exe_runner="valgrind --leak-check=no --error-exitcode=1 --quiet --gen-suppressions=all"
upx_exe_runner="$upx_exe_runner --suppressions=$PWD/misc/valgrind/musl.supp"
env -C build/zig/${ZIG_TARGET}${ZIG_PIC}/debug bash "$PWD"/misc/testsuite/mimic_ctest.sh
env -C build/zig/${ZIG_TARGET}${ZIG_PIC}/release bash "$PWD"/misc/testsuite/mimic_ctest.sh
jobs="${ZIG_TARGET}${ZIG_PIC}/debug ${ZIG_TARGET}${ZIG_PIC}/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/zig/{} && bash ../../../../misc/testsuite/mimic_ctest.sh' ::: $jobs
- name: Run file system test suite
if: ${{ matrix.zig_target == 'i386-linux-musl' || matrix.zig_target == 'x86_64-linux-musl' || matrix.zig_target == 'x86_64-linux-gnu.2.3.4' }}
run: |
apk add coreutils sudo
test -n "$NEED_GCOMPAT" && apk add gcompat
jobs="${ZIG_TARGET}${ZIG_PIC}/debug ${ZIG_TARGET}${ZIG_PIC}/release"
echo "===== parallel jobs: $jobs"
parallel -kv --lb 'cd build/zig/{} && chmod a+w . && sudo -u nobody bash ../../../../misc/testsuite/test_symlinks.sh' ::: $jobs
@@ -0,0 +1,39 @@
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
# see https://docs.github.com/en/actions/managing-issues-and-pull-requests/closing-inactive-issues
# see https://github.com/actions/stale
# Automatically closing issues is far from perfect, but then we only
# have limited resources and this approach favors issues that people
# actually care about.
#
# also see:
# "Should I Stale or Should I Close? An Analysis of a Bot that Closes
# Abandoned Issues and Pull Request".
# https://igorwiese.com/images/papers/Paper_BotSE_19.pdf
name: GitHub - Close stale issues
on:
schedule: [cron: "50 0 * * 1"] # run weekly Monday 00:50 UTC
workflow_dispatch:
jobs:
job-close-stale-issues:
if: github.repository_owner == 'upx' && github.repository == 'upx/upx'
name: Close stale issues
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v9
with:
operations-per-run: 300
exempt-all-milestones: true
exempt-issue-labels: 'blocker,bug,enhancement,help wanted,regression'
days-before-stale: 90
days-before-close: 30
stale-issue-message: 'This issue is stale because it has been open for 90 days with no activity. Please remove the stale label or add a comment or this issue will be closed in 30 days.'
stale-pr-message: 'This PR is stale because it has been open for 90 days with no activity. Please remove the stale label or add a comment or this PR will be closed in 30 days.'
close-issue-message: 'This issue was closed because it has been stalled for 30 days with no activity. Please feel free to reopen.'
close-pr-message: 'This PR was closed because it has been stalled for 30 days with no activity. Please feel free to reopen.'
repo-token: ${{ secrets.GITHUB_TOKEN }}
+43 -57
View File
@@ -25,7 +25,7 @@ else()
cmake_minimum_required(VERSION "3.8" FATAL_ERROR) # CMake >= 3.8 is needed for CXX_STANDARD 17
endif()
# support functions
# support functions and some utility
include("${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/functions.cmake")
#***********************************************************************
@@ -35,30 +35,31 @@ include("${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/functions.cmake")
upx_cmake_include_hook(1_options)
# compilation config options
if(NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.git" OR NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/use_strict_defaults.cmake")
if(NOT USE_STRICT_DEFAULTS)
# permissive config defaults when building from source code tarball
option(UPX_CONFIG_DISABLE_GITREV "Do not compile with default Git version info." ON)
option(UPX_CONFIG_DISABLE_SANITIZE "Do not compile with default sanitize options." ON)
option(UPX_CONFIG_DISABLE_GITREV "Do not compile with Git version info." ON)
option(UPX_CONFIG_DISABLE_SANITIZE "Do not compile with sanitize options." ON)
option(UPX_CONFIG_DISABLE_WERROR "Do not compile with -Werror option." ON)
option(UPX_CONFIG_DISABLE_WSTRICT "Do not compile with strict compiler warnings." ON)
option(UPX_CONFIG_DISABLE_WERROR "Do not compile with default -Werror option." ON)
else()
# strict config defaults for Git developer builds
message(STATUS "===== UPX info: strict config defaults enabled")
option(UPX_CONFIG_DISABLE_GITREV "Do not compile with default Git version info." OFF)
option(UPX_CONFIG_DISABLE_SANITIZE "Do not compile with default sanitize options." OFF)
option(UPX_CONFIG_DISABLE_GITREV "Do not compile with Git version info." OFF)
option(UPX_CONFIG_DISABLE_SANITIZE "Do not compile with sanitize options." OFF)
option(UPX_CONFIG_DISABLE_WERROR "Do not compile with -Werror option." OFF)
option(UPX_CONFIG_DISABLE_WSTRICT "Do not compile with strict compiler warnings." OFF)
option(UPX_CONFIG_DISABLE_WERROR "Do not compile with default -Werror option." OFF)
endif()
# test config options (see below)
# IMPORTANT NOTE: self-pack test can only work if the host executable format is supported by UPX!
option(UPX_CONFIG_DISABLE_SELF_PACK_TEST "Do not test packing UPX with itself" OFF)
option(UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS "Do not run exhaustive tests" OFF)
#***********************************************************************
# init
#***********************************************************************
set(UPX_VERSION_STRING "4.2.3") # this should match src/version.h
set(UPX_VERSION_STRING "4.2.4") # this should match src/version.h
upx_cmake_include_hook(2_init)
@@ -78,13 +79,15 @@ upx_cache_bool_vars(ON
CMAKE_C_STANDARD_REQUIRED CMAKE_CXX_STANDARD_REQUIRED
CMAKE_EXPORT_COMPILE_COMMANDS CMAKE_REQUIRED_QUIET
)
# internal UPX settings that default to OFF
# internal UPX settings
upx_cache_bool_vars(OFF
UPX_CONFIG_CMAKE_DISABLE_TEST UPX_CONFIG_CMAKE_DISABLE_INSTALL
UPX_CONFIG_CMAKE_DISABLE_PRINT_INFO UPX_CONFIG_CMAKE_DISABLE_PLATFORM_CHECK
UPX_CONFIG_DISABLE_C_STANDARD UPX_CONFIG_DISABLE_CXX_STANDARD
UPX_CONFIG_EXPECT_THREADS UPX_CONFIG_REQUIRE_THREADS
UPX_CONFIG_DISABLE_RUN_UNPACKED_TEST UPX_CONFIG_DISABLE_RUN_PACKED_TEST
UPX_CONFIG_REQUIRE_THREADS
)
upx_cache_bool_vars(ON UPX_CONFIG_EXPECT_THREADS)
upx_print_env_var(CC CXX)
# determine Git revision
@@ -134,9 +137,11 @@ upx_set_default_build_type(Release) # default is CMAKE_BUILD_TYPE=Release
project(upx VERSION "${UPX_VERSION_STRING}" LANGUAGES C CXX)
upx_apply_build_type()
# set MSVC_FRONTEND and MINGW
# set MSVC_FRONTEND, GNU_FRONTEND and MINGW
if(NOT DEFINED MSVC_FRONTEND AND (MSVC OR CMAKE_C_COMPILER_FRONTEND_VARIANT MATCHES "^MSVC"))
set(MSVC_FRONTEND 1)
elseif (NOT DEFINED GNU_FRONTEND AND (CMAKE_C_COMPILER_FRONTEND_VARIANT MATCHES "^GNU" OR CMAKE_C_COMPILER_ID MATCHES "(Clang|GNU)"))
set(GNU_FRONTEND 1)
endif()
if(NOT DEFINED MINGW AND CMAKE_C_PLATFORM_ID MATCHES "^MinGW")
set(MINGW 1)
@@ -232,8 +237,9 @@ if(NOT CMAKE_C_COMPILER_ID MATCHES "^MSVC")
endif()
endif()
# examine MinGW/Cygwin compiler configuration
if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.git")
# examine compiler configuration
if(NOT UPX_CONFIG_CMAKE_DISABLE_PRINT_INFO)
upx_print_common_symbols()
upx_print_mingw_symbols()
endif()
@@ -253,7 +259,7 @@ if(NOT UPX_CONFIG_DISABLE_THREADS)
endif()
# make sure that threads are indeed fully supported in C++
if(Threads_FOUND)
foreach(f std_lock_guard.cpp)
foreach(f std_lock_guard.cpp types_abi.cpp)
set(CMAKE_TRY_COMPILE_TARGET_TYPE "EXECUTABLE")
if(NOT UPX_CONFIG_DISABLE_CXX_STANDARD)
try_compile(result "${CMAKE_CURRENT_BINARY_DIR}"
@@ -266,7 +272,7 @@ if(Threads_FOUND)
endif()
if(NOT result)
# failed; under MinGW be sure to use the posix-threads and NOT the win32-threads version
#message(STATUS "Threads FAILED: ${output}") # debug output from try_compile
#message(STATUS "Threads FAILED ${f}: ${output}") # debug output from try_compile
set(Threads_FOUND OFF)
break()
endif()
@@ -330,7 +336,7 @@ upx_sanitize_target(${t})
target_compile_definitions(${t} PRIVATE BZ_NO_STDIO=1)
if(MSVC_FRONTEND)
target_compile_options(${t} PRIVATE ${warn_WN} -wd4127 -wd4244 -wd4267 ${warn_WX})
else()
elseif(GNU_FRONTEND)
target_compile_options(${t} PRIVATE ${warn_Wall} ${warn_Werror})
endif()
upx_add_target_extra_compile_options(${t} UPX_CONFIG_EXTRA_COMPILE_OPTIONS_BZIP2)
@@ -342,7 +348,7 @@ upx_compile_target_debug_with_O2(${t})
upx_sanitize_target(${t})
if(MSVC_FRONTEND)
target_compile_options(${t} PRIVATE ${warn_WN} ${warn_WX})
else()
elseif(GNU_FRONTEND)
target_compile_options(${t} PRIVATE ${warn_Wall} ${warn_Werror})
endif()
upx_add_target_extra_compile_options(${t} UPX_CONFIG_EXTRA_COMPILE_OPTIONS_UCL)
@@ -356,7 +362,7 @@ if(HAVE_UNISTD_H)
endif()
if(MSVC_FRONTEND)
target_compile_options(${t} PRIVATE -W3 ${warn_WX})
else()
elseif(GNU_FRONTEND)
target_compile_options(${t} PRIVATE ${warn_Wall} -Wno-cast-align -Wno-cast-qual ${warn_Werror})
endif()
upx_add_target_extra_compile_options(${t} UPX_CONFIG_EXTRA_COMPILE_OPTIONS_ZLIB)
@@ -368,7 +374,7 @@ upx_sanitize_target(${t})
target_compile_definitions(${t} PRIVATE DYNAMIC_BMI2=0 ZSTD_DISABLE_ASM=1)
if(MSVC_FRONTEND)
target_compile_options(${t} PRIVATE ${warn_WN} ${warn_WX})
else()
elseif(GNU_FRONTEND)
target_compile_options(${t} PRIVATE ${warn_Wall} ${warn_Werror})
endif()
upx_add_target_extra_compile_options(${t} UPX_CONFIG_EXTRA_COMPILE_OPTIONS_ZSTD)
@@ -411,7 +417,7 @@ upx_compile_source_debug_with_O2(src/filter/filter_impl.cpp)
upx_sanitize_target(${t})
if(MSVC_FRONTEND)
target_compile_options(${t} PRIVATE -EHsc ${warn_WN} ${warn_WX})
else()
elseif(GNU_FRONTEND)
target_compile_options(${t} PRIVATE ${warn_Wall} ${warn_Werror})
endif()
upx_add_target_extra_compile_options(${t} UPX_CONFIG_EXTRA_COMPILE_OPTIONS_UPX)
@@ -429,30 +435,20 @@ if(NOT UPX_CONFIG_CMAKE_DISABLE_TEST)
include(CTest)
if(NOT CMAKE_CROSSCOMPILING OR CMAKE_CROSSCOMPILING_EMULATOR)
add_test(NAME upx-version COMMAND upx --version)
add_test(NAME upx-help COMMAND upx --help)
add_test(NAME upx-sysinfo COMMAND upx --sysinfo -v)
upx_add_test(upx-version upx --version)
upx_add_test(upx-version-short upx --version-short)
upx_add_test(upx-license upx --license)
upx_add_test(upx-help-1 upx --help)
upx_add_test(upx-help-2 upx --help-short)
upx_add_test(upx-help-3 upx --help-verbose)
upx_add_test(upx-sysinfo-1 upx --sysinfo)
upx_add_test(upx-sysinfo-2 upx --sysinfo -v)
upx_add_test(upx-sysinfo-3 upx --sysinfo -vv)
if(NOT UPX_CONFIG_DISABLE_SELF_PACK_TEST)
# IMPORTANT NOTE: these tests can only work if the host executable format is supported by UPX!
set(emu "")
if(DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
set(emu "${CMAKE_CROSSCOMPILING_EMULATOR}")
# IMPORTANT NOTE: these tests can only work if the host executable format
# is supported by UPX!
include("${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/self_pack_test.cmake")
endif()
set(exe "${CMAKE_EXECUTABLE_SUFFIX}")
set(upx_self_exe "$<TARGET_FILE:upx>")
set(fo "--force-overwrite")
upx_add_serial_test(upx-self-pack upx -3 "${upx_self_exe}" ${fo} -o upx-packed${exe})
upx_add_serial_test(upx-self-pack-n2b upx -3 --nrv2b "${upx_self_exe}" ${fo} -o upx-packed-n2b${exe})
upx_add_serial_test(upx-self-pack-n2d upx -3 --nrv2d "${upx_self_exe}" ${fo} -o upx-packed-n2d${exe})
upx_add_serial_test(upx-self-pack-n2e upx -3 --nrv2e "${upx_self_exe}" ${fo} -o upx-packed-n2e${exe})
upx_add_serial_test(upx-self-pack-lzma upx -1 --lzma "${upx_self_exe}" ${fo} -o upx-packed-lzma${exe})
upx_add_serial_test(upx-list upx -l upx-packed${exe} upx-packed-n2b${exe} upx-packed-n2d${exe} upx-packed-n2e${exe} upx-packed-lzma${exe})
upx_add_serial_test(upx-fileinfo upx --fileinfo upx-packed${exe} upx-packed-n2b${exe} upx-packed-n2d${exe} upx-packed-n2e${exe} upx-packed-lzma${exe})
upx_add_serial_test(upx-test upx -t upx-packed${exe} upx-packed-n2b${exe} upx-packed-n2d${exe} upx-packed-n2e${exe} upx-packed-lzma${exe})
upx_add_serial_test(upx-unpack upx -d upx-packed${exe} ${fo} -o upx-unpacked${exe})
upx_add_serial_test(upx-run-unpacked ${emu} ./upx-unpacked${exe} --version-short)
upx_add_serial_test(upx-run-packed ${emu} ./upx-packed${exe} --version-short)
endif() # UPX_CONFIG_DISABLE_SELF_PACK_TEST
endif()
endif() # UPX_CONFIG_CMAKE_DISABLE_TEST
@@ -497,25 +493,15 @@ upx_cmake_include_hook(8_summary)
upx_print_var(CMAKE_VERSION UPX_CONFIG_CMAKE_MINIMUM_REQUIRED_VERSION CMAKE_GENERATOR)
if(NOT UPX_CONFIG_CMAKE_DISABLE_PRINT_INFO)
if(NOT ",${CMAKE_BINARY_DIR}," STREQUAL ",${CMAKE_CURRENT_BINARY_DIR}," OR NOT ",${CMAKE_SOURCE_DIR}," STREQUAL ",${CMAKE_CURRENT_SOURCE_DIR},")
upx_print_var(CMAKE_BINARY_DIR CMAKE_SOURCE_DIR CMAKE_CURRENT_BINARY_DIR CMAKE_CURRENT_SOURCE_DIR)
include("${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/print_info.cmake")
endif()
upx_print_var(CMAKE_HOST_SYSTEM_NAME CMAKE_HOST_SYSTEM_VERSION CMAKE_HOST_SYSTEM_PROCESSOR CMAKE_APPLE_SILICON_PROCESSOR)
upx_print_var(CMAKE_SYSTEM_NAME CMAKE_SYSTEM_VERSION CMAKE_SYSTEM_PROCESSOR CMAKE_CROSSCOMPILING CMAKE_CROSSCOMPILING_EMULATOR)
upx_print_var(CMAKE_OSX_DEPLOYMENT_TARGET CMAKE_OSX_SYSROOT)
upx_print_var(CMAKE_C_COMPILER CMAKE_CXX_COMPILER CMAKE_AR CMAKE_RANLIB)
upx_print_var(CMAKE_C_COMPILER_ID CMAKE_C_COMPILER_VERSION CMAKE_C_COMPILER_FRONTEND_VARIANT CMAKE_C_COMPILER_ARCHITECTURE_ID CMAKE_C_PLATFORM_ID CMAKE_C_COMPILER_ABI)
upx_print_var(CMAKE_CXX_COMPILER_ID CMAKE_CXX_COMPILER_VERSION CMAKE_CXX_COMPILER_FRONTEND_VARIANT CMAKE_CXX_COMPILER_ARCHITECTURE_ID CMAKE_CXX_PLATFORM_ID CMAKE_CXX_COMPILER_ABI)
upx_print_var(CMAKE_INTERPROCEDURAL_OPTIMIZATION CMAKE_POSITION_INDEPENDENT_CODE CMAKE_TRY_COMPILE_CONFIGURATION)
upx_print_var(APPLE CYGWIN GNUC MINGW MSVC MSVC_FRONTEND MSVC_IDE UNIX WIN32 WIN64)
endif() # UPX_CONFIG_CMAKE_DISABLE_PRINT_INFO
upx_print_var(CMAKE_INSTALL_PREFIX CMAKE_CONFIGURATION_TYPES CMAKE_BUILD_TYPE)
upx_print_var(CMAKE_INSTALL_PREFIX CMAKE_CONFIGURATION_TYPES CMAKE_TRY_COMPILE_CONFIGURATION CMAKE_BUILD_TYPE)
if(Threads_FOUND)
message(STATUS "WITH_THREADS = 1")
elseif(UPX_CONFIG_REQUIRE_THREADS)
message(FATAL_ERROR "ERROR: WITH_THREADS required")
elseif(UPX_CONFIG_EXPECT_THREADS AND NOT UPX_CONFIG_DISABLE_THREADS)
message(FATAL_ERROR "ERROR: WITH_THREADS expected")
message(FATAL_ERROR "ERROR: WITH_THREADS expected; set UPX_CONFIG_EXPECT_THREADS=OFF")
endif()
if(CMAKE_BUILD_TYPE AND NOT CMAKE_BUILD_TYPE MATCHES "^(Debug|None|Release)$")
message(WARNING "WARNING: unsupported CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}; please use \"Debug\" or \"Release\"")
@@ -526,7 +512,7 @@ if(NOT UPX_CONFIG_CMAKE_DISABLE_PLATFORM_CHECK)
upx_platform_check_mismatch(CMAKE_C_PLATFORM_ID CMAKE_CXX_PLATFORM_ID)
upx_platform_check_mismatch(CMAKE_C_COMPILER_ABI CMAKE_CXX_COMPILER_ABI)
upx_platform_check_mismatch(CMAKE_C_COMPILER_FRONTEND_VARIANT CMAKE_CXX_COMPILER_FRONTEND_VARIANT)
endif() # UPX_CONFIG_CMAKE_DISABLE_PLATFORM_CHECK
endif()
upx_cmake_include_hook(9_finish)
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/.upx_cmake_config_done.txt" "")
+22 -6
View File
@@ -51,22 +51,38 @@ release: build/release PHONY
all build/all: build/debug build/release PHONY
build/%/all: $$(dir $$@)debug $$(dir $$@)release PHONY ;
#***********************************************************************
# test
#***********************************************************************
CTEST = ctest
CTEST_JOBS ?= 8
CTEST_FLAGS = --output-on-failure --parallel $(CTEST_JOBS)
build/debug+test: $$(dir $$@)debug PHONY; cd "$(dir $@)debug" && $(CTEST) $(CTEST_FLAGS) -C Debug
build/%/debug+test: $$(dir $$@)debug PHONY; cd "$(dir $@)debug" && $(CTEST) $(CTEST_FLAGS) -C Debug
build/release+test: $$(dir $$@)release PHONY; cd "$(dir $@)release" && $(CTEST) $(CTEST_FLAGS) -C Release
build/%/release+test: $$(dir $$@)release PHONY; cd "$(dir $@)release" && $(CTEST) $(CTEST_FLAGS) -C Release
build/%/all+test: $$(dir $$@)debug+test $$(dir $$@)release+test PHONY ;
# shortcuts
debug+test: build/debug+test PHONY
release+test: build/release+test PHONY
all+test build/all+test: build/debug+test build/release+test PHONY
test: $$(patsubst %+test,%,$$(.DEFAULT_GOAL))+test PHONY
#
# END of Makefile
#
# extra pre-defined build configurations and some utility; optional
ifneq ($(MAKEFILE_LIST),)
include $(dir $(lastword $(MAKEFILE_LIST)))/misc/make/Makefile-extra.mk
else
include ./misc/make/Makefile-extra.mk
endif
# developer convenience
test:: build/all+test PHONY
ifneq ($(wildcard /usr/bin/env),) # need Unix utils like bash, perl, sed, xargs, etc.
ifneq ($(wildcard ./misc/scripts/.),)
check-whitespace clang-format run-testsuite run-testsuite-debug run-testsuite-release: src/Makefile PHONY
check-whitespace clang-format run-testsuite run-testsuite-all run-testsuite-debug run-testsuite-release: src/Makefile PHONY
$(MAKE) -C src $@
endif
endif
+3
View File
@@ -2,6 +2,9 @@
User visible changes for UPX
==================================================================
Changes in 4.2.4 (09 May 2024):
* bug fixes - see https://github.com/upx/upx/milestone/17
Changes in 4.2.3 (27 Mar 2024):
* bug fixes - see https://github.com/upx/upx/milestone/16
+4 -1
View File
@@ -3,7 +3,7 @@
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
#
BUILT_SOURCES = upx.1 upx-doc.html upx-doc.txt
BUILT_SOURCES := upx.1 upx-doc.html upx-doc.txt
top_srcdir ?= ..
@@ -25,6 +25,7 @@ DETAB2 := sed -e 's/$(tab)/ /g'
#***********************************************************************
.DEFAULT_GOAL = all
.PHONY: PHONY
.SECONDEXPANSION:
.SUFFIXES:
@@ -43,6 +44,8 @@ mostlyclean clean distclean maintainer-clean: PHONY
%.1 : %.pod
pod2man --center=" " --release="$(PACKAGE) $(VERSION)" --date="$(VERSION_DATE)" $< | $(RTRIM) > $@
test -s $@
# # strip version number from "Pod::Man" comment
sed -i -e 's/^\(\.\\" Automatically generated by Pod::Man\).*/\1/' $@
%-doc.html : %.pod
pod2html --noindex $< | $(RTRIM) | $(DETAB2) > $@
+2
View File
@@ -37,6 +37,8 @@ Charles W. Sandmann <sandmann@clio.rice.edu>
for the idea with the stubless decompressor in djgpp2/coff
Ice
for debugging the PE headersize problem down
Jens Medoch <jssg@users.sourceforge.net>
for the ps1/exe format
Joergen Ibsen <jibz@hotmail.com> and d'b
for the relocation & address optimization ideas
John S. Fine <johnfine@erols.com>
+1 -5
View File
@@ -779,9 +779,7 @@ http://www.oberhumer.com
Laszlo Molnar &lt;ezerotven+github@gmail.com&gt;
John F. Reiser &lt;jreiser@BitWagon.com&gt;
Jens Medoch &lt;jssg@users.sourceforge.net&gt;</code></pre>
John F. Reiser &lt;jreiser@BitWagon.com&gt;</code></pre>
<h1 id="COPYRIGHT">COPYRIGHT</h1>
@@ -791,8 +789,6 @@ Jens Medoch &lt;jssg@users.sourceforge.net&gt;</code></pre>
<p>Copyright (C) 2000-2024 John F. Reiser</p>
<p>Copyright (C) 2002-2024 Jens Medoch</p>
<p><b>UPX</b> is distributed with full source code under the terms of the GNU General Public License v2+; either under the pure GPLv2+ (see the file COPYING), or (at your option) under the GPLv+2 with special exceptions and restrictions granting the free usage for all binaries including commercial programs (see the file LICENSE).</p>
<p>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.</p>
-4
View File
@@ -815,8 +815,6 @@ AUTHORS
John F. Reiser <jreiser@BitWagon.com>
Jens Medoch <jssg@users.sourceforge.net>
COPYRIGHT
Copyright (C) 1996-2024 Markus Franz Xaver Johannes Oberhumer
@@ -824,8 +822,6 @@ COPYRIGHT
Copyright (C) 2000-2024 John F. Reiser
Copyright (C) 2002-2024 Jens Medoch
UPX is distributed with full source code under the terms of the GNU
General Public License v2+; either under the pure GPLv2+ (see the file
COPYING), or (at your option) under the GPLv+2 with special exceptions
Generated
+98 -180
View File
@@ -1,4 +1,5 @@
.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
.\" -*- mode: troff; coding: utf-8 -*-
.\" Automatically generated by Pod::Man
.\"
.\" Standard preamble:
.\" ========================================================================
@@ -15,29 +16,12 @@
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. ds C`
. ds C'
'br\}
@@ -68,82 +52,20 @@
. \}
.\}
.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds /
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "UPX 1"
.TH UPX 1 "2024-03-27" "upx 4.2.3" " "
.TH UPX 1 2024-05-09 "upx 4.2.4" " "
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
.SH NAME
upx \- compress or expand executable files
.SH "SYNOPSIS"
.SH SYNOPSIS
.IX Header "SYNOPSIS"
\&\fBupx\fR [\ \fIcommand\fR\ ] [\ \fIoptions\fR\ ] \fIfilename\fR...
.SH "ABSTRACT"
.SH ABSTRACT
.IX Header "ABSTRACT"
.Vb 3
\& The Ultimate Packer for eXecutables
@@ -151,27 +73,27 @@ upx \- compress or expand executable files
\& https://upx.github.io
.Ve
.PP
\&\fB\s-1UPX\s0\fR is a portable, extendable, high-performance executable packer for
\&\fBUPX\fR is a portable, extendable, high-performance executable packer for
several different executable formats. It achieves an excellent compression
ratio and offers \fI*very*\fR fast decompression. Your executables suffer
no memory overhead or other drawbacks for most of the formats supported,
because of in-place decompression.
.SH "DISCLAIMER"
.SH DISCLAIMER
.IX Header "DISCLAIMER"
\&\fB\s-1UPX\s0\fR comes with \s-1ABSOLUTELY NO WARRANTY\s0; for details see the file \s-1COPYING.\s0
\&\fBUPX\fR comes with ABSOLUTELY NO WARRANTY; for details see the file COPYING.
.PP
Please report all problems or suggestions to the authors. Thanks.
.SH "SECURITY CONTEXT"
.IX Header "SECURITY CONTEXT"
\&\s-1IMPORTANT NOTE:\s0 \fB\s-1UPX\s0\fR inherits the security context of any files it handles.
IMPORTANT NOTE: \fBUPX\fR inherits the security context of any files it handles.
.PP
This means that packing, unpacking, or even testing or listing a file requires
the same security considerations as actually executing the file.
.PP
Use \fB\s-1UPX\s0\fR on trusted files only!
.SH "DESCRIPTION"
Use \fBUPX\fR on trusted files only!
.SH DESCRIPTION
.IX Header "DESCRIPTION"
\&\fB\s-1UPX\s0\fR is a versatile executable packer with the following features:
\&\fBUPX\fR is a versatile executable packer with the following features:
.PP
.Vb 3
\& \- secure: as UPX is documented Open Source since many years any relevant
@@ -204,32 +126,32 @@ Use \fB\s-1UPX\s0\fR on trusted files only!
\& for commercial programs
.Ve
.PP
You probably understand now why we call \fB\s-1UPX\s0\fR the "\fIultimate\fR"
You probably understand now why we call \fBUPX\fR the "\fIultimate\fR"
executable packer.
.SH "COMMANDS"
.SH COMMANDS
.IX Header "COMMANDS"
.SS "Compress"
.SS Compress
.IX Subsection "Compress"
This is the default operation, eg. \fBupx yourfile.exe\fR will compress the file
specified on the command line.
.SS "Decompress"
.SS Decompress
.IX Subsection "Decompress"
All \fB\s-1UPX\s0\fR supported file formats can be unpacked using the \fB\-d\fR switch, eg.
All \fBUPX\fR supported file formats can be unpacked using the \fB\-d\fR switch, eg.
\&\fBupx \-d yourfile.exe\fR will uncompress the file you've just compressed.
.SS "Test"
.SS Test
.IX Subsection "Test"
The \fB\-t\fR command tests the integrity of the compressed and uncompressed
data, eg. \fBupx \-t yourfile.exe\fR check whether your file can be safely
decompressed. Note, that this command doesn't check the whole file, only
the part that will be uncompressed during program execution. This means
that you should not use this command instead of a virus checker.
.SS "List"
.SS List
.IX Subsection "List"
The \fB\-l\fR command prints out some information about the compressed files
specified on the command line as parameters, eg \fBupx \-l yourfile.exe\fR
shows the compressed / uncompressed size and the compression ratio of
\&\fIyourfile.exe\fR.
.SH "OPTIONS"
.SH OPTIONS
.IX Header "OPTIONS"
\&\fB\-q\fR: be quiet, suppress warnings
.PP
@@ -239,10 +161,10 @@ shows the compressed / uncompressed size and the compression ratio of
.PP
\&\fB\-\-help\fR: prints the help
.PP
\&\fB\-\-version\fR: print the version of \fB\s-1UPX\s0\fR
\&\fB\-\-version\fR: print the version of \fBUPX\fR
.PP
\&\fB\-\-exact\fR: when compressing, require to be able to get a byte-identical file
after decompression with option \fB\-d\fR. [\s-1NOTE:\s0 this is work in progress and is
after decompression with option \fB\-d\fR. [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
@@ -255,16 +177,16 @@ as compared to the first decompressed version.]
[ ...more docs need to be written... \- type `\fBupx \-\-help\fR' for now ]
.SH "COMPRESSION LEVELS & TUNING"
.IX Header "COMPRESSION LEVELS & TUNING"
\&\fB\s-1UPX\s0\fR offers ten different compression levels from \fB\-1\fR to \fB\-9\fR,
\&\fBUPX\fR offers ten different compression levels from \fB\-1\fR to \fB\-9\fR,
and \fB\-\-best\fR. The default compression level is \fB\-8\fR for files
smaller than 512 KiB, and \fB\-7\fR otherwise.
.IP "\(bu" 4
.IP \(bu 4
Compression levels 1, 2 and 3 are pretty fast.
.IP "\(bu" 4
.IP \(bu 4
Compression levels 4, 5 and 6 achieve a good time/ratio performance.
.IP "\(bu" 4
.IP \(bu 4
Compression levels 7, 8 and 9 favor compression ratio over speed.
.IP "\(bu" 4
.IP \(bu 4
Compression level \fB\-\-best\fR may take a long time.
.PP
Note that compression level \fB\-\-best\fR can be somewhat slow for large
@@ -272,28 +194,28 @@ files, but you definitely should use it when releasing a final version
of your program.
.PP
Quick info for achieving the best compression ratio:
.IP "\(bu" 4
.IP \(bu 4
Try \fBupx \-\-brute \-\-no\-lzma myfile.exe\fR or even
\&\fBupx \-\-ultra\-brute \-\-no\-lzma myfile.exe\fR.
.IP "\(bu" 4
The option \fB\-\-lzma\fR enables \s-1LZMA\s0 compression, which compresses better but
.IP \(bu 4
The option \fB\-\-lzma\fR enables LZMA compression, which compresses better but
is *significantly slower* at decompression. You probably do not want
to use it for large files.
.Sp
(Note that \fB\-\-lzma\fR is automatically enabled by \fB\-\-all\-methods\fR and
\&\fB\-\-brute\fR, use \fB\-\-no\-lzma\fR to override.)
.IP "\(bu" 4
.IP \(bu 4
Try if \fB\-\-overlay=strip\fR works.
.IP "\(bu" 4
.IP \(bu 4
For win32/pe programs there's \fB\-\-strip\-relocs=0\fR. See notes below.
.SH "OVERLAY HANDLING OPTIONS"
.IX Header "OVERLAY HANDLING OPTIONS"
Info: An \*(L"overlay\*(R" means auxiliary data attached after the logical end of
Info: An "overlay" means auxiliary data attached after the logical end of
an executable, and it often contains application specific data
(this is a common practice to avoid an extra data file, though
it would be better to use resource sections).
.PP
\&\fB\s-1UPX\s0\fR handles overlays like many other executable packers do: it simply
\&\fBUPX\fR handles overlays like many other executable packers do: it simply
copies the overlay after the compressed image. This works with some
files, but doesn't work with others, depending on how an application
actually accesses this overlaid data.
@@ -309,8 +231,8 @@ actually accesses this overlaid data.
.Ve
.SH "ENVIRONMENT VARIABLE"
.IX Header "ENVIRONMENT VARIABLE"
The environment variable \fB\s-1UPX\s0\fR can hold a set of default
options for \fB\s-1UPX\s0\fR. These options are interpreted first and
The environment variable \fBUPX\fR can hold a set of default
options for \fBUPX\fR. These options are interpreted first and
can be overwritten by explicit command line parameters.
For example:
.PP
@@ -321,18 +243,18 @@ For example:
.Ve
.PP
Under DOS/Windows you must use '#' instead of '=' when setting the
environment variable because of a \s-1COMMAND.COM\s0 limitation.
environment variable because of a COMMAND.COM limitation.
.PP
Not all of the options are valid in the environment variable \-
\&\fB\s-1UPX\s0\fR will tell you.
\&\fBUPX\fR will tell you.
.PP
You can explicitly use the \fB\-\-no\-env\fR option to ignore the
environment variable.
.SH "NOTES FOR THE SUPPORTED EXECUTABLE FORMATS"
.IX Header "NOTES FOR THE SUPPORTED EXECUTABLE FORMATS"
.SS "\s-1NOTES FOR ATARI/TOS\s0"
.SS "NOTES FOR ATARI/TOS"
.IX Subsection "NOTES FOR ATARI/TOS"
This is the executable format used by the Atari \s-1ST/TT,\s0 a Motorola 68000
This is the executable format used by the Atari ST/TT, a Motorola 68000
based personal computer which was popular in the late '80s. Support
of this format is only because of nostalgic feelings of one of
the authors and serves no practical purpose :\-).
@@ -349,12 +271,12 @@ Extra options available for this executable format:
\& the compression ratio in some cases, but usually
\& the default method gives the best results anyway.
.Ve
.SS "\s-1NOTES FOR BVMLINUZ/I386\s0"
.SS "NOTES FOR BVMLINUZ/I386"
.IX Subsection "NOTES FOR BVMLINUZ/I386"
Same as vmlinuz/i386.
.SS "\s-1NOTES FOR DOS/COM\s0"
.SS "NOTES FOR DOS/COM"
.IX Subsection "NOTES FOR DOS/COM"
Obviously \fB\s-1UPX\s0\fR won't work with executables that want to read data from
Obviously \fBUPX\fR won't work with executables that want to read data from
themselves (like some commandline utilities that ship with Win95/98/ME).
.PP
Compressed programs only work on a 286+.
@@ -378,11 +300,11 @@ Extra options available for this executable format:
\& the compression ratio in some cases, but usually
\& the default filter gives the best results anyway.
.Ve
.SS "\s-1NOTES FOR DOS/EXE\s0"
.SS "NOTES FOR DOS/EXE"
.IX Subsection "NOTES FOR DOS/EXE"
dos/exe stands for all \*(L"normal\*(R" 16\-bit \s-1DOS\s0 executables.
dos/exe stands for all "normal" 16\-bit DOS executables.
.PP
Obviously \fB\s-1UPX\s0\fR won't work with executables that want to read data from
Obviously \fBUPX\fR won't work with executables that want to read data from
themselves (like some command line utilities that ship with Win95/98/ME).
.PP
Compressed programs only work on a 286+.
@@ -399,7 +321,7 @@ Extra options available for this executable format:
\& the compression ratio in some cases, but usually
\& the default method gives the best results anyway.
.Ve
.SS "\s-1NOTES FOR DOS/SYS\s0"
.SS "NOTES FOR DOS/SYS"
.IX Subsection "NOTES FOR DOS/SYS"
Compressed programs only work on a 286+.
.PP
@@ -422,20 +344,20 @@ Extra options available for this executable format:
\& the compression ratio in some cases, but usually
\& the default filter gives the best results anyway.
.Ve
.SS "\s-1NOTES FOR DJGPP2/COFF\s0"
.SS "NOTES FOR DJGPP2/COFF"
.IX Subsection "NOTES FOR DJGPP2/COFF"
First of all, it is recommended to use \fB\s-1UPX\s0\fR *instead* of \fBstrip\fR. strip has
First of all, it is recommended to use \fBUPX\fR *instead* of \fBstrip\fR. strip has
the very bad habit of replacing your stub with its own (outdated) version.
Additionally \fB\s-1UPX\s0\fR corrects a bug/feature in strip v2.8.x: it
Additionally \fBUPX\fR corrects a bug/feature in strip v2.8.x: it
will fix the 4 KiB alignment of the stub.
.PP
\&\fB\s-1UPX\s0\fR includes the full functionality of stubify. This means it will
automatically stubify your \s-1COFF\s0 files. Use the option \fB\-\-coff\fR to
\&\fBUPX\fR includes the full functionality of stubify. This means it will
automatically stubify your COFF files. Use the option \fB\-\-coff\fR to
disable this functionality (see below).
.PP
\&\fB\s-1UPX\s0\fR automatically handles Allegro packfiles.
\&\fBUPX\fR automatically handles Allegro packfiles.
.PP
The \s-1DLM\s0 format (a rather exotic shared library extension) is not supported.
The DLM format (a rather exotic shared library extension) is not supported.
.PP
Packed programs will be byte-identical to the original after uncompression.
All debug information and trailing garbage will be stripped, though.
@@ -456,7 +378,7 @@ Extra options available for this executable format:
\& the compression ratio in some cases, but usually
\& the default filter gives the best results anyway.
.Ve
.SS "\s-1NOTES FOR LINUX\s0 [general]"
.SS "NOTES FOR LINUX [general]"
.IX Subsection "NOTES FOR LINUX [general]"
Introduction
.PP
@@ -593,15 +515,15 @@ General notes:
\& been modified after compression.
\& Running \`strace \-o strace.log compressed_file\*(Aq will tell you more.
.Ve
.SS "\s-1NOTES FOR LINUX/ELF386\s0"
.SS "NOTES FOR LINUX/ELF386"
.IX Subsection "NOTES FOR LINUX/ELF386"
Please read the general Linux description first.
.PP
The linux/elf386 format decompresses directly into \s-1RAM,\s0
The linux/elf386 format decompresses directly into RAM,
uses only one exec, does not use space in /tmp,
and does not use /proc.
.PP
Linux/elf386 is automatically selected for Linux \s-1ELF\s0 executables.
Linux/elf386 is automatically selected for Linux ELF executables.
.PP
Packed programs will be byte-identical to the original after uncompression.
.PP
@@ -641,12 +563,12 @@ Extra options available for this executable format:
.Vb 1
\& (none)
.Ve
.SS "\s-1NOTES FOR LINUX/SH386\s0"
.SS "NOTES FOR LINUX/SH386"
.IX Subsection "NOTES FOR LINUX/SH386"
Please read the general Linux description first.
.PP
Shell scripts where the underling shell accepts a ``\-c'' argument
can use the Linux/sh386 format. \fB\s-1UPX\s0\fR decompresses the shell script
can use the Linux/sh386 format. \fBUPX\fR decompresses the shell script
into low memory, then maps the shell and passes the entire text of the
script as an argument with a leading ``\-c''.
It does not use space in /tmp, and does not use /proc.
@@ -691,7 +613,7 @@ Extra options available for this executable format:
.Vb 1
\& (none)
.Ve
.SS "\s-1NOTES FOR LINUX/386\s0"
.SS "NOTES FOR LINUX/386"
.IX Subsection "NOTES FOR LINUX/386"
Please read the general Linux description first.
.PP
@@ -764,10 +686,10 @@ Extra options available for this executable format:
\& format, i.e. do not try the linux/elf386 and
\& linux/sh386 formats.
.Ve
.SS "\s-1NOTES FOR PS1/EXE\s0"
.SS "NOTES FOR PS1/EXE"
.IX Subsection "NOTES FOR PS1/EXE"
This is the executable format used by the Sony PlayStation (PSone),
a \s-1MIPS R3000\s0 based gaming console which is popular since the late '90s.
a MIPS R3000 based gaming console which is popular since the late '90s.
Support of this format is very similar to the Atari one, because of
nostalgic feelings of one of the authors.
.PP
@@ -816,12 +738,12 @@ Extra options available for this executable format:
\& but the compressed executable will not boot from a CD.
\& Use it for console transfer only !
.Ve
.SS "\s-1NOTES FOR RTM32/PE\s0 and \s-1ARM/PE\s0"
.SS "NOTES FOR RTM32/PE and ARM/PE"
.IX Subsection "NOTES FOR RTM32/PE and ARM/PE"
Same as win32/pe.
.SS "\s-1NOTES FOR TMT/ADAM\s0"
.SS "NOTES FOR TMT/ADAM"
.IX Subsection "NOTES FOR TMT/ADAM"
This format is used by the \s-1TMT\s0 Pascal compiler \- see http://www.tmt.com/ .
This format is used by the TMT Pascal compiler \- see http://www.tmt.com/ .
.PP
Extra options available for this executable format:
.PP
@@ -836,11 +758,11 @@ Extra options available for this executable format:
\& the compression ratio in some cases, but usually
\& the default filter gives the best results anyway.
.Ve
.SS "\s-1NOTES FOR VMLINUZ/386\s0"
.SS "NOTES FOR VMLINUZ/386"
.IX Subsection "NOTES FOR VMLINUZ/386"
The vmlinuz/386 and bvmlinuz/386 formats take a gzip-compressed
bootable Linux kernel image (\*(L"vmlinuz\*(R", \*(L"zImage\*(R", \*(L"bzImage\*(R"),
gzip-decompress it and re-compress it with the \fB\s-1UPX\s0\fR compression method.
bootable Linux kernel image ("vmlinuz", "zImage", "bzImage"),
gzip-decompress it and re-compress it with the \fBUPX\fR compression method.
.PP
vmlinuz/386 is completely unrelated to the other Linux executable
formats, and it does not share any of their drawbacks.
@@ -889,14 +811,14 @@ Extra options available for this executable format:
\& the compression ratio in some cases, but usually
\& the default filter gives the best results anyway.
.Ve
.SS "\s-1NOTES FOR WATCOM/LE\s0"
.SS "NOTES FOR WATCOM/LE"
.IX Subsection "NOTES FOR WATCOM/LE"
\&\fB\s-1UPX\s0\fR has been successfully tested with the following extenders:
\s-1DOS4G, DOS4GW, PMODE/W,\s0 DOS32a, CauseWay.
The \s-1WDOS/X\s0 extender is partly supported (for details
see the file bugs \s-1BUGS\s0).
\&\fBUPX\fR has been successfully tested with the following extenders:
DOS4G, DOS4GW, PMODE/W, DOS32a, CauseWay.
The WDOS/X extender is partly supported (for details
see the file bugs BUGS).
.PP
DLLs and the \s-1LX\s0 format are not supported.
DLLs and the LX format are not supported.
.PP
Extra options available for this executable format:
.PP
@@ -904,12 +826,12 @@ Extra options available for this executable format:
\& \-\-le Produce an unbound LE output instead of
\& keeping the current stub.
.Ve
.SS "\s-1NOTES FOR WIN32/PE\s0"
.SS "NOTES FOR WIN32/PE"
.IX Subsection "NOTES FOR WIN32/PE"
The \s-1PE\s0 support in \fB\s-1UPX\s0\fR is quite stable now, but probably there are
The PE support in \fBUPX\fR is quite stable now, but probably there are
still some incompatibilities with some files.
.PP
Because of the way \fB\s-1UPX\s0\fR (and other packers for this format) works, you
Because of the way \fBUPX\fR (and other packers for this format) works, you
can see increased memory usage of your compressed files because the whole
program is loaded into memory at startup.
If you start several instances of huge compressed programs you're
@@ -922,17 +844,17 @@ smaller, but it's still there.
If you're running executables from network, then compressed programs
will load faster, and require less bandwidth during execution.
.PP
DLLs are supported. But \s-1UPX\s0 compressed DLLs can not share common data and
DLLs are supported. But UPX compressed DLLs can not share common data and
code when they got used by multiple applications. So compressing msvcrt.dll
is a waste of memory, but compressing the dll plugins of a particular
application may be a better idea.
.PP
Screensavers are supported, with the restriction that the filename
must end with \*(L".scr\*(R" (as screensavers are handled slightly different
must end with ".scr" (as screensavers are handled slightly different
than normal exe files).
.PP
\&\s-1UPX\s0 compressed \s-1PE\s0 files have some minor memory overhead (usually in the
10 \- 30 KiB range) which can be seen by specifying the \*(L"\-i\*(R" command
UPX compressed PE files have some minor memory overhead (usually in the
10 \- 30 KiB range) which can be seen by specifying the "\-i" command
line switch during compression.
.PP
Extra options available for this executable format:
@@ -996,16 +918,16 @@ Extra options available for this executable format:
\& the compression ratio in some cases, but usually
\& the default filter gives the best results anyway.
.Ve
.SH "DIAGNOSTICS"
.SH DIAGNOSTICS
.IX Header "DIAGNOSTICS"
Exit status is normally 0; if an error occurs, exit status
is 1. If a warning occurs, exit status is 2.
.PP
\&\fB\s-1UPX\s0\fR's diagnostics are intended to be self-explanatory.
.SH "BUGS"
\&\fBUPX\fR's diagnostics are intended to be self-explanatory.
.SH BUGS
.IX Header "BUGS"
Please report all bugs immediately to the authors.
.SH "AUTHORS"
.SH AUTHORS
.IX Header "AUTHORS"
.Vb 2
\& Markus F.X.J. Oberhumer <markus@oberhumer.com>
@@ -1014,10 +936,8 @@ Please report all bugs immediately to the authors.
\& Laszlo Molnar <ezerotven+github@gmail.com>
\&
\& John F. Reiser <jreiser@BitWagon.com>
\&
\& Jens Medoch <jssg@users.sourceforge.net>
.Ve
.SH "COPYRIGHT"
.SH COPYRIGHT
.IX Header "COPYRIGHT"
Copyright (C) 1996\-2024 Markus Franz Xaver Johannes Oberhumer
.PP
@@ -1025,18 +945,16 @@ Copyright (C) 1996\-2024 Laszlo Molnar
.PP
Copyright (C) 2000\-2024 John F. Reiser
.PP
Copyright (C) 2002\-2024 Jens Medoch
.PP
\&\fB\s-1UPX\s0\fR is distributed with full source code under the terms of the
\&\s-1GNU\s0 General Public License v2+; either under the pure GPLv2+ (see
the file \s-1COPYING\s0), or (at your option) under the GPLv+2 with special
\&\fBUPX\fR is distributed with full source code under the terms of the
GNU General Public License v2+; either under the pure GPLv2+ (see
the file COPYING), or (at your option) under the GPLv+2 with special
exceptions and restrictions granting the free usage for all binaries
including commercial programs (see the file \s-1LICENSE\s0).
including commercial programs (see the file LICENSE).
.PP
This program is distributed in the hope that it will be useful,
but \s-1WITHOUT ANY WARRANTY\s0; without even the implied warranty of
\&\s-1MERCHANTABILITY\s0 or \s-1FITNESS FOR A PARTICULAR PURPOSE.\s0
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
.PP
You should have received a copy of the \s-1UPX\s0 License Agreements along
with this program; see the files \s-1COPYING\s0 and \s-1LICENSE.\s0 If not,
visit the \s-1UPX\s0 home page.
You should have received a copy of the UPX License Agreements along
with this program; see the files COPYING and LICENSE. If not,
visit the UPX home page.
-4
View File
@@ -926,8 +926,6 @@ Please report all bugs immediately to the authors.
John F. Reiser <jreiser@BitWagon.com>
Jens Medoch <jssg@users.sourceforge.net>
=head1 COPYRIGHT
@@ -938,8 +936,6 @@ Copyright (C) 1996-2024 Laszlo Molnar
Copyright (C) 2000-2024 John F. Reiser
Copyright (C) 2002-2024 Jens Medoch
B<UPX> is distributed with full source code under the terms of the
GNU General Public License v2+; either under the pure GPLv2+ (see
the file COPYING), or (at your option) under the GPLv+2 with special
+3 -1
View File
@@ -1,3 +1,5 @@
# vim:set ft=yaml ts=2 sw=2 et:
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
# for clang-tidy from https://clang.llvm.org/extra/clang-tidy/
---
Checks: >
@@ -14,7 +16,7 @@ Checks: >
-clang-analyzer-core.UndefinedBinaryOperatorResult,
-clang-analyzer-core.uninitialized.Assign,
-clang-analyzer-security.insecureAPI.strcpy,
clang-diagnostics-*',
clang-diagnostic-*,
performance-*,
FormatStyle: file
HeaderFilterRegex: '.*'
+5 -1
View File
@@ -1,18 +1,22 @@
# vim:set ft=yaml ts=2 sw=2 et:
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
# for clang-tidy from https://clang.llvm.org/extra/clang-tidy/
---
Checks: >
-*,
bugprone-*,
-bugprone-assignment-in-if-condition,
-bugprone-casting-through-void,
-bugprone-easily-swappable-parameters,
-bugprone-implicit-widening-of-multiplication-result,
-bugprone-inc-dec-in-conditions,
-bugprone-macro-parentheses,
-bugprone-reserved-identifier,
-bugprone-sizeof-expression,
-bugprone-suspicious-include,
clang-analyzer-*,
-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
clang-diagnostics-*',
clang-diagnostic-*,
performance-*,
FormatStyle: file
HeaderFilterRegex: '.*'
+4 -1
View File
@@ -1,3 +1,5 @@
# vim:set ft=yaml ts=2 sw=2 et:
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
# for clang-tidy from https://clang.llvm.org/extra/clang-tidy/
---
Checks: >
@@ -6,6 +8,7 @@ Checks: >
-bugprone-assignment-in-if-condition,
-bugprone-easily-swappable-parameters,
-bugprone-implicit-widening-of-multiplication-result,
-bugprone-inc-dec-in-conditions,
-bugprone-macro-parentheses,
-bugprone-narrowing-conversions,
-bugprone-reserved-identifier,
@@ -13,7 +16,7 @@ Checks: >
clang-analyzer-*,
-clang-analyzer-optin.performance.Padding,
-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
clang-diagnostics-*',
clang-diagnostic-*,
performance-*,
FormatStyle: file
HeaderFilterRegex: '.*'
+4 -1
View File
@@ -1,3 +1,5 @@
# vim:set ft=yaml ts=2 sw=2 et:
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
# for clang-tidy from https://clang.llvm.org/extra/clang-tidy/
---
Checks: >
@@ -5,6 +7,7 @@ Checks: >
bugprone-*,
-bugprone-assignment-in-if-condition,
-bugprone-branch-clone,
-bugprone-casting-through-void,
-bugprone-easily-swappable-parameters,
-bugprone-implicit-widening-of-multiplication-result,
-bugprone-macro-parentheses,
@@ -16,7 +19,7 @@ Checks: >
-clang-analyzer-core.UndefinedBinaryOperatorResult,
-clang-analyzer-deadcode.DeadStores,
-clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling,
clang-diagnostics-*',
clang-diagnostic-*,
performance-*,
-performance-no-int-to-ptr,
FormatStyle: file
+76 -10
View File
@@ -3,6 +3,15 @@
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
#
# set USE_STRICT_DEFAULTS
if(NOT DEFINED USE_STRICT_DEFAULTS AND IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.git")
include("${CMAKE_CURRENT_SOURCE_DIR}/misc/cmake/use_strict_defaults.cmake" OPTIONAL)
endif()
if(NOT DEFINED USE_STRICT_DEFAULTS)
# use permissive config defaults when building from source code tarball
set(USE_STRICT_DEFAULTS FALSE CACHE INTERNAL "" FORCE)
endif()
#***********************************************************************
# macros
#***********************************************************************
@@ -56,10 +65,38 @@ macro(upx_apply_build_type)
endif()
endmacro()
# ternary conditional operator
macro(upx_ternary result_var_name condition true_value false_value)
if(${condition})
set(${result_var_name} "${true_value}")
else()
set(${result_var_name} "${false_value}")
endif()
endmacro()
#***********************************************************************
# util
#***********************************************************************
# convert to CMake bool
function(upx_make_bool_var result_var_name var_name default_value)
set(result "${default_value}")
# only query $var_name if it is defined and not empty
if(NOT ",${var_name}," STREQUAL ",,")
if(DEFINED ${var_name})
if(NOT ",${${var_name}}," STREQUAL ",,")
set(result "${${var_name}}")
endif()
endif()
endif()
if(${result})
set(result ON)
else()
set(result OFF)
endif()
set(${result_var_name} "${result}" PARENT_SCOPE) # return value
endfunction()
function(upx_print_var) # ARGV
foreach(var_name ${ARGV})
if(DEFINED ${var_name})
@@ -76,20 +113,29 @@ function(upx_print_env_var) # ARGV
foreach(var_name ${ARGV})
if(DEFINED ENV{${var_name}})
if(NOT ",$ENV{${var_name}}," STREQUAL ",,")
message(STATUS "ENV{${var_name}} = $ENV{${var_name}}")
message(STATUS "ENV{${var_name}} = '$ENV{${var_name}}'")
endif()
endif()
endforeach()
endfunction()
function(upx_print_have_symbol) # ARGV; needs include(CheckSymbolExists)
set(rq "${CMAKE_REQUIRED_QUIET}")
set(CMAKE_REQUIRED_QUIET ON)
foreach(symbol ${ARGV})
set(cache_var_name "HAVE_symbol_${symbol}")
check_symbol_exists(${symbol} "limits.h;stddef.h;stdint.h" ${cache_var_name})
check_symbol_exists("${symbol}" "limits.h;stddef.h;stdint.h" "${cache_var_name}")
if(${cache_var_name})
message(STATUS "HAVE ${symbol}")
message(STATUS "HAVE_symbol ${symbol}")
endif()
endforeach()
set(CMAKE_REQUIRED_QUIET "${rq}")
endfunction()
# examine compiler configuration
function(upx_print_common_symbols)
upx_print_have_symbol(__FAST_MATH__)
upx_print_have_symbol(__PIC__ __pic__ __PIE__ __pie__)
endfunction()
# examine MinGW/Cygwin compiler configuration
@@ -97,7 +143,7 @@ function(upx_print_mingw_symbols)
if(WIN32 OR MINGW OR CYGWIN)
if(CMAKE_C_COMPILER_ID MATCHES "(Clang|GNU)")
# runtime library: msvcrt vs ucrt vs cygwin
upx_print_have_symbol(__CRTDLL__ __CYGWIN__ __CYGWIN32__ __CYGWIN64__ __MINGW32__ __MINGW64__ __MINGW64_VERSION_MAJOR __MSVCRT__ __MSVCRT_VERSION__ _UCRT _WIN32 _WIN64)
upx_print_have_symbol(__CRTDLL__ __CYGWIN__ __CYGWIN32__ __CYGWIN64__ __MINGW32__ __MINGW64__ __MINGW64_VERSION_MAJOR __MSVCRT__ __MSVCRT_VERSION__ _UCRT _WIN32 _WIN32_WINNT _WIN64)
# exception handing: SJLJ (setjmp/longjmp) vs DWARF vs SEH
upx_print_have_symbol(__GCC_HAVE_DWARF2_CFI_ASM __SEH__ __USING_SJLJ_EXCEPTIONS__)
# threads: win32 vs posix/pthread/winpthreads vs mcfgthread
@@ -110,7 +156,11 @@ endfunction()
function(upx_add_glob_files) # ARGV
set(var_name ${ARGV0})
list(REMOVE_AT ARGV 0)
if(${CMAKE_VERSION} VERSION_LESS "3.3")
file(GLOB files ${ARGV})
else()
file(GLOB files LIST_DIRECTORIES false ${ARGV})
endif()
set(result "")
if(DEFINED ${var_name})
set(result "${${var_name}}")
@@ -151,7 +201,7 @@ function(upx_cache_bool_vars) # ARGV
elseif(DEFINED ${var_name}) # defined via "cmake -DXXX=YYY"
set(value "${${var_name}}")
elseif(DEFINED ENV{${var_name}}) # check environment
if("$ENV{${var_name}}" MATCHES "^(0|1|OFF|ON|FALSE|TRUE)$")
if("$ENV{${var_name}}" MATCHES "^(0|1|OFF|ON|FALSE|TRUE|off|on|false|true)$")
set(value "$ENV{${var_name}}")
set(UPX_CACHE_ORIGIN_FROM_ENV_${var_name} TRUE CACHE INTERNAL "" FORCE) # for status message below
endif()
@@ -189,7 +239,7 @@ endfunction()
function(upx_internal_add_definitions_with_prefix) # ARGV; needs include(CheckCCompilerFlag)
set(flag_prefix "${ARGV0}")
if(flag_prefix MATCHES "^empty$") # need "empty" to work around bug in old CMake versions
if("${flag_prefix}" MATCHES "^empty$") # need "empty" to work around bug in old CMake versions
set(flag_prefix "")
endif()
list(REMOVE_AT ARGV 0)
@@ -270,7 +320,7 @@ function(upx_compile_source_debug_with_O2) # ARGV
# MSVC uses some Debug compilation options like -RTC1 that are incompatible with -O2
else()
get_source_file_property(prop "${source}" COMPILE_FLAGS)
if(prop MATCHES "^(NOTFOUND)?$")
if("${prop}" MATCHES "^(NOTFOUND)?$")
set_source_files_properties("${source}" PROPERTIES COMPILE_FLAGS "${flags}")
else()
set_source_files_properties("${source}" PROPERTIES COMPILE_FLAGS "${prop} ${flags}")
@@ -286,11 +336,17 @@ function(upx_sanitize_target) # ARGV
# no-op
elseif(MSVC_FRONTEND)
# MSVC uses -GS (similar to -fstack-protector) by default
elseif(NOT GNU_FRONTEND)
# unknown compiler
elseif(MINGW OR CYGWIN)
# avoid link errors with current MinGW-w64 versions
# see https://www.mingw-w64.org/contribute/#sanitizers-asan-tsan-usan
elseif(CMAKE_C_COMPILER_ID MATCHES "^Clang$" AND CMAKE_C_COMPILER_VERSION VERSION_LESS "9.0")
# unreliable/broken sanitize implementation before clang-9 (Sep 2019)
message(WARNING "WARNING: ignoring SANITIZE for target '${t}'")
elseif(CMAKE_C_COMPILER_ID MATCHES "^GNU" AND CMAKE_C_COMPILER_VERSION VERSION_LESS "8.0")
# unsupported compiler; unreliable/broken sanitize implementation
# unsupported compiler; unreliable/broken sanitize implementation before gcc-8 (May 2018)
message(WARNING "WARNING: ignoring SANITIZE for target '${t}'")
else()
# default sanitizer for Debug builds
target_compile_options(${t} PRIVATE $<$<CONFIG:Debug>:-fsanitize=undefined -fsanitize-undefined-trap-on-error -fstack-protector-all>)
@@ -306,11 +362,21 @@ endfunction()
# test
#***********************************************************************
function(upx_add_serial_test) # ARGV
function(upx_add_test) # ARGV
set(name "${ARGV0}")
list(REMOVE_AT ARGV 0)
add_test(NAME "${name}" COMMAND ${ARGV})
set_tests_properties("${name}" PROPERTIES RUN_SERIAL TRUE) # run these tests sequentially
endfunction()
function(upx_test_depends) # ARGV
set(name "${ARGV0}")
list(REMOVE_AT ARGV 0)
get_property(prop TEST "${name}" PROPERTY DEPENDS)
if("${prop}" MATCHES "^(NOTFOUND)?$")
set_tests_properties("${name}" PROPERTIES DEPENDS "${ARGV}")
else()
set_tests_properties("${name}" PROPERTIES DEPENDS "${prop};${ARGV}")
endif()
endfunction()
# vim:set ft=cmake ts=4 sw=4 tw=0 et:
+48
View File
@@ -0,0 +1,48 @@
#
# UPX "CMake" build file; see https://cmake.org/
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
#
#***********************************************************************
# summary section
# print some info about the build configuration
#***********************************************************************
# generator
upx_print_var(CMAKE_GENERATOR_TOOLSET CMAKE_GENERATOR_PLATFORM)
# directories
if(NOT ",${CMAKE_BINARY_DIR}," STREQUAL ",${CMAKE_CURRENT_BINARY_DIR}," OR NOT ",${CMAKE_SOURCE_DIR}," STREQUAL ",${CMAKE_CURRENT_SOURCE_DIR},")
upx_print_var(CMAKE_BINARY_DIR CMAKE_SOURCE_DIR CMAKE_CURRENT_BINARY_DIR CMAKE_CURRENT_SOURCE_DIR)
endif()
# system
upx_print_var(CMAKE_HOST_SYSTEM_NAME CMAKE_HOST_SYSTEM_VERSION CMAKE_HOST_SYSTEM_PROCESSOR)
upx_print_var(CMAKE_SYSTEM_NAME CMAKE_SYSTEM_VERSION CMAKE_SYSTEM_PROCESSOR)
upx_print_var(CMAKE_ANDROID_NDK CMAKE_ANDROID_NDK_VERSION CMAKE_ANDROID_STANDALONE_TOOLCHAIN)
upx_print_var(CMAKE_APPLE_SILICON_PROCESSOR CMAKE_OSX_DEPLOYMENT_TARGET CMAKE_OSX_SYSROOT)
upx_print_Var(CMAKE_CROSSCOMPILING CMAKE_CROSSCOMPILING_EMULATOR)
# binutils
upx_print_var(CMAKE_AR CMAKE_RANLIB)
# compilers
foreach(lang IN ITEMS ASM C CXX)
upx_print_var(CMAKE_${lang}_COMPILER_LAUNCHER)
upx_print_var(CMAKE_${lang}_COMPILER)
upx_print_var(CMAKE_${lang}_COMPILER_ID)
upx_print_var(CMAKE_${lang}_COMPILER_VERSION)
upx_print_var(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT )
upx_print_var(CMAKE_${lang}_COMPILER_ARCHITECTURE_ID)
upx_print_var(CMAKE_${lang}_PLATFORM_ID)
upx_print_var(CMAKE_${lang}_COMPILER_ABI)
upx_print_var(CMAKE_${lang}_COMPILER_TARGET)
endforeach()
# misc
upx_print_var(CMAKE_INTERPROCEDURAL_OPTIMIZATION CMAKE_POSITION_INDEPENDENT_CODE)
# shortcuts
upx_print_var(APPLE CLANG CYGWIN GNU_FRONTEND GNUC MINGW MSVC MSVC_FRONTEND MSVC_IDE MSVC_TOOLSET_VERSION MSVC_VERSION MSYS UNIX WIN32 WIN64)
# vim:set ft=cmake ts=4 sw=4 tw=0 et:
+148
View File
@@ -0,0 +1,148 @@
#
# UPX "CMake" build file; see https://cmake.org/
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
#
#***********************************************************************
# test section: self-pack tests
#
# IMPORTANT NOTE: these tests can only work if the host executable format
# is supported by UPX!
#***********************************************************************
set(emu "")
if(DEFINED CMAKE_CROSSCOMPILING_EMULATOR)
set(emu "${CMAKE_CROSSCOMPILING_EMULATOR}")
endif()
set(exe "${CMAKE_EXECUTABLE_SUFFIX}")
set(upx_self_exe "$<TARGET_FILE:upx>")
set(fo "--force-overwrite")
#
# basic tests
#
upx_add_test(upx-self-pack upx -3 "${upx_self_exe}" ${fo} -o upx-packed${exe})
upx_add_test(upx-self-pack-fa upx -3 --all-filters "${upx_self_exe}" ${fo} -o upx-packed-fa${exe})
upx_add_test(upx-self-pack-fn upx -3 --no-filter "${upx_self_exe}" ${fo} -o upx-packed-fn${exe})
upx_add_test(upx-self-pack-fr upx -3 --all-filters --debug-use-random-filter "${upx_self_exe}" ${fo} -o upx-packed-fr${exe})
upx_add_test(upx-self-pack-nrv2b upx -3 --nrv2b "${upx_self_exe}" ${fo} -o upx-packed-nrv2b${exe})
upx_add_test(upx-self-pack-nrv2d upx -3 --nrv2d "${upx_self_exe}" ${fo} -o upx-packed-nrv2d${exe})
upx_add_test(upx-self-pack-nrv2e upx -3 --nrv2e "${upx_self_exe}" ${fo} -o upx-packed-nrv2e${exe})
upx_add_test(upx-self-pack-lzma upx -1 --lzma "${upx_self_exe}" ${fo} -o upx-packed-lzma${exe})
upx_add_test(upx-list upx -l upx-packed${exe} upx-packed-fa${exe} upx-packed-fn${exe} upx-packed-fr${exe} upx-packed-nrv2b${exe} upx-packed-nrv2d${exe} upx-packed-nrv2e${exe} upx-packed-lzma${exe})
upx_add_test(upx-fileinfo upx --fileinfo upx-packed${exe} upx-packed-fa${exe} upx-packed-fn${exe} upx-packed-fr${exe} upx-packed-nrv2b${exe} upx-packed-nrv2d${exe} upx-packed-nrv2e${exe} upx-packed-lzma${exe})
upx_add_test(upx-test upx -t upx-packed${exe} upx-packed-fa${exe} upx-packed-fn${exe} upx-packed-fr${exe} upx-packed-nrv2b${exe} upx-packed-nrv2d${exe} upx-packed-nrv2e${exe} upx-packed-lzma${exe})
upx_add_test(upx-unpack upx -d upx-packed${exe} ${fo} -o upx-unpacked${exe})
upx_add_test(upx-unpack-fa upx -d upx-packed-fa${exe} ${fo} -o upx-unpacked-fa${exe})
upx_add_test(upx-unpack-fn upx -d upx-packed-fn${exe} ${fo} -o upx-unpacked-fn${exe})
upx_add_test(upx-unpack-fr upx -d upx-packed-fr${exe} ${fo} -o upx-unpacked-fr${exe})
upx_add_test(upx-unpack-nrv2b upx -d upx-packed-nrv2b${exe} ${fo} -o upx-unpacked-nrv2b${exe})
upx_add_test(upx-unpack-nrv2d upx -d upx-packed-nrv2d${exe} ${fo} -o upx-unpacked-nrv2d${exe})
upx_add_test(upx-unpack-nrv2e upx -d upx-packed-nrv2e${exe} ${fo} -o upx-unpacked-nrv2e${exe})
upx_add_test(upx-unpack-lzma upx -d upx-packed-lzma${exe} ${fo} -o upx-unpacked-lzma${exe})
# all unpacked files must be identical
upx_add_test(upx-compare-fa "${CMAKE_COMMAND}" -E compare_files upx-unpacked${exe} upx-unpacked-fa${exe})
upx_add_test(upx-compare-fn "${CMAKE_COMMAND}" -E compare_files upx-unpacked${exe} upx-unpacked-fn${exe})
upx_add_test(upx-compare-fr "${CMAKE_COMMAND}" -E compare_files upx-unpacked${exe} upx-unpacked-fr${exe})
upx_add_test(upx-compare-nrv2b "${CMAKE_COMMAND}" -E compare_files upx-unpacked${exe} upx-unpacked-nrv2b${exe})
upx_add_test(upx-compare-nrv2d "${CMAKE_COMMAND}" -E compare_files upx-unpacked${exe} upx-unpacked-nrv2d${exe})
upx_add_test(upx-compare-nrv2e "${CMAKE_COMMAND}" -E compare_files upx-unpacked${exe} upx-unpacked-nrv2e${exe})
upx_add_test(upx-compare-lzma "${CMAKE_COMMAND}" -E compare_files upx-unpacked${exe} upx-unpacked-lzma${exe})
# test dependencies
upx_test_depends(upx-list "upx-self-pack;upx-self-pack-fa;upx-self-pack-fn;upx-self-pack-fr;upx-self-pack-nrv2b;upx-self-pack-nrv2d;upx-self-pack-nrv2e;upx-self-pack-lzma")
upx_test_depends(upx-fileinfo "upx-self-pack;upx-self-pack-fa;upx-self-pack-fn;upx-self-pack-fr;upx-self-pack-nrv2b;upx-self-pack-nrv2d;upx-self-pack-nrv2e;upx-self-pack-lzma")
upx_test_depends(upx-test "upx-self-pack;upx-self-pack-fa;upx-self-pack-fn;upx-self-pack-fr;upx-self-pack-nrv2b;upx-self-pack-nrv2d;upx-self-pack-nrv2e;upx-self-pack-lzma")
upx_test_depends(upx-unpack upx-self-pack)
upx_test_depends(upx-unpack-fa upx-self-pack-fa)
upx_test_depends(upx-unpack-fn upx-self-pack-fn)
upx_test_depends(upx-unpack-fr upx-self-pack-fr)
upx_test_depends(upx-unpack-nrv2b upx-self-pack-nrv2b)
upx_test_depends(upx-unpack-nrv2d upx-self-pack-nrv2d)
upx_test_depends(upx-unpack-nrv2e upx-self-pack-nrv2e)
upx_test_depends(upx-unpack-lzma upx-self-pack-lzma)
upx_test_depends(upx-compare-fa "upx-unpack;upx-unpack-fa")
upx_test_depends(upx-compare-fn "upx-unpack;upx-unpack-fn")
upx_test_depends(upx-compare-fr "upx-unpack;upx-unpack-fr")
upx_test_depends(upx-compare-nrv2b "upx-unpack;upx-unpack-nrv2b")
upx_test_depends(upx-compare-nrv2d "upx-unpack;upx-unpack-nrv2d")
upx_test_depends(upx-compare-nrv2e "upx-unpack;upx-unpack-nrv2e")
upx_test_depends(upx-compare-lzma "upx-unpack;upx-unpack-lzma")
# tests with higher COST values will run first
set_tests_properties(upx-self-pack PROPERTIES COST 90)
set_tests_properties(upx-self-pack-fa PROPERTIES COST 20)
set_tests_properties(upx-self-pack-fn PROPERTIES COST 20)
set_tests_properties(upx-self-pack-fr PROPERTIES COST 20)
set_tests_properties(upx-self-pack-nrv2b PROPERTIES COST 20)
set_tests_properties(upx-self-pack-nrv2d PROPERTIES COST 20)
set_tests_properties(upx-self-pack-nrv2e PROPERTIES COST 20)
set_tests_properties(upx-self-pack-lzma PROPERTIES COST 30)
set_tests_properties(upx-unpack PROPERTIES COST 10)
if(NOT UPX_CONFIG_DISABLE_RUN_UNPACKED_TEST)
upx_add_test(upx-run-unpacked ${emu} ./upx-unpacked${exe} --version-short)
upx_test_depends(upx-run-unpacked upx-unpack)
endif()
if(NOT UPX_CONFIG_DISABLE_RUN_PACKED_TEST)
upx_add_test(upx-run-packed ${emu} ./upx-packed${exe} --version-short)
upx_add_test(upx-run-packed-fa ${emu} ./upx-packed-fa${exe} --version-short)
upx_add_test(upx-run-packed-fn ${emu} ./upx-packed-fn${exe} --version-short)
upx_add_test(upx-run-packed-fr ${emu} ./upx-packed-fr${exe} --version-short)
upx_add_test(upx-run-packed-nrv2b ${emu} ./upx-packed-nrv2b${exe} --version-short)
upx_add_test(upx-run-packed-nrv2d ${emu} ./upx-packed-nrv2d${exe} --version-short)
upx_add_test(upx-run-packed-nrv2e ${emu} ./upx-packed-nrv2e${exe} --version-short)
upx_add_test(upx-run-packed-lzma ${emu} ./upx-packed-lzma${exe} --version-short)
upx_test_depends(upx-run-packed upx-self-pack)
upx_test_depends(upx-run-packed-fa upx-self-pack-fa)
upx_test_depends(upx-run-packed-fn upx-self-pack-fn)
upx_test_depends(upx-run-packed-fr upx-self-pack-fr)
upx_test_depends(upx-run-packed-nrv2b upx-self-pack-nrv2b)
upx_test_depends(upx-run-packed-nrv2d upx-self-pack-nrv2d)
upx_test_depends(upx-run-packed-nrv2e upx-self-pack-nrv2e)
upx_test_depends(upx-run-packed-lzma upx-self-pack-lzma)
endif()
#
# exhaustive tests
#
if(NOT UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS)
foreach(method IN ITEMS nrv2b nrv2d nrv2e lzma)
foreach(level IN ITEMS 1 2 3 4 5 6 7)
set(s "${method}-${level}")
upx_add_test(upx-self-pack-${s} upx --${method} -${level} --all-filters --debug-use-random-filter "${upx_self_exe}" ${fo} -o upx-packed-${s}${exe})
upx_add_test(upx-list-${s} upx -l upx-packed-${s}${exe})
upx_add_test(upx-fileinfo-${s} upx --fileinfo upx-packed-${s}${exe})
upx_add_test(upx-test-${s} upx -t upx-packed-${s}${exe})
upx_add_test(upx-unpack-${s} upx -d upx-packed-${s}${exe} ${fo} -o upx-unpacked-${s}${exe})
upx_add_test(upx-compare-${s} "${CMAKE_COMMAND}" -E compare_files upx-unpacked${exe} upx-unpacked-${s}${exe})
upx_test_depends(upx-list-${s} upx-self-pack-${s})
upx_test_depends(upx-fileinfo-${s} upx-self-pack-${s})
upx_test_depends(upx-test-${s} upx-self-pack-${s})
upx_test_depends(upx-unpack-${s} upx-self-pack-${s})
upx_test_depends(upx-compare-${s} "upx-unpack;upx-unpack-${s}")
if(method MATCHES "lzma")
set_tests_properties(upx-self-pack-${s} PROPERTIES COST "3${level}")
else()
set_tests_properties(upx-self-pack-${s} PROPERTIES COST "2${level}")
endif()
if(NOT UPX_CONFIG_DISABLE_RUN_PACKED_TEST)
upx_add_test(upx-run-packed-${s} ${emu} ./upx-packed-${s}${exe} --version-short)
upx_test_depends(upx-run-packed-${s} upx-self-pack-${s})
endif()
endforeach()
endforeach()
endif () # UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS
# clean up
set(emu "")
set(exe "")
set(upx_self_exe "")
set(fo "")
# vim:set ft=cmake ts=4 sw=4 tw=0 et:
+22
View File
@@ -0,0 +1,22 @@
// Copyright (C) Markus Franz Xaver Johannes Oberhumer
#include <stddef.h>
#include <stdint.h>
// check ABI - require proper alignment of fundamental types for use in atomics
static_assert(alignof(char) == sizeof(char), "");
static_assert(alignof(signed char) == sizeof(signed char), "");
static_assert(alignof(unsigned char) == sizeof(unsigned char), "");
static_assert(alignof(short) == sizeof(short), "");
static_assert(alignof(unsigned short) == sizeof(unsigned short), "");
static_assert(alignof(int) == sizeof(int), "");
static_assert(alignof(unsigned int) == sizeof(unsigned int), "");
static_assert(alignof(long) == sizeof(long), "");
static_assert(alignof(unsigned long) == sizeof(unsigned long), "");
static_assert(alignof(ptrdiff_t) == sizeof(ptrdiff_t), "");
static_assert(alignof(size_t) == sizeof(size_t), "");
static_assert(alignof(intptr_t) == sizeof(intptr_t), "");
static_assert(alignof(uintptr_t) == sizeof(uintptr_t), "");
static_assert(alignof(void *) == sizeof(void *), "");
int main() { return 0; }
+62 -66
View File
@@ -6,32 +6,30 @@
ifeq ($(UPX_MAKEFILE_EXTRA_MK_INCLUDED),)
override UPX_MAKEFILE_EXTRA_MK_INCLUDED := 1
#***********************************************************************
# support functions
#***********************************************************************
override check_defined = $(foreach 1,$1,$(if $(filter undefined,$(origin $1)),$(error ERROR: variable '$1' is not defined),))
override check_undefined = $(foreach 1,$1,$(if $(filter undefined,$(origin $1)),,$(error ERROR: variable '$1' is already defined)))
$(call check_defined,run_config run_build)
$(call check_undefined,run_config_and_build)
#***********************************************************************
# build and test
#***********************************************************************
# return "1" or empty-string
override eq = $(if $(subst x$1,,x$2)$(subst x$2,,x$1),,1)
override ne = $(if $(subst x$1,,x$2)$(subst x$2,,x$1),1,)
CTEST = ctest
override tolower = $(subst A,a,$(subst B,b,$(subst C,c,$(subst D,d,$(subst E,e,$(subst F,f,$(subst G,g,$(subst H,h,$(subst I,i,$(subst J,j,$(subst K,k,$(subst L,l,$(subst M,m,$(subst N,n,$(subst O,o,$(subst P,p,$(subst Q,q,$(subst R,r,$(subst S,s,$(subst T,t,$(subst U,u,$(subst V,v,$(subst W,w,$(subst X,x,$(subst Y,y,$(subst Z,z,$1))))))))))))))))))))))))))
override toupper = $(subst a,A,$(subst b,B,$(subst c,C,$(subst d,D,$(subst e,E,$(subst f,F,$(subst g,G,$(subst h,H,$(subst i,I,$(subst j,J,$(subst k,K,$(subst l,L,$(subst m,M,$(subst n,N,$(subst o,O,$(subst p,P,$(subst q,Q,$(subst r,R,$(subst s,S,$(subst t,T,$(subst u,U,$(subst v,V,$(subst w,W,$(subst x,X,$(subst y,Y,$(subst z,Z,$1))))))))))))))))))))))))))
build/debug+test: $$(dir $$@)debug PHONY; cd "$(dir $@)debug" && $(CTEST)
build/%/debug+test: $$(dir $$@)debug PHONY; cd "$(dir $@)debug" && $(CTEST)
build/release+test: $$(dir $$@)release PHONY; cd "$(dir $@)release" && $(CTEST)
build/%/release+test: $$(dir $$@)release PHONY; cd "$(dir $@)release" && $(CTEST)
build/%/all+test: $$(dir $$@)debug+test $$(dir $$@)release+test PHONY ;
# shortcuts
debug+test: build/debug+test PHONY
release+test: build/release+test PHONY
all+test build/all+test: build/debug+test build/release+test PHONY
# canonicalize case of CMAKE_BUILD_TYPE to "Debug" and "Release"
override cm_build_type = $(if $(call eq,$1,),$(error EMPTY-build-type),$(if $(call eq,$(call tolower,$1),debug),Debug,$(if $(call eq,$(call tolower,$1),release),Release,$(if $(call eq,$(call tolower,$1),none),None,$1))))
#***********************************************************************
# extra builds: some pre-defined build configurations
#***********************************************************************
$(call check_defined,run_config run_build)
$(call check_undefined,run_config_and_build)
define run_config_and_build
$(call run_config,$1,$2)
$(call run_build,$1,$2)
@@ -185,7 +183,7 @@ build/extra/cross-windows-mingw64/%: export CC = x86_64-w64-mingw32-gcc -static
build/extra/cross-windows-mingw64/%: export CXX = x86_64-w64-mingw32-g++ -static -D_WIN32_WINNT=0x0501
build/extra/cross-windows-mingw64/%: CMAKE_SYSTEM_NAME ?= Windows
build/extra/cross-windows-mingw64/%: CMAKE_SYSTEM_PROCESSOR ?= AMD64
build/extra/cross-windows-mingw64/%: CMAKE_CROSSCOMPILING_EMULATOR ?= wine64
build/extra/cross-windows-mingw64/%: CMAKE_CROSSCOMPILING_EMULATOR ?= wine
# cross compiler: macOS arm64 (aarch64)
build/extra/cross-darwin-arm64/debug: PHONY; $(call run_config_and_build,$@,Debug)
@@ -215,19 +213,20 @@ build/analyze/clang-analyzer/%: override CMAKE := $(SCAN_BUILD) $(CMAKE)
build/analyze/clang-analyzer/%: export CCC_CC ?= clang
build/analyze/clang-analyzer/%: export CCC_CXX ?= clang++
# run clang-tidy: uses file compile_commands.json from an existing clang build
# run clang-tidy: uses file compile_commands.json from an existing clang build;
# does not create any actual files, so purely PHONY
CLANG_TIDY_BUILD_BASE = build/extra/clang
RUN_CLANG_TIDY = time python3 ./misc/analyze/clang-tidy/run-clang-tidy.py -p $<
RUN_CLANG_TIDY_WERROR = $(RUN_CLANG_TIDY) '-warnings-as-errors=*'
build/analyze/clang-tidy-upx/debug build/analyze/clang-tidy-upx/release: build/extra/clang/$$(notdir $$@) PHONY
build/analyze/clang-tidy-upx/debug build/analyze/clang-tidy-upx/release: $$(CLANG_TIDY_BUILD_BASE)/$$(notdir $$@) PHONY
$(RUN_CLANG_TIDY_WERROR) -config-file ./.clang-tidy '/src/.*\.cpp'
build/analyze/clang-tidy-bzip2/debug build/analyze/clang-tidy-bzip2/release: build/extra/clang/$$(notdir $$@) PHONY
build/analyze/clang-tidy-bzip2/debug build/analyze/clang-tidy-bzip2/release: $$(CLANG_TIDY_BUILD_BASE)/$$(notdir $$@) PHONY
$(RUN_CLANG_TIDY) -config-file ./misc/analyze/clang-tidy/clang-tidy-bzip2.yml /vendor/bzip2/
build/analyze/clang-tidy-ucl/debug build/analyze/clang-tidy-ucl/release: build/extra/clang/$$(notdir $$@) PHONY
build/analyze/clang-tidy-ucl/debug build/analyze/clang-tidy-ucl/release: $$(CLANG_TIDY_BUILD_BASE)/$$(notdir $$@) PHONY
$(RUN_CLANG_TIDY_WERROR) -config-file ./misc/analyze/clang-tidy/clang-tidy-ucl.yml /vendor/ucl/
build/analyze/clang-tidy-zlib/debug build/analyze/clang-tidy-zlib/release: build/extra/clang/$$(notdir $$@) PHONY
$(RUN_CLANG_TIDY_WERROR) -config-file ./misc/analyze/clang-tidy/clang-tidy-zlib.yml /vendor/zlib/
build/analyze/clang-tidy-zstd/debug build/analyze/clang-tidy-zstd/release: build/extra/clang/$$(notdir $$@) PHONY
build/analyze/clang-tidy-zlib/debug build/analyze/clang-tidy-zlib/release: $$(CLANG_TIDY_BUILD_BASE)/$$(notdir $$@) PHONY
$(RUN_CLANG_TIDY) -config-file ./misc/analyze/clang-tidy/clang-tidy-zlib.yml /vendor/zlib/
build/analyze/clang-tidy-zstd/debug build/analyze/clang-tidy-zstd/release: $$(CLANG_TIDY_BUILD_BASE)/$$(notdir $$@) PHONY
$(RUN_CLANG_TIDY) -config-file ./misc/analyze/clang-tidy/clang-tidy-zstd.yml /vendor/zstd/
build/analyze/clang-tidy/debug build/analyze/clang-tidy/release: build/analyze/clang-tidy-upx/$$(notdir $$@)
build/analyze/clang-tidy/debug build/analyze/clang-tidy/release: build/analyze/clang-tidy-bzip2/$$(notdir $$@)
@@ -236,8 +235,8 @@ build/analyze/clang-tidy/debug build/analyze/clang-tidy/release: build/analyze/c
build/analyze/clang-tidy/debug build/analyze/clang-tidy/release: build/analyze/clang-tidy-zstd/$$(notdir $$@)
# OLD names [deprecated]
build/extra/scan-build/debug: build/analyze/clang-analyzer/debug
build/extra/scan-build/release: build/analyze/clang-analyzer/release
build/extra/scan-build/debug: build/analyze/clang-analyzer/debug PHONY
build/extra/scan-build/release: build/analyze/clang-analyzer/release PHONY
#***********************************************************************
# advanced: generic eXtra target
@@ -277,49 +276,46 @@ endif
# it easy to set other variables like CMAKE_AR or CMAKE_RANLIB
#***********************************************************************
ifneq ($(origin UPX_CMAKE_CONFIG_FLAGS),command line) # GNU make bug work-around
# GNU make bug, see https://savannah.gnu.org/bugs/index.php?64822
# and commit https://git.savannah.gnu.org/cgit/make.git/commit/?id=07187db947ba25e6c59b55f10660a04f8e9c5229
$(call check_undefined,__add_cmake_config)
# promote an environment or Make variable to a CMake cache entry:
__add_cmake_config = $(and $($1),-D$1="$($1)")
# pass common CMake settings from environment/make to cmake
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_VERBOSE_MAKEFILE)
# pass common CMake toolchain settings from environment/make to cmake
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_ADDR2LINE)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_AR)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_DLLTOOL)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_LINKER)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_NM)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_OBJCOPY)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_OBJDUMP)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_RANLIB)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_READELF)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_STRIP)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_TAPI)
# pass common CMake LTO toolchain settings from environment/make to cmake (for use with "-flto")
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_C_COMPILER_AR)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_C_COMPILER_RANLIB)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_CXX_COMPILER_AR)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_CXX_COMPILER_RANLIB)
# pass common CMake cross compilation settings from environment/make to cmake
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_SYSTEM_NAME)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_SYSTEM_PROCESSOR)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_CROSSCOMPILING_EMULATOR)
# pass UPX config options from environment/make to cmake; see CMakeLists.txt
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_DISABLE_GITREV)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_DISABLE_SANITIZE)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_DISABLE_WSTRICT)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_DISABLE_WERROR)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_DISABLE_SELF_PACK_TEST)
# pass UPX extra compile options from environment/make to cmake; see CMakeLists.txt
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_EXTRA_COMPILE_OPTIONS_BZIP2)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_EXTRA_COMPILE_OPTIONS_UCL)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_EXTRA_COMPILE_OPTIONS_UPX)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_EXTRA_COMPILE_OPTIONS_ZLIB)
build/%: UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_EXTRA_COMPILE_OPTIONS_ZSTD)
endif # GNU make bug work-around
# pass common CMake settings
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_VERBOSE_MAKEFILE)
# pass common CMake toolchain settings
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_ADDR2LINE)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_AR)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_DLLTOOL)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_LINKER)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_NM)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_OBJCOPY)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_OBJDUMP)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_RANLIB)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_READELF)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_STRIP)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_TAPI)
# pass common CMake LTO toolchain settings
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_C_COMPILER_AR)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_C_COMPILER_RANLIB)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_CXX_COMPILER_AR)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_CXX_COMPILER_RANLIB)
# pass common CMake cross compilation settings
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_SYSTEM_NAME)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_SYSTEM_PROCESSOR)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,CMAKE_CROSSCOMPILING_EMULATOR)
# pass UPX config options; see CMakeLists.txt
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_DISABLE_GITREV)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_DISABLE_SANITIZE)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_DISABLE_WERROR)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_DISABLE_WSTRICT)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_DISABLE_SELF_PACK_TEST)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS)
# pass UPX extra compile options; see CMakeLists.txt
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_EXTRA_COMPILE_OPTIONS_BZIP2)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_EXTRA_COMPILE_OPTIONS_UCL)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_EXTRA_COMPILE_OPTIONS_UPX)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_EXTRA_COMPILE_OPTIONS_ZLIB)
UPX_CMAKE_CONFIG_FLAGS += $(call __add_cmake_config,UPX_CONFIG_EXTRA_COMPILE_OPTIONS_ZSTD)
#***********************************************************************
# check git submodules
+2 -1
View File
@@ -5,8 +5,9 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
# create the image from Dockerfile
# using a rootless Podman container
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
image=upx-stubtools-20221212-v7
image=upx-stubtools-20240405-v1
[[ $1 == --print-image ]] && echo "$image" && exit 0
podman build -t "$image" -f "$argv0dir/Dockerfile" "$argv0dir"
@@ -5,6 +5,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
# list all system packages that are installed in the image
# using a rootless Podman container
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
image="$("$argv0dir/10-create-image.sh" --print-image)"
@@ -5,6 +5,7 @@ argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
# run an interactive shell in the image
# using a rootless Podman container
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
image="$("$argv0dir/10-create-image.sh" --print-image)"
@@ -24,6 +25,7 @@ if [[ 1 == 1 ]]; then
flags+=( -v "${argv0dir}/../../..:/home/upx/src/upx" )
flags+=( -w /home/upx/src/upx ) # set working directory
flags+=( --tmpfs /home/upx/.cache:rw,exec ) # mount a writeable tmpfs
flags+=( --tmpfs /home/upx/.config:rw,exec ) # mount a writeable tmpfs
flags+=( --tmpfs /home/upx/.local:rw,exec ) # mount a writeable tmpfs
else
# run as user root 0:0
+42
View File
@@ -0,0 +1,42 @@
#! /usr/bin/env bash
## vim:set ts=4 sw=4 et:
set -e; set -o pipefail
argv0=$0; argv0abs="$(readlink -fn "$argv0")"; argv0dir="$(dirname "$argv0abs")"
# rebuild stubs from source code
# (also see 20-image-run-shell.sh for more container usage examples)
# using a rootless Podman container
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
image="$("$argv0dir/10-create-image.sh" --print-image)"
flags=( --read-only --rm --pull=never )
flags+=( --cap-drop=all ) # drop all capabilities
flags+=( --network=none ) # no network needed
if [[ 1 == 1 ]]; then
# run as user upx 2000:2000
flags+=( --user 2000 )
# map container users 0..999 to subuid-users 1..1000, and map container user 2000 to current host user
flags+=( --uidmap=0:1:1000 --uidmap=2000:0:1 )
# map container groups 0..999 to subgid-groups 1..1000, and map container group 2000 to current host group
flags+=( --gidmap=0:1:1000 --gidmap=2000:0:1 )
# NOTE: we mount the upx top-level directory read-write under /home/upx/src/upx
# INFO: SELinux users *may* have to add ":z" to the volume mount flags; check the docs!
flags+=( -v "${argv0dir}/../../..:/home/upx/src/upx" )
fi
podman run "${flags[@]}" "$image" bash -c $'
set -ex; set -o pipefail
cd /home/upx/src/upx
# check whitespace
[[ -d .git ]] && bash ./misc/scripts/check_whitespace_git.sh
# rebuild docs
make -C doc clean all
# rebuild stubs
cd /home/upx/src/upx/src/stub
make maintainer-clean extra-clean
git status . || true # make sure the stub files got deleted
make extra-all all
echo "===== Rebuilt stubs. All done. ====="
exit 0
'
+47 -15
View File
@@ -1,5 +1,6 @@
FROM docker.io/library/ubuntu:22.04
ENV UPX_CONTAINER_IMAGE_NAME=upx-stubtools-20221212-v6
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
FROM docker.io/library/ubuntu:24.04
ENV UPX_CONTAINER_IMAGE_NAME=upx-stubtools-20240405-v1
ARG DEBIAN_FRONTEND=noninteractive
ENV LANG=C.UTF-8
@@ -7,21 +8,35 @@ ENV LANG=C.UTF-8
RUN dpkg --add-architecture i386 \
&& apt-get update && apt-get upgrade -y \
&& apt-get install -y --no-install-recommends \
aria2 bash bash-completion ca-certificates dash git less libmpc3 libncurses5 \
make ncurses-term perl-base python2-minimal time wget xz-utils \
aria2 bash bash-completion ca-certificates curl git less libmpc3 \
make ncurses-term perl-base tar time wget xz-utils \
libc6:i386 zlib1g:i386 \
# the following packages are not required for rebuilding the stubs, but
# they do make the image *much* more convenient and also allow building
# the full UPX binary inside the container via CMake:
7zip bfs busybox bzip2 cabextract ccache chrpath cmake cpio curl elfutils fd-find file fzf \
g++ gawk gdb gojq ht htop hyperfine jq libzstd-dev lsb-release lz4 lzip lzop \
mksh moreutils ninja-build p7zip parallel patch patchelf patchutils pax-utils paxctl \
python3 python3-pyasn1 python3-pycryptodome python3-zstd \
re2c ripgrep rsync screen universal-ctags unzip vim yash zip zlib1g-dev zsh zstd \
7zip bfs bubblewrap busybox bzip2 bzip3 cabextract ccache chrpath cmake cpio dash diffstat \
elfutils execstack fd-find file fish fzf g++ gawk gdb gojq ht htop hyperfine jq ksh \
libzstd-dev lsb-release lz4 lzip lzop minify mksh moreutils musl neovim ninja-build \
p7zip parallel patch patchelf patchutils pax-utils proot \
python3 python3-pyasn1 python3-pycryptodome python3-pycurl python3-toml python3-yaml python3-zstd \
re2c ripgrep rsync screen strace universal-ctags unzip valgrind yash yq \
zip zlib1g-dev zoxide zsh zstd \
# extra packages for compiling with "gcc -m32" and "gcc -mx32":
g++-multilib gcc-multilib \
&& true
# install python2-minimal packages from Debian-11; REQUIRED
RUN cd /root \
&& aria2c --checksum=sha-256=85833c92314011b89bbead6f9a5a7a360b5ee4f9b95e001225afead4ebf9f7d3 \
'https://ftp.debian.org/debian/pool/main/p/python2.7/libpython2.7-minimal_2.7.18-8+deb11u1_amd64.deb' \
&& aria2c --checksum=sha-256=44f0cdc1a343303d31c55fcb3a6402cfe326adf749ec30e375e6e0c0c5f7c1f7 \
'https://ftp.debian.org/debian/pool/main/p/python2.7/python2.7-minimal_2.7.18-8+deb11u1_amd64.deb' \
&& dpkg -i ./*.deb \
&& rm ./*.deb \
&& if ! test -f /usr/bin/python2; then ln -s -v python2.7 /usr/bin/python2; fi \
&& ldconfig \
&& true
# manually unpack and install compat libs from Ubuntu-16.04; REQUIRED
RUN cd /root \
&& aria2c --checksum=sha-256=de22baf3dd851a10e16fbf66a243e70149ca46e06b2939fdc79429196cefc090 \
@@ -45,22 +60,39 @@ RUN cd /root \
# install official UPX release binaries into /usr/local/bin; not required but convenient for testing
RUN cd /root \
&& wget -q https://github.com/upx/upx/releases/download/v3.91/upx-3.91-amd64_linux.tar.bz2 \
&& xzlist="3.92 3.93 3.94 3.95 3.96 4.0.0 4.0.1 4.0.2 4.1.0 4.2.0 4.2.1 4.2.2" \
&& for v in $xzlist; do wget -q https://github.com/upx/upx/releases/download/v${v}/upx-${v}-amd64_linux.tar.xz; done \
&& xzversions="3.92 3.93 3.94 3.95 3.96 4.0.0 4.0.1 4.0.2 4.1.0 4.2.0 4.2.1 4.2.2 4.2.3" \
&& for v in $xzversions; do wget -q https://github.com/upx/upx/releases/download/v${v}/upx-${v}-amd64_linux.tar.xz; done \
&& for f in ./upx-*.tar.*; do tar -xoaf $f; done \
&& for v in 3.91 $xzlist; do d=upx-${v}-amd64_linux; ./$d/upx -qq -d $d/upx -o /usr/local/bin/upx-${v}; done \
&& for v in 3.91 $xzversions; do d=upx-${v}-amd64_linux; ./$d/upx -qq -d $d/upx -o /usr/local/bin/upx-${v}; done \
&& rm -r ./upx-*.tar.* ./upx-*linux \
&& true
# create default user upx:upx 2000:2000
# create default container user upx:upx 2000:2000
RUN useradd upx -U --uid 2000 --shell /bin/bash -m \
&& cd /home/upx && chmod 00700 . \
# prepare ~/.cache and ~/.local for possible tmpfs mounts
# prepare ~/.cache, ~/.config and ~/.local for possible tmpfs mounts
&& mkdir -p .cache/tmp .local/bin src/upx \
&& for d in ccache fontconfig go-build mesa_shader_cache tmp wine zig; do mkdir -p .cache/$d; done \
&& for d in ccache fontconfig go-build mesa_shader_cache parallel tmp wine zig; do mkdir -p .cache/$d; done \
&& for d in fish git helix kak nvim; do mkdir -p .config/$d; done \
&& for d in bin include lib share state; do mkdir -p .local/$d; done \
&& ln -s .cache/wine .wine && ln -s .cache/tmp tmp \
# symlink upx-stubtools
&& ln -s /usr/local/bin/bin-upx-20221212 .local/bin/bin-upx \
# some convenience settings according to upx developer preferences
&& echo "alias md=mkdir" >> .bashrc \
&& echo "alias rd=rmdir" >> .bashrc \
&& echo 'mdd() { mkdir "$1" && cd "$1"; }' >> .bashrc \
&& echo 'm() { make "$@"; }' >> .bashrc \
&& echo 'tn() { time nice "$@"; }' >> .bashrc \
&& echo 'tnm() { time nice make "$@"; }' >> .bashrc \
&& echo 'tnmm() { time nice make -j "$@"; }' >> .bashrc \
&& echo 'source /usr/share/bash-completion/completions/make' >> .bashrc \
&& echo 'complete -F _make m tnm tnmm' >> .bashrc \
&& echo 'eval "$(zoxide init bash)"' >> .bashrc \
&& echo "alias zz=zi\nalias y=z\nalias yy=zi" >> .bashrc \
&& echo "alias cd..='cd ..'" >> .bashrc \
&& echo "alias ..='cd ..'" >> .bashrc \
&& echo "alias .='cd ..'" >> .bashrc \
&& chown -R upx:upx . \
&& true
USER upx
+692 -632
View File
File diff suppressed because it is too large Load Diff
+17
View File
@@ -0,0 +1,17 @@
#! /usr/bin/env python3
## vim:set ts=4 sw=4 et: -*- coding: utf-8 -*-
# simulate "readlink -en FILE"
# - result may differ from actual readlink(1) for edge cases
# - works with Python2 and Python3
#
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
import os, sys
if len(sys.argv) != 2:
sys.exit(1)
real_path = os.path.realpath(sys.argv[1])
if not os.path.exists(real_path):
sys.exit(1)
sys.stdout.write(real_path)
sys.stdout.flush()
+15
View File
@@ -0,0 +1,15 @@
#! /usr/bin/env python3
## vim:set ts=4 sw=4 et: -*- coding: utf-8 -*-
# simulate "readlink -fn FILE" for systems that lack it (e.g. macOS-11)
# - result may differ from actual readlink(1) for edge cases
# - works with Python2 and Python3
#
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
import os, sys
if len(sys.argv) != 2:
sys.exit(1)
real_path = os.path.realpath(sys.argv[1])
sys.stdout.write(real_path)
sys.stdout.flush()
+8 -7
View File
@@ -8,31 +8,32 @@ set -e; set -o pipefail
cmake_config_flags=()
# promote an environment variable to a CMake cache entry:
__add_cmake_config() {
[[ -z "${!1}" ]] || cmake_config_flags+=( -D$1="${!1}" )
}
# pass common CMake settings from environment to cmake
# pass common CMake settings
for v in CMAKE_VERBOSE_MAKEFILE; do
__add_cmake_config $v
done
# pass common CMake toolchain settings from environment to cmake
# pass common CMake toolchain settings
for v in CMAKE_ADDR2LINE CMAKE_AR CMAKE_DLLTOOL CMAKE_LINKER CMAKE_NM CMAKE_OBJCOPY CMAKE_OBJDUMP CMAKE_RANLIB CMAKE_READELF CMAKE_STRIP CMAKE_TAPI; do
__add_cmake_config $v
done
# pass common CMake LTO toolchain settings from environment to cmake (for use with "-flto")
# pass common CMake LTO toolchain settings
for v in CMAKE_C_COMPILER_AR CMAKE_C_COMPILER_RANLIB CMAKE_CXX_COMPILER_AR CMAKE_CXX_COMPILER_RANLIB; do
__add_cmake_config $v
done
# pass common CMake cross compilation settings from environment to cmake
# pass common CMake cross compilation settings
for v in CMAKE_SYSTEM_NAME CMAKE_SYSTEM_PROCESSOR CMAKE_CROSSCOMPILING_EMULATOR; do
__add_cmake_config $v
done
# pass UPX config options from environment to cmake; see CMakeLists.txt
for v in UPX_CONFIG_DISABLE_GITREV UPX_CONFIG_DISABLE_SANITIZE UPX_CONFIG_DISABLE_WSTRICT UPX_CONFIG_DISABLE_WERROR UPX_CONFIG_DISABLE_SELF_PACK_TEST; do
# pass UPX config options; see CMakeLists.txt
for v in UPX_CONFIG_DISABLE_GITREV UPX_CONFIG_DISABLE_SANITIZE UPX_CONFIG_DISABLE_WERROR UPX_CONFIG_DISABLE_WSTRICT UPX_CONFIG_DISABLE_SELF_PACK_TEST UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS; do
__add_cmake_config $v
done
# pass UPX extra compile options from environment to cmake; see CMakeLists.txt
# pass UPX extra compile options; see CMakeLists.txt
for v in UPX_CONFIG_EXTRA_COMPILE_OPTIONS_BZIP2 UPX_CONFIG_EXTRA_COMPILE_OPTIONS_UCL UPX_CONFIG_EXTRA_COMPILE_OPTIONS_UPX UPX_CONFIG_EXTRA_COMPILE_OPTIONS_ZLIB UPX_CONFIG_EXTRA_COMPILE_OPTIONS_ZSTD; do
__add_cmake_config $v
done
+117 -31
View File
@@ -7,6 +7,7 @@ argv0=$0; argv0abs=$(readlink -fn "$argv0"); argv0dir=$(dirname "$argv0abs")
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
#
# mimic running "ctest", i.e. the "test" section of CMakeLists.txt; does not redirect stdout
# (allows freely setting $upx_exe_runner, while CMake is restricted to configure-time settings)
#
# requires:
# $upx_exe (required, but with convenience fallback "./upx")
@@ -24,57 +25,142 @@ if [[ -z $upx_exe ]]; then echo "UPX-ERROR: please set \$upx_exe"; exit 1; fi
if [[ ! -f $upx_exe ]]; then echo "UPX-ERROR: file '$upx_exe' does not exist"; exit 1; fi
upx_exe=$(readlink -fn "$upx_exe") # make absolute
[[ -f $upx_exe ]] || exit 1
upx_run=()
# set emu and run_upx
emu=()
if [[ -n $upx_exe_runner ]]; then
# usage examples:
# export upx_exe_runner="qemu-x86_64 -cpu Nehalem"
# export upx_exe_runner="valgrind --leak-check=no --error-exitcode=1 --quiet"
# export upx_exe_runner="wine"
IFS=' ' read -r -a upx_run <<< "$upx_exe_runner" # split at spaces into array
IFS=' ' read -r -a emu <<< "$upx_exe_runner" # split at spaces into array
elif [[ -n $CMAKE_CROSSCOMPILING_EMULATOR ]]; then
IFS=';' read -r -a upx_run <<< "$CMAKE_CROSSCOMPILING_EMULATOR" # split at semicolons into array
IFS=';' read -r -a emu <<< "$CMAKE_CROSSCOMPILING_EMULATOR" # split at semicolons into array
fi
upx_runner=( "${upx_run[@]}" )
upx_run+=( "$upx_exe" )
echo "upx_run='${upx_run[*]}'"
run_upx=( "${emu[@]}" "$upx_exe" )
echo "run_upx='${run_upx[*]}'"
# upx_run sanity check
if ! "${upx_run[@]}" --version-short >/dev/null; then echo "UPX-ERROR: FATAL: upx --version-short FAILED"; exit 1; fi
if ! "${upx_run[@]}" -L >/dev/null 2>&1; then echo "UPX-ERROR: FATAL: upx -L FAILED"; exit 1; fi
if ! "${upx_run[@]}" --help >/dev/null; then echo "UPX-ERROR: FATAL: upx --help FAILED"; exit 1; fi
# run_upx sanity check
if ! "${run_upx[@]}" --version-short >/dev/null; then echo "UPX-ERROR: FATAL: upx --version-short FAILED"; exit 1; fi
if ! "${run_upx[@]}" -L >/dev/null 2>&1; then echo "UPX-ERROR: FATAL: upx -L FAILED"; exit 1; fi
if ! "${run_upx[@]}" --help >/dev/null; then echo "UPX-ERROR: FATAL: upx --help FAILED"; exit 1; fi
#***********************************************************************
# see CMakeLists.txt
#
# IDEA: create a Makefile and use "make -j" so that these tests can
# run in parallel much like "ctest --parallel 8"
#***********************************************************************
export UPX="--no-color --no-progress"
"${upx_run[@]}" --version
"${upx_run[@]}" --help
"${upx_run[@]}" --sysinfo -v
case "$UPX_CONFIG_DISABLE_SELF_PACK_TEST" in
"" | "0" | "FALSE" | "OFF") ;;
*) echo "Self-pack test disabled. All done."; exit 0 ;;
# similar to cmake function upx_cache_bool_vars()
set_cmake_bool_vars() {
local default_value="$1"; shift
local var_name
for var_name do
case "${!var_name}" in
0 | FALSE | OFF | false | off) eval "export $var_name=OFF" ;;
1 | TRUE | ON | true | on) eval "export $var_name=ON" ;;
*) eval "export $var_name=$default_value" ;;
esac
done
}
set -x
set_cmake_bool_vars OFF UPX_CONFIG_DISABLE_SELF_PACK_TEST
set_cmake_bool_vars OFF UPX_CONFIG_DISABLE_RUN_UNPACKED_TEST
set_cmake_bool_vars OFF UPX_CONFIG_DISABLE_RUN_PACKED_TEST
if [[ "${emu[0]}" == *valgrind* ]]; then # valgrind is SLOW
set_cmake_bool_vars ON UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS
else
set_cmake_bool_vars OFF UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS
fi
export UPX="--prefer-ucl --no-color --no-progress"
export UPX_DEBUG_DISABLE_GITREV_WARNING=1
export UPX_DEBUG_DOCTEST_DISABLE=1 # already checked above
"${run_upx[@]}" --version
"${run_upx[@]}" --version-short
"${run_upx[@]}" --license
"${run_upx[@]}" --help
"${run_upx[@]}" --help-short
"${run_upx[@]}" --help-verbose
"${run_upx[@]}" --sysinfo
"${run_upx[@]}" --sysinfo -v
"${run_upx[@]}" --sysinfo -vv
if [[ $UPX_CONFIG_DISABLE_SELF_PACK_TEST == ON ]]; then
echo "Self-pack test disabled. All done."; exit 0
fi
exe=".out"
upx_self_exe=$upx_exe
fo="--force-overwrite"
"${upx_run[@]}" -3 "${upx_self_exe}" ${fo} -o upx-packed${exe}
"${upx_run[@]}" -3 --nrv2b "${upx_self_exe}" ${fo} -o upx-packed-n2b${exe}
"${upx_run[@]}" -3 --nrv2d "${upx_self_exe}" ${fo} -o upx-packed-n2d${exe}
"${upx_run[@]}" -3 --nrv2e "${upx_self_exe}" ${fo} -o upx-packed-n2e${exe}
"${upx_run[@]}" -1 --lzma "${upx_self_exe}" ${fo} -o upx-packed-lzma${exe}
"${run_upx[@]}" -3 "${upx_self_exe}" ${fo} -o upx-packed${exe}
"${run_upx[@]}" -3 --all-filters "${upx_self_exe}" ${fo} -o upx-packed-fa${exe}
"${run_upx[@]}" -3 --no-filter "${upx_self_exe}" ${fo} -o upx-packed-fn${exe}
"${run_upx[@]}" -3 --all-filters --debug-use-random-filter "${upx_self_exe}" ${fo} -o upx-packed-fr${exe}
"${run_upx[@]}" -3 --nrv2b "${upx_self_exe}" ${fo} -o upx-packed-nrv2b${exe}
"${run_upx[@]}" -3 --nrv2d "${upx_self_exe}" ${fo} -o upx-packed-nrv2d${exe}
"${run_upx[@]}" -3 --nrv2e "${upx_self_exe}" ${fo} -o upx-packed-nrv2e${exe}
"${run_upx[@]}" -1 --lzma "${upx_self_exe}" ${fo} -o upx-packed-lzma${exe}
"${upx_run[@]}" -l upx-packed${exe} upx-packed-n2b${exe} upx-packed-n2d${exe} upx-packed-n2e${exe} upx-packed-lzma${exe}
"${upx_run[@]}" --fileinfo upx-packed${exe} upx-packed-n2b${exe} upx-packed-n2d${exe} upx-packed-n2e${exe} upx-packed-lzma${exe}
"${upx_run[@]}" -t upx-packed${exe} upx-packed-n2b${exe} upx-packed-n2d${exe} upx-packed-n2e${exe} upx-packed-lzma${exe}
"${upx_run[@]}" -d upx-packed${exe} ${fo} -o upx-unpacked${exe}
"${run_upx[@]}" -l upx-packed${exe} upx-packed-fa${exe} upx-packed-fn${exe} upx-packed-fr${exe} upx-packed-nrv2b${exe} upx-packed-nrv2d${exe} upx-packed-nrv2e${exe} upx-packed-lzma${exe}
"${run_upx[@]}" --fileinfo upx-packed${exe} upx-packed-fa${exe} upx-packed-fn${exe} upx-packed-fr${exe} upx-packed-nrv2b${exe} upx-packed-nrv2d${exe} upx-packed-nrv2e${exe} upx-packed-lzma${exe}
"${run_upx[@]}" -t upx-packed${exe} upx-packed-fa${exe} upx-packed-fn${exe} upx-packed-fr${exe} upx-packed-nrv2b${exe} upx-packed-nrv2d${exe} upx-packed-nrv2e${exe} upx-packed-lzma${exe}
set -x
"${upx_runner[@]}" ./upx-unpacked${exe} --version-short
"${upx_runner[@]}" ./upx-packed${exe} --version-short
"${run_upx[@]}" -d upx-packed${exe} ${fo} -o upx-unpacked${exe}
"${run_upx[@]}" -d upx-packed-fa${exe} ${fo} -o upx-unpacked-fa${exe}
"${run_upx[@]}" -d upx-packed-fn${exe} ${fo} -o upx-unpacked-fn${exe}
"${run_upx[@]}" -d upx-packed-fr${exe} ${fo} -o upx-unpacked-fr${exe}
"${run_upx[@]}" -d upx-packed-nrv2b${exe} ${fo} -o upx-unpacked-nrv2b${exe}
"${run_upx[@]}" -d upx-packed-nrv2d${exe} ${fo} -o upx-unpacked-nrv2d${exe}
"${run_upx[@]}" -d upx-packed-nrv2e${exe} ${fo} -o upx-unpacked-nrv2e${exe}
"${run_upx[@]}" -d upx-packed-lzma${exe} ${fo} -o upx-unpacked-lzma${exe}
# all unpacked files must be identical
cmp -s upx-unpacked${exe} upx-unpacked-fa${exe}
cmp -s upx-unpacked${exe} upx-unpacked-fn${exe}
cmp -s upx-unpacked${exe} upx-unpacked-fr${exe}
cmp -s upx-unpacked${exe} upx-unpacked-nrv2b${exe}
cmp -s upx-unpacked${exe} upx-unpacked-nrv2d${exe}
cmp -s upx-unpacked${exe} upx-unpacked-nrv2e${exe}
cmp -s upx-unpacked${exe} upx-unpacked-lzma${exe}
if [[ $UPX_CONFIG_DISABLE_RUN_UNPACKED_TEST != ON ]]; then
"${emu[@]}" ./upx-unpacked${exe} --version-short
fi
if [[ $UPX_CONFIG_DISABLE_RUN_PACKED_TEST != ON ]]; then
"${emu[@]}" ./upx-packed${exe} --version-short
"${emu[@]}" ./upx-packed-fa${exe} --version-short
"${emu[@]}" ./upx-packed-fn${exe} --version-short
"${emu[@]}" ./upx-packed-fr${exe} --version-short
"${emu[@]}" ./upx-packed-nrv2b${exe} --version-short
"${emu[@]}" ./upx-packed-nrv2d${exe} --version-short
"${emu[@]}" ./upx-packed-nrv2e${exe} --version-short
"${emu[@]}" ./upx-packed-lzma${exe} --version-short
fi
if [[ $UPX_CONFIG_DISABLE_EXHAUSTIVE_TESTS != ON ]]; then
set +x
for method in nrv2b nrv2d nrv2e lzma; do
for level in 1 2 3 4 5 6 7; do
s="${method}-${level}"
echo "========== $s =========="
"${run_upx[@]}" -qq --${method} -${level} --all-filters --debug-use-random-filter "${upx_self_exe}" ${fo} -o upx-packed-${s}${exe}
"${run_upx[@]}" -qq -l upx-packed-${s}${exe}
"${run_upx[@]}" -qq --fileinfo upx-packed-${s}${exe}
"${run_upx[@]}" -qq -t upx-packed-${s}${exe}
"${run_upx[@]}" -qq -d upx-packed-${s}${exe} ${fo} -o upx-unpacked-${s}${exe}
cmp -s upx-unpacked${exe} upx-unpacked-${s}${exe}
if [[ $UPX_CONFIG_DISABLE_RUN_PACKED_TEST != ON ]]; then
"${emu[@]}" ./upx-packed-${s}${exe} --version-short
fi
done
done
fi
echo "run_upx='${run_upx[*]}'"
echo "All done."
+170 -146
View File
@@ -10,10 +10,11 @@ argv0=$0; argv0abs=$(readlink -fn "$argv0"); argv0dir=$(dirname "$argv0abs")
# $upx_exe (required, but with convenience fallback "./upx")
# optional settings:
# $upx_exe_runner (e.g. "qemu-x86_64 -cpu Nehalem" or "valgrind")
# $upx_test_file
#
# IMPORTANT NOTE: do NOT run as user root!!
# IMPORTANT NOTE: this script only works on Unix!!
# IMPORTANT NOTE: this script only works on Unix
# IMPORTANT NOTE: do NOT run as user root!
umask 0022
# disable on macOS for now, see https://github.com/upx/upx/issues/612
@@ -40,26 +41,28 @@ if [[ -z $upx_exe ]]; then echo "UPX-ERROR: please set \$upx_exe"; exit 1; fi
if [[ ! -f $upx_exe ]]; then echo "UPX-ERROR: file '$upx_exe' does not exist"; exit 1; fi
upx_exe=$(readlink -fn "$upx_exe") # make absolute
[[ -f $upx_exe ]] || exit 1
upx_run=()
# set emu and run_upx
emu=()
if [[ -n $upx_exe_runner ]]; then
# usage examples:
# export upx_exe_runner="qemu-x86_64 -cpu Nehalem"
# export upx_exe_runner="valgrind --leak-check=no --error-exitcode=1 --quiet"
# export upx_exe_runner="wine"
IFS=' ' read -r -a upx_run <<< "$upx_exe_runner" # split at spaces into array
IFS=' ' read -r -a emu <<< "$upx_exe_runner" # split at spaces into array
elif [[ -n $CMAKE_CROSSCOMPILING_EMULATOR ]]; then
IFS=';' read -r -a upx_run <<< "$CMAKE_CROSSCOMPILING_EMULATOR" # split at semicolons into array
IFS=';' read -r -a emu <<< "$CMAKE_CROSSCOMPILING_EMULATOR" # split at semicolons into array
fi
upx_run+=( "$upx_exe" )
echo "upx_run='${upx_run[*]}'"
run_upx=( "${emu[@]}" "$upx_exe" )
echo "run_upx='${run_upx[*]}'"
# upx_run sanity check
if ! "${upx_run[@]}" --version-short >/dev/null; then echo "UPX-ERROR: FATAL: upx --version-short FAILED"; exit 1; fi
if ! "${upx_run[@]}" -L >/dev/null 2>&1; then echo "UPX-ERROR: FATAL: upx -L FAILED"; exit 1; fi
if ! "${upx_run[@]}" --help >/dev/null; then echo "UPX-ERROR: FATAL: upx --help FAILED"; exit 1; fi
# run_upx sanity check
if ! "${run_upx[@]}" --version-short >/dev/null; then echo "UPX-ERROR: FATAL: upx --version-short FAILED"; exit 1; fi
if ! "${run_upx[@]}" -L >/dev/null 2>&1; then echo "UPX-ERROR: FATAL: upx -L FAILED"; exit 1; fi
if ! "${run_upx[@]}" --help >/dev/null; then echo "UPX-ERROR: FATAL: upx --help FAILED"; exit 1; fi
#***********************************************************************
# util
# util functions
#***********************************************************************
exit_code=0
@@ -160,18 +163,7 @@ create_files() {
chmod -R a-w z_dir_4
}
#***********************************************************************
#
#***********************************************************************
#set -x # debug
export UPX="--prefer-ucl --no-color --no-progress"
export UPX_DEBUG_DISABLE_GITREV_WARNING=1
export UPX_DEBUG_DOCTEST_VERBOSE=0
export NO_COLOR=1
testsuite_header() {
print_header() {
local x='==========='; x="$x$x$x$x$x$x$x"
echo -e "\n${x}\n${1}\n${x}\n"
}
@@ -186,206 +178,238 @@ leave_dir() {
cd ..
}
# create a tmpdir in current directory
#***********************************************************************
# setup
#***********************************************************************
#set -x # debug
export UPX="--prefer-ucl --no-color --no-progress"
export UPX_DEBUG_DISABLE_GITREV_WARNING=1
export UPX_DEBUG_DOCTEST_DISABLE=1 # already checked above
# get $test_file
if [[ -f $upx_test_file ]]; then
test_file="$(readlink -fn "$upx_test_file")"
else
for test_file in /usr/bin/gmake /usr/bin/make /usr/bin/env /bin/ls; do
if [[ -f $test_file ]]; then
test_file="$(readlink -fn "$test_file")"
break
fi
done
fi
ls -l "$test_file"
file "$test_file" || true
# create and enter a tmpdir in the current directory
tmpdir="$(mktemp -d tmp-upx-test-XXXXXX)"
cd "./$tmpdir" || exit 1
if [[ -f /bin/ls ]]; then
test_file="$(readlink -fn /bin/ls)"
else
test_file="$(readlink -fn /usr/bin/env)"
fi
#***********************************************************************
# default
#***********************************************************************
testsuite_header "default"
flags="-qq -1 --no-filter"
print_header "default"
flags="-qq -2 --no-filter"
mkdir default
cd default
create_files
enter_dir z_dir_1
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new || failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file && failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file && failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link && failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new || failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file && failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file && failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link && failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
assert_symlink_to_file z_symlink_file z_symlink_file_link
assert_symlink_to_dir z_symlink_dir
assert_symlink_dangling z_symlink_dangling
leave_dir
enter_dir z_dir_2
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new || failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file && failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file && failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link && failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new || failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file && failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file && failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link && failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
assert_symlink_to_file z_symlink_file z_symlink_file_link
assert_symlink_to_dir z_symlink_dir
assert_symlink_dangling z_symlink_dangling
leave_dir
enter_dir z_dir_3
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new && failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file && failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file && failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link && failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new && failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file && failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file && failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link && failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
assert_symlink_to_file z_symlink_file z_symlink_file_link
assert_symlink_to_dir z_symlink_dir
assert_symlink_dangling z_symlink_dangling
leave_dir
enter_dir z_dir_4
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new && failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file && failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file && failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link && failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new && failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file && failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file && failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link && failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
assert_symlink_to_file z_symlink_file z_symlink_file_link
assert_symlink_to_dir z_symlink_dir
assert_symlink_dangling z_symlink_dangling
leave_dir
cd ..
testsuite_header "force-overwrite"
flags="-qq -1 --no-filter --force-overwrite"
#***********************************************************************
# force-overwrite
#***********************************************************************
print_header "force-overwrite"
flags="-qq -2 --no-filter --force-overwrite"
mkdir force-overwrite
cd force-overwrite
create_files
enter_dir z_dir_1
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new || failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file || failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir || failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling || failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new || failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file || failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir || failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling || failed 18
assert_file z_symlink_file z_symlink_file_link
assert_file z_symlink_dir
assert_file z_symlink_dangling
leave_dir
enter_dir z_dir_2
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new || failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file || failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir || failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling || failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new || failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file || failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir || failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling || failed 18
assert_file z_symlink_file z_symlink_file_link
assert_file z_symlink_dir
assert_file z_symlink_dangling
leave_dir
enter_dir z_dir_3
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new && failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file || failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new && failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file || failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
assert_symlink_to_file z_symlink_file z_symlink_file_link
assert_symlink_to_dir z_symlink_dir
assert_symlink_dangling z_symlink_dangling
leave_dir
enter_dir z_dir_4
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new && failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file || failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new && failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file || failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
assert_symlink_to_file z_symlink_file z_symlink_file_link
assert_symlink_to_dir z_symlink_dir
assert_symlink_dangling z_symlink_dangling
leave_dir
cd ..
if [[ 1 == 1 ]]; then
testsuite_header "link"
flags="-qq -1 --no-filter --link"
#***********************************************************************
# link
#***********************************************************************
print_header "link"
flags="-qq -2 --no-filter --link"
mkdir link
cd link
create_files
enter_dir z_dir_1
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new || failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file || failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir || failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling || failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new || failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file || failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir || failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling || failed 18
assert_file z_symlink_file z_symlink_file_link
assert_file z_symlink_dir
assert_file z_symlink_dangling
leave_dir
enter_dir z_dir_2
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new || failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file && failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir || failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling || failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new || failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file && failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir || failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling || failed 18
assert_file z_symlink_file z_symlink_file_link
assert_file z_symlink_dir
assert_file z_symlink_dangling
leave_dir
enter_dir z_dir_3
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new && failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file || failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new && failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file || failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 || failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
assert_symlink_to_file z_symlink_file z_symlink_file_link
assert_symlink_to_dir z_symlink_dir
assert_symlink_dangling z_symlink_dangling
leave_dir
enter_dir z_dir_4
"${upx_run[@]}" $flags z_symlink_file && failed 10
"${upx_run[@]}" $flags "$test_file" -o z_file_new && failed 11
"${upx_run[@]}" $flags "$test_file" -o z_dir && failed 12
"${upx_run[@]}" $flags "$test_file" -o z_file && failed 13
"${upx_run[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${upx_run[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${upx_run[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
"${run_upx[@]}" $flags z_symlink_file && failed 10
"${run_upx[@]}" $flags "$test_file" -o z_file_new && failed 11
"${run_upx[@]}" $flags "$test_file" -o z_dir && failed 12
"${run_upx[@]}" $flags "$test_file" -o z_file && failed 13
"${run_upx[@]}" $flags "$test_file" -o z_file_link_1 && failed 14
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file || failed 15
"${run_upx[@]}" $flags "$test_file" -o z_symlink_file_link || failed 16
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dir && failed 17
"${run_upx[@]}" $flags "$test_file" -o z_symlink_dangling && failed 18
assert_symlink_to_file z_symlink_file z_symlink_file_link
assert_symlink_to_dir z_symlink_dir
assert_symlink_dangling z_symlink_dangling
leave_dir
cd ..
fi
#***********************************************************************
# done
#***********************************************************************
# clean up
cd ..
+147 -147
View File
@@ -46,164 +46,164 @@ b8c35fa2956da17ca505956e9f5017bb5f3a746322647e24ccb8ff28059cafa4 *powerpc-linux.
a0950546dc17fca9437219431d8ddb0249ce5b08e899e0c799a87ac982adee70 *powerpc64le-linux.elf/upx-3.95
"
expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\
afd8b4ec4379b013887e2dbb9cb07ed8e19942c6c5b72bd42fa20d2d43e35d52 *amd64-linux.elf/upx-3.91
320f5819d96f575ea4abad04c5a1bac53274a5d4704ff530ee778acfa261376c *amd64-linux.elf/upx-3.95
a8804bce00be8e2f9d3874c8fc884e69c19efc2f0fd07272e7d0749efd36f381 *amd64-win64.pe/upx-3.95.exe
80ff4e72220302cdccbdce753981d9a36596941ffcd9231317c5cb53f988ac72 *arm-linux.elf/upx-3.95
4e3db49fb086c4293b8a5809c166546d3a33f731b6ef5565cc0566d491f91cf2 *arm-wince.pe/upx-3.91.exe
71a27b41a763fab594ed953f3bf543489554b509bce488e7c5533e312c953e30 *arm64-linux.elf/upx-3.95
8a84b2161d83358c824de200ed480e9cb9cb7557138d710808ec44a19165c898 *armeb-linux.elf/upx-3.91
09b92d07b30b16321301aa2faf46576da2587c1334e7a842742fed36aadef5fa *armeb-linux.elf/upx-3.95
a418a4df498f55e86a7f2788c6e0fe0324d60a9032d4841569c7e4e2694410df *i386-dos32.djgpp2.coff/upx-3.91.exe
0aecdd97242054dcd390317e97a539a2e35f53a28a71d0148b703141d21345b0 *i386-dos32.djgpp2.coff/upx-3.95.exe
09a748c65d2a26975a5c829dd3d9f36e96607b1d9728d64068731815d8b82c36 *i386-linux.elf/upx-3.91
5189d860ddc1edc7e9b524aa09bd9677548d83efb788627cdbac27941f509262 *i386-linux.elf/upx-3.95
0b51fd861dd2b574bfed6ab3998b01333ae173fd76b7fd0d30187e75b09ab316 *i386-win32.pe/upx-3.91.exe
05568f9b47da0c8949080f66437f7a8d08c3c11f3ee5fb9e5d20a1324f2ab829 *i386-win32.pe/upx-3.95.exe
f6fb2f10a4f2b2d327c9868bb06241c3143771b0371ca564b8dfaeb180026298 *m68k-atari.tos/upx-3.91.ttp
196fb37ba72d7b0e081386a8110cf193678934ae1a0f16cd9d071b18c034a3f2 *mips-linux.elf/upx-3.95
e528a2c33b2ab882c6e18fab4662d612ffc71c0261c367fa9c0282b23ad53b3c *mipsel-linux.elf/upx-3.91
4b44c1b60f8eea0f40bcd2cdbc1e7217afee6d1cb054856e2791339aa7c31a78 *mipsel-linux.elf/upx-3.95
ae73bba4db8413a7a287b2a61dc9829ee3a66f9d93940ad7f08aa93b09770f4f *powerpc-linux.elf/upx-3.91
c7a8bba27dbd09c8f73ae2cd11d893187b15b298dd7d857cbd2c676670ff0a80 *powerpc-linux.elf/upx-3.95
6075bc28ac64f865d0e93cb16629c02331fb4abbea8da931288a60a6350cf635 *powerpc64le-linux.elf/upx-3.95
ef49d1c9617dbb3dc1bb36ab70df8a263cd816cc5e91ad28cc62f91ccc77afa7 *amd64-linux.elf/upx-3.91
253b1542cdcd5d554eb442e263eb44e400f00e63cfd4d0d727eacec5fcdbbd00 *amd64-linux.elf/upx-3.95
d96c42d14684e7248de5712310364eafa28b337695bc0d8c37f91d593b869250 *amd64-win64.pe/upx-3.95.exe
c1d3b9ec3157f068097f5deffddce4fc4d3d95602daa539992e0accff6af0de8 *arm-linux.elf/upx-3.95
9ca862c0c92d7e4068145024486bb85a6031bf06f9a37c6af543234e08e8ab36 *arm-wince.pe/upx-3.91.exe
9173b4e4b1ac0b92e63dc51168dbd41d38208520b0f4c17b91d22e584ad55ae4 *arm64-linux.elf/upx-3.95
8c6c5f1678fb74d2f65a1e6c28e3089a4b99b49939fabac3ca1f71183bc73ffa *armeb-linux.elf/upx-3.91
13caa682f323a0438a651f53768af9b7fb1208980d46d94c6fb984ecf4422599 *armeb-linux.elf/upx-3.95
55f30818e45da393628aa80c3518f3cf099666ae3af5014bded2196ea28ddaea *i386-dos32.djgpp2.coff/upx-3.91.exe
6b80b2be79ec38af3071fcaf8f0d0ec524e4523e7e52e2f10111862ab93ec793 *i386-dos32.djgpp2.coff/upx-3.95.exe
9bb71da401ae398ca42cde73afffe0c0db29fff24f22196c4116636ab6385170 *i386-linux.elf/upx-3.91
c2375a808f989c0f8290fcd9760db0033413323d8597deb796f182f8ac38afa2 *i386-linux.elf/upx-3.95
892695e1abdc0fbbd110ee30c317fde56947f4a8b3dfe413507ee7665f109986 *i386-win32.pe/upx-3.91.exe
f76ec227836388da3174007e2c5e27fb6cb397a83297872e78befb298a65796d *i386-win32.pe/upx-3.95.exe
8f7c5b3d67c78c117c02bec8b30ec5fca7baa79a35d250a4d981cb7137f8635d *m68k-atari.tos/upx-3.91.ttp
745ac3afd263f3a653165bd229e35c817a58c9b894a8d6fbd4e5aaf6c38c1264 *mips-linux.elf/upx-3.95
a11da76425bc3bb308de3c19e6df22f56bf12c95afcf96ee8c2d4aaeda07ac8a *mipsel-linux.elf/upx-3.91
76c458e8e9b94eceb60d8c51f602a5dec44b2617886ea0b5b7b8802c61d962e9 *mipsel-linux.elf/upx-3.95
cec277d9e6e0cbf551f697c1d52e5d29b48533efbe4269df0aafbc12731a93ed *powerpc-linux.elf/upx-3.91
92c6cec7bf40d1aa5a62a55fce95bb99d94c5b477edbea127ee0468471ddbdb3 *powerpc-linux.elf/upx-3.95
df2f12597c901196e8f10782e72fb4c294955f03a66cc4e8bf3c24414929f717 *powerpc64le-linux.elf/upx-3.95
"
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
f23ea1c7cea84e5edf136b2b3a0a8740e9d6bf3552ef1f460aa4508c2f27df6d *amd64-linux.elf/upx-3.91
e725f00542f605851cfe03aee2042fbccf04e0a01bbf5a4aaecd04ad59c80077 *amd64-linux.elf/upx-3.95
57af8f45cef9e5c9f63387a15b8cf1b96426ab8dc73c303bd4caaa95b093bf92 *amd64-win64.pe/upx-3.95.exe
a01ad023431e05287be77f160ea1a491489416e34de0d5ce194665e99f12e483 *arm-linux.elf/upx-3.95
a711a73bfd20ccc012507c3f07ed98ee025f55e441156efb5fdbaa1815640c63 *arm-wince.pe/upx-3.91.exe
4a341330a44845a10521d5acaa91eda3b7602367b1c77f6a5cf0731b528e478f *arm64-linux.elf/upx-3.95
d4a8653134f16f91b8fcdb0ed0d71ae3a31199af2ec42bf5dbe97e3344eceb74 *armeb-linux.elf/upx-3.91
a7da82c93f93a842a2876a54bba85cbb380eb7c79fc123ff30f31d99be3eca5c *armeb-linux.elf/upx-3.95
f1caf28b7500b14ca1405b31b8e18a226bf682c619982ea2712b5631cc61d0d8 *i386-dos32.djgpp2.coff/upx-3.91.exe
2c5ab68a6a23d460fab8def92a4cd32a54f084811584c1472c07dbe9429a503a *i386-dos32.djgpp2.coff/upx-3.95.exe
8f227074f8bc7682fd8e71bf96c60cb42fba7d3038acb8e500c6b075df50b732 *i386-linux.elf/upx-3.91
3df0f160a7d58a1f1368450c9db2d6911818e00b11ab819edbc56afeb84e3fb8 *i386-linux.elf/upx-3.95
31aaff6332ea65bb4c386de0bb75553cae77becd9a587dcbb51e38719c8a3b7a *i386-win32.pe/upx-3.91.exe
221a2c5c07d6c0a0127b3ce27d924fc36ee4b5af52fc4f47bc172e60ef0b244a *i386-win32.pe/upx-3.95.exe
9b280a1d2b82185339a4aea0c9338d9ae6c34d1a68da84a4a173d9010d092feb *m68k-atari.tos/upx-3.91.ttp
410335b935535fab6852d4b9677a24d016a9fb47d1b71d5a7967e99d1300ac15 *mips-linux.elf/upx-3.95
52746060c4c7971a4e786ba618896eebe9592f1b443c0d217d4e2cdb8b34fa8d *mipsel-linux.elf/upx-3.91
7367c89786c15b2d8305f41980b84addfddff69f2dae0f0572a88ffee6abe884 *mipsel-linux.elf/upx-3.95
4504c03dcc84be9f5ffc2279c4638c47a435a70c4748f1e25a738af33dc20720 *powerpc-linux.elf/upx-3.91
ef410a9cbd01c7c046f888417cb451aad8ebe4288aeb98319f689a030517d181 *powerpc-linux.elf/upx-3.95
da073cf9edf9d6efd0495d3f09101972541cdccd9df3c5a07df97e47ce1f77c3 *powerpc64le-linux.elf/upx-3.95
f7e51450a373cb49f88e3e17c268f4198429f7ad06bed57dda28161b5383196a *amd64-linux.elf/upx-3.91
15c57828824d18604519fd43349f0340ccebfddf246ab355f8f30253123132ea *amd64-linux.elf/upx-3.95
728b2feceda3cfdd849aef4402d5d4e61aa6fa6d56266e7730b148dc66f4a7b0 *amd64-win64.pe/upx-3.95.exe
188a3581ed2bac5fdfd50e08267e2e9cf4cf3ddbfc9f5ae15643298bda4bf11c *arm-linux.elf/upx-3.95
0711f0b8531de9659f099f43f2a883d628bee8de67f927e7137c19c6d23a30bd *arm-wince.pe/upx-3.91.exe
ae6fa69b1242bdfe808d64b7bbefddfe9c1c96302627ee8c65fa2851102fc502 *arm64-linux.elf/upx-3.95
7586b4029355eff2edf25141835ee2405ab9f936956e56420315c3d3fecc8bda *armeb-linux.elf/upx-3.91
e37875b1a91ef3c88bdba113649a061b72239dbfe77b77077c51254037a982b6 *armeb-linux.elf/upx-3.95
536e5a6bb18378f3eea81be12f218f4da60ea81eddf480434aaf418610e4e52d *i386-dos32.djgpp2.coff/upx-3.91.exe
386f3037b26b8b2ce49a527028d738956e7ef649b29a0ef15e32acef4a3b291a *i386-dos32.djgpp2.coff/upx-3.95.exe
5761d8e12b01163c2bf378bef813df9a621da08c4508773db992a1cce067c70c *i386-linux.elf/upx-3.91
8afc2b549e2f78987641045697afaac0378b48e84c3e946334c9e4f1a7e693fa *i386-linux.elf/upx-3.95
1cc6663f3d9e847f9fec39a52c8efe38b39a66074c0ad77a880a84dde7c68d3f *i386-win32.pe/upx-3.91.exe
edf158ec6064e9b11b677a73239a70e414fa8c4f3b8950f74e81514ccb28ef4f *i386-win32.pe/upx-3.95.exe
faa36b6601743dcc5eaedb57187a893006652b6c68acecff179ce2cd123e6209 *m68k-atari.tos/upx-3.91.ttp
6c76928b5914b5c2e072bf2f90a2c95049cc41aec6b98b1f0b3c4f84df069f02 *mips-linux.elf/upx-3.95
029c2a47f1f613c538d2f39674167489a9d1bbbb6649a06d51d2b5ea983b4924 *mipsel-linux.elf/upx-3.91
4d837edcaf344505ad1a3721ec8e5db35ddaa273a747201e460b946c0a89d6ea *mipsel-linux.elf/upx-3.95
0e24a9e58939f7aacd3482db24e04bdac406a658dbb8d5e65d71d76d455e5aa5 *powerpc-linux.elf/upx-3.91
04bd4885f37c77a34b39e76cca2fd363f794ed1611093d7fffe1ee19920ce1dd *powerpc-linux.elf/upx-3.95
3b6be5bff0e435a8dbd8529562912c58dafdcb9694d75564238f3d086048abd2 *powerpc64le-linux.elf/upx-3.95
"
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
1777841250f6b34fe7b75e2931b5154918abea5e7c47047f523ab15ed59e0658 *amd64-linux.elf/upx-3.91
9fefd378d92d1e370c450dd8d3f826248594ca7234aa6fccc83d20aa37694cdd *amd64-linux.elf/upx-3.95
b5a9eee9a774712899148a339cb8326e51a120355cb0dbb5a59f07ef4a149562 *amd64-win64.pe/upx-3.95.exe
e56b71096f08c30448f560ccd60e5bffcb1f14d5b84948005d9d707600e50311 *arm-linux.elf/upx-3.95
9e1c47059e892f73a4fa118a6b435d455613e4ff4b4ab3fb432dd45adcc06809 *arm-wince.pe/upx-3.91.exe
615437bd5f987fae39502999fc1fd6a8857cdbffa4001cba1b485a8ddd0dbd14 *arm64-linux.elf/upx-3.95
37dec03e64c74da1e194fb129231c5e87fb3398f4a4f1d269de9bc2487068a6a *armeb-linux.elf/upx-3.91
e45e09fca25c28cbd458c636ac1d060bc08bab37a6571880b6f32a6e26ecaff8 *armeb-linux.elf/upx-3.95
b941187968c86db8a01f106098996f2c0cd227da66003856c19e8b24438f446a *i386-dos32.djgpp2.coff/upx-3.91.exe
8194a6a0de66019d8aa7f49504ec7303f155a2dbcf29489300428fb1bb5d1b4a *i386-dos32.djgpp2.coff/upx-3.95.exe
4380ef64efadd605bc0908ac2d56ee7597e665850d2291f40f5acd978f4ecbf8 *i386-linux.elf/upx-3.91
f9bacd9bf3a1f84455f0c647f615827606fba5608996cbae65c07a06b7b9ef42 *i386-linux.elf/upx-3.95
71b7880ee783da6182fa1dcc5cc8662eb15b82c2e96ea827f2dca3c83d4040c2 *i386-win32.pe/upx-3.91.exe
629624e02dfa11c295e22989a09d5938c415ab2d32b7b4fdb009d3cc50c63933 *i386-win32.pe/upx-3.95.exe
5215eb51b80d7d0f428da49c3249eb2b5e937f8b3487f2e59eb31e7f1b9155ee *m68k-atari.tos/upx-3.91.ttp
e393bb54cb21d93d1b4ade1048204e4a9ed1bb0ca0517e54f42fddf8dc09a89d *mips-linux.elf/upx-3.95
7fd4a440ffa128a455b6e4a7864f75953a16fb593b5dc1b890c1ed111e80b021 *mipsel-linux.elf/upx-3.91
24357e6c79022919f181286d6ae5a8316078f30c01bbbb83169cd2794c7204ec *mipsel-linux.elf/upx-3.95
e37070c89617e9d155507662ee98d9f97a7c506317fdbe22797769a5738e75c5 *powerpc-linux.elf/upx-3.91
e2af43ea9cdc9f2e75de4c9a03ace0fabac9dcbfb54ea1b57031f2c860318663 *powerpc-linux.elf/upx-3.95
d7cf1e60f962094ce5b28e3e920ed4ba0b8b84daee896043f915ab036ed774c7 *powerpc64le-linux.elf/upx-3.95
715de64e0911c959d0ea208db13bf23a5e635e97e73feb9e04ac9d32117e6a3f *amd64-linux.elf/upx-3.91
da805c93ffea03da2f0c0dbb1b313cf0d88ef2c0cb0ad77b0be792210106cd6c *amd64-linux.elf/upx-3.95
213e6d3c80b4d741e8c78da915d32c1a2b74072d31e86ec46a10ac2535cf8f6f *amd64-win64.pe/upx-3.95.exe
3a66e868147347208935c042517b9f0e2e30d2dbb5c004ec8df6a9ab1e42ecd5 *arm-linux.elf/upx-3.95
8d295980b1e6a8240bf75b86a9b8e4561424cbabeab01246f51e553d84b40839 *arm-wince.pe/upx-3.91.exe
194947a439c1348570e45343e404c409be3f10feb70fdd87d9bca0addc772c44 *arm64-linux.elf/upx-3.95
a01384f43803428e0bfc5f8152304eb8618ef862e4e996a4a4fa4dd9c4576833 *armeb-linux.elf/upx-3.91
f2fdba359d52bb82fbab093176a3fbf37b9cb13e8d297523ed57051c3bd401e3 *armeb-linux.elf/upx-3.95
582030394a570f92be2d31b3862ab7fb0a6f08982c793a4d41c1471d2cabb939 *i386-dos32.djgpp2.coff/upx-3.91.exe
f60dc2f332f58b7fa08f551f8c33d645d71d9ee79e2a719130d10ea4091373ef *i386-dos32.djgpp2.coff/upx-3.95.exe
13887e5466a7d0fc2652aedcef44e33e6ee9b8d6f0ac21dbc4ec90fcc0613bfa *i386-linux.elf/upx-3.91
636759f884399ff05e8493a759f60ea52cd4640eb5e9760f12fc25fbf730b1ed *i386-linux.elf/upx-3.95
c4a5d27ce7d8f0f326e49489223eda188a9be61971a88758a559efb9f854611a *i386-win32.pe/upx-3.91.exe
4ca9a3dd0e0ec38cc1aa3720d9c666f86df4fbe9dcb87ef0dad56d0a47dc327a *i386-win32.pe/upx-3.95.exe
f34a020e6325d213052d9f09c775c4d292c34c51380b1ab1b22c6663645167f0 *m68k-atari.tos/upx-3.91.ttp
3006af1262a29173c46340f1ee4526fba41145f7476841d5bf6b499aa6dea0fd *mips-linux.elf/upx-3.95
6af81d3c7cb6f1388925fe2d78ea96313d91d5e17249268739de4d56857f27bd *mipsel-linux.elf/upx-3.91
9d3849cd0037ef550703c574e0ccb3032b0d27217ec02c90a0ad8592d2a229f1 *mipsel-linux.elf/upx-3.95
704b6eb2033cf3eab30cbc53c35fc85bf0cb17f904528792de33967a1406091d *powerpc-linux.elf/upx-3.91
b89b2f3b250ddd156cb857717c86a0c0325a26dd084717c64f3022277ad02be4 *powerpc-linux.elf/upx-3.95
d52f201ab041fa64a4ee4234bd0e443e883e402bb93ced9e22554bd3ef3cc9ab *powerpc64le-linux.elf/upx-3.95
"
expected_sha256sums__t140_compress_lzma_2_no_filter="\
0744ab571ee5d8ca76d0be11d474611771e417a99598b051f1d8a3a791a91533 *amd64-linux.elf/upx-3.91
90660071ddb63165bf77f9175d3f9862d8626c085d932af2c2d66459a73cf409 *amd64-linux.elf/upx-3.95
9781094badb6013e8fd29caad2d7f369e79f60d5a5f66b547c2260e98b1c7d92 *amd64-win64.pe/upx-3.95.exe
9224db1973129ab654bfa9154689e2f1e99c7e5118dad9f143fa7b3e49abcb82 *arm-linux.elf/upx-3.95
961d61207958be48cccb37e5c0a111d85ff3e5d8fb6d5e0ca92e8681320a6f4b *arm-wince.pe/upx-3.91.exe
f044f8755d43dfd753327b6a5d1e69c8b73095fc12b3208be720ca2286a258c0 *arm64-linux.elf/upx-3.95
85e460829c5bc3bad8a7a7c82b2dfcd64594980b443972de1e52d15f644225cb *armeb-linux.elf/upx-3.91
4829edc4b97d2011e789272a4b8ad254d7df573a476bae5a71832e9aecbf0e7b *armeb-linux.elf/upx-3.95
902a9f177818e680042911e77d17de3f4bd3846fac210581ccaa7643dd1426f2 *i386-dos32.djgpp2.coff/upx-3.91.exe
665d3c278bb9a8e0cb28cffdf6a17c3c920052a2bf7d05b74413186b043ede28 *i386-dos32.djgpp2.coff/upx-3.95.exe
5ffc9d683e2e2050a7f4d6e03332de3754bb48efaf800e3dcd96678fcff6d15a *i386-linux.elf/upx-3.91
fbc487cf2343a2b277e5a1d469ea34b6b70ce609b2966ce6a372e004ae70a125 *i386-linux.elf/upx-3.95
9c35de99b53620cb09617061e7d01c31ff7a60f4bda7c4560b294ef18300c7f6 *i386-win32.pe/upx-3.91.exe
9430239c9d12e7d796fe2fa2de10bef21985841a0adf2357a4ca6b08cf08f989 *i386-win32.pe/upx-3.95.exe
e3d224960f13424eb4083a547eefd907e3384cfd2ebe6e8d6a8bd56181f5339b *m68k-atari.tos/upx-3.91.ttp
fa9c411562d1d580944274e744d5d63c2268b334ef754fef89a666938c8601ee *mips-linux.elf/upx-3.95
dd71cec3b4c14c462f58f26077193c8ec2a302aa37b4ae59a6c92ce2d493cccc *mipsel-linux.elf/upx-3.91
29c04c30ee8b3c2b4353d92b3e9ad5327af3d9f4439f2a93a08801bb456b7a2a *mipsel-linux.elf/upx-3.95
2c109762689cf8691dcc6ad952f27863dd0fc79bfa74883702dc3a4601784aa5 *powerpc-linux.elf/upx-3.91
2ad4441667860519efbd0cd60744ceadcce73e3019acd80e593917ce76b3cbf1 *powerpc-linux.elf/upx-3.95
970fe74533bd7b7c3bd7ddb300f982cde77227f2b1a69155a8dfb30366574d76 *powerpc64le-linux.elf/upx-3.95
af8536d70ecb8c0680c1c9dc45ef60dcb13fab99f0e4644d9f86216a9cf003e2 *amd64-linux.elf/upx-3.91
004a705f4981a19f35767b33bdb70b942717a701ad8635bd56ba33e347c6ed69 *amd64-linux.elf/upx-3.95
cf07c202497ab38417ec3ccb65cbb0eb9b87f6c6df40d7dc4b44616282c8e0f8 *amd64-win64.pe/upx-3.95.exe
da153c1747e0e242cc8b90c04362f67caa0aa638562bc12fcc7fe08ebb1b4fcb *arm-linux.elf/upx-3.95
9755110ebc951c9767e376155d9c6fee9789b009ce82ae47276664f5c832557e *arm-wince.pe/upx-3.91.exe
bb9e92b577ace19da295032c294063d724655cf5b97d014053c3fb05ce478884 *arm64-linux.elf/upx-3.95
a3c639403fd7b2f035315773c1aa3f68cc0532cf5cd075defd34fa44c4bbbb7a *armeb-linux.elf/upx-3.91
3f9604a69a945d86b93f2182ee82f754881331c7ef566d0cd4dc36d7acfa1aa0 *armeb-linux.elf/upx-3.95
e6518528d60861e37cb8429376628a7f3d1d5fc90f0933facd70b4e9e0b50709 *i386-dos32.djgpp2.coff/upx-3.91.exe
53280a22c34ee1733007ccf858e1f5416c0f7043a4361799087e19a4b2a7eaf4 *i386-dos32.djgpp2.coff/upx-3.95.exe
a51ce8993b3577fc2ee45b52174aaadc66c2f90ff53a0148ed096a65d99d24a2 *i386-linux.elf/upx-3.91
d018260f04d1efc2b46c8b7ff5b132358e58cb062c158b08a7179fbb561b0e48 *i386-linux.elf/upx-3.95
121e4acc3fbad4954cb2d2b957d229b042beaf4b68749c4f85ebfc60fcc80d43 *i386-win32.pe/upx-3.91.exe
d604523130da29af35705d9008098ae8b4bb9e7d4743357674470252dd68b8d3 *i386-win32.pe/upx-3.95.exe
4d26f0be2b6b6c4802515a7f0dfd97998c6d23e696ae6c0393c9ac0893885a9b *m68k-atari.tos/upx-3.91.ttp
4d3b0c7b4dabb5a7a193a0a2899f086f5dfc555106188131389678ecc137378a *mips-linux.elf/upx-3.95
be2e9fb66c087f37b58f203b406b618526296dd8c9c53e73bb622740f1e377ba *mipsel-linux.elf/upx-3.91
9da821fac44f787875727cf001ca33ed87e02c5fe477f0ebb965c5e0eb62c26c *mipsel-linux.elf/upx-3.95
98d7c0214663ae47f59244a90aabbb72a798a4ad0c74ce79d448013f5cad6893 *powerpc-linux.elf/upx-3.91
c58266817c4e38982c66e4b75e0002c6e7a51710864f930987b8670ee121ee0b *powerpc-linux.elf/upx-3.95
7fecab59271c9d4596bd79978e112a5fea72e33bd7c53c1985d187009d807724 *powerpc64le-linux.elf/upx-3.95
"
expected_sha256sums__t150_compress_ucl_2_all_filters="\
62e5a3fe8a9e2f7934194904ebfebd445e194b17fe3171c07d22017b3aa09419 *amd64-linux.elf/upx-3.91
351c778baa6826faf9661c7c5b8e8c0dd49a8aa5899f0107b2f5f7a4e3a69f3e *amd64-linux.elf/upx-3.95
3b943c943fe91b948e159c5687db6ff1b22acae0552d1cbf50a181750873f8d4 *amd64-win64.pe/upx-3.95.exe
cda2ba38e20f75623cea46cd75f604cd5466edd63cb9eafca64ea0fe765c69eb *arm-linux.elf/upx-3.95
dea0d13ec7b3f1208988d25c30e3bcd60bc013186a88cc82c998e86f320cad99 *arm-wince.pe/upx-3.91.exe
b748ca51f52811112aeea21aba9d0e59b67512d98b1e01f71c22bf4fe755304d *arm64-linux.elf/upx-3.95
57686ad3f48c7d950f866f534232693ecc3489f322bb8f1eaf78fbcbbc3bba4d *armeb-linux.elf/upx-3.91
c50c2f015491e40a8b687ae91827cf502e46e47dff21382b19c8e626388e5fe3 *armeb-linux.elf/upx-3.95
d597d829ef4beca9759c51b135f3cfd1e17c17c1d7cda04e9cb453e76742c9dc *i386-dos32.djgpp2.coff/upx-3.91.exe
ac0cc4beea08af6a39ec037d0b2a4e77d0951776e0f9ac945e8b0033b227cc30 *i386-dos32.djgpp2.coff/upx-3.95.exe
9204e3fabb4cca148a0d545f9ae3d7facd199edc570d4ce9b9794c4c7d8f46e3 *i386-linux.elf/upx-3.91
7953f12209c9838707898a73a79962764c01d7106c9c743e7437d996042811b5 *i386-linux.elf/upx-3.95
2e6dbebbae2997ae689c616221f7eecf72117d148783025363b99580df79fdad *i386-win32.pe/upx-3.91.exe
8d549e43950072ce5d271ecad25331e29a9886c4f034f150260af20f8a57feb9 *i386-win32.pe/upx-3.95.exe
d4eabc9adebd7edd40483f34ceb4081157c7542cdcea0f6b4b4dec640084fc6f *m68k-atari.tos/upx-3.91.ttp
d03d5702382fd391c61736a3dda350737590c05de07837aa3ac0eb23ff9e6d7a *mips-linux.elf/upx-3.95
431e8d80da56f51339a914c5bc4cf00242a7a8afbc4a77837888c42fb4888c3b *mipsel-linux.elf/upx-3.91
8a9722f82e89c2d83437503765b9e0798854b960839d3fa57e6ccd2f581ed352 *mipsel-linux.elf/upx-3.95
2bcf9a0b0245e807a4728f84ca134ab30371a91a2d247ed63ea80fbf4f6a44be *powerpc-linux.elf/upx-3.91
37b3f5e0a7973ca5143dea5fc7d116d759f662780ee0b809357554b21fd4bbb0 *powerpc-linux.elf/upx-3.95
04c9a8dfb2bc25327894045cc5b5f8325fb7fe90d77473ad08c5491c58b28988 *powerpc64le-linux.elf/upx-3.95
977380191b474f5a7fa78e8015a279bfaa77626bc56d83185fec8761531b3029 *amd64-linux.elf/upx-3.91
4f94c9bee7a2f7deed245dc767c215654a41373be978123c3f1ef9074454c59d *amd64-linux.elf/upx-3.95
00aa338efc865f720a901afb1c19064cf137abb71d361be9b19192b0ff8a9479 *amd64-win64.pe/upx-3.95.exe
c1908a58fcc23a9a964f2cd5f76f805a7cc9ca39480d129c6bdb8db30033840b *arm-linux.elf/upx-3.95
78ffa99aa69e2f66f864dce88e787e3b1c0c056009e0f863986d65aabd186107 *arm-wince.pe/upx-3.91.exe
245c6bb22ae2b39671503244329f1e4498277b06d600447ad81c7d41ebc872d6 *arm64-linux.elf/upx-3.95
9e359728cdb9bf6ea21a864b2c9da56809eda27d6b88828b85ab815311bf77b6 *armeb-linux.elf/upx-3.91
86edb5959b5cabad270d7c77e750bc710424b92cfb2ebaeedf3ba403382f4e93 *armeb-linux.elf/upx-3.95
b65db2766ffdd45657a07edd57426c55acce2a73a1e3559ab43903ae77574131 *i386-dos32.djgpp2.coff/upx-3.91.exe
e827d64700b14e8c19de2882e66d0df0fca4cda0255ae41a66810e4c86583a93 *i386-dos32.djgpp2.coff/upx-3.95.exe
c95a7ad9a5015abb1b8a163afe46b4f1529c70ca4ef9353cfb6e5c7eef60245c *i386-linux.elf/upx-3.91
21ef65f5c756f216c0f9db9475a7514e10b8e003c30bc22416ec8156cba65252 *i386-linux.elf/upx-3.95
6db34f6cdc626c4857fc7b188910562909e571eed3be2116448e244ca82eaa64 *i386-win32.pe/upx-3.91.exe
68a08dd3995681af594c66df4b94559e5900f0a09fcf822e3fc2522c3133ad69 *i386-win32.pe/upx-3.95.exe
1546ce426b3cfe38bdea18fafadee409253d5d2b452aae5476e073b29e17bb58 *m68k-atari.tos/upx-3.91.ttp
6ecc64d1fb9fb2a675980ce939b0b8142e802e7218b8ea45f2bb82205ed9242e *mips-linux.elf/upx-3.95
eb3c90f8f775e70cb2cc187b7e55d66a3bb28fa760e14a17353acd1130fd122a *mipsel-linux.elf/upx-3.91
b47964dbe65e9975d6bddfbfdd321a5e6c96b6eba79b30d0f94ec4323b796991 *mipsel-linux.elf/upx-3.95
c32a2deaa707eafaed36a4ab8fb26bb8d8c63a9743b19ad207e305553d14c7fe *powerpc-linux.elf/upx-3.91
c4dbfbd0f5021d50f1addc68273f20b49204bf26ae8c8896a0aacc7d2c5a2d47 *powerpc-linux.elf/upx-3.95
bb96ea8a29500893b729dad4afe90b09186641c32c42a70a3d2380a771f896d9 *powerpc64le-linux.elf/upx-3.95
"
expected_sha256sums__t160_compress_all_methods_1_no_filter="\
0c2dedc98ac535a39c4166db713ed6feb02680869d23cc734c40e4d4ee36c6b4 *amd64-linux.elf/upx-3.91
dc87386b6afd2a36ab6ca67139399f9de6b3d29edb1741b523236e596c625043 *amd64-linux.elf/upx-3.95
b75527ed6cfd8fa9b48a68e021545833790bc2817c2155cc5eeb97cb9d43cd5c *amd64-win64.pe/upx-3.95.exe
56416fe7d9100ebb3dddee598ce0844d1abfc6f006178b5fa05fc6d1d15e9a8c *arm-linux.elf/upx-3.95
3ea0a4cafa457a1bf86ddf659a57c5737c4fa79b4a0d161df1c55c7ff0fa5ad5 *arm-wince.pe/upx-3.91.exe
0fe74c52794dc63e8e92590413eea6aceb73a9cb9f34bed3eae9a8fc34aa5ef2 *arm64-linux.elf/upx-3.95
5eb71685d564fdc4e99d939e5b2d58d8a8341288bcde5eac06f465c68a61a40a *armeb-linux.elf/upx-3.91
08516cb6655f58965c4dea7c9227aac78e3bcffd8113062dd72118e074b3380e *armeb-linux.elf/upx-3.95
2a98332d1e82db93f7025dcf792d0e8924caf38fa9b4c22963841ab5e86d22ce *i386-dos32.djgpp2.coff/upx-3.91.exe
6939a695082de59e8993886c8213aaff1ca2ed1d7687404dd242796e27275a42 *i386-dos32.djgpp2.coff/upx-3.95.exe
0a866faf423e2c134f26ec705916b7ded0cdcb4c11fcb4e3b1ff75291d0b9d71 *i386-linux.elf/upx-3.91
523d569a0682728fa84312db03930d290b7f6ef71eb2222fd81ebeb4bcc16ffa *i386-linux.elf/upx-3.95
e1f8df77bb4591b1a68f7c110ed36ad778fef240ed52f9d3e511318a2d091e66 *i386-win32.pe/upx-3.91.exe
265f4c7045bae686897dd9981575a5ebeb99ab28233d66e9a8164789359f00d8 *i386-win32.pe/upx-3.95.exe
55732af6251cc6aa7bbb9c52415424a8cc4074288004a6064d9311a2ee01fddb *m68k-atari.tos/upx-3.91.ttp
138f3f2798f0cac9235011f14910ef6b079b908746d570a2ec631bb62d0f5917 *mips-linux.elf/upx-3.95
4f740937696b2d86a4bd89ec61d52338db4c739c71a8dde5cc6ff67f675304c6 *mipsel-linux.elf/upx-3.91
18b3320462c479420723407cc3aea2b07911a4c725b0c334e1d9585a51c86bf0 *mipsel-linux.elf/upx-3.95
c8f8974ebc401286910894d6751b0a13cd908d09b51e186e49e0c309ace3d282 *powerpc-linux.elf/upx-3.91
ad08eb6c4339cd8ec63c12dd8551ef10851dcce66be27d0f9fbb251003ef0f4b *powerpc-linux.elf/upx-3.95
fb0fa7d60c542653e7d3448f2aa69e7c2ed5aaebf3845d5aa5f10c5bff2ee279 *powerpc64le-linux.elf/upx-3.95
de00c3bcb56d78c3fd1d1e633b3f64b884b3611abc305b9e79f4f14385178418 *amd64-linux.elf/upx-3.91
eb5aea4d780711dd59e3f86d34a49f16d3669acc6569292bf9ea445d406c5c80 *amd64-linux.elf/upx-3.95
2fae12ccc55eeac6c05ff2c6b27539c66816080647283ac2e1b22576242b6bb5 *amd64-win64.pe/upx-3.95.exe
14120b8348172a08cd7651184941820ed1c69b7a8d859e375390eee529f5c94e *arm-linux.elf/upx-3.95
a6690508c1acdaa07ce97feec0f330182c24206d8e9133949d2a42fccc1cbf27 *arm-wince.pe/upx-3.91.exe
4f30adcd3d047fad15344bf6cf3cf4f91cfbacbb121af889df8634fa4c888247 *arm64-linux.elf/upx-3.95
f85f0a70b024a050999d476420b9db88206e340b2ffff3781c491b538ae03e37 *armeb-linux.elf/upx-3.91
e1b2dc75427212dc268c6921aa2059adf5709b21f230432a4725b16e1c64b238 *armeb-linux.elf/upx-3.95
fcf64cfce9e9762e03740d2bf9e2e86d873ade1b6f4a68eb07625f516426810d *i386-dos32.djgpp2.coff/upx-3.91.exe
9188a6f911b79fb8629880836b2f5787eb4d938872ba4f1a64c93e70cde9f428 *i386-dos32.djgpp2.coff/upx-3.95.exe
8369ff8112aeb55a1684ce0ec16e13e6bc524b734557b49b292f9aae60edccb6 *i386-linux.elf/upx-3.91
c4e16cc1a64db618d9038ea9ba6032b7fe5aac05c0d7731b91373094a6a0f6e4 *i386-linux.elf/upx-3.95
b21cf7756542b3bab5f4a59d4036cd3176e297dceb744dec96ac365be6568dcd *i386-win32.pe/upx-3.91.exe
b1bc0d360918d51ca7b7f32f5083845e4566c7fa7a425d0451f4b10f227d1eac *i386-win32.pe/upx-3.95.exe
c40af5d1ba0531abb92587cbcbe604d4f562b685d6e7bbb40ec4d879fddf1267 *m68k-atari.tos/upx-3.91.ttp
0865d2f1d65e2693d801b3c28d64910a009707be65598772df655c640469a4e5 *mips-linux.elf/upx-3.95
4cf108686c2419c6d82eecb2473a6d0ca0a0b47096cc01ea2b55113f84762cc7 *mipsel-linux.elf/upx-3.91
0a90a99e0ebb1e9c86e0bdf6a3eec6ca116e65b235ba1ee9029694b84cadc438 *mipsel-linux.elf/upx-3.95
4d8f85d254b1fd87bebe2fd732afd6214c98b869cda17ff0c4c566358446038a *powerpc-linux.elf/upx-3.91
bbc6179756637db10b636d7383226cb1d685866e8e9191069107725365b42f38 *powerpc-linux.elf/upx-3.95
52d7db1d6d6611d4a064c036b57044fd93d4c5762452be07188ee2ff6b1e42bc *powerpc64le-linux.elf/upx-3.95
"
expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
3a5098207aa95f40fd8a62a6a79f416837f69bf0a1ac729264fbee72d1fae0f6 *amd64-linux.elf/upx-3.91
4748b6f0bb08e1417dc62cff1c049eb2ee993717be4f9f5359fc7454e736def2 *amd64-linux.elf/upx-3.95
9fc18a2ec177ff3b48b5d299828e3275be1585db6c205ec5652e3d13f4d91eda *amd64-win64.pe/upx-3.95.exe
d90b9a2f71107025885e289633ef9e7942f494a7f8aa0e0597e79664b09ad034 *arm-linux.elf/upx-3.95
f03a3f07787765e499ad5a60f7c576598f433ba9a1f4d7158b0923f510929142 *arm-wince.pe/upx-3.91.exe
d01b573be7bb79257c3e0637f38a7fe8940e9302c7391fbc4a75664219a5522c *arm64-linux.elf/upx-3.95
085600cfffbe1d9e0c1bc25a3e48bbf3130b023b49ccbca001db27b4881e6246 *armeb-linux.elf/upx-3.91
a7923c6b78b9d3d58ee4f1bc42861476a57bb9935af47d2a15e048efb642f5d4 *armeb-linux.elf/upx-3.95
0970d5a8ee6c819e11b2bd889c7ee908403af2adf3542f7670ed92eb51090485 *i386-dos32.djgpp2.coff/upx-3.91.exe
e2d6b3c8de85bdc7b0262f64c1a16c9d41695a92e6f374cc9f12e87ca78fd956 *i386-dos32.djgpp2.coff/upx-3.95.exe
9e28e20b115e4a671b3f4006934b94fd59fcd48dc36311a479dda6bc1ccebe07 *i386-linux.elf/upx-3.91
910401db763c9a0bcb8e4d1b9cf1ee476c034b94b54a9350bcd303a5487085ef *i386-linux.elf/upx-3.95
0a413298c461facb93048106cfd261d72192443e6d2d313f2b48dbdf6537b22a *i386-win32.pe/upx-3.91.exe
684a0e0309d062e3fb7a1fabbdb7b2be45d3bde6a9a030f8a45fcc369a066efa *i386-win32.pe/upx-3.95.exe
3ea4fe59d58b92fe0b0e41662c15c40130d72ed30425871d572a8c06c3c27bbf *m68k-atari.tos/upx-3.91.ttp
e098036f912764f9dcef7377d17fe15b4f21439303306f9c84838d35fe655530 *mips-linux.elf/upx-3.95
df4106be954d5233644a3d761a9f899132f052741d16e1d793ae481aafd51caa *mipsel-linux.elf/upx-3.91
4c87f94f926aedbe17bf2d7ef72873506bbae75b8abf51a6775eb4b2e0ac0d96 *mipsel-linux.elf/upx-3.95
4c6b2ca8ed7bbe6b9705f02a26781e6d93ab2a1011c119283130a738df5e47eb *powerpc-linux.elf/upx-3.91
ccecc0acef4c430a8871704f93280a17bff518267499f05ba89a5290ba654a89 *powerpc-linux.elf/upx-3.95
86123a78b0ff91321acbc837874034c099443f77ff62848e338bb61c0888e1c6 *powerpc64le-linux.elf/upx-3.95
ee887f19ee6a5d5f0a0ce7116a41570e106c10bc0bb25acf7eb3ee254c1ed560 *amd64-linux.elf/upx-3.91
9bd019e6442b219825f19082a20e4e73c49b24a4dee39e9e2cf0fc907ecdb46f *amd64-linux.elf/upx-3.95
382fe4b3e4f575322b746d7d45e4553ba3cf47cb4351b9900508fb52a00118ad *amd64-win64.pe/upx-3.95.exe
ae71103c2e105099ab345a648abf109b9aec3039137c90af30710dd4a4b51736 *arm-linux.elf/upx-3.95
9150f49be3fcb03a5f23b209e5db443c9b96fa4d8e20d3730195f9eafff5d8e8 *arm-wince.pe/upx-3.91.exe
100d9cee849b7996cbde2dc82df766e5104ae030055ae9b286c53b60e9e51405 *arm64-linux.elf/upx-3.95
43ded21db5b7b8355bc371e39cd3b1be05e91635e3cb6d64f9a8aea16127e157 *armeb-linux.elf/upx-3.91
b0ac3a36871630af80bb9b6ba94604b3ebc1fe05fdb6d095a7c461916fb3d231 *armeb-linux.elf/upx-3.95
36b6a947567386e325f1d3ff84a55ecbd37687e3264cfb0a57aa5e3be5ff85f9 *i386-dos32.djgpp2.coff/upx-3.91.exe
ad02fcac751563d49cb0711d818231c1030bad9ef2b12fd54e60e2bc6510e9d6 *i386-dos32.djgpp2.coff/upx-3.95.exe
d1b4e2c81a0baf4ad273dd96722783e9219e69049a78d536757f39761a7cfe8b *i386-linux.elf/upx-3.91
6e509d556ccd2af102d43924bd4eb1e9bed9d557e44387769032df4ede525f0d *i386-linux.elf/upx-3.95
2138186fb26cc7983ec4a4ead290573f2e8226fea4a0b9b6d668d86fb21d1573 *i386-win32.pe/upx-3.91.exe
5f286eaf28bab252a0f4f069b7b88910b9ce62327c4d15837b91ce65e4f9030e *i386-win32.pe/upx-3.95.exe
0ab25c2cd8cf53a31323464080991344479998f45fd9b215caba003f96e9e11c *m68k-atari.tos/upx-3.91.ttp
ba14b6b4e846d29bd4211fbcdb2a641f55f8a5700806af64c52182736b757f46 *mips-linux.elf/upx-3.95
40c23e16bfe68ec0a59f9651ac747db1e81f07deabc4c22a732e40e03e2b1100 *mipsel-linux.elf/upx-3.91
7d353d8381c3401c3c9765fa6091c634791ae9b7338ca5b769f63c38f8f418e7 *mipsel-linux.elf/upx-3.95
b43bd16efb19081fe0945948231486cdd1b1157d193ab7cbbd470594f46c57ca *powerpc-linux.elf/upx-3.91
7a8a24fa57d17f99b11133a0822a5e499681d09695525b80f8c61d90d06c4ac8 *powerpc-linux.elf/upx-3.95
0339ffc1d99f5b5ad12e8492b6a9dc707f705a120494a6bc453fb8617808d10a *powerpc64le-linux.elf/upx-3.95
"
########## end .sha256sums.recreate
+32 -32
View File
@@ -29,23 +29,25 @@ if [[ -z $upx_exe ]]; then echo "UPX-ERROR: please set \$upx_exe"; exit 1; fi
if [[ ! -f $upx_exe ]]; then echo "UPX-ERROR: file '$upx_exe' does not exist"; exit 1; fi
upx_exe=$(readlink -fn "$upx_exe") # make absolute
[[ -f $upx_exe ]] || exit 1
upx_run=()
# set emu and run_upx
emu=()
if [[ -n $upx_exe_runner ]]; then
# usage examples:
# export upx_exe_runner="qemu-x86_64 -cpu Nehalem"
# export upx_exe_runner="valgrind --leak-check=no --error-exitcode=1 --quiet"
# export upx_exe_runner="wine"
IFS=' ' read -r -a upx_run <<< "$upx_exe_runner" # split at spaces into array
IFS=' ' read -r -a emu <<< "$upx_exe_runner" # split at spaces into array
elif [[ -n $CMAKE_CROSSCOMPILING_EMULATOR ]]; then
IFS=';' read -r -a upx_run <<< "$CMAKE_CROSSCOMPILING_EMULATOR" # split at semicolons into array
IFS=';' read -r -a emu <<< "$CMAKE_CROSSCOMPILING_EMULATOR" # split at semicolons into array
fi
upx_run+=( "$upx_exe" )
echo "upx_run='${upx_run[*]}'"
run_upx=( "${emu[@]}" "$upx_exe" )
echo "run_upx='${run_upx[*]}'"
# upx_run sanity check, part1
if ! "${upx_run[@]}" --version-short >/dev/null; then echo "UPX-ERROR: FATAL: upx --version-short FAILED"; exit 1; fi
if ! "${upx_run[@]}" -L >/dev/null 2>&1; then echo "UPX-ERROR: FATAL: upx -L FAILED"; exit 1; fi
if ! "${upx_run[@]}" --help >/dev/null; then echo "UPX-ERROR: FATAL: upx --help FAILED"; exit 1; fi
# run_upx sanity check
if ! "${run_upx[@]}" --version-short >/dev/null; then echo "UPX-ERROR: FATAL: upx --version-short FAILED"; exit 1; fi
if ! "${run_upx[@]}" -L >/dev/null 2>&1; then echo "UPX-ERROR: FATAL: upx -L FAILED"; exit 1; fi
if ! "${run_upx[@]}" --help >/dev/null; then echo "UPX-ERROR: FATAL: upx --help FAILED"; exit 1; fi
# upx_testsuite_SRCDIR
if [[ -z $upx_testsuite_SRCDIR ]]; then
@@ -74,19 +76,30 @@ fi
mkdir -p "$upx_testsuite_BUILDDIR" || exit 1
upx_testsuite_BUILDDIR=$(readlink -fn "$upx_testsuite_BUILDDIR") # make absolute
[[ -d $upx_testsuite_BUILDDIR ]] || exit 1
cd / && cd "$upx_testsuite_BUILDDIR" || exit 1
: > ./.mfxnobackup
# upx_run sanity check, part2
if ! "${upx_run[@]}" --version-short >/dev/null; then
# run_upx sanity check after "cd"
if ! "${run_upx[@]}" --version-short >/dev/null; then
echo "UPX-ERROR: FATAL: upx --version-short FAILED"
echo "please make sure that \$upx_exe contains ABSOLUTE file paths and can be run from any directory"
echo "INFO: upx_run='${upx_run[*]}'"
echo "INFO: run_upx='${run_upx[*]}'"
exit 1
fi
if ! "${upx_run[@]}" -L >/dev/null 2>&1; then echo "UPX-ERROR: FATAL: upx -L FAILED"; exit 1; fi
if ! "${upx_run[@]}" --help >/dev/null; then echo "UPX-ERROR: FATAL: upx --help FAILED"; exit 1; fi
#***********************************************************************
# setup
#***********************************************************************
#set -x # debug
exit_code=0
num_errors=0
all_errors=
export UPX="--prefer-ucl --no-color --no-progress"
export UPX_DEBUG_DISABLE_GITREV_WARNING=1
export UPX_DEBUG_DOCTEST_DISABLE=1 # already checked above
case $UPX_TESTSUITE_LEVEL in
[0-8]) ;;
@@ -97,19 +110,6 @@ if [[ $UPX_TESTSUITE_LEVEL == 0 ]]; then
exit 0
fi
#***********************************************************************
# setup
#***********************************************************************
#set -x # debug
exit_code=0
num_errors=0
all_errors=
export UPX="--prefer-ucl --no-color --no-progress"
export UPX_DEBUG_DISABLE_GITREV_WARNING=1
export UPX_DEBUG_DOCTEST_VERBOSE=0
rm -rf ./testsuite_1
mkdir testsuite_1 || exit 1
cd testsuite_1 || exit 1
@@ -121,11 +121,11 @@ cd testsuite_1 || exit 1
run_upx() {
local ec=0
if [[ $UPX_TESTSUITE_VERBOSE == 1 ]]; then
echo "LOG: '${upx_run[*]}' $*"
echo "LOG: '${run_upx[*]}' $*"
fi
"${upx_run[@]}" "$@" || ec=$?
"${run_upx[@]}" "$@" || ec=$?
if [[ $ec != 0 ]]; then
echo "FATAL: '${upx_run[*]}' $*"
echo "FATAL: '${run_upx[*]}' $*"
echo " (exit code was $ec)"
exit 42
fi
@@ -319,7 +319,7 @@ ls -l "$upx_exe"
if command -v file >/dev/null; then
file "$upx_exe" || true
fi
echo "upx_run='${upx_run[*]}'"
echo "run_upx='${run_upx[*]}'"
echo "upx_testsuite_SRCDIR='$upx_testsuite_SRCDIR'"
echo "upx_testsuite_BUILDDIR='$upx_testsuite_BUILDDIR'"
echo ".sha256sums.{expected,current} counts:"
+5 -8
View File
@@ -3,8 +3,8 @@
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
#
# NOTE: this Makefile is deprecated - please directly use
# the top-level CMake build instead.
# NOTE: this Makefile is intended for developers - please use
# the top-level Makefile instead
ifndef srcdir
srcdir := $(patsubst %/,%,$(dir $(lastword $(MAKEFILE_LIST))))
@@ -14,7 +14,7 @@ ifndef top_srcdir
endif
#***********************************************************************
# redirect to top-level CMake build
# redirect to top-level Makefile
#***********************************************************************
# NOTE that the top-level Makefile .DEFAULT_GOAL is build/release
@@ -31,11 +31,7 @@ build/debug+test build/release+test build/all+test: PHONY; $(MAKE) -C $(top_srcd
debug release all: PHONY; $(MAKE) -C $(top_srcdir) $@
debug+test release+test all+test: PHONY; $(MAKE) -C $(top_srcdir) $@
test:: build/all+test PHONY
# OLD target names [deprecated]
$(top_srcdir)/build/debug: build/debug PHONY
$(top_srcdir)/build/release: build/release PHONY
test: $$(patsubst %+test,%,$$(.DEFAULT_GOAL))+test PHONY
#***********************************************************************
# make run-testsuite
@@ -60,6 +56,7 @@ endif
ifneq ($(wildcard $(upx_testsuite_SRCDIR)/files/packed/.),)
ifneq ($(wildcard $(top_srcdir)/misc/testsuite/upx_testsuite_1.sh),)
run-testsuite: run-testsuite-release PHONY
run-testsuite-all: run-testsuite-debug run-testsuite-release PHONY
run-testsuite-%: export upx_testsuite_SRCDIR := $(upx_testsuite_SRCDIR)
run-testsuite-debug: export upx_testsuite_BUILDDIR := ./tmp-upx-testsuite-debug
run-testsuite-debug: export upx_exe := $(top_srcdir)/build/debug/upx
+28 -24
View File
@@ -69,6 +69,8 @@ struct LE16;
struct LE32;
struct LE64;
namespace bele_detail {
// Note:
// void is explicitly allowed (but there is no automatic pointer conversion because of template!)
// char is explicitly allowed
@@ -94,10 +96,12 @@ using enable_if_xe32 = std::enable_if_t<is_xe32_type<T>, T>;
template <class T>
using enable_if_xe64 = std::enable_if_t<is_xe64_type<T>, T>;
#define REQUIRE_XE16 template <class XE16, class = enable_if_xe16<XE16> >
#define REQUIRE_XE24 template <class XE24, class = enable_if_xe24<XE24> >
#define REQUIRE_XE32 template <class XE32, class = enable_if_xe32<XE32> >
#define REQUIRE_XE64 template <class XE64, class = enable_if_xe64<XE64> >
} // namespace bele_detail
#define REQUIRE_XE16 template <class XE16, class = bele_detail::enable_if_xe16<XE16> >
#define REQUIRE_XE24 template <class XE24, class = bele_detail::enable_if_xe24<XE24> >
#define REQUIRE_XE32 template <class XE32, class = bele_detail::enable_if_xe32<XE32> >
#define REQUIRE_XE64 template <class XE64, class = bele_detail::enable_if_xe64<XE64> >
#endif // permissive version
@@ -785,6 +789,26 @@ inline unsigned UPX_MIN(const LE32 &a, unsigned b) { return UPX_MIN(unsigned(a),
// misc support
**************************************************************************/
// for use with qsort()
extern "C" {
int __acc_cdecl_qsort be16_compare(const void *, const void *);
int __acc_cdecl_qsort be24_compare(const void *, const void *);
int __acc_cdecl_qsort be32_compare(const void *, const void *);
int __acc_cdecl_qsort be64_compare(const void *, const void *);
int __acc_cdecl_qsort le16_compare(const void *, const void *);
int __acc_cdecl_qsort le24_compare(const void *, const void *);
int __acc_cdecl_qsort le32_compare(const void *, const void *);
int __acc_cdecl_qsort le64_compare(const void *, const void *);
int __acc_cdecl_qsort be16_compare_signed(const void *, const void *);
int __acc_cdecl_qsort be24_compare_signed(const void *, const void *);
int __acc_cdecl_qsort be32_compare_signed(const void *, const void *);
int __acc_cdecl_qsort be64_compare_signed(const void *, const void *);
int __acc_cdecl_qsort le16_compare_signed(const void *, const void *);
int __acc_cdecl_qsort le24_compare_signed(const void *, const void *);
int __acc_cdecl_qsort le32_compare_signed(const void *, const void *);
int __acc_cdecl_qsort le64_compare_signed(const void *, const void *);
} // extern "C"
// <type_traits> upx_is_integral; see conf.h
#define TT_UPX_IS_INTEGRAL(T) \
template <> \
@@ -826,26 +850,6 @@ typedef LE64 NE64;
#define ne64_compare_signed le64_compare_signed
#endif
// for use with qsort()
extern "C" {
int __acc_cdecl_qsort be16_compare(const void *, const void *);
int __acc_cdecl_qsort be24_compare(const void *, const void *);
int __acc_cdecl_qsort be32_compare(const void *, const void *);
int __acc_cdecl_qsort be64_compare(const void *, const void *);
int __acc_cdecl_qsort le16_compare(const void *, const void *);
int __acc_cdecl_qsort le24_compare(const void *, const void *);
int __acc_cdecl_qsort le32_compare(const void *, const void *);
int __acc_cdecl_qsort le64_compare(const void *, const void *);
int __acc_cdecl_qsort be16_compare_signed(const void *, const void *);
int __acc_cdecl_qsort be24_compare_signed(const void *, const void *);
int __acc_cdecl_qsort be32_compare_signed(const void *, const void *);
int __acc_cdecl_qsort be64_compare_signed(const void *, const void *);
int __acc_cdecl_qsort le16_compare_signed(const void *, const void *);
int __acc_cdecl_qsort le24_compare_signed(const void *, const void *);
int __acc_cdecl_qsort le32_compare_signed(const void *, const void *);
int __acc_cdecl_qsort le64_compare_signed(const void *, const void *);
} // extern "C"
/*************************************************************************
// Provide namespaces and classes to abstract endianness policies.
//
+4 -4
View File
@@ -92,9 +92,9 @@ private:
#define C const noexcept override
#endif
struct BEPolicy
struct BEPolicy final
#if defined(BELE_RTP)
final : public AbstractPolicy
: public AbstractPolicy
#endif
{
explicit inline BEPolicy() noexcept {}
@@ -151,9 +151,9 @@ private:
UPX_CXX_DISABLE_NEW_DELETE(BEPolicy)
};
struct LEPolicy
struct LEPolicy final
#if defined(BELE_RTP)
final : public AbstractPolicy
: public AbstractPolicy
#endif
{
explicit inline LEPolicy() noexcept {}
+91 -33
View File
@@ -24,6 +24,9 @@
<markus@oberhumer.com>
*/
// doctest checks, and various tests to catch toolchain/qemu/sanitizer/valgrind/wine/etc
// problems; grown historically
#include "../util/system_headers.h"
#include <cmath> // std::isinf std::isnan
#include "../conf.h"
@@ -53,7 +56,7 @@ int upx_doctest_check(int argc, char **argv) {
// default for debug builds: do show the [doctest] summary
minimal = false;
#endif
const char *e = getenv("UPX_DEBUG_DOCTEST_VERBOSE");
const char *e = upx_getenv("UPX_DEBUG_DOCTEST_VERBOSE");
if (e && e[0]) {
if (strcmp(e, "0") == 0) {
minimal = true;
@@ -75,7 +78,7 @@ int upx_doctest_check(int argc, char **argv) {
context.setOption("dt-duration", true);
if (success)
context.setOption("dt-success", true);
// this requires that main_get_options() understands "--dt-XXX" options
// this requires that main_get_options() understands/ignores doctest "--dt-XXX" options
if (argc > 0 && argv != nullptr)
context.applyCommandLine(argc, argv);
int r = context.run();
@@ -326,6 +329,13 @@ struct TestIntegerWrap {
// basic exception handling checks to early catch toolchain/qemu/wine/etc problems
//
struct TestDestructor {
explicit TestDestructor(int *pp, int vv) noexcept : p(pp), v(vv) {}
virtual noinline ~TestDestructor() noexcept { *p = (*p << 2) + v; }
int *p;
int v;
};
static noinline void throwSomeValue(int x) may_throw {
if (x < 0)
throw int(x);
@@ -333,12 +343,19 @@ static noinline void throwSomeValue(int x) may_throw {
throw size_t(x);
}
static noinline void check_exceptions_2(void (*func)(int), int *x) may_throw {
TestDestructor d(x, *x);
func(*x);
}
static noinline void check_basic_cxx_exception_handling(void (*func)(int)) noexcept {
bool cxx_exception_handling_works = false;
int x = 1;
try {
func(42);
TestDestructor d(&x, 3);
check_exceptions_2(func, &x);
} catch (const size_t &e) {
if (e == 42)
if (e == 1 && x == 23)
cxx_exception_handling_works = true;
} catch (...) {
}
@@ -376,21 +393,21 @@ struct TestFloat {
static noinline Float add_div_x(Int a, Int b) { return Float(a + b) / Float(X); }
static noinline Float sub_div_x(Int a, Int b) { return Float(a - b) / Float(X); }
static noinline void check() noexcept {
assert_noexcept(div(2 * X, Float(X)) == Float(2));
assert_noexcept(add_div(X, X, Float(X)) == Float(2));
assert_noexcept(add_div_x(X, X) == Float(2));
assert_noexcept(sub_div(3 * X, X, Float(X)) == Float(2));
assert_noexcept(sub_div_x(3 * X, X) == Float(2));
// extra debugging; floating point edge cases cause portability problems in practice
if (is_envvar_true("UPX_DEBUG_TEST_FLOAT_DIVISION_BY_ZERO")) {
#if defined(__clang__) && defined(__FAST_MATH__) && defined(__INTEL_LLVM_COMPILER)
static const char envvar[] = "UPX_DEBUG_TEST_FLOAT_DIVISION_BY_ZERO";
if (is_envvar_true(envvar)) {
#if defined(__FAST_MATH__)
// warning: comparison with NaN always evaluates to false in fast floating point modes
fprintf(stderr, "upx: WARNING: ignoring UPX_DEBUG_TEST_FLOAT_DIVISION_BY_ZERO\n");
#elif defined(__clang__) && (__clang_major__ < 9) && defined(__SANITIZE_UNDEFINED_BEHAVIOR__)
// @COMPILER_BUG @CLANG_BUG
fprintf(stderr, "upx: WARNING: ignoring UPX_DEBUG_TEST_FLOAT_DIVISION_BY_ZERO\n");
fprintf(stderr, "upx: WARNING: ignoring %s: __FAST_MATH__\n", envvar);
#else
assert_noexcept(std::isnan(div(0, Float(0))));
assert_noexcept(std::isinf(div(1, Float(0))));
assert_noexcept(std::isinf(div(Int(-1), Float(0))));
#endif
}
}
@@ -422,6 +439,8 @@ static noinline void check_basic_floating_point(void) noexcept {
#include "../util/miniacc.h"
void upx_compiler_sanity_check(void) noexcept {
check_basic_floating_point();
if (is_envvar_true("UPX_DEBUG_DOCTEST_DISABLE", "UPX_DEBUG_DISABLE_DOCTEST")) {
// If UPX_DEBUG_DOCTEST_DISABLE is set then we don't want to throw any
// exceptions in order to improve debugging experience.
@@ -430,7 +449,18 @@ void upx_compiler_sanity_check(void) noexcept {
check_basic_cxx_exception_handling(throwSomeValue);
}
check_basic_floating_point();
// check_basic_decltype()
{
auto a = +0;
constexpr auto b = -0;
const auto &c = -1;
COMPILE_TIME_ASSERT((std::is_same<int, decltype(a)>::value))
COMPILE_TIME_ASSERT((std::is_same<const int, decltype(b)>::value))
COMPILE_TIME_ASSERT((std::is_same<const int &, decltype(c)>::value))
UNUSED(a);
UNUSED(b);
UNUSED(c);
}
#define ACC_WANT_ACC_CHK_CH 1
#undef ACCCHK_ASSERT
@@ -474,13 +504,25 @@ void upx_compiler_sanity_check(void) noexcept {
COMPILE_TIME_ASSERT_ALIGNED1(upx_charptr_unit_type)
COMPILE_TIME_ASSERT(sizeof(*((charptr) nullptr)) == 1)
COMPILE_TIME_ASSERT(sizeof(UPX_VERSION_STRING4) == 4 + 1)
assert_noexcept(strlen(UPX_VERSION_STRING4) == 4);
COMPILE_TIME_ASSERT(sizeof(UPX_VERSION_YEAR) == 4 + 1)
assert_noexcept(strlen(UPX_VERSION_YEAR) == 4);
assert_noexcept(memcmp(UPX_VERSION_DATE_ISO, UPX_VERSION_YEAR, 4) == 0);
assert_noexcept(
memcmp(&UPX_VERSION_DATE[sizeof(UPX_VERSION_DATE) - 1 - 4], UPX_VERSION_YEAR, 4) == 0);
// check UPX_VERSION_xxx
{
using upx::compile_time::mem_eq;
using upx::compile_time::string_len;
static_assert(string_len(UPX_VERSION_STRING4) == 4);
static_assert(string_len(UPX_VERSION_YEAR) == 4);
static_assert(string_len(UPX_VERSION_DATE_ISO) == 10);
static_assert(string_len(UPX_VERSION_DATE) == 12 || string_len(UPX_VERSION_DATE) == 13);
static_assert(mem_eq(UPX_VERSION_STRING4, UPX_VERSION_STRING, 3));
static_assert(mem_eq(UPX_VERSION_YEAR, UPX_VERSION_DATE_ISO, 4));
static_assert(mem_eq(UPX_VERSION_YEAR, &UPX_VERSION_DATE[sizeof(UPX_VERSION_DATE) - 5], 4));
char buf[16];
constexpr long long v = UPX_VERSION_HEX;
upx_safe_snprintf(buf, sizeof(buf), "%lld.%lld.%lld", (v >> 16), (v >> 8) & 255, v & 255);
assert_noexcept(strcmp(buf, UPX_VERSION_STRING) == 0);
upx_safe_snprintf(buf, sizeof(buf), "%lld.%lld%lld", (v >> 16), (v >> 8) & 255, v & 255);
assert_noexcept(strcmp(buf, UPX_VERSION_STRING4) == 0);
}
if (gitrev[0]) {
size_t revlen = strlen(gitrev);
if (strncmp(gitrev, "ERROR", 5) == 0) {
@@ -646,7 +688,7 @@ void upx_compiler_sanity_check(void) noexcept {
**************************************************************************/
TEST_CASE("assert_noexcept") {
// just to make sure that our own assert() macros don't generate any warnings
// just to make sure that our own assert() macros do not trigger any compiler warnings
byte dummy = 0;
byte *ptr1 = &dummy;
const byte *const ptr2 = &dummy;
@@ -668,10 +710,13 @@ TEST_CASE("acc_vget") {
CHECK_EQ(acc_vget_long(1, -1), 1);
CHECK_EQ(acc_vget_acc_int64l_t(2, 1), 2);
CHECK_EQ(acc_vget_acc_hvoid_p(nullptr, 0), nullptr);
if (acc_vget_int(1, 0) > 0)
return;
assert_noexcept(false);
}
TEST_CASE("ptr_invalidate_and_poison") {
int *ip = nullptr;
int *ip = nullptr; // initialized
ptr_invalidate_and_poison(ip);
assert(ip != nullptr);
(void) ip;
@@ -681,6 +726,11 @@ TEST_CASE("ptr_invalidate_and_poison") {
(void) dp;
}
TEST_CASE("upx_getenv") {
CHECK_EQ(upx_getenv(nullptr), nullptr);
CHECK_EQ(upx_getenv(""), nullptr);
}
TEST_CASE("working -fno-strict-aliasing") {
bool ok;
long v = 0;
@@ -751,11 +801,13 @@ TEST_CASE("libc snprintf") {
CHECK_EQ(strcmp(buf, "0X1A 0x1b 0x1c "), 0);
}
#if 0
TEST_CASE("libc qsort") {
// runtime check that libc qsort() never compares identical objects
// UPDATE: while only poor implementations of qsort() would actually do
// this, it is probably allowed by the standard; so skip this test case
// UPDATE: while only poor implementations of qsort() would actually do this
// it is probably allowed by the standard, so skip this test by default
if (!is_envvar_true("UPX_DEBUG_TEST_LIBC_QSORT"))
return;
struct Elem {
upx_uint16_t id;
upx_uint16_t value;
@@ -765,35 +817,41 @@ TEST_CASE("libc qsort") {
assert_noexcept(a->id != b->id); // check not IDENTICAL
return a->value < b->value ? -1 : (a->value == b->value ? 0 : 1);
}
static bool check_sort(upx_sort_func_t sort, Elem *e, size_t n) {
upx_uint32_t x = 5381 + n + ((upx_uintptr_t) e & 0xff);
static noinline bool check_sort(upx_sort_func_t sort, Elem *e, size_t n, bool is_stable) {
upx_uint32_t x = 5381 + (upx_rand() & 255);
for (size_t i = 0; i < n; i++) {
e[i].id = (upx_uint16_t) i;
x = x * 33 + 1 + (i & 255);
e[i].value = (upx_uint16_t) x;
e[i].value = (upx_uint16_t) ((x >> 4) & 15);
}
sort(e, n, sizeof(Elem), Elem::compare);
for (size_t i = 1; i < n; i++)
// verify
for (size_t i = 1; i < n; i++) {
if very_unlikely (e[i - 1].value > e[i].value)
return false;
if (is_stable)
if very_unlikely (e[i - 1].value == e[i].value && e[i - 1].id >= e[i].id)
return false;
}
return true;
}
};
constexpr size_t N = 4096;
Elem e[N];
for (size_t n = 0; n <= N; n = 2 * n + 1) {
// CHECK(Elem::check_sort(qsort, e, n)); // libc qsort()
CHECK(Elem::check_sort(upx_gnomesort, e, n));
CHECK(Elem::check_sort(upx_shellsort_memswap, e, n));
CHECK(Elem::check_sort(upx_shellsort_memcpy, e, n));
// system sort functions
CHECK(Elem::check_sort(::qsort, e, n, false)); // libc qsort()
#if UPX_CONFIG_USE_STABLE_SORT
upx_sort_func_t wrap_stable_sort = [](void *aa, size_t nn, size_t, upx_compare_func_t cc) {
upx_std_stable_sort<sizeof(Elem)>(aa, nn, cc);
};
CHECK(Elem::check_sort(wrap_stable_sort, e, n));
CHECK(Elem::check_sort(wrap_stable_sort, e, n, true)); // std::stable_sort()
#endif
// simple UPX sort functions
CHECK(Elem::check_sort(upx_gnomesort, e, n, true));
CHECK(Elem::check_sort(upx_shellsort_memswap, e, n, false));
CHECK(Elem::check_sort(upx_shellsort_memcpy, e, n, false));
}
}
#endif
/* vim:set ts=4 sw=4 et: */
+90 -25
View File
@@ -27,24 +27,8 @@
// lots of tests (and probably quite a number of redundant tests)
// modern compilers will optimize away much of this code
#if 0 // TODO later
// libc++ hardenining
#if defined(__clang__) && defined(__clang_major__) && (__clang_major__ + 0 >= 18)
#if DEBUG
#define _LIBCPP_HARDENING_MODE _LIBCPP_HARDENING_MODE_DEBUG
#else
#define _LIBCPP_HARDENING_MODE _LIBCPP_HARDENING_MODE_EXTENSIVE
#endif
#endif
#if defined(__clang__) && defined(__clang_major__) && (__clang_major__ + 0 < 18)
#if DEBUG
#define _LIBCPP_ENABLE_ASSERTIONS 1
#endif
#endif
#endif // TODO later
#include "../util/system_headers.h"
#include <vector>
#include <vector> // std::vector
#include "../conf.h"
/*************************************************************************
@@ -121,11 +105,17 @@ ACC_COMPILE_TIME_ASSERT_HEADER(!compile_time::string_gt("abc", "abz"))
ACC_COMPILE_TIME_ASSERT_HEADER(!compile_time::string_ge("abc", "abz"))
ACC_COMPILE_TIME_ASSERT_HEADER(compile_time::string_le("abc", "abz"))
ACC_COMPILE_TIME_ASSERT_HEADER(compile_time::mem_eq((const char *) nullptr, nullptr, 0))
ACC_COMPILE_TIME_ASSERT_HEADER(compile_time::mem_eq((const byte *) nullptr, nullptr, 0))
ACC_COMPILE_TIME_ASSERT_HEADER(compile_time::mem_eq("", "", 0))
ACC_COMPILE_TIME_ASSERT_HEADER(compile_time::mem_eq("abc", "abc", 3))
ACC_COMPILE_TIME_ASSERT_HEADER(!compile_time::mem_eq("abc", "abz", 3))
/*************************************************************************
//
**************************************************************************/
TEST_CASE("libc++") {
TEST_CASE("std::vector") {
constexpr size_t N = 16;
std::vector<int> v(N);
CHECK(v.end() - v.begin() == N);
@@ -260,28 +250,93 @@ struct Z2_X2 : public X2 {
// util
**************************************************************************/
#if WITH_THREADS
TEST_CASE("upx::ptr_std_atomic_cast") {
// pointer-size
CHECK_EQ(upx::ptr_std_atomic_cast((void **) nullptr), nullptr);
CHECK_EQ(upx::ptr_std_atomic_cast((uintptr_t *) nullptr), nullptr);
CHECK_EQ(upx::ptr_std_atomic_cast((upx_uintptr_t *) nullptr), nullptr);
#if 1
// more fundamental types
CHECK_EQ(upx::ptr_std_atomic_cast((char *) nullptr), nullptr);
CHECK_EQ(upx::ptr_std_atomic_cast((short *) nullptr), nullptr);
CHECK_EQ(upx::ptr_std_atomic_cast((int *) nullptr), nullptr);
CHECK_EQ(upx::ptr_std_atomic_cast((long *) nullptr), nullptr);
CHECK_EQ(upx::ptr_std_atomic_cast((ptrdiff_t *) nullptr), nullptr);
CHECK_EQ(upx::ptr_std_atomic_cast((size_t *) nullptr), nullptr);
CHECK_EQ(upx::ptr_std_atomic_cast((upx_int8_t *) nullptr), nullptr);
CHECK_EQ(upx::ptr_std_atomic_cast((upx_int16_t *) nullptr), nullptr);
CHECK_EQ(upx::ptr_std_atomic_cast((upx_int32_t *) nullptr), nullptr);
#endif
}
#endif
TEST_CASE("upx::atomic_exchange") {
{
upx_uintptr_t x = (upx_uintptr_t) 0 - 1;
upx_uintptr_t y = upx::atomic_exchange(&x, (upx_uintptr_t) 2);
CHECK_EQ(x, 2);
CHECK_EQ(y, (upx_uintptr_t) 0 - 1);
UNUSED(y);
}
{
const int buf[2] = {101, 202};
const int *ptr_array[2] = {&buf[0], &buf[1]};
assert_noexcept(*ptr_array[0] == 101 && *ptr_array[1] == 202);
const int *p = upx::atomic_exchange(&ptr_array[0], ptr_array[1]);
CHECK_EQ(p, buf + 0);
assert_noexcept(*ptr_array[0] == 202 && *ptr_array[1] == 202);
p = upx::atomic_exchange(&ptr_array[1], p);
CHECK_EQ(p, buf + 1);
assert_noexcept(*ptr_array[0] == 202 && *ptr_array[1] == 101);
UNUSED(p);
}
}
TEST_CASE("upx::ObjectDeleter 1") {
LE16 *o = nullptr; // object
LE32 *a = nullptr; // array
LE64 *m = nullptr; // malloc
{
const upx::ObjectDeleter<LE16 **> o_deleter{&o, 1};
auto o_deleter = upx::ObjectDeleter(&o, 1);
o = new LE16;
assert(o != nullptr);
const upx::ArrayDeleter<LE32 **> a_deleter{&a, 1};
auto a_deleter = upx::ArrayDeleter(&a, 1);
a = New(LE32, 1);
assert(a != nullptr);
auto m_deleter = upx::MallocDeleter(&m, 1);
m = (LE64 *) ::malloc(sizeof(LE64));
assert(m != nullptr);
}
assert(o == nullptr);
assert(a == nullptr);
assert(m == nullptr);
// test "const" versions
{
const auto o_deleter = upx::ObjectDeleter(&o, 1);
o = new LE16;
assert(o != nullptr);
const auto a_deleter = upx::ArrayDeleter(&a, 1);
a = New(LE32, 1);
assert(a != nullptr);
const auto m_deleter = upx::MallocDeleter(&m, 1);
m = (LE64 *) ::malloc(sizeof(LE64));
assert(m != nullptr);
}
assert(o == nullptr);
assert(a == nullptr);
assert(m == nullptr);
}
TEST_CASE("upx::ObjectDeleter 2") {
constexpr size_t N = 2;
BE16 *o[N]; // multiple objects
BE32 *a[N]; // multiple arrays
BE64 *m[N]; // multiple mallocs
{
upx::ObjectDeleter<BE16 **> o_deleter{o, 0};
upx::ArrayDeleter<BE32 **> a_deleter{a, 0};
auto o_deleter = upx::ObjectDeleter(o, 0);
auto a_deleter = upx::ArrayDeleter(a, 0);
auto m_deleter = upx::MallocDeleter(m, 0);
for (size_t i = 0; i < N; i++) {
o[i] = new BE16;
assert(o[i] != nullptr);
@@ -289,16 +344,20 @@ TEST_CASE("upx::ObjectDeleter 2") {
a[i] = New(BE32, 1 + i);
assert(a[i] != nullptr);
a_deleter.count += 1;
m[i] = (BE64 *) ::malloc(sizeof(BE64));
assert(m[i] != nullptr);
m_deleter.count += 1;
}
}
for (size_t i = 0; i < N; i++) {
assert(o[i] == nullptr);
assert(a[i] == nullptr);
assert(m[i] == nullptr);
}
}
TEST_CASE("upx::ptr_static_cast") {
// check that we don't trigger any -Wcast-align warnings
// check that we do not trigger any -Wcast-align warnings
using upx::ptr_static_cast;
void *vp = nullptr;
byte *bp = nullptr;
@@ -361,7 +420,7 @@ TEST_CASE("upx::noncopyable") {
namespace {
template <class T>
struct TestTriBool {
static void test(bool expect_true) {
static noinline void test(bool expect_true) {
static_assert(std::is_class<T>::value);
static_assert(std::is_nothrow_default_constructible<T>::value);
static_assert(std::is_nothrow_destructible<T>::value);
@@ -369,8 +428,12 @@ struct TestTriBool {
static_assert(std::is_trivially_copyable<T>::value);
static_assert(sizeof(typename T::value_type) == sizeof(typename T::underlying_type));
static_assert(alignof(typename T::value_type) == alignof(typename T::underlying_type));
#if (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC) && defined(__MINT__)
#if defined(__m68k__) && defined(__atarist__) && defined(__GNUC__)
// broken compiler or broken ABI
#elif defined(__i386__) && defined(__GNUC__) && (__GNUC__ == 7) && !defined(__clang__)
static_assert(sizeof(T) == sizeof(typename T::underlying_type));
// i386: "long long" enum align bug/ABI problem on older compilers
static_assert(alignof(T) <= alignof(typename T::underlying_type));
#else
static_assert(sizeof(T) == sizeof(typename T::underlying_type));
static_assert(alignof(T) == alignof(typename T::underlying_type));
@@ -445,9 +508,11 @@ struct TestTriBool {
assert(a);
assert(bool(a));
assert((a ? true : false));
assert((!a ? false : true));
} else {
assert(!a);
assert(!bool(a));
assert((a ? false : true));
assert((!a ? true : false));
}
assert(!a.isStrictFalse());
+2 -2
View File
@@ -49,13 +49,13 @@
#pragma GCC diagnostic ignored "-Wshadow"
#endif
#if !defined(UPX_DOCTEST_CONFIG_MULTITHREADING) && !(WITH_THREADS)
#if !(WITH_THREADS) && !defined(UPX_DOCTEST_CONFIG_MULTITHREADING)
#ifndef DOCTEST_CONFIG_NO_MULTITHREADING
#define DOCTEST_CONFIG_NO_MULTITHREADING
#endif
#endif
#if defined(__clang__) && defined(__FAST_MATH__) && defined(__INTEL_LLVM_COMPILER)
#if defined(__FAST_MATH__) && defined(__clang__) && (__clang_major__ + 0 >= 6)
// warning: comparison with NaN always evaluates to false in fast floating point modes
#pragma clang diagnostic ignored "-Wtautological-constant-compare"
#endif
+16 -16
View File
@@ -37,9 +37,6 @@
#if (ACC_CC_MSC)
#pragma warning(disable : 4456) // -Wno-shadow
#endif
#if (ACC_CC_MSC && (_MSC_VER < 1900))
#pragma warning(disable : 4127) // warning C4127: conditional expression is constant
#endif
void lzma_compress_config_t::reset() noexcept {
pos_bits.reset();
@@ -206,15 +203,12 @@ error:
// compress - cruft because of pseudo-COM layer
**************************************************************************/
// ensure proper nullptr usage
// TODO later: examine why we need this in the first place
#undef NULL
// NOLINTBEGIN(clang-analyzer-optin.cplusplus.*)
#define NULL nullptr
// NOLINTEND(clang-analyzer-optin.cplusplus.*)
#if defined(__GNUC__)
#undef __null
#define __null nullptr
#if (ACC_CC_CLANG >= 0x080000)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wzero-as-null-pointer-constant"
#elif (ACC_CC_GNUC >= 0x040700)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
#endif
#undef MSDOS
@@ -316,6 +310,12 @@ STDMETHODIMP ProgressInfo::SetRatioInfo(const UInt64 *inSize, const UInt64 *outS
#include <lzma-sdk/C/7zip/Compress/RangeCoder/RangeCoderBit.cpp>
#undef RC_NORMALIZE
#if (ACC_CC_CLANG >= 0x080000)
#pragma clang diagnostic pop
#elif (ACC_CC_GNUC >= 0x040700)
#pragma GCC diagnostic pop
#endif
int upx_lzma_compress(const upx_bytep src, unsigned src_len, upx_bytep dst, unsigned *dst_len,
upx_callback_t *cb, int method, int level,
const upx_compress_config_t *cconf_parm, upx_compress_result_t *cresult) {
@@ -340,7 +340,8 @@ int upx_lzma_compress(const upx_bytep src, unsigned src_len, upx_bytep dst, unsi
progress.cb = cb; // progress.Init()
NCompress::NLZMA::CEncoder enc;
const PROPID propIDs[8] = {
constexpr unsigned NPROPS = 8;
static const PROPID propIDs[NPROPS] = {
NCoderPropID::kPosStateBits, // 0 pb _posStateBits(2)
NCoderPropID::kLitPosBits, // 1 lp _numLiteralPosStateBits(0)
NCoderPropID::kLitContextBits, // 2 lc _numLiteralContextBits(3)
@@ -350,8 +351,7 @@ int upx_lzma_compress(const upx_bytep src, unsigned src_len, upx_bytep dst, unsi
NCoderPropID::kMatchFinderCycles, // 6 mfc _matchFinderCycles, _cutValue
NCoderPropID::kMatchFinder // 7 mf
};
PROPVARIANT pr[8];
const unsigned nprops = 8;
PROPVARIANT pr[NPROPS];
if (!prepare_result(res, src_len, method, level, lcconf))
goto error;
pr[0].vt = pr[1].vt = pr[2].vt = pr[3].vt = pr[4].vt = pr[5].vt = pr[6].vt = VT_UI4;
@@ -368,7 +368,7 @@ int upx_lzma_compress(const upx_bytep src, unsigned src_len, upx_bytep dst, unsi
pr[7].bstrVal = ACC_PCAST(BSTR, ACC_UNCONST_CAST(wchar_t *, matchfinder));
try {
if (enc.SetCoderProperties(propIDs, pr, nprops) != S_OK)
if (enc.SetCoderProperties(propIDs, pr, NPROPS) != S_OK)
goto error;
// encode properties in LZMA-style (5 bytes)
if (enc.WriteCoderProperties(&os) != S_OK)
+15 -20
View File
@@ -162,7 +162,7 @@ ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(upx_charptr_unit_type) == 1)
typedef upx_int64_t upx_off_t;
#undef off_t
#if 0
// TODO cleanup: at some future point we can do this:
// TODO later cleanup: at some future point we can do this:
#define off_t DO_NOT_USE_off_t
#else
#define off_t upx_off_t
@@ -180,7 +180,7 @@ typedef upx_int64_t upx_off_t;
#if defined(__clang__) || defined(__GNUC__)
#define noreturn noinline __attribute__((__noreturn__))
#elif (ACC_CC_MSC)
// do not use, generates annoying "warning C4702: unreachable code"
// do not use, triggers annoying "warning C4702: unreachable code"
////#define noreturn noinline __declspec(noreturn)
#define noreturn noinline
#else
@@ -193,7 +193,7 @@ typedef upx_int64_t upx_off_t;
#define very_unlikely __acc_very_unlikely
// cosmetic: explicitly annotate some functions which may throw exceptions
// note: noexcept(false) is the default for all C++ functions anyway
// note that noexcept(false) is the default for all C++ functions anyway
#define may_throw noexcept(false)
#define COMPILE_TIME_ASSERT(e) ACC_COMPILE_TIME_ASSERT(e)
@@ -230,12 +230,6 @@ typedef upx_int64_t upx_off_t;
#undef sopen
#endif
#if defined(HAVE_DUP) && (HAVE_DUP + 0 == 0)
// TODO later: add upx_fd_dup() util
#undef dup
#define dup(x) (-1)
#endif
#ifndef STDIN_FILENO
#define STDIN_FILENO (fileno(stdin))
#endif
@@ -338,7 +332,7 @@ typedef upx_int64_t upx_off_t;
// TODO later: check __MINGW_PRINTF_FORMAT
#if defined(_WIN32) && defined(__MINGW32__) && defined(__GNUC__) && !defined(__clang__)
#define attribute_format(a, b) __attribute__((__format__(__gnu_printf__, a, b)))
#elif (ACC_CC_CLANG || ACC_CC_GNUC)
#elif defined(__clang__) || defined(__GNUC__)
#define attribute_format(a, b) __attribute__((__format__(__printf__, a, b)))
#else
#define attribute_format(a, b) /*empty*/
@@ -442,6 +436,7 @@ inline void mem_clear(T *object) noexcept {
static_assert(size >= 1 && size <= UPX_RSIZE_MAX_MEM);
memset((void *) object, 0, size);
}
// disable some overloads
#if defined(__clang__) || __GNUC__ != 7
template <class T>
inline void mem_clear(T (&array)[]) noexcept DELETED_FUNCTION;
@@ -463,7 +458,7 @@ noreturn void throwAssertFailed(const char *expr, const char *file, int line, co
#if defined(__clang__) || defined(__GNUC__)
#undef assert
#if DEBUG || 0
// generate a warning if assert() is used inside a "noexcept" context
// trigger a warning if assert() is used inside a "noexcept" context
#define assert(e) \
((void) (__acc_cte(e) || (assertFailed(#e, __FILE__, __LINE__, __func__), throw 1, 0)))
#else
@@ -594,7 +589,7 @@ using upx::tribool;
// #define M_CL1B_8 12
// #define M_CL1B_LE16 13
#define M_LZMA 14
#define M_DEFLATE 15 // zlib
#define M_DEFLATE 15 // NOT YET USED
#define M_ZSTD 16 // NOT YET USED
#define M_BZIP2 17 // NOT YET USED
// compression methods internal usage
@@ -712,7 +707,7 @@ struct upx_compress_config_t final {
}
};
#define NULL_cconf ((upx_compress_config_t *) nullptr)
#define NULL_cconf ((const upx_compress_config_t *) nullptr)
/*************************************************************************
// compression - result_t
@@ -786,19 +781,19 @@ struct upx_compress_result_t final {
// classes
class ElfLinker;
typedef ElfLinker Linker;
typedef ElfLinker Linker; // shortcut
class Throwable;
// check/dt_check.cpp
noinline void upx_compiler_sanity_check() noexcept;
noinline int upx_doctest_check(int argc, char **argv);
int upx_doctest_check();
// util/membuffer.h
class MemBuffer;
void *membuffer_get_void_ptr(MemBuffer &mb) noexcept;
unsigned membuffer_get_size(MemBuffer &mb) noexcept;
// util/dt_check.cpp
noinline void upx_compiler_sanity_check() noexcept;
noinline int upx_doctest_check(int argc, char **argv);
int upx_doctest_check();
// main.cpp
extern const char *progname;
bool main_set_exit_code(int ec);
@@ -827,7 +822,7 @@ int do_files(int i, int argc, char *argv[]) may_throw;
// help.cpp
extern const char gitrev[];
void show_header();
void show_help(int verbose = 0);
void show_help(int verbose);
void show_license();
void show_sysinfo(const char *options_var);
void show_usage();
+2 -2
View File
@@ -195,7 +195,7 @@ void throwAssertFailed(const char *expr, const char *file, int line, const char
}
}
const char *prettyName(const char *n) noexcept {
const char *prettyExceptionName(const char *n) noexcept {
if (n == nullptr)
return "(null)";
while (*n) {
@@ -203,7 +203,7 @@ const char *prettyName(const char *n) noexcept {
n++;
else if (*n == ' ')
n++;
else if (strncmp(n, "class ", 6) == 0) // Visual C++ (msvc)
else if (strncmp(n, "class ", 6) == 0) // Visual C++ (MSVC)
n += 6;
else
break;
+1 -1
View File
@@ -178,7 +178,7 @@ public:
// util
**************************************************************************/
const char *prettyName(const char *n) noexcept;
const char *prettyExceptionName(const char *n) noexcept;
noreturn void throwCantPack(const char *msg) may_throw;
noreturn void throwCantPackExact() may_throw;
+18 -1
View File
@@ -40,6 +40,7 @@
#else
UNUSED(name);
UNUSED(mode);
// no error
#endif
}
@@ -88,7 +89,7 @@ bool FileBase::do_sopen() {
else {
#if (ACC_OS_DOS32) && defined(__DJGPP__)
_fd = ::open(_name, _flags | _shflags, _mode);
#elif defined(__MINT__)
#elif (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC) && defined(__MINT__)
_fd = ::open(_name, _flags | (_shflags & O_SHMODE), _mode);
#elif defined(SH_DENYRW)
_fd = ::sopen(_name, _flags, _shflags, _mode);
@@ -98,6 +99,7 @@ bool FileBase::do_sopen() {
}
if (_fd < 0)
return false;
st.st_size = 0;
if (::fstat(_fd, &st) != 0)
throwIOException(_name, errno);
_length = st.st_size;
@@ -212,6 +214,20 @@ upx_off_t InputFile::seek(upx_off_t off, int whence) {
upx_off_t InputFile::st_size_orig() const { return _length_orig; }
int InputFile::dupFd() may_throw {
if (!isOpen())
throwIOException("bad dup");
#if defined(HAVE_DUP) && (HAVE_DUP + 0 == 0)
errno = ENOSYS;
int r = -1;
#else
int r = ::dup(getFd());
#endif
if (r < 0)
throwIOException("dup", errno);
return r;
}
/*************************************************************************
// OutputFile
**************************************************************************/
@@ -333,6 +349,7 @@ void OutputFile::set_extent(upx_off_t offset, upx_off_t length) {
super::set_extent(offset, length);
bytes_written = 0;
if (0 == offset && 0xffffffffLL == length) { // TODO: check all callers of this method
st.st_size = 0;
if (::fstat(_fd, &st) != 0)
throwIOException(_name, errno);
_length = st.st_size - offset;
+2
View File
@@ -88,6 +88,8 @@ public:
virtual upx_off_t seek(upx_off_t off, int whence) override;
upx_off_t st_size_orig() const;
noinline int dupFd() may_throw;
protected:
upx_off_t _length_orig = 0;
};
+67 -20
View File
@@ -25,10 +25,16 @@
<markus@oberhumer.com> <ezerotven+github@gmail.com>
*/
#if defined(_WIN32_WINNT)
static constexpr long long initial_win32_winnt = _WIN32_WINNT + 0LL;
#else
static constexpr long long initial_win32_winnt = 0;
#endif
#define WANT_WINDOWS_LEAN_H 1 // _WIN32_WINNT
#include "conf.h"
#include "compress/compress.h" // upx_ucl_version_string()
// for list_all_packers():
#include "filter.h" // Filter::isValidFilter
#include "packer.h"
#include "packmast.h" // PackMaster::visitAllPackers
@@ -95,49 +101,84 @@ void show_usage(void) {
**************************************************************************/
namespace {
struct PackerNames {
PackerNames() noexcept = default;
struct PackerNames final {
explicit PackerNames() noexcept = default;
~PackerNames() noexcept = default;
static constexpr unsigned MAX_NAMES = 64; // arbitrary limit, increase as needed
struct Entry {
const char *fname;
const char *sname;
unsigned methods_count;
unsigned filters_count;
unsigned methods[PackerBase::MAX_METHODS];
unsigned filters[PackerBase::MAX_FILTERS];
};
static constexpr size_t MAX_NAMES = 64;
Entry names[MAX_NAMES];
size_t names_count = 0;
unsigned names_count = 0;
const Options *o = nullptr;
void add(const PackerBase *pb) {
assert_noexcept(names_count < MAX_NAMES);
names[names_count].fname = pb->getFullName(o);
names[names_count].sname = pb->getName();
names_count++;
Entry &e = names[names_count++];
e.fname = pb->getFullName(o);
e.sname = pb->getName();
e.methods_count = e.filters_count = 0;
for (const int *m = pb->getCompressionMethods(M_ALL, 10); *m != M_END; m++) {
if (*m >= 0) {
assert_noexcept(Packer::isValidCompressionMethod(*m));
assert_noexcept(e.methods_count < PackerBase::MAX_METHODS);
e.methods[e.methods_count++] = *m;
}
}
for (const int *f = pb->getFilters(); f != nullptr && *f != FT_END; f++) {
if (*f >= 0) {
assert_noexcept(Filter::isValidFilter(*f));
assert_noexcept(e.filters_count < PackerBase::MAX_FILTERS);
e.filters[e.filters_count++] = *f;
}
}
upx_gnomesort(e.methods, e.methods_count, sizeof(e.methods[0]), ne32_compare);
upx_gnomesort(e.filters, e.filters_count, sizeof(e.filters[0]), ne32_compare);
}
static tribool visit(PackerBase *pb, void *user) {
NO_fprintf(stderr, "visit %s\n", pb->getFullName(nullptr));
PackerNames *self = (PackerNames *) user;
self->add(pb);
return false;
}
static int __acc_cdecl_qsort cmp_fname(const void *a, const void *b) {
static int __acc_cdecl_qsort compare_fname(const void *a, const void *b) {
return strcmp(((const Entry *) a)->fname, ((const Entry *) b)->fname);
}
static int __acc_cdecl_qsort cmp_sname(const void *a, const void *b) {
static int __acc_cdecl_qsort compare_sname(const void *a, const void *b) {
return strcmp(((const Entry *) a)->sname, ((const Entry *) b)->sname);
}
};
} // namespace
static void list_all_packers(FILE *f, int verbose) {
static noinline void list_all_packers(FILE *f, int verbose) {
Options o;
o.reset();
PackerNames pn;
pn.o = &o;
(void) PackMaster::visitAllPackers(PackerNames::visit, nullptr, &o, &pn);
upx_qsort(pn.names, pn.names_count, sizeof(PackerNames::Entry), PackerNames::cmp_fname);
upx_gnomesort(pn.names, pn.names_count, sizeof(PackerNames::Entry), PackerNames::compare_fname);
size_t pos = 0;
for (size_t i = 0; i < pn.names_count; ++i) {
const char *fn = pn.names[i].fname;
const char *sn = pn.names[i].sname;
if (verbose > 0) {
for (size_t i = 0; i < pn.names_count; i++) {
const PackerNames::Entry &e = pn.names[i];
const char *const fn = e.fname;
const char *const sn = e.sname;
if (verbose >= 3) {
con_fprintf(f, " %-36s %s\n", fn, sn);
con_fprintf(f, " methods:");
for (size_t j = 0; j < e.methods_count; j++)
con_fprintf(f, " %#x", e.methods[j]);
con_fprintf(f, "\n");
con_fprintf(f, " filters:");
for (size_t j = 0; j < e.filters_count; j++)
con_fprintf(f, " %#x", e.filters[j]);
con_fprintf(f, "\n");
} else if (verbose >= 2) {
con_fprintf(f, " %-36s %s\n", fn, sn);
} else {
size_t fl = strlen(fn);
@@ -153,7 +194,7 @@ static void list_all_packers(FILE *f, int verbose) {
}
}
}
if (verbose <= 0 && pn.names_count)
if (verbose < 2 && pn.names_count)
con_fprintf(f, "\n");
}
@@ -425,11 +466,12 @@ void show_version(bool one_line) {
fprintf(f, "Copyright (C) 1996-2024 Markus Franz Xaver Johannes Oberhumer\n");
fprintf(f, "Copyright (C) 1996-2024 Laszlo Molnar\n");
fprintf(f, "Copyright (C) 2000-2024 John F. Reiser\n");
fprintf(f, "Copyright (C) 2002-2024 Jens Medoch\n");
#if (WITH_ZLIB)
// see vendor/zlib/LICENSE
fprintf(f, "Copyright (C) 1995" "-2024 Jean-loup Gailly and Mark Adler\n");
#endif
#if (WITH_LZMA)
// see vendor/lzma-sdk/lzma.txt
fprintf(f, "Copyright (C) 1999" "-2006 Igor Pavlov\n");
#endif
#if (WITH_ZSTD)
@@ -437,13 +479,15 @@ void show_version(bool one_line) {
fprintf(f, "Copyright (C) 2015" "-2024 Meta Platforms, Inc. and affiliates\n");
#endif
#if (WITH_BZIP2)
fprintf(f, "Copyright (C) 1996" "-2010 Julian Seward\n"); // see <bzlib.h>
// see vendor/bzip2/bzlib.h
fprintf(f, "Copyright (C) 1996" "-2010 Julian Seward\n");
#endif
#if !defined(DOCTEST_CONFIG_DISABLE)
// see vendor/doctest/LICENSE.txt
fprintf(f, "Copyright (C) 2016" "-2023 Viktor Kirilov\n");
#endif
fprintf(f, "UPX comes with ABSOLUTELY NO WARRANTY; for details type '%s -L'.\n", progname);
// clang-format on
fprintf(f, "UPX comes with ABSOLUTELY NO WARRANTY; for details type '%s -L'.\n", progname);
}
/*************************************************************************
@@ -525,6 +569,8 @@ void show_sysinfo(const char *options_var) {
#endif
#if defined(_WIN32_WINNT)
cf_print("_WIN32_WINNT", "0x%04llx", _WIN32_WINNT + 0);
if (initial_win32_winnt != 0 && initial_win32_winnt != _WIN32_WINNT + 0)
cf_print("INITIAL_WIN32_WINNT", "0x%04llx", initial_win32_winnt);
#endif
#if defined(__MSVCRT_VERSION__)
cf_print("__MSVCRT_VERSION__", "0x%04llx", __MSVCRT_VERSION__ + 0);
@@ -556,6 +602,7 @@ void show_sysinfo(const char *options_var) {
#endif
UNUSED(cf_count);
UNUSED(cf_print);
UNUSED(initial_win32_winnt);
}
// run-time
@@ -578,7 +625,7 @@ void show_sysinfo(const char *options_var) {
#endif
if (options_var && options_var[0]) {
const char *e = getenv(options_var);
const char *e = upx_getenv(options_var);
con_fprintf(f, "\n");
if (e && e[0])
con_fprintf(f, "Contents of environment variable %s: '%s'\n\n", options_var, e);
+1 -2
View File
@@ -190,8 +190,7 @@ protected:
unsigned le_offset = 0;
unsigned exe_offset = 0;
le_header_t ih;
le_header_t oh;
le_header_t ih = {}, oh = {};
le_object_table_entry_t *iobject_table = nullptr;
le_object_table_entry_t *oobject_table = nullptr;
+77 -85
View File
@@ -30,7 +30,7 @@
static unsigned hex(uchar c) { return (c & 0xf) + (c > '9' ? 9 : 0); }
static bool update_capacity(unsigned size, unsigned *capacity) {
static bool grow_capacity(unsigned size, unsigned *capacity) {
if (size < *capacity)
return false;
if (*capacity == 0)
@@ -40,16 +40,22 @@ static bool update_capacity(unsigned size, unsigned *capacity) {
return true;
}
static void internal_error(const char *format, ...) attribute_format(1, 2);
static void internal_error(const char *format, ...) {
static char buf[1024];
va_list ap;
template <class T>
static T **realloc_array(T **array, size_t capacity) may_throw {
assert_noexcept(capacity > 0);
// NOLINTNEXTLINE(bugprone-multi-level-implicit-pointer-conversion)
void *p = realloc(array, mem_size(sizeof(T *), capacity));
assert_noexcept(p != nullptr);
return static_cast<T **>(p);
}
va_start(ap, format);
upx_safe_vsnprintf(buf, sizeof(buf), format, ap);
va_end(ap);
throwInternalError(buf);
template <class T>
static void free_array(T **array, size_t count) noexcept {
for (size_t i = 0; i < count; i++) {
T *item = upx::atomic_exchange(&array[i], (T *) nullptr);
delete item;
}
::free(array); // NOLINT(bugprone-multi-level-implicit-pointer-conversion)
}
/*************************************************************************
@@ -59,19 +65,19 @@ static void internal_error(const char *format, ...) {
ElfLinker::Section::Section(const char *n, const void *i, unsigned s, unsigned a)
: name(nullptr), output(nullptr), size(s), offset(0), p2align(a), next(nullptr) {
name = strdup(n);
assert(name != nullptr);
input = malloc(s + 1);
assert(input != nullptr);
assert_noexcept(name != nullptr);
input = ::malloc(s + 1);
assert_noexcept(input != nullptr);
if (s != 0) {
assert(i != nullptr);
assert_noexcept(i != nullptr);
memcpy(input, i, s);
}
((char *) input)[s] = 0;
}
ElfLinker::Section::~Section() noexcept {
free(name);
free(input);
::free(name);
::free(input);
}
/*************************************************************************
@@ -81,11 +87,11 @@ ElfLinker::Section::~Section() noexcept {
ElfLinker::Symbol::Symbol(const char *n, Section *s, upx_uint64_t o)
: name(nullptr), section(s), offset(o) {
name = strdup(n);
assert(name != nullptr);
assert(section != nullptr);
assert_noexcept(name != nullptr);
assert_noexcept(section != nullptr);
}
ElfLinker::Symbol::~Symbol() noexcept { free(name); }
ElfLinker::Symbol::~Symbol() noexcept { ::free(name); }
/*************************************************************************
// Relocation
@@ -94,7 +100,7 @@ ElfLinker::Symbol::~Symbol() noexcept { free(name); }
ElfLinker::Relocation::Relocation(const Section *s, unsigned o, const char *t, const Symbol *v,
upx_uint64_t a)
: section(s), offset(o), type(t), value(v), add(a) {
assert(section != nullptr);
assert_noexcept(section != nullptr);
}
/*************************************************************************
@@ -106,17 +112,9 @@ ElfLinker::ElfLinker(const N_BELE_RTP::AbstractPolicy *b) noexcept : bele(b) {}
ElfLinker::~ElfLinker() noexcept {
delete[] input;
delete[] output;
unsigned ic;
for (ic = 0; ic < nsections; ic++)
delete sections[ic];
free(sections);
for (ic = 0; ic < nsymbols; ic++)
delete symbols[ic];
free(symbols);
for (ic = 0; ic < nrelocations; ic++)
delete relocations[ic];
free(relocations);
free_array(sections, nsections);
free_array(symbols, nsymbols);
free_array(relocations, nrelocations);
}
void ElfLinker::init(const void *pdata_v, int plen, unsigned pxtra) {
@@ -156,7 +154,7 @@ void ElfLinker::init(const void *pdata_v, int plen, unsigned pxtra) {
input[inputlen] = 0; // NUL terminate
output_capacity = (inputlen ? (inputlen + pxtra) : 0x4000);
assert(output_capacity <= (1 << 16)); // LE16 l_info.l_size
assert(output_capacity < (1 << 16)); // LE16 l_info.l_size
output = New(byte, output_capacity);
outputlen = 0;
NO_printf("\nElfLinker::init %d @%p\n", output_capacity, output);
@@ -186,8 +184,9 @@ void ElfLinker::init(const void *pdata_v, int plen, unsigned pxtra) {
}
void ElfLinker::preprocessSections(char *start, char const *end) {
assert_noexcept(nsections == 0);
char *nextl;
for (nsections = 0; start < end; start = 1 + nextl) {
for (; start < end; start = 1 + nextl) {
nextl = strchr(start, '\n');
assert(nextl != nullptr);
*nextl = '\0'; // a record is a line
@@ -207,8 +206,9 @@ void ElfLinker::preprocessSections(char *start, char const *end) {
}
void ElfLinker::preprocessSymbols(char *start, char const *end) {
assert_noexcept(nsymbols == 0);
char *nextl;
for (nsymbols = 0; start < end; start = 1 + nextl) {
for (; start < end; start = 1 + nextl) {
nextl = strchr(start, '\n');
assert(nextl != nullptr);
*nextl = '\0'; // a record is a line
@@ -243,9 +243,10 @@ void ElfLinker::preprocessSymbols(char *start, char const *end) {
}
void ElfLinker::preprocessRelocations(char *start, char const *end) {
assert_noexcept(nrelocations == 0);
Section *section = nullptr;
char *nextl;
for (nrelocations = 0; start < end; start = 1 + nextl) {
for (; start < end; start = 1 + nextl) {
nextl = strchr(start, '\n');
assert(nextl != nullptr);
*nextl = '\0'; // a record is a line
@@ -302,7 +303,7 @@ ElfLinker::Section *ElfLinker::findSection(const char *name, bool fatal) const {
if (strcmp(sections[ic]->name, name) == 0)
return sections[ic];
if (fatal)
internal_error("unknown section %s\n", name);
throwInternalError("unknown section %s\n", name);
return nullptr;
}
@@ -311,7 +312,7 @@ ElfLinker::Symbol *ElfLinker::findSymbol(const char *name, bool fatal) const {
if (strcmp(symbols[ic]->name, name) == 0)
return symbols[ic];
if (fatal)
internal_error("unknown symbol %s\n", name);
throwInternalError("unknown symbol %s\n", name);
return nullptr;
}
@@ -320,14 +321,11 @@ ElfLinker::Section *ElfLinker::addSection(const char *sname, const void *sdata,
NO_printf("addSection: %s len=%d align=%d\n", sname, slen, p2align);
if (!sdata && (!strcmp("ABS*", sname) || !strcmp("UND*", sname)))
return nullptr;
if (update_capacity(nsections, &nsections_capacity))
sections =
static_cast<Section **>(realloc(sections, nsections_capacity * sizeof(Section *)));
assert(sections);
assert(sname);
assert(sname[0]);
assert(sname && sname[0]);
assert(sname[strlen(sname) - 1] != ':');
assert(findSection(sname, false) == nullptr);
if (grow_capacity(nsections, &nsections_capacity))
sections = realloc_array(sections, nsections_capacity);
Section *sec = new Section(sname, sdata, slen, p2align);
sec->sort_id = nsections;
sections[nsections++] = sec;
@@ -337,13 +335,11 @@ ElfLinker::Section *ElfLinker::addSection(const char *sname, const void *sdata,
ElfLinker::Symbol *ElfLinker::addSymbol(const char *name, const char *section,
upx_uint64_t offset) {
NO_printf("addSymbol: %s %s 0x%llx\n", name, section, offset);
if (update_capacity(nsymbols, &nsymbols_capacity))
symbols = static_cast<Symbol **>(realloc(symbols, nsymbols_capacity * sizeof(Symbol *)));
assert(symbols != nullptr);
assert(name);
assert(name[0]);
assert(name && name[0]);
assert(name[strlen(name) - 1] != ':');
assert(findSymbol(name, false) == nullptr);
if (grow_capacity(nsymbols, &nsymbols_capacity))
symbols = realloc_array(symbols, nsymbols_capacity);
Symbol *sym = new Symbol(name, findSection(section), offset);
symbols[nsymbols++] = sym;
return sym;
@@ -351,18 +347,15 @@ ElfLinker::Symbol *ElfLinker::addSymbol(const char *name, const char *section,
ElfLinker::Relocation *ElfLinker::addRelocation(const char *section, unsigned off, const char *type,
const char *symbol, upx_uint64_t add) {
if (update_capacity(nrelocations, &nrelocations_capacity))
relocations = static_cast<Relocation **>(
realloc(relocations, (nrelocations_capacity) * sizeof(Relocation *)));
assert(relocations != nullptr);
if (grow_capacity(nrelocations, &nrelocations_capacity))
relocations = realloc_array(relocations, nrelocations_capacity);
Relocation *rel = new Relocation(findSection(section), off, type, findSymbol(symbol), add);
relocations[nrelocations++] = rel;
return rel;
}
#if 0
void ElfLinker::setLoaderAlignOffset(int phase)
{
void ElfLinker::setLoaderAlignOffset(int phase) {
// assert(phase & 0);
NO_printf("\nFIXME: ElfLinker::setLoaderAlignOffset %d\n", phase);
}
@@ -425,7 +418,7 @@ int ElfLinker::addLoader(const char *sname) {
}
sect += strlen(sect) + 1;
}
free(begin);
::free(begin);
return outputlen;
}
@@ -474,10 +467,10 @@ void ElfLinker::relocate() {
value = rel->value->offset;
} else if (strcmp(rel->value->section->name, "*UND*") == 0 &&
rel->value->offset == 0xdeaddead)
internal_error("undefined symbol '%s' referenced\n", rel->value->name);
throwInternalError("undefined symbol '%s' referenced\n", rel->value->name);
else if (rel->value->section->output == nullptr)
internal_error("can not apply reloc '%s:%x' without section '%s'\n", rel->section->name,
rel->offset, rel->value->section->name);
throwInternalError("can not apply reloc '%s:%x' without section '%s'\n",
rel->section->name, rel->offset, rel->value->section->name);
else {
value = rel->value->section->offset + rel->value->offset + rel->add;
}
@@ -495,7 +488,7 @@ void ElfLinker::relocate() {
void ElfLinker::defineSymbol(const char *name, upx_uint64_t value) {
Symbol *symbol = findSymbol(name);
if (strcmp(symbol->section->name, "*ABS*") == 0)
internal_error("defineSymbol: symbol '%s' is *ABS*\n", name);
throwInternalError("defineSymbol: symbol '%s' is *ABS*\n", name);
else if (strcmp(symbol->section->name, "*UND*") == 0) // for undefined symbols
symbol->offset = value;
else if (strcmp(symbol->section->name, name) == 0) // for sections
@@ -506,7 +499,7 @@ void ElfLinker::defineSymbol(const char *name, upx_uint64_t value) {
value += section->size;
}
} else
internal_error("defineSymbol: symbol '%s' already defined\n", name);
throwInternalError("defineSymbol: symbol '%s' already defined\n", name);
}
// debugging support
@@ -553,7 +546,7 @@ void ElfLinker::alignWithByte(unsigned len, byte b) {
}
void ElfLinker::relocate1(const Relocation *rel, byte *, upx_uint64_t, const char *) {
internal_error("unknown relocation type '%s\n'", rel->type);
throwInternalError("unknown relocation type '%s\n'", rel->type);
}
/*************************************************************************
@@ -563,14 +556,13 @@ void ElfLinker::relocate1(const Relocation *rel, byte *, upx_uint64_t, const cha
**************************************************************************/
#if 0 // FIXME
static void check8(const Relocation *rel, const byte *location, int v, int d)
{
static void check8(const Relocation *rel, const byte *location, int v, int d) {
if (v < -128 || v > 127)
internal_error("value out of range (%d) in reloc %s:%x\n",
v, rel->section->name, rel->offset);
throwInternalError("value out of range (%d) in reloc %s:%x\n", v, rel->section->name,
rel->offset);
if (d < -128 || d > 127)
internal_error("displacement target out of range (%d) in reloc %s:%x\n",
v, rel->section->name, rel->offset);
throwInternalError("displacement target out of range (%d) in reloc %s:%x\n", v,
rel->section->name, rel->offset);
}
#endif
@@ -592,10 +584,10 @@ void ElfLinkerAMD64::relocate1(const Relocation *rel, byte *location, upx_uint64
}
if (strcmp(type, "8") == 0) {
int displ = (signed char) *location + (int) value;
int displ = (upx_int8_t) *location + (int) value;
if (range_check && (displ < -128 || displ > 127))
internal_error("target out of range (%d) in reloc %s:%x\n", displ, rel->section->name,
rel->offset);
throwInternalError("target out of range (%d) in reloc %s:%x\n", displ,
rel->section->name, rel->offset);
*location += value;
} else if (strcmp(type, "16") == 0)
set_le16(location, get_le16(location) + value);
@@ -800,12 +792,12 @@ void ElfLinkerPpc32::relocate1(const Relocation *rel, byte *location, upx_uint64
// Note that original (*location).displ is ignored.
if (strcmp(type, "24") == 0) {
if (3 & value)
internal_error("unaligned word displacement");
throwInternalError("unaligned word displacement");
// FIXME: displacement overflow?
set_be32(location, (0xfc000003 & get_be32(location)) + (0x03fffffc & value));
} else if (strcmp(type, "14") == 0) {
if (3 & value)
internal_error("unaligned word displacement");
throwInternalError("unaligned word displacement");
// FIXME: displacement overflow?
set_be32(location, (0xffff0003 & get_be32(location)) + (0x0000fffc & value));
} else
@@ -837,19 +829,19 @@ void ElfLinkerPpc64le::relocate1(const Relocation *rel, byte *location, upx_uint
if (strncmp(type, "14", 2) == 0) { // for "14" and "14S"
if (3 & value)
internal_error("unaligned word displacement");
throwInternalError("unaligned word displacement");
// FIXME: displacement overflow?
set_le32(location, (0xffff0003 & get_le32(location)) + (0x0000fffc & value));
} else if (strncmp(type, "24", 2) == 0) { // for "24" and "24S"
if (3 & value)
internal_error("unaligned word displacement");
throwInternalError("unaligned word displacement");
// FIXME: displacement overflow?
set_le32(location, (0xfc000003 & get_le32(location)) + (0x03fffffc & value));
} else if (strcmp(type, "8") == 0) {
int displ = (signed char) *location + (int) value;
int displ = (upx_int8_t) *location + (int) value;
if (range_check && (displ < -128 || displ > 127))
internal_error("target out of range (%d) in reloc %s:%x\n", displ, rel->section->name,
rel->offset);
throwInternalError("target out of range (%d) in reloc %s:%x\n", displ,
rel->section->name, rel->offset);
*location += value;
} else if (strcmp(type, "16") == 0)
set_le16(location, get_le16(location) + value);
@@ -887,19 +879,19 @@ void ElfLinkerPpc64::relocate1(const Relocation *rel, byte *location, upx_uint64
if (strncmp(type, "14", 2) == 0) { // for "14" and "14S"
if (3 & value)
internal_error("unaligned word displacement");
throwInternalError("unaligned word displacement");
// FIXME: displacement overflow?
set_be32(location, (0xffff0003 & get_be32(location)) + (0x0000fffc & value));
} else if (strncmp(type, "24", 2) == 0) { // for "24" and "24S"
if (3 & value)
internal_error("unaligned word displacement");
throwInternalError("unaligned word displacement");
// FIXME: displacement overflow?
set_be32(location, (0xfc000003 & get_be32(location)) + (0x03fffffc & value));
} else if (strcmp(type, "8") == 0) {
int displ = (signed char) *location + (int) value;
int displ = (upx_int8_t) *location + (int) value;
if (range_check && (displ < -128 || displ > 127))
internal_error("target out of range (%d) in reloc %s:%x\n", displ, rel->section->name,
rel->offset);
throwInternalError("target out of range (%d) in reloc %s:%x\n", displ,
rel->section->name, rel->offset);
*location += value;
} else if (strcmp(type, "16") == 0)
set_be16(location, get_be16(location) + value);
@@ -925,10 +917,10 @@ void ElfLinkerX86::relocate1(const Relocation *rel, byte *location, upx_uint64_t
}
if (strcmp(type, "8") == 0) {
int displ = (signed char) *location + (int) value;
int displ = (upx_int8_t) *location + (int) value;
if (range_check && (displ < -128 || displ > 127))
internal_error("target out of range (%d,%d,%llu) in reloc %s:%x\n", displ, *location,
value, rel->section->name, rel->offset);
throwInternalError("target out of range (%d,%d,%llu) in reloc %s:%x\n", displ,
*location, value, rel->section->name, rel->offset);
*location += value;
} else if (strcmp(type, "16") == 0)
set_le16(location, get_le16(location) + value);
+1 -1
View File
@@ -68,7 +68,6 @@ protected:
void preprocessSymbols(char *start, char const *end);
void preprocessRelocations(char *start, char const *end);
Section *findSection(const char *name, bool fatal = true) const;
Symbol *findSymbol(const char *name, bool fatal = true) const;
Symbol *addSymbol(const char *name, const char *section, upx_uint64_t offset);
Relocation *addRelocation(const char *section, unsigned off, const char *type,
@@ -92,6 +91,7 @@ public:
int getSectionSize(const char *sname) const;
byte *getLoader(int *llen = nullptr) const;
void defineSymbol(const char *name, upx_uint64_t value);
Symbol *findSymbol(const char *name, bool fatal = true) const;
upx_uint64_t getSymbolOffset(const char *) const;
void dumpSymbol(const Symbol *, unsigned flags, FILE *fp) const;
+24 -18
View File
@@ -37,6 +37,9 @@
**************************************************************************/
#ifndef OPTIONS_VAR
// historical note: "UPX_OPTIONS" would be a better name, but back in the old
// days environment variables used to be short; and we cannot change that now
// because of backward compatibility issues
#define OPTIONS_VAR "UPX"
#endif
@@ -215,7 +218,7 @@ static void check_and_update_options(int i, int argc) {
**************************************************************************/
static void e_help(void) {
show_help();
show_help(0);
e_exit(EXIT_USAGE);
}
@@ -383,6 +386,8 @@ static int do_option(int optc, const char *arg) {
set_cmd(CMD_HELP);
break;
case 'h' + 256:
case 996:
case 997:
#if 1
if (!acc_isatty(STDOUT_FILENO)) {
/* according to GNU standards */
@@ -390,7 +395,7 @@ static int do_option(int optc, const char *arg) {
opt->console = CON_FILE;
}
#endif
show_help(1);
show_help(optc == 996 ? 1 : (optc == 997 ? 3 : 2));
e_exit(EXIT_OK);
break;
case 'i':
@@ -789,7 +794,7 @@ static int do_option(int optc, const char *arg) {
break;
#if !defined(DOCTEST_CONFIG_DISABLE)
case 999: // doctest --dt-XXX option
case 999: // [doctest] --dt-XXX option; ignored here, see upx_doctest_check()
break;
#endif
@@ -813,7 +818,7 @@ int main_get_options(int argc, char **argv) {
// commands
{"best", 0x10, N, 900}, // compress best
{"brute", 0x10, N, 901}, // compress best, brute force
{"ultra-brute", 0x10, N, 902}, // compress best, brute force
{"ultra-brute", 0x10, N, 902}, // compress best, ultra-brute force
{"decompress", 0, N, 'd'}, // decompress
{"fast", 0x10, N, '1'}, // compress faster
{"fileinfo", 0x10, N, 909}, // display info about file
@@ -923,7 +928,7 @@ int main_get_options(int argc, char **argv) {
// atari/tos
{"split-segments", 0x90, N, 650},
// darwin/macho
{"force-macos", 0x90, N, 690}, // undocumented temporary until we fix macOS 13+
{"force-macos", 0x90, N, 690}, // undocumented temporary option until we do fix macOS 13+
// djgpp2/coff
{"coff", 0x90, N, 610}, // produce COFF output
// dos/exe
@@ -963,7 +968,7 @@ int main_get_options(int argc, char **argv) {
{"strip-relocs", 0x12, N, 634},
{"keep-resource", 0x31, N, 635},
#if !defined(DOCTEST_CONFIG_DISABLE)
#if !defined(DOCTEST_CONFIG_DISABLE) // accept and ignore some doctest --dt-XXX options
// [doctest] Query flags - the program quits after them. Available:
{"dt-c", 0x10, N, 999},
{"dt-count", 0x10, N, 999},
@@ -1020,7 +1025,7 @@ void main_get_envoptions() {
// commands
{"best", 0x10, N, 900}, // compress best
{"brute", 0x10, N, 901}, // compress best, brute force
{"ultra-brute", 0x10, N, 902}, // compress best, brute force
{"ultra-brute", 0x10, N, 902}, // compress best, ultra-brute force
{"fast", 0x10, N, '1'}, // compress faster
// options
@@ -1086,7 +1091,7 @@ void main_get_envoptions() {
static const char sep[] = " \t";
char shortopts[256];
var = getenv(OPTIONS_VAR);
var = upx_getenv(OPTIONS_VAR);
if (var == nullptr || !var[0])
return;
env = strdup(var);
@@ -1111,7 +1116,7 @@ void main_get_envoptions() {
if (targc > 1)
targv = (const char **) upx_calloc(targc + 1, sizeof(char *));
if (targv == nullptr) {
free(env);
::free(env);
return;
}
@@ -1150,8 +1155,8 @@ void main_get_envoptions() {
e_envopt(targv[mfx_optind]);
/* clean up */
free(targv);
free(env);
::free(targv); // NOLINT(bugprone-multi-level-implicit-pointer-conversion)
::free(env);
#endif /* defined(OPTIONS_VAR) */
}
@@ -1169,9 +1174,14 @@ static void first_options(int argc, char **argv) {
if (strcmp(argv[i], "--version-short") == 0)
do_option(998, argv[i]);
}
for (i = 1; i < n; i++)
for (i = 1; i < n; i++) {
if (strcmp(argv[i], "--help") == 0)
do_option('h' + 256, argv[i]);
if (strcmp(argv[i], "--help-short") == 0) // undocumented and subject to change
do_option(996, argv[i]);
if (strcmp(argv[i], "--help-verbose") == 0) // undocumented and subject to change
do_option(997, argv[i]);
}
for (i = 1; i < n; i++)
if (strcmp(argv[i], "--no-env") == 0)
do_option(519, argv[i]);
@@ -1269,7 +1279,7 @@ int upx_main(int argc, char *argv[]) may_throw {
e_exit(EXIT_OK);
break;
case CMD_HELP:
show_help(1);
show_help(2);
e_exit(EXIT_OK);
break;
case CMD_LICENSE:
@@ -1354,11 +1364,7 @@ int __acc_cdecl_main main(int argc, char *argv[]) /*noexcept*/ {
_set_abort_behavior(_WRITE_ABORT_MSG, _WRITE_ABORT_MSG | _CALL_REPORTFAULT);
#endif
acc_wildargv(&argc, &argv);
#if defined(__wasi__)
srand((int) time(nullptr));
#else
srand((int) clock());
#endif
upx_rand_init();
// info: main() is implicitly "noexcept", so we need a try block
#if 0
+3 -3
View File
@@ -102,7 +102,7 @@ void printErr(const char *iname, const Throwable &e) noexcept {
char buf[1024];
size_t l;
upx_safe_snprintf(buf, sizeof(buf), "%s", prettyName(typeid(e).name()));
upx_safe_snprintf(buf, sizeof(buf), "%s", prettyExceptionName(typeid(e).name()));
l = strlen(buf);
if (l < sizeof(buf) && e.getMsg())
upx_safe_snprintf(buf + l, sizeof(buf) - l, ": %s", e.getMsg());
@@ -143,8 +143,8 @@ void printWarn(const char *iname, const char *format, ...) noexcept {
}
void printUnhandledException(const char *iname, const std::exception *e) noexcept {
if (e)
printErr(iname, "unhandled exception: %s\n", prettyName(e->what()));
if (e != nullptr)
printErr(iname, "unhandled exception: %s\n", prettyExceptionName(e->what()));
else
printErr(iname, "internal error: unhandled exception!\n");
if (opt->cmd != CMD_COMPRESS) {
+3 -3
View File
@@ -28,10 +28,10 @@
#include "conf.h"
static Options global_options;
Options *opt = &global_options; // also see class PackMaster
Options *opt = &global_options; // also see class PackMaster for per-file local options
#if WITH_THREADS
std::mutex opt_lock_mutex;
std::mutex opt_lock_mutex; // for locking "opt"
#endif
/*************************************************************************
@@ -66,7 +66,7 @@ void Options::reset() noexcept {
#endif
// support NO_COLOR, see https://no-color.org/
// "... when present and not an empty string (regardless of its value)"
const char *e = getenv("NO_COLOR");
const char *e = upx_getenv("NO_COLOR");
if (e && e[0])
o->console = CON_FILE;
+6 -2
View File
@@ -28,11 +28,12 @@
#pragma once
struct Options;
extern Options *opt; // global options, see class PackMaster for per-file local options
#define options_t Options // old name
extern Options *opt; // global options, see class PackMaster for per-file local options
#if WITH_THREADS
extern std::mutex opt_lock_mutex;
extern std::mutex opt_lock_mutex; // for locking "opt"
#endif
/*************************************************************************
@@ -177,6 +178,9 @@ struct Options final {
int strip_relocs;
const char *keep_resource;
} win32_pe;
private: // UPX conventions
UPX_CXX_DISABLE_NEW_DELETE(Options)
};
/* vim:set ts=4 sw=4 et: */
+1 -1
View File
@@ -86,7 +86,7 @@ protected:
LE32 firstreloc;
};
exe_header_t ih, oh;
exe_header_t ih = {}, oh = {};
unsigned ih_exesize = 0;
unsigned ih_imagesize = 0;
+35 -21
View File
@@ -320,7 +320,7 @@ PackLinuxElf32::PackLinuxElf32help1(InputFile *f)
sz_elf_hdrs = sz_phdrs + sizeof(Elf32_Ehdr);
if (f && Elf32_Ehdr::ET_DYN!=e_type) {
unsigned const len = sz_phdrs + e_phoff;
unsigned const len = file_size; // (sz_phdrs + e_phoff) except --preserve-build-id
alloc_file_image(file_image, len);
f->seek(0, SEEK_SET);
f->readx(file_image, len);
@@ -437,7 +437,7 @@ off_t PackLinuxElf::pack3(OutputFile *fo, Filter &ft) // return length of output
// FIXME: debugging aid: entry to decompressor
if (lowmem.getSize()) {
Elf32_Ehdr *const ehdr = (Elf32_Ehdr *)&lowmem[0];
set_te32(&ehdr->e_entry, sz_pack2); // hint for decomperssor
set_te32(&ehdr->e_entry, sz_pack2); // hint for decompressor
}
// end debugging aid
@@ -1031,7 +1031,7 @@ PackLinuxElf64::PackLinuxElf64help1(InputFile *f)
sz_elf_hdrs = sz_phdrs + sizeof(Elf64_Ehdr);
if (f && Elf64_Ehdr::ET_DYN!=e_type) {
unsigned const len = sz_phdrs + e_phoff;
unsigned const len = file_size; // (sz_phdrs + e_phoff) except --preserve-build-id
alloc_file_image(file_image, len);
f->seek(0, SEEK_SET);
f->readx(file_image, len);
@@ -1989,6 +1989,7 @@ void
PackLinuxElf32::sort_DT32_offsets(Elf32_Dyn const *const dynp0)
{
mb_dt_offsets.alloc(sizeof(unsigned) * sizeof(dt_keys)/sizeof(dt_keys[0]));
mb_dt_offsets.clear();
dt_offsets = (unsigned *)mb_dt_offsets.getVoidPtr();
unsigned n_off = 0, k;
for (unsigned j=0; ((k = dt_keys[j]), k); ++j) {
@@ -2196,7 +2197,7 @@ PackLinuxElf32::invert_pt_dynamic(Elf32_Dyn const *dynp, u32_t headway)
// (037 & (hash_32 >> gnu_shift))
// but compilers can be stupid.
if (31 < gnu_shift) {
throwCantPack("bad gnu_shift %d", gnu_shift);
throwCantPack("bad gnu_shift %#x", gnu_shift);
}
// unsigned const *const gashend = &hasharr[n_bucket];
// minimum, except:
@@ -3984,8 +3985,8 @@ void PackLinuxElf32::pack1(OutputFile * /*fo*/, Filter &ft)
phdr = phdri;
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
unsigned const type = get_te32(&phdr->p_type);
if (PT_NOTE32 == type) {
unsigned const len = get_te32(&phdr->p_filesz);
if (PT_NOTE32 == type && len && note_body.getSize()) {
fi->seek(get_te32(&phdr->p_offset), SEEK_SET);
fi->readx(&note_body[note_size], len);
note_size += up4(len);
@@ -4031,10 +4032,9 @@ void PackLinuxElf32::pack1(OutputFile * /*fo*/, Filter &ft)
if (opt->o_unix.preserve_build_id) {
// set this so we can use elf_find_section_name
e_shnum = get_te16(&ehdri.e_shnum);
MemBuffer mb_shdri;
if (!shdri) {
mb_shdri.alloc(e_shnum * sizeof(Elf32_Shdr));
shdri = (Elf32_Shdr *)mb_shdri.getVoidPtr();
mb_shdr.alloc(e_shnum * sizeof(Elf32_Shdr));
shdri = (Elf32_Shdr *)mb_shdr.getVoidPtr();
e_shoff = get_te32(&ehdri.e_shoff);
fi->seek(e_shoff, SEEK_SET);
fi->readx(shdri, e_shnum * sizeof(Elf32_Shdr));
@@ -4921,10 +4921,9 @@ void PackLinuxElf64::pack1(OutputFile * /*fo*/, Filter &ft)
if (opt->o_unix.preserve_build_id) {
// set this so we can use elf_find_section_name
e_shnum = get_te16(&ehdri.e_shnum);
MemBuffer mb_shdri;
if (!shdri) {
mb_shdri.alloc(e_shnum * sizeof(Elf64_Shdr));
shdri = (Elf64_Shdr *)mb_shdri.getVoidPtr();
mb_shdr.alloc(e_shnum * sizeof(Elf64_Shdr));
shdri = (Elf64_Shdr *)mb_shdr.getVoidPtr();
e_shoff = get_te64(&ehdri.e_shoff);
fi->seek(e_shoff, SEEK_SET);
fi->readx(shdri, e_shnum * sizeof(Elf64_Shdr));
@@ -5127,7 +5126,7 @@ int PackLinuxElf32::pack2(OutputFile *fo, Filter &ft)
fo->seek(x.offset, SEEK_SET);
fo->write(&file_image[x.offset], x.size);
total_out += x.size;
// Kepp the input side in sync
// Keep the input side in sync
total_in += x.size;
fi->seek(x.size + x.offset, SEEK_SET);
}
@@ -5385,7 +5384,7 @@ int PackLinuxElf64::pack2(OutputFile *fo, Filter &ft)
fo->seek(x.offset, SEEK_SET);
fo->write(&file_image[x.offset], x.size);
total_out += x.size;
// Kepp the input side in sync
// Keep the input side in sync
total_in += x.size;
fi->seek(x.size + x.offset, SEEK_SET);
}
@@ -6484,13 +6483,17 @@ void PackLinuxElf64::un_shlib_1(
struct {
struct l_info l;
struct p_info p;
struct b_info b;
} hdr;
fi->readx(&hdr, sizeof(hdr));
if (hdr.l.l_magic != UPX_MAGIC_LE32
|| hdr.l.l_lsize != (unsigned)lsize
|| hdr.p.p_filesize != ph.u_file_size) {
throwCantUnpack("corrupt l_info/p_info");
|| get_te16(&hdr.l.l_lsize) != (unsigned)lsize
|| get_te32(&hdr.p.p_filesize) != ph.u_file_size
|| get_te32(&hdr.b.sz_unc) < sz_elf_hdrs // peek: 1st b_info covers Elf headers
) {
throwCantUnpack("corrupt l_info/p_info/b_info");
}
fi->seek(-(off_t)sizeof(struct b_info), SEEK_CUR); // hdr.b_info was a peek
// The default layout for a shared library created by binutils-2.29
// (Fedora 28; 2018) has two PT_LOAD: permissions r-x and rw-.
@@ -6680,13 +6683,17 @@ void PackLinuxElf32::un_shlib_1(
struct {
struct l_info l;
struct p_info p;
struct b_info b;
} hdr;
fi->readx(&hdr, sizeof(hdr));
if (hdr.l.l_magic != UPX_MAGIC_LE32
|| hdr.l.l_lsize != (unsigned)lsize
|| hdr.p.p_filesize != ph.u_file_size) {
throwCantUnpack("corrupt l_info/p_info");
|| get_te16(&hdr.l.l_lsize) != (unsigned)lsize
|| get_te32(&hdr.p.p_filesize) != ph.u_file_size
|| get_te32(&hdr.b.sz_unc) < sz_elf_hdrs // peek: 1st b_info covers Elf headers
) {
throwCantUnpack("corrupt l_info/p_info/b_info");
}
fi->seek(-(off_t)sizeof(struct b_info), SEEK_CUR); // hdr.b_info was a peek
// The default layout for a shared library created by binutils-2.29
// (Fedora 28; 2018) has two PT_LOAD: permissions r-x and rw-.
@@ -7903,6 +7910,7 @@ void
PackLinuxElf64::sort_DT64_offsets(Elf64_Dyn const *const dynp0)
{
mb_dt_offsets.alloc(sizeof(unsigned) * sizeof(dt_keys)/sizeof(dt_keys[0]));
mb_dt_offsets.clear();
dt_offsets = (unsigned *)mb_dt_offsets.getVoidPtr();
unsigned n_off = 0, k;
for (unsigned j=0; ((k = dt_keys[j]), k); ++j) {
@@ -8115,7 +8123,7 @@ PackLinuxElf64::invert_pt_dynamic(Elf64_Dyn const *dynp, upx_uint64_t headway)
// (077 & (hash_32 >> gnu_shift))
// but compilers can be stupid.
if (31 < gnu_shift) {
throwCantPack("bad gnu_shift %d", gnu_shift);
throwCantPack("bad gnu_shift %#x", gnu_shift);
}
// unsigned const *const gashend = &hasharr[n_bucket];
// minimum, except:
@@ -8232,6 +8240,9 @@ Elf32_Sym const *PackLinuxElf32::elf_lookup(char const *name) const
unsigned const *const bitmask = &gashtab[4];
unsigned const *const buckets = &bitmask[n_bitmask];
unsigned const *const hasharr = &buckets[n_bucket];
if (31 < gnu_shift) {
throwCantPack("bad gnu_shift %#x", gnu_shift);
}
if ((file_size + file_image) <= (void const *)hasharr) {
char msg[80]; snprintf(msg, sizeof(msg),
"bad n_bucket %#x\n", n_bucket);
@@ -8313,6 +8324,9 @@ Elf64_Sym const *PackLinuxElf64::elf_lookup(char const *name) const
unsigned const *const buckets = (unsigned const *)&bitmask[n_bitmask];
unsigned const *const hasharr = &buckets[n_bucket];
if (31 < gnu_shift) {
throwCantPack("bad gnu_shift %#x", gnu_shift);
}
if ((file_size + file_image) <= (void const *)hasharr) {
char msg[80]; snprintf(msg, sizeof(msg),
"bad n_bucket %#x\n", n_bucket);
@@ -8604,7 +8618,7 @@ void PackLinuxElf32::unpack(OutputFile *fo)
}
}
int boff = find_le32(peek_arr, sizeof(peek_arr), size);
if (boff < 0) {
if (boff < 0 || sizeof(peek_arr) < (sizeof(*bp) + boff)) {
throwCantUnpack("b_info corrupted");
}
bp = (b_info *)(void *)&peek_arr[boff];
+10 -1
View File
@@ -382,9 +382,18 @@ PackLinuxI386::buildLinuxLoader(
if (bele->isBE()) // big endian - bswap32
properties = bswap32(properties);
linker->defineSymbol("lzma_properties", properties);
// These lengths assume only one block (typ. 524288 bytes: 0.5 MiB).
// i386 handles more than one block, and computes the lengths
// dynamically from struct b_info. Why do others need these?
if (linker->findSymbol("lzma_c_len", false)) {
// -2 for properties
linker->defineSymbol("lzma_c_len", ph.c_len - 2);
linker->defineSymbol("lzma_u_len", ph.u_len);
}
if (linker->findSymbol("lzma_u_len", false)) {
linker->defineSymbol("lzma_u_len", ph.c_len);
}
unsigned const stack = getDecompressorWrkmemSize();
linker->defineSymbol("lzma_stack_adjust", 0u - stack);
}
+3 -2
View File
@@ -117,7 +117,7 @@ static const Lc_seg_info lc_seg_info[2] = {
// > 0 : actual size
// < 0 : neg. of minimum size; total must be (0 mod 4) or (0 mod 8)
//
static const signed char lc_cmd_size[] = {
static const upx_int8_t lc_cmd_size[] = {
// 2021-12: gcc 11.2.1 does not support 'sizeof' in designated initializer.
// 2021-12: gcc 11.2.1 does not support [enum] as designator.
// 2021-12: "clang++-10 -std=c++14":
@@ -1645,7 +1645,8 @@ tribool PackMachBase<T>::canUnpack()
unsigned const ncmds = mhdri.ncmds;
int headway = (int)mhdri.sizeofcmds;
if (!ncmds || MAX_N_CMDS < ncmds || file_size < headway) {
if (!ncmds || MAX_N_CMDS < ncmds || file_size < headway
|| headway < 4*4 ) {
char msg[80]; snprintf(msg, sizeof(msg),
"bad Mach_header ncmds=%d sizeofcmds=0x%x", ncmds, headway);
throwCantUnpack(msg);
+1 -3
View File
@@ -75,9 +75,7 @@ static const CLANG_FORMAT_DUMMY_STATEMENT
**************************************************************************/
PackPs1::PackPs1(InputFile *f)
: super(f), isCon(!opt->ps1_exe.boot_only), is32Bit(!opt->ps1_exe.do_8bit), buildPart2(0),
foundBss(0), sa_cnt(0), overlap(0), sz_lunc(0), sz_lcpr(0), pad_code(0), bss_start(0),
bss_end(0) {
: super(f), isCon(!opt->ps1_exe.boot_only), is32Bit(!opt->ps1_exe.do_8bit) {
bele = &N_BELE_RTP::le_policy;
COMPILE_TIME_ASSERT(sizeof(ps1_exe_t) == 136)
+12 -12
View File
@@ -108,20 +108,20 @@ protected:
LE16 hi2, op3, lo2, op4;
};
ps1_exe_t ih, oh;
ps1_exe_hb_t bh;
ps1_exe_t ih = {}, oh = {};
ps1_exe_hb_t bh = {};
bool isCon;
bool is32Bit;
bool buildPart2;
bool foundBss;
unsigned ram_size;
unsigned sa_cnt, overlap;
unsigned sz_lunc, sz_lcpr;
unsigned pad_code;
unsigned bss_start, bss_end;
bool isCon = false;
bool is32Bit = false;
bool buildPart2 = false;
bool foundBss = false;
unsigned ram_size = 0;
unsigned sa_cnt = 0, overlap = 0;
unsigned sz_lunc = 0, sz_lcpr = 0;
unsigned pad_code = 0;
unsigned bss_start = 0, bss_end = 0;
// filesize-PS_HDR_SIZE
unsigned fdata_size;
unsigned fdata_size = 0;
};
/* vim:set ts=4 sw=4 et: */
+1 -1
View File
@@ -70,7 +70,7 @@ protected:
byte ___[12]; // esp,numfixups,flags
LE32 relocsize;
};
tmt_header_t ih, oh;
tmt_header_t ih = {}, oh = {};
};
/* vim:set ts=4 sw=4 et: */
+1 -1
View File
@@ -71,7 +71,7 @@ protected:
BE16 fh_reloc;
};
tos_header_t ih, oh;
tos_header_t ih = {}, oh = {};
// symbols for buildLoader()
struct LinkerSymbols {
+5 -3
View File
@@ -481,7 +481,7 @@ unsigned PackUnix::unpackExtent(unsigned wanted, OutputFile *fo,
int const sz_cpr = ph.c_len = get_te32(&hdr.sz_cpr);
ph.filter_cto = hdr.b_cto8;
if (sz_unc == 0) { // must never happen while 0!=wanted
if (sz_unc == 0 || M_LZMA < hdr.b_method) {
throwCantUnpack("corrupt b_info");
break;
}
@@ -491,8 +491,10 @@ unsigned PackUnix::unpackExtent(unsigned wanted, OutputFile *fo,
throwCantUnpack("corrupt b_info");
// place the input for overlapping de-compression
// FIXME: inlen cheats OVERHEAD; assumes small wanted peek length
int j = inlen + blocksize + OVERHEAD - sz_cpr;
int j = inlen + sz_unc + OVERHEAD - sz_cpr;
if (ibuf.getSize() < (unsigned)(j + sz_cpr)) {
throwCantUnpack("corrupt b_info");
}
fi->readx(ibuf+j, sz_cpr);
total_in += sz_cpr;
// update checksum of compressed data
+6 -2
View File
@@ -267,7 +267,7 @@ int PackVmlinuzI386::decompressKernel()
fd_pos = -1;
// open
fi->seek(gzoff, SEEK_SET);
fd = dup(fi->getFd());
fd = fi->dupFd();
if (fd < 0)
break;
gzFile zf = gzdopen(fd, "rb");
@@ -599,8 +599,12 @@ void PackBvmlinuzI386::pack(OutputFile *fo)
properties = bswap32(properties);
linker->defineSymbol("lzma_properties", properties);
// -2 for properties
if (linker->findSymbol("lzma_c_len", false)) {
linker->defineSymbol("lzma_c_len", ph.c_len - 2);
}
if (linker->findSymbol("lzma_u_len", false)) {
linker->defineSymbol("lzma_u_len", ph.u_len);
}
unsigned const stack = getDecompressorWrkmemSize();
linker->defineSymbol("lzma_stack_adjust", 0u - stack);
}
@@ -849,7 +853,7 @@ int PackVmlinuzARMEL::decompressKernel()
fd_pos = -1;
// open
fi->seek(gzoff, SEEK_SET);
fd = dup(fi->getFd());
fd = fi->dupFd();
if (fd < 0)
break;
gzFile zf = gzdopen(fd, "rb");
+4
View File
@@ -203,9 +203,13 @@ void PackW64PeAmd64::defineSymbols(unsigned ncsection, unsigned upxsection, unsi
}
if (M_IS_LZMA(ph.method)) {
if (linker->findSymbol("lzma_c_len", false)) {
linker->defineSymbol("lzma_c_len", ph.c_len - 2);
}
if (linker->findSymbol("lzma_u_len", false)) {
linker->defineSymbol("lzma_u_len", ph.u_len);
}
}
linker->defineSymbol("filter_buffer_start", ih.codebase - rvamin);
// in case of overlapping decompression, this hack is needed,
+1
View File
@@ -743,6 +743,7 @@ tribool PackWcle::canUnpack() {
return readPackHeader(len) ? 1 : -1;
}
/*static*/
void PackWcle::virt2rela(const le_object_table_entry_t *entr, unsigned *objn, unsigned *addr) {
for (; *objn > 1; objn[0]--) {
if (entr[*objn - 1].my_base_address > *addr)
+13 -36
View File
@@ -57,9 +57,9 @@ void Packer::assertPacker() const {
assert(getVersion() >= 11);
assert(getVersion() <= 14);
assert(strlen(getName()) <= 15);
// info: 36 is the limit for show_all_packers() in help.cpp, but 32 should be enough
assert(strlen(getFullName(opt)) <= 32);
// info: 36 is the limit for show_all_packers() in help.cpp, but 32 should be enough for now
assert(strlen(getFullName(nullptr)) <= 32);
assert(strlen(getFullName(opt)) <= 32);
if (bele == nullptr)
fprintf(stderr, "%s\n", getName());
assert(bele != nullptr);
@@ -469,33 +469,10 @@ unsigned Packer::getRandomId() const {
if (opt->debug.disable_random_id)
return 0x01020304;
unsigned id = 0;
#if 0 && defined(__unix__)
// Don't consume precious bytes from /dev/urandom.
int fd = open("/dev/urandom", O_RDONLY | O_BINARY);
if (fd < 0)
fd = open("/dev/random", O_RDONLY | O_BINARY);
if (fd >= 0) {
if (read(fd, &id, 4) != 4)
id = 0;
close(fd);
}
#endif
while (id == 0) {
#if (!(HAVE_GETTIMEOFDAY) || ((ACC_OS_DOS32) && defined(__DJGPP__))) && !defined(__wasi__)
id ^= (unsigned) time(nullptr);
id ^= ((unsigned) clock()) << 12;
#else
struct timeval tv;
gettimeofday(&tv, nullptr);
id ^= (unsigned) tv.tv_sec;
id ^= ((unsigned) tv.tv_usec) << 12; // shift into high-bits
#endif
#if HAVE_GETPID
id ^= (unsigned) getpid();
#endif
id ^= (unsigned) fi->st.st_ino;
id ^= (unsigned) fi->st.st_atime;
id ^= (unsigned) rand();
id ^= (unsigned) upx_rand();
}
return id;
}
@@ -947,10 +924,10 @@ int Packer::prepareMethods(int *methods, int ph_method, const int *all_methods)
}
// debug
if (opt->debug.use_random_method && nmethods >= 2) {
int method = methods[rand() % nmethods];
int method = methods[upx_rand() % nmethods];
NO_printf("\nuse_random_method = %#x (%d)\n", method, nmethods);
methods[0] = method;
nmethods = 1;
NO_printf("\nuse_random_method = %d\n", method);
}
return nmethods;
}
@@ -1015,12 +992,12 @@ done:
filters[nfilters++] = 0;
// debug
if (opt->debug.use_random_filter && nfilters >= 3 && filters[nfilters - 1] == 0) {
int filter_id = filters[rand() % (nfilters - 1)];
int filter_id = filters[upx_rand() % (nfilters - 1)];
if (filter_id > 0) {
NO_printf("\nuse_random_filter = %#x (%d)\n", filter_id, nfilters - 1);
filters[0] = filter_id;
filters[1] = 0;
nfilters = 2;
NO_printf("\nuse_random_filter = %d\n", filter_id);
}
}
return nfilters;
@@ -1054,14 +1031,14 @@ void Packer::compressWithFilters(byte *i_ptr,
assert(orig_ft.id == 0);
// prepare methods and filters
int methods[256];
int methods[MAX_METHODS];
int nmethods = prepareMethods(methods, ph.method, getCompressionMethods(M_ALL, ph.level));
assert(nmethods > 0);
assert(nmethods < 256);
int filters[256];
assert_noexcept(nmethods > 0);
assert_noexcept(nmethods < (int) MAX_METHODS);
int filters[MAX_FILTERS];
int nfilters = prepareFilters(filters, filter_strategy, getFilters());
assert(nfilters > 0);
assert(nfilters < 256);
assert_noexcept(nfilters > 0);
assert_noexcept(nfilters < (int) MAX_FILTERS);
#if 0
printf("compressWithFilters: m(%d):", nmethods);
for (int i = 0; i < nmethods; i++)
+4
View File
@@ -76,6 +76,10 @@ public:
virtual void doList() = 0;
virtual void doFileInfo() = 0;
// arbitrary limits, increase as needed
static constexpr unsigned MAX_METHODS = 8; // for getCompressionMethods()
static constexpr unsigned MAX_FILTERS = 16; // for getFilters()
protected:
InputFile *const fi; // reference
union { // unnamed union
+6 -4
View File
@@ -33,10 +33,8 @@
// compression method util
**************************************************************************/
/*static*/ bool Packer::isValidCompressionMethod(int method) {
if (M_IS_LZMA(method))
return true;
return method >= M_NRV2B_LE32 && method <= M_LZMA;
/*static*/ bool Packer::isValidCompressionMethod(int m) {
return M_IS_LZMA(m) || M_IS_NRV2B(m) || M_IS_NRV2D(m) || M_IS_NRV2E(m);
}
const int *Packer::getDefaultCompressionMethods_8(int method, int level, int small) const {
@@ -264,8 +262,12 @@ void Packer::defineDecompressorSymbols() {
linker->defineSymbol("lzma_properties", properties);
// len - 2 because of properties
if (linker->findSymbol("lzma_c_len", false)) {
linker->defineSymbol("lzma_c_len", ph.c_len - 2);
}
if (linker->findSymbol("lzma_u_len", false)) {
linker->defineSymbol("lzma_u_len", ph.u_len);
}
unsigned stack = getDecompressorWrkmemSize();
linker->defineSymbol("lzma_stack_adjust", 0u - stack);
+1 -1
View File
@@ -99,7 +99,7 @@ int PackHeader::getPackHeaderSize() const {
**************************************************************************/
void PackHeader::putPackHeader(SPAN_S(byte) p) const {
// NOTE: It is the caller's responsbility to ensure the buffer p has
// NOTE: It is the caller's responsibility to ensure the buffer p has
// sufficient space for the header.
assert(get_le32(p) == UPX_MAGIC_LE32);
if (get_le32(p + 4) != UPX_MAGIC2_LE32) {
+7 -3
View File
@@ -49,8 +49,8 @@ struct PackHeader final {
// enum { magic = UPX_MAGIC_LE32 };
int version;
int format; // executable format UPX_F_xxx
int method; // compresison method M_xxx
int level; // compresison level 1..10
int method; // compression method M_xxx
int level; // compression level 1..10
unsigned u_len;
unsigned c_len;
unsigned u_adler;
@@ -84,10 +84,14 @@ struct PackHeader final {
// info fields set by Packer::compressWithFilters()
unsigned overlap_overhead;
private: // UPX conventions
UPX_CXX_DISABLE_ADDRESS(PackHeader)
UPX_CXX_DISABLE_NEW_DELETE(PackHeader)
};
/*************************************************************************
// ph default util functions
// PackHeader ph util functions
**************************************************************************/
bool ph_is_forced_method(int method) noexcept; // predicate
+5
View File
@@ -59,6 +59,11 @@ private:
// setup local options for each file
Options local_options;
Options *saved_opt = nullptr;
private: // UPX conventions
UPX_CXX_DISABLE_ADDRESS(PackMaster)
UPX_CXX_DISABLE_COPY_MOVE(PackMaster)
UPX_CXX_DISABLE_NEW_DELETE(PackMaster)
};
/* vim:set ts=4 sw=4 et: */
+10 -8
View File
@@ -215,7 +215,7 @@ int PeFile::readFileHeader() {
PeFile::Interval::Interval(SPAN_P(byte) b) : base(b) {}
PeFile::Interval::~Interval() noexcept { free(ivarr); }
PeFile::Interval::~Interval() noexcept { ::free(ivarr); }
int __acc_cdecl_qsort PeFile::Interval::compare(const void *p1, const void *p2) {
const interval *i1 = (const interval *) p1;
@@ -512,10 +512,10 @@ void PeFile32::processRelocs() // pass1
infoWarning("skipping unsupported relocation type %d (%d)", ic, counts[ic]);
LE32 *fix[4];
upx::ArrayDeleter<LE32 **> fixdel{fix, 0}; // don't leak memory
auto fix_deleter = upx::ArrayDeleter(fix, 0); // don't leak memory
for (unsigned ic = 0; ic <= IMAGE_REL_BASED_HIGHLOW; ic++) {
fix[ic] = New(LE32, counts[ic]);
fixdel.count += 1;
fix_deleter.count += 1;
}
unsigned xcounts[4];
@@ -614,10 +614,10 @@ void PeFile64::processRelocs() // pass1
infoWarning("skipping unsupported relocation type %d (%d)", ic, counts[ic]);
LE32 *fix[16];
upx::ArrayDeleter<LE32 **> fixdel{fix, 0}; // don't leak memory
auto fix_deleter = upx::ArrayDeleter(fix, 0); // don't leak memory
for (unsigned ic = 0; ic < 16; ic++) {
fix[ic] = New(LE32, counts[ic]);
fixdel.count += 1;
fix_deleter.count += 1;
}
unsigned xcounts[16];
@@ -859,6 +859,7 @@ public:
outputlen = 0;
// sort the sections by name before adding them all
// NOLINTNEXTLINE(bugprone-multi-level-implicit-pointer-conversion)
upx_qsort(sections, nsections, sizeof(Section *), ImportLinker::compare);
for (unsigned ic = 0; ic < nsections; ic++)
@@ -1041,6 +1042,7 @@ unsigned PeFile::processImports0(ord_mask_t ord_mask) // pass 1
mb_oimport.clear();
oimport = mb_oimport;
// NOLINTNEXTLINE(bugprone-multi-level-implicit-pointer-conversion)
upx_qsort(idlls, dllnum, sizeof(*idlls), UDll::compare);
info("Processing imports: %d DLLs", dllnum);
@@ -1175,14 +1177,14 @@ PeFile::Export::Export(char *_base) : base(_base), iv((byte *) _base) {
}
PeFile::Export::~Export() noexcept {
free(ename);
::free(ename);
delete[] functionptrs;
delete[] ordinals;
if (names) {
const unsigned limit = edir.names + edir.functions;
for (unsigned ic = 0; ic < limit; ic++)
if (names[ic])
free(names[ic]); // allocated by strdup()
::free(names[ic]); // allocated by strdup()
delete[] names;
}
}
@@ -1924,7 +1926,7 @@ void PeFile::processResources(Resource *res) {
SPAN_S_VAR(byte, ores, oresources + res->dirsize());
char *keep_icons = nullptr; // icon ids in the first icon group
upx::ArrayDeleter<char **> keep_icons_deleter{&keep_icons, 1}; // don't leak memory
const auto keep_icons_deleter = upx::ArrayDeleter(&keep_icons, 1); // don't leak memory
unsigned iconsin1stdir = 0;
if (opt->win32_pe.compress_icons == 2)
while (res->next()) // there is no rewind() in Resource
+2 -2
View File
@@ -579,7 +579,7 @@ protected:
ddirs_t ddirs[16];
};
pe_header_t ih, oh;
pe_header_t ih = {}, oh = {};
};
class PeFile64 : public PeFile {
@@ -640,7 +640,7 @@ protected:
ddirs_t ddirs[16];
};
pe_header_t ih, oh;
pe_header_t ih = {}, oh = {};
};
/* vim:set ts=4 sw=4 et: */
+1 -1
View File
@@ -3,7 +3,7 @@
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
#
# NOTE: see misc/podman/rebuild-stubs/20-image-run-shell.sh
# NOTE: see misc/podman/rebuild-stubs/30-rebuild-stubs.sh
# how to rebuild the UPX stubs from source code
MAKEFLAGS += -rR
+333 -334
View File
@@ -1,5 +1,5 @@
/* arm.v4a-linux.elf-fold.h
created from arm.v4a-linux.elf-fold.bin, 6724 (0x1a44) bytes
created from arm.v4a-linux.elf-fold.bin, 6708 (0x1a34) bytes
This file is part of the UPX executable compressor.
@@ -32,14 +32,14 @@
/* clang-format off */
#define STUB_ARM_V4A_LINUX_ELF_FOLD_SIZE 6724
#define STUB_ARM_V4A_LINUX_ELF_FOLD_ADLER32 0xeecde528
#define STUB_ARM_V4A_LINUX_ELF_FOLD_CRC32 0xccec9b98
#define STUB_ARM_V4A_LINUX_ELF_FOLD_SIZE 6708
#define STUB_ARM_V4A_LINUX_ELF_FOLD_ADLER32 0xf257dabf
#define STUB_ARM_V4A_LINUX_ELF_FOLD_CRC32 0x950a6a49
unsigned char stub_arm_v4a_linux_elf_fold[6724] = {
unsigned char stub_arm_v4a_linux_elf_fold[6708] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 1, 0, 40, 0, 1, 0, 0, 0, 64,128, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 92, 11, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
/* 0x0020 */ 76, 11, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
/* 0x0030 */ 7, 0, 4, 0, 34, 0, 0, 0, 4, 32,160,225, 5, 48,160,225,
/* 0x0040 */ 240, 31,189,232, 13, 16,160,225, 1,218, 77,226, 13, 0,160,225,
/* 0x0050 */ 252, 31, 45,233, 4, 48,145,228, 0, 0, 83,227, 4, 48,128,228,
@@ -127,335 +127,334 @@ unsigned char stub_arm_v4a_linux_elf_fold[6724] = {
/* 0x0570 */ 239, 0, 0,235, 4, 48,157,229, 6, 0,148,232, 3, 32,130,224,
/* 0x0580 */ 1, 16, 99,224, 6, 0,132,232, 0, 48,148,229, 0, 0, 83,227,
/* 0x0590 */ 14, 1, 0, 26, 20,208,141,226,240,128,189,232, 85, 80, 88, 33,
/* 0x05a0 */ 240, 79, 45,233, 1,160,160,225, 28, 16,145,229, 44,208, 77,226,
/* 0x05a0 */ 240, 79, 45,233, 1,128,160,225, 28, 16,145,229, 44,208, 77,226,
/* 0x05b0 */ 0, 0, 82,227, 12, 32,141,229, 16, 0,141,229, 8, 48,141,229,
/* 0x05c0 */ 1, 80,138,224,113, 1, 0, 10, 80, 32,157,229, 0, 0,146,229,
/* 0x05d0 */ 176, 49,208,225, 52, 16,128,226, 2, 0, 83,227, 40, 48,145, 21,
/* 0x05e0 */ 8, 0,145, 5, 0, 48,160, 3, 0, 0, 99, 16, 20, 16,145,229,
/* 0x05f0 */ 20, 48,141, 5, 20, 0,141, 21,254,255,255,235,152, 1, 0,234,
/* 0x0600 */ 176, 49,218,225,188, 34,218,225, 3, 0, 83,227, 12, 16,157,229,
/* 0x0610 */ 16,224,160, 19, 0,224,160, 3, 1,192, 66,226, 5, 0,160,225,
/* 0x0620 */ 0, 64,224,227,137, 1, 0,234, 0, 48,144,229, 1, 0, 83,227,
/* 0x0630 */ 135, 1, 0, 26, 20, 48,144,229, 0, 0, 83,227,135, 1, 0, 10,
/* 0x0640 */ 8, 32,144,229, 2, 48,131,224, 3, 0, 81,225, 3, 16,160, 49,
/* 0x0650 */ 2, 0, 84,225, 2, 64,160, 33, 32, 0,128,226, 1,192, 76,226,
/* 0x0660 */ 0, 0, 92,227,123, 1, 0,170,255, 78,196,227, 15, 64,196,227,
/* 0x0670 */ 1, 16,100,224,255, 30,129,226, 15, 16,129,226,255, 30,193,227,
/* 0x0680 */ 15, 16,193,227, 14, 48,160,225, 4, 0,160,225, 0, 32,160,227,
/* 0x0690 */ 254,255,255,235, 0, 0,100,224, 20, 0,141,229, 0,192,160,227,
/* 0x06a0 */ 32, 80,133,226, 24,192,141,229, 66, 2, 0,234, 12, 0,157,229,
/* 0x06b0 */ 0, 0, 80,227,169, 1, 0, 10, 32, 48, 21,229, 6, 0, 83,227,
/* 0x06c0 */ 169, 1, 0, 26, 24, 32, 21,229, 20, 48,157,229, 8, 0,157,229,
/* 0x06d0 */ 2, 32,131,224, 3, 16,160,227,211, 0, 0,235, 62, 2, 0,234,
/* 0x06e0 */ 32, 48, 21,229, 1, 0, 83,227, 62, 2, 0, 26, 12, 48, 21,229,
/* 0x06f0 */ 0, 0, 83,227, 62, 2, 0, 10, 12,192,157,229, 0, 0, 92,227,
/* 0x0700 */ 197, 1, 0, 10, 28, 48, 21,229, 0, 0, 83,227,197, 1, 0, 26,
/* 0x0710 */ 28, 48,154,229, 24, 32, 21,229, 20, 0,157,229, 3, 32,130,224,
/* 0x0720 */ 2, 32,128,224, 3, 16,160,227, 8, 0,157,229,211, 0, 0,235,
/* 0x0730 */ 8, 0,157,229, 5, 16,160,227,188, 34,218,225,211, 0, 0,235,
/* 0x0740 */ 8, 0,157,229, 4, 16,160,227,186, 34,218,225,211, 0, 0,235,
/* 0x0750 */ 8, 16, 21,229,148, 34,159,229, 7, 48, 1,226, 3, 49,160,225,
/* 0x0760 */ 50, 67,160,225, 24, 48, 21,229, 20, 32,157,229, 12,192,157,229,
/* 0x0770 */ 3,176,130,224, 11, 42,160,225, 16, 48, 21,229, 12, 0, 21,229,
/* 0x0780 */ 34, 42,160,225, 0, 0, 92,227, 36, 48,141,229, 40,176,141,229,
/* 0x0790 */ 2,128,131,224, 7,144, 4,226, 32, 0,141,229, 11, 96, 98,224,
/* 0x07a0 */ 235, 1, 0, 10, 1, 0, 17,227, 3, 32,160, 3, 7, 32,160, 19,
/* 0x07b0 */ 6, 0,160,225, 8, 16,160,225, 16, 48,160,227,254,255,255,235,
/* 0x07c0 */ 0, 0, 86,225, 46, 2, 0, 26, 84, 32,157,229, 4, 48, 20,226,
/* 0x07d0 */ 2, 48,160, 17, 12, 0,157,229, 36, 16,141,226, 16, 32,157,229,
/* 0x07e0 */ 7, 1, 0,235,247, 1, 0,234, 28,192, 21,229, 12,192, 98,224,
/* 0x07f0 */ 4,192,141,229, 16,192,157,229, 6, 0,160,225, 8, 16,160,225,
/* 0x0800 */ 9, 32,160,225, 18, 48,160,227, 0,192,141,229,254,255,255,235,
/* 0x0810 */ 0, 0, 86,225, 46, 2, 0, 26, 0, 48,104,226, 3,122,160,225,
/* 0x0820 */ 2, 0, 25,227, 39,122,160,225, 4, 2, 0, 10, 0, 0, 87,227,
/* 0x0830 */ 4, 2, 0, 10, 8, 16,134,224, 7, 32,160,225, 0, 48,160,227,
/* 0x0840 */ 1, 32, 82,226, 1, 48,193,228, 0, 2, 0, 26, 12, 0,157,229,
/* 0x0850 */ 0, 0, 80,227, 48, 2, 0, 10,254,255,255,235, 32, 48, 21,229,
/* 0x0860 */ 1, 0, 83,227, 28, 0,141,229, 40, 2, 0, 26, 8, 48, 21,229,
/* 0x0870 */ 1, 0, 19,227, 40, 2, 0, 10, 16, 48, 21,229, 12, 32, 21,229,
/* 0x0880 */ 3, 0, 82,225, 24, 48, 21,229, 79, 2, 0, 26, 3, 48,130,224,
/* 0x0890 */ 20, 32,157,229, 3, 48,131,226, 3, 48,130,224, 3, 0,195,227,
/* 0x08a0 */ 0, 48, 96,226, 3, 58,160,225, 35, 58,160,225, 11, 0, 83,227,
/* 0x08b0 */ 79, 2, 0,154, 28, 48,157,229, 0, 48,128,229, 48, 49,159,229,
/* 0x08c0 */ 4, 48,128,229, 44, 49,159,229, 12, 16,128,226, 8, 48,128,229,
/* 0x08d0 */ 0, 64,160,225,254,255,255,235,104, 2, 0,234, 6, 0,160,225,
/* 0x08e0 */ 8, 16,160,225, 9, 32,160,225,254,255,255,235, 0, 0, 80,227,
/* 0x08f0 */ 48, 2, 0, 10,127, 0,160,227,254,255,255,235, 32,192,157,229,
/* 0x0900 */ 7, 48,136,224, 12, 16,139,224, 3, 64,134,224, 1, 0, 84,225,
/* 0x0910 */ 62, 2, 0, 42, 1, 16,100,224, 9, 32,160,225, 4, 0,160,225,
/* 0x0920 */ 16, 48,160,227,254,255,255,235, 0, 0, 84,225, 62, 2, 0, 10,
/* 0x0930 */ 61, 2, 0,234, 24, 0,157,229, 1, 0,128,226, 24, 0,141,229,
/* 0x0940 */ 32, 80,133,226,188, 50,218,225, 24, 32,157,229, 3, 0, 82,225,
/* 0x0950 */ 156, 1, 0,186, 80, 48,157,229, 0, 0, 83,227, 20,192,157, 21,
/* 0x0960 */ 0,192,131, 21, 20, 32,157,229, 24, 0,154,229, 0, 0,130,224,
/* 0x0970 */ 44,208,141,226,240,143,189,232, 0,224,160,227, 0,192,224,227,
/* 0x0980 */ 14, 0,160,225, 1, 26,160,227, 7, 32,160,227, 34, 48,160,227,
/* 0x0990 */ 0, 80,141,232,254,255,255,235, 0, 0, 80,227, 40, 2, 0, 10,
/* 0x09a0 */ 3, 48,128,226, 3, 64,195,227, 68, 48,159,229, 28, 0,157,229,
/* 0x09b0 */ 4, 48,132,229, 60, 48,159,229, 0, 0,132,229, 12, 16,132,226,
/* 0x09c0 */ 4, 0,160,225, 8, 48,132,229,254,255,255,235, 4, 0,160,225,
/* 0x09d0 */ 12, 16,160,227, 5, 32,160,227,254,255,255,235, 4, 32,160,225,
/* 0x09e0 */ 8, 0,157,229, 0, 16,160,227,211, 0, 0,235, 40, 2, 0,234,
/* 0x09f0 */ 64, 98, 81,115, 3, 0,189,232, 14,240,160,225,240, 71, 45,233,
/* 0x0a00 */ 12,208, 77,226, 52, 96,141,226, 0,144,160,225, 1,112,160,225,
/* 0x0a10 */ 3,128,160,225, 6, 0,160,225, 44, 16,141,226, 0, 48,160,227,
/* 0x0a20 */ 48,160,157,229, 2, 80,160,225, 52, 64,157,229, 7, 1, 0,235,
/* 0x0a30 */ 60, 48,157,229, 12,224,141,226, 56,192,157,229, 4, 48, 46,229,
/* 0x0a40 */ 12,192,100,224, 6, 32,160,225, 10, 16,160,225, 9, 48,160,225,
/* 0x0a50 */ 5, 0,160,225, 56,192,141,229, 0,224,141,229, 52,112,141,229,
/* 0x0a60 */ 4,128,141,229, 89, 1, 0,235, 0, 64,160,225, 9, 16,160,227,
/* 0x0a70 */ 9, 0,160,225, 4, 32,160,225,211, 0, 0,235,188, 2,218,225,
/* 0x0a80 */ 52, 32,138,226, 0, 16,160,227,184, 2, 0,234, 0, 48,146,229,
/* 0x0a90 */ 3, 0, 83,227,182, 2, 0, 26, 8, 48,146,229, 8, 0,157,229,
/* 0x0aa0 */ 0, 16,160,227, 0, 0,131,224, 1, 32,160,225,254,255,255,235,
/* 0x0ab0 */ 0, 80, 80,226,164, 2, 0,186, 10, 16,160,225, 2, 44,160,227,
/* 0x0ac0 */ 254,255,255,235, 2, 12, 80,227,166, 2, 0, 10,127, 0,160,227,
/* 0x0ad0 */ 254,255,255,235, 0,224,160,227, 14, 32,160,225, 8,192,141,226,
/* 0x0ae0 */ 10, 16,160,225, 9, 48,160,225, 5, 0,160,225, 0, 80,141,232,
/* 0x0af0 */ 89, 1, 0,235, 7, 16,160,227, 0, 64,160,225, 8, 32,157,229,
/* 0x0b00 */ 9, 0,160,225,211, 0, 0,235, 5, 0,160,225,254,255,255,235,
/* 0x0b10 */ 186, 2, 0,234, 32, 32,130,226, 1, 16,129,226, 0, 0, 81,225,
/* 0x0b20 */ 148, 2, 0,186, 4, 0,160,225, 12,208,141,226,240,135,189,232,
/* 0x0b30 */ 0, 46,115,121,109,116, 97, 98, 0, 46,115,116,114,116, 97, 98,
/* 0x0b40 */ 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,114,101,108, 46,
/* 0x0b50 */ 116,101,120,116, 0, 46, 98,115,115, 0, 0, 0, 0, 0, 0, 0,
/* 0x05c0 */ 1, 80,136,224,109, 1, 0, 10, 80, 32,157,229, 0, 0,146,229,
/* 0x05d0 */ 176, 49,208,225, 2, 0, 83,227, 92, 48,144, 21, 0, 48,160, 3,
/* 0x05e0 */ 20, 48,141, 5, 0, 0, 99, 16,147, 1, 0, 26,148, 1, 0,234,
/* 0x05f0 */ 176, 49,216,225,188, 34,216,225, 3, 0, 83,227, 12, 16,157,229,
/* 0x0600 */ 16,224,160, 19, 0,224,160, 3, 1,192, 66,226, 5, 0,160,225,
/* 0x0610 */ 0, 64,224,227,133, 1, 0,234, 0, 48,144,229, 1, 0, 83,227,
/* 0x0620 */ 131, 1, 0, 26, 20, 48,144,229, 0, 0, 83,227,131, 1, 0, 10,
/* 0x0630 */ 8, 32,144,229, 2, 48,131,224, 3, 0, 81,225, 3, 16,160, 49,
/* 0x0640 */ 2, 0, 84,225, 2, 64,160, 33, 32, 0,128,226, 1,192, 76,226,
/* 0x0650 */ 0, 0, 92,227,119, 1, 0,170,255, 78,196,227, 15, 64,196,227,
/* 0x0660 */ 1, 16,100,224,255, 30,129,226, 15, 16,129,226,255, 30,193,227,
/* 0x0670 */ 15, 16,193,227, 14, 48,160,225, 4, 0,160,225, 0, 32,160,227,
/* 0x0680 */ 254,255,255,235, 0, 0,100,224, 20, 0,141,229, 0,192,160,227,
/* 0x0690 */ 32, 80,133,226, 24,192,141,229, 62, 2, 0,234, 12, 0,157,229,
/* 0x06a0 */ 0, 0, 80,227,165, 1, 0, 10, 32, 48, 21,229, 6, 0, 83,227,
/* 0x06b0 */ 165, 1, 0, 26, 24, 32, 21,229, 20, 48,157,229, 8, 0,157,229,
/* 0x06c0 */ 2, 32,131,224, 3, 16,160,227,211, 0, 0,235, 58, 2, 0,234,
/* 0x06d0 */ 32, 48, 21,229, 1, 0, 83,227, 58, 2, 0, 26, 12, 48, 21,229,
/* 0x06e0 */ 0, 0, 83,227, 58, 2, 0, 10, 12,192,157,229, 0, 0, 92,227,
/* 0x06f0 */ 193, 1, 0, 10, 28, 48, 21,229, 0, 0, 83,227,193, 1, 0, 26,
/* 0x0700 */ 28, 48,152,229, 24, 32, 21,229, 20, 0,157,229, 3, 32,130,224,
/* 0x0710 */ 2, 32,128,224, 3, 16,160,227, 8, 0,157,229,211, 0, 0,235,
/* 0x0720 */ 8, 0,157,229, 5, 16,160,227,188, 34,216,225,211, 0, 0,235,
/* 0x0730 */ 8, 0,157,229, 4, 16,160,227,186, 34,216,225,211, 0, 0,235,
/* 0x0740 */ 8, 16, 21,229,148, 34,159,229, 7, 48, 1,226, 3, 49,160,225,
/* 0x0750 */ 50, 67,160,225, 24, 48, 21,229, 20, 32,157,229, 12,192,157,229,
/* 0x0760 */ 3,176,130,224, 11, 42,160,225, 16, 48, 21,229, 12, 0, 21,229,
/* 0x0770 */ 34, 42,160,225, 0, 0, 92,227, 36, 48,141,229, 40,176,141,229,
/* 0x0780 */ 2,160,131,224, 7,144, 4,226, 32, 0,141,229, 11, 96, 98,224,
/* 0x0790 */ 231, 1, 0, 10, 1, 0, 17,227, 3, 32,160, 3, 7, 32,160, 19,
/* 0x07a0 */ 6, 0,160,225, 10, 16,160,225, 16, 48,160,227,254,255,255,235,
/* 0x07b0 */ 0, 0, 86,225, 42, 2, 0, 26, 84, 32,157,229, 4, 48, 20,226,
/* 0x07c0 */ 2, 48,160, 17, 12, 0,157,229, 36, 16,141,226, 16, 32,157,229,
/* 0x07d0 */ 7, 1, 0,235,243, 1, 0,234, 28,192, 21,229, 12,192, 98,224,
/* 0x07e0 */ 4,192,141,229, 16,192,157,229, 6, 0,160,225, 10, 16,160,225,
/* 0x07f0 */ 9, 32,160,225, 18, 48,160,227, 0,192,141,229,254,255,255,235,
/* 0x0800 */ 0, 0, 86,225, 42, 2, 0, 26, 0, 48,106,226, 3,122,160,225,
/* 0x0810 */ 2, 0, 25,227, 39,122,160,225, 0, 2, 0, 10, 0, 0, 87,227,
/* 0x0820 */ 0, 2, 0, 10, 10, 16,134,224, 7, 32,160,225, 0, 48,160,227,
/* 0x0830 */ 1, 32, 82,226, 1, 48,193,228,252, 1, 0, 26, 12, 0,157,229,
/* 0x0840 */ 0, 0, 80,227, 44, 2, 0, 10,254,255,255,235, 32, 48, 21,229,
/* 0x0850 */ 1, 0, 83,227, 28, 0,141,229, 36, 2, 0, 26, 8, 48, 21,229,
/* 0x0860 */ 1, 0, 19,227, 36, 2, 0, 10, 16, 48, 21,229, 12, 32, 21,229,
/* 0x0870 */ 3, 0, 82,225, 24, 48, 21,229, 75, 2, 0, 26, 3, 48,130,224,
/* 0x0880 */ 20, 32,157,229, 3, 48,131,226, 3, 48,130,224, 3, 0,195,227,
/* 0x0890 */ 0, 48, 96,226, 3, 58,160,225, 35, 58,160,225, 11, 0, 83,227,
/* 0x08a0 */ 75, 2, 0,154, 28, 48,157,229, 0, 48,128,229, 48, 49,159,229,
/* 0x08b0 */ 4, 48,128,229, 44, 49,159,229, 12, 16,128,226, 8, 48,128,229,
/* 0x08c0 */ 0, 64,160,225,254,255,255,235,100, 2, 0,234, 6, 0,160,225,
/* 0x08d0 */ 10, 16,160,225, 9, 32,160,225,254,255,255,235, 0, 0, 80,227,
/* 0x08e0 */ 44, 2, 0, 10,127, 0,160,227,254,255,255,235, 32,192,157,229,
/* 0x08f0 */ 7, 48,138,224, 12, 16,139,224, 3, 64,134,224, 1, 0, 84,225,
/* 0x0900 */ 58, 2, 0, 42, 1, 16,100,224, 9, 32,160,225, 4, 0,160,225,
/* 0x0910 */ 16, 48,160,227,254,255,255,235, 0, 0, 84,225, 58, 2, 0, 10,
/* 0x0920 */ 57, 2, 0,234, 24, 0,157,229, 1, 0,128,226, 24, 0,141,229,
/* 0x0930 */ 32, 80,133,226,188, 50,216,225, 24, 32,157,229, 3, 0, 82,225,
/* 0x0940 */ 152, 1, 0,186, 80, 48,157,229, 0, 0, 83,227, 20,192,157, 21,
/* 0x0950 */ 0,192,131, 21, 20, 32,157,229, 24, 0,152,229, 0, 0,130,224,
/* 0x0960 */ 44,208,141,226,240,143,189,232, 0,224,160,227, 0,192,224,227,
/* 0x0970 */ 14, 0,160,225, 1, 26,160,227, 7, 32,160,227, 34, 48,160,227,
/* 0x0980 */ 0, 80,141,232,254,255,255,235, 0, 0, 80,227, 36, 2, 0, 10,
/* 0x0990 */ 3, 48,128,226, 3, 64,195,227, 68, 48,159,229, 28, 0,157,229,
/* 0x09a0 */ 4, 48,132,229, 60, 48,159,229, 0, 0,132,229, 12, 16,132,226,
/* 0x09b0 */ 4, 0,160,225, 8, 48,132,229,254,255,255,235, 4, 0,160,225,
/* 0x09c0 */ 12, 16,160,227, 5, 32,160,227,254,255,255,235, 4, 32,160,225,
/* 0x09d0 */ 8, 0,157,229, 0, 16,160,227,211, 0, 0,235, 36, 2, 0,234,
/* 0x09e0 */ 64, 98, 81,115, 3, 0,189,232, 14,240,160,225,240, 71, 45,233,
/* 0x09f0 */ 12,208, 77,226, 52, 96,141,226, 0,144,160,225, 1,112,160,225,
/* 0x0a00 */ 3,128,160,225, 6, 0,160,225, 44, 16,141,226, 0, 48,160,227,
/* 0x0a10 */ 48,160,157,229, 2, 80,160,225, 52, 64,157,229, 7, 1, 0,235,
/* 0x0a20 */ 60, 48,157,229, 12,224,141,226, 56,192,157,229, 4, 48, 46,229,
/* 0x0a30 */ 12,192,100,224, 6, 32,160,225, 10, 16,160,225, 9, 48,160,225,
/* 0x0a40 */ 5, 0,160,225, 56,192,141,229, 0,224,141,229, 52,112,141,229,
/* 0x0a50 */ 4,128,141,229, 89, 1, 0,235, 0, 64,160,225, 9, 16,160,227,
/* 0x0a60 */ 9, 0,160,225, 4, 32,160,225,211, 0, 0,235,188, 2,218,225,
/* 0x0a70 */ 52, 32,138,226, 0, 16,160,227,180, 2, 0,234, 0, 48,146,229,
/* 0x0a80 */ 3, 0, 83,227,178, 2, 0, 26, 8, 48,146,229, 8, 0,157,229,
/* 0x0a90 */ 0, 16,160,227, 0, 0,131,224, 1, 32,160,225,254,255,255,235,
/* 0x0aa0 */ 0, 80, 80,226,160, 2, 0,186, 10, 16,160,225, 2, 44,160,227,
/* 0x0ab0 */ 254,255,255,235, 2, 12, 80,227,162, 2, 0, 10,127, 0,160,227,
/* 0x0ac0 */ 254,255,255,235, 0,224,160,227, 14, 32,160,225, 8,192,141,226,
/* 0x0ad0 */ 10, 16,160,225, 9, 48,160,225, 5, 0,160,225, 0, 80,141,232,
/* 0x0ae0 */ 89, 1, 0,235, 7, 16,160,227, 0, 64,160,225, 8, 32,157,229,
/* 0x0af0 */ 9, 0,160,225,211, 0, 0,235, 5, 0,160,225,254,255,255,235,
/* 0x0b00 */ 182, 2, 0,234, 32, 32,130,226, 1, 16,129,226, 0, 0, 81,225,
/* 0x0b10 */ 144, 2, 0,186, 4, 0,160,225, 12,208,141,226,240,135,189,232,
/* 0x0b20 */ 0, 46,115,121,109,116, 97, 98, 0, 46,115,116,114,116, 97, 98,
/* 0x0b30 */ 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,114,101,108, 46,
/* 0x0b40 */ 116,101,120,116, 0, 46, 98,115,115, 0, 0, 0, 0, 0, 0, 0,
/* 0x0b50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0b60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0b70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0b80 */ 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,
/* 0x0b90 */ 64,128, 0, 0, 52, 0, 0, 0,252, 10, 0, 0, 0, 0, 0, 0,
/* 0x0ba0 */ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0,
/* 0x0bb0 */ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 22, 0, 0,
/* 0x0bc0 */ 112, 3, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0,
/* 0x0bd0 */ 8, 0, 0, 0, 37, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0,
/* 0x0be0 */ 0, 0, 0, 0, 48, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0bf0 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
/* 0x0c00 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 11, 0, 0,
/* 0x0c10 */ 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
/* 0x0c20 */ 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c30 */ 0, 0, 0, 0,116, 12, 0, 0,208, 6, 0, 0, 6, 0, 0, 0,
/* 0x0c40 */ 88, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0,
/* 0x0c50 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 19, 0, 0,
/* 0x0c60 */ 141, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
/* 0x0b70 */ 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0,
/* 0x0b80 */ 64,128, 0, 0, 52, 0, 0, 0,236, 10, 0, 0, 0, 0, 0, 0,
/* 0x0b90 */ 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0,
/* 0x0ba0 */ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196, 22, 0, 0,
/* 0x0bb0 */ 112, 3, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0,
/* 0x0bc0 */ 8, 0, 0, 0, 37, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0,
/* 0x0bd0 */ 0, 0, 0, 0, 32, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0be0 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0,
/* 0x0bf0 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 11, 0, 0,
/* 0x0c00 */ 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
/* 0x0c10 */ 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c20 */ 0, 0, 0, 0,100, 12, 0, 0,208, 6, 0, 0, 6, 0, 0, 0,
/* 0x0c30 */ 88, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0,
/* 0x0c40 */ 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 19, 0, 0,
/* 0x0c50 */ 141, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
/* 0x0c60 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c70 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c80 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c90 */ 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ca0 */ 3, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0cb0 */ 4, 0,241,255, 30, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
/* 0x0cc0 */ 0, 0,241,255, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0cd0 */ 2, 0, 1, 0, 38, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0,
/* 0x0ce0 */ 0, 0,241,255, 56, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0,
/* 0x0cf0 */ 0, 0,241,255, 70, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d00 */ 0, 0,241,255, 77, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d10 */ 0, 0,241,255, 85, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d20 */ 0, 0,241,255, 99, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d30 */ 0, 0,241,255,107, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d40 */ 0, 0,241,255,115, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d50 */ 0, 0,241,255,125, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d60 */ 0, 0,241,255,135, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d70 */ 0, 0,241,255,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d80 */ 0, 0,241,255,152, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d90 */ 0, 0,241,255,159, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
/* 0x0da0 */ 0, 0,241,255,168, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,
/* 0x0db0 */ 0, 0,241,255,182, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0dc0 */ 0, 0,241,255,194, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
/* 0x0dd0 */ 0, 0,241,255,204, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
/* 0x0de0 */ 0, 0,241,255,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0df0 */ 0, 0,241,255,223, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0e00 */ 0, 0,241,255,234, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
/* 0x0e10 */ 0, 0,241,255,244, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
/* 0x0e20 */ 0, 0,241,255,252, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
/* 0x0e30 */ 0, 0,241,255, 5, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
/* 0x0e40 */ 0, 0,241,255, 20, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
/* 0x0e50 */ 0, 0,241,255, 35, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0e60 */ 0, 0, 1, 0, 45, 1, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0e70 */ 0, 0,241,255, 51, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
/* 0x0e80 */ 0, 0, 1, 0, 62, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0e90 */ 0, 0,241,255, 69, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ea0 */ 0, 0,241,255, 76, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
/* 0x0eb0 */ 0, 0,241,255, 86, 1, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ec0 */ 0, 0,241,255, 91, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ed0 */ 0, 0,241,255, 98, 1, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ee0 */ 0, 0,241,255,105, 1, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ef0 */ 0, 0,241,255,113, 1, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
/* 0x0f00 */ 0, 0,241,255,122, 1, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
/* 0x0f10 */ 0, 0,241,255,130, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,
/* 0x0f20 */ 0, 0,241,255,135, 1, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0,
/* 0x0f30 */ 0, 0,241,255,140, 1, 0, 0,132, 0, 0, 0, 0, 0, 0, 0,
/* 0x0f40 */ 0, 0, 1, 0,148, 1, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0f50 */ 0, 0,241,255,156, 1, 0, 0,212, 1, 0, 0, 0, 0, 0, 0,
/* 0x0f60 */ 0, 0, 1, 0,167, 1, 0, 0,120, 1, 0, 0, 0, 0, 0, 0,
/* 0x0f70 */ 0, 0, 1, 0,178, 1, 0, 0,160, 1, 0, 0, 0, 0, 0, 0,
/* 0x0f80 */ 0, 0, 1, 0,184, 1, 0, 0,196, 1, 0, 0, 0, 0, 0, 0,
/* 0x0f90 */ 0, 0, 1, 0,198, 1, 0, 0,210, 1, 0, 0, 0, 0, 0, 0,
/* 0x0fa0 */ 0, 0, 1, 0,214, 1, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,
/* 0x0fb0 */ 0, 0, 1, 0,222, 1, 0, 0, 20, 2, 0, 0, 0, 0, 0, 0,
/* 0x0fc0 */ 0, 0, 1, 0,230, 1, 0, 0, 1, 0,144, 0, 0, 0, 0, 0,
/* 0x0fd0 */ 0, 0,241,255,240, 1, 0, 0, 3, 0,144, 0, 0, 0, 0, 0,
/* 0x0fe0 */ 0, 0,241,255,250, 1, 0, 0, 4, 0,144, 0, 0, 0, 0, 0,
/* 0x0ff0 */ 0, 0,241,255, 5, 2, 0, 0, 5, 0,144, 0, 0, 0, 0, 0,
/* 0x1000 */ 0, 0,241,255, 15, 2, 0, 0, 6, 0,144, 0, 0, 0, 0, 0,
/* 0x1010 */ 0, 0,241,255, 26, 2, 0, 0, 10, 0,144, 0, 0, 0, 0, 0,
/* 0x1020 */ 0, 0,241,255, 38, 2, 0, 0, 20, 0,144, 0, 0, 0, 0, 0,
/* 0x1030 */ 0, 0,241,255, 50, 2, 0, 0, 45, 0,144, 0, 0, 0, 0, 0,
/* 0x1040 */ 0, 0,241,255, 59, 2, 0, 0, 85, 0,144, 0, 0, 0, 0, 0,
/* 0x1050 */ 0, 0,241,255, 73, 2, 0, 0,192, 0,144, 0, 0, 0, 0, 0,
/* 0x1060 */ 0, 0,241,255, 84, 2, 0, 0,125, 0,144, 0, 0, 0, 0, 0,
/* 0x1070 */ 0, 0,241,255, 98, 2, 0, 0, 91, 0,144, 0, 0, 0, 0, 0,
/* 0x1080 */ 0, 0,241,255,110, 2, 0, 0, 0, 0,159, 0, 0, 0, 0, 0,
/* 0x1090 */ 0, 0,241,255,124, 2, 0, 0, 2, 0,159, 0, 0, 0, 0, 0,
/* 0x10a0 */ 0, 0,241,255,144, 2, 0, 0, 32, 2, 0, 0, 0, 0, 0, 0,
/* 0x10b0 */ 1, 0, 1, 0, 35, 0, 0, 0, 36, 2, 0, 0, 0, 0, 0, 0,
/* 0x10c0 */ 2, 0, 1, 0,147, 2, 0, 0,180, 2, 0, 0, 0, 0, 0, 0,
/* 0x10d0 */ 0, 0, 1, 0,155, 2, 0, 0,156, 2, 0, 0, 0, 0, 0, 0,
/* 0x10e0 */ 0, 0, 1, 0,144, 2, 0, 0,180, 2, 0, 0, 0, 0, 0, 0,
/* 0x10f0 */ 1, 0, 1, 0, 35, 0, 0, 0,184, 2, 0, 0, 0, 0, 0, 0,
/* 0x1100 */ 2, 0, 1, 0,163, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x1110 */ 4, 0,241,255, 35, 0, 0, 0, 72, 3, 0, 0, 0, 0, 0, 0,
/* 0x1120 */ 2, 0, 1, 0,144, 2, 0, 0, 80, 3, 0, 0, 0, 0, 0, 0,
/* 0x1130 */ 1, 0, 1, 0,188, 2, 0, 0, 84, 3, 0, 0,112, 0, 0, 0,
/* 0x1140 */ 2, 0, 1, 0, 35, 0, 0, 0, 84, 3, 0, 0, 0, 0, 0, 0,
/* 0x1150 */ 2, 0, 1, 0,196, 2, 0, 0,196, 3, 0, 0, 96, 0, 0, 0,
/* 0x1160 */ 2, 0, 1, 0,202, 2, 0, 0, 36, 4, 0, 0, 72, 1, 0, 0,
/* 0x1170 */ 2, 0, 1, 0,144, 2, 0, 0,104, 5, 0, 0, 0, 0, 0, 0,
/* 0x1180 */ 1, 0, 1, 0,215, 2, 0, 0,108, 5, 0, 0, 92, 4, 0, 0,
/* 0x1190 */ 2, 0, 1, 0, 35, 0, 0, 0,108, 5, 0, 0, 0, 0, 0, 0,
/* 0x11a0 */ 2, 0, 1, 0,144, 2, 0, 0,188, 9, 0, 0, 0, 0, 0, 0,
/* 0x11b0 */ 1, 0, 1, 0, 35, 0, 0, 0,200, 9, 0, 0, 0, 0, 0, 0,
/* 0x11c0 */ 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x11d0 */ 4, 0,241,255,144, 2, 0, 0, 64,128, 0, 0, 0, 0, 0, 0,
/* 0x11e0 */ 0, 0, 1, 0,144, 2, 0, 0,136,131, 0, 0, 0, 0, 0, 0,
/* 0x11f0 */ 0, 0, 1, 0,223, 2, 0, 0, 72, 3, 0, 0, 12, 0, 0, 0,
/* 0x1200 */ 18, 0, 1, 0,237, 2, 0, 0,108, 2, 0, 0, 0, 0, 0, 0,
/* 0x1210 */ 16, 0, 1, 0,244, 2, 0, 0,204, 2, 0, 0, 0, 0, 0, 0,
/* 0x1220 */ 16, 0, 1, 0, 3, 3, 0, 0, 84, 2, 0, 0, 0, 0, 0, 0,
/* 0x1230 */ 16, 0, 1, 0, 10, 3, 0, 0,100, 2, 0, 0, 0, 0, 0, 0,
/* 0x1240 */ 16, 0, 1, 0, 19, 3, 0, 0,236, 2, 0, 0, 0, 0, 0, 0,
/* 0x1250 */ 16, 0, 1, 0, 29, 3, 0, 0,140, 2, 0, 0, 0, 0, 0, 0,
/* 0x1260 */ 16, 0, 1, 0, 34, 3, 0, 0,192, 2, 0, 0, 0, 0, 0, 0,
/* 0x1270 */ 16, 0, 1, 0, 48, 3, 0, 0,212, 2, 0, 0, 0, 0, 0, 0,
/* 0x1280 */ 16, 0, 1, 0, 62, 3, 0, 0, 52, 2, 0, 0, 0, 0, 0, 0,
/* 0x1290 */ 16, 0, 1, 0, 68, 3, 0, 0, 44, 2, 0, 0, 0, 0, 0, 0,
/* 0x12a0 */ 16, 0, 1, 0, 73, 3, 0, 0, 76, 2, 0, 0, 0, 0, 0, 0,
/* 0x12b0 */ 16, 0, 1, 0, 80, 3, 0, 0, 32, 2, 0, 0, 0, 0, 0, 0,
/* 0x12c0 */ 16, 0, 1, 0, 88, 3, 0, 0,116, 2, 0, 0, 0, 0, 0, 0,
/* 0x12d0 */ 16, 0, 1, 0, 97, 3, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,
/* 0x12e0 */ 16, 0, 1, 0,102, 3, 0, 0,200, 9, 0, 0, 52, 1, 0, 0,
/* 0x12f0 */ 18, 0, 1, 0,111, 3, 0, 0, 92, 2, 0, 0, 0, 0, 0, 0,
/* 0x1300 */ 16, 0, 1, 0,115, 3, 0, 0, 60, 2, 0, 0, 0, 0, 0, 0,
/* 0x1310 */ 16, 0, 1, 0,120, 3, 0, 0,236, 2, 0, 0, 0, 0, 0, 0,
/* 0x1320 */ 16, 0, 1, 0,126, 3, 0, 0,116, 2, 0, 0, 0, 0, 0, 0,
/* 0x1330 */ 16, 0, 1, 0,135, 3, 0, 0, 68, 2, 0, 0, 0, 0, 0, 0,
/* 0x1340 */ 16, 0, 1, 0, 0,115,114, 99, 47, 97,114,109, 46,118, 52, 97,
/* 0x1350 */ 45,108,105,110,117,120, 46,101,108,102, 45,102,111,108,100, 46,
/* 0x1360 */ 83, 0, 78, 66, 80, 87, 0, 36, 97, 0, 95, 95, 78, 82, 95, 83,
/* 0x1370 */ 89, 83, 67, 65, 76, 76, 95, 66, 65, 83, 69, 0,115,122, 95, 69,
/* 0x1380 */ 108,102, 51, 50, 95, 69,104,100,114, 0,101, 95,116,121,112,101,
/* 0x1390 */ 0, 69, 84, 95, 69, 88, 69, 67, 0,115,122, 95, 69,108,102, 51,
/* 0x13a0 */ 50, 95, 80,104,100,114, 0,112, 95,118, 97,100,100,114, 0,112,
/* 0x13b0 */ 95,109,101,109,115,122, 0,115,122, 95,108, 95,105,110,102,111,
/* 0x13c0 */ 0,115,122, 95,112, 95,105,110,102,111, 0,115,122, 95, 98, 95,
/* 0x13d0 */ 105,110,102,111, 0,115,122, 95,117,110, 99, 0,115,122, 95, 99,
/* 0x13e0 */ 112,114, 0, 98, 95,109,101,116,104,111,100, 0, 77, 65, 80, 95,
/* 0x13f0 */ 65, 78, 79, 78, 89, 77, 79, 85, 83, 0, 77, 65, 80, 95, 80, 82,
/* 0x1400 */ 73, 86, 65, 84, 69, 0, 77, 65, 80, 95, 70, 73, 88, 69, 68, 0,
/* 0x1410 */ 80, 82, 79, 84, 95, 82, 69, 65, 68, 0, 79, 95, 82, 68, 79, 78,
/* 0x1420 */ 76, 89, 0, 80, 65, 71, 69, 95, 83, 72, 73, 70, 84, 0, 80, 65,
/* 0x1430 */ 71, 69, 95, 83, 73, 90, 69, 0, 80, 65, 84, 72, 77, 65, 88, 0,
/* 0x1440 */ 80, 65, 84, 72, 95, 77, 65, 88, 0, 77, 65, 88, 95, 69, 76, 70,
/* 0x1450 */ 95, 72, 68, 82, 95, 51, 50, 0, 77, 65, 88, 95, 69, 76, 70, 95,
/* 0x1460 */ 72, 68, 82, 95, 54, 52, 0,109,102,108,103, 95,100, 97,116, 97,
/* 0x1470 */ 0, 83, 80, 95,102,100, 0,102,111,108,100, 95, 98,101,103,105,
/* 0x1480 */ 110, 0, 70, 95, 76, 69, 78, 88, 0, 70, 95, 65, 68, 82, 88, 0,
/* 0x1490 */ 70, 95,101,108,102, 97,100,100,114, 0, 70, 95,102,100, 0, 70,
/* 0x14a0 */ 95, 65, 68, 82, 85, 0, 70, 95, 76, 69, 78, 85, 0, 70, 95,102,
/* 0x14b0 */ 95,101,120,112, 0, 70, 95,101, 95, 97,117,120,118, 0, 70, 95,
/* 0x14c0 */ 101,110,116,114,121, 0, 70, 95,114, 48, 0, 70, 95,114, 49, 0,
/* 0x14d0 */ 108,105,110,107, 95,111,107, 0, 70, 95,100,101,108,116, 97, 0,
/* 0x14e0 */ 102, 95,117,110,102,105,108,116,101,114, 0,110,111, 95,109, 97,
/* 0x14f0 */ 112, 95,112,115,101, 0,115,119,101,101,112, 0,112,114,111, 99,
/* 0x1500 */ 95,115,101,108,102, 95,101,120,101, 0,112,114,111, 99, 95,115,
/* 0x1510 */ 101,108,102, 95, 97,108,105,103,110, 0,116,111,112, 95,117,110,
/* 0x1520 */ 102, 0,116,115,116, 95,117,110,102, 0, 95, 95, 78, 82, 95,101,
/* 0x1530 */ 120,105,116, 0, 95, 95, 78, 82, 95,114,101, 97,100, 0, 95, 95,
/* 0x1540 */ 78, 82, 95,119,114,105,116,101, 0, 95, 95, 78, 82, 95,111,112,
/* 0x1550 */ 101,110, 0, 95, 95, 78, 82, 95, 99,108,111,115,101, 0, 95, 95,
/* 0x1560 */ 78, 82, 95,117,110,108,105,110,107, 0, 95, 95, 78, 82, 95,103,
/* 0x1570 */ 101,116,112,105,100, 0, 95, 95, 78, 82, 95, 98,114,107, 0, 95,
/* 0x1580 */ 95, 78, 82, 95,114,101, 97,100,108,105,110,107, 0, 95, 95, 78,
/* 0x1590 */ 82, 95,109,109, 97,112, 50, 0, 95, 95, 78, 82, 95,109,112,114,
/* 0x15a0 */ 111,116,101, 99,116, 0, 95, 95, 78, 82, 95,109,117,110,109, 97,
/* 0x15b0 */ 112, 0, 95, 95, 65, 82, 77, 95, 78, 82, 95, 66, 65, 83, 69, 0,
/* 0x15c0 */ 95, 95, 65, 82, 77, 95, 78, 82, 95, 99, 97, 99,104,101,102,108,
/* 0x15d0 */ 117,115,104, 0, 36,100, 0,109, 95,111,102,102, 52,107, 0,109,
/* 0x15e0 */ 109, 97,112, 95,100,111, 0, 97,114,109, 46,118, 52, 97, 45,108,
/* 0x15f0 */ 105,110,117,120, 46,101,108,102, 45,109, 97,105,110, 46, 99, 0,
/* 0x1600 */ 97,117,120,118, 95,117,112, 0,120,114,101, 97,100, 0,117,110,
/* 0x1610 */ 112, 97, 99,107, 69,120,116,101,110,116, 0,100,111, 95,120,109,
/* 0x1620 */ 97,112, 0,103,101,116, 95,112, 97,103,101, 95,109, 97,115,107,
/* 0x1630 */ 0,109,117,110,109, 97,112, 0,103,101,116, 95,115,121,115, 95,
/* 0x1640 */ 109,117,110,109, 97,112, 0,103,101,116,112,105,100, 0,114,101,
/* 0x1650 */ 97,100,108,105,110,107, 0, 95, 95,117,100,105,118,115,105, 51,
/* 0x1660 */ 0,109,109, 97,112, 0, 95, 95, 99,108,101, 97,114, 95, 99, 97,
/* 0x1670 */ 99,104,101, 0,109,109, 97,112, 95,112,114,105,118, 97,110,111,
/* 0x1680 */ 110, 0,119,114,105,116,101, 0,114,101, 97,100, 0,117,110,108,
/* 0x1690 */ 105,110,107, 0,109,121, 95, 98,107,112,116, 0, 80,112,114,111,
/* 0x16a0 */ 116,101, 99,116, 0,101,120,105,116, 0,117,112,120, 95,109, 97,
/* 0x16b0 */ 105,110, 0, 98,114,107, 0,111,112,101,110, 0,100,105,118, 49,
/* 0x16c0 */ 48, 0,109,112,114,111,116,101, 99,116, 0, 99,108,111,115,101,
/* 0x16d0 */ 0, 0, 0, 0, 44, 0, 0, 0, 1, 1, 0, 0, 68, 0, 0, 0,
/* 0x16e0 */ 1, 1, 0, 0, 88, 0, 0, 0, 1, 1, 0, 0,116, 0, 0, 0,
/* 0x16f0 */ 1, 92, 0, 0,160, 0, 0, 0, 1, 1, 0, 0,248, 0, 0, 0,
/* 0x1700 */ 1, 1, 0, 0, 36, 1, 0, 0, 1,103, 0, 0, 60, 1, 0, 0,
/* 0x1710 */ 1,104, 0, 0, 68, 1, 0, 0, 1, 89, 0, 0, 80, 1, 0, 0,
/* 0x1720 */ 1, 1, 0, 0,108, 1, 0, 0, 1, 94, 0, 0,116, 1, 0, 0,
/* 0x1730 */ 1,108, 0, 0,176, 1, 0, 0, 1, 1, 0, 0,252, 1, 0, 0,
/* 0x1740 */ 1, 1, 0, 0, 24, 2, 0, 0, 1, 1, 0, 0,232, 2, 0, 0,
/* 0x1750 */ 1, 1, 0, 0,128, 3, 0, 0, 1, 1, 0, 0,136, 3, 0, 0,
/* 0x1760 */ 1, 1, 0, 0,148, 3, 0, 0, 1, 1, 0, 0,180, 3, 0, 0,
/* 0x1770 */ 1,102, 0, 0,192, 3, 0, 0, 1, 1, 0, 0,224, 3, 0, 0,
/* 0x1780 */ 1, 1, 0, 0,232, 3, 0, 0, 1,102, 0, 0, 4, 4, 0, 0,
/* 0x1790 */ 1, 1, 0, 0, 60, 4, 0, 0, 1, 1, 0, 0, 76, 4, 0, 0,
/* 0x17a0 */ 1, 1, 0, 0, 92, 4, 0, 0, 1, 1, 0, 0,104, 4, 0, 0,
/* 0x17b0 */ 1, 1, 0, 0,116, 4, 0, 0, 1, 1, 0, 0,120, 4, 0, 0,
/* 0x17c0 */ 1, 1, 0, 0,128, 4, 0, 0, 1, 1, 0, 0,136, 4, 0, 0,
/* 0x17d0 */ 1,102, 0, 0,144, 4, 0, 0, 1, 1, 0, 0,156, 4, 0, 0,
/* 0x17e0 */ 1, 1, 0, 0,164, 4, 0, 0, 1, 1, 0, 0,204, 4, 0, 0,
/* 0x17f0 */ 1, 1, 0, 0,220, 4, 0, 0, 1, 1, 0, 0,236, 4, 0, 0,
/* 0x1800 */ 1, 1, 0, 0,244, 4, 0, 0, 1, 1, 0, 0, 0, 5, 0, 0,
/* 0x1810 */ 1, 1, 0, 0, 44, 5, 0, 0, 1, 1, 0, 0, 60, 5, 0, 0,
/* 0x1820 */ 1, 1, 0, 0, 92, 5, 0, 0, 1, 1, 0, 0,144, 5, 0, 0,
/* 0x1830 */ 1, 1, 0, 0,196, 5, 0, 0, 1, 89, 0, 0,200, 5, 0, 0,
/* 0x1840 */ 1, 1, 0, 0,240, 5, 0, 0, 1, 1, 0, 0,252, 5, 0, 0,
/* 0x1850 */ 1, 1, 0, 0, 8, 6, 0, 0, 1, 1, 0, 0, 48, 6, 0, 0,
/* 0x1860 */ 1, 1, 0, 0, 92, 6, 0, 0, 1, 96, 0, 0,116, 6, 0, 0,
/* 0x1870 */ 1, 1, 0, 0,128, 6, 0, 0, 1, 1, 0, 0,140, 6, 0, 0,
/* 0x1880 */ 1, 1, 0, 0,164, 6, 0, 0, 1, 1, 0, 0,168, 6, 0, 0,
/* 0x1890 */ 1, 1, 0, 0,180, 6, 0, 0, 1, 1, 0, 0,192, 6, 0, 0,
/* 0x18a0 */ 1, 1, 0, 0,204, 6, 0, 0, 1, 1, 0, 0,216, 6, 0, 0,
/* 0x18b0 */ 1, 1, 0, 0,248, 6, 0, 0, 1, 1, 0, 0, 8, 7, 0, 0,
/* 0x18c0 */ 1, 1, 0, 0, 24, 7, 0, 0, 1, 1, 0, 0,108, 7, 0, 0,
/* 0x18d0 */ 1, 1, 0, 0,136, 7, 0, 0, 1, 96, 0, 0,144, 7, 0, 0,
/* 0x18e0 */ 1, 1, 0, 0,172, 7, 0, 0, 1, 1, 0, 0,176, 7, 0, 0,
/* 0x18f0 */ 1, 1, 0, 0,216, 7, 0, 0, 1, 94, 0, 0,224, 7, 0, 0,
/* 0x1900 */ 1, 1, 0, 0,244, 7, 0, 0, 1, 1, 0, 0,252, 7, 0, 0,
/* 0x1910 */ 1, 1, 0, 0, 20, 8, 0, 0, 1, 1, 0, 0, 32, 8, 0, 0,
/* 0x1920 */ 1, 1, 0, 0, 36, 8, 0, 0, 1, 90, 0, 0, 52, 8, 0, 0,
/* 0x1930 */ 1, 1, 0, 0, 64, 8, 0, 0, 1, 1, 0, 0, 84, 8, 0, 0,
/* 0x1940 */ 1, 1, 0, 0,124, 8, 0, 0, 1, 1, 0, 0,160, 8, 0, 0,
/* 0x1950 */ 1, 95, 0, 0,164, 8, 0, 0, 1, 1, 0, 0,180, 8, 0, 0,
/* 0x1960 */ 1,101, 0, 0,188, 8, 0, 0, 1, 1, 0, 0,196, 8, 0, 0,
/* 0x1970 */ 1,102, 0, 0,220, 8, 0, 0, 1, 1, 0, 0,240, 8, 0, 0,
/* 0x1980 */ 1, 96, 0, 0,248, 8, 0, 0, 1, 1, 0, 0,252, 8, 0, 0,
/* 0x1990 */ 1, 1, 0, 0, 28, 9, 0, 0, 1, 1, 0, 0, 96, 9, 0, 0,
/* 0x19a0 */ 1, 94, 0, 0,104, 9, 0, 0, 1, 1, 0, 0,148, 9, 0, 0,
/* 0x19b0 */ 1, 95, 0, 0,164, 9, 0, 0, 1,101, 0, 0,180, 9, 0, 0,
/* 0x19c0 */ 1, 1, 0, 0,184, 9, 0, 0, 1, 1, 0, 0,248, 9, 0, 0,
/* 0x19d0 */ 1, 1, 0, 0, 48, 10, 0, 0, 1, 1, 0, 0, 68, 10, 0, 0,
/* 0x19e0 */ 1, 1, 0, 0, 84, 10, 0, 0, 1, 1, 0, 0, 96, 10, 0, 0,
/* 0x19f0 */ 1, 1, 0, 0,120, 10, 0, 0, 1,105, 0, 0,128, 10, 0, 0,
/* 0x1a00 */ 1, 1, 0, 0,140, 10, 0, 0, 1, 98, 0, 0,148, 10, 0, 0,
/* 0x1a10 */ 1, 1, 0, 0,156, 10, 0, 0, 1,102, 0, 0,188, 10, 0, 0,
/* 0x1a20 */ 1, 1, 0, 0,208, 10, 0, 0, 1, 1, 0, 0,216, 10, 0, 0,
/* 0x1a30 */ 1,108, 0, 0,220, 10, 0, 0, 1, 1, 0, 0,236, 10, 0, 0,
/* 0x1a40 */ 1, 1, 0, 0
/* 0x0c80 */ 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c90 */ 3, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ca0 */ 4, 0,241,255, 30, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
/* 0x0cb0 */ 0, 0,241,255, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0cc0 */ 2, 0, 1, 0, 38, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0,
/* 0x0cd0 */ 0, 0,241,255, 56, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ce0 */ 0, 0,241,255, 70, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
/* 0x0cf0 */ 0, 0,241,255, 77, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d00 */ 0, 0,241,255, 85, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d10 */ 0, 0,241,255, 99, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d20 */ 0, 0,241,255,107, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d30 */ 0, 0,241,255,115, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d40 */ 0, 0,241,255,125, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d50 */ 0, 0,241,255,135, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d60 */ 0, 0,241,255,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d70 */ 0, 0,241,255,152, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d80 */ 0, 0,241,255,159, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d90 */ 0, 0,241,255,168, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,
/* 0x0da0 */ 0, 0,241,255,182, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0db0 */ 0, 0,241,255,194, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
/* 0x0dc0 */ 0, 0,241,255,204, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
/* 0x0dd0 */ 0, 0,241,255,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0de0 */ 0, 0,241,255,223, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0df0 */ 0, 0,241,255,234, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
/* 0x0e00 */ 0, 0,241,255,244, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
/* 0x0e10 */ 0, 0,241,255,252, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
/* 0x0e20 */ 0, 0,241,255, 5, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
/* 0x0e30 */ 0, 0,241,255, 20, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0,
/* 0x0e40 */ 0, 0,241,255, 35, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0e50 */ 0, 0, 1, 0, 45, 1, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0e60 */ 0, 0,241,255, 51, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
/* 0x0e70 */ 0, 0, 1, 0, 62, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0e80 */ 0, 0,241,255, 69, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
/* 0x0e90 */ 0, 0,241,255, 76, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ea0 */ 0, 0,241,255, 86, 1, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0eb0 */ 0, 0,241,255, 91, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ec0 */ 0, 0,241,255, 98, 1, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ed0 */ 0, 0,241,255,105, 1, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ee0 */ 0, 0,241,255,113, 1, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
/* 0x0ef0 */ 0, 0,241,255,122, 1, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0,
/* 0x0f00 */ 0, 0,241,255,130, 1, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,
/* 0x0f10 */ 0, 0,241,255,135, 1, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0,
/* 0x0f20 */ 0, 0,241,255,140, 1, 0, 0,132, 0, 0, 0, 0, 0, 0, 0,
/* 0x0f30 */ 0, 0, 1, 0,148, 1, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
/* 0x0f40 */ 0, 0,241,255,156, 1, 0, 0,212, 1, 0, 0, 0, 0, 0, 0,
/* 0x0f50 */ 0, 0, 1, 0,167, 1, 0, 0,120, 1, 0, 0, 0, 0, 0, 0,
/* 0x0f60 */ 0, 0, 1, 0,178, 1, 0, 0,160, 1, 0, 0, 0, 0, 0, 0,
/* 0x0f70 */ 0, 0, 1, 0,184, 1, 0, 0,196, 1, 0, 0, 0, 0, 0, 0,
/* 0x0f80 */ 0, 0, 1, 0,198, 1, 0, 0,210, 1, 0, 0, 0, 0, 0, 0,
/* 0x0f90 */ 0, 0, 1, 0,214, 1, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,
/* 0x0fa0 */ 0, 0, 1, 0,222, 1, 0, 0, 20, 2, 0, 0, 0, 0, 0, 0,
/* 0x0fb0 */ 0, 0, 1, 0,230, 1, 0, 0, 1, 0,144, 0, 0, 0, 0, 0,
/* 0x0fc0 */ 0, 0,241,255,240, 1, 0, 0, 3, 0,144, 0, 0, 0, 0, 0,
/* 0x0fd0 */ 0, 0,241,255,250, 1, 0, 0, 4, 0,144, 0, 0, 0, 0, 0,
/* 0x0fe0 */ 0, 0,241,255, 5, 2, 0, 0, 5, 0,144, 0, 0, 0, 0, 0,
/* 0x0ff0 */ 0, 0,241,255, 15, 2, 0, 0, 6, 0,144, 0, 0, 0, 0, 0,
/* 0x1000 */ 0, 0,241,255, 26, 2, 0, 0, 10, 0,144, 0, 0, 0, 0, 0,
/* 0x1010 */ 0, 0,241,255, 38, 2, 0, 0, 20, 0,144, 0, 0, 0, 0, 0,
/* 0x1020 */ 0, 0,241,255, 50, 2, 0, 0, 45, 0,144, 0, 0, 0, 0, 0,
/* 0x1030 */ 0, 0,241,255, 59, 2, 0, 0, 85, 0,144, 0, 0, 0, 0, 0,
/* 0x1040 */ 0, 0,241,255, 73, 2, 0, 0,192, 0,144, 0, 0, 0, 0, 0,
/* 0x1050 */ 0, 0,241,255, 84, 2, 0, 0,125, 0,144, 0, 0, 0, 0, 0,
/* 0x1060 */ 0, 0,241,255, 98, 2, 0, 0, 91, 0,144, 0, 0, 0, 0, 0,
/* 0x1070 */ 0, 0,241,255,110, 2, 0, 0, 0, 0,159, 0, 0, 0, 0, 0,
/* 0x1080 */ 0, 0,241,255,124, 2, 0, 0, 2, 0,159, 0, 0, 0, 0, 0,
/* 0x1090 */ 0, 0,241,255,144, 2, 0, 0, 32, 2, 0, 0, 0, 0, 0, 0,
/* 0x10a0 */ 1, 0, 1, 0, 35, 0, 0, 0, 36, 2, 0, 0, 0, 0, 0, 0,
/* 0x10b0 */ 2, 0, 1, 0,147, 2, 0, 0,180, 2, 0, 0, 0, 0, 0, 0,
/* 0x10c0 */ 0, 0, 1, 0,155, 2, 0, 0,156, 2, 0, 0, 0, 0, 0, 0,
/* 0x10d0 */ 0, 0, 1, 0,144, 2, 0, 0,180, 2, 0, 0, 0, 0, 0, 0,
/* 0x10e0 */ 1, 0, 1, 0, 35, 0, 0, 0,184, 2, 0, 0, 0, 0, 0, 0,
/* 0x10f0 */ 2, 0, 1, 0,163, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x1100 */ 4, 0,241,255, 35, 0, 0, 0, 72, 3, 0, 0, 0, 0, 0, 0,
/* 0x1110 */ 2, 0, 1, 0,144, 2, 0, 0, 80, 3, 0, 0, 0, 0, 0, 0,
/* 0x1120 */ 1, 0, 1, 0,188, 2, 0, 0, 84, 3, 0, 0,112, 0, 0, 0,
/* 0x1130 */ 2, 0, 1, 0, 35, 0, 0, 0, 84, 3, 0, 0, 0, 0, 0, 0,
/* 0x1140 */ 2, 0, 1, 0,196, 2, 0, 0,196, 3, 0, 0, 96, 0, 0, 0,
/* 0x1150 */ 2, 0, 1, 0,202, 2, 0, 0, 36, 4, 0, 0, 72, 1, 0, 0,
/* 0x1160 */ 2, 0, 1, 0,144, 2, 0, 0,104, 5, 0, 0, 0, 0, 0, 0,
/* 0x1170 */ 1, 0, 1, 0,215, 2, 0, 0,108, 5, 0, 0, 76, 4, 0, 0,
/* 0x1180 */ 2, 0, 1, 0, 35, 0, 0, 0,108, 5, 0, 0, 0, 0, 0, 0,
/* 0x1190 */ 2, 0, 1, 0,144, 2, 0, 0,172, 9, 0, 0, 0, 0, 0, 0,
/* 0x11a0 */ 1, 0, 1, 0, 35, 0, 0, 0,184, 9, 0, 0, 0, 0, 0, 0,
/* 0x11b0 */ 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x11c0 */ 4, 0,241,255,144, 2, 0, 0, 64,128, 0, 0, 0, 0, 0, 0,
/* 0x11d0 */ 0, 0, 1, 0,144, 2, 0, 0,136,131, 0, 0, 0, 0, 0, 0,
/* 0x11e0 */ 0, 0, 1, 0,223, 2, 0, 0, 72, 3, 0, 0, 12, 0, 0, 0,
/* 0x11f0 */ 18, 0, 1, 0,237, 2, 0, 0,108, 2, 0, 0, 0, 0, 0, 0,
/* 0x1200 */ 16, 0, 1, 0,244, 2, 0, 0,204, 2, 0, 0, 0, 0, 0, 0,
/* 0x1210 */ 16, 0, 1, 0, 3, 3, 0, 0, 84, 2, 0, 0, 0, 0, 0, 0,
/* 0x1220 */ 16, 0, 1, 0, 10, 3, 0, 0,100, 2, 0, 0, 0, 0, 0, 0,
/* 0x1230 */ 16, 0, 1, 0, 19, 3, 0, 0,236, 2, 0, 0, 0, 0, 0, 0,
/* 0x1240 */ 16, 0, 1, 0, 29, 3, 0, 0,140, 2, 0, 0, 0, 0, 0, 0,
/* 0x1250 */ 16, 0, 1, 0, 34, 3, 0, 0,192, 2, 0, 0, 0, 0, 0, 0,
/* 0x1260 */ 16, 0, 1, 0, 48, 3, 0, 0,212, 2, 0, 0, 0, 0, 0, 0,
/* 0x1270 */ 16, 0, 1, 0, 62, 3, 0, 0, 52, 2, 0, 0, 0, 0, 0, 0,
/* 0x1280 */ 16, 0, 1, 0, 68, 3, 0, 0, 44, 2, 0, 0, 0, 0, 0, 0,
/* 0x1290 */ 16, 0, 1, 0, 73, 3, 0, 0, 76, 2, 0, 0, 0, 0, 0, 0,
/* 0x12a0 */ 16, 0, 1, 0, 80, 3, 0, 0, 32, 2, 0, 0, 0, 0, 0, 0,
/* 0x12b0 */ 16, 0, 1, 0, 88, 3, 0, 0,116, 2, 0, 0, 0, 0, 0, 0,
/* 0x12c0 */ 16, 0, 1, 0, 97, 3, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,
/* 0x12d0 */ 16, 0, 1, 0,102, 3, 0, 0,184, 9, 0, 0, 52, 1, 0, 0,
/* 0x12e0 */ 18, 0, 1, 0,111, 3, 0, 0, 92, 2, 0, 0, 0, 0, 0, 0,
/* 0x12f0 */ 16, 0, 1, 0,115, 3, 0, 0, 60, 2, 0, 0, 0, 0, 0, 0,
/* 0x1300 */ 16, 0, 1, 0,120, 3, 0, 0,236, 2, 0, 0, 0, 0, 0, 0,
/* 0x1310 */ 16, 0, 1, 0,126, 3, 0, 0,116, 2, 0, 0, 0, 0, 0, 0,
/* 0x1320 */ 16, 0, 1, 0,135, 3, 0, 0, 68, 2, 0, 0, 0, 0, 0, 0,
/* 0x1330 */ 16, 0, 1, 0, 0,115,114, 99, 47, 97,114,109, 46,118, 52, 97,
/* 0x1340 */ 45,108,105,110,117,120, 46,101,108,102, 45,102,111,108,100, 46,
/* 0x1350 */ 83, 0, 78, 66, 80, 87, 0, 36, 97, 0, 95, 95, 78, 82, 95, 83,
/* 0x1360 */ 89, 83, 67, 65, 76, 76, 95, 66, 65, 83, 69, 0,115,122, 95, 69,
/* 0x1370 */ 108,102, 51, 50, 95, 69,104,100,114, 0,101, 95,116,121,112,101,
/* 0x1380 */ 0, 69, 84, 95, 69, 88, 69, 67, 0,115,122, 95, 69,108,102, 51,
/* 0x1390 */ 50, 95, 80,104,100,114, 0,112, 95,118, 97,100,100,114, 0,112,
/* 0x13a0 */ 95,109,101,109,115,122, 0,115,122, 95,108, 95,105,110,102,111,
/* 0x13b0 */ 0,115,122, 95,112, 95,105,110,102,111, 0,115,122, 95, 98, 95,
/* 0x13c0 */ 105,110,102,111, 0,115,122, 95,117,110, 99, 0,115,122, 95, 99,
/* 0x13d0 */ 112,114, 0, 98, 95,109,101,116,104,111,100, 0, 77, 65, 80, 95,
/* 0x13e0 */ 65, 78, 79, 78, 89, 77, 79, 85, 83, 0, 77, 65, 80, 95, 80, 82,
/* 0x13f0 */ 73, 86, 65, 84, 69, 0, 77, 65, 80, 95, 70, 73, 88, 69, 68, 0,
/* 0x1400 */ 80, 82, 79, 84, 95, 82, 69, 65, 68, 0, 79, 95, 82, 68, 79, 78,
/* 0x1410 */ 76, 89, 0, 80, 65, 71, 69, 95, 83, 72, 73, 70, 84, 0, 80, 65,
/* 0x1420 */ 71, 69, 95, 83, 73, 90, 69, 0, 80, 65, 84, 72, 77, 65, 88, 0,
/* 0x1430 */ 80, 65, 84, 72, 95, 77, 65, 88, 0, 77, 65, 88, 95, 69, 76, 70,
/* 0x1440 */ 95, 72, 68, 82, 95, 51, 50, 0, 77, 65, 88, 95, 69, 76, 70, 95,
/* 0x1450 */ 72, 68, 82, 95, 54, 52, 0,109,102,108,103, 95,100, 97,116, 97,
/* 0x1460 */ 0, 83, 80, 95,102,100, 0,102,111,108,100, 95, 98,101,103,105,
/* 0x1470 */ 110, 0, 70, 95, 76, 69, 78, 88, 0, 70, 95, 65, 68, 82, 88, 0,
/* 0x1480 */ 70, 95,101,108,102, 97,100,100,114, 0, 70, 95,102,100, 0, 70,
/* 0x1490 */ 95, 65, 68, 82, 85, 0, 70, 95, 76, 69, 78, 85, 0, 70, 95,102,
/* 0x14a0 */ 95,101,120,112, 0, 70, 95,101, 95, 97,117,120,118, 0, 70, 95,
/* 0x14b0 */ 101,110,116,114,121, 0, 70, 95,114, 48, 0, 70, 95,114, 49, 0,
/* 0x14c0 */ 108,105,110,107, 95,111,107, 0, 70, 95,100,101,108,116, 97, 0,
/* 0x14d0 */ 102, 95,117,110,102,105,108,116,101,114, 0,110,111, 95,109, 97,
/* 0x14e0 */ 112, 95,112,115,101, 0,115,119,101,101,112, 0,112,114,111, 99,
/* 0x14f0 */ 95,115,101,108,102, 95,101,120,101, 0,112,114,111, 99, 95,115,
/* 0x1500 */ 101,108,102, 95, 97,108,105,103,110, 0,116,111,112, 95,117,110,
/* 0x1510 */ 102, 0,116,115,116, 95,117,110,102, 0, 95, 95, 78, 82, 95,101,
/* 0x1520 */ 120,105,116, 0, 95, 95, 78, 82, 95,114,101, 97,100, 0, 95, 95,
/* 0x1530 */ 78, 82, 95,119,114,105,116,101, 0, 95, 95, 78, 82, 95,111,112,
/* 0x1540 */ 101,110, 0, 95, 95, 78, 82, 95, 99,108,111,115,101, 0, 95, 95,
/* 0x1550 */ 78, 82, 95,117,110,108,105,110,107, 0, 95, 95, 78, 82, 95,103,
/* 0x1560 */ 101,116,112,105,100, 0, 95, 95, 78, 82, 95, 98,114,107, 0, 95,
/* 0x1570 */ 95, 78, 82, 95,114,101, 97,100,108,105,110,107, 0, 95, 95, 78,
/* 0x1580 */ 82, 95,109,109, 97,112, 50, 0, 95, 95, 78, 82, 95,109,112,114,
/* 0x1590 */ 111,116,101, 99,116, 0, 95, 95, 78, 82, 95,109,117,110,109, 97,
/* 0x15a0 */ 112, 0, 95, 95, 65, 82, 77, 95, 78, 82, 95, 66, 65, 83, 69, 0,
/* 0x15b0 */ 95, 95, 65, 82, 77, 95, 78, 82, 95, 99, 97, 99,104,101,102,108,
/* 0x15c0 */ 117,115,104, 0, 36,100, 0,109, 95,111,102,102, 52,107, 0,109,
/* 0x15d0 */ 109, 97,112, 95,100,111, 0, 97,114,109, 46,118, 52, 97, 45,108,
/* 0x15e0 */ 105,110,117,120, 46,101,108,102, 45,109, 97,105,110, 46, 99, 0,
/* 0x15f0 */ 97,117,120,118, 95,117,112, 0,120,114,101, 97,100, 0,117,110,
/* 0x1600 */ 112, 97, 99,107, 69,120,116,101,110,116, 0,100,111, 95,120,109,
/* 0x1610 */ 97,112, 0,103,101,116, 95,112, 97,103,101, 95,109, 97,115,107,
/* 0x1620 */ 0,109,117,110,109, 97,112, 0,103,101,116, 95,115,121,115, 95,
/* 0x1630 */ 109,117,110,109, 97,112, 0,103,101,116,112,105,100, 0,114,101,
/* 0x1640 */ 97,100,108,105,110,107, 0, 95, 95,117,100,105,118,115,105, 51,
/* 0x1650 */ 0,109,109, 97,112, 0, 95, 95, 99,108,101, 97,114, 95, 99, 97,
/* 0x1660 */ 99,104,101, 0,109,109, 97,112, 95,112,114,105,118, 97,110,111,
/* 0x1670 */ 110, 0,119,114,105,116,101, 0,114,101, 97,100, 0,117,110,108,
/* 0x1680 */ 105,110,107, 0,109,121, 95, 98,107,112,116, 0, 80,112,114,111,
/* 0x1690 */ 116,101, 99,116, 0,101,120,105,116, 0,117,112,120, 95,109, 97,
/* 0x16a0 */ 105,110, 0, 98,114,107, 0,111,112,101,110, 0,100,105,118, 49,
/* 0x16b0 */ 48, 0,109,112,114,111,116,101, 99,116, 0, 99,108,111,115,101,
/* 0x16c0 */ 0, 0, 0, 0, 44, 0, 0, 0, 1, 1, 0, 0, 68, 0, 0, 0,
/* 0x16d0 */ 1, 1, 0, 0, 88, 0, 0, 0, 1, 1, 0, 0,116, 0, 0, 0,
/* 0x16e0 */ 1, 92, 0, 0,160, 0, 0, 0, 1, 1, 0, 0,248, 0, 0, 0,
/* 0x16f0 */ 1, 1, 0, 0, 36, 1, 0, 0, 1,103, 0, 0, 60, 1, 0, 0,
/* 0x1700 */ 1,104, 0, 0, 68, 1, 0, 0, 1, 89, 0, 0, 80, 1, 0, 0,
/* 0x1710 */ 1, 1, 0, 0,108, 1, 0, 0, 1, 94, 0, 0,116, 1, 0, 0,
/* 0x1720 */ 1,108, 0, 0,176, 1, 0, 0, 1, 1, 0, 0,252, 1, 0, 0,
/* 0x1730 */ 1, 1, 0, 0, 24, 2, 0, 0, 1, 1, 0, 0,232, 2, 0, 0,
/* 0x1740 */ 1, 1, 0, 0,128, 3, 0, 0, 1, 1, 0, 0,136, 3, 0, 0,
/* 0x1750 */ 1, 1, 0, 0,148, 3, 0, 0, 1, 1, 0, 0,180, 3, 0, 0,
/* 0x1760 */ 1,102, 0, 0,192, 3, 0, 0, 1, 1, 0, 0,224, 3, 0, 0,
/* 0x1770 */ 1, 1, 0, 0,232, 3, 0, 0, 1,102, 0, 0, 4, 4, 0, 0,
/* 0x1780 */ 1, 1, 0, 0, 60, 4, 0, 0, 1, 1, 0, 0, 76, 4, 0, 0,
/* 0x1790 */ 1, 1, 0, 0, 92, 4, 0, 0, 1, 1, 0, 0,104, 4, 0, 0,
/* 0x17a0 */ 1, 1, 0, 0,116, 4, 0, 0, 1, 1, 0, 0,120, 4, 0, 0,
/* 0x17b0 */ 1, 1, 0, 0,128, 4, 0, 0, 1, 1, 0, 0,136, 4, 0, 0,
/* 0x17c0 */ 1,102, 0, 0,144, 4, 0, 0, 1, 1, 0, 0,156, 4, 0, 0,
/* 0x17d0 */ 1, 1, 0, 0,164, 4, 0, 0, 1, 1, 0, 0,204, 4, 0, 0,
/* 0x17e0 */ 1, 1, 0, 0,220, 4, 0, 0, 1, 1, 0, 0,236, 4, 0, 0,
/* 0x17f0 */ 1, 1, 0, 0,244, 4, 0, 0, 1, 1, 0, 0, 0, 5, 0, 0,
/* 0x1800 */ 1, 1, 0, 0, 44, 5, 0, 0, 1, 1, 0, 0, 60, 5, 0, 0,
/* 0x1810 */ 1, 1, 0, 0, 92, 5, 0, 0, 1, 1, 0, 0,144, 5, 0, 0,
/* 0x1820 */ 1, 1, 0, 0,180, 5, 0, 0, 1, 1, 0, 0,184, 5, 0, 0,
/* 0x1830 */ 1, 1, 0, 0,224, 5, 0, 0, 1, 1, 0, 0,236, 5, 0, 0,
/* 0x1840 */ 1, 1, 0, 0,248, 5, 0, 0, 1, 1, 0, 0, 32, 6, 0, 0,
/* 0x1850 */ 1, 1, 0, 0, 76, 6, 0, 0, 1, 96, 0, 0,100, 6, 0, 0,
/* 0x1860 */ 1, 1, 0, 0,112, 6, 0, 0, 1, 1, 0, 0,124, 6, 0, 0,
/* 0x1870 */ 1, 1, 0, 0,148, 6, 0, 0, 1, 1, 0, 0,152, 6, 0, 0,
/* 0x1880 */ 1, 1, 0, 0,164, 6, 0, 0, 1, 1, 0, 0,176, 6, 0, 0,
/* 0x1890 */ 1, 1, 0, 0,188, 6, 0, 0, 1, 1, 0, 0,200, 6, 0, 0,
/* 0x18a0 */ 1, 1, 0, 0,232, 6, 0, 0, 1, 1, 0, 0,248, 6, 0, 0,
/* 0x18b0 */ 1, 1, 0, 0, 8, 7, 0, 0, 1, 1, 0, 0, 92, 7, 0, 0,
/* 0x18c0 */ 1, 1, 0, 0,120, 7, 0, 0, 1, 96, 0, 0,128, 7, 0, 0,
/* 0x18d0 */ 1, 1, 0, 0,156, 7, 0, 0, 1, 1, 0, 0,160, 7, 0, 0,
/* 0x18e0 */ 1, 1, 0, 0,200, 7, 0, 0, 1, 94, 0, 0,208, 7, 0, 0,
/* 0x18f0 */ 1, 1, 0, 0,228, 7, 0, 0, 1, 1, 0, 0,236, 7, 0, 0,
/* 0x1900 */ 1, 1, 0, 0, 4, 8, 0, 0, 1, 1, 0, 0, 16, 8, 0, 0,
/* 0x1910 */ 1, 1, 0, 0, 20, 8, 0, 0, 1, 90, 0, 0, 36, 8, 0, 0,
/* 0x1920 */ 1, 1, 0, 0, 48, 8, 0, 0, 1, 1, 0, 0, 68, 8, 0, 0,
/* 0x1930 */ 1, 1, 0, 0,108, 8, 0, 0, 1, 1, 0, 0,144, 8, 0, 0,
/* 0x1940 */ 1, 95, 0, 0,148, 8, 0, 0, 1, 1, 0, 0,164, 8, 0, 0,
/* 0x1950 */ 1,101, 0, 0,172, 8, 0, 0, 1, 1, 0, 0,180, 8, 0, 0,
/* 0x1960 */ 1,102, 0, 0,204, 8, 0, 0, 1, 1, 0, 0,224, 8, 0, 0,
/* 0x1970 */ 1, 96, 0, 0,232, 8, 0, 0, 1, 1, 0, 0,236, 8, 0, 0,
/* 0x1980 */ 1, 1, 0, 0, 12, 9, 0, 0, 1, 1, 0, 0, 80, 9, 0, 0,
/* 0x1990 */ 1, 94, 0, 0, 88, 9, 0, 0, 1, 1, 0, 0,132, 9, 0, 0,
/* 0x19a0 */ 1, 95, 0, 0,148, 9, 0, 0, 1,101, 0, 0,164, 9, 0, 0,
/* 0x19b0 */ 1, 1, 0, 0,168, 9, 0, 0, 1, 1, 0, 0,232, 9, 0, 0,
/* 0x19c0 */ 1, 1, 0, 0, 32, 10, 0, 0, 1, 1, 0, 0, 52, 10, 0, 0,
/* 0x19d0 */ 1, 1, 0, 0, 68, 10, 0, 0, 1, 1, 0, 0, 80, 10, 0, 0,
/* 0x19e0 */ 1, 1, 0, 0,104, 10, 0, 0, 1,105, 0, 0,112, 10, 0, 0,
/* 0x19f0 */ 1, 1, 0, 0,124, 10, 0, 0, 1, 98, 0, 0,132, 10, 0, 0,
/* 0x1a00 */ 1, 1, 0, 0,140, 10, 0, 0, 1,102, 0, 0,172, 10, 0, 0,
/* 0x1a10 */ 1, 1, 0, 0,192, 10, 0, 0, 1, 1, 0, 0,200, 10, 0, 0,
/* 0x1a20 */ 1,108, 0, 0,204, 10, 0, 0, 1, 1, 0, 0,220, 10, 0, 0,
/* 0x1a30 */ 1, 1, 0, 0
};
+96 -97
View File
@@ -1,5 +1,5 @@
/* arm.v5a-linux.elf-fold.h
created from arm.v5a-linux.elf-fold.bin, 3112 (0xc28) bytes
created from arm.v5a-linux.elf-fold.bin, 3096 (0xc18) bytes
This file is part of the UPX executable compressor.
@@ -32,17 +32,17 @@
/* clang-format off */
#define STUB_ARM_V5A_LINUX_ELF_FOLD_SIZE 3112
#define STUB_ARM_V5A_LINUX_ELF_FOLD_ADLER32 0x00e10a4f
#define STUB_ARM_V5A_LINUX_ELF_FOLD_CRC32 0x40179cdb
#define STUB_ARM_V5A_LINUX_ELF_FOLD_SIZE 3096
#define STUB_ARM_V5A_LINUX_ELF_FOLD_ADLER32 0x39bc0359
#define STUB_ARM_V5A_LINUX_ELF_FOLD_CRC32 0x6a1b970d
unsigned char stub_arm_v5a_linux_elf_fold[3112] = {
unsigned char stub_arm_v5a_linux_elf_fold[3096] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 40, 0, 1, 0, 0, 0,128,128, 0, 0, 52, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 2, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0,
/* 0x0040 */ 0,128, 0, 0, 40, 12, 0, 0, 40, 12, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0,128, 0, 0, 1, 0, 0, 0, 40, 12, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 0,128, 0, 0, 24, 12, 0, 0, 24, 12, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0,128, 0, 0, 1, 0, 0, 0, 24, 12, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 34, 0, 0, 0, 4, 32,160,225, 5, 48,160,225,240, 31,189,232,
@@ -63,7 +63,7 @@ unsigned char stub_arm_v5a_linux_elf_fold[3112] = {
/* 0x0170 */ 13, 0, 81,225, 4, 32, 32,229,251,255,255, 26, 0,208,160,225,
/* 0x0180 */ 16, 12,189,232, 10,220, 77,226, 4,144,154,229, 13,128,160,225,
/* 0x0190 */ 0,112,154,229,184, 96,143,226, 12,144,137,226,248, 15, 45,233,
/* 0x01a0 */ 15, 0,189,232, 82, 2, 0,235, 20,208,141,226, 10,220,141,226,
/* 0x01a0 */ 15, 0,189,232, 78, 2, 0,235, 20,208,141,226, 10,220,141,226,
/* 0x01b0 */ 16, 0,141,229,104, 16,155,229, 11, 0,160,225, 91, 0, 0,235,
/* 0x01c0 */ 11, 0,160,225, 99, 0, 0,235, 4, 64,157,228, 0, 0, 84,227,
/* 0x01d0 */ 8, 0, 0,186, 0, 80,160,227, 48, 0, 45,233, 2, 48,160,227,
@@ -142,94 +142,93 @@ unsigned char stub_arm_v5a_linux_elf_fold[3112] = {
/* 0x0660 */ 5, 0,160,225, 4, 16,148,229,162,255,255,235, 4, 48,157,229,
/* 0x0670 */ 6, 0,148,232, 3, 32,130,224, 1, 16, 99,224, 6, 0,132,232,
/* 0x0680 */ 0, 48,148,229, 0, 0, 83,227,185,255,255, 26, 20,208,141,226,
/* 0x0690 */ 240,128,189,232, 85, 80, 88, 33,240, 79, 45,233, 1,160,160,225,
/* 0x0690 */ 240,128,189,232, 85, 80, 88, 33,240, 79, 45,233, 1,128,160,225,
/* 0x06a0 */ 28, 16,145,229, 44,208, 77,226, 0, 0, 82,227, 12, 32,141,229,
/* 0x06b0 */ 16, 0,141,229, 8, 48,141,229, 1, 80,138,224, 13, 0, 0, 10,
/* 0x06c0 */ 80, 32,157,229, 0, 0,146,229,176, 49,208,225, 52, 16,128,226,
/* 0x06d0 */ 2, 0, 83,227, 40, 48,145, 21, 8, 0,145, 5, 0, 48,160, 3,
/* 0x06e0 */ 0, 0, 99, 16, 20, 16,145,229, 20, 48,141, 5, 20, 0,141, 21,
/* 0x06f0 */ 24,255,255,235, 38, 0, 0,234,176, 49,218,225,188, 34,218,225,
/* 0x0700 */ 3, 0, 83,227, 12, 16,157,229, 16,224,160, 19, 0,224,160, 3,
/* 0x0710 */ 1,192, 66,226, 5, 0,160,225, 0, 64,224,227, 13, 0, 0,234,
/* 0x0720 */ 0, 48,144,229, 1, 0, 83,227, 8, 0, 0, 26, 20, 48,144,229,
/* 0x0730 */ 0, 0, 83,227, 5, 0, 0, 10, 8, 32,144,229, 2, 48,131,224,
/* 0x0740 */ 3, 0, 81,225, 3, 16,160, 49, 2, 0, 84,225, 2, 64,160, 33,
/* 0x0750 */ 32, 0,128,226, 1,192, 76,226, 0, 0, 92,227,239,255,255,170,
/* 0x0760 */ 255, 78,196,227, 15, 64,196,227, 1, 16,100,224,255, 30,129,226,
/* 0x0770 */ 15, 16,129,226,255, 30,193,227, 15, 16,193,227, 14, 48,160,225,
/* 0x0780 */ 4, 0,160,225, 0, 32,160,227, 30,255,255,235, 0, 0,100,224,
/* 0x0790 */ 20, 0,141,229, 0,192,160,227, 32, 80,133,226, 24,192,141,229,
/* 0x07a0 */ 165, 0, 0,234, 12, 0,157,229, 0, 0, 80,227, 9, 0, 0, 10,
/* 0x07b0 */ 32, 48, 21,229, 6, 0, 83,227, 6, 0, 0, 26, 24, 32, 21,229,
/* 0x07c0 */ 20, 48,157,229, 8, 0,157,229, 2, 32,131,224, 3, 16,160,227,
/* 0x07d0 */ 44,255,255,235,148, 0, 0,234, 32, 48, 21,229, 1, 0, 83,227,
/* 0x07e0 */ 145, 0, 0, 26, 12, 48, 21,229, 0, 0, 83,227,142, 0, 0, 10,
/* 0x07f0 */ 12,192,157,229, 0, 0, 92,227, 18, 0, 0, 10, 28, 48, 21,229,
/* 0x0800 */ 0, 0, 83,227, 15, 0, 0, 26, 28, 48,154,229, 24, 32, 21,229,
/* 0x0810 */ 20, 0,157,229, 3, 32,130,224, 2, 32,128,224, 3, 16,160,227,
/* 0x0820 */ 8, 0,157,229, 23,255,255,235, 8, 0,157,229, 5, 16,160,227,
/* 0x0830 */ 188, 34,218,225, 19,255,255,235, 8, 0,157,229, 4, 16,160,227,
/* 0x0840 */ 186, 34,218,225, 15,255,255,235, 8, 16, 21,229,148, 34,159,229,
/* 0x0850 */ 7, 48, 1,226, 3, 49,160,225, 50, 67,160,225, 20,192,157,229,
/* 0x0860 */ 24, 48, 21,229, 16, 32, 21,229, 3,176,140,224, 11, 58,160,225,
/* 0x0870 */ 35, 58,160,225, 12, 0,157,229, 36, 32,141,229, 3,128,130,224,
/* 0x0880 */ 12, 32, 21,229, 0, 0, 80,227, 40,176,141,229, 7,144, 4,226,
/* 0x0890 */ 32, 32,141,229, 11, 96, 99,224, 16, 0, 0, 10, 1, 0, 17,227,
/* 0x08a0 */ 3, 32,160, 3, 7, 32,160, 19, 6, 0,160,225, 8, 16,160,225,
/* 0x08b0 */ 16, 48,160,227,211,254,255,235, 0, 0, 86,225, 74, 0, 0, 26,
/* 0x08c0 */ 84,192,157,229, 4, 48, 20,226, 12, 48,160, 17, 12, 0,157,229,
/* 0x08d0 */ 36, 16,141,226, 16, 32,157,229, 30,255,255,235, 11, 0, 0,234,
/* 0x08e0 */ 28,192, 21,229, 6, 0,160,225, 12,192, 99,224, 4,192,141,229,
/* 0x08f0 */ 16,192,157,229, 8, 16,160,225, 9, 32,160,225, 18, 48,160,227,
/* 0x0900 */ 0,192,141,229,161,254,255,235, 0, 0, 86,225, 54, 0, 0, 26,
/* 0x0910 */ 0, 48,104,226, 3,122,160,225, 2, 0, 25,227, 39,122,160,225,
/* 0x0920 */ 7, 0, 0, 10, 0, 0, 87,227, 5, 0, 0, 10, 8, 16,134,224,
/* 0x0930 */ 7, 32,160,225, 0, 48,160,227, 1, 32, 82,226, 1, 48,193,228,
/* 0x0940 */ 251,255,255, 26, 12, 0,157,229, 0, 0, 80,227, 40, 0, 0, 10,
/* 0x0950 */ 170,254,255,235, 32, 48, 21,229, 28, 0,141,229, 1, 0, 83,227,
/* 0x0960 */ 27, 0, 0, 26, 8, 48, 21,229, 1, 0, 19,227, 24, 0, 0, 10,
/* 0x0970 */ 12, 32, 21,229, 16, 48, 21,229, 24, 16, 21,229, 3, 0, 82,225,
/* 0x0980 */ 58, 0, 0, 26, 1, 48,130,224, 20, 32,157,229, 3, 48,131,226,
/* 0x0990 */ 3, 48,130,224, 3, 0,195,227, 0, 48, 96,226, 3, 58,160,225,
/* 0x09a0 */ 35, 58,160,225, 11, 0, 83,227, 48, 0, 0,154, 28, 48,157,229,
/* 0x09b0 */ 12, 16,128,226, 0, 48,128,229, 44, 49,159,229, 0, 64,160,225,
/* 0x09c0 */ 4, 48,128,229, 36, 49,159,229, 8, 48,128,229,130,254,255,235,
/* 0x09d0 */ 63, 0, 0,234, 6, 0,160,225, 8, 16,160,225, 9, 32,160,225,
/* 0x09e0 */ 97,254,255,235, 0, 0, 80,227, 1, 0, 0, 10,127, 0,160,227,
/* 0x09f0 */ 44,254,255,235, 32,192,157,229, 7, 48,136,224, 12, 16,139,224,
/* 0x0a00 */ 3, 64,134,224, 1, 0, 84,225, 7, 0, 0, 42, 1, 16,100,224,
/* 0x0a10 */ 9, 32,160,225, 4, 0,160,225, 16, 48,160,227,121,254,255,235,
/* 0x0a20 */ 0, 0, 84,225, 0, 0, 0, 10,254,255,255,234, 24, 0,157,229,
/* 0x0a30 */ 32, 80,133,226, 1, 0,128,226, 24, 0,141,229,188, 50,218,225,
/* 0x0a40 */ 24, 32,157,229, 3, 0, 82,225, 85,255,255,186, 80, 48,157,229,
/* 0x0a50 */ 20, 32,157,229, 0, 0, 83,227, 20,192,157, 21, 0,192,131, 21,
/* 0x0a60 */ 24, 0,154,229, 0, 0,130,224, 44,208,141,226,240,143,189,232,
/* 0x0a70 */ 0,224,160,227, 0,192,224,227, 14, 0,160,225, 1, 26,160,227,
/* 0x0a80 */ 7, 32,160,227, 34, 48,160,227, 0, 80,141,232, 63,254,255,235,
/* 0x0a90 */ 0, 0, 80,227,206,255,255, 10, 3, 48,128,226, 3, 64,195,227,
/* 0x0aa0 */ 68, 48,159,229, 28, 0,157,229, 4, 48,132,229, 60, 48,159,229,
/* 0x0ab0 */ 0, 0,132,229, 12, 16,132,226, 4, 0,160,225, 8, 48,132,229,
/* 0x0ac0 */ 69,254,255,235, 4, 0,160,225, 12, 16,160,227, 5, 32,160,227,
/* 0x0ad0 */ 37,254,255,235, 4, 32,160,225, 8, 0,157,229, 0, 16,160,227,
/* 0x0ae0 */ 104,254,255,235,186,255,255,234, 64, 98, 81,115, 3, 0,189,232,
/* 0x0af0 */ 14,240,160,225,240, 71, 45,233, 12,208, 77,226, 52, 96,141,226,
/* 0x0b00 */ 0,144,160,225, 1,112,160,225, 3,128,160,225, 6, 0,160,225,
/* 0x0b10 */ 44, 16,141,226, 0, 48,160,227, 48,160,157,229, 2, 80,160,225,
/* 0x0b20 */ 52, 64,157,229,139,254,255,235, 60, 48,157,229, 56,192,157,229,
/* 0x0b30 */ 12,224,141,226, 4, 48, 46,229, 12,192,100,224, 6, 32,160,225,
/* 0x0b40 */ 10, 16,160,225, 9, 48,160,225, 5, 0,160,225, 56,192,141,229,
/* 0x0b50 */ 0,224,141,229, 52,112,141,229, 4,128,141,229,205,254,255,235,
/* 0x0b60 */ 0, 64,160,225, 9, 16,160,227, 9, 0,160,225, 4, 32,160,225,
/* 0x0b70 */ 68,254,255,235,188, 2,218,225, 52, 32,138,226, 0, 16,160,227,
/* 0x0b80 */ 35, 0, 0,234, 0, 48,146,229, 3, 0, 83,227, 30, 0, 0, 26,
/* 0x0b90 */ 8, 48,146,229, 8, 0,157,229, 0, 16,160,227, 0, 0,131,224,
/* 0x0ba0 */ 1, 32,160,225,205,253,255,235, 0, 80, 80,226, 4, 0, 0,186,
/* 0x0bb0 */ 10, 16,160,225, 2, 44,160,227,190,253,255,235, 2, 12, 80,227,
/* 0x0bc0 */ 1, 0, 0, 10,127, 0,160,227,182,253,255,235, 0,224,160,227,
/* 0x0bd0 */ 14, 32,160,225, 8,192,141,226, 10, 16,160,225, 9, 48,160,225,
/* 0x0be0 */ 5, 0,160,225, 0, 80,141,232,170,254,255,235, 7, 16,160,227,
/* 0x0bf0 */ 0, 64,160,225, 8, 32,157,229, 9, 0,160,225, 33,254,255,235,
/* 0x0c00 */ 5, 0,160,225,186,253,255,235, 3, 0, 0,234, 32, 32,130,226,
/* 0x0c10 */ 1, 16,129,226, 0, 0, 81,225,217,255,255,186, 4, 0,160,225,
/* 0x0c20 */ 12,208,141,226,240,135,189,232
/* 0x06b0 */ 16, 0,141,229, 8, 48,141,229, 1, 80,136,224, 9, 0, 0, 10,
/* 0x06c0 */ 80, 32,157,229, 0, 0,146,229,176, 49,208,225, 2, 0, 83,227,
/* 0x06d0 */ 92, 48,144, 21, 0, 48,160, 3, 20, 48,141, 5, 0, 0, 99, 16,
/* 0x06e0 */ 38, 0, 0, 26, 38, 0, 0,234,176, 49,216,225,188, 34,216,225,
/* 0x06f0 */ 3, 0, 83,227, 12, 16,157,229, 16,224,160, 19, 0,224,160, 3,
/* 0x0700 */ 1,192, 66,226, 5, 0,160,225, 0, 64,224,227, 13, 0, 0,234,
/* 0x0710 */ 0, 48,144,229, 1, 0, 83,227, 8, 0, 0, 26, 20, 48,144,229,
/* 0x0720 */ 0, 0, 83,227, 5, 0, 0, 10, 8, 32,144,229, 2, 48,131,224,
/* 0x0730 */ 3, 0, 81,225, 3, 16,160, 49, 2, 0, 84,225, 2, 64,160, 33,
/* 0x0740 */ 32, 0,128,226, 1,192, 76,226, 0, 0, 92,227,239,255,255,170,
/* 0x0750 */ 255, 78,196,227, 15, 64,196,227, 1, 16,100,224,255, 30,129,226,
/* 0x0760 */ 15, 16,129,226,255, 30,193,227, 15, 16,193,227, 14, 48,160,225,
/* 0x0770 */ 4, 0,160,225, 0, 32,160,227, 34,255,255,235, 0, 0,100,224,
/* 0x0780 */ 20, 0,141,229, 0,192,160,227, 32, 80,133,226, 24,192,141,229,
/* 0x0790 */ 165, 0, 0,234, 12, 0,157,229, 0, 0, 80,227, 9, 0, 0, 10,
/* 0x07a0 */ 32, 48, 21,229, 6, 0, 83,227, 6, 0, 0, 26, 24, 32, 21,229,
/* 0x07b0 */ 20, 48,157,229, 8, 0,157,229, 2, 32,131,224, 3, 16,160,227,
/* 0x07c0 */ 48,255,255,235,148, 0, 0,234, 32, 48, 21,229, 1, 0, 83,227,
/* 0x07d0 */ 145, 0, 0, 26, 12, 48, 21,229, 0, 0, 83,227,142, 0, 0, 10,
/* 0x07e0 */ 12,192,157,229, 0, 0, 92,227, 18, 0, 0, 10, 28, 48, 21,229,
/* 0x07f0 */ 0, 0, 83,227, 15, 0, 0, 26, 28, 48,152,229, 24, 32, 21,229,
/* 0x0800 */ 20, 0,157,229, 3, 32,130,224, 2, 32,128,224, 3, 16,160,227,
/* 0x0810 */ 8, 0,157,229, 27,255,255,235, 8, 0,157,229, 5, 16,160,227,
/* 0x0820 */ 188, 34,216,225, 23,255,255,235, 8, 0,157,229, 4, 16,160,227,
/* 0x0830 */ 186, 34,216,225, 19,255,255,235, 8, 16, 21,229,148, 34,159,229,
/* 0x0840 */ 7, 48, 1,226, 3, 49,160,225, 50, 67,160,225, 20,192,157,229,
/* 0x0850 */ 24, 48, 21,229, 16, 32, 21,229, 3,176,140,224, 11, 58,160,225,
/* 0x0860 */ 35, 58,160,225, 12, 0,157,229, 36, 32,141,229, 3,160,130,224,
/* 0x0870 */ 12, 32, 21,229, 0, 0, 80,227, 40,176,141,229, 7,144, 4,226,
/* 0x0880 */ 32, 32,141,229, 11, 96, 99,224, 16, 0, 0, 10, 1, 0, 17,227,
/* 0x0890 */ 3, 32,160, 3, 7, 32,160, 19, 6, 0,160,225, 10, 16,160,225,
/* 0x08a0 */ 16, 48,160,227,215,254,255,235, 0, 0, 86,225, 74, 0, 0, 26,
/* 0x08b0 */ 84,192,157,229, 4, 48, 20,226, 12, 48,160, 17, 12, 0,157,229,
/* 0x08c0 */ 36, 16,141,226, 16, 32,157,229, 34,255,255,235, 11, 0, 0,234,
/* 0x08d0 */ 28,192, 21,229, 6, 0,160,225, 12,192, 99,224, 4,192,141,229,
/* 0x08e0 */ 16,192,157,229, 10, 16,160,225, 9, 32,160,225, 18, 48,160,227,
/* 0x08f0 */ 0,192,141,229,165,254,255,235, 0, 0, 86,225, 54, 0, 0, 26,
/* 0x0900 */ 0, 48,106,226, 3,122,160,225, 2, 0, 25,227, 39,122,160,225,
/* 0x0910 */ 7, 0, 0, 10, 0, 0, 87,227, 5, 0, 0, 10, 10, 16,134,224,
/* 0x0920 */ 7, 32,160,225, 0, 48,160,227, 1, 32, 82,226, 1, 48,193,228,
/* 0x0930 */ 251,255,255, 26, 12, 0,157,229, 0, 0, 80,227, 40, 0, 0, 10,
/* 0x0940 */ 174,254,255,235, 32, 48, 21,229, 28, 0,141,229, 1, 0, 83,227,
/* 0x0950 */ 27, 0, 0, 26, 8, 48, 21,229, 1, 0, 19,227, 24, 0, 0, 10,
/* 0x0960 */ 12, 32, 21,229, 16, 48, 21,229, 24, 16, 21,229, 3, 0, 82,225,
/* 0x0970 */ 58, 0, 0, 26, 1, 48,130,224, 20, 32,157,229, 3, 48,131,226,
/* 0x0980 */ 3, 48,130,224, 3, 0,195,227, 0, 48, 96,226, 3, 58,160,225,
/* 0x0990 */ 35, 58,160,225, 11, 0, 83,227, 48, 0, 0,154, 28, 48,157,229,
/* 0x09a0 */ 12, 16,128,226, 0, 48,128,229, 44, 49,159,229, 0, 64,160,225,
/* 0x09b0 */ 4, 48,128,229, 36, 49,159,229, 8, 48,128,229,134,254,255,235,
/* 0x09c0 */ 63, 0, 0,234, 6, 0,160,225, 10, 16,160,225, 9, 32,160,225,
/* 0x09d0 */ 101,254,255,235, 0, 0, 80,227, 1, 0, 0, 10,127, 0,160,227,
/* 0x09e0 */ 48,254,255,235, 32,192,157,229, 7, 48,138,224, 12, 16,139,224,
/* 0x09f0 */ 3, 64,134,224, 1, 0, 84,225, 7, 0, 0, 42, 1, 16,100,224,
/* 0x0a00 */ 9, 32,160,225, 4, 0,160,225, 16, 48,160,227,125,254,255,235,
/* 0x0a10 */ 0, 0, 84,225, 0, 0, 0, 10,254,255,255,234, 24, 0,157,229,
/* 0x0a20 */ 32, 80,133,226, 1, 0,128,226, 24, 0,141,229,188, 50,216,225,
/* 0x0a30 */ 24, 32,157,229, 3, 0, 82,225, 85,255,255,186, 80, 48,157,229,
/* 0x0a40 */ 20, 32,157,229, 0, 0, 83,227, 20,192,157, 21, 0,192,131, 21,
/* 0x0a50 */ 24, 0,152,229, 0, 0,130,224, 44,208,141,226,240,143,189,232,
/* 0x0a60 */ 0,224,160,227, 0,192,224,227, 14, 0,160,225, 1, 26,160,227,
/* 0x0a70 */ 7, 32,160,227, 34, 48,160,227, 0, 80,141,232, 67,254,255,235,
/* 0x0a80 */ 0, 0, 80,227,206,255,255, 10, 3, 48,128,226, 3, 64,195,227,
/* 0x0a90 */ 68, 48,159,229, 28, 0,157,229, 4, 48,132,229, 60, 48,159,229,
/* 0x0aa0 */ 0, 0,132,229, 12, 16,132,226, 4, 0,160,225, 8, 48,132,229,
/* 0x0ab0 */ 73,254,255,235, 4, 0,160,225, 12, 16,160,227, 5, 32,160,227,
/* 0x0ac0 */ 41,254,255,235, 4, 32,160,225, 8, 0,157,229, 0, 16,160,227,
/* 0x0ad0 */ 108,254,255,235,186,255,255,234, 64, 98, 81,115, 3, 0,189,232,
/* 0x0ae0 */ 14,240,160,225,240, 71, 45,233, 12,208, 77,226, 52, 96,141,226,
/* 0x0af0 */ 0,144,160,225, 1,112,160,225, 3,128,160,225, 6, 0,160,225,
/* 0x0b00 */ 44, 16,141,226, 0, 48,160,227, 48,160,157,229, 2, 80,160,225,
/* 0x0b10 */ 52, 64,157,229,143,254,255,235, 60, 48,157,229, 56,192,157,229,
/* 0x0b20 */ 12,224,141,226, 4, 48, 46,229, 12,192,100,224, 6, 32,160,225,
/* 0x0b30 */ 10, 16,160,225, 9, 48,160,225, 5, 0,160,225, 56,192,141,229,
/* 0x0b40 */ 0,224,141,229, 52,112,141,229, 4,128,141,229,209,254,255,235,
/* 0x0b50 */ 0, 64,160,225, 9, 16,160,227, 9, 0,160,225, 4, 32,160,225,
/* 0x0b60 */ 72,254,255,235,188, 2,218,225, 52, 32,138,226, 0, 16,160,227,
/* 0x0b70 */ 35, 0, 0,234, 0, 48,146,229, 3, 0, 83,227, 30, 0, 0, 26,
/* 0x0b80 */ 8, 48,146,229, 8, 0,157,229, 0, 16,160,227, 0, 0,131,224,
/* 0x0b90 */ 1, 32,160,225,209,253,255,235, 0, 80, 80,226, 4, 0, 0,186,
/* 0x0ba0 */ 10, 16,160,225, 2, 44,160,227,194,253,255,235, 2, 12, 80,227,
/* 0x0bb0 */ 1, 0, 0, 10,127, 0,160,227,186,253,255,235, 0,224,160,227,
/* 0x0bc0 */ 14, 32,160,225, 8,192,141,226, 10, 16,160,225, 9, 48,160,225,
/* 0x0bd0 */ 5, 0,160,225, 0, 80,141,232,174,254,255,235, 7, 16,160,227,
/* 0x0be0 */ 0, 64,160,225, 8, 32,157,229, 9, 0,160,225, 37,254,255,235,
/* 0x0bf0 */ 5, 0,160,225,190,253,255,235, 3, 0, 0,234, 32, 32,130,226,
/* 0x0c00 */ 1, 16,129,226, 0, 0, 81,225,217,255,255,186, 4, 0,160,225,
/* 0x0c10 */ 12,208,141,226,240,135,189,232
};
+4 -4
View File
@@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_ARM64_DARWIN_MACHO_ENTRY_SIZE 7365
#define STUB_ARM64_DARWIN_MACHO_ENTRY_ADLER32 0x31b06f6b
#define STUB_ARM64_DARWIN_MACHO_ENTRY_CRC32 0x0f5ec97d
#define STUB_ARM64_DARWIN_MACHO_ENTRY_ADLER32 0x1bf86f1b
#define STUB_ARM64_DARWIN_MACHO_ENTRY_CRC32 0xb61e8421
unsigned char stub_arm64_darwin_macho_entry[7365] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -82,11 +82,11 @@ unsigned char stub_arm64_darwin_macho_entry[7365] = {
/* 0x02a0 */ 243,255,255,151, 33, 0, 1, 58,241,255,255,151, 33, 0, 1, 58,
/* 0x02b0 */ 239,255,255,151, 67,255,255, 84, 35, 12, 0,113, 1, 0,128, 82,
/* 0x02c0 */ 35, 1, 0, 84, 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,
/* 0x02d0 */ 101,248,255, 52,163, 0, 1, 83,165,124, 1, 83, 99, 0, 3, 43,
/* 0x02d0 */ 101,248,255, 52,163, 0, 1, 83,165,124, 1, 19, 99, 0, 3, 43,
/* 0x02e0 */ 2, 0, 0, 20,226,255,255,151, 33, 0, 1, 58,224,255,255,151,
/* 0x02f0 */ 33, 0, 1, 58,225, 0, 0, 84, 33, 0,128, 82,220,255,255,151,
/* 0x0300 */ 33, 0, 1, 58,218,255,255,151,163,255,255, 84, 33, 8, 0, 17,
/* 0x0310 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 52,129, 26, 67, 0, 64, 57,
/* 0x0310 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 36,129, 26, 67, 0, 64, 57,
/* 0x0320 */ 67,200,101, 56, 67, 20, 0, 56, 33, 4, 0,113,161,255,255, 84,
/* 0x0330 */ 215,255,255, 23, 1, 64, 33,139,225, 11,190,169,227,123, 1,169,
/* 0x0340 */ 5, 0,128, 18, 4, 0,176, 82, 52, 0, 0, 20,228,123, 65,169,
+4 -4
View File
@@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 7437
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0x1aee75c5
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x63fb282c
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0xf1277575
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x3732046d
unsigned char stub_arm64_linux_elf_entry[7437] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -83,11 +83,11 @@ unsigned char stub_arm64_linux_elf_entry[7437] = {
/* 0x02b0 */ 241,255,255,151, 33, 0, 1, 58,239,255,255,151, 67,255,255, 84,
/* 0x02c0 */ 35, 12, 0,113, 1, 0,128, 82, 35, 1, 0, 84, 5, 20, 64, 56,
/* 0x02d0 */ 165, 32, 3, 42,229, 3, 37, 42,101,248,255, 52,163, 0, 1, 83,
/* 0x02e0 */ 165,124, 1, 83, 99, 0, 3, 43, 2, 0, 0, 20,226,255,255,151,
/* 0x02e0 */ 165,124, 1, 19, 99, 0, 3, 43, 2, 0, 0, 20,226,255,255,151,
/* 0x02f0 */ 33, 0, 1, 58,224,255,255,151, 33, 0, 1, 58,225, 0, 0, 84,
/* 0x0300 */ 33, 0,128, 82,220,255,255,151, 33, 0, 1, 58,218,255,255,151,
/* 0x0310 */ 163,255,255, 84, 33, 8, 0, 17, 33, 4, 0, 17,191, 0, 20, 49,
/* 0x0320 */ 33, 52,129, 26, 67, 0, 64, 57, 67,200,101, 56, 67, 20, 0, 56,
/* 0x0320 */ 33, 36,129, 26, 67, 0, 64, 57, 67,200,101, 56, 67, 20, 0, 56,
/* 0x0330 */ 33, 4, 0,113,161,255,255, 84,215,255,255, 23, 1, 64, 33,139,
/* 0x0340 */ 225, 11,190,169,227,123, 1,169, 5, 0,128, 18, 4, 0,176, 82,
/* 0x0350 */ 52, 0, 0, 20,228,123, 65,169,225, 15,194,168, 0, 0, 1,203,
+4 -4
View File
@@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_ARM64_LINUX_ELF_SO_FOLD_SIZE 16470
#define STUB_ARM64_LINUX_ELF_SO_FOLD_ADLER32 0x5ca85f12
#define STUB_ARM64_LINUX_ELF_SO_FOLD_CRC32 0xc23c6836
#define STUB_ARM64_LINUX_ELF_SO_FOLD_ADLER32 0x7b285ec2
#define STUB_ARM64_LINUX_ELF_SO_FOLD_CRC32 0x0dde2064
unsigned char stub_arm64_linux_elf_so_fold[16470] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -252,11 +252,11 @@ unsigned char stub_arm64_linux_elf_so_fold[16470] = {
/* 0x0d40 */ 243,255,255,151, 33, 0, 1, 58,241,255,255,151, 33, 0, 1, 58,
/* 0x0d50 */ 239,255,255,151, 67,255,255, 84, 35, 12, 0,113, 1, 0,128, 82,
/* 0x0d60 */ 35, 1, 0, 84, 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,
/* 0x0d70 */ 101,248,255, 52,163, 0, 1, 83,165,124, 1, 83, 99, 0, 3, 43,
/* 0x0d70 */ 101,248,255, 52,163, 0, 1, 83,165,124, 1, 19, 99, 0, 3, 43,
/* 0x0d80 */ 2, 0, 0, 20,226,255,255,151, 33, 0, 1, 58,224,255,255,151,
/* 0x0d90 */ 33, 0, 1, 58,225, 0, 0, 84, 33, 0,128, 82,220,255,255,151,
/* 0x0da0 */ 33, 0, 1, 58,218,255,255,151,163,255,255, 84, 33, 8, 0, 17,
/* 0x0db0 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 52,129, 26, 67, 0, 64, 57,
/* 0x0db0 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 36,129, 26, 67, 0, 64, 57,
/* 0x0dc0 */ 67,200,101, 56, 67, 20, 0, 56, 33, 4, 0,113,161,255,255, 84,
/* 0x0dd0 */ 215,255,255, 23, 1, 64, 33,139,225, 11,190,169,227,123, 1,169,
/* 0x0de0 */ 5, 0,128, 18, 4, 0,176, 82, 52, 0, 0, 20,228,123, 65,169,
+4 -4
View File
@@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_ARM64_LINUX_SHLIB_INIT_SIZE 7923
#define STUB_ARM64_LINUX_SHLIB_INIT_ADLER32 0x74b92ff3
#define STUB_ARM64_LINUX_SHLIB_INIT_CRC32 0xfaebe7b3
#define STUB_ARM64_LINUX_SHLIB_INIT_ADLER32 0xb3122fa3
#define STUB_ARM64_LINUX_SHLIB_INIT_CRC32 0xb5f30aee
unsigned char stub_arm64_linux_shlib_init[7923] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -83,11 +83,11 @@ unsigned char stub_arm64_linux_shlib_init[7923] = {
/* 0x02b0 */ 241,255,255,151, 33, 0, 1, 58,239,255,255,151, 67,255,255, 84,
/* 0x02c0 */ 35, 12, 0,113, 1, 0,128, 82, 35, 1, 0, 84, 5, 20, 64, 56,
/* 0x02d0 */ 165, 32, 3, 42,229, 3, 37, 42,101,248,255, 52,163, 0, 1, 83,
/* 0x02e0 */ 165,124, 1, 83, 99, 0, 3, 43, 2, 0, 0, 20,226,255,255,151,
/* 0x02e0 */ 165,124, 1, 19, 99, 0, 3, 43, 2, 0, 0, 20,226,255,255,151,
/* 0x02f0 */ 33, 0, 1, 58,224,255,255,151, 33, 0, 1, 58,225, 0, 0, 84,
/* 0x0300 */ 33, 0,128, 82,220,255,255,151, 33, 0, 1, 58,218,255,255,151,
/* 0x0310 */ 163,255,255, 84, 33, 8, 0, 17, 33, 4, 0, 17,191, 0, 20, 49,
/* 0x0320 */ 33, 52,129, 26, 67, 0, 64, 57, 67,200,101, 56, 67, 20, 0, 56,
/* 0x0320 */ 33, 36,129, 26, 67, 0, 64, 57, 67,200,101, 56, 67, 20, 0, 56,
/* 0x0330 */ 33, 4, 0,113,161,255,255, 84,215,255,255, 23, 1, 64, 33,139,
/* 0x0340 */ 225, 11,190,169,227,123, 1,169, 5, 0,128, 18, 4, 0,176, 82,
/* 0x0350 */ 52, 0, 0, 20,228,123, 65,169,225, 15,194,168, 0, 0, 1,203,
+4 -4
View File
@@ -33,8 +33,8 @@
/* clang-format off */
#define STUB_ARM64_WIN64_PE_SIZE 6445
#define STUB_ARM64_WIN64_PE_ADLER32 0x2ad96830
#define STUB_ARM64_WIN64_PE_CRC32 0x37da39bd
#define STUB_ARM64_WIN64_PE_ADLER32 0x20b067e0
#define STUB_ARM64_WIN64_PE_CRC32 0x6272f953
unsigned char stub_arm64_win64_pe[6445] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -78,11 +78,11 @@ unsigned char stub_arm64_win64_pe[6445] = {
/* 0x0260 */ 243,255,255,151, 33, 0, 1, 58,241,255,255,151, 33, 0, 1, 58,
/* 0x0270 */ 239,255,255,151, 67,255,255, 84, 35, 12, 0,113, 1, 0,128, 82,
/* 0x0280 */ 35, 1, 0, 84, 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,
/* 0x0290 */ 101,248,255, 52,163, 0, 1, 83,165,124, 1, 83, 99, 0, 3, 43,
/* 0x0290 */ 101,248,255, 52,163, 0, 1, 83,165,124, 1, 19, 99, 0, 3, 43,
/* 0x02a0 */ 2, 0, 0, 20,226,255,255,151, 33, 0, 1, 58,224,255,255,151,
/* 0x02b0 */ 33, 0, 1, 58,225, 0, 0, 84, 33, 0,128, 82,220,255,255,151,
/* 0x02c0 */ 33, 0, 1, 58,218,255,255,151,163,255,255, 84, 33, 8, 0, 17,
/* 0x02d0 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 52,129, 26, 67, 0, 64, 57,
/* 0x02d0 */ 33, 4, 0, 17,191, 0, 20, 49, 33, 36,129, 26, 67, 0, 64, 57,
/* 0x02e0 */ 67,200,101, 56, 67, 20, 0, 56, 33, 4, 0,113,161,255,255, 84,
/* 0x02f0 */ 215,255,255, 23,254, 15, 31,248,226, 15,191,169, 7, 64, 33,139,
/* 0x0300 */ 5, 0,128, 18, 4, 0,176, 82, 45, 0, 0, 20,227, 19,193,168,
+96 -97
View File
@@ -1,5 +1,5 @@
/* armeb.v4a-linux.elf-fold.h
created from armeb.v4a-linux.elf-fold.bin, 2940 (0xb7c) bytes
created from armeb.v4a-linux.elf-fold.bin, 2924 (0xb6c) bytes
This file is part of the UPX executable compressor.
@@ -32,17 +32,17 @@
/* clang-format off */
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_SIZE 2940
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_ADLER32 0x7228b95c
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_CRC32 0xcb53dba5
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_SIZE 2924
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_ADLER32 0x821ab256
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_CRC32 0xc15673ab
unsigned char stub_armeb_v4a_linux_elf_fold[2940] = {
unsigned char stub_armeb_v4a_linux_elf_fold[2924] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 2, 0, 40, 0, 0, 0, 1, 0, 0,128,128, 0, 0, 0, 52,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 2, 0, 52, 0, 32, 0, 2, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,128, 0,
/* 0x0040 */ 0, 0,128, 0, 0, 0, 11,124, 0, 0, 11,124, 0, 0, 0, 5,
/* 0x0050 */ 0, 0,128, 0, 0, 0, 0, 1, 0, 0, 11,124, 0, 0, 0, 0,
/* 0x0040 */ 0, 0,128, 0, 0, 0, 11,108, 0, 0, 11,108, 0, 0, 0, 5,
/* 0x0050 */ 0, 0,128, 0, 0, 0, 0, 1, 0, 0, 11,108, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 0, 0, 0, 34,225,160, 32, 4,225,160, 48, 5,232,189, 31,240,
@@ -63,7 +63,7 @@ unsigned char stub_armeb_v4a_linux_elf_fold[2940] = {
/* 0x0170 */ 225, 81, 0, 13,229, 32, 32, 4, 26,255,255,251,225,160,208, 0,
/* 0x0180 */ 232,189, 12, 16,226, 77,220, 10,229,154,144, 4,225,160,128, 13,
/* 0x0190 */ 229,154,112, 0,226,143, 96,184,226,137,144, 12,233, 45, 15,248,
/* 0x01a0 */ 232,189, 0, 15,235, 0, 2, 39,226,141,208, 20,226,141,220, 10,
/* 0x01a0 */ 232,189, 0, 15,235, 0, 2, 35,226,141,208, 20,226,141,220, 10,
/* 0x01b0 */ 229,141, 0, 16,229,155, 16,104,225,160, 0, 11,235, 0, 0, 70,
/* 0x01c0 */ 225,160, 0, 11,235, 0, 0, 72,228,157, 64, 4,227, 84, 0, 0,
/* 0x01d0 */ 186, 0, 0, 8,227,160, 80, 0,233, 45, 0, 48,227,160, 48, 2,
@@ -132,93 +132,92 @@ unsigned char stub_armeb_v4a_linux_elf_fold[2940] = {
/* 0x05c0 */ 229,157, 48, 4,232,148, 0, 6,224,130, 32, 3,224, 99, 16, 1,
/* 0x05d0 */ 232,132, 0, 6,229,148, 48, 0,227, 83, 0, 0, 26,255,255,183,
/* 0x05e0 */ 226,141,208, 20,232,189,128,240, 33, 88, 80, 85,233, 45, 79,240,
/* 0x05f0 */ 225,160,160, 1,229,145, 16, 28,226, 77,208, 44,227, 82, 0, 0,
/* 0x0600 */ 229,141, 32, 12,229,141, 0, 16,229,141, 48, 8,224,138, 80, 1,
/* 0x0610 */ 10, 0, 0, 13,229,157, 32, 80,229,146, 0, 0,225,208, 49,176,
/* 0x0620 */ 226,128, 16, 52,227, 83, 0, 2, 21,145, 48, 40, 5,145, 0, 8,
/* 0x0630 */ 3,160, 48, 0, 16, 99, 0, 0,229,145, 16, 20, 5,141, 48, 20,
/* 0x0640 */ 21,141, 0, 20,235,255,255, 40,234, 0, 0, 38,225,218, 49,176,
/* 0x0650 */ 225,218, 34,188,227, 83, 0, 3,229,157, 16, 12, 19,160,224, 16,
/* 0x0660 */ 3,160,224, 0,226, 66,192, 1,225,160, 0, 5,227,224, 64, 0,
/* 0x0670 */ 234, 0, 0, 13,229,144, 48, 0,227, 83, 0, 1, 26, 0, 0, 8,
/* 0x0680 */ 229,144, 48, 20,227, 83, 0, 0, 10, 0, 0, 5,229,144, 32, 8,
/* 0x0690 */ 224,131, 48, 2,225, 81, 0, 3, 49,160, 16, 3,225, 84, 0, 2,
/* 0x06a0 */ 33,160, 64, 2,226,128, 0, 32,226, 76,192, 1,227, 92, 0, 0,
/* 0x06b0 */ 170,255,255,239,227,196, 78,255,227,196, 64, 15,224,100, 16, 1,
/* 0x06c0 */ 226,129, 30,255,226,129, 16, 15,227,193, 30,255,227,193, 16, 15,
/* 0x06d0 */ 225,160, 48, 14,225,160, 0, 4,227,160, 32, 0,235,255,255, 28,
/* 0x06e0 */ 224,100, 0, 0,229,141, 0, 20,227,160,192, 0,226,133, 80, 32,
/* 0x06f0 */ 229,141,192, 24,234, 0, 0,165,229,157, 0, 12,227, 80, 0, 0,
/* 0x0700 */ 10, 0, 0, 9,229, 21, 48, 32,227, 83, 0, 6, 26, 0, 0, 6,
/* 0x0710 */ 229, 21, 32, 24,229,157, 48, 20,229,157, 0, 8,224,131, 32, 2,
/* 0x0720 */ 227,160, 16, 3,235,255,255, 42,234, 0, 0,148,229, 21, 48, 32,
/* 0x0730 */ 227, 83, 0, 1, 26, 0, 0,145,229, 21, 48, 12,227, 83, 0, 0,
/* 0x0740 */ 10, 0, 0,142,229,157,192, 12,227, 92, 0, 0, 10, 0, 0, 18,
/* 0x0750 */ 229, 21, 48, 28,227, 83, 0, 0, 26, 0, 0, 15,229,154, 48, 28,
/* 0x0760 */ 229, 21, 32, 24,229,157, 0, 20,224,130, 32, 3,224,128, 32, 2,
/* 0x0770 */ 227,160, 16, 3,229,157, 0, 8,235,255,255, 21,229,157, 0, 8,
/* 0x0780 */ 227,160, 16, 5,225,218, 34,188,235,255,255, 17,229,157, 0, 8,
/* 0x0790 */ 227,160, 16, 4,225,218, 34,186,235,255,255, 13,229, 21, 16, 8,
/* 0x07a0 */ 229,159, 34,148,226, 1, 48, 7,225,160, 49, 3,225,160, 67, 50,
/* 0x07b0 */ 229, 21, 48, 24,229,157, 32, 20,229,157,192, 12,224,130,176, 3,
/* 0x07c0 */ 225,160, 42, 11,229, 21, 48, 16,229, 21, 0, 12,225,160, 42, 34,
/* 0x07d0 */ 227, 92, 0, 0,229,141, 48, 36,229,141,176, 40,224,131,128, 2,
/* 0x07e0 */ 226, 4,144, 7,229,141, 0, 32,224, 98, 96, 11, 10, 0, 0, 16,
/* 0x07f0 */ 227, 17, 0, 1, 3,160, 32, 3, 19,160, 32, 7,225,160, 0, 6,
/* 0x0800 */ 225,160, 16, 8,227,160, 48, 16,235,255,254,209,225, 86, 0, 0,
/* 0x0810 */ 26, 0, 0, 74,229,157, 32, 84,226, 20, 48, 4, 17,160, 48, 2,
/* 0x0820 */ 229,157, 0, 12,226,141, 16, 36,229,157, 32, 16,235,255,255, 28,
/* 0x0830 */ 234, 0, 0, 11,229, 21,192, 28,224, 98,192, 12,229,141,192, 4,
/* 0x0840 */ 229,157,192, 16,225,160, 0, 6,225,160, 16, 8,225,160, 32, 9,
/* 0x0850 */ 227,160, 48, 18,229,141,192, 0,235,255,254,171,225, 86, 0, 0,
/* 0x0860 */ 26, 0, 0, 54,226,104, 48, 0,225,160,122, 3,227, 25, 0, 2,
/* 0x0870 */ 225,160,122, 39, 10, 0, 0, 7,227, 87, 0, 0, 10, 0, 0, 5,
/* 0x0880 */ 224,134, 16, 8,225,160, 32, 7,227,160, 48, 0,226, 82, 32, 1,
/* 0x0890 */ 228,193, 48, 1, 26,255,255,251,229,157, 0, 12,227, 80, 0, 0,
/* 0x08a0 */ 10, 0, 0, 40,235,255,254,168,229, 21, 48, 32,227, 83, 0, 1,
/* 0x08b0 */ 229,141, 0, 28, 26, 0, 0, 27,229, 21, 48, 8,227, 19, 0, 1,
/* 0x08c0 */ 10, 0, 0, 24,229, 21, 48, 16,229, 21, 32, 12,225, 82, 0, 3,
/* 0x08d0 */ 229, 21, 48, 24, 26, 0, 0, 58,224,130, 48, 3,229,157, 32, 20,
/* 0x08e0 */ 226,131, 48, 3,224,130, 48, 3,227,195, 0, 3,226, 96, 48, 0,
/* 0x08f0 */ 225,160, 58, 3,225,160, 58, 35,227, 83, 0, 11,154, 0, 0, 48,
/* 0x0900 */ 229,157, 48, 28,229,128, 48, 0,229,159, 49, 48,229,128, 48, 4,
/* 0x0910 */ 229,159, 49, 44,226,128, 16, 12,229,128, 48, 8,225,160, 64, 0,
/* 0x0920 */ 235,255,254,134,234, 0, 0, 63,225,160, 0, 6,225,160, 16, 8,
/* 0x0930 */ 225,160, 32, 9,235,255,254,110,227, 80, 0, 0, 10, 0, 0, 1,
/* 0x0940 */ 227,160, 0,127,235,255,254, 87,229,157,192, 32,224,136, 48, 7,
/* 0x0950 */ 224,139, 16, 12,224,134, 64, 3,225, 84, 0, 1, 42, 0, 0, 7,
/* 0x0960 */ 224,100, 16, 1,225,160, 32, 9,225,160, 0, 4,227,160, 48, 16,
/* 0x0970 */ 235,255,254,119,225, 84, 0, 0, 10, 0, 0, 0,234,255,255,254,
/* 0x0980 */ 229,157, 0, 24,226,128, 0, 1,229,141, 0, 24,226,133, 80, 32,
/* 0x0990 */ 225,218, 50,188,229,157, 32, 24,225, 82, 0, 3,186,255,255, 85,
/* 0x09a0 */ 229,157, 48, 80,227, 83, 0, 0, 21,157,192, 20, 21,131,192, 0,
/* 0x09b0 */ 229,157, 32, 20,229,154, 0, 24,224,130, 0, 0,226,141,208, 44,
/* 0x09c0 */ 232,189,143,240,227,160,224, 0,227,224,192, 0,225,160, 0, 14,
/* 0x09d0 */ 227,160, 26, 1,227,160, 32, 7,227,160, 48, 34,232,141, 80, 0,
/* 0x09e0 */ 235,255,254, 73,227, 80, 0, 0, 10,255,255,206,226,128, 48, 3,
/* 0x09f0 */ 227,195, 64, 3,229,159, 48, 68,229,157, 0, 28,229,132, 48, 4,
/* 0x0a00 */ 229,159, 48, 60,229,132, 0, 0,226,132, 16, 12,225,160, 0, 4,
/* 0x0a10 */ 229,132, 48, 8,235,255,254, 73,225,160, 0, 4,227,160, 16, 12,
/* 0x0a20 */ 227,160, 32, 5,235,255,254, 50,225,160, 32, 4,229,157, 0, 8,
/* 0x0a30 */ 227,160, 16, 0,235,255,254,102,234,255,255,186,115, 81, 98, 64,
/* 0x0a40 */ 232,189, 0, 3,225,160,240, 14,233, 45, 71,240,226, 77,208, 12,
/* 0x0a50 */ 226,141, 96, 52,225,160,144, 0,225,160,112, 1,225,160,128, 3,
/* 0x0a60 */ 225,160, 0, 6,226,141, 16, 44,227,160, 48, 0,229,157,160, 48,
/* 0x0a70 */ 225,160, 80, 2,229,157, 64, 52,235,255,254,137,229,157, 48, 60,
/* 0x0a80 */ 226,141,224, 12,229,157,192, 56,229, 46, 48, 4,224,100,192, 12,
/* 0x0a90 */ 225,160, 32, 6,225,160, 16, 10,225,160, 48, 9,225,160, 0, 5,
/* 0x0aa0 */ 229,141,192, 56,229,141,224, 0,229,141,112, 52,229,141,128, 4,
/* 0x0ab0 */ 235,255,254,205,225,160, 64, 0,227,160, 16, 9,225,160, 0, 9,
/* 0x0ac0 */ 225,160, 32, 4,235,255,254, 66,225,218, 2,188,226,138, 32, 52,
/* 0x0ad0 */ 227,160, 16, 0,234, 0, 0, 35,229,146, 48, 0,227, 83, 0, 3,
/* 0x0ae0 */ 26, 0, 0, 30,229,146, 48, 8,229,157, 0, 8,227,160, 16, 0,
/* 0x0af0 */ 224,131, 0, 0,225,160, 32, 1,235,255,253,239,226, 80, 80, 0,
/* 0x0b00 */ 186, 0, 0, 4,225,160, 16, 10,227,160, 44, 2,235,255,253,230,
/* 0x0b10 */ 227, 80, 12, 2, 10, 0, 0, 1,227,160, 0,127,235,255,253,225,
/* 0x0b20 */ 227,160,224, 0,225,160, 32, 14,226,141,192, 8,225,160, 16, 10,
/* 0x0b30 */ 225,160, 48, 9,225,160, 0, 5,232,141, 80, 0,235,255,254,170,
/* 0x0b40 */ 227,160, 16, 7,225,160, 64, 0,229,157, 32, 8,225,160, 0, 9,
/* 0x0b50 */ 235,255,254, 31,225,160, 0, 5,235,255,253,217,234, 0, 0, 3,
/* 0x0b60 */ 226,130, 32, 32,226,129, 16, 1,225, 81, 0, 0,186,255,255,217,
/* 0x0b70 */ 225,160, 0, 4,226,141,208, 12,232,189,135,240
/* 0x05f0 */ 225,160,128, 1,229,145, 16, 28,226, 77,208, 44,227, 82, 0, 0,
/* 0x0600 */ 229,141, 32, 12,229,141, 0, 16,229,141, 48, 8,224,136, 80, 1,
/* 0x0610 */ 10, 0, 0, 9,229,157, 32, 80,229,146, 0, 0,225,208, 49,176,
/* 0x0620 */ 227, 83, 0, 2, 21,144, 48, 92, 3,160, 48, 0, 5,141, 48, 20,
/* 0x0630 */ 16, 99, 0, 0, 26, 0, 0, 38,234, 0, 0, 38,225,216, 49,176,
/* 0x0640 */ 225,216, 34,188,227, 83, 0, 3,229,157, 16, 12, 19,160,224, 16,
/* 0x0650 */ 3,160,224, 0,226, 66,192, 1,225,160, 0, 5,227,224, 64, 0,
/* 0x0660 */ 234, 0, 0, 13,229,144, 48, 0,227, 83, 0, 1, 26, 0, 0, 8,
/* 0x0670 */ 229,144, 48, 20,227, 83, 0, 0, 10, 0, 0, 5,229,144, 32, 8,
/* 0x0680 */ 224,131, 48, 2,225, 81, 0, 3, 49,160, 16, 3,225, 84, 0, 2,
/* 0x0690 */ 33,160, 64, 2,226,128, 0, 32,226, 76,192, 1,227, 92, 0, 0,
/* 0x06a0 */ 170,255,255,239,227,196, 78,255,227,196, 64, 15,224,100, 16, 1,
/* 0x06b0 */ 226,129, 30,255,226,129, 16, 15,227,193, 30,255,227,193, 16, 15,
/* 0x06c0 */ 225,160, 48, 14,225,160, 0, 4,227,160, 32, 0,235,255,255, 32,
/* 0x06d0 */ 224,100, 0, 0,229,141, 0, 20,227,160,192, 0,226,133, 80, 32,
/* 0x06e0 */ 229,141,192, 24,234, 0, 0,165,229,157, 0, 12,227, 80, 0, 0,
/* 0x06f0 */ 10, 0, 0, 9,229, 21, 48, 32,227, 83, 0, 6, 26, 0, 0, 6,
/* 0x0700 */ 229, 21, 32, 24,229,157, 48, 20,229,157, 0, 8,224,131, 32, 2,
/* 0x0710 */ 227,160, 16, 3,235,255,255, 46,234, 0, 0,148,229, 21, 48, 32,
/* 0x0720 */ 227, 83, 0, 1, 26, 0, 0,145,229, 21, 48, 12,227, 83, 0, 0,
/* 0x0730 */ 10, 0, 0,142,229,157,192, 12,227, 92, 0, 0, 10, 0, 0, 18,
/* 0x0740 */ 229, 21, 48, 28,227, 83, 0, 0, 26, 0, 0, 15,229,152, 48, 28,
/* 0x0750 */ 229, 21, 32, 24,229,157, 0, 20,224,130, 32, 3,224,128, 32, 2,
/* 0x0760 */ 227,160, 16, 3,229,157, 0, 8,235,255,255, 25,229,157, 0, 8,
/* 0x0770 */ 227,160, 16, 5,225,216, 34,188,235,255,255, 21,229,157, 0, 8,
/* 0x0780 */ 227,160, 16, 4,225,216, 34,186,235,255,255, 17,229, 21, 16, 8,
/* 0x0790 */ 229,159, 34,148,226, 1, 48, 7,225,160, 49, 3,225,160, 67, 50,
/* 0x07a0 */ 229, 21, 48, 24,229,157, 32, 20,229,157,192, 12,224,130,176, 3,
/* 0x07b0 */ 225,160, 42, 11,229, 21, 48, 16,229, 21, 0, 12,225,160, 42, 34,
/* 0x07c0 */ 227, 92, 0, 0,229,141, 48, 36,229,141,176, 40,224,131,160, 2,
/* 0x07d0 */ 226, 4,144, 7,229,141, 0, 32,224, 98, 96, 11, 10, 0, 0, 16,
/* 0x07e0 */ 227, 17, 0, 1, 3,160, 32, 3, 19,160, 32, 7,225,160, 0, 6,
/* 0x07f0 */ 225,160, 16, 10,227,160, 48, 16,235,255,254,213,225, 86, 0, 0,
/* 0x0800 */ 26, 0, 0, 74,229,157, 32, 84,226, 20, 48, 4, 17,160, 48, 2,
/* 0x0810 */ 229,157, 0, 12,226,141, 16, 36,229,157, 32, 16,235,255,255, 32,
/* 0x0820 */ 234, 0, 0, 11,229, 21,192, 28,224, 98,192, 12,229,141,192, 4,
/* 0x0830 */ 229,157,192, 16,225,160, 0, 6,225,160, 16, 10,225,160, 32, 9,
/* 0x0840 */ 227,160, 48, 18,229,141,192, 0,235,255,254,175,225, 86, 0, 0,
/* 0x0850 */ 26, 0, 0, 54,226,106, 48, 0,225,160,122, 3,227, 25, 0, 2,
/* 0x0860 */ 225,160,122, 39, 10, 0, 0, 7,227, 87, 0, 0, 10, 0, 0, 5,
/* 0x0870 */ 224,134, 16, 10,225,160, 32, 7,227,160, 48, 0,226, 82, 32, 1,
/* 0x0880 */ 228,193, 48, 1, 26,255,255,251,229,157, 0, 12,227, 80, 0, 0,
/* 0x0890 */ 10, 0, 0, 40,235,255,254,172,229, 21, 48, 32,227, 83, 0, 1,
/* 0x08a0 */ 229,141, 0, 28, 26, 0, 0, 27,229, 21, 48, 8,227, 19, 0, 1,
/* 0x08b0 */ 10, 0, 0, 24,229, 21, 48, 16,229, 21, 32, 12,225, 82, 0, 3,
/* 0x08c0 */ 229, 21, 48, 24, 26, 0, 0, 58,224,130, 48, 3,229,157, 32, 20,
/* 0x08d0 */ 226,131, 48, 3,224,130, 48, 3,227,195, 0, 3,226, 96, 48, 0,
/* 0x08e0 */ 225,160, 58, 3,225,160, 58, 35,227, 83, 0, 11,154, 0, 0, 48,
/* 0x08f0 */ 229,157, 48, 28,229,128, 48, 0,229,159, 49, 48,229,128, 48, 4,
/* 0x0900 */ 229,159, 49, 44,226,128, 16, 12,229,128, 48, 8,225,160, 64, 0,
/* 0x0910 */ 235,255,254,138,234, 0, 0, 63,225,160, 0, 6,225,160, 16, 10,
/* 0x0920 */ 225,160, 32, 9,235,255,254,114,227, 80, 0, 0, 10, 0, 0, 1,
/* 0x0930 */ 227,160, 0,127,235,255,254, 91,229,157,192, 32,224,138, 48, 7,
/* 0x0940 */ 224,139, 16, 12,224,134, 64, 3,225, 84, 0, 1, 42, 0, 0, 7,
/* 0x0950 */ 224,100, 16, 1,225,160, 32, 9,225,160, 0, 4,227,160, 48, 16,
/* 0x0960 */ 235,255,254,123,225, 84, 0, 0, 10, 0, 0, 0,234,255,255,254,
/* 0x0970 */ 229,157, 0, 24,226,128, 0, 1,229,141, 0, 24,226,133, 80, 32,
/* 0x0980 */ 225,216, 50,188,229,157, 32, 24,225, 82, 0, 3,186,255,255, 85,
/* 0x0990 */ 229,157, 48, 80,227, 83, 0, 0, 21,157,192, 20, 21,131,192, 0,
/* 0x09a0 */ 229,157, 32, 20,229,152, 0, 24,224,130, 0, 0,226,141,208, 44,
/* 0x09b0 */ 232,189,143,240,227,160,224, 0,227,224,192, 0,225,160, 0, 14,
/* 0x09c0 */ 227,160, 26, 1,227,160, 32, 7,227,160, 48, 34,232,141, 80, 0,
/* 0x09d0 */ 235,255,254, 77,227, 80, 0, 0, 10,255,255,206,226,128, 48, 3,
/* 0x09e0 */ 227,195, 64, 3,229,159, 48, 68,229,157, 0, 28,229,132, 48, 4,
/* 0x09f0 */ 229,159, 48, 60,229,132, 0, 0,226,132, 16, 12,225,160, 0, 4,
/* 0x0a00 */ 229,132, 48, 8,235,255,254, 77,225,160, 0, 4,227,160, 16, 12,
/* 0x0a10 */ 227,160, 32, 5,235,255,254, 54,225,160, 32, 4,229,157, 0, 8,
/* 0x0a20 */ 227,160, 16, 0,235,255,254,106,234,255,255,186,115, 81, 98, 64,
/* 0x0a30 */ 232,189, 0, 3,225,160,240, 14,233, 45, 71,240,226, 77,208, 12,
/* 0x0a40 */ 226,141, 96, 52,225,160,144, 0,225,160,112, 1,225,160,128, 3,
/* 0x0a50 */ 225,160, 0, 6,226,141, 16, 44,227,160, 48, 0,229,157,160, 48,
/* 0x0a60 */ 225,160, 80, 2,229,157, 64, 52,235,255,254,141,229,157, 48, 60,
/* 0x0a70 */ 226,141,224, 12,229,157,192, 56,229, 46, 48, 4,224,100,192, 12,
/* 0x0a80 */ 225,160, 32, 6,225,160, 16, 10,225,160, 48, 9,225,160, 0, 5,
/* 0x0a90 */ 229,141,192, 56,229,141,224, 0,229,141,112, 52,229,141,128, 4,
/* 0x0aa0 */ 235,255,254,209,225,160, 64, 0,227,160, 16, 9,225,160, 0, 9,
/* 0x0ab0 */ 225,160, 32, 4,235,255,254, 70,225,218, 2,188,226,138, 32, 52,
/* 0x0ac0 */ 227,160, 16, 0,234, 0, 0, 35,229,146, 48, 0,227, 83, 0, 3,
/* 0x0ad0 */ 26, 0, 0, 30,229,146, 48, 8,229,157, 0, 8,227,160, 16, 0,
/* 0x0ae0 */ 224,131, 0, 0,225,160, 32, 1,235,255,253,243,226, 80, 80, 0,
/* 0x0af0 */ 186, 0, 0, 4,225,160, 16, 10,227,160, 44, 2,235,255,253,234,
/* 0x0b00 */ 227, 80, 12, 2, 10, 0, 0, 1,227,160, 0,127,235,255,253,229,
/* 0x0b10 */ 227,160,224, 0,225,160, 32, 14,226,141,192, 8,225,160, 16, 10,
/* 0x0b20 */ 225,160, 48, 9,225,160, 0, 5,232,141, 80, 0,235,255,254,174,
/* 0x0b30 */ 227,160, 16, 7,225,160, 64, 0,229,157, 32, 8,225,160, 0, 9,
/* 0x0b40 */ 235,255,254, 35,225,160, 0, 5,235,255,253,221,234, 0, 0, 3,
/* 0x0b50 */ 226,130, 32, 32,226,129, 16, 1,225, 81, 0, 0,186,255,255,217,
/* 0x0b60 */ 225,160, 0, 4,226,141,208, 12,232,189,135,240
};
+1853 -1862
View File
File diff suppressed because it is too large Load Diff
+78 -79
View File
@@ -1,5 +1,5 @@
/* i386-linux.elf-fold.h
created from i386-linux.elf-fold.bin, 2072 (0x818) bytes
created from i386-linux.elf-fold.bin, 2062 (0x80e) bytes
This file is part of the UPX executable compressor.
@@ -32,17 +32,17 @@
/* clang-format off */
#define STUB_I386_LINUX_ELF_FOLD_SIZE 2072
#define STUB_I386_LINUX_ELF_FOLD_ADLER32 0xde277fa3
#define STUB_I386_LINUX_ELF_FOLD_CRC32 0xce57936c
#define STUB_I386_LINUX_ELF_FOLD_SIZE 2062
#define STUB_I386_LINUX_ELF_FOLD_ADLER32 0xc62579f8
#define STUB_I386_LINUX_ELF_FOLD_CRC32 0x37c0a1a9
unsigned char stub_i386_linux_elf_fold[2072] = {
unsigned char stub_i386_linux_elf_fold[2062] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 3, 0, 1, 0, 0, 0,128, 16,192, 0, 52, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16,192, 0,
/* 0x0040 */ 0, 16,192, 0, 24, 8, 0, 0, 24, 8, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 24, 8, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 0, 16,192, 0, 14, 8, 0, 0, 16, 8, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 14, 8, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 87, 81, 80,137,230,129,236, 0, 16, 0, 0,137,231,106, 8, 89,
@@ -57,7 +57,7 @@ unsigned char stub_i386_linux_elf_fold[2072] = {
/* 0x0110 */ 49,248,131,224, 4, 41,199, 90, 1,250,175,173,193,233, 2, 73,
/* 0x0120 */ 243,165,252,141, 79, 4, 49,192, 41,225,137,231,193,233, 2,243,
/* 0x0130 */ 171,137,252,137,215, 88, 93, 88, 94, 89,129,236, 0, 10, 0, 0,
/* 0x0140 */ 137,226, 81,139, 24,139, 72, 4,131,193, 12, 96, 71,232,188, 5,
/* 0x0140 */ 137,226, 81,139, 24,139, 72, 4,131,193, 12, 96, 71,232,178, 5,
/* 0x0150 */ 0, 0, 79,137,198,139,108, 36, 32,139, 77,104,137,235,102,131,
/* 0x0160 */ 125, 16, 2,117, 5,106, 45, 88,205,128,106, 91, 88,205,128,137,
/* 0x0170 */ 250,137,231,185,137, 2, 0, 0, 49,192,243,171,137,252, 88, 89,
@@ -96,75 +96,74 @@ unsigned char stub_i386_linux_elf_fold[2072] = {
/* 0x0380 */ 228,137, 85,224,139, 69, 8,139, 85, 12,139, 77, 16,137, 69,220,
/* 0x0390 */ 139,117, 20,137, 85,216,137, 77,212,137,117,208,232,206,255,255,
/* 0x03a0 */ 255,139, 85,224,137,198,247,208, 3, 82, 28,137, 69,204,131,125,
/* 0x03b0 */ 220, 0,137, 85,200,116, 51,139, 77,212,139, 1,102,131,120, 16,
/* 0x03c0 */ 2,141, 80, 52,117, 12,139, 90, 8,199, 69,196, 0, 0, 0, 0,
/* 0x03d0 */ 235, 8,137,195, 43, 90, 40,137, 93,196,139, 74, 20,141, 4, 25,
/* 0x03e0 */ 137, 69,240,106, 91, 88,205,128,235,127,139, 69,224,139, 85,224,
/* 0x03f0 */ 102,131,120, 16, 3, 15,183, 82, 44,139, 93,200, 15,149,192, 15,
/* 0x0400 */ 182,248,137, 85,192,232,101,255,255,255,139, 77,192,193,231, 4,
/* 0x0410 */ 137,240, 49,246, 73,199, 69,188,255,255,255,255,120, 33,139, 77,
/* 0x0420 */ 192,131, 59, 1,117, 20,139, 83, 8, 59, 85,188,115, 3,137, 85,
/* 0x0430 */ 188, 3, 83, 20, 57,214,115, 2,137,214,131,195, 32,226,226,139,
/* 0x0440 */ 93,188,106, 0,106,255,131,207, 34, 33,195, 87, 41,222,106, 0,
/* 0x0450 */ 41,198, 78, 33,198, 86, 83,232,140,253,255,255,131,196, 24, 1,
/* 0x0460 */ 198, 41,216,137,117,240,137, 69,196,139,117,224,199, 69,184, 0,
/* 0x0470 */ 0, 0, 0,102,131,126, 44, 0, 15,132,110, 2, 0, 0,131,125,
/* 0x0480 */ 220, 0,116, 32,139, 69,200,131, 56, 6,117, 24,139, 77,196,186,
/* 0x0490 */ 3, 0, 0, 0, 3, 72, 8,139, 69,216,232,130,254,255,255,233,
/* 0x04a0 */ 49, 2, 0, 0,139, 85,200,131, 58, 1, 15,133, 37, 2, 0, 0,
/* 0x04b0 */ 131,122, 20, 0, 15,132, 27, 2, 0, 0,131,125,220, 0,116, 65,
/* 0x04c0 */ 131,122, 4, 0,117, 59,139,117,224,139, 77,196, 3, 74, 8,186,
/* 0x04d0 */ 3, 0, 0, 0, 3, 78, 28,139, 69,216,232, 66,254,255,255, 15,
/* 0x04e0 */ 183, 78, 44,139, 69,216,186, 5, 0, 0, 0,232, 49,254,255,255,
/* 0x04f0 */ 15,183, 78, 42,139, 69,216,186, 4, 0, 0, 0,232, 32,254,255,
/* 0x0500 */ 255,139, 69,200,187, 64, 98, 81,115,139, 72, 24,131,225, 7,193,
/* 0x0510 */ 225, 2,211,235,139, 77,200,137,218,131,226, 7,139,113, 20,137,
/* 0x0520 */ 85,180,139, 80, 16,139, 69,196, 3, 65, 8,137, 85,232,139, 77,
/* 0x0530 */ 204, 1,198, 33,193,137,117,176,137,198, 41,206,131,125,220, 0,
/* 0x0540 */ 137, 69,236,141, 60, 10,116, 58,106, 0,106,255,106, 50,141, 71,
/* 0x0550 */ 3,106, 3, 80, 86,232,142,252,255,255,131,196, 24, 57,198, 15,
/* 0x0560 */ 133, 36, 1, 0, 0,128,227, 4,139, 69,208,117, 2, 49,192, 80,
/* 0x0570 */ 139, 69,220,255,117,228,141, 85,232,232,195,252,255,255, 88, 90,
/* 0x0580 */ 235, 35,139, 85,200,139, 66, 4, 41,200, 80,255,117,228,106, 18,
/* 0x0590 */ 255,117,180, 87, 86,232, 78,252,255,255,131,196, 24, 57,198, 15,
/* 0x05a0 */ 133,228, 0, 0, 0,137,249,139, 69,204,247,217, 33,193,246, 69,
/* 0x05b0 */ 180, 2,137, 77,168,116, 13,133,201,141, 4, 62,116, 6,198, 0,
/* 0x05c0 */ 0, 64,226,250,131,125,220, 0, 15,132,197, 0, 0, 0,139, 85,
/* 0x05d0 */ 200,199, 69,172, 0, 0, 0, 0,131, 58, 1, 15,133,151, 0, 0,
/* 0x05e0 */ 0,246, 66, 24, 1, 15,132,141, 0, 0, 0,137,209,139, 82, 20,
/* 0x05f0 */ 137,200,139, 73, 8,141, 28, 10, 3, 93,196, 59, 80, 16,117, 14,
/* 0x0600 */ 137,216,247,216, 37,255, 15, 0, 0,131,248, 3,119, 53,139, 85,
/* 0x0610 */ 200,107, 69,196, 52,131,122, 4, 0,141, 92, 1, 12,116, 36,106,
/* 0x0620 */ 0,106,255,106, 34,106, 3,104, 0, 16, 0, 0,106, 0,199, 69,
/* 0x0630 */ 172, 1, 0, 0, 0,232,174,251,255,255,131,196, 24,133,192,137,
/* 0x0640 */ 195,116, 53,139, 3, 61,205,128, 97,195,116, 6,199, 3,205,128,
/* 0x0650 */ 97,195,131,125,172, 0,116, 13,106, 5,106, 4, 83,232, 94,251,
/* 0x0660 */ 255,255,131,196, 12,133,219,116, 15,139, 69,216,137,217, 49,210,
/* 0x0670 */ 131,224,254,232,169,252,255,255,255,117,180, 87, 86,232, 62,251,
/* 0x0680 */ 255,255,131,196, 12,133,192,116, 10,106,127, 91,106, 1, 88,205,
/* 0x0690 */ 128,235,254,139, 77,168,141, 4, 15,141, 28, 6, 59, 93,176,115,
/* 0x06a0 */ 30,106, 0,106,255,106, 50,255,117,180, 41, 93,176,255,117,176,
/* 0x06b0 */ 83,232, 50,251,255,255,131,196, 24, 57,195,116, 24,235,254,131,
/* 0x06c0 */ 125,220, 0,116, 16,141, 79, 3, 35, 77,204,131,249, 3,119, 5,
/* 0x06d0 */ 106, 91, 88,205,128,139,117,224,255, 69,184, 15,183, 70, 44,131,
/* 0x06e0 */ 69,200, 32, 57, 69,184, 15,140,146,253,255,255,131,125,212, 0,
/* 0x06f0 */ 116, 8,139, 85,196,139, 69,212,137, 16,139, 77,224,139, 73, 24,
/* 0x0700 */ 1, 77,196,139, 69,196,141,101,244, 91, 94, 95,201,195, 85,137,
/* 0x0710 */ 229, 87, 86, 83,131,236, 32,199, 69,232, 0, 0, 0, 0,139, 69,
/* 0x0720 */ 8,139,117, 16,137, 69,236,128, 62,235,117, 6,141, 86, 2,137,
/* 0x0730 */ 85,232,106, 0,139,125, 28,141, 85, 24,139, 93, 32,141, 69, 32,
/* 0x0740 */ 86,232,251,250,255,255,139, 69, 12, 41, 93, 36,137,250,141, 93,
/* 0x0750 */ 240,255,117,232,137, 69, 32,139, 69, 40, 83,255,117,236,137, 69,
/* 0x0760 */ 240,141, 69, 32,141, 79, 52, 80,137,240,137, 77,228,232, 3,252,
/* 0x0770 */ 255,255,137,193,137, 69,224,139, 69,236,186, 9, 0, 0, 0,232,
/* 0x0780 */ 157,251,255,255,102,139, 79, 44,131,196, 24, 49,210,102,133,201,
/* 0x0790 */ 116,123,139, 69,228,131, 56, 3,117,103,139, 93,240, 49,201, 3,
/* 0x07a0 */ 88, 8,137,202,106, 5, 88,205,128,133,192,137,198,120, 21,186,
/* 0x07b0 */ 0, 2, 0, 0,137,195,137,249,106, 3, 88,205,128, 61, 0, 2,
/* 0x07c0 */ 0, 0,116, 10,106,127, 91,106, 1, 88,205,128,235,254,141, 69,
/* 0x07d0 */ 240,137,250,106, 0,137,243, 80,137,240,255,117,236,106, 0,232,
/* 0x07e0 */ 145,251,255,255,139, 77,240,137, 69,224,139, 69,236,186, 7, 0,
/* 0x07f0 */ 0, 0,232, 42,251,255,255,131,196, 16,106, 6, 88,205,128,235,
/* 0x0800 */ 12, 66, 15,183,193,131, 69,228, 32, 57,194,124,133,139, 69,224,
/* 0x0810 */ 141,101,244, 91, 94, 95,201,195
/* 0x03b0 */ 220, 0,137, 85,200,116, 41,139, 77,212,139, 1,102,131,120, 16,
/* 0x03c0 */ 2,141, 80, 52,117, 12,139, 66, 8,199, 69,196, 0, 0, 0, 0,
/* 0x03d0 */ 235, 6, 43, 66, 40,137, 69,196, 3, 66, 20,137, 69,240,235,127,
/* 0x03e0 */ 139, 69,224,139, 85,224,102,131,120, 16, 3, 15,183, 82, 44,139,
/* 0x03f0 */ 93,200, 15,149,192, 15,182,248,137, 85,192,232,111,255,255,255,
/* 0x0400 */ 139, 77,192,193,231, 4,137,240, 49,246, 73,199, 69,188,255,255,
/* 0x0410 */ 255,255,120, 33,139, 77,192,131, 59, 1,117, 20,139, 83, 8, 59,
/* 0x0420 */ 85,188,115, 3,137, 85,188, 3, 83, 20, 57,214,115, 2,137,214,
/* 0x0430 */ 131,195, 32,226,226,139, 93,188,106, 0,106,255,131,207, 34, 33,
/* 0x0440 */ 195, 87, 41,222,106, 0, 41,198, 78, 33,198, 86, 83,232,150,253,
/* 0x0450 */ 255,255,131,196, 24, 1,198, 41,216,137,117,240,137, 69,196,139,
/* 0x0460 */ 117,224,199, 69,184, 0, 0, 0, 0,102,131,126, 44, 0, 15,132,
/* 0x0470 */ 110, 2, 0, 0,131,125,220, 0,116, 32,139, 69,200,131, 56, 6,
/* 0x0480 */ 117, 24,139, 77,196,186, 3, 0, 0, 0, 3, 72, 8,139, 69,216,
/* 0x0490 */ 232,140,254,255,255,233, 49, 2, 0, 0,139, 85,200,131, 58, 1,
/* 0x04a0 */ 15,133, 37, 2, 0, 0,131,122, 20, 0, 15,132, 27, 2, 0, 0,
/* 0x04b0 */ 131,125,220, 0,116, 65,131,122, 4, 0,117, 59,139,117,224,139,
/* 0x04c0 */ 77,196, 3, 74, 8,186, 3, 0, 0, 0, 3, 78, 28,139, 69,216,
/* 0x04d0 */ 232, 76,254,255,255, 15,183, 78, 44,139, 69,216,186, 5, 0, 0,
/* 0x04e0 */ 0,232, 59,254,255,255, 15,183, 78, 42,139, 69,216,186, 4, 0,
/* 0x04f0 */ 0, 0,232, 42,254,255,255,139, 69,200,187, 64, 98, 81,115,139,
/* 0x0500 */ 72, 24,131,225, 7,193,225, 2,211,235,139, 77,200,137,218,131,
/* 0x0510 */ 226, 7,139,113, 20,137, 85,180,139, 80, 16,139, 69,196, 3, 65,
/* 0x0520 */ 8,137, 85,232,139, 77,204, 1,198, 33,193,137,117,176,137,198,
/* 0x0530 */ 41,206,131,125,220, 0,137, 69,236,141, 60, 10,116, 58,106, 0,
/* 0x0540 */ 106,255,106, 50,141, 71, 3,106, 3, 80, 86,232,152,252,255,255,
/* 0x0550 */ 131,196, 24, 57,198, 15,133, 36, 1, 0, 0,128,227, 4,139, 69,
/* 0x0560 */ 208,117, 2, 49,192, 80,139, 69,220,255,117,228,141, 85,232,232,
/* 0x0570 */ 205,252,255,255, 88, 90,235, 35,139, 85,200,139, 66, 4, 41,200,
/* 0x0580 */ 80,255,117,228,106, 18,255,117,180, 87, 86,232, 88,252,255,255,
/* 0x0590 */ 131,196, 24, 57,198, 15,133,228, 0, 0, 0,137,249,139, 69,204,
/* 0x05a0 */ 247,217, 33,193,246, 69,180, 2,137, 77,168,116, 13,133,201,141,
/* 0x05b0 */ 4, 62,116, 6,198, 0, 0, 64,226,250,131,125,220, 0, 15,132,
/* 0x05c0 */ 197, 0, 0, 0,139, 85,200,199, 69,172, 0, 0, 0, 0,131, 58,
/* 0x05d0 */ 1, 15,133,151, 0, 0, 0,246, 66, 24, 1, 15,132,141, 0, 0,
/* 0x05e0 */ 0,137,209,139, 82, 20,137,200,139, 73, 8,141, 28, 10, 3, 93,
/* 0x05f0 */ 196, 59, 80, 16,117, 14,137,216,247,216, 37,255, 15, 0, 0,131,
/* 0x0600 */ 248, 3,119, 53,139, 85,200,107, 69,196, 52,131,122, 4, 0,141,
/* 0x0610 */ 92, 1, 12,116, 36,106, 0,106,255,106, 34,106, 3,104, 0, 16,
/* 0x0620 */ 0, 0,106, 0,199, 69,172, 1, 0, 0, 0,232,184,251,255,255,
/* 0x0630 */ 131,196, 24,133,192,137,195,116, 53,139, 3, 61,205,128, 97,195,
/* 0x0640 */ 116, 6,199, 3,205,128, 97,195,131,125,172, 0,116, 13,106, 5,
/* 0x0650 */ 106, 4, 83,232,104,251,255,255,131,196, 12,133,219,116, 15,139,
/* 0x0660 */ 69,216,137,217, 49,210,131,224,254,232,179,252,255,255,255,117,
/* 0x0670 */ 180, 87, 86,232, 72,251,255,255,131,196, 12,133,192,116, 10,106,
/* 0x0680 */ 127, 91,106, 1, 88,205,128,235,254,139, 77,168,141, 4, 15,141,
/* 0x0690 */ 28, 6, 59, 93,176,115, 30,106, 0,106,255,106, 50,255,117,180,
/* 0x06a0 */ 41, 93,176,255,117,176, 83,232, 60,251,255,255,131,196, 24, 57,
/* 0x06b0 */ 195,116, 24,235,254,131,125,220, 0,116, 16,141, 79, 3, 35, 77,
/* 0x06c0 */ 204,131,249, 3,119, 5,106, 91, 88,205,128,139,117,224,255, 69,
/* 0x06d0 */ 184, 15,183, 70, 44,131, 69,200, 32, 57, 69,184, 15,140,146,253,
/* 0x06e0 */ 255,255,131,125,212, 0,116, 8,139, 85,196,139, 69,212,137, 16,
/* 0x06f0 */ 139, 77,224,139, 73, 24, 1, 77,196,139, 69,196,141,101,244, 91,
/* 0x0700 */ 94, 95,201,195, 85,137,229, 87, 86, 83,131,236, 32,199, 69,232,
/* 0x0710 */ 0, 0, 0, 0,139, 69, 8,139,117, 16,137, 69,236,128, 62,235,
/* 0x0720 */ 117, 6,141, 86, 2,137, 85,232,106, 0,139,125, 28,141, 85, 24,
/* 0x0730 */ 139, 93, 32,141, 69, 32, 86,232, 5,251,255,255,139, 69, 12, 41,
/* 0x0740 */ 93, 36,137,250,141, 93,240,255,117,232,137, 69, 32,139, 69, 40,
/* 0x0750 */ 83,255,117,236,137, 69,240,141, 69, 32,141, 79, 52, 80,137,240,
/* 0x0760 */ 137, 77,228,232, 13,252,255,255,137,193,137, 69,224,139, 69,236,
/* 0x0770 */ 186, 9, 0, 0, 0,232,167,251,255,255,102,139, 79, 44,131,196,
/* 0x0780 */ 24, 49,210,102,133,201,116,123,139, 69,228,131, 56, 3,117,103,
/* 0x0790 */ 139, 93,240, 49,201, 3, 88, 8,137,202,106, 5, 88,205,128,133,
/* 0x07a0 */ 192,137,198,120, 21,186, 0, 2, 0, 0,137,195,137,249,106, 3,
/* 0x07b0 */ 88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, 91,106, 1, 88,
/* 0x07c0 */ 205,128,235,254,141, 69,240,137,250,106, 0,137,243, 80,137,240,
/* 0x07d0 */ 255,117,236,106, 0,232,155,251,255,255,139, 77,240,137, 69,224,
/* 0x07e0 */ 139, 69,236,186, 7, 0, 0, 0,232, 52,251,255,255,131,196, 16,
/* 0x07f0 */ 106, 6, 88,205,128,235, 12, 66, 15,183,193,131, 69,228, 32, 57,
/* 0x0800 */ 194,124,133,139, 69,224,141,101,244, 91, 94, 95,201,195
};
+1853 -1862
View File
File diff suppressed because it is too large Load Diff
+51 -47
View File
@@ -1,5 +1,5 @@
/* i386-linux.elf.execve-fold.h
created from i386-linux.elf.execve-fold.bin, 1027 (0x403) bytes
created from i386-linux.elf.execve-fold.bin, 1095 (0x447) bytes
This file is part of the UPX executable compressor.
@@ -32,29 +32,29 @@
/* clang-format off */
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_SIZE 1027
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_ADLER32 0xadf29d6b
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_CRC32 0xe444d00d
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_SIZE 1095
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_ADLER32 0xd19cb5b7
#define STUB_I386_LINUX_ELF_EXECVE_FOLD_CRC32 0xc7a67867
unsigned char stub_i386_linux_elf_execve_fold[1027] = {
unsigned char stub_i386_linux_elf_execve_fold[1095] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 64, 0,
/* 0x0040 */ 0, 16, 64, 0, 3, 4, 0, 0, 4, 4, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 0, 16, 64, 0, 71, 4, 0, 0, 72, 4, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0, 71, 4, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 88,137,225,141, 84,132, 4,139,123, 24,141,179,128, 0, 0, 0,
/* 0x0090 */ 41,247,141, 93, 2, 96,232, 37, 1, 0, 0,244, 83,141, 92, 36,
/* 0x0090 */ 41,247,141, 93, 2, 96,232, 39, 1, 0, 0,244, 83,141, 92, 36,
/* 0x00a0 */ 8,106, 90, 88,205,128, 91,195, 83,137,195,139, 76, 36, 8,136,
/* 0x00b0 */ 208,131,224, 31, 60, 25,118, 3,131,232, 43,131,192, 65, 75,136,
/* 0x00c0 */ 3,137,208,193,232, 5,137,194,226,229, 91,195, 85,137,229, 87,
/* 0x00d0 */ 86, 49,255, 83,137,249,131,236, 96,137,250,139, 93, 8,106, 5,
/* 0x00e0 */ 88,205,128,133,192,137,198, 15,136,199, 0, 0, 0,199, 69,212,
/* 0x00f0 */ 47,112,114,111,199, 69,216, 99, 47, 0, 0,106, 20, 88,205,128,
/* 0x0100 */ 141, 85,218,141, 93,212,232,213, 2, 0, 0,141, 80, 4,199, 0,
/* 0x0110 */ 47,102,100, 47,137,240,232,197, 2, 0, 0,186, 1, 0, 0, 0,
/* 0x0100 */ 141, 85,218,141, 93,212,232, 25, 3, 0, 0,141, 80, 4,199, 0,
/* 0x0110 */ 47,102,100, 47,137,240,232, 9, 3, 0, 0,186, 1, 0, 0, 0,
/* 0x0120 */ 106, 33, 88,106, 5, 89,205,128, 61, 85, 80, 88, 50,117,126,139,
/* 0x0130 */ 93, 8,106, 10, 88,205,128,185, 2, 0, 0, 0,137,243,106, 55,
/* 0x0140 */ 88,205,128,141, 93,212,139, 77, 12,139, 85, 16,106, 11, 88,205,
@@ -65,41 +65,45 @@ unsigned char stub_i386_linux_elf_execve_fold[1027] = {
/* 0x0190 */ 137,250,106, 4, 88,205,128, 57,199,116, 10,106,127, 91,106, 1,
/* 0x01a0 */ 88,205,128,235,254,139, 93,148,106, 6, 88,205,128,137,243,106,
/* 0x01b0 */ 6, 88,205,128,141,101,244,137,240, 91, 94, 95,201,194, 12, 0,
/* 0x01c0 */ 85,137,229, 87, 86, 83,131,236,124,141,125,228,139, 69, 16,139,
/* 0x01d0 */ 117, 12,137, 69,156,165,165,165,131,109, 8, 12,129,125,228, 85,
/* 0x01e0 */ 80, 88, 51,137,117, 12, 15,133,112, 1, 0, 0,199, 69,196, 47,
/* 0x01f0 */ 116,109,112,199, 69,200, 47,117,112,120,141, 77,215,106, 20, 88,
/* 0x0200 */ 205,128,137,194,106, 4,137,200,141,125,211,232,152,254,255,255,
/* 0x0210 */ 139, 85,228,198, 69,215, 0, 49,201, 49,208,141, 93,172,137, 69,
/* 0x0220 */ 132,106, 78, 88,205,128,139, 85,172,137,248, 49, 85,132,139, 85,
/* 0x0230 */ 176,199, 4, 36, 7, 0, 0, 0,141, 93,196,193,226, 12, 51, 85,
/* 0x0240 */ 132,232, 98,254,255,255, 88,106, 10, 88,205,128,131,248,254,116,
/* 0x0250 */ 8,133,192, 15,133, 3, 1, 0, 0,185,194, 0, 0, 0,186,192,
/* 0x0260 */ 1, 0, 0,141, 93,196,106, 5, 88,205,128,139, 85,232,137, 69,
/* 0x0270 */ 148,137,195,137,209,106, 93, 88,205,128,133,192, 15,133,210, 0,
/* 0x0280 */ 0, 0,106, 0,255,117,148,106, 1,106, 3, 82,106, 0,232, 9,
/* 0x0290 */ 254,255,255,131,196, 24, 61, 0,240,255,255,137, 69,136, 15,135,
/* 0x02a0 */ 176, 0, 0, 0,139, 69,232,106, 0,106,255, 5,255, 15, 0, 0,
/* 0x02b0 */ 106, 50, 37, 0,240,255,255,106, 3, 3, 69,136,104, 0, 16, 0,
/* 0x02c0 */ 0, 80,232,213,253,255,255,131,196, 24,141,125,180,139,117, 12,
/* 0x02d0 */ 165,165,165,139, 77,180,131,109, 8, 12,133,201,137,117, 12,139,
/* 0x02e0 */ 85,184,117, 16,129,250, 85, 80, 88, 33,117,104,131,125,232, 0,
/* 0x02f0 */ 116,116,235, 96, 57,202,119, 92, 59, 85,236,119, 87, 57,202,115,
/* 0x0300 */ 37,141, 69,168,255,117,188, 80,255,117,136, 82,255,117, 12,137,
/* 0x0310 */ 77,168,255, 85,156,131,196, 20,133,192,117, 56,139, 69,180, 57,
/* 0x0320 */ 69,168,117, 48,235, 8,139,125,136,139,117, 12,243,164,139, 85,
/* 0x0330 */ 180,139, 93,136,137,209,106, 91, 88,205,128,139, 69,184, 41, 69,
/* 0x0340 */ 8, 1, 85,136, 41, 85,232, 1, 69, 12,131,125, 8, 0, 15,137,
/* 0x0350 */ 118,255,255,255,141, 93,196,106, 10, 88,205,128,106,127, 91,106,
/* 0x0360 */ 1, 88,205,128,235,254,139, 93,148,106, 6, 88,205,128,133,192,
/* 0x0370 */ 117,226,255,117, 28,255,117, 32,141,117,196, 86,232, 75,253,255,
/* 0x0380 */ 255,133,192,120,207,106, 2, 88,205,128,133,192,117, 51,106, 2,
/* 0x0390 */ 88,205,128,133,192,137,193,117, 31,199, 69,160, 85, 80, 88, 52,
/* 0x03a0 */ 184,162, 0, 0, 0,141, 93,160,199, 69,164, 0, 0, 0, 0,205,
/* 0x03b0 */ 128,137,243,106, 10, 88,205,128, 49,219,106, 1, 88,205,128,235,
/* 0x03c0 */ 254, 49,201,131,203,255,137,202,106, 7, 88,205,128,141, 93,196,
/* 0x03d0 */ 139, 77, 32,139, 85, 28,106, 11, 88,205,128,233,116,255,255,255,
/* 0x03e0 */ 87,137,215,106, 10,252, 89,232, 5, 0, 0, 0,136, 39,151, 95,
/* 0x03f0 */ 195,153,247,241, 82,133,192,116, 5,232,243,255,255,255, 88, 4,
/* 0x0400 */ 48,170,195
/* 0x01c0 */ 204,195, 85,137,229, 87, 86, 83,131,236,124,141,125,228,139, 69,
/* 0x01d0 */ 16,139,117, 12,137, 69,156,165,165,165,131,109, 8, 12,129,125,
/* 0x01e0 */ 228, 85, 80, 88, 51,137,117, 12,116, 4,106, 11,235,107,199, 69,
/* 0x01f0 */ 196, 47,116,109,112,199, 69,200, 47,117,112,120,141, 77,215,106,
/* 0x0200 */ 20, 88,205,128,137,194,106, 4,137,200,141,125,211,232,150,254,
/* 0x0210 */ 255,255,139, 85,228,198, 69,215, 0, 49,201, 49,208,141, 93,172,
/* 0x0220 */ 137, 69,132,106, 78, 88,205,128,139, 85,172,137,248, 49, 85,132,
/* 0x0230 */ 139, 85,176,199, 4, 36, 7, 0, 0, 0,141, 93,196,193,226, 12,
/* 0x0240 */ 51, 85,132,232, 96,254,255,255, 89,106, 10, 88,205,128,131,248,
/* 0x0250 */ 254,116, 17,133,192,116, 13,106, 12,232, 98,255,255,255, 90,233,
/* 0x0260 */ 43, 1, 0, 0,185,194, 0, 0, 0,186,192, 1, 0, 0,141, 93,
/* 0x0270 */ 196,106, 5, 88,205,128,139, 85,232,137, 69,148,137,195,137,209,
/* 0x0280 */ 106, 93, 88,205,128,133,192,116, 7,106, 14,233,137, 1, 0, 0,
/* 0x0290 */ 106, 0,255,117,148,106, 1,141,130, 0, 16, 0, 0,106, 3, 80,
/* 0x02a0 */ 106, 0,232,245,253,255,255,131,196, 24, 61, 0,240,255,255,137,
/* 0x02b0 */ 69,136,118, 7,106, 15,233, 94, 1, 0, 0,139, 69,232,106, 0,
/* 0x02c0 */ 106,255, 5,255, 15, 0, 0,106, 50, 37, 0,240,255,255,106, 3,
/* 0x02d0 */ 3, 69,136,104, 0, 16, 0, 0, 80,232,190,253,255,255,131,196,
/* 0x02e0 */ 24,141,125,180,139,117, 12,165,165,165,139, 77,180,131,109, 8,
/* 0x02f0 */ 12,133,201,137,117, 12,139, 85,184,117, 32,129,250, 85, 80, 88,
/* 0x0300 */ 33,116, 7,106, 17,233, 15, 1, 0, 0,131,125,232, 0, 15,132,
/* 0x0310 */ 133, 0, 0, 0,106, 18,233,254, 0, 0, 0, 57,202,119, 5, 59,
/* 0x0320 */ 85,236,118, 7,106, 19,233,238, 0, 0, 0, 57,202,115, 42,141,
/* 0x0330 */ 69,168,255,117,188, 80,255,117,136, 82,255,117, 12,137, 77,168,
/* 0x0340 */ 255, 85,156,131,196, 20,133,192,117, 8,139, 69,180, 57, 69,168,
/* 0x0350 */ 116, 15,106, 20,233,192, 0, 0, 0,139,125,136,139,117, 12,243,
/* 0x0360 */ 164,139, 85,180,139, 93,136,137,209,106, 91, 88,205,128,139, 69,
/* 0x0370 */ 184, 41, 69, 8, 1, 85,136, 41, 85,232, 1, 69, 12,131,125, 8,
/* 0x0380 */ 0, 15,137, 90,255,255,255,141, 93,196,106, 10, 88,205,128,106,
/* 0x0390 */ 127, 91,106, 1, 88,205,128,235,254,139, 93,148,106, 6, 88,205,
/* 0x03a0 */ 128,133,192,116, 4,106, 22,235,112,255,117, 28,255,117, 32,141,
/* 0x03b0 */ 117,196, 86,232, 20,253,255,255,133,192,121, 4,106, 23,235, 89,
/* 0x03c0 */ 106, 2, 88,205,128,133,192,117, 52,106, 2, 88,205,128,133,192,
/* 0x03d0 */ 137,193,117, 32,199, 69,160, 85, 80, 88, 52,184,162, 0, 0, 0,
/* 0x03e0 */ 141, 93,160,199, 69,164, 0, 0, 0, 0,205,128,141, 93,196,106,
/* 0x03f0 */ 10, 88,205,128, 49,219,106, 1, 88,205,128,235,254, 49,201,131,
/* 0x0400 */ 203,255,137,202,106, 7, 88,205,128,141, 93,196,139, 77, 32,139,
/* 0x0410 */ 85, 28,106, 11, 88,205,128,106, 24,232,162,253,255,255, 88,233,
/* 0x0420 */ 99,255,255,255, 87,137,215,106, 10,252, 89,232, 5, 0, 0, 0,
/* 0x0430 */ 136, 39,151, 95,195,153,247,241, 82,133,192,116, 5,232,243,255,
/* 0x0440 */ 255,255, 88, 4, 48,170,195
};
+105 -106
View File
@@ -1,5 +1,5 @@
/* mips.r3000-linux.elf-fold.h
created from mips.r3000-linux.elf-fold.bin, 3008 (0xbc0) bytes
created from mips.r3000-linux.elf-fold.bin, 2980 (0xba4) bytes
This file is part of the UPX executable compressor.
@@ -32,17 +32,17 @@
/* clang-format off */
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_SIZE 3008
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_ADLER32 0xac0e8efe
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_CRC32 0x1aaa775a
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_SIZE 2980
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_ADLER32 0x2a5486a6
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_CRC32 0x857a024e
unsigned char stub_mips_r3000_linux_elf_fold[3008] = {
unsigned char stub_mips_r3000_linux_elf_fold[2980] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 2, 0, 8, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 48, 1, 0, 52, 0, 32, 0, 2, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0,
/* 0x0040 */ 0, 16, 0, 0, 0, 0, 11,192, 0, 0, 11,192, 0, 0, 0, 5,
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 11,192, 0, 0, 0, 0,
/* 0x0040 */ 0, 16, 0, 0, 0, 0, 11,164, 0, 0, 11,176, 0, 0, 0, 5,
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 1, 0, 0, 11,164, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 36, 2, 0, 0, 3,224, 0, 8, 0, 2, 18, 64, 0, 0, 0, 0,
@@ -60,7 +60,7 @@ unsigned char stub_mips_r3000_linux_elf_fold[3008] = {
/* 0x0140 */ 4,224, 0, 2, 0,162, 8, 33,160, 32, 0, 0, 39,189,254, 0,
/* 0x0150 */ 3,128, 88, 33, 2,160, 80, 33, 0, 0, 72, 33, 3,192, 64, 33,
/* 0x0160 */ 2,192, 56, 33, 3,160, 48, 33, 2, 32, 40, 33, 4, 16, 0, 1,
/* 0x0170 */ 36, 2, 1,116, 3,226, 16, 35, 36, 66, 10, 40, 0, 64,248, 9,
/* 0x0170 */ 36, 2, 1,116, 3,226, 16, 35, 36, 66, 10, 12, 0, 64,248, 9,
/* 0x0180 */ 2, 0, 32, 33, 39,189, 2, 0, 0, 64,240, 33,142,165, 0,104,
/* 0x0190 */ 2,160, 32, 33, 36, 2, 15,205, 0, 0, 0, 12, 36, 2, 15,251,
/* 0x01a0 */ 0, 0, 0, 12,143,168, 0, 20, 0, 0, 72, 33, 5, 0, 0, 11,
@@ -127,102 +127,101 @@ unsigned char stub_mips_r3000_linux_elf_fold[3008] = {
/* 0x0570 */ 175,179, 0, 52,175,178, 0, 48,175,176, 0, 40,140,162, 0, 28,
/* 0x0580 */ 0,160,160, 33, 0,162,136, 33, 0, 10, 16, 39,175,166, 0, 24,
/* 0x0590 */ 175,164, 0, 20,175,167, 0, 28,175,168, 0, 32,175,169, 0, 36,
/* 0x05a0 */ 16,192, 0, 19,175,162, 0, 16,141, 6, 0, 0, 36, 2, 0, 2,
/* 0x05b0 */ 148,195, 0, 16, 0, 0, 0, 0, 20, 98, 0, 4, 36,197, 0, 52,
/* 0x05c0 */ 140,164, 0, 8, 16, 0, 0, 5, 0, 0,240, 33,140,162, 0, 40,
/* 0x05d0 */ 0, 0, 0, 0, 0,194,240, 35, 3,192, 32, 33,140,165, 0, 20,
/* 0x05e0 */ 4, 17,255, 30, 36, 2, 15,251, 16, 0, 0,218,175,160, 0, 12,
/* 0x05f0 */ 148,162, 0, 16,148,163, 0, 44, 56, 66, 0, 3, 0, 2, 16, 43,
/* 0x0600 */ 0, 2, 57, 0, 36, 99,255,255, 2, 32, 48, 33, 36, 8,255,255,
/* 0x0610 */ 0, 0, 40, 33, 16, 0, 0, 19, 36, 9, 0, 1,140,194, 0, 0,
/* 0x0620 */ 0, 0, 0, 0, 20, 73, 0, 14, 36, 99,255,255,140,196, 0, 8,
/* 0x0630 */ 0, 0, 0, 0, 0,136, 16, 43, 16, 64, 0, 2, 0, 0, 0, 0,
/* 0x0640 */ 0,128, 64, 33,140,194, 0, 20, 0, 0, 0, 0, 0,130, 32, 33,
/* 0x0650 */ 0,164, 16, 43, 16, 64, 0, 2, 0, 0, 0, 0, 0,128, 40, 33,
/* 0x0660 */ 36,198, 0, 32, 4, 97,255,237, 1, 72,128, 36, 0,176, 40, 35,
/* 0x0670 */ 0,170, 40, 35, 36,165,255,255, 1, 69, 40, 36, 52,231, 8, 2,
/* 0x0680 */ 2, 0, 32, 33, 0, 0, 48, 33, 36, 8,255,255, 4, 17,254,236,
/* 0x0690 */ 0, 0, 72, 33, 0, 80,240, 35, 16, 0, 0,174,175,160, 0, 12,
/* 0x06a0 */ 143,163, 0, 24, 0, 0, 0, 0, 16, 96, 0, 12, 36, 2, 0, 6,
/* 0x06b0 */ 142, 35, 0, 0, 0, 0, 0, 0, 20, 98, 0, 10, 36, 2, 0, 1,
/* 0x06c0 */ 142, 38, 0, 8,143,164, 0, 28, 3,198, 48, 33, 4, 17,255,119,
/* 0x06d0 */ 36, 5, 0, 3, 16, 0, 0,155, 0, 0, 0, 0,142, 35, 0, 0,
/* 0x06e0 */ 36, 2, 0, 1, 20, 98, 0,151, 0, 0, 0, 0,142, 34, 0, 20,
/* 0x06f0 */ 0, 0, 0, 0, 16, 64, 0,147, 0, 0, 0, 0,143,164, 0, 24,
/* 0x0700 */ 0, 0, 0, 0, 16,128, 0, 19, 0, 0, 0, 0,142, 34, 0, 4,
/* 0x0710 */ 0, 0, 0, 0, 20, 64, 0, 15, 36, 5, 0, 3,142,130, 0, 28,
/* 0x0720 */ 142, 38, 0, 8,143,164, 0, 28, 0,194, 48, 33, 4, 17,255, 95,
/* 0x0730 */ 3,198, 48, 33,143,164, 0, 28,150,134, 0, 44, 4, 17,255, 91,
/* 0x0740 */ 36, 5, 0, 5,143,164, 0, 28,150,134, 0, 42, 4, 17,255, 87,
/* 0x0750 */ 36, 5, 0, 4,142, 34, 0, 8,142, 35, 0, 24, 3,194,184, 33,
/* 0x0760 */ 60, 2,115, 81, 0, 3, 24,128, 52, 66, 98, 64, 0, 98,128, 6,
/* 0x0770 */ 143,163, 0, 16,142, 36, 0, 16, 2,227, 16, 36,175,164, 0, 0,
/* 0x0780 */ 0,130,152, 33,143,163, 0, 24,142, 36, 0, 20,175,183, 0, 4,
/* 0x0790 */ 50, 22, 0, 7,175,164, 0, 8, 16, 96, 0, 22, 2,226,144, 35,
/* 0x07a0 */ 2, 64, 32, 33, 2, 96, 40, 33, 36, 6, 0, 3, 36, 7, 8, 18,
/* 0x07b0 */ 36, 8,255,255, 4, 17,254,162, 0, 0, 72, 33, 22, 66, 0, 75,
/* 0x07c0 */ 50, 2, 0, 4, 16, 64, 0, 4, 0, 0, 0, 0,143,167, 0, 36,
/* 0x07d0 */ 16, 0, 0, 2, 0, 0, 0, 0, 0, 0, 56, 33,143,164, 0, 24,
/* 0x07e0 */ 143,166, 0, 20, 4, 17,254,202, 3,160, 40, 33, 16, 0, 0, 11,
/* 0x07f0 */ 0, 0, 0, 0,142, 41, 0, 4,143,168, 0, 20, 2, 64, 32, 33,
/* 0x0800 */ 1, 34, 72, 35, 2, 96, 40, 33, 2,192, 48, 33, 4, 17,254,140,
/* 0x0810 */ 36, 7, 0, 18, 22, 66, 0, 54, 36, 4, 0,127,143,164, 0, 16,
/* 0x0820 */ 0, 19, 16, 35, 50,195, 0, 2, 16, 96, 0, 8, 0, 68,168, 36,
/* 0x0830 */ 18,160, 0, 6, 2, 83, 24, 33, 2,160, 16, 33, 36, 66,255,255,
/* 0x0840 */ 160, 96, 0, 0, 20, 64,255,253, 36, 99, 0, 1,143,162, 0, 24,
/* 0x0850 */ 0, 0, 0, 0, 16, 64, 0, 42, 36, 2, 0, 1,142, 35, 0, 0,
/* 0x0860 */ 0, 0, 0, 0, 20, 98, 0, 28, 2, 64, 32, 33,142, 34, 0, 24,
/* 0x0870 */ 0, 0, 0, 0, 48, 66, 0, 1, 16, 64, 0, 24, 2, 96, 40, 33,
/* 0x0880 */ 142, 36, 0, 20,142, 34, 0, 16,142, 35, 0, 8, 20,130, 0, 61,
/* 0x0890 */ 0,131, 16, 33, 0, 94, 24, 33,143,164, 0, 16, 0, 3, 16, 35,
/* 0x08a0 */ 0,130, 16, 36, 44, 66, 0, 12, 20, 64, 0, 54, 36, 2,255,252,
/* 0x08b0 */ 36, 99, 0, 3, 0, 98,128, 36, 36, 2, 0, 12,174, 2, 0, 0,
/* 0x08c0 */ 60, 2, 3,192, 52, 66, 0, 8,174, 2, 0, 4, 16, 0, 0, 66,
/* 0x08d0 */ 174, 0, 0, 8, 2, 64, 32, 33, 2, 96, 40, 33, 4, 17,254,100,
/* 0x08e0 */ 2,192, 48, 33, 16, 64, 0, 6, 0, 0, 0, 0, 36, 4, 0,127,
/* 0x08f0 */ 4, 17,254, 90, 36, 2, 15,161, 16, 0,255,255, 0, 0, 0, 0,
/* 0x0900 */ 143,163, 0, 8, 2,117, 16, 33, 2,227, 40, 33, 2, 66,128, 33,
/* 0x0910 */ 2, 5, 16, 43, 16, 64, 0, 11, 0,176, 40, 35, 2,192, 48, 33,
/* 0x0920 */ 2, 0, 32, 33, 36, 7, 8, 18, 36, 8,255,255, 4, 17,254, 68,
/* 0x0930 */ 0, 0, 72, 33, 18, 2, 0, 3, 0, 0, 0, 0, 16, 0,255,255,
/* 0x0940 */ 0, 0, 0, 0,143,164, 0, 12, 38, 49, 0, 32, 36,132, 0, 1,
/* 0x0950 */ 175,164, 0, 12,150,130, 0, 44,143,163, 0, 12, 0, 0, 0, 0,
/* 0x0960 */ 0, 98, 16, 42, 20, 64,255, 78, 0, 0, 0, 0,143,164, 0, 32,
/* 0x0970 */ 0, 0, 0, 0, 16,128, 0, 30, 0, 0, 0, 0, 16, 0, 0, 28,
/* 0x0980 */ 172,158, 0, 0, 0, 0, 32, 33, 60, 5, 0, 1, 36, 6, 0, 3,
/* 0x0990 */ 36, 7, 8, 2, 36, 8,255,255, 4, 17,254, 41, 0, 0, 72, 33,
/* 0x09a0 */ 16, 64,255,204, 36, 67, 0, 3, 36, 2,255,252, 0, 98,128, 36,
/* 0x09b0 */ 36, 2, 0, 12,174, 2, 0, 0, 60, 2, 3,192, 52, 66, 0, 8,
/* 0x09c0 */ 174, 2, 0, 4,174, 0, 0, 8, 2, 0, 32, 33, 36, 5, 0, 12,
/* 0x09d0 */ 4, 17,254, 39, 36, 6, 0, 5,143,164, 0, 28, 2, 0, 48, 33,
/* 0x09e0 */ 4, 17,254,178, 0, 0, 40, 33, 16, 0,255,187, 2, 64, 32, 33,
/* 0x09f0 */ 142,130, 0, 24,143,191, 0, 76, 3,194, 16, 33,143,183, 0, 68,
/* 0x0a00 */ 143,190, 0, 72,143,182, 0, 64,143,181, 0, 60,143,180, 0, 56,
/* 0x0a10 */ 143,179, 0, 52,143,178, 0, 48,143,177, 0, 44,143,176, 0, 40,
/* 0x0a20 */ 3,224, 0, 8, 39,189, 0, 80, 39,189,255,192,175,191, 0, 56,
/* 0x0a30 */ 175,181, 0, 52,175,180, 0, 48,175,179, 0, 44,175,178, 0, 40,
/* 0x0a40 */ 175,177, 0, 36,175,176, 0, 32,140,130, 0, 4, 1, 0,144, 33,
/* 0x0a50 */ 140,136, 0, 0, 0,128, 24, 33, 0,192,152, 33, 1, 96,168, 33,
/* 0x0a60 */ 0,224,160, 33, 1, 32,136, 33, 36, 66, 0, 12,175,165, 0, 12,
/* 0x0a70 */ 39,164, 0, 20, 39,165, 0, 4, 2, 64, 48, 33, 0, 0, 56, 33,
/* 0x0a80 */ 1, 64,128, 33,175,163, 0, 16,175,163, 0, 24,175,168, 0, 4,
/* 0x0a90 */ 175,162, 0, 20, 4, 17,254, 30,175,179, 0, 8, 2, 32, 72, 33,
/* 0x0aa0 */ 2, 64, 32, 33, 2, 96, 40, 33, 39,166, 0, 12, 2,128, 56, 33,
/* 0x0ab0 */ 3,160, 64, 33, 2,160, 80, 33, 4, 17,254,165,175,176, 0, 0,
/* 0x0ac0 */ 0, 64, 48, 33, 2,128, 32, 33, 36, 5, 0, 9, 4, 17,254,119,
/* 0x0ad0 */ 0, 64,136, 33,150,102, 0, 44, 38,100, 0, 52, 16, 0, 0, 43,
/* 0x0ae0 */ 0, 0, 40, 33,140,131, 0, 0, 36, 2, 0, 3, 20, 98, 0, 39,
/* 0x0af0 */ 36,132, 0, 32, 36,132,255,224,140,130, 0, 8,143,164, 0, 0,
/* 0x0b00 */ 0, 0, 40, 33, 0, 68, 32, 33, 0, 0, 48, 33, 4, 17,253,211,
/* 0x0b10 */ 36, 2, 15,165, 4, 64, 0, 9, 0, 64,128, 33, 0, 64, 32, 33,
/* 0x0b20 */ 2, 96, 40, 33, 36, 6, 2, 0, 4, 17,253,204, 36, 2, 15,163,
/* 0x0b30 */ 36, 3, 2, 0, 16, 67, 0, 6, 2,160, 80, 33, 36, 4, 0,127,
/* 0x0b40 */ 4, 17,253,198, 36, 2, 15,161, 16, 0,255,255, 0, 0, 0, 0,
/* 0x0b50 */ 2,128, 56, 33, 3,160, 64, 33, 0, 0, 72, 33, 4, 17,254,124,
/* 0x0b60 */ 0, 0, 48, 33,143,166, 0, 0, 2,128, 32, 33, 36, 5, 0, 7,
/* 0x0b70 */ 4, 17,254, 78, 0, 64,136, 33, 2, 0, 32, 33, 4, 17,253,183,
/* 0x0b80 */ 36, 2, 15,166, 16, 0, 0, 5, 2, 32, 16, 33, 0,166, 16, 42,
/* 0x0b90 */ 20, 64,255,212, 36,165, 0, 1, 2, 32, 16, 33,143,191, 0, 56,
/* 0x0ba0 */ 143,181, 0, 52,143,180, 0, 48,143,179, 0, 44,143,178, 0, 40,
/* 0x0bb0 */ 143,177, 0, 36,143,176, 0, 32, 3,224, 0, 8, 39,189, 0, 64
/* 0x05a0 */ 16,192, 0, 12,175,162, 0, 16,141, 6, 0, 0, 36, 2, 0, 2,
/* 0x05b0 */ 148,195, 0, 16, 0, 0, 0, 0, 20, 98, 0, 3, 0, 0, 0, 0,
/* 0x05c0 */ 16, 0, 0, 46, 0, 0,240, 33,140,194, 0, 92, 16, 0, 0, 43,
/* 0x05d0 */ 0,194,240, 35,148,162, 0, 16,148,163, 0, 44, 56, 66, 0, 3,
/* 0x05e0 */ 0, 2, 16, 43, 0, 2, 57, 0, 36, 99,255,255, 2, 32, 48, 33,
/* 0x05f0 */ 36, 8,255,255, 0, 0, 40, 33, 16, 0, 0, 19, 36, 9, 0, 1,
/* 0x0600 */ 140,194, 0, 0, 0, 0, 0, 0, 20, 73, 0, 14, 36, 99,255,255,
/* 0x0610 */ 140,196, 0, 8, 0, 0, 0, 0, 0,136, 16, 43, 16, 64, 0, 2,
/* 0x0620 */ 0, 0, 0, 0, 0,128, 64, 33,140,194, 0, 20, 0, 0, 0, 0,
/* 0x0630 */ 0,130, 32, 33, 0,164, 16, 43, 16, 64, 0, 2, 0, 0, 0, 0,
/* 0x0640 */ 0,128, 40, 33, 36,198, 0, 32, 4, 97,255,237, 1, 72,128, 36,
/* 0x0650 */ 0,176, 40, 35, 0,170, 40, 35, 36,165,255,255, 1, 69, 40, 36,
/* 0x0660 */ 52,231, 8, 2, 2, 0, 32, 33, 0, 0, 48, 33, 36, 8,255,255,
/* 0x0670 */ 4, 17,254,243, 0, 0, 72, 33, 0, 80,240, 35, 16, 0, 0,174,
/* 0x0680 */ 175,160, 0, 12,143,163, 0, 24, 0, 0, 0, 0, 16, 96, 0, 12,
/* 0x0690 */ 36, 2, 0, 6,142, 35, 0, 0, 0, 0, 0, 0, 20, 98, 0, 10,
/* 0x06a0 */ 36, 2, 0, 1,142, 38, 0, 8,143,164, 0, 28, 3,198, 48, 33,
/* 0x06b0 */ 4, 17,255,126, 36, 5, 0, 3, 16, 0, 0,155, 0, 0, 0, 0,
/* 0x06c0 */ 142, 35, 0, 0, 36, 2, 0, 1, 20, 98, 0,151, 0, 0, 0, 0,
/* 0x06d0 */ 142, 34, 0, 20, 0, 0, 0, 0, 16, 64, 0,147, 0, 0, 0, 0,
/* 0x06e0 */ 143,164, 0, 24, 0, 0, 0, 0, 16,128, 0, 19, 0, 0, 0, 0,
/* 0x06f0 */ 142, 34, 0, 4, 0, 0, 0, 0, 20, 64, 0, 15, 36, 5, 0, 3,
/* 0x0700 */ 142,130, 0, 28,142, 38, 0, 8,143,164, 0, 28, 0,194, 48, 33,
/* 0x0710 */ 4, 17,255,102, 3,198, 48, 33,143,164, 0, 28,150,134, 0, 44,
/* 0x0720 */ 4, 17,255, 98, 36, 5, 0, 5,143,164, 0, 28,150,134, 0, 42,
/* 0x0730 */ 4, 17,255, 94, 36, 5, 0, 4,142, 34, 0, 8,142, 35, 0, 24,
/* 0x0740 */ 3,194,184, 33, 60, 2,115, 81, 0, 3, 24,128, 52, 66, 98, 64,
/* 0x0750 */ 0, 98,128, 6,143,163, 0, 16,142, 36, 0, 16, 2,227, 16, 36,
/* 0x0760 */ 175,164, 0, 0, 0,130,152, 33,143,163, 0, 24,142, 36, 0, 20,
/* 0x0770 */ 175,183, 0, 4, 50, 22, 0, 7,175,164, 0, 8, 16, 96, 0, 22,
/* 0x0780 */ 2,226,144, 35, 2, 64, 32, 33, 2, 96, 40, 33, 36, 6, 0, 3,
/* 0x0790 */ 36, 7, 8, 18, 36, 8,255,255, 4, 17,254,169, 0, 0, 72, 33,
/* 0x07a0 */ 22, 66, 0, 75, 50, 2, 0, 4, 16, 64, 0, 4, 0, 0, 0, 0,
/* 0x07b0 */ 143,167, 0, 36, 16, 0, 0, 2, 0, 0, 0, 0, 0, 0, 56, 33,
/* 0x07c0 */ 143,164, 0, 24,143,166, 0, 20, 4, 17,254,209, 3,160, 40, 33,
/* 0x07d0 */ 16, 0, 0, 11, 0, 0, 0, 0,142, 41, 0, 4,143,168, 0, 20,
/* 0x07e0 */ 2, 64, 32, 33, 1, 34, 72, 35, 2, 96, 40, 33, 2,192, 48, 33,
/* 0x07f0 */ 4, 17,254,147, 36, 7, 0, 18, 22, 66, 0, 54, 36, 4, 0,127,
/* 0x0800 */ 143,164, 0, 16, 0, 19, 16, 35, 50,195, 0, 2, 16, 96, 0, 8,
/* 0x0810 */ 0, 68,168, 36, 18,160, 0, 6, 2, 83, 24, 33, 2,160, 16, 33,
/* 0x0820 */ 36, 66,255,255,160, 96, 0, 0, 20, 64,255,253, 36, 99, 0, 1,
/* 0x0830 */ 143,162, 0, 24, 0, 0, 0, 0, 16, 64, 0, 42, 36, 2, 0, 1,
/* 0x0840 */ 142, 35, 0, 0, 0, 0, 0, 0, 20, 98, 0, 28, 2, 64, 32, 33,
/* 0x0850 */ 142, 34, 0, 24, 0, 0, 0, 0, 48, 66, 0, 1, 16, 64, 0, 24,
/* 0x0860 */ 2, 96, 40, 33,142, 36, 0, 20,142, 34, 0, 16,142, 35, 0, 8,
/* 0x0870 */ 20,130, 0, 61, 0,131, 16, 33, 0, 94, 24, 33,143,164, 0, 16,
/* 0x0880 */ 0, 3, 16, 35, 0,130, 16, 36, 44, 66, 0, 12, 20, 64, 0, 54,
/* 0x0890 */ 36, 2,255,252, 36, 99, 0, 3, 0, 98,128, 36, 36, 2, 0, 12,
/* 0x08a0 */ 174, 2, 0, 0, 60, 2, 3,192, 52, 66, 0, 8,174, 2, 0, 4,
/* 0x08b0 */ 16, 0, 0, 66,174, 0, 0, 8, 2, 64, 32, 33, 2, 96, 40, 33,
/* 0x08c0 */ 4, 17,254,107, 2,192, 48, 33, 16, 64, 0, 6, 0, 0, 0, 0,
/* 0x08d0 */ 36, 4, 0,127, 4, 17,254, 97, 36, 2, 15,161, 16, 0,255,255,
/* 0x08e0 */ 0, 0, 0, 0,143,163, 0, 8, 2,117, 16, 33, 2,227, 40, 33,
/* 0x08f0 */ 2, 66,128, 33, 2, 5, 16, 43, 16, 64, 0, 11, 0,176, 40, 35,
/* 0x0900 */ 2,192, 48, 33, 2, 0, 32, 33, 36, 7, 8, 18, 36, 8,255,255,
/* 0x0910 */ 4, 17,254, 75, 0, 0, 72, 33, 18, 2, 0, 3, 0, 0, 0, 0,
/* 0x0920 */ 16, 0,255,255, 0, 0, 0, 0,143,164, 0, 12, 38, 49, 0, 32,
/* 0x0930 */ 36,132, 0, 1,175,164, 0, 12,150,130, 0, 44,143,163, 0, 12,
/* 0x0940 */ 0, 0, 0, 0, 0, 98, 16, 42, 20, 64,255, 78, 0, 0, 0, 0,
/* 0x0950 */ 143,164, 0, 32, 0, 0, 0, 0, 16,128, 0, 30, 0, 0, 0, 0,
/* 0x0960 */ 16, 0, 0, 28,172,158, 0, 0, 0, 0, 32, 33, 60, 5, 0, 1,
/* 0x0970 */ 36, 6, 0, 3, 36, 7, 8, 2, 36, 8,255,255, 4, 17,254, 48,
/* 0x0980 */ 0, 0, 72, 33, 16, 64,255,204, 36, 67, 0, 3, 36, 2,255,252,
/* 0x0990 */ 0, 98,128, 36, 36, 2, 0, 12,174, 2, 0, 0, 60, 2, 3,192,
/* 0x09a0 */ 52, 66, 0, 8,174, 2, 0, 4,174, 0, 0, 8, 2, 0, 32, 33,
/* 0x09b0 */ 36, 5, 0, 12, 4, 17,254, 46, 36, 6, 0, 5,143,164, 0, 28,
/* 0x09c0 */ 2, 0, 48, 33, 4, 17,254,185, 0, 0, 40, 33, 16, 0,255,187,
/* 0x09d0 */ 2, 64, 32, 33,142,130, 0, 24,143,191, 0, 76, 3,194, 16, 33,
/* 0x09e0 */ 143,183, 0, 68,143,190, 0, 72,143,182, 0, 64,143,181, 0, 60,
/* 0x09f0 */ 143,180, 0, 56,143,179, 0, 52,143,178, 0, 48,143,177, 0, 44,
/* 0x0a00 */ 143,176, 0, 40, 3,224, 0, 8, 39,189, 0, 80, 39,189,255,192,
/* 0x0a10 */ 175,191, 0, 56,175,181, 0, 52,175,180, 0, 48,175,179, 0, 44,
/* 0x0a20 */ 175,178, 0, 40,175,177, 0, 36,175,176, 0, 32,140,130, 0, 4,
/* 0x0a30 */ 1, 0,144, 33,140,136, 0, 0, 0,128, 24, 33, 0,192,152, 33,
/* 0x0a40 */ 1, 96,168, 33, 0,224,160, 33, 1, 32,136, 33, 36, 66, 0, 12,
/* 0x0a50 */ 175,165, 0, 12, 39,164, 0, 20, 39,165, 0, 4, 2, 64, 48, 33,
/* 0x0a60 */ 0, 0, 56, 33, 1, 64,128, 33,175,163, 0, 16,175,163, 0, 24,
/* 0x0a70 */ 175,168, 0, 4,175,162, 0, 20, 4, 17,254, 37,175,179, 0, 8,
/* 0x0a80 */ 2, 32, 72, 33, 2, 64, 32, 33, 2, 96, 40, 33, 39,166, 0, 12,
/* 0x0a90 */ 2,128, 56, 33, 3,160, 64, 33, 2,160, 80, 33, 4, 17,254,172,
/* 0x0aa0 */ 175,176, 0, 0, 0, 64, 48, 33, 2,128, 32, 33, 36, 5, 0, 9,
/* 0x0ab0 */ 4, 17,254,126, 0, 64,136, 33,150,102, 0, 44, 38,100, 0, 52,
/* 0x0ac0 */ 16, 0, 0, 43, 0, 0, 40, 33,140,131, 0, 0, 36, 2, 0, 3,
/* 0x0ad0 */ 20, 98, 0, 39, 36,132, 0, 32, 36,132,255,224,140,130, 0, 8,
/* 0x0ae0 */ 143,164, 0, 0, 0, 0, 40, 33, 0, 68, 32, 33, 0, 0, 48, 33,
/* 0x0af0 */ 4, 17,253,218, 36, 2, 15,165, 4, 64, 0, 9, 0, 64,128, 33,
/* 0x0b00 */ 0, 64, 32, 33, 2, 96, 40, 33, 36, 6, 2, 0, 4, 17,253,211,
/* 0x0b10 */ 36, 2, 15,163, 36, 3, 2, 0, 16, 67, 0, 6, 2,160, 80, 33,
/* 0x0b20 */ 36, 4, 0,127, 4, 17,253,205, 36, 2, 15,161, 16, 0,255,255,
/* 0x0b30 */ 0, 0, 0, 0, 2,128, 56, 33, 3,160, 64, 33, 0, 0, 72, 33,
/* 0x0b40 */ 4, 17,254,131, 0, 0, 48, 33,143,166, 0, 0, 2,128, 32, 33,
/* 0x0b50 */ 36, 5, 0, 7, 4, 17,254, 85, 0, 64,136, 33, 2, 0, 32, 33,
/* 0x0b60 */ 4, 17,253,190, 36, 2, 15,166, 16, 0, 0, 5, 2, 32, 16, 33,
/* 0x0b70 */ 0,166, 16, 42, 20, 64,255,212, 36,165, 0, 1, 2, 32, 16, 33,
/* 0x0b80 */ 143,191, 0, 56,143,181, 0, 52,143,180, 0, 48,143,179, 0, 44,
/* 0x0b90 */ 143,178, 0, 40,143,177, 0, 36,143,176, 0, 32, 3,224, 0, 8,
/* 0x0ba0 */ 39,189, 0, 64
};
+105 -106
View File
@@ -1,5 +1,5 @@
/* mipsel.r3000-linux.elf-fold.h
created from mipsel.r3000-linux.elf-fold.bin, 3008 (0xbc0) bytes
created from mipsel.r3000-linux.elf-fold.bin, 2980 (0xba4) bytes
This file is part of the UPX executable compressor.
@@ -32,17 +32,17 @@
/* clang-format off */
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 3008
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x01738efd
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0x93ef93d8
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 2980
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x832286a5
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0xf5ed87a0
unsigned char stub_mipsel_r3000_linux_elf_fold[3008] = {
unsigned char stub_mipsel_r3000_linux_elf_fold[2980] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 8, 0, 1, 0, 0, 0,128, 0, 16, 0, 52, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 1, 48, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0,
/* 0x0040 */ 0, 0, 16, 0,192, 11, 0, 0,192, 11, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,192, 11, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 0, 0, 16, 0,164, 11, 0, 0,176, 11, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,164, 11, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 0, 0, 2, 36, 8, 0,224, 3, 64, 18, 2, 0, 0, 0, 0, 0,
@@ -60,7 +60,7 @@ unsigned char stub_mipsel_r3000_linux_elf_fold[3008] = {
/* 0x0140 */ 2, 0,224, 4, 33, 8,162, 0, 0, 0, 32,160, 0,254,189, 39,
/* 0x0150 */ 33, 88,128, 3, 33, 80,160, 2, 33, 72, 0, 0, 33, 64,192, 3,
/* 0x0160 */ 33, 56,192, 2, 33, 48,160, 3, 33, 40, 32, 2, 1, 0, 16, 4,
/* 0x0170 */ 116, 1, 2, 36, 35, 16,226, 3, 40, 10, 66, 36, 9,248, 64, 0,
/* 0x0170 */ 116, 1, 2, 36, 35, 16,226, 3, 12, 10, 66, 36, 9,248, 64, 0,
/* 0x0180 */ 33, 32, 0, 2, 0, 2,189, 39, 33,240, 64, 0,104, 0,165,142,
/* 0x0190 */ 33, 32,160, 2,205, 15, 2, 36, 12, 0, 0, 0,251, 15, 2, 36,
/* 0x01a0 */ 12, 0, 0, 0, 20, 0,168,143, 33, 72, 0, 0, 11, 0, 0, 5,
@@ -127,102 +127,101 @@ unsigned char stub_mipsel_r3000_linux_elf_fold[3008] = {
/* 0x0570 */ 52, 0,179,175, 48, 0,178,175, 40, 0,176,175, 28, 0,162,140,
/* 0x0580 */ 33,160,160, 0, 33,136,162, 0, 39, 16, 10, 0, 24, 0,166,175,
/* 0x0590 */ 20, 0,164,175, 28, 0,167,175, 32, 0,168,175, 36, 0,169,175,
/* 0x05a0 */ 19, 0,192, 16, 16, 0,162,175, 0, 0, 6,141, 2, 0, 2, 36,
/* 0x05b0 */ 16, 0,195,148, 0, 0, 0, 0, 4, 0, 98, 20, 52, 0,197, 36,
/* 0x05c0 */ 8, 0,164,140, 5, 0, 0, 16, 33,240, 0, 0, 40, 0,162,140,
/* 0x05d0 */ 0, 0, 0, 0, 35,240,194, 0, 33, 32,192, 3, 20, 0,165,140,
/* 0x05e0 */ 30,255, 17, 4,251, 15, 2, 36,218, 0, 0, 16, 12, 0,160,175,
/* 0x05f0 */ 16, 0,162,148, 44, 0,163,148, 3, 0, 66, 56, 43, 16, 2, 0,
/* 0x0600 */ 0, 57, 2, 0,255,255, 99, 36, 33, 48, 32, 2,255,255, 8, 36,
/* 0x0610 */ 33, 40, 0, 0, 19, 0, 0, 16, 1, 0, 9, 36, 0, 0,194,140,
/* 0x0620 */ 0, 0, 0, 0, 14, 0, 73, 20,255,255, 99, 36, 8, 0,196,140,
/* 0x0630 */ 0, 0, 0, 0, 43, 16,136, 0, 2, 0, 64, 16, 0, 0, 0, 0,
/* 0x0640 */ 33, 64,128, 0, 20, 0,194,140, 0, 0, 0, 0, 33, 32,130, 0,
/* 0x0650 */ 43, 16,164, 0, 2, 0, 64, 16, 0, 0, 0, 0, 33, 40,128, 0,
/* 0x0660 */ 32, 0,198, 36,237,255, 97, 4, 36,128, 72, 1, 35, 40,176, 0,
/* 0x0670 */ 35, 40,170, 0,255,255,165, 36, 36, 40, 69, 1, 2, 8,231, 52,
/* 0x0680 */ 33, 32, 0, 2, 33, 48, 0, 0,255,255, 8, 36,236,254, 17, 4,
/* 0x0690 */ 33, 72, 0, 0, 35,240, 80, 0,174, 0, 0, 16, 12, 0,160,175,
/* 0x06a0 */ 24, 0,163,143, 0, 0, 0, 0, 12, 0, 96, 16, 6, 0, 2, 36,
/* 0x06b0 */ 0, 0, 35,142, 0, 0, 0, 0, 10, 0, 98, 20, 1, 0, 2, 36,
/* 0x06c0 */ 8, 0, 38,142, 28, 0,164,143, 33, 48,198, 3,119,255, 17, 4,
/* 0x06d0 */ 3, 0, 5, 36,155, 0, 0, 16, 0, 0, 0, 0, 0, 0, 35,142,
/* 0x06e0 */ 1, 0, 2, 36,151, 0, 98, 20, 0, 0, 0, 0, 20, 0, 34,142,
/* 0x06f0 */ 0, 0, 0, 0,147, 0, 64, 16, 0, 0, 0, 0, 24, 0,164,143,
/* 0x0700 */ 0, 0, 0, 0, 19, 0,128, 16, 0, 0, 0, 0, 4, 0, 34,142,
/* 0x0710 */ 0, 0, 0, 0, 15, 0, 64, 20, 3, 0, 5, 36, 28, 0,130,142,
/* 0x0720 */ 8, 0, 38,142, 28, 0,164,143, 33, 48,194, 0, 95,255, 17, 4,
/* 0x0730 */ 33, 48,198, 3, 28, 0,164,143, 44, 0,134,150, 91,255, 17, 4,
/* 0x0740 */ 5, 0, 5, 36, 28, 0,164,143, 42, 0,134,150, 87,255, 17, 4,
/* 0x0750 */ 4, 0, 5, 36, 8, 0, 34,142, 24, 0, 35,142, 33,184,194, 3,
/* 0x0760 */ 81,115, 2, 60,128, 24, 3, 0, 64, 98, 66, 52, 6,128, 98, 0,
/* 0x0770 */ 16, 0,163,143, 16, 0, 36,142, 36, 16,227, 2, 0, 0,164,175,
/* 0x0780 */ 33,152,130, 0, 24, 0,163,143, 20, 0, 36,142, 4, 0,183,175,
/* 0x0790 */ 7, 0, 22, 50, 8, 0,164,175, 22, 0, 96, 16, 35,144,226, 2,
/* 0x07a0 */ 33, 32, 64, 2, 33, 40, 96, 2, 3, 0, 6, 36, 18, 8, 7, 36,
/* 0x07b0 */ 255,255, 8, 36,162,254, 17, 4, 33, 72, 0, 0, 75, 0, 66, 22,
/* 0x07c0 */ 4, 0, 2, 50, 4, 0, 64, 16, 0, 0, 0, 0, 36, 0,167,143,
/* 0x07d0 */ 2, 0, 0, 16, 0, 0, 0, 0, 33, 56, 0, 0, 24, 0,164,143,
/* 0x07e0 */ 20, 0,166,143,202,254, 17, 4, 33, 40,160, 3, 11, 0, 0, 16,
/* 0x07f0 */ 0, 0, 0, 0, 4, 0, 41,142, 20, 0,168,143, 33, 32, 64, 2,
/* 0x0800 */ 35, 72, 34, 1, 33, 40, 96, 2, 33, 48,192, 2,140,254, 17, 4,
/* 0x0810 */ 18, 0, 7, 36, 54, 0, 66, 22,127, 0, 4, 36, 16, 0,164,143,
/* 0x0820 */ 35, 16, 19, 0, 2, 0,195, 50, 8, 0, 96, 16, 36,168, 68, 0,
/* 0x0830 */ 6, 0,160, 18, 33, 24, 83, 2, 33, 16,160, 2,255,255, 66, 36,
/* 0x0840 */ 0, 0, 96,160,253,255, 64, 20, 1, 0, 99, 36, 24, 0,162,143,
/* 0x0850 */ 0, 0, 0, 0, 42, 0, 64, 16, 1, 0, 2, 36, 0, 0, 35,142,
/* 0x0860 */ 0, 0, 0, 0, 28, 0, 98, 20, 33, 32, 64, 2, 24, 0, 34,142,
/* 0x0870 */ 0, 0, 0, 0, 1, 0, 66, 48, 24, 0, 64, 16, 33, 40, 96, 2,
/* 0x0880 */ 20, 0, 36,142, 16, 0, 34,142, 8, 0, 35,142, 61, 0,130, 20,
/* 0x0890 */ 33, 16,131, 0, 33, 24, 94, 0, 16, 0,164,143, 35, 16, 3, 0,
/* 0x08a0 */ 36, 16,130, 0, 12, 0, 66, 44, 54, 0, 64, 20,252,255, 2, 36,
/* 0x08b0 */ 3, 0, 99, 36, 36,128, 98, 0, 12, 0, 2, 36, 0, 0, 2,174,
/* 0x08c0 */ 192, 3, 2, 60, 8, 0, 66, 52, 4, 0, 2,174, 66, 0, 0, 16,
/* 0x08d0 */ 8, 0, 0,174, 33, 32, 64, 2, 33, 40, 96, 2,100,254, 17, 4,
/* 0x08e0 */ 33, 48,192, 2, 6, 0, 64, 16, 0, 0, 0, 0,127, 0, 4, 36,
/* 0x08f0 */ 90,254, 17, 4,161, 15, 2, 36,255,255, 0, 16, 0, 0, 0, 0,
/* 0x0900 */ 8, 0,163,143, 33, 16,117, 2, 33, 40,227, 2, 33,128, 66, 2,
/* 0x0910 */ 43, 16, 5, 2, 11, 0, 64, 16, 35, 40,176, 0, 33, 48,192, 2,
/* 0x0920 */ 33, 32, 0, 2, 18, 8, 7, 36,255,255, 8, 36, 68,254, 17, 4,
/* 0x0930 */ 33, 72, 0, 0, 3, 0, 2, 18, 0, 0, 0, 0,255,255, 0, 16,
/* 0x0940 */ 0, 0, 0, 0, 12, 0,164,143, 32, 0, 49, 38, 1, 0,132, 36,
/* 0x0950 */ 12, 0,164,175, 44, 0,130,150, 12, 0,163,143, 0, 0, 0, 0,
/* 0x0960 */ 42, 16, 98, 0, 78,255, 64, 20, 0, 0, 0, 0, 32, 0,164,143,
/* 0x0970 */ 0, 0, 0, 0, 30, 0,128, 16, 0, 0, 0, 0, 28, 0, 0, 16,
/* 0x0980 */ 0, 0,158,172, 33, 32, 0, 0, 1, 0, 5, 60, 3, 0, 6, 36,
/* 0x0990 */ 2, 8, 7, 36,255,255, 8, 36, 41,254, 17, 4, 33, 72, 0, 0,
/* 0x09a0 */ 204,255, 64, 16, 3, 0, 67, 36,252,255, 2, 36, 36,128, 98, 0,
/* 0x09b0 */ 12, 0, 2, 36, 0, 0, 2,174,192, 3, 2, 60, 8, 0, 66, 52,
/* 0x09c0 */ 4, 0, 2,174, 8, 0, 0,174, 33, 32, 0, 2, 12, 0, 5, 36,
/* 0x09d0 */ 39,254, 17, 4, 5, 0, 6, 36, 28, 0,164,143, 33, 48, 0, 2,
/* 0x09e0 */ 178,254, 17, 4, 33, 40, 0, 0,187,255, 0, 16, 33, 32, 64, 2,
/* 0x09f0 */ 24, 0,130,142, 76, 0,191,143, 33, 16,194, 3, 68, 0,183,143,
/* 0x0a00 */ 72, 0,190,143, 64, 0,182,143, 60, 0,181,143, 56, 0,180,143,
/* 0x0a10 */ 52, 0,179,143, 48, 0,178,143, 44, 0,177,143, 40, 0,176,143,
/* 0x0a20 */ 8, 0,224, 3, 80, 0,189, 39,192,255,189, 39, 56, 0,191,175,
/* 0x0a30 */ 52, 0,181,175, 48, 0,180,175, 44, 0,179,175, 40, 0,178,175,
/* 0x0a40 */ 36, 0,177,175, 32, 0,176,175, 4, 0,130,140, 33,144, 0, 1,
/* 0x0a50 */ 0, 0,136,140, 33, 24,128, 0, 33,152,192, 0, 33,168, 96, 1,
/* 0x0a60 */ 33,160,224, 0, 33,136, 32, 1, 12, 0, 66, 36, 12, 0,165,175,
/* 0x0a70 */ 20, 0,164, 39, 4, 0,165, 39, 33, 48, 64, 2, 33, 56, 0, 0,
/* 0x0a80 */ 33,128, 64, 1, 16, 0,163,175, 24, 0,163,175, 4, 0,168,175,
/* 0x0a90 */ 20, 0,162,175, 30,254, 17, 4, 8, 0,179,175, 33, 72, 32, 2,
/* 0x0aa0 */ 33, 32, 64, 2, 33, 40, 96, 2, 12, 0,166, 39, 33, 56,128, 2,
/* 0x0ab0 */ 33, 64,160, 3, 33, 80,160, 2,165,254, 17, 4, 0, 0,176,175,
/* 0x0ac0 */ 33, 48, 64, 0, 33, 32,128, 2, 9, 0, 5, 36,119,254, 17, 4,
/* 0x0ad0 */ 33,136, 64, 0, 44, 0,102,150, 52, 0,100, 38, 43, 0, 0, 16,
/* 0x0ae0 */ 33, 40, 0, 0, 0, 0,131,140, 3, 0, 2, 36, 39, 0, 98, 20,
/* 0x0af0 */ 32, 0,132, 36,224,255,132, 36, 8, 0,130,140, 0, 0,164,143,
/* 0x0b00 */ 33, 40, 0, 0, 33, 32, 68, 0, 33, 48, 0, 0,211,253, 17, 4,
/* 0x0b10 */ 165, 15, 2, 36, 9, 0, 64, 4, 33,128, 64, 0, 33, 32, 64, 0,
/* 0x0b20 */ 33, 40, 96, 2, 0, 2, 6, 36,204,253, 17, 4,163, 15, 2, 36,
/* 0x0b30 */ 0, 2, 3, 36, 6, 0, 67, 16, 33, 80,160, 2,127, 0, 4, 36,
/* 0x0b40 */ 198,253, 17, 4,161, 15, 2, 36,255,255, 0, 16, 0, 0, 0, 0,
/* 0x0b50 */ 33, 56,128, 2, 33, 64,160, 3, 33, 72, 0, 0,124,254, 17, 4,
/* 0x0b60 */ 33, 48, 0, 0, 0, 0,166,143, 33, 32,128, 2, 7, 0, 5, 36,
/* 0x0b70 */ 78,254, 17, 4, 33,136, 64, 0, 33, 32, 0, 2,183,253, 17, 4,
/* 0x0b80 */ 166, 15, 2, 36, 5, 0, 0, 16, 33, 16, 32, 2, 42, 16,166, 0,
/* 0x0b90 */ 212,255, 64, 20, 1, 0,165, 36, 33, 16, 32, 2, 56, 0,191,143,
/* 0x0ba0 */ 52, 0,181,143, 48, 0,180,143, 44, 0,179,143, 40, 0,178,143,
/* 0x0bb0 */ 36, 0,177,143, 32, 0,176,143, 8, 0,224, 3, 64, 0,189, 39
/* 0x05a0 */ 12, 0,192, 16, 16, 0,162,175, 0, 0, 6,141, 2, 0, 2, 36,
/* 0x05b0 */ 16, 0,195,148, 0, 0, 0, 0, 3, 0, 98, 20, 0, 0, 0, 0,
/* 0x05c0 */ 46, 0, 0, 16, 33,240, 0, 0, 92, 0,194,140, 43, 0, 0, 16,
/* 0x05d0 */ 35,240,194, 0, 16, 0,162,148, 44, 0,163,148, 3, 0, 66, 56,
/* 0x05e0 */ 43, 16, 2, 0, 0, 57, 2, 0,255,255, 99, 36, 33, 48, 32, 2,
/* 0x05f0 */ 255,255, 8, 36, 33, 40, 0, 0, 19, 0, 0, 16, 1, 0, 9, 36,
/* 0x0600 */ 0, 0,194,140, 0, 0, 0, 0, 14, 0, 73, 20,255,255, 99, 36,
/* 0x0610 */ 8, 0,196,140, 0, 0, 0, 0, 43, 16,136, 0, 2, 0, 64, 16,
/* 0x0620 */ 0, 0, 0, 0, 33, 64,128, 0, 20, 0,194,140, 0, 0, 0, 0,
/* 0x0630 */ 33, 32,130, 0, 43, 16,164, 0, 2, 0, 64, 16, 0, 0, 0, 0,
/* 0x0640 */ 33, 40,128, 0, 32, 0,198, 36,237,255, 97, 4, 36,128, 72, 1,
/* 0x0650 */ 35, 40,176, 0, 35, 40,170, 0,255,255,165, 36, 36, 40, 69, 1,
/* 0x0660 */ 2, 8,231, 52, 33, 32, 0, 2, 33, 48, 0, 0,255,255, 8, 36,
/* 0x0670 */ 243,254, 17, 4, 33, 72, 0, 0, 35,240, 80, 0,174, 0, 0, 16,
/* 0x0680 */ 12, 0,160,175, 24, 0,163,143, 0, 0, 0, 0, 12, 0, 96, 16,
/* 0x0690 */ 6, 0, 2, 36, 0, 0, 35,142, 0, 0, 0, 0, 10, 0, 98, 20,
/* 0x06a0 */ 1, 0, 2, 36, 8, 0, 38,142, 28, 0,164,143, 33, 48,198, 3,
/* 0x06b0 */ 126,255, 17, 4, 3, 0, 5, 36,155, 0, 0, 16, 0, 0, 0, 0,
/* 0x06c0 */ 0, 0, 35,142, 1, 0, 2, 36,151, 0, 98, 20, 0, 0, 0, 0,
/* 0x06d0 */ 20, 0, 34,142, 0, 0, 0, 0,147, 0, 64, 16, 0, 0, 0, 0,
/* 0x06e0 */ 24, 0,164,143, 0, 0, 0, 0, 19, 0,128, 16, 0, 0, 0, 0,
/* 0x06f0 */ 4, 0, 34,142, 0, 0, 0, 0, 15, 0, 64, 20, 3, 0, 5, 36,
/* 0x0700 */ 28, 0,130,142, 8, 0, 38,142, 28, 0,164,143, 33, 48,194, 0,
/* 0x0710 */ 102,255, 17, 4, 33, 48,198, 3, 28, 0,164,143, 44, 0,134,150,
/* 0x0720 */ 98,255, 17, 4, 5, 0, 5, 36, 28, 0,164,143, 42, 0,134,150,
/* 0x0730 */ 94,255, 17, 4, 4, 0, 5, 36, 8, 0, 34,142, 24, 0, 35,142,
/* 0x0740 */ 33,184,194, 3, 81,115, 2, 60,128, 24, 3, 0, 64, 98, 66, 52,
/* 0x0750 */ 6,128, 98, 0, 16, 0,163,143, 16, 0, 36,142, 36, 16,227, 2,
/* 0x0760 */ 0, 0,164,175, 33,152,130, 0, 24, 0,163,143, 20, 0, 36,142,
/* 0x0770 */ 4, 0,183,175, 7, 0, 22, 50, 8, 0,164,175, 22, 0, 96, 16,
/* 0x0780 */ 35,144,226, 2, 33, 32, 64, 2, 33, 40, 96, 2, 3, 0, 6, 36,
/* 0x0790 */ 18, 8, 7, 36,255,255, 8, 36,169,254, 17, 4, 33, 72, 0, 0,
/* 0x07a0 */ 75, 0, 66, 22, 4, 0, 2, 50, 4, 0, 64, 16, 0, 0, 0, 0,
/* 0x07b0 */ 36, 0,167,143, 2, 0, 0, 16, 0, 0, 0, 0, 33, 56, 0, 0,
/* 0x07c0 */ 24, 0,164,143, 20, 0,166,143,209,254, 17, 4, 33, 40,160, 3,
/* 0x07d0 */ 11, 0, 0, 16, 0, 0, 0, 0, 4, 0, 41,142, 20, 0,168,143,
/* 0x07e0 */ 33, 32, 64, 2, 35, 72, 34, 1, 33, 40, 96, 2, 33, 48,192, 2,
/* 0x07f0 */ 147,254, 17, 4, 18, 0, 7, 36, 54, 0, 66, 22,127, 0, 4, 36,
/* 0x0800 */ 16, 0,164,143, 35, 16, 19, 0, 2, 0,195, 50, 8, 0, 96, 16,
/* 0x0810 */ 36,168, 68, 0, 6, 0,160, 18, 33, 24, 83, 2, 33, 16,160, 2,
/* 0x0820 */ 255,255, 66, 36, 0, 0, 96,160,253,255, 64, 20, 1, 0, 99, 36,
/* 0x0830 */ 24, 0,162,143, 0, 0, 0, 0, 42, 0, 64, 16, 1, 0, 2, 36,
/* 0x0840 */ 0, 0, 35,142, 0, 0, 0, 0, 28, 0, 98, 20, 33, 32, 64, 2,
/* 0x0850 */ 24, 0, 34,142, 0, 0, 0, 0, 1, 0, 66, 48, 24, 0, 64, 16,
/* 0x0860 */ 33, 40, 96, 2, 20, 0, 36,142, 16, 0, 34,142, 8, 0, 35,142,
/* 0x0870 */ 61, 0,130, 20, 33, 16,131, 0, 33, 24, 94, 0, 16, 0,164,143,
/* 0x0880 */ 35, 16, 3, 0, 36, 16,130, 0, 12, 0, 66, 44, 54, 0, 64, 20,
/* 0x0890 */ 252,255, 2, 36, 3, 0, 99, 36, 36,128, 98, 0, 12, 0, 2, 36,
/* 0x08a0 */ 0, 0, 2,174,192, 3, 2, 60, 8, 0, 66, 52, 4, 0, 2,174,
/* 0x08b0 */ 66, 0, 0, 16, 8, 0, 0,174, 33, 32, 64, 2, 33, 40, 96, 2,
/* 0x08c0 */ 107,254, 17, 4, 33, 48,192, 2, 6, 0, 64, 16, 0, 0, 0, 0,
/* 0x08d0 */ 127, 0, 4, 36, 97,254, 17, 4,161, 15, 2, 36,255,255, 0, 16,
/* 0x08e0 */ 0, 0, 0, 0, 8, 0,163,143, 33, 16,117, 2, 33, 40,227, 2,
/* 0x08f0 */ 33,128, 66, 2, 43, 16, 5, 2, 11, 0, 64, 16, 35, 40,176, 0,
/* 0x0900 */ 33, 48,192, 2, 33, 32, 0, 2, 18, 8, 7, 36,255,255, 8, 36,
/* 0x0910 */ 75,254, 17, 4, 33, 72, 0, 0, 3, 0, 2, 18, 0, 0, 0, 0,
/* 0x0920 */ 255,255, 0, 16, 0, 0, 0, 0, 12, 0,164,143, 32, 0, 49, 38,
/* 0x0930 */ 1, 0,132, 36, 12, 0,164,175, 44, 0,130,150, 12, 0,163,143,
/* 0x0940 */ 0, 0, 0, 0, 42, 16, 98, 0, 78,255, 64, 20, 0, 0, 0, 0,
/* 0x0950 */ 32, 0,164,143, 0, 0, 0, 0, 30, 0,128, 16, 0, 0, 0, 0,
/* 0x0960 */ 28, 0, 0, 16, 0, 0,158,172, 33, 32, 0, 0, 1, 0, 5, 60,
/* 0x0970 */ 3, 0, 6, 36, 2, 8, 7, 36,255,255, 8, 36, 48,254, 17, 4,
/* 0x0980 */ 33, 72, 0, 0,204,255, 64, 16, 3, 0, 67, 36,252,255, 2, 36,
/* 0x0990 */ 36,128, 98, 0, 12, 0, 2, 36, 0, 0, 2,174,192, 3, 2, 60,
/* 0x09a0 */ 8, 0, 66, 52, 4, 0, 2,174, 8, 0, 0,174, 33, 32, 0, 2,
/* 0x09b0 */ 12, 0, 5, 36, 46,254, 17, 4, 5, 0, 6, 36, 28, 0,164,143,
/* 0x09c0 */ 33, 48, 0, 2,185,254, 17, 4, 33, 40, 0, 0,187,255, 0, 16,
/* 0x09d0 */ 33, 32, 64, 2, 24, 0,130,142, 76, 0,191,143, 33, 16,194, 3,
/* 0x09e0 */ 68, 0,183,143, 72, 0,190,143, 64, 0,182,143, 60, 0,181,143,
/* 0x09f0 */ 56, 0,180,143, 52, 0,179,143, 48, 0,178,143, 44, 0,177,143,
/* 0x0a00 */ 40, 0,176,143, 8, 0,224, 3, 80, 0,189, 39,192,255,189, 39,
/* 0x0a10 */ 56, 0,191,175, 52, 0,181,175, 48, 0,180,175, 44, 0,179,175,
/* 0x0a20 */ 40, 0,178,175, 36, 0,177,175, 32, 0,176,175, 4, 0,130,140,
/* 0x0a30 */ 33,144, 0, 1, 0, 0,136,140, 33, 24,128, 0, 33,152,192, 0,
/* 0x0a40 */ 33,168, 96, 1, 33,160,224, 0, 33,136, 32, 1, 12, 0, 66, 36,
/* 0x0a50 */ 12, 0,165,175, 20, 0,164, 39, 4, 0,165, 39, 33, 48, 64, 2,
/* 0x0a60 */ 33, 56, 0, 0, 33,128, 64, 1, 16, 0,163,175, 24, 0,163,175,
/* 0x0a70 */ 4, 0,168,175, 20, 0,162,175, 37,254, 17, 4, 8, 0,179,175,
/* 0x0a80 */ 33, 72, 32, 2, 33, 32, 64, 2, 33, 40, 96, 2, 12, 0,166, 39,
/* 0x0a90 */ 33, 56,128, 2, 33, 64,160, 3, 33, 80,160, 2,172,254, 17, 4,
/* 0x0aa0 */ 0, 0,176,175, 33, 48, 64, 0, 33, 32,128, 2, 9, 0, 5, 36,
/* 0x0ab0 */ 126,254, 17, 4, 33,136, 64, 0, 44, 0,102,150, 52, 0,100, 38,
/* 0x0ac0 */ 43, 0, 0, 16, 33, 40, 0, 0, 0, 0,131,140, 3, 0, 2, 36,
/* 0x0ad0 */ 39, 0, 98, 20, 32, 0,132, 36,224,255,132, 36, 8, 0,130,140,
/* 0x0ae0 */ 0, 0,164,143, 33, 40, 0, 0, 33, 32, 68, 0, 33, 48, 0, 0,
/* 0x0af0 */ 218,253, 17, 4,165, 15, 2, 36, 9, 0, 64, 4, 33,128, 64, 0,
/* 0x0b00 */ 33, 32, 64, 0, 33, 40, 96, 2, 0, 2, 6, 36,211,253, 17, 4,
/* 0x0b10 */ 163, 15, 2, 36, 0, 2, 3, 36, 6, 0, 67, 16, 33, 80,160, 2,
/* 0x0b20 */ 127, 0, 4, 36,205,253, 17, 4,161, 15, 2, 36,255,255, 0, 16,
/* 0x0b30 */ 0, 0, 0, 0, 33, 56,128, 2, 33, 64,160, 3, 33, 72, 0, 0,
/* 0x0b40 */ 131,254, 17, 4, 33, 48, 0, 0, 0, 0,166,143, 33, 32,128, 2,
/* 0x0b50 */ 7, 0, 5, 36, 85,254, 17, 4, 33,136, 64, 0, 33, 32, 0, 2,
/* 0x0b60 */ 190,253, 17, 4,166, 15, 2, 36, 5, 0, 0, 16, 33, 16, 32, 2,
/* 0x0b70 */ 42, 16,166, 0,212,255, 64, 20, 1, 0,165, 36, 33, 16, 32, 2,
/* 0x0b80 */ 56, 0,191,143, 52, 0,181,143, 48, 0,180,143, 44, 0,179,143,
/* 0x0b90 */ 40, 0,178,143, 36, 0,177,143, 32, 0,176,143, 8, 0,224, 3,
/* 0x0ba0 */ 64, 0,189, 39
};
+530 -529
View File
File diff suppressed because it is too large Load Diff
+514 -513
View File
File diff suppressed because it is too large Load Diff
+408 -408
View File
@@ -33,402 +33,402 @@
/* clang-format off */
#define STUB_POWERPC_LINUX_ELF_ENTRY_SIZE 8467
#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0xd5b7c5b3
#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0x5bf11174
#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0x7e88c34a
#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0xe31e2eee
unsigned char stub_powerpc_linux_elf_entry[8467] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 25,176, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40,
/* 0x0030 */ 0, 0, 0, 0, 72, 0, 0,221,124, 0, 41,236,125,168, 2,166,
/* 0x0040 */ 40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20,
/* 0x0030 */ 0, 0, 0, 0, 72, 0, 0,209,124, 0, 41,236,125,168, 2,166,
/* 0x0040 */ 40, 7, 0, 8, 64,130, 1, 64,144,166, 0, 0,124,132, 26, 20,
/* 0x0050 */ 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255,
/* 0x0060 */ 57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44,
/* 0x0070 */ 56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1,
/* 0x0080 */ 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64,
/* 0x0090 */ 125, 41, 74, 20, 65,162,255,213, 65,129,255,236, 56,224, 0, 1,
/* 0x00a0 */ 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,162,255,189,
/* 0x00b0 */ 124,231, 57, 20,125, 41, 72, 21, 65,162,255,177,124,231, 57, 20,
/* 0x00c0 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161, 65,160,255,216,
/* 0x00d0 */ 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,128, 0, 32,
/* 0x00e0 */ 141, 99, 0, 1,124,234, 88,249,125, 74, 14,112, 65,130, 0, 0,
/* 0x00f0 */ 113,107, 0, 1, 65,162, 0, 80, 72, 0, 0, 20,124, 9, 0, 64,
/* 0x0100 */ 125, 41, 74, 20, 65,162,255,101, 65,161, 0, 60, 57, 0, 0, 1,
/* 0x0110 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 81, 65,161, 0, 40,
/* 0x0120 */ 125, 41, 72, 21, 65,162,255, 69,125, 8, 65, 20,124, 9, 0, 64,
/* 0x0130 */ 125, 41, 74, 20, 65,162,255, 53, 65,160,255,232, 57, 8, 0, 2,
/* 0x0140 */ 72, 0, 0, 16,125, 41, 72, 21, 65,162,255, 33,125, 8, 65, 20,
/* 0x0150 */ 32,234,250,255, 57, 8, 0, 2,125, 8, 1,148,124,234, 42, 20,
/* 0x0160 */ 125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248,
/* 0x0170 */ 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, 75,255,255, 16,
/* 0x0180 */ 124, 0, 41,236,125,168, 2,166, 40, 7, 0, 5, 64,130, 1, 32,
/* 0x0190 */ 144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0,
/* 0x01a0 */ 56, 99,255,255, 56,165,255,255, 57, 64,255,255, 72, 0, 0,240,
/* 0x01b0 */ 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64,
/* 0x01c0 */ 125, 41, 72, 20, 97, 41, 0, 1, 78,128, 0, 32,141, 3, 0, 1,
/* 0x01d0 */ 157, 5, 0, 1,124, 9, 0, 64,125, 41, 74, 20, 65,162,255,213,
/* 0x01e0 */ 65,129,255,236, 56,224, 0, 1, 72, 0, 0, 20, 56,231,255,255,
/* 0x01f0 */ 125, 41, 72, 21, 65,162,255,189,124,231, 57, 21,125, 41, 72, 21,
/* 0x0200 */ 65,162,255,177,124,231, 57, 21,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0210 */ 65,162,255,161, 65,160,255,216, 57, 0, 0, 0, 52,231,255,253,
/* 0x0220 */ 84,231, 64, 46, 65,128, 0, 24,141, 99, 0, 1,124,234, 88,249,
/* 0x0230 */ 125, 74, 14,112, 65,130, 0, 0, 72, 0, 0, 12,125, 41, 72, 21,
/* 0x0240 */ 65,162,255,113,125, 8, 65, 21,125, 41, 72, 21, 65,162,255,101,
/* 0x0250 */ 125, 8, 65, 21, 64,130, 0, 40, 57, 0, 0, 1,125, 41, 72, 21,
/* 0x0260 */ 65,162,255, 81,125, 8, 65, 21,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0270 */ 65,162,255, 65, 65,160,255,232, 57, 8, 0, 2, 32,234,250,255,
/* 0x0280 */ 57, 8, 0, 1,125, 8, 1,148,124,234, 42, 20,125, 9, 3,166,
/* 0x0290 */ 141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,
/* 0x02a0 */ 124, 7, 41,236,124, 7, 26, 44, 75,255,255, 44,124, 0, 41,236,
/* 0x02b0 */ 125,168, 2,166, 40, 7, 0, 2, 64,130, 0,228,144,166, 0, 0,
/* 0x02c0 */ 124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255,
/* 0x02d0 */ 56,165,255,255, 57, 64,255,255, 72, 0, 0,180,124, 9, 0, 64,
/* 0x02e0 */ 125, 41, 72, 20, 76,162, 0, 32, 57, 32, 0, 1,125, 41, 28, 44,
/* 0x02f0 */ 56, 99, 0, 4,124, 9, 0, 64,125, 41, 73, 20, 78,128, 0, 32,
/* 0x0300 */ 141, 3, 0, 1,157, 5, 0, 1, 75,255,255,213, 65,129,255,244,
/* 0x0310 */ 56,224, 0, 1, 75,255,255,201,124,231, 57, 21, 75,255,255,193,
/* 0x0320 */ 65,160,255,244, 52,231,255,253, 57, 0, 0, 0, 65,128, 0, 20,
/* 0x0330 */ 141, 99, 0, 1, 84,231, 64, 46,124,234, 88,249, 65,130, 0, 0,
/* 0x0340 */ 75,255,255,157,125, 8, 65, 21, 75,255,255,149,125, 8, 65, 21,
/* 0x0350 */ 56,224, 0, 1, 64,130, 0, 28, 56,224, 0, 3, 57, 0, 0, 1,
/* 0x0360 */ 75,255,255,125,125, 8, 65, 21, 75,255,255,117, 65,160,255,244,
/* 0x0370 */ 33,106,242,255,125, 8, 57, 20,124,234, 42, 20,125, 9, 3,166,
/* 0x0380 */ 141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,
/* 0x0390 */ 124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14,
/* 0x03a0 */ 64,130, 0, 36,148, 33,255,232,124, 8, 2,166,124,201, 51,120,
/* 0x03b0 */ 129, 6, 0, 0,124,167, 43,120, 56,164,255,254, 56,131, 0, 2,
/* 0x03c0 */ 144, 1, 0, 8,136, 3, 0, 0, 84, 11,232,254, 84, 12, 7,126,
/* 0x03d0 */ 56, 96,250, 0,124, 99, 88, 48, 56, 99,241,124,124, 38, 11,120,
/* 0x03e0 */ 124, 33, 26, 20, 84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,
/* 0x03f0 */ 144, 9, 0, 0,148, 3,255,252,124, 1, 24, 64, 65,128,255,248,
/* 0x0400 */ 144,193, 0, 0,136, 4,255,255,144,225, 0, 8, 56,193, 0, 16,
/* 0x0410 */ 145, 33, 0, 12, 56, 97, 0, 20, 84, 11,225, 62, 84, 0, 7, 62,
/* 0x0420 */ 153,131, 0, 2,153, 99, 0, 1,152, 3, 0, 0,124, 8, 2,166,
/* 0x0430 */ 148, 33,255,160,189,193, 0, 24, 59, 32, 0, 0,125, 40, 3,166,
/* 0x0440 */ 124,206, 51,120,124,147, 35,120,144, 1, 0,100,124,245, 59,120,
/* 0x0450 */ 125, 20, 67,120,137, 67, 0, 2, 59, 3, 0, 4, 59,224, 0, 0,
/* 0x0460 */ 137, 99, 0, 1, 58,224, 0, 0, 59, 64, 0, 1,138, 67, 0, 0,
/* 0x0470 */ 58, 32, 0, 1, 58, 0, 0, 1,147, 38, 0, 0, 57,224, 0, 1,
/* 0x0480 */ 147, 41, 0, 0, 57, 32, 3, 0,136, 3, 0, 1,124, 18, 2, 20,
/* 0x0490 */ 125, 41, 0, 48, 56, 9, 7, 54, 57, 32, 0, 1,127,153, 0, 64,
/* 0x04a0 */ 125, 43, 88, 48,125, 41, 80, 48, 57,107,255,255, 57, 41,255,255,
/* 0x04b0 */ 145, 97, 0, 12,145, 33, 0, 8, 57, 32, 0, 0, 64,156, 0, 28,
/* 0x04c0 */ 124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60, 57, 41, 0, 1,
/* 0x04d0 */ 125,120, 3, 46, 66, 0,255,244,127,147, 42, 20,126,108,155,120,
/* 0x04e0 */ 56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0,127,140,224, 0,
/* 0x04f0 */ 57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46, 65,158, 8,156,
/* 0x0500 */ 136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120, 64,153,255,224,
/* 0x0510 */ 127,153,160, 64, 64,156, 8,100, 62,192, 0,255, 98,214,255,255,
/* 0x0520 */ 127,136,176, 64,128, 1, 0, 8,127, 35, 0, 56, 86,224, 32, 54,
/* 0x0530 */ 124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32,127,140,224, 0,
/* 0x0540 */ 65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46,
/* 0x0550 */ 57,140, 0, 1,124, 5, 75,120,124,230,194, 46, 85, 0,170,254,
/* 0x0560 */ 125, 64, 57,214,127,133, 80, 64, 64,156, 1,172,128, 1, 0, 12,
/* 0x0570 */ 47,151, 0, 6,125, 72, 83,120, 56, 96, 0, 1,127, 41, 0, 56,
/* 0x0580 */ 32, 18, 0, 8,127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20,
/* 0x0590 */ 32, 7, 8, 0, 29, 41, 6, 0,124, 0, 46,112,124, 7, 2, 20,
/* 0x05a0 */ 124, 6,195, 46,125, 56, 74, 20, 56,201, 14,108, 64,157, 0,180,
/* 0x05b0 */ 124, 26,200, 80, 63, 96, 0,255,127,245, 0,174, 99,123,255,255,
/* 0x05c0 */ 127,136,216, 64, 87,255, 8, 60, 87,253, 5,238, 84,100, 8, 60,
/* 0x05d0 */ 87,160, 8, 60,127, 12,224, 0,124, 6, 2, 20, 84,169, 64, 46,
/* 0x05e0 */ 124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176,136, 12, 0, 0,
/* 0x05f0 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,161,103, 2, 0,
/* 0x0600 */ 85, 0,170,254, 47, 29, 0, 0,124,131, 35,120,125, 64, 89,214,
/* 0x0610 */ 32, 11, 8, 0, 85,105,217,126,124, 0, 46,112,124, 11, 2, 20,
/* 0x0620 */ 125,105, 88, 80,127,133, 80, 64,125, 10, 64, 80, 64,156, 0, 20,
/* 0x0630 */ 176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24, 72, 0, 0, 28,
/* 0x0640 */ 177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1, 65,154, 0, 12,
/* 0x0650 */ 47,131, 0,255, 64,157,255,108, 47,131, 0,255, 65,157, 0,132,
/* 0x0660 */ 63,224, 0,255, 99,255,255,255,127,136,248, 64, 84,103, 8, 60,
/* 0x0670 */ 127, 12,224, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24,
/* 0x0680 */ 65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0690 */ 125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x06a0 */ 32, 11, 8, 0, 85,105,217,126,124, 0, 46,112,124, 11, 2, 20,
/* 0x06b0 */ 125,105, 88, 80,127,133, 80, 64,125, 10, 64, 80, 64,156, 0, 16,
/* 0x06c0 */ 125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80,
/* 0x06d0 */ 125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255, 64,157,255,140,
/* 0x06e0 */ 47,151, 0, 3, 84,127, 6, 62,127,249,169,174, 59, 57, 0, 1,
/* 0x06f0 */ 65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120, 47,151, 0, 9,
/* 0x0700 */ 65,157, 0, 12, 58,247,255,253, 72, 0, 6,104, 58,247,255,250,
/* 0x0710 */ 72, 0, 6, 96,125, 10, 64, 80, 84,224,217,126,127,136,176, 64,
/* 0x0720 */ 124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46,124,170, 40, 80,
/* 0x0730 */ 124,248, 74, 20, 65,157, 0, 32,127,140,224, 0, 65,158, 6, 92,
/* 0x0740 */ 137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0750 */ 124, 5, 75,120,161,103, 1,128, 85, 0,170,254,125, 64, 89,214,
/* 0x0760 */ 127,133, 80, 64, 64,156, 0, 64, 47,151, 0, 6, 32, 11, 8, 0,
/* 0x0770 */ 124, 0, 46,112,126, 15,131,120,124, 11, 2, 20,126, 48,139,120,
/* 0x0780 */ 176, 7, 1,128,125, 72, 83,120, 56, 0, 0, 0,127, 81,211,120,
/* 0x0790 */ 64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120, 56,216, 6,100,
/* 0x07a0 */ 72, 0, 2, 24,125, 10, 64, 80, 85, 96,217,126,127,136,176, 64,
/* 0x07b0 */ 124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128, 65,157, 0, 32,
/* 0x07c0 */ 127,140,224, 0, 65,158, 5,212,137, 44, 0, 0, 84,160, 64, 46,
/* 0x07d0 */ 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,161,103, 1,152,
/* 0x07e0 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0,188,
/* 0x07f0 */ 127,138,176, 64, 32, 11, 8, 0,124, 0, 46,112, 86,233, 40, 52,
/* 0x0800 */ 124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60,176, 7, 1,152,
/* 0x0810 */ 125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32,127,140,224, 0,
/* 0x0820 */ 65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46, 85, 72, 64, 46,
/* 0x0830 */ 57,140, 0, 1,124, 5, 75,120,161,103, 1,224, 85, 0,170,254,
/* 0x0840 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72, 47,153, 0, 0,
/* 0x0850 */ 32, 11, 8, 0,124, 0, 46,112,125, 72, 83,120,124, 11, 2, 20,
/* 0x0860 */ 176, 7, 1,224, 65,158, 5, 52, 47,151, 0, 6, 57, 32, 0, 9,
/* 0x0870 */ 64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80,125, 55, 75,120,
/* 0x0880 */ 127,245, 0,174,127,249,169,174, 59, 57, 0, 1, 72, 0, 4,228,
/* 0x0890 */ 85, 96,217,126,124,170, 40, 80,124, 0, 88, 80,125, 10, 64, 80,
/* 0x08a0 */ 176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80, 85, 96,217,126,
/* 0x08b0 */ 127,136,176, 64,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,152,
/* 0x08c0 */ 65,157, 0, 32,127,140,224, 0, 65,158, 4,208,137, 44, 0, 0,
/* 0x08d0 */ 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,
/* 0x08e0 */ 161,103, 1,176, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x08f0 */ 64,156, 0, 32, 32, 11, 8, 0,125, 72, 83,120,124, 0, 46,112,
/* 0x0900 */ 126, 41,139,120,124, 11, 2, 20,176, 7, 1,176, 72, 0, 0,140,
/* 0x0910 */ 125, 10, 64, 80, 85, 96,217,126,127,136,176, 64,124, 0, 88, 80,
/* 0x0920 */ 124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32,127,140,224, 0,
/* 0x0930 */ 65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46,
/* 0x0940 */ 57,140, 0, 1,124, 5, 75,120,161,103, 1,200, 85, 0,170,254,
/* 0x0950 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,
/* 0x0960 */ 125, 72, 83,120,124, 0, 46,112,126, 9,131,120,124, 11, 2, 20,
/* 0x0970 */ 176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126,125,233,123,120,
/* 0x0980 */ 124, 0, 88, 80,124,170, 40, 80,176, 7, 1,200,125, 10, 64, 80,
/* 0x0990 */ 126, 15,131,120,126, 48,139,120,127, 81,211,120,125, 58, 75,120,
/* 0x09a0 */ 47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8, 56, 0, 0, 11,
/* 0x09b0 */ 124, 23, 3,120, 56,216, 10,104,127,136,176, 64, 65,157, 0, 32,
/* 0x09c0 */ 127,140,224, 0, 65,158, 3,212,137, 44, 0, 0, 84,160, 64, 46,
/* 0x09d0 */ 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,161,102, 0, 0,
/* 0x09e0 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48,
/* 0x09f0 */ 84,105, 32, 54, 32, 11, 8, 0,125, 38, 74, 20,124, 0, 46,112,
/* 0x0a00 */ 124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4, 59, 96, 0, 0,
/* 0x0a10 */ 176, 6, 0, 0, 56, 96, 0, 3, 72, 0, 0,156,125, 10, 64, 80,
/* 0x0a20 */ 85, 96,217,126,127,136,176, 64,124, 0, 88, 80,124,170, 40, 80,
/* 0x0a30 */ 176, 6, 0, 0, 65,157, 0, 32,127,140,224, 0, 65,158, 3, 92,
/* 0x0a40 */ 137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0a50 */ 124, 5, 75,120,161,102, 0, 2, 85, 0,170,254,125, 64, 89,214,
/* 0x0a60 */ 127,133, 80, 64, 64,156, 0, 48, 84,105, 32, 54, 32, 11, 8, 0,
/* 0x0a70 */ 125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,
/* 0x0a80 */ 56,137, 1, 4, 59, 96, 0, 8,176, 6, 0, 2, 56, 96, 0, 3,
/* 0x0a90 */ 72, 0, 0, 36, 85, 96,217,126,124,170, 40, 80,124, 0, 88, 80,
/* 0x0aa0 */ 125, 10, 64, 80,176, 6, 0, 2, 56,134, 2, 4, 59, 96, 0, 16,
/* 0x0ab0 */ 56, 96, 0, 8, 63,224, 0,255,124,105, 3,166, 59,160, 0, 1,
/* 0x0ac0 */ 99,255,255,255,127,136,248, 64, 87,167, 8, 60,127, 12,224, 0,
/* 0x0ad0 */ 84,169, 64, 46,124,253, 59,120, 65,157, 0, 24, 65,154, 2,188,
/* 0x0ae0 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x0af0 */ 125,100, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,
/* 0x0b00 */ 85,105,217,126,124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,
/* 0x0b10 */ 127,133, 80, 64,125, 10, 64, 80, 64,156, 0, 16,125, 72, 83,120,
/* 0x0b20 */ 124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80, 59,167, 0, 1,
/* 0x0b30 */ 125,100, 59, 46, 66, 0,255,144, 47,151, 0, 3, 56, 0, 0, 1,
/* 0x0b40 */ 124, 0, 24, 48,127,160,232, 80,127,189,218, 20, 65,157, 1,232,
/* 0x0b50 */ 47,157, 0, 3, 58,247, 0, 7,127,169,235,120, 64,157, 0, 8,
/* 0x0b60 */ 57, 32, 0, 3, 85, 41, 56, 48, 63,224, 0,255,125, 56, 74, 20,
/* 0x0b70 */ 99,255,255,255, 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166,
/* 0x0b80 */ 56,128, 0, 1,127,136,248, 64, 84,135, 8, 60,127, 12,224, 0,
/* 0x0b90 */ 84,169, 64, 46,124,228, 59,120, 65,157, 0, 24, 65,154, 1,252,
/* 0x0ba0 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x0bb0 */ 125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,
/* 0x0bc0 */ 85,105,217,126,124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,
/* 0x0bd0 */ 127,133, 80, 64,125, 10, 64, 80, 64,156, 0, 16,125, 72, 83,120,
/* 0x0be0 */ 124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80, 56,135, 0, 1,
/* 0x0bf0 */ 125,102, 59, 46, 66, 0,255,144, 56,132,255,192, 47,132, 0, 3,
/* 0x0c00 */ 124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13,124,137, 14,112,
/* 0x0c10 */ 84,128, 7,254, 57,105,255,255, 96, 26, 0, 2,125,105, 3,166,
/* 0x0c20 */ 65,157, 0, 32,127, 90, 88, 48, 84,128, 8, 60, 87, 73, 8, 60,
/* 0x0c30 */ 125, 56, 74, 20,125, 32, 72, 80, 56,201, 5, 94, 72, 0, 0,100,
/* 0x0c40 */ 57, 41,255,251, 61, 96, 0,255,125, 41, 3,166, 97,107,255,255,
/* 0x0c50 */ 127,136, 88, 64,127, 12,224, 0, 84,169, 64, 46, 87, 90, 8, 60,
/* 0x0c60 */ 65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0c70 */ 57,140, 0, 1,125, 37, 3,120, 85, 8,248,126,127,133, 64, 64,
/* 0x0c80 */ 65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1, 66, 0,255,196,
/* 0x0c90 */ 56, 0, 0, 4, 87, 90, 32, 54,124, 9, 3,166, 56,216, 6, 68,
/* 0x0ca0 */ 60, 96, 0,255, 56,128, 0, 1, 96, 99,255,255, 59,224, 0, 1,
/* 0x0cb0 */ 127,136, 24, 64, 87,231, 8, 60,127, 12,224, 0, 84,169, 64, 46,
/* 0x0cc0 */ 124,255, 59,120, 65,157, 0, 24, 65,154, 0,208,136, 12, 0, 0,
/* 0x0cd0 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46,
/* 0x0ce0 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, 85,105,217,126,
/* 0x0cf0 */ 124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,127,133, 80, 64,
/* 0x0d00 */ 125, 10, 64, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46,
/* 0x0d10 */ 72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1,125,102, 59, 46,
/* 0x0d20 */ 127, 90, 35,120, 84,132, 8, 60, 66, 0,255,136, 55, 90, 0, 1,
/* 0x0d30 */ 65,130, 0, 72,127,154,200, 64, 59,189, 0, 2, 65,157, 0, 92,
/* 0x0d40 */ 124, 26,200, 80, 59,189,255,255,127,245, 0,174, 49,125,255,255,
/* 0x0d50 */ 125, 43,233, 16,127,249,169,174, 59, 57, 0, 1,124, 20,200, 16,
/* 0x0d60 */ 124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57, 64,130,255,212,
/* 0x0d70 */ 127,153,160, 64, 65,156,247,172, 60, 0, 0,255, 96, 0,255,255,
/* 0x0d80 */ 127,136, 0, 64, 65,157, 0, 32,127,140,224, 0, 56, 96, 0, 1,
/* 0x0d90 */ 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28,
/* 0x0da0 */ 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80, 56, 96, 0, 0,
/* 0x0db0 */ 144, 14, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24,
/* 0x0dc0 */ 56, 33, 0, 96,124, 8, 3,166,124, 8, 2,166,148, 33,255,160,
/* 0x0dd0 */ 189,193, 0, 24, 59, 32, 0, 0,125, 40, 3,166,124,206, 51,120,
/* 0x0de0 */ 124,147, 35,120,144, 1, 0,100,124,245, 59,120,125, 20, 67,120,
/* 0x0df0 */ 137, 67, 0, 2, 59, 3, 0, 4, 59,224, 0, 0,137, 99, 0, 1,
/* 0x0e00 */ 58,224, 0, 0, 59, 64, 0, 1,138, 67, 0, 0, 58, 32, 0, 1,
/* 0x0e10 */ 58, 0, 0, 1,147, 38, 0, 0, 57,224, 0, 1,147, 41, 0, 0,
/* 0x0e20 */ 57, 32, 3, 0,136, 3, 0, 1,124, 18, 2, 20,125, 41, 0, 48,
/* 0x0e30 */ 56, 9, 7, 54, 57, 32, 0, 1,127,153, 0, 64,125, 43, 88, 48,
/* 0x0e40 */ 125, 41, 80, 48, 57,107,255,255, 57, 41,255,255,145, 97, 0, 12,
/* 0x0e50 */ 145, 33, 0, 8, 57, 32, 0, 0, 64,156, 0, 28,124, 9, 3,166,
/* 0x0e60 */ 57, 96, 4, 0, 85, 32, 8, 60, 57, 41, 0, 1,125,120, 3, 46,
/* 0x0e70 */ 66, 0,255,244,127,147, 42, 20,126,108,155,120, 56,160, 0, 0,
/* 0x0e80 */ 57, 0,255,255, 57, 96, 0, 0,127,140,224, 0, 57,107, 0, 1,
/* 0x0e90 */ 47, 11, 0, 4, 84,169, 64, 46, 65,158, 8,156,136, 12, 0, 0,
/* 0x0ea0 */ 57,140, 0, 1,125, 37, 3,120, 64,153,255,224,127,153,160, 64,
/* 0x0eb0 */ 64,156, 8,100, 62,192, 0,255, 98,214,255,255,127,136,176, 64,
/* 0x0ec0 */ 128, 1, 0, 8,127, 35, 0, 56, 86,224, 32, 54,124, 0, 26, 20,
/* 0x0ed0 */ 84, 6, 8, 60, 65,157, 0, 32,127,140,224, 0, 65,158, 8, 88,
/* 0x0ee0 */ 137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0ef0 */ 124, 5, 75,120,124,230,194, 46, 85, 0,170,254,125, 64, 57,214,
/* 0x0f00 */ 127,133, 80, 64, 64,156, 1,172,128, 1, 0, 12, 47,151, 0, 6,
/* 0x0f10 */ 125, 72, 83,120, 56, 96, 0, 1,127, 41, 0, 56, 32, 18, 0, 8,
/* 0x0f20 */ 127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, 32, 7, 8, 0,
/* 0x0f30 */ 29, 41, 6, 0,124, 0, 46,112,124, 7, 2, 20,124, 6,195, 46,
/* 0x0f40 */ 125, 56, 74, 20, 56,201, 14,108, 64,157, 0,180,124, 26,200, 80,
/* 0x0f50 */ 63, 96, 0,255,127,245, 0,174, 99,123,255,255,127,136,216, 64,
/* 0x0f60 */ 87,255, 8, 60, 87,253, 5,238, 84,100, 8, 60, 87,160, 8, 60,
/* 0x0f70 */ 127, 12,224, 0,124, 6, 2, 20, 84,169, 64, 46,124,224, 34, 20,
/* 0x0f80 */ 65,157, 0, 24, 65,154, 7,176,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0f90 */ 57,140, 0, 1,125, 37, 3,120,161,103, 2, 0, 85, 0,170,254,
/* 0x0fa0 */ 47, 29, 0, 0,124,131, 35,120,125, 64, 89,214, 32, 11, 8, 0,
/* 0x0fb0 */ 85,105,217,126,124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,
/* 0x0fc0 */ 127,133, 80, 64,125, 10, 64, 80, 64,156, 0, 20,176, 7, 2, 0,
/* 0x0fd0 */ 125, 72, 83,120, 65,186, 0, 24, 72, 0, 0, 28,177,103, 2, 0,
/* 0x0fe0 */ 124,170, 40, 80, 56,100, 0, 1, 65,154, 0, 12, 47,131, 0,255,
/* 0x0ff0 */ 64,157,255,108, 47,131, 0,255, 65,157, 0,132, 63,224, 0,255,
/* 0x1000 */ 99,255,255,255,127,136,248, 64, 84,103, 8, 60,127, 12,224, 0,
/* 0x1010 */ 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, 65,154, 7, 24,
/* 0x1020 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x1030 */ 125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,
/* 0x1040 */ 85,105,217,126,124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,
/* 0x1050 */ 127,133, 80, 64,125, 10, 64, 80, 64,156, 0, 16,125, 72, 83,120,
/* 0x1060 */ 124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80,125,102, 59, 46,
/* 0x1070 */ 56,103, 0, 1, 47,131, 0,255, 64,157,255,140, 47,151, 0, 3,
/* 0x1080 */ 84,127, 6, 62,127,249,169,174, 59, 57, 0, 1, 65,157, 0, 12,
/* 0x1090 */ 58,224, 0, 0, 72, 0, 6,120, 47,151, 0, 9, 65,157, 0, 12,
/* 0x10a0 */ 58,247,255,253, 72, 0, 6,104, 58,247,255,250, 72, 0, 6, 96,
/* 0x10b0 */ 125, 10, 64, 80, 84,224,217,126,127,136,176, 64,124, 0, 56, 80,
/* 0x10c0 */ 86,233, 8, 60,124, 6,195, 46,124,170, 40, 80,124,248, 74, 20,
/* 0x10d0 */ 65,157, 0, 32,127,140,224, 0, 65,158, 6, 92,137, 44, 0, 0,
/* 0x10e0 */ 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,
/* 0x10f0 */ 161,103, 1,128, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x1100 */ 64,156, 0, 64, 47,151, 0, 6, 32, 11, 8, 0,124, 0, 46,112,
/* 0x1110 */ 126, 15,131,120,124, 11, 2, 20,126, 48,139,120,176, 7, 1,128,
/* 0x1120 */ 125, 72, 83,120, 56, 0, 0, 0,127, 81,211,120, 64,157, 0, 8,
/* 0x1130 */ 56, 0, 0, 3,124, 23, 3,120, 56,216, 6,100, 72, 0, 2, 24,
/* 0x1140 */ 125, 10, 64, 80, 85, 96,217,126,127,136,176, 64,124, 0, 88, 80,
/* 0x1150 */ 124,170, 40, 80,176, 7, 1,128, 65,157, 0, 32,127,140,224, 0,
/* 0x1160 */ 65,158, 5,212,137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46,
/* 0x1170 */ 57,140, 0, 1,124, 5, 75,120,161,103, 1,152, 85, 0,170,254,
/* 0x1180 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0,188,127,138,176, 64,
/* 0x1190 */ 32, 11, 8, 0,124, 0, 46,112, 86,233, 40, 52,124, 11, 2, 20,
/* 0x11a0 */ 125, 56, 74, 20, 84,107, 8, 60,176, 7, 1,152,125, 72, 83,120,
/* 0x11b0 */ 124,233, 90, 20, 65,157, 0, 32,127,140,224, 0, 65,158, 5,120,
/* 0x11c0 */ 137, 44, 0, 0, 84,160, 64, 46, 85, 72, 64, 46, 57,140, 0, 1,
/* 0x11d0 */ 124, 5, 75,120,161,103, 1,224, 85, 0,170,254,125, 64, 89,214,
/* 0x11e0 */ 127,133, 80, 64, 64,156, 0, 72, 47,153, 0, 0, 32, 11, 8, 0,
/* 0x11f0 */ 124, 0, 46,112,125, 72, 83,120,124, 11, 2, 20,176, 7, 1,224,
/* 0x1200 */ 65,158, 5, 52, 47,151, 0, 6, 57, 32, 0, 9, 64,157, 0, 8,
/* 0x1210 */ 57, 32, 0, 11,124, 26,200, 80,125, 55, 75,120,127,245, 0,174,
/* 0x1220 */ 127,249,169,174, 59, 57, 0, 1, 72, 0, 4,228, 85, 96,217,126,
/* 0x1230 */ 124,170, 40, 80,124, 0, 88, 80,125, 10, 64, 80,176, 7, 1,224,
/* 0x1240 */ 72, 0, 0,252,125, 10, 64, 80, 85, 96,217,126,127,136,176, 64,
/* 0x1250 */ 124, 0, 88, 80,124,170, 40, 80,176, 7, 1,152, 65,157, 0, 32,
/* 0x1260 */ 127,140,224, 0, 65,158, 4,208,137, 44, 0, 0, 84,160, 64, 46,
/* 0x1270 */ 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,161,103, 1,176,
/* 0x1280 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32,
/* 0x1290 */ 32, 11, 8, 0,125, 72, 83,120,124, 0, 46,112,126, 41,139,120,
/* 0x12a0 */ 124, 11, 2, 20,176, 7, 1,176, 72, 0, 0,140,125, 10, 64, 80,
/* 0x12b0 */ 85, 96,217,126,127,136,176, 64,124, 0, 88, 80,124,170, 40, 80,
/* 0x12c0 */ 176, 7, 1,176, 65,157, 0, 32,127,140,224, 0, 65,158, 4,104,
/* 0x12d0 */ 137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x12e0 */ 124, 5, 75,120,161,103, 1,200, 85, 0,170,254,125, 64, 89,214,
/* 0x12f0 */ 127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,125, 72, 83,120,
/* 0x1300 */ 124, 0, 46,112,126, 9,131,120,124, 11, 2, 20,176, 7, 1,200,
/* 0x1310 */ 72, 0, 0, 32, 85, 96,217,126,125,233,123,120,124, 0, 88, 80,
/* 0x1320 */ 124,170, 40, 80,176, 7, 1,200,125, 10, 64, 80,126, 15,131,120,
/* 0x1330 */ 126, 48,139,120,127, 81,211,120,125, 58, 75,120, 47,151, 0, 6,
/* 0x1340 */ 56, 0, 0, 8, 64,157, 0, 8, 56, 0, 0, 11,124, 23, 3,120,
/* 0x1350 */ 56,216, 10,104,127,136,176, 64, 65,157, 0, 32,127,140,224, 0,
/* 0x1360 */ 65,158, 3,212,137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46,
/* 0x1370 */ 57,140, 0, 1,124, 5, 75,120,161,102, 0, 0, 85, 0,170,254,
/* 0x1380 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 84,105, 32, 54,
/* 0x1390 */ 32, 11, 8, 0,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,
/* 0x13a0 */ 125, 72, 83,120, 56,137, 0, 4, 59, 96, 0, 0,176, 6, 0, 0,
/* 0x13b0 */ 56, 96, 0, 3, 72, 0, 0,156,125, 10, 64, 80, 85, 96,217,126,
/* 0x13c0 */ 127,136,176, 64,124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 0,
/* 0x13d0 */ 65,157, 0, 32,127,140,224, 0, 65,158, 3, 92,137, 44, 0, 0,
/* 0x13e0 */ 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,
/* 0x13f0 */ 161,102, 0, 2, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x1400 */ 64,156, 0, 48, 84,105, 32, 54, 32, 11, 8, 0,125, 38, 74, 20,
/* 0x1410 */ 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 1, 4,
/* 0x1420 */ 59, 96, 0, 8,176, 6, 0, 2, 56, 96, 0, 3, 72, 0, 0, 36,
/* 0x1430 */ 85, 96,217,126,124,170, 40, 80,124, 0, 88, 80,125, 10, 64, 80,
/* 0x1440 */ 176, 6, 0, 2, 56,134, 2, 4, 59, 96, 0, 16, 56, 96, 0, 8,
/* 0x1450 */ 63,224, 0,255,124,105, 3,166, 59,160, 0, 1, 99,255,255,255,
/* 0x1460 */ 127,136,248, 64, 87,167, 8, 60,127, 12,224, 0, 84,169, 64, 46,
/* 0x1470 */ 124,253, 59,120, 65,157, 0, 24, 65,154, 2,188,136, 12, 0, 0,
/* 0x1480 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,100, 58, 46,
/* 0x1490 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, 85,105,217,126,
/* 0x14a0 */ 124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,127,133, 80, 64,
/* 0x14b0 */ 125, 10, 64, 80, 64,156, 0, 16,125, 72, 83,120,124, 4, 59, 46,
/* 0x14c0 */ 72, 0, 0, 16,124,170, 40, 80, 59,167, 0, 1,125,100, 59, 46,
/* 0x14d0 */ 66, 0,255,144, 47,151, 0, 3, 56, 0, 0, 1,124, 0, 24, 48,
/* 0x14e0 */ 127,160,232, 80,127,189,218, 20, 65,157, 1,232, 47,157, 0, 3,
/* 0x14f0 */ 58,247, 0, 7,127,169,235,120, 64,157, 0, 8, 57, 32, 0, 3,
/* 0x1500 */ 85, 41, 56, 48, 63,224, 0,255,125, 56, 74, 20, 99,255,255,255,
/* 0x1510 */ 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, 56,128, 0, 1,
/* 0x1520 */ 127,136,248, 64, 84,135, 8, 60,127, 12,224, 0, 84,169, 64, 46,
/* 0x1530 */ 124,228, 59,120, 65,157, 0, 24, 65,154, 1,252,136, 12, 0, 0,
/* 0x1540 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46,
/* 0x1550 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, 85,105,217,126,
/* 0x1560 */ 124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,127,133, 80, 64,
/* 0x1570 */ 125, 10, 64, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46,
/* 0x1580 */ 72, 0, 0, 16,124,170, 40, 80, 56,135, 0, 1,125,102, 59, 46,
/* 0x1590 */ 66, 0,255,144, 56,132,255,192, 47,132, 0, 3,124,154, 35,120,
/* 0x15a0 */ 64,157, 1, 40, 47,132, 0, 13,124,137, 14,112, 84,128, 7,254,
/* 0x15b0 */ 57,105,255,255, 96, 26, 0, 2,125,105, 3,166, 65,157, 0, 32,
/* 0x15c0 */ 127, 90, 88, 48, 84,128, 8, 60, 87, 73, 8, 60,125, 56, 74, 20,
/* 0x15d0 */ 125, 32, 72, 80, 56,201, 5, 94, 72, 0, 0,100, 57, 41,255,251,
/* 0x15e0 */ 61, 96, 0,255,125, 41, 3,166, 97,107,255,255,127,136, 88, 64,
/* 0x15f0 */ 127, 12,224, 0, 84,169, 64, 46, 87, 90, 8, 60, 65,157, 0, 24,
/* 0x1600 */ 65,154, 1, 52,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x1610 */ 125, 37, 3,120, 85, 8,248,126,127,133, 64, 64, 65,156, 0, 12,
/* 0x1620 */ 124,168, 40, 80, 99, 90, 0, 1, 66, 0,255,196, 56, 0, 0, 4,
/* 0x1630 */ 87, 90, 32, 54,124, 9, 3,166, 56,216, 6, 68, 60, 96, 0,255,
/* 0x1640 */ 56,128, 0, 1, 96, 99,255,255, 59,224, 0, 1,127,136, 24, 64,
/* 0x1650 */ 87,231, 8, 60,127, 12,224, 0, 84,169, 64, 46,124,255, 59,120,
/* 0x1660 */ 65,157, 0, 24, 65,154, 0,208,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x1670 */ 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,
/* 0x1680 */ 125, 64, 89,214, 32, 11, 8, 0, 85,105,217,126,124, 0, 46,112,
/* 0x1690 */ 124, 11, 2, 20,125,105, 88, 80,127,133, 80, 64,125, 10, 64, 80,
/* 0x16a0 */ 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 20,
/* 0x16b0 */ 124,170, 40, 80, 59,231, 0, 1,125,102, 59, 46,127, 90, 35,120,
/* 0x16c0 */ 84,132, 8, 60, 66, 0,255,136, 55, 90, 0, 1, 65,130, 0, 72,
/* 0x16d0 */ 127,154,200, 64, 59,189, 0, 2, 65,157, 0, 92,124, 26,200, 80,
/* 0x16e0 */ 59,189,255,255,127,245, 0,174, 49,125,255,255,125, 43,233, 16,
/* 0x16f0 */ 127,249,169,174, 59, 57, 0, 1,124, 20,200, 16,124, 0, 1, 16,
/* 0x1700 */ 124, 0, 0,208,125, 43, 0, 57, 64,130,255,212,127,153,160, 64,
/* 0x1710 */ 65,156,247,172, 60, 0, 0,255, 96, 0,255,255,127,136, 0, 64,
/* 0x1720 */ 65,157, 0, 32,127,140,224, 0, 56, 96, 0, 1, 65,158, 0, 40,
/* 0x1730 */ 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, 57,140, 0, 1,
/* 0x1740 */ 125, 40, 2,166,124, 19, 96, 80, 56, 96, 0, 0,144, 14, 0, 0,
/* 0x1750 */ 147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, 56, 33, 0, 96,
/* 0x1760 */ 124, 8, 3,166,128,161, 0, 12,128,225, 0, 8,128,165, 0, 0,
/* 0x1770 */ 128, 33, 0, 0,124,165, 58, 20,128, 1, 0, 8, 56,165,255,255,
/* 0x1780 */ 128, 33, 0, 0,124, 8, 3,166,128,230, 0, 0,125,168, 3,166,
/* 0x1790 */ 124,100, 24, 80,124,135, 40, 80, 56, 99, 0, 1, 56,132, 0, 1,
/* 0x17a0 */ 144,134, 0, 0, 96,231, 0, 31,124, 0, 56,108,124, 7, 40, 64,
/* 0x17b0 */ 124, 0, 63,172, 56,231, 0, 32, 65,128,255,240,124, 0, 4,172,
/* 0x17c0 */ 76, 0, 1, 44, 78,128, 0, 32, 72, 0, 0, 1,109,109, 97,112,
/* 0x17d0 */ 32,102, 97,105,108,101,100, 46, 10, 0, 56,160, 0, 14,124,136,
/* 0x17e0 */ 2,166, 56, 96, 0, 2, 56, 0, 0, 4, 68, 0, 0, 2, 56, 96,
/* 0x17f0 */ 0,127, 56, 0, 0, 1, 68, 0, 0, 2,126,200, 2,166,128, 31,
/* 0x1800 */ 255,248, 59, 63,255,248, 56,224,255,255,130,182, 0, 4, 56,192,
/* 0x1810 */ 0, 34,127, 32,200, 80, 56, 96, 0, 0,126,164,171,120,124,156,
/* 0x1820 */ 35,120, 72, 0, 0,101,124,125, 27,120,130,118, 0, 0,127,233,
/* 0x1830 */ 3,166,136,246, 0, 12,146,161, 0,140, 56,193, 0,140,127,165,
/* 0x1840 */ 235,120,128,150, 0, 8, 56,118, 0, 16, 78,128, 4, 33,128, 29,
/* 0x1850 */ 0, 0, 87,195,186,126, 80, 96, 4, 62,144, 29, 0, 0, 56,160,
/* 0x0060 */ 57, 64,255,255, 72, 0, 1, 16, 57, 32, 0, 1,125, 41, 28, 44,
/* 0x0070 */ 56, 99, 0, 4, 97, 43, 0, 1,124, 11, 0, 64,125, 41, 72, 20,
/* 0x0080 */ 97, 41, 0, 1, 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,
/* 0x0090 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255,209, 65,129,255,236,
/* 0x00a0 */ 56,224, 0, 1, 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21,
/* 0x00b0 */ 65,162,255,185,124,231, 57, 20,125, 41, 72, 21, 65,162,255,173,
/* 0x00c0 */ 124,231, 57, 20,124, 9, 0, 64,125, 41, 74, 20, 65,162,255,157,
/* 0x00d0 */ 65,160,255,216, 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46,
/* 0x00e0 */ 65,128, 0, 32,141, 99, 0, 1,124,234, 88,249,125, 74, 14,112,
/* 0x00f0 */ 65,130, 0, 0,113,107, 0, 1, 65,162, 0, 80, 72, 0, 0, 20,
/* 0x0100 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 97, 65,161, 0, 60,
/* 0x0110 */ 57, 0, 0, 1,124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 77,
/* 0x0120 */ 65,161, 0, 40,125, 41, 72, 21, 65,162,255, 65,125, 8, 65, 20,
/* 0x0130 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 49, 65,160,255,232,
/* 0x0140 */ 57, 8, 0, 2, 72, 0, 0, 16,125, 41, 72, 21, 65,162,255, 29,
/* 0x0150 */ 125, 8, 65, 20, 32,234,250,255, 57, 8, 0, 2,125, 8, 1,148,
/* 0x0160 */ 124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1,
/* 0x0170 */ 66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44,
/* 0x0180 */ 75,255,255, 16,124, 0, 41,236,125,168, 2,166, 40, 7, 0, 5,
/* 0x0190 */ 64,130, 1, 36,144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0,
/* 0x01a0 */ 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, 57, 64,255,255,
/* 0x01b0 */ 72, 0, 0,244, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4,
/* 0x01c0 */ 97, 43, 0, 1,124, 11, 0, 64,125, 41, 72, 20, 97, 41, 0, 1,
/* 0x01d0 */ 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64,
/* 0x01e0 */ 125, 41, 74, 20, 65,162,255,209, 65,129,255,236, 56,224, 0, 1,
/* 0x01f0 */ 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,162,255,185,
/* 0x0200 */ 124,231, 57, 21,125, 41, 72, 21, 65,162,255,173,124,231, 57, 21,
/* 0x0210 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255,157, 65,160,255,216,
/* 0x0220 */ 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,128, 0, 24,
/* 0x0230 */ 141, 99, 0, 1,124,234, 88,249,125, 74, 14,112, 65,130, 0, 0,
/* 0x0240 */ 72, 0, 0, 12,125, 41, 72, 21, 65,162,255,109,125, 8, 65, 21,
/* 0x0250 */ 125, 41, 72, 21, 65,162,255, 97,125, 8, 65, 21, 64,130, 0, 40,
/* 0x0260 */ 57, 0, 0, 1,125, 41, 72, 21, 65,162,255, 77,125, 8, 65, 21,
/* 0x0270 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 61, 65,160,255,232,
/* 0x0280 */ 57, 8, 0, 2, 32,234,250,255, 57, 8, 0, 1,125, 8, 1,148,
/* 0x0290 */ 124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1,
/* 0x02a0 */ 66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44,
/* 0x02b0 */ 75,255,255, 44,124, 0, 41,236,125,168, 2,166, 40, 7, 0, 2,
/* 0x02c0 */ 64,130, 0,232,144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0,
/* 0x02d0 */ 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, 57, 64,255,255,
/* 0x02e0 */ 72, 0, 0,184,124, 9, 0, 64,125, 41, 72, 20, 76,162, 0, 32,
/* 0x02f0 */ 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4, 97, 43, 0, 1,
/* 0x0300 */ 124, 11, 0, 64,125, 41, 73, 20, 78,128, 0, 32,141, 3, 0, 1,
/* 0x0310 */ 157, 5, 0, 1, 75,255,255,209, 65,129,255,244, 56,224, 0, 1,
/* 0x0320 */ 75,255,255,197,124,231, 57, 21, 75,255,255,189, 65,160,255,244,
/* 0x0330 */ 52,231,255,253, 57, 0, 0, 0, 65,128, 0, 20,141, 99, 0, 1,
/* 0x0340 */ 84,231, 64, 46,124,234, 88,249, 65,130, 0, 0, 75,255,255,153,
/* 0x0350 */ 125, 8, 65, 21, 75,255,255,145,125, 8, 65, 21, 56,224, 0, 1,
/* 0x0360 */ 64,130, 0, 28, 56,224, 0, 3, 57, 0, 0, 1, 75,255,255,121,
/* 0x0370 */ 125, 8, 65, 21, 75,255,255,113, 65,160,255,244, 33,106,242,255,
/* 0x0380 */ 125, 8, 57, 20,124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1,
/* 0x0390 */ 157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,
/* 0x03a0 */ 124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14, 64,130, 0, 36,
/* 0x03b0 */ 148, 33,255,232,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0,
/* 0x03c0 */ 124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 8,
/* 0x03d0 */ 136, 3, 0, 0, 84, 11,232,254, 84, 12, 7,126, 56, 96,250, 0,
/* 0x03e0 */ 124, 99, 88, 48, 56, 99,241,124,124, 38, 11,120,124, 33, 26, 20,
/* 0x03f0 */ 84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0,
/* 0x0400 */ 148, 3,255,252,124, 1, 24, 64, 65,128,255,248,144,193, 0, 0,
/* 0x0410 */ 136, 4,255,255,144,225, 0, 8, 56,193, 0, 16,145, 33, 0, 12,
/* 0x0420 */ 56, 97, 0, 20, 84, 11,225, 62, 84, 0, 7, 62,153,131, 0, 2,
/* 0x0430 */ 153, 99, 0, 1,152, 3, 0, 0,124, 8, 2,166,148, 33,255,160,
/* 0x0440 */ 189,193, 0, 24, 59, 32, 0, 0,125, 40, 3,166,124,206, 51,120,
/* 0x0450 */ 124,147, 35,120,144, 1, 0,100,124,245, 59,120,125, 20, 67,120,
/* 0x0460 */ 137, 67, 0, 2, 59, 3, 0, 4, 59,224, 0, 0,137, 99, 0, 1,
/* 0x0470 */ 58,224, 0, 0, 59, 64, 0, 1,138, 67, 0, 0, 58, 32, 0, 1,
/* 0x0480 */ 58, 0, 0, 1,147, 38, 0, 0, 57,224, 0, 1,147, 41, 0, 0,
/* 0x0490 */ 57, 32, 3, 0,136, 3, 0, 1,124, 18, 2, 20,125, 41, 0, 48,
/* 0x04a0 */ 56, 9, 7, 54, 57, 32, 0, 1,127,153, 0, 64,125, 43, 88, 48,
/* 0x04b0 */ 125, 41, 80, 48, 57,107,255,255, 57, 41,255,255,145, 97, 0, 12,
/* 0x04c0 */ 145, 33, 0, 8, 57, 32, 0, 0, 64,156, 0, 28,124, 9, 3,166,
/* 0x04d0 */ 57, 96, 4, 0, 85, 32, 8, 60, 57, 41, 0, 1,125,120, 3, 46,
/* 0x04e0 */ 66, 0,255,244,127,147, 42, 20,126,108,155,120, 56,160, 0, 0,
/* 0x04f0 */ 57, 0,255,255, 57, 96, 0, 0,127,140,224, 0, 57,107, 0, 1,
/* 0x0500 */ 47, 11, 0, 4, 84,169, 64, 46, 65,158, 8,156,136, 12, 0, 0,
/* 0x0510 */ 57,140, 0, 1,125, 37, 3,120, 64,153,255,224,127,153,160, 64,
/* 0x0520 */ 64,156, 8,100, 62,192, 0,255, 98,214,255,255,127,136,176, 64,
/* 0x0530 */ 128, 1, 0, 8,127, 35, 0, 56, 86,224, 32, 54,124, 0, 26, 20,
/* 0x0540 */ 84, 6, 8, 60, 65,157, 0, 32,127,140,224, 0, 65,158, 8, 88,
/* 0x0550 */ 137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0560 */ 124, 5, 75,120,124,230,194, 46, 85, 0,170,254,125, 64, 57,214,
/* 0x0570 */ 127,133, 80, 64, 64,156, 1,172,128, 1, 0, 12, 47,151, 0, 6,
/* 0x0580 */ 125, 72, 83,120, 56, 96, 0, 1,127, 41, 0, 56, 32, 18, 0, 8,
/* 0x0590 */ 127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, 32, 7, 8, 0,
/* 0x05a0 */ 29, 41, 6, 0,124, 0, 46,112,124, 7, 2, 20,124, 6,195, 46,
/* 0x05b0 */ 125, 56, 74, 20, 56,201, 14,108, 64,157, 0,180,124, 26,200, 80,
/* 0x05c0 */ 63, 96, 0,255,127,245, 0,174, 99,123,255,255,127,136,216, 64,
/* 0x05d0 */ 87,255, 8, 60, 87,253, 5,238, 84,100, 8, 60, 87,160, 8, 60,
/* 0x05e0 */ 127, 12,224, 0,124, 6, 2, 20, 84,169, 64, 46,124,224, 34, 20,
/* 0x05f0 */ 65,157, 0, 24, 65,154, 7,176,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0600 */ 57,140, 0, 1,125, 37, 3,120,161,103, 2, 0, 85, 0,170,254,
/* 0x0610 */ 47, 29, 0, 0,124,131, 35,120,125, 64, 89,214, 32, 11, 8, 0,
/* 0x0620 */ 85,105,217,126,124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,
/* 0x0630 */ 127,133, 80, 64,125, 10, 64, 80, 64,156, 0, 20,176, 7, 2, 0,
/* 0x0640 */ 125, 72, 83,120, 65,186, 0, 24, 72, 0, 0, 28,177,103, 2, 0,
/* 0x0650 */ 124,170, 40, 80, 56,100, 0, 1, 65,154, 0, 12, 47,131, 0,255,
/* 0x0660 */ 64,157,255,108, 47,131, 0,255, 65,157, 0,132, 63,224, 0,255,
/* 0x0670 */ 99,255,255,255,127,136,248, 64, 84,103, 8, 60,127, 12,224, 0,
/* 0x0680 */ 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, 65,154, 7, 24,
/* 0x0690 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x06a0 */ 125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,
/* 0x06b0 */ 85,105,217,126,124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,
/* 0x06c0 */ 127,133, 80, 64,125, 10, 64, 80, 64,156, 0, 16,125, 72, 83,120,
/* 0x06d0 */ 124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80,125,102, 59, 46,
/* 0x06e0 */ 56,103, 0, 1, 47,131, 0,255, 64,157,255,140, 47,151, 0, 3,
/* 0x06f0 */ 84,127, 6, 62,127,249,169,174, 59, 57, 0, 1, 65,157, 0, 12,
/* 0x0700 */ 58,224, 0, 0, 72, 0, 6,120, 47,151, 0, 9, 65,157, 0, 12,
/* 0x0710 */ 58,247,255,253, 72, 0, 6,104, 58,247,255,250, 72, 0, 6, 96,
/* 0x0720 */ 125, 10, 64, 80, 84,224,217,126,127,136,176, 64,124, 0, 56, 80,
/* 0x0730 */ 86,233, 8, 60,124, 6,195, 46,124,170, 40, 80,124,248, 74, 20,
/* 0x0740 */ 65,157, 0, 32,127,140,224, 0, 65,158, 6, 92,137, 44, 0, 0,
/* 0x0750 */ 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,
/* 0x0760 */ 161,103, 1,128, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x0770 */ 64,156, 0, 64, 47,151, 0, 6, 32, 11, 8, 0,124, 0, 46,112,
/* 0x0780 */ 126, 15,131,120,124, 11, 2, 20,126, 48,139,120,176, 7, 1,128,
/* 0x0790 */ 125, 72, 83,120, 56, 0, 0, 0,127, 81,211,120, 64,157, 0, 8,
/* 0x07a0 */ 56, 0, 0, 3,124, 23, 3,120, 56,216, 6,100, 72, 0, 2, 24,
/* 0x07b0 */ 125, 10, 64, 80, 85, 96,217,126,127,136,176, 64,124, 0, 88, 80,
/* 0x07c0 */ 124,170, 40, 80,176, 7, 1,128, 65,157, 0, 32,127,140,224, 0,
/* 0x07d0 */ 65,158, 5,212,137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46,
/* 0x07e0 */ 57,140, 0, 1,124, 5, 75,120,161,103, 1,152, 85, 0,170,254,
/* 0x07f0 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0,188,127,138,176, 64,
/* 0x0800 */ 32, 11, 8, 0,124, 0, 46,112, 86,233, 40, 52,124, 11, 2, 20,
/* 0x0810 */ 125, 56, 74, 20, 84,107, 8, 60,176, 7, 1,152,125, 72, 83,120,
/* 0x0820 */ 124,233, 90, 20, 65,157, 0, 32,127,140,224, 0, 65,158, 5,120,
/* 0x0830 */ 137, 44, 0, 0, 84,160, 64, 46, 85, 72, 64, 46, 57,140, 0, 1,
/* 0x0840 */ 124, 5, 75,120,161,103, 1,224, 85, 0,170,254,125, 64, 89,214,
/* 0x0850 */ 127,133, 80, 64, 64,156, 0, 72, 47,153, 0, 0, 32, 11, 8, 0,
/* 0x0860 */ 124, 0, 46,112,125, 72, 83,120,124, 11, 2, 20,176, 7, 1,224,
/* 0x0870 */ 65,158, 5, 52, 47,151, 0, 6, 57, 32, 0, 9, 64,157, 0, 8,
/* 0x0880 */ 57, 32, 0, 11,124, 26,200, 80,125, 55, 75,120,127,245, 0,174,
/* 0x0890 */ 127,249,169,174, 59, 57, 0, 1, 72, 0, 4,228, 85, 96,217,126,
/* 0x08a0 */ 124,170, 40, 80,124, 0, 88, 80,125, 10, 64, 80,176, 7, 1,224,
/* 0x08b0 */ 72, 0, 0,252,125, 10, 64, 80, 85, 96,217,126,127,136,176, 64,
/* 0x08c0 */ 124, 0, 88, 80,124,170, 40, 80,176, 7, 1,152, 65,157, 0, 32,
/* 0x08d0 */ 127,140,224, 0, 65,158, 4,208,137, 44, 0, 0, 84,160, 64, 46,
/* 0x08e0 */ 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,161,103, 1,176,
/* 0x08f0 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32,
/* 0x0900 */ 32, 11, 8, 0,125, 72, 83,120,124, 0, 46,112,126, 41,139,120,
/* 0x0910 */ 124, 11, 2, 20,176, 7, 1,176, 72, 0, 0,140,125, 10, 64, 80,
/* 0x0920 */ 85, 96,217,126,127,136,176, 64,124, 0, 88, 80,124,170, 40, 80,
/* 0x0930 */ 176, 7, 1,176, 65,157, 0, 32,127,140,224, 0, 65,158, 4,104,
/* 0x0940 */ 137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0950 */ 124, 5, 75,120,161,103, 1,200, 85, 0,170,254,125, 64, 89,214,
/* 0x0960 */ 127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,125, 72, 83,120,
/* 0x0970 */ 124, 0, 46,112,126, 9,131,120,124, 11, 2, 20,176, 7, 1,200,
/* 0x0980 */ 72, 0, 0, 32, 85, 96,217,126,125,233,123,120,124, 0, 88, 80,
/* 0x0990 */ 124,170, 40, 80,176, 7, 1,200,125, 10, 64, 80,126, 15,131,120,
/* 0x09a0 */ 126, 48,139,120,127, 81,211,120,125, 58, 75,120, 47,151, 0, 6,
/* 0x09b0 */ 56, 0, 0, 8, 64,157, 0, 8, 56, 0, 0, 11,124, 23, 3,120,
/* 0x09c0 */ 56,216, 10,104,127,136,176, 64, 65,157, 0, 32,127,140,224, 0,
/* 0x09d0 */ 65,158, 3,212,137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46,
/* 0x09e0 */ 57,140, 0, 1,124, 5, 75,120,161,102, 0, 0, 85, 0,170,254,
/* 0x09f0 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 84,105, 32, 54,
/* 0x0a00 */ 32, 11, 8, 0,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,
/* 0x0a10 */ 125, 72, 83,120, 56,137, 0, 4, 59, 96, 0, 0,176, 6, 0, 0,
/* 0x0a20 */ 56, 96, 0, 3, 72, 0, 0,156,125, 10, 64, 80, 85, 96,217,126,
/* 0x0a30 */ 127,136,176, 64,124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 0,
/* 0x0a40 */ 65,157, 0, 32,127,140,224, 0, 65,158, 3, 92,137, 44, 0, 0,
/* 0x0a50 */ 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,
/* 0x0a60 */ 161,102, 0, 2, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x0a70 */ 64,156, 0, 48, 84,105, 32, 54, 32, 11, 8, 0,125, 38, 74, 20,
/* 0x0a80 */ 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 1, 4,
/* 0x0a90 */ 59, 96, 0, 8,176, 6, 0, 2, 56, 96, 0, 3, 72, 0, 0, 36,
/* 0x0aa0 */ 85, 96,217,126,124,170, 40, 80,124, 0, 88, 80,125, 10, 64, 80,
/* 0x0ab0 */ 176, 6, 0, 2, 56,134, 2, 4, 59, 96, 0, 16, 56, 96, 0, 8,
/* 0x0ac0 */ 63,224, 0,255,124,105, 3,166, 59,160, 0, 1, 99,255,255,255,
/* 0x0ad0 */ 127,136,248, 64, 87,167, 8, 60,127, 12,224, 0, 84,169, 64, 46,
/* 0x0ae0 */ 124,253, 59,120, 65,157, 0, 24, 65,154, 2,188,136, 12, 0, 0,
/* 0x0af0 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,100, 58, 46,
/* 0x0b00 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, 85,105,217,126,
/* 0x0b10 */ 124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,127,133, 80, 64,
/* 0x0b20 */ 125, 10, 64, 80, 64,156, 0, 16,125, 72, 83,120,124, 4, 59, 46,
/* 0x0b30 */ 72, 0, 0, 16,124,170, 40, 80, 59,167, 0, 1,125,100, 59, 46,
/* 0x0b40 */ 66, 0,255,144, 47,151, 0, 3, 56, 0, 0, 1,124, 0, 24, 48,
/* 0x0b50 */ 127,160,232, 80,127,189,218, 20, 65,157, 1,232, 47,157, 0, 3,
/* 0x0b60 */ 58,247, 0, 7,127,169,235,120, 64,157, 0, 8, 57, 32, 0, 3,
/* 0x0b70 */ 85, 41, 56, 48, 63,224, 0,255,125, 56, 74, 20, 99,255,255,255,
/* 0x0b80 */ 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, 56,128, 0, 1,
/* 0x0b90 */ 127,136,248, 64, 84,135, 8, 60,127, 12,224, 0, 84,169, 64, 46,
/* 0x0ba0 */ 124,228, 59,120, 65,157, 0, 24, 65,154, 1,252,136, 12, 0, 0,
/* 0x0bb0 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46,
/* 0x0bc0 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, 85,105,217,126,
/* 0x0bd0 */ 124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,127,133, 80, 64,
/* 0x0be0 */ 125, 10, 64, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46,
/* 0x0bf0 */ 72, 0, 0, 16,124,170, 40, 80, 56,135, 0, 1,125,102, 59, 46,
/* 0x0c00 */ 66, 0,255,144, 56,132,255,192, 47,132, 0, 3,124,154, 35,120,
/* 0x0c10 */ 64,157, 1, 40, 47,132, 0, 13,124,137, 14,112, 84,128, 7,254,
/* 0x0c20 */ 57,105,255,255, 96, 26, 0, 2,125,105, 3,166, 65,157, 0, 32,
/* 0x0c30 */ 127, 90, 88, 48, 84,128, 8, 60, 87, 73, 8, 60,125, 56, 74, 20,
/* 0x0c40 */ 125, 32, 72, 80, 56,201, 5, 94, 72, 0, 0,100, 57, 41,255,251,
/* 0x0c50 */ 61, 96, 0,255,125, 41, 3,166, 97,107,255,255,127,136, 88, 64,
/* 0x0c60 */ 127, 12,224, 0, 84,169, 64, 46, 87, 90, 8, 60, 65,157, 0, 24,
/* 0x0c70 */ 65,154, 1, 52,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0c80 */ 125, 37, 3,120, 85, 8,248,126,127,133, 64, 64, 65,156, 0, 12,
/* 0x0c90 */ 124,168, 40, 80, 99, 90, 0, 1, 66, 0,255,196, 56, 0, 0, 4,
/* 0x0ca0 */ 87, 90, 32, 54,124, 9, 3,166, 56,216, 6, 68, 60, 96, 0,255,
/* 0x0cb0 */ 56,128, 0, 1, 96, 99,255,255, 59,224, 0, 1,127,136, 24, 64,
/* 0x0cc0 */ 87,231, 8, 60,127, 12,224, 0, 84,169, 64, 46,124,255, 59,120,
/* 0x0cd0 */ 65,157, 0, 24, 65,154, 0,208,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0ce0 */ 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,
/* 0x0cf0 */ 125, 64, 89,214, 32, 11, 8, 0, 85,105,217,126,124, 0, 46,112,
/* 0x0d00 */ 124, 11, 2, 20,125,105, 88, 80,127,133, 80, 64,125, 10, 64, 80,
/* 0x0d10 */ 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 20,
/* 0x0d20 */ 124,170, 40, 80, 59,231, 0, 1,125,102, 59, 46,127, 90, 35,120,
/* 0x0d30 */ 84,132, 8, 60, 66, 0,255,136, 55, 90, 0, 1, 65,130, 0, 72,
/* 0x0d40 */ 127,154,200, 64, 59,189, 0, 2, 65,157, 0, 92,124, 26,200, 80,
/* 0x0d50 */ 59,189,255,255,127,245, 0,174, 49,125,255,255,125, 43,233, 16,
/* 0x0d60 */ 127,249,169,174, 59, 57, 0, 1,124, 20,200, 16,124, 0, 1, 16,
/* 0x0d70 */ 124, 0, 0,208,125, 43, 0, 57, 64,130,255,212,127,153,160, 64,
/* 0x0d80 */ 65,156,247,172, 60, 0, 0,255, 96, 0,255,255,127,136, 0, 64,
/* 0x0d90 */ 65,157, 0, 32,127,140,224, 0, 56, 96, 0, 1, 65,158, 0, 40,
/* 0x0da0 */ 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, 57,140, 0, 1,
/* 0x0db0 */ 125, 40, 2,166,124, 19, 96, 80, 56, 96, 0, 0,144, 14, 0, 0,
/* 0x0dc0 */ 147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, 56, 33, 0, 96,
/* 0x0dd0 */ 124, 8, 3,166,124, 8, 2,166,148, 33,255,160,189,193, 0, 24,
/* 0x0de0 */ 59, 32, 0, 0,125, 40, 3,166,124,206, 51,120,124,147, 35,120,
/* 0x0df0 */ 144, 1, 0,100,124,245, 59,120,125, 20, 67,120,137, 67, 0, 2,
/* 0x0e00 */ 59, 3, 0, 4, 59,224, 0, 0,137, 99, 0, 1, 58,224, 0, 0,
/* 0x0e10 */ 59, 64, 0, 1,138, 67, 0, 0, 58, 32, 0, 1, 58, 0, 0, 1,
/* 0x0e20 */ 147, 38, 0, 0, 57,224, 0, 1,147, 41, 0, 0, 57, 32, 3, 0,
/* 0x0e30 */ 136, 3, 0, 1,124, 18, 2, 20,125, 41, 0, 48, 56, 9, 7, 54,
/* 0x0e40 */ 57, 32, 0, 1,127,153, 0, 64,125, 43, 88, 48,125, 41, 80, 48,
/* 0x0e50 */ 57,107,255,255, 57, 41,255,255,145, 97, 0, 12,145, 33, 0, 8,
/* 0x0e60 */ 57, 32, 0, 0, 64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0,
/* 0x0e70 */ 85, 32, 8, 60, 57, 41, 0, 1,125,120, 3, 46, 66, 0,255,244,
/* 0x0e80 */ 127,147, 42, 20,126,108,155,120, 56,160, 0, 0, 57, 0,255,255,
/* 0x0e90 */ 57, 96, 0, 0,127,140,224, 0, 57,107, 0, 1, 47, 11, 0, 4,
/* 0x0ea0 */ 84,169, 64, 46, 65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,
/* 0x0eb0 */ 125, 37, 3,120, 64,153,255,224,127,153,160, 64, 64,156, 8,100,
/* 0x0ec0 */ 62,192, 0,255, 98,214,255,255,127,136,176, 64,128, 1, 0, 8,
/* 0x0ed0 */ 127, 35, 0, 56, 86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60,
/* 0x0ee0 */ 65,157, 0, 32,127,140,224, 0, 65,158, 8, 88,137, 44, 0, 0,
/* 0x0ef0 */ 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,
/* 0x0f00 */ 124,230,194, 46, 85, 0,170,254,125, 64, 57,214,127,133, 80, 64,
/* 0x0f10 */ 64,156, 1,172,128, 1, 0, 12, 47,151, 0, 6,125, 72, 83,120,
/* 0x0f20 */ 56, 96, 0, 1,127, 41, 0, 56, 32, 18, 0, 8,127,224, 6, 48,
/* 0x0f30 */ 125, 41,144, 48,125, 41, 2, 20, 32, 7, 8, 0, 29, 41, 6, 0,
/* 0x0f40 */ 124, 0, 46,112,124, 7, 2, 20,124, 6,195, 46,125, 56, 74, 20,
/* 0x0f50 */ 56,201, 14,108, 64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,
/* 0x0f60 */ 127,245, 0,174, 99,123,255,255,127,136,216, 64, 87,255, 8, 60,
/* 0x0f70 */ 87,253, 5,238, 84,100, 8, 60, 87,160, 8, 60,127, 12,224, 0,
/* 0x0f80 */ 124, 6, 2, 20, 84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24,
/* 0x0f90 */ 65,154, 7,176,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0fa0 */ 125, 37, 3,120,161,103, 2, 0, 85, 0,170,254, 47, 29, 0, 0,
/* 0x0fb0 */ 124,131, 35,120,125, 64, 89,214, 32, 11, 8, 0, 85,105,217,126,
/* 0x0fc0 */ 124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,127,133, 80, 64,
/* 0x0fd0 */ 125, 10, 64, 80, 64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120,
/* 0x0fe0 */ 65,186, 0, 24, 72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80,
/* 0x0ff0 */ 56,100, 0, 1, 65,154, 0, 12, 47,131, 0,255, 64,157,255,108,
/* 0x1000 */ 47,131, 0,255, 65,157, 0,132, 63,224, 0,255, 99,255,255,255,
/* 0x1010 */ 127,136,248, 64, 84,103, 8, 60,127, 12,224, 0, 84,169, 64, 46,
/* 0x1020 */ 124,227, 59,120, 65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0,
/* 0x1030 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46,
/* 0x1040 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, 85,105,217,126,
/* 0x1050 */ 124, 0, 46,112,124, 11, 2, 20,125,105, 88, 80,127,133, 80, 64,
/* 0x1060 */ 125, 10, 64, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46,
/* 0x1070 */ 72, 0, 0, 16,124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1,
/* 0x1080 */ 47,131, 0,255, 64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,
/* 0x1090 */ 127,249,169,174, 59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0,
/* 0x10a0 */ 72, 0, 6,120, 47,151, 0, 9, 65,157, 0, 12, 58,247,255,253,
/* 0x10b0 */ 72, 0, 6,104, 58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,
/* 0x10c0 */ 84,224,217,126,127,136,176, 64,124, 0, 56, 80, 86,233, 8, 60,
/* 0x10d0 */ 124, 6,195, 46,124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,
/* 0x10e0 */ 127,140,224, 0, 65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,
/* 0x10f0 */ 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,161,103, 1,128,
/* 0x1100 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64,
/* 0x1110 */ 47,151, 0, 6, 32, 11, 8, 0,124, 0, 46,112,126, 15,131,120,
/* 0x1120 */ 124, 11, 2, 20,126, 48,139,120,176, 7, 1,128,125, 72, 83,120,
/* 0x1130 */ 56, 0, 0, 0,127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,
/* 0x1140 */ 124, 23, 3,120, 56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,
/* 0x1150 */ 85, 96,217,126,127,136,176, 64,124, 0, 88, 80,124,170, 40, 80,
/* 0x1160 */ 176, 7, 1,128, 65,157, 0, 32,127,140,224, 0, 65,158, 5,212,
/* 0x1170 */ 137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x1180 */ 124, 5, 75,120,161,103, 1,152, 85, 0,170,254,125, 64, 89,214,
/* 0x1190 */ 127,133, 80, 64, 64,156, 0,188,127,138,176, 64, 32, 11, 8, 0,
/* 0x11a0 */ 124, 0, 46,112, 86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20,
/* 0x11b0 */ 84,107, 8, 60,176, 7, 1,152,125, 72, 83,120,124,233, 90, 20,
/* 0x11c0 */ 65,157, 0, 32,127,140,224, 0, 65,158, 5,120,137, 44, 0, 0,
/* 0x11d0 */ 84,160, 64, 46, 85, 72, 64, 46, 57,140, 0, 1,124, 5, 75,120,
/* 0x11e0 */ 161,103, 1,224, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x11f0 */ 64,156, 0, 72, 47,153, 0, 0, 32, 11, 8, 0,124, 0, 46,112,
/* 0x1200 */ 125, 72, 83,120,124, 11, 2, 20,176, 7, 1,224, 65,158, 5, 52,
/* 0x1210 */ 47,151, 0, 6, 57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,
/* 0x1220 */ 124, 26,200, 80,125, 55, 75,120,127,245, 0,174,127,249,169,174,
/* 0x1230 */ 59, 57, 0, 1, 72, 0, 4,228, 85, 96,217,126,124,170, 40, 80,
/* 0x1240 */ 124, 0, 88, 80,125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,
/* 0x1250 */ 125, 10, 64, 80, 85, 96,217,126,127,136,176, 64,124, 0, 88, 80,
/* 0x1260 */ 124,170, 40, 80,176, 7, 1,152, 65,157, 0, 32,127,140,224, 0,
/* 0x1270 */ 65,158, 4,208,137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46,
/* 0x1280 */ 57,140, 0, 1,124, 5, 75,120,161,103, 1,176, 85, 0,170,254,
/* 0x1290 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,
/* 0x12a0 */ 125, 72, 83,120,124, 0, 46,112,126, 41,139,120,124, 11, 2, 20,
/* 0x12b0 */ 176, 7, 1,176, 72, 0, 0,140,125, 10, 64, 80, 85, 96,217,126,
/* 0x12c0 */ 127,136,176, 64,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176,
/* 0x12d0 */ 65,157, 0, 32,127,140,224, 0, 65,158, 4,104,137, 44, 0, 0,
/* 0x12e0 */ 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,
/* 0x12f0 */ 161,103, 1,200, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x1300 */ 64,156, 0, 32, 32, 11, 8, 0,125, 72, 83,120,124, 0, 46,112,
/* 0x1310 */ 126, 9,131,120,124, 11, 2, 20,176, 7, 1,200, 72, 0, 0, 32,
/* 0x1320 */ 85, 96,217,126,125,233,123,120,124, 0, 88, 80,124,170, 40, 80,
/* 0x1330 */ 176, 7, 1,200,125, 10, 64, 80,126, 15,131,120,126, 48,139,120,
/* 0x1340 */ 127, 81,211,120,125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8,
/* 0x1350 */ 64,157, 0, 8, 56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,
/* 0x1360 */ 127,136,176, 64, 65,157, 0, 32,127,140,224, 0, 65,158, 3,212,
/* 0x1370 */ 137, 44, 0, 0, 84,160, 64, 46, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x1380 */ 124, 5, 75,120,161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,
/* 0x1390 */ 127,133, 80, 64, 64,156, 0, 48, 84,105, 32, 54, 32, 11, 8, 0,
/* 0x13a0 */ 125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,
/* 0x13b0 */ 56,137, 0, 4, 59, 96, 0, 0,176, 6, 0, 0, 56, 96, 0, 3,
/* 0x13c0 */ 72, 0, 0,156,125, 10, 64, 80, 85, 96,217,126,127,136,176, 64,
/* 0x13d0 */ 124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,
/* 0x13e0 */ 127,140,224, 0, 65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,
/* 0x13f0 */ 85, 8, 64, 46, 57,140, 0, 1,124, 5, 75,120,161,102, 0, 2,
/* 0x1400 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48,
/* 0x1410 */ 84,105, 32, 54, 32, 11, 8, 0,125, 38, 74, 20,124, 0, 46,112,
/* 0x1420 */ 124, 11, 2, 20,125, 72, 83,120, 56,137, 1, 4, 59, 96, 0, 8,
/* 0x1430 */ 176, 6, 0, 2, 56, 96, 0, 3, 72, 0, 0, 36, 85, 96,217,126,
/* 0x1440 */ 124,170, 40, 80,124, 0, 88, 80,125, 10, 64, 80,176, 6, 0, 2,
/* 0x1450 */ 56,134, 2, 4, 59, 96, 0, 16, 56, 96, 0, 8, 63,224, 0,255,
/* 0x1460 */ 124,105, 3,166, 59,160, 0, 1, 99,255,255,255,127,136,248, 64,
/* 0x1470 */ 87,167, 8, 60,127, 12,224, 0, 84,169, 64, 46,124,253, 59,120,
/* 0x1480 */ 65,157, 0, 24, 65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x1490 */ 57,140, 0, 1,125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,
/* 0x14a0 */ 125, 64, 89,214, 32, 11, 8, 0, 85,105,217,126,124, 0, 46,112,
/* 0x14b0 */ 124, 11, 2, 20,125,105, 88, 80,127,133, 80, 64,125, 10, 64, 80,
/* 0x14c0 */ 64,156, 0, 16,125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,
/* 0x14d0 */ 124,170, 40, 80, 59,167, 0, 1,125,100, 59, 46, 66, 0,255,144,
/* 0x14e0 */ 47,151, 0, 3, 56, 0, 0, 1,124, 0, 24, 48,127,160,232, 80,
/* 0x14f0 */ 127,189,218, 20, 65,157, 1,232, 47,157, 0, 3, 58,247, 0, 7,
/* 0x1500 */ 127,169,235,120, 64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,
/* 0x1510 */ 63,224, 0,255,125, 56, 74, 20, 99,255,255,255, 56,201, 3, 96,
/* 0x1520 */ 57, 32, 0, 6,125, 41, 3,166, 56,128, 0, 1,127,136,248, 64,
/* 0x1530 */ 84,135, 8, 60,127, 12,224, 0, 84,169, 64, 46,124,228, 59,120,
/* 0x1540 */ 65,157, 0, 24, 65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x1550 */ 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,
/* 0x1560 */ 125, 64, 89,214, 32, 11, 8, 0, 85,105,217,126,124, 0, 46,112,
/* 0x1570 */ 124, 11, 2, 20,125,105, 88, 80,127,133, 80, 64,125, 10, 64, 80,
/* 0x1580 */ 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,
/* 0x1590 */ 124,170, 40, 80, 56,135, 0, 1,125,102, 59, 46, 66, 0,255,144,
/* 0x15a0 */ 56,132,255,192, 47,132, 0, 3,124,154, 35,120, 64,157, 1, 40,
/* 0x15b0 */ 47,132, 0, 13,124,137, 14,112, 84,128, 7,254, 57,105,255,255,
/* 0x15c0 */ 96, 26, 0, 2,125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48,
/* 0x15d0 */ 84,128, 8, 60, 87, 73, 8, 60,125, 56, 74, 20,125, 32, 72, 80,
/* 0x15e0 */ 56,201, 5, 94, 72, 0, 0,100, 57, 41,255,251, 61, 96, 0,255,
/* 0x15f0 */ 125, 41, 3,166, 97,107,255,255,127,136, 88, 64,127, 12,224, 0,
/* 0x1600 */ 84,169, 64, 46, 87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,
/* 0x1610 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x1620 */ 85, 8,248,126,127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80,
/* 0x1630 */ 99, 90, 0, 1, 66, 0,255,196, 56, 0, 0, 4, 87, 90, 32, 54,
/* 0x1640 */ 124, 9, 3,166, 56,216, 6, 68, 60, 96, 0,255, 56,128, 0, 1,
/* 0x1650 */ 96, 99,255,255, 59,224, 0, 1,127,136, 24, 64, 87,231, 8, 60,
/* 0x1660 */ 127, 12,224, 0, 84,169, 64, 46,124,255, 59,120, 65,157, 0, 24,
/* 0x1670 */ 65,154, 0,208,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x1680 */ 125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x1690 */ 32, 11, 8, 0, 85,105,217,126,124, 0, 46,112,124, 11, 2, 20,
/* 0x16a0 */ 125,105, 88, 80,127,133, 80, 64,125, 10, 64, 80, 64,156, 0, 16,
/* 0x16b0 */ 125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80,
/* 0x16c0 */ 59,231, 0, 1,125,102, 59, 46,127, 90, 35,120, 84,132, 8, 60,
/* 0x16d0 */ 66, 0,255,136, 55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64,
/* 0x16e0 */ 59,189, 0, 2, 65,157, 0, 92,124, 26,200, 80, 59,189,255,255,
/* 0x16f0 */ 127,245, 0,174, 49,125,255,255,125, 43,233, 16,127,249,169,174,
/* 0x1700 */ 59, 57, 0, 1,124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,
/* 0x1710 */ 125, 43, 0, 57, 64,130,255,212,127,153,160, 64, 65,156,247,172,
/* 0x1720 */ 60, 0, 0,255, 96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,
/* 0x1730 */ 127,140,224, 0, 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12,
/* 0x1740 */ 56, 96, 0, 1, 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,
/* 0x1750 */ 124, 19, 96, 80, 56, 96, 0, 0,144, 14, 0, 0,147, 41, 0, 0,
/* 0x1760 */ 128, 1, 0,100,185,193, 0, 24, 56, 33, 0, 96,124, 8, 3,166,
/* 0x1770 */ 128,161, 0, 12,128,225, 0, 8,128,165, 0, 0,128, 33, 0, 0,
/* 0x1780 */ 124,165, 58, 20,128, 1, 0, 8, 56,165,255,255,128, 33, 0, 0,
/* 0x1790 */ 124, 8, 3,166,128,230, 0, 0,125,168, 3,166,124,100, 24, 80,
/* 0x17a0 */ 124,135, 40, 80, 56, 99, 0, 1, 56,132, 0, 1,144,134, 0, 0,
/* 0x17b0 */ 96,231, 0, 31,124, 0, 56,108,124, 7, 40, 64,124, 0, 63,172,
/* 0x17c0 */ 56,231, 0, 32, 65,128,255,240,124, 0, 4,172, 76, 0, 1, 44,
/* 0x17d0 */ 78,128, 0, 32, 72, 0, 0, 1,109,109, 97,112, 32,102, 97,105,
/* 0x17e0 */ 108,101,100, 46, 10, 0, 56,160, 0, 14,124,136, 2,166, 56, 96,
/* 0x17f0 */ 0, 2, 56, 0, 0, 4, 68, 0, 0, 2, 56, 96, 0,127, 56, 0,
/* 0x1800 */ 0, 1, 68, 0, 0, 2,126,200, 2,166,128, 31,255,248, 59, 63,
/* 0x1810 */ 255,248, 56,224,255,255,130,182, 0, 4, 56,192, 0, 34,127, 32,
/* 0x1820 */ 200, 80, 56, 96, 0, 0,126,164,171,120,124,156, 35,120, 72, 0,
/* 0x1830 */ 0, 89,124,125, 27,120,130,118, 0, 0,127,233, 3,166,136,246,
/* 0x1840 */ 0, 12,146,161, 0,140, 56,193, 0,140,127,165,235,120,128,150,
/* 0x1850 */ 0, 8, 56,118, 0, 16, 78,128, 4, 33,147,221, 0, 0, 56,160,
/* 0x1860 */ 0, 5,127,132,227,120,127,163,235,120, 56, 0, 0,125, 68, 0,
/* 0x1870 */ 0, 2, 56, 29, 0, 16,130,255,255,248,124, 9, 3,166,127, 25,
/* 0x1870 */ 0, 2, 56, 29, 0, 32,130,255,255,248,124, 9, 3,166,127, 25,
/* 0x1880 */ 154, 20, 78,128, 4, 32, 57, 0, 0, 0, 56,160, 0, 3, 56, 0,
/* 0x1890 */ 0, 90, 68, 0, 0, 2, 64,131, 0, 8,124,128, 0, 8, 78,128,
/* 0x18a0 */ 0, 32,128, 3, 0, 0, 56, 99, 0, 4, 47,128, 0, 0, 64,158,
@@ -436,7 +436,7 @@ unsigned char stub_powerpc_linux_elf_entry[8467] = {
/* 0x18c0 */ 2,166, 56, 97, 0,144, 75,255,255,221, 75,255,255,217,124,122,
/* 0x18d0 */ 27,120,128, 3, 0, 0,128,131, 0, 4, 56, 99, 0, 8, 47,128,
/* 0x18e0 */ 0, 6, 65,158, 0, 16, 44, 0, 0, 0, 64,130,255,232, 56,128,
/* 0x18f0 */ 16, 0,127,196, 0,208, 75,255,255, 5, 0, 0, 0, 0,102,105,
/* 0x18f0 */ 16, 0,127,196, 0,208, 75,255,255, 17, 0, 0, 0, 0,102,105,
/* 0x1900 */ 108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, 50, 45,
/* 0x1910 */ 112,111,119,101,114,112, 99, 10, 10, 83,101, 99,116,105,111,110,
/* 0x1920 */ 115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32,
@@ -450,40 +450,40 @@ unsigned char stub_powerpc_linux_elf_entry[8467] = {
/* 0x19a0 */ 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 32, 32, 48, 32,
/* 0x19b0 */ 32, 48, 32, 32, 48, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67,
/* 0x19c0 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32, 78, 82, 86, 50,
/* 0x19d0 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 49, 52, 56, 32, 32,
/* 0x19d0 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 49, 52, 99, 32, 32,
/* 0x19e0 */ 48, 32, 32, 48, 32, 32, 48, 51, 56, 32, 32, 50, 42, 42, 48, 32,
/* 0x19f0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 51, 32, 78, 82,
/* 0x1a00 */ 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 49, 50, 99,
/* 0x1a10 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 56, 48, 32, 32, 50, 42,
/* 0x1a00 */ 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 49, 51, 48,
/* 0x1a10 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 56, 52, 32, 32, 50, 42,
/* 0x1a20 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 52,
/* 0x1a30 */ 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48,
/* 0x1a40 */ 102, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50, 97, 99, 32, 32,
/* 0x1a40 */ 102, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50, 98, 52, 32, 32,
/* 0x1a50 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32,
/* 0x1a60 */ 32, 53, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32,
/* 0x1a70 */ 32, 48, 57, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 57, 99,
/* 0x1a70 */ 32, 48, 57, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 97, 56,
/* 0x1a80 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
/* 0x1a90 */ 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32,
/* 0x1aa0 */ 32, 32, 32, 48, 57, 57, 99, 32, 32, 48, 32, 32, 48, 32, 32, 48,
/* 0x1ab0 */ 52, 50, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x1ab0 */ 52, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x1ac0 */ 78, 84, 83, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67,
/* 0x1ad0 */ 50, 48, 32, 32, 32, 32, 48, 57, 57, 99, 32, 32, 48, 32, 32, 48,
/* 0x1ae0 */ 32, 32, 48,100, 99, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x1ae0 */ 32, 32, 48,100,100, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x1af0 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 56, 32, 76, 90, 77, 65, 95,
/* 0x1b00 */ 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 50, 52, 32, 32, 48, 32,
/* 0x1b10 */ 32, 48, 32, 32, 48, 49, 55, 54, 52, 32, 32, 50, 42, 42, 48, 32,
/* 0x1b10 */ 32, 48, 32, 32, 48, 49, 55, 55, 48, 32, 32, 50, 42, 42, 48, 32,
/* 0x1b20 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 57, 32, 78, 82,
/* 0x1b30 */ 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 49, 99, 32,
/* 0x1b40 */ 32, 48, 32, 32, 48, 32, 32, 48, 49, 55, 56, 56, 32, 32, 50, 42,
/* 0x1b40 */ 32, 48, 32, 32, 48, 32, 32, 48, 49, 55, 57, 52, 32, 32, 50, 42,
/* 0x1b50 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 48,
/* 0x1b60 */ 32, 67, 70, 76, 85, 83, 72, 32, 32, 32, 32, 32, 32, 32, 32, 48,
/* 0x1b70 */ 50, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 55, 97, 52, 32,
/* 0x1b70 */ 50, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 55, 98, 48, 32,
/* 0x1b80 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
/* 0x1b90 */ 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32,
/* 0x1ba0 */ 32, 32, 48, 49, 50, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 55,
/* 0x1bb0 */ 99, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1bb0 */ 100, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1bc0 */ 84, 83, 10, 32, 49, 50, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32,
/* 0x1bd0 */ 32, 32, 32, 32, 32, 48, 49, 50, 52, 32, 32, 48, 32, 32, 48, 32,
/* 0x1be0 */ 32, 48, 49, 55,100, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x1bd0 */ 32, 32, 32, 32, 32, 48, 49, 49, 56, 32, 32, 48, 32, 32, 48, 32,
/* 0x1be0 */ 32, 48, 49, 55,101, 54, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x1bf0 */ 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65,
/* 0x1c00 */ 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x1c10 */ 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48,
@@ -526,24 +526,24 @@ unsigned char stub_powerpc_linux_elf_entry[8467] = {
/* 0x1e60 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e70 */ 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32,
/* 0x1e80 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48,
/* 0x1e90 */ 48, 48, 48, 48, 48,100, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84,
/* 0x1e90 */ 48, 48, 48, 48, 48,100, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84,
/* 0x1ea0 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32,
/* 0x1eb0 */ 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
/* 0x1ec0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1ed0 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
/* 0x1ee0 */ 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32,
/* 0x1ee0 */ 98, 56, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32,
/* 0x1ef0 */ 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82,
/* 0x1f00 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68,
/* 0x1f10 */ 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79,
/* 0x1f20 */ 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
/* 0x1f30 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
/* 0x1f40 */ 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82,
/* 0x1f40 */ 48, 48, 48, 48, 48, 48, 98, 56, 32, 82, 95, 80, 80, 67, 95, 82,
/* 0x1f50 */ 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84,
/* 0x1f60 */ 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x1f70 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86,
/* 0x1f80 */ 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89,
/* 0x1f90 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1fa0 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 57, 48, 32, 82,
/* 0x1fa0 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 57, 52, 32, 82,
/* 0x1fb0 */ 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32,
/* 0x1fc0 */ 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67,
/* 0x1fd0 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79,
@@ -564,7 +564,7 @@ unsigned char stub_powerpc_linux_elf_entry[8467] = {
/* 0x20c0 */ 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79,
/* 0x20d0 */ 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
/* 0x20e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
/* 0x20f0 */ 48, 48, 48, 48, 48, 49, 50, 48, 32, 82, 95, 80, 80, 67, 95, 65,
/* 0x20f0 */ 48, 48, 48, 48, 48, 49, 49, 52, 32, 82, 95, 80, 80, 67, 95, 65,
/* 0x2100 */ 68, 68, 82, 51, 50, 32, 32, 32, 32, 32, 32, 79, 95, 66, 73, 78,
/* 0x2110 */ 70, 79, 10
};
+278 -278
View File
@@ -1,5 +1,5 @@
/* powerpc-linux.elf-fold.h
created from powerpc-linux.elf-fold.bin, 4460 (0x116c) bytes
created from powerpc-linux.elf-fold.bin, 4464 (0x1170) bytes
This file is part of the UPX executable compressor.
@@ -32,288 +32,288 @@
/* clang-format off */
#define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 4460
#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0x746888bd
#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0x75a30434
#define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 4464
#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0x82b88b67
#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0x8c75b666
unsigned char stub_powerpc_linux_elf_fold[4460] = {
unsigned char stub_powerpc_linux_elf_fold[4464] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 2, 0, 20, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0,
/* 0x0040 */ 0, 16, 0, 0, 0, 0, 17,108, 0, 0, 17,108, 0, 0, 0, 5,
/* 0x0050 */ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 17,108, 0, 0, 0, 0,
/* 0x0040 */ 0, 16, 0, 0, 0, 0, 17,112, 0, 0, 17,112, 0, 0, 0, 5,
/* 0x0050 */ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 17,112, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 56, 96,255,248, 84, 99, 72, 44, 78,128, 0, 32, 96, 0, 0, 0,
/* 0x0090 */ 72, 0, 0,125, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191,
/* 0x00a0 */ 77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8,
/* 0x00b0 */ 124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252,
/* 0x00c0 */ 124,137, 3,166, 72, 0, 0, 28, 85, 96, 2,186,124, 3, 0, 80,
/* 0x00d0 */ 124, 0, 58, 20, 80, 11, 1,186,145, 99, 0, 0, 78, 64, 0, 32,
/* 0x00e0 */ 133, 99, 0, 4, 85, 96, 85,190,124, 0, 40, 64, 65,162,255,220,
/* 0x00f0 */ 66, 0,255,240, 78,128, 0, 32, 32, 32, 32, 61, 47,112,114,111,
/* 0x0100 */ 99, 47,115,101,108,102, 47,101,120,101, 0, 0,126,200, 2,166,
/* 0x0110 */ 56,129,255,252, 56, 33,239,252, 56, 97,255,252, 59, 90,255,252,
/* 0x0120 */ 132, 4, 0, 4,127,132,208, 64,148, 3, 0, 4, 65,156,255,244,
/* 0x0130 */ 59, 67, 0, 8,148, 3, 0, 4,128, 4, 0, 4, 43,128, 0, 0,
/* 0x0140 */ 144, 3, 0, 4,132, 4, 0, 8,148, 3, 0, 8, 64,158,255,236,
/* 0x0150 */ 58,163, 0, 4,126,154,168, 80,128, 22, 0,100, 58,100, 0, 4,
/* 0x0160 */ 148, 3, 0, 4, 58, 67, 0, 4, 56,128, 0, 0, 56,118, 0,104,
/* 0x0170 */ 72, 0, 1,121,124,123, 27,120, 56,160, 15,255,126, 68,147,120,
/* 0x0180 */ 56,118, 0,104, 72, 0, 1, 77, 56,178,255,252, 44, 3, 0, 0,
/* 0x0190 */ 65,129, 0, 12, 56,182, 0,100, 56, 96, 0, 16, 56, 99, 0, 4,
/* 0x01a0 */ 124,133, 26, 20,124,105, 3,166,126, 99,155,120, 56,160, 0, 0,
/* 0x01b0 */ 156,163,255,255,140, 4,255,255,156, 3,255,255, 66, 0,255,248,
/* 0x01c0 */ 144,122,255,248, 84, 99, 0, 58,124, 32, 34,120,124, 0, 26,120,
/* 0x01d0 */ 84, 0, 7,126,124, 96, 24, 80,126,164,171,120,127, 84, 24, 80,
/* 0x01e0 */ 132, 4,255,252,127,132, 8, 64,148, 3,255,252, 65,157,255,244,
/* 0x01f0 */ 124, 97, 27,120,148, 33,247,240,127, 3,195,120,126,228,187,120,
/* 0x0200 */ 56,161, 0, 16,127, 70,211,120,127,231,251,120,126,200,179,120,
/* 0x0210 */ 127, 41,203,120, 72, 0, 13, 89, 56, 33, 8, 16,124,127, 27,120,
/* 0x0220 */ 128,153, 0,104,127, 35,203,120, 72, 0, 0,161,127, 35,203,120,
/* 0x0230 */ 72, 0, 0,209, 57, 0, 0, 0,127,103,219,120, 44, 7, 0, 0,
/* 0x0240 */ 65,128, 0, 32, 56,192, 0, 2, 56,160, 0, 1,124,158, 0,208,
/* 0x0250 */ 56, 96, 0, 0, 72, 0, 0, 89,127, 99,219,120, 72, 0, 0,149,
/* 0x0260 */ 127, 67,211,120,128, 3, 0, 0,128,131, 0, 4, 56, 99, 0, 8,
/* 0x0270 */ 43,128, 0, 0, 64,158,255,240,124,137, 3,166,127,163,235,120,
/* 0x0280 */ 127,132,227,120, 56, 0, 0, 91,127,232, 3,166,184,161, 0, 32,
/* 0x0290 */ 56, 33, 0,144, 78,128, 4, 32, 56, 0, 15,255,124, 96, 0, 56,
/* 0x02a0 */ 124, 96, 24, 80,124,132, 2, 20, 72, 0, 0, 80, 56, 0, 0, 90,
/* 0x02b0 */ 68, 0, 0, 2, 64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32,
/* 0x02c0 */ 56, 0, 0, 1, 72, 0, 0, 8, 56, 0, 0, 45, 72, 0, 0, 8,
/* 0x02d0 */ 56, 0, 0, 85, 72, 0, 0, 8, 56, 0, 0, 4, 72, 0, 0, 8,
/* 0x02e0 */ 56, 0, 0, 3, 72, 0, 0, 8, 56, 0, 0, 5, 72, 0, 0, 8,
/* 0x02f0 */ 56, 0, 0, 6, 72, 0, 0, 8, 56, 0, 0,125, 72, 0, 0, 8,
/* 0x0300 */ 56, 0, 0, 91, 75,255,255,172,124,128, 0, 8, 78,128, 0, 32,
/* 0x0310 */ 148, 33,255,208,124, 8, 2,166,147,225, 0, 44,144, 1, 0, 52,
/* 0x0320 */ 124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,
/* 0x0330 */ 129, 63, 0, 8,128, 9, 0, 4,144, 31, 0, 20,128, 31, 0, 12,
/* 0x0340 */ 144, 31, 0, 24,129, 63, 0, 8,129, 41, 0, 0,128, 31, 0, 16,
/* 0x0350 */ 127,137, 0, 64, 64,156, 0, 12, 56, 96, 0,127, 75,255,255,101,
/* 0x0360 */ 128, 31, 0, 16,144, 31, 0, 28,129, 63, 0, 28, 56, 9,255,255,
/* 0x0370 */ 124, 9, 3,120,145, 63, 0, 28, 56, 0,255,255,127,137, 0, 0,
/* 0x0380 */ 65,158, 0, 48,129,127, 0, 24,129, 63, 0, 20,136, 9, 0, 0,
/* 0x0390 */ 152, 11, 0, 0,129, 63, 0, 20, 56, 9, 0, 1,144, 31, 0, 20,
/* 0x03a0 */ 129, 63, 0, 24, 56, 9, 0, 1,144, 31, 0, 24, 75,255,255,188,
/* 0x03b0 */ 129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 4,128, 31, 0, 16,
/* 0x03c0 */ 124, 9, 2, 20,144, 11, 0, 4,129,127, 0, 8,129, 63, 0, 8,
/* 0x03d0 */ 129, 41, 0, 0,128, 31, 0, 16,124, 0, 72, 80,144, 11, 0, 0,
/* 0x03e0 */ 129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,131,235,255,252,
/* 0x03f0 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,176,124, 8, 2,166,
/* 0x0400 */ 147,225, 0, 76,144, 1, 0, 84,124, 63, 11,120,144,127, 0, 8,
/* 0x0410 */ 144,159, 0, 12,144,191, 0, 16,144,223, 0, 20,129, 63, 0, 12,
/* 0x0420 */ 128, 9, 0, 0, 47,128, 0, 0, 65,158, 1,228, 56, 31, 0, 32,
/* 0x0430 */ 128,127, 0, 8,124, 4, 3,120, 56,160, 0, 12, 75,255,254,213,
/* 0x0440 */ 128, 31, 0, 32, 47,128, 0, 0, 64,158, 0, 48,128, 31, 0, 36,
/* 0x0450 */ 61, 32, 33, 88, 97, 41, 80, 85,127,128, 72, 0, 65,158, 0, 8,
/* 0x0460 */ 72, 0, 0, 36,129, 63, 0, 8,128, 9, 0, 0, 47,128, 0, 0,
/* 0x0470 */ 65,158, 1,156, 72, 0, 0, 16,128, 31, 0, 36, 47,128, 0, 0,
/* 0x0480 */ 64,158, 0, 12, 56, 96, 0,127, 75,255,254, 57,128, 31, 0, 36,
/* 0x0490 */ 129, 63, 0, 32,127,128, 72, 64, 65,157,255,236,129, 63, 0, 12,
/* 0x04a0 */ 129,127, 0, 32,128, 9, 0, 0,127,139, 0, 64, 65,157,255,216,
/* 0x04b0 */ 128, 31, 0, 36,129, 63, 0, 32,127,128, 72, 64, 64,156, 1, 8,
/* 0x04c0 */ 128, 31, 0, 32,144, 31, 0, 48,129, 63, 0, 8,129,127, 0, 12,
/* 0x04d0 */ 57, 95, 0, 48,136, 31, 0, 40, 84, 0, 6, 62,129, 31, 0, 16,
/* 0x04e0 */ 125, 9, 3,166,128,105, 0, 4,128,159, 0, 36,128,171, 0, 4,
/* 0x04f0 */ 125, 70, 83,120,124, 7, 3,120, 78,128, 4, 33,124, 96, 27,120,
/* 0x0500 */ 144, 31, 0, 52,128, 31, 0, 52, 47,128, 0, 0, 64,158,255,120,
/* 0x0510 */ 128, 31, 0, 32,129, 63, 0, 48,127,128, 72, 0, 64,158,255,104,
/* 0x0520 */ 136, 31, 0, 41, 84, 0, 6, 62, 47,128, 0, 0, 65,158, 0,100,
/* 0x0530 */ 128, 31, 0, 20, 47,128, 0, 0, 65,158, 0, 88,128, 31, 0, 48,
/* 0x0540 */ 43,128, 2, 0, 65,157, 0, 28,129, 63, 0, 12,129, 41, 0, 0,
/* 0x0550 */ 128, 31, 0, 32,127,137, 0, 0, 65,158, 0, 8, 72, 0, 0, 52,
/* 0x0560 */ 129, 63, 0, 12,136, 31, 0, 42, 84, 11, 6, 62,136, 31, 0, 41,
/* 0x0570 */ 84, 0, 6, 62,129, 31, 0, 20,125, 9, 3,166,128,105, 0, 4,
/* 0x0580 */ 128,159, 0, 48,125,101, 91,120,124, 6, 3,120, 78,128, 4, 33,
/* 0x0590 */ 129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 4,128, 31, 0, 36,
/* 0x05a0 */ 124, 9, 2, 20,144, 11, 0, 4,129,127, 0, 8,129, 63, 0, 8,
/* 0x05b0 */ 129, 41, 0, 0,128, 31, 0, 36,124, 0, 72, 80,144, 11, 0, 0,
/* 0x05c0 */ 72, 0, 0, 24,129, 63, 0, 12,128,127, 0, 8,128,137, 0, 4,
/* 0x05d0 */ 128,191, 0, 36, 75,255,253, 61,129,127, 0, 12,129, 63, 0, 12,
/* 0x05e0 */ 129, 41, 0, 4,128, 31, 0, 32,124, 9, 2, 20,144, 11, 0, 4,
/* 0x05f0 */ 129,127, 0, 12,129, 63, 0, 12,129, 41, 0, 0,128, 31, 0, 32,
/* 0x0600 */ 124, 0, 72, 80,144, 11, 0, 0, 75,255,254, 20,129, 97, 0, 0,
/* 0x0610 */ 128, 11, 0, 4,124, 8, 3,166,131,235,255,252,125, 97, 91,120,
/* 0x0620 */ 78,128, 0, 32,148, 33,255,208,124, 8, 2,166,147,225, 0, 44,
/* 0x0630 */ 144, 1, 0, 52,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,
/* 0x0640 */ 144,191, 0, 16, 56, 0, 0, 0,144, 31, 0, 20, 56, 0, 0, 0,
/* 0x0650 */ 144, 31, 0, 24,129, 63, 0, 8,128, 9, 0, 0, 47,128, 0, 1,
/* 0x0660 */ 64,158, 1, 40,129, 63, 0, 8,128, 9, 0, 24, 84, 0, 7,254,
/* 0x0670 */ 47,128, 0, 0, 65,158, 1, 20,129, 63, 0, 8,129,127, 0, 8,
/* 0x0680 */ 129, 41, 0, 20,128, 11, 0, 8,125, 41, 2, 20,128, 31, 0, 12,
/* 0x0690 */ 124, 9, 2, 20,144, 31, 0, 24,129, 63, 0, 8,129,127, 0, 8,
/* 0x06a0 */ 129, 41, 0, 20,128, 11, 0, 16,127,137, 0, 0, 64,158, 0, 28,
/* 0x06b0 */ 128, 31, 0, 24,125, 32, 0,208,128, 31, 0, 16,125, 32, 0, 56,
/* 0x06c0 */ 43,128, 0, 7, 65,157, 0,104,129,127, 0, 8,128, 31, 0, 12,
/* 0x06d0 */ 29, 32, 0, 52,128, 11, 0, 8,125, 41, 2, 20, 56, 9, 0, 8,
/* 0x06e0 */ 144, 31, 0, 24,129, 63, 0, 8,128, 9, 0, 4, 47,128, 0, 0,
/* 0x06f0 */ 65,158, 0, 60, 56, 0, 0, 1,144, 31, 0, 20, 56, 96, 0, 0,
/* 0x0700 */ 56,128, 16, 0, 56,160, 0, 3, 56,192, 0, 34, 56,224,255,255,
/* 0x0710 */ 57, 0, 0, 0, 75,255,251,153,144,127, 0, 24,128, 31, 0, 24,
/* 0x0720 */ 47,128, 0, 0, 64,158, 0, 8, 72, 0, 0, 88,129, 63, 0, 24,
/* 0x0730 */ 56, 9, 0, 3, 84, 0, 0, 58,144, 31, 0, 24,129, 63, 0, 24,
/* 0x0740 */ 60, 0, 68, 0, 96, 0, 0, 2,144, 9, 0, 0,129, 63, 0, 24,
/* 0x0750 */ 57, 41, 0, 4, 60, 0, 78,128, 96, 0, 0, 32,144, 9, 0, 0,
/* 0x0760 */ 128, 31, 0, 20, 47,128, 0, 0, 65,158, 0, 32,128,127, 0, 24,
/* 0x0770 */ 56,128, 0, 8, 56,160, 0, 5, 75,255,251, 33, 72, 0, 0, 12,
/* 0x0780 */ 56, 0, 0, 0,144, 31, 0, 24,128, 31, 0, 24,124, 3, 3,120,
/* 0x0790 */ 129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,131,235,255,252,
/* 0x07a0 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,224,147,225, 0, 28,
/* 0x07b0 */ 124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,128, 31, 0, 12,
/* 0x07c0 */ 47,128, 0, 0, 65,158, 0, 52,129, 63, 0, 8,125, 43, 75,120,
/* 0x07d0 */ 56, 0, 0, 0,152, 11, 0, 0, 57, 41, 0, 1,145, 63, 0, 8,
/* 0x07e0 */ 129, 63, 0, 12, 56, 9,255,255,144, 31, 0, 12, 47,128, 0, 0,
/* 0x07f0 */ 65,158, 0, 8, 75,255,255,212,129, 97, 0, 0,131,235,255,252,
/* 0x0800 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,208,124, 8, 2,166,
/* 0x0810 */ 147,225, 0, 44,144, 1, 0, 52,124, 63, 11,120,144,127, 0, 8,
/* 0x0820 */ 144,159, 0, 12,144,191, 0, 16,128, 31, 0, 8, 47,128, 0, 0,
/* 0x0830 */ 65,158, 0,204,128, 31, 0, 8, 84, 0, 7,254, 47,128, 0, 0,
/* 0x0840 */ 64,158, 0,188, 56, 0, 0, 0,144, 31, 0, 20, 56, 0, 0, 0,
/* 0x0850 */ 144, 31, 0, 24,129, 63, 0, 8,129, 41, 0, 0,128, 31, 0, 12,
/* 0x0860 */ 127,137, 0, 0, 64,158, 0, 32,129, 63, 0, 8,128, 31, 0, 16,
/* 0x0870 */ 144, 9, 0, 4,129, 63, 0, 24, 56, 9, 0, 1,144, 31, 0, 24,
/* 0x0880 */ 72, 0, 0, 28,129, 63, 0, 8,128, 9, 0, 0, 47,128, 0, 1,
/* 0x0890 */ 64,158, 0, 12,128, 31, 0, 8,144, 31, 0, 20,129, 63, 0, 8,
/* 0x08a0 */ 128, 9, 0, 0, 47,128, 0, 0, 64,158, 0, 68,128, 31, 0, 24,
/* 0x08b0 */ 47,128, 0, 0, 65,158, 0, 8, 72, 0, 0, 68,128, 31, 0, 20,
/* 0x08c0 */ 47,128, 0, 0, 65,158, 0, 32,129, 63, 0, 20,128, 31, 0, 12,
/* 0x08d0 */ 144, 9, 0, 0,129, 63, 0, 20,128, 31, 0, 16,144, 9, 0, 4,
/* 0x08e0 */ 72, 0, 0, 28, 56, 96, 0,127, 75,255,249,217,129, 63, 0, 8,
/* 0x08f0 */ 56, 9, 0, 8,144, 31, 0, 8, 75,255,255, 92,129, 97, 0, 0,
/* 0x0900 */ 128, 11, 0, 4,124, 8, 3,166,131,235,255,252,125, 97, 91,120,
/* 0x0910 */ 78,128, 0, 32,148, 33,255,208,124, 8, 2,166,147,225, 0, 44,
/* 0x0920 */ 144, 1, 0, 52,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,
/* 0x0930 */ 144,191, 0, 16,144,223, 0, 20, 75,255,247, 73,124, 96, 27,120,
/* 0x0940 */ 144, 31, 0, 24, 56, 0,255,255,144, 31, 0, 28, 56, 0, 0, 0,
/* 0x0950 */ 144, 31, 0, 32, 56, 0, 0, 0,144, 31, 0, 36,129, 63, 0, 16,
/* 0x0960 */ 56, 9,255,255,144, 31, 0, 16, 47,128, 0, 0, 65,156, 0,124,
/* 0x0970 */ 129, 63, 0, 12,128, 9, 0, 0, 47,128, 0, 1, 64,158, 0, 92,
/* 0x0980 */ 129, 63, 0, 12,129, 41, 0, 8,128, 31, 0, 28,127,137, 0, 64,
/* 0x0990 */ 64,156, 0, 16,129, 63, 0, 12,128, 9, 0, 8,144, 31, 0, 28,
/* 0x09a0 */ 129, 63, 0, 12,129,127, 0, 12,129, 41, 0, 20,128, 11, 0, 8,
/* 0x09b0 */ 125, 41, 2, 20,128, 31, 0, 32,127,137, 0, 64, 64,157, 0, 28,
/* 0x09c0 */ 129, 63, 0, 12,129,127, 0, 12,129, 41, 0, 20,128, 11, 0, 8,
/* 0x09d0 */ 124, 9, 2, 20,144, 31, 0, 32,129, 63, 0, 12, 56, 9, 0, 32,
/* 0x09e0 */ 144, 31, 0, 12, 75,255,255,120,129, 63, 0, 28,128, 31, 0, 24,
/* 0x09f0 */ 125, 32, 0, 56,144, 31, 0, 28,129, 63, 0, 32,128, 31, 0, 28,
/* 0x0a00 */ 125, 32, 72, 80,128, 31, 0, 24,125, 32, 72, 80, 57, 41,255,255,
/* 0x0a10 */ 128, 31, 0, 24,125, 32, 0, 56,144, 31, 0, 32,128, 31, 0, 8,
/* 0x0a20 */ 96, 0, 0, 34,128,127, 0, 28,128,159, 0, 32, 56,160, 0, 0,
/* 0x0a30 */ 124, 6, 3,120, 56,224,255,255, 57, 0, 0, 0, 75,255,248,113,
/* 0x0a40 */ 144,127, 0, 36,129,127, 0, 20,129, 63, 0, 32,128, 31, 0, 36,
/* 0x0a50 */ 124, 9, 2, 20,144, 11, 0, 0,129, 63, 0, 36,128, 31, 0, 28,
/* 0x0a60 */ 124, 0, 72, 80,124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4,
/* 0x0a70 */ 124, 8, 3,166,131,235,255,252,125, 97, 91,120, 78,128, 0, 32,
/* 0x0a80 */ 148, 33,255,144,124, 8, 2,166,147,225, 0,108,144, 1, 0,116,
/* 0x0a90 */ 124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,
/* 0x0aa0 */ 144,223, 0, 20,144,255, 0, 24,145, 31, 0, 28, 75,255,245,213,
/* 0x0ab0 */ 124, 96, 27,120,124, 0, 0,248,144, 31, 0, 32,129, 63, 0, 12,
/* 0x0ac0 */ 129, 41, 0, 28,128, 31, 0, 12,124, 9, 2, 20,144, 31, 0, 36,
/* 0x0ad0 */ 128, 31, 0, 16, 47,128, 0, 0, 65,158, 0,144,129, 63, 0, 24,
/* 0x0ae0 */ 128, 9, 0, 0,144, 31, 0, 48,129, 63, 0, 48, 56, 9, 0, 52,
/* 0x0af0 */ 144, 31, 0, 52,129, 63, 0, 48,160, 9, 0, 16, 84, 0, 4, 62,
/* 0x0b00 */ 47,128, 0, 2, 64,158, 0, 28,129, 63, 0, 52,128, 9, 0, 8,
/* 0x0b10 */ 144, 31, 0, 48, 56, 0, 0, 0,144, 31, 0, 44, 72, 0, 0, 36,
/* 0x0b20 */ 129, 63, 0, 52, 57, 41, 0, 32,129,127, 0, 48,128, 9, 0, 8,
/* 0x0b30 */ 124, 0, 88, 80,144, 31, 0, 48,128, 31, 0, 48,144, 31, 0, 44,
/* 0x0b40 */ 129, 63, 0, 52,129, 41, 0, 20,128, 31, 0, 48,124, 9, 2, 20,
/* 0x0b50 */ 144, 31, 0, 40,129, 63, 0, 52,128,127, 0, 48,128,137, 0, 20,
/* 0x0b60 */ 75,255,247,161, 72, 0, 0, 84,129, 63, 0, 12,160, 9, 0, 16,
/* 0x0b70 */ 84, 0, 4, 62, 47,128, 0, 3, 65,158, 0, 16, 56, 0, 0, 16,
/* 0x0b80 */ 144, 31, 0, 84, 72, 0, 0, 12, 56, 0, 0, 0,144, 31, 0, 84,
/* 0x0b90 */ 129, 63, 0, 12,160, 9, 0, 44, 84, 0, 4, 62, 57, 63, 0, 40,
/* 0x0ba0 */ 128,127, 0, 84,128,159, 0, 36,124, 5, 3,120,125, 38, 75,120,
/* 0x0bb0 */ 75,255,253,101,144,127, 0, 44, 56, 0, 0, 0,144, 31, 0, 52,
/* 0x0bc0 */ 129, 63, 0, 12,160, 9, 0, 44, 84, 9, 4, 62,128, 31, 0, 52,
/* 0x0bd0 */ 127,137, 0, 0, 64,157, 3, 84,128, 31, 0, 16, 47,128, 0, 0,
/* 0x0be0 */ 65,158, 0, 56,129, 63, 0, 36,128, 9, 0, 0, 47,128, 0, 6,
/* 0x0bf0 */ 64,158, 0, 40,129, 63, 0, 36,129, 41, 0, 8,128, 31, 0, 44,
/* 0x0c00 */ 124, 9, 2, 20,128,127, 0, 20, 56,128, 0, 3,124, 5, 3,120,
/* 0x0c10 */ 75,255,251,249, 72, 0, 2,248,129, 63, 0, 36,128, 9, 0, 0,
/* 0x0c20 */ 47,128, 0, 1, 64,158, 2,232,129, 63, 0, 36,128, 9, 0, 20,
/* 0x0c30 */ 47,128, 0, 0, 65,158, 2,216,128, 31, 0, 16, 47,128, 0, 0,
/* 0x0c40 */ 65,158, 0,120,129, 63, 0, 36,128, 9, 0, 4, 47,128, 0, 0,
/* 0x0c50 */ 64,158, 0,104,129, 63, 0, 36,129, 41, 0, 8,128, 31, 0, 44,
/* 0x0c60 */ 125,105, 2, 20,129, 63, 0, 12,128, 9, 0, 28,124, 11, 2, 20,
/* 0x0c70 */ 128,127, 0, 20, 56,128, 0, 3,124, 5, 3,120, 75,255,251,141,
/* 0x0c80 */ 129, 63, 0, 12,160, 9, 0, 44, 84, 0, 4, 62,128,127, 0, 20,
/* 0x0c90 */ 56,128, 0, 5,124, 5, 3,120, 75,255,251,113,129, 63, 0, 12,
/* 0x0ca0 */ 160, 9, 0, 42, 84, 0, 4, 62,128,127, 0, 20, 56,128, 0, 4,
/* 0x0cb0 */ 124, 5, 3,120, 75,255,251, 85,129, 63, 0, 36,128, 9, 0, 24,
/* 0x0cc0 */ 84, 0, 7,126, 84, 9, 16, 58, 60, 0,115, 81, 96, 0, 98, 64,
/* 0x0cd0 */ 124, 0, 76, 48, 84, 0, 7,126,144, 31, 0, 48,129, 63, 0, 36,
/* 0x0ce0 */ 128, 9, 0, 16,144, 31, 0, 56,144, 31, 0, 64,129, 63, 0, 36,
/* 0x0cf0 */ 129, 41, 0, 8,128, 31, 0, 44,124, 9, 2, 20,144, 31, 0, 60,
/* 0x0d00 */ 144, 31, 0, 68,129, 63, 0, 36,129, 41, 0, 20,128, 31, 0, 68,
/* 0x0d10 */ 124, 9, 2, 20,144, 31, 0, 72,129, 63, 0, 68,128, 31, 0, 32,
/* 0x0d20 */ 125, 32, 0, 56,144, 31, 0, 76,129, 63, 0, 64,128, 31, 0, 76,
/* 0x0d30 */ 124, 9, 2, 20,144, 31, 0, 64,129, 63, 0, 68,128, 31, 0, 76,
/* 0x0d40 */ 124, 0, 72, 80,144, 31, 0, 68,128, 31, 0, 16, 47,128, 0, 0,
/* 0x0d50 */ 65,158, 0,120,128,127, 0, 68,128,159, 0, 64, 56,160, 0, 3,
/* 0x0d60 */ 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, 75,255,245, 65,
/* 0x0d70 */ 124, 96, 27,120,129, 63, 0, 68,127,128, 72, 0, 65,158, 0, 8,
/* 0x0d80 */ 72, 0, 1, 32, 56, 31, 0, 56,144, 31, 0, 88,128, 31, 0, 48,
/* 0x0d90 */ 84, 0, 7,122, 47,128, 0, 0, 65,158, 0, 16,128, 31, 0, 28,
/* 0x0da0 */ 144, 31, 0, 92, 72, 0, 0, 12, 56, 0, 0, 0,144, 31, 0, 92,
/* 0x0db0 */ 128,127, 0, 16,128,159, 0, 88,128,191, 0, 8,128,223, 0, 92,
/* 0x0dc0 */ 75,255,246, 57, 72, 0, 0, 68,129, 63, 0, 36,129, 41, 0, 4,
/* 0x0dd0 */ 128, 31, 0, 76,124, 0, 72, 80,128,127, 0, 68,128,159, 0, 64,
/* 0x0de0 */ 128,191, 0, 48, 56,192, 0, 18,128,255, 0, 8,124, 8, 3,120,
/* 0x0df0 */ 75,255,244,189,124,105, 27,120,128, 31, 0, 68,127,137, 0, 0,
/* 0x0e00 */ 65,158, 0, 8, 72, 0, 0,156,128, 31, 0, 64,125, 32, 0,208,
/* 0x0e10 */ 128, 31, 0, 32,125, 32, 0, 56,144, 31, 0, 76,128, 31, 0, 48,
/* 0x0e20 */ 84, 0, 7,188, 47,128, 0, 0, 65,158, 0, 28,128, 31, 0, 68,
/* 0x0e30 */ 129, 63, 0, 64,124, 0, 74, 20,124, 3, 3,120,128,159, 0, 76,
/* 0x0e40 */ 75,255,249,105,128, 31, 0, 16, 47,128, 0, 0, 65,158, 0, 92,
/* 0x0e50 */ 128,127, 0, 36,128,159, 0, 44,128,191, 0, 32, 75,255,247,201,
/* 0x0e60 */ 124, 96, 27,120,144, 31, 0, 80,128, 31, 0, 80, 47,128, 0, 0,
/* 0x0e70 */ 65,158, 0, 20,128,127, 0, 20, 56,128, 0, 0,128,191, 0, 80,
/* 0x0e80 */ 75,255,249,137,128,127, 0, 68,128,159, 0, 64,128,191, 0, 48,
/* 0x0e90 */ 75,255,244, 9,124, 96, 27,120, 47,128, 0, 0, 65,158, 0, 12,
/* 0x0ea0 */ 56, 96, 0,127, 75,255,244, 29,129, 63, 0, 64,128, 31, 0, 76,
/* 0x0eb0 */ 125, 41, 2, 20,128, 31, 0, 68,124, 0, 74, 20,144, 31, 0, 68,
/* 0x0ec0 */ 129, 63, 0, 68,128, 31, 0, 72,127,137, 0, 64, 64,156, 0, 64,
/* 0x0ed0 */ 129, 63, 0, 72,128, 31, 0, 68,124, 0, 72, 80,128,127, 0, 68,
/* 0x0ee0 */ 124, 4, 3,120,128,191, 0, 48, 56,192, 0, 50, 56,224,255,255,
/* 0x0ef0 */ 57, 0, 0, 0, 75,255,243,185,124,105, 27,120,128, 31, 0, 68,
/* 0x0f00 */ 127,137, 0, 0, 65,158, 0, 8, 72, 0, 0, 0,129, 63, 0, 36,
/* 0x0f10 */ 56, 9, 0, 32,144, 31, 0, 36,129, 63, 0, 52, 56, 9, 0, 1,
/* 0x0f20 */ 144, 31, 0, 52, 75,255,252,156,128, 31, 0, 24, 47,128, 0, 0,
/* 0x0f30 */ 65,158, 0, 16,129, 63, 0, 24,128, 31, 0, 44,144, 9, 0, 0,
/* 0x0f40 */ 129, 63, 0, 12,129, 41, 0, 24,128, 31, 0, 44,124, 9, 2, 20,
/* 0x0f50 */ 124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,
/* 0x0f60 */ 131,235,255,252,125, 97, 91,120, 78,128, 0, 32,148, 33,255,160,
/* 0x0f70 */ 124, 8, 2,166,147,225, 0, 92,144, 1, 0,100,124, 63, 11,120,
/* 0x0f80 */ 144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,144,223, 0, 20,
/* 0x0f90 */ 144,255, 0, 24,145, 31, 0, 28,145, 63, 0, 32,129, 63, 0, 8,
/* 0x0fa0 */ 129, 41, 0, 4, 56, 9, 0, 12,144, 31, 0, 36,128, 31, 0, 16,
/* 0x0fb0 */ 144, 31, 0, 44,129, 63, 0, 8,128, 9, 0, 0,144, 31, 0, 40,
/* 0x0fc0 */ 128, 31, 0, 8,144, 31, 0, 52,128, 31, 0, 12,144, 31, 0, 48,
/* 0x0fd0 */ 56, 31, 0, 48, 57, 63, 0, 40,124, 3, 3,120,125, 36, 75,120,
/* 0x0fe0 */ 128,191, 0, 24, 56,192, 0, 0, 75,255,244, 17,129, 63, 0, 52,
/* 0x0ff0 */ 128, 31, 0, 36,124, 0, 72, 80,144, 31, 0, 52,128, 31, 0, 12,
/* 0x1000 */ 144, 31, 0, 48,128, 31, 0, 32,144, 31, 0, 56,129, 63, 0, 16,
/* 0x1010 */ 56, 9, 0, 52,144, 31, 0, 60, 56, 31, 0, 48, 57, 63, 0, 56,
/* 0x1020 */ 128,127, 0, 24,128,159, 0, 16,124, 5, 3,120,128,223, 0, 20,
/* 0x1030 */ 125, 39, 75,120,129, 31, 0, 28, 75,255,250, 73,124, 96, 27,120,
/* 0x1040 */ 144, 31, 0, 64,128,127, 0, 20, 56,128, 0, 9,128,191, 0, 64,
/* 0x1050 */ 75,255,247,185, 56, 0, 0, 0,144, 31, 0, 68,129, 63, 0, 16,
/* 0x1060 */ 56, 9, 0, 52,144, 31, 0, 60,129, 63, 0, 16,160, 9, 0, 44,
/* 0x1070 */ 84, 9, 4, 62,128, 31, 0, 68,127,137, 0, 0, 64,157, 0,208,
/* 0x1080 */ 129, 63, 0, 60,128, 9, 0, 0, 47,128, 0, 3, 64,158, 0,164,
/* 0x1090 */ 129, 63, 0, 60,129, 41, 0, 8,128, 31, 0, 56,124, 9, 2, 20,
/* 0x10a0 */ 124, 3, 3,120, 56,128, 0, 0, 56,160, 0, 0, 75,255,242, 61,
/* 0x10b0 */ 124, 96, 27,120,144, 31, 0, 72,128, 31, 0, 72, 47,128, 0, 0,
/* 0x10c0 */ 64,156, 0, 8, 72, 0, 0, 32,128,127, 0, 72,128,159, 0, 16,
/* 0x10d0 */ 56,160, 2, 0, 75,255,242, 13,124, 96, 27,120, 47,128, 2, 0,
/* 0x10e0 */ 65,158, 0, 12, 56, 96, 0,127, 75,255,241,217, 56, 31, 0, 56,
/* 0x10f0 */ 128,127, 0, 72,128,159, 0, 16, 56,160, 0, 0,128,223, 0, 20,
/* 0x1100 */ 124, 7, 3,120, 57, 0, 0, 0, 75,255,249,121,124, 96, 27,120,
/* 0x1110 */ 144, 31, 0, 64,128,127, 0, 20, 56,128, 0, 7,128,191, 0, 56,
/* 0x1120 */ 75,255,246,233,128,127, 0, 72, 75,255,241,201, 72, 0, 0, 32,
/* 0x1130 */ 129, 63, 0, 60, 56, 9, 0, 32,144, 31, 0, 60,129, 63, 0, 68,
/* 0x1140 */ 56, 9, 0, 1,144, 31, 0, 68, 75,255,255, 32,128, 31, 0, 64,
/* 0x1150 */ 124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,
/* 0x1160 */ 131,235,255,252,125, 97, 91,120, 78,128, 0, 32
/* 0x0080 */ 255,255,240, 0,125,104, 2,166, 72, 0, 0, 5,124,104, 2,166,
/* 0x0090 */ 125,104, 3,166,128, 99,255,244, 78,128, 0, 32, 96, 0, 0, 0,
/* 0x00a0 */ 72, 0, 0,125, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191,
/* 0x00b0 */ 77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8,
/* 0x00c0 */ 124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252,
/* 0x00d0 */ 124,137, 3,166, 72, 0, 0, 28, 85, 96, 2,186,124, 3, 0, 80,
/* 0x00e0 */ 124, 0, 58, 20, 80, 11, 1,186,145, 99, 0, 0, 78, 64, 0, 32,
/* 0x00f0 */ 133, 99, 0, 4, 85, 96, 85,190,124, 0, 40, 64, 65,162,255,220,
/* 0x0100 */ 66, 0,255,240, 78,128, 0, 32, 32, 32, 32, 61, 47,112,114,111,
/* 0x0110 */ 99, 47,115,101,108,102, 47,101,120,101, 0, 0,126,200, 2,166,
/* 0x0120 */ 56,129,255,252, 56, 33,239,252, 56, 97,255,252, 59, 90,255,252,
/* 0x0130 */ 132, 4, 0, 4,127,132,208, 64,148, 3, 0, 4, 65,156,255,244,
/* 0x0140 */ 59, 67, 0, 8,148, 3, 0, 4,128, 4, 0, 4, 43,128, 0, 0,
/* 0x0150 */ 144, 3, 0, 4,132, 4, 0, 8,148, 3, 0, 8, 64,158,255,236,
/* 0x0160 */ 58,163, 0, 4,126,154,168, 80,128, 22, 0,100, 58,100, 0, 4,
/* 0x0170 */ 148, 3, 0, 4, 58, 67, 0, 4, 56,128, 0, 0, 56,118, 0,104,
/* 0x0180 */ 72, 0, 1,125,124,123, 27,120, 56,160, 15,255,126, 68,147,120,
/* 0x0190 */ 56,118, 0,104, 72, 0, 1, 81, 56,178,255,252, 44, 3, 0, 0,
/* 0x01a0 */ 65,129, 0, 12, 56,182, 0,100, 56, 96, 0, 16, 56, 99, 0, 4,
/* 0x01b0 */ 124,133, 26, 20,124,105, 3,166,126, 99,155,120, 56,160, 0, 0,
/* 0x01c0 */ 156,163,255,255,140, 4,255,255,156, 3,255,255, 66, 0,255,248,
/* 0x01d0 */ 144,122,255,248, 84, 99, 0, 58,124, 32, 34,120,124, 0, 26,120,
/* 0x01e0 */ 84, 0, 7,126,124, 96, 24, 80,126,164,171,120,127, 84, 24, 80,
/* 0x01f0 */ 132, 4,255,252,127,132, 8, 64,148, 3,255,252, 65,157,255,244,
/* 0x0200 */ 124, 97, 27,120,148, 33,247,240,127, 3,195,120,126,228,187,120,
/* 0x0210 */ 56,161, 0, 16,127, 70,211,120,127,231,251,120,126,200,179,120,
/* 0x0220 */ 127, 41,203,120, 72, 0, 13, 77, 56, 33, 8, 16,124,127, 27,120,
/* 0x0230 */ 128,153, 0,104,127, 35,203,120, 72, 0, 0,165,128,153, 0,104,
/* 0x0240 */ 127, 35,203,120, 72, 0, 0,209, 57, 0, 0, 0,127,103,219,120,
/* 0x0250 */ 44, 7, 0, 0, 65,128, 0, 32, 56,192, 0, 2, 56,160, 0, 1,
/* 0x0260 */ 124,158, 0,208, 56, 96, 0, 0, 72, 0, 0, 89,127, 99,219,120,
/* 0x0270 */ 72, 0, 0,149,127, 67,211,120,128, 3, 0, 0,128,131, 0, 4,
/* 0x0280 */ 56, 99, 0, 8, 43,128, 0, 0, 64,158,255,240,124,137, 3,166,
/* 0x0290 */ 127,163,235,120,127,132,227,120, 56, 0, 0, 91,127,232, 3,166,
/* 0x02a0 */ 184,161, 0, 32, 56, 33, 0,144, 78,128, 4, 32, 56, 0, 15,255,
/* 0x02b0 */ 124, 96, 0, 56,124, 96, 24, 80,124,132, 2, 20, 72, 0, 0, 80,
/* 0x02c0 */ 56, 0, 0, 90, 68, 0, 0, 2, 64,163, 0, 8, 56, 96,255,255,
/* 0x02d0 */ 78,128, 0, 32, 56, 0, 0, 1, 72, 0, 0, 8, 56, 0, 0, 45,
/* 0x02e0 */ 72, 0, 0, 8, 56, 0, 0, 85, 72, 0, 0, 8, 56, 0, 0, 4,
/* 0x02f0 */ 72, 0, 0, 8, 56, 0, 0, 3, 72, 0, 0, 8, 56, 0, 0, 5,
/* 0x0300 */ 72, 0, 0, 8, 56, 0, 0, 6, 72, 0, 0, 8, 56, 0, 0,125,
/* 0x0310 */ 72, 0, 0, 8, 56, 0, 0, 91, 75,255,255,172,124,128, 0, 8,
/* 0x0320 */ 78,128, 0, 32,148, 33,255,208,124, 8, 2,166,147,225, 0, 44,
/* 0x0330 */ 144, 1, 0, 52,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,
/* 0x0340 */ 144,191, 0, 16,129, 63, 0, 8,128, 9, 0, 4,144, 31, 0, 20,
/* 0x0350 */ 128, 31, 0, 12,144, 31, 0, 24,129, 63, 0, 8,129, 41, 0, 0,
/* 0x0360 */ 128, 31, 0, 16,127,137, 0, 64, 64,156, 0, 12, 56, 96, 0,127,
/* 0x0370 */ 75,255,255,101,128, 31, 0, 16,144, 31, 0, 28,129, 63, 0, 28,
/* 0x0380 */ 56, 9,255,255,124, 9, 3,120,145, 63, 0, 28, 56, 0,255,255,
/* 0x0390 */ 127,137, 0, 0, 65,158, 0, 48,129,127, 0, 24,129, 63, 0, 20,
/* 0x03a0 */ 136, 9, 0, 0,152, 11, 0, 0,129, 63, 0, 20, 56, 9, 0, 1,
/* 0x03b0 */ 144, 31, 0, 20,129, 63, 0, 24, 56, 9, 0, 1,144, 31, 0, 24,
/* 0x03c0 */ 75,255,255,188,129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 4,
/* 0x03d0 */ 128, 31, 0, 16,124, 9, 2, 20,144, 11, 0, 4,129,127, 0, 8,
/* 0x03e0 */ 129, 63, 0, 8,129, 41, 0, 0,128, 31, 0, 16,124, 0, 72, 80,
/* 0x03f0 */ 144, 11, 0, 0,129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,
/* 0x0400 */ 131,235,255,252,125, 97, 91,120, 78,128, 0, 32,148, 33,255,176,
/* 0x0410 */ 124, 8, 2,166,147,225, 0, 76,144, 1, 0, 84,124, 63, 11,120,
/* 0x0420 */ 144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,144,223, 0, 20,
/* 0x0430 */ 129, 63, 0, 12,128, 9, 0, 0, 47,128, 0, 0, 65,158, 1,228,
/* 0x0440 */ 56, 31, 0, 32,128,127, 0, 8,124, 4, 3,120, 56,160, 0, 12,
/* 0x0450 */ 75,255,254,213,128, 31, 0, 32, 47,128, 0, 0, 64,158, 0, 48,
/* 0x0460 */ 128, 31, 0, 36, 61, 32, 33, 88, 97, 41, 80, 85,127,128, 72, 0,
/* 0x0470 */ 65,158, 0, 8, 72, 0, 0, 36,129, 63, 0, 8,128, 9, 0, 0,
/* 0x0480 */ 47,128, 0, 0, 65,158, 1,156, 72, 0, 0, 16,128, 31, 0, 36,
/* 0x0490 */ 47,128, 0, 0, 64,158, 0, 12, 56, 96, 0,127, 75,255,254, 57,
/* 0x04a0 */ 128, 31, 0, 36,129, 63, 0, 32,127,128, 72, 64, 65,157,255,236,
/* 0x04b0 */ 129, 63, 0, 12,129,127, 0, 32,128, 9, 0, 0,127,139, 0, 64,
/* 0x04c0 */ 65,157,255,216,128, 31, 0, 36,129, 63, 0, 32,127,128, 72, 64,
/* 0x04d0 */ 64,156, 1, 8,128, 31, 0, 32,144, 31, 0, 48,129, 63, 0, 8,
/* 0x04e0 */ 129,127, 0, 12, 57, 95, 0, 48,136, 31, 0, 40, 84, 0, 6, 62,
/* 0x04f0 */ 129, 31, 0, 16,125, 9, 3,166,128,105, 0, 4,128,159, 0, 36,
/* 0x0500 */ 128,171, 0, 4,125, 70, 83,120,124, 7, 3,120, 78,128, 4, 33,
/* 0x0510 */ 124, 96, 27,120,144, 31, 0, 52,128, 31, 0, 52, 47,128, 0, 0,
/* 0x0520 */ 64,158,255,120,128, 31, 0, 32,129, 63, 0, 48,127,128, 72, 0,
/* 0x0530 */ 64,158,255,104,136, 31, 0, 41, 84, 0, 6, 62, 47,128, 0, 0,
/* 0x0540 */ 65,158, 0,100,128, 31, 0, 20, 47,128, 0, 0, 65,158, 0, 88,
/* 0x0550 */ 128, 31, 0, 48, 43,128, 2, 0, 65,157, 0, 28,129, 63, 0, 12,
/* 0x0560 */ 129, 41, 0, 0,128, 31, 0, 32,127,137, 0, 0, 65,158, 0, 8,
/* 0x0570 */ 72, 0, 0, 52,129, 63, 0, 12,136, 31, 0, 42, 84, 11, 6, 62,
/* 0x0580 */ 136, 31, 0, 41, 84, 0, 6, 62,129, 31, 0, 20,125, 9, 3,166,
/* 0x0590 */ 128,105, 0, 4,128,159, 0, 48,125,101, 91,120,124, 6, 3,120,
/* 0x05a0 */ 78,128, 4, 33,129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 4,
/* 0x05b0 */ 128, 31, 0, 36,124, 9, 2, 20,144, 11, 0, 4,129,127, 0, 8,
/* 0x05c0 */ 129, 63, 0, 8,129, 41, 0, 0,128, 31, 0, 36,124, 0, 72, 80,
/* 0x05d0 */ 144, 11, 0, 0, 72, 0, 0, 24,129, 63, 0, 12,128,127, 0, 8,
/* 0x05e0 */ 128,137, 0, 4,128,191, 0, 36, 75,255,253, 61,129,127, 0, 12,
/* 0x05f0 */ 129, 63, 0, 12,129, 41, 0, 4,128, 31, 0, 32,124, 9, 2, 20,
/* 0x0600 */ 144, 11, 0, 4,129,127, 0, 12,129, 63, 0, 12,129, 41, 0, 0,
/* 0x0610 */ 128, 31, 0, 32,124, 0, 72, 80,144, 11, 0, 0, 75,255,254, 20,
/* 0x0620 */ 129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,131,235,255,252,
/* 0x0630 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,208,124, 8, 2,166,
/* 0x0640 */ 147,225, 0, 44,144, 1, 0, 52,124, 63, 11,120,144,127, 0, 8,
/* 0x0650 */ 144,159, 0, 12,144,191, 0, 16, 56, 0, 0, 0,144, 31, 0, 20,
/* 0x0660 */ 56, 0, 0, 0,144, 31, 0, 24,129, 63, 0, 8,128, 9, 0, 0,
/* 0x0670 */ 47,128, 0, 1, 64,158, 1, 40,129, 63, 0, 8,128, 9, 0, 24,
/* 0x0680 */ 84, 0, 7,254, 47,128, 0, 0, 65,158, 1, 20,129, 63, 0, 8,
/* 0x0690 */ 129,127, 0, 8,129, 41, 0, 20,128, 11, 0, 8,125, 41, 2, 20,
/* 0x06a0 */ 128, 31, 0, 12,124, 9, 2, 20,144, 31, 0, 24,129, 63, 0, 8,
/* 0x06b0 */ 129,127, 0, 8,129, 41, 0, 20,128, 11, 0, 16,127,137, 0, 0,
/* 0x06c0 */ 64,158, 0, 28,128, 31, 0, 24,125, 32, 0,208,128, 31, 0, 16,
/* 0x06d0 */ 125, 32, 0, 56, 43,128, 0, 7, 65,157, 0,104,129,127, 0, 8,
/* 0x06e0 */ 128, 31, 0, 12, 29, 32, 0, 52,128, 11, 0, 8,125, 41, 2, 20,
/* 0x06f0 */ 56, 9, 0, 8,144, 31, 0, 24,129, 63, 0, 8,128, 9, 0, 4,
/* 0x0700 */ 47,128, 0, 0, 65,158, 0, 60, 56, 0, 0, 1,144, 31, 0, 20,
/* 0x0710 */ 56, 96, 0, 0, 56,128, 16, 0, 56,160, 0, 3, 56,192, 0, 34,
/* 0x0720 */ 56,224,255,255, 57, 0, 0, 0, 75,255,251,153,144,127, 0, 24,
/* 0x0730 */ 128, 31, 0, 24, 47,128, 0, 0, 64,158, 0, 8, 72, 0, 0, 88,
/* 0x0740 */ 129, 63, 0, 24, 56, 9, 0, 3, 84, 0, 0, 58,144, 31, 0, 24,
/* 0x0750 */ 129, 63, 0, 24, 60, 0, 68, 0, 96, 0, 0, 2,144, 9, 0, 0,
/* 0x0760 */ 129, 63, 0, 24, 57, 41, 0, 4, 60, 0, 78,128, 96, 0, 0, 32,
/* 0x0770 */ 144, 9, 0, 0,128, 31, 0, 20, 47,128, 0, 0, 65,158, 0, 32,
/* 0x0780 */ 128,127, 0, 24, 56,128, 0, 8, 56,160, 0, 5, 75,255,251, 33,
/* 0x0790 */ 72, 0, 0, 12, 56, 0, 0, 0,144, 31, 0, 24,128, 31, 0, 24,
/* 0x07a0 */ 124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,
/* 0x07b0 */ 131,235,255,252,125, 97, 91,120, 78,128, 0, 32,148, 33,255,224,
/* 0x07c0 */ 147,225, 0, 28,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,
/* 0x07d0 */ 128, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 52,129, 63, 0, 8,
/* 0x07e0 */ 125, 43, 75,120, 56, 0, 0, 0,152, 11, 0, 0, 57, 41, 0, 1,
/* 0x07f0 */ 145, 63, 0, 8,129, 63, 0, 12, 56, 9,255,255,144, 31, 0, 12,
/* 0x0800 */ 47,128, 0, 0, 65,158, 0, 8, 75,255,255,212,129, 97, 0, 0,
/* 0x0810 */ 131,235,255,252,125, 97, 91,120, 78,128, 0, 32,148, 33,255,208,
/* 0x0820 */ 124, 8, 2,166,147,225, 0, 44,144, 1, 0, 52,124, 63, 11,120,
/* 0x0830 */ 144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,128, 31, 0, 8,
/* 0x0840 */ 47,128, 0, 0, 65,158, 0,204,128, 31, 0, 8, 84, 0, 7,254,
/* 0x0850 */ 47,128, 0, 0, 64,158, 0,188, 56, 0, 0, 0,144, 31, 0, 20,
/* 0x0860 */ 56, 0, 0, 0,144, 31, 0, 24,129, 63, 0, 8,129, 41, 0, 0,
/* 0x0870 */ 128, 31, 0, 12,127,137, 0, 0, 64,158, 0, 32,129, 63, 0, 8,
/* 0x0880 */ 128, 31, 0, 16,144, 9, 0, 4,129, 63, 0, 24, 56, 9, 0, 1,
/* 0x0890 */ 144, 31, 0, 24, 72, 0, 0, 28,129, 63, 0, 8,128, 9, 0, 0,
/* 0x08a0 */ 47,128, 0, 1, 64,158, 0, 12,128, 31, 0, 8,144, 31, 0, 20,
/* 0x08b0 */ 129, 63, 0, 8,128, 9, 0, 0, 47,128, 0, 0, 64,158, 0, 68,
/* 0x08c0 */ 128, 31, 0, 24, 47,128, 0, 0, 65,158, 0, 8, 72, 0, 0, 68,
/* 0x08d0 */ 128, 31, 0, 20, 47,128, 0, 0, 65,158, 0, 32,129, 63, 0, 20,
/* 0x08e0 */ 128, 31, 0, 12,144, 9, 0, 0,129, 63, 0, 20,128, 31, 0, 16,
/* 0x08f0 */ 144, 9, 0, 4, 72, 0, 0, 28, 56, 96, 0,127, 75,255,249,217,
/* 0x0900 */ 129, 63, 0, 8, 56, 9, 0, 8,144, 31, 0, 8, 75,255,255, 92,
/* 0x0910 */ 129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,131,235,255,252,
/* 0x0920 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,208,124, 8, 2,166,
/* 0x0930 */ 147,225, 0, 44,144, 1, 0, 52,124, 63, 11,120,144,127, 0, 8,
/* 0x0940 */ 144,159, 0, 12,144,191, 0, 16,144,223, 0, 20, 75,255,247, 57,
/* 0x0950 */ 124, 96, 27,120,144, 31, 0, 24, 56, 0,255,255,144, 31, 0, 28,
/* 0x0960 */ 56, 0, 0, 0,144, 31, 0, 32, 56, 0, 0, 0,144, 31, 0, 36,
/* 0x0970 */ 129, 63, 0, 16, 56, 9,255,255,144, 31, 0, 16, 47,128, 0, 0,
/* 0x0980 */ 65,156, 0,124,129, 63, 0, 12,128, 9, 0, 0, 47,128, 0, 1,
/* 0x0990 */ 64,158, 0, 92,129, 63, 0, 12,129, 41, 0, 8,128, 31, 0, 28,
/* 0x09a0 */ 127,137, 0, 64, 64,156, 0, 16,129, 63, 0, 12,128, 9, 0, 8,
/* 0x09b0 */ 144, 31, 0, 28,129, 63, 0, 12,129,127, 0, 12,129, 41, 0, 20,
/* 0x09c0 */ 128, 11, 0, 8,125, 41, 2, 20,128, 31, 0, 32,127,137, 0, 64,
/* 0x09d0 */ 64,157, 0, 28,129, 63, 0, 12,129,127, 0, 12,129, 41, 0, 20,
/* 0x09e0 */ 128, 11, 0, 8,124, 9, 2, 20,144, 31, 0, 32,129, 63, 0, 12,
/* 0x09f0 */ 56, 9, 0, 32,144, 31, 0, 12, 75,255,255,120,129, 63, 0, 28,
/* 0x0a00 */ 128, 31, 0, 24,125, 32, 0, 56,144, 31, 0, 28,129, 63, 0, 32,
/* 0x0a10 */ 128, 31, 0, 28,125, 32, 72, 80,128, 31, 0, 24,125, 32, 72, 80,
/* 0x0a20 */ 57, 41,255,255,128, 31, 0, 24,125, 32, 0, 56,144, 31, 0, 32,
/* 0x0a30 */ 128, 31, 0, 8, 96, 0, 0, 34,128,127, 0, 28,128,159, 0, 32,
/* 0x0a40 */ 56,160, 0, 0,124, 6, 3,120, 56,224,255,255, 57, 0, 0, 0,
/* 0x0a50 */ 75,255,248,113,144,127, 0, 36,129,127, 0, 20,129, 63, 0, 32,
/* 0x0a60 */ 128, 31, 0, 36,124, 9, 2, 20,144, 11, 0, 0,129, 63, 0, 36,
/* 0x0a70 */ 128, 31, 0, 28,124, 0, 72, 80,124, 3, 3,120,129, 97, 0, 0,
/* 0x0a80 */ 128, 11, 0, 4,124, 8, 3,166,131,235,255,252,125, 97, 91,120,
/* 0x0a90 */ 78,128, 0, 32,148, 33,255,144,124, 8, 2,166,147,225, 0,108,
/* 0x0aa0 */ 144, 1, 0,116,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,
/* 0x0ab0 */ 144,191, 0, 16,144,223, 0, 20,144,255, 0, 24,145, 31, 0, 28,
/* 0x0ac0 */ 75,255,245,197,124, 96, 27,120,124, 0, 0,248,144, 31, 0, 32,
/* 0x0ad0 */ 129, 63, 0, 12,129, 41, 0, 28,128, 31, 0, 12,124, 9, 2, 20,
/* 0x0ae0 */ 144, 31, 0, 36,128, 31, 0, 16, 47,128, 0, 0, 65,158, 0,128,
/* 0x0af0 */ 129, 63, 0, 24,128, 9, 0, 0,144, 31, 0, 48,129, 63, 0, 48,
/* 0x0b00 */ 56, 9, 0, 52,144, 31, 0, 52,129, 63, 0, 48,160, 9, 0, 16,
/* 0x0b10 */ 84, 0, 4, 62, 47,128, 0, 2, 64,158, 0, 28,129, 63, 0, 52,
/* 0x0b20 */ 128, 9, 0, 8,144, 31, 0, 48, 56, 0, 0, 0,144, 31, 0, 44,
/* 0x0b30 */ 72, 0, 0, 36,129, 63, 0, 52, 57, 41, 0, 32,129,127, 0, 48,
/* 0x0b40 */ 128, 9, 0, 8,124, 0, 88, 80,144, 31, 0, 48,128, 31, 0, 48,
/* 0x0b50 */ 144, 31, 0, 44,129, 63, 0, 52,129, 41, 0, 20,128, 31, 0, 48,
/* 0x0b60 */ 124, 9, 2, 20,144, 31, 0, 40, 72, 0, 0, 84,129, 63, 0, 12,
/* 0x0b70 */ 160, 9, 0, 16, 84, 0, 4, 62, 47,128, 0, 3, 65,158, 0, 16,
/* 0x0b80 */ 56, 0, 0, 16,144, 31, 0, 84, 72, 0, 0, 12, 56, 0, 0, 0,
/* 0x0b90 */ 144, 31, 0, 84,129, 63, 0, 12,160, 9, 0, 44, 84, 0, 4, 62,
/* 0x0ba0 */ 57, 63, 0, 40,128,127, 0, 84,128,159, 0, 36,124, 5, 3,120,
/* 0x0bb0 */ 125, 38, 75,120, 75,255,253,117,144,127, 0, 44, 56, 0, 0, 0,
/* 0x0bc0 */ 144, 31, 0, 52,129, 63, 0, 12,160, 9, 0, 44, 84, 9, 4, 62,
/* 0x0bd0 */ 128, 31, 0, 52,127,137, 0, 0, 64,157, 3, 84,128, 31, 0, 16,
/* 0x0be0 */ 47,128, 0, 0, 65,158, 0, 56,129, 63, 0, 36,128, 9, 0, 0,
/* 0x0bf0 */ 47,128, 0, 6, 64,158, 0, 40,129, 63, 0, 36,129, 41, 0, 8,
/* 0x0c00 */ 128, 31, 0, 44,124, 9, 2, 20,128,127, 0, 20, 56,128, 0, 3,
/* 0x0c10 */ 124, 5, 3,120, 75,255,252, 9, 72, 0, 2,248,129, 63, 0, 36,
/* 0x0c20 */ 128, 9, 0, 0, 47,128, 0, 1, 64,158, 2,232,129, 63, 0, 36,
/* 0x0c30 */ 128, 9, 0, 20, 47,128, 0, 0, 65,158, 2,216,128, 31, 0, 16,
/* 0x0c40 */ 47,128, 0, 0, 65,158, 0,120,129, 63, 0, 36,128, 9, 0, 4,
/* 0x0c50 */ 47,128, 0, 0, 64,158, 0,104,129, 63, 0, 36,129, 41, 0, 8,
/* 0x0c60 */ 128, 31, 0, 44,125,105, 2, 20,129, 63, 0, 12,128, 9, 0, 28,
/* 0x0c70 */ 124, 11, 2, 20,128,127, 0, 20, 56,128, 0, 3,124, 5, 3,120,
/* 0x0c80 */ 75,255,251,157,129, 63, 0, 12,160, 9, 0, 44, 84, 0, 4, 62,
/* 0x0c90 */ 128,127, 0, 20, 56,128, 0, 5,124, 5, 3,120, 75,255,251,129,
/* 0x0ca0 */ 129, 63, 0, 12,160, 9, 0, 42, 84, 0, 4, 62,128,127, 0, 20,
/* 0x0cb0 */ 56,128, 0, 4,124, 5, 3,120, 75,255,251,101,129, 63, 0, 36,
/* 0x0cc0 */ 128, 9, 0, 24, 84, 0, 7,126, 84, 9, 16, 58, 60, 0,115, 81,
/* 0x0cd0 */ 96, 0, 98, 64,124, 0, 76, 48, 84, 0, 7,126,144, 31, 0, 48,
/* 0x0ce0 */ 129, 63, 0, 36,128, 9, 0, 16,144, 31, 0, 56,144, 31, 0, 64,
/* 0x0cf0 */ 129, 63, 0, 36,129, 41, 0, 8,128, 31, 0, 44,124, 9, 2, 20,
/* 0x0d00 */ 144, 31, 0, 60,144, 31, 0, 68,129, 63, 0, 36,129, 41, 0, 20,
/* 0x0d10 */ 128, 31, 0, 68,124, 9, 2, 20,144, 31, 0, 72,129, 63, 0, 68,
/* 0x0d20 */ 128, 31, 0, 32,125, 32, 0, 56,144, 31, 0, 76,129, 63, 0, 64,
/* 0x0d30 */ 128, 31, 0, 76,124, 9, 2, 20,144, 31, 0, 64,129, 63, 0, 68,
/* 0x0d40 */ 128, 31, 0, 76,124, 0, 72, 80,144, 31, 0, 68,128, 31, 0, 16,
/* 0x0d50 */ 47,128, 0, 0, 65,158, 0,120,128,127, 0, 68,128,159, 0, 64,
/* 0x0d60 */ 56,160, 0, 3, 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0,
/* 0x0d70 */ 75,255,245, 81,124, 96, 27,120,129, 63, 0, 68,127,128, 72, 0,
/* 0x0d80 */ 65,158, 0, 8, 72, 0, 1, 32, 56, 31, 0, 56,144, 31, 0, 88,
/* 0x0d90 */ 128, 31, 0, 48, 84, 0, 7,122, 47,128, 0, 0, 65,158, 0, 16,
/* 0x0da0 */ 128, 31, 0, 28,144, 31, 0, 92, 72, 0, 0, 12, 56, 0, 0, 0,
/* 0x0db0 */ 144, 31, 0, 92,128,127, 0, 16,128,159, 0, 88,128,191, 0, 8,
/* 0x0dc0 */ 128,223, 0, 92, 75,255,246, 73, 72, 0, 0, 68,129, 63, 0, 36,
/* 0x0dd0 */ 129, 41, 0, 4,128, 31, 0, 76,124, 0, 72, 80,128,127, 0, 68,
/* 0x0de0 */ 128,159, 0, 64,128,191, 0, 48, 56,192, 0, 18,128,255, 0, 8,
/* 0x0df0 */ 124, 8, 3,120, 75,255,244,205,124,105, 27,120,128, 31, 0, 68,
/* 0x0e00 */ 127,137, 0, 0, 65,158, 0, 8, 72, 0, 0,156,128, 31, 0, 64,
/* 0x0e10 */ 125, 32, 0,208,128, 31, 0, 32,125, 32, 0, 56,144, 31, 0, 76,
/* 0x0e20 */ 128, 31, 0, 48, 84, 0, 7,188, 47,128, 0, 0, 65,158, 0, 28,
/* 0x0e30 */ 128, 31, 0, 68,129, 63, 0, 64,124, 0, 74, 20,124, 3, 3,120,
/* 0x0e40 */ 128,159, 0, 76, 75,255,249,121,128, 31, 0, 16, 47,128, 0, 0,
/* 0x0e50 */ 65,158, 0, 92,128,127, 0, 36,128,159, 0, 44,128,191, 0, 32,
/* 0x0e60 */ 75,255,247,217,124, 96, 27,120,144, 31, 0, 80,128, 31, 0, 80,
/* 0x0e70 */ 47,128, 0, 0, 65,158, 0, 20,128,127, 0, 20, 56,128, 0, 0,
/* 0x0e80 */ 128,191, 0, 80, 75,255,249,153,128,127, 0, 68,128,159, 0, 64,
/* 0x0e90 */ 128,191, 0, 48, 75,255,244, 25,124, 96, 27,120, 47,128, 0, 0,
/* 0x0ea0 */ 65,158, 0, 12, 56, 96, 0,127, 75,255,244, 45,129, 63, 0, 64,
/* 0x0eb0 */ 128, 31, 0, 76,125, 41, 2, 20,128, 31, 0, 68,124, 0, 74, 20,
/* 0x0ec0 */ 144, 31, 0, 68,129, 63, 0, 68,128, 31, 0, 72,127,137, 0, 64,
/* 0x0ed0 */ 64,156, 0, 64,129, 63, 0, 72,128, 31, 0, 68,124, 0, 72, 80,
/* 0x0ee0 */ 128,127, 0, 68,124, 4, 3,120,128,191, 0, 48, 56,192, 0, 50,
/* 0x0ef0 */ 56,224,255,255, 57, 0, 0, 0, 75,255,243,201,124,105, 27,120,
/* 0x0f00 */ 128, 31, 0, 68,127,137, 0, 0, 65,158, 0, 8, 72, 0, 0, 0,
/* 0x0f10 */ 129, 63, 0, 36, 56, 9, 0, 32,144, 31, 0, 36,129, 63, 0, 52,
/* 0x0f20 */ 56, 9, 0, 1,144, 31, 0, 52, 75,255,252,156,128, 31, 0, 24,
/* 0x0f30 */ 47,128, 0, 0, 65,158, 0, 16,129, 63, 0, 24,128, 31, 0, 44,
/* 0x0f40 */ 144, 9, 0, 0,129, 63, 0, 12,129, 41, 0, 24,128, 31, 0, 44,
/* 0x0f50 */ 124, 9, 2, 20,124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4,
/* 0x0f60 */ 124, 8, 3,166,131,235,255,252,125, 97, 91,120, 78,128, 0, 32,
/* 0x0f70 */ 148, 33,255,160,124, 8, 2,166,147,225, 0, 92,144, 1, 0,100,
/* 0x0f80 */ 124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,
/* 0x0f90 */ 144,223, 0, 20,144,255, 0, 24,145, 31, 0, 28,145, 63, 0, 32,
/* 0x0fa0 */ 129, 63, 0, 8,129, 41, 0, 4, 56, 9, 0, 12,144, 31, 0, 36,
/* 0x0fb0 */ 128, 31, 0, 16,144, 31, 0, 44,129, 63, 0, 8,128, 9, 0, 0,
/* 0x0fc0 */ 144, 31, 0, 40,128, 31, 0, 8,144, 31, 0, 52,128, 31, 0, 12,
/* 0x0fd0 */ 144, 31, 0, 48, 56, 31, 0, 48, 57, 63, 0, 40,124, 3, 3,120,
/* 0x0fe0 */ 125, 36, 75,120,128,191, 0, 24, 56,192, 0, 0, 75,255,244, 33,
/* 0x0ff0 */ 129, 63, 0, 52,128, 31, 0, 36,124, 0, 72, 80,144, 31, 0, 52,
/* 0x1000 */ 128, 31, 0, 12,144, 31, 0, 48,128, 31, 0, 32,144, 31, 0, 56,
/* 0x1010 */ 129, 63, 0, 16, 56, 9, 0, 52,144, 31, 0, 60, 56, 31, 0, 48,
/* 0x1020 */ 57, 63, 0, 56,128,127, 0, 24,128,159, 0, 16,124, 5, 3,120,
/* 0x1030 */ 128,223, 0, 20,125, 39, 75,120,129, 31, 0, 28, 75,255,250, 89,
/* 0x1040 */ 124, 96, 27,120,144, 31, 0, 64,128,127, 0, 20, 56,128, 0, 9,
/* 0x1050 */ 128,191, 0, 64, 75,255,247,201, 56, 0, 0, 0,144, 31, 0, 68,
/* 0x1060 */ 129, 63, 0, 16, 56, 9, 0, 52,144, 31, 0, 60,129, 63, 0, 16,
/* 0x1070 */ 160, 9, 0, 44, 84, 9, 4, 62,128, 31, 0, 68,127,137, 0, 0,
/* 0x1080 */ 64,157, 0,208,129, 63, 0, 60,128, 9, 0, 0, 47,128, 0, 3,
/* 0x1090 */ 64,158, 0,164,129, 63, 0, 60,129, 41, 0, 8,128, 31, 0, 56,
/* 0x10a0 */ 124, 9, 2, 20,124, 3, 3,120, 56,128, 0, 0, 56,160, 0, 0,
/* 0x10b0 */ 75,255,242, 77,124, 96, 27,120,144, 31, 0, 72,128, 31, 0, 72,
/* 0x10c0 */ 47,128, 0, 0, 64,156, 0, 8, 72, 0, 0, 32,128,127, 0, 72,
/* 0x10d0 */ 128,159, 0, 16, 56,160, 2, 0, 75,255,242, 29,124, 96, 27,120,
/* 0x10e0 */ 47,128, 2, 0, 65,158, 0, 12, 56, 96, 0,127, 75,255,241,233,
/* 0x10f0 */ 56, 31, 0, 56,128,127, 0, 72,128,159, 0, 16, 56,160, 0, 0,
/* 0x1100 */ 128,223, 0, 20,124, 7, 3,120, 57, 0, 0, 0, 75,255,249,137,
/* 0x1110 */ 124, 96, 27,120,144, 31, 0, 64,128,127, 0, 20, 56,128, 0, 7,
/* 0x1120 */ 128,191, 0, 56, 75,255,246,249,128,127, 0, 72, 75,255,241,217,
/* 0x1130 */ 72, 0, 0, 32,129, 63, 0, 60, 56, 9, 0, 32,144, 31, 0, 60,
/* 0x1140 */ 129, 63, 0, 68, 56, 9, 0, 1,144, 31, 0, 68, 75,255,255, 32,
/* 0x1150 */ 128, 31, 0, 64,124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4,
/* 0x1160 */ 124, 8, 3,166,131,235,255,252,125, 97, 91,120, 78,128, 0, 32
};
+521 -520
View File
File diff suppressed because it is too large Load Diff
+617 -618
View File
File diff suppressed because it is too large Load Diff
+577 -577
View File
File diff suppressed because it is too large Load Diff
+634 -634
View File
File diff suppressed because it is too large Load Diff
+615 -616
View File
File diff suppressed because it is too large Load Diff

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