Compare commits

...

23 Commits

Author SHA1 Message Date
Markus F.X.J. Oberhumer d14fa5f8a4 all: prepare for release 2023-11-01 12:00:03 +01:00
Markus F.X.J. Oberhumer 79263a52ac submodules: update for new versions 2023-11-01 11:40:28 +01:00
Markus F.X.J. Oberhumer ecb3f83e83 CI updates 2023-11-01 11:28:35 +01:00
Markus F.X.J. Oberhumer f6aedb35ce CI updates 2023-11-01 10:06:27 +01:00
Markus F.X.J. Oberhumer 3b7d25ac49 CI updates 2023-11-01 08:48:27 +01:00
Markus F.X.J. Oberhumer e964d4acf3 src/util: change TriBool logic to use a bool template parameter 2023-10-31 12:24:44 +01:00
Markus F.X.J. Oberhumer e306085b81 CI updates 2023-10-31 11:49:18 +01:00
Markus F.X.J. Oberhumer b094ad4f2b CI updates 2023-10-31 10:34:55 +01:00
Markus F.X.J. Oberhumer 19c6b969ab src/options: fix bad TriBool ThirdValue for pefile compress_resources 2023-10-30 21:36:36 +01:00
Markus F.X.J. Oberhumer acfda848cd src/check: add some more tribool checks 2023-10-30 20:29:05 +01:00
John Reiser 52400e2561 /proc/self/exe now is optional
... for the benefit of 'unshare', 'chroot', etc.
If not present, then upx run-time stub unmaps all pages of original main program.
https://github.com/upx/upx/issues/721

	modified:   stub/src/amd64-linux.elf-entry.S
	modified:   stub/src/amd64-linux.elf-fold.S
	modified:   stub/src/arm.v4a-linux.elf-entry.S
	modified:   stub/src/arm.v4a-linux.elf-fold.S
	modified:   stub/src/arm64-linux.elf-entry.S
	modified:   stub/src/arm64-linux.elf-fold.S
	modified:   stub/src/i386-linux.elf-fold.S
	modified:   stub/src/mipsel.r3000-linux.elf-fold.S
	modified:   stub/src/powerpc-linux.elf-fold.S
	modified:   stub/src/powerpc64le-linux.elf-fold.S
	modified:   ../misc/testsuite/upx_testsuite_1-expected_sha256sums.sh

           ... plus all associaed *.h, *.map, *.dump in stub/
2023-10-30 08:23:52 -07:00
Markus F.X.J. Oberhumer f62576a2be CI updates and minor cleanups 2023-10-30 14:15:35 +01:00
Markus F.X.J. Oberhumer 19bf9f59e9 src: clang-format stub/tools/armpe/armpe_tester.c 2023-10-30 13:07:20 +01:00
Markus F.X.J. Oberhumer fadf7cfc7b src: work on packed_struct cleanup 2023-10-30 12:55:07 +01:00
Markus F.X.J. Oberhumer ec0c9399fa src: clang-format conf.h 2023-10-30 12:30:58 +01:00
Markus F.X.J. Oberhumer 37b923245d all: various cleanups 2023-10-30 12:17:51 +01:00
Markus F.X.J. Oberhumer 38a676f6f7 src: introduce upx::ptr_reinterpret_cast 2023-10-29 16:52:24 +01:00
Markus F.X.J. Oberhumer cd1df6f6b1 all: update version 2023-10-29 15:37:13 +01:00
Markus F.X.J. Oberhumer 4a24fe8c53 CI updates and cleanups 2023-10-29 15:12:33 +01:00
Markus F.X.J. Oberhumer 6dac3dd248 CI updates 2023-10-27 09:24:06 +02:00
Markus F.X.J. Oberhumer 37d393cbc8 src: prefer using SetFileTime() on Windows 2023-10-27 06:58:14 +02:00
Markus F.X.J. Oberhumer 27f155374a testsuite: update checksums caused by version bump 2023-10-26 12:28:52 +02:00
Markus F.X.J. Oberhumer 8102137ad7 all: post-release version bump 2023-10-26 12:25:13 +02:00
98 changed files with 5664 additions and 5303 deletions
-1
View File
@@ -1,5 +1,4 @@
version: 2 version: 2
updates: updates:
- package-ecosystem: 'github-actions' - package-ecosystem: 'github-actions'
directory: '/' directory: '/'
+6 -5
View File
@@ -13,8 +13,8 @@ env:
CTEST_OUTPUT_ON_FAILURE: "ON" CTEST_OUTPUT_ON_FAILURE: "ON"
DEBIAN_FRONTEND: noninteractive DEBIAN_FRONTEND: noninteractive
UPX_CMAKE_BUILD_FLAGS: --verbose UPX_CMAKE_BUILD_FLAGS: --verbose
# 2023-10-24 # 2023-11-01
ZIG_DIST_VERSION: 0.12.0-dev.1245+a07f288eb ZIG_DIST_VERSION: 0.12.0-dev.1369+a09ba455c
jobs: jobs:
job-rebuild-and-verify-stubs: job-rebuild-and-verify-stubs:
@@ -28,8 +28,8 @@ jobs:
if ! test -e /usr/bin/python2; then if ! test -e /usr/bin/python2; then
####sudo apt-get update && sudo apt-get install -y --no-install-recommends python2-minimal ####sudo apt-get update && sudo apt-get install -y --no-install-recommends python2-minimal
# install python2-minimal packages from Debian-11 # 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_amd64.deb' 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_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 dpkg -i ./*python2*.deb && rm ./*python2*.deb && sudo ldconfig
sudo ln -s -v python2.7 /usr/bin/python2 sudo ln -s -v python2.7 /usr/bin/python2
fi fi
@@ -317,7 +317,8 @@ jobs:
where cl & where link where cl & where link
set RUN_CL=cl ${{ matrix.cl_machine_flags }} -MT set RUN_CL=cl ${{ matrix.cl_machine_flags }} -MT
set RUN_LIB=link -lib ${{ matrix.link_machine_flags }} set RUN_LIB=link -lib ${{ matrix.link_machine_flags }}
set DEFS=-D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DWIN32_LEAN_AND_MEAN @rem UPX only uses the very basic Windows API
set DEFS=-D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0400
set BDIR=%H%\build\%C%\%B% set BDIR=%H%\build\%C%\%B%
git rev-parse --short=12 HEAD > %BDIR%\upx\.GITREV.txt git rev-parse --short=12 HEAD > %BDIR%\upx\.GITREV.txt
@REM ===== build bzip2 ===== @REM ===== build bzip2 =====
+1 -1
View File
@@ -17,5 +17,5 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: { submodules: false } with: { submodules: false }
- name: 'Spell check with crate-ci/typos' - name: 'Spell check with crate-ci/typos'
uses: crate-ci/typos@c004e98018d8621614d1ca516eed8ca2d04b365a # v1.16.20 uses: crate-ci/typos@47dd2976043bd5c76a33aa9300b328a176a1d6f7 # v1.16.21
with: { config: ./.github/typos_config.toml } with: { config: ./.github/typos_config.toml }
@@ -14,7 +14,14 @@ jobs:
if: github.repository_owner == 'upx' if: github.repository_owner == 'upx'
strategy: strategy:
fail-fast: false fail-fast: false
matrix: {container: ['alpine:3.16','alpine:3.17','alpine:3.18','alpine:edge','i386/alpine:edge']} matrix:
include:
- container: 'alpine:3.16'
- container: 'alpine:3.17'
- container: 'alpine:3.18'
- container: 'alpine:edge'
- container: 'i386/alpine:3.18'
- container: 'i386/alpine:edge'
name: ${{ format('Analyze clang-analyzer {0}', matrix.container) }} name: ${{ format('Analyze clang-analyzer {0}', matrix.container) }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: ${{ matrix.container }} container: ${{ matrix.container }}
@@ -25,7 +32,7 @@ jobs:
run: | run: |
# this seems to be needed when running in a container (beause of UID mismatch??) # this seems to be needed when running in a container (beause of UID mismatch??)
git config --global --add safe.directory '*' git config --global --add safe.directory '*'
git clone --branch "$GITHUB_REF_NAME" --depth 1 https://github.com/upx/upx . git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" .
git submodule update --init git submodule update --init
- name: 'Perform clang-analyzer scan-build Analysis Debug' - name: 'Perform clang-analyzer scan-build Analysis Debug'
run: 'make build/analyze/clang-analyzer/debug' run: 'make build/analyze/clang-analyzer/debug'
@@ -14,7 +14,12 @@ jobs:
if: github.repository_owner == 'upx' if: github.repository_owner == 'upx'
strategy: strategy:
fail-fast: false fail-fast: false
matrix: {container: ['alpine:3.18','alpine:edge','i386/alpine:edge']} matrix:
include:
- container: 'alpine:3.18'
- container: 'alpine:edge'
- container: 'i386/alpine:3.18'
- container: 'i386/alpine:edge'
name: ${{ format('Analyze clang-tidy {0}', matrix.container) }} name: ${{ format('Analyze clang-tidy {0}', matrix.container) }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: ${{ matrix.container }} container: ${{ matrix.container }}
@@ -25,7 +30,7 @@ jobs:
run: | run: |
# this seems to be needed when running in a container (beause of UID mismatch??) # this seems to be needed when running in a container (beause of UID mismatch??)
git config --global --add safe.directory '*' git config --global --add safe.directory '*'
git clone --branch "$GITHUB_REF_NAME" --depth 1 https://github.com/upx/upx . git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" .
git submodule update --init git submodule update --init
- name: 'Perform clang-tidy Analysis Debug' - name: 'Perform clang-tidy Analysis Debug'
run: 'make -k build/analyze/clang-tidy/debug' run: 'make -k build/analyze/clang-tidy/debug'
+2 -2
View File
@@ -21,7 +21,7 @@ jobs:
- name: ${{ format('Build clang {0}', matrix.container) }} - name: ${{ format('Build clang {0}', matrix.container) }}
run: | run: |
apk update && apk upgrade && apk add clang cmake make apk update && apk upgrade && apk add clang cmake make
wget https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-src.tar.xz wget https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-src.tar.xz
tar -xoaf upx-*-src.tar.xz tar -xoaf upx-*-src.tar.xz
cd upx-*-src cd upx-*-src
make build/debug CC="clang -static" CXX="clang++ -static" make build/debug CC="clang -static" CXX="clang++ -static"
@@ -48,7 +48,7 @@ jobs:
- name: ${{ format('Build gcc {0}', matrix.container) }} - name: ${{ format('Build gcc {0}', matrix.container) }}
run: | run: |
apk update && apk upgrade && apk add cmake g++ make apk update && apk upgrade && apk add cmake g++ make
wget https://github.com/upx/upx/releases/download/v4.1.0/upx-4.1.0-src.tar.xz wget https://github.com/upx/upx/releases/download/v4.2.0/upx-4.2.0-src.tar.xz
tar -xoaf upx-*-src.tar.xz tar -xoaf upx-*-src.tar.xz
cd upx-*-src cd upx-*-src
make build/debug CC="gcc -static" CXX="g++ -static" make build/debug CC="gcc -static" CXX="g++ -static"
+48
View File
@@ -0,0 +1,48 @@
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
name: 'Test - YAML check'
on: [workflow_dispatch]
env:
CMAKE_REQUIRED_QUIET: "OFF"
CTEST_OUTPUT_ON_FAILURE: "ON"
DEBIAN_FRONTEND: noninteractive
jobs:
job-yaml-check:
if: true
strategy:
fail-fast: false
matrix:
include:
- container: 'alpine:3.16'
- container: 'alpine:3.17'
- container: 'alpine:3.18'
- container: 'alpine:edge'
name: ${{ format('{0}', matrix.container) }}
runs-on: ubuntu-latest
container: ${{ matrix.container }}
steps:
- name: ${{ format('Install packages {0}', matrix.container) }}
run: |
apk update && apk upgrade && apk add bash git yq
case ${{ matrix.container }} in
*:edge) apk add -X http://dl-cdn.alpinelinux.org/alpine/edge/testing ytt ;;
esac
# 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
with: { submodules: false }
- name: ${{ format('YAML check {0}', matrix.container) }}
shell: bash
run: |
for f in $(find . -type f -iname '*.yml' | LC_ALL=C sort); do
echo "===== checking file"
echo " yq $f"
yq < "$f" > /dev/null
if command -v ytt > /dev/null; then
echo " ytt $f"
ytt -f- < "$f" > /dev/null
fi
done
echo "All done."
+16 -5
View File
@@ -39,7 +39,7 @@ jobs:
adduser upx -u 2000 -D && cd /home/upx && chmod 00700 . && chown -R upx:upx . adduser upx -u 2000 -D && cd /home/upx && chmod 00700 . && chown -R upx:upx .
- name: ${{ format('Check out UPX {0} source code', github.ref_name) }} - name: ${{ format('Check out UPX {0} source code', github.ref_name) }}
run: | run: |
git clone --branch "$GITHUB_REF_NAME" --depth 1 https://github.com/upx/upx "upx with space" git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" "upx with space"
git -C "upx with space" submodule update --init git -C "upx with space" submodule update --init
- name: 'Build by-hand with /bin/sh' - name: 'Build by-hand with /bin/sh'
run: '/bin/sh "./upx with space/misc/scripts/build_upx_by_hand.sh"' run: '/bin/sh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
@@ -102,7 +102,7 @@ jobs:
# IMPORTANT: do NOT run as user root! # IMPORTANT: do NOT run as user root!
chmod a+w . && sudo -u upx bash "$testsuite" chmod a+w . && sudo -u upx bash "$testsuite"
job-by-hand-macos: # uses a POSIX-compliant shell job-by-hand-macos-clang: # uses a POSIX-compliant shell
# ...and also uses a subdirectory "upx with space" in order to detect possible quoting issues # ...and also uses a subdirectory "upx with space" in order to detect possible quoting issues
if: github.repository_owner == 'upx' if: github.repository_owner == 'upx'
strategy: strategy:
@@ -112,17 +112,28 @@ jobs:
- { os: macos-11, run_fs_test: false } # macos-11 does not have "readlink -f" - { os: macos-11, run_fs_test: false } # macos-11 does not have "readlink -f"
- { os: macos-12, run_fs_test: true } - { os: macos-12, run_fs_test: true }
- { os: macos-13, run_fs_test: true } - { os: macos-13, run_fs_test: true }
name: ${{ format('by-hand cc {0}', matrix.os) }} name: ${{ format('by-hand clang {0}', matrix.os) }}
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
steps: steps:
- name: 'Install brew packages'
run: |
# install ccache
if ! command -v ccache > /dev/null; then
# only run "brew update" if needed
if ! brew install ccache; then brew update && brew install ccache; fi
fi
xflags="-Wall -Wextra -Werror"
echo -e "CC=ccache clang $xflags\nCXX=ccache clang++ -std=gnu++17 $xflags" >> $GITHUB_ENV
- name: ${{ format('Check out UPX {0} source code', github.ref_name) }} - name: ${{ format('Check out UPX {0} source code', github.ref_name) }}
run: | run: |
git clone --branch "$GITHUB_REF_NAME" --depth 1 https://github.com/upx/upx "upx with space" git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" "upx with space"
git -C "upx with space" submodule update --init git -C "upx with space" submodule update --init
- name: 'Build by-hand with /bin/sh' - name: 'Build by-hand with /bin/sh'
run: 'top_srcdir="$PWD/upx with space" /bin/sh "./upx with space/misc/scripts/build_upx_by_hand.sh"' run: 'top_srcdir="$PWD/upx with space" /bin/sh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with bash' - name: 'Build by-hand with bash'
run: 'top_srcdir="$PWD/upx with space" bash "./upx with space/misc/scripts/build_upx_by_hand.sh"' run: 'top_srcdir="$PWD/upx with space" bash "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Build by-hand with zsh'
run: 'top_srcdir="$PWD/upx with space" zsh "./upx with space/misc/scripts/build_upx_by_hand.sh"'
- name: 'Run file system test suite' - name: 'Run file system test suite'
if: ${{ matrix.run_fs_test }} if: ${{ matrix.run_fs_test }}
run: | run: |
@@ -145,7 +156,7 @@ jobs:
- name: ${{ format('Check out UPX {0} source code', github.ref_name) }} - name: ${{ format('Check out UPX {0} source code', github.ref_name) }}
shell: bash shell: bash
run: | run: |
git clone --branch "$GITHUB_REF_NAME" --depth 1 https://github.com/upx/upx "upx with space" git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" "upx with space"
git -C "upx with space" submodule update --init git -C "upx with space" submodule update --init
- name: 'Build by-hand with bash' - name: 'Build by-hand with bash'
shell: bash shell: bash
@@ -27,9 +27,9 @@ jobs:
uses: actions/checkout@v4 uses: actions/checkout@v4
with: { submodules: true } with: { submodules: true }
- { name: 'Config cmake Xcode', run: 'cmake -S . -B build/xcode -G Xcode' } - { name: 'Config cmake Xcode', run: 'cmake -S . -B build/xcode -G Xcode' }
- { name: 'Build cmake Xcode default', run: 'cmake --build build/xcode' } - { name: 'Build cmake Xcode default', run: 'cmake --build build/xcode --parallel --verbose' }
- { name: 'Build cmake Xcode Debug', run: 'cmake --build build/xcode --config Debug' } - { name: 'Build cmake Xcode Debug', run: 'cmake --build build/xcode --parallel --verbose --config Debug' }
- { name: 'Build cmake Xcode Release', run: 'cmake --build build/xcode --config Release' } - { name: 'Build cmake Xcode Release', run: 'cmake --build build/xcode --parallel --verbose --config Release' }
- name: 'Make artifact' - name: 'Make artifact'
run: | run: |
N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-weekly-ci-xcode-${{ matrix.os }}" | sed 's/[^0-9a-zA-Z_.-]/-/g') N=$(echo "upx-${GITHUB_REF_NAME}-${GITHUB_SHA:0:7}-weekly-ci-xcode-${{ matrix.os }}" | sed 's/[^0-9a-zA-Z_.-]/-/g')
@@ -21,7 +21,7 @@ jobs:
include: include:
# INFO: the following don't work with GNU make (probably some quoting problems with spaces or backslashes) # INFO: the following don't work with GNU make (probably some quoting problems with spaces or backslashes)
# => use Ninja generator instead; see weekly-ci-bs-cmake-windows-ninja.yml # => use Ninja generator instead; see weekly-ci-bs-cmake-windows-ninja.yml
# # cl (msvc) # # cl (MSVC)
# - { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64 } # - { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64 }
# - { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64_arm64 } # - { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64_arm64 }
# - { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64_x86 } # - { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64_x86 }
@@ -29,10 +29,13 @@ jobs:
# - { os: windows-2022, cc: cl, cxx: cl, vsversion: 2022, arch: amd64_arm64 } # - { os: windows-2022, cc: cl, cxx: cl, vsversion: 2022, arch: amd64_arm64 }
# - { os: windows-2022, cc: cl, cxx: cl, vsversion: 2022, arch: amd64_x86 } # - { os: windows-2022, cc: cl, cxx: cl, vsversion: 2022, arch: amd64_x86 }
# # clang-cl # # clang-cl
# - { os: windows-2019, cc: clang-cl, cxx: clang-cl, vsversion: 2019, arch: amd64 }
# - { os: windows-2022, cc: clang-cl, cxx: clang-cl, vsversion: 2022, arch: amd64 } # - { os: windows-2022, cc: clang-cl, cxx: clang-cl, vsversion: 2022, arch: amd64 }
# clang # clang
- { os: windows-2019, cc: clang, cxx: 'clang++', arch: amd64, xflags: '-static' }
- { os: windows-2022, cc: clang, cxx: 'clang++', arch: amd64, xflags: '-static' } - { os: windows-2022, cc: clang, cxx: 'clang++', arch: amd64, xflags: '-static' }
# gcc (mingw-gcc) # gcc (mingw-gcc)
- { os: windows-2019, cc: gcc, cxx: 'g++', arch: amd64, xflags: '-static' }
- { os: windows-2022, cc: gcc, cxx: 'g++', arch: amd64, xflags: '-static' } - { os: windows-2022, cc: gcc, cxx: 'g++', arch: amd64, xflags: '-static' }
env: env:
CC: ${{ matrix.cc }} ${{ matrix.xflags }} CC: ${{ matrix.cc }} ${{ matrix.xflags }}
@@ -52,7 +55,7 @@ jobs:
- name: 'Init environment' - name: 'Init environment'
shell: bash shell: bash
run: | run: |
xtarget="windows-make-${{ matrix.cc }}-${{ matrix.vsversion }}-${{ matrix.arch}}" xtarget="${{ matrix.os }}-make-${{ matrix.cc }}-${{ matrix.vsversion }}-${{ matrix.arch}}"
echo "xtarget=$xtarget" >> $GITHUB_ENV echo "xtarget=$xtarget" >> $GITHUB_ENV
- name: 'Build cmake Make Debug' - name: 'Build cmake Make Debug'
shell: bash shell: bash
@@ -19,7 +19,7 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
# cl (msvc) # cl (MSVC)
- { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64 } - { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64 }
- { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64_arm64 } - { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64_arm64 }
- { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64_x86 } - { os: windows-2019, cc: cl, cxx: cl, vsversion: 2019, arch: amd64_x86 }
@@ -27,10 +27,13 @@ jobs:
- { os: windows-2022, cc: cl, cxx: cl, vsversion: 2022, arch: amd64_arm64 } - { os: windows-2022, cc: cl, cxx: cl, vsversion: 2022, arch: amd64_arm64 }
- { os: windows-2022, cc: cl, cxx: cl, vsversion: 2022, arch: amd64_x86 } - { os: windows-2022, cc: cl, cxx: cl, vsversion: 2022, arch: amd64_x86 }
# clang-cl # clang-cl
- { os: windows-2019, cc: clang-cl, cxx: clang-cl, vsversion: 2019, arch: amd64 }
- { os: windows-2022, cc: clang-cl, cxx: clang-cl, vsversion: 2022, arch: amd64 } - { os: windows-2022, cc: clang-cl, cxx: clang-cl, vsversion: 2022, arch: amd64 }
# clang # clang
- { os: windows-2019, cc: clang, cxx: 'clang++', arch: amd64, xflags: '-static' }
- { os: windows-2022, cc: clang, cxx: 'clang++', arch: amd64, xflags: '-static' } - { os: windows-2022, cc: clang, cxx: 'clang++', arch: amd64, xflags: '-static' }
# gcc (mingw-gcc) # gcc (mingw-gcc)
- { os: windows-2019, cc: gcc, cxx: 'g++', arch: amd64, xflags: '-static' }
- { os: windows-2022, cc: gcc, cxx: 'g++', arch: amd64, xflags: '-static' } - { os: windows-2022, cc: gcc, cxx: 'g++', arch: amd64, xflags: '-static' }
env: env:
CC: ${{ matrix.cc }} ${{ matrix.xflags }} CC: ${{ matrix.cc }} ${{ matrix.xflags }}
@@ -51,7 +54,7 @@ jobs:
shell: bash shell: bash
run: | run: |
command -v ninja >/dev/null || choco install -y --no-progress ninja command -v ninja >/dev/null || choco install -y --no-progress ninja
xtarget="windows-ninja-${{ matrix.cc }}-${{ matrix.vsversion }}-${{ matrix.arch}}" xtarget="${{ matrix.os }}-ninja-${{ matrix.cc }}-${{ matrix.vsversion }}-${{ matrix.arch}}"
echo "xtarget=$xtarget" >> $GITHUB_ENV echo "xtarget=$xtarget" >> $GITHUB_ENV
- name: 'Build cmake Ninja Debug' - name: 'Build cmake Ninja Debug'
shell: bash shell: bash
+110
View File
@@ -0,0 +1,110 @@
# Copyright (C) Markus Franz Xaver Johannes Oberhumer
# BS BuildSystem: build with misc flags
name: 'Weekly CI BS - Misc'
on:
schedule: [cron: '50 1 * * 3'] # run weekly Wednesday 01:50 UTC
workflow_dispatch:
env:
CMAKE_REQUIRED_QUIET: "OFF"
CTEST_OUTPUT_ON_FAILURE: "ON"
DEBIAN_FRONTEND: noninteractive
UPX_CMAKE_BUILD_FLAGS: --verbose
jobs:
BS0:
runs-on: ubuntu-latest
container: 'alpine:edge'
steps:
- name: 'Install packages'
run: |
apk update && apk upgrade && apk add bash git perl yq
git config --global --add safe.directory '*'
git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" .
- name: 'Misc checks'
run: |
cat ./.github/*.yml | yq > /dev/null
cat ./.github/*/*.yml | yq > /dev/null
bash ./misc/scripts/check_whitespace_git.sh
echo "All done."
BS1: # uses cmake + make
if: github.repository_owner == 'upx'
strategy:
fail-fast: false
matrix:
container:
- 'alpine:edge'
- 'i386/alpine:edge'
cc:
- 'clang'
- 'gcc'
cppflags:
- '-DWITH_XSPAN=0'
- '-DWITH_XSPAN=1'
- '-DWITH_XSPAN=2'
- '-DDOCTEST_CONFIG_DISABLE'
runs-on: ubuntu-latest
container: ${{ matrix.container }}
steps:
- name: ${{ format('Install packages {0}', matrix.container) }}
run: 'apk update && apk upgrade && apk add clang cmake g++ git make'
- name: ${{ format('Check out {0} source code', github.ref_name) }}
run: |
# this seems to be needed when running in a container (beause of UID mismatch??)
git config --global --add safe.directory '*'
git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" .
git submodule update --init
# prepare environment
xflags="-static ${{ matrix.cppflags }}"
case ${{ matrix.cc }} in
clang) CC="clang $xflags"; CXX="clang++ $xflags" ;;
gcc) CC="gcc $xflags"; CXX="g++ $xflags" ;;
*) exit 99 ;;
esac
echo -e "CC=$CC\nCXX=$CXX" >> $GITHUB_ENV
- name: 'Build and test Debug'
run: 'echo -e "CC=$CC;\nCXX=$CXX;" && make build/debug && ctest --test-dir build/debug'
- name: 'Build and test Release'
if: success() || failure() # run this step even if the previous step failed
run: 'echo -e "CC=$CC;\nCXX=$CXX;" && make build/release && ctest --test-dir build/release'
BS2: # uses cmake + make
if: github.repository_owner == 'upx'
strategy:
fail-fast: false
matrix:
container:
- 'alpine:edge'
cc:
- 'clang'
- 'gcc'
cxxflags:
- '-std=gnu++20'
- '-std=gnu++23'
runs-on: ubuntu-latest
container: ${{ matrix.container }}
steps:
- name: ${{ format('Install packages {0}', matrix.container) }}
run: 'apk update && apk upgrade && apk add clang cmake g++ git make'
- name: ${{ format('Check out {0} source code', github.ref_name) }}
run: |
# this seems to be needed when running in a container (beause of UID mismatch??)
git config --global --add safe.directory '*'
git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" .
git submodule update --init
# prepare environment
xflags="-static"
case ${{ matrix.cc }} in
clang) CC="clang $xflags"; CXX="clang++ $xflags ${{ matrix.cxxflags }}" ;;
gcc) CC="gcc $xflags"; CXX="g++ $xflags ${{ matrix.cxxflags }}" ;;
*) exit 99 ;;
esac
echo -e "CC=$CC\nCXX=$CXX" >> $GITHUB_ENV
echo "UPX_CONFIG_DISABLE_C_STANDARD=ON" >> $GITHUB_ENV
echo "UPX_CONFIG_DISABLE_CXX_STANDARD=ON" >> $GITHUB_ENV
- name: 'Build and test Debug'
run: 'echo -e "CC=$CC;\nCXX=$CXX;" && make build/debug && ctest --test-dir build/debug'
- name: 'Build and test Release'
if: success() || failure() # run this step even if the previous step failed
run: 'echo -e "CC=$CC;\nCXX=$CXX;" && make build/release && ctest --test-dir build/release'
@@ -40,6 +40,17 @@ jobs:
- { container: 'alpine:3.18', use_cxx20: 1, use_cxx2b: 1, use_lto: 1 } - { container: 'alpine:3.18', use_cxx20: 1, use_cxx2b: 1, use_lto: 1 }
- { container: 'alpine:edge', use_cxx20: 1, use_cxx2b: 1, use_lto: 1 } - { container: 'alpine:edge', use_cxx20: 1, use_cxx2b: 1, use_lto: 1 }
- { container: 'i386/alpine:edge', use_cxx20: 1, use_cxx2b: 1, use_lto: 1 } - { container: 'i386/alpine:edge', use_cxx20: 1, use_cxx2b: 1, use_lto: 1 }
# more 32-bit i386 versions, just for testing
# { container: 'i386/alpine:3.9' } # clang-5, gcc-8; BROKEN: clang -m32 problem
- { container: 'i386/alpine:3.10' } # clang-8, gcc-8
- { container: 'i386/alpine:3.11' } # clang-9, gcc-9
- { container: 'i386/alpine:3.12' } # clang-10, gcc-9
- { container: 'i386/alpine:3.13' } # clang-10, gcc-10
- { container: 'i386/alpine:3.14' } # clang-11, gcc-10
- { container: 'i386/alpine:3.15' } # clang-12, gcc-10
- { container: 'i386/alpine:3.16' } # clang-13, gcc-11
- { container: 'i386/alpine:3.17' } # clang-15, gcc-12
- { container: 'i386/alpine:3.18' } # clang-16, gcc-12
name: ${{ format('container {0}', matrix.container) }} name: ${{ format('container {0}', matrix.container) }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: ${{ matrix.container }} container: ${{ matrix.container }}
@@ -64,7 +75,7 @@ jobs:
adduser upx -u 2000 -D && cd /home/upx && chmod 00700 . && chown -R upx:upx . adduser upx -u 2000 -D && cd /home/upx && chmod 00700 . && chown -R upx:upx .
- name: ${{ format('Check out UPX {0} source code', github.ref_name) }} - name: ${{ format('Check out UPX {0} source code', github.ref_name) }}
run: | run: |
git clone --branch "$GITHUB_REF_NAME" --depth 1 https://github.com/upx/upx "upx with space" git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" "upx with space"
git -C "upx with space" submodule update --init git -C "upx with space" submodule update --init
# build with default C11 and C++17 # build with default C11 and C++17
@@ -45,7 +45,7 @@ jobs:
mkdir -p -v ~/.wine mkdir -p -v ~/.wine
# this seems to be needed when running in a container (beause of UID mismatch??) # this seems to be needed when running in a container (beause of UID mismatch??)
git config --global --add safe.directory '*' git config --global --add safe.directory '*'
git clone --branch "$GITHUB_REF_NAME" --depth 1 https://github.com/upx/upx . git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" .
git submodule update --init git submodule update --init
- name: 'Build cmake extra/cross-windows-mingw32/debug' - name: 'Build cmake extra/cross-windows-mingw32/debug'
if: ${{ matrix.i686_mingw }} if: ${{ matrix.i686_mingw }}
@@ -11,6 +11,7 @@ env:
CMAKE_REQUIRED_QUIET: "OFF" CMAKE_REQUIRED_QUIET: "OFF"
CTEST_OUTPUT_ON_FAILURE: "ON" CTEST_OUTPUT_ON_FAILURE: "ON"
DEBIAN_FRONTEND: noninteractive DEBIAN_FRONTEND: noninteractive
UPX_CMAKE_CONFIG_FLAGS: -DCMAKE_VERBOSE_MAKEFILE=ON
jobs: jobs:
job-llvm-mingw: # uses cmake + make job-llvm-mingw: # uses cmake + make
@@ -51,18 +52,22 @@ jobs:
- name: 'Build clang aarch64' - name: 'Build clang aarch64'
run: | run: |
export CC="aarch64-w64-mingw32-clang -static" CXX="aarch64-w64-mingw32-clang++ -static" export CC="aarch64-w64-mingw32-clang -static" CXX="aarch64-w64-mingw32-clang++ -static"
CC="$CC -D_WIN32_WINNT=0x0400"; CXX="$CXX -D_WIN32_WINNT=0x0400"
make UPX_XTARGET=aarch64-w64-mingw32-clang xtarget/debug xtarget/release make UPX_XTARGET=aarch64-w64-mingw32-clang xtarget/debug xtarget/release
- name: 'Build clang armv7' - name: 'Build clang armv7'
run: | run: |
export CC="armv7-w64-mingw32-clang -static" CXX="armv7-w64-mingw32-clang++ -static" export CC="armv7-w64-mingw32-clang -static" CXX="armv7-w64-mingw32-clang++ -static"
CC="$CC -D_WIN32_WINNT=0x0400"; CXX="$CXX -D_WIN32_WINNT=0x0400"
make UPX_XTARGET=armv7-w64-mingw32-clang xtarget/debug xtarget/release make UPX_XTARGET=armv7-w64-mingw32-clang xtarget/debug xtarget/release
- name: 'Build clang i686' - name: 'Build clang i686'
run: | run: |
export CC="i686-w64-mingw32-clang -static" CXX="i686-w64-mingw32-clang++ -static" export CC="i686-w64-mingw32-clang -static" CXX="i686-w64-mingw32-clang++ -static"
CC="$CC -D_WIN32_WINNT=0x0400"; CXX="$CXX -D_WIN32_WINNT=0x0400"
make UPX_XTARGET=i686-w64-mingw32-clang xtarget/debug xtarget/release make UPX_XTARGET=i686-w64-mingw32-clang xtarget/debug xtarget/release
- name: 'Build clang x86_64' - name: 'Build clang x86_64'
run: | run: |
export CC="x86_64-w64-mingw32-clang -static" CXX="x86_64-w64-mingw32-clang++ -static" export CC="x86_64-w64-mingw32-clang -static" CXX="x86_64-w64-mingw32-clang++ -static"
CC="$CC -D_WIN32_WINNT=0x0400"; CXX="$CXX -D_WIN32_WINNT=0x0400"
make UPX_XTARGET=x86_64-w64-mingw32-clang xtarget/debug xtarget/release make UPX_XTARGET=x86_64-w64-mingw32-clang xtarget/debug xtarget/release
- name: 'Make artifact' - name: 'Make artifact'
run: | run: |
+7 -6
View File
@@ -11,8 +11,8 @@ env:
CMAKE_REQUIRED_QUIET: "OFF" CMAKE_REQUIRED_QUIET: "OFF"
CTEST_OUTPUT_ON_FAILURE: "ON" CTEST_OUTPUT_ON_FAILURE: "ON"
DEBIAN_FRONTEND: noninteractive DEBIAN_FRONTEND: noninteractive
# 2023-10-24 # 2023-11-01
ZIG_DIST_VERSION: 0.12.0-dev.1245+a07f288eb ZIG_DIST_VERSION: 0.12.0-dev.1369+a09ba455c
jobs: jobs:
job-linux-zigcc: # uses cmake + make job-linux-zigcc: # uses cmake + make
@@ -21,17 +21,18 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
# zig BUG: -fPIE is currently broken
- { zig_target: aarch64-linux-musl } - { zig_target: aarch64-linux-musl }
- { zig_target: aarch64-linux-musl, zig_pic: -fPIE } # { zig_target: aarch64-linux-musl, zig_pic: -fPIE }
- { zig_target: aarch64-macos-none } - { zig_target: aarch64-macos-none }
- { zig_target: aarch64-macos.11.0-none } - { zig_target: aarch64-macos.11.0-none }
- { zig_target: aarch64-macos.12.0-none } - { zig_target: aarch64-macos.12.0-none }
- { zig_target: aarch64-macos.13.0-none } - { zig_target: aarch64-macos.13.0-none }
- { zig_target: aarch64-windows-gnu } - { zig_target: aarch64-windows-gnu }
- { zig_target: arm-linux-musleabihf } - { zig_target: arm-linux-musleabihf }
- { zig_target: arm-linux-musleabihf, zig_pic: -fPIE } # { zig_target: arm-linux-musleabihf, zig_pic: -fPIE }
- { zig_target: i386-linux-musl } - { zig_target: i386-linux-musl }
- { zig_target: i386-linux-musl, zig_pic: -fPIE } # { zig_target: i386-linux-musl, zig_pic: -fPIE }
- { zig_target: i386-windows-gnu } - { zig_target: i386-windows-gnu }
- { zig_target: mips-linux-musl } - { zig_target: mips-linux-musl }
- { zig_target: mipsel-linux-musl } - { zig_target: mipsel-linux-musl }
@@ -39,7 +40,7 @@ jobs:
- { zig_target: powerpc64-linux-musl } - { zig_target: powerpc64-linux-musl }
- { zig_target: powerpc64le-linux-musl } - { zig_target: powerpc64le-linux-musl }
- { zig_target: x86_64-linux-musl } - { zig_target: x86_64-linux-musl }
- { zig_target: x86_64-linux-musl, zig_pic: -fPIE } # { zig_target: x86_64-linux-musl, zig_pic: -fPIE }
- { zig_target: x86_64-macos-none } - { zig_target: x86_64-macos-none }
- { zig_target: x86_64-macos.11.0-none } - { zig_target: x86_64-macos.11.0-none }
- { zig_target: x86_64-macos.12.0-none } - { zig_target: x86_64-macos.12.0-none }
+5 -13
View File
@@ -19,18 +19,10 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
include: include:
- container: 'alpine:3.18' - { container: 'alpine:3.18', release: debug, qemu: 'qemu-x86_64 -cpu Westmere' }
release: debug - { container: 'alpine:3.18', release: release, qemu: 'qemu-x86_64 -cpu Westmere' }
qemu: 'qemu-x86_64 -cpu Westmere' - { container: 'alpine:edge', release: release, qemu: 'qemu-x86_64 -cpu Westmere' }
- container: 'alpine:3.18' - { container: 'i386/alpine:edge', release: release, qemu: 'qemu-i386' }
release: release
qemu: 'qemu-x86_64 -cpu Westmere'
- container: 'alpine:edge'
release: release
qemu: 'qemu-x86_64 -cpu Westmere'
- container: 'i386/alpine:edge'
release: release
qemu: 'qemu-i386'
name: ${{ format('{0} {1}', matrix.container, matrix.release) }} name: ${{ format('{0} {1}', matrix.container, matrix.release) }}
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: ${{ matrix.container }} container: ${{ matrix.container }}
@@ -45,7 +37,7 @@ jobs:
git config --global --add safe.directory '*' git config --global --add safe.directory '*'
- name: ${{ format('Check out UPX {0} source code', github.ref_name) }} - name: ${{ format('Check out UPX {0} source code', github.ref_name) }}
run: | run: |
git clone --branch "$GITHUB_REF_NAME" --depth 1 https://github.com/upx/upx . git clone --branch "$GITHUB_REF_NAME" --depth 1 "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY" .
git submodule update --init git submodule update --init
git clone --depth=1 https://github.com/upx/upx-testsuite ../upx-testsuite git clone --depth=1 https://github.com/upx/upx-testsuite ../upx-testsuite
+48 -28
View File
@@ -11,9 +11,23 @@
if(DEFINED UPX_CONFIG_CMAKE_MINIMUM_REQUIRED_VERSION) if(DEFINED UPX_CONFIG_CMAKE_MINIMUM_REQUIRED_VERSION)
cmake_minimum_required(VERSION "${UPX_CONFIG_CMAKE_MINIMUM_REQUIRED_VERSION}" FATAL_ERROR) cmake_minimum_required(VERSION "${UPX_CONFIG_CMAKE_MINIMUM_REQUIRED_VERSION}" FATAL_ERROR)
else() else()
cmake_minimum_required(VERSION 3.8 FATAL_ERROR) # CMake >= 3.8 is needed for CXX_STANDARD 17 cmake_minimum_required(VERSION "3.8" FATAL_ERROR) # CMake >= 3.8 is needed for CXX_STANDARD 17
endif() endif()
# Sections of this CMakeLists.txt:
# - options
# - init
# - common compilation flags
# - targets
# - target compilation flags
# - test
# - install
# - print summary
#***********************************************************************
# options
#***********************************************************************
# compilation config options # compilation config options
if(NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.git") if(NOT IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.git")
# permissive config defaults when building from source code tarball # permissive config defaults when building from source code tarball
@@ -141,7 +155,7 @@ if(NOT is_multi_config AND NOT CMAKE_BUILD_TYPE)
endif() endif()
# CMake init # CMake init
project(upx VERSION 4.2.0 LANGUAGES C CXX) project(upx VERSION 4.2.1 LANGUAGES C CXX)
# set the default multi-config build type to "Release" # set the default multi-config build type to "Release"
if(is_multi_config) if(is_multi_config)
@@ -177,13 +191,14 @@ if(NOT DEFINED HAVE_UNISTD_H)
check_include_file("unistd.h" HAVE_UNISTD_H) check_include_file("unistd.h" HAVE_UNISTD_H)
endif() endif()
if(NOT DEFINED HAVE_UTIMENSAT) if(NOT DEFINED HAVE_UTIMENSAT)
# proper checking for utimensat() is somewhat messy
check_function_exists(utimensat HAVE_UTIMENSAT_FUNCTION__) check_function_exists(utimensat HAVE_UTIMENSAT_FUNCTION__)
if(HAVE_UTIMENSAT_FUNCTION__) if(HAVE_UTIMENSAT_FUNCTION__)
check_symbol_exists(utimensat "sys/types.h;fcntl.h;sys/stat.h" HAVE_UTIMENSAT_SYMBOL__) check_symbol_exists(utimensat "sys/types.h;fcntl.h;sys/stat.h" HAVE_UTIMENSAT_SYMBOL__)
if(HAVE_UTIMENSAT_SYMBOL__) if(HAVE_UTIMENSAT_SYMBOL__)
CHECK_STRUCT_HAS_MEMBER("struct stat" "st_mtim.tv_nsec" "sys/types.h;fcntl.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC) CHECK_STRUCT_HAS_MEMBER("struct stat" "st_mtim.tv_nsec" "sys/types.h;fcntl.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC) # POSIX.1-2008
if(NOT HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC) if(NOT HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC)
CHECK_STRUCT_HAS_MEMBER("struct stat" "st_mtimespec.tv_nsec" "sys/types.h;fcntl.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC) CHECK_STRUCT_HAS_MEMBER("struct stat" "st_mtimespec.tv_nsec" "sys/types.h;fcntl.h;sys/stat.h" HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC) # macOS
endif() endif()
if(HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC OR HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC) if(HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC OR HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC)
set(HAVE_UTIMENSAT 1) set(HAVE_UTIMENSAT 1)
@@ -281,12 +296,23 @@ if(NOT CMAKE_C_COMPILER_ID MATCHES "^MSVC")
endif() endif()
endif() endif()
# compile a source file with -O2 even in Debug build # compile a target with -O2 optimization even in Debug build
function(upx_compile_target_debug_with_O2)
foreach(t ${ARGV})
if(MSVC_FRONTEND)
# MSVC uses some Debug compilation options like -RTC1 that are incompatible with -O2
else()
target_compile_options(${t} PRIVATE $<$<CONFIG:Debug>:-O2>)
endif()
endforeach()
endfunction()
# compile a source file with -O2 optimization even in Debug build; messy because of CMake limitations
function(upx_compile_source_debug_with_O2) function(upx_compile_source_debug_with_O2)
set(flags "$<$<CONFIG:Debug>:-O2>") set(flags "$<$<CONFIG:Debug>:-O2>")
if (CMAKE_VERSION VERSION_LESS 3.8) if(${CMAKE_VERSION} VERSION_LESS "3.8")
# 3.8: The COMPILE_FLAGS source file property learned to support generator expressions # 3.8: The COMPILE_FLAGS source file property learned to support generator expressions
if (is_multi_config OR NOT CMAKE_BUILD_TYPE MATCHES "^Debug$") if(is_multi_config OR NOT CMAKE_BUILD_TYPE MATCHES "^Debug$")
return() return()
endif() endif()
set(flags "-O2") set(flags "-O2")
@@ -309,17 +335,6 @@ function(upx_compile_source_debug_with_O2)
endforeach() endforeach()
endfunction() endfunction()
# compile a target with -O2 even in Debug build
function(upx_compile_target_debug_with_O2)
foreach(t ${ARGV})
if(MSVC_FRONTEND)
# MSVC uses some Debug compilation options like -RTC1 that are incompatible with -O2
else()
target_compile_options(${t} PRIVATE $<$<CONFIG:Debug>:-O2>)
endif()
endforeach()
endfunction()
# sanitize a target # sanitize a target
function(upx_sanitize_target) function(upx_sanitize_target)
foreach(t ${ARGV}) foreach(t ${ARGV})
@@ -484,7 +499,7 @@ if(HAVE_UTIMENSAT)
target_compile_definitions(${t} PRIVATE HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC=1) target_compile_definitions(${t} PRIVATE HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC=1)
endif() endif()
endif() endif()
# improve speed of the debug versions # improve speed of the Debug versions
upx_compile_source_debug_with_O2(src/compress/compress_lzma.cpp) upx_compile_source_debug_with_O2(src/compress/compress_lzma.cpp)
upx_compile_source_debug_with_O2(src/filter/filter_impl.cpp) upx_compile_source_debug_with_O2(src/filter/filter_impl.cpp)
#upx_compile_target_debug_with_O2(${t}) #upx_compile_target_debug_with_O2(${t})
@@ -496,9 +511,10 @@ else()
endif() endif()
#*********************************************************************** #***********************************************************************
# ctest # test
# make test # ctest
# ninja test # make test
# ninja test
#*********************************************************************** #***********************************************************************
if(NOT UPX_CONFIG_CMAKE_DISABLE_TEST) if(NOT UPX_CONFIG_CMAKE_DISABLE_TEST)
@@ -536,9 +552,10 @@ endif()
endif() # UPX_CONFIG_CMAKE_DISABLE_TEST endif() # UPX_CONFIG_CMAKE_DISABLE_TEST
#*********************************************************************** #***********************************************************************
# cmake --install . # install
# make install # cmake --install .
# ninja install # make install
# ninja install
#*********************************************************************** #***********************************************************************
if(NOT UPX_CONFIG_CMAKE_DISABLE_INSTALL) if(NOT UPX_CONFIG_CMAKE_DISABLE_INSTALL)
@@ -563,13 +580,16 @@ endif()
endif() # UPX_CONFIG_CMAKE_DISABLE_INSTALL endif() # UPX_CONFIG_CMAKE_DISABLE_INSTALL
#*********************************************************************** #***********************************************************************
# finally print some info about the build configuration # show summary
# print some info about the build configuration
#*********************************************************************** #***********************************************************************
function(print_var) function(print_var)
foreach(var ${ARGV}) foreach(var ${ARGV})
if(${var}) if(DEFINED ${var} AND NOT ",${${var}}," STREQUAL ",,")
message(STATUS "${var} = ${${var}}") if(${var})
message(STATUS "${var} = ${${var}}")
endif()
endif() endif()
endforeach() endforeach()
endfunction() endfunction()
+4
View File
@@ -56,7 +56,11 @@ build/%/all: $$(dir $$@)debug $$(dir $$@)release ;
# #
# extra pre-defined build configurations and some utility; optional # 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 include ./misc/make/Makefile-extra.mk
endif
# developer convenience # developer convenience
ifneq ($(wildcard /usr/bin/env),) # needs bash, perl, xargs, etc. ifneq ($(wildcard /usr/bin/env),) # needs bash, perl, xargs, etc.
+8
View File
@@ -2,11 +2,19 @@
User visible changes for UPX User visible changes for UPX
================================================================== ==================================================================
Changes in 4.2.1 (01 Nov 2023):
* linux: /proc/self/exe now is optional
* windows: use SetFileTime to preserve sub-second file timestamps
* official Windows builds: revert activeCodePage change introduced in 4.2.0
* bug fixes - see https://github.com/upx/upx/milestone/14
Changes in 4.2.0 (26 Oct 2023): Changes in 4.2.0 (26 Oct 2023):
* win32/pe and win64/pe: stricter relocation checks; please report regressions * win32/pe and win64/pe: stricter relocation checks; please report regressions
* unix: use utimensat to preserve sub-second file timestamps
* new option '--link' to preserve hard-links (Unix only; use with care) * new option '--link' to preserve hard-links (Unix only; use with care)
* add support for NO_COLOR env var; see https://no-color.org/ * add support for NO_COLOR env var; see https://no-color.org/
* disable macOS support until we fix compatibility with macOS 13+ * disable macOS support until we fix compatibility with macOS 13+
* official Windows builds: set activeCodePage to UTF-8
* bug fixes - see https://github.com/upx/upx/milestone/13 * bug fixes - see https://github.com/upx/upx/milestone/13
Changes in 4.1.0 (08 Aug 2023): Changes in 4.1.0 (08 Aug 2023):
Generated
+1 -1
View File
@@ -133,7 +133,7 @@
.\" ======================================================================== .\" ========================================================================
.\" .\"
.IX Title "UPX 1" .IX Title "UPX 1"
.TH UPX 1 "2023-10-26" "upx 4.2.0" " " .TH UPX 1 "2023-11-01" "upx 4.2.1" " "
.\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents. .\" way too many mistakes in technical documents.
.if n .ad l .if n .ad l
+9 -4
View File
@@ -3,6 +3,9 @@
# Copyright (C) Markus Franz Xaver Johannes Oberhumer # Copyright (C) Markus Franz Xaver Johannes Oberhumer
# #
ifeq ($(UPX_MAKEFILE_EXTRA_MK_INCLUDED),)
UPX_MAKEFILE_EXTRA_MK_INCLUDED := 1
#*********************************************************************** #***********************************************************************
# extra builds: some pre-defined build configurations # extra builds: some pre-defined build configurations
#*********************************************************************** #***********************************************************************
@@ -131,14 +134,14 @@ build/extra/cross-linux-gnu-arm-eabihf/%: export CXX = arm-linux-gnueabihf-g++ -
# cross compiler: Windows x86 win32 MinGW (i386) # cross compiler: Windows x86 win32 MinGW (i386)
build/extra/cross-windows-mingw32/debug: PHONY; $(call run_config_and_build,$@,Debug) build/extra/cross-windows-mingw32/debug: PHONY; $(call run_config_and_build,$@,Debug)
build/extra/cross-windows-mingw32/release: PHONY; $(call run_config_and_build,$@,Release) build/extra/cross-windows-mingw32/release: PHONY; $(call run_config_and_build,$@,Release)
build/extra/cross-windows-mingw32/%: export CC = i686-w64-mingw32-gcc -static build/extra/cross-windows-mingw32/%: export CC = i686-w64-mingw32-gcc -static -D_WIN32_WINNT=0x0400
build/extra/cross-windows-mingw32/%: export CXX = i686-w64-mingw32-g++ -static build/extra/cross-windows-mingw32/%: export CXX = i686-w64-mingw32-g++ -static -D_WIN32_WINNT=0x0400
# cross compiler: Windows x64 win64 MinGW (amd64) # cross compiler: Windows x64 win64 MinGW (amd64)
build/extra/cross-windows-mingw64/debug: PHONY; $(call run_config_and_build,$@,Debug) build/extra/cross-windows-mingw64/debug: PHONY; $(call run_config_and_build,$@,Debug)
build/extra/cross-windows-mingw64/release: PHONY; $(call run_config_and_build,$@,Release) build/extra/cross-windows-mingw64/release: PHONY; $(call run_config_and_build,$@,Release)
build/extra/cross-windows-mingw64/%: export CC = x86_64-w64-mingw32-gcc -static build/extra/cross-windows-mingw64/%: export CC = x86_64-w64-mingw32-gcc -static -D_WIN32_WINNT=0x0400
build/extra/cross-windows-mingw64/%: export CXX = x86_64-w64-mingw32-g++ -static build/extra/cross-windows-mingw64/%: export CXX = x86_64-w64-mingw32-g++ -static -D_WIN32_WINNT=0x0400
# cross compiler: macOS arm64 (aarch64) # cross compiler: macOS arm64 (aarch64)
build/extra/cross-darwin-arm64/debug: PHONY; $(call run_config_and_build,$@,Debug) build/extra/cross-darwin-arm64/debug: PHONY; $(call run_config_and_build,$@,Debug)
@@ -249,3 +252,5 @@ SUBMODULES = doctest lzma-sdk ucl valgrind zlib
dummy := $(foreach m,$(SUBMODULES),$(if $(wildcard vendor/$m/[CL]*),$m,\ dummy := $(foreach m,$(SUBMODULES),$(if $(wildcard vendor/$m/[CL]*),$m,\
$(error ERROR: missing git submodule '$m'; run 'git submodule update --init'))) $(error ERROR: missing git submodule '$m'; run 'git submodule update --init')))
endif # UPX_MAKEFILE_EXTRA_MK_INCLUDED
+3 -2
View File
@@ -45,9 +45,10 @@ RUN cd /root \
# install official UPX release binaries into /usr/local/bin; not required but convenient for testing # install official UPX release binaries into /usr/local/bin; not required but convenient for testing
RUN cd /root \ RUN cd /root \
&& wget -q https://github.com/upx/upx/releases/download/v3.91/upx-3.91-amd64_linux.tar.bz2 \ && wget -q https://github.com/upx/upx/releases/download/v3.91/upx-3.91-amd64_linux.tar.bz2 \
&& for v in 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; do wget -q https://github.com/upx/upx/releases/download/v${v}/upx-${v}-amd64_linux.tar.xz; done \ && 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" \
&& for v in $xzlist; 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 f in ./upx-*.tar.*; do tar -xoaf $f; done \
&& for v in 3.91 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; do d=upx-${v}-amd64_linux; ./$d/upx -qq -d $d/upx -o /usr/local/bin/upx-${v}; 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 \
&& rm -r ./upx-*.tar.* ./upx-*linux \ && rm -r ./upx-*.tar.* ./upx-*linux \
&& true && true
+17 -17
View File
@@ -32,7 +32,7 @@ ii debconf 1.5.79ubuntu1 all
ii debianutils 5.5-1ubuntu2 amd64 Miscellaneous utilities specific to Debian ii debianutils 5.5-1ubuntu2 amd64 Miscellaneous utilities specific to Debian
ii dh-elpa-helper 2.0.9ubuntu1 all helper package for emacs lisp extensions ii dh-elpa-helper 2.0.9ubuntu1 all helper package for emacs lisp extensions
ii diffutils 1:3.8-0ubuntu2 amd64 File comparison utilities ii diffutils 1:3.8-0ubuntu2 amd64 File comparison utilities
ii distro-info-data 0.52ubuntu0.4 all information about the distributions' releases (data files) ii distro-info-data 0.52ubuntu0.5 all information about the distributions' releases (data files)
ii dpkg 1.21.1ubuntu2.2 amd64 Debian package management system ii dpkg 1.21.1ubuntu2.2 amd64 Debian package management system
ii e2fsprogs 1.46.5-2ubuntu1.1 amd64 ext2/ext3/ext4 file system utilities ii e2fsprogs 1.46.5-2ubuntu1.1 amd64 ext2/ext3/ext4 file system utilities
ii elfutils 0.186-1build1 amd64 collection of utilities to handle ELF objects ii elfutils 0.186-1build1 amd64 collection of utilities to handle ELF objects
@@ -215,10 +215,10 @@ ii libsqlite3-0:amd64 3.37.2-2ubuntu0.1 amd64
ii libss2:amd64 1.46.5-2ubuntu1.1 amd64 command-line interface parsing library ii libss2:amd64 1.46.5-2ubuntu1.1 amd64 command-line interface parsing library
ii libssh-4:amd64 0.9.6-2ubuntu0.22.04.1 amd64 tiny C SSH library (OpenSSL flavor) ii libssh-4:amd64 0.9.6-2ubuntu0.22.04.1 amd64 tiny C SSH library (OpenSSL flavor)
ii libssh2-1:amd64 1.10.0-3 amd64 SSH2 client-side library ii libssh2-1:amd64 1.10.0-3 amd64 SSH2 client-side library
ii libssl3:amd64 3.0.2-0ubuntu1.10 amd64 Secure Sockets Layer toolkit - shared libraries ii libssl3:amd64 3.0.2-0ubuntu1.12 amd64 Secure Sockets Layer toolkit - shared libraries
ii libstdc++-11-dev:amd64 11.4.0-1ubuntu1~22.04 amd64 GNU Standard C++ Library v3 (development files) ii libstdc++-11-dev:amd64 11.4.0-1ubuntu1~22.04 amd64 GNU Standard C++ Library v3 (development files)
ii libstdc++6:amd64 12.3.0-1ubuntu1~22.04 amd64 GNU Standard C++ Library v3 ii libstdc++6:amd64 12.3.0-1ubuntu1~22.04 amd64 GNU Standard C++ Library v3
ii libsystemd0:amd64 249.11-0ubuntu3.10 amd64 systemd utility library ii libsystemd0:amd64 249.11-0ubuntu3.11 amd64 systemd utility library
ii libtasn1-6:amd64 4.18.0-4build1 amd64 Manage ASN.1 structures (runtime) ii libtasn1-6:amd64 4.18.0-4build1 amd64 Manage ASN.1 structures (runtime)
ii libtime-duration-perl 1.21-1 all module for rounded or exact English expression of durations ii libtime-duration-perl 1.21-1 all module for rounded or exact English expression of durations
ii libtimedate-perl 2.3300-2 all collection of modules to manipulate date/time information ii libtimedate-perl 2.3300-2 all collection of modules to manipulate date/time information
@@ -229,7 +229,7 @@ ii libtirpc-dev:amd64 1.3.2-2ubuntu0.1 amd64
ii libtirpc3:amd64 1.3.2-2ubuntu0.1 amd64 transport-independent RPC library ii libtirpc3:amd64 1.3.2-2ubuntu0.1 amd64 transport-independent RPC library
ii libtsan0:amd64 11.4.0-1ubuntu1~22.04 amd64 ThreadSanitizer -- a Valgrind-based detector of data races (runtime) ii libtsan0:amd64 11.4.0-1ubuntu1~22.04 amd64 ThreadSanitizer -- a Valgrind-based detector of data races (runtime)
ii libubsan1:amd64 12.3.0-1ubuntu1~22.04 amd64 UBSan -- undefined behaviour sanitizer (runtime) ii libubsan1:amd64 12.3.0-1ubuntu1~22.04 amd64 UBSan -- undefined behaviour sanitizer (runtime)
ii libudev1:amd64 249.11-0ubuntu3.10 amd64 libudev shared library ii libudev1:amd64 249.11-0ubuntu3.11 amd64 libudev shared library
ii libunistring2:amd64 1.0-1 amd64 Unicode string library for C ii libunistring2:amd64 1.0-1 amd64 Unicode string library for C
ii libutempter0:amd64 1.2.1-2build2 amd64 privileged helper for utmp/wtmp updates (runtime) ii libutempter0:amd64 1.2.1-2build2 amd64 privileged helper for utmp/wtmp updates (runtime)
ii libuuid1:amd64 2.37.2-4ubuntu3 amd64 Universally Unique ID library ii libuuid1:amd64 2.37.2-4ubuntu3 amd64 Universally Unique ID library
@@ -254,7 +254,7 @@ ii libxxhash0:amd64 0.8.1-1 amd64
ii libyaml-0-2:amd64 0.2.2-1build2 amd64 Fast YAML 1.1 parser and emitter library ii libyaml-0-2:amd64 0.2.2-1build2 amd64 Fast YAML 1.1 parser and emitter library
ii libzstd-dev:amd64 1.4.8+dfsg-3build1 amd64 fast lossless compression algorithm -- development files ii libzstd-dev:amd64 1.4.8+dfsg-3build1 amd64 fast lossless compression algorithm -- development files
ii libzstd1:amd64 1.4.8+dfsg-3build1 amd64 fast lossless compression algorithm ii libzstd1:amd64 1.4.8+dfsg-3build1 amd64 fast lossless compression algorithm
ii linux-libc-dev:amd64 5.15.0-87.97 amd64 Linux Kernel Headers for development ii linux-libc-dev:amd64 5.15.0-88.98 amd64 Linux Kernel Headers for development
ii login 1:4.8.1-2ubuntu2.1 amd64 system login tools ii login 1:4.8.1-2ubuntu2.1 amd64 system login tools
ii logsave 1.46.5-2ubuntu1.1 amd64 save the output of a command in a log file ii logsave 1.46.5-2ubuntu1.1 amd64 save the output of a command in a log file
ii lsb-base 11.1.0ubuntu4 all Linux Standard Base init script functionality ii lsb-base 11.1.0ubuntu4 all Linux Standard Base init script functionality
@@ -272,7 +272,7 @@ ii ncurses-base 6.3-2ubuntu0.1 all
ii ncurses-bin 6.3-2ubuntu0.1 amd64 terminal-related programs and man pages ii ncurses-bin 6.3-2ubuntu0.1 amd64 terminal-related programs and man pages
ii ncurses-term 6.3-2ubuntu0.1 all additional terminal type definitions ii ncurses-term 6.3-2ubuntu0.1 all additional terminal type definitions
ii ninja-build 1.10.1-1 amd64 small build system closest in spirit to Make ii ninja-build 1.10.1-1 amd64 small build system closest in spirit to Make
ii openssl 3.0.2-0ubuntu1.10 amd64 Secure Sockets Layer toolkit - cryptographic utility ii openssl 3.0.2-0ubuntu1.12 amd64 Secure Sockets Layer toolkit - cryptographic utility
ii p7zip 16.02+dfsg-8 amd64 7zr file archiver with high compression ratio ii p7zip 16.02+dfsg-8 amd64 7zr file archiver with high compression ratio
ii parallel 20210822+ds-2 all build and execute command lines from standard input in parallel ii parallel 20210822+ds-2 all build and execute command lines from standard input in parallel
ii passwd 1:4.8.1-2ubuntu2.1 amd64 change and administer password and group data ii passwd 1:4.8.1-2ubuntu2.1 amd64 change and administer password and group data
@@ -311,11 +311,11 @@ ii universal-ctags 5.9.20210829.0-1 amd64
ii unzip 6.0-26ubuntu3.1 amd64 De-archiver for .zip files ii unzip 6.0-26ubuntu3.1 amd64 De-archiver for .zip files
ii usrmerge 25ubuntu2 all Convert the system to the merged /usr directories scheme ii usrmerge 25ubuntu2 all Convert the system to the merged /usr directories scheme
ii util-linux 2.37.2-4ubuntu3 amd64 miscellaneous system utilities ii util-linux 2.37.2-4ubuntu3 amd64 miscellaneous system utilities
ii vim 2:8.2.3995-1ubuntu2.12 amd64 Vi IMproved - enhanced vi editor ii vim 2:8.2.3995-1ubuntu2.13 amd64 Vi IMproved - enhanced vi editor
ii vim-common 2:8.2.3995-1ubuntu2.12 all Vi IMproved - Common files ii vim-common 2:8.2.3995-1ubuntu2.13 all Vi IMproved - Common files
ii vim-runtime 2:8.2.3995-1ubuntu2.12 all Vi IMproved - Runtime files ii vim-runtime 2:8.2.3995-1ubuntu2.13 all Vi IMproved - Runtime files
ii wget 1.21.2-2ubuntu1 amd64 retrieves files from the web ii wget 1.21.2-2ubuntu1 amd64 retrieves files from the web
ii xxd 2:8.2.3995-1ubuntu2.12 amd64 tool to make (or reverse) a hex dump ii xxd 2:8.2.3995-1ubuntu2.13 amd64 tool to make (or reverse) a hex dump
ii xz-utils 5.2.5-2ubuntu1 amd64 XZ-format compression utilities ii xz-utils 5.2.5-2ubuntu1 amd64 XZ-format compression utilities
ii yash 2.51-1 amd64 yet another shell ii yash 2.51-1 amd64 yet another shell
ii zip 3.0-12build2 amd64 Archiver for .zip files ii zip 3.0-12build2 amd64 Archiver for .zip files
@@ -330,10 +330,10 @@ ii zstd 1.4.8+dfsg-3build1 amd64
||/ Name Version Architecture Description ||/ Name Version Architecture Description
Packages sorted by Installed-Size: Packages sorted by Installed-Size:
754072 ===== TOTAL (324 packages) 754091 ===== TOTAL (324 packages)
52747 gcc-11 amd64 52747 gcc-11 amd64
34444 libicu70 amd64 34444 libicu70 amd64
32781 vim-runtime all 32782 vim-runtime all
28891 g++-11 amd64 28891 g++-11 amd64
28441 libperl5.34 amd64 28441 libperl5.34 amd64
26284 cpp-11 amd64 26284 cpp-11 amd64
@@ -363,19 +363,19 @@ Packages sorted by Installed-Size:
7128 libmagic-mgc amd64 7128 libmagic-mgc amd64
7112 coreutils amd64 7112 coreutils amd64
6988 libx32gcc-11-dev amd64 6988 libx32gcc-11-dev amd64
6795 linux-libc-dev amd64 6802 linux-libc-dev amd64
6733 dpkg amd64 6733 dpkg amd64
6667 lib32asan6 amd64 6667 lib32asan6 amd64
6570 libx32asan6 amd64 6570 libx32asan6 amd64
5905 python3.10-minimal amd64 5905 python3.10-minimal amd64
5824 libssl3 amd64 5828 libssl3 amd64
5768 libpython3.10 amd64 5768 libpython3.10 amd64
5103 libpython3.10-minimal amd64 5103 libpython3.10-minimal amd64
4249 ncurses-term all 4249 ncurses-term all
4156 apt amd64 4156 apt amd64
4147 ripgrep amd64 4147 ripgrep amd64
4082 libglib2.0-0 amd64 4082 libglib2.0-0 amd64
3925 vim amd64 3930 vim amd64
3643 python2.7-minimal amd64 3643 python2.7-minimal amd64
3542 python3-pycryptodome amd64 3542 python3-pycryptodome amd64
3506 re2c amd64 3506 re2c amd64
@@ -484,7 +484,7 @@ Packages sorted by Installed-Size:
390 ca-certificates all 390 ca-certificates all
389 mount amd64 389 mount amd64
382 libmount1 amd64 382 libmount1 amd64
380 vim-common all 381 vim-common all
376 unzip amd64 376 unzip amd64
372 xz-utils amd64 372 xz-utils amd64
368 libssh2-1 amd64 368 libssh2-1 amd64
@@ -517,7 +517,7 @@ Packages sorted by Installed-Size:
292 libk5crypto3 amd64 292 libk5crypto3 amd64
290 pax-utils amd64 290 pax-utils amd64
290 liblzma5 amd64 290 liblzma5 amd64
278 xxd amd64 279 xxd amd64
273 gcc-11-base amd64 273 gcc-11-base amd64
272 gcc-12-base i386 272 gcc-12-base i386
272 gcc-12-base amd64 272 gcc-12-base amd64
@@ -46,164 +46,164 @@ b8c35fa2956da17ca505956e9f5017bb5f3a746322647e24ccb8ff28059cafa4 *powerpc-linux.
a0950546dc17fca9437219431d8ddb0249ce5b08e899e0c799a87ac982adee70 *powerpc64le-linux.elf/upx-3.95 a0950546dc17fca9437219431d8ddb0249ce5b08e899e0c799a87ac982adee70 *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\ expected_sha256sums__t110_compress_ucl_nrv2b_3_no_filter="\
fb458e6e7718ffd3f060fca911d069a024df8da7c75e34a0aea820a15ca03551 *amd64-linux.elf/upx-3.91 def838b0032333bf3f525944ccafe362e8921b828936fcd6f3fb397c74432795 *amd64-linux.elf/upx-3.91
8988a2556bff2da1a5de9a5a4c909a53ae99a825fcdc7699d4c504bc697f60df *amd64-linux.elf/upx-3.95 aae4ab6795a826cee7a3f3d56acb613c17c1b1ab8c52e9830848bd8380ca395c *amd64-linux.elf/upx-3.95
b8bf6a29177bc7e9595d1c2a200f2c6431e12eee1ca2c8a64064a52c792b7b65 *amd64-win64.pe/upx-3.95.exe 4faf76c6f509b5ced9349065d94da7ef4e2ff7356f050d429ae6ba37a66f7069 *amd64-win64.pe/upx-3.95.exe
02c17f49a54f50a9ed453227b600feb4ba5574514552d1cb344b1b012265afb2 *arm-linux.elf/upx-3.95 29da363abd195475090b86e9be0aff13bab7eded09575dd67bf0fc90013c00e9 *arm-linux.elf/upx-3.95
0006e29a124430722e691a05afab0a381d332c2ffe53c7f6a2cdf4cdea5349ce *arm-wince.pe/upx-3.91.exe 0049eb0e899fc07f8f4cbe44d57b8e9558a70c34337b9f47e06a7ffdc21ad256 *arm-wince.pe/upx-3.91.exe
94a60c5859fc98db7671828decfb456e670a402a676d97cd4d66b5406c062f1f *arm64-linux.elf/upx-3.95 4cc6c4a1808a9a6502c92510137c28aeceb1dbd4c5a31b44ef781a02a47163d3 *arm64-linux.elf/upx-3.95
654a4e4cb325caddcf150ca90f2729c748bb0a3e99e703c6aad6a9dbc7d6d6e1 *armeb-linux.elf/upx-3.91 a9311d80c688a188f29f98284887fa8dca54a98c6a1693098f0bd23efadb59f4 *armeb-linux.elf/upx-3.91
c68172e589871dc76cc7dff5464c87cd83a8cf9178d3b340e166912bcf6c9a0a *armeb-linux.elf/upx-3.95 638103772ef45ea4ce182f784609b269b8d77974d408a74752d677c0c619ee44 *armeb-linux.elf/upx-3.95
ecc834183718c481c724754356977f4d63a58a07a2a308b9d2d669cf4d859b10 *i386-dos32.djgpp2.coff/upx-3.91.exe e8256dfde7bb3da63eb62f70bf8cef9abc6fdf9d52fd89963039bbe01e3aa10e *i386-dos32.djgpp2.coff/upx-3.91.exe
879bdb9fc4c2ff76688250b429281a0a196c3723aabb40657f61a256d271b407 *i386-dos32.djgpp2.coff/upx-3.95.exe 1acd381ebcb396cd1affd59ad2708a538fda1e49be8992b908680ff3a9de0648 *i386-dos32.djgpp2.coff/upx-3.95.exe
582e7d54ba02aa4133a82ed423fce85376a3e2435468c2275e6500895f80b62d *i386-linux.elf/upx-3.91 0f806dae28529256ea89ed5c44b7f8daf8ad0f614a7433dc8b8fc9f99b1dd164 *i386-linux.elf/upx-3.91
00501788b58d4523faad8e0d0a9832d1f743e33739f8190be19094e2aa002c77 *i386-linux.elf/upx-3.95 2b6b2e106ff23305f0713cab0f8d9509a53e82fb550cdbc8378ff52f4f5df19c *i386-linux.elf/upx-3.95
9b9c922a6ddd48cf92af8aaa99452c101d69eb65f83e5fed6870bfe5450ca66c *i386-win32.pe/upx-3.91.exe 695d27ebcefe8f4a6fccba050f0f82641e575233a83ea944fd35573c62c58538 *i386-win32.pe/upx-3.91.exe
85a21b38b2c0ddf94bfd41b28c6a7af74accfa2246cb7f6c5881a0525cbbcdd0 *i386-win32.pe/upx-3.95.exe 2cff918961f8e7eee395a8d2018cb94f91ecdcac1a01988437087d2c32c78d25 *i386-win32.pe/upx-3.95.exe
993eb24cdacd30fd0ad915c88ea523f19748e4f4b3c4f7302dc233ceec67501e *m68k-atari.tos/upx-3.91.ttp 17a754921048185871bb83c92788e1bec8b6a86b5a8f1b6be5077894759b3edc *m68k-atari.tos/upx-3.91.ttp
b48802d429cb7edab4d945a658a7f2aa65f67e48085ee9f40999e63cd164089b *mips-linux.elf/upx-3.95 f0ff4d442c1ac39411be6c8077be60476281f5a04e2736c9fbad0d950cfebe52 *mips-linux.elf/upx-3.95
aac26e3324c3a07d0cb41ee68dddc29891334e13ccd60bfb9138729a2f27742d *mipsel-linux.elf/upx-3.91 3175422f8cccffaa1f7b0cda5a6f273977642652f2f618e7ef554aa74b3deae0 *mipsel-linux.elf/upx-3.91
85803d12a0262bb424c95efff414e7882dc1104164c245ab90dff27ee5bd41db *mipsel-linux.elf/upx-3.95 db78052d467edb695d31a7540c2ff07c5d5157171824e55be1c0bf830d755f9e *mipsel-linux.elf/upx-3.95
e1ec8a1d392e0493c9fd60f3327d85aec108815100ab01ae65210cd26c917888 *powerpc-linux.elf/upx-3.91 8cfb74cc5a592857167ae511c48f6ca126016b41e459846ac9376eb753e5ed2b *powerpc-linux.elf/upx-3.91
845aad9ec6cba72b3a83c9958e9718938fdfd3d18ac76170d81f57c1c86987a0 *powerpc-linux.elf/upx-3.95 8aaf2b9c4fbd7274f841b183b3bf799d673c77444e62b2d93cf49ecaf4eb82d8 *powerpc-linux.elf/upx-3.95
149efbda7f68c354d48771d838aca07cbdda503746bb83497ec8ab226dea4792 *powerpc64le-linux.elf/upx-3.95 be81fe407b90afce31898085bc23b5f47b5e899347817ec85a866d10ee8f4ca9 *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\ expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
3f1d7ad512df7cc6f1fa4fe4a37f21d92709764fc385e307504e12208c090df4 *amd64-linux.elf/upx-3.91 07828062ffc59e911b115d0f4f576a996bd6c732672646cdcec9cb9f28b1e1fd *amd64-linux.elf/upx-3.91
a9291e95bc5c59193ae318c4bf13341ade909b8a6b42694c33cb3a9d1a084637 *amd64-linux.elf/upx-3.95 fa36932d3b862ffa9142025440c02b5d4b604b5bb74a680e24f00c05c415590b *amd64-linux.elf/upx-3.95
968c6c681b99c6ad21f3100527da0d2f0ccc510885d6a23b1db613207aedc739 *amd64-win64.pe/upx-3.95.exe 4377c48118aac9eb2d93853e7a8f26d7aeb0b09dd98b76685418424670c18d38 *amd64-win64.pe/upx-3.95.exe
e06b57cd0013db94ba298bef4b30d904ad8eadafb7db6b4b4964de65f9fae0ad *arm-linux.elf/upx-3.95 2b07d4aacbf14b188d18c814709435ff861cdd9af1cab8579604d6b64d554f18 *arm-linux.elf/upx-3.95
bf6c7ba2a464f7dfcdff230462a23f9bcfafaebddb7746f0021367076ede58ac *arm-wince.pe/upx-3.91.exe f1abde57de44ea314d8b5a6ae1fbaadc539f004c1eed3153557dff0d36d86e9c *arm-wince.pe/upx-3.91.exe
053c60a4a376ddf3e5ac9b91933e483b86f184f02369c1df204b32acda2d72f7 *arm64-linux.elf/upx-3.95 3d71827807812c85271d26ad241b88ede4731e5d23abb49daa3141941911668a *arm64-linux.elf/upx-3.95
63bbc0b63ec9504650869e0b51a6941c9d8f6d472463e9f602e26e6a21c493fc *armeb-linux.elf/upx-3.91 a6f100ddd3bc9a0b20c2225395aeead23038bcbcd7c2855fa8bf4b0389bded5f *armeb-linux.elf/upx-3.91
f0b78117ac4a4671470cbff4b10907024d3811ee4197dcaa5cad0a84c98c8693 *armeb-linux.elf/upx-3.95 7961d15d103ffabacf74f5be77e584eb2b382807f127ec658b62a79865cd8d7b *armeb-linux.elf/upx-3.95
86888d40e8b17fd59a1ed78264e075e1b04b57ca020c43768b37f916beb11649 *i386-dos32.djgpp2.coff/upx-3.91.exe b6e7e212ec1b839cd0fb5f0ba2676af500f12222f76eeb4961966f3efde82d59 *i386-dos32.djgpp2.coff/upx-3.91.exe
57f916c1f0fb33746de4c65f232258fb48acb2aa266b59ffdeac0c654bc650ca *i386-dos32.djgpp2.coff/upx-3.95.exe 63b8c444e413534f9f57b7777635a21ed41eee5441707a61884ed504408fcf10 *i386-dos32.djgpp2.coff/upx-3.95.exe
efc046cd508c647651fa6574b171fb44ebf2bf785d7bd9ec3fcc6b24b01db96b *i386-linux.elf/upx-3.91 6e5e55eaeae0861e3340d863c7ac272b5e82abf7e74805ab6c2c91406cb6d80e *i386-linux.elf/upx-3.91
279325e2cac136e24ec928eba687849c3359ab9ce76ad9502a64d3883029ee5c *i386-linux.elf/upx-3.95 3fb3dbc4de5d6a6587f179f121d3bf2b43dd35c87bb02737e08ae19659bd63b0 *i386-linux.elf/upx-3.95
8b7aba7c9e733bb72844d797cb9f6a7225b4ce79ee62e38a9e424b4c5cc63ade *i386-win32.pe/upx-3.91.exe 93dd8e25e4a4f9d73859ef82b565deadf06cf645c017f871803ec9a65e3a1f2e *i386-win32.pe/upx-3.91.exe
e966278db2d69913989bcfddf998e8f5b35fd8045c55b1e45065fc121c2452a0 *i386-win32.pe/upx-3.95.exe c9fd12f5bd7fd7fd9b224387a19db65132829f057927b523d307986588862778 *i386-win32.pe/upx-3.95.exe
475777e4b8284a57e61cec9fa61549b06b761f6fe77ffdf24e23997eefd87036 *m68k-atari.tos/upx-3.91.ttp 72eabcdf8483677d4e6a34fd9292d0acc6afb977b9c11c04cb9d8701ed70a514 *m68k-atari.tos/upx-3.91.ttp
fd726e5be8f899cea4ce147beb23e7697953220f680b54d9ad12ecbbf6764fd9 *mips-linux.elf/upx-3.95 8405b6f62a9da0fb1ed48e39b835787f44e0007df25fbb5addf62e537bea5b8d *mips-linux.elf/upx-3.95
36e40ec2e07cf2a095f6d1c58d5d454a486d24fa1406890ccc3dcaf3223b1ed3 *mipsel-linux.elf/upx-3.91 e1399cdbd927de11ee2e190870072c20ae4b0457293ed095e216ec07aaef63be *mipsel-linux.elf/upx-3.91
97a0b1e3744f4168905c6423778f9fef887a467e9f382677f1da785f2f3fd5ea *mipsel-linux.elf/upx-3.95 e3ee3305d7eb8a087347563cb918826c0020f9425517dd2379d35b81f7558523 *mipsel-linux.elf/upx-3.95
1576fcc71df7ac816aa3b322b9c399df017f05e99b843b98ce02be15e5ef9148 *powerpc-linux.elf/upx-3.91 9359c529192c47170f54724d5552a9c7aea525fbe48bcb65cadf649d2a1a61bc *powerpc-linux.elf/upx-3.91
768a206b9dac7816bd9b1b5c86fbfdf1f5a6920fa2cbc35e50b19d58779b219e *powerpc-linux.elf/upx-3.95 ebfde9974eb2f5f0d84cb1d94b68bb3839f337cc19cd49f7a5bf05f5f06d0104 *powerpc-linux.elf/upx-3.95
287d53686422057d5c7ddad5c30ad2a3342424153b162f3769fe8fe717b48b91 *powerpc64le-linux.elf/upx-3.95 fe0d0e08f3f52a09b3ef266dc8ef20f8ca1b101a84697e1336aa7100be5c20bd *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\ expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
3f04cc82752ee6c573e6ed22a44943caa1126503ad898def7452e25df14709ec *amd64-linux.elf/upx-3.91 2767214e38bef8040a2ffcc49ed566110d4017c584ef8d70a19150123db70b07 *amd64-linux.elf/upx-3.91
7a3103783fb6c1e34b476e2cbeb7a5992c635dcd643d1ff37e5aeaf57f70f268 *amd64-linux.elf/upx-3.95 977d6d3ea341af39113df6194981b219b03752e5690371dbe26da2e95cc3cfe0 *amd64-linux.elf/upx-3.95
509be220b15f12853a26207f8c2fe361feed50203adb3af4e2bb03aab3467221 *amd64-win64.pe/upx-3.95.exe 0b69830516796f9018614270e0f07050c09c479495c753fab9c1f0029f3e8f33 *amd64-win64.pe/upx-3.95.exe
e2e4dfb92a85a1e8d06d2d28778f63c3efec484b91c58236ce9df02cfe3e012e *arm-linux.elf/upx-3.95 b6c169e5ac4e1d84202d4ca885d66c50d10a8fc0754cd11fd5b10030e02bfebb *arm-linux.elf/upx-3.95
18bf698a9ea039a0c3f1de9cab845dc1b51ad881e96daba4b7389adca830ecec *arm-wince.pe/upx-3.91.exe bea5d7bace3c48d53c3e32c1cd21660ec38f1e5181d032e338ed01df0d2127fc *arm-wince.pe/upx-3.91.exe
b2155656ba70f468cc21fe0125dd2a2a9b0bf4b5d802eb399565c15b2997f1f8 *arm64-linux.elf/upx-3.95 61397d56c882183181996024120c1ff6693eaad1d94b25ad589ca3f3f13f20f2 *arm64-linux.elf/upx-3.95
4dab150e1309d643583ded5262dea6f5ffa82ef7e3533515d10ef3c95dc11ea5 *armeb-linux.elf/upx-3.91 50a9129df007f66036d6c975ec65f01d40d647816495b37de22c68fcfb78029d *armeb-linux.elf/upx-3.91
25b072a5a86ead3bd9ddc539c3f29d5fd2c9cceb010657ace5eec827f73cec93 *armeb-linux.elf/upx-3.95 2d60dd807a5b6e751a03bc27422e18370f33a84a400fe9764bb457df2cd71462 *armeb-linux.elf/upx-3.95
d7d0d5c45297d81cf4de9256c43ebbe236d1a839daeb16c900ebb5c1503659f0 *i386-dos32.djgpp2.coff/upx-3.91.exe 0fc777c5ce9357496422b14f426aadbd0430f862cd7d3c6a441bfab861ff7e22 *i386-dos32.djgpp2.coff/upx-3.91.exe
262fa423a8cdd765156b9385f4f1fe2fc8bba4b7e9904281f6f99a7a867ecdd1 *i386-dos32.djgpp2.coff/upx-3.95.exe 0152a5c3587016f5eaac20637b6ed05df7a73de2a270a8384d6026c3c4196967 *i386-dos32.djgpp2.coff/upx-3.95.exe
a74811a5f2b2bf26b1d64ff8e5ac5d9111bbc3022bea77b5389a2253a059c6e9 *i386-linux.elf/upx-3.91 38a9525611849ea6ef99a4b9203f664c23f3f970d8057d21ebb6679674d4f1db *i386-linux.elf/upx-3.91
b4c9632a18ac07b7351ea3a24e112ee32cba67eec194dc822f5211d793665d63 *i386-linux.elf/upx-3.95 c692d7890d9b853303374cadfea9eb53eee603acb7d483c359d40e1500dd1f78 *i386-linux.elf/upx-3.95
b35b94f6f14e0795a3e30d04aa6cb9cb1fca6dc15a45cf99f9ce66646b438d74 *i386-win32.pe/upx-3.91.exe 9dbc382f2c7bdc808183a81fd338b8089596695128edd2def6ce39b7b4328d68 *i386-win32.pe/upx-3.91.exe
11505bfed2b91ff3df360c3fcf5e701bce6c536f79f4743eff367bf4e16a686b *i386-win32.pe/upx-3.95.exe 98a657dd4b718c973e88003b13ad338d1375dfa3355dc5cfc9bbb661aae158ed *i386-win32.pe/upx-3.95.exe
ac45ed125aa0e5f002556e9410d32e4007cb905cf71354df20e38785a90e0ea0 *m68k-atari.tos/upx-3.91.ttp 4f69c4101b169a5b77ae387f6e58413a8f0b75edfef418e48a85d4fa208f622c *m68k-atari.tos/upx-3.91.ttp
773e144b638f23cfa2640e5c6760d6f847d477efa0c64c158e24be7efbdb765d *mips-linux.elf/upx-3.95 b5795fce568d81b0d3962f022983f2c9ccc9873ab1c92c8ae2d5c2df08ba05cc *mips-linux.elf/upx-3.95
bd53867507b9449dc8c12007d8ed16ef332b8c4d96b1749cbd8b731a61402215 *mipsel-linux.elf/upx-3.91 29ece4f791c731eb3f17ae3ea67cc31477260050591852a12612be2d8b5f1cc2 *mipsel-linux.elf/upx-3.91
a72cffc63f3415f5c913a504c2d2af30cd533f849cd7866b65a8b4c91301c475 *mipsel-linux.elf/upx-3.95 00350a2493106d353c17230902ddfbd375b0b5be92c8746514a32fb5b4f20531 *mipsel-linux.elf/upx-3.95
1c93b25a4846fce0d2242d753f0a6e662f018a8d63234236e88c7cf32e104d22 *powerpc-linux.elf/upx-3.91 7bb5a8d7b9f563557eb3bc970e5a92f0e5583b43151f75ac48e2360cd3d53c87 *powerpc-linux.elf/upx-3.91
263f4d184edab2716accbcdda2749a348a0b3d055d3096fa8c85d975c66a2342 *powerpc-linux.elf/upx-3.95 ce49efdc960a78078277c3dc746db0d9eb409d45bc6f91863e49a862bc65c966 *powerpc-linux.elf/upx-3.95
9b04dbab6863895dd3df5b0fe50086eff57e401d853a55fd9cdd06c0794e7ce7 *powerpc64le-linux.elf/upx-3.95 9a800c16d1d7db5e8c6b8140c9aecc253d65717e1dfba5ac65de7804f487efee *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t140_compress_lzma_2_no_filter="\ expected_sha256sums__t140_compress_lzma_2_no_filter="\
68ea7e46654a94a1c125e039b9167ee8724edf0762f5522e81cfbb94005af8fd *amd64-linux.elf/upx-3.91 0069bd038cddcd0b87b2f56471c7fe223eaa1186c29648c5505103e813d841c3 *amd64-linux.elf/upx-3.91
7adf842624efaa46a03b1861fee62dbc01c1e22387b29fa16f530d3c6aa4d295 *amd64-linux.elf/upx-3.95 82ae15c72fddba6a569c7a3c3c9dbcb9021f5de8dcaf20ef304a6255475dc076 *amd64-linux.elf/upx-3.95
77aa80d55f83afdfb3796dfbe972b79a2195b37f84e9bb87ff7d11e497927021 *amd64-win64.pe/upx-3.95.exe 616c7bfe28cbf059d23036fab3931f1a77d8383287102e0f4533ac8bba2ed3f1 *amd64-win64.pe/upx-3.95.exe
16916c440d76231df63ae5260bcf28c65476d06319d51e084f1730ab83d279bc *arm-linux.elf/upx-3.95 24110285d7f44c2caf53f8e8a4cd83e07d7650964d0d0f1adff9411731918bb2 *arm-linux.elf/upx-3.95
fae27479b40010e1d0794fe28fcc619c64a6ff21888221089fee429135658580 *arm-wince.pe/upx-3.91.exe 4f5a9de1efe24c8ba5acd4b858f38da0f5a05fac2eb6582960d999341c6b5a7b *arm-wince.pe/upx-3.91.exe
c7630be0a014dbef80053609329faf5bb55ca5f3abf80df26674ca311d3943ae *arm64-linux.elf/upx-3.95 6fe5e2a043e84e376a66a22a3cdc0cf30f04ca5fe404129e3d6ff8746a597cfd *arm64-linux.elf/upx-3.95
4efb05939371b23037e8a0b34a35ae181d2d101afac9d3e06457d191e59a5e76 *armeb-linux.elf/upx-3.91 fd1d2050a4e414db32375d9400dd583462d21ddc625bf48318525c4cef750194 *armeb-linux.elf/upx-3.91
231d9a6e570615c2688befae04ad7ca88abe9655097e352e84cf0419190355db *armeb-linux.elf/upx-3.95 db077c6fd75e81e889ae7cfccd7fb2eb604ada3d8f68ddced1c283c8d65ec5c5 *armeb-linux.elf/upx-3.95
9df0142609a0a61595c500f1b9b40efab6d8c179f83068a5f4507df9a9c66d18 *i386-dos32.djgpp2.coff/upx-3.91.exe 68d307bdbb6dbd721cc62ca2029879c7e505e889d322176c894b5451d1975563 *i386-dos32.djgpp2.coff/upx-3.91.exe
6bdf60b30d916a9b706c7c2563907758994350b372351d7e9b1fa6427d75a01a *i386-dos32.djgpp2.coff/upx-3.95.exe 3a2619475906f20e9aca7eb31167c6ab502de7c496c54167f0589d0c52ab060b *i386-dos32.djgpp2.coff/upx-3.95.exe
a96cc162e2a2ce59c9199534ce3c067096b655ea426b8c1ce9c4d27f282481ef *i386-linux.elf/upx-3.91 3b64a7279552c9754b9fbe9760ce94df698d5c72e0e722013a4c8992854da97a *i386-linux.elf/upx-3.91
25540046329ed7bb0b071a6686d301f5cd8d3722407088514a88044a7caddc3b *i386-linux.elf/upx-3.95 3da0a1c028d6b9a325d7beef6399379fcb2c1f6654b1be8548654c0451ff92cb *i386-linux.elf/upx-3.95
93a6093dac3cb679e85900bfd60d7cf26319958245d4dc92425856c742aa95af *i386-win32.pe/upx-3.91.exe 366c066909663c9b19f9211a444ae08e228cc78a9f2cc32af6c07a5be02fcb19 *i386-win32.pe/upx-3.91.exe
e1cb547f4c11a58b245de0bb71e9fbedffa4d9c6f97a57ce679abbae71e0c0b9 *i386-win32.pe/upx-3.95.exe 615a77ca6df08458e34c4a67ff657bab9dcc3cebf2da3d675fec623eb7dcd631 *i386-win32.pe/upx-3.95.exe
31ba49ef577fb0031130e00198b69afec95ff9cc90806ab04d607be0627d0d1a *m68k-atari.tos/upx-3.91.ttp cd612528df6180c7a72e80dcd779729a082d9b5b5312b930032f1425f0ee6525 *m68k-atari.tos/upx-3.91.ttp
69d27ee81743163b3bd9a7a9721abec70606ee38716c72410dc82bf826e508ee *mips-linux.elf/upx-3.95 18371b44212bb75de8ab435ad0302d5a69b9fdeb2d0e3241a860e57c8c7ae684 *mips-linux.elf/upx-3.95
6ee9682486076ea670bdfa95c7b6dd98d0274e970f7dcc7bdabda8d07558abf5 *mipsel-linux.elf/upx-3.91 ec3b847217121ee5b7de02f1d81c44b149af9676c59d1a20eb71bd00cc200a96 *mipsel-linux.elf/upx-3.91
b817e57dca45c26d93d2f293d77bf0a9ffa2a4232141d9e4f1a20b369c0b3bbb *mipsel-linux.elf/upx-3.95 70febd6b0460cf481681d0d2c3062d7dbfe4031a94dc0a60527b8ac236a61464 *mipsel-linux.elf/upx-3.95
99337dd36736e46e2ae90fcb6990746577a135d4b465e69f7f421a218e245657 *powerpc-linux.elf/upx-3.91 7901f9f8c87e0e6adc91e4cb1f3013f8e48ac484c7f1ec93712a54bb4054b86a *powerpc-linux.elf/upx-3.91
c1b63b66351e224cc53e33086daafefdeaf3c91a37b68426b08d2c709727f214 *powerpc-linux.elf/upx-3.95 3233502fc41d22fb5d6708a4b4a8c8bbb1a469baa818de2313d3eb682e2bcabf *powerpc-linux.elf/upx-3.95
9e28a8e6eb94549defc2a842ca24bc7a7496f581237378a118a0ee1792598ee1 *powerpc64le-linux.elf/upx-3.95 240f68868436b71c258b3941d497506ae7aa908c47a6e8d860b315f31747ae8f *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t150_compress_ucl_2_all_filters="\ expected_sha256sums__t150_compress_ucl_2_all_filters="\
7b164c03af75a33c19dfa45767e9f44a754fd2fecd56239609fff37244030593 *amd64-linux.elf/upx-3.91 44782eb9d4612c0da2349a85ff203434be9fec95a7de831d5c9dddf86b4bcca6 *amd64-linux.elf/upx-3.91
f591bf4b34d2bdab707506ca9e7b2822b0d9bfa1dfd542b96512fcdfe18c77d3 *amd64-linux.elf/upx-3.95 f2a9302c55856518941e15e5e27396b09b0a6436f3fd285a72233e70307cd84f *amd64-linux.elf/upx-3.95
a80f6756fb9acb5ac4be3f0609c37042922c769a285eca34734eb62547ce4479 *amd64-win64.pe/upx-3.95.exe cea35c25e4417fa815f383195bf2bef77631e5a594943dd830228e7efb2fceaf *amd64-win64.pe/upx-3.95.exe
2c249c4fd65bc53376984bfbe352d7732f49d7c601dd01773a6034c127a03416 *arm-linux.elf/upx-3.95 e3a22eea074646a74221a2f77719711cbd7dd773dc4118d1e20e7f4b4243ab7c *arm-linux.elf/upx-3.95
f640a43f3e12d092a4a8e9f34d89cc02ca85d382b80e1efdeec4ecffb09aa680 *arm-wince.pe/upx-3.91.exe 44be9300e7a196715ec98757058bd033d54f60d9b472a9bb44574bcf13ad6872 *arm-wince.pe/upx-3.91.exe
8d5df9081689113edd3cdd357535aa35e45df4339ad37479d496cbd6e873f38f *arm64-linux.elf/upx-3.95 e59d29a593ec04952ebb9d8739104eeb191c84bf179232bfd5f4cf3d93d9c300 *arm64-linux.elf/upx-3.95
0756666adb390b4330cf3f50eee92f73cc1d0afdbcecedd7cdf94fad29bf2c71 *armeb-linux.elf/upx-3.91 af99b4f754a2d69788ecd802c23b2073acb6a2c255205b1f48ee5bf858b4e0ec *armeb-linux.elf/upx-3.91
7b8156540b234aec8f6bc4db8dcd9841afd0be1385d55b07bb6f918594dcde9d *armeb-linux.elf/upx-3.95 6222c23490376a8b639c887e4a74329563c887745e23e2805b2747ce4592afea *armeb-linux.elf/upx-3.95
23cc97a192c76ce849d17f5a902d178ed10918007b9667913395095db285b546 *i386-dos32.djgpp2.coff/upx-3.91.exe 27d0e4525aab2f136cd9711f7f49971eeac3916c1c020b3ae96012d63d259bfa *i386-dos32.djgpp2.coff/upx-3.91.exe
66ec810d94684cfa71980a1812ec158b4485b897aac52fa4617e097d69e4d10f *i386-dos32.djgpp2.coff/upx-3.95.exe 36825cb489b31be59873a2d7b7b70d73f5693384b4d07b43ef824c39781ba2f2 *i386-dos32.djgpp2.coff/upx-3.95.exe
9b004924ddc9e028e556c882366e10ed11cc8f69792f658e07b2d19d370bb102 *i386-linux.elf/upx-3.91 b8f50569863c7ddc62678a83e64db1f92d52f208dab82bd0f682f2e94e9893b6 *i386-linux.elf/upx-3.91
74453c23dba3e6f3818faf85f2dd34669839b34679da70201e071566a32df26c *i386-linux.elf/upx-3.95 21b192de6430e534e408dd84438f3df41e0c9e2f4874d404a48fa0f6c8ef420c *i386-linux.elf/upx-3.95
e91a7748c9ebafe7987127431690ae1464d8f505267a8b3837edf5f17589534b *i386-win32.pe/upx-3.91.exe 0f563975edf33eda453a3ff6c29c6d4cb4986b411fd1e08ac3335a7e0efecbf0 *i386-win32.pe/upx-3.91.exe
ba4c9b76016431ff30f1ead43b77a6b4ecce9757a438d05647ae3efaa33288fa *i386-win32.pe/upx-3.95.exe 01192c4c7ab197ec9f94e1d759bf5375a759d258719999e30b9252598d5ba3fd *i386-win32.pe/upx-3.95.exe
e6b493dff57c763d4feb49490353dd843b15b1a1c78c000af8bf48472e11f5ae *m68k-atari.tos/upx-3.91.ttp e9da1f7bbac24026b3d0e102e3428b5408521140a72421be9133b3e4383f7ae8 *m68k-atari.tos/upx-3.91.ttp
cdf64a07ffa09aab14f5f467da334c41b5b496b77f65034bfca94b8f917b71f6 *mips-linux.elf/upx-3.95 2ca89ba1d0fa58a6741e1f59b313e95501385c003628a6f54f4314a81e3bf003 *mips-linux.elf/upx-3.95
cf1e80d5575766df41fcc27e08e30e3aa2b3a318a0d9014e6a7241bed8fb1d75 *mipsel-linux.elf/upx-3.91 987d193c228b498cb0096783e0dad3f3f1a5964f0ecd8d88373be5619bf365e6 *mipsel-linux.elf/upx-3.91
5afd8fbe8bdb25a76dd4105dbb3e4695e4332ceec9837e0609a9850cebdc524a *mipsel-linux.elf/upx-3.95 b90ac46b8d1ad5e89c3aef00317de48de343a8789d08beba8ce73ea3d3389e0c *mipsel-linux.elf/upx-3.95
c378615d5068a5c44cb751290c732a127f88d3534d47318be41f1827a43c41b5 *powerpc-linux.elf/upx-3.91 643e83b549b120d4b95ab9776aceb1bce00b5bcd092f8e797c6de569b7319d60 *powerpc-linux.elf/upx-3.91
b4b3ebd20ee61a0ed47d481e7333cef42d1a23f832c5463aff6df640d5265e65 *powerpc-linux.elf/upx-3.95 835e1e6100c9538feae120fc49b2d279bbd47bc06d121e068b20120c1d723370 *powerpc-linux.elf/upx-3.95
0283de59bd2bf8f9dc11e1b5ad69d666bfc7a2b2168585ae3874f758eb271336 *powerpc64le-linux.elf/upx-3.95 adde61c5841ee5774c58828e199410c288b1b820eb1c2a541937208c4571d6e0 *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t160_compress_all_methods_1_no_filter="\ expected_sha256sums__t160_compress_all_methods_1_no_filter="\
d2ebb0a3e77b766446b0076008c63e910b3286b72ba7c4cce03782f36c0c7396 *amd64-linux.elf/upx-3.91 30d2d0daad443d6510ca98211cbb252eb7e34fb8e64dcff9f488b80efe16ae11 *amd64-linux.elf/upx-3.91
3de94645a9b15b723b21da216e26577f8e28d4d296ceb5b68eacf5ea4040525c *amd64-linux.elf/upx-3.95 d0d739ddf40049b1aa47adf4d223b93423b24e4b3d0b90c6784984eaf543a6a0 *amd64-linux.elf/upx-3.95
4106f280f30fff3c39fe72b10cf450cc514d3aa9e6769255f54606c4c09bf646 *amd64-win64.pe/upx-3.95.exe 83aed8c5af108230c8e1a65978ceb0284f9aba3a2d322751a835fc00b44977e3 *amd64-win64.pe/upx-3.95.exe
db5838a8816241e57f3271ee217cbd99b80d2c5ec15f9c71e0b1da1cced372a3 *arm-linux.elf/upx-3.95 c52fc32e70518dbb4a018bb13cae96189d6829e022a66a290ae22bdc2002ddda *arm-linux.elf/upx-3.95
97a78c7aef6ab3eeb2807893c4edfb529565e36b27f9982456276dde46e34d90 *arm-wince.pe/upx-3.91.exe 9f3bbd889e8ae5e84c9642b469e7572d33ee907cded259cce0cc06313694da94 *arm-wince.pe/upx-3.91.exe
50c4a83017a143e386f8e8c4f1dc73827b059ffc4a94586ab949edd19f27d4b3 *arm64-linux.elf/upx-3.95 4cc27218d283568ea3d291e7e81823582dadf6aad171e5e1a3cf5ed498f7e42d *arm64-linux.elf/upx-3.95
dbf432c12845fe8cebb131995cd57cc637dee8e21e8b083ed05052a2839373d8 *armeb-linux.elf/upx-3.91 22b15aec122fff9af6b165be15202e2b37a9040e29d8134b36a2f1b6089b4d31 *armeb-linux.elf/upx-3.91
751ecfef4f02003f127d7dffe9fdf12af1a449bf4546e8a6dbc86d8885441746 *armeb-linux.elf/upx-3.95 aafc89fe42ad632bf97611f0fa883ea2bad3fa8acc8609bf3fafb9e3eb7e836b *armeb-linux.elf/upx-3.95
da261516dc443ac3a9dfbe9e3353313042b72e8c1fa3f7c17bf32e0ff4221a12 *i386-dos32.djgpp2.coff/upx-3.91.exe a60b7ac4aa974e777f53010d2e67b9f1797f264303a6520f6a5091c74d3ee2d5 *i386-dos32.djgpp2.coff/upx-3.91.exe
a4eaa51e14b7bdecff560e4ed209888cda0fde955693a7005aca67361181c561 *i386-dos32.djgpp2.coff/upx-3.95.exe 40dd6e828e194af6c7ba556bb0b3f871b4359678aaa8774e4ebd2f3d2f0f8a8b *i386-dos32.djgpp2.coff/upx-3.95.exe
48c1959184334c5eeaddad5b2141103a0a5863a3c22f068d6d977e2fb0ed1711 *i386-linux.elf/upx-3.91 f5060a90ccdeace91e6ad7b76cea9b91782726e1ec87006a479623014c0f9a15 *i386-linux.elf/upx-3.91
eeb2cf342f9dbb87440bd4aec0b81ea3218b300124f6348758ea4bf100318ec9 *i386-linux.elf/upx-3.95 313401757dbac85507981b32a0a1b91b8dae69341df8b883a8c9503fdc853a5e *i386-linux.elf/upx-3.95
28c742067136d6023720208131a5052553cae9cd5fa1b86ffc9d7b1338ab6466 *i386-win32.pe/upx-3.91.exe b3ca631c6ef394cb1c6128a9fe80ae15046f08d6117f34b3b50f9038d9abd040 *i386-win32.pe/upx-3.91.exe
11646ac069761715b45a78c0ad769ca69f3b2e22ff70a7068bcda7118bfc82fd *i386-win32.pe/upx-3.95.exe 2abd77c25d1b127df71b2ca907b886698fe366325d13fc79d42d3bad9bc80c9a *i386-win32.pe/upx-3.95.exe
0e442a98a0e90716945ffe9addf9cb7079686e3cc0f968c5e557b52a36fe6ac8 *m68k-atari.tos/upx-3.91.ttp c7cb10370e0b1fc829751e454b8c31db71f374b4242a495193dd1a3095353030 *m68k-atari.tos/upx-3.91.ttp
71abe63b1bfe35d8ff9bbaab18dcf41881a94f7bcd12bd0c010205ecbee94f33 *mips-linux.elf/upx-3.95 3ad999051b105774b6156216196afceca832e23ed182f23068b3fd72cb405776 *mips-linux.elf/upx-3.95
acc0e3322b4f22aa8e5a79962cf92b1a8ad203755dfe5bab6d2a668d274e4aab *mipsel-linux.elf/upx-3.91 22bd048307eb9c72537558e6f50f971a3d083639849fcbdba7f2ae465985f6be *mipsel-linux.elf/upx-3.91
e875572d1be9999b9292122d2094ae54142b268d7fda4ab12544507aaf673fe3 *mipsel-linux.elf/upx-3.95 7d85fd4fac91e65ec7c480f56dcf66fabe6597123b93e9a5d8ac09739ffb1a0c *mipsel-linux.elf/upx-3.95
62414bff8849020ea0e93c10595fbe10e30c5effa87d25fa8b67c77bc810ccb7 *powerpc-linux.elf/upx-3.91 91f2cf4275d14d60ff086b6eb79eaea3b5bac5ea182cb678339a4cf70b4e46a7 *powerpc-linux.elf/upx-3.91
5c59c4dc481c71a9b02dd39f8ac6e3aec24f6ca2864ad3ff1c7cc54ab567af9e *powerpc-linux.elf/upx-3.95 51c8366e143061412e9e9e92846ae9d6ed78dc687dd8ac3ee944c6cc55ad2b95 *powerpc-linux.elf/upx-3.95
71863da15c4bd482c7ad6123895b555db86610b3cc35e7ab99897d7c9dbfcc9a *powerpc64le-linux.elf/upx-3.95 1d88a2605b6a12966b26b9d0fdd9b3f8b4ac2ebfacb022d539e52fa2ea1be0cf *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\ expected_sha256sums__t170_compress_all_methods_no_lzma_5_no_filter="\
6880572cb1b05e8b43af2cc0a56937ad4dc3fb32260092a1649164155b5e39de *amd64-linux.elf/upx-3.91 687cd0d51188481265c6253757a87a94378b307caa88ca95f159a9cfeb6cfa66 *amd64-linux.elf/upx-3.91
d6133ca17edfc370015f37182f5a6531830cefc688c127dbe0d45a7212838f0f *amd64-linux.elf/upx-3.95 794e33f457d112b0380ccbcbfced16cf2569f15a36a974a4b009fa1ffb2e8949 *amd64-linux.elf/upx-3.95
027c3eb340c77f31bbc39bc05fb5ba56c2fc33529c445c288b6af26031172442 *amd64-win64.pe/upx-3.95.exe 9ae9462455f1f8b5eb3e8950f7626a984597bb025659314acce71534e35cee88 *amd64-win64.pe/upx-3.95.exe
7b9ef1fd569242b03ca8b4c6dabf880271cb3755cd00c08d15a77dc00bc05f83 *arm-linux.elf/upx-3.95 e62442fc7c0b9f4a6b54780d0cd279b59cf127b6c5f09b7d641cf07e1fd567c2 *arm-linux.elf/upx-3.95
bbeb21e516bf50e7d35cffb364337c6f157a31ddcacc3d43a2b2dfda8b8da3be *arm-wince.pe/upx-3.91.exe 19ed6d80777a365175602a24a5207c861f79e356fdacb17623522f8b427d4233 *arm-wince.pe/upx-3.91.exe
d8314cfd96fc2c9d83db69ea9746fdf5653fd3a6476f271d6c244976ab7ac9ff *arm64-linux.elf/upx-3.95 66f4e3b6e14d3a38ee603708cf60896e05203fbe22f5212ae388bd807471ceef *arm64-linux.elf/upx-3.95
40c5647b8dbbc287e5686d1dc81e5adf8c68d35438039edac1f201b7f939977c *armeb-linux.elf/upx-3.91 dc5e78ab3d0b501223e9bc43a941117c2aa5a95ebeb901cef895c40b6a61d589 *armeb-linux.elf/upx-3.91
047f325e6b0d3c1b0179b9574441957a64601ea67c55d53cf29dc830e34d7578 *armeb-linux.elf/upx-3.95 78b345cbd58873a179b300519b2207ed8b419fd8aa594196522dbe53a6ab46e9 *armeb-linux.elf/upx-3.95
a1b89d28adae9b26d34d701acac3a32106fce77a380322ee0cbe4a852d692ce6 *i386-dos32.djgpp2.coff/upx-3.91.exe 7e74eac05b02b3032ae86946a4cf9e6d3c0c9af65da38bc018fcff6cb028f952 *i386-dos32.djgpp2.coff/upx-3.91.exe
fd05d0899b87dd4019c10a01d04228aca83203b801c0f5ecd8c25c225a9ab9af *i386-dos32.djgpp2.coff/upx-3.95.exe 21136df18a98ffe3cd02cca2b28afe7680af22c36673b074d7428ae7cdb997de *i386-dos32.djgpp2.coff/upx-3.95.exe
58fa03662e605039f73ade85c00f8bc630623e6b10b304379b1c374f4a4330a1 *i386-linux.elf/upx-3.91 f49473440ae7ab009fabc7ef010d63abbcbffd997a9765eded2d7aee987410a6 *i386-linux.elf/upx-3.91
87d151c5e091586add28d63e08369692836db3cd1988edbf216a21370e01f0b5 *i386-linux.elf/upx-3.95 a900c4100b29ef2cbddaa3fafb8ad0c036a78643c673bc95f752c804132fac82 *i386-linux.elf/upx-3.95
4e8bf3046e35facf27e060277c7e577ea367d05f531ccee950c34c6e3a151d66 *i386-win32.pe/upx-3.91.exe f30af1a399ee567e48a6421bde100c185c2adc2c4f511082de3b5269560b27f3 *i386-win32.pe/upx-3.91.exe
8f1209d612991ac464f534206b6ce5999c6e689213fc468b289dd990309c312b *i386-win32.pe/upx-3.95.exe 675e2ee5c4bf3cb238df206342a89b66781b2805028d637a175b6f0c9f4f2334 *i386-win32.pe/upx-3.95.exe
6e7513be318b8e4ce2bb48a23bd47f0961ef745fd7f1e25d4439435334e62264 *m68k-atari.tos/upx-3.91.ttp cbd080edafac3eff5d1d2942a5b1084f088bf681ceaed099b40daec8c67a6a5c *m68k-atari.tos/upx-3.91.ttp
ea1abe9b33a31c5e27896eabf62a7a22640e91f03af336fc22a64366af196d8f *mips-linux.elf/upx-3.95 a4dbaf71ead4ca4f4ffaa0061ceb25f531f81532fb37845cffdd2fd9750e9d12 *mips-linux.elf/upx-3.95
f8ee354abac9eeb83c2d3a9101b35181bebbc2d9e9253960b7ccf96b6670d711 *mipsel-linux.elf/upx-3.91 2894ae7f01ed6bc44d1a1da580ba6b2a9c5a69fc18d8105f1d7afae5ef5e5769 *mipsel-linux.elf/upx-3.91
cfb11a2da4f598ad20f29a248ac8e28d45dea0a47984d47d075e24e63237ca07 *mipsel-linux.elf/upx-3.95 27447c78485ac0421138594bf3b80e7ea0745537437e8915ee665509e89a80fe *mipsel-linux.elf/upx-3.95
541188bdf23b4bf9513a6775ba186cf3d1cdf6a61a0c15177eb4111a51978397 *powerpc-linux.elf/upx-3.91 9cc94dc937a895d07cbaf50ef116a6b45e6127a10e23bc47e993d838bf1e398a *powerpc-linux.elf/upx-3.91
cc98a7992d9fee0af3a32c0408213198f8d2d407a44ae25d228057dfce0ef3dc *powerpc-linux.elf/upx-3.95 b2ad0b8dcfb788ba344b3700f31946c9b1d8b9fda6f29665b3c9f71f2dbcdf9b *powerpc-linux.elf/upx-3.95
20409135c1b03e9f2dcf50266db27a6b7a0259cc073d2bc47b4264c64342bf8c *powerpc64le-linux.elf/upx-3.95 10785a5ef331592f2135964f3e46b29f1591708bf3c09fef079ded145eb9e0e4 *powerpc64le-linux.elf/upx-3.95
" "
########## end .sha256sums.recreate ########## end .sha256sums.recreate
+2 -1
View File
@@ -93,9 +93,10 @@ endif
# automatically format some C++ source code files # automatically format some C++ source code files
ifeq ($(shell uname),Linux) ifeq ($(shell uname),Linux)
# Markus loves clang-format, but John hates it; find a compromise # Markus loves clang-format, but John hates it; find a compromise
CLANG_FORMAT_EXCLUDE_FILES += conf.h miniacc.h stub/%.h CLANG_FORMAT_EXCLUDE_FILES += miniacc.h stub/%.h
CLANG_FORMAT_EXCLUDE_FILES += p_elf.h p_elf_enum.h p_lx_% p_mach% p_unix% p_vmlin% CLANG_FORMAT_EXCLUDE_FILES += p_elf.h p_elf_enum.h p_lx_% p_mach% p_unix% p_vmlin%
CLANG_FORMAT_FILES := $(sort $(wildcard *.[ch]* ../maint/src/*.[ch]* */*.[ch]*)) CLANG_FORMAT_FILES := $(sort $(wildcard *.[ch]* ../maint/src/*.[ch]* */*.[ch]*))
CLANG_FORMAT_FILES += $(sort $(wildcard stub/tools/*/*.[ch]*))
CLANG_FORMAT_FILES := $(filter-out $(CLANG_FORMAT_EXCLUDE_FILES),$(CLANG_FORMAT_FILES)) CLANG_FORMAT_FILES := $(filter-out $(CLANG_FORMAT_EXCLUDE_FILES),$(CLANG_FORMAT_FILES))
clang-format: PHONY $(CLANG_FORMAT_FILES) clang-format: PHONY $(CLANG_FORMAT_FILES)
@echo "running upx-clang-format" @echo "running upx-clang-format"
+122 -46
View File
@@ -24,6 +24,9 @@
<markus@oberhumer.com> <markus@oberhumer.com>
*/ */
// lots of tests (and probably quite a number of redundant tests)
// modern compilers will optimize away much of this code
#include "../conf.h" #include "../conf.h"
/************************************************************************* /*************************************************************************
@@ -88,6 +91,46 @@ ACC_COMPILE_TIME_ASSERT_HEADER(compile_time::string_le("abc", "abz"))
// util // util
**************************************************************************/ **************************************************************************/
TEST_CASE("ptr_reinterpret_cast") {
// check that we don't trigger any -Wcast-align warnings
using upx::ptr_reinterpret_cast;
void *vp = nullptr;
byte *bp = nullptr;
int *ip = nullptr;
double *dp = nullptr;
assert((vp == ptr_reinterpret_cast<void *>(vp)));
assert((vp == ptr_reinterpret_cast<void *>(bp)));
assert((vp == ptr_reinterpret_cast<void *>(ip)));
assert((vp == ptr_reinterpret_cast<void *>(dp)));
assert((bp == ptr_reinterpret_cast<byte *>(vp)));
assert((bp == ptr_reinterpret_cast<byte *>(bp)));
assert((bp == ptr_reinterpret_cast<byte *>(ip)));
assert((bp == ptr_reinterpret_cast<byte *>(dp)));
assert((ip == ptr_reinterpret_cast<int *>(vp)));
assert((ip == ptr_reinterpret_cast<int *>(bp)));
assert((ip == ptr_reinterpret_cast<int *>(ip)));
assert((ip == ptr_reinterpret_cast<int *>(dp)));
assert((dp == ptr_reinterpret_cast<double *>(vp)));
assert((dp == ptr_reinterpret_cast<double *>(bp)));
assert((dp == ptr_reinterpret_cast<double *>(ip)));
assert((dp == ptr_reinterpret_cast<double *>(dp)));
const byte *bc = nullptr;
const int *ic = nullptr;
assert((bc == ptr_reinterpret_cast<byte *>(bp)));
assert((bc == ptr_reinterpret_cast<const byte *>(bc)));
assert((bc == ptr_reinterpret_cast<byte *>(ip)));
assert((bc == ptr_reinterpret_cast<const byte *>(ic)));
assert((ic == ptr_reinterpret_cast<int *>(bp)));
assert((ic == ptr_reinterpret_cast<const int *>(bc)));
assert((ic == ptr_reinterpret_cast<int *>(ip)));
assert((ic == ptr_reinterpret_cast<const int *>(ic)));
}
TEST_CASE("noncopyable") { TEST_CASE("noncopyable") {
struct Test : private upx::noncopyable { struct Test : private upx::noncopyable {
int v = 1; int v = 1;
@@ -106,13 +149,13 @@ TEST_CASE("noncopyable") {
} }
/************************************************************************* /*************************************************************************
// TriBool // TriBool checks
**************************************************************************/ **************************************************************************/
namespace { namespace {
template <class T> template <class T>
struct TestTriBool { struct TestTriBool {
static void test(bool expect_true, int x) noexcept { static void test(bool expect_true) {
static_assert(std::is_class<T>::value); static_assert(std::is_class<T>::value);
static_assert(std::is_nothrow_default_constructible<T>::value); static_assert(std::is_nothrow_default_constructible<T>::value);
static_assert(std::is_nothrow_destructible<T>::value); static_assert(std::is_nothrow_destructible<T>::value);
@@ -126,6 +169,9 @@ struct TestTriBool {
static_assert(sizeof(T) == sizeof(typename T::underlying_type)); static_assert(sizeof(T) == sizeof(typename T::underlying_type));
static_assert(alignof(T) == alignof(typename T::underlying_type)); static_assert(alignof(T) == alignof(typename T::underlying_type));
#endif #endif
static_assert(!bool(T(false)));
static_assert(bool(T(true)));
static_assert(bool(T(T::Third)) == T::is_third_true);
static_assert(T(false) == T::False); static_assert(T(false) == T::False);
static_assert(T(true) == T::True); static_assert(T(true) == T::True);
static_assert(T(T::False) == T::False); static_assert(T(T::False) == T::False);
@@ -145,63 +191,93 @@ struct TestTriBool {
static_assert(array[2].isThird()); static_assert(array[2].isThird());
static_assert(sizeof(array) == 3 * sizeof(T)); static_assert(sizeof(array) == 3 * sizeof(T));
T a; T a;
CHECK(!a); assert(a.getValue() == T::False);
CHECK(a.isStrictFalse()); assert(!a);
CHECK(!a.isStrictTrue()); assert(!bool(a));
CHECK(a.isStrictBool()); assert((!a ? true : false));
CHECK(!a.isThird()); assert(a.isStrictFalse());
assert(!a.isStrictTrue());
assert(a.isStrictBool());
assert(!a.isThird());
a = false; a = false;
CHECK(!a); assert(a.getValue() == T::False);
CHECK(a.isStrictFalse()); assert(!a);
CHECK(!a.isStrictTrue()); assert(!bool(a));
CHECK(a.isStrictBool()); assert((!a ? true : false));
CHECK(!a.isThird()); assert(a.isStrictFalse());
assert(!a.isStrictTrue());
assert(a.isStrictBool());
assert(!a.isThird());
a = true; a = true;
CHECK(a); assert(a.getValue() == T::True);
CHECK(!a.isStrictFalse()); assert(a);
CHECK(a.isStrictTrue()); assert(bool(a));
CHECK(a.isStrictBool()); assert((a ? true : false));
CHECK(!a.isThird()); assert(!a.isStrictFalse());
assert(a.isStrictTrue());
assert(a.isStrictBool());
assert(!a.isThird());
a = T::Third; a = T::Third;
if (expect_true) assert(a.getValue() == T::Third);
CHECK(a); assert(T::is_third_true == expect_true);
else if (expect_true) {
CHECK(!a); assert(a);
CHECK(!a.isStrictFalse()); assert(bool(a));
CHECK(!a.isStrictTrue()); assert((a ? true : false));
CHECK(!a.isStrictBool()); } else {
CHECK(a.isThird()); assert(!a);
a = x; assert(!bool(a));
if (expect_true) assert((!a ? true : false));
CHECK(a); }
else assert(!a.isStrictFalse());
CHECK(!a); assert(!a.isStrictTrue());
CHECK(!a.isStrictFalse()); assert(!a.isStrictBool());
CHECK(!a.isStrictTrue()); assert(a.isThird());
CHECK(!a.isStrictBool()); a = 99;
CHECK(a.isThird()); assert(a.getValue() == T::Third);
if (expect_true) {
assert(a);
assert(bool(a));
assert((a ? true : false));
} else {
assert(!a);
assert(!bool(a));
assert((!a ? true : false));
}
assert(!a.isStrictFalse());
assert(!a.isStrictTrue());
assert(!a.isStrictBool());
assert(a.isThird());
mem_clear(&a); mem_clear(&a);
CHECK(a.isStrictFalse()); assert(a.isStrictFalse());
} }
}; };
} // namespace } // namespace
TEST_CASE("TriBool") { TEST_CASE("TriBool") {
using upx::TriBool, upx::tribool; using upx::TriBool, upx::tribool;
//
static_assert(!tribool(false)); static_assert(!tribool(false));
static_assert(tribool(true)); static_assert(tribool(true));
static_assert(!tribool(tribool::Third)); static_assert(!tribool(tribool::Third));
TestTriBool<tribool>::test(false, -1); TestTriBool<tribool>::test(false);
// #if DEBUG || 1
TestTriBool<TriBool<upx_int8_t> >::test(false, -1); TestTriBool<TriBool<upx_int8_t> >::test(false);
TestTriBool<TriBool<upx_int64_t> >::test(false, -1); TestTriBool<TriBool<upx_uint8_t> >::test(false);
// TestTriBool<TriBool<upx_int16_t> >::test(false);
TestTriBool<TriBool<unsigned, 2> >::test(true, 2); TestTriBool<TriBool<upx_uint16_t> >::test(false);
TestTriBool<TriBool<upx_int8_t, 2> >::test(true, 2); TestTriBool<TriBool<upx_int32_t> >::test(false);
TestTriBool<TriBool<upx_uint8_t, 2> >::test(true, 2); TestTriBool<TriBool<upx_uint32_t> >::test(false);
TestTriBool<TriBool<upx_int64_t, 2> >::test(true, 2); TestTriBool<TriBool<upx_int64_t> >::test(false);
TestTriBool<TriBool<upx_uint64_t, 2> >::test(true, 2); TestTriBool<TriBool<upx_uint64_t> >::test(false);
TestTriBool<TriBool<upx_int8_t, true> >::test(true);
TestTriBool<TriBool<upx_uint8_t, true> >::test(true);
TestTriBool<TriBool<upx_int16_t, true> >::test(true);
TestTriBool<TriBool<upx_uint16_t, true> >::test(true);
TestTriBool<TriBool<upx_int32_t, true> >::test(true);
TestTriBool<TriBool<upx_uint32_t, true> >::test(true);
TestTriBool<TriBool<upx_int64_t, true> >::test(true);
TestTriBool<TriBool<upx_uint64_t, true> >::test(true);
#endif
} }
/* vim:set ts=4 sw=4 et: */ /* vim:set ts=4 sw=4 et: */
+324 -293
View File
@@ -52,49 +52,52 @@ ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(short) == 2)
ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(int) == 4) ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(int) == 4)
ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(long long) == 8) ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(long long) == 8)
// check sane compiler mandatory flags // check sane compiler mandatory flags
ACC_COMPILE_TIME_ASSERT_HEADER(-1 == ~0) // two's complement - see http://wg21.link/P0907R4 ACC_COMPILE_TIME_ASSERT_HEADER(-1 == ~0) // two's complement - see http://wg21.link/P0907R4
ACC_COMPILE_TIME_ASSERT_HEADER(0u-1 == ~0u) // two's complement - see http://wg21.link/P0907R4 ACC_COMPILE_TIME_ASSERT_HEADER(0u - 1 == ~0u) // two's complement - see http://wg21.link/P0907R4
ACC_COMPILE_TIME_ASSERT_HEADER((1u << 31) << 1 == 0) ACC_COMPILE_TIME_ASSERT_HEADER((1u << 31) << 1 == 0)
ACC_COMPILE_TIME_ASSERT_HEADER(((int)(1u << 31)) >> 31 == -1) // arithmetic right shift ACC_COMPILE_TIME_ASSERT_HEADER(((int) (1u << 31)) >> 31 == -1) // arithmetic right shift
ACC_COMPILE_TIME_ASSERT_HEADER((-1) >> 31 == -1) // arithmetic right shift ACC_COMPILE_TIME_ASSERT_HEADER((-1) >> 31 == -1) // arithmetic right shift
ACC_COMPILE_TIME_ASSERT_HEADER(CHAR_MAX == 255) // -funsigned-char ACC_COMPILE_TIME_ASSERT_HEADER(CHAR_MAX == 255) // -funsigned-char
ACC_COMPILE_TIME_ASSERT_HEADER((char)(-1) == 255) // -funsigned-char ACC_COMPILE_TIME_ASSERT_HEADER((char) (-1) == 255)
// enable some more strict warnings for Git developer builds // enable some more strict warnings for Git developer builds
#if defined(UPX_CONFIG_DISABLE_WSTRICT) && (UPX_CONFIG_DISABLE_WSTRICT + 0 == 0) #if defined(UPX_CONFIG_DISABLE_WSTRICT) && (UPX_CONFIG_DISABLE_WSTRICT + 0 == 0)
#if defined(UPX_CONFIG_DISABLE_WERROR) && (UPX_CONFIG_DISABLE_WERROR + 0 == 0) #if defined(UPX_CONFIG_DISABLE_WERROR) && (UPX_CONFIG_DISABLE_WERROR + 0 == 0)
#if (ACC_CC_CLANG >= 0x0b0000) #if (ACC_CC_CLANG >= 0x0b0000)
# pragma clang diagnostic error "-Wsuggest-override" #pragma clang diagnostic error "-Wsuggest-override"
#elif (ACC_CC_GNUC >= 0x0a0000) #elif (ACC_CC_GNUC >= 0x0a0000)
// don't enable before gcc-10 because of gcc bug #78010 // don't enable before gcc-10 because of gcc bug #78010
# pragma GCC diagnostic error "-Wsuggest-override" #pragma GCC diagnostic error "-Wsuggest-override"
#endif #endif
#if (ACC_CC_CLANG >= 0x080000) #if (ACC_CC_CLANG >= 0x080000)
// don't enable before clang-8 because of stddef.h issues // don't enable before clang-8 because of stddef.h issues
# pragma clang diagnostic error "-Wzero-as-null-pointer-constant" #pragma clang diagnostic error "-Wzero-as-null-pointer-constant"
#elif (ACC_CC_GNUC >= 0x040700) && defined(__GLIBC__) #elif (ACC_CC_GNUC >= 0x040700) && defined(__GLIBC__)
// Some non-GLIBC toolchains do not use 'nullptr' everywhere when C++: // Some non-GLIBC toolchains do not use 'nullptr' everywhere when C++:
// openwrt-sdk-x86-64_gcc-11.2.0_musl.Linux-x86_64/staging_dir/ // openwrt-sdk-x86-64_gcc-11.2.0_musl.Linux-x86_64/staging_dir/
// toolchain-x86_64_gcc-11.2.0_musl/include/fortify/stdlib.h: // toolchain-x86_64_gcc-11.2.0_musl/include/fortify/stdlib.h:
// 51:32: error: zero as null pointer constant // 51:32: error: zero as null pointer constant
# pragma GCC diagnostic error "-Wzero-as-null-pointer-constant" #pragma GCC diagnostic error "-Wzero-as-null-pointer-constant"
#endif #endif
#endif // UPX_CONFIG_DISABLE_WERROR #endif // UPX_CONFIG_DISABLE_WERROR
#endif // UPX_CONFIG_DISABLE_WSTRICT #endif // UPX_CONFIG_DISABLE_WSTRICT
// multithreading (UPX currently does not use multithreading) // multithreading (UPX currently does not use multithreading)
#if (WITH_THREADS) #if (WITH_THREADS)
#define upx_thread_local thread_local #define upx_thread_local thread_local
#define upx_std_atomic(Type) std::atomic<Type> #define upx_std_atomic(Type) std::atomic<Type>
#define upx_std_once_flag std::once_flag #define upx_std_once_flag std::once_flag
#define upx_std_call_once std::call_once #define upx_std_call_once std::call_once
#else #else
#define upx_thread_local /*empty*/ #define upx_thread_local /*empty*/
#define upx_std_atomic(Type) Type #define upx_std_atomic(Type) Type
#define upx_std_once_flag upx_std_atomic(size_t) #define upx_std_once_flag upx_std_atomic(size_t)
template <class NoexceptCallable> template <class NoexceptCallable>
inline void upx_std_call_once(upx_std_once_flag &flag, NoexceptCallable &&f) { inline void upx_std_call_once(upx_std_once_flag &flag, NoexceptCallable &&f) {
if (__acc_unlikely(!flag)) { flag = 1; f(); } if (__acc_unlikely(!flag)) {
flag = 1;
f();
}
} }
#endif // WITH_THREADS #endif // WITH_THREADS
@@ -106,19 +109,18 @@ inline constexpr bool upx_is_integral_v = upx_is_integral<T>::value;
#if (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC) && defined(__MINT__) #if (ACC_ARCH_M68K && ACC_OS_TOS && ACC_CC_GNUC) && defined(__MINT__)
// horrible hack for broken compiler / ABI // horrible hack for broken compiler / ABI
#define upx_fake_alignas_1 __attribute__((__aligned__(1),__packed__)) #define upx_fake_alignas_1 __attribute__((__aligned__(1), __packed__))
#define upx_fake_alignas_2 __attribute__((__aligned__(2))) #define upx_fake_alignas_2 __attribute__((__aligned__(2)))
#define upx_fake_alignas_4 __attribute__((__aligned__(2))) // object file maximum 2 ??? #define upx_fake_alignas_4 __attribute__((__aligned__(2))) // object file maximum 2 ???
#define upx_fake_alignas_16 __attribute__((__aligned__(2))) // object file maximum 2 ??? #define upx_fake_alignas_16 __attribute__((__aligned__(2))) // object file maximum 2 ???
#define upx_fake_alignas__(x) upx_fake_alignas_ ## x #define upx_fake_alignas__(x) upx_fake_alignas_##x
#define alignas(x) upx_fake_alignas__(x) #define alignas(x) upx_fake_alignas__(x)
#define upx_alignas_max upx_fake_alignas_4 #define upx_alignas_max upx_fake_alignas_4
#endif #endif
#ifndef upx_alignas_max #ifndef upx_alignas_max
#define upx_alignas_max alignas(std::max_align_t) #define upx_alignas_max alignas(std::max_align_t)
#endif #endif
/************************************************************************* /*************************************************************************
// core // core
**************************************************************************/ **************************************************************************/
@@ -128,29 +130,29 @@ inline constexpr bool upx_is_integral_v = upx_is_integral<T>::value;
// //
// this limits uncompressed_size to about 682 MiB (715_128_832 bytes) // this limits uncompressed_size to about 682 MiB (715_128_832 bytes)
typedef size_t upx_rsize_t; typedef size_t upx_rsize_t;
#define UPX_RSIZE_MAX UPX_RSIZE_MAX_MEM #define UPX_RSIZE_MAX UPX_RSIZE_MAX_MEM
#define UPX_RSIZE_MAX_MEM (768 * 1024 * 1024) // DO NOT CHANGE !!! #define UPX_RSIZE_MAX_MEM (768 * 1024 * 1024) // DO NOT CHANGE !!!
#define UPX_RSIZE_MAX_STR (256 * 1024) #define UPX_RSIZE_MAX_STR (256 * 1024)
// integral types // integral types
typedef acc_int8_t upx_int8_t; typedef acc_int8_t upx_int8_t;
typedef acc_uint8_t upx_uint8_t; typedef acc_uint8_t upx_uint8_t;
typedef acc_int16_t upx_int16_t; typedef acc_int16_t upx_int16_t;
typedef acc_uint16_t upx_uint16_t; typedef acc_uint16_t upx_uint16_t;
typedef acc_int32_t upx_int32_t; typedef acc_int32_t upx_int32_t;
typedef acc_uint32_t upx_uint32_t; typedef acc_uint32_t upx_uint32_t;
typedef acc_int64_t upx_int64_t; typedef acc_int64_t upx_int64_t;
typedef acc_uint64_t upx_uint64_t; typedef acc_uint64_t upx_uint64_t;
typedef acc_uintptr_t upx_uintptr_t; typedef acc_uintptr_t upx_uintptr_t;
// convention: use "byte" when dealing with data; use "char/uchar" when dealing // convention: use "byte" when dealing with data; use "char/uchar" when dealing
// with strings; use "upx_uint8_t" when dealing with small integers // with strings; use "upx_uint8_t" when dealing with small integers
typedef unsigned char byte; typedef unsigned char byte;
#define upx_byte byte #define upx_byte byte
#define upx_bytep byte * #define upx_bytep byte *
typedef unsigned char uchar; typedef unsigned char uchar;
// convention: use "charptr" when dealing with abstract pointer arithmetics // convention: use "charptr" when dealing with abstract pointer arithmetics
#define charptr upx_charptr_unit_type * #define charptr upx_charptr_unit_type *
// upx_charptr_unit_type is some opaque type with sizeof(type) == 1 // upx_charptr_unit_type is some opaque type with sizeof(type) == 1
struct alignas(1) upx_charptr_unit_type { char hidden__; }; struct alignas(1) upx_charptr_unit_type { char hidden__; };
ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(upx_charptr_unit_type) == 1) ACC_COMPILE_TIME_ASSERT_HEADER(sizeof(upx_charptr_unit_type) == 1)
@@ -166,109 +168,112 @@ typedef upx_int64_t upx_off_t;
#endif #endif
// shortcuts // shortcuts
#define forceinline __acc_forceinline #define forceinline __acc_forceinline
#if _MSC_VER #if _MSC_VER
#define noinline __declspec(noinline) #define noinline __declspec(noinline)
#undef __acc_noinline #undef __acc_noinline
#define __acc_noinline noinline #define __acc_noinline noinline
#else #else
#define noinline __acc_noinline #define noinline __acc_noinline
#endif #endif
#define forceinline_constexpr forceinline constexpr #define forceinline_constexpr forceinline constexpr
#define likely __acc_likely #define likely __acc_likely
#define unlikely __acc_unlikely #define unlikely __acc_unlikely
#define very_likely __acc_very_likely #define very_likely __acc_very_likely
#define very_unlikely __acc_very_unlikely #define very_unlikely __acc_very_unlikely
#define may_throw noexcept(false) #define may_throw noexcept(false)
#define COMPILE_TIME_ASSERT(e) ACC_COMPILE_TIME_ASSERT(e)
#define DELETED_FUNCTION = delete
#define UNUSED(var) ACC_UNUSED(var)
#define COMPILE_TIME_ASSERT(e) ACC_COMPILE_TIME_ASSERT(e)
#define DELETED_FUNCTION = delete
#define UNUSED(var) ACC_UNUSED(var)
/************************************************************************* /*************************************************************************
// portab // portab
**************************************************************************/ **************************************************************************/
// just in case // some system headers may define these, so undef just in case
#undef _ #undef _
#undef __ #undef __
#undef ___ #undef ___
#undef dos #undef dos
#undef large
#undef linux #undef linux
#undef small #undef small
#undef SP
#undef SS
#undef tos #undef tos
#undef unix #undef unix
#if (ACC_OS_POSIX) && !defined(__unix__) #if (ACC_OS_POSIX) && !defined(__unix__)
# define __unix__ 1 #define __unix__ 1
#endif #endif
#if (ACC_OS_CYGWIN || ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_EMX || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64) #if (ACC_OS_CYGWIN || ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_EMX || ACC_OS_OS2 || ACC_OS_OS216 || \
# undef __unix ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
# undef __unix__ #undef __unix
#undef __unix__
#endif #endif
#if (ACC_OS_DOS32) && defined(__DJGPP__) #if (ACC_OS_DOS32) && defined(__DJGPP__)
# undef sopen #undef sopen
#endif #endif
#if defined(HAVE_DUP) && (HAVE_DUP + 0 == 0) #if defined(HAVE_DUP) && (HAVE_DUP + 0 == 0)
# undef dup #undef dup
# define dup(x) (-1) #define dup(x) (-1)
#endif #endif
#ifndef STDIN_FILENO #ifndef STDIN_FILENO
# define STDIN_FILENO (fileno(stdin)) #define STDIN_FILENO (fileno(stdin))
#endif #endif
#ifndef STDOUT_FILENO #ifndef STDOUT_FILENO
# define STDOUT_FILENO (fileno(stdout)) #define STDOUT_FILENO (fileno(stdout))
#endif #endif
#ifndef STDERR_FILENO #ifndef STDERR_FILENO
# define STDERR_FILENO (fileno(stderr)) #define STDERR_FILENO (fileno(stderr))
#endif #endif
#if !(HAVE_STRCASECMP) && (HAVE_STRICMP) && !defined(strcasecmp) #if !(HAVE_STRCASECMP) && (HAVE_STRICMP) && !defined(strcasecmp)
# define strcasecmp stricmp #define strcasecmp stricmp
#endif #endif
#if !(HAVE_STRNCASECMP) && (HAVE_STRNICMP) && !defined(strncasecmp) #if !(HAVE_STRNCASECMP) && (HAVE_STRNICMP) && !defined(strncasecmp)
# define strncasecmp strnicmp #define strncasecmp strnicmp
#endif #endif
#if !defined(S_IWUSR) && defined(_S_IWUSR) #if !defined(S_IWUSR) && defined(_S_IWUSR)
# define S_IWUSR _S_IWUSR #define S_IWUSR _S_IWUSR
#elif !defined(S_IWUSR) && defined(_S_IWRITE) #elif !defined(S_IWUSR) && defined(_S_IWRITE)
# define S_IWUSR _S_IWRITE #define S_IWUSR _S_IWRITE
#endif #endif
#if !defined(S_IFMT) && defined(_S_IFMT) #if !defined(S_IFMT) && defined(_S_IFMT)
# define S_IFMT _S_IFMT #define S_IFMT _S_IFMT
#endif #endif
#if !defined(S_IFREG) && defined(_S_IFREG) #if !defined(S_IFREG) && defined(_S_IFREG)
# define S_IFREG _S_IFREG #define S_IFREG _S_IFREG
#endif #endif
#if !defined(S_IFDIR) && defined(_S_IFDIR) #if !defined(S_IFDIR) && defined(_S_IFDIR)
# define S_IFDIR _S_IFDIR #define S_IFDIR _S_IFDIR
#endif #endif
#if !defined(S_IFCHR) && defined(_S_IFCHR) #if !defined(S_IFCHR) && defined(_S_IFCHR)
# define S_IFCHR _S_IFCHR #define S_IFCHR _S_IFCHR
#endif #endif
#if !defined(S_ISREG) #if !defined(S_ISREG)
# if defined(S_IFMT) && defined(S_IFREG) #if defined(S_IFMT) && defined(S_IFREG)
# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) #define S_ISREG(m) (((m) &S_IFMT) == S_IFREG)
# else #else
# error "S_ISREG" #error "S_ISREG"
# endif #endif
#endif #endif
#if !defined(S_ISDIR) #if !defined(S_ISDIR)
# if defined(S_IFMT) && defined(S_IFDIR) #if defined(S_IFMT) && defined(S_IFDIR)
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) #define S_ISDIR(m) (((m) &S_IFMT) == S_IFDIR)
# else #else
# error "S_ISDIR" #error "S_ISDIR"
# endif #endif
#endif #endif
#if !defined(S_ISCHR) #if !defined(S_ISCHR)
# if defined(S_IFMT) && defined(S_IFCHR) #if defined(S_IFMT) && defined(S_IFCHR)
# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) #define S_ISCHR(m) (((m) &S_IFMT) == S_IFCHR)
# endif #endif
#endif #endif
// avoid warnings about shadowing global symbols // avoid warnings about shadowing global symbols
@@ -276,24 +281,24 @@ typedef upx_int64_t upx_off_t;
#undef basename #undef basename
#undef index #undef index
#undef outp #undef outp
#define _base upx_renamed__base #define _base upx_renamed__base
#define basename upx_renamed_basename #define basename upx_renamed_basename
#define index upx_renamed_index #define index upx_renamed_index
#define outp upx_renamed_outp #define outp upx_renamed_outp
#undef PAGE_MASK #undef PAGE_MASK
#undef PAGE_SIZE #undef PAGE_SIZE
#if !defined(O_BINARY) || (O_BINARY+0 == 0) #if !defined(O_BINARY) || (O_BINARY + 0 == 0)
# if (ACC_OS_CYGWIN || ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_EMX || ACC_OS_OS2 || ACC_OS_OS216 || ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64) #if (ACC_OS_CYGWIN || ACC_OS_DOS16 || ACC_OS_DOS32 || ACC_OS_EMX || ACC_OS_OS2 || ACC_OS_OS216 || \
# error "missing O_BINARY" ACC_OS_WIN16 || ACC_OS_WIN32 || ACC_OS_WIN64)
# endif #error "missing O_BINARY"
#endif
#endif #endif
#if !defined(O_BINARY) #if !defined(O_BINARY)
# define O_BINARY 0 #define O_BINARY 0
#endif #endif
/************************************************************************* /*************************************************************************
// util // util
**************************************************************************/ **************************************************************************/
@@ -302,27 +307,27 @@ typedef upx_int64_t upx_off_t;
// malloc debuggers // malloc debuggers
#if !defined(VALGRIND_CHECK_MEM_IS_ADDRESSABLE) #if !defined(VALGRIND_CHECK_MEM_IS_ADDRESSABLE)
# define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(addr,len) 0 #define VALGRIND_CHECK_MEM_IS_ADDRESSABLE(addr, len) 0
#endif #endif
#if !defined(VALGRIND_CHECK_MEM_IS_DEFINED) #if !defined(VALGRIND_CHECK_MEM_IS_DEFINED)
# define VALGRIND_CHECK_MEM_IS_DEFINED(addr,len) 0 #define VALGRIND_CHECK_MEM_IS_DEFINED(addr, len) 0
#endif #endif
#if !defined(VALGRIND_MAKE_MEM_DEFINED) #if !defined(VALGRIND_MAKE_MEM_DEFINED)
# define VALGRIND_MAKE_MEM_DEFINED(addr,len) 0 #define VALGRIND_MAKE_MEM_DEFINED(addr, len) 0
#endif #endif
#if !defined(VALGRIND_MAKE_MEM_NOACCESS) #if !defined(VALGRIND_MAKE_MEM_NOACCESS)
# define VALGRIND_MAKE_MEM_NOACCESS(addr,len) 0 #define VALGRIND_MAKE_MEM_NOACCESS(addr, len) 0
#endif #endif
#if !defined(VALGRIND_MAKE_MEM_UNDEFINED) #if !defined(VALGRIND_MAKE_MEM_UNDEFINED)
# define VALGRIND_MAKE_MEM_UNDEFINED(addr,len) 0 #define VALGRIND_MAKE_MEM_UNDEFINED(addr, len) 0
#endif #endif
#if defined(_WIN32) && defined(__MINGW32__) && defined(__GNUC__) && !defined(__clang__) #if defined(_WIN32) && defined(__MINGW32__) && defined(__GNUC__) && !defined(__clang__)
# define attribute_format(a,b) __attribute__((__format__(__gnu_printf__,a,b))) #define attribute_format(a, b) __attribute__((__format__(__gnu_printf__, a, b)))
#elif (ACC_CC_CLANG || ACC_CC_GNUC) #elif (ACC_CC_CLANG || ACC_CC_GNUC)
# define attribute_format(a,b) __attribute__((__format__(__printf__,a,b))) #define attribute_format(a, b) __attribute__((__format__(__printf__, a, b)))
#else #else
# define attribute_format(a,b) /*empty*/ #define attribute_format(a, b) /*empty*/
#endif #endif
// for no-op debug output // for no-op debug output
@@ -332,55 +337,82 @@ inline void NO_printf(const char *, ...) noexcept {}
inline void NO_fprintf(FILE *, const char *, ...) noexcept {} inline void NO_fprintf(FILE *, const char *, ...) noexcept {}
#if __has_builtin(__builtin_memcpy_inline) #if __has_builtin(__builtin_memcpy_inline)
# define upx_memcpy_inline __builtin_memcpy_inline #define upx_memcpy_inline __builtin_memcpy_inline
#elif __has_builtin(__builtin_memcpy) #elif __has_builtin(__builtin_memcpy)
# define upx_memcpy_inline __builtin_memcpy #define upx_memcpy_inline __builtin_memcpy
#elif defined(__GNUC__) #elif defined(__GNUC__)
# define upx_memcpy_inline __builtin_memcpy #define upx_memcpy_inline __builtin_memcpy
#else #else
# define upx_memcpy_inline memcpy #define upx_memcpy_inline memcpy
#endif #endif
#if __has_builtin(__builtin_return_address) #if __has_builtin(__builtin_return_address)
# define upx_return_address() __builtin_return_address(0) #define upx_return_address() __builtin_return_address(0)
#elif defined(__GNUC__) #elif defined(__GNUC__)
# define upx_return_address() __builtin_return_address(0) #define upx_return_address() __builtin_return_address(0)
#elif (ACC_CC_MSC) #elif (ACC_CC_MSC)
# define upx_return_address() _ReturnAddress() #define upx_return_address() _ReturnAddress()
#else #else
# define upx_return_address() nullptr #define upx_return_address() nullptr
#endif #endif
// TODO cleanup: we now require C++17, so remove all __packed_struct usage // TODO cleanup: we now require C++17, so remove all packed_struct usage
#define __packed_struct(s) struct alignas(1) s { #define packed_struct(s) struct alignas(1) s
#define __packed_struct_end() };
#define COMPILE_TIME_ASSERT_ALIGNOF_USING_SIZEOF__(a,b) { \ #define COMPILE_TIME_ASSERT_ALIGNOF_USING_SIZEOF__(a, b) \
typedef a acc_tmp_a_t; typedef b acc_tmp_b_t; \ { \
struct alignas(1) acc_tmp_t { acc_tmp_b_t x; acc_tmp_a_t y; acc_tmp_b_t z; }; \ typedef a acc_tmp_a_t; \
COMPILE_TIME_ASSERT(sizeof(struct acc_tmp_t) == 2*sizeof(b)+sizeof(a)) \ typedef b acc_tmp_b_t; \
COMPILE_TIME_ASSERT(sizeof(((acc_tmp_t*)nullptr)->x)+sizeof(((acc_tmp_t*)nullptr)->y)+sizeof(((acc_tmp_t*)nullptr)->z) == 2*sizeof(b)+sizeof(a)) \ struct alignas(1) acc_tmp_t { \
} acc_tmp_b_t x; \
#define COMPILE_TIME_ASSERT_ALIGNOF__(a,b) \ acc_tmp_a_t y; \
COMPILE_TIME_ASSERT_ALIGNOF_USING_SIZEOF__(a,b) \ acc_tmp_b_t z; \
COMPILE_TIME_ASSERT(__acc_alignof(a) == sizeof(b)) \ }; \
COMPILE_TIME_ASSERT(alignof(a) == sizeof(b)) COMPILE_TIME_ASSERT(sizeof(struct acc_tmp_t) == 2 * sizeof(b) + sizeof(a)) \
#define COMPILE_TIME_ASSERT_ALIGNED1(a) COMPILE_TIME_ASSERT_ALIGNOF__(a,char) COMPILE_TIME_ASSERT(sizeof(((acc_tmp_t *) nullptr)->x) + \
sizeof(((acc_tmp_t *) nullptr)->y) + \
#define TABLESIZE(table) ((sizeof(table)/sizeof((table)[0]))) sizeof(((acc_tmp_t *) nullptr)->z) == \
2 * sizeof(b) + sizeof(a)) \
}
#define COMPILE_TIME_ASSERT_ALIGNOF__(a, b) \
COMPILE_TIME_ASSERT_ALIGNOF_USING_SIZEOF__(a, b) \
COMPILE_TIME_ASSERT(__acc_alignof(a) == sizeof(b)) \
COMPILE_TIME_ASSERT(alignof(a) == sizeof(b))
#define COMPILE_TIME_ASSERT_ALIGNED1(a) COMPILE_TIME_ASSERT_ALIGNOF__(a, char)
#define TABLESIZE(table) ((sizeof(table) / sizeof((table)[0])))
template <class T> template <class T>
inline T ALIGN_DOWN(const T& a, const T& b) { T r; r = (a / b) * b; return r; } inline T ALIGN_DOWN(const T &a, const T &b) {
T r;
r = (a / b) * b;
return r;
}
template <class T> template <class T>
inline T ALIGN_UP (const T& a, const T& b) { T r; r = ((a + b - 1) / b) * b; return r; } inline T ALIGN_UP(const T &a, const T &b) {
T r;
r = ((a + b - 1) / b) * b;
return r;
}
template <class T> template <class T>
inline T ALIGN_GAP (const T& a, const T& b) { T r; r = ALIGN_UP(a, b) - a; return r; } inline T ALIGN_GAP(const T &a, const T &b) {
T r;
r = ALIGN_UP(a, b) - a;
return r;
}
template <class T> template <class T>
inline const T& UPX_MAX(const T& a, const T& b) { if (a < b) return b; return a; } inline const T &UPX_MAX(const T &a, const T &b) {
if (a < b)
return b;
return a;
}
template <class T> template <class T>
inline const T& UPX_MIN(const T& a, const T& b) { if (a < b) return a; return b; } inline const T &UPX_MIN(const T &a, const T &b) {
if (a < b)
return a;
return b;
}
template <class T> template <class T>
inline void mem_clear(T *object) noexcept { inline void mem_clear(T *object) noexcept {
@@ -400,11 +432,11 @@ inline void mem_clear(T (&array)[N]) noexcept DELETED_FUNCTION;
// An Array allocates memory on the heap, and automatically // An Array allocates memory on the heap, and automatically
// gets destructed when leaving scope or on exceptions. // gets destructed when leaving scope or on exceptions.
#define Array(type, var, n) \ #define Array(type, var, n) \
MemBuffer var ## _membuf(mem_size(sizeof(type), (n))); \ MemBuffer var##_membuf(mem_size(sizeof(type), (n))); \
type * const var = ACC_STATIC_CAST(type *, var ## _membuf.getVoidPtr()) type *const var = ACC_STATIC_CAST(type *, var##_membuf.getVoidPtr())
#define ByteArray(var, n) Array(byte, var, (n)) #define ByteArray(var, n) Array(byte, var, (n))
// assert_noexcept() // assert_noexcept()
noinline void assertFailed(const char *expr, const char *file, int line, const char *func) noexcept; noinline void assertFailed(const char *expr, const char *file, int line, const char *func) noexcept;
@@ -413,12 +445,15 @@ noinline void throwAssertFailed(const char *expr, const char *file, int line, co
#undef assert #undef assert
#if DEBUG || 0 #if DEBUG || 0
// generate a warning if assert() is used inside a "noexcept" context // generate 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))) #define assert(e) \
((void) (__acc_cte(e) || (assertFailed(#e, __FILE__, __LINE__, __func__), throw 1, 0)))
#else #else
// turn assertion failures into exceptions // turn assertion failures into exceptions
#define assert(e) ((void)(__acc_cte(e) || (throwAssertFailed(#e, __FILE__, __LINE__, __func__), throw 1, 0))) #define assert(e) \
((void) (__acc_cte(e) || (throwAssertFailed(#e, __FILE__, __LINE__, __func__), throw 1, 0)))
#endif #endif
#define assert_noexcept(e) ((void)(__acc_cte(e) || (assertFailed(#e, __FILE__, __LINE__, __func__), 0))) #define assert_noexcept(e) \
((void) (__acc_cte(e) || (assertFailed(#e, __FILE__, __LINE__, __func__), 0)))
#else #else
#define assert_noexcept assert #define assert_noexcept assert
#endif #endif
@@ -426,10 +461,9 @@ noinline void throwAssertFailed(const char *expr, const char *file, int line, co
#include "util/cxxlib.h" #include "util/cxxlib.h"
using upx::is_same_any_v; using upx::is_same_any_v;
using upx::noncopyable; using upx::noncopyable;
using upx::tribool;
using upx::OptVar; using upx::OptVar;
#define usizeof(expr) (upx::UnsignedSizeOf<sizeof(expr)>::value) using upx::tribool;
#define usizeof(expr) (upx::UnsignedSizeOf<sizeof(expr)>::value)
/************************************************************************* /*************************************************************************
// constants // constants
@@ -439,7 +473,7 @@ using upx::OptVar;
#define EXIT_OK 0 #define EXIT_OK 0
#define EXIT_ERROR 1 #define EXIT_ERROR 1
#define EXIT_WARN 2 #define EXIT_WARN 2
//
#define EXIT_USAGE 1 #define EXIT_USAGE 1
#define EXIT_FILE_READ 1 #define EXIT_FILE_READ 1
#define EXIT_FILE_WRITE 1 #define EXIT_FILE_WRITE 1
@@ -448,74 +482,71 @@ using upx::OptVar;
#define EXIT_INIT 1 #define EXIT_INIT 1
#define EXIT_INTERNAL 1 #define EXIT_INTERNAL 1
// magic constants for patching // magic constants for patching
#define UPX_MAGIC_LE32 0x21585055 /* "UPX!" */ #define UPX_MAGIC_LE32 0x21585055 /* "UPX!" */
#define UPX_MAGIC2_LE32 0xD5D0D8A1 #define UPX_MAGIC2_LE32 0xD5D0D8A1
// upx_compress() error codes // upx_compress() error codes
#define UPX_E_OK (0) #define UPX_E_OK (0)
#define UPX_E_ERROR (-1) #define UPX_E_ERROR (-1)
#define UPX_E_OUT_OF_MEMORY (-2) #define UPX_E_OUT_OF_MEMORY (-2)
#define UPX_E_NOT_COMPRESSIBLE (-3) #define UPX_E_NOT_COMPRESSIBLE (-3)
#define UPX_E_INPUT_OVERRUN (-4) #define UPX_E_INPUT_OVERRUN (-4)
#define UPX_E_OUTPUT_OVERRUN (-5) #define UPX_E_OUTPUT_OVERRUN (-5)
#define UPX_E_LOOKBEHIND_OVERRUN (-6) #define UPX_E_LOOKBEHIND_OVERRUN (-6)
#define UPX_E_EOF_NOT_FOUND (-7) #define UPX_E_EOF_NOT_FOUND (-7)
#define UPX_E_INPUT_NOT_CONSUMED (-8) #define UPX_E_INPUT_NOT_CONSUMED (-8)
#define UPX_E_NOT_YET_IMPLEMENTED (-9) #define UPX_E_NOT_YET_IMPLEMENTED (-9)
#define UPX_E_INVALID_ARGUMENT (-10) #define UPX_E_INVALID_ARGUMENT (-10)
// Executable formats (info: big endian types are >= 128); DO NOT CHANGE // Executable formats (info: big endian types are >= 128); DO NOT CHANGE
#define UPX_F_DOS_COM 1 #define UPX_F_DOS_COM 1
#define UPX_F_DOS_SYS 2 #define UPX_F_DOS_SYS 2
#define UPX_F_DOS_EXE 3 #define UPX_F_DOS_EXE 3
#define UPX_F_DJGPP2_COFF 4 #define UPX_F_DJGPP2_COFF 4
#define UPX_F_WATCOM_LE 5 #define UPX_F_WATCOM_LE 5
//#define UPX_F_VXD_LE 6 // NOT IMPLEMENTED // #define UPX_F_VXD_LE 6 // NOT IMPLEMENTED
#define UPX_F_DOS_EXEH 7 // OBSOLETE #define UPX_F_DOS_EXEH 7 // OBSOLETE
#define UPX_F_TMT_ADAM 8 #define UPX_F_TMT_ADAM 8
#define UPX_F_W32PE_I386 9 #define UPX_F_W32PE_I386 9
#define UPX_F_LINUX_i386 10 #define UPX_F_LINUX_i386 10
//#define UPX_F_WIN16_NE 11 // NOT IMPLEMENTED // #define UPX_F_WIN16_NE 11 // NOT IMPLEMENTED
#define UPX_F_LINUX_ELF_i386 12 #define UPX_F_LINUX_ELF_i386 12
//#define UPX_F_LINUX_SEP_i386 13 // NOT IMPLEMENTED // #define UPX_F_LINUX_SEP_i386 13 // NOT IMPLEMENTED
#define UPX_F_LINUX_SH_i386 14 #define UPX_F_LINUX_SH_i386 14
#define UPX_F_VMLINUZ_i386 15 #define UPX_F_VMLINUZ_i386 15
#define UPX_F_BVMLINUZ_i386 16 #define UPX_F_BVMLINUZ_i386 16
#define UPX_F_ELKS_8086 17 // NOT IMPLEMENTED #define UPX_F_ELKS_8086 17 // NOT IMPLEMENTED
#define UPX_F_PS1_EXE 18 #define UPX_F_PS1_EXE 18
#define UPX_F_VMLINUX_i386 19 #define UPX_F_VMLINUX_i386 19
#define UPX_F_LINUX_ELFI_i386 20 #define UPX_F_LINUX_ELFI_i386 20
#define UPX_F_WINCE_ARM 21 // Windows CE #define UPX_F_WINCE_ARM 21 // Windows CE
#define UPX_F_LINUX_ELF64_AMD64 22 #define UPX_F_LINUX_ELF64_AMD64 22
#define UPX_F_LINUX_ELF32_ARM 23 #define UPX_F_LINUX_ELF32_ARM 23
#define UPX_F_BSD_i386 24 #define UPX_F_BSD_i386 24
#define UPX_F_BSD_ELF_i386 25 #define UPX_F_BSD_ELF_i386 25
#define UPX_F_BSD_SH_i386 26 #define UPX_F_BSD_SH_i386 26
#define UPX_F_VMLINUX_AMD64 27 #define UPX_F_VMLINUX_AMD64 27
#define UPX_F_VMLINUX_ARM 28 #define UPX_F_VMLINUX_ARM 28
#define UPX_F_MACH_i386 29 #define UPX_F_MACH_i386 29
#define UPX_F_LINUX_ELF32_MIPSEL 30 #define UPX_F_LINUX_ELF32_MIPSEL 30
#define UPX_F_VMLINUZ_ARM 31 #define UPX_F_VMLINUZ_ARM 31
#define UPX_F_MACH_ARM 32 #define UPX_F_MACH_ARM 32
#define UPX_F_DYLIB_i386 33 #define UPX_F_DYLIB_i386 33
#define UPX_F_MACH_AMD64 34 #define UPX_F_MACH_AMD64 34
#define UPX_F_DYLIB_AMD64 35 #define UPX_F_DYLIB_AMD64 35
#define UPX_F_W64PE_AMD64 36 #define UPX_F_W64PE_AMD64 36
#define UPX_F_MACH_ARM64 37 #define UPX_F_MACH_ARM64 37
//#define UPX_F_MACH_PPC64LE 38 // DOES NOT EXIST // #define UPX_F_MACH_PPC64LE 38 // DOES NOT EXIST
#define UPX_F_LINUX_ELF64_PPC64LE 39 #define UPX_F_LINUX_ELF64_PPC64LE 39
#define UPX_F_VMLINUX_PPC64LE 40 #define UPX_F_VMLINUX_PPC64LE 40
//#define UPX_F_DYLIB_PPC64LE 41 // DOES NOT EXIST // #define UPX_F_DYLIB_PPC64LE 41 // DOES NOT EXIST
#define UPX_F_LINUX_ELF64_ARM64 42 #define UPX_F_LINUX_ELF64_ARM64 42
#define UPX_F_W64PE_ARM64 43 // NOT YET IMPLEMENTED #define UPX_F_W64PE_ARM64 43 // NOT YET IMPLEMENTED
#define UPX_F_W64PE_ARM64EC 44 // NOT YET IMPLEMENTED #define UPX_F_W64PE_ARM64EC 44 // NOT YET IMPLEMENTED
#define UPX_F_ATARI_TOS 129 #define UPX_F_ATARI_TOS 129
//#define UPX_F_SOLARIS_SPARC 130 // NOT IMPLEMENTED // #define UPX_F_SOLARIS_SPARC 130 // NOT IMPLEMENTED
#define UPX_F_MACH_PPC32 131 #define UPX_F_MACH_PPC32 131
#define UPX_F_LINUX_ELF32_PPC32 132 #define UPX_F_LINUX_ELF32_PPC32 132
#define UPX_F_LINUX_ELF32_ARMEB 133 #define UPX_F_LINUX_ELF32_ARMEB 133
@@ -530,63 +561,60 @@ using upx::OptVar;
#define UPX_F_DYLIB_PPC64 142 #define UPX_F_DYLIB_PPC64 142
// compression methods; DO NOT CHANGE // compression methods; DO NOT CHANGE
#define M_NRV2B_LE32 2 #define M_NRV2B_LE32 2
#define M_NRV2B_8 3 #define M_NRV2B_8 3
#define M_NRV2B_LE16 4 #define M_NRV2B_LE16 4
#define M_NRV2D_LE32 5 #define M_NRV2D_LE32 5
#define M_NRV2D_8 6 #define M_NRV2D_8 6
#define M_NRV2D_LE16 7 #define M_NRV2D_LE16 7
#define M_NRV2E_LE32 8 #define M_NRV2E_LE32 8
#define M_NRV2E_8 9 #define M_NRV2E_8 9
#define M_NRV2E_LE16 10 #define M_NRV2E_LE16 10
//#define M_CL1B_LE32 11 // #define M_CL1B_LE32 11
//#define M_CL1B_8 12 // #define M_CL1B_8 12
//#define M_CL1B_LE16 13 // #define M_CL1B_LE16 13
#define M_LZMA 14 #define M_LZMA 14
#define M_DEFLATE 15 // zlib #define M_DEFLATE 15 // zlib
#define M_ZSTD 16 #define M_ZSTD 16
// compression methods internal usage // compression methods internal usage
#define M_ALL (-1) #define M_ALL (-1)
#define M_END (-2) #define M_END (-2)
#define M_NONE (-3) #define M_NONE (-3)
#define M_SKIP (-4) #define M_SKIP (-4)
#define M_ULTRA_BRUTE (-5) #define M_ULTRA_BRUTE (-5)
#define M_IS_NRV2B(x) ((x) >= M_NRV2B_LE32 && (x) <= M_NRV2B_LE16) #define M_IS_NRV2B(x) ((x) >= M_NRV2B_LE32 && (x) <= M_NRV2B_LE16)
#define M_IS_NRV2D(x) ((x) >= M_NRV2D_LE32 && (x) <= M_NRV2D_LE16) #define M_IS_NRV2D(x) ((x) >= M_NRV2D_LE32 && (x) <= M_NRV2D_LE16)
#define M_IS_NRV2E(x) ((x) >= M_NRV2E_LE32 && (x) <= M_NRV2E_LE16) #define M_IS_NRV2E(x) ((x) >= M_NRV2E_LE32 && (x) <= M_NRV2E_LE16)
//#define M_IS_CL1B(x) ((x) >= M_CL1B_LE32 && (x) <= M_CL1B_LE16) // #define M_IS_CL1B(x) ((x) >= M_CL1B_LE32 && (x) <= M_CL1B_LE16)
#define M_IS_LZMA(x) (((x) & 255) == M_LZMA) #define M_IS_LZMA(x) (((x) &255) == M_LZMA)
#define M_IS_DEFLATE(x) ((x) == M_DEFLATE) #define M_IS_DEFLATE(x) ((x) == M_DEFLATE)
#define M_IS_ZSTD(x) ((x) == M_ZSTD) #define M_IS_ZSTD(x) ((x) == M_ZSTD)
// filters internal usage // filters internal usage
#define FT_END (-1) #define FT_END (-1)
#define FT_NONE (-2) #define FT_NONE (-2)
#define FT_SKIP (-3) #define FT_SKIP (-3)
#define FT_ULTRA_BRUTE (-4) #define FT_ULTRA_BRUTE (-4)
/************************************************************************* /*************************************************************************
// compression - setup and callback_t // compression - setup and callback_t
**************************************************************************/ **************************************************************************/
#define WITH_LZMA 1 #define WITH_LZMA 1
#define WITH_UCL 1 #define WITH_UCL 1
#define WITH_ZLIB 1 #define WITH_ZLIB 1
#if (WITH_UCL) #if (WITH_UCL)
# define ucl_compress_config_t REAL_ucl_compress_config_t #define ucl_compress_config_t REAL_ucl_compress_config_t
# include <ucl/include/ucl/uclconf.h> #include <ucl/include/ucl/uclconf.h>
# include <ucl/include/ucl/ucl.h> #include <ucl/include/ucl/ucl.h>
# undef ucl_compress_config_t #undef ucl_compress_config_t
# undef ucl_compress_config_p #undef ucl_compress_config_p
#endif #endif
struct upx_callback_t; struct upx_callback_t;
typedef upx_callback_t *upx_callback_p; typedef upx_callback_t *upx_callback_p;
typedef void (__acc_cdecl *upx_progress_func_t) typedef void(__acc_cdecl *upx_progress_func_t)(upx_callback_p, unsigned, unsigned);
(upx_callback_p, unsigned, unsigned);
struct upx_callback_t { struct upx_callback_t {
upx_progress_func_t nprogress; upx_progress_func_t nprogress;
@@ -595,27 +623,26 @@ struct upx_callback_t {
void reset() noexcept { mem_clear(this); } void reset() noexcept { mem_clear(this); }
}; };
/************************************************************************* /*************************************************************************
// compression - config_t // compression - config_t
**************************************************************************/ **************************************************************************/
struct lzma_compress_config_t { struct lzma_compress_config_t {
typedef OptVar<unsigned, 2u, 0u, 4u> pos_bits_t; // pb typedef OptVar<unsigned, 2u, 0u, 4u> pos_bits_t; // pb
typedef OptVar<unsigned, 0u, 0u, 4u> lit_pos_bits_t; // lp typedef OptVar<unsigned, 0u, 0u, 4u> lit_pos_bits_t; // lp
typedef OptVar<unsigned, 3u, 0u, 8u> lit_context_bits_t; // lc typedef OptVar<unsigned, 3u, 0u, 8u> lit_context_bits_t; // lc
typedef OptVar<unsigned, (1u<<22), 1u, (1u<<30) > dict_size_t; typedef OptVar<unsigned, (1u << 22), 1u, (1u << 30)> dict_size_t;
typedef OptVar<unsigned, 64u, 5u, 273u> num_fast_bytes_t; typedef OptVar<unsigned, 64u, 5u, 273u> num_fast_bytes_t;
pos_bits_t pos_bits; // pb pos_bits_t pos_bits; // pb
lit_pos_bits_t lit_pos_bits; // lp lit_pos_bits_t lit_pos_bits; // lp
lit_context_bits_t lit_context_bits; // lc lit_context_bits_t lit_context_bits; // lc
dict_size_t dict_size; dict_size_t dict_size;
unsigned fast_mode; unsigned fast_mode;
num_fast_bytes_t num_fast_bytes; num_fast_bytes_t num_fast_bytes;
unsigned match_finder_cycles; unsigned match_finder_cycles;
unsigned max_num_probs; unsigned max_num_probs;
void reset() noexcept; void reset() noexcept;
}; };
@@ -625,13 +652,13 @@ struct ucl_compress_config_t : public REAL_ucl_compress_config_t {
}; };
struct zlib_compress_config_t { struct zlib_compress_config_t {
typedef OptVar<unsigned, 8u, 1u, 9u> mem_level_t; // ml typedef OptVar<unsigned, 8u, 1u, 9u> mem_level_t; // ml
typedef OptVar<unsigned, 15u, 9u, 15u> window_bits_t; // wb typedef OptVar<unsigned, 15u, 9u, 15u> window_bits_t; // wb
typedef OptVar<unsigned, 0u, 0u, 4u> strategy_t; // st typedef OptVar<unsigned, 0u, 0u, 4u> strategy_t; // st
mem_level_t mem_level; // ml mem_level_t mem_level; // ml
window_bits_t window_bits; // wb window_bits_t window_bits; // wb
strategy_t strategy; // st strategy_t strategy; // st
void reset() noexcept; void reset() noexcept;
}; };
@@ -643,30 +670,34 @@ struct zstd_compress_config_t {
}; };
struct upx_compress_config_t { struct upx_compress_config_t {
lzma_compress_config_t conf_lzma; lzma_compress_config_t conf_lzma;
ucl_compress_config_t conf_ucl; ucl_compress_config_t conf_ucl;
zlib_compress_config_t conf_zlib; zlib_compress_config_t conf_zlib;
zstd_compress_config_t conf_zstd; zstd_compress_config_t conf_zstd;
void reset() noexcept { conf_lzma.reset(); conf_ucl.reset(); conf_zlib.reset(); conf_zstd.reset(); } void reset() noexcept {
conf_lzma.reset();
conf_ucl.reset();
conf_zlib.reset();
conf_zstd.reset();
}
}; };
#define NULL_cconf ((upx_compress_config_t *) nullptr) #define NULL_cconf ((upx_compress_config_t *) nullptr)
/************************************************************************* /*************************************************************************
// compression - result_t // compression - result_t
**************************************************************************/ **************************************************************************/
struct lzma_compress_result_t { struct lzma_compress_result_t {
unsigned pos_bits; // pb unsigned pos_bits; // pb
unsigned lit_pos_bits; // lp unsigned lit_pos_bits; // lp
unsigned lit_context_bits; // lc unsigned lit_context_bits; // lc
unsigned dict_size; unsigned dict_size;
unsigned fast_mode; unsigned fast_mode;
unsigned num_fast_bytes; unsigned num_fast_bytes;
unsigned match_finder_cycles; unsigned match_finder_cycles;
unsigned num_probs; // (computed result) unsigned num_probs; // (computed result)
void reset() noexcept { mem_clear(this); } void reset() noexcept { mem_clear(this); }
}; };
@@ -698,18 +729,20 @@ struct upx_compress_result_t {
}; };
Debug debug; Debug debug;
lzma_compress_result_t result_lzma; lzma_compress_result_t result_lzma;
ucl_compress_result_t result_ucl; ucl_compress_result_t result_ucl;
zlib_compress_result_t result_zlib; zlib_compress_result_t result_zlib;
zstd_compress_result_t result_zstd; zstd_compress_result_t result_zstd;
void reset() noexcept { void reset() noexcept {
debug.reset(); debug.reset();
result_lzma.reset(); result_ucl.reset(); result_zlib.reset(); result_zstd.reset(); result_lzma.reset();
result_ucl.reset();
result_zlib.reset();
result_zstd.reset();
} }
}; };
/************************************************************************* /*************************************************************************
// globals // globals
**************************************************************************/ **************************************************************************/
@@ -757,17 +790,17 @@ int do_files(int i, int argc, char *argv[]) may_throw;
// help.cpp // help.cpp
extern const char gitrev[]; extern const char gitrev[];
void show_header(); void show_header();
void show_help(int verbose=0); void show_help(int verbose = 0);
void show_license(); void show_license();
void show_sysinfo(const char *options_var); void show_sysinfo(const char *options_var);
void show_usage(); void show_usage();
void show_version(bool one_line=false); void show_version(bool one_line = false);
// compress/compress.cpp // compress/compress.cpp
unsigned upx_adler32(const void *buf, unsigned len, unsigned adler=1);
unsigned upx_crc32 (const void *buf, unsigned len, unsigned crc=0);
// clang-format off // clang-format off
unsigned upx_adler32(const void *buf, unsigned len, unsigned adler = 1);
unsigned upx_crc32 (const void *buf, unsigned len, unsigned crc = 0);
int upx_compress ( const upx_bytep src, unsigned src_len, int upx_compress ( const upx_bytep src, unsigned src_len,
upx_bytep dst, unsigned* dst_len, upx_bytep dst, unsigned* dst_len,
upx_callback_p cb, upx_callback_p cb,
@@ -786,8 +819,7 @@ int upx_test_overlap ( const upx_bytep buf,
const upx_compress_result_t *cresult ); const upx_compress_result_t *cresult );
// clang-format on // clang-format on
#include "util/snprintf.h" // must get included first!
#include "util/snprintf.h" // must get included first!
#include "util/util.h" #include "util/util.h"
#include "options.h" #include "options.h"
#include "except.h" #include "except.h"
@@ -797,5 +829,4 @@ int upx_test_overlap ( const upx_bytep buf,
#include "util/raw_bytes.h" #include "util/raw_bytes.h"
#include "util/xspan.h" #include "util/xspan.h"
/* vim:set ts=4 sw=4 et: */ /* vim:set ts=4 sw=4 et: */
+2 -2
View File
@@ -855,8 +855,8 @@ int main_get_options(int argc, char **argv) {
{"fake-stub-version", 0x31, N, 542}, // for internal debugging {"fake-stub-version", 0x31, N, 542}, // for internal debugging
{"fake-stub-year", 0x31, N, 543}, // for internal debugging {"fake-stub-year", 0x31, N, 543}, // for internal debugging
{"disable-random-id", 0x90, N, 545}, // for internal debugging {"disable-random-id", 0x90, N, 545}, // for internal debugging
{"debug-use-random-method", 0x90, N, 546}, // for internal debugging {"debug-use-random-method", 0x90, N, 546}, // for internal debugging / fuzz testing
{"debug-use-random-filter", 0x90, N, 547}, // for internal debugging {"debug-use-random-filter", 0x90, N, 547}, // for internal debugging / fuzz testing
// backup options // backup options
{"backup", 0x10, N, 'k'}, {"backup", 0x10, N, 'k'},
+2
View File
@@ -25,6 +25,8 @@
http://www.oberhumer.com/ http://www.oberhumer.com/
*/ */
/* clang-format off */
#ifndef __ACC_H_INCLUDED #ifndef __ACC_H_INCLUDED
#define __ACC_H_INCLUDED 1 #define __ACC_H_INCLUDED 1
#define ACC_VERSION 20230625L #define ACC_VERSION 20230625L
+13 -1
View File
@@ -88,14 +88,26 @@ void Options::reset() noexcept {
**************************************************************************/ **************************************************************************/
TEST_CASE("Options::reset") { TEST_CASE("Options::reset") {
#define opt DO_NOT_USE_opt
COMPILE_TIME_ASSERT(std::is_standard_layout<Options>::value) COMPILE_TIME_ASSERT(std::is_standard_layout<Options>::value)
COMPILE_TIME_ASSERT(std::is_nothrow_default_constructible<Options>::value) COMPILE_TIME_ASSERT(std::is_nothrow_default_constructible<Options>::value)
COMPILE_TIME_ASSERT(std::is_trivially_copyable<Options>::value) COMPILE_TIME_ASSERT(std::is_trivially_copyable<Options>::value)
Options local_options; Options local_options;
Options *o = &local_options; Options *const o = &local_options;
o->reset(); o->reset();
CHECK(o->o_unix.osabi0 == 3); CHECK(o->o_unix.osabi0 == 3);
//
static_assert(TABLESIZE(o->win32_pe.compress_rt) == 25); // 25 == RT_LAST
CHECK(o->win32_pe.compress_exports);
CHECK(o->win32_pe.compress_icons);
CHECK(o->win32_pe.strip_relocs);
// issue 728
CHECK(o->win32_pe.compress_resources);
for (size_t i = 0; i < 24; i++)
CHECK(o->win32_pe.compress_rt[i]);
CHECK(!o->win32_pe.compress_rt[24]); // 24 == RT_MANIFEST
#undef opt
} }
template <size_t N> template <size_t N>
+22 -22
View File
@@ -54,10 +54,12 @@ enum {
}; };
struct Options final { struct Options final {
int cmd; void reset() noexcept;
int cmd; // CMD_xxx
// compression options // compression options
int method; int method; // M_xxx
bool method_lzma_seen; bool method_lzma_seen;
bool method_nrv2b_seen; bool method_nrv2b_seen;
bool method_nrv2d_seen; bool method_nrv2d_seen;
@@ -90,6 +92,20 @@ struct Options final {
int verbose; int verbose;
bool to_stdout; bool to_stdout;
// overlay handling
enum { SKIP_OVERLAY = 0, COPY_OVERLAY = 1, STRIP_OVERLAY = 2 };
int overlay;
// CPU options for i086/i386
enum {
CPU_DEFAULT = 0,
CPU_8086 = 1,
CPU_286 = 2,
CPU_386 = 3,
CPU_486 = 4,
};
int cpu_x86;
// debug options // debug options
struct { struct {
int debug_level; int debug_level;
@@ -98,14 +114,10 @@ struct Options final {
char fake_stub_version[4 + 1]; // for internal debugging char fake_stub_version[4 + 1]; // for internal debugging
char fake_stub_year[4 + 1]; // for internal debugging char fake_stub_year[4 + 1]; // for internal debugging
bool getopt_throw_instead_of_exit; // for internal doctest checks bool getopt_throw_instead_of_exit; // for internal doctest checks
bool use_random_method; // for internal debugging bool use_random_method; // for internal debugging / fuzz testing
bool use_random_filter; // for internal debugging bool use_random_filter; // for internal debugging / fuzz testing
} debug; } debug;
// overlay handling
enum { SKIP_OVERLAY = 0, COPY_OVERLAY = 1, STRIP_OVERLAY = 2 };
int overlay;
// CRP - Compression Runtime Parameters (undocumented and subject to change) // CRP - Compression Runtime Parameters (undocumented and subject to change)
struct { struct {
lzma_compress_config_t crp_lzma; lzma_compress_config_t crp_lzma;
@@ -120,16 +132,6 @@ struct Options final {
} }
} crp; } crp;
// CPU options for i086/i386
enum {
CPU_DEFAULT = 0,
CPU_8086 = 1,
CPU_286 = 2,
CPU_386 = 3,
CPU_486 = 4,
};
int cpu_x86;
// options for various executable formats // options for various executable formats
struct { struct {
bool split_segments; bool split_segments;
@@ -168,13 +170,11 @@ struct Options final {
struct { struct {
int compress_exports; int compress_exports;
int compress_icons; int compress_icons;
upx::TriBool<upx_int8_t> compress_resources; upx::TriBool<upx_int8_t, true> compress_resources;
upx::TriBool<upx_int8_t> compress_rt[25]; // 25 == RT_LAST upx::TriBool<upx_int8_t, true> compress_rt[25]; // 25 == RT_LAST
int strip_relocs; int strip_relocs;
const char *keep_resource; const char *keep_resource;
} win32_pe; } win32_pe;
void reset() noexcept;
}; };
/* vim:set ts=4 sw=4 et: */ /* vim:set ts=4 sw=4 et: */
+22 -22
View File
@@ -49,7 +49,7 @@ struct ElfITypes
// The ELF file header. This appears at the start of every ELF file. // The ELF file header. This appears at the start of every ELF file.
template <class TElfITypes> template <class TElfITypes>
__packed_struct(Ehdr) packed_struct(Ehdr) {
typedef typename TElfITypes::Half Half; typedef typename TElfITypes::Half Half;
typedef typename TElfITypes::Word Word; typedef typename TElfITypes::Word Word;
typedef typename TElfITypes::Addr Addr; typedef typename TElfITypes::Addr Addr;
@@ -72,11 +72,11 @@ __packed_struct(Ehdr)
# define WANT_EHDR_ENUM 1 # define WANT_EHDR_ENUM 1
# include "p_elf_enum.h" # include "p_elf_enum.h"
__packed_struct_end() };
template <class TElfITypes> template <class TElfITypes>
__packed_struct(Dyn) packed_struct(Dyn) {
typedef typename TElfITypes::Xword Xword; typedef typename TElfITypes::Xword Xword;
typedef typename TElfITypes::Addr Addr; typedef typename TElfITypes::Addr Addr;
@@ -85,32 +85,32 @@ __packed_struct(Dyn)
# define WANT_DYN_ENUM 1 # define WANT_DYN_ENUM 1
# include "p_elf_enum.h" # include "p_elf_enum.h"
__packed_struct_end() };
template <class TElfITypes> template <class TElfITypes>
__packed_struct(Rel) packed_struct(Rel) {
typedef typename TElfITypes::Xword Xword; typedef typename TElfITypes::Xword Xword;
typedef typename TElfITypes::Addr Addr; typedef typename TElfITypes::Addr Addr;
Addr r_offset; Addr r_offset;
Xword r_info; Xword r_info;
__packed_struct_end() };
template <class TElfITypes> template <class TElfITypes>
__packed_struct(Rela) packed_struct(Rela) {
typedef typename TElfITypes::Xword Xword; typedef typename TElfITypes::Xword Xword;
typedef typename TElfITypes::Addr Addr; typedef typename TElfITypes::Addr Addr;
Addr r_offset; Addr r_offset;
Xword r_info; Xword r_info;
Xword r_addend; Xword r_addend;
__packed_struct_end() };
template <class TElfITypes> template <class TElfITypes>
__packed_struct(External_Note) packed_struct(External_Note) {
typedef typename TElfITypes::Word Word; typedef typename TElfITypes::Word Word;
Word xn_namesz; // includes terminating '\0' Word xn_namesz; // includes terminating '\0'
@@ -118,7 +118,7 @@ __packed_struct(External_Note)
Word xn_type; Word xn_type;
//char xn_name[N]; // terminate with '\0' //char xn_name[N]; // terminate with '\0'
//char xn_data[M]; // aligned to 0 mod 4 //char xn_data[M]; // aligned to 0 mod 4
__packed_struct_end() };
} // namespace N_Elf } // namespace N_Elf
@@ -131,7 +131,7 @@ __packed_struct_end()
namespace N_Elf32 { namespace N_Elf32 {
template <class TElfITypes> template <class TElfITypes>
__packed_struct(Phdr) packed_struct(Phdr) {
typedef typename TElfITypes::Word Word; typedef typename TElfITypes::Word Word;
typedef typename TElfITypes::Addr Addr; typedef typename TElfITypes::Addr Addr;
typedef typename TElfITypes::Off Off; typedef typename TElfITypes::Off Off;
@@ -147,11 +147,11 @@ __packed_struct(Phdr)
# define WANT_PHDR_ENUM 1 # define WANT_PHDR_ENUM 1
# include "p_elf_enum.h" # include "p_elf_enum.h"
__packed_struct_end() };
template <class TElfITypes> template <class TElfITypes>
__packed_struct(Shdr) packed_struct(Shdr) {
typedef typename TElfITypes::Word Word; typedef typename TElfITypes::Word Word;
typedef typename TElfITypes::Addr Addr; typedef typename TElfITypes::Addr Addr;
typedef typename TElfITypes::Off Off; typedef typename TElfITypes::Off Off;
@@ -169,11 +169,11 @@ __packed_struct(Shdr)
# define WANT_SHDR_ENUM 1 # define WANT_SHDR_ENUM 1
# include "p_elf_enum.h" # include "p_elf_enum.h"
__packed_struct_end() };
template <class TElfITypes> template <class TElfITypes>
__packed_struct(Sym) packed_struct(Sym) {
typedef typename TElfITypes::Word Word; typedef typename TElfITypes::Word Word;
typedef typename TElfITypes::Addr Addr; typedef typename TElfITypes::Addr Addr;
typedef typename TElfITypes::Section Section; typedef typename TElfITypes::Section Section;
@@ -192,7 +192,7 @@ __packed_struct(Sym)
static unsigned int get_st_type(unsigned x) { return 0xf & x ; } static unsigned int get_st_type(unsigned x) { return 0xf & x ; }
static unsigned char make_st_info(unsigned bind, unsigned type) static unsigned char make_st_info(unsigned bind, unsigned type)
{ return (unsigned char) (((bind<<4) + (0xf & type)) & 0xff); } { return (unsigned char) (((bind<<4) + (0xf & type)) & 0xff); }
__packed_struct_end() };
} // namespace N_Elf32 } // namespace N_Elf32
@@ -205,7 +205,7 @@ __packed_struct_end()
namespace N_Elf64 { namespace N_Elf64 {
template <class TElfITypes> template <class TElfITypes>
__packed_struct(Phdr) packed_struct(Phdr) {
typedef typename TElfITypes::Word Word; typedef typename TElfITypes::Word Word;
typedef typename TElfITypes::Xword Xword; typedef typename TElfITypes::Xword Xword;
typedef typename TElfITypes::Addr Addr; typedef typename TElfITypes::Addr Addr;
@@ -222,11 +222,11 @@ __packed_struct(Phdr)
# define WANT_PHDR_ENUM 1 # define WANT_PHDR_ENUM 1
# include "p_elf_enum.h" # include "p_elf_enum.h"
__packed_struct_end() };
template <class TElfITypes> template <class TElfITypes>
__packed_struct(Shdr) packed_struct(Shdr) {
typedef typename TElfITypes::Word Word; typedef typename TElfITypes::Word Word;
typedef typename TElfITypes::Xword Xword; typedef typename TElfITypes::Xword Xword;
typedef typename TElfITypes::Addr Addr; typedef typename TElfITypes::Addr Addr;
@@ -245,11 +245,11 @@ __packed_struct(Shdr)
# define WANT_SHDR_ENUM 1 # define WANT_SHDR_ENUM 1
# include "p_elf_enum.h" # include "p_elf_enum.h"
__packed_struct_end() };
template <class TElfITypes> template <class TElfITypes>
__packed_struct(Sym) packed_struct(Sym) {
typedef typename TElfITypes::Word Word; typedef typename TElfITypes::Word Word;
typedef typename TElfITypes::Xword Xword; typedef typename TElfITypes::Xword Xword;
typedef typename TElfITypes::Addr Addr; typedef typename TElfITypes::Addr Addr;
@@ -269,7 +269,7 @@ __packed_struct(Sym)
static unsigned int get_st_type(unsigned x) { return 0xf & x ; } static unsigned int get_st_type(unsigned x) { return 0xf & x ; }
static unsigned char make_st_info(unsigned bind, unsigned type) static unsigned char make_st_info(unsigned bind, unsigned type)
{ return (unsigned char) (((bind<<4) + (0xf & type)) & 0xff); } { return (unsigned char) (((bind<<4) + (0xf & type)) & 0xff); }
__packed_struct_end() };
} // namespace N_Elf64 } // namespace N_Elf64
+1 -2
View File
@@ -2974,8 +2974,7 @@ tribool PackLinuxElf64::canUnpack() // bool, except -1: format known, but not pa
return false; return false;
} }
tribool tribool PackLinuxElf64::canPack()
PackLinuxElf64::canPack()
{ {
union { union {
unsigned char buf[MAX_ELF_HDR_64]; unsigned char buf[MAX_ELF_HDR_64];
+22 -22
View File
@@ -242,41 +242,41 @@ protected:
Elf32_Shdr const *sec_dynstr; Elf32_Shdr const *sec_dynstr;
Elf32_Shdr *sec_arm_attr; // SHT_ARM_ATTRIBUTES; Elf32_Shdr *sec_arm_attr; // SHT_ARM_ATTRIBUTES;
__packed_struct(cprElfHdr1) packed_struct(cprElfHdr1) {
Elf32_Ehdr ehdr; Elf32_Ehdr ehdr;
Elf32_Phdr phdr[1]; Elf32_Phdr phdr[1];
l_info linfo; l_info linfo;
__packed_struct_end() };
__packed_struct(cprElfHdr2) packed_struct(cprElfHdr2) {
Elf32_Ehdr ehdr; Elf32_Ehdr ehdr;
Elf32_Phdr phdr[2]; Elf32_Phdr phdr[2];
l_info linfo; l_info linfo;
__packed_struct_end() };
__packed_struct(cprElfHdr3) packed_struct(cprElfHdr3) {
Elf32_Ehdr ehdr; Elf32_Ehdr ehdr;
Elf32_Phdr phdr[3]; Elf32_Phdr phdr[3];
l_info linfo; l_info linfo;
__packed_struct_end() };
__packed_struct(cprElfHdr4) packed_struct(cprElfHdr4) {
Elf32_Ehdr ehdr; Elf32_Ehdr ehdr;
Elf32_Phdr phdr[4]; Elf32_Phdr phdr[4];
l_info linfo; l_info linfo;
__packed_struct_end() };
__packed_struct(cprElfHdrNetBSD) packed_struct(cprElfHdrNetBSD) {
Elf32_Ehdr ehdr; Elf32_Ehdr ehdr;
Elf32_Phdr phdr[4]; Elf32_Phdr phdr[4];
unsigned char notes[512]; unsigned char notes[512];
__packed_struct_end() };
cprElfHdrNetBSD elfout; cprElfHdrNetBSD elfout;
__packed_struct(cprElfShdr3) packed_struct(cprElfShdr3) {
Elf32_Shdr shdr[3]; Elf32_Shdr shdr[3];
__packed_struct_end() };
cprElfShdr3 shdrout; cprElfShdr3 shdrout;
@@ -402,35 +402,35 @@ protected:
Elf64_Shdr const *sec_dynstr; Elf64_Shdr const *sec_dynstr;
Elf64_Shdr *sec_arm_attr; // SHT_ARM_ATTRIBUTES; Elf64_Shdr *sec_arm_attr; // SHT_ARM_ATTRIBUTES;
__packed_struct(cprElfHdr1) packed_struct(cprElfHdr1) {
Elf64_Ehdr ehdr; Elf64_Ehdr ehdr;
Elf64_Phdr phdr[1]; Elf64_Phdr phdr[1];
l_info linfo; l_info linfo;
__packed_struct_end() };
__packed_struct(cprElfHdr2) packed_struct(cprElfHdr2) {
Elf64_Ehdr ehdr; Elf64_Ehdr ehdr;
Elf64_Phdr phdr[2]; Elf64_Phdr phdr[2];
l_info linfo; l_info linfo;
__packed_struct_end() };
__packed_struct(cprElfHdr3) packed_struct(cprElfHdr3) {
Elf64_Ehdr ehdr; Elf64_Ehdr ehdr;
Elf64_Phdr phdr[3]; Elf64_Phdr phdr[3];
l_info linfo; l_info linfo;
__packed_struct_end() };
__packed_struct(cprElfHdr4) packed_struct(cprElfHdr4) {
Elf64_Ehdr ehdr; Elf64_Ehdr ehdr;
Elf64_Phdr phdr[4]; Elf64_Phdr phdr[4];
l_info linfo; l_info linfo;
__packed_struct_end() };
cprElfHdr4 elfout; cprElfHdr4 elfout;
__packed_struct(cprElfShdr3) packed_struct(cprElfShdr3) {
Elf64_Shdr shdr[3]; Elf64_Shdr shdr[3];
__packed_struct_end() };
cprElfShdr3 shdrout; cprElfShdr3 shdrout;
+6 -6
View File
@@ -88,23 +88,23 @@ protected:
unsigned n_mru; unsigned n_mru;
__packed_struct(cprElfHdr1) packed_struct(cprElfHdr1) {
Elf_LE32_Ehdr ehdr; Elf_LE32_Ehdr ehdr;
Elf_LE32_Phdr phdr[1]; Elf_LE32_Phdr phdr[1];
l_info linfo; l_info linfo;
__packed_struct_end() };
__packed_struct(cprElfHdr2) packed_struct(cprElfHdr2) {
Elf_LE32_Ehdr ehdr; Elf_LE32_Ehdr ehdr;
Elf_LE32_Phdr phdr[2]; Elf_LE32_Phdr phdr[2];
l_info linfo; l_info linfo;
__packed_struct_end() };
__packed_struct(cprElfHdr3) packed_struct(cprElfHdr3) {
Elf_LE32_Ehdr ehdr; Elf_LE32_Ehdr ehdr;
Elf_LE32_Phdr phdr[3]; Elf_LE32_Phdr phdr[3];
l_info linfo; l_info linfo;
__packed_struct_end() };
cprElfHdr3 elfout; cprElfHdr3 elfout;
+81 -80
View File
@@ -32,22 +32,22 @@
#include "conf.h" #include "conf.h"
__packed_struct(Mach_fat_header) packed_struct(Mach_fat_header) {
BE32 magic; BE32 magic;
enum : unsigned { // note conflict with java bytecode PackLinuxI386 enum : unsigned { // note conflict with java bytecode PackLinuxI386
FAT_MAGIC = 0xcafebabe, FAT_MAGIC = 0xcafebabe,
FAT_MAGIC_SWAB = 0xbebafeca, FAT_MAGIC_SWAB = 0xbebafeca,
}; };
BE32 nfat_arch; // Number of Mach_fat_arch which follow. BE32 nfat_arch; // Number of Mach_fat_arch which follow.
__packed_struct_end() };
__packed_struct(Mach_fat_arch) packed_struct(Mach_fat_arch) {
BE32 cputype; BE32 cputype;
BE32 cpusubtype; BE32 cpusubtype;
BE32 offset; BE32 offset;
BE32 size; BE32 size;
BE32 align; /* shift count; log base 2 */ BE32 align; /* shift count; log base 2 */
__packed_struct_end() };
/************************************************************************* /*************************************************************************
// Mach Mach Object executable; all structures are target-endian // Mach Mach Object executable; all structures are target-endian
@@ -67,7 +67,7 @@ struct MachITypes
}; };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_header) packed_struct(Mach_header) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word magic; Word magic;
@@ -79,10 +79,10 @@ __packed_struct(Mach_header)
Word flags; Word flags;
#define WANT_MACH_HEADER_ENUM 1 #define WANT_MACH_HEADER_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_header64) packed_struct(Mach_header64) {
// only difference is padding to 0 mod 8 // only difference is padding to 0 mod 8
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
@@ -96,10 +96,10 @@ __packed_struct(Mach_header64)
Word reserved; // pad to 0 mod 8 Word reserved; // pad to 0 mod 8
#define WANT_MACH_HEADER_ENUM 1 #define WANT_MACH_HEADER_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_command) // generic prefix packed_struct(Mach_command) { // generic prefix
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word cmd; Word cmd;
@@ -107,10 +107,10 @@ __packed_struct(Mach_command) // generic prefix
Word data[2]; // because cmdsize >= 16 Word data[2]; // because cmdsize >= 16
#define WANT_MACH_SEGMENT_ENUM 1 #define WANT_MACH_SEGMENT_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_segment_command) packed_struct(Mach_segment_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Addr Addr; typedef typename TMachITypes::Addr Addr;
typedef typename TMachITypes::Off Off; typedef typename TMachITypes::Off Off;
@@ -128,10 +128,10 @@ __packed_struct(Mach_segment_command)
Word flags; Word flags;
#define WANT_MACH_SEGMENT_ENUM 1 #define WANT_MACH_SEGMENT_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_section_command) packed_struct(Mach_section_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Addr Addr; typedef typename TMachITypes::Addr Addr;
typedef typename TMachITypes::Off Off; typedef typename TMachITypes::Off Off;
@@ -149,10 +149,10 @@ __packed_struct(Mach_section_command)
Word reserved2; /* for count or sizeof */ Word reserved2; /* for count or sizeof */
#define WANT_MACH_SECTION_ENUM 1 #define WANT_MACH_SECTION_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_section_command_64) packed_struct(Mach_section_command_64) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Addr Addr; typedef typename TMachITypes::Addr Addr;
typedef typename TMachITypes::Off Off; typedef typename TMachITypes::Off Off;
@@ -173,10 +173,10 @@ __packed_struct(Mach_section_command_64)
Word reserved3; /* NOT IN 32-bit VERSION!! */ Word reserved3; /* NOT IN 32-bit VERSION!! */
#define WANT_MACH_SECTION_ENUM 1 #define WANT_MACH_SECTION_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_symtab_command) packed_struct(Mach_symtab_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Off Off; typedef typename TMachITypes::Off Off;
typedef typename TMachITypes::Word Off32; typedef typename TMachITypes::Word Off32;
@@ -187,10 +187,10 @@ __packed_struct(Mach_symtab_command)
Word nsyms; /* number of symbol table entries */ Word nsyms; /* number of symbol table entries */
Off32 stroff; /* string table offset */ Off32 stroff; /* string table offset */
Word strsize; /* string table size in bytes */ Word strsize; /* string table size in bytes */
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_dysymtab_command) packed_struct(Mach_dysymtab_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Off Off; typedef typename TMachITypes::Off Off;
typedef typename TMachITypes::Word Off32; typedef typename TMachITypes::Word Off32;
@@ -215,10 +215,10 @@ __packed_struct(Mach_dysymtab_command)
Word nextrel; /* number of external relocation entries */ Word nextrel; /* number of external relocation entries */
Off32 locreloff; /* offset to local relocation entries */ Off32 locreloff; /* offset to local relocation entries */
Word nlocrel; /* number of local relocation entries */ Word nlocrel; /* number of local relocation entries */
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_segsplit_info_command) packed_struct(Mach_segsplit_info_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Off Off; typedef typename TMachITypes::Off Off;
@@ -226,10 +226,10 @@ __packed_struct(Mach_segsplit_info_command)
Word cmdsize; /* sizeof(struct Mach_segsplit_info_command) */ Word cmdsize; /* sizeof(struct Mach_segsplit_info_command) */
Off dataoff; Off dataoff;
Word datasize; Word datasize;
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_routines_command) packed_struct(Mach_routines_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Addr Addr; typedef typename TMachITypes::Addr Addr;
@@ -245,10 +245,10 @@ __packed_struct(Mach_routines_command)
Word reserved6; Word reserved6;
#define WANT_MACH_SEGMENT_ENUM 1 #define WANT_MACH_SEGMENT_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_routines_command_64) packed_struct(Mach_routines_command_64) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Addr Addr; typedef typename TMachITypes::Addr Addr;
typedef typename TMachITypes::Xword Xword; typedef typename TMachITypes::Xword Xword;
@@ -265,10 +265,10 @@ __packed_struct(Mach_routines_command_64)
Xword reserved6; Xword reserved6;
#define WANT_MACH_SEGMENT_ENUM 1 #define WANT_MACH_SEGMENT_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_twolevel_hints_command) packed_struct(Mach_twolevel_hints_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Off Off; typedef typename TMachITypes::Off Off;
@@ -278,10 +278,10 @@ __packed_struct(Mach_twolevel_hints_command)
Word nhints; /* number of hints */ Word nhints; /* number of hints */
#define WANT_MACH_SEGMENT_ENUM 1 #define WANT_MACH_SEGMENT_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_linkedit_data_command) packed_struct(Mach_linkedit_data_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word cmd; // LC_CODE_SIGNATURE, LC_SEGMENT_SPLIT_INFO, Word cmd; // LC_CODE_SIGNATURE, LC_SEGMENT_SPLIT_INFO,
@@ -290,19 +290,19 @@ __packed_struct(Mach_linkedit_data_command)
Word cmdsize; Word cmdsize;
Word dataoff; // file offset of data in __LINKEDIT segment Word dataoff; // file offset of data in __LINKEDIT segment
Word datasize; // file size of data in __LINKEDIT segment Word datasize; // file size of data in __LINKEDIT segment
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_uuid_command) packed_struct(Mach_uuid_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word cmd; // LC_UUID Word cmd; // LC_UUID
Word cmdsize; // 24 Word cmdsize; // 24
unsigned char uuid[16]; unsigned char uuid[16];
__packed_struct_end() };
template <class TMachITypes, class TMachThreadState> template <class TMachITypes, class TMachThreadState>
__packed_struct(Mach_thread_command) packed_struct(Mach_thread_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word cmd; /* LC_THREAD or LC_UNIXTHREAD */ Word cmd; /* LC_THREAD or LC_UNIXTHREAD */
@@ -312,10 +312,10 @@ __packed_struct(Mach_thread_command)
TMachThreadState state; TMachThreadState state;
#define WANT_MACH_THREAD_ENUM 1 #define WANT_MACH_THREAD_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_main_command) packed_struct(Mach_main_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Xword Xword; typedef typename TMachITypes::Xword Xword;
@@ -323,30 +323,30 @@ __packed_struct(Mach_main_command)
Word cmdsize; // 24 Word cmdsize; // 24
Xword entryoff; // file offset of main() [expected in __TEXT] Xword entryoff; // file offset of main() [expected in __TEXT]
Xword stacksize; // non-default initial stack size Xword stacksize; // non-default initial stack size
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_source_version_command) packed_struct(Mach_source_version_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word cmd; // LC_SOURCE_VERSION Word cmd; // LC_SOURCE_VERSION
Word cmdsize; // 16 Word cmdsize; // 16
Word version; Word version;
Word __pad; // to 0 mod 8 Word __pad; // to 0 mod 8
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_version_min_command) packed_struct(Mach_version_min_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word cmd; // LC_VERSION_MIN_MACOSX Word cmd; // LC_VERSION_MIN_MACOSX
Word cmdsize; // 16 Word cmdsize; // 16
Word version; // X.Y.Z ==> xxxx.yy.zz Word version; // X.Y.Z ==> xxxx.yy.zz
Word sdk; // X.Y.Z ==> xxxx.yy.zz Word sdk; // X.Y.Z ==> xxxx.yy.zz
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_dyld_info_only_command) packed_struct(Mach_dyld_info_only_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word cmd; // LC_DYLD_INFO_ONLY Word cmd; // LC_DYLD_INFO_ONLY
@@ -361,42 +361,42 @@ __packed_struct(Mach_dyld_info_only_command)
Word lazy_bind_size; Word lazy_bind_size;
Word export_off; Word export_off;
Word export_size; Word export_size;
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_load_dylinker_command) packed_struct(Mach_load_dylinker_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word cmd; Word cmd;
Word cmdsize; Word cmdsize;
Word name; Word name;
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_dylib) packed_struct(Mach_dylib) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word name; /* library's path name */ Word name; /* library's path name */
Word timestamp; /* library's build time stamp */ Word timestamp; /* library's build time stamp */
Word current_version; /* library's current version number */ Word current_version; /* library's current version number */
Word compatibility_version; /* library's compatibility vers number*/ Word compatibility_version; /* library's compatibility vers number*/
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_load_dylib_command) packed_struct(Mach_load_dylib_command) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word cmd; Word cmd;
Word cmdsize; Word cmdsize;
Mach_dylib<TMachITypes> dylib; Mach_dylib<TMachITypes> dylib;
__packed_struct_end() };
} // namespace N_Mach } // namespace N_Mach
namespace N_Mach32 { namespace N_Mach32 {
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_ppc_thread_state) packed_struct(Mach_ppc_thread_state) {
typedef typename TMachITypes::Addr Addr; typedef typename TMachITypes::Addr Addr;
Addr srr0; /* Instruction address register (PC; entry addr) */ Addr srr0; /* Instruction address register (PC; entry addr) */
@@ -413,10 +413,10 @@ __packed_struct(Mach_ppc_thread_state)
Addr mq; /* MQ register (601 only) */ Addr mq; /* MQ register (601 only) */
Addr vrsave; /* Vector Save Register */ Addr vrsave; /* Vector Save Register */
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_i386_thread_state) packed_struct(Mach_i386_thread_state) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word eax, ebx, ecx, edx; Word eax, ebx, ecx, edx;
@@ -425,10 +425,10 @@ __packed_struct(Mach_i386_thread_state)
Word eflags; Word eflags;
Word eip, cs; Word eip, cs;
Word ds, es, fs, gs; Word ds, es, fs, gs;
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_ARM_thread_state) packed_struct(Mach_ARM_thread_state) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
Word r[13]; // r0-r12 Word r[13]; // r0-r12
@@ -436,14 +436,14 @@ __packed_struct(Mach_ARM_thread_state)
Word lr; // r14 Word lr; // r14
Word pc; // r15 Word pc; // r15
Word cpsr; Word cpsr;
__packed_struct_end() };
} // namespace N_Mach32 } // namespace N_Mach32
namespace N_Mach64 { namespace N_Mach64 {
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_AMD64_thread_state) packed_struct(Mach_AMD64_thread_state) {
typedef typename TMachITypes::Xword Xword; typedef typename TMachITypes::Xword Xword;
Xword rax, rbx, rcx, rdx; Xword rax, rbx, rcx, rdx;
@@ -452,10 +452,10 @@ __packed_struct(Mach_AMD64_thread_state)
Xword r12, r13, r14, r15; Xword r12, r13, r14, r15;
Xword rip, rflags; Xword rip, rflags;
Xword cs, fs, gs; Xword cs, fs, gs;
__packed_struct_end() };
template <class TMachITypes> template <class TMachITypes>
__packed_struct(Mach_ppc_thread_state64) packed_struct(Mach_ppc_thread_state64) {
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Xword Xword; typedef typename TMachITypes::Xword Xword;
@@ -472,9 +472,10 @@ __packed_struct(Mach_ppc_thread_state64)
Xword ctr; /* Count register */ Xword ctr; /* Count register */
Word vrsave; /* Vector Save Register */ Word vrsave; /* Vector Save Register */
__packed_struct_end() };
template <class TMachITypes> __packed_struct(Mach_ARM64_thread_state) template <class TMachITypes>
packed_struct(Mach_ARM64_thread_state) {
typedef typename TMachITypes::Xword Xword; typedef typename TMachITypes::Xword Xword;
typedef typename TMachITypes::Word Word; typedef typename TMachITypes::Word Word;
@@ -489,7 +490,7 @@ template <class TMachITypes> __packed_struct(Mach_ARM64_thread_state)
Xword pc; Xword pc;
Word cpsr; Word cpsr;
Word pad; // to (0 mod 8) Word pad; // to (0 mod 8)
__packed_struct_end() };
} // namespace N_Mach64 } // namespace N_Mach64
@@ -823,28 +824,28 @@ protected:
Mach_source_version_command cmdSRCVER; // copied from input Mach_source_version_command cmdSRCVER; // copied from input
Mach_version_min_command cmdVERMIN; // copied from input Mach_version_min_command cmdVERMIN; // copied from input
__packed_struct(b_info) // 12-byte header before each compressed block packed_struct(b_info) { // 12-byte header before each compressed block
TE32 sz_unc; // uncompressed_size TE32 sz_unc; // uncompressed_size
TE32 sz_cpr; // compressed_size TE32 sz_cpr; // compressed_size
unsigned char b_method; // compression algorithm unsigned char b_method; // compression algorithm
unsigned char b_ftid; // filter id unsigned char b_ftid; // filter id
unsigned char b_cto8; // filter parameter unsigned char b_cto8; // filter parameter
unsigned char b_segseq; // LC_SEGMENT ordinal unsigned char b_segseq; // LC_SEGMENT ordinal
__packed_struct_end() };
__packed_struct(l_info) // 12-byte trailer in header for loader packed_struct(l_info) { // 12-byte trailer in header for loader
TE32 l_checksum; TE32 l_checksum;
LE32 l_magic; LE32 l_magic;
TE16 l_lsize; TE16 l_lsize;
unsigned char l_version; unsigned char l_version;
unsigned char l_format; unsigned char l_format;
__packed_struct_end() };
__packed_struct(p_info) // 12-byte packed program header packed_struct(p_info) { // 12-byte packed program header
TE32 p_progid; TE32 p_progid;
TE32 p_filesize; TE32 p_filesize;
TE32 p_blocksize; TE32 p_blocksize;
__packed_struct_end() };
struct l_info linfo; struct l_info linfo;
@@ -878,7 +879,7 @@ protected:
virtual Linker* newLinker() const override; virtual Linker* newLinker() const override;
virtual void addStubEntrySections(Filter const *) override; virtual void addStubEntrySections(Filter const *) override;
__packed_struct(Mach_thread_command) packed_struct(Mach_thread_command) {
TE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */ TE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */
TE32 cmdsize; /* total size of this command */ TE32 cmdsize; /* total size of this command */
TE32 flavor; TE32 flavor;
@@ -886,7 +887,7 @@ protected:
Mach_ppc_thread_state state; Mach_ppc_thread_state state;
#define WANT_MACH_THREAD_ENUM 1 #define WANT_MACH_THREAD_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
Mach_thread_command threado; Mach_thread_command threado;
int threado_size() const override { return sizeof(threado); } int threado_size() const override { return sizeof(threado); }
@@ -930,7 +931,7 @@ protected:
virtual void pack1_setup_threado(OutputFile *const fo) override; virtual void pack1_setup_threado(OutputFile *const fo) override;
virtual Linker* newLinker() const override; virtual Linker* newLinker() const override;
__packed_struct(Mach_thread_command) packed_struct(Mach_thread_command) {
BE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */ BE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */
BE32 cmdsize; /* total size of this command */ BE32 cmdsize; /* total size of this command */
BE32 flavor; BE32 flavor;
@@ -938,7 +939,7 @@ protected:
Mach_ppc_thread_state64 state64; Mach_ppc_thread_state64 state64;
#define WANT_MACH_THREAD_ENUM 1 #define WANT_MACH_THREAD_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
Mach_thread_command threado; Mach_thread_command threado;
int threado_size() const override { return sizeof(threado); } int threado_size() const override { return sizeof(threado); }
@@ -1012,7 +1013,7 @@ protected:
virtual Linker* newLinker() const override; virtual Linker* newLinker() const override;
virtual void addStubEntrySections(Filter const *) override; virtual void addStubEntrySections(Filter const *) override;
__packed_struct(Mach_thread_command) packed_struct(Mach_thread_command) {
LE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */ LE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */
LE32 cmdsize; /* total size of this command */ LE32 cmdsize; /* total size of this command */
LE32 flavor; LE32 flavor;
@@ -1020,7 +1021,7 @@ protected:
Mach_i386_thread_state state; Mach_i386_thread_state state;
#define WANT_MACH_THREAD_ENUM 1 #define WANT_MACH_THREAD_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
Mach_thread_command threado; Mach_thread_command threado;
int threado_size() const override { return sizeof(threado); } int threado_size() const override { return sizeof(threado); }
@@ -1079,7 +1080,7 @@ protected:
virtual Linker* newLinker() const override; virtual Linker* newLinker() const override;
virtual void addStubEntrySections(Filter const *) override; virtual void addStubEntrySections(Filter const *) override;
__packed_struct(Mach_thread_command) packed_struct(Mach_thread_command) {
typedef MachITypes::Word Word; typedef MachITypes::Word Word;
Word cmd; /* LC_THREAD or LC_UNIXTHREAD */ Word cmd; /* LC_THREAD or LC_UNIXTHREAD */
Word cmdsize; /* total size of this command */ Word cmdsize; /* total size of this command */
@@ -1088,7 +1089,7 @@ protected:
Mach_AMD64_thread_state state; Mach_AMD64_thread_state state;
#define WANT_MACH_THREAD_ENUM 1 #define WANT_MACH_THREAD_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
Mach_thread_command threado; Mach_thread_command threado;
int threado_size() const override { return sizeof(threado); } int threado_size() const override { return sizeof(threado); }
@@ -1148,7 +1149,7 @@ protected:
virtual Linker* newLinker() const override; virtual Linker* newLinker() const override;
virtual void addStubEntrySections(Filter const *) override; virtual void addStubEntrySections(Filter const *) override;
__packed_struct(Mach_thread_command) packed_struct(Mach_thread_command) {
LE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */ LE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */
LE32 cmdsize; /* total size of this command */ LE32 cmdsize; /* total size of this command */
LE32 flavor; LE32 flavor;
@@ -1156,7 +1157,7 @@ protected:
Mach_ARM_thread_state state; Mach_ARM_thread_state state;
#define WANT_MACH_THREAD_ENUM 1 #define WANT_MACH_THREAD_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
Mach_thread_command threado; Mach_thread_command threado;
int threado_size() const override { return sizeof(threado); } int threado_size() const override { return sizeof(threado); }
@@ -1200,7 +1201,7 @@ protected:
virtual Linker* newLinker() const override; virtual Linker* newLinker() const override;
virtual void addStubEntrySections(Filter const *) override; virtual void addStubEntrySections(Filter const *) override;
__packed_struct(Mach_thread_command) packed_struct(Mach_thread_command) {
LE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */ LE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */
LE32 cmdsize; /* total size of this command */ LE32 cmdsize; /* total size of this command */
LE32 flavor; LE32 flavor;
@@ -1208,7 +1209,7 @@ protected:
Mach_ARM64_thread_state state; Mach_ARM64_thread_state state;
#define WANT_MACH_THREAD_ENUM 1 #define WANT_MACH_THREAD_ENUM 1
#include "p_mach_enum.h" #include "p_mach_enum.h"
__packed_struct_end() };
Mach_thread_command threado; Mach_thread_command threado;
int threado_size() const override { return sizeof(threado); } int threado_size() const override { return sizeof(threado); }
@@ -1267,10 +1268,10 @@ protected:
enum { N_FAT_ARCH = 5 }; enum { N_FAT_ARCH = 5 };
protected: protected:
__packed_struct(Fat_head) packed_struct(Fat_head) {
struct Mach_fat_header fat; struct Mach_fat_header fat;
struct Mach_fat_arch arch[N_FAT_ARCH]; struct Mach_fat_arch arch[N_FAT_ARCH];
__packed_struct_end() };
Fat_head fat_head; Fat_head fat_head;
+19 -18
View File
@@ -106,28 +106,28 @@ protected:
unsigned saved_opt_android_shlib; unsigned saved_opt_android_shlib;
// must agree with stub/linux.hh // must agree with stub/linux.hh
__packed_struct(b_info) // 12-byte header before each compressed block packed_struct(b_info) { // 12-byte header before each compressed block
NE32 sz_unc; // uncompressed_size NE32 sz_unc; // uncompressed_size
NE32 sz_cpr; // compressed_size NE32 sz_cpr; // compressed_size
unsigned char b_method; // compression algorithm unsigned char b_method; // compression algorithm
unsigned char b_ftid; // filter id unsigned char b_ftid; // filter id
unsigned char b_cto8; // filter parameter unsigned char b_cto8; // filter parameter
unsigned char b_extra; unsigned char b_extra;
__packed_struct_end() };
__packed_struct(l_info) // 12-byte trailer in header for loader packed_struct(l_info) { // 12-byte trailer in header for loader
LE32 l_checksum; LE32 l_checksum;
LE32 l_magic; LE32 l_magic;
LE16 l_lsize; LE16 l_lsize;
unsigned char l_version; unsigned char l_version;
unsigned char l_format; unsigned char l_format;
__packed_struct_end() };
__packed_struct(p_info) // 12-byte packed program header packed_struct(p_info) { // 12-byte packed program header
NE32 p_progid; NE32 p_progid;
NE32 p_filesize; NE32 p_filesize;
NE32 p_blocksize; NE32 p_blocksize;
__packed_struct_end() };
struct l_info linfo; struct l_info linfo;
@@ -140,6 +140,7 @@ protected:
// abstract classes encapsulating endian issues // abstract classes encapsulating endian issues
// note: UPX_MAGIC is always stored in le32 format // note: UPX_MAGIC is always stored in le32 format
**************************************************************************/ **************************************************************************/
class PackUnixBe32 : public PackUnix class PackUnixBe32 : public PackUnix
{ {
typedef PackUnix super; typedef PackUnix super;
@@ -147,28 +148,28 @@ protected:
PackUnixBe32(InputFile *f) : super(f) { bele = &N_BELE_RTP::be_policy; } PackUnixBe32(InputFile *f) : super(f) { bele = &N_BELE_RTP::be_policy; }
// must agree with stub/linux.hh // must agree with stub/linux.hh
__packed_struct(b_info) // 12-byte header before each compressed block packed_struct(b_info) { // 12-byte header before each compressed block
BE32 sz_unc; // uncompressed_size BE32 sz_unc; // uncompressed_size
BE32 sz_cpr; // compressed_size BE32 sz_cpr; // compressed_size
unsigned char b_method; // compression algorithm unsigned char b_method; // compression algorithm
unsigned char b_ftid; // filter id unsigned char b_ftid; // filter id
unsigned char b_cto8; // filter parameter unsigned char b_cto8; // filter parameter
unsigned char b_extra; unsigned char b_extra;
__packed_struct_end() };
__packed_struct(l_info) // 12-byte trailer in header for loader packed_struct(l_info) { // 12-byte trailer in header for loader
BE32 l_checksum; BE32 l_checksum;
BE32 l_magic; BE32 l_magic;
BE16 l_lsize; BE16 l_lsize;
unsigned char l_version; unsigned char l_version;
unsigned char l_format; unsigned char l_format;
__packed_struct_end() };
__packed_struct(p_info) // 12-byte packed program header packed_struct(p_info) {// 12-byte packed program header
BE32 p_progid; BE32 p_progid;
BE32 p_filesize; BE32 p_filesize;
BE32 p_blocksize; BE32 p_blocksize;
__packed_struct_end() };
}; };
@@ -179,28 +180,28 @@ protected:
PackUnixLe32(InputFile *f) : super(f) { bele = &N_BELE_RTP::le_policy; } PackUnixLe32(InputFile *f) : super(f) { bele = &N_BELE_RTP::le_policy; }
// must agree with stub/linux.hh // must agree with stub/linux.hh
__packed_struct(b_info) // 12-byte header before each compressed block packed_struct(b_info) { // 12-byte header before each compressed block
LE32 sz_unc; // uncompressed_size LE32 sz_unc; // uncompressed_size
LE32 sz_cpr; // compressed_size LE32 sz_cpr; // compressed_size
unsigned char b_method; // compression algorithm unsigned char b_method; // compression algorithm
unsigned char b_ftid; // filter id unsigned char b_ftid; // filter id
unsigned char b_cto8; // filter parameter unsigned char b_cto8; // filter parameter
unsigned char b_extra; unsigned char b_extra;
__packed_struct_end() };
__packed_struct(l_info) // 12-byte trailer in header for loader packed_struct(l_info) { // 12-byte trailer in header for loader
LE32 l_checksum; LE32 l_checksum;
LE32 l_magic; LE32 l_magic;
LE16 l_lsize; LE16 l_lsize;
unsigned char l_version; unsigned char l_version;
unsigned char l_format; unsigned char l_format;
__packed_struct_end() };
__packed_struct(p_info) // 12-byte packed program header packed_struct(p_info) { // 12-byte packed program header
LE32 p_progid; LE32 p_progid;
LE32 p_filesize; LE32 p_filesize;
LE32 p_blocksize; LE32 p_blocksize;
__packed_struct_end() };
}; };
+2 -2
View File
@@ -327,7 +327,7 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
if (UPX_E_OK!=r || len_unc<=len_cpr) // FIXME: allow no compression if (UPX_E_OK!=r || len_unc<=len_cpr) // FIXME: allow no compression
throwInternalError("Ehdr compression failed"); throwInternalError("Ehdr compression failed");
__packed_struct(b_info) // 12-byte header before each compressed block packed_struct(b_info) { // 12-byte header before each compressed block
NE32 sz_unc; // uncompressed_size NE32 sz_unc; // uncompressed_size
NE32 sz_cpr; // compressed_size NE32 sz_cpr; // compressed_size
unsigned char b_method; // compression algorithm unsigned char b_method; // compression algorithm
@@ -335,7 +335,7 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
unsigned char b_cto8; // filter parameter unsigned char b_cto8; // filter parameter
unsigned char b_unused; // FIXME: !=0 for partial-block unfilter unsigned char b_unused; // FIXME: !=0 for partial-block unfilter
// NE32 f_offset, f_len; // only if partial-block unfilter // NE32 f_offset, f_len; // only if partial-block unfilter
__packed_struct_end() };
struct b_info hdr_info; struct b_info hdr_info;
set_be32(&hdr_info.sz_unc, len_unc); set_be32(&hdr_info.sz_unc, len_unc);
+2 -2
View File
@@ -65,7 +65,7 @@ protected:
// virtual upx_byte *getLoader() const; // virtual upx_byte *getLoader() const;
// virtual int getLoaderSize() const; // virtual int getLoaderSize() const;
__packed_struct(boot_sect_t) packed_struct(boot_sect_t) {
char _[0x1f1]; char _[0x1f1];
unsigned char setup_sects; unsigned char setup_sects;
char __[2]; char __[2];
@@ -88,7 +88,7 @@ protected:
LE32 payload_length; LE32 payload_length;
// some more uninteresting fields here ... // some more uninteresting fields here ...
// see /usr/src/linux/Documentation/i386/boot.txt // see /usr/src/linux/Documentation/i386/boot.txt
__packed_struct_end() };
boot_sect_t h; boot_sect_t h;
+93 -92
View File
@@ -49,8 +49,8 @@ static void xcheck(const void *p) {
throwCantUnpack("xcheck unexpected nullptr pointer; take care!"); throwCantUnpack("xcheck unexpected nullptr pointer; take care!");
} }
static void xcheck(const void *p, size_t plen, const void *b, size_t blen) { static void xcheck(const void *p, size_t plen, const void *b, size_t blen) {
const char *pp = (const char *) p; const charptr pp = (const charptr) p;
const char *bb = (const char *) b; const charptr bb = (const charptr) b;
if very_unlikely (pp < bb || pp > bb + blen || pp + plen > bb + blen) if very_unlikely (pp < bb || pp > bb + blen || pp + plen > bb + blen)
throwCantUnpack("xcheck pointer out of range; take care!"); throwCantUnpack("xcheck pointer out of range; take care!");
} }
@@ -154,7 +154,7 @@ bool PeFile::testUnpackVersion(int version) const {
} }
int PeFile::readFileHeader() { int PeFile::readFileHeader() {
struct alignas(1) exe_header_t { struct alignas(1) ExeHeader final {
LE16 mz; LE16 mz;
LE16 m512; LE16 m512;
LE16 p512; LE16 p512;
@@ -164,12 +164,12 @@ int PeFile::readFileHeader() {
LE32 nexepos; LE32 nexepos;
}; };
COMPILE_TIME_ASSERT(sizeof(exe_header_t) == 64) COMPILE_TIME_ASSERT(sizeof(ExeHeader) == 64)
COMPILE_TIME_ASSERT_ALIGNED1(exe_header_t) COMPILE_TIME_ASSERT_ALIGNED1(ExeHeader)
COMPILE_TIME_ASSERT(sizeof(((exe_header_t *) nullptr)->_) == 18) COMPILE_TIME_ASSERT(sizeof(((ExeHeader *) nullptr)->_) == 18)
COMPILE_TIME_ASSERT(sizeof(((exe_header_t *) nullptr)->__) == 34) COMPILE_TIME_ASSERT(sizeof(((ExeHeader *) nullptr)->__) == 34)
exe_header_t h; ExeHeader h;
int ic; int ic;
pe_offset = 0; pe_offset = 0;
@@ -179,11 +179,11 @@ int PeFile::readFileHeader() {
if (h.mz == 'M' + 'Z' * 256) // dos exe if (h.mz == 'M' + 'Z' * 256) // dos exe
{ {
if (h.nexepos && h.nexepos < sizeof(exe_header_t)) { if (h.nexepos && h.nexepos < sizeof(ExeHeader)) {
// Overlapping MZ and PE headers by 'leanify', etc. // Overlapping MZ and PE headers by 'leanify', etc.
char buf[64]; char buf[64];
snprintf(buf, sizeof(buf), "PE and MZ header overlap: %#x < %#x", snprintf(buf, sizeof(buf), "PE and MZ header overlap: %#x < %#x",
(unsigned) h.nexepos, (unsigned) sizeof(exe_header_t)); (unsigned) h.nexepos, (unsigned) sizeof(ExeHeader));
throwCantPack(buf); throwCantPack(buf);
} }
const unsigned delta = (h.relocoffs >= 0x40) const unsigned delta = (h.relocoffs >= 0x40)
@@ -283,11 +283,11 @@ void PeFile::Interval::dump() const {
**************************************************************************/ **************************************************************************/
namespace { namespace {
struct FixDeleter { // don't leak memory on exceptions struct FixDeleter final { // helper so we don't leak memory on exceptions
LE32 **fix; LE32 **fix;
size_t n; size_t count;
~FixDeleter() noexcept { ~FixDeleter() noexcept {
for (size_t i = 0; i < n; i++) { for (size_t i = 0; i < count; i++) {
delete[] fix[i]; delete[] fix[i];
fix[i] = nullptr; fix[i] = nullptr;
} }
@@ -492,7 +492,7 @@ void PeFile32::processRelocs() // pass1
FixDeleter fixdel{fix, 0}; // don't leak memory FixDeleter fixdel{fix, 0}; // don't leak memory
for (ic = 0; ic < 4; ic++) { for (ic = 0; ic < 4; ic++) {
fix[ic] = New(LE32, counts[ic]); fix[ic] = New(LE32, counts[ic]);
fixdel.n += 1; fixdel.count += 1;
} }
unsigned xcounts[4]; unsigned xcounts[4];
@@ -594,7 +594,7 @@ void PeFile64::processRelocs() // pass1
FixDeleter fixdel{fix, 0}; // don't leak memory FixDeleter fixdel{fix, 0}; // don't leak memory
for (ic = 0; ic < 16; ic++) { for (ic = 0; ic < 16; ic++) {
fix[ic] = New(LE32, counts[ic]); fix[ic] = New(LE32, counts[ic]);
fixdel.n += 1; fixdel.count += 1;
} }
unsigned xcounts[16]; unsigned xcounts[16];
@@ -686,16 +686,18 @@ const LE32 &PeFile::IDADDR(unsigned x) const { return iddirs[x].vaddr; }
*/ */
class PeFile::ImportLinker final : public ElfLinkerAMD64 { class PeFile::ImportLinker final : public ElfLinkerAMD64 {
struct tstr : private ::noncopyable { struct TStr final : private ::noncopyable { // temporary string owner, deletes on destruction
char *s = nullptr; explicit TStr(char *str) noexcept : s(str) {}
explicit tstr(char *str) : s(str) {} ~TStr() noexcept { delete[] s; } // delete!
~tstr() noexcept { delete[] s; } operator char *() noexcept { return s; }
operator char *() const { return s; } operator const char *() const noexcept { return s; }
private:
char *s;
}; };
// encoding of dll and proc names are required, so that our special // encoding of dll and proc names are required, so that our special
// control characters in the name of sections can work as intended // control characters in the name of sections can work as intended
static void encode_name(const char *name, char *buf) { static void encode_name(SPAN_P(const char) name, SPAN_S(char) buf) {
while (*name) { while (*name) {
*buf++ = 'a' + ((*name >> 4) & 0xf); *buf++ = 'a' + ((*name >> 4) & 0xf);
*buf++ = 'a' + (*name & 0xf); *buf++ = 'a' + (*name & 0xf);
@@ -705,27 +707,29 @@ class PeFile::ImportLinker final : public ElfLinkerAMD64 {
} }
static char *name_for_dll(const char *dll, char first_char) { static char *name_for_dll(const char *dll, char first_char) {
assert(dll); assert(dll != nullptr);
unsigned l = strlen(dll); const unsigned l = strlen(dll);
assert(l > 0); assert(l > 0);
const unsigned new_size = 1 + 3 * l + 1;
char *name = New(char, 3 * l + 2); char *const new_name = New(char, new_size);
SPAN_S_VAR(char, const name, new_name, new_size);
name[0] = first_char; name[0] = first_char;
char *n = name + 1 + 2 * l; SPAN_S_VAR(char, n, name + (1 + 2 * l));
do { do {
*n++ = tolower((uchar) *dll); *n++ = tolower((uchar) *dll);
} while (*dll++); } while (*dll++);
encode_name(name + 1 + 2 * l, name + 1); encode_name(new_name + (1 + 2 * l), name + 1);
return name; return new_name;
} }
static char *name_for_proc(const char *dll, const char *proc, char first_char, char separator) { static char *name_for_proc(const char *dll, const char *proc, char first_char, char separator) {
unsigned len = 1 + 2 * strlen(dll) + 1 + 2 * strlen(proc) + 1 + 1; const unsigned new_size = 1 + 2 * strlen(dll) + 1 + 2 * strlen(proc) + 1 + 1;
tstr dlln(name_for_dll(dll, first_char)); TStr dll_name(name_for_dll(dll, first_char));
char *procn = New(char, len); char *const new_name = New(char, new_size);
upx_safe_snprintf(procn, len, "%s%c", (const char *) dlln, separator); SPAN_S_VAR(char, const name, new_name, new_size);
encode_name(proc, procn + strlen(procn)); upx_safe_snprintf(new_name, new_size, "%s%c", (const char *) dll_name, separator);
return procn; encode_name(proc, name + strlen(name));
return new_name;
} }
static const char zeros[sizeof(import_desc)]; static const char zeros[sizeof(import_desc)];
@@ -747,8 +751,8 @@ class PeFile::ImportLinker final : public ElfLinkerAMD64 {
unsigned thunk_size; // 4 or 8 bytes unsigned thunk_size; // 4 or 8 bytes
void add(const char *dll, const char *proc, unsigned ordinal) { void add(const char *dll, const char *proc, unsigned ordinal) {
tstr sdll(name_for_dll(dll, dll_name_id)); TStr sdll(name_for_dll(dll, dll_name_id));
tstr desc_name(name_for_dll(dll, descriptor_id)); TStr desc_name(name_for_dll(dll, descriptor_id));
char tsep = thunk_separator; char tsep = thunk_separator;
if (findSection(sdll, false) == nullptr) { if (findSection(sdll, false) == nullptr) {
@@ -759,7 +763,7 @@ class PeFile::ImportLinker final : public ElfLinkerAMD64 {
addSection(desc_name, zeros, sizeof(zeros), 0); // descriptor addSection(desc_name, zeros, sizeof(zeros), 0); // descriptor
addRelocation(desc_name, offsetof(import_desc, dllname), "R_X86_64_32", sdll, 0); addRelocation(desc_name, offsetof(import_desc, dllname), "R_X86_64_32", sdll, 0);
} }
tstr thunk(proc == nullptr ? name_for_dll(dll, thunk_id) TStr thunk(proc == nullptr ? name_for_dll(dll, thunk_id)
: name_for_proc(dll, proc, thunk_id, tsep)); : name_for_proc(dll, proc, thunk_id, tsep));
if (findSection(thunk, false) != nullptr) if (findSection(thunk, false) != nullptr)
@@ -769,7 +773,7 @@ class PeFile::ImportLinker final : public ElfLinkerAMD64 {
if (tsep == thunk_separator_first) { if (tsep == thunk_separator_first) {
addRelocation(desc_name, offsetof(import_desc, iat), "R_X86_64_32", thunk, 0); addRelocation(desc_name, offsetof(import_desc, iat), "R_X86_64_32", thunk, 0);
tstr last_thunk(name_for_proc(dll, "X", thunk_id, thunk_separator_last)); TStr last_thunk(name_for_proc(dll, "X", thunk_id, thunk_separator_last));
addSection(last_thunk, zeros, thunk_size, 0); addSection(last_thunk, zeros, thunk_size, 0);
} }
@@ -777,7 +781,7 @@ class PeFile::ImportLinker final : public ElfLinkerAMD64 {
if (ordinal != 0u) { if (ordinal != 0u) {
addRelocation(thunk, 0, reltype, "*UND*", ordinal | (1ull << (thunk_size * 8 - 1))); addRelocation(thunk, 0, reltype, "*UND*", ordinal | (1ull << (thunk_size * 8 - 1)));
} else if (proc != nullptr) { } else if (proc != nullptr) {
tstr proc_name(name_for_proc(dll, proc, proc_name_id, procname_separator)); TStr proc_name(name_for_proc(dll, proc, proc_name_id, procname_separator));
addSection(proc_name, zeros, 2, 1); // 2 bytes of word aligned "hint" addSection(proc_name, zeros, 2, 1); // 2 bytes of word aligned "hint"
addSymbol(proc_name, proc_name, 0); addSymbol(proc_name, proc_name, 0);
addRelocation(thunk, 0, reltype, proc_name, 0); addRelocation(thunk, 0, reltype, proc_name, 0);
@@ -806,7 +810,7 @@ class PeFile::ImportLinker final : public ElfLinkerAMD64 {
const Section *getThunk(const char *dll, const char *proc, char tsep) const { const Section *getThunk(const char *dll, const char *proc, char tsep) const {
assert(dll); assert(dll);
assert(proc); assert(proc);
tstr thunk(name_for_proc(dll, proc, thunk_id, tsep)); TStr thunk(name_for_proc(dll, proc, thunk_id, tsep));
return findSection(thunk, false); return findSection(thunk, false);
} }
@@ -887,7 +891,6 @@ public:
assert(ordinal > 0 && ordinal < 0x10000); assert(ordinal > 0 && ordinal < 0x10000);
char ord[1 + 5 + 1]; char ord[1 + 5 + 1];
upx_safe_snprintf(ord, sizeof(ord), "%c%05u", ordinal_id, ordinal); upx_safe_snprintf(ord, sizeof(ord), "%c%05u", ordinal_id, ordinal);
const Section *s = getThunk((const char *) dll, ord, thunk_separator_first); const Section *s = getThunk((const char *) dll, ord, thunk_separator_first);
if (s == nullptr && (s = getThunk((const char *) dll, ord, thunk_separator)) == nullptr) if (s == nullptr && (s = getThunk((const char *) dll, ord, thunk_separator)) == nullptr)
throwInternalError("entry not found"); throwInternalError("entry not found");
@@ -897,18 +900,18 @@ public:
template <typename C> template <typename C>
upx_uint64_t getAddress(const C *dll) const { upx_uint64_t getAddress(const C *dll) const {
ACC_COMPILE_TIME_ASSERT(sizeof(C) == 1) // "char" or "byte" ACC_COMPILE_TIME_ASSERT(sizeof(C) == 1) // "char" or "byte"
tstr sdll(name_for_dll((const char *) dll, dll_name_id)); TStr sdll(name_for_dll((const char *) dll, dll_name_id));
return findSection(sdll, true)->offset; return findSection(sdll, true)->offset;
} }
template <typename C> template <typename C>
upx_uint64_t hasDll(const C *dll) const { upx_uint64_t hasDll(const C *dll) const {
ACC_COMPILE_TIME_ASSERT(sizeof(C) == 1) // "char" or "byte" ACC_COMPILE_TIME_ASSERT(sizeof(C) == 1) // "char" or "byte"
tstr sdll(name_for_dll((const char *) dll, dll_name_id)); TStr sdll(name_for_dll((const char *) dll, dll_name_id));
return findSection(sdll, false) != nullptr; return findSection(sdll, false) != nullptr;
} }
}; };
const char PeFile::ImportLinker::zeros[sizeof(import_desc)] = {0}; /*static*/ const char PeFile::ImportLinker::zeros[sizeof(import_desc)] = {0};
void PeFile::addKernelImport(const char *name) { ilinker->add(kernelDll(), name); } void PeFile::addKernelImport(const char *name) { ilinker->add(kernelDll(), name); }
@@ -923,10 +926,8 @@ void PeFile::addStubImports() {
void PeFile::processImports2(unsigned myimport, unsigned) // pass 2 void PeFile::processImports2(unsigned myimport, unsigned) // pass 2
{ {
COMPILE_TIME_ASSERT(sizeof(import_desc) == 20) COMPILE_TIME_ASSERT(sizeof(import_desc) == 20)
if (ilinker == nullptr)
if (!ilinker)
return; return;
ilinker->relocate_import(myimport); ilinker->relocate_import(myimport);
int len; int len;
oimpdlls = ilinker->getLoader(&len); oimpdlls = ilinker->getLoader(&len);
@@ -958,7 +959,7 @@ unsigned PeFile::processImports0(ord_mask_t ord_mask) // pass 1
if (dllnum > 4096) // just some arbitrary limit/sanity check if (dllnum > 4096) // just some arbitrary limit/sanity check
throwCantPack("too many DLL imports %u", dllnum); throwCantPack("too many DLL imports %u", dllnum);
struct udll { struct UDll final {
const byte *name; const byte *name;
const byte *shname; const byte *shname;
unsigned ordinal; unsigned ordinal;
@@ -968,8 +969,8 @@ unsigned PeFile::processImports0(ord_mask_t ord_mask) // pass 1
bool isk32; bool isk32;
static int __acc_cdecl_qsort compare(const void *aa, const void *bb) { static int __acc_cdecl_qsort compare(const void *aa, const void *bb) {
const udll *a = *(const udll *const *) aa; const UDll *a = *(const UDll *const *) aa;
const udll *b = *(const udll *const *) bb; const UDll *b = *(const UDll *const *) bb;
if (a->original_position == b->original_position) // identical object, poor qsort() if (a->original_position == b->original_position) // identical object, poor qsort()
return 0; return 0;
if (a->isk32 != b->isk32) if (a->isk32 != b->isk32)
@@ -997,8 +998,8 @@ unsigned PeFile::processImports0(ord_mask_t ord_mask) // pass 1
}; };
// +1 for dllnum=0 // +1 for dllnum=0
Array(struct udll, dlls, dllnum + 1); Array(UDll, dlls, dllnum + 1);
Array(struct udll *, idlls, dllnum + 1); Array(UDll *, idlls, dllnum + 1);
soimport = 1024; // safety soimport = 1024; // safety
@@ -1036,7 +1037,7 @@ unsigned PeFile::processImports0(ord_mask_t ord_mask) // pass 1
mb_oimport.clear(); mb_oimport.clear();
oimport = mb_oimport; oimport = mb_oimport;
upx_qsort(idlls, dllnum, sizeof(*idlls), udll::compare); upx_qsort(idlls, dllnum, sizeof(*idlls), UDll::compare);
info("Processing imports: %d DLLs", dllnum); info("Processing imports: %d DLLs", dllnum);
for (unsigned ic = 0; ic < dllnum; ic++) { for (unsigned ic = 0; ic < dllnum; ic++) {
@@ -1081,7 +1082,7 @@ unsigned PeFile::processImports0(ord_mask_t ord_mask) // pass 1
ppi += 8; ppi += 8;
for (; *tarr; tarr++) for (; *tarr; tarr++)
if (*tarr & ord_mask) { if (*tarr & ord_mask) {
unsigned ord = *tarr & 0xffff; const unsigned ord = *tarr & 0xffff;
if (idlls[ic]->isk32 && kernel32ordinal) { if (idlls[ic]->isk32 && kernel32ordinal) {
*ppi++ = 0xfe; // signed + odd parity *ppi++ = 0xfe; // signed + odd parity
set_le32(ppi, ilinker->getAddress(idlls[ic]->name, ord)); set_le32(ppi, ilinker->getAddress(idlls[ic]->name, ord));
@@ -1101,7 +1102,7 @@ unsigned PeFile::processImports0(ord_mask_t ord_mask) // pass 1
} }
ppi++; ppi++;
unsigned esize = ptr_udiff_bytes(tarr, idlls[ic]->lookupt); const unsigned esize = ptr_udiff_bytes(tarr, idlls[ic]->lookupt);
lookups.add(idlls[ic]->lookupt, esize); lookups.add(idlls[ic]->lookupt, esize);
if (ptr_diff_bytes(ibuf.subref("bad import name %#x", idlls[ic]->iat, 1), if (ptr_diff_bytes(ibuf.subref("bad import name %#x", idlls[ic]->iat, 1),
idlls[ic]->lookupt) != 0) { idlls[ic]->lookupt) != 0) {
@@ -1311,13 +1312,13 @@ void PeFile::processExports(Export *xport, unsigned newoffs) // pass2
// of course it was impossible to debug this ;-) // of course it was impossible to debug this ;-)
template <> template <>
struct PeFile::tls_traits<LE32> { struct PeFile::tls_traits<LE32> final {
struct alignas(1) tls { struct alignas(1) tls {
LE32 datastart; // VA tls init data start LE32 datastart; // VA tls init data start
LE32 dataend; // VA tls init data end LE32 dataend; // VA tls init data end
LE32 tlsindex; // VA tls index LE32 tlsindex; // VA tls index
LE32 callbacks; // VA tls callbacks LE32 callbacks; // VA tls callbacks
char _[8]; // zero init, characteristics byte _[8]; // zero init, characteristics
}; };
static const unsigned sotls = 24; static const unsigned sotls = 24;
@@ -1328,13 +1329,13 @@ struct PeFile::tls_traits<LE32> {
}; };
template <> template <>
struct PeFile::tls_traits<LE64> { struct PeFile::tls_traits<LE64> final {
struct alignas(1) tls { struct alignas(1) tls {
LE64 datastart; // VA tls init data start LE64 datastart; // VA tls init data start
LE64 dataend; // VA tls init data end LE64 dataend; // VA tls init data end
LE64 tlsindex; // VA tls index LE64 tlsindex; // VA tls index
LE64 callbacks; // VA tls callbacks LE64 callbacks; // VA tls callbacks
char _[8]; // zero init, characteristics byte _[8]; // zero init, characteristics
}; };
static const unsigned sotls = 40; static const unsigned sotls = 40;
@@ -1539,41 +1540,41 @@ void PeFile::processLoadConf(Reloc *rel, const Interval *iv,
// resource handling // resource handling
**************************************************************************/ **************************************************************************/
struct alignas(1) PeFile::Resource::res_dir_entry { struct alignas(1) PeFile::Resource::res_dir_entry final {
LE32 tnl; // Type | Name | Language id - depending on level LE32 tnl; // Type | Name | Language id - depending on level
LE32 child; LE32 child;
}; };
struct alignas(1) PeFile::Resource::res_dir { struct alignas(1) PeFile::Resource::res_dir final {
char _[12]; // flags, timedate, version byte _[12]; // flags, timedate, version
LE16 namedentr; LE16 namedentr;
LE16 identr; LE16 identr;
unsigned Sizeof() const { return 16 + sizeof(res_dir_entry) * (namedentr + identr); }
res_dir_entry entries[1];
// it's usually safe to assume that every res_dir contains // it's usually safe to assume that every res_dir contains
// at least one res_dir_entry - check() complains otherwise // at least one res_dir_entry - check() complains otherwise
res_dir_entry entries[1];
unsigned Sizeof() const { return 16 + mem_size(sizeof(res_dir_entry), namedentr + identr); }
}; };
struct alignas(1) PeFile::Resource::res_data { struct alignas(1) PeFile::Resource::res_data final {
LE32 offset; LE32 offset;
LE32 size; LE32 size;
char _[8]; // codepage, reserved byte _[8]; // codepage, reserved
}; };
struct PeFile::Resource::upx_rnode { struct PeFile::Resource::upx_rnode /*not_final*/ {
unsigned id; unsigned id;
byte *name; byte *name;
upx_rnode *parent; upx_rnode *parent;
}; };
struct PeFile::Resource::upx_rbranch : public PeFile::Resource::upx_rnode { struct PeFile::Resource::upx_rbranch final : public PeFile::Resource::upx_rnode {
unsigned nc; unsigned nc;
upx_rnode **children; upx_rnode **children;
res_dir data; res_dir data;
}; };
struct PeFile::Resource::upx_rleaf : public PeFile::Resource::upx_rnode { struct PeFile::Resource::upx_rleaf final : public PeFile::Resource::upx_rnode {
upx_rleaf *next; upx_rleaf *next;
unsigned newoffset; unsigned newoffset;
res_data data; res_data data;
@@ -1856,11 +1857,10 @@ static bool match(unsigned itype, const byte *ntype, unsigned iname, const byte
// typex and namex can be string or number // typex and namex can be string or number
// hopefully resource names do not have '/' or ',' characters inside // hopefully resource names do not have '/' or ',' characters inside
struct helper { struct Helper final {
static bool match(unsigned num, const byte *unistr, const char *mkeep) { static bool match(unsigned num, const byte *unistr, const char *mkeep) {
if (!unistr) if (!unistr)
return (unsigned) atoi(mkeep) == num; return (unsigned) atoi(mkeep) == num;
unsigned ic; unsigned ic;
for (ic = 0; ic < get_le16(unistr); ic++) for (ic = 0; ic < get_le16(unistr); ic++)
if (unistr[2 + ic * 2] != (byte) mkeep[ic]) if (unistr[2 + ic * 2] != (byte) mkeep[ic])
@@ -1871,17 +1871,16 @@ static bool match(unsigned itype, const byte *ntype, unsigned iname, const byte
// FIXME this comparison is not too exact // FIXME this comparison is not too exact
for (;;) { for (;;) {
char const *delim1 = strchr(keep, '/'); const char *delim1 = strchr(keep, '/');
char const *delim2 = strchr(keep, ','); const char *delim2 = strchr(keep, ',');
if (helper::match(itype, ntype, keep)) { if (Helper::match(itype, ntype, keep)) {
if (!delim1) if (!delim1)
return true; return true;
if (delim2 && delim2 < delim1) if (delim2 && delim2 < delim1)
return true; return true;
if (helper::match(iname, nname, delim1 + 1)) if (Helper::match(iname, nname, delim1 + 1))
return true; return true;
} }
if (delim2 == nullptr) if (delim2 == nullptr)
break; break;
keep = delim2 + 1; keep = delim2 + 1;
@@ -1967,13 +1966,15 @@ void PeFile::processResources(Resource *res) {
else if (rtype > 0 && rtype < RT_LAST) else if (rtype > 0 && rtype < RT_LAST)
do_compress = opt->win32_pe.compress_rt[rtype] ? true : false; do_compress = opt->win32_pe.compress_rt[rtype] ? true : false;
if (keep_icons) if (do_compress && keep_icons)
do_compress &= do_compress &=
!match(res->itype(), res->ntype(), res->iname(), res->nname(), keep_icons); !match(res->itype(), res->ntype(), res->iname(), res->nname(), keep_icons);
do_compress &= if (do_compress)
!match(res->itype(), res->ntype(), res->iname(), res->nname(), "TYPELIB,REGISTRY,16"); do_compress &= !match(res->itype(), res->ntype(), res->iname(), res->nname(),
do_compress &= !match(res->itype(), res->ntype(), res->iname(), res->nname(), "TYPELIB,REGISTRY,16");
opt->win32_pe.keep_resource); if (do_compress)
do_compress &= !match(res->itype(), res->ntype(), res->iname(), res->nname(),
opt->win32_pe.keep_resource);
if (do_compress) { if (do_compress) {
csize += res->size(); csize += res->size();
@@ -2042,22 +2043,22 @@ unsigned PeFile::stripDebug(unsigned overlaystart) {
if (IDADDR(PEDIR_DEBUG) == 0) if (IDADDR(PEDIR_DEBUG) == 0)
return overlaystart; return overlaystart;
struct alignas(1) debug_dir_t { struct alignas(1) DebugDir final {
char _[16]; // flags, time/date, version, type byte _[16]; // flags, time/date, version, type
LE32 size; LE32 size;
char __[4]; // rva byte __[4]; // rva
LE32 fpos; LE32 fpos;
}; };
COMPILE_TIME_ASSERT(sizeof(debug_dir_t) == 28) COMPILE_TIME_ASSERT(sizeof(DebugDir) == 28)
COMPILE_TIME_ASSERT_ALIGNED1(debug_dir_t) COMPILE_TIME_ASSERT_ALIGNED1(DebugDir)
COMPILE_TIME_ASSERT(sizeof(((debug_dir_t *) nullptr)->_) == 16) COMPILE_TIME_ASSERT(sizeof(((DebugDir *) nullptr)->_) == 16)
COMPILE_TIME_ASSERT(sizeof(((debug_dir_t *) nullptr)->__) == 4) COMPILE_TIME_ASSERT(sizeof(((DebugDir *) nullptr)->__) == 4)
const unsigned skip = IDADDR(PEDIR_DEBUG); const unsigned skip = IDADDR(PEDIR_DEBUG);
const unsigned take = IDSIZE(PEDIR_DEBUG); const unsigned take = IDSIZE(PEDIR_DEBUG);
const debug_dir_t *dd = (const debug_dir_t *) ibuf.subref("bad debug %#x", skip, take); const DebugDir *dd = (const DebugDir *) ibuf.subref("bad debug %#x", skip, take);
for (unsigned ic = 0; ic < IDSIZE(PEDIR_DEBUG) / sizeof(debug_dir_t); ic++, dd++) for (unsigned ic = 0; ic < IDSIZE(PEDIR_DEBUG) / sizeof(DebugDir); ic++, dd++)
if (overlaystart == dd->fpos) if (overlaystart == dd->fpos)
overlaystart += dd->size; overlaystart += dd->size;
ibuf.fill(IDADDR(PEDIR_DEBUG), IDSIZE(PEDIR_DEBUG), FILLVAL); ibuf.fill(IDADDR(PEDIR_DEBUG), IDSIZE(PEDIR_DEBUG), FILLVAL);
@@ -2770,7 +2771,7 @@ struct VPtr final { // "virtual pointer" pointing before a buffer
SPAN_S(T) base; SPAN_S(T) base;
size_t x; size_t x;
// return base + (n - x) // return base + (n - x)
auto operator+(size_t n) const { return base + mem_size_get_n(sizeof(T), n - x); } SPAN_S(T) operator+(size_t n) const { return base + mem_size_get_n(sizeof(T), n - x); }
}; };
} // namespace } // namespace
+4 -4
View File
@@ -356,7 +356,7 @@ protected:
RT_LAST RT_LAST
}; };
class Interval : private noncopyable { class Interval final : private noncopyable {
unsigned capacity = 0; unsigned capacity = 0;
void *base = nullptr; void *base = nullptr;
public: public:
@@ -382,7 +382,7 @@ protected:
static int __acc_cdecl_qsort compare(const void *p1, const void *p2); static int __acc_cdecl_qsort compare(const void *p1, const void *p2);
}; };
class Reloc : private noncopyable { class Reloc final : private noncopyable {
// these are set in constructor // these are set in constructor
byte *start = nullptr; byte *start = nullptr;
unsigned start_size_in_bytes = 0; unsigned start_size_in_bytes = 0;
@@ -418,7 +418,7 @@ protected:
void finish(byte *(&result_ptr), unsigned &result_size); // => transfer ownership void finish(byte *(&result_ptr), unsigned &result_size); // => transfer ownership
}; };
class Resource : private noncopyable { class Resource final : private noncopyable {
struct res_dir_entry; struct res_dir_entry;
struct res_dir; struct res_dir;
struct res_data; struct res_data;
@@ -474,7 +474,7 @@ protected:
*/ */
}; };
class Export : private noncopyable { class Export final : private noncopyable {
struct alignas(1) export_dir_t { struct alignas(1) export_dir_t {
byte _[12]; // flags, timedate, version byte _[12]; // flags, timedate, version
LE32 name; LE32 name;
+166 -176
View File
@@ -1,5 +1,5 @@
/* amd64-linux.elf-entry.h /* amd64-linux.elf-entry.h
created from amd64-linux.elf-entry.bin, 8642 (0x21c2) bytes created from amd64-linux.elf-entry.bin, 8491 (0x212b) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -32,14 +32,14 @@
/* clang-format off */ /* clang-format off */
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 8642 #define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 8491
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xe0c0f05a #define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0x9818cbfc
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0xf4a6eac1 #define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0x52206ce4
unsigned char stub_amd64_linux_elf_entry[8642] = { unsigned char stub_amd64_linux_elf_entry[8491] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,168, 24, 0, 0, 0, 0, 0, 0, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,152, 24, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
/* 0x0040 */ 80, 82,232, 0, 0, 0, 0, 85, 83, 81, 82, 72, 1,254, 86, 72, /* 0x0040 */ 80, 82,232, 0, 0, 0, 0, 85, 83, 81, 82, 72, 1,254, 86, 72,
/* 0x0050 */ 41,254, 72,137,254, 72,137,215, 49,219, 49,201, 72,131,205,255, /* 0x0050 */ 41,254, 72,137,254, 72,137,215, 49,219, 49,201, 72,131,205,255,
@@ -407,175 +407,165 @@ unsigned char stub_amd64_linux_elf_entry[8642] = {
/* 0x16f0 */ 65, 92, 65, 93, 65, 94, 65, 95, 72,139,117,248, 72,139,125, 16, /* 0x16f0 */ 65, 92, 65, 93, 65, 94, 65, 95, 72,139,117,248, 72,139,125, 16,
/* 0x1700 */ 139, 75, 4, 72, 1,206,139, 19, 72, 1,215,201,235, 2, 87, 94, /* 0x1700 */ 139, 75, 4, 72, 1,206,139, 19, 72, 1,215,201,235, 2, 87, 94,
/* 0x1710 */ 89, 72,137,240, 72, 41,200, 90, 72, 41,215, 89,137, 57, 91, 93, /* 0x1710 */ 89, 72,137,240, 72, 41,200, 90, 72, 41,215, 89,137, 57, 91, 93,
/* 0x1720 */ 195,104, 30, 0, 0, 0, 90,232, 0, 0, 0, 0, 80, 82, 79, 84, /* 0x1720 */ 195,104, 30, 0, 0, 0, 90,232, 30, 0, 0, 0, 80, 82, 79, 84,
/* 0x1730 */ 95, 69, 88, 69, 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, /* 0x1730 */ 95, 69, 88, 69, 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69,
/* 0x1740 */ 32,102, 97,105,108,101,100, 46, 10, 0,106, 14, 90, 87, 94,235, /* 0x1740 */ 32,102, 97,105,108,101,100, 46, 10, 0, 94,106, 2, 95,106, 1,
/* 0x1750 */ 1, 94,106, 2, 95,106, 1, 88, 15, 5,106,127, 95,106, 60, 88, /* 0x1750 */ 88, 15, 5,106,127, 95,106, 60, 88, 15, 5, 95, 41,246,106, 2,
/* 0x1760 */ 15, 5, 95, 41,246,106, 2, 88, 15, 5,133,192,120,220, 80, 72, /* 0x1760 */ 88, 15, 5, 80, 72,141,183, 15, 0, 0, 0,173,131,224,254, 65,
/* 0x1770 */ 141,183, 15, 0, 0, 0,173,131,224,254, 65,137,198, 86, 91,139, /* 0x1770 */ 137,198, 86, 91,139, 22, 72,141,141,245,255,255,255, 68,139, 57,
/* 0x1780 */ 22, 72,141,141,245,255,255,255, 68,139, 57, 76, 41,249, 69, 41, /* 0x1780 */ 76, 41,249, 69, 41,247, 73, 1,206, 95, 82, 80, 87, 81, 77, 41,
/* 0x1790 */ 247, 73, 1,206, 95, 82, 80, 87, 81, 77, 41,201, 65,131,200,255, /* 0x1790 */ 201, 65,131,200,255,106, 34, 65, 90, 82, 94,106, 3, 90, 41,255,
/* 0x17a0 */ 106, 34, 65, 90, 82, 94,106, 3, 90, 41,255,106, 9, 88, 15, 5, /* 0x17a0 */ 106, 9, 88, 15, 5, 72,137, 68, 36, 16, 80, 90, 83, 94,173, 80,
/* 0x17b0 */ 72,137, 68, 36, 16, 80, 90, 83, 94,173, 80, 72,137,225, 73,137, /* 0x17b0 */ 72,137,225, 73,137,213,173, 80,173, 65,144, 72,137,247, 94,255,
/* 0x17c0 */ 213,173, 80,173, 65,144, 72,137,247, 94,255,213, 89, 72,139,116, /* 0x17c0 */ 213, 89, 72,139,116, 36, 24, 72,139,124, 36, 16,106, 5, 90,106,
/* 0x17d0 */ 36, 24, 72,139,124, 36, 16,106, 5, 90,106, 10, 88, 15, 5, 65, /* 0x17d0 */ 10, 88, 15, 5, 65,255,229, 93,232,126,255,255,255, 47,112,114,
/* 0x17e0 */ 255,229, 93,232,122,255,255,255, 47,112,114,111, 99, 47,115,101, /* 0x17e0 */ 111, 99, 47,115,101,108,102, 47,101,120,101, 0, 0, 0, 0, 0,
/* 0x17f0 */ 108,102, 47,101,120,101, 0, 0, 0, 0, 0,102,105,108,101, 32, /* 0x17f0 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 54,
/* 0x1800 */ 102,111,114,109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, 54, /* 0x1800 */ 52, 45,120, 56, 54, 45, 54, 52, 10, 10, 83,101, 99,116,105,111,
/* 0x1810 */ 45, 54, 52, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73, /* 0x1810 */ 110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32,
/* 0x1820 */ 100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1820 */ 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32,
/* 0x1830 */ 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, /* 0x1830 */ 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1840 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, /* 0x1840 */ 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1850 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70, /* 0x1850 */ 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,
/* 0x1860 */ 105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70, /* 0x1860 */ 103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76,
/* 0x1870 */ 108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x1870 */ 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 49, 50, 32,
/* 0x1880 */ 88, 32, 32, 32, 32, 32, 32, 48, 49, 50, 32, 32, 48, 32, 32, 48, /* 0x1880 */ 32, 48, 32, 32, 48, 32, 32, 48, 52, 48, 32, 32, 50, 42, 42, 48,
/* 0x1890 */ 32, 32, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1890 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 78,
/* 0x18a0 */ 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, 69, /* 0x18a0 */ 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 54, 54,
/* 0x18b0 */ 65, 68, 32, 32, 32, 32, 32, 32, 48, 54, 54, 32, 32, 48, 32, 32, /* 0x18b0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 53, 50, 32, 32, 50, 42, 42,
/* 0x18c0 */ 48, 32, 32, 48, 53, 50, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x18c0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32,
/* 0x18d0 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, /* 0x18d0 */ 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 98,
/* 0x18e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 98, 97, 32, 32, 48, 32, /* 0x18e0 */ 97, 32, 32, 48, 32, 32, 48, 32, 32, 48, 98, 56, 32, 32, 50, 42,
/* 0x18f0 */ 32, 48, 32, 32, 48, 98, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x18f0 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 51,
/* 0x1900 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 51, 32, 78, 82, 86, 50, /* 0x1900 */ 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48,
/* 0x1910 */ 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 97, 49, 32, 32, 48, /* 0x1910 */ 97, 49, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 55, 50, 32, 32,
/* 0x1920 */ 32, 32, 48, 32, 32, 48, 49, 55, 50, 32, 32, 50, 42, 42, 48, 32, /* 0x1920 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32,
/* 0x1930 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 52, 32, 78, 82, /* 0x1930 */ 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1940 */ 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 57, 51, 32, /* 0x1940 */ 32, 48, 57, 51, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50, 49, 51,
/* 0x1950 */ 32, 48, 32, 32, 48, 32, 32, 48, 50, 49, 51, 32, 32, 50, 42, 42, /* 0x1950 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
/* 0x1960 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 53, 32, /* 0x1960 */ 10, 32, 32, 53, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32,
/* 0x1970 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 54, /* 0x1970 */ 32, 32, 32, 48, 54, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50,
/* 0x1980 */ 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 50, 97, 54, 32, 32, 50, /* 0x1980 */ 97, 54, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1990 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, /* 0x1990 */ 84, 83, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49,
/* 0x19a0 */ 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, /* 0x19a0 */ 48, 32, 32, 32, 32, 48, 57,102, 55, 32, 32, 48, 32, 32, 48, 32,
/* 0x19b0 */ 48, 57,102, 55, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 48, 97, /* 0x19b0 */ 32, 48, 51, 48, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x19c0 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x19c0 */ 84, 69, 78, 84, 83, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68,
/* 0x19d0 */ 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, /* 0x19d0 */ 69, 67, 50, 48, 32, 32, 32, 32, 48, 57,102, 55, 32, 32, 48, 32,
/* 0x19e0 */ 32, 32, 32, 48, 57,102, 55, 32, 32, 48, 32, 32, 48, 32, 32, 48, /* 0x19e0 */ 32, 48, 32, 32, 48,100, 48, 49, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x19f0 */ 100, 48, 49, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x19f0 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 56, 32, 76, 90, 77,
/* 0x1a00 */ 78, 84, 83, 10, 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1a00 */ 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 49, 56, 32, 32,
/* 0x1a10 */ 51, 48, 32, 32, 32, 32, 48, 49, 56, 32, 32, 48, 32, 32, 48, 32, /* 0x1a10 */ 48, 32, 32, 48, 32, 32, 48, 49, 54,102, 56, 32, 32, 50, 42, 42,
/* 0x1a20 */ 32, 48, 49, 54,102, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1a20 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 57, 32,
/* 0x1a30 */ 78, 84, 69, 78, 84, 83, 10, 32, 32, 57, 32, 78, 82, 86, 95, 84, /* 0x1a30 */ 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 32,
/* 0x1a40 */ 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 32, 32, 48, 32, 32, 48, /* 0x1a40 */ 32, 48, 32, 32, 48, 32, 32, 48, 49, 55, 49, 48, 32, 32, 50, 42,
/* 0x1a50 */ 32, 32, 48, 49, 55, 49, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1a50 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 48,
/* 0x1a60 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 48, 32, 69, 76, 70, 77, /* 0x1a60 */ 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48,
/* 0x1a70 */ 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 51, 97, 32, 32, 48, /* 0x1a70 */ 52, 98, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 55, 49, 48, 32,
/* 0x1a80 */ 32, 32, 48, 32, 32, 48, 49, 55, 49, 48, 32, 32, 50, 42, 42, 48, /* 0x1a80 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
/* 0x1a90 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 49, 32, 69, /* 0x1a90 */ 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32,
/* 0x1aa0 */ 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 98, 49, /* 0x1aa0 */ 32, 32, 48, 57, 53, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 55,
/* 0x1ab0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 55, 52, 97, 32, 32, 50, /* 0x1ab0 */ 53, 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1ac0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, /* 0x1ac0 */ 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58,
/* 0x1ad0 */ 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, /* 0x1ad0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ae0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1ae0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69,
/* 0x1af0 */ 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 48, 32, /* 0x1af0 */ 65, 68, 32, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48,
/* 0x1b00 */ 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1b00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x1b10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1b10 */ 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51,
/* 0x1b20 */ 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 48, 32, 76, /* 0x1b20 */ 48, 32, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48,
/* 0x1b30 */ 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, /* 0x1b30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1b40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1b40 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x1b50 */ 100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 48, 32, 69, 76, /* 0x1b50 */ 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48,
/* 0x1b60 */ 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b60 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x1b70 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x1b70 */ 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32,
/* 0x1b80 */ 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, /* 0x1b80 */ 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b90 */ 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
/* 0x1ba0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, /* 0x1ba0 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70,
/* 0x1bb0 */ 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x1bb0 */ 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bc0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1bc0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78,
/* 0x1bd0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 32, /* 0x1bd0 */ 82, 86, 50, 69, 32, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48,
/* 0x1be0 */ 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1be0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x1bf0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1bf0 */ 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 32, 48, 32, 78, 82,
/* 0x1c00 */ 32, 78, 82, 86, 50, 68, 32, 48, 32, 78, 82, 86, 50, 68, 10, 48, /* 0x1c00 */ 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1c10 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86,
/* 0x1c20 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 32, 48, 32, /* 0x1c20 */ 50, 66, 32, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48,
/* 0x1c30 */ 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1c30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
/* 0x1c40 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, /* 0x1c40 */ 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 48,
/* 0x1c50 */ 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 48, 32, 76, 90, 77, 65, /* 0x1c50 */ 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48,
/* 0x1c60 */ 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1c60 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x1c70 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x1c70 */ 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32,
/* 0x1c80 */ 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 48, 32, 76, 90, 77, /* 0x1c80 */ 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48,
/* 0x1c90 */ 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1c90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x1ca0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1ca0 */ 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48,
/* 0x1cb0 */ 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 48, 32, 76, 90, /* 0x1cb0 */ 32, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48,
/* 0x1cc0 */ 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1cc0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x1cd0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1cd0 */ 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32,
/* 0x1ce0 */ 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 48, 32, 78, 82, 86, /* 0x1ce0 */ 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48,
/* 0x1cf0 */ 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1cf0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32,
/* 0x1d00 */ 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, /* 0x1d00 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,
/* 0x1d10 */ 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,115,116, 97,114,116, /* 0x1d10 */ 115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d20 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d20 */ 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42,
/* 0x1d30 */ 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, /* 0x1d30 */ 85, 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10,
/* 0x1d40 */ 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, /* 0x1d40 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
/* 0x1d50 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, /* 0x1d50 */ 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88,
/* 0x1d60 */ 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, /* 0x1d60 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32,
/* 0x1d70 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, /* 0x1d70 */ 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1d80 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1d80 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48,
/* 0x1d90 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 32, 82, 95, 88,
/* 0x1da0 */ 48, 48, 48, 48, 48, 48, 51, 32, 82, 95, 88, 56, 54, 95, 54, 52, /* 0x1da0 */ 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69,
/* 0x1db0 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, /* 0x1db0 */ 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48,
/* 0x1dc0 */ 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1dc0 */ 48, 48, 48, 48, 48, 48, 48, 48, 55, 56, 10, 10, 82, 69, 76, 79,
/* 0x1dd0 */ 48, 48, 48, 57, 52, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x1dd0 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0x1de0 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, /* 0x1de0 */ 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83,
/* 0x1df0 */ 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x1df0 */ 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80,
/* 0x1e00 */ 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x1e00 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86,
/* 0x1e10 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, /* 0x1e10 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 97,102, /* 0x1e20 */ 48, 48, 48, 97,102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80,
/* 0x1e30 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, /* 0x1e30 */ 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68,
/* 0x1e40 */ 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, 48, /* 0x1e40 */ 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, /* 0x1e50 */ 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e60 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 99, 32, /* 0x1e60 */ 48, 48, 53, 99, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67,
/* 0x1e70 */ 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, /* 0x1e70 */ 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43,
/* 0x1e80 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,102, /* 0x1e80 */ 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,102,
/* 0x1e90 */ 102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, /* 0x1e90 */ 102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
/* 0x1ea0 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x1ea0 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50,
/* 0x1eb0 */ 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, /* 0x1eb0 */ 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32,
/* 0x1ec0 */ 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1ec0 */ 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32,
/* 0x1ed0 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1ed0 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48,
/* 0x1ee0 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ee0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 57, 54, 32, 82, 95,
/* 0x1ef0 */ 48, 48, 48, 48, 48, 48, 57, 54, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x1ef0 */ 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
/* 0x1f00 */ 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, /* 0x1f00 */ 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48, 48,
/* 0x1f10 */ 69, 65, 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48, 48,
/* 0x1f20 */ 48, 48, 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 99, 32, 82, 95, 88,
/* 0x1f30 */ 48, 48, 48, 48, 48, 53, 99, 32, 82, 95, 88, 56, 54, 95, 54, 52, /* 0x1f30 */ 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69,
/* 0x1f40 */ 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, /* 0x1f40 */ 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,102,102,102,102,
/* 0x1f50 */ 78, 89, 43, 48,120,102,102,102,102,102,102,102,102,102,102,102, /* 0x1f50 */ 102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79,
/* 0x1f60 */ 102,102,102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x1f60 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0x1f70 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, /* 0x1f70 */ 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83,
/* 0x1f80 */ 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x1f80 */ 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80,
/* 0x1f90 */ 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x1f90 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86,
/* 0x1fa0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, /* 0x1fa0 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1fb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 98, /* 0x1fb0 */ 48, 48, 48, 56, 98, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80,
/* 0x1fc0 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, /* 0x1fc0 */ 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68,
/* 0x1fd0 */ 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, 48, /* 0x1fd0 */ 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1fe0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, /* 0x1fe0 */ 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ff0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 51, 32, /* 0x1ff0 */ 48, 48, 53, 51, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67,
/* 0x2000 */ 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, /* 0x2000 */ 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43,
/* 0x2010 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,102, /* 0x2010 */ 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,102,
/* 0x2020 */ 102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, /* 0x2020 */ 102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
/* 0x2030 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x2030 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65,
/* 0x2040 */ 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x2040 */ 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
/* 0x2050 */ 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, /* 0x2050 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32,
/* 0x2060 */ 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x2060 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85,
/* 0x2070 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, /* 0x2070 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2080 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 32, 82, 95, /* 0x2080 */ 48, 54, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50,
/* 0x2090 */ 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, /* 0x2090 */ 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43,
/* 0x20a0 */ 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, /* 0x20a0 */ 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 50, 10, 10, 82, /* 0x20b0 */ 49, 50, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
/* 0x20c0 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x20c0 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77,
/* 0x20d0 */ 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, 93, /* 0x20d0 */ 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
/* 0x20e0 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x20e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
/* 0x20f0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x20f0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
/* 0x2100 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, /* 0x2100 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 57, 49,
/* 0x2110 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95, 88, 56, /* 0x2110 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32,
/* 0x2120 */ 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, /* 0x2120 */ 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, 10
/* 0x2130 */ 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48,
/* 0x2140 */ 48, 48, 48, 48, 48, 48, 48, 48, 51, 10, 10, 82, 69, 76, 79, 67,
/* 0x2150 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79,
/* 0x2160 */ 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70,
/* 0x2170 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84,
/* 0x2180 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2190 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21a0 */ 48, 48, 48, 48, 48, 97,100, 32, 82, 95, 88, 56, 54, 95, 54, 52,
/* 0x21b0 */ 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 79, 95, 66, 73, 78, 70,
/* 0x21c0 */ 79, 10
}; };
+182 -182
View File
@@ -1,5 +1,5 @@
/* amd64-linux.elf-fold.h /* amd64-linux.elf-fold.h
created from amd64-linux.elf-fold.bin, 3273 (0xcc9) bytes created from amd64-linux.elf-fold.bin, 3277 (0xccd) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -32,20 +32,20 @@
/* clang-format off */ /* clang-format off */
#define STUB_AMD64_LINUX_ELF_FOLD_SIZE 3273 #define STUB_AMD64_LINUX_ELF_FOLD_SIZE 3277
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0x43022d54 #define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0xc4532f57
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0x1cba66e6 #define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0x7738b350
unsigned char stub_amd64_linux_elf_fold[3273] = { unsigned char stub_amd64_linux_elf_fold[3277] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 62, 0, 1, 0, 0, 0,188, 0, 16, 0, 0, 0, 0, 0, /* 0x0010 */ 2, 0, 62, 0, 1, 0, 0, 0,188, 0, 16, 0, 0, 0, 0, 0,
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, /* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
/* 0x0060 */ 201, 12, 0, 0, 0, 0, 0, 0,201, 12, 0, 0, 0, 0, 0, 0, /* 0x0060 */ 205, 12, 0, 0, 0, 0, 0, 0,205, 12, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x0070 */ 0, 0, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 201, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0080 */ 205, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0090 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0090 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, /* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 74, 0, 0, /* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 74, 0, 0,
@@ -66,180 +66,180 @@ unsigned char stub_amd64_linux_elf_fold[3273] = {
/* 0x01a0 */ 239, 8, 73,141,119,248, 72,193,233, 3,243, 72,165, 72,141,103, /* 0x01a0 */ 239, 8, 73,141,119,248, 72,193,233, 3,243, 72,165, 72,141,103,
/* 0x01b0 */ 8,252, 75,141, 12, 38,139, 67,252,131,224, 1, 72, 1,193, 65, /* 0x01b0 */ 8,252, 75,141, 12, 38,139, 67,252,131,224, 1, 72, 1,193, 65,
/* 0x01c0 */ 89, 94, 95, 88, 72,129,236, 0, 8, 0, 0, 72,137,226, 80, 73, /* 0x01c0 */ 89, 94, 95, 88, 72,129,236, 0, 8, 0, 0, 72,137,226, 80, 73,
/* 0x01d0 */ 137,197, 73,137,232,232, 72, 6, 0, 0, 72,129,196, 8, 8, 0, /* 0x01d0 */ 137,197, 73,137,232,232, 76, 6, 0, 0, 72,129,196, 8, 8, 0,
/* 0x01e0 */ 0, 72,137, 68, 36, 32, 91, 73,139,181,160, 0, 0, 0, 76,137, /* 0x01e0 */ 0, 72,137, 68, 36, 32, 91, 73,139,181,160, 0, 0, 0, 76,137,
/* 0x01f0 */ 239,232, 93, 0, 0, 0, 76,137,239,232, 97, 0, 0, 0, 77, 41, /* 0x01f0 */ 239,232, 97, 0, 0, 0, 76,137,239,232,101, 0, 0, 0,133,219,
/* 0x0200 */ 201, 65,137,216,106, 2, 89,106, 1, 90,190, 0, 16, 0, 0, 41, /* 0x0200 */ 120, 31, 77, 41,201, 65,137,216,106, 2, 89,106, 1, 90,190, 0,
/* 0x0210 */ 255,232, 16, 0, 0, 0,137,223,232, 58, 0, 0, 0, 95, 94,106, /* 0x0210 */ 16, 0, 0, 41,255,232, 16, 0, 0, 0,137,223,232, 58, 0, 0,
/* 0x0220 */ 11, 88, 65,255,102,248,176, 9, 73,137,202, 15,182,192, 15, 5, /* 0x0220 */ 0, 95, 94,106, 11, 88, 65,255,102,248,176, 9, 73,137,202, 15,
/* 0x0230 */ 72, 61, 0,240,255,255,114, 4, 72,131,200,255,195,185,255, 15, /* 0x0230 */ 182,192, 15, 5, 72, 61, 0,240,255,255,114, 4, 72,131,200,255,
/* 0x0240 */ 0, 0, 33,249, 72, 41,207, 72, 1,206,233, 20, 0, 0, 0,176, /* 0x0240 */ 195,185,255, 15, 0, 0, 33,249, 72, 41,207, 72, 1,206,233, 20,
/* 0x0250 */ 60,235, 2,176, 12,235, 2,176, 3,235, 2,176, 2,235, 2,176, /* 0x0250 */ 0, 0, 0,176, 60,235, 2,176, 12,235, 2,176, 3,235, 2,176,
/* 0x0260 */ 11,235, 2,176, 10,235, 2,176, 1,235, 2,176, 0,235,188, 0, /* 0x0260 */ 2,235, 2,176, 11,235, 2,176, 10,235, 2,176, 1,235, 2,176,
/* 0x0270 */ 81, 72, 57, 23, 76,139, 71, 8, 72,141, 74,255,115, 10,191,127, /* 0x0270 */ 0,235,188, 0, 81, 72, 57, 23, 76,139, 71, 8, 72,141, 74,255,
/* 0x0280 */ 0, 0, 0,232,199,255,255,255, 72,131,249,255,116, 17, 65, 15, /* 0x0280 */ 115, 10,191,127, 0, 0, 0,232,199,255,255,255, 72,131,249,255,
/* 0x0290 */ 182, 0, 72,255,201, 73,255,192,136, 6, 72,255,198,235,233, 72, /* 0x0290 */ 116, 17, 65, 15,182, 0, 72,255,201, 73,255,192,136, 6, 72,255,
/* 0x02a0 */ 1, 87, 8, 72, 41, 23, 88,195, 65, 85, 73,137,213, 65, 84, 73, /* 0x02a0 */ 198,235,233, 72, 1, 87, 8, 72, 41, 23, 88,195, 65, 85, 73,137,
/* 0x02b0 */ 137,204, 85, 72,137,253, 83, 72,137,243, 72,131,236, 40, 72,131, /* 0x02b0 */ 213, 65, 84, 73,137,204, 85, 72,137,253, 83, 72,137,243, 72,131,
/* 0x02c0 */ 62, 0, 15,132,230, 0, 0, 0, 72,141,116, 36, 16,186, 12, 0, /* 0x02c0 */ 236, 40, 72,131, 62, 0, 15,132,230, 0, 0, 0, 72,141,116, 36,
/* 0x02d0 */ 0, 0, 72,137,239,232,150,255,255,255,139, 68, 36, 16,139,116, /* 0x02d0 */ 16,186, 12, 0, 0, 0, 72,137,239,232,150,255,255,255,139, 68,
/* 0x02e0 */ 36, 20,133,192,117, 21,129,254, 85, 80, 88, 33,117, 17, 72,131, /* 0x02e0 */ 36, 16,139,116, 36, 20,133,192,117, 21,129,254, 85, 80, 88, 33,
/* 0x02f0 */ 125, 0, 0, 15,132,181, 0, 0, 0,235, 4,133,246,117, 10,191, /* 0x02f0 */ 117, 17, 72,131,125, 0, 0, 15,132,181, 0, 0, 0,235, 4,133,
/* 0x0300 */ 127, 0, 0, 0,232, 70,255,255,255, 57,198,119,242,137,194, 72, /* 0x0300 */ 246,117, 10,191,127, 0, 0, 0,232, 70,255,255,255, 57,198,119,
/* 0x0310 */ 59, 19,119,235, 57,198, 72,139, 67, 8,115,108, 72,137, 84, 36, /* 0x0310 */ 242,137,194, 72, 59, 19,119,235, 57,198, 72,139, 67, 8,115,108,
/* 0x0320 */ 8, 72,139,125, 8, 72,141, 76, 36, 8, 68,139, 68, 36, 24, 72, /* 0x0320 */ 72,137, 84, 36, 8, 72,139,125, 8, 72,141, 76, 36, 8, 68,139,
/* 0x0330 */ 137,194, 65,255,213,133,192,117,198,139, 68, 36, 16, 72,139,116, /* 0x0330 */ 68, 36, 24, 72,137,194, 65,255,213,133,192,117,198,139, 68, 36,
/* 0x0340 */ 36, 8, 72, 57,198,117,184, 15,182, 76, 36, 25,132,201, 15,149, /* 0x0340 */ 16, 72,139,116, 36, 8, 72, 57,198,117,184, 15,182, 76, 36, 25,
/* 0x0350 */ 194, 49,192, 77,133,228, 15,149,192,133,194,116, 29, 72,129,254, /* 0x0350 */ 132,201, 15,149,194, 49,192, 77,133,228, 15,149,192,133,194,116,
/* 0x0360 */ 0, 2, 0, 0,119, 5, 72, 57, 51,117, 15, 15,182, 84, 36, 26, /* 0x0360 */ 29, 72,129,254, 0, 2, 0, 0,119, 5, 72, 57, 51,117, 15, 15,
/* 0x0370 */ 15,182,201, 72,139,123, 8, 65,255,212,139, 68, 36, 20, 72, 1, /* 0x0370 */ 182, 84, 36, 26, 15,182,201, 72,139,123, 8, 65,255,212,139, 68,
/* 0x0380 */ 69, 8, 72, 41, 69, 0,235, 13,137,242, 72,137,239, 72,137,198, /* 0x0380 */ 36, 20, 72, 1, 69, 8, 72, 41, 69, 0,235, 13,137,242, 72,137,
/* 0x0390 */ 232,219,254,255,255,139, 84, 36, 16, 72,139, 3, 72, 1, 83, 8, /* 0x0390 */ 239, 72,137,198,232,219,254,255,255,139, 84, 36, 16, 72,139, 3,
/* 0x03a0 */ 72, 41,208, 72,133,192, 72,137, 3,233, 20,255,255,255, 72,131, /* 0x03a0 */ 72, 1, 83, 8, 72, 41,208, 72,133,192, 72,137, 3,233, 20,255,
/* 0x03b0 */ 196, 40, 91, 93, 65, 92, 65, 93,195, 72,133,255, 73,137,209,116, /* 0x03b0 */ 255,255, 72,131,196, 40, 91, 93, 65, 92, 65, 93,195, 72,133,255,
/* 0x03c0 */ 54, 64,246,199, 1,117, 48, 72,139, 15, 65,137,240, 76, 57,193, /* 0x03c0 */ 73,137,209,116, 54, 64,246,199, 1,117, 48, 72,139, 15, 65,137,
/* 0x03d0 */ 116, 18, 72,131,249, 1, 15,148,194, 49,192,133,246, 15,149,192, /* 0x03d0 */ 240, 76, 57,193,116, 18, 72,131,249, 1, 15,148,194, 49,192,133,
/* 0x03e0 */ 133,194,116, 8, 76,137, 7, 76,137, 79, 8,195, 72,133,201,116, /* 0x03e0 */ 246, 15,149,192,133,194,116, 8, 76,137, 7, 76,137, 79, 8,195,
/* 0x03f0 */ 6, 72,131,199, 16,235,208,195, 65, 87, 73,137,255, 65, 86, 65, /* 0x03f0 */ 72,133,201,116, 6, 72,131,199, 16,235,208,195, 65, 87, 73,137,
/* 0x0400 */ 85, 65, 84, 73,137,252, 85, 83, 72,131,236,104, 76, 3,103, 32, /* 0x0400 */ 255, 65, 86, 65, 85, 65, 84, 73,137,252, 85, 83, 72,131,236,104,
/* 0x0410 */ 72,133,246, 72,139,132, 36,160, 0, 0, 0,137, 84, 36, 60, 72, /* 0x0410 */ 76, 3,103, 32, 72,133,246, 72,139,132, 36,160, 0, 0, 0,137,
/* 0x0420 */ 137,116, 36, 64, 72,137, 76, 36, 48, 76,137, 68, 36, 40, 76,137, /* 0x0420 */ 84, 36, 60, 72,137,116, 36, 64, 72,137, 76, 36, 48, 76,137, 68,
/* 0x0430 */ 76, 36, 32, 72,139, 56, 65, 15,183, 87, 16,116, 76, 72,139, 71, /* 0x0430 */ 36, 40, 76,137, 76, 36, 32, 72,139, 56, 65, 15,183, 87, 16,116,
/* 0x0440 */ 32, 72, 1,248, 72, 43,120, 72,102,131,250, 2,117, 4, 72,139, /* 0x0440 */ 76, 72,139, 71, 32, 72, 1,248, 72, 43,120, 72,102,131,250, 2,
/* 0x0450 */ 120, 16, 72,139,112, 40, 69, 49,201, 65,131,200,255, 49,210,185, /* 0x0450 */ 117, 4, 72,139,120, 16, 72,139,112, 40, 69, 49,201, 65,131,200,
/* 0x0460 */ 50, 0, 0, 0, 72,141, 4, 62, 72,137, 68, 36, 72,232,180,253, /* 0x0460 */ 255, 49,210,185, 50, 0, 0, 0, 72,141, 4, 62, 72,137, 68, 36,
/* 0x0470 */ 255,255,102, 65,131,127, 16, 2, 73,137,198, 15,133,172, 0, 0, /* 0x0470 */ 72,232,180,253,255,255,102, 65,131,127, 16, 2, 73,137,198, 15,
/* 0x0480 */ 0, 69, 49,246,233,164, 0, 0, 0,102,131,250, 3, 65, 15,183, /* 0x0480 */ 133,172, 0, 0, 0, 69, 49,246,233,164, 0, 0, 0,102,131,250,
/* 0x0490 */ 87, 56,185, 16, 0, 0, 0,184, 0, 0, 0, 0, 73,137,248, 76, /* 0x0490 */ 3, 65, 15,183, 87, 56,185, 16, 0, 0, 0,184, 0, 0, 0, 0,
/* 0x04a0 */ 137,230, 15, 68,200, 72,131,205,255, 49,219, 49,255,131,193, 34, /* 0x04a0 */ 73,137,248, 76,137,230, 15, 68,200, 72,131,205,255, 49,219, 49,
/* 0x04b0 */ 255,202,120, 33,131, 62, 1,117, 22, 72,139, 70, 16, 72, 57,232, /* 0x04b0 */ 255,131,193, 34,255,202,120, 33,131, 62, 1,117, 22, 72,139, 70,
/* 0x04c0 */ 72, 15, 66,232, 72, 3, 70, 40, 72, 57,195, 72, 15, 66,216, 72, /* 0x04c0 */ 16, 72, 57,232, 72, 15, 66,232, 72, 3, 70, 40, 72, 57,195, 72,
/* 0x04d0 */ 131,198, 56,235,219, 72,129,229, 0,240,255,255, 72, 41,235, 72, /* 0x04d0 */ 15, 66,216, 72,131,198, 56,235,219, 72,129,229, 0,240,255,255,
/* 0x04e0 */ 129,195,255, 15, 0, 0, 72,129,227, 0,240,255,255,246,193, 16, /* 0x04e0 */ 72, 41,235, 72,129,195,255, 15, 0, 0, 72,129,227, 0,240,255,
/* 0x04f0 */ 116, 5, 72,137,239,235, 19, 72,133,237,117, 14,137,200, 76,137, /* 0x04f0 */ 255,246,193, 16,116, 5, 72,137,239,235, 19, 72,133,237,117, 14,
/* 0x0500 */ 199,131,200, 16, 77,133,192, 15, 69,200, 69, 49,201, 65,131,200, /* 0x0500 */ 137,200, 76,137,199,131,200, 16, 77,133,192, 15, 69,200, 69, 49,
/* 0x0510 */ 255, 49,210, 72,137,222,232, 11,253,255,255, 72,137,199, 72,141, /* 0x0510 */ 201, 65,131,200,255, 49,210, 72,137,222,232, 11,253,255,255, 72,
/* 0x0520 */ 4, 3, 73,137,254, 72,137, 68, 36, 72, 73, 41,238,102, 65,131, /* 0x0520 */ 137,199, 72,141, 4, 3, 73,137,254, 72,137, 68, 36, 72, 73, 41,
/* 0x0530 */ 127, 56, 0,199, 68, 36, 28, 0, 0, 0, 0, 15,132,192, 2, 0, /* 0x0530 */ 238,102, 65,131,127, 56, 0,199, 68, 36, 28, 0, 0, 0, 0, 15,
/* 0x0540 */ 0, 72,131,124, 36, 64, 0,116, 35, 65,131, 60, 36, 6,117, 28, /* 0x0540 */ 132,192, 2, 0, 0, 72,131,124, 36, 64, 0,116, 35, 65,131, 60,
/* 0x0550 */ 73,139, 84, 36, 16, 72,139,124, 36, 48,190, 3, 0, 0, 0, 76, /* 0x0550 */ 36, 6,117, 28, 73,139, 84, 36, 16, 72,139,124, 36, 48,190, 3,
/* 0x0560 */ 1,242,232, 82,254,255,255,233,126, 2, 0, 0, 65,131, 60, 36, /* 0x0560 */ 0, 0, 0, 76, 1,242,232, 82,254,255,255,233,126, 2, 0, 0,
/* 0x0570 */ 1, 15,133,115, 2, 0, 0, 73,131,124, 36, 40, 0, 15,132,103, /* 0x0570 */ 65,131, 60, 36, 1, 15,133,115, 2, 0, 0, 73,131,124, 36, 40,
/* 0x0580 */ 2, 0, 0, 65,139, 76, 36, 4,199, 68, 36, 24, 64, 98, 81,115, /* 0x0580 */ 0, 15,132,103, 2, 0, 0, 65,139, 76, 36, 4,199, 68, 36, 24,
/* 0x0590 */ 131,225, 7,193,225, 2,211,108, 36, 24,131,100, 36, 24, 7, 72, /* 0x0590 */ 64, 98, 81,115,131,225, 7,193,225, 2,211,108, 36, 24,131,100,
/* 0x05a0 */ 131,124, 36, 64, 0,116, 75, 73,131,124, 36, 8, 0,117, 67, 73, /* 0x05a0 */ 36, 24, 7, 72,131,124, 36, 64, 0,116, 75, 73,131,124, 36, 8,
/* 0x05b0 */ 139, 84, 36, 16, 72,139,124, 36, 48,190, 3, 0, 0, 0, 76, 1, /* 0x05b0 */ 0,117, 67, 73,139, 84, 36, 16, 72,139,124, 36, 48,190, 3, 0,
/* 0x05c0 */ 242, 73, 3, 87, 32,232,239,253,255,255, 73, 15,183, 87, 56, 72, /* 0x05c0 */ 0, 0, 76, 1,242, 73, 3, 87, 32,232,239,253,255,255, 73, 15,
/* 0x05d0 */ 139,124, 36, 48,190, 5, 0, 0, 0,232,219,253,255,255, 73, 15, /* 0x05d0 */ 183, 87, 56, 72,139,124, 36, 48,190, 5, 0, 0, 0,232,219,253,
/* 0x05e0 */ 183, 87, 54, 72,139,124, 36, 48,190, 4, 0, 0, 0,232,199,253, /* 0x05e0 */ 255,255, 73, 15,183, 87, 54, 72,139,124, 36, 48,190, 4, 0, 0,
/* 0x05f0 */ 255,255, 73,139,124, 36, 16, 73,139, 68, 36, 40,185, 50, 0, 0, /* 0x05f0 */ 0,232,199,253,255,255, 73,139,124, 36, 16, 73,139, 68, 36, 40,
/* 0x0600 */ 0, 73,139,116, 36, 32, 76, 1,247, 72, 1,248, 72,137,250, 72, /* 0x0600 */ 185, 50, 0, 0, 0, 73,139,116, 36, 32, 76, 1,247, 72, 1,248,
/* 0x0610 */ 137,253,129,226,255, 15, 0, 0, 72,137, 68, 36, 8, 72,137,240, /* 0x0610 */ 72,137,250, 72,137,253,129,226,255, 15, 0, 0, 72,137, 68, 36,
/* 0x0620 */ 72, 1,208, 72, 41,213, 72,137,116, 36, 80, 72,137, 68, 36, 16, /* 0x0620 */ 8, 72,137,240, 72, 1,208, 72, 41,213, 72,137,116, 36, 80, 72,
/* 0x0630 */ 139, 68, 36, 24, 76,141, 44, 55,139,116, 36, 24, 72,137,124, 36, /* 0x0630 */ 137, 68, 36, 16,139, 68, 36, 24, 76,141, 44, 55,139,116, 36, 24,
/* 0x0640 */ 88,131,200, 2, 72,131,124, 36, 64, 0, 15, 69,240,137,240,131, /* 0x0640 */ 72,137,124, 36, 88,131,200, 2, 72,131,124, 36, 64, 0, 15, 69,
/* 0x0650 */ 224,251, 72,131,124, 36, 64, 0, 15, 69,240, 73,139, 68, 36, 8, /* 0x0650 */ 240,137,240,131,224,251, 72,131,124, 36, 64, 0, 15, 69,240, 73,
/* 0x0660 */ 72, 41,208,131,202,255, 72,131,124, 36, 64, 0,117, 6,139, 84, /* 0x0660 */ 139, 68, 36, 8, 72, 41,208,131,202,255, 72,131,124, 36, 64, 0,
/* 0x0670 */ 36, 60,177, 18, 65,137,208,137,242, 72,139,116, 36, 16, 73,137, /* 0x0670 */ 117, 6,139, 84, 36, 60,177, 18, 65,137,208,137,242, 72,139,116,
/* 0x0680 */ 193, 72,137,239,232,157,251,255,255, 72, 57,197, 15,133, 32, 1, /* 0x0680 */ 36, 16, 73,137,193, 72,137,239,232,157,251,255,255, 72, 57,197,
/* 0x0690 */ 0, 0, 72,131,124, 36, 64, 0,116, 25, 72,139, 76, 36, 32, 72, /* 0x0690 */ 15,133, 32, 1, 0, 0, 72,131,124, 36, 64, 0,116, 25, 72,139,
/* 0x06a0 */ 139, 84, 36, 40, 72,141,116, 36, 80, 72,139,124, 36, 64,232,245, /* 0x06a0 */ 76, 36, 32, 72,139, 84, 36, 40, 72,141,116, 36, 80, 72,139,124,
/* 0x06b0 */ 251,255,255,246, 68, 36, 24, 2,116, 22, 68,137,233, 76,137,239, /* 0x06b0 */ 36, 64,232,245,251,255,255,246, 68, 36, 24, 2,116, 22, 68,137,
/* 0x06c0 */ 49,192,247,217,252,129,225,255, 15, 0, 0,243,170, 73,137,253, /* 0x06c0 */ 233, 76,137,239, 49,192,247,217,252,129,225,255, 15, 0, 0,243,
/* 0x06d0 */ 72,131,124, 36, 64, 0, 15,132,224, 0, 0, 0,199, 68, 36, 4, /* 0x06d0 */ 170, 73,137,253, 72,131,124, 36, 64, 0, 15,132,224, 0, 0, 0,
/* 0x06e0 */ 0, 0, 0, 0, 72,184,255,255,255,255, 1, 0, 0, 0, 73, 35, /* 0x06e0 */ 199, 68, 36, 4, 0, 0, 0, 0, 72,184,255,255,255,255, 1, 0,
/* 0x06f0 */ 4, 36, 72,186, 1, 0, 0, 0, 1, 0, 0, 0, 72, 57,208, 15, /* 0x06f0 */ 0, 0, 73, 35, 4, 36, 72,186, 1, 0, 0, 0, 1, 0, 0, 0,
/* 0x0700 */ 133,152, 0, 0, 0, 73,139, 84, 36, 40, 73,139, 76, 36, 16, 73, /* 0x0700 */ 72, 57,208, 15,133,152, 0, 0, 0, 73,139, 84, 36, 40, 73,139,
/* 0x0710 */ 59, 84, 36, 32, 72,141, 4, 10, 74,141, 28, 48,117, 14,137,216, /* 0x0710 */ 76, 36, 16, 73, 59, 84, 36, 32, 72,141, 4, 10, 74,141, 28, 48,
/* 0x0720 */ 247,216, 37,255, 15, 0, 0,131,248, 3,119, 58, 73,131,124, 36, /* 0x0720 */ 117, 14,137,216,247,216, 37,255, 15, 0, 0,131,248, 3,119, 58,
/* 0x0730 */ 8, 0, 74,141, 92, 49, 12,116, 45, 69, 49,201, 65,131,200,255, /* 0x0730 */ 73,131,124, 36, 8, 0, 74,141, 92, 49, 12,116, 45, 69, 49,201,
/* 0x0740 */ 49,255,185, 34, 0, 0, 0,186, 3, 0, 0, 0,190, 0, 16, 0, /* 0x0740 */ 65,131,200,255, 49,255,185, 34, 0, 0, 0,186, 3, 0, 0, 0,
/* 0x0750 */ 0,199, 68, 36, 4, 1, 0, 0, 0,232,200,250,255,255, 72,133, /* 0x0750 */ 190, 0, 16, 0, 0,199, 68, 36, 4, 1, 0, 0, 0,232,200,250,
/* 0x0760 */ 192, 72,137,195,116, 55,131,124, 36, 4, 0,199, 3, 15, 5, 90, /* 0x0760 */ 255,255, 72,133,192, 72,137,195,116, 55,131,124, 36, 4, 0,199,
/* 0x0770 */ 195,116, 18,186, 5, 0, 0, 0,190, 4, 0, 0, 0, 72,137,223, /* 0x0770 */ 3, 15, 5, 90,195,116, 18,186, 5, 0, 0, 0,190, 4, 0, 0,
/* 0x0780 */ 232,184,250,255,255, 72,133,219,116, 19, 72,139,124, 36, 48, 72, /* 0x0780 */ 0, 72,137,223,232,184,250,255,255, 72,133,219,116, 19, 72,139,
/* 0x0790 */ 137,218, 49,246, 72,131,231,254,232, 28,252,255,255,139, 84, 36, /* 0x0790 */ 124, 36, 48, 72,137,218, 49,246, 72,131,231,254,232, 28,252,255,
/* 0x07a0 */ 24, 72,139,116, 36, 16, 72,137,239,232,143,250,255,255,133,192, /* 0x07a0 */ 255,139, 84, 36, 24, 72,139,116, 36, 16, 72,137,239,232,143,250,
/* 0x07b0 */ 116, 10,191,127, 0, 0, 0,232,147,250,255,255, 76, 59,108, 36, /* 0x07b0 */ 255,255,133,192,116, 10,191,127, 0, 0, 0,232,147,250,255,255,
/* 0x07c0 */ 8,115, 39, 76, 41,108, 36, 8,139, 84, 36, 24, 69, 49,201, 72, /* 0x07c0 */ 76, 59,108, 36, 8,115, 39, 76, 41,108, 36, 8,139, 84, 36, 24,
/* 0x07d0 */ 139,116, 36, 8, 65,131,200,255,185, 50, 0, 0, 0, 76,137,239, /* 0x07d0 */ 69, 49,201, 72,139,116, 36, 8, 65,131,200,255,185, 50, 0, 0,
/* 0x07e0 */ 232, 65,250,255,255, 73, 57,197,117,200,255, 68, 36, 28, 65, 15, /* 0x07e0 */ 0, 76,137,239,232, 65,250,255,255, 73, 57,197,117,200,255, 68,
/* 0x07f0 */ 183, 71, 56, 73,131,196, 56, 57, 68, 36, 28, 15,140, 64,253,255, /* 0x07f0 */ 36, 28, 65, 15,183, 71, 56, 73,131,196, 56, 57, 68, 36, 28, 15,
/* 0x0800 */ 255, 72,139,132, 36,160, 0, 0, 0, 76,137, 48, 77, 3,119, 24, /* 0x0800 */ 140, 64,253,255,255, 72,139,132, 36,160, 0, 0, 0, 76,137, 48,
/* 0x0810 */ 72,131,196,104, 91, 93, 65, 92, 65, 93, 76,137,240, 65, 94, 65, /* 0x0810 */ 77, 3,119, 24, 72,131,196,104, 91, 93, 65, 92, 65, 93, 76,137,
/* 0x0820 */ 95,195, 65, 87, 65, 86, 73,137,206, 49,201, 65, 85, 65, 84, 77, /* 0x0820 */ 240, 65, 94, 65, 95,195, 65, 87, 65, 86, 73,137,206, 49,201, 65,
/* 0x0830 */ 137,204, 85, 72,137,213, 76,141,109, 64, 83, 76,137,195, 72,131, /* 0x0830 */ 85, 65, 84, 77,137,204, 85, 72,137,213, 76,141,109, 64, 83, 76,
/* 0x0840 */ 236, 72,139, 7, 72,137,124, 36, 24, 72,137,124, 36, 40, 76,141, /* 0x0840 */ 137,195, 72,131,236, 72,139, 7, 72,137,124, 36, 24, 72,137,124,
/* 0x0850 */ 188, 36,128, 0, 0, 0, 72,137,116, 36, 32, 72,141,116, 36, 48, /* 0x0850 */ 36, 40, 76,141,188, 36,128, 0, 0, 0, 72,137,116, 36, 32, 72,
/* 0x0860 */ 72,137, 84, 36, 56, 76,137,194, 72,137, 68, 36, 48,139, 71, 4, /* 0x0860 */ 141,116, 36, 48, 72,137, 84, 36, 56, 76,137,194, 72,137, 68, 36,
/* 0x0870 */ 72,141,124, 36, 16, 72,131,192, 12, 72,137, 68, 36, 16,232, 37, /* 0x0870 */ 48,139, 71, 4, 72,141,124, 36, 16, 72,131,192, 12, 72,137, 68,
/* 0x0880 */ 250,255,255, 65, 83, 77,137,225, 49,210, 73,137,216, 76,137,241, /* 0x0880 */ 36, 16,232, 37,250,255,255, 65, 83, 77,137,225, 49,210, 73,137,
/* 0x0890 */ 72,137,239, 72,141,116, 36, 40, 65, 87,232, 89,251,255,255,190, /* 0x0890 */ 216, 76,137,241, 72,137,239, 72,141,116, 36, 40, 65, 87,232, 89,
/* 0x08a0 */ 9, 0, 0, 0, 72,137,194, 76,137,247, 73,137,196,232, 7,251, /* 0x08a0 */ 251,255,255,190, 9, 0, 0, 0, 72,137,194, 76,137,247, 73,137,
/* 0x08b0 */ 255,255, 65, 89, 65, 90,102,131,125, 56, 0,199, 68, 36, 12, 0, /* 0x08b0 */ 196,232, 7,251,255,255, 65, 89, 65, 90,102,131,125, 56, 0,199,
/* 0x08c0 */ 0, 0, 0, 15,132,143, 0, 0, 0, 65,131,125, 0, 3,117,114, /* 0x08c0 */ 68, 36, 12, 0, 0, 0, 0, 15,132,143, 0, 0, 0, 65,131,125,
/* 0x08d0 */ 73,139, 63, 73, 3,125, 16, 49,210, 49,246,232,123,249,255,255, /* 0x08d0 */ 0, 3,117,114, 73,139, 63, 73, 3,125, 16, 49,210, 49,246,232,
/* 0x08e0 */ 133,192,137,195,120, 23,186, 0, 4, 0, 0, 72,137,238,137,199, /* 0x08e0 */ 123,249,255,255,133,192,137,195,120, 23,186, 0, 4, 0, 0, 72,
/* 0x08f0 */ 232,118,249,255,255, 72, 61, 0, 4, 0, 0,116, 10,191,127, 0, /* 0x08f0 */ 137,238,137,199,232,118,249,255,255, 72, 61, 0, 4, 0, 0,116,
/* 0x0900 */ 0, 0,232, 72,249,255,255, 73,199, 7, 0, 0, 0, 0, 65, 80, /* 0x0900 */ 10,191,127, 0, 0, 0,232, 72,249,255,255, 73,199, 7, 0, 0,
/* 0x0910 */ 69, 49,201, 69, 49,192, 49,201, 65, 87,137,218, 49,246, 72,137, /* 0x0910 */ 0, 0, 65, 80, 69, 49,201, 69, 49,192, 49,201, 65, 87,137,218,
/* 0x0920 */ 239,232,210,250,255,255, 73,139, 23,190, 7, 0, 0, 0, 76,137, /* 0x0920 */ 49,246, 72,137,239,232,210,250,255,255, 73,139, 23,190, 7, 0,
/* 0x0930 */ 247, 73,137,196,232,128,250,255,255,137,223,232, 23,249,255,255, /* 0x0930 */ 0, 0, 76,137,247, 73,137,196,232,128,250,255,255,137,223,232,
/* 0x0940 */ 94, 95,255, 68, 36, 12, 15,183, 69, 56, 73,131,197, 56, 57, 68, /* 0x0940 */ 23,249,255,255, 94, 95,255, 68, 36, 12, 15,183, 69, 56, 73,131,
/* 0x0950 */ 36, 12, 15,130,113,255,255,255, 72,131,196, 72, 76,137,224, 91, /* 0x0950 */ 197, 56, 57, 68, 36, 12, 15,130,113,255,255,255, 72,131,196, 72,
/* 0x0960 */ 93, 65, 92, 65, 93, 65, 94, 65, 95,195, 0, 0, 85, 72,137,229, /* 0x0960 */ 76,137,224, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195, 0, 0,
/* 0x0970 */ 83, 82, 86, 87,232,101, 0, 0, 0, 91, 95, 94, 80, 15,182, 75, /* 0x0970 */ 85, 72,137,229, 83, 82, 86, 87,232,101, 0, 0, 0, 91, 95, 94,
/* 0x0980 */ 9,133,201,116, 11, 15,182, 83, 10,139, 54,232, 4, 0, 0, 0, /* 0x0980 */ 80, 15,182, 75, 9,133,201,116, 11, 15,182, 83, 10,139, 54,232,
/* 0x0990 */ 88, 91, 93,195,131,249, 73,117, 68, 83, 87, 72,141, 76, 55,253, /* 0x0990 */ 4, 0, 0, 0, 88, 91, 93,195,131,249, 73,117, 68, 83, 87, 72,
/* 0x09a0 */ 94, 86, 91,235, 47, 72, 57,206,115, 50, 86, 94,172, 60,128,114, /* 0x09a0 */ 141, 76, 55,253, 94, 86, 91,235, 47, 72, 57,206,115, 50, 86, 94,
/* 0x09b0 */ 10, 60,143,119, 6,128,126,254, 15,116, 6, 44,232, 60, 1,119, /* 0x09b0 */ 172, 60,128,114, 10, 60,143,119, 6,128,126,254, 15,116, 6, 44,
/* 0x09c0 */ 228, 72, 57,206,115, 22, 86,173, 40,208,117,223, 95, 15,200, 41, /* 0x09c0 */ 232, 60, 1,119,228, 72, 57,206,115, 22, 86,173, 40,208,117,223,
/* 0x09d0 */ 248, 1,216,171, 72, 57,206,115, 3,172,235,223, 91,195, 82, 15, /* 0x09d0 */ 95, 15,200, 41,248, 1,216,171, 72, 57,206,115, 3,172,235,223,
/* 0x09e0 */ 182, 87, 8, 87, 86, 95, 94,139, 70, 4, 72,131,198, 12, 72, 1, /* 0x09e0 */ 91,195, 82, 15,182, 87, 8, 87, 86, 95, 94,139, 70, 4, 72,131,
/* 0x09f0 */ 240, 80, 87, 49,219, 49,201, 72,131,205,255,235, 78,139, 30, 72, /* 0x09f0 */ 198, 12, 72, 1,240, 80, 87, 49,219, 49,201, 72,131,205,255,235,
/* 0x0a00 */ 131,238,252, 17,219,138, 22,243,195, 1,219,116,240,243,195, 72, /* 0x0a00 */ 78,139, 30, 72,131,238,252, 17,219,138, 22,243,195, 1,219,116,
/* 0x0a10 */ 141, 4, 47,131,249, 5,138, 16,118, 32,131,253,252,119, 27,131, /* 0x0a10 */ 240,243,195, 72,141, 4, 47,131,249, 5,138, 16,118, 32,131,253,
/* 0x0a20 */ 233, 4,139, 16, 72,131,192, 4,131,233, 4,137, 23, 72,141,127, /* 0x0a20 */ 252,119, 27,131,233, 4,139, 16, 72,131,192, 4,131,233, 4,137,
/* 0x0a30 */ 4,115,239,131,193, 4,138, 16,116, 15, 72,255,192,136, 23,255, /* 0x0a30 */ 23, 72,141,127, 4,115,239,131,193, 4,138, 16,116, 15, 72,255,
/* 0x0a40 */ 201,138, 16, 72,141,127, 1,117,241,243,195,252,128,250, 8, 15, /* 0x0a40 */ 192,136, 23,255,201,138, 16, 72,141,127, 1,117,241,243,195,252,
/* 0x0a50 */ 133,218, 0, 0, 0,235, 8, 72,255,198,136, 23, 72,255,199,138, /* 0x0a50 */ 128,250, 8, 15,133,218, 0, 0, 0,235, 8, 72,255,198,136, 23,
/* 0x0a60 */ 22, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22,114, /* 0x0a60 */ 72,255,199,138, 22, 1,219,117, 10,139, 30, 72,131,238,252, 17,
/* 0x0a70 */ 230,141, 65, 1,235, 18,255,200, 1,219,117, 10,139, 30, 72,131, /* 0x0a70 */ 219,138, 22,114,230,141, 65, 1,235, 18,255,200, 1,219,117, 10,
/* 0x0a80 */ 238,252, 17,219,138, 22, 17,192, 1,219,117, 10,139, 30, 72,131, /* 0x0a80 */ 139, 30, 72,131,238,252, 17,219,138, 22, 17,192, 1,219,117, 10,
/* 0x0a90 */ 238,252, 17,219,138, 22, 17,192, 1,219,117, 10,139, 30, 72,131, /* 0x0a90 */ 139, 30, 72,131,238,252, 17,219,138, 22, 17,192, 1,219,117, 10,
/* 0x0aa0 */ 238,252, 17,219,138, 22,115,206,131,232, 3,114, 29,193,224, 8, /* 0x0aa0 */ 139, 30, 72,131,238,252, 17,219,138, 22,115,206,131,232, 3,114,
/* 0x0ab0 */ 15,182,210, 9,208, 72,255,198,131,240,255, 15,132, 63,245,239, /* 0x0ab0 */ 29,193,224, 8, 15,182,210, 9,208, 72,255,198,131,240,255, 15,
/* 0x0ac0 */ 255,209,248, 72, 99,232,114, 67,235, 14, 1,219,117, 8,139, 30, /* 0x0ac0 */ 132, 59,245,239,255,209,248, 72, 99,232,114, 67,235, 14, 1,219,
/* 0x0ad0 */ 72,131,238,252, 17,219,114, 51,255,193, 1,219,117, 8,139, 30, /* 0x0ad0 */ 117, 8,139, 30, 72,131,238,252, 17,219,114, 51,255,193, 1,219,
/* 0x0ae0 */ 72,131,238,252, 17,219,114, 35, 1,219,117, 10,139, 30, 72,131, /* 0x0ae0 */ 117, 8,139, 30, 72,131,238,252, 17,219,114, 35, 1,219,117, 10,
/* 0x0af0 */ 238,252, 17,219,138, 22, 17,201, 1,219,117, 8,139, 30, 72,131, /* 0x0af0 */ 139, 30, 72,131,238,252, 17,219,138, 22, 17,201, 1,219,117, 8,
/* 0x0b00 */ 238,252, 17,219,115,226,131,193, 2,235, 16, 1,219,117, 10,139, /* 0x0b00 */ 139, 30, 72,131,238,252, 17,219,115,226,131,193, 2,235, 16, 1,
/* 0x0b10 */ 30, 72,131,238,252, 17,219,138, 22, 17,201, 72,129,253, 0,251, /* 0x0b10 */ 219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,201, 72,
/* 0x0b20 */ 255,255,131,209, 2,232,229,254,255,255,233, 48,255,255,255, 87, /* 0x0b20 */ 129,253, 0,251,255,255,131,209, 2,232,229,254,255,255,233, 48,
/* 0x0b30 */ 94,128,250, 5, 15,133,204, 0, 0, 0,235, 8, 72,255,198,136, /* 0x0b30 */ 255,255,255, 87, 94,128,250, 5, 15,133,204, 0, 0, 0,235, 8,
/* 0x0b40 */ 23, 72,255,199,138, 22, 1,219,117, 10,139, 30, 72,131,238,252, /* 0x0b40 */ 72,255,198,136, 23, 72,255,199,138, 22, 1,219,117, 10,139, 30,
/* 0x0b50 */ 17,219,138, 22,114,230,141, 65, 1,235, 18,255,200, 1,219,117, /* 0x0b50 */ 72,131,238,252, 17,219,138, 22,114,230,141, 65, 1,235, 18,255,
/* 0x0b60 */ 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,192, 1,219,117, /* 0x0b60 */ 200, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,
/* 0x0b70 */ 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,192, 1,219,117, /* 0x0b70 */ 192, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,
/* 0x0b80 */ 10,139, 30, 72,131,238,252, 17,219,138, 22,115,206,131,232, 3, /* 0x0b80 */ 192, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22,115,
/* 0x0b90 */ 114, 27,193,224, 8, 15,182,210, 9,208, 72,255,198,131,240,255, /* 0x0b90 */ 206,131,232, 3,114, 27,193,224, 8, 15,182,210, 9,208, 72,255,
/* 0x0ba0 */ 15,132, 90,244,239,255,209,248, 72, 99,232,235, 14, 1,219,117, /* 0x0ba0 */ 198,131,240,255, 15,132, 86,244,239,255,209,248, 72, 99,232,235,
/* 0x0bb0 */ 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,201, 1,219,117, /* 0x0bb0 */ 14, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,
/* 0x0bc0 */ 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,201,117, 35,255, /* 0x0bc0 */ 201, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,
/* 0x0bd0 */ 193, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22, 17, /* 0x0bd0 */ 201,117, 35,255,193, 1,219,117, 10,139, 30, 72,131,238,252, 17,
/* 0x0be0 */ 201, 1,219,117, 8,139, 30, 72,131,238,252, 17,219,115,226,131, /* 0x0be0 */ 219,138, 22, 17,201, 1,219,117, 8,139, 30, 72,131,238,252, 17,
/* 0x0bf0 */ 193, 2, 72,129,253, 0,251,255,255,131,209, 1,232, 14,254,255, /* 0x0bf0 */ 219,115,226,131,193, 2, 72,129,253, 0,251,255,255,131,209, 1,
/* 0x0c00 */ 255,233, 62,255,255,255, 87, 94,128,250, 2, 15,133,182, 0, 0, /* 0x0c00 */ 232, 14,254,255,255,233, 62,255,255,255, 87, 94,128,250, 2, 15,
/* 0x0c10 */ 0,235, 8, 72,255,198,136, 23, 72,255,199,138, 22, 1,219,117, /* 0x0c10 */ 133,182, 0, 0, 0,235, 8, 72,255,198,136, 23, 72,255,199,138,
/* 0x0c20 */ 10,139, 30, 72,131,238,252, 17,219,138, 22,114,230,141, 65, 1, /* 0x0c20 */ 22, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22,114,
/* 0x0c30 */ 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,192, /* 0x0c30 */ 230,141, 65, 1, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,
/* 0x0c40 */ 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22,115,224, /* 0x0c40 */ 138, 22, 17,192, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,
/* 0x0c50 */ 131,232, 3,114, 23,193,224, 8, 15,182,210, 9,208, 72,255,198, /* 0x0c50 */ 138, 22,115,224,131,232, 3,114, 23,193,224, 8, 15,182,210, 9,
/* 0x0c60 */ 131,240,255, 15,132,151,243,239,255, 72, 99,232,141, 65, 1, 1, /* 0x0c60 */ 208, 72,255,198,131,240,255, 15,132,147,243,239,255, 72, 99,232,
/* 0x0c70 */ 219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,201, 1, /* 0x0c70 */ 141, 65, 1, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138,
/* 0x0c80 */ 219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22, 17,201,117, /* 0x0c80 */ 22, 17,201, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138,
/* 0x0c90 */ 35,137,193,131,192, 2, 1,219,117, 10,139, 30, 72,131,238,252, /* 0x0c90 */ 22, 17,201,117, 35,137,193,131,192, 2, 1,219,117, 10,139, 30,
/* 0x0ca0 */ 17,219,138, 22, 17,201, 1,219,117, 8,139, 30, 72,131,238,252, /* 0x0ca0 */ 72,131,238,252, 17,219,138, 22, 17,201, 1,219,117, 8,139, 30,
/* 0x0cb0 */ 17,219,115,226, 72,129,253, 0,243,255,255, 17,193,232, 77,253, /* 0x0cb0 */ 72,131,238,252, 17,219,115,226, 72,129,253, 0,243,255,255, 17,
/* 0x0cc0 */ 255,255,233, 84,255,255,255, 87, 94 /* 0x0cc0 */ 193,232, 77,253,255,255,233, 84,255,255,255, 87, 94
}; };
+578 -583
View File
File diff suppressed because it is too large Load Diff
+395 -392
View File
@@ -1,5 +1,5 @@
/* arm.v4a-linux.elf-fold.h /* arm.v4a-linux.elf-fold.h
created from arm.v4a-linux.elf-fold.bin, 6560 (0x19a0) bytes created from arm.v4a-linux.elf-fold.bin, 6604 (0x19cc) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -32,14 +32,14 @@
/* clang-format off */ /* clang-format off */
#define STUB_ARM_V4A_LINUX_ELF_FOLD_SIZE 6560 #define STUB_ARM_V4A_LINUX_ELF_FOLD_SIZE 6604
#define STUB_ARM_V4A_LINUX_ELF_FOLD_ADLER32 0xb3c5a41d #define STUB_ARM_V4A_LINUX_ELF_FOLD_ADLER32 0xcdf8ae14
#define STUB_ARM_V4A_LINUX_ELF_FOLD_CRC32 0xd438b2fd #define STUB_ARM_V4A_LINUX_ELF_FOLD_CRC32 0x3bba7f4c
unsigned char stub_arm_v4a_linux_elf_fold[6560] = { unsigned char stub_arm_v4a_linux_elf_fold[6604] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 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, /* 0x0010 */ 1, 0, 40, 0, 1, 0, 0, 0, 64,128, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 8, 11, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x0020 */ 16, 11, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0,
/* 0x0030 */ 7, 0, 4, 0, 34, 0, 0, 0,192, 31,189,232, 13, 16,160,225, /* 0x0030 */ 7, 0, 4, 0, 34, 0, 0, 0,192, 31,189,232, 13, 16,160,225,
/* 0x0040 */ 1,218, 77,226, 13, 0,160,225,240, 31, 45,233, 4, 48,145,228, /* 0x0040 */ 1,218, 77,226, 13, 0,160,225,240, 31, 45,233, 4, 48,145,228,
/* 0x0050 */ 0, 0, 83,227, 4, 48,128,228, 4, 0, 0, 26, 0, 64,160,225, /* 0x0050 */ 0, 0, 83,227, 4, 48,128,228, 4, 0, 0, 26, 0, 64,160,225,
@@ -57,394 +57,397 @@ unsigned char stub_arm_v4a_linux_elf_fold[6560] = {
/* 0x0110 */ 24, 80,157,229, 24, 0,141,229, 4, 32, 49,229, 13, 0, 81,225, /* 0x0110 */ 24, 80,157,229, 24, 0,141,229, 4, 32, 49,229, 13, 0, 81,225,
/* 0x0120 */ 4, 32, 32,229, 55, 0, 0, 26, 0,208,160,225, 16, 12,189,232, /* 0x0120 */ 4, 32, 32,229, 55, 0, 0, 26, 0,208,160,225, 16, 12,189,232,
/* 0x0130 */ 10,220, 77,226, 4,144,154,229, 13,128,160,225, 0,112,154,229, /* 0x0130 */ 10,220, 77,226, 4,144,154,229, 13,128,160,225, 0,112,154,229,
/* 0x0140 */ 176, 96,143,226, 12,144,137,226,248, 15, 45,233, 15, 0,189,232, /* 0x0140 */ 184, 96,143,226, 12,144,137,226,248, 15, 45,233, 15, 0,189,232,
/* 0x0150 */ 254,255,255,235, 20,208,141,226, 10,220,141,226, 16, 0,141,229, /* 0x0150 */ 254,255,255,235, 20,208,141,226, 10,220,141,226, 16, 0,141,229,
/* 0x0160 */ 104, 16,155,229, 11, 0,160,225,254,255,255,235, 11, 0,160,225, /* 0x0160 */ 104, 16,155,229, 11, 0,160,225,254,255,255,235, 11, 0,160,225,
/* 0x0170 */ 254,255,255,235, 4, 64,157,228, 0, 80,160,227, 48, 0, 45,233, /* 0x0170 */ 254,255,255,235, 4, 64,157,228, 0, 0, 84,227, 90, 0, 0,186,
/* 0x0180 */ 2, 48,160,227, 1, 32,160,227, 1, 26,160,227, 0, 0,160,227, /* 0x0180 */ 0, 80,160,227, 48, 0, 45,233, 2, 48,160,227, 1, 32,160,227,
/* 0x0190 */ 254,255,255,235, 3, 0,189,232,254,255,255,235, 7, 64,189,232, /* 0x0190 */ 1, 26,160,227, 0, 0,160,227,254,255,255,235, 3, 0,189,232,
/* 0x01a0 */ 0, 48,160,227, 0, 64,160,227, 0, 80,160,227, 0, 96,160,227, /* 0x01a0 */ 254,255,255,235, 7, 64,189,232, 0, 48,160,227, 0, 64,160,227,
/* 0x01b0 */ 0,128,160,227, 0,144,160,227, 0,160,160,227, 0,176,160,227, /* 0x01b0 */ 0, 80,160,227, 0, 96,160,227, 0,128,160,227, 0,144,160,227,
/* 0x01c0 */ 1,199, 77,226, 32,112, 29,228, 0,112,141,229, 0,112,157,229, /* 0x01c0 */ 0,160,160,227, 0,176,160,227, 1,199, 77,226, 32,112, 29,228,
/* 0x01d0 */ 13, 0, 92,225, 98, 0, 0, 58, 1,215,141,226, 0,112,160,227, /* 0x01d0 */ 0,112,141,229, 0,112,157,229, 13, 0, 92,225,100, 0, 0, 58,
/* 0x01e0 */ 0,192,160,227, 14,240,160,225, 47,112,114,111, 99, 47,115,101, /* 0x01e0 */ 1,215,141,226, 0,112,160,227, 0,192,160,227, 14,240,160,225,
/* 0x01f0 */ 108,102, 47,101,120,101, 0, 0,255, 48, 3,226, 80, 0, 83,227, /* 0x01f0 */ 47,112,114,111, 99, 47,115,101,108,102, 47,101,120,101, 0, 0,
/* 0x0200 */ 14,240,160, 17, 33, 17,176,225, 0, 0, 80, 19, 14,240,160, 1, /* 0x0200 */ 255, 48, 3,226, 80, 0, 83,227, 14,240,160, 17, 33, 17,176,225,
/* 0x0210 */ 1, 16, 65,226, 1, 33,144,231, 15, 52, 2,226, 11, 4, 83,227, /* 0x0210 */ 0, 0, 80, 19, 14,240,160, 1, 1, 16, 65,226, 1, 33,144,231,
/* 0x0220 */ 127, 0, 0, 26,255, 52, 2,226, 1, 32, 66,224,255, 36,194,227, /* 0x0220 */ 15, 52, 2,226, 11, 4, 83,227,129, 0, 0, 26,255, 52, 2,226,
/* 0x0230 */ 3, 32,130,225, 1, 33,128,231, 0, 0, 81,227,117, 0, 0, 26, /* 0x0230 */ 1, 32, 66,224,255, 36,194,227, 3, 32,130,225, 1, 33,128,231,
/* 0x0240 */ 14,240,160,225,240, 1,240,231, 14,240,160,225, 1, 0,144,239, /* 0x0240 */ 0, 0, 81,227,119, 0, 0, 26, 14,240,160,225,240, 1,240,231,
/* 0x0250 */ 3, 0,144,239, 14,240,160,225, 4, 0,144,239, 14,240,160,225, /* 0x0250 */ 14,240,160,225, 1, 0,144,239, 3, 0,144,239, 14,240,160,225,
/* 0x0260 */ 5, 0,144,239, 14,240,160,225, 6, 0,144,239, 14,240,160,225, /* 0x0260 */ 4, 0,144,239, 14,240,160,225, 5, 0,144,239, 14,240,160,225,
/* 0x0270 */ 10, 0,144,239, 14,240,160,225, 20, 0,144,239, 14,240,160,225, /* 0x0270 */ 6, 0,144,239, 14,240,160,225, 10, 0,144,239, 14,240,160,225,
/* 0x0280 */ 45, 0,144,239, 14,240,160,225, 85, 0,144,239, 14,240,160,225, /* 0x0280 */ 20, 0,144,239, 14,240,160,225, 45, 0,144,239, 14,240,160,225,
/* 0x0290 */ 91, 0,144,239, 14,240,160,225, 56,192,159,229, 0,192, 12,224, /* 0x0290 */ 85, 0,144,239, 14,240,160,225, 91, 0,144,239, 14,240,160,225,
/* 0x02a0 */ 12, 0, 64,224, 12, 16,129,224,125, 0,144,239, 14,240,160,225, /* 0x02a0 */ 56,192,159,229, 0,192, 12,224, 12, 0, 64,224, 12, 16,129,224,
/* 0x02b0 */ 48, 64, 45,233, 16, 80,157,229, 12, 64,157,229, 37, 86,160,225, /* 0x02b0 */ 125, 0,144,239, 14,240,160,225, 48, 64, 45,233, 16, 80,157,229,
/* 0x02c0 */ 16,192,159,229, 0,192, 12,224, 12, 0, 64,224, 12, 16,129,224, /* 0x02c0 */ 12, 64,157,229, 37, 86,160,225, 16,192,159,229, 0,192, 12,224,
/* 0x02d0 */ 192, 0,144,239, 48,128,189,232,255, 15, 0, 0,192, 0,144,239, /* 0x02d0 */ 12, 0, 64,224, 12, 16,129,224,192, 0,144,239, 48,128,189,232,
/* 0x02e0 */ 48,128,189,232, 0, 32,160,227, 2, 0,159,239, 14,240,160,225, /* 0x02e0 */ 255, 15, 0, 0,192, 0,144,239, 48,128,189,232, 0, 32,160,227,
/* 0x02f0 */ 104, 0, 31,229, 14,240,160,225, 48, 64, 45,233,208, 66, 31,229, /* 0x02f0 */ 2, 0,159,239, 14,240,160,225,104, 0, 31,229, 14,240,160,225,
/* 0x0300 */ 0, 80,160,227, 4, 48,131,225, 0, 64,224,227,161, 0, 0,234, /* 0x0300 */ 48, 64, 45,233,216, 66, 31,229, 0, 80,160,227, 4, 48,131,225,
/* 0x0310 */ 0,192,160,225, 1, 16, 65,224, 0, 32,160,225,128, 1,144,224, /* 0x0310 */ 0, 64,224,227,163, 0, 0,234, 0,192,160,225, 1, 16, 65,224,
/* 0x0320 */ 129, 17,161,224,162, 30,129,224, 0, 32,160,225, 0, 2,144,224, /* 0x0320 */ 0, 32,160,225,128, 1,144,224,129, 17,161,224,162, 30,129,224,
/* 0x0330 */ 1, 18,161,224, 34, 30,129,224, 0, 32,160,225, 0, 4,144,224, /* 0x0330 */ 0, 32,160,225, 0, 2,144,224, 1, 18,161,224, 34, 30,129,224,
/* 0x0340 */ 1, 20,161,224, 34, 28,129,224, 0, 32,160,225, 0, 8,144,224, /* 0x0340 */ 0, 32,160,225, 0, 4,144,224, 1, 20,161,224, 34, 28,129,224,
/* 0x0350 */ 1, 24,161,224, 34, 24,129,224,140, 15, 80,224,172, 16,193,224, /* 0x0350 */ 0, 32,160,225, 0, 8,144,224, 1, 24,161,224, 34, 24,129,224,
/* 0x0360 */ 12, 0,144,224, 0, 0,161,226, 14,240,160,225, 0, 0, 80,227, /* 0x0360 */ 140, 15, 80,224,172, 16,193,224, 12, 0,144,224, 0, 0,161,226,
/* 0x0370 */ 30,255, 47, 1, 0, 48,144,229, 1, 0, 83,225, 8, 0,128, 18, /* 0x0370 */ 14,240,160,225, 0, 0, 80,227, 30,255, 47, 1, 0, 48,144,229,
/* 0x0380 */ 206, 0, 0, 26, 4, 32,128,229, 30,255, 47,225, 0, 0,159,229, /* 0x0380 */ 1, 0, 83,225, 8, 0,128, 18,208, 0, 0, 26, 4, 32,128,229,
/* 0x0390 */ 30,255, 47,225, 0,240,255,255, 0, 48,144,229, 2, 0, 83,225, /* 0x0390 */ 30,255, 47,225, 0, 0,159,229, 30,255, 47,225, 0,240,255,255,
/* 0x03a0 */ 4, 48,144,229, 4,224, 45,229, 3,192,160, 33, 2,224,160,225, /* 0x03a0 */ 0, 48,144,229, 2, 0, 83,225, 4, 48,144,229, 4,224, 45,229,
/* 0x03b0 */ 2, 32,160, 33,227, 0, 0, 42,127, 0,160,227,254,255,255,235, /* 0x03b0 */ 3,192,160, 33, 2,224,160,225, 2, 32,160, 33,229, 0, 0, 42,
/* 0x03c0 */ 1, 48, 92,229, 1, 48, 65,229, 1, 32, 66,226, 1, 0,114,227, /* 0x03c0 */ 127, 0,160,227,254,255,255,235, 1, 48, 92,229, 1, 48, 65,229,
/* 0x03d0 */ 1,192,140,226, 1, 16,129,226,225, 0, 0, 26, 4, 32,144,229, /* 0x03d0 */ 1, 32, 66,226, 1, 0,114,227, 1,192,140,226, 1, 16,129,226,
/* 0x03e0 */ 0, 48,144,229, 14, 32,130,224, 3, 48,110,224, 0, 48,128,229, /* 0x03e0 */ 227, 0, 0, 26, 4, 32,144,229, 0, 48,144,229, 14, 32,130,224,
/* 0x03f0 */ 4, 32,128,229, 4,240,157,228,240, 64, 45,233, 0, 80,160,225, /* 0x03f0 */ 3, 48,110,224, 0, 48,128,229, 4, 32,128,229, 4,240,157,228,
/* 0x0400 */ 20,208, 77,226, 1, 64,160,225, 2,112,160,225, 3, 96,160,225, /* 0x0400 */ 240, 64, 45,233, 0, 80,160,225, 20,208, 77,226, 1, 64,160,225,
/* 0x0410 */ 59, 1, 0,234, 4, 16,141,226, 5, 0,160,225, 12, 32,160,227, /* 0x0410 */ 2,112,160,225, 3, 96,160,225, 61, 1, 0,234, 4, 16,141,226,
/* 0x0420 */ 215, 0, 0,235, 4,224,157,229, 0, 0, 94,227, 8, 16,157,229, /* 0x0420 */ 5, 0,160,225, 12, 32,160,227,217, 0, 0,235, 4,224,157,229,
/* 0x0430 */ 5, 1, 0, 26, 0, 49,159,229, 3, 0, 81,225, 7, 1, 0, 26, /* 0x0430 */ 0, 0, 94,227, 8, 16,157,229, 7, 1, 0, 26, 0, 49,159,229,
/* 0x0440 */ 0, 48,149,229, 0, 0, 83,227, 7, 1, 0, 26, 62, 1, 0,234, /* 0x0440 */ 3, 0, 81,225, 9, 1, 0, 26, 0, 48,149,229, 0, 0, 83,227,
/* 0x0450 */ 0, 0, 81,227, 9, 1, 0, 26,127, 0,160,227,254,255,255,235, /* 0x0450 */ 9, 1, 0, 26, 64, 1, 0,234, 0, 0, 81,227, 11, 1, 0, 26,
/* 0x0460 */ 14, 0, 81,225, 7, 1, 0,138, 0, 48,148,229, 3, 0, 94,225, /* 0x0460 */ 127, 0,160,227,254,255,255,235, 14, 0, 81,225, 9, 1, 0,138,
/* 0x0470 */ 7, 1, 0,138, 14, 0, 81,225, 50, 1, 0, 42, 12,192,221,229, /* 0x0470 */ 0, 48,148,229, 3, 0, 94,225, 9, 1, 0,138, 14, 0, 81,225,
/* 0x0480 */ 4, 0,149,229, 4, 32,148,229, 16, 48,141,226, 16,224,141,229, /* 0x0480 */ 52, 1, 0, 42, 12,192,221,229, 4, 0,149,229, 4, 32,148,229,
/* 0x0490 */ 0,192,141,229, 15,224,160,225, 23,255, 47,225, 0, 0, 80,227, /* 0x0490 */ 16, 48,141,226, 16,224,141,229, 0,192,141,229, 15,224,160,225,
/* 0x04a0 */ 7, 1, 0, 26, 16, 16,157,229, 4, 48,157,229, 3, 0, 81,225, /* 0x04a0 */ 23,255, 47,225, 0, 0, 80,227, 9, 1, 0, 26, 16, 16,157,229,
/* 0x04b0 */ 7, 1, 0, 26, 13, 32,221,229, 0, 0, 82,227, 0, 0, 86, 19, /* 0x04b0 */ 4, 48,157,229, 3, 0, 81,225, 9, 1, 0, 26, 13, 32,221,229,
/* 0x04c0 */ 44, 1, 0, 10, 2, 12, 81,227, 39, 1, 0,138, 0, 48,148,229, /* 0x04c0 */ 0, 0, 82,227, 0, 0, 86, 19, 46, 1, 0, 10, 2, 12, 81,227,
/* 0x04d0 */ 1, 0, 83,225, 44, 1, 0, 26, 2, 48,160,225, 4, 0,148,229, /* 0x04d0 */ 41, 1, 0,138, 0, 48,148,229, 1, 0, 83,225, 46, 1, 0, 26,
/* 0x04e0 */ 14, 32,221,229, 15,224,160,225, 22,255, 47,225, 8, 48,157,229, /* 0x04e0 */ 2, 48,160,225, 4, 0,148,229, 14, 32,221,229, 15,224,160,225,
/* 0x04f0 */ 6, 0,149,232, 3, 32,130,224, 1, 16, 99,224, 6, 0,133,232, /* 0x04f0 */ 22,255, 47,225, 8, 48,157,229, 6, 0,149,232, 3, 32,130,224,
/* 0x0500 */ 54, 1, 0,234, 1, 32,160,225, 5, 0,160,225, 4, 16,148,229, /* 0x0500 */ 1, 16, 99,224, 6, 0,133,232, 56, 1, 0,234, 1, 32,160,225,
/* 0x0510 */ 215, 0, 0,235, 4, 48,157,229, 6, 0,148,232, 3, 32,130,224, /* 0x0510 */ 5, 0,160,225, 4, 16,148,229,217, 0, 0,235, 4, 48,157,229,
/* 0x0520 */ 1, 16, 99,224, 6, 0,132,232, 0, 48,148,229, 0, 0, 83,227, /* 0x0520 */ 6, 0,148,232, 3, 32,130,224, 1, 16, 99,224, 6, 0,132,232,
/* 0x0530 */ 246, 0, 0, 26, 20,208,141,226,240,128,189,232, 85, 80, 88, 33, /* 0x0530 */ 0, 48,148,229, 0, 0, 83,227,248, 0, 0, 26, 20,208,141,226,
/* 0x0540 */ 240, 79, 45,233, 1,128,160,225, 28, 16,145,229, 48,208, 77,226, /* 0x0540 */ 240,128,189,232, 85, 80, 88, 33,240, 79, 45,233, 1,128,160,225,
/* 0x0550 */ 0, 0, 82,227, 12, 32,141,229, 16, 0,141,229, 8, 48,141,229, /* 0x0550 */ 28, 16,145,229, 48,208, 77,226, 0, 0, 82,227, 12, 32,141,229,
/* 0x0560 */ 1, 80,136,224, 88, 1, 0, 10, 84, 32,157,229, 0, 0,146,229, /* 0x0560 */ 16, 0,141,229, 8, 48,141,229, 1, 80,136,224, 90, 1, 0, 10,
/* 0x0570 */ 176, 49,208,225, 52, 16,128,226, 2, 0, 83,227, 40, 48,145, 21, /* 0x0570 */ 84, 32,157,229, 0, 0,146,229,176, 49,208,225, 52, 16,128,226,
/* 0x0580 */ 0,176, 99, 16, 8, 0,145, 5, 11, 0,160, 17, 20, 16,145,229, /* 0x0580 */ 2, 0, 83,227, 40, 48,145, 21, 0,176, 99, 16, 8, 0,145, 5,
/* 0x0590 */ 0,176,160, 3,254,255,255,235,126, 1, 0,234,176, 49,216,225, /* 0x0590 */ 11, 0,160, 17, 20, 16,145,229, 0,176,160, 3,254,255,255,235,
/* 0x05a0 */ 188, 34,216,225, 3, 0, 83,227, 12, 16,157,229, 16,224,160, 19, /* 0x05a0 */ 128, 1, 0,234,176, 49,216,225,188, 34,216,225, 3, 0, 83,227,
/* 0x05b0 */ 0,224,160, 3, 1,192, 66,226, 5, 0,160,225, 0, 64,224,227, /* 0x05b0 */ 12, 16,157,229, 16,224,160, 19, 0,224,160, 3, 1,192, 66,226,
/* 0x05c0 */ 112, 1, 0,234, 0, 48,144,229, 1, 0, 83,227,110, 1, 0, 26, /* 0x05c0 */ 5, 0,160,225, 0, 64,224,227,114, 1, 0,234, 0, 48,144,229,
/* 0x05d0 */ 20, 48,144,229, 0, 0, 83,227,110, 1, 0, 10, 8, 32,144,229, /* 0x05d0 */ 1, 0, 83,227,112, 1, 0, 26, 20, 48,144,229, 0, 0, 83,227,
/* 0x05e0 */ 2, 48,131,224, 3, 0, 81,225, 3, 16,160, 49, 2, 0, 84,225, /* 0x05e0 */ 112, 1, 0, 10, 8, 32,144,229, 2, 48,131,224, 3, 0, 81,225,
/* 0x05f0 */ 2, 64,160, 33, 32, 0,128,226, 1,192, 76,226, 0, 0, 92,227, /* 0x05f0 */ 3, 16,160, 49, 2, 0, 84,225, 2, 64,160, 33, 32, 0,128,226,
/* 0x0600 */ 98, 1, 0,170,255, 78,196,227, 15, 64,196,227, 1, 16,100,224, /* 0x0600 */ 1,192, 76,226, 0, 0, 92,227,100, 1, 0,170,255, 78,196,227,
/* 0x0610 */ 255, 30,129,226, 15, 16,129,226,255, 30,193,227, 15, 16,193,227, /* 0x0610 */ 15, 64,196,227, 1, 16,100,224,255, 30,129,226, 15, 16,129,226,
/* 0x0620 */ 14, 48,160,225, 4, 0,160,225, 0, 32,160,227,254,255,255,235, /* 0x0620 */ 255, 30,193,227, 15, 16,193,227, 14, 48,160,225, 4, 0,160,225,
/* 0x0630 */ 0,176,100,224, 52, 48,160,227,155, 3, 3,224, 32, 80,133,226, /* 0x0630 */ 0, 32,160,227,254,255,255,235, 0,176,100,224, 52, 48,160,227,
/* 0x0640 */ 32, 48,141,229, 0, 48,160,227, 24, 48,141,229, 53, 2, 0,234, /* 0x0640 */ 155, 3, 3,224, 32, 80,133,226, 32, 48,141,229, 0, 48,160,227,
/* 0x0650 */ 12,192,157,229, 0, 0, 92,227,145, 1, 0, 10, 32, 48, 21,229, /* 0x0650 */ 24, 48,141,229, 55, 2, 0,234, 12,192,157,229, 0, 0, 92,227,
/* 0x0660 */ 6, 0, 83,227,145, 1, 0, 26, 24, 32, 21,229, 8, 0,157,229, /* 0x0660 */ 147, 1, 0, 10, 32, 48, 21,229, 6, 0, 83,227,147, 1, 0, 26,
/* 0x0670 */ 2, 32,139,224, 3, 16,160,227,204, 0, 0,235, 49, 2, 0,234, /* 0x0670 */ 24, 32, 21,229, 8, 0,157,229, 2, 32,139,224, 3, 16,160,227,
/* 0x0680 */ 32, 48, 21,229, 1, 0, 83,227, 49, 2, 0, 26, 12, 48, 21,229, /* 0x0680 */ 206, 0, 0,235, 51, 2, 0,234, 32, 48, 21,229, 1, 0, 83,227,
/* 0x0690 */ 0, 0, 83,227, 49, 2, 0, 10, 12, 0,157,229, 0, 0, 80,227, /* 0x0690 */ 51, 2, 0, 26, 12, 48, 21,229, 0, 0, 83,227, 51, 2, 0, 10,
/* 0x06a0 */ 172, 1, 0, 10, 28, 48, 21,229, 0, 0, 83,227,172, 1, 0, 26, /* 0x06a0 */ 12, 0,157,229, 0, 0, 80,227,174, 1, 0, 10, 28, 48, 21,229,
/* 0x06b0 */ 28, 48,152,229, 24, 32, 21,229, 3, 32,130,224, 2, 32,139,224, /* 0x06b0 */ 0, 0, 83,227,174, 1, 0, 26, 28, 48,152,229, 24, 32, 21,229,
/* 0x06c0 */ 3, 16,160,227, 8, 0,157,229,204, 0, 0,235, 8, 0,157,229, /* 0x06c0 */ 3, 32,130,224, 2, 32,139,224, 3, 16,160,227, 8, 0,157,229,
/* 0x06d0 */ 5, 16,160,227,188, 34,216,225,204, 0, 0,235, 8, 0,157,229, /* 0x06d0 */ 206, 0, 0,235, 8, 0,157,229, 5, 16,160,227,188, 34,216,225,
/* 0x06e0 */ 4, 16,160,227,186, 34,216,225,204, 0, 0,235, 8, 16, 21,229, /* 0x06e0 */ 206, 0, 0,235, 8, 0,157,229, 4, 16,160,227,186, 34,216,225,
/* 0x06f0 */ 168, 34,159,229, 7, 48, 1,226, 3, 49,160,225, 50, 67,160,225, /* 0x06f0 */ 206, 0, 0,235, 8, 16, 21,229,168, 34,159,229, 7, 48, 1,226,
/* 0x0700 */ 24, 48, 21,229, 3, 48,139,224, 20, 48,141,229, 20,192,157,229, /* 0x0700 */ 3, 49,160,225, 50, 67,160,225, 24, 48, 21,229, 3, 48,139,224,
/* 0x0710 */ 16, 48, 21,229, 12, 42,160,225, 34, 42,160,225, 12, 0,157,229, /* 0x0710 */ 20, 48,141,229, 20,192,157,229, 16, 48, 21,229, 12, 42,160,225,
/* 0x0720 */ 40, 48,141,229, 2,160,131,224, 12, 48, 21,229, 0, 0, 80,227, /* 0x0720 */ 34, 42,160,225, 12, 0,157,229, 40, 48,141,229, 2,160,131,224,
/* 0x0730 */ 44,192,141,229, 7,144, 4,226, 36, 48,141,229, 12, 96, 98,224, /* 0x0730 */ 12, 48, 21,229, 0, 0, 80,227, 44,192,141,229, 7,144, 4,226,
/* 0x0740 */ 211, 1, 0, 10, 1, 0, 17,227, 3, 32,160, 3, 7, 32,160, 19, /* 0x0740 */ 36, 48,141,229, 12, 96, 98,224,213, 1, 0, 10, 1, 0, 17,227,
/* 0x0750 */ 6, 0,160,225, 10, 16,160,225, 16, 48,160,227,254,255,255,235, /* 0x0750 */ 3, 32,160, 3, 7, 32,160, 19, 6, 0,160,225, 10, 16,160,225,
/* 0x0760 */ 0, 0, 86,225, 32, 2, 0, 26, 88,192,157,229, 4, 48, 20,226, /* 0x0760 */ 16, 48,160,227,254,255,255,235, 0, 0, 86,225, 34, 2, 0, 26,
/* 0x0770 */ 12, 48,160, 17, 12, 0,157,229, 40, 16,141,226, 16, 32,157,229, /* 0x0770 */ 88,192,157,229, 4, 48, 20,226, 12, 48,160, 17, 12, 0,157,229,
/* 0x0780 */ 239, 0, 0,235,223, 1, 0,234, 28,192, 21,229, 12,192, 98,224, /* 0x0780 */ 40, 16,141,226, 16, 32,157,229,241, 0, 0,235,225, 1, 0,234,
/* 0x0790 */ 4,192,141,229, 16,192,157,229, 6, 0,160,225, 10, 16,160,225, /* 0x0790 */ 28,192, 21,229, 12,192, 98,224, 4,192,141,229, 16,192,157,229,
/* 0x07a0 */ 9, 32,160,225, 18, 48,160,227, 0,192,141,229,254,255,255,235, /* 0x07a0 */ 6, 0,160,225, 10, 16,160,225, 9, 32,160,225, 18, 48,160,227,
/* 0x07b0 */ 0, 0, 86,225, 32, 2, 0, 26, 0, 48,106,226, 3,122,160,225, /* 0x07b0 */ 0,192,141,229,254,255,255,235, 0, 0, 86,225, 34, 2, 0, 26,
/* 0x07c0 */ 2, 0, 25,227, 39,122,160,225,236, 1, 0, 10, 0, 0, 87,227, /* 0x07c0 */ 0, 48,106,226, 3,122,160,225, 2, 0, 25,227, 39,122,160,225,
/* 0x07d0 */ 236, 1, 0, 10, 10, 16,134,224, 7, 32,160,225, 0, 48,160,227, /* 0x07d0 */ 238, 1, 0, 10, 0, 0, 87,227,238, 1, 0, 10, 10, 16,134,224,
/* 0x07e0 */ 1, 32, 82,226, 1, 48,193,228,232, 1, 0, 26, 12, 0,157,229, /* 0x07e0 */ 7, 32,160,225, 0, 48,160,227, 1, 32, 82,226, 1, 48,193,228,
/* 0x07f0 */ 0, 0, 80,227, 34, 2, 0, 10,254,255,255,235, 32, 48, 21,229, /* 0x07f0 */ 234, 1, 0, 26, 12, 0,157,229, 0, 0, 80,227, 36, 2, 0, 10,
/* 0x0800 */ 1, 0, 83,227, 28, 0,141,229, 26, 2, 0, 26, 8, 48, 21,229, /* 0x0800 */ 254,255,255,235, 32, 48, 21,229, 1, 0, 83,227, 28, 0,141,229,
/* 0x0810 */ 1, 0, 19,227, 26, 2, 0, 10, 12, 32, 21,229, 16, 48, 21,229, /* 0x0810 */ 28, 2, 0, 26, 8, 48, 21,229, 1, 0, 19,227, 28, 2, 0, 10,
/* 0x0820 */ 3, 0, 82,225, 24, 16, 21,229, 64, 2, 0, 26, 1, 48,130,224, /* 0x0820 */ 12, 32, 21,229, 16, 48, 21,229, 3, 0, 82,225, 24, 16, 21,229,
/* 0x0830 */ 3, 48,131,226, 3, 48,139,224, 3, 32,195,227, 0, 48, 98,226, /* 0x0830 */ 66, 2, 0, 26, 1, 48,130,224, 3, 48,131,226, 3, 48,139,224,
/* 0x0840 */ 3, 58,160,225, 35, 58,160,225, 7, 0, 83,227, 64, 2, 0,154, /* 0x0840 */ 3, 32,195,227, 0, 48, 98,226, 3, 58,160,225, 35, 58,160,225,
/* 0x0850 */ 17, 2, 0,234, 0,224,160,227, 0,192,224,227, 14, 0,160,225, /* 0x0850 */ 7, 0, 83,227, 66, 2, 0,154, 19, 2, 0,234, 0,224,160,227,
/* 0x0860 */ 1, 26,160,227, 7, 32,160,227, 34, 48,160,227, 0, 80,141,232, /* 0x0860 */ 0,192,224,227, 14, 0,160,225, 1, 26,160,227, 7, 32,160,227,
/* 0x0870 */ 254,255,255,235, 0, 0, 80,227, 71, 2, 0, 26, 26, 2, 0,234, /* 0x0870 */ 34, 48,160,227, 0, 80,141,232,254,255,255,235, 0, 0, 80,227,
/* 0x0880 */ 3, 48,130,226, 3, 64,195,227, 28, 32,157,229, 16, 49,159,229, /* 0x0880 */ 73, 2, 0, 26, 28, 2, 0,234, 3, 48,130,226, 3, 64,195,227,
/* 0x0890 */ 12, 0,132,232, 4, 0,160,225, 8, 16,132,226,254,255,255,235, /* 0x0890 */ 28, 32,157,229, 16, 49,159,229, 12, 0,132,232, 4, 0,160,225,
/* 0x08a0 */ 84, 2, 0,234, 6, 0,160,225, 10, 16,160,225, 9, 32,160,225, /* 0x08a0 */ 8, 16,132,226,254,255,255,235, 86, 2, 0,234, 6, 0,160,225,
/* 0x08b0 */ 254,255,255,235, 0, 0, 80,227, 34, 2, 0, 10,127, 0,160,227, /* 0x08b0 */ 10, 16,160,225, 9, 32,160,225,254,255,255,235, 0, 0, 80,227,
/* 0x08c0 */ 254,255,255,235, 20,192,157,229, 36, 0,157,229, 7, 48,138,224, /* 0x08c0 */ 36, 2, 0, 10,127, 0,160,227,254,255,255,235, 20,192,157,229,
/* 0x08d0 */ 0, 16,140,224, 3, 64,134,224, 1, 0, 84,225, 49, 2, 0, 42, /* 0x08d0 */ 36, 0,157,229, 7, 48,138,224, 0, 16,140,224, 3, 64,134,224,
/* 0x08e0 */ 1, 16,100,224, 9, 32,160,225, 4, 0,160,225, 16, 48,160,227, /* 0x08e0 */ 1, 0, 84,225, 51, 2, 0, 42, 1, 16,100,224, 9, 32,160,225,
/* 0x08f0 */ 254,255,255,235, 0, 0, 84,225, 49, 2, 0, 10, 48, 2, 0,234, /* 0x08f0 */ 4, 0,160,225, 16, 48,160,227,254,255,255,235, 0, 0, 84,225,
/* 0x0900 */ 24, 32,157,229, 1, 32,130,226, 24, 32,141,229, 32, 80,133,226, /* 0x0900 */ 51, 2, 0, 10, 50, 2, 0,234, 24, 32,157,229, 1, 32,130,226,
/* 0x0910 */ 188, 50,216,225, 24,192,157,229, 3, 0, 92,225,133, 1, 0,186, /* 0x0910 */ 24, 32,141,229, 32, 80,133,226,188, 50,216,225, 24,192,157,229,
/* 0x0920 */ 84, 0,157,229, 0, 0, 80,227, 0,176,128, 21, 24, 0,152,229, /* 0x0920 */ 3, 0, 92,225,135, 1, 0,186, 84, 0,157,229, 0, 0, 80,227,
/* 0x0930 */ 0, 0,139,224, 48,208,141,226,240,143,189,232, 28, 48, 21,229, /* 0x0930 */ 0,176,128, 21, 24, 0,152,229, 0, 0,139,224, 48,208,141,226,
/* 0x0940 */ 0, 0, 83,227, 32, 32,157, 5, 2, 48,129, 0, 8, 32,131, 2, /* 0x0940 */ 240,143,189,232, 28, 48, 21,229, 0, 0, 83,227, 32, 32,157, 5,
/* 0x0950 */ 17, 2, 0, 10, 6, 2, 0,234, 3, 48,128,226, 3, 64,195,227, /* 0x0950 */ 2, 48,129, 0, 8, 32,131, 2, 19, 2, 0, 10, 8, 2, 0,234,
/* 0x0960 */ 28, 48,157,229, 0, 48,132,229, 52, 48,159,229, 8, 16,132,226, /* 0x0960 */ 3, 48,128,226, 3, 64,195,227, 28, 48,157,229, 0, 48,132,229,
/* 0x0970 */ 4, 0,160,225, 4, 48,132,229,254,255,255,235, 4, 0,160,225, /* 0x0970 */ 52, 48,159,229, 8, 16,132,226, 4, 0,160,225, 4, 48,132,229,
/* 0x0980 */ 8, 16,160,227, 5, 32,160,227,254,255,255,235, 4, 32,160,225, /* 0x0980 */ 254,255,255,235, 4, 0,160,225, 8, 16,160,227, 5, 32,160,227,
/* 0x0990 */ 8, 0,157,229, 0, 16,160,227,204, 0, 0,235, 26, 2, 0,234, /* 0x0990 */ 254,255,255,235, 4, 32,160,225, 8, 0,157,229, 0, 16,160,227,
/* 0x09a0 */ 64, 98, 81,115, 14,240,160,225,240, 71, 45,233, 12,208, 77,226, /* 0x09a0 */ 206, 0, 0,235, 28, 2, 0,234, 64, 98, 81,115, 14,240,160,225,
/* 0x09b0 */ 52, 96,141,226, 0,144,160,225, 1,112,160,225, 3,128,160,225, /* 0x09b0 */ 240, 71, 45,233, 12,208, 77,226, 52, 96,141,226, 0,144,160,225,
/* 0x09c0 */ 6, 0,160,225, 44, 16,141,226, 0, 48,160,227, 48,160,157,229, /* 0x09c0 */ 1,112,160,225, 3,128,160,225, 6, 0,160,225, 44, 16,141,226,
/* 0x09d0 */ 2, 80,160,225, 52, 64,157,229,239, 0, 0,235, 60, 48,157,229, /* 0x09d0 */ 0, 48,160,227, 48,160,157,229, 2, 80,160,225, 52, 64,157,229,
/* 0x09e0 */ 12,224,141,226, 56,192,157,229, 4, 48, 46,229, 12,192,100,224, /* 0x09e0 */ 241, 0, 0,235, 60, 48,157,229, 12,224,141,226, 56,192,157,229,
/* 0x09f0 */ 6, 32,160,225, 10, 16,160,225, 9, 48,160,225, 5, 0,160,225, /* 0x09f0 */ 4, 48, 46,229, 12,192,100,224, 6, 32,160,225, 10, 16,160,225,
/* 0x0a00 */ 56,192,141,229, 0,224,141,229, 52,112,141,229, 4,128,141,229, /* 0x0a00 */ 9, 48,160,225, 5, 0,160,225, 56,192,141,229, 0,224,141,229,
/* 0x0a10 */ 65, 1, 0,235, 0, 64,160,225, 9, 16,160,227, 9, 0,160,225, /* 0x0a10 */ 52,112,141,229, 4,128,141,229, 67, 1, 0,235, 0, 64,160,225,
/* 0x0a20 */ 4, 32,160,225,204, 0, 0,235,188, 2,218,225, 52, 32,138,226, /* 0x0a20 */ 9, 16,160,227, 9, 0,160,225, 4, 32,160,225,206, 0, 0,235,
/* 0x0a30 */ 0, 16,160,227,163, 2, 0,234, 0, 48,146,229, 3, 0, 83,227, /* 0x0a30 */ 188, 2,218,225, 52, 32,138,226, 0, 16,160,227,165, 2, 0,234,
/* 0x0a40 */ 161, 2, 0, 26, 8, 48,146,229, 8, 0,157,229, 0, 16,160,227, /* 0x0a40 */ 0, 48,146,229, 3, 0, 83,227,163, 2, 0, 26, 8, 48,146,229,
/* 0x0a50 */ 0, 0,131,224, 1, 32,160,225,254,255,255,235, 0, 80, 80,226, /* 0x0a50 */ 8, 0,157,229, 0, 16,160,227, 0, 0,131,224, 1, 32,160,225,
/* 0x0a60 */ 143, 2, 0,186, 10, 16,160,225, 2, 44,160,227,254,255,255,235, /* 0x0a60 */ 254,255,255,235, 0, 80, 80,226,145, 2, 0,186, 10, 16,160,225,
/* 0x0a70 */ 2, 12, 80,227,145, 2, 0, 10,127, 0,160,227,254,255,255,235, /* 0x0a70 */ 2, 44,160,227,254,255,255,235, 2, 12, 80,227,147, 2, 0, 10,
/* 0x0a80 */ 0,224,160,227, 14, 32,160,225, 8,192,141,226, 10, 16,160,225, /* 0x0a80 */ 127, 0,160,227,254,255,255,235, 0,224,160,227, 14, 32,160,225,
/* 0x0a90 */ 9, 48,160,225, 5, 0,160,225, 0, 80,141,232, 65, 1, 0,235, /* 0x0a90 */ 8,192,141,226, 10, 16,160,225, 9, 48,160,225, 5, 0,160,225,
/* 0x0aa0 */ 7, 16,160,227, 0, 64,160,225, 8, 32,157,229, 9, 0,160,225, /* 0x0aa0 */ 0, 80,141,232, 67, 1, 0,235, 7, 16,160,227, 0, 64,160,225,
/* 0x0ab0 */ 204, 0, 0,235, 5, 0,160,225,254,255,255,235,165, 2, 0,234, /* 0x0ab0 */ 8, 32,157,229, 9, 0,160,225,206, 0, 0,235, 5, 0,160,225,
/* 0x0ac0 */ 32, 32,130,226, 1, 16,129,226, 0, 0, 81,225,127, 2, 0,186, /* 0x0ac0 */ 254,255,255,235,167, 2, 0,234, 32, 32,130,226, 1, 16,129,226,
/* 0x0ad0 */ 4, 0,160,225, 12,208,141,226,240,135,189,232, 0, 46,115,121, /* 0x0ad0 */ 0, 0, 81,225,129, 2, 0,186, 4, 0,160,225, 12,208,141,226,
/* 0x0ae0 */ 109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,104, /* 0x0ae0 */ 240,135,189,232, 0, 46,115,121,109,116, 97, 98, 0, 46,115,116,
/* 0x0af0 */ 115,116,114,116, 97, 98, 0, 46,114,101,108, 46,116,101,120,116, /* 0x0af0 */ 114,116, 97, 98, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,
/* 0x0b00 */ 0, 46, 98,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0b00 */ 114,101,108, 46,116,101,120,116, 0, 46, 98,115,115, 0, 0, 0,
/* 0x0b10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0b10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0b20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0b20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0b30 */ 31, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 64,128, 0, 0, /* 0x0b30 */ 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 1, 0, 0, 0,
/* 0x0b40 */ 52, 0, 0, 0,168, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0b40 */ 7, 0, 0, 0, 64,128, 0, 0, 52, 0, 0, 0,176, 10, 0, 0,
/* 0x0b50 */ 4, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 9, 0, 0, 0, /* 0x0b50 */ 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0,
/* 0x0b60 */ 0, 0, 0, 0, 0, 0, 0, 0, 56, 22, 0, 0,104, 3, 0, 0, /* 0x0b60 */ 27, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0b70 */ 5, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, /* 0x0b70 */ 92, 22, 0, 0,112, 3, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0,
/* 0x0b80 */ 37, 0, 0, 0, 8, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, /* 0x0b80 */ 4, 0, 0, 0, 8, 0, 0, 0, 37, 0, 0, 0, 8, 0, 0, 0,
/* 0x0b90 */ 220, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0b90 */ 3, 0, 0, 0, 0, 0, 0, 0,228, 10, 0, 0, 0, 0, 0, 0,
/* 0x0ba0 */ 1, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, /* 0x0ba0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
/* 0x0bb0 */ 0, 0, 0, 0, 0, 0, 0, 0,220, 10, 0, 0, 42, 0, 0, 0, /* 0x0bb0 */ 17, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0bc0 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x0bc0 */ 228, 10, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0bd0 */ 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0bd0 */ 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0,
/* 0x0be0 */ 32, 12, 0, 0,160, 6, 0, 0, 6, 0, 0, 0, 85, 0, 0, 0, /* 0x0be0 */ 0, 0, 0, 0, 0, 0, 0, 0, 40, 12, 0, 0,176, 6, 0, 0,
/* 0x0bf0 */ 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, /* 0x0bf0 */ 6, 0, 0, 0, 86, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0,
/* 0x0c00 */ 0, 0, 0, 0, 0, 0, 0, 0,192, 18, 0, 0,120, 3, 0, 0, /* 0x0c00 */ 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c10 */ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x0c10 */ 216, 18, 0, 0,131, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c20 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0c20 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c30 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 1, 0, /* 0x0c30 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c40 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 3, 0, /* 0x0c40 */ 0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c50 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,241,255, /* 0x0c50 */ 0, 0, 0, 0, 3, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c60 */ 30, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0c60 */ 0, 0, 0, 0, 4, 0,241,255, 30, 0, 0, 0, 4, 0, 0, 0,
/* 0x0c70 */ 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, /* 0x0c70 */ 0, 0, 0, 0, 0, 0,241,255, 35, 0, 0, 0, 0, 0, 0, 0,
/* 0x0c80 */ 38, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0c80 */ 0, 0, 0, 0, 2, 0, 1, 0, 38, 0, 0, 0, 0, 0,144, 0,
/* 0x0c90 */ 56, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0c90 */ 0, 0, 0, 0, 0, 0,241,255, 56, 0, 0, 0, 52, 0, 0, 0,
/* 0x0ca0 */ 70, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0ca0 */ 0, 0, 0, 0, 0, 0,241,255, 70, 0, 0, 0, 16, 0, 0, 0,
/* 0x0cb0 */ 77, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0cb0 */ 0, 0, 0, 0, 0, 0,241,255, 77, 0, 0, 0, 2, 0, 0, 0,
/* 0x0cc0 */ 85, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0cc0 */ 0, 0, 0, 0, 0, 0,241,255, 85, 0, 0, 0, 32, 0, 0, 0,
/* 0x0cd0 */ 99, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0cd0 */ 0, 0, 0, 0, 0, 0,241,255, 99, 0, 0, 0, 8, 0, 0, 0,
/* 0x0ce0 */ 107, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0ce0 */ 0, 0, 0, 0, 0, 0,241,255,107, 0, 0, 0, 20, 0, 0, 0,
/* 0x0cf0 */ 115, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0cf0 */ 0, 0, 0, 0, 0, 0,241,255,115, 0, 0, 0, 12, 0, 0, 0,
/* 0x0d00 */ 125, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0d00 */ 0, 0, 0, 0, 0, 0,241,255,125, 0, 0, 0, 12, 0, 0, 0,
/* 0x0d10 */ 135, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0d10 */ 0, 0, 0, 0, 0, 0,241,255,135, 0, 0, 0, 12, 0, 0, 0,
/* 0x0d20 */ 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0d20 */ 0, 0, 0, 0, 0, 0,241,255,145, 0, 0, 0, 0, 0, 0, 0,
/* 0x0d30 */ 152, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0d30 */ 0, 0, 0, 0, 0, 0,241,255,152, 0, 0, 0, 4, 0, 0, 0,
/* 0x0d40 */ 159, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0d40 */ 0, 0, 0, 0, 0, 0,241,255,159, 0, 0, 0, 8, 0, 0, 0,
/* 0x0d50 */ 168, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0d50 */ 0, 0, 0, 0, 0, 0,241,255,168, 0, 0, 0, 32, 0, 0, 0,
/* 0x0d60 */ 182, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0d60 */ 0, 0, 0, 0, 0, 0,241,255,182, 0, 0, 0, 2, 0, 0, 0,
/* 0x0d70 */ 194, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0d70 */ 0, 0, 0, 0, 0, 0,241,255,194, 0, 0, 0, 16, 0, 0, 0,
/* 0x0d80 */ 204, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0d80 */ 0, 0, 0, 0, 0, 0,241,255,204, 0, 0, 0, 1, 0, 0, 0,
/* 0x0d90 */ 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0d90 */ 0, 0, 0, 0, 0, 0,241,255,214, 0, 0, 0, 0, 0, 0, 0,
/* 0x0da0 */ 223, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0da0 */ 0, 0, 0, 0, 0, 0,241,255,223, 0, 0, 0, 12, 0, 0, 0,
/* 0x0db0 */ 234, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0db0 */ 0, 0, 0, 0, 0, 0,241,255,234, 0, 0, 0, 0, 16, 0, 0,
/* 0x0dc0 */ 244, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0dc0 */ 0, 0, 0, 0, 0, 0,241,255,244, 0, 0, 0, 0, 16, 0, 0,
/* 0x0dd0 */ 252, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0dd0 */ 0, 0, 0, 0, 0, 0,241,255,252, 0, 0, 0, 0, 16, 0, 0,
/* 0x0de0 */ 5, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0de0 */ 0, 0, 0, 0, 0, 0,241,255, 5, 1, 0, 0, 0, 2, 0, 0,
/* 0x0df0 */ 20, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0df0 */ 0, 0, 0, 0, 0, 0,241,255, 20, 1, 0, 0, 0, 4, 0, 0,
/* 0x0e00 */ 35, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x0e00 */ 0, 0, 0, 0, 0, 0,241,255, 35, 1, 0, 0, 0, 0, 0, 0,
/* 0x0e10 */ 45, 1, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0e10 */ 0, 0, 0, 0, 0, 0, 1, 0, 45, 1, 0, 0, 12, 0, 0, 0,
/* 0x0e20 */ 51, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x0e20 */ 0, 0, 0, 0, 0, 0,241,255, 51, 1, 0, 0, 4, 0, 0, 0,
/* 0x0e30 */ 62, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0e30 */ 0, 0, 0, 0, 0, 0, 1, 0, 62, 1, 0, 0, 0, 0, 0, 0,
/* 0x0e40 */ 69, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0e40 */ 0, 0, 0, 0, 0, 0,241,255, 69, 1, 0, 0, 4, 0, 0, 0,
/* 0x0e50 */ 76, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0e50 */ 0, 0, 0, 0, 0, 0,241,255, 76, 1, 0, 0, 8, 0, 0, 0,
/* 0x0e60 */ 86, 1, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0e60 */ 0, 0, 0, 0, 0, 0,241,255, 86, 1, 0, 0, 12, 0, 0, 0,
/* 0x0e70 */ 91, 1, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0e70 */ 0, 0, 0, 0, 0, 0,241,255, 91, 1, 0, 0, 16, 0, 0, 0,
/* 0x0e80 */ 98, 1, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0e80 */ 0, 0, 0, 0, 0, 0,241,255, 98, 1, 0, 0, 20, 0, 0, 0,
/* 0x0e90 */ 105, 1, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0e90 */ 0, 0, 0, 0, 0, 0,241,255,105, 1, 0, 0, 24, 0, 0, 0,
/* 0x0ea0 */ 113, 1, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0ea0 */ 0, 0, 0, 0, 0, 0,241,255,113, 1, 0, 0, 24, 0, 0, 0,
/* 0x0eb0 */ 122, 1, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0eb0 */ 0, 0, 0, 0, 0, 0,241,255,122, 1, 0, 0, 28, 0, 0, 0,
/* 0x0ec0 */ 130, 1, 0, 0,124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x0ec0 */ 0, 0, 0, 0, 0, 0,241,255,130, 1, 0, 0,124, 0, 0, 0,
/* 0x0ed0 */ 138, 1, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0ed0 */ 0, 0, 0, 0, 0, 0, 1, 0,138, 1, 0, 0, 12, 0, 0, 0,
/* 0x0ee0 */ 146, 1, 0, 0,196, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x0ee0 */ 0, 0, 0, 0, 0, 0,241,255,146, 1, 0, 0,204, 1, 0, 0,
/* 0x0ef0 */ 157, 1, 0, 0,144, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x0ef0 */ 0, 0, 0, 0, 0, 0, 1, 0,157, 1, 0, 0,112, 1, 0, 0,
/* 0x0f00 */ 163, 1, 0, 0,180, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x0f00 */ 0, 0, 0, 0, 0, 0, 1, 0,168, 1, 0, 0,152, 1, 0, 0,
/* 0x0f10 */ 177, 1, 0, 0,194, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x0f10 */ 0, 0, 0, 0, 0, 0, 1, 0,174, 1, 0, 0,188, 1, 0, 0,
/* 0x0f20 */ 193, 1, 0, 0,220, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x0f20 */ 0, 0, 0, 0, 0, 0, 1, 0,188, 1, 0, 0,202, 1, 0, 0,
/* 0x0f30 */ 201, 1, 0, 0, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x0f30 */ 0, 0, 0, 0, 0, 0, 1, 0,204, 1, 0, 0,228, 1, 0, 0,
/* 0x0f40 */ 209, 1, 0, 0, 1, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0f40 */ 0, 0, 0, 0, 0, 0, 1, 0,212, 1, 0, 0, 12, 2, 0, 0,
/* 0x0f50 */ 219, 1, 0, 0, 3, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0f50 */ 0, 0, 0, 0, 0, 0, 1, 0,220, 1, 0, 0, 1, 0,144, 0,
/* 0x0f60 */ 229, 1, 0, 0, 4, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0f60 */ 0, 0, 0, 0, 0, 0,241,255,230, 1, 0, 0, 3, 0,144, 0,
/* 0x0f70 */ 240, 1, 0, 0, 5, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0f70 */ 0, 0, 0, 0, 0, 0,241,255,240, 1, 0, 0, 4, 0,144, 0,
/* 0x0f80 */ 250, 1, 0, 0, 6, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0f80 */ 0, 0, 0, 0, 0, 0,241,255,251, 1, 0, 0, 5, 0,144, 0,
/* 0x0f90 */ 5, 2, 0, 0, 10, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0f90 */ 0, 0, 0, 0, 0, 0,241,255, 5, 2, 0, 0, 6, 0,144, 0,
/* 0x0fa0 */ 17, 2, 0, 0, 20, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0fa0 */ 0, 0, 0, 0, 0, 0,241,255, 16, 2, 0, 0, 10, 0,144, 0,
/* 0x0fb0 */ 29, 2, 0, 0, 45, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0fb0 */ 0, 0, 0, 0, 0, 0,241,255, 28, 2, 0, 0, 20, 0,144, 0,
/* 0x0fc0 */ 38, 2, 0, 0, 85, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0fc0 */ 0, 0, 0, 0, 0, 0,241,255, 40, 2, 0, 0, 45, 0,144, 0,
/* 0x0fd0 */ 52, 2, 0, 0,192, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0fd0 */ 0, 0, 0, 0, 0, 0,241,255, 49, 2, 0, 0, 85, 0,144, 0,
/* 0x0fe0 */ 63, 2, 0, 0,125, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0fe0 */ 0, 0, 0, 0, 0, 0,241,255, 63, 2, 0, 0,192, 0,144, 0,
/* 0x0ff0 */ 77, 2, 0, 0, 91, 0,144, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x0ff0 */ 0, 0, 0, 0, 0, 0,241,255, 74, 2, 0, 0,125, 0,144, 0,
/* 0x1000 */ 89, 2, 0, 0, 0, 0,159, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x1000 */ 0, 0, 0, 0, 0, 0,241,255, 88, 2, 0, 0, 91, 0,144, 0,
/* 0x1010 */ 103, 2, 0, 0, 2, 0,159, 0, 0, 0, 0, 0, 0, 0,241,255, /* 0x1010 */ 0, 0, 0, 0, 0, 0,241,255,100, 2, 0, 0, 0, 0,159, 0,
/* 0x1020 */ 123, 2, 0, 0, 16, 2, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, /* 0x1020 */ 0, 0, 0, 0, 0, 0,241,255,114, 2, 0, 0, 2, 0,159, 0,
/* 0x1030 */ 35, 0, 0, 0, 20, 2, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, /* 0x1030 */ 0, 0, 0, 0, 0, 0,241,255,134, 2, 0, 0, 24, 2, 0, 0,
/* 0x1040 */ 126, 2, 0, 0,164, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x1040 */ 0, 0, 0, 0, 1, 0, 1, 0, 35, 0, 0, 0, 28, 2, 0, 0,
/* 0x1050 */ 134, 2, 0, 0,140, 2, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x1050 */ 0, 0, 0, 0, 2, 0, 1, 0,137, 2, 0, 0,172, 2, 0, 0,
/* 0x1060 */ 123, 2, 0, 0,164, 2, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, /* 0x1060 */ 0, 0, 0, 0, 0, 0, 1, 0,145, 2, 0, 0,148, 2, 0, 0,
/* 0x1070 */ 35, 0, 0, 0,168, 2, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, /* 0x1070 */ 0, 0, 0, 0, 0, 0, 1, 0,134, 2, 0, 0,172, 2, 0, 0,
/* 0x1080 */ 142, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,241,255, /* 0x1080 */ 0, 0, 0, 0, 1, 0, 1, 0, 35, 0, 0, 0,176, 2, 0, 0,
/* 0x1090 */ 167, 2, 0, 0, 56, 3, 0, 0, 32, 0, 0, 0, 2, 0, 1, 0, /* 0x1090 */ 0, 0, 0, 0, 2, 0, 1, 0,153, 2, 0, 0, 0, 0, 0, 0,
/* 0x10a0 */ 35, 0, 0, 0, 56, 3, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, /* 0x10a0 */ 0, 0, 0, 0, 4, 0,241,255,178, 2, 0, 0, 64, 3, 0, 0,
/* 0x10b0 */ 123, 2, 0, 0, 96, 3, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, /* 0x10b0 */ 32, 0, 0, 0, 2, 0, 1, 0, 35, 0, 0, 0, 64, 3, 0, 0,
/* 0x10c0 */ 175, 2, 0, 0,100, 3, 0, 0, 96, 0, 0, 0, 2, 0, 1, 0, /* 0x10c0 */ 0, 0, 0, 0, 2, 0, 1, 0,134, 2, 0, 0,104, 3, 0, 0,
/* 0x10d0 */ 35, 0, 0, 0,100, 3, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, /* 0x10d0 */ 0, 0, 0, 0, 1, 0, 1, 0,186, 2, 0, 0,108, 3, 0, 0,
/* 0x10e0 */ 181, 2, 0, 0,196, 3, 0, 0, 72, 1, 0, 0, 2, 0, 1, 0, /* 0x10e0 */ 96, 0, 0, 0, 2, 0, 1, 0, 35, 0, 0, 0,108, 3, 0, 0,
/* 0x10f0 */ 123, 2, 0, 0, 8, 5, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, /* 0x10f0 */ 0, 0, 0, 0, 2, 0, 1, 0,192, 2, 0, 0,204, 3, 0, 0,
/* 0x1100 */ 194, 2, 0, 0, 12, 5, 0, 0,104, 4, 0, 0, 2, 0, 1, 0, /* 0x1100 */ 72, 1, 0, 0, 2, 0, 1, 0,134, 2, 0, 0, 16, 5, 0, 0,
/* 0x1110 */ 35, 0, 0, 0, 12, 5, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, /* 0x1110 */ 0, 0, 0, 0, 1, 0, 1, 0,205, 2, 0, 0, 20, 5, 0, 0,
/* 0x1120 */ 123, 2, 0, 0,108, 9, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, /* 0x1120 */ 104, 4, 0, 0, 2, 0, 1, 0, 35, 0, 0, 0, 20, 5, 0, 0,
/* 0x1130 */ 35, 0, 0, 0,116, 9, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, /* 0x1130 */ 0, 0, 0, 0, 2, 0, 1, 0,134, 2, 0, 0,116, 9, 0, 0,
/* 0x1140 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0,241,255, /* 0x1140 */ 0, 0, 0, 0, 1, 0, 1, 0, 35, 0, 0, 0,124, 9, 0, 0,
/* 0x1150 */ 123, 2, 0, 0, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x1150 */ 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x1160 */ 123, 2, 0, 0,120,131, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, /* 0x1160 */ 0, 0, 0, 0, 4, 0,241,255,134, 2, 0, 0, 64,128, 0, 0,
/* 0x1170 */ 202, 2, 0, 0, 88, 3, 0, 0, 12, 0, 0, 0, 18, 0, 1, 0, /* 0x1170 */ 0, 0, 0, 0, 0, 0, 1, 0,134, 2, 0, 0,128,131, 0, 0,
/* 0x1180 */ 216, 2, 0, 0, 92, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x1180 */ 0, 0, 0, 0, 0, 0, 1, 0,213, 2, 0, 0, 96, 3, 0, 0,
/* 0x1190 */ 223, 2, 0, 0,188, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x1190 */ 12, 0, 0, 0, 18, 0, 1, 0,227, 2, 0, 0,100, 2, 0, 0,
/* 0x11a0 */ 238, 2, 0, 0, 68, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x11a0 */ 0, 0, 0, 0, 16, 0, 1, 0,234, 2, 0, 0,196, 2, 0, 0,
/* 0x11b0 */ 245, 2, 0, 0, 84, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x11b0 */ 0, 0, 0, 0, 16, 0, 1, 0,249, 2, 0, 0, 76, 2, 0, 0,
/* 0x11c0 */ 254, 2, 0, 0,220, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x11c0 */ 0, 0, 0, 0, 16, 0, 1, 0, 0, 3, 0, 0, 92, 2, 0, 0,
/* 0x11d0 */ 8, 3, 0, 0,124, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x11d0 */ 0, 0, 0, 0, 16, 0, 1, 0, 9, 3, 0, 0,228, 2, 0, 0,
/* 0x11e0 */ 13, 3, 0, 0,176, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x11e0 */ 0, 0, 0, 0, 16, 0, 1, 0, 19, 3, 0, 0,132, 2, 0, 0,
/* 0x11f0 */ 27, 3, 0, 0,196, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x11f0 */ 0, 0, 0, 0, 16, 0, 1, 0, 24, 3, 0, 0,184, 2, 0, 0,
/* 0x1200 */ 41, 3, 0, 0, 36, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x1200 */ 0, 0, 0, 0, 16, 0, 1, 0, 38, 3, 0, 0,204, 2, 0, 0,
/* 0x1210 */ 47, 3, 0, 0, 28, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x1210 */ 0, 0, 0, 0, 16, 0, 1, 0, 52, 3, 0, 0, 44, 2, 0, 0,
/* 0x1220 */ 52, 3, 0, 0, 60, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x1220 */ 0, 0, 0, 0, 16, 0, 1, 0, 58, 3, 0, 0, 36, 2, 0, 0,
/* 0x1230 */ 59, 3, 0, 0, 16, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x1230 */ 0, 0, 0, 0, 16, 0, 1, 0, 63, 3, 0, 0, 68, 2, 0, 0,
/* 0x1240 */ 67, 3, 0, 0,100, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x1240 */ 0, 0, 0, 0, 16, 0, 1, 0, 70, 3, 0, 0, 24, 2, 0, 0,
/* 0x1250 */ 76, 3, 0, 0, 24, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x1250 */ 0, 0, 0, 0, 16, 0, 1, 0, 78, 3, 0, 0,108, 2, 0, 0,
/* 0x1260 */ 81, 3, 0, 0,116, 9, 0, 0, 52, 1, 0, 0, 18, 0, 1, 0, /* 0x1260 */ 0, 0, 0, 0, 16, 0, 1, 0, 87, 3, 0, 0, 32, 2, 0, 0,
/* 0x1270 */ 90, 3, 0, 0, 76, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x1270 */ 0, 0, 0, 0, 16, 0, 1, 0, 92, 3, 0, 0,124, 9, 0, 0,
/* 0x1280 */ 94, 3, 0, 0, 44, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x1280 */ 52, 1, 0, 0, 18, 0, 1, 0,101, 3, 0, 0, 84, 2, 0, 0,
/* 0x1290 */ 99, 3, 0, 0,220, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x1290 */ 0, 0, 0, 0, 16, 0, 1, 0,105, 3, 0, 0, 52, 2, 0, 0,
/* 0x12a0 */ 105, 3, 0, 0,100, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x12a0 */ 0, 0, 0, 0, 16, 0, 1, 0,110, 3, 0, 0,228, 2, 0, 0,
/* 0x12b0 */ 114, 3, 0, 0, 52, 2, 0, 0, 0, 0, 0, 0, 16, 0, 1, 0, /* 0x12b0 */ 0, 0, 0, 0, 16, 0, 1, 0,116, 3, 0, 0,108, 2, 0, 0,
/* 0x12c0 */ 0,115,114, 99, 47, 97,114,109, 46,118, 52, 97, 45,108,105,110, /* 0x12c0 */ 0, 0, 0, 0, 16, 0, 1, 0,125, 3, 0, 0, 60, 2, 0, 0,
/* 0x12d0 */ 117,120, 46,101,108,102, 45,102,111,108,100, 46, 83, 0, 78, 66, /* 0x12d0 */ 0, 0, 0, 0, 16, 0, 1, 0, 0,115,114, 99, 47, 97,114,109,
/* 0x12e0 */ 80, 87, 0, 36, 97, 0, 95, 95, 78, 82, 95, 83, 89, 83, 67, 65, /* 0x12e0 */ 46,118, 52, 97, 45,108,105,110,117,120, 46,101,108,102, 45,102,
/* 0x12f0 */ 76, 76, 95, 66, 65, 83, 69, 0,115,122, 95, 69,108,102, 51, 50, /* 0x12f0 */ 111,108,100, 46, 83, 0, 78, 66, 80, 87, 0, 36, 97, 0, 95, 95,
/* 0x1300 */ 95, 69,104,100,114, 0,101, 95,116,121,112,101, 0, 69, 84, 95, /* 0x1300 */ 78, 82, 95, 83, 89, 83, 67, 65, 76, 76, 95, 66, 65, 83, 69, 0,
/* 0x1310 */ 69, 88, 69, 67, 0,115,122, 95, 69,108,102, 51, 50, 95, 80,104, /* 0x1310 */ 115,122, 95, 69,108,102, 51, 50, 95, 69,104,100,114, 0,101, 95,
/* 0x1320 */ 100,114, 0,112, 95,118, 97,100,100,114, 0,112, 95,109,101,109, /* 0x1320 */ 116,121,112,101, 0, 69, 84, 95, 69, 88, 69, 67, 0,115,122, 95,
/* 0x1330 */ 115,122, 0,115,122, 95,108, 95,105,110,102,111, 0,115,122, 95, /* 0x1330 */ 69,108,102, 51, 50, 95, 80,104,100,114, 0,112, 95,118, 97,100,
/* 0x1340 */ 112, 95,105,110,102,111, 0,115,122, 95, 98, 95,105,110,102,111, /* 0x1340 */ 100,114, 0,112, 95,109,101,109,115,122, 0,115,122, 95,108, 95,
/* 0x1350 */ 0,115,122, 95,117,110, 99, 0,115,122, 95, 99,112,114, 0, 98, /* 0x1350 */ 105,110,102,111, 0,115,122, 95,112, 95,105,110,102,111, 0,115,
/* 0x1360 */ 95,109,101,116,104,111,100, 0, 77, 65, 80, 95, 65, 78, 79, 78, /* 0x1360 */ 122, 95, 98, 95,105,110,102,111, 0,115,122, 95,117,110, 99, 0,
/* 0x1370 */ 89, 77, 79, 85, 83, 0, 77, 65, 80, 95, 80, 82, 73, 86, 65, 84, /* 0x1370 */ 115,122, 95, 99,112,114, 0, 98, 95,109,101,116,104,111,100, 0,
/* 0x1380 */ 69, 0, 77, 65, 80, 95, 70, 73, 88, 69, 68, 0, 80, 82, 79, 84, /* 0x1380 */ 77, 65, 80, 95, 65, 78, 79, 78, 89, 77, 79, 85, 83, 0, 77, 65,
/* 0x1390 */ 95, 82, 69, 65, 68, 0, 79, 95, 82, 68, 79, 78, 76, 89, 0, 80, /* 0x1390 */ 80, 95, 80, 82, 73, 86, 65, 84, 69, 0, 77, 65, 80, 95, 70, 73,
/* 0x13a0 */ 65, 71, 69, 95, 83, 72, 73, 70, 84, 0, 80, 65, 71, 69, 95, 83, /* 0x13a0 */ 88, 69, 68, 0, 80, 82, 79, 84, 95, 82, 69, 65, 68, 0, 79, 95,
/* 0x13b0 */ 73, 90, 69, 0, 80, 65, 84, 72, 77, 65, 88, 0, 80, 65, 84, 72, /* 0x13b0 */ 82, 68, 79, 78, 76, 89, 0, 80, 65, 71, 69, 95, 83, 72, 73, 70,
/* 0x13c0 */ 95, 77, 65, 88, 0, 77, 65, 88, 95, 69, 76, 70, 95, 72, 68, 82, /* 0x13c0 */ 84, 0, 80, 65, 71, 69, 95, 83, 73, 90, 69, 0, 80, 65, 84, 72,
/* 0x13d0 */ 95, 51, 50, 0, 77, 65, 88, 95, 69, 76, 70, 95, 72, 68, 82, 95, /* 0x13d0 */ 77, 65, 88, 0, 80, 65, 84, 72, 95, 77, 65, 88, 0, 77, 65, 88,
/* 0x13e0 */ 54, 52, 0,109,102,108,103, 95,100, 97,116, 97, 0, 83, 80, 95, /* 0x13e0 */ 95, 69, 76, 70, 95, 72, 68, 82, 95, 51, 50, 0, 77, 65, 88, 95,
/* 0x13f0 */ 102,100, 0,102,111,108,100, 95, 98,101,103,105,110, 0, 70, 95, /* 0x13f0 */ 69, 76, 70, 95, 72, 68, 82, 95, 54, 52, 0,109,102,108,103, 95,
/* 0x1400 */ 76, 69, 78, 88, 0, 70, 95, 65, 68, 82, 88, 0, 70, 95,101,108, /* 0x1400 */ 100, 97,116, 97, 0, 83, 80, 95,102,100, 0,102,111,108,100, 95,
/* 0x1410 */ 102, 97,100,100,114, 0, 70, 95,102,100, 0, 70, 95, 65, 68, 82, /* 0x1410 */ 98,101,103,105,110, 0, 70, 95, 76, 69, 78, 88, 0, 70, 95, 65,
/* 0x1420 */ 85, 0, 70, 95, 76, 69, 78, 85, 0, 70, 95,102, 95,101,120,112, /* 0x1420 */ 68, 82, 88, 0, 70, 95,101,108,102, 97,100,100,114, 0, 70, 95,
/* 0x1430 */ 0, 70, 95,101, 95, 97,117,120,118, 0, 70, 95,101,110,116,114, /* 0x1430 */ 102,100, 0, 70, 95, 65, 68, 82, 85, 0, 70, 95, 76, 69, 78, 85,
/* 0x1440 */ 121, 0,108,105,110,107, 95,111,107, 0, 70, 95,100,101,108,116, /* 0x1440 */ 0, 70, 95,102, 95,101,120,112, 0, 70, 95,101, 95, 97,117,120,
/* 0x1450 */ 97, 0,102, 95,117,110,102,105,108,116,101,114, 0,115,119,101, /* 0x1450 */ 118, 0, 70, 95,101,110,116,114,121, 0,108,105,110,107, 95,111,
/* 0x1460 */ 101,112, 0,112,114,111, 99, 95,115,101,108,102, 95,101,120,101, /* 0x1460 */ 107, 0, 70, 95,100,101,108,116, 97, 0,102, 95,117,110,102,105,
/* 0x1470 */ 0,112,114,111, 99, 95,115,101,108,102, 95, 97,108,105,103,110, /* 0x1470 */ 108,116,101,114, 0,110,111, 95,109, 97,112, 95,112,115,101, 0,
/* 0x1480 */ 0,116,111,112, 95,117,110,102, 0,116,115,116, 95,117,110,102, /* 0x1480 */ 115,119,101,101,112, 0,112,114,111, 99, 95,115,101,108,102, 95,
/* 0x1490 */ 0, 95, 95, 78, 82, 95,101,120,105,116, 0, 95, 95, 78, 82, 95, /* 0x1490 */ 101,120,101, 0,112,114,111, 99, 95,115,101,108,102, 95, 97,108,
/* 0x14a0 */ 114,101, 97,100, 0, 95, 95, 78, 82, 95,119,114,105,116,101, 0, /* 0x14a0 */ 105,103,110, 0,116,111,112, 95,117,110,102, 0,116,115,116, 95,
/* 0x14b0 */ 95, 95, 78, 82, 95,111,112,101,110, 0, 95, 95, 78, 82, 95, 99, /* 0x14b0 */ 117,110,102, 0, 95, 95, 78, 82, 95,101,120,105,116, 0, 95, 95,
/* 0x14c0 */ 108,111,115,101, 0, 95, 95, 78, 82, 95,117,110,108,105,110,107, /* 0x14c0 */ 78, 82, 95,114,101, 97,100, 0, 95, 95, 78, 82, 95,119,114,105,
/* 0x14d0 */ 0, 95, 95, 78, 82, 95,103,101,116,112,105,100, 0, 95, 95, 78, /* 0x14d0 */ 116,101, 0, 95, 95, 78, 82, 95,111,112,101,110, 0, 95, 95, 78,
/* 0x14e0 */ 82, 95, 98,114,107, 0, 95, 95, 78, 82, 95,114,101, 97,100,108, /* 0x14e0 */ 82, 95, 99,108,111,115,101, 0, 95, 95, 78, 82, 95,117,110,108,
/* 0x14f0 */ 105,110,107, 0, 95, 95, 78, 82, 95,109,109, 97,112, 50, 0, 95, /* 0x14f0 */ 105,110,107, 0, 95, 95, 78, 82, 95,103,101,116,112,105,100, 0,
/* 0x1500 */ 95, 78, 82, 95,109,112,114,111,116,101, 99,116, 0, 95, 95, 78, /* 0x1500 */ 95, 95, 78, 82, 95, 98,114,107, 0, 95, 95, 78, 82, 95,114,101,
/* 0x1510 */ 82, 95,109,117,110,109, 97,112, 0, 95, 95, 65, 82, 77, 95, 78, /* 0x1510 */ 97,100,108,105,110,107, 0, 95, 95, 78, 82, 95,109,109, 97,112,
/* 0x1520 */ 82, 95, 66, 65, 83, 69, 0, 95, 95, 65, 82, 77, 95, 78, 82, 95, /* 0x1520 */ 50, 0, 95, 95, 78, 82, 95,109,112,114,111,116,101, 99,116, 0,
/* 0x1530 */ 99, 97, 99,104,101,102,108,117,115,104, 0, 36,100, 0,109, 95, /* 0x1530 */ 95, 95, 78, 82, 95,109,117,110,109, 97,112, 0, 95, 95, 65, 82,
/* 0x1540 */ 111,102,102, 52,107, 0,109,109, 97,112, 95,100,111, 0, 97,114, /* 0x1540 */ 77, 95, 78, 82, 95, 66, 65, 83, 69, 0, 95, 95, 65, 82, 77, 95,
/* 0x1550 */ 109, 46,118, 52, 97, 45,108,105,110,117,120, 46,101,108,102, 45, /* 0x1550 */ 78, 82, 95, 99, 97, 99,104,101,102,108,117,115,104, 0, 36,100,
/* 0x1560 */ 109, 97,105,110, 46, 99, 0, 97,117,120,118, 95,117,112, 0,120, /* 0x1560 */ 0,109, 95,111,102,102, 52,107, 0,109,109, 97,112, 95,100,111,
/* 0x1570 */ 114,101, 97,100, 0,117,110,112, 97, 99,107, 69,120,116,101,110, /* 0x1570 */ 0, 97,114,109, 46,118, 52, 97, 45,108,105,110,117,120, 46,101,
/* 0x1580 */ 116, 0,100,111, 95,120,109, 97,112, 0,103,101,116, 95,112, 97, /* 0x1580 */ 108,102, 45,109, 97,105,110, 46, 99, 0, 97,117,120,118, 95,117,
/* 0x1590 */ 103,101, 95,109, 97,115,107, 0,109,117,110,109, 97,112, 0,103, /* 0x1590 */ 112, 0,120,114,101, 97,100, 0,117,110,112, 97, 99,107, 69,120,
/* 0x15a0 */ 101,116, 95,115,121,115, 95,109,117,110,109, 97,112, 0,103,101, /* 0x15a0 */ 116,101,110,116, 0,100,111, 95,120,109, 97,112, 0,103,101,116,
/* 0x15b0 */ 116,112,105,100, 0,114,101, 97,100,108,105,110,107, 0, 95, 95, /* 0x15b0 */ 95,112, 97,103,101, 95,109, 97,115,107, 0,109,117,110,109, 97,
/* 0x15c0 */ 117,100,105,118,115,105, 51, 0,109,109, 97,112, 0, 95, 95, 99, /* 0x15c0 */ 112, 0,103,101,116, 95,115,121,115, 95,109,117,110,109, 97,112,
/* 0x15d0 */ 108,101, 97,114, 95, 99, 97, 99,104,101, 0,109,109, 97,112, 95, /* 0x15d0 */ 0,103,101,116,112,105,100, 0,114,101, 97,100,108,105,110,107,
/* 0x15e0 */ 112,114,105,118, 97,110,111,110, 0,119,114,105,116,101, 0,114, /* 0x15e0 */ 0, 95, 95,117,100,105,118,115,105, 51, 0,109,109, 97,112, 0,
/* 0x15f0 */ 101, 97,100, 0,117,110,108,105,110,107, 0,109,121, 95, 98,107, /* 0x15f0 */ 95, 95, 99,108,101, 97,114, 95, 99, 97, 99,104,101, 0,109,109,
/* 0x1600 */ 112,116, 0, 80,112,114,111,116,101, 99,116, 0,101,120,105,116, /* 0x1600 */ 97,112, 95,112,114,105,118, 97,110,111,110, 0,119,114,105,116,
/* 0x1610 */ 0,117,112,120, 95,109, 97,105,110, 0, 98,114,107, 0,111,112, /* 0x1610 */ 101, 0,114,101, 97,100, 0,117,110,108,105,110,107, 0,109,121,
/* 0x1620 */ 101,110, 0,100,105,118, 49, 48, 0,109,112,114,111,116,101, 99, /* 0x1620 */ 95, 98,107,112,116, 0, 80,112,114,111,116,101, 99,116, 0,101,
/* 0x1630 */ 116, 0, 99,108,111,115,101, 0, 36, 0, 0, 0, 1, 1, 0, 0, /* 0x1630 */ 120,105,116, 0,117,112,120, 95,109, 97,105,110, 0, 98,114,107,
/* 0x1640 */ 60, 0, 0, 0, 1, 1, 0, 0, 80, 0, 0, 0, 1, 1, 0, 0, /* 0x1640 */ 0,111,112,101,110, 0,100,105,118, 49, 48, 0,109,112,114,111,
/* 0x1650 */ 108, 0, 0, 0, 1, 89, 0, 0,152, 0, 0, 0, 1, 1, 0, 0, /* 0x1650 */ 116,101, 99,116, 0, 99,108,111,115,101, 0, 0, 36, 0, 0, 0,
/* 0x1660 */ 240, 0, 0, 0, 1, 1, 0, 0, 28, 1, 0, 0, 1,100, 0, 0, /* 0x1660 */ 1, 1, 0, 0, 60, 0, 0, 0, 1, 1, 0, 0, 80, 0, 0, 0,
/* 0x1670 */ 52, 1, 0, 0, 1,101, 0, 0, 60, 1, 0, 0, 1, 86, 0, 0, /* 0x1670 */ 1, 1, 0, 0,108, 0, 0, 0, 1, 90, 0, 0,152, 0, 0, 0,
/* 0x1680 */ 92, 1, 0, 0, 1, 91, 0, 0,100, 1, 0, 0, 1,105, 0, 0, /* 0x1680 */ 1, 1, 0, 0,240, 0, 0, 0, 1, 1, 0, 0, 28, 1, 0, 0,
/* 0x1690 */ 160, 1, 0, 0, 1, 1, 0, 0,236, 1, 0, 0, 1, 1, 0, 0, /* 0x1690 */ 1,101, 0, 0, 52, 1, 0, 0, 1,102, 0, 0, 60, 1, 0, 0,
/* 0x16a0 */ 8, 2, 0, 0, 1, 1, 0, 0,216, 2, 0, 0, 1, 1, 0, 0, /* 0x16a0 */ 1, 87, 0, 0, 72, 1, 0, 0, 1, 1, 0, 0,100, 1, 0, 0,
/* 0x16b0 */ 76, 3, 0, 0, 1, 1, 0, 0,128, 3, 0, 0, 1, 1, 0, 0, /* 0x16b0 */ 1, 92, 0, 0,108, 1, 0, 0, 1,106, 0, 0,168, 1, 0, 0,
/* 0x16c0 */ 136, 3, 0, 0, 1, 99, 0, 0,164, 3, 0, 0, 1, 1, 0, 0, /* 0x16c0 */ 1, 1, 0, 0,244, 1, 0, 0, 1, 1, 0, 0, 16, 2, 0, 0,
/* 0x16d0 */ 220, 3, 0, 0, 1, 1, 0, 0,236, 3, 0, 0, 1, 1, 0, 0, /* 0x16d0 */ 1, 1, 0, 0,224, 2, 0, 0, 1, 1, 0, 0, 84, 3, 0, 0,
/* 0x16e0 */ 252, 3, 0, 0, 1, 1, 0, 0, 8, 4, 0, 0, 1, 1, 0, 0, /* 0x16e0 */ 1, 1, 0, 0,136, 3, 0, 0, 1, 1, 0, 0,144, 3, 0, 0,
/* 0x16f0 */ 20, 4, 0, 0, 1, 1, 0, 0, 24, 4, 0, 0, 1, 1, 0, 0, /* 0x16f0 */ 1,100, 0, 0,172, 3, 0, 0, 1, 1, 0, 0,228, 3, 0, 0,
/* 0x1700 */ 32, 4, 0, 0, 1, 1, 0, 0, 40, 4, 0, 0, 1, 99, 0, 0, /* 0x1700 */ 1, 1, 0, 0,244, 3, 0, 0, 1, 1, 0, 0, 4, 4, 0, 0,
/* 0x1710 */ 48, 4, 0, 0, 1, 1, 0, 0, 60, 4, 0, 0, 1, 1, 0, 0, /* 0x1710 */ 1, 1, 0, 0, 16, 4, 0, 0, 1, 1, 0, 0, 28, 4, 0, 0,
/* 0x1720 */ 68, 4, 0, 0, 1, 1, 0, 0,108, 4, 0, 0, 1, 1, 0, 0, /* 0x1720 */ 1, 1, 0, 0, 32, 4, 0, 0, 1, 1, 0, 0, 40, 4, 0, 0,
/* 0x1730 */ 124, 4, 0, 0, 1, 1, 0, 0,140, 4, 0, 0, 1, 1, 0, 0, /* 0x1730 */ 1, 1, 0, 0, 48, 4, 0, 0, 1,100, 0, 0, 56, 4, 0, 0,
/* 0x1740 */ 148, 4, 0, 0, 1, 1, 0, 0,160, 4, 0, 0, 1, 1, 0, 0, /* 0x1740 */ 1, 1, 0, 0, 68, 4, 0, 0, 1, 1, 0, 0, 76, 4, 0, 0,
/* 0x1750 */ 204, 4, 0, 0, 1, 1, 0, 0,220, 4, 0, 0, 1, 1, 0, 0, /* 0x1750 */ 1, 1, 0, 0,116, 4, 0, 0, 1, 1, 0, 0,132, 4, 0, 0,
/* 0x1760 */ 252, 4, 0, 0, 1, 1, 0, 0, 48, 5, 0, 0, 1, 1, 0, 0, /* 0x1760 */ 1, 1, 0, 0,148, 4, 0, 0, 1, 1, 0, 0,156, 4, 0, 0,
/* 0x1770 */ 96, 5, 0, 0, 1, 86, 0, 0,100, 5, 0, 0, 1, 1, 0, 0, /* 0x1770 */ 1, 1, 0, 0,168, 4, 0, 0, 1, 1, 0, 0,212, 4, 0, 0,
/* 0x1780 */ 140, 5, 0, 0, 1, 1, 0, 0,152, 5, 0, 0, 1, 1, 0, 0, /* 0x1780 */ 1, 1, 0, 0,228, 4, 0, 0, 1, 1, 0, 0, 4, 5, 0, 0,
/* 0x1790 */ 164, 5, 0, 0, 1, 1, 0, 0,204, 5, 0, 0, 1, 1, 0, 0, /* 0x1790 */ 1, 1, 0, 0, 56, 5, 0, 0, 1, 1, 0, 0,104, 5, 0, 0,
/* 0x17a0 */ 248, 5, 0, 0, 1, 93, 0, 0, 24, 6, 0, 0, 1, 1, 0, 0, /* 0x17a0 */ 1, 87, 0, 0,108, 5, 0, 0, 1, 1, 0, 0,148, 5, 0, 0,
/* 0x17b0 */ 36, 6, 0, 0, 1, 1, 0, 0, 48, 6, 0, 0, 1, 1, 0, 0, /* 0x17b0 */ 1, 1, 0, 0,160, 5, 0, 0, 1, 1, 0, 0,172, 5, 0, 0,
/* 0x17c0 */ 68, 6, 0, 0, 1, 1, 0, 0, 72, 6, 0, 0, 1, 1, 0, 0, /* 0x17c0 */ 1, 1, 0, 0,212, 5, 0, 0, 1, 1, 0, 0, 0, 6, 0, 0,
/* 0x17d0 */ 84, 6, 0, 0, 1, 1, 0, 0, 96, 6, 0, 0, 1, 1, 0, 0, /* 0x17d0 */ 1, 94, 0, 0, 32, 6, 0, 0, 1, 1, 0, 0, 44, 6, 0, 0,
/* 0x17e0 */ 108, 6, 0, 0, 1, 1, 0, 0,120, 6, 0, 0, 1, 1, 0, 0, /* 0x17e0 */ 1, 1, 0, 0, 56, 6, 0, 0, 1, 1, 0, 0, 76, 6, 0, 0,
/* 0x17f0 */ 148, 6, 0, 0, 1, 1, 0, 0,164, 6, 0, 0, 1, 1, 0, 0, /* 0x17f0 */ 1, 1, 0, 0, 80, 6, 0, 0, 1, 1, 0, 0, 92, 6, 0, 0,
/* 0x1800 */ 180, 6, 0, 0, 1, 1, 0, 0, 12, 7, 0, 0, 1, 1, 0, 0, /* 0x1800 */ 1, 1, 0, 0,104, 6, 0, 0, 1, 1, 0, 0,116, 6, 0, 0,
/* 0x1810 */ 40, 7, 0, 0, 1, 93, 0, 0, 48, 7, 0, 0, 1, 1, 0, 0, /* 0x1810 */ 1, 1, 0, 0,128, 6, 0, 0, 1, 1, 0, 0,156, 6, 0, 0,
/* 0x1820 */ 76, 7, 0, 0, 1, 1, 0, 0, 80, 7, 0, 0, 1, 1, 0, 0, /* 0x1820 */ 1, 1, 0, 0,172, 6, 0, 0, 1, 1, 0, 0,188, 6, 0, 0,
/* 0x1830 */ 120, 7, 0, 0, 1, 91, 0, 0,128, 7, 0, 0, 1, 1, 0, 0, /* 0x1830 */ 1, 1, 0, 0, 20, 7, 0, 0, 1, 1, 0, 0, 48, 7, 0, 0,
/* 0x1840 */ 148, 7, 0, 0, 1, 1, 0, 0,156, 7, 0, 0, 1, 1, 0, 0, /* 0x1840 */ 1, 94, 0, 0, 56, 7, 0, 0, 1, 1, 0, 0, 84, 7, 0, 0,
/* 0x1850 */ 180, 7, 0, 0, 1, 1, 0, 0,192, 7, 0, 0, 1, 1, 0, 0, /* 0x1850 */ 1, 1, 0, 0, 88, 7, 0, 0, 1, 1, 0, 0,128, 7, 0, 0,
/* 0x1860 */ 196, 7, 0, 0, 1, 87, 0, 0,212, 7, 0, 0, 1, 1, 0, 0, /* 0x1860 */ 1, 92, 0, 0,136, 7, 0, 0, 1, 1, 0, 0,156, 7, 0, 0,
/* 0x1870 */ 224, 7, 0, 0, 1, 1, 0, 0,244, 7, 0, 0, 1, 1, 0, 0, /* 0x1870 */ 1, 1, 0, 0,164, 7, 0, 0, 1, 1, 0, 0,188, 7, 0, 0,
/* 0x1880 */ 24, 8, 0, 0, 1, 1, 0, 0, 28, 8, 0, 0, 1, 1, 0, 0, /* 0x1880 */ 1, 1, 0, 0,200, 7, 0, 0, 1, 1, 0, 0,204, 7, 0, 0,
/* 0x1890 */ 60, 8, 0, 0, 1, 91, 0, 0, 68, 8, 0, 0, 1, 1, 0, 0, /* 0x1890 */ 1, 88, 0, 0,220, 7, 0, 0, 1, 1, 0, 0,232, 7, 0, 0,
/* 0x18a0 */ 72, 8, 0, 0, 1, 1, 0, 0,104, 8, 0, 0, 1, 92, 0, 0, /* 0x18a0 */ 1, 1, 0, 0,252, 7, 0, 0, 1, 1, 0, 0, 32, 8, 0, 0,
/* 0x18b0 */ 108, 8, 0, 0, 1, 1, 0, 0,124, 8, 0, 0, 1, 98, 0, 0, /* 0x18b0 */ 1, 1, 0, 0, 36, 8, 0, 0, 1, 1, 0, 0, 68, 8, 0, 0,
/* 0x18c0 */ 132, 8, 0, 0, 1, 1, 0, 0,140, 8, 0, 0, 1, 99, 0, 0, /* 0x18c0 */ 1, 92, 0, 0, 76, 8, 0, 0, 1, 1, 0, 0, 80, 8, 0, 0,
/* 0x18d0 */ 168, 8, 0, 0, 1, 1, 0, 0,188, 8, 0, 0, 1, 93, 0, 0, /* 0x18d0 */ 1, 1, 0, 0,112, 8, 0, 0, 1, 93, 0, 0,116, 8, 0, 0,
/* 0x18e0 */ 196, 8, 0, 0, 1, 1, 0, 0,200, 8, 0, 0, 1, 1, 0, 0, /* 0x18e0 */ 1, 1, 0, 0,132, 8, 0, 0, 1, 99, 0, 0,140, 8, 0, 0,
/* 0x18f0 */ 232, 8, 0, 0, 1, 1, 0, 0, 28, 9, 0, 0, 1, 1, 0, 0, /* 0x18f0 */ 1, 1, 0, 0,148, 8, 0, 0, 1,100, 0, 0,176, 8, 0, 0,
/* 0x1900 */ 32, 9, 0, 0, 1, 1, 0, 0, 68, 9, 0, 0, 1, 92, 0, 0, /* 0x1900 */ 1, 1, 0, 0,196, 8, 0, 0, 1, 94, 0, 0,204, 8, 0, 0,
/* 0x1910 */ 84, 9, 0, 0, 1, 98, 0, 0,100, 9, 0, 0, 1, 1, 0, 0, /* 0x1910 */ 1, 1, 0, 0,208, 8, 0, 0, 1, 1, 0, 0,240, 8, 0, 0,
/* 0x1920 */ 104, 9, 0, 0, 1, 1, 0, 0,164, 9, 0, 0, 1, 1, 0, 0, /* 0x1920 */ 1, 1, 0, 0, 36, 9, 0, 0, 1, 1, 0, 0, 40, 9, 0, 0,
/* 0x1930 */ 220, 9, 0, 0, 1, 1, 0, 0,240, 9, 0, 0, 1, 1, 0, 0, /* 0x1930 */ 1, 1, 0, 0, 76, 9, 0, 0, 1, 93, 0, 0, 92, 9, 0, 0,
/* 0x1940 */ 0, 10, 0, 0, 1, 1, 0, 0, 12, 10, 0, 0, 1, 1, 0, 0, /* 0x1940 */ 1, 99, 0, 0,108, 9, 0, 0, 1, 1, 0, 0,112, 9, 0, 0,
/* 0x1950 */ 36, 10, 0, 0, 1,102, 0, 0, 44, 10, 0, 0, 1, 1, 0, 0, /* 0x1950 */ 1, 1, 0, 0,172, 9, 0, 0, 1, 1, 0, 0,228, 9, 0, 0,
/* 0x1960 */ 56, 10, 0, 0, 1, 95, 0, 0, 64, 10, 0, 0, 1, 1, 0, 0, /* 0x1960 */ 1, 1, 0, 0,248, 9, 0, 0, 1, 1, 0, 0, 8, 10, 0, 0,
/* 0x1970 */ 72, 10, 0, 0, 1, 99, 0, 0,104, 10, 0, 0, 1, 1, 0, 0, /* 0x1970 */ 1, 1, 0, 0, 20, 10, 0, 0, 1, 1, 0, 0, 44, 10, 0, 0,
/* 0x1980 */ 124, 10, 0, 0, 1, 1, 0, 0,132, 10, 0, 0, 1,105, 0, 0, /* 0x1980 */ 1,103, 0, 0, 52, 10, 0, 0, 1, 1, 0, 0, 64, 10, 0, 0,
/* 0x1990 */ 136, 10, 0, 0, 1, 1, 0, 0,152, 10, 0, 0, 1, 1, 0, 0 /* 0x1990 */ 1, 96, 0, 0, 72, 10, 0, 0, 1, 1, 0, 0, 80, 10, 0, 0,
/* 0x19a0 */ 1,100, 0, 0,112, 10, 0, 0, 1, 1, 0, 0,132, 10, 0, 0,
/* 0x19b0 */ 1, 1, 0, 0,140, 10, 0, 0, 1,106, 0, 0,144, 10, 0, 0,
/* 0x19c0 */ 1, 1, 0, 0,160, 10, 0, 0, 1, 1, 0, 0
}; };
+576 -581
View File
File diff suppressed because it is too large Load Diff
+173 -173
View File
@@ -1,5 +1,5 @@
/* arm.v5a-linux.elf-fold.h /* arm.v5a-linux.elf-fold.h
created from arm.v5a-linux.elf-fold.bin, 3028 (0xbd4) bytes created from arm.v5a-linux.elf-fold.bin, 3036 (0xbdc) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -32,17 +32,17 @@
/* clang-format off */ /* clang-format off */
#define STUB_ARM_V5A_LINUX_ELF_FOLD_SIZE 3028 #define STUB_ARM_V5A_LINUX_ELF_FOLD_SIZE 3036
#define STUB_ARM_V5A_LINUX_ELF_FOLD_ADLER32 0x785cee88 #define STUB_ARM_V5A_LINUX_ELF_FOLD_ADLER32 0xd9bbf0b1
#define STUB_ARM_V5A_LINUX_ELF_FOLD_CRC32 0x2ef2bf97 #define STUB_ARM_V5A_LINUX_ELF_FOLD_CRC32 0x0d61dcce
unsigned char stub_arm_v5a_linux_elf_fold[3028] = { unsigned char stub_arm_v5a_linux_elf_fold[3036] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 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, /* 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, /* 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, /* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0,
/* 0x0040 */ 0,128, 0, 0,212, 11, 0, 0,212, 11, 0, 0, 5, 0, 0, 0, /* 0x0040 */ 0,128, 0, 0,220, 11, 0, 0,220, 11, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0,128, 0, 0, 1, 0, 0, 0,212, 11, 0, 0, 0, 0, 0, 0, /* 0x0050 */ 0,128, 0, 0, 1, 0, 0, 0,220, 11, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, /* 0x0070 */ 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 34, 0, 0, 0,192, 31,189,232, 13, 16,160,225, 1,218, 77,226, /* 0x0080 */ 34, 0, 0, 0,192, 31,189,232, 13, 16,160,225, 1,218, 77,226,
@@ -51,7 +51,7 @@ unsigned char stub_arm_v5a_linux_elf_fold[3028] = {
/* 0x00b0 */ 4, 48,145,228, 0, 0, 83,227, 4, 48,128,228,251,255,255, 26, /* 0x00b0 */ 4, 48,145,228, 0, 0, 83,227, 4, 48,128,228,251,255,255, 26,
/* 0x00c0 */ 1, 80,160,225, 12, 0,177,232, 0, 0, 82,227, 12, 0,160,232, /* 0x00c0 */ 1, 80,160,225, 12, 0,177,232, 0, 0, 82,227, 12, 0,160,232,
/* 0x00d0 */ 251,255,255, 26, 1, 96,160,225, 0,144,160,225, 1, 42,160,227, /* 0x00d0 */ 251,255,255, 26, 1, 96,160,225, 0,144,160,225, 1, 42,160,227,
/* 0x00e0 */ 0, 16,160,225, 14, 0,160,225, 1, 32, 66,226,144, 0, 0,235, /* 0x00e0 */ 0, 16,160,225, 14, 0,160,225, 1, 32, 66,226,146, 0, 0,235,
/* 0x00f0 */ 1, 10,112,227, 14, 16,160, 33, 14, 0,160, 35, 0, 32,129,224, /* 0x00f0 */ 1, 10,112,227, 14, 16,160, 33, 14, 0,160, 35, 0, 32,129,224,
/* 0x0100 */ 6, 0,160,225, 0, 48,160,227, 1, 48, 96,229, 1, 48,114,229, /* 0x0100 */ 6, 0,160,225, 0, 48,160,227, 1, 48, 96,229, 1, 48,114,229,
/* 0x0110 */ 1, 48, 96,229, 2, 0, 81,225,251,255,255, 26, 61, 48,160,227, /* 0x0110 */ 1, 48, 96,229, 2, 0, 81,225,251,255,255, 26, 61, 48,160,227,
@@ -61,170 +61,170 @@ unsigned char stub_arm_v5a_linux_elf_fold[3028] = {
/* 0x0150 */ 6, 48, 64,224, 5, 48,131,224, 9, 16,160,225, 24, 80,157,229, /* 0x0150 */ 6, 48, 64,224, 5, 48,131,224, 9, 16,160,225, 24, 80,157,229,
/* 0x0160 */ 24, 0,141,229, 4, 32, 49,229, 13, 0, 81,225, 4, 32, 32,229, /* 0x0160 */ 24, 0,141,229, 4, 32, 49,229, 13, 0, 81,225, 4, 32, 32,229,
/* 0x0170 */ 251,255,255, 26, 0,208,160,225, 16, 12,189,232, 10,220, 77,226, /* 0x0170 */ 251,255,255, 26, 0,208,160,225, 16, 12,189,232, 10,220, 77,226,
/* 0x0180 */ 4,144,154,229, 13,128,160,225, 0,112,154,229,176, 96,143,226, /* 0x0180 */ 4,144,154,229, 13,128,160,225, 0,112,154,229,184, 96,143,226,
/* 0x0190 */ 12,144,137,226,248, 15, 45,233, 15, 0,189,232, 63, 2, 0,235, /* 0x0190 */ 12,144,137,226,248, 15, 45,233, 15, 0,189,232, 65, 2, 0,235,
/* 0x01a0 */ 20,208,141,226, 10,220,141,226, 16, 0,141,229,104, 16,155,229, /* 0x01a0 */ 20,208,141,226, 10,220,141,226, 16, 0,141,229,104, 16,155,229,
/* 0x01b0 */ 11, 0,160,225, 89, 0, 0,235, 11, 0,160,225, 97, 0, 0,235, /* 0x01b0 */ 11, 0,160,225, 91, 0, 0,235, 11, 0,160,225, 99, 0, 0,235,
/* 0x01c0 */ 4, 64,157,228, 0, 80,160,227, 48, 0, 45,233, 2, 48,160,227, /* 0x01c0 */ 4, 64,157,228, 0, 0, 84,227, 8, 0, 0,186, 0, 80,160,227,
/* 0x01d0 */ 1, 32,160,227, 1, 26,160,227, 0, 0,160,227,103, 0, 0,235, /* 0x01d0 */ 48, 0, 45,233, 2, 48,160,227, 1, 32,160,227, 1, 26,160,227,
/* 0x01e0 */ 3, 0,189,232, 62, 0, 0,235, 7, 64,189,232, 0, 48,160,227, /* 0x01e0 */ 0, 0,160,227,103, 0, 0,235, 3, 0,189,232, 62, 0, 0,235,
/* 0x01f0 */ 0, 64,160,227, 0, 80,160,227, 0, 96,160,227, 0,128,160,227, /* 0x01f0 */ 7, 64,189,232, 0, 48,160,227, 0, 64,160,227, 0, 80,160,227,
/* 0x0200 */ 0,144,160,227, 0,160,160,227, 0,176,160,227, 1,199, 77,226, /* 0x0200 */ 0, 96,160,227, 0,128,160,227, 0,144,160,227, 0,160,160,227,
/* 0x0210 */ 32,112, 29,228, 0,112,141,229, 0,112,157,229, 13, 0, 92,225, /* 0x0210 */ 0,176,160,227, 1,199, 77,226, 32,112, 29,228, 0,112,141,229,
/* 0x0220 */ 250,255,255, 58, 1,215,141,226, 0,192,160,227, 91,112,160,227, /* 0x0220 */ 0,112,157,229, 13, 0, 92,225,250,255,255, 58, 1,215,141,226,
/* 0x0230 */ 14,240,160,225, 47,112,114,111, 99, 47,115,101,108,102, 47,101, /* 0x0230 */ 0,192,160,227, 91,112,160,227, 14,240,160,225, 47,112,114,111,
/* 0x0240 */ 120,101, 0, 0,255, 48, 3,226, 80, 0, 83,227, 14,240,160, 17, /* 0x0240 */ 99, 47,115,101,108,102, 47,101,120,101, 0, 0,255, 48, 3,226,
/* 0x0250 */ 33, 17,176,225, 0, 0, 80, 19, 14,240,160, 1, 1, 16, 65,226, /* 0x0250 */ 80, 0, 83,227, 14,240,160, 17, 33, 17,176,225, 0, 0, 80, 19,
/* 0x0260 */ 1, 33,144,231, 15, 52, 2,226, 11, 4, 83,227, 4, 0, 0, 26, /* 0x0260 */ 14,240,160, 1, 1, 16, 65,226, 1, 33,144,231, 15, 52, 2,226,
/* 0x0270 */ 255, 52, 2,226, 1, 32, 66,224,255, 36,194,227, 3, 32,130,225, /* 0x0270 */ 11, 4, 83,227, 4, 0, 0, 26,255, 52, 2,226, 1, 32, 66,224,
/* 0x0280 */ 1, 33,128,231, 0, 0, 81,227,243,255,255, 26, 14,240,160,225, /* 0x0280 */ 255, 36,194,227, 3, 32,130,225, 1, 33,128,231, 0, 0, 81,227,
/* 0x0290 */ 240, 1,240,231, 14,240,160,225, 7,192,160,225, 1,112,160,227, /* 0x0290 */ 243,255,255, 26, 14,240,160,225,240, 1,240,231, 14,240,160,225,
/* 0x02a0 */ 0, 0, 0,239, 12,112,160,225, 7,192,160,225, 3,112,160,227, /* 0x02a0 */ 7,192,160,225, 1,112,160,227, 0, 0, 0,239, 12,112,160,225,
/* 0x02b0 */ 0, 0, 0,239, 12,112,160,225, 14,240,160,225, 7,192,160,225, /* 0x02b0 */ 7,192,160,225, 3,112,160,227, 0, 0, 0,239, 12,112,160,225,
/* 0x02c0 */ 4,112,160,227, 0, 0, 0,239, 12,112,160,225, 14,240,160,225, /* 0x02c0 */ 14,240,160,225, 7,192,160,225, 4,112,160,227, 0, 0, 0,239,
/* 0x02d0 */ 7,192,160,225, 5,112,160,227, 0, 0, 0,239, 12,112,160,225, /* 0x02d0 */ 12,112,160,225, 14,240,160,225, 7,192,160,225, 5,112,160,227,
/* 0x02e0 */ 14,240,160,225, 7,192,160,225, 6,112,160,227, 0, 0, 0,239, /* 0x02e0 */ 0, 0, 0,239, 12,112,160,225, 14,240,160,225, 7,192,160,225,
/* 0x02f0 */ 12,112,160,225, 14,240,160,225, 7,192,160,225, 10,112,160,227, /* 0x02f0 */ 6,112,160,227, 0, 0, 0,239, 12,112,160,225, 14,240,160,225,
/* 0x0300 */ 0, 0, 0,239, 12,112,160,225, 14,240,160,225, 7,192,160,225, /* 0x0300 */ 7,192,160,225, 10,112,160,227, 0, 0, 0,239, 12,112,160,225,
/* 0x0310 */ 20,112,160,227, 0, 0, 0,239, 12,112,160,225, 14,240,160,225, /* 0x0310 */ 14,240,160,225, 7,192,160,225, 20,112,160,227, 0, 0, 0,239,
/* 0x0320 */ 7,192,160,225, 45,112,160,227, 0, 0, 0,239, 12,112,160,225, /* 0x0320 */ 12,112,160,225, 14,240,160,225, 7,192,160,225, 45,112,160,227,
/* 0x0330 */ 14,240,160,225, 7,192,160,225, 85,112,160,227, 0, 0, 0,239, /* 0x0330 */ 0, 0, 0,239, 12,112,160,225, 14,240,160,225, 7,192,160,225,
/* 0x0340 */ 12,112,160,225, 14,240,160,225, 7,192,160,225, 91,112,160,227, /* 0x0340 */ 85,112,160,227, 0, 0, 0,239, 12,112,160,225, 14,240,160,225,
/* 0x0350 */ 0, 0, 0,239, 12,112,160,225, 14,240,160,225, 80,192,159,229, /* 0x0350 */ 7,192,160,225, 91,112,160,227, 0, 0, 0,239, 12,112,160,225,
/* 0x0360 */ 0,192, 12,224, 12, 0, 64,224, 12, 16,129,224, 7,192,160,225, /* 0x0360 */ 14,240,160,225, 80,192,159,229, 0,192, 12,224, 12, 0, 64,224,
/* 0x0370 */ 125,112,160,227, 0, 0, 0,239, 12,112,160,225, 14,240,160,225, /* 0x0370 */ 12, 16,129,224, 7,192,160,225,125,112,160,227, 0, 0, 0,239,
/* 0x0380 */ 48, 64, 45,233, 16, 80,157,229, 12, 64,157,229, 37, 86,160,225, /* 0x0380 */ 12,112,160,225, 14,240,160,225, 48, 64, 45,233, 16, 80,157,229,
/* 0x0390 */ 28,192,159,229, 0,192, 12,224, 12, 0, 64,224, 12, 16,129,224, /* 0x0390 */ 12, 64,157,229, 37, 86,160,225, 28,192,159,229, 0,192, 12,224,
/* 0x03a0 */ 7,192,160,225,192,112,160,227, 0, 0, 0,239, 12,112,160,225, /* 0x03a0 */ 12, 0, 64,224, 12, 16,129,224, 7,192,160,225,192,112,160,227,
/* 0x03b0 */ 48,128,189,232,255, 15, 0, 0, 7,192,160,225,192,112,160,227, /* 0x03b0 */ 0, 0, 0,239, 12,112,160,225, 48,128,189,232,255, 15, 0, 0,
/* 0x03c0 */ 0, 0, 0,239, 12,112,160,225, 48,128,189,232, 0, 32,160,227, /* 0x03c0 */ 7,192,160,225,192,112,160,227, 0, 0, 0,239, 12,112,160,225,
/* 0x03d0 */ 7,192,160,225, 7,192,160,225, 2,112,160,227, 15,120,135,227, /* 0x03d0 */ 48,128,189,232, 0, 32,160,227, 7,192,160,225, 7,192,160,225,
/* 0x03e0 */ 0, 0, 0,239, 12,112,160,225, 12,112,160,225, 14,240,160,225, /* 0x03e0 */ 2,112,160,227, 15,120,135,227, 0, 0, 0,239, 12,112,160,225,
/* 0x03f0 */ 168, 0, 31,229, 14,240,160,225, 48, 64, 45,233,132, 67, 31,229, /* 0x03f0 */ 12,112,160,225, 14,240,160,225,168, 0, 31,229, 14,240,160,225,
/* 0x0400 */ 0, 80,160,227, 4, 48,131,225, 0, 64,224,227,223,255,255,234, /* 0x0400 */ 48, 64, 45,233,140, 67, 31,229, 0, 80,160,227, 4, 48,131,225,
/* 0x0410 */ 0,192,160,225, 1, 16, 65,224, 0, 32,160,225,128, 1,144,224, /* 0x0410 */ 0, 64,224,227,223,255,255,234, 0,192,160,225, 1, 16, 65,224,
/* 0x0420 */ 129, 17,161,224,162, 30,129,224, 0, 32,160,225, 0, 2,144,224, /* 0x0420 */ 0, 32,160,225,128, 1,144,224,129, 17,161,224,162, 30,129,224,
/* 0x0430 */ 1, 18,161,224, 34, 30,129,224, 0, 32,160,225, 0, 4,144,224, /* 0x0430 */ 0, 32,160,225, 0, 2,144,224, 1, 18,161,224, 34, 30,129,224,
/* 0x0440 */ 1, 20,161,224, 34, 28,129,224, 0, 32,160,225, 0, 8,144,224, /* 0x0440 */ 0, 32,160,225, 0, 4,144,224, 1, 20,161,224, 34, 28,129,224,
/* 0x0450 */ 1, 24,161,224, 34, 24,129,224,140, 15, 80,224,172, 16,193,224, /* 0x0450 */ 0, 32,160,225, 0, 8,144,224, 1, 24,161,224, 34, 24,129,224,
/* 0x0460 */ 12, 0,144,224, 0, 0,161,226, 14,240,160,225, 0, 0, 80,227, /* 0x0460 */ 140, 15, 80,224,172, 16,193,224, 12, 0,144,224, 0, 0,161,226,
/* 0x0470 */ 30,255, 47, 1, 0, 48,144,229, 1, 0, 83,225, 8, 0,128, 18, /* 0x0470 */ 14,240,160,225, 0, 0, 80,227, 30,255, 47, 1, 0, 48,144,229,
/* 0x0480 */ 251,255,255, 26, 4, 32,128,229, 30,255, 47,225, 0, 0,159,229, /* 0x0480 */ 1, 0, 83,225, 8, 0,128, 18,251,255,255, 26, 4, 32,128,229,
/* 0x0490 */ 30,255, 47,225, 0,240,255,255, 0, 48,144,229, 4,224, 45,229, /* 0x0490 */ 30,255, 47,225, 0, 0,159,229, 30,255, 47,225, 0,240,255,255,
/* 0x04a0 */ 2, 0, 83,225, 4, 48,144,229, 2,224,160,225, 3,192,160, 33, /* 0x04a0 */ 0, 48,144,229, 4,224, 45,229, 2, 0, 83,225, 4, 48,144,229,
/* 0x04b0 */ 2, 32,160, 33, 3, 0, 0, 42,127, 0,160,227,117,255,255,235, /* 0x04b0 */ 2,224,160,225, 3,192,160, 33, 2, 32,160, 33, 3, 0, 0, 42,
/* 0x04c0 */ 1, 48, 92,229, 1, 48, 65,229, 1, 32, 66,226, 1, 0,114,227, /* 0x04c0 */ 127, 0,160,227,117,255,255,235, 1, 48, 92,229, 1, 48, 65,229,
/* 0x04d0 */ 1,192,140,226, 1, 16,129,226,248,255,255, 26, 4, 32,144,229, /* 0x04d0 */ 1, 32, 66,226, 1, 0,114,227, 1,192,140,226, 1, 16,129,226,
/* 0x04e0 */ 0, 48,144,229, 14, 32,130,224, 3, 48,110,224, 0, 48,128,229, /* 0x04e0 */ 248,255,255, 26, 4, 32,144,229, 0, 48,144,229, 14, 32,130,224,
/* 0x04f0 */ 4, 32,128,229, 4,240,157,228,240, 64, 45,233, 0, 80,160,225, /* 0x04f0 */ 3, 48,110,224, 0, 48,128,229, 4, 32,128,229, 4,240,157,228,
/* 0x0500 */ 20,208, 77,226, 1, 64,160,225, 2,112,160,225, 3, 96,160,225, /* 0x0500 */ 240, 64, 45,233, 0, 80,160,225, 20,208, 77,226, 1, 64,160,225,
/* 0x0510 */ 66, 0, 0,234, 4, 16,141,226, 5, 0,160,225, 12, 32,160,227, /* 0x0510 */ 2,112,160,225, 3, 96,160,225, 66, 0, 0,234, 4, 16,141,226,
/* 0x0520 */ 220,255,255,235, 4,224,157,229, 8, 16,157,229, 0, 0, 94,227, /* 0x0520 */ 5, 0,160,225, 12, 32,160,227,220,255,255,235, 4,224,157,229,
/* 0x0530 */ 6, 0, 0, 26,248, 48,159,229, 3, 0, 81,225, 5, 0, 0, 26, /* 0x0530 */ 8, 16,157,229, 0, 0, 94,227, 6, 0, 0, 26,248, 48,159,229,
/* 0x0540 */ 0, 48,149,229, 0, 0, 83,227, 2, 0, 0, 26, 54, 0, 0,234, /* 0x0540 */ 3, 0, 81,225, 5, 0, 0, 26, 0, 48,149,229, 0, 0, 83,227,
/* 0x0550 */ 0, 0, 81,227, 1, 0, 0, 26,127, 0,160,227, 77,255,255,235, /* 0x0550 */ 2, 0, 0, 26, 54, 0, 0,234, 0, 0, 81,227, 1, 0, 0, 26,
/* 0x0560 */ 14, 0, 81,225,251,255,255,138, 0, 48,148,229, 3, 0, 94,225, /* 0x0560 */ 127, 0,160,227, 77,255,255,235, 14, 0, 81,225,251,255,255,138,
/* 0x0570 */ 248,255,255,138, 14, 0, 81,225, 31, 0, 0, 42, 12,192,221,229, /* 0x0570 */ 0, 48,148,229, 3, 0, 94,225,248,255,255,138, 14, 0, 81,225,
/* 0x0580 */ 4, 0,149,229, 4, 32,148,229, 16, 48,141,226, 16,224,141,229, /* 0x0580 */ 31, 0, 0, 42, 12,192,221,229, 4, 0,149,229, 4, 32,148,229,
/* 0x0590 */ 0,192,141,229, 55,255, 47,225, 0, 0, 80,227,237,255,255, 26, /* 0x0590 */ 16, 48,141,226, 16,224,141,229, 0,192,141,229, 55,255, 47,225,
/* 0x05a0 */ 16, 16,157,229, 4, 48,157,229, 3, 0, 81,225,233,255,255, 26, /* 0x05a0 */ 0, 0, 80,227,237,255,255, 26, 16, 16,157,229, 4, 48,157,229,
/* 0x05b0 */ 13, 32,221,229, 0, 0, 82,227, 0, 0, 86, 19, 8, 0, 0, 10, /* 0x05b0 */ 3, 0, 81,225,233,255,255, 26, 13, 32,221,229, 0, 0, 82,227,
/* 0x05c0 */ 2, 12, 81,227, 2, 0, 0,138, 0, 48,148,229, 1, 0, 83,225, /* 0x05c0 */ 0, 0, 86, 19, 8, 0, 0, 10, 2, 12, 81,227, 2, 0, 0,138,
/* 0x05d0 */ 3, 0, 0, 26, 2, 48,160,225, 4, 0,148,229, 14, 32,221,229, /* 0x05d0 */ 0, 48,148,229, 1, 0, 83,225, 3, 0, 0, 26, 2, 48,160,225,
/* 0x05e0 */ 54,255, 47,225, 8, 48,157,229, 6, 0,149,232, 3, 32,130,224, /* 0x05e0 */ 4, 0,148,229, 14, 32,221,229, 54,255, 47,225, 8, 48,157,229,
/* 0x05f0 */ 1, 16, 99,224, 6, 0,133,232, 3, 0, 0,234, 1, 32,160,225, /* 0x05f0 */ 6, 0,149,232, 3, 32,130,224, 1, 16, 99,224, 6, 0,133,232,
/* 0x0600 */ 5, 0,160,225, 4, 16,148,229,162,255,255,235, 4, 48,157,229, /* 0x0600 */ 3, 0, 0,234, 1, 32,160,225, 5, 0,160,225, 4, 16,148,229,
/* 0x0610 */ 6, 0,148,232, 3, 32,130,224, 1, 16, 99,224, 6, 0,132,232, /* 0x0610 */ 162,255,255,235, 4, 48,157,229, 6, 0,148,232, 3, 32,130,224,
/* 0x0620 */ 0, 48,148,229, 0, 0, 83,227,185,255,255, 26, 20,208,141,226, /* 0x0620 */ 1, 16, 99,224, 6, 0,132,232, 0, 48,148,229, 0, 0, 83,227,
/* 0x0630 */ 240,128,189,232, 85, 80, 88, 33,240, 79, 45,233, 1,128,160,225, /* 0x0630 */ 185,255,255, 26, 20,208,141,226,240,128,189,232, 85, 80, 88, 33,
/* 0x0640 */ 28, 16,145,229, 48,208, 77,226, 0, 0, 82,227, 12, 32,141,229, /* 0x0640 */ 240, 79, 45,233, 1,128,160,225, 28, 16,145,229, 48,208, 77,226,
/* 0x0650 */ 16, 0,141,229, 8, 48,141,229, 1, 80,136,224, 12, 0, 0, 10, /* 0x0650 */ 0, 0, 82,227, 12, 32,141,229, 16, 0,141,229, 8, 48,141,229,
/* 0x0660 */ 84, 32,157,229, 0, 0,146,229,176, 49,208,225, 52, 16,128,226, /* 0x0660 */ 1, 80,136,224, 12, 0, 0, 10, 84, 32,157,229, 0, 0,146,229,
/* 0x0670 */ 2, 0, 83,227, 40, 48,145, 21, 8, 0,145, 5, 0,176, 99, 16, /* 0x0670 */ 176, 49,208,225, 52, 16,128,226, 2, 0, 83,227, 40, 48,145, 21,
/* 0x0680 */ 11, 0,160, 17, 20, 16,145,229, 0,176,160, 3, 45,255,255,235, /* 0x0680 */ 8, 0,145, 5, 0,176, 99, 16, 11, 0,160, 17, 20, 16,145,229,
/* 0x0690 */ 37, 0, 0,234,176, 49,216,225,188, 34,216,225, 3, 0, 83,227, /* 0x0690 */ 0,176,160, 3, 45,255,255,235, 37, 0, 0,234,176, 49,216,225,
/* 0x06a0 */ 12, 16,157,229, 16,224,160, 19, 0,224,160, 3, 1,192, 66,226, /* 0x06a0 */ 188, 34,216,225, 3, 0, 83,227, 12, 16,157,229, 16,224,160, 19,
/* 0x06b0 */ 5, 0,160,225, 0, 64,224,227, 13, 0, 0,234, 0, 48,144,229, /* 0x06b0 */ 0,224,160, 3, 1,192, 66,226, 5, 0,160,225, 0, 64,224,227,
/* 0x06c0 */ 1, 0, 83,227, 8, 0, 0, 26, 20, 48,144,229, 0, 0, 83,227, /* 0x06c0 */ 13, 0, 0,234, 0, 48,144,229, 1, 0, 83,227, 8, 0, 0, 26,
/* 0x06d0 */ 5, 0, 0, 10, 8, 32,144,229, 2, 48,131,224, 3, 0, 81,225, /* 0x06d0 */ 20, 48,144,229, 0, 0, 83,227, 5, 0, 0, 10, 8, 32,144,229,
/* 0x06e0 */ 3, 16,160, 49, 2, 0, 84,225, 2, 64,160, 33, 32, 0,128,226, /* 0x06e0 */ 2, 48,131,224, 3, 0, 81,225, 3, 16,160, 49, 2, 0, 84,225,
/* 0x06f0 */ 1,192, 76,226, 0, 0, 92,227,239,255,255,170,255, 78,196,227, /* 0x06f0 */ 2, 64,160, 33, 32, 0,128,226, 1,192, 76,226, 0, 0, 92,227,
/* 0x0700 */ 15, 64,196,227, 1, 16,100,224,255, 30,129,226, 15, 16,129,226, /* 0x0700 */ 239,255,255,170,255, 78,196,227, 15, 64,196,227, 1, 16,100,224,
/* 0x0710 */ 255, 30,193,227, 15, 16,193,227, 14, 48,160,225, 4, 0,160,225, /* 0x0710 */ 255, 30,129,226, 15, 16,129,226,255, 30,193,227, 15, 16,193,227,
/* 0x0720 */ 0, 32,160,227, 51,255,255,235, 0,176,100,224, 52, 48,160,227, /* 0x0720 */ 14, 48,160,225, 4, 0,160,225, 0, 32,160,227, 51,255,255,235,
/* 0x0730 */ 155, 3, 3,224, 32, 80,133,226, 32, 48,141,229, 0, 48,160,227, /* 0x0730 */ 0,176,100,224, 52, 48,160,227,155, 3, 3,224, 32, 80,133,226,
/* 0x0740 */ 24, 48,141,229,175, 0, 0,234, 12,192,157,229, 0, 0, 92,227, /* 0x0740 */ 32, 48,141,229, 0, 48,160,227, 24, 48,141,229,175, 0, 0,234,
/* 0x0750 */ 8, 0, 0, 10, 32, 48, 21,229, 6, 0, 83,227, 5, 0, 0, 26, /* 0x0750 */ 12,192,157,229, 0, 0, 92,227, 8, 0, 0, 10, 32, 48, 21,229,
/* 0x0760 */ 24, 32, 21,229, 8, 0,157,229, 2, 32,139,224, 3, 16,160,227, /* 0x0760 */ 6, 0, 83,227, 5, 0, 0, 26, 24, 32, 21,229, 8, 0,157,229,
/* 0x0770 */ 61,255,255,235,159, 0, 0,234, 32, 48, 21,229, 1, 0, 83,227, /* 0x0770 */ 2, 32,139,224, 3, 16,160,227, 61,255,255,235,159, 0, 0,234,
/* 0x0780 */ 156, 0, 0, 26, 12, 48, 21,229, 0, 0, 83,227,153, 0, 0, 10, /* 0x0780 */ 32, 48, 21,229, 1, 0, 83,227,156, 0, 0, 26, 12, 48, 21,229,
/* 0x0790 */ 12, 0,157,229, 0, 0, 80,227, 17, 0, 0, 10, 28, 48, 21,229, /* 0x0790 */ 0, 0, 83,227,153, 0, 0, 10, 12, 0,157,229, 0, 0, 80,227,
/* 0x07a0 */ 0, 0, 83,227, 14, 0, 0, 26, 28, 48,152,229, 24, 32, 21,229, /* 0x07a0 */ 17, 0, 0, 10, 28, 48, 21,229, 0, 0, 83,227, 14, 0, 0, 26,
/* 0x07b0 */ 3, 16,160,227, 3, 32,130,224, 2, 32,139,224, 8, 0,157,229, /* 0x07b0 */ 28, 48,152,229, 24, 32, 21,229, 3, 16,160,227, 3, 32,130,224,
/* 0x07c0 */ 41,255,255,235, 8, 0,157,229, 5, 16,160,227,188, 34,216,225, /* 0x07c0 */ 2, 32,139,224, 8, 0,157,229, 41,255,255,235, 8, 0,157,229,
/* 0x07d0 */ 37,255,255,235, 8, 0,157,229, 4, 16,160,227,186, 34,216,225, /* 0x07d0 */ 5, 16,160,227,188, 34,216,225, 37,255,255,235, 8, 0,157,229,
/* 0x07e0 */ 33,255,255,235, 8, 16, 21,229,168, 34,159,229, 7, 48, 1,226, /* 0x07e0 */ 4, 16,160,227,186, 34,216,225, 33,255,255,235, 8, 16, 21,229,
/* 0x07f0 */ 3, 49,160,225, 50, 67,160,225, 24, 48, 21,229, 16, 32, 21,229, /* 0x07f0 */ 168, 34,159,229, 7, 48, 1,226, 3, 49,160,225, 50, 67,160,225,
/* 0x0800 */ 3, 48,139,224, 20, 48,141,229, 3, 58,160,225, 35, 58,160,225, /* 0x0800 */ 24, 48, 21,229, 16, 32, 21,229, 3, 48,139,224, 20, 48,141,229,
/* 0x0810 */ 12,192,157,229, 20, 0,157,229, 40, 32,141,229, 3,160,130,224, /* 0x0810 */ 3, 58,160,225, 35, 58,160,225, 12,192,157,229, 20, 0,157,229,
/* 0x0820 */ 12, 32, 21,229, 0, 0, 92,227, 44, 0,141,229, 7,144, 4,226, /* 0x0820 */ 40, 32,141,229, 3,160,130,224, 12, 32, 21,229, 0, 0, 92,227,
/* 0x0830 */ 36, 32,141,229, 0, 96, 99,224, 16, 0, 0, 10, 1, 0, 17,227, /* 0x0830 */ 44, 0,141,229, 7,144, 4,226, 36, 32,141,229, 0, 96, 99,224,
/* 0x0840 */ 3, 32,160, 3, 7, 32,160, 19, 6, 0,160,225, 10, 16,160,225, /* 0x0840 */ 16, 0, 0, 10, 1, 0, 17,227, 3, 32,160, 3, 7, 32,160, 19,
/* 0x0850 */ 16, 48,160,227,231,254,255,235, 0, 0, 86,225, 84, 0, 0, 26, /* 0x0850 */ 6, 0,160,225, 10, 16,160,225, 16, 48,160,227,231,254,255,235,
/* 0x0860 */ 88,192,157,229, 4, 48, 20,226, 12, 48,160, 17, 12, 0,157,229, /* 0x0860 */ 0, 0, 86,225, 84, 0, 0, 26, 88,192,157,229, 4, 48, 20,226,
/* 0x0870 */ 40, 16,141,226, 16, 32,157,229, 30,255,255,235, 11, 0, 0,234, /* 0x0870 */ 12, 48,160, 17, 12, 0,157,229, 40, 16,141,226, 16, 32,157,229,
/* 0x0880 */ 28,192, 21,229, 6, 0,160,225, 12,192, 99,224, 4,192,141,229, /* 0x0880 */ 30,255,255,235, 11, 0, 0,234, 28,192, 21,229, 6, 0,160,225,
/* 0x0890 */ 16,192,157,229, 10, 16,160,225, 9, 32,160,225, 18, 48,160,227, /* 0x0890 */ 12,192, 99,224, 4,192,141,229, 16,192,157,229, 10, 16,160,225,
/* 0x08a0 */ 0,192,141,229,181,254,255,235, 0, 0, 86,225, 64, 0, 0, 26, /* 0x08a0 */ 9, 32,160,225, 18, 48,160,227, 0,192,141,229,181,254,255,235,
/* 0x08b0 */ 0, 48,106,226, 3,122,160,225, 2, 0, 25,227, 39,122,160,225, /* 0x08b0 */ 0, 0, 86,225, 64, 0, 0, 26, 0, 48,106,226, 3,122,160,225,
/* 0x08c0 */ 7, 0, 0, 10, 0, 0, 87,227, 5, 0, 0, 10, 10, 16,134,224, /* 0x08c0 */ 2, 0, 25,227, 39,122,160,225, 7, 0, 0, 10, 0, 0, 87,227,
/* 0x08d0 */ 7, 32,160,225, 0, 48,160,227, 1, 32, 82,226, 1, 48,193,228, /* 0x08d0 */ 5, 0, 0, 10, 10, 16,134,224, 7, 32,160,225, 0, 48,160,227,
/* 0x08e0 */ 251,255,255, 26, 12, 0,157,229, 0, 0, 80,227, 50, 0, 0, 10, /* 0x08e0 */ 1, 32, 82,226, 1, 48,193,228,251,255,255, 26, 12, 0,157,229,
/* 0x08f0 */ 190,254,255,235, 32, 48, 21,229, 28, 0,141,229, 1, 0, 83,227, /* 0x08f0 */ 0, 0, 80,227, 50, 0, 0, 10,190,254,255,235, 32, 48, 21,229,
/* 0x0900 */ 37, 0, 0, 26, 8, 48, 21,229, 1, 0, 19,227, 34, 0, 0, 10, /* 0x0900 */ 28, 0,141,229, 1, 0, 83,227, 37, 0, 0, 26, 8, 48, 21,229,
/* 0x0910 */ 12, 32, 21,229, 16, 48, 21,229, 24, 16, 21,229, 3, 0, 82,225, /* 0x0910 */ 1, 0, 19,227, 34, 0, 0, 10, 12, 32, 21,229, 16, 48, 21,229,
/* 0x0920 */ 67, 0, 0, 26, 1, 48,130,224, 3, 48,131,226, 3, 48,139,224, /* 0x0920 */ 24, 16, 21,229, 3, 0, 82,225, 67, 0, 0, 26, 1, 48,130,224,
/* 0x0930 */ 3, 32,195,227, 0, 48, 98,226, 3, 58,160,225, 35, 58,160,225, /* 0x0930 */ 3, 48,131,226, 3, 48,139,224, 3, 32,195,227, 0, 48, 98,226,
/* 0x0940 */ 7, 0, 83,227, 58, 0, 0,154, 10, 0, 0,234, 0,224,160,227, /* 0x0940 */ 3, 58,160,225, 35, 58,160,225, 7, 0, 83,227, 58, 0, 0,154,
/* 0x0950 */ 0,192,224,227, 14, 0,160,225, 1, 26,160,227, 7, 32,160,227, /* 0x0950 */ 10, 0, 0,234, 0,224,160,227, 0,192,224,227, 14, 0,160,225,
/* 0x0960 */ 34, 48,160,227, 0, 80,141,232,132,254,255,235, 0, 0, 80,227, /* 0x0960 */ 1, 26,160,227, 7, 32,160,227, 34, 48,160,227, 0, 80,141,232,
/* 0x0970 */ 54, 0, 0, 26, 8, 0, 0,234, 3, 48,130,226, 3, 64,195,227, /* 0x0970 */ 132,254,255,235, 0, 0, 80,227, 54, 0, 0, 26, 8, 0, 0,234,
/* 0x0980 */ 28, 32,157,229, 16, 49,159,229, 12, 0,132,232, 4, 0,160,225, /* 0x0980 */ 3, 48,130,226, 3, 64,195,227, 28, 32,157,229, 16, 49,159,229,
/* 0x0990 */ 8, 16,132,226,140,254,255,235, 57, 0, 0,234, 6, 0,160,225, /* 0x0990 */ 12, 0,132,232, 4, 0,160,225, 8, 16,132,226,140,254,255,235,
/* 0x09a0 */ 10, 16,160,225, 9, 32,160,225,107,254,255,235, 0, 0, 80,227, /* 0x09a0 */ 57, 0, 0,234, 6, 0,160,225, 10, 16,160,225, 9, 32,160,225,
/* 0x09b0 */ 1, 0, 0, 10,127, 0,160,227, 54,254,255,235, 20,192,157,229, /* 0x09b0 */ 107,254,255,235, 0, 0, 80,227, 1, 0, 0, 10,127, 0,160,227,
/* 0x09c0 */ 36, 0,157,229, 7, 48,138,224, 0, 16,140,224, 3, 64,134,224, /* 0x09c0 */ 54,254,255,235, 20,192,157,229, 36, 0,157,229, 7, 48,138,224,
/* 0x09d0 */ 1, 0, 84,225, 7, 0, 0, 42, 1, 16,100,224, 9, 32,160,225, /* 0x09d0 */ 0, 16,140,224, 3, 64,134,224, 1, 0, 84,225, 7, 0, 0, 42,
/* 0x09e0 */ 4, 0,160,225, 16, 48,160,227,130,254,255,235, 0, 0, 84,225, /* 0x09e0 */ 1, 16,100,224, 9, 32,160,225, 4, 0,160,225, 16, 48,160,227,
/* 0x09f0 */ 0, 0, 0, 10,254,255,255,234, 24, 32,157,229, 32, 80,133,226, /* 0x09f0 */ 130,254,255,235, 0, 0, 84,225, 0, 0, 0, 10,254,255,255,234,
/* 0x0a00 */ 1, 32,130,226, 24, 32,141,229,188, 50,216,225, 24,192,157,229, /* 0x0a00 */ 24, 32,157,229, 32, 80,133,226, 1, 32,130,226, 24, 32,141,229,
/* 0x0a10 */ 3, 0, 92,225, 75,255,255,186, 84, 0,157,229, 0, 0, 80,227, /* 0x0a10 */ 188, 50,216,225, 24,192,157,229, 3, 0, 92,225, 75,255,255,186,
/* 0x0a20 */ 0,176,128, 21, 24, 0,152,229, 0, 0,139,224, 48,208,141,226, /* 0x0a20 */ 84, 0,157,229, 0, 0, 80,227, 0,176,128, 21, 24, 0,152,229,
/* 0x0a30 */ 240,143,189,232, 28, 48, 21,229, 0, 0, 83,227, 32, 32,157, 5, /* 0x0a30 */ 0, 0,139,224, 48,208,141,226,240,143,189,232, 28, 48, 21,229,
/* 0x0a40 */ 2, 48,129, 0, 8, 32,131, 2,202,255,255, 10,190,255,255,234, /* 0x0a40 */ 0, 0, 83,227, 32, 32,157, 5, 2, 48,129, 0, 8, 32,131, 2,
/* 0x0a50 */ 3, 48,128,226, 3, 64,195,227, 28, 48,157,229, 8, 16,132,226, /* 0x0a50 */ 202,255,255, 10,190,255,255,234, 3, 48,128,226, 3, 64,195,227,
/* 0x0a60 */ 0, 48,132,229, 48, 48,159,229, 4, 0,160,225, 4, 48,132,229, /* 0x0a60 */ 28, 48,157,229, 8, 16,132,226, 0, 48,132,229, 48, 48,159,229,
/* 0x0a70 */ 85,254,255,235, 4, 0,160,225, 8, 16,160,227, 5, 32,160,227, /* 0x0a70 */ 4, 0,160,225, 4, 48,132,229, 85,254,255,235, 4, 0,160,225,
/* 0x0a80 */ 53,254,255,235, 4, 32,160,225, 8, 0,157,229, 0, 16,160,227, /* 0x0a80 */ 8, 16,160,227, 5, 32,160,227, 53,254,255,235, 4, 32,160,225,
/* 0x0a90 */ 117,254,255,235,192,255,255,234, 64, 98, 81,115, 14,240,160,225, /* 0x0a90 */ 8, 0,157,229, 0, 16,160,227,117,254,255,235,192,255,255,234,
/* 0x0aa0 */ 240, 71, 45,233, 12,208, 77,226, 52, 96,141,226, 0,144,160,225, /* 0x0aa0 */ 64, 98, 81,115, 14,240,160,225,240, 71, 45,233, 12,208, 77,226,
/* 0x0ab0 */ 1,112,160,225, 3,128,160,225, 6, 0,160,225, 44, 16,141,226, /* 0x0ab0 */ 52, 96,141,226, 0,144,160,225, 1,112,160,225, 3,128,160,225,
/* 0x0ac0 */ 0, 48,160,227, 48,160,157,229, 2, 80,160,225, 52, 64,157,229, /* 0x0ac0 */ 6, 0,160,225, 44, 16,141,226, 0, 48,160,227, 48,160,157,229,
/* 0x0ad0 */ 136,254,255,235, 60, 48,157,229, 56,192,157,229, 12,224,141,226, /* 0x0ad0 */ 2, 80,160,225, 52, 64,157,229,136,254,255,235, 60, 48,157,229,
/* 0x0ae0 */ 4, 48, 46,229, 12,192,100,224, 6, 32,160,225, 10, 16,160,225, /* 0x0ae0 */ 56,192,157,229, 12,224,141,226, 4, 48, 46,229, 12,192,100,224,
/* 0x0af0 */ 9, 48,160,225, 5, 0,160,225, 56,192,141,229, 0,224,141,229, /* 0x0af0 */ 6, 32,160,225, 10, 16,160,225, 9, 48,160,225, 5, 0,160,225,
/* 0x0b00 */ 52,112,141,229, 4,128,141,229,202,254,255,235, 0, 64,160,225, /* 0x0b00 */ 56,192,141,229, 0,224,141,229, 52,112,141,229, 4,128,141,229,
/* 0x0b10 */ 9, 16,160,227, 9, 0,160,225, 4, 32,160,225, 82,254,255,235, /* 0x0b10 */ 202,254,255,235, 0, 64,160,225, 9, 16,160,227, 9, 0,160,225,
/* 0x0b20 */ 188, 2,218,225, 52, 32,138,226, 0, 16,160,227, 35, 0, 0,234, /* 0x0b20 */ 4, 32,160,225, 82,254,255,235,188, 2,218,225, 52, 32,138,226,
/* 0x0b30 */ 0, 48,146,229, 3, 0, 83,227, 30, 0, 0, 26, 8, 48,146,229, /* 0x0b30 */ 0, 16,160,227, 35, 0, 0,234, 0, 48,146,229, 3, 0, 83,227,
/* 0x0b40 */ 8, 0,157,229, 0, 16,160,227, 0, 0,131,224, 1, 32,160,225, /* 0x0b40 */ 30, 0, 0, 26, 8, 48,146,229, 8, 0,157,229, 0, 16,160,227,
/* 0x0b50 */ 222,253,255,235, 0, 80, 80,226, 4, 0, 0,186, 10, 16,160,225, /* 0x0b50 */ 0, 0,131,224, 1, 32,160,225,222,253,255,235, 0, 80, 80,226,
/* 0x0b60 */ 2, 44,160,227,207,253,255,235, 2, 12, 80,227, 1, 0, 0, 10, /* 0x0b60 */ 4, 0, 0,186, 10, 16,160,225, 2, 44,160,227,207,253,255,235,
/* 0x0b70 */ 127, 0,160,227,199,253,255,235, 0,224,160,227, 14, 32,160,225, /* 0x0b70 */ 2, 12, 80,227, 1, 0, 0, 10,127, 0,160,227,199,253,255,235,
/* 0x0b80 */ 8,192,141,226, 10, 16,160,225, 9, 48,160,225, 5, 0,160,225, /* 0x0b80 */ 0,224,160,227, 14, 32,160,225, 8,192,141,226, 10, 16,160,225,
/* 0x0b90 */ 0, 80,141,232,167,254,255,235, 7, 16,160,227, 0, 64,160,225, /* 0x0b90 */ 9, 48,160,225, 5, 0,160,225, 0, 80,141,232,167,254,255,235,
/* 0x0ba0 */ 8, 32,157,229, 9, 0,160,225, 47,254,255,235, 5, 0,160,225, /* 0x0ba0 */ 7, 16,160,227, 0, 64,160,225, 8, 32,157,229, 9, 0,160,225,
/* 0x0bb0 */ 203,253,255,235, 3, 0, 0,234, 32, 32,130,226, 1, 16,129,226, /* 0x0bb0 */ 47,254,255,235, 5, 0,160,225,203,253,255,235, 3, 0, 0,234,
/* 0x0bc0 */ 0, 0, 81,225,217,255,255,186, 4, 0,160,225, 12,208,141,226, /* 0x0bc0 */ 32, 32,130,226, 1, 16,129,226, 0, 0, 81,225,217,255,255,186,
/* 0x0bd0 */ 240,135,189,232 /* 0x0bd0 */ 4, 0,160,225, 12,208,141,226,240,135,189,232
}; };
+143 -146
View File
@@ -1,5 +1,5 @@
/* arm64-linux.elf-entry.h /* arm64-linux.elf-entry.h
created from arm64-linux.elf-entry.bin, 7489 (0x1d41) bytes created from arm64-linux.elf-entry.bin, 7449 (0x1d19) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -32,14 +32,14 @@
/* clang-format off */ /* clang-format off */
#define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 7489 #define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 7449
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0x86268564 #define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0xd6137745
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x10255b7a #define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x136b882d
unsigned char stub_arm64_linux_elf_entry[7489] = { unsigned char stub_arm64_linux_elf_entry[7449] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 1, 0,183, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 1, 0,183, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,112, 24, 0, 0, 0, 0, 0, 0, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 72, 24, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
/* 0x0040 */ 0, 0, 0, 0, 0, 0, 0,148,254, 15, 31,248,226, 15,191,169, /* 0x0040 */ 0, 0, 0, 0, 0, 0, 0,148,254, 15, 31,248,226, 15,191,169,
/* 0x0050 */ 7, 64, 33,139, 5, 0,128, 18, 4, 0,176, 82, 45, 0, 0, 20, /* 0x0050 */ 7, 64, 33,139, 5, 0,128, 18, 4, 0,176, 82, 45, 0, 0, 20,
@@ -366,144 +366,141 @@ unsigned char stub_arm64_linux_elf_entry[7489] = {
/* 0x1460 */ 128, 2, 64,185, 29, 67, 95,184, 60, 3, 0,139, 96, 67, 0,145, /* 0x1460 */ 128, 2, 64,185, 29, 67, 95,184, 60, 3, 0,139, 96, 67, 0,145,
/* 0x1470 */ 0, 0, 31,214, 47,112,114,111, 99, 47,115,101,108,102, 47,101, /* 0x1470 */ 0, 0, 31,214, 47,112,114,111, 99, 47,115,101,108,102, 47,101,
/* 0x1480 */ 120,101, 0, 0, 1,132, 64,248,225,255,255,181,192, 3, 95,214, /* 0x1480 */ 120,101, 0, 0, 1,132, 64,248,225,255,255,181,192, 3, 95,214,
/* 0x1490 */ 194, 1,128, 82, 1,255,255, 16, 64, 0,128, 82, 8, 8,128, 82, /* 0x1490 */ 248, 3, 30,170,224, 3, 0,145,251,255,255,151,250,255,255,151,
/* 0x14a0 */ 1, 0, 0,212,224, 15,128, 82,168, 11,128, 82, 1, 0, 0,212, /* 0x14a0 */ 246, 3, 0,170, 1,136,192,168, 63, 24, 0,113, 96, 0, 0, 84,
/* 0x14b0 */ 248, 3, 30,170,224, 3, 0,145,243,255,255,151,242,255,255,151, /* 0x14b0 */ 161,255,255, 53, 34, 0,160,210,250, 3, 2,203, 96, 12,128, 18,
/* 0x14c0 */ 246, 3, 0,170, 1,136,192,168, 63, 24, 0,113, 96, 0, 0, 84, /* 0x14c0 */ 161,253,255, 16, 2, 0,128, 82, 8, 7,128, 82, 1, 0, 0,212,
/* 0x14d0 */ 161,255,255, 53, 34, 0,160,210,250, 3, 2,203, 96, 12,128, 18, /* 0x14d0 */ 251, 3, 0, 42,195,255,255,151, 0, 0, 0, 0,102,105,108,101,
/* 0x14e0 */ 161,252,255, 16, 2, 0,128, 82, 8, 7,128, 82, 1, 0, 0,212, /* 0x14e0 */ 32,102,111,114,109, 97,116, 32,101,108,102, 54, 52, 45,108,105,
/* 0x14f0 */ 251, 3, 0, 42, 31, 0, 0,113,203,252,255, 84,185,255,255,151, /* 0x14f0 */ 116,116,108,101, 97, 97,114, 99,104, 54, 52, 10, 10, 83,101, 99,
/* 0x1500 */ 0, 0, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32, /* 0x1500 */ 116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32,
/* 0x1510 */ 101,108,102, 54, 52, 45,108,105,116,116,108,101, 97, 97,114, 99, /* 0x1510 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32,
/* 0x1520 */ 104, 54, 52, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73, /* 0x1520 */ 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1530 */ 100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1530 */ 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1540 */ 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, /* 0x1540 */ 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32,
/* 0x1550 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, /* 0x1550 */ 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48,
/* 0x1560 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70, /* 0x1560 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48,
/* 0x1570 */ 105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70, /* 0x1570 */ 56, 32, 32, 48, 32, 32, 48, 32, 32, 48, 52, 48, 32, 32, 50, 42,
/* 0x1580 */ 108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x1580 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49,
/* 0x1590 */ 88, 32, 32, 32, 32, 32, 32, 48, 56, 32, 32, 48, 32, 32, 48, 32, /* 0x1590 */ 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48,
/* 0x15a0 */ 32, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x15a0 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 52, 56, 32, 32, 50, 42, 42,
/* 0x15b0 */ 69, 78, 84, 83, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, 69, 65, /* 0x15b0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32,
/* 0x15c0 */ 68, 32, 32, 32, 32, 32, 32, 48, 32, 32, 48, 32, 32, 48, 32, 32, /* 0x15c0 */ 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 32,
/* 0x15d0 */ 48, 52, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x15d0 */ 32, 48, 32, 32, 48, 32, 32, 48, 52, 56, 32, 32, 50, 42, 42, 48,
/* 0x15e0 */ 78, 84, 83, 10, 32, 32, 50, 32, 78, 82, 86, 95, 84, 65, 73, 76, /* 0x15e0 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 51, 32, 78,
/* 0x15f0 */ 32, 32, 32, 32, 32, 32, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, /* 0x15f0 */ 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 49, 55,
/* 0x1600 */ 52, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1600 */ 99, 32, 32, 48, 32, 32, 48, 32, 32, 48, 52, 56, 32, 32, 50, 42,
/* 0x1610 */ 84, 83, 10, 32, 32, 51, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, /* 0x1610 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 52,
/* 0x1620 */ 32, 32, 32, 32, 32, 48, 49, 55, 99, 32, 32, 48, 32, 32, 48, 32, /* 0x1620 */ 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48,
/* 0x1630 */ 32, 48, 52, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1630 */ 49, 55, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 99, 52, 32,
/* 0x1640 */ 69, 78, 84, 83, 10, 32, 32, 52, 32, 78, 82, 86, 50, 68, 32, 32, /* 0x1640 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
/* 0x1650 */ 32, 32, 32, 32, 32, 32, 32, 48, 49, 55, 48, 32, 32, 48, 32, 32, /* 0x1650 */ 32, 32, 53, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32,
/* 0x1660 */ 48, 32, 32, 48, 49, 99, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1660 */ 32, 32, 48, 49, 52, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51,
/* 0x1670 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 53, 32, 78, 82, 86, 50, /* 0x1670 */ 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1680 */ 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 49, 52, 52, 32, 32, /* 0x1680 */ 84, 83, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48,
/* 0x1690 */ 48, 32, 32, 48, 32, 32, 48, 51, 51, 52, 32, 32, 50, 42, 42, 48, /* 0x1690 */ 48, 32, 32, 32, 32, 48, 49, 48, 99, 32, 32, 48, 32, 32, 48, 32,
/* 0x16a0 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 54, 32, 76, /* 0x16a0 */ 32, 48, 52, 55, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x16b0 */ 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 49, 48, /* 0x16b0 */ 84, 69, 78, 84, 83, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68,
/* 0x16c0 */ 99, 32, 32, 48, 32, 32, 48, 32, 32, 48, 52, 55, 56, 32, 32, 50, /* 0x16c0 */ 69, 67, 50, 48, 32, 32, 32, 32, 48, 57, 54, 56, 32, 32, 48, 32,
/* 0x16d0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, /* 0x16d0 */ 32, 48, 32, 32, 48, 53, 56, 52, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x16e0 */ 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, /* 0x16e0 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 56, 32, 76, 90, 77,
/* 0x16f0 */ 48, 57, 54, 56, 32, 32, 48, 32, 32, 48, 32, 32, 48, 53, 56, 52, /* 0x16f0 */ 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 52, 97, 48, 32,
/* 0x1700 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1700 */ 32, 48, 32, 32, 48, 32, 32, 48,101,101, 99, 32, 32, 50, 42, 42,
/* 0x1710 */ 10, 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, /* 0x1710 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 57, 32,
/* 0x1720 */ 32, 32, 32, 48, 52, 97, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, /* 0x1720 */ 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 32,
/* 0x1730 */ 101,101, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1730 */ 32, 48, 32, 32, 48, 32, 32, 48, 49, 51, 56, 99, 32, 32, 50, 42,
/* 0x1740 */ 78, 84, 83, 10, 32, 32, 57, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1740 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 48,
/* 0x1750 */ 51, 48, 32, 32, 32, 32, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, /* 0x1750 */ 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48,
/* 0x1760 */ 49, 51, 56, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1760 */ 51,101, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 51, 56, 99, 32,
/* 0x1770 */ 69, 78, 84, 83, 10, 32, 49, 48, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x1770 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
/* 0x1780 */ 89, 32, 32, 32, 32, 32, 32, 48, 51,101, 32, 32, 48, 32, 32, 48, /* 0x1780 */ 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32,
/* 0x1790 */ 32, 32, 48, 49, 51, 56, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1790 */ 32, 32, 48, 49, 49, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49,
/* 0x17a0 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 49, 49, 32, 69, 76, 70, 77, /* 0x17a0 */ 51, 99, 99, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69,
/* 0x17b0 */ 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 49, 51, 56, 32, 32, /* 0x17b0 */ 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69,
/* 0x17c0 */ 48, 32, 32, 48, 32, 32, 48, 49, 51, 99, 99, 32, 32, 50, 42, 42, /* 0x17c0 */ 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x17d0 */ 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, /* 0x17d0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95,
/* 0x17e0 */ 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, /* 0x17e0 */ 68, 69, 67, 51, 48, 32, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67,
/* 0x17f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x17f0 */ 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1800 */ 100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 48, 32, /* 0x1800 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77,
/* 0x1810 */ 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, /* 0x1810 */ 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
/* 0x1820 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x1820 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1830 */ 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 48, 32, 69, /* 0x1830 */ 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78,
/* 0x1840 */ 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1840 */ 88, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48,
/* 0x1850 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1850 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x1860 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70, 77, /* 0x1860 */ 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 48,
/* 0x1870 */ 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1870 */ 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48,
/* 0x1880 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x1880 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x1890 */ 86, 95, 72, 69, 65, 68, 32, 48, 32, 78, 82, 86, 95, 72, 69, 65, /* 0x1890 */ 100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 48, 32, 78, 82,
/* 0x18a0 */ 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x18a0 */ 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x18b0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, /* 0x18b0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x18c0 */ 65, 73, 76, 32, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, /* 0x18c0 */ 78, 82, 86, 50, 69, 32, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48,
/* 0x18d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x18d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x18e0 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 32, 48, 32, /* 0x18e0 */ 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 32, 48, 32, 78,
/* 0x18f0 */ 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x18f0 */ 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1900 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, /* 0x1900 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82,
/* 0x1910 */ 82, 86, 50, 68, 32, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, /* 0x1910 */ 86, 50, 66, 32, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48,
/* 0x1920 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1920 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x1930 */ 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 32, 48, 32, 78, 82, /* 0x1930 */ 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32,
/* 0x1940 */ 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1940 */ 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48,
/* 0x1950 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, /* 0x1950 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x1960 */ 65, 95, 69, 76, 70, 48, 48, 32, 48, 32, 76, 90, 77, 65, 95, 69, /* 0x1960 */ 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48,
/* 0x1970 */ 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1970 */ 32, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48,
/* 0x1980 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, /* 0x1980 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x1990 */ 77, 65, 95, 68, 69, 67, 50, 48, 32, 48, 32, 76, 90, 77, 65, 95, /* 0x1990 */ 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49,
/* 0x19a0 */ 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x19a0 */ 48, 32, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48,
/* 0x19b0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, /* 0x19b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x19c0 */ 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 48, 32, 76, 90, 77, 65, /* 0x19c0 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x19d0 */ 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x19d0 */ 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48,
/* 0x19e0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x19e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32,
/* 0x19f0 */ 69, 76, 70, 77, 65, 73, 78, 89, 32, 48, 32, 69, 76, 70, 77, 65, /* 0x19f0 */ 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 77, 70, 76,
/* 0x1a00 */ 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a00 */ 71, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a10 */ 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, /* 0x1a10 */ 48, 52, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65,
/* 0x1a20 */ 68, 42, 32, 48, 32, 77, 70, 76, 71, 10, 48, 48, 48, 48, 48, 48, /* 0x1a20 */ 73, 78, 88, 32, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48,
/* 0x1a30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32,103, 32, 32, 32, 32, /* 0x1a30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
/* 0x1a40 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,115, /* 0x1a40 */ 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 69, 32, 48, 49, 55, 99,
/* 0x1a50 */ 116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a50 */ 32,117, 99,108, 95,110,114,118, 50,101, 95,100,101, 99,111,109,
/* 0x1a60 */ 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 78, 82, /* 0x1a60 */ 112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a70 */ 86, 50, 69, 32, 48, 49, 55, 99, 32,117, 99,108, 95,110,114,118, /* 0x1a70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32,
/* 0x1a80 */ 50,101, 95,100,101, 99,111,109,112,114,101,115,115, 95, 51, 50, /* 0x1a80 */ 70, 32, 78, 82, 86, 50, 68, 32, 48, 49, 55, 48, 32,117, 99,108,
/* 0x1a90 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a90 */ 95,110,114,118, 50,100, 95,100,101, 99,111,109,112,114,101,115,
/* 0x1aa0 */ 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 68, 32, /* 0x1aa0 */ 115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ab0 */ 48, 49, 55, 48, 32,117, 99,108, 95,110,114,118, 50,100, 95,100, /* 0x1ab0 */ 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 78, 82,
/* 0x1ac0 */ 101, 99,111,109,112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48, /* 0x1ac0 */ 86, 50, 66, 32, 48, 49, 52, 52, 32,117, 99,108, 95,110,114,118,
/* 0x1ad0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, /* 0x1ad0 */ 50, 98, 95,100,101, 99,111,109,112,114,101,115,115, 95, 51, 50,
/* 0x1ae0 */ 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 66, 32, 48, 49, 52, 52, /* 0x1ae0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1af0 */ 32,117, 99,108, 95,110,114,118, 50, 98, 95,100,101, 99,111,109, /* 0x1af0 */ 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68,
/* 0x1b00 */ 112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1b00 */ 69, 67, 49, 48, 32, 48, 32, 76,122,109, 97, 68,101, 99,111,100,
/* 0x1b10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, /* 0x1b10 */ 101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b20 */ 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 48, 32, 76, /* 0x1b20 */ 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65,
/* 0x1b30 */ 122,109, 97, 68,101, 99,111,100,101, 10, 48, 48, 48, 48, 48, 48, /* 0x1b30 */ 73, 78, 89, 32, 48, 32,101,110,100, 95,100,101, 99,111,109,112,
/* 0x1b40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, /* 0x1b40 */ 114,101,115,115, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b50 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 48, 32,101,110, /* 0x1b50 */ 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85,
/* 0x1b60 */ 100, 95,100,101, 99,111,109,112,114,101,115,115, 10, 48, 48, 48, /* 0x1b60 */ 78, 68, 42, 32, 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82,
/* 0x1b70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x1b70 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68,
/* 0x1b80 */ 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 32, 48, 32, 79, 95, /* 0x1b80 */ 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93,
/* 0x1b90 */ 66, 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x1b90 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1ba0 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, /* 0x1ba0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1bb0 */ 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x1bb0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48,
/* 0x1bc0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x1bc0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 65, 65,
/* 0x1bd0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x1bd0 */ 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50, 32, 32, 32, 77, 70,
/* 0x1be0 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1be0 */ 76, 71, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bf0 */ 48, 48, 48, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, /* 0x1bf0 */ 48, 48, 52, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 67, 65,
/* 0x1c00 */ 83, 51, 50, 32, 32, 32, 77, 70, 76, 71, 10, 48, 48, 48, 48, 48, /* 0x1c00 */ 76, 76, 50, 54, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,
/* 0x1c10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 65, 65, /* 0x1c10 */ 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 99,
/* 0x1c20 */ 82, 67, 72, 54, 52, 95, 67, 65, 76, 76, 50, 54, 32, 32, 69, 76, /* 0x1c20 */ 52, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69,
/* 0x1c30 */ 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, /* 0x1c30 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95,
/* 0x1c40 */ 48, 48, 48, 48, 48, 48, 48,101, 52, 10, 10, 82, 69, 76, 79, 67, /* 0x1c40 */ 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
/* 0x1c50 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, /* 0x1c50 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
/* 0x1c60 */ 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, /* 0x1c60 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0x1c70 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1c70 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c80 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1c80 */ 52, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 67, 79, 78, 68,
/* 0x1c90 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1c90 */ 66, 82, 49, 57, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48,
/* 0x1ca0 */ 48, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 65, 65, 82, 67, /* 0x1ca0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
/* 0x1cb0 */ 72, 54, 52, 95, 67, 79, 78, 68, 66, 82, 49, 57, 32, 32, 76, 90, /* 0x1cb0 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73,
/* 0x1cc0 */ 77, 65, 95, 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x1cc0 */ 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
/* 0x1cd0 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x1cd0 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
/* 0x1ce0 */ 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, /* 0x1ce0 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
/* 0x1cf0 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, /* 0x1cf0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, 99, 32, 82,
/* 0x1d00 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1d00 */ 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50, 32, 32,
/* 0x1d10 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d10 */ 32, 79, 95, 66, 73, 78, 70, 79, 10
/* 0x1d20 */ 48, 48, 48, 49, 51, 52, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52,
/* 0x1d30 */ 95, 65, 66, 83, 51, 50, 32, 32, 32, 79, 95, 66, 73, 78, 70, 79,
/* 0x1d40 */ 10
}; };
+162 -161
View File
@@ -1,5 +1,5 @@
/* arm64-linux.elf-fold.h /* arm64-linux.elf-fold.h
created from arm64-linux.elf-fold.bin, 2828 (0xb0c) bytes created from arm64-linux.elf-fold.bin, 2836 (0xb14) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -32,20 +32,20 @@
/* clang-format off */ /* clang-format off */
#define STUB_ARM64_LINUX_ELF_FOLD_SIZE 2828 #define STUB_ARM64_LINUX_ELF_FOLD_SIZE 2836
#define STUB_ARM64_LINUX_ELF_FOLD_ADLER32 0xda09d3a6 #define STUB_ARM64_LINUX_ELF_FOLD_ADLER32 0x6d96d4b7
#define STUB_ARM64_LINUX_ELF_FOLD_CRC32 0x3a36ae13 #define STUB_ARM64_LINUX_ELF_FOLD_CRC32 0x2edfe878
unsigned char stub_arm64_linux_elf_fold[2828] = { unsigned char stub_arm64_linux_elf_fold[2836] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0,183, 0, 1, 0, 0, 0,188, 0, 16, 0, 0, 0, 0, 0, /* 0x0010 */ 2, 0,183, 0, 1, 0, 0, 0,188, 0, 16, 0, 0, 0, 0, 0,
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, /* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
/* 0x0060 */ 12, 11, 0, 0, 0, 0, 0, 0, 12, 11, 0, 0, 0, 0, 0, 0, /* 0x0060 */ 20, 11, 0, 0, 0, 0, 0, 0, 20, 11, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 12, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0080 */ 20, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0090 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0090 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, /* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,146, /* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,146,
@@ -57,161 +57,162 @@ unsigned char stub_arm64_linux_elf_fold[2828] = {
/* 0x0110 */ 2,132, 0,248,194,255,255,181, 34,132, 64,248, 2,132, 0,248, /* 0x0110 */ 2,132, 0,248,194,255,255,181, 34,132, 64,248, 2,132, 0,248,
/* 0x0120 */ 194,255,255,181, 4, 32, 0,209, 31,132, 0,248,231, 3, 0,170, /* 0x0120 */ 194,255,255,181, 4, 32, 0,209, 31,132, 0,248,231, 3, 0,170,
/* 0x0130 */ 246, 3, 0,170, 34, 12,193,168, 2, 12,129,168,194,255,255,181, /* 0x0130 */ 246, 3, 0,170, 34, 12,193,168, 2, 12,129,168,194,255,255,181,
/* 0x0140 */ 247, 3, 0,170,225, 3, 6,170,129, 0, 0,249,130, 6, 0, 24, /* 0x0140 */ 247, 3, 0,170,225, 3, 6,170,129, 0, 0,249,194, 6, 0, 24,
/* 0x0150 */ 34, 68, 0,184,226,255,129, 82, 64, 6, 0, 16,111, 0, 0,148, /* 0x0150 */ 34, 68, 0,184,226,255,129, 82,128, 6, 0, 16,113, 0, 0,148,
/* 0x0160 */ 31, 4, 64,177, 66, 0, 0, 84, 95,104, 32, 56,231, 3, 20,170, /* 0x0160 */ 31, 4, 64,177, 66, 0, 0, 84, 95,104, 32, 56,231, 3, 20,170,
/* 0x0170 */ 230, 3, 25,170,255, 3, 48,209,197, 5, 0, 16,228, 3, 24,170, /* 0x0170 */ 230, 3, 25,170,255, 3, 48,209, 5, 6, 0, 16,228, 3, 24,170,
/* 0x0180 */ 227, 3, 22,170,226, 3, 0,145,225, 3, 29, 42,224, 3, 28,170, /* 0x0180 */ 227, 3, 22,170,226, 3, 0,145,225, 3, 29, 42,224, 3, 28,170,
/* 0x0190 */ 5, 2, 0,148,255, 3, 48,145,248, 3, 0,170, 33, 83, 64,249, /* 0x0190 */ 7, 2, 0,148,255, 3, 48,145,248, 3, 0,170, 33, 83, 64,249,
/* 0x01a0 */ 224, 3, 25,170, 34, 67, 64, 57, 95, 8, 0,113, 65, 0, 0, 84, /* 0x01a0 */ 224, 3, 25,170, 34, 67, 64, 57, 95, 8, 0,113, 65, 0, 0, 84,
/* 0x01b0 */ 63, 0, 0,148,224, 3, 25,170, 64, 0, 0,148, 5, 0,128,210, /* 0x01b0 */ 65, 0, 0,148,224, 3, 25,170, 66, 0, 0,148, 5, 0,128,210,
/* 0x01c0 */ 228, 3, 21, 42, 67, 0,128, 82, 34, 0,128, 82, 1, 0,130,210, /* 0x01c0 */ 228, 3, 21, 42,159, 0, 0,113, 11, 1, 0, 84, 67, 0,128, 82,
/* 0x01d0 */ 0, 0,128,210, 70, 0, 0,148,224, 3, 21, 42, 46, 0, 0,148, /* 0x01d0 */ 34, 0,128, 82, 1, 0,130,210, 0, 0,128,210, 70, 0, 0,148,
/* 0x01e0 */ 254, 3, 24,170,224, 3, 26,170,225, 3, 27, 42,226,130, 95,248, /* 0x01e0 */ 224, 3, 21, 42, 46, 0, 0,148,254, 3, 24,170,224, 3, 26,170,
/* 0x01f0 */ 255,127,191,169,240, 3, 31,170,227, 19, 64,169,230, 31, 64,169, /* 0x01f0 */ 225, 3, 27, 42,226,130, 95,248,255,127,191,169,240, 3, 31,170,
/* 0x0200 */ 232, 39, 64,169,244, 87, 64,169,246, 95, 64,169,248,103, 64,169, /* 0x0200 */ 227, 19, 64,169,230, 31, 64,169,232, 39, 64,169,244, 87, 64,169,
/* 0x0210 */ 250,111, 64,169,252,119,193,168,192, 3, 95,214, 32, 32, 32, 61, /* 0x0210 */ 246, 95, 64,169,248,103, 64,169,250,111, 64,169,252,119,193,168,
/* 0x0220 */ 47,112,114,111, 99, 47,115,101,108,102, 47,101,120,101, 0, 0, /* 0x0220 */ 192, 3, 95,214, 32, 32, 32, 61, 47,112,114,111, 99, 47,115,101,
/* 0x0230 */ 99, 28, 0, 18,127, 72, 1,113,129, 1, 0, 84, 33,252, 66,211, /* 0x0230 */ 108,102, 47,101,120,101, 0, 0, 99, 28, 0, 18,127, 72, 1,113,
/* 0x0240 */ 65, 1, 0,180, 33, 4, 0,209, 2,120, 97,184, 67,120, 26, 83, /* 0x0240 */ 129, 1, 0, 84, 33,252, 66,211, 65, 1, 0,180, 33, 4, 0,209,
/* 0x0250 */ 127, 20, 0,113,129, 0, 0, 84, 67, 0, 1, 75, 98,100, 0, 51, /* 0x0250 */ 2,120, 97,184, 67,120, 26, 83,127, 20, 0,113,129, 0, 0, 84,
/* 0x0260 */ 2,120, 33,184, 1,255,255,181,192, 3, 95,214, 0, 0, 32,212, /* 0x0260 */ 67, 0, 1, 75, 98,100, 0, 51, 2,120, 33,184, 1,255,255,181,
/* 0x0270 */ 192, 3, 95,214,168, 11,128, 82, 1, 0, 0,212,232, 7,128, 82, /* 0x0270 */ 192, 3, 95,214, 0, 0, 32,212,192, 3, 95,214,168, 11,128, 82,
/* 0x0280 */ 1, 0, 0,212,192, 3, 95,214, 8, 8,128, 82, 1, 0, 0,212, /* 0x0280 */ 1, 0, 0,212,232, 7,128, 82, 1, 0, 0,212,192, 3, 95,214,
/* 0x0290 */ 192, 3, 95,214, 40, 7,128, 82, 1, 0, 0,212,192, 3, 95,214, /* 0x0290 */ 8, 8,128, 82, 1, 0, 0,212,192, 3, 95,214, 40, 7,128, 82,
/* 0x02a0 */ 168, 21,128, 82, 1, 0, 0,212,192, 3, 95,214,200, 26,128, 82, /* 0x02a0 */ 1, 0, 0,212,192, 3, 95,214,168, 21,128, 82, 1, 0, 0,212,
/* 0x02b0 */ 1, 0, 0,212,192, 3, 95,214,232, 26,128, 82, 1, 0, 0,212, /* 0x02b0 */ 192, 3, 95,214,200, 26,128, 82, 1, 0, 0,212,192, 3, 95,214,
/* 0x02c0 */ 192, 3, 95,214, 8, 44, 64,146, 0, 0, 8,203, 33, 0, 8,139, /* 0x02c0 */ 232, 26,128, 82, 1, 0, 0,212,192, 3, 95,214, 8, 44, 64,146,
/* 0x02d0 */ 72, 28,128, 82, 1, 0, 0,212,192, 3, 95,214,102,239,255, 24, /* 0x02d0 */ 0, 0, 8,203, 33, 0, 8,139, 72, 28,128, 82, 1, 0, 0,212,
/* 0x02e0 */ 5, 0,128,210, 4, 0,128,146, 99, 0, 6, 42, 8, 44, 64,146, /* 0x02e0 */ 192, 3, 95,214, 38,239,255, 24, 5, 0,128,210, 4, 0,128,146,
/* 0x02f0 */ 0, 0, 8,203, 33, 0, 8,139,200, 27,128, 82, 1, 0, 0,212, /* 0x02f0 */ 99, 0, 6, 42, 8, 44, 64,146, 0, 0, 8,203, 33, 0, 8,139,
/* 0x0300 */ 192, 3, 95,214, 2, 0,128,210,225, 3, 0,170, 96, 12,128, 18, /* 0x0300 */ 200, 27,128, 82, 1, 0, 0,212,192, 3, 95,214, 2, 0,128,210,
/* 0x0310 */ 104, 4,128, 82, 4, 0, 0, 20,200, 9,128, 82, 2, 0, 0, 20, /* 0x0310 */ 225, 3, 0,170, 96, 12,128, 18,104, 4,128, 82, 4, 0, 0, 20,
/* 0x0320 */ 8, 7,128, 82,227, 3, 2,170,226, 3, 1,170,225, 3, 0,170, /* 0x0320 */ 200, 9,128, 82, 2, 0, 0, 20, 8, 7,128, 82,227, 3, 2,170,
/* 0x0330 */ 96, 12,128,146, 1, 0, 0,212,192, 3, 95,214, 0, 0, 64,212, /* 0x0330 */ 226, 3, 1,170,225, 3, 0,170, 96, 12,128,146, 1, 0, 0,212,
/* 0x0340 */ 2, 0,128, 82, 8, 0,128, 82, 1, 0, 0,212,192, 3, 95,214, /* 0x0340 */ 192, 3, 95,214, 0, 0, 64,212, 2, 0,128, 82, 8, 0,128, 82,
/* 0x0350 */ 253,123,191,169, 3, 0,128,210,253, 3, 0,145, 5, 0, 64,249, /* 0x0350 */ 1, 0, 0,212,192, 3, 95,214,253,123,191,169, 3, 0,128,210,
/* 0x0360 */ 4, 4, 64,249,191, 0, 2,235, 98, 0, 0, 84,224, 15,128, 82, /* 0x0360 */ 253, 3, 0,145, 5, 0, 64,249, 4, 4, 64,249,191, 0, 2,235,
/* 0x0370 */ 193,255,255,151,127, 0, 2,235,160, 0, 0, 84,133,104, 99, 56, /* 0x0370 */ 98, 0, 0, 84,224, 15,128, 82,193,255,255,151,127, 0, 2,235,
/* 0x0380 */ 37,104, 35, 56, 99, 4, 0,145,251,255,255, 23, 1, 4, 64,249, /* 0x0380 */ 160, 0, 0, 84,133,104, 99, 56, 37,104, 35, 56, 99, 4, 0,145,
/* 0x0390 */ 33, 0, 3,139, 1, 4, 0,249, 1, 0, 64,249, 35, 0, 3,203, /* 0x0390 */ 251,255,255, 23, 1, 4, 64,249, 33, 0, 3,139, 1, 4, 0,249,
/* 0x03a0 */ 3, 0, 0,249,253,123,193,168,192, 3, 95,214,253,123,187,169, /* 0x03a0 */ 1, 0, 64,249, 35, 0, 3,203, 3, 0, 0,249,253,123,193,168,
/* 0x03b0 */ 253, 3, 0,145,243, 83, 1,169,245, 91, 2,169,244, 3, 0,170, /* 0x03b0 */ 192, 3, 95,214,253,123,187,169,253, 3, 0,145,243, 83, 1,169,
/* 0x03c0 */ 243, 3, 1,170,246, 3, 2,170,245, 3, 3,170, 96, 2, 64,249, /* 0x03c0 */ 245, 91, 2,169,244, 3, 0,170,243, 3, 1,170,246, 3, 2,170,
/* 0x03d0 */ 160, 8, 0,180,224, 3, 20,170,130, 1,128,210,161, 3, 1,145, /* 0x03d0 */ 245, 3, 3,170, 96, 2, 64,249,160, 8, 0,180,224, 3, 20,170,
/* 0x03e0 */ 220,255,255,151,160, 67, 64,185,162, 71, 64,185, 0, 1, 0, 53, /* 0x03e0 */ 130, 1,128,210,161, 3, 1,145,220,255,255,151,160, 67, 64,185,
/* 0x03f0 */ 160, 10,138, 82, 0, 43,164,114, 95, 0, 0,107,225, 0, 0, 84, /* 0x03f0 */ 162, 71, 64,185, 0, 1, 0, 53,160, 10,138, 82, 0, 43,164,114,
/* 0x0400 */ 128, 2, 64,249, 0, 7, 0,180, 4, 0, 0, 20, 98, 0, 0, 52, /* 0x0400 */ 95, 0, 0,107,225, 0, 0, 84,128, 2, 64,249, 0, 7, 0,180,
/* 0x0410 */ 95, 0, 0,107,105, 0, 0, 84,224, 15,128, 82,150,255,255,151, /* 0x0410 */ 4, 0, 0, 20, 98, 0, 0, 52, 95, 0, 0,107,105, 0, 0, 84,
/* 0x0420 */ 99, 2, 64,249,225, 3, 0, 42, 63, 0, 3,235,104,255,255, 84, /* 0x0420 */ 224, 15,128, 82,150,255,255,151, 99, 2, 64,249,225, 3, 0, 42,
/* 0x0430 */ 95, 0, 0,107, 2, 4, 0, 84,161, 31, 0,249,225, 3, 2, 42, /* 0x0430 */ 63, 0, 3,235,104,255,255, 84, 95, 0, 0,107, 2, 4, 0, 84,
/* 0x0440 */ 128, 6, 64,249,163,227, 0,145, 98, 6, 64,249,164, 35, 65, 57, /* 0x0440 */ 161, 31, 0,249,225, 3, 2, 42,128, 6, 64,249,163,227, 0,145,
/* 0x0450 */ 192, 2, 63,214, 32,254,255, 53,161, 31, 64,249,160, 67, 64,185, /* 0x0450 */ 98, 6, 64,249,164, 35, 65, 57,192, 2, 63,214, 32,254,255, 53,
/* 0x0460 */ 63, 0, 0,235,161,253,255, 84,163, 39, 65, 57, 85, 1, 0,180, /* 0x0460 */ 161, 31, 64,249,160, 67, 64,185, 63, 0, 0,235,161,253,255, 84,
/* 0x0470 */ 35, 1, 0, 52, 63, 0, 8,241,136, 0, 0, 84, 96, 2, 64,249, /* 0x0470 */ 163, 39, 65, 57, 85, 1, 0,180, 35, 1, 0, 52, 63, 0, 8,241,
/* 0x0480 */ 31, 0, 1,235,129, 0, 0, 84, 96, 6, 64,249,162, 43, 65, 57, /* 0x0480 */ 136, 0, 0, 84, 96, 2, 64,249, 31, 0, 1,235,129, 0, 0, 84,
/* 0x0490 */ 160, 2, 63,214,163, 71, 64,185,129, 6, 64,249,128, 2, 64,249, /* 0x0490 */ 96, 6, 64,249,162, 43, 65, 57,160, 2, 63,214,163, 71, 64,185,
/* 0x04a0 */ 33, 0, 3,139,129, 6, 0,249, 0, 0, 3,203,128, 2, 0,249, /* 0x04a0 */ 129, 6, 64,249,128, 2, 64,249, 33, 0, 3,139,129, 6, 0,249,
/* 0x04b0 */ 5, 0, 0, 20, 97, 6, 64,249,224, 3, 20,170,226, 3, 2, 42, /* 0x04b0 */ 0, 0, 3,203,128, 2, 0,249, 5, 0, 0, 20, 97, 6, 64,249,
/* 0x04c0 */ 164,255,255,151,163, 67, 64,185, 97, 6, 64,249, 96, 2, 64,249, /* 0x04c0 */ 224, 3, 20,170,226, 3, 2, 42,164,255,255,151,163, 67, 64,185,
/* 0x04d0 */ 33, 0, 3,139, 97, 6, 0,249, 0, 0, 3,203, 96, 2, 0,249, /* 0x04d0 */ 97, 6, 64,249, 96, 2, 64,249, 33, 0, 3,139, 97, 6, 0,249,
/* 0x04e0 */ 187,255,255, 23,243, 83, 65,169,245, 91, 66,169,253,123,197,168, /* 0x04e0 */ 0, 0, 3,203, 96, 2, 0,249,187,255,255, 23,243, 83, 65,169,
/* 0x04f0 */ 192, 3, 95,214, 0, 2, 0,180,224, 1, 0, 55,228, 3, 1, 42, /* 0x04f0 */ 245, 91, 66,169,253,123,197,168,192, 3, 95,214, 0, 2, 0,180,
/* 0x0500 */ 3, 0, 64,249,127, 0, 4,235,129, 0, 0, 84, 4, 0, 0,249, /* 0x0500 */ 224, 1, 0, 55,228, 3, 1, 42, 3, 0, 64,249,127, 0, 4,235,
/* 0x0510 */ 2, 4, 0,249, 8, 0, 0, 20,127, 4, 0,241, 97, 0, 0, 84, /* 0x0510 */ 129, 0, 0, 84, 4, 0, 0,249, 2, 4, 0,249, 8, 0, 0, 20,
/* 0x0520 */ 97, 0, 0, 52,250,255,255, 23, 99, 0, 0,180, 0, 64, 0,145, /* 0x0520 */ 127, 4, 0,241, 97, 0, 0, 84, 97, 0, 0, 52,250,255,255, 23,
/* 0x0530 */ 244,255,255, 23,192, 3, 95,214,253,123,181,169,253, 3, 0,145, /* 0x0530 */ 99, 0, 0,180, 0, 64, 0,145,244,255,255, 23,192, 3, 95,214,
/* 0x0540 */ 232, 39, 6,109,201, 0,103,158, 6, 16, 64,249,236, 55, 8,109, /* 0x0540 */ 253,123,181,169,253, 3, 0,145,232, 39, 6,109,201, 0,103,158,
/* 0x0550 */ 245, 91, 2,169,238, 63, 9,109,246, 3, 0,170,234, 47, 7,109, /* 0x0550 */ 6, 16, 64,249,236, 55, 8,109,245, 91, 2,169,238, 63, 9,109,
/* 0x0560 */ 251,115, 5,169, 28, 0, 6,139,245, 3, 1,170, 32, 1,102,158, /* 0x0560 */ 246, 3, 0,170,234, 47, 7,109,251,115, 5,169, 28, 0, 6,139,
/* 0x0570 */ 249,107, 4,169,243, 83, 1,169,247, 99, 3,169, 76, 0, 39, 30, /* 0x0570 */ 245, 3, 1,170, 32, 1,102,158,249,107, 4,169,243, 83, 1,169,
/* 0x0580 */ 250, 3, 3,170,141, 0,103,158,249, 3, 7,170,174, 0,103,158, /* 0x0580 */ 247, 99, 3,169, 76, 0, 39, 30,250, 3, 3,170,141, 0,103,158,
/* 0x0590 */ 2, 0, 64,249,195, 34, 64,121, 65, 2, 0,180, 65, 16, 64,249, /* 0x0590 */ 249, 3, 7,170,174, 0,103,158, 2, 0, 64,249,195, 34, 64,121,
/* 0x05a0 */ 127, 8, 0,113, 65, 0, 1,139, 32, 36, 64,249, 64, 0, 0,203, /* 0x05a0 */ 65, 2, 0,180, 65, 16, 64,249,127, 8, 0,113, 65, 0, 1,139,
/* 0x05b0 */ 65, 0, 0, 84, 32, 8, 64,249, 33, 20, 64,249, 2, 0,128, 82, /* 0x05b0 */ 32, 36, 64,249, 64, 0, 0,203, 65, 0, 0, 84, 32, 8, 64,249,
/* 0x05c0 */ 67, 6,128, 82, 4, 0,128, 18, 5, 0,128,210, 72,255,255,151, /* 0x05c0 */ 33, 20, 64,249, 2, 0,128, 82, 67, 6,128, 82, 4, 0,128, 18,
/* 0x05d0 */ 193, 34, 64,121, 63, 8, 0,113, 19, 16,159,154, 42, 0, 0, 20, /* 0x05d0 */ 5, 0,128,210, 72,255,255,151,193, 34, 64,121, 63, 8, 0,113,
/* 0x05e0 */ 127, 12, 0,113, 3, 2,128, 82, 99, 16,159, 26,199,114, 64,121, /* 0x05e0 */ 19, 16,159,154, 42, 0, 0, 20,127, 12, 0,113, 3, 2,128, 82,
/* 0x05f0 */ 224, 3, 2,170, 99,136, 0, 17,228, 3, 28,170, 19, 0,128,146, /* 0x05f0 */ 99, 16,159, 26,199,114, 64,121,224, 3, 2,170, 99,136, 0, 17,
/* 0x0600 */ 231, 4, 0, 81,255, 4, 0, 49,160, 1, 0, 84,133, 0, 64,185, /* 0x0600 */ 228, 3, 28,170, 19, 0,128,146,231, 4, 0, 81,255, 4, 0, 49,
/* 0x0610 */ 191, 4, 0,113, 1, 1, 0, 84,136, 8, 64,249,133, 20, 64,249, /* 0x0610 */ 160, 1, 0, 84,133, 0, 64,185,191, 4, 0,113, 1, 1, 0, 84,
/* 0x0620 */ 127, 2, 8,235, 5, 1, 5,139,115,146,136,154, 63, 0, 5,235, /* 0x0620 */ 136, 8, 64,249,133, 20, 64,249,127, 2, 8,235, 5, 1, 5,139,
/* 0x0630 */ 33, 32,133,154,132,224, 0,145,242,255,255, 23,228, 3, 57,170, /* 0x0630 */ 115,146,136,154, 63, 0, 5,235, 33, 32,133,154,132,224, 0,145,
/* 0x0640 */ 115, 2, 25,138,129, 0, 1,139, 33, 0, 19,203, 33, 0, 25,138, /* 0x0640 */ 242,255,255, 23,228, 3, 57,170,115, 2, 25,138,129, 0, 1,139,
/* 0x0650 */ 163, 0, 32, 55, 83, 0, 0,181,162, 0, 0,181, 0, 0,128,210, /* 0x0650 */ 33, 0, 19,203, 33, 0, 25,138,163, 0, 32, 55, 83, 0, 0,181,
/* 0x0660 */ 4, 0, 0, 20,224, 3, 19,170, 2, 0, 0, 20, 67, 6,128, 82, /* 0x0660 */ 162, 0, 0,181, 0, 0,128,210, 4, 0, 0, 20,224, 3, 19,170,
/* 0x0670 */ 2, 0,128, 82, 4, 0,128, 18, 5, 0,128,210, 28,255,255,151, /* 0x0670 */ 2, 0, 0, 20, 67, 6,128, 82, 2, 0,128, 82, 4, 0,128, 18,
/* 0x0680 */ 19, 0, 19,203,224, 3, 57, 42,232, 3, 39, 30, 10, 0, 39, 30, /* 0x0680 */ 5, 0,128,210, 28,255,255,151, 19, 0, 19,203,224, 3, 57, 42,
/* 0x0690 */ 224, 3, 57,170, 15, 0,103,158, 1, 1, 38, 30,192,114, 64,121, /* 0x0690 */ 232, 3, 39, 30, 10, 0, 39, 30,224, 3, 57,170, 15, 0,103,158,
/* 0x06a0 */ 63, 0, 0,107,138, 21, 0, 84,128, 3, 64,185, 53, 1, 0,180, /* 0x06a0 */ 1, 1, 38, 30,192,114, 64,121, 63, 0, 0,107,138, 21, 0, 84,
/* 0x06b0 */ 31, 24, 0,113,225, 0, 0, 84,130, 11, 64,249,224, 3, 26,170, /* 0x06b0 */ 128, 3, 64,185, 53, 1, 0,180, 31, 24, 0,113,225, 0, 0, 84,
/* 0x06c0 */ 97, 0,128, 82, 98, 2, 2,139,139,255,255,151,157, 0, 0, 20, /* 0x06c0 */ 130, 11, 64,249,224, 3, 26,170, 97, 0,128, 82, 98, 2, 2,139,
/* 0x06d0 */ 31, 4, 0,113, 97, 19, 0, 84,128, 23, 64,249, 32, 19, 0,180, /* 0x06d0 */ 139,255,255,151,157, 0, 0, 20, 31, 4, 0,113, 97, 19, 0, 84,
/* 0x06e0 */ 155, 7, 64,185, 0, 72,140, 82, 32,106,174,114,123, 11, 30, 83, /* 0x06e0 */ 128, 23, 64,249, 32, 19, 0,180,155, 7, 64,185, 0, 72,140, 82,
/* 0x06f0 */ 27, 36,219, 26,121, 11, 0, 18, 85, 2, 0,180,128, 7, 64,249, /* 0x06f0 */ 32,106,174,114,123, 11, 30, 83, 27, 36,219, 26,121, 11, 0, 18,
/* 0x0700 */ 0, 2, 0,181,194, 18, 64,249,224, 3, 26,170,131, 11, 64,249, /* 0x0700 */ 85, 2, 0,180,128, 7, 64,249, 0, 2, 0,181,194, 18, 64,249,
/* 0x0710 */ 97, 0,128, 82, 98, 2, 2,139, 66, 0, 3,139,118,255,255,151, /* 0x0710 */ 224, 3, 26,170,131, 11, 64,249, 97, 0,128, 82, 98, 2, 2,139,
/* 0x0720 */ 194,114, 64,121,224, 3, 26,170,161, 0,128, 82,114,255,255,151, /* 0x0720 */ 66, 0, 3,139,118,255,255,151,194,114, 64,121,224, 3, 26,170,
/* 0x0730 */ 194,110, 64,121,224, 3, 26,170,129, 0,128, 82,110,255,255,151, /* 0x0730 */ 161, 0,128, 82,114,255,255,151,194,110, 64,121,224, 3, 26,170,
/* 0x0740 */ 148, 11, 64,249,191, 2, 31,235,128, 23, 64,249,130, 0,128, 18, /* 0x0740 */ 129, 0,128, 82,110,255,255,151,148, 11, 64,249,191, 2, 31,235,
/* 0x0750 */ 116, 2, 20,139,151, 19, 64,249,128, 2, 0,139,183, 83, 0,249, /* 0x0750 */ 128, 23, 64,249,130, 0,128, 18,116, 2, 20,139,151, 19, 64,249,
/* 0x0760 */ 225, 1,102,158,180, 87, 0,249, 11, 0,103,158,152, 2, 23,139, /* 0x0760 */ 128, 2, 0,139,183, 83, 0,249,225, 1,102,158,180, 87, 0,249,
/* 0x0770 */ 64, 1, 38, 30,135, 7, 64,249, 72, 6,128, 82, 5, 0, 20, 10, /* 0x0770 */ 11, 0,103,158,152, 2, 23,139, 64, 1, 38, 30,135, 7, 64,249,
/* 0x0780 */ 148, 2, 5,203,183, 0, 23,139,128, 2, 23,139,229, 0, 5,203, /* 0x0780 */ 72, 6,128, 82, 5, 0, 20, 10,148, 2, 5,203,183, 0, 23,139,
/* 0x0790 */ 224, 3, 0,203, 0, 0, 1,138, 23, 0, 23,139, 64, 0,128, 82, /* 0x0790 */ 128, 2, 23,139,229, 0, 5,203,224, 3, 0,203, 0, 0, 1,138,
/* 0x07a0 */ 3, 16,159, 26,191, 2, 31,235,128, 1, 38, 30, 99, 0, 25, 42, /* 0x07a0 */ 23, 0, 23,139, 64, 0,128, 82, 3, 16,159, 26,191, 2, 31,235,
/* 0x07b0 */ 66, 16,159, 90,191, 2, 31,235, 66, 0, 3, 10, 67, 2,128, 82, /* 0x07b0 */ 128, 1, 38, 30, 99, 0, 25, 42, 66, 16,159, 90,191, 2, 31,235,
/* 0x07c0 */ 225, 3, 23,170, 4, 0,159, 90,191, 2, 31,235, 3, 17,131, 26, /* 0x07c0 */ 66, 0, 3, 10, 67, 2,128, 82,225, 3, 23,170, 4, 0,159, 90,
/* 0x07d0 */ 224, 3, 20,170,198,254,255,151,159, 2, 0,235, 96, 0, 0, 84, /* 0x07d0 */ 191, 2, 31,235, 3, 17,131, 26,224, 3, 20,170,198,254,255,151,
/* 0x07e0 */ 224, 15,128, 82,164,254,255,151,213, 0, 0,180,162, 1,102,158, /* 0x07e0 */ 159, 2, 0,235, 96, 0, 0, 84,224, 15,128, 82,164,254,255,151,
/* 0x07f0 */ 224, 3, 21,170,195, 1,102,158,161,131, 2,145,236,254,255,151, /* 0x07f0 */ 213, 0, 0,180,162, 1,102,158,224, 3, 21,170,195, 1,102,158,
/* 0x0800 */ 187, 1, 8, 54, 64, 1, 38, 30,225, 3, 24, 75, 34, 0, 0, 10, /* 0x0800 */ 161,131, 2,145,236,254,255,151,187, 1, 8, 54, 64, 1, 38, 30,
/* 0x0810 */ 0, 0,128,210, 98, 0, 0, 53, 24, 3, 2,139, 6, 0, 0, 20, /* 0x0810 */ 225, 3, 24, 75, 34, 0, 0, 10, 0, 0,128,210, 98, 0, 0, 53,
/* 0x0820 */ 31,107, 32, 56, 0, 4, 0,145, 31, 0, 2,235,161,255,255, 84, /* 0x0820 */ 24, 3, 2,139, 6, 0, 0, 20, 31,107, 32, 56, 0, 4, 0,145,
/* 0x0830 */ 250,255,255, 23,213, 6, 0,180,128, 3, 64,249,225, 3, 0,178, /* 0x0830 */ 31, 0, 2,235,161,255,255, 84,250,255,255, 23,213, 6, 0,180,
/* 0x0840 */ 0,128, 64,146, 31, 0, 1,235,129, 5, 0, 84,128, 23, 64,249, /* 0x0840 */ 128, 3, 64,249,225, 3, 0,178, 0,128, 64,146, 31, 0, 1,235,
/* 0x0850 */ 130, 19, 64,249,129, 11, 64,249, 31, 0, 2,235,129, 1, 0, 84, /* 0x0850 */ 129, 5, 0, 84,128, 23, 64,249,130, 19, 64,249,129, 11, 64,249,
/* 0x0860 */ 123, 14, 0,145,123, 3, 0,139, 66, 1, 38, 30,123, 3, 1,139, /* 0x0860 */ 31, 0, 2,235,129, 1, 0, 84,123, 14, 0,145,123, 3, 0,139,
/* 0x0870 */ 123,247,126,146,224, 3, 27, 75, 0, 0, 2, 10, 31, 28, 0,113, /* 0x0870 */ 66, 1, 38, 30,123, 3, 1,139,123,247,126,146,224, 3, 27, 75,
/* 0x0880 */ 105, 0, 0, 84, 0, 0,128, 82, 13, 0, 0, 20,128, 7, 64,249, /* 0x0880 */ 0, 0, 2, 10, 31, 28, 0,113,105, 0, 0, 84, 0, 0,128, 82,
/* 0x0890 */ 160, 6, 0,180, 0, 0,128,210, 1, 0,130,210, 98, 0,128, 82, /* 0x0890 */ 13, 0, 0, 20,128, 7, 64,249,160, 6, 0,180, 0, 0,128,210,
/* 0x08a0 */ 67, 4,128, 82, 4, 0,128, 18,229, 3, 0,170,144,254,255,151, /* 0x08a0 */ 1, 0,130,210, 98, 0,128, 82, 67, 4,128, 82, 4, 0,128, 18,
/* 0x08b0 */ 251, 3, 0,170, 32, 2, 0,180, 32, 0,128, 82, 33, 0,128, 82, /* 0x08b0 */ 229, 3, 0,170,144,254,255,151,251, 3, 0,170, 32, 2, 0,180,
/* 0x08c0 */ 1,128,186,114, 97, 3, 0,185, 1,120,128, 82,225,203,186,114, /* 0x08c0 */ 32, 0,128, 82, 33, 0,128, 82, 1,128,186,114, 97, 3, 0,185,
/* 0x08d0 */ 97, 7, 0,185,160, 0, 0, 52,224, 3, 27,170, 1, 1,128,210, /* 0x08d0 */ 1,120,128, 82,225,203,186,114, 97, 7, 0,185,160, 0, 0, 52,
/* 0x08e0 */ 162, 0,128, 82,120,254,255,151, 64,251,127,146, 1, 0,128, 82, /* 0x08e0 */ 224, 3, 27,170, 1, 1,128,210,162, 0,128, 82,120,254,255,151,
/* 0x08f0 */ 226, 3, 27,170, 0,255,255,151,224, 3, 20,170,225, 3, 23,170, /* 0x08f0 */ 64,251,127,146, 1, 0,128, 82,226, 3, 27,170, 0,255,255,151,
/* 0x0900 */ 226, 3, 25, 42,112,254,255,151,192,246,255, 53, 96, 1,102,158, /* 0x0900 */ 224, 3, 20,170,225, 3, 23,170,226, 3, 25, 42,112,254,255,151,
/* 0x0910 */ 31, 3, 0,235, 98, 1, 0, 84, 97, 1,102,158,224, 3, 24,170, /* 0x0910 */ 192,246,255, 53, 96, 1,102,158, 31, 3, 0,235, 98, 1, 0, 84,
/* 0x0920 */ 226, 3, 25, 42, 67, 6,128, 82, 4, 0,128, 18, 5, 0,128,210, /* 0x0920 */ 97, 1,102,158,224, 3, 24,170,226, 3, 25, 42, 67, 6,128, 82,
/* 0x0930 */ 33, 0, 24,203,110,254,255,151, 31, 3, 0,235, 33,245,255, 84, /* 0x0930 */ 4, 0,128, 18, 5, 0,128,210, 33, 0, 24,203,110,254,255,151,
/* 0x0940 */ 0, 1, 38, 30,156,227, 0,145, 0, 4, 0, 17, 8, 0, 39, 30, /* 0x0940 */ 31, 3, 0,235, 33,245,255, 84, 0, 1, 38, 30,156,227, 0,145,
/* 0x0950 */ 82,255,255, 23, 32, 1,102,158,192, 0, 0,180, 19, 0, 0,249, /* 0x0950 */ 0, 4, 0, 17, 8, 0, 39, 30, 82,255,255, 23, 32, 1,102,158,
/* 0x0960 */ 4, 0, 0, 20, 59, 0, 19,139,123, 35, 0,145,212,255,255, 23, /* 0x0960 */ 192, 0, 0,180, 19, 0, 0,249, 4, 0, 0, 20, 59, 0, 19,139,
/* 0x0970 */ 192, 14, 64,249,232, 39, 70,109,245, 91, 66,169,234, 47, 71,109, /* 0x0970 */ 123, 35, 0,145,212,255,255, 23,192, 14, 64,249,232, 39, 70,109,
/* 0x0980 */ 96, 2, 0,139,236, 55, 72,109,243, 83, 65,169,238, 63, 73,109, /* 0x0980 */ 245, 91, 66,169,234, 47, 71,109, 96, 2, 0,139,236, 55, 72,109,
/* 0x0990 */ 247, 99, 67,169,249,107, 68,169,251,115, 69,169,253,123,203,168, /* 0x0990 */ 243, 83, 65,169,238, 63, 73,109,247, 99, 67,169,249,107, 68,169,
/* 0x09a0 */ 192, 3, 95,214,253,123,182,169,253, 3, 0,145,247, 99, 3,169, /* 0x09a0 */ 251,115, 69,169,253,123,203,168,192, 3, 95,214,253,123,182,169,
/* 0x09b0 */ 247, 3, 3,170, 3, 4, 64,185,243, 83, 1,169,162, 63, 0,249, /* 0x09b0 */ 253, 3, 0,145,247, 99, 3,169,247, 3, 3,170, 3, 4, 64,185,
/* 0x09c0 */ 243, 3, 2,170, 99, 48, 0,145, 2, 0, 64,185,162, 59, 0,249, /* 0x09c0 */ 243, 83, 1,169,162, 63, 0,249,243, 3, 2,170, 99, 48, 0,145,
/* 0x09d0 */ 226, 3, 4,170,160, 79, 0,249,116, 2, 1,145,163, 75, 0,249, /* 0x09d0 */ 2, 0, 64,185,162, 59, 0,249,226, 3, 4,170,160, 79, 0,249,
/* 0x09e0 */ 3, 0,128,210,160, 71, 0,249,160, 67, 2,145,161, 67, 0,249, /* 0x09e0 */ 116, 2, 1,145,163, 75, 0,249, 3, 0,128,210,160, 71, 0,249,
/* 0x09f0 */ 161,195, 1,145,245, 91, 2,169,249, 35, 0,249,249, 3, 7,170, /* 0x09f0 */ 160, 67, 2,145,161, 67, 0,249,161,195, 1,145,245, 91, 2,169,
/* 0x0a00 */ 165, 47, 0,249, 22, 0,128, 82,166, 55, 0,249,164, 51, 0,249, /* 0x0a00 */ 249, 35, 0,249,249, 3, 7,170,165, 47, 0,249, 22, 0,128, 82,
/* 0x0a10 */ 103,254,255,151,164, 51, 64,249,161, 3, 2,145,165, 47, 64,249, /* 0x0a10 */ 166, 55, 0,249,164, 51, 0,249,103,254,255,151,164, 51, 64,249,
/* 0x0a20 */ 2, 0,128, 82,227, 3, 23,170,166,163, 1,145,231, 3, 25,170, /* 0x0a20 */ 161, 3, 2,145,165, 47, 64,249, 2, 0,128, 82,227, 3, 23,170,
/* 0x0a30 */ 224, 3, 19,170,193,254,255,151,245, 3, 0,170, 33, 1,128, 82, /* 0x0a30 */ 166,163, 1,145,231, 3, 25,170,224, 3, 19,170,193,254,255,151,
/* 0x0a40 */ 224, 3, 23,170,226, 3, 21,170,171,254,255,151, 96,114, 64,121, /* 0x0a40 */ 245, 3, 0,170, 33, 1,128, 82,224, 3, 23,170,226, 3, 21,170,
/* 0x0a50 */ 223, 2, 0,107,226, 4, 0, 84,128, 2, 64,185, 31, 12, 0,113, /* 0x0a50 */ 171,254,255,151, 96,114, 64,121,223, 2, 0,107,226, 4, 0, 84,
/* 0x0a60 */ 33, 4, 0, 84,129, 10, 64,249,160, 55, 64,249, 32, 0, 0,139, /* 0x0a60 */ 128, 2, 64,185, 31, 12, 0,113, 33, 4, 0, 84,129, 10, 64,249,
/* 0x0a70 */ 1, 0,128, 82,226, 3, 1, 42, 42,254,255,151,248, 3, 0, 42, /* 0x0a70 */ 160, 55, 64,249, 32, 0, 0,139, 1, 0,128, 82,226, 3, 1, 42,
/* 0x0a80 */ 96, 0,248, 54,224, 15,128, 82,251,253,255,151,225, 3, 19,170, /* 0x0a80 */ 42,254,255,151,248, 3, 0, 42, 96, 0,248, 54,224, 15,128, 82,
/* 0x0a90 */ 2,128,128,210,250,253,255,151, 31, 0, 16,241, 65,255,255, 84, /* 0x0a90 */ 251,253,255,151,225, 3, 19,170, 2,128,128,210,250,253,255,151,
/* 0x0aa0 */ 1, 0,128,210,226, 3, 24, 42,227, 3, 1,170,228, 3, 1,170, /* 0x0aa0 */ 31, 0, 16,241, 65,255,255, 84, 1, 0,128,210,226, 3, 24, 42,
/* 0x0ab0 */ 229, 3, 1,170,166,163, 1,145,231, 3, 25,170,224, 3, 19,170, /* 0x0ab0 */ 227, 3, 1,170,228, 3, 1,170,229, 3, 1,170,166,163, 1,145,
/* 0x0ac0 */ 191, 55, 0,249,157,254,255,151,245, 3, 0,170,162, 55, 64,249, /* 0x0ac0 */ 231, 3, 25,170,224, 3, 19,170,191, 55, 0,249,157,254,255,151,
/* 0x0ad0 */ 224, 3, 23,170,225, 0,128, 82,135,254,255,151,224, 3, 24, 42, /* 0x0ad0 */ 245, 3, 0,170,162, 55, 64,249,224, 3, 23,170,225, 0,128, 82,
/* 0x0ae0 */ 237,253,255,151,148,226, 0,145,214, 6, 0, 17,216,255,255, 23, /* 0x0ae0 */ 135,254,255,151,224, 3, 24, 42,237,253,255,151,148,226, 0,145,
/* 0x0af0 */ 224, 3, 21,170,249, 35, 64,249,243, 83, 65,169,245, 91, 66,169, /* 0x0af0 */ 214, 6, 0, 17,216,255,255, 23,224, 3, 21,170,249, 35, 64,249,
/* 0x0b00 */ 247, 99, 67,169,253,123,202,168,192, 3, 95,214 /* 0x0b00 */ 243, 83, 65,169,245, 91, 66,169,247, 99, 67,169,253,123,202,168,
/* 0x0b10 */ 192, 3, 95,214
}; };
+578 -582
View File
File diff suppressed because it is too large Load Diff
+162 -162
View File
@@ -1,5 +1,5 @@
/* armeb.v4a-linux.elf-fold.h /* armeb.v4a-linux.elf-fold.h
created from armeb.v4a-linux.elf-fold.bin, 2856 (0xb28) bytes created from armeb.v4a-linux.elf-fold.bin, 2864 (0xb30) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -32,17 +32,17 @@
/* clang-format off */ /* clang-format off */
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_SIZE 2856 #define STUB_ARMEB_V4A_LINUX_ELF_FOLD_SIZE 2864
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_ADLER32 0x35719b02 #define STUB_ARMEB_V4A_LINUX_ELF_FOLD_ADLER32 0x19a89d2b
#define STUB_ARMEB_V4A_LINUX_ELF_FOLD_CRC32 0x97c5fe5c #define STUB_ARMEB_V4A_LINUX_ELF_FOLD_CRC32 0x16e9050c
unsigned char stub_armeb_v4a_linux_elf_fold[2856] = { unsigned char stub_armeb_v4a_linux_elf_fold[2864] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 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, /* 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, /* 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, /* 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, 40, 0, 0, 11, 40, 0, 0, 0, 5, /* 0x0040 */ 0, 0,128, 0, 0, 0, 11, 48, 0, 0, 11, 48, 0, 0, 0, 5,
/* 0x0050 */ 0, 0,128, 0, 0, 0, 0, 1, 0, 0, 11, 40, 0, 0, 0, 0, /* 0x0050 */ 0, 0,128, 0, 0, 0, 0, 1, 0, 0, 11, 48, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,128, 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,232,189, 31,192,225,160, 16, 13,226, 77,218, 1, /* 0x0080 */ 0, 0, 0, 34,232,189, 31,192,225,160, 16, 13,226, 77,218, 1,
@@ -51,7 +51,7 @@ unsigned char stub_armeb_v4a_linux_elf_fold[2856] = {
/* 0x00b0 */ 228,145, 48, 4,227, 83, 0, 0,228,128, 48, 4, 26,255,255,251, /* 0x00b0 */ 228,145, 48, 4,227, 83, 0, 0,228,128, 48, 4, 26,255,255,251,
/* 0x00c0 */ 225,160, 80, 1,232,177, 0, 12,227, 82, 0, 0,232,160, 0, 12, /* 0x00c0 */ 225,160, 80, 1,232,177, 0, 12,227, 82, 0, 0,232,160, 0, 12,
/* 0x00d0 */ 26,255,255,251,225,160, 96, 1,225,160,144, 0,227,160, 42, 1, /* 0x00d0 */ 26,255,255,251,225,160, 96, 1,225,160,144, 0,227,160, 42, 1,
/* 0x00e0 */ 225,160, 16, 0,225,160, 0, 14,226, 66, 32, 1,235, 0, 0,120, /* 0x00e0 */ 225,160, 16, 0,225,160, 0, 14,226, 66, 32, 1,235, 0, 0,122,
/* 0x00f0 */ 227,112, 10, 1, 33,160, 16, 14, 35,160, 0, 14,224,129, 32, 0, /* 0x00f0 */ 227,112, 10, 1, 33,160, 16, 14, 35,160, 0, 14,224,129, 32, 0,
/* 0x0100 */ 225,160, 0, 6,227,160, 48, 0,229, 96, 48, 1,229,114, 48, 1, /* 0x0100 */ 225,160, 0, 6,227,160, 48, 0,229, 96, 48, 1,229,114, 48, 1,
/* 0x0110 */ 229, 96, 48, 1,225, 81, 0, 2, 26,255,255,251,227,160, 48, 61, /* 0x0110 */ 229, 96, 48, 1,225, 81, 0, 2, 26,255,255,251,227,160, 48, 61,
@@ -61,159 +61,159 @@ unsigned char stub_armeb_v4a_linux_elf_fold[2856] = {
/* 0x0150 */ 224, 64, 48, 6,224,131, 48, 5,225,160, 16, 9,229,157, 80, 24, /* 0x0150 */ 224, 64, 48, 6,224,131, 48, 5,225,160, 16, 9,229,157, 80, 24,
/* 0x0160 */ 229,141, 0, 24,229, 49, 32, 4,225, 81, 0, 13,229, 32, 32, 4, /* 0x0160 */ 229,141, 0, 24,229, 49, 32, 4,225, 81, 0, 13,229, 32, 32, 4,
/* 0x0170 */ 26,255,255,251,225,160,208, 0,232,189, 12, 16,226, 77,220, 10, /* 0x0170 */ 26,255,255,251,225,160,208, 0,232,189, 12, 16,226, 77,220, 10,
/* 0x0180 */ 229,154,144, 4,225,160,128, 13,229,154,112, 0,226,143, 96,176, /* 0x0180 */ 229,154,144, 4,225,160,128, 13,229,154,112, 0,226,143, 96,184,
/* 0x0190 */ 226,137,144, 12,233, 45, 15,248,232,189, 0, 15,235, 0, 2, 20, /* 0x0190 */ 226,137,144, 12,233, 45, 15,248,232,189, 0, 15,235, 0, 2, 22,
/* 0x01a0 */ 226,141,208, 20,226,141,220, 10,229,141, 0, 16,229,155, 16,104, /* 0x01a0 */ 226,141,208, 20,226,141,220, 10,229,141, 0, 16,229,155, 16,104,
/* 0x01b0 */ 225,160, 0, 11,235, 0, 0, 68,225,160, 0, 11,235, 0, 0, 70, /* 0x01b0 */ 225,160, 0, 11,235, 0, 0, 70,225,160, 0, 11,235, 0, 0, 72,
/* 0x01c0 */ 228,157, 64, 4,227,160, 80, 0,233, 45, 0, 48,227,160, 48, 2, /* 0x01c0 */ 228,157, 64, 4,227, 84, 0, 0,186, 0, 0, 8,227,160, 80, 0,
/* 0x01d0 */ 227,160, 32, 1,227,160, 26, 1,227,160, 0, 0,235, 0, 0, 70, /* 0x01d0 */ 233, 45, 0, 48,227,160, 48, 2,227,160, 32, 1,227,160, 26, 1,
/* 0x01e0 */ 232,189, 0, 3,235, 0, 0, 50,232,189, 64, 7,227,160, 48, 0, /* 0x01e0 */ 227,160, 0, 0,235, 0, 0, 70,232,189, 0, 3,235, 0, 0, 50,
/* 0x01f0 */ 227,160, 64, 0,227,160, 80, 0,227,160, 96, 0,227,160,128, 0, /* 0x01f0 */ 232,189, 64, 7,227,160, 48, 0,227,160, 64, 0,227,160, 80, 0,
/* 0x0200 */ 227,160,144, 0,227,160,160, 0,227,160,176, 0,226, 77,199, 1, /* 0x0200 */ 227,160, 96, 0,227,160,128, 0,227,160,144, 0,227,160,160, 0,
/* 0x0210 */ 228, 29,112, 32,229,141,112, 0,229,157,112, 0,225, 92, 0, 13, /* 0x0210 */ 227,160,176, 0,226, 77,199, 1,228, 29,112, 32,229,141,112, 0,
/* 0x0220 */ 58,255,255,250,226,141,215, 1,227,160,112, 0,227,160,192, 0, /* 0x0220 */ 229,157,112, 0,225, 92, 0, 13, 58,255,255,250,226,141,215, 1,
/* 0x0230 */ 225,160,240, 14, 47,112,114,111, 99, 47,115,101,108,102, 47,101, /* 0x0230 */ 227,160,112, 0,227,160,192, 0,225,160,240, 14, 47,112,114,111,
/* 0x0240 */ 120,101, 0, 0,226, 3, 48,255,227, 83, 0, 81, 17,160,240, 14, /* 0x0240 */ 99, 47,115,101,108,102, 47,101,120,101, 0, 0,226, 3, 48,255,
/* 0x0250 */ 225,176, 17, 33, 19, 80, 0, 0, 1,160,240, 14,226, 65, 16, 1, /* 0x0250 */ 227, 83, 0, 81, 17,160,240, 14,225,176, 17, 33, 19, 80, 0, 0,
/* 0x0260 */ 231,144, 33, 1,226, 2, 52, 15,227, 83, 4, 11, 26, 0, 0, 4, /* 0x0260 */ 1,160,240, 14,226, 65, 16, 1,231,144, 33, 1,226, 2, 52, 15,
/* 0x0270 */ 226, 2, 52,255,224, 66, 32, 1,227,194, 36,255,225,130, 32, 3, /* 0x0270 */ 227, 83, 4, 11, 26, 0, 0, 4,226, 2, 52,255,224, 66, 32, 1,
/* 0x0280 */ 231,128, 33, 1,227, 81, 0, 0, 26,255,255,243,225,160,240, 14, /* 0x0280 */ 227,194, 36,255,225,130, 32, 3,231,128, 33, 1,227, 81, 0, 0,
/* 0x0290 */ 231,240, 1,240,225,160,240, 14,239,144, 0, 1,239,144, 0, 3, /* 0x0290 */ 26,255,255,243,225,160,240, 14,231,240, 1,240,225,160,240, 14,
/* 0x02a0 */ 225,160,240, 14,239,144, 0, 4,225,160,240, 14,239,144, 0, 5, /* 0x02a0 */ 239,144, 0, 1,239,144, 0, 3,225,160,240, 14,239,144, 0, 4,
/* 0x02b0 */ 225,160,240, 14,239,144, 0, 6,225,160,240, 14,239,144, 0, 10, /* 0x02b0 */ 225,160,240, 14,239,144, 0, 5,225,160,240, 14,239,144, 0, 6,
/* 0x02c0 */ 225,160,240, 14,239,144, 0, 20,225,160,240, 14,239,144, 0, 45, /* 0x02c0 */ 225,160,240, 14,239,144, 0, 10,225,160,240, 14,239,144, 0, 20,
/* 0x02d0 */ 225,160,240, 14,239,144, 0, 85,225,160,240, 14,239,144, 0, 91, /* 0x02d0 */ 225,160,240, 14,239,144, 0, 45,225,160,240, 14,239,144, 0, 85,
/* 0x02e0 */ 225,160,240, 14,229,159,192, 56,224, 12,192, 0,224, 64, 0, 12, /* 0x02e0 */ 225,160,240, 14,239,144, 0, 91,225,160,240, 14,229,159,192, 56,
/* 0x02f0 */ 224,129, 16, 12,239,144, 0,125,225,160,240, 14,233, 45, 64, 48, /* 0x02f0 */ 224, 12,192, 0,224, 64, 0, 12,224,129, 16, 12,239,144, 0,125,
/* 0x0300 */ 229,157, 80, 16,229,157, 64, 12,225,160, 86, 37,229,159,192, 16, /* 0x0300 */ 225,160,240, 14,233, 45, 64, 48,229,157, 80, 16,229,157, 64, 12,
/* 0x0310 */ 224, 12,192, 0,224, 64, 0, 12,224,129, 16, 12,239,144, 0,192, /* 0x0310 */ 225,160, 86, 37,229,159,192, 16,224, 12,192, 0,224, 64, 0, 12,
/* 0x0320 */ 232,189,128, 48, 0, 0, 15,255,239,144, 0,192,232,189,128, 48, /* 0x0320 */ 224,129, 16, 12,239,144, 0,192,232,189,128, 48, 0, 0, 15,255,
/* 0x0330 */ 227,160, 32, 0,239,159, 0, 2,225,160,240, 14,229, 31, 0,104, /* 0x0330 */ 239,144, 0,192,232,189,128, 48,227,160, 32, 0,239,159, 0, 2,
/* 0x0340 */ 225,160,240, 14,233, 45, 64, 48,229, 31, 66,208,227,160, 80, 0, /* 0x0340 */ 225,160,240, 14,229, 31, 0,104,225,160,240, 14,233, 45, 64, 48,
/* 0x0350 */ 225,131, 48, 4,227,224, 64, 0,234,255,255,235,225,160,192, 0, /* 0x0350 */ 229, 31, 66,216,227,160, 80, 0,225,131, 48, 4,227,224, 64, 0,
/* 0x0360 */ 224, 65, 16, 1,225,160, 32, 0,224,144, 1,128,224,161, 17,129, /* 0x0360 */ 234,255,255,235,225,160,192, 0,224, 65, 16, 1,225,160, 32, 0,
/* 0x0370 */ 224,129, 30,162,225,160, 32, 0,224,144, 2, 0,224,161, 18, 1, /* 0x0370 */ 224,144, 1,128,224,161, 17,129,224,129, 30,162,225,160, 32, 0,
/* 0x0380 */ 224,129, 30, 34,225,160, 32, 0,224,144, 4, 0,224,161, 20, 1, /* 0x0380 */ 224,144, 2, 0,224,161, 18, 1,224,129, 30, 34,225,160, 32, 0,
/* 0x0390 */ 224,129, 28, 34,225,160, 32, 0,224,144, 8, 0,224,161, 24, 1, /* 0x0390 */ 224,144, 4, 0,224,161, 20, 1,224,129, 28, 34,225,160, 32, 0,
/* 0x03a0 */ 224,129, 24, 34,224, 80, 15,140,224,193, 16,172,224,144, 0, 12, /* 0x03a0 */ 224,144, 8, 0,224,161, 24, 1,224,129, 24, 34,224, 80, 15,140,
/* 0x03b0 */ 226,161, 0, 0,225,160,240, 14,227, 80, 0, 0, 1, 47,255, 30, /* 0x03b0 */ 224,193, 16,172,224,144, 0, 12,226,161, 0, 0,225,160,240, 14,
/* 0x03c0 */ 229,144, 48, 0,225, 83, 0, 1, 18,128, 0, 8, 26,255,255,251, /* 0x03c0 */ 227, 80, 0, 0, 1, 47,255, 30,229,144, 48, 0,225, 83, 0, 1,
/* 0x03d0 */ 229,128, 32, 4,225, 47,255, 30,229,159, 0, 0,225, 47,255, 30, /* 0x03d0 */ 18,128, 0, 8, 26,255,255,251,229,128, 32, 4,225, 47,255, 30,
/* 0x03e0 */ 255,255,240, 0,229,144, 48, 0,225, 83, 0, 2,229,144, 48, 4, /* 0x03e0 */ 229,159, 0, 0,225, 47,255, 30,255,255,240, 0,229,144, 48, 0,
/* 0x03f0 */ 229, 45,224, 4, 33,160,192, 3,225,160,224, 2, 33,160, 32, 2, /* 0x03f0 */ 225, 83, 0, 2,229,144, 48, 4,229, 45,224, 4, 33,160,192, 3,
/* 0x0400 */ 42, 0, 0, 3,227,160, 0,127,235,255,255,162,229, 92, 48, 1, /* 0x0400 */ 225,160,224, 2, 33,160, 32, 2, 42, 0, 0, 3,227,160, 0,127,
/* 0x0410 */ 229, 65, 48, 1,226, 66, 32, 1,227,114, 0, 1,226,140,192, 1, /* 0x0410 */ 235,255,255,162,229, 92, 48, 1,229, 65, 48, 1,226, 66, 32, 1,
/* 0x0420 */ 226,129, 16, 1, 26,255,255,248,229,144, 32, 4,229,144, 48, 0, /* 0x0420 */ 227,114, 0, 1,226,140,192, 1,226,129, 16, 1, 26,255,255,248,
/* 0x0430 */ 224,130, 32, 14,224,110, 48, 3,229,128, 48, 0,229,128, 32, 4, /* 0x0430 */ 229,144, 32, 4,229,144, 48, 0,224,130, 32, 14,224,110, 48, 3,
/* 0x0440 */ 228,157,240, 4,233, 45, 64,240,225,160, 80, 0,226, 77,208, 20, /* 0x0440 */ 229,128, 48, 0,229,128, 32, 4,228,157,240, 4,233, 45, 64,240,
/* 0x0450 */ 225,160, 64, 1,225,160,112, 2,225,160, 96, 3,234, 0, 0, 68, /* 0x0450 */ 225,160, 80, 0,226, 77,208, 20,225,160, 64, 1,225,160,112, 2,
/* 0x0460 */ 226,141, 16, 4,225,160, 0, 5,227,160, 32, 12,235,255,255,220, /* 0x0460 */ 225,160, 96, 3,234, 0, 0, 68,226,141, 16, 4,225,160, 0, 5,
/* 0x0470 */ 229,157,224, 4,227, 94, 0, 0,229,157, 16, 8, 26, 0, 0, 6, /* 0x0470 */ 227,160, 32, 12,235,255,255,220,229,157,224, 4,227, 94, 0, 0,
/* 0x0480 */ 229,159, 49, 0,225, 81, 0, 3, 26, 0, 0, 5,229,149, 48, 0, /* 0x0480 */ 229,157, 16, 8, 26, 0, 0, 6,229,159, 49, 0,225, 81, 0, 3,
/* 0x0490 */ 227, 83, 0, 0, 26, 0, 0, 2,234, 0, 0, 56,227, 81, 0, 0, /* 0x0490 */ 26, 0, 0, 5,229,149, 48, 0,227, 83, 0, 0, 26, 0, 0, 2,
/* 0x04a0 */ 26, 0, 0, 1,227,160, 0,127,235,255,255,122,225, 81, 0, 14, /* 0x04a0 */ 234, 0, 0, 56,227, 81, 0, 0, 26, 0, 0, 1,227,160, 0,127,
/* 0x04b0 */ 138,255,255,251,229,148, 48, 0,225, 94, 0, 3,138,255,255,248, /* 0x04b0 */ 235,255,255,122,225, 81, 0, 14,138,255,255,251,229,148, 48, 0,
/* 0x04c0 */ 225, 81, 0, 14, 42, 0, 0, 33,229,221,192, 12,229,149, 0, 4, /* 0x04c0 */ 225, 94, 0, 3,138,255,255,248,225, 81, 0, 14, 42, 0, 0, 33,
/* 0x04d0 */ 229,148, 32, 4,226,141, 48, 16,229,141,224, 16,229,141,192, 0, /* 0x04d0 */ 229,221,192, 12,229,149, 0, 4,229,148, 32, 4,226,141, 48, 16,
/* 0x04e0 */ 225,160,224, 15,225, 47,255, 23,227, 80, 0, 0, 26,255,255,236, /* 0x04e0 */ 229,141,224, 16,229,141,192, 0,225,160,224, 15,225, 47,255, 23,
/* 0x04f0 */ 229,157, 16, 16,229,157, 48, 4,225, 81, 0, 3, 26,255,255,232, /* 0x04f0 */ 227, 80, 0, 0, 26,255,255,236,229,157, 16, 16,229,157, 48, 4,
/* 0x0500 */ 229,221, 32, 13,227, 82, 0, 0, 19, 86, 0, 0, 10, 0, 0, 9, /* 0x0500 */ 225, 81, 0, 3, 26,255,255,232,229,221, 32, 13,227, 82, 0, 0,
/* 0x0510 */ 227, 81, 12, 2,138, 0, 0, 2,229,148, 48, 0,225, 83, 0, 1, /* 0x0510 */ 19, 86, 0, 0, 10, 0, 0, 9,227, 81, 12, 2,138, 0, 0, 2,
/* 0x0520 */ 26, 0, 0, 4,225,160, 48, 2,229,148, 0, 4,229,221, 32, 14, /* 0x0520 */ 229,148, 48, 0,225, 83, 0, 1, 26, 0, 0, 4,225,160, 48, 2,
/* 0x0530 */ 225,160,224, 15,225, 47,255, 22,229,157, 48, 8,232,149, 0, 6, /* 0x0530 */ 229,148, 0, 4,229,221, 32, 14,225,160,224, 15,225, 47,255, 22,
/* 0x0540 */ 224,130, 32, 3,224, 99, 16, 1,232,133, 0, 6,234, 0, 0, 3, /* 0x0540 */ 229,157, 48, 8,232,149, 0, 6,224,130, 32, 3,224, 99, 16, 1,
/* 0x0550 */ 225,160, 32, 1,225,160, 0, 5,229,148, 16, 4,235,255,255,160, /* 0x0550 */ 232,133, 0, 6,234, 0, 0, 3,225,160, 32, 1,225,160, 0, 5,
/* 0x0560 */ 229,157, 48, 4,232,148, 0, 6,224,130, 32, 3,224, 99, 16, 1, /* 0x0560 */ 229,148, 16, 4,235,255,255,160,229,157, 48, 4,232,148, 0, 6,
/* 0x0570 */ 232,132, 0, 6,229,148, 48, 0,227, 83, 0, 0, 26,255,255,183, /* 0x0570 */ 224,130, 32, 3,224, 99, 16, 1,232,132, 0, 6,229,148, 48, 0,
/* 0x0580 */ 226,141,208, 20,232,189,128,240, 33, 88, 80, 85,233, 45, 79,240, /* 0x0580 */ 227, 83, 0, 0, 26,255,255,183,226,141,208, 20,232,189,128,240,
/* 0x0590 */ 225,160,128, 1,229,145, 16, 28,226, 77,208, 48,227, 82, 0, 0, /* 0x0590 */ 33, 88, 80, 85,233, 45, 79,240,225,160,128, 1,229,145, 16, 28,
/* 0x05a0 */ 229,141, 32, 12,229,141, 0, 16,229,141, 48, 8,224,136, 80, 1, /* 0x05a0 */ 226, 77,208, 48,227, 82, 0, 0,229,141, 32, 12,229,141, 0, 16,
/* 0x05b0 */ 10, 0, 0, 12,229,157, 32, 84,229,146, 0, 0,225,208, 49,176, /* 0x05b0 */ 229,141, 48, 8,224,136, 80, 1, 10, 0, 0, 12,229,157, 32, 84,
/* 0x05c0 */ 226,128, 16, 52,227, 83, 0, 2, 21,145, 48, 40, 16, 99,176, 0, /* 0x05c0 */ 229,146, 0, 0,225,208, 49,176,226,128, 16, 52,227, 83, 0, 2,
/* 0x05d0 */ 5,145, 0, 8, 17,160, 0, 11,229,145, 16, 20, 3,160,176, 0, /* 0x05d0 */ 21,145, 48, 40, 16, 99,176, 0, 5,145, 0, 8, 17,160, 0, 11,
/* 0x05e0 */ 235,255,255, 61,234, 0, 0, 37,225,216, 49,176,225,216, 34,188, /* 0x05e0 */ 229,145, 16, 20, 3,160,176, 0,235,255,255, 61,234, 0, 0, 37,
/* 0x05f0 */ 227, 83, 0, 3,229,157, 16, 12, 19,160,224, 16, 3,160,224, 0, /* 0x05f0 */ 225,216, 49,176,225,216, 34,188,227, 83, 0, 3,229,157, 16, 12,
/* 0x0600 */ 226, 66,192, 1,225,160, 0, 5,227,224, 64, 0,234, 0, 0, 13, /* 0x0600 */ 19,160,224, 16, 3,160,224, 0,226, 66,192, 1,225,160, 0, 5,
/* 0x0610 */ 229,144, 48, 0,227, 83, 0, 1, 26, 0, 0, 8,229,144, 48, 20, /* 0x0610 */ 227,224, 64, 0,234, 0, 0, 13,229,144, 48, 0,227, 83, 0, 1,
/* 0x0620 */ 227, 83, 0, 0, 10, 0, 0, 5,229,144, 32, 8,224,131, 48, 2, /* 0x0620 */ 26, 0, 0, 8,229,144, 48, 20,227, 83, 0, 0, 10, 0, 0, 5,
/* 0x0630 */ 225, 81, 0, 3, 49,160, 16, 3,225, 84, 0, 2, 33,160, 64, 2, /* 0x0630 */ 229,144, 32, 8,224,131, 48, 2,225, 81, 0, 3, 49,160, 16, 3,
/* 0x0640 */ 226,128, 0, 32,226, 76,192, 1,227, 92, 0, 0,170,255,255,239, /* 0x0640 */ 225, 84, 0, 2, 33,160, 64, 2,226,128, 0, 32,226, 76,192, 1,
/* 0x0650 */ 227,196, 78,255,227,196, 64, 15,224,100, 16, 1,226,129, 30,255, /* 0x0650 */ 227, 92, 0, 0,170,255,255,239,227,196, 78,255,227,196, 64, 15,
/* 0x0660 */ 226,129, 16, 15,227,193, 30,255,227,193, 16, 15,225,160, 48, 14, /* 0x0660 */ 224,100, 16, 1,226,129, 30,255,226,129, 16, 15,227,193, 30,255,
/* 0x0670 */ 225,160, 0, 4,227,160, 32, 0,235,255,255, 49,224,100,176, 0, /* 0x0670 */ 227,193, 16, 15,225,160, 48, 14,225,160, 0, 4,227,160, 32, 0,
/* 0x0680 */ 227,160, 48, 52,224, 3, 3,155,226,133, 80, 32,229,141, 48, 32, /* 0x0680 */ 235,255,255, 49,224,100,176, 0,227,160, 48, 52,224, 3, 3,155,
/* 0x0690 */ 227,160, 48, 0,229,141, 48, 24,234, 0, 0,175,229,157,192, 12, /* 0x0690 */ 226,133, 80, 32,229,141, 48, 32,227,160, 48, 0,229,141, 48, 24,
/* 0x06a0 */ 227, 92, 0, 0, 10, 0, 0, 8,229, 21, 48, 32,227, 83, 0, 6, /* 0x06a0 */ 234, 0, 0,175,229,157,192, 12,227, 92, 0, 0, 10, 0, 0, 8,
/* 0x06b0 */ 26, 0, 0, 5,229, 21, 32, 24,229,157, 0, 8,224,139, 32, 2, /* 0x06b0 */ 229, 21, 48, 32,227, 83, 0, 6, 26, 0, 0, 5,229, 21, 32, 24,
/* 0x06c0 */ 227,160, 16, 3,235,255,255, 59,234, 0, 0,159,229, 21, 48, 32, /* 0x06c0 */ 229,157, 0, 8,224,139, 32, 2,227,160, 16, 3,235,255,255, 59,
/* 0x06d0 */ 227, 83, 0, 1, 26, 0, 0,156,229, 21, 48, 12,227, 83, 0, 0, /* 0x06d0 */ 234, 0, 0,159,229, 21, 48, 32,227, 83, 0, 1, 26, 0, 0,156,
/* 0x06e0 */ 10, 0, 0,153,229,157, 0, 12,227, 80, 0, 0, 10, 0, 0, 17, /* 0x06e0 */ 229, 21, 48, 12,227, 83, 0, 0, 10, 0, 0,153,229,157, 0, 12,
/* 0x06f0 */ 229, 21, 48, 28,227, 83, 0, 0, 26, 0, 0, 14,229,152, 48, 28, /* 0x06f0 */ 227, 80, 0, 0, 10, 0, 0, 17,229, 21, 48, 28,227, 83, 0, 0,
/* 0x0700 */ 229, 21, 32, 24,224,130, 32, 3,224,139, 32, 2,227,160, 16, 3, /* 0x0700 */ 26, 0, 0, 14,229,152, 48, 28,229, 21, 32, 24,224,130, 32, 3,
/* 0x0710 */ 229,157, 0, 8,235,255,255, 39,229,157, 0, 8,227,160, 16, 5, /* 0x0710 */ 224,139, 32, 2,227,160, 16, 3,229,157, 0, 8,235,255,255, 39,
/* 0x0720 */ 225,216, 34,188,235,255,255, 35,229,157, 0, 8,227,160, 16, 4, /* 0x0720 */ 229,157, 0, 8,227,160, 16, 5,225,216, 34,188,235,255,255, 35,
/* 0x0730 */ 225,216, 34,186,235,255,255, 31,229, 21, 16, 8,229,159, 34,168, /* 0x0730 */ 229,157, 0, 8,227,160, 16, 4,225,216, 34,186,235,255,255, 31,
/* 0x0740 */ 226, 1, 48, 7,225,160, 49, 3,225,160, 67, 50,229, 21, 48, 24, /* 0x0740 */ 229, 21, 16, 8,229,159, 34,168,226, 1, 48, 7,225,160, 49, 3,
/* 0x0750 */ 224,139, 48, 3,229,141, 48, 20,229,157,192, 20,229, 21, 48, 16, /* 0x0750 */ 225,160, 67, 50,229, 21, 48, 24,224,139, 48, 3,229,141, 48, 20,
/* 0x0760 */ 225,160, 42, 12,225,160, 42, 34,229,157, 0, 12,229,141, 48, 40, /* 0x0760 */ 229,157,192, 20,229, 21, 48, 16,225,160, 42, 12,225,160, 42, 34,
/* 0x0770 */ 224,131,160, 2,229, 21, 48, 12,227, 80, 0, 0,229,141,192, 44, /* 0x0770 */ 229,157, 0, 12,229,141, 48, 40,224,131,160, 2,229, 21, 48, 12,
/* 0x0780 */ 226, 4,144, 7,229,141, 48, 36,224, 98, 96, 12, 10, 0, 0, 16, /* 0x0780 */ 227, 80, 0, 0,229,141,192, 44,226, 4,144, 7,229,141, 48, 36,
/* 0x0790 */ 227, 17, 0, 1, 3,160, 32, 3, 19,160, 32, 7,225,160, 0, 6, /* 0x0790 */ 224, 98, 96, 12, 10, 0, 0, 16,227, 17, 0, 1, 3,160, 32, 3,
/* 0x07a0 */ 225,160, 16, 10,227,160, 48, 16,235,255,254,229,225, 86, 0, 0, /* 0x07a0 */ 19,160, 32, 7,225,160, 0, 6,225,160, 16, 10,227,160, 48, 16,
/* 0x07b0 */ 26, 0, 0, 84,229,157,192, 88,226, 20, 48, 4, 17,160, 48, 12, /* 0x07b0 */ 235,255,254,229,225, 86, 0, 0, 26, 0, 0, 84,229,157,192, 88,
/* 0x07c0 */ 229,157, 0, 12,226,141, 16, 40,229,157, 32, 16,235,255,255, 28, /* 0x07c0 */ 226, 20, 48, 4, 17,160, 48, 12,229,157, 0, 12,226,141, 16, 40,
/* 0x07d0 */ 234, 0, 0, 11,229, 21,192, 28,224, 98,192, 12,229,141,192, 4, /* 0x07d0 */ 229,157, 32, 16,235,255,255, 28,234, 0, 0, 11,229, 21,192, 28,
/* 0x07e0 */ 229,157,192, 16,225,160, 0, 6,225,160, 16, 10,225,160, 32, 9, /* 0x07e0 */ 224, 98,192, 12,229,141,192, 4,229,157,192, 16,225,160, 0, 6,
/* 0x07f0 */ 227,160, 48, 18,229,141,192, 0,235,255,254,191,225, 86, 0, 0, /* 0x07f0 */ 225,160, 16, 10,225,160, 32, 9,227,160, 48, 18,229,141,192, 0,
/* 0x0800 */ 26, 0, 0, 64,226,106, 48, 0,225,160,122, 3,227, 25, 0, 2, /* 0x0800 */ 235,255,254,191,225, 86, 0, 0, 26, 0, 0, 64,226,106, 48, 0,
/* 0x0810 */ 225,160,122, 39, 10, 0, 0, 7,227, 87, 0, 0, 10, 0, 0, 5, /* 0x0810 */ 225,160,122, 3,227, 25, 0, 2,225,160,122, 39, 10, 0, 0, 7,
/* 0x0820 */ 224,134, 16, 10,225,160, 32, 7,227,160, 48, 0,226, 82, 32, 1, /* 0x0820 */ 227, 87, 0, 0, 10, 0, 0, 5,224,134, 16, 10,225,160, 32, 7,
/* 0x0830 */ 228,193, 48, 1, 26,255,255,251,229,157, 0, 12,227, 80, 0, 0, /* 0x0830 */ 227,160, 48, 0,226, 82, 32, 1,228,193, 48, 1, 26,255,255,251,
/* 0x0840 */ 10, 0, 0, 50,235,255,254,188,229, 21, 48, 32,227, 83, 0, 1, /* 0x0840 */ 229,157, 0, 12,227, 80, 0, 0, 10, 0, 0, 50,235,255,254,188,
/* 0x0850 */ 229,141, 0, 28, 26, 0, 0, 37,229, 21, 48, 8,227, 19, 0, 1, /* 0x0850 */ 229, 21, 48, 32,227, 83, 0, 1,229,141, 0, 28, 26, 0, 0, 37,
/* 0x0860 */ 10, 0, 0, 34,229, 21, 32, 12,229, 21, 48, 16,225, 82, 0, 3, /* 0x0860 */ 229, 21, 48, 8,227, 19, 0, 1, 10, 0, 0, 34,229, 21, 32, 12,
/* 0x0870 */ 229, 21, 16, 24, 26, 0, 0, 67,224,130, 48, 1,226,131, 48, 3, /* 0x0870 */ 229, 21, 48, 16,225, 82, 0, 3,229, 21, 16, 24, 26, 0, 0, 67,
/* 0x0880 */ 224,139, 48, 3,227,195, 32, 3,226, 98, 48, 0,225,160, 58, 3, /* 0x0880 */ 224,130, 48, 1,226,131, 48, 3,224,139, 48, 3,227,195, 32, 3,
/* 0x0890 */ 225,160, 58, 35,227, 83, 0, 7,154, 0, 0, 58,234, 0, 0, 10, /* 0x0890 */ 226, 98, 48, 0,225,160, 58, 3,225,160, 58, 35,227, 83, 0, 7,
/* 0x08a0 */ 227,160,224, 0,227,224,192, 0,225,160, 0, 14,227,160, 26, 1, /* 0x08a0 */ 154, 0, 0, 58,234, 0, 0, 10,227,160,224, 0,227,224,192, 0,
/* 0x08b0 */ 227,160, 32, 7,227,160, 48, 34,232,141, 80, 0,235,255,254,142, /* 0x08b0 */ 225,160, 0, 14,227,160, 26, 1,227,160, 32, 7,227,160, 48, 34,
/* 0x08c0 */ 227, 80, 0, 0, 26, 0, 0, 54,234, 0, 0, 8,226,130, 48, 3, /* 0x08c0 */ 232,141, 80, 0,235,255,254,142,227, 80, 0, 0, 26, 0, 0, 54,
/* 0x08d0 */ 227,195, 64, 3,229,157, 32, 28,229,159, 49, 16,232,132, 0, 12, /* 0x08d0 */ 234, 0, 0, 8,226,130, 48, 3,227,195, 64, 3,229,157, 32, 28,
/* 0x08e0 */ 225,160, 0, 4,226,132, 16, 8,235,255,254,144,234, 0, 0, 57, /* 0x08e0 */ 229,159, 49, 16,232,132, 0, 12,225,160, 0, 4,226,132, 16, 8,
/* 0x08f0 */ 225,160, 0, 6,225,160, 16, 10,225,160, 32, 9,235,255,254,120, /* 0x08f0 */ 235,255,254,144,234, 0, 0, 57,225,160, 0, 6,225,160, 16, 10,
/* 0x0900 */ 227, 80, 0, 0, 10, 0, 0, 1,227,160, 0,127,235,255,254, 97, /* 0x0900 */ 225,160, 32, 9,235,255,254,120,227, 80, 0, 0, 10, 0, 0, 1,
/* 0x0910 */ 229,157,192, 20,229,157, 0, 36,224,138, 48, 7,224,140, 16, 0, /* 0x0910 */ 227,160, 0,127,235,255,254, 97,229,157,192, 20,229,157, 0, 36,
/* 0x0920 */ 224,134, 64, 3,225, 84, 0, 1, 42, 0, 0, 7,224,100, 16, 1, /* 0x0920 */ 224,138, 48, 7,224,140, 16, 0,224,134, 64, 3,225, 84, 0, 1,
/* 0x0930 */ 225,160, 32, 9,225,160, 0, 4,227,160, 48, 16,235,255,254,128, /* 0x0930 */ 42, 0, 0, 7,224,100, 16, 1,225,160, 32, 9,225,160, 0, 4,
/* 0x0940 */ 225, 84, 0, 0, 10, 0, 0, 0,234,255,255,254,229,157, 32, 24, /* 0x0940 */ 227,160, 48, 16,235,255,254,128,225, 84, 0, 0, 10, 0, 0, 0,
/* 0x0950 */ 226,130, 32, 1,229,141, 32, 24,226,133, 80, 32,225,216, 50,188, /* 0x0950 */ 234,255,255,254,229,157, 32, 24,226,130, 32, 1,229,141, 32, 24,
/* 0x0960 */ 229,157,192, 24,225, 92, 0, 3,186,255,255, 75,229,157, 0, 84, /* 0x0960 */ 226,133, 80, 32,225,216, 50,188,229,157,192, 24,225, 92, 0, 3,
/* 0x0970 */ 227, 80, 0, 0, 21,128,176, 0,229,152, 0, 24,224,139, 0, 0, /* 0x0970 */ 186,255,255, 75,229,157, 0, 84,227, 80, 0, 0, 21,128,176, 0,
/* 0x0980 */ 226,141,208, 48,232,189,143,240,229, 21, 48, 28,227, 83, 0, 0, /* 0x0980 */ 229,152, 0, 24,224,139, 0, 0,226,141,208, 48,232,189,143,240,
/* 0x0990 */ 5,157, 32, 32, 0,129, 48, 2, 2,131, 32, 8, 10,255,255,202, /* 0x0990 */ 229, 21, 48, 28,227, 83, 0, 0, 5,157, 32, 32, 0,129, 48, 2,
/* 0x09a0 */ 234,255,255,190,226,128, 48, 3,227,195, 64, 3,229,157, 48, 28, /* 0x09a0 */ 2,131, 32, 8, 10,255,255,202,234,255,255,190,226,128, 48, 3,
/* 0x09b0 */ 229,132, 48, 0,229,159, 48, 52,226,132, 16, 8,225,160, 0, 4, /* 0x09b0 */ 227,195, 64, 3,229,157, 48, 28,229,132, 48, 0,229,159, 48, 52,
/* 0x09c0 */ 229,132, 48, 4,235,255,254, 89,225,160, 0, 4,227,160, 16, 8, /* 0x09c0 */ 226,132, 16, 8,225,160, 0, 4,229,132, 48, 4,235,255,254, 89,
/* 0x09d0 */ 227,160, 32, 5,235,255,254, 66,225,160, 32, 4,229,157, 0, 8, /* 0x09d0 */ 225,160, 0, 4,227,160, 16, 8,227,160, 32, 5,235,255,254, 66,
/* 0x09e0 */ 227,160, 16, 0,235,255,254,115,234,255,255,192,115, 81, 98, 64, /* 0x09e0 */ 225,160, 32, 4,229,157, 0, 8,227,160, 16, 0,235,255,254,115,
/* 0x09f0 */ 225,160,240, 14,233, 45, 71,240,226, 77,208, 12,226,141, 96, 52, /* 0x09f0 */ 234,255,255,192,115, 81, 98, 64,225,160,240, 14,233, 45, 71,240,
/* 0x0a00 */ 225,160,144, 0,225,160,112, 1,225,160,128, 3,225,160, 0, 6, /* 0x0a00 */ 226, 77,208, 12,226,141, 96, 52,225,160,144, 0,225,160,112, 1,
/* 0x0a10 */ 226,141, 16, 44,227,160, 48, 0,229,157,160, 48,225,160, 80, 2, /* 0x0a10 */ 225,160,128, 3,225,160, 0, 6,226,141, 16, 44,227,160, 48, 0,
/* 0x0a20 */ 229,157, 64, 52,235,255,254,134,229,157, 48, 60,226,141,224, 12, /* 0x0a20 */ 229,157,160, 48,225,160, 80, 2,229,157, 64, 52,235,255,254,134,
/* 0x0a30 */ 229,157,192, 56,229, 46, 48, 4,224,100,192, 12,225,160, 32, 6, /* 0x0a30 */ 229,157, 48, 60,226,141,224, 12,229,157,192, 56,229, 46, 48, 4,
/* 0x0a40 */ 225,160, 16, 10,225,160, 48, 9,225,160, 0, 5,229,141,192, 56, /* 0x0a40 */ 224,100,192, 12,225,160, 32, 6,225,160, 16, 10,225,160, 48, 9,
/* 0x0a50 */ 229,141,224, 0,229,141,112, 52,229,141,128, 4,235,255,254,202, /* 0x0a50 */ 225,160, 0, 5,229,141,192, 56,229,141,224, 0,229,141,112, 52,
/* 0x0a60 */ 225,160, 64, 0,227,160, 16, 9,225,160, 0, 9,225,160, 32, 4, /* 0x0a60 */ 229,141,128, 4,235,255,254,202,225,160, 64, 0,227,160, 16, 9,
/* 0x0a70 */ 235,255,254, 80,225,218, 2,188,226,138, 32, 52,227,160, 16, 0, /* 0x0a70 */ 225,160, 0, 9,225,160, 32, 4,235,255,254, 80,225,218, 2,188,
/* 0x0a80 */ 234, 0, 0, 35,229,146, 48, 0,227, 83, 0, 3, 26, 0, 0, 30, /* 0x0a80 */ 226,138, 32, 52,227,160, 16, 0,234, 0, 0, 35,229,146, 48, 0,
/* 0x0a90 */ 229,146, 48, 8,229,157, 0, 8,227,160, 16, 0,224,131, 0, 0, /* 0x0a90 */ 227, 83, 0, 3, 26, 0, 0, 30,229,146, 48, 8,229,157, 0, 8,
/* 0x0aa0 */ 225,160, 32, 1,235,255,254, 0,226, 80, 80, 0,186, 0, 0, 4, /* 0x0aa0 */ 227,160, 16, 0,224,131, 0, 0,225,160, 32, 1,235,255,254, 0,
/* 0x0ab0 */ 225,160, 16, 10,227,160, 44, 2,235,255,253,247,227, 80, 12, 2, /* 0x0ab0 */ 226, 80, 80, 0,186, 0, 0, 4,225,160, 16, 10,227,160, 44, 2,
/* 0x0ac0 */ 10, 0, 0, 1,227,160, 0,127,235,255,253,242,227,160,224, 0, /* 0x0ac0 */ 235,255,253,247,227, 80, 12, 2, 10, 0, 0, 1,227,160, 0,127,
/* 0x0ad0 */ 225,160, 32, 14,226,141,192, 8,225,160, 16, 10,225,160, 48, 9, /* 0x0ad0 */ 235,255,253,242,227,160,224, 0,225,160, 32, 14,226,141,192, 8,
/* 0x0ae0 */ 225,160, 0, 5,232,141, 80, 0,235,255,254,167,227,160, 16, 7, /* 0x0ae0 */ 225,160, 16, 10,225,160, 48, 9,225,160, 0, 5,232,141, 80, 0,
/* 0x0af0 */ 225,160, 64, 0,229,157, 32, 8,225,160, 0, 9,235,255,254, 45, /* 0x0af0 */ 235,255,254,167,227,160, 16, 7,225,160, 64, 0,229,157, 32, 8,
/* 0x0b00 */ 225,160, 0, 5,235,255,253,234,234, 0, 0, 3,226,130, 32, 32, /* 0x0b00 */ 225,160, 0, 9,235,255,254, 45,225,160, 0, 5,235,255,253,234,
/* 0x0b10 */ 226,129, 16, 1,225, 81, 0, 0,186,255,255,217,225,160, 0, 4, /* 0x0b10 */ 234, 0, 0, 3,226,130, 32, 32,226,129, 16, 1,225, 81, 0, 0,
/* 0x0b20 */ 226,141,208, 12,232,189,135,240 /* 0x0b20 */ 186,255,255,217,225,160, 0, 4,226,141,208, 12,232,189,135,240
}; };
+111 -111
View File
@@ -1,5 +1,5 @@
/* i386-linux.elf-fold.h /* i386-linux.elf-fold.h
created from i386-linux.elf-fold.bin, 2017 (0x7e1) bytes created from i386-linux.elf-fold.bin, 2021 (0x7e5) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -32,17 +32,17 @@
/* clang-format off */ /* clang-format off */
#define STUB_I386_LINUX_ELF_FOLD_SIZE 2017 #define STUB_I386_LINUX_ELF_FOLD_SIZE 2021
#define STUB_I386_LINUX_ELF_FOLD_ADLER32 0x9a0f67ff #define STUB_I386_LINUX_ELF_FOLD_ADLER32 0x7bc16ae5
#define STUB_I386_LINUX_ELF_FOLD_CRC32 0x1eb7dd56 #define STUB_I386_LINUX_ELF_FOLD_CRC32 0xff0ef725
unsigned char stub_i386_linux_elf_fold[2017] = { unsigned char stub_i386_linux_elf_fold[2021] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 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, /* 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, /* 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, /* 0x0030 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16,192, 0,
/* 0x0040 */ 0, 16,192, 0,225, 7, 0, 0,228, 7, 0, 0, 5, 0, 0, 0, /* 0x0040 */ 0, 16,192, 0,229, 7, 0, 0,232, 7, 0, 0, 5, 0, 0, 0,
/* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,225, 7, 0, 0, 0, 0, 0, 0, /* 0x0050 */ 0, 16, 0, 0, 1, 0, 0, 0,229, 7, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, /* 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, /* 0x0080 */ 87, 81, 80,137,230,129,236, 0, 16, 0, 0,137,231,106, 8, 89,
@@ -57,111 +57,111 @@ unsigned char stub_i386_linux_elf_fold[2017] = {
/* 0x0110 */ 49,248,131,224, 4, 41,199, 90, 1,250,175,173,193,233, 2, 73, /* 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, /* 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, /* 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,133, 5, /* 0x0140 */ 137,226, 81,139, 24,139, 72, 4,131,193, 12, 96, 71,232,137, 5,
/* 0x0150 */ 0, 0, 79,137,198,139,108, 36, 32,139, 77,104,137,235,102,131, /* 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, /* 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, /* 0x0170 */ 250,137,231,185,137, 2, 0, 0, 49,192,243,171,137,252, 88, 89,
/* 0x0180 */ 95, 91, 86, 81, 80, 82, 87, 41,237,106, 2, 94,106, 1, 90,185, /* 0x0180 */ 95, 91, 86, 81, 80, 82, 87, 91,133,255,120, 30, 83, 41,237,106,
/* 0x0190 */ 0, 16, 0, 0, 41,219,104,192, 0, 0, 0, 88,205,128, 91,106, /* 0x0190 */ 2, 94,106, 1, 90,185, 0, 16, 0, 0, 41,219,104,192, 0, 0,
/* 0x01a0 */ 6, 88,205,128, 95, 41,192, 60,175,175,117,252, 91, 89, 80, 80, /* 0x01a0 */ 0, 88,205,128, 91,106, 6, 88,205,128, 95, 41,192, 60,175,175,
/* 0x01b0 */ 80, 80, 80, 80, 80, 80,176, 91,255, 39,135, 92, 36, 4,137,217, /* 0x01b0 */ 117,252, 91, 89, 80, 80, 80, 80, 80, 80, 80, 80,176, 91,255, 39,
/* 0x01c0 */ 129,227, 0,240,255,255, 41,217, 3, 76, 36, 8,139, 84, 36, 12, /* 0x01c0 */ 135, 92, 36, 4,137,217,129,227, 0,240,255,255, 41,217, 3, 76,
/* 0x01d0 */ 106,125, 88,205,128, 61, 0,240,255,255,118, 1,244,139, 92, 36, /* 0x01d0 */ 36, 8,139, 84, 36, 12,106,125, 88,205,128, 61, 0,240,255,255,
/* 0x01e0 */ 4,195, 85, 83, 86, 87,139, 92, 36, 20,139, 76, 36, 24,139, 84, /* 0x01e0 */ 118, 1,244,139, 92, 36, 4,195, 85, 83, 86, 87,139, 92, 36, 20,
/* 0x01f0 */ 36, 28,139,116, 36, 32,139,124, 36, 36,139,108, 36, 40,193,237, /* 0x01f0 */ 139, 76, 36, 24,139, 84, 36, 28,139,116, 36, 32,139,124, 36, 36,
/* 0x0200 */ 12,104,192, 0, 0, 0, 88,205,128, 95, 94, 91, 93,195, 0, 0, /* 0x0200 */ 139,108, 36, 40,193,237, 12,104,192, 0, 0, 0, 88,205,128, 95,
/* 0x0210 */ 87, 86,137,206, 83,137,195, 57, 8,139,120, 4,115, 10,106,127, /* 0x0210 */ 94, 91, 93,195, 87, 86,137,206, 83,137,195, 57, 8,139,120, 4,
/* 0x0220 */ 91,106, 1, 88,205,128,235,254,133,201,116, 8,138, 7, 71,136, /* 0x0220 */ 115, 10,106,127, 91,106, 1, 88,205,128,235,254,133,201,116, 8,
/* 0x0230 */ 2, 66,226,248, 1,115, 4, 41, 51, 91, 94, 95,195, 85,137,229, /* 0x0230 */ 138, 7, 71,136, 2, 66,226,248, 1,115, 4, 41, 51, 91, 94, 95,
/* 0x0240 */ 87, 86,137,198, 83,137,211,131,236, 24,139, 69, 8,139,125, 12, /* 0x0240 */ 195, 85,137,229, 87, 86,137,198, 83,137,211,131,236, 24,139, 69,
/* 0x0250 */ 137, 69,220,131, 58, 0, 15,132,185, 0, 0, 0,141, 85,228,185, /* 0x0250 */ 8,139,125, 12,137, 69,220,131, 58, 0, 15,132,185, 0, 0, 0,
/* 0x0260 */ 12, 0, 0, 0,137,240,232,165,255,255,255,139, 69,228,139, 77, /* 0x0260 */ 141, 85,228,185, 12, 0, 0, 0,137,240,232,165,255,255,255,139,
/* 0x0270 */ 232,133,192,117, 19,129,249, 85, 80, 88, 33,117, 15,131, 62, 0, /* 0x0270 */ 69,228,139, 77,232,133,192,117, 19,129,249, 85, 80, 88, 33,117,
/* 0x0280 */ 15,132,143, 0, 0, 0,235, 4,133,201,117, 10,106,127, 91,106, /* 0x0280 */ 15,131, 62, 0, 15,132,143, 0, 0, 0,235, 4,133,201,117, 10,
/* 0x0290 */ 1, 88,205,128,235,254, 57,193,119,242, 59, 3,119,238, 57,193, /* 0x0290 */ 106,127, 91,106, 1, 88,205,128,235,254, 57,193,119,242, 59, 3,
/* 0x02a0 */ 115, 86,137, 69,224,141, 69,224,255,117,236, 80,255,115, 4, 81, /* 0x02a0 */ 119,238, 57,193,115, 86,137, 69,224,141, 69,224,255,117,236, 80,
/* 0x02b0 */ 255,118, 4,255, 85,220,131,196, 20,133,192,117,207,139, 85,224, /* 0x02b0 */ 255,115, 4, 81,255,118, 4,255, 85,220,131,196, 20,133,192,117,
/* 0x02c0 */ 59, 85,228,117,199,138, 69,237,132,192,116, 34,133,255,116, 30, /* 0x02c0 */ 207,139, 85,224, 59, 85,228,117,199,138, 69,237,132,192,116, 34,
/* 0x02d0 */ 129,250, 0, 2, 0, 0,119, 4, 57, 19,117, 18, 15,182,192, 80, /* 0x02d0 */ 133,255,116, 30,129,250, 0, 2, 0, 0,119, 4, 57, 19,117, 18,
/* 0x02e0 */ 15,182, 69,238, 80, 82,255,115, 4,255,215,131,196, 16,139, 69, /* 0x02e0 */ 15,182,192, 80, 15,182, 69,238, 80, 82,255,115, 4,255,215,131,
/* 0x02f0 */ 232, 1, 70, 4, 41, 6,235, 10,139, 83, 4,137,240,232, 14,255, /* 0x02f0 */ 196, 16,139, 69,232, 1, 70, 4, 41, 6,235, 10,139, 83, 4,137,
/* 0x0300 */ 255,255,139, 85,228,139, 3, 1, 83, 4, 41,208,133,192,137, 3, /* 0x0300 */ 240,232, 14,255,255,255,139, 85,228,139, 3, 1, 83, 4, 41,208,
/* 0x0310 */ 233, 65,255,255,255,141,101,244, 91, 94, 95,201,195,133,192,116, /* 0x0310 */ 133,192,137, 3,233, 65,255,255,255,141,101,244, 91, 94, 95,201,
/* 0x0320 */ 13,168, 1,117, 9, 57, 16,116, 7,131,192, 8,235,247, 49,192, /* 0x0320 */ 195,133,192,116, 13,168, 1,117, 9, 57, 16,116, 7,131,192, 8,
/* 0x0330 */ 133,192,116, 3,137, 72, 4,195,184, 0,240,255,255,195, 85,137, /* 0x0330 */ 235,247, 49,192,133,192,116, 3,137, 72, 4,195,184, 0,240,255,
/* 0x0340 */ 229, 87, 86, 83,131,236, 76,137, 69,228,137, 85,224,139, 69, 8, /* 0x0340 */ 255,195, 85,137,229, 87, 86, 83,131,236, 76,137, 69,228,137, 85,
/* 0x0350 */ 139, 85, 12,139, 77, 16,137, 69,220,139,117, 20,137, 85,216,137, /* 0x0350 */ 224,139, 69, 8,139, 85, 12,139, 77, 16,137, 69,220,139,117, 20,
/* 0x0360 */ 77,212,137,117,208,232,206,255,255,255,139, 85,224,137,198,247, /* 0x0360 */ 137, 85,216,137, 77,212,137,117,208,232,206,255,255,255,139, 85,
/* 0x0370 */ 208, 3, 82, 28,137, 69,204,131,125,220, 0,137, 85,200,116, 51, /* 0x0370 */ 224,137,198,247,208, 3, 82, 28,137, 69,204,131,125,220, 0,137,
/* 0x0380 */ 139, 77,212,139, 1,102,131,120, 16, 2,141, 80, 52,117, 12,139, /* 0x0380 */ 85,200,116, 51,139, 77,212,139, 1,102,131,120, 16, 2,141, 80,
/* 0x0390 */ 90, 8,199, 69,196, 0, 0, 0, 0,235, 8,137,195, 43, 90, 40, /* 0x0390 */ 52,117, 12,139, 90, 8,199, 69,196, 0, 0, 0, 0,235, 8,137,
/* 0x03a0 */ 137, 93,196,139, 74, 20,141, 4, 25,137, 69,240,106, 91, 88,205, /* 0x03a0 */ 195, 43, 90, 40,137, 93,196,139, 74, 20,141, 4, 25,137, 69,240,
/* 0x03b0 */ 128,235,127,139, 69,224,139, 85,224,102,131,120, 16, 3, 15,183, /* 0x03b0 */ 106, 91, 88,205,128,235,127,139, 69,224,139, 85,224,102,131,120,
/* 0x03c0 */ 82, 44,139, 93,200, 15,149,192, 15,182,248,137, 85,192,232,101, /* 0x03c0 */ 16, 3, 15,183, 82, 44,139, 93,200, 15,149,192, 15,182,248,137,
/* 0x03d0 */ 255,255,255,139, 77,192,193,231, 4,137,240, 49,246, 73,199, 69, /* 0x03d0 */ 85,192,232,101,255,255,255,139, 77,192,193,231, 4,137,240, 49,
/* 0x03e0 */ 188,255,255,255,255,120, 33,139, 77,192,131, 59, 1,117, 20,139, /* 0x03e0 */ 246, 73,199, 69,188,255,255,255,255,120, 33,139, 77,192,131, 59,
/* 0x03f0 */ 83, 8, 59, 85,188,115, 3,137, 85,188, 3, 83, 20, 57,214,115, /* 0x03f0 */ 1,117, 20,139, 83, 8, 59, 85,188,115, 3,137, 85,188, 3, 83,
/* 0x0400 */ 2,137,214,131,195, 32,226,226,139, 93,188,106, 0,106,255,131, /* 0x0400 */ 20, 57,214,115, 2,137,214,131,195, 32,226,226,139, 93,188,106,
/* 0x0410 */ 207, 34, 33,195, 87, 41,222,106, 0, 41,198, 78, 33,198, 86, 83, /* 0x0410 */ 0,106,255,131,207, 34, 33,195, 87, 41,222,106, 0, 41,198, 78,
/* 0x0420 */ 232,189,253,255,255,131,196, 24, 1,198, 41,216,137,117,240,137, /* 0x0420 */ 33,198, 86, 83,232,191,253,255,255,131,196, 24, 1,198, 41,216,
/* 0x0430 */ 69,196,139,117,224,199, 69,184, 0, 0, 0, 0,102,131,126, 44, /* 0x0430 */ 137,117,240,137, 69,196,139,117,224,199, 69,184, 0, 0, 0, 0,
/* 0x0440 */ 0, 15,132,110, 2, 0, 0,131,125,220, 0,116, 32,139, 69,200, /* 0x0440 */ 102,131,126, 44, 0, 15,132,110, 2, 0, 0,131,125,220, 0,116,
/* 0x0450 */ 131, 56, 6,117, 24,139, 77,196,186, 3, 0, 0, 0, 3, 72, 8, /* 0x0450 */ 32,139, 69,200,131, 56, 6,117, 24,139, 77,196,186, 3, 0, 0,
/* 0x0460 */ 139, 69,216,232,181,254,255,255,233, 49, 2, 0, 0,139, 85,200, /* 0x0460 */ 0, 3, 72, 8,139, 69,216,232,181,254,255,255,233, 49, 2, 0,
/* 0x0470 */ 131, 58, 1, 15,133, 37, 2, 0, 0,131,122, 20, 0, 15,132, 27, /* 0x0470 */ 0,139, 85,200,131, 58, 1, 15,133, 37, 2, 0, 0,131,122, 20,
/* 0x0480 */ 2, 0, 0,131,125,220, 0,116, 65,131,122, 4, 0,117, 59,139, /* 0x0480 */ 0, 15,132, 27, 2, 0, 0,131,125,220, 0,116, 65,131,122, 4,
/* 0x0490 */ 117,224,139, 77,196, 3, 74, 8,186, 3, 0, 0, 0, 3, 78, 28, /* 0x0490 */ 0,117, 59,139,117,224,139, 77,196, 3, 74, 8,186, 3, 0, 0,
/* 0x04a0 */ 139, 69,216,232,117,254,255,255, 15,183, 78, 44,139, 69,216,186, /* 0x04a0 */ 0, 3, 78, 28,139, 69,216,232,117,254,255,255, 15,183, 78, 44,
/* 0x04b0 */ 5, 0, 0, 0,232,100,254,255,255, 15,183, 78, 42,139, 69,216, /* 0x04b0 */ 139, 69,216,186, 5, 0, 0, 0,232,100,254,255,255, 15,183, 78,
/* 0x04c0 */ 186, 4, 0, 0, 0,232, 83,254,255,255,139, 69,200,187, 64, 98, /* 0x04c0 */ 42,139, 69,216,186, 4, 0, 0, 0,232, 83,254,255,255,139, 69,
/* 0x04d0 */ 81,115,139, 72, 24,131,225, 7,193,225, 2,211,235,139, 77,200, /* 0x04d0 */ 200,187, 64, 98, 81,115,139, 72, 24,131,225, 7,193,225, 2,211,
/* 0x04e0 */ 137,218,131,226, 7,139,113, 20,137, 85,180,139, 80, 16,139, 69, /* 0x04e0 */ 235,139, 77,200,137,218,131,226, 7,139,113, 20,137, 85,180,139,
/* 0x04f0 */ 196, 3, 65, 8,137, 85,232,139, 77,204, 1,198, 33,193,137,117, /* 0x04f0 */ 80, 16,139, 69,196, 3, 65, 8,137, 85,232,139, 77,204, 1,198,
/* 0x0500 */ 176,137,198, 41,206,131,125,220, 0,137, 69,236,141, 60, 10,116, /* 0x0500 */ 33,193,137,117,176,137,198, 41,206,131,125,220, 0,137, 69,236,
/* 0x0510 */ 58,106, 0,106,255,106, 50,141, 71, 3,106, 3, 80, 86,232,191, /* 0x0510 */ 141, 60, 10,116, 58,106, 0,106,255,106, 50,141, 71, 3,106, 3,
/* 0x0520 */ 252,255,255,131,196, 24, 57,198, 15,133, 36, 1, 0, 0,128,227, /* 0x0520 */ 80, 86,232,193,252,255,255,131,196, 24, 57,198, 15,133, 36, 1,
/* 0x0530 */ 4,139, 69,208,117, 2, 49,192, 80,139, 69,220,255,117,228,141, /* 0x0530 */ 0, 0,128,227, 4,139, 69,208,117, 2, 49,192, 80,139, 69,220,
/* 0x0540 */ 85,232,232,246,252,255,255, 88, 90,235, 35,139, 85,200,139, 66, /* 0x0540 */ 255,117,228,141, 85,232,232,246,252,255,255, 88, 90,235, 35,139,
/* 0x0550 */ 4, 41,200, 80,255,117,228,106, 18,255,117,180, 87, 86,232,127, /* 0x0550 */ 85,200,139, 66, 4, 41,200, 80,255,117,228,106, 18,255,117,180,
/* 0x0560 */ 252,255,255,131,196, 24, 57,198, 15,133,228, 0, 0, 0,137,249, /* 0x0560 */ 87, 86,232,129,252,255,255,131,196, 24, 57,198, 15,133,228, 0,
/* 0x0570 */ 139, 69,204,247,217, 33,193,246, 69,180, 2,137, 77,168,116, 13, /* 0x0570 */ 0, 0,137,249,139, 69,204,247,217, 33,193,246, 69,180, 2,137,
/* 0x0580 */ 133,201,141, 4, 62,116, 6,198, 0, 0, 64,226,250,131,125,220, /* 0x0580 */ 77,168,116, 13,133,201,141, 4, 62,116, 6,198, 0, 0, 64,226,
/* 0x0590 */ 0, 15,132,197, 0, 0, 0,139, 85,200,199, 69,172, 0, 0, 0, /* 0x0590 */ 250,131,125,220, 0, 15,132,197, 0, 0, 0,139, 85,200,199, 69,
/* 0x05a0 */ 0,131, 58, 1, 15,133,151, 0, 0, 0,246, 66, 24, 1, 15,132, /* 0x05a0 */ 172, 0, 0, 0, 0,131, 58, 1, 15,133,151, 0, 0, 0,246, 66,
/* 0x05b0 */ 141, 0, 0, 0,137,209,139, 82, 20,137,200,139, 73, 8,141, 28, /* 0x05b0 */ 24, 1, 15,132,141, 0, 0, 0,137,209,139, 82, 20,137,200,139,
/* 0x05c0 */ 10, 3, 93,196, 59, 80, 16,117, 14,137,216,247,216, 37,255, 15, /* 0x05c0 */ 73, 8,141, 28, 10, 3, 93,196, 59, 80, 16,117, 14,137,216,247,
/* 0x05d0 */ 0, 0,131,248, 3,119, 53,139, 85,200,107, 69,196, 52,131,122, /* 0x05d0 */ 216, 37,255, 15, 0, 0,131,248, 3,119, 53,139, 85,200,107, 69,
/* 0x05e0 */ 4, 0,141, 92, 1, 12,116, 36,106, 0,106,255,106, 34,106, 3, /* 0x05e0 */ 196, 52,131,122, 4, 0,141, 92, 1, 12,116, 36,106, 0,106,255,
/* 0x05f0 */ 104, 0, 16, 0, 0,106, 0,199, 69,172, 1, 0, 0, 0,232,223, /* 0x05f0 */ 106, 34,106, 3,104, 0, 16, 0, 0,106, 0,199, 69,172, 1, 0,
/* 0x0600 */ 251,255,255,131,196, 24,133,192,137,195,116, 53,139, 3, 61,205, /* 0x0600 */ 0, 0,232,225,251,255,255,131,196, 24,133,192,137,195,116, 53,
/* 0x0610 */ 128, 97,195,116, 6,199, 3,205,128, 97,195,131,125,172, 0,116, /* 0x0610 */ 139, 3, 61,205,128, 97,195,116, 6,199, 3,205,128, 97,195,131,
/* 0x0620 */ 13,106, 5,106, 4, 83,232,143,251,255,255,131,196, 12,133,219, /* 0x0620 */ 125,172, 0,116, 13,106, 5,106, 4, 83,232,145,251,255,255,131,
/* 0x0630 */ 116, 15,139, 69,216,137,217, 49,210,131,224,254,232,220,252,255, /* 0x0630 */ 196, 12,133,219,116, 15,139, 69,216,137,217, 49,210,131,224,254,
/* 0x0640 */ 255,255,117,180, 87, 86,232,111,251,255,255,131,196, 12,133,192, /* 0x0640 */ 232,220,252,255,255,255,117,180, 87, 86,232,113,251,255,255,131,
/* 0x0650 */ 116, 10,106,127, 91,106, 1, 88,205,128,235,254,139, 77,168,141, /* 0x0650 */ 196, 12,133,192,116, 10,106,127, 91,106, 1, 88,205,128,235,254,
/* 0x0660 */ 4, 15,141, 28, 6, 59, 93,176,115, 30,106, 0,106,255,106, 50, /* 0x0660 */ 139, 77,168,141, 4, 15,141, 28, 6, 59, 93,176,115, 30,106, 0,
/* 0x0670 */ 255,117,180, 41, 93,176,255,117,176, 83,232, 99,251,255,255,131, /* 0x0670 */ 106,255,106, 50,255,117,180, 41, 93,176,255,117,176, 83,232,101,
/* 0x0680 */ 196, 24, 57,195,116, 24,235,254,131,125,220, 0,116, 16,141, 79, /* 0x0680 */ 251,255,255,131,196, 24, 57,195,116, 24,235,254,131,125,220, 0,
/* 0x0690 */ 3, 35, 77,204,131,249, 3,119, 5,106, 91, 88,205,128,139,117, /* 0x0690 */ 116, 16,141, 79, 3, 35, 77,204,131,249, 3,119, 5,106, 91, 88,
/* 0x06a0 */ 224,255, 69,184, 15,183, 70, 44,131, 69,200, 32, 57, 69,184, 15, /* 0x06a0 */ 205,128,139,117,224,255, 69,184, 15,183, 70, 44,131, 69,200, 32,
/* 0x06b0 */ 140,146,253,255,255,131,125,212, 0,116, 8,139, 85,196,139, 69, /* 0x06b0 */ 57, 69,184, 15,140,146,253,255,255,131,125,212, 0,116, 8,139,
/* 0x06c0 */ 212,137, 16,139, 77,224,139, 73, 24, 1, 77,196,139, 69,196,141, /* 0x06c0 */ 85,196,139, 69,212,137, 16,139, 77,224,139, 73, 24, 1, 77,196,
/* 0x06d0 */ 101,244, 91, 94, 95,201,195, 85,137,229, 87, 86, 83,131,236, 32, /* 0x06d0 */ 139, 69,196,141,101,244, 91, 94, 95,201,195, 85,137,229, 87, 86,
/* 0x06e0 */ 199, 69,232, 0, 0, 0, 0,139, 69, 8,139,117, 16,137, 69,236, /* 0x06e0 */ 83,131,236, 32,199, 69,232, 0, 0, 0, 0,139, 69, 8,139,117,
/* 0x06f0 */ 128, 62,235,117, 6,141, 86, 2,137, 85,232,106, 0,139,125, 28, /* 0x06f0 */ 16,137, 69,236,128, 62,235,117, 6,141, 86, 2,137, 85,232,106,
/* 0x0700 */ 141, 85, 24,139, 93, 32,141, 69, 32, 86,232, 46,251,255,255,139, /* 0x0700 */ 0,139,125, 28,141, 85, 24,139, 93, 32,141, 69, 32, 86,232, 46,
/* 0x0710 */ 69, 12, 41, 93, 36,137,250,141, 93,240,255,117,232,137, 69, 32, /* 0x0710 */ 251,255,255,139, 69, 12, 41, 93, 36,137,250,141, 93,240,255,117,
/* 0x0720 */ 139, 69, 40, 83,255,117,236,137, 69,240,141, 69, 32,141, 79, 52, /* 0x0720 */ 232,137, 69, 32,139, 69, 40, 83,255,117,236,137, 69,240,141, 69,
/* 0x0730 */ 80,137,240,137, 77,228,232, 3,252,255,255,137,193,137, 69,224, /* 0x0730 */ 32,141, 79, 52, 80,137,240,137, 77,228,232, 3,252,255,255,137,
/* 0x0740 */ 139, 69,236,186, 9, 0, 0, 0,232,208,251,255,255,102,139, 79, /* 0x0740 */ 193,137, 69,224,139, 69,236,186, 9, 0, 0, 0,232,208,251,255,
/* 0x0750 */ 44,131,196, 24, 49,210,102,133,201,116,123,139, 69,228,131, 56, /* 0x0750 */ 255,102,139, 79, 44,131,196, 24, 49,210,102,133,201,116,123,139,
/* 0x0760 */ 3,117,103,139, 93,240, 49,201, 3, 88, 8,137,202,106, 5, 88, /* 0x0760 */ 69,228,131, 56, 3,117,103,139, 93,240, 49,201, 3, 88, 8,137,
/* 0x0770 */ 205,128,133,192,137,198,120, 21,186, 0, 2, 0, 0,137,195,137, /* 0x0770 */ 202,106, 5, 88,205,128,133,192,137,198,120, 21,186, 0, 2, 0,
/* 0x0780 */ 249,106, 3, 88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, 91, /* 0x0780 */ 0,137,195,137,249,106, 3, 88,205,128, 61, 0, 2, 0, 0,116,
/* 0x0790 */ 106, 1, 88,205,128,235,254,141, 69,240,137,250,106, 0,137,243, /* 0x0790 */ 10,106,127, 91,106, 1, 88,205,128,235,254,141, 69,240,137,250,
/* 0x07a0 */ 80,137,240,255,117,236,106, 0,232,145,251,255,255,139, 77,240, /* 0x07a0 */ 106, 0,137,243, 80,137,240,255,117,236,106, 0,232,145,251,255,
/* 0x07b0 */ 137, 69,224,139, 69,236,186, 7, 0, 0, 0,232, 93,251,255,255, /* 0x07b0 */ 255,139, 77,240,137, 69,224,139, 69,236,186, 7, 0, 0, 0,232,
/* 0x07c0 */ 131,196, 16,106, 6, 88,205,128,235, 12, 66, 15,183,193,131, 69, /* 0x07c0 */ 93,251,255,255,131,196, 16,106, 6, 88,205,128,235, 12, 66, 15,
/* 0x07d0 */ 228, 32, 57,194,124,133,139, 69,224,141,101,244, 91, 94, 95,201, /* 0x07d0 */ 183,193,131, 69,228, 32, 57,194,124,133,139, 69,224,141,101,244,
/* 0x07e0 */ 195 /* 0x07e0 */ 91, 94, 95,201,195
}; };
+12 -12
View File
@@ -33,8 +33,8 @@
/* clang-format off */ /* clang-format off */
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_SIZE 2888 #define STUB_MIPS_R3000_LINUX_ELF_FOLD_SIZE 2888
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_ADLER32 0xadec7a75 #define STUB_MIPS_R3000_LINUX_ELF_FOLD_ADLER32 0xc8837a85
#define STUB_MIPS_R3000_LINUX_ELF_FOLD_CRC32 0x95761178 #define STUB_MIPS_R3000_LINUX_ELF_FOLD_CRC32 0xfcd07cc3
unsigned char stub_mips_r3000_linux_elf_fold[2888] = { unsigned char stub_mips_r3000_linux_elf_fold[2888] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -63,16 +63,16 @@ unsigned char stub_mips_r3000_linux_elf_fold[2888] = {
/* 0x0170 */ 36, 2, 1,116, 3,226, 16, 35, 36, 66, 9,176, 0, 64,248, 9, /* 0x0170 */ 36, 2, 1,116, 3,226, 16, 35, 36, 66, 9,176, 0, 64,248, 9,
/* 0x0180 */ 2, 0, 32, 33, 39,189, 2, 0, 0, 64,240, 33,142,165, 0,104, /* 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, /* 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,175,168, 0, 16, /* 0x01a0 */ 0, 0, 0, 12,143,168, 0, 20, 0, 0, 72, 33, 5, 0, 0, 11,
/* 0x01b0 */ 175,169, 0, 20, 36, 7, 0, 2, 36, 6, 0, 1, 0, 28, 40, 34, /* 0x01b0 */ 175,168, 0, 16,175,169, 0, 20, 36, 7, 0, 2, 36, 6, 0, 1,
/* 0x01c0 */ 0, 0, 32, 33, 36, 2, 15,250, 0, 0, 0, 12,143,164, 0, 16, /* 0x01c0 */ 0, 28, 40, 34, 0, 0, 32, 33, 36, 2, 15,250, 0, 0, 0, 12,
/* 0x01d0 */ 36, 2, 15,166, 0, 0, 0, 12,143,165, 0, 28,143,164, 0, 24, /* 0x01d0 */ 143,164, 0, 16, 36, 2, 15,166, 0, 0, 0, 12,143,165, 0, 28,
/* 0x01e0 */ 39,189, 0, 32, 3,160, 8, 33, 39,189,252,128, 39,189, 0, 4, /* 0x01e0 */ 143,164, 0, 24, 39,189, 0, 32, 3,160, 8, 33, 39,189,252,128,
/* 0x01f0 */ 23,161,255,254,175,160,255,252,142,129,255,252, 0, 0, 0, 0, /* 0x01f0 */ 39,189, 0, 4, 23,161,255,254,175,160,255,252,142,129,255,252,
/* 0x0200 */ 16, 32, 0, 3, 0, 0, 0, 0, 0, 32, 0, 8, 36, 2, 15,251, /* 0x0200 */ 0, 0, 0, 0, 16, 32, 0, 3, 0, 0, 0, 0, 0, 32, 0, 8,
/* 0x0210 */ 3,192, 0, 8, 0, 0, 0, 0, 52, 1,255,255, 0, 36, 8, 36, /* 0x0210 */ 36, 2, 15,251, 3,192, 0, 8, 0, 0, 0, 0, 52, 1,255,255,
/* 0x0220 */ 0,129, 32, 34, 0,161, 40, 32, 36, 2, 16, 29, 0, 0, 0, 12, /* 0x0220 */ 0, 36, 8, 36, 0,129, 32, 34, 0,161, 40, 32, 36, 2, 16, 29,
/* 0x0230 */ 3,224, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0230 */ 0, 0, 0, 12, 3,224, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0240 */ 36, 2, 15,250, 39,189,255,224,175,168, 0, 16,175,169, 0, 20, /* 0x0240 */ 36, 2, 15,250, 39,189,255,224,175,168, 0, 16,175,169, 0, 20,
/* 0x0250 */ 0, 0, 0, 12, 16, 0, 0, 2, 39,189, 0, 32, 0, 0, 0, 12, /* 0x0250 */ 0, 0, 0, 12, 16, 0, 0, 2, 39,189, 0, 32, 0, 0, 0, 12,
/* 0x0260 */ 44,225, 0, 1, 36, 33,255,255, 3,224, 0, 8, 0, 65, 16, 37, /* 0x0260 */ 44,225, 0, 1, 36, 33,255,255, 3,224, 0, 8, 0, 65, 16, 37,
+12 -12
View File
@@ -33,8 +33,8 @@
/* clang-format off */ /* clang-format off */
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 2888 #define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 2888
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x0c507a74 #define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x26f97a84
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0xb1206160 #define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0x4fb9fe36
unsigned char stub_mipsel_r3000_linux_elf_fold[2888] = { unsigned char stub_mipsel_r3000_linux_elf_fold[2888] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -63,16 +63,16 @@ unsigned char stub_mipsel_r3000_linux_elf_fold[2888] = {
/* 0x0170 */ 116, 1, 2, 36, 35, 16,226, 3,176, 9, 66, 36, 9,248, 64, 0, /* 0x0170 */ 116, 1, 2, 36, 35, 16,226, 3,176, 9, 66, 36, 9,248, 64, 0,
/* 0x0180 */ 33, 32, 0, 2, 0, 2,189, 39, 33,240, 64, 0,104, 0,165,142, /* 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, /* 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, 16, 0,168,175, /* 0x01a0 */ 12, 0, 0, 0, 20, 0,168,143, 33, 72, 0, 0, 11, 0, 0, 5,
/* 0x01b0 */ 20, 0,169,175, 2, 0, 7, 36, 1, 0, 6, 36, 34, 40, 28, 0, /* 0x01b0 */ 16, 0,168,175, 20, 0,169,175, 2, 0, 7, 36, 1, 0, 6, 36,
/* 0x01c0 */ 33, 32, 0, 0,250, 15, 2, 36, 12, 0, 0, 0, 16, 0,164,143, /* 0x01c0 */ 34, 40, 28, 0, 33, 32, 0, 0,250, 15, 2, 36, 12, 0, 0, 0,
/* 0x01d0 */ 166, 15, 2, 36, 12, 0, 0, 0, 28, 0,165,143, 24, 0,164,143, /* 0x01d0 */ 16, 0,164,143,166, 15, 2, 36, 12, 0, 0, 0, 28, 0,165,143,
/* 0x01e0 */ 32, 0,189, 39, 33, 8,160, 3,128,252,189, 39, 4, 0,189, 39, /* 0x01e0 */ 24, 0,164,143, 32, 0,189, 39, 33, 8,160, 3,128,252,189, 39,
/* 0x01f0 */ 254,255,161, 23,252,255,160,175,252,255,129,142, 0, 0, 0, 0, /* 0x01f0 */ 4, 0,189, 39,254,255,161, 23,252,255,160,175,252,255,129,142,
/* 0x0200 */ 3, 0, 32, 16, 0, 0, 0, 0, 8, 0, 32, 0,251, 15, 2, 36, /* 0x0200 */ 0, 0, 0, 0, 3, 0, 32, 16, 0, 0, 0, 0, 8, 0, 32, 0,
/* 0x0210 */ 8, 0,192, 3, 0, 0, 0, 0,255,255, 1, 52, 36, 8, 36, 0, /* 0x0210 */ 251, 15, 2, 36, 8, 0,192, 3, 0, 0, 0, 0,255,255, 1, 52,
/* 0x0220 */ 34, 32,129, 0, 32, 40,161, 0, 29, 16, 2, 36, 12, 0, 0, 0, /* 0x0220 */ 36, 8, 36, 0, 34, 32,129, 0, 32, 40,161, 0, 29, 16, 2, 36,
/* 0x0230 */ 8, 0,224, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0230 */ 12, 0, 0, 0, 8, 0,224, 3, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0240 */ 250, 15, 2, 36,224,255,189, 39, 16, 0,168,175, 20, 0,169,175, /* 0x0240 */ 250, 15, 2, 36,224,255,189, 39, 16, 0,168,175, 20, 0,169,175,
/* 0x0250 */ 12, 0, 0, 0, 2, 0, 0, 16, 32, 0,189, 39, 12, 0, 0, 0, /* 0x0250 */ 12, 0, 0, 0, 2, 0, 0, 16, 32, 0,189, 39, 12, 0, 0, 0,
/* 0x0260 */ 1, 0,225, 44,255,255, 33, 36, 8, 0,224, 3, 37, 16, 65, 0, /* 0x0260 */ 1, 0,225, 44,255,255, 33, 36, 8, 0,224, 3, 37, 16, 65, 0,
+253 -253
View File
@@ -1,5 +1,5 @@
/* powerpc-linux.elf-fold.h /* powerpc-linux.elf-fold.h
created from powerpc-linux.elf-fold.bin, 4424 (0x1148) bytes created from powerpc-linux.elf-fold.bin, 4432 (0x1150) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -32,17 +32,17 @@
/* clang-format off */ /* clang-format off */
#define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 4424 #define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 4432
#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0xbe888a48 #define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0x89648b8c
#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0x4910eedf #define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0x4b5e47d4
unsigned char stub_powerpc_linux_elf_fold[4424] = { unsigned char stub_powerpc_linux_elf_fold[4432] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 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, /* 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, /* 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, /* 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, 72, 0, 0, 17, 72, 0, 0, 0, 5, /* 0x0040 */ 0, 16, 0, 0, 0, 0, 17, 80, 0, 0, 17, 80, 0, 0, 0, 5,
/* 0x0050 */ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 17, 72, 0, 0, 0, 0, /* 0x0050 */ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 17, 80, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 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, /* 0x0080 */ 56, 96,255,248, 84, 99, 72, 44, 78,128, 0, 32, 96, 0, 0, 0,
@@ -60,8 +60,8 @@ unsigned char stub_powerpc_linux_elf_fold[4424] = {
/* 0x0140 */ 144, 3, 0, 4,132, 4, 0, 8,148, 3, 0, 8, 64,158,255,236, /* 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, /* 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, /* 0x0160 */ 148, 3, 0, 4, 58, 67, 0, 4, 56,128, 0, 0, 56,118, 0,104,
/* 0x0170 */ 72, 0, 1,113,124,123, 27,120, 56,160, 15,255,126, 68,147,120, /* 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, 69, 56,178,255,252, 44, 3, 0, 0, /* 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, /* 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, /* 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, /* 0x01b0 */ 156,163,255,255,140, 4,255,255,156, 3,255,255, 66, 0,255,248,
@@ -70,248 +70,248 @@ unsigned char stub_powerpc_linux_elf_fold[4424] = {
/* 0x01e0 */ 132, 4,255,252,127,132, 8, 64,148, 3,255,252, 65,157,255,244, /* 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, /* 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, /* 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, 53, 56, 33, 8, 16,124,127, 27,120, /* 0x0210 */ 127, 41,203,120, 72, 0, 13, 61, 56, 33, 8, 16,124,127, 27,120,
/* 0x0220 */ 128,153, 0,104,127, 35,203,120, 72, 0, 0,153,127, 35,203,120, /* 0x0220 */ 128,153, 0,104,127, 35,203,120, 72, 0, 0,161,127, 35,203,120,
/* 0x0230 */ 72, 0, 0,201, 57, 0, 0, 0,127,103,219,120, 56,192, 0, 2, /* 0x0230 */ 72, 0, 0,209, 57, 0, 0, 0,127,103,219,120, 44, 7, 0, 0,
/* 0x0240 */ 56,160, 0, 1,124,158, 0,208, 56, 96, 0, 0, 72, 0, 0, 89, /* 0x0240 */ 65,128, 0, 32, 56,192, 0, 2, 56,160, 0, 1,124,158, 0,208,
/* 0x0250 */ 127, 99,219,120, 72, 0, 0,149,127, 67,211,120,128, 3, 0, 0, /* 0x0250 */ 56, 96, 0, 0, 72, 0, 0, 89,127, 99,219,120, 72, 0, 0,149,
/* 0x0260 */ 128,131, 0, 4, 56, 99, 0, 8, 43,128, 0, 0, 64,158,255,240, /* 0x0260 */ 127, 67,211,120,128, 3, 0, 0,128,131, 0, 4, 56, 99, 0, 8,
/* 0x0270 */ 124,137, 3,166,127,163,235,120,127,132,227,120, 56, 0, 0, 91, /* 0x0270 */ 43,128, 0, 0, 64,158,255,240,124,137, 3,166,127,163,235,120,
/* 0x0280 */ 127,232, 3,166,184,161, 0, 32, 56, 33, 0,144, 78,128, 4, 32, /* 0x0280 */ 127,132,227,120, 56, 0, 0, 91,127,232, 3,166,184,161, 0, 32,
/* 0x0290 */ 56, 0, 15,255,124, 96, 0, 56,124, 96, 24, 80,124,132, 2, 20, /* 0x0290 */ 56, 33, 0,144, 78,128, 4, 32, 56, 0, 15,255,124, 96, 0, 56,
/* 0x02a0 */ 72, 0, 0, 80, 56, 0, 0, 90, 68, 0, 0, 2, 64,163, 0, 8, /* 0x02a0 */ 124, 96, 24, 80,124,132, 2, 20, 72, 0, 0, 80, 56, 0, 0, 90,
/* 0x02b0 */ 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, 72, 0, 0, 8, /* 0x02b0 */ 68, 0, 0, 2, 64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32,
/* 0x02c0 */ 56, 0, 0, 45, 72, 0, 0, 8, 56, 0, 0, 85, 72, 0, 0, 8, /* 0x02c0 */ 56, 0, 0, 1, 72, 0, 0, 8, 56, 0, 0, 45, 72, 0, 0, 8,
/* 0x02d0 */ 56, 0, 0, 4, 72, 0, 0, 8, 56, 0, 0, 3, 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, 5, 72, 0, 0, 8, 56, 0, 0, 6, 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,125, 72, 0, 0, 8, 56, 0, 0, 91, 75,255,255,172, /* 0x02f0 */ 56, 0, 0, 6, 72, 0, 0, 8, 56, 0, 0,125, 72, 0, 0, 8,
/* 0x0300 */ 124,128, 0, 8, 78,128, 0, 32,148, 33,255,208,124, 8, 2,166, /* 0x0300 */ 56, 0, 0, 91, 75,255,255,172,124,128, 0, 8, 78,128, 0, 32,
/* 0x0310 */ 147,225, 0, 44,144, 1, 0, 52,124, 63, 11,120,144,127, 0, 8, /* 0x0310 */ 148, 33,255,208,124, 8, 2,166,147,225, 0, 44,144, 1, 0, 52,
/* 0x0320 */ 144,159, 0, 12,144,191, 0, 16,129, 63, 0, 8,128, 9, 0, 4, /* 0x0320 */ 124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,
/* 0x0330 */ 144, 31, 0, 20,128, 31, 0, 12,144, 31, 0, 24,129, 63, 0, 8, /* 0x0330 */ 129, 63, 0, 8,128, 9, 0, 4,144, 31, 0, 20,128, 31, 0, 12,
/* 0x0340 */ 129, 41, 0, 0,128, 31, 0, 16,127,137, 0, 64, 64,156, 0, 12, /* 0x0340 */ 144, 31, 0, 24,129, 63, 0, 8,129, 41, 0, 0,128, 31, 0, 16,
/* 0x0350 */ 56, 96, 0,127, 75,255,255,101,128, 31, 0, 16,144, 31, 0, 28, /* 0x0350 */ 127,137, 0, 64, 64,156, 0, 12, 56, 96, 0,127, 75,255,255,101,
/* 0x0360 */ 129, 63, 0, 28, 56, 9,255,255,124, 9, 3,120,145, 63, 0, 28, /* 0x0360 */ 128, 31, 0, 16,144, 31, 0, 28,129, 63, 0, 28, 56, 9,255,255,
/* 0x0370 */ 56, 0,255,255,127,137, 0, 0, 65,158, 0, 48,129,127, 0, 24, /* 0x0370 */ 124, 9, 3,120,145, 63, 0, 28, 56, 0,255,255,127,137, 0, 0,
/* 0x0380 */ 129, 63, 0, 20,136, 9, 0, 0,152, 11, 0, 0,129, 63, 0, 20, /* 0x0380 */ 65,158, 0, 48,129,127, 0, 24,129, 63, 0, 20,136, 9, 0, 0,
/* 0x0390 */ 56, 9, 0, 1,144, 31, 0, 20,129, 63, 0, 24, 56, 9, 0, 1, /* 0x0390 */ 152, 11, 0, 0,129, 63, 0, 20, 56, 9, 0, 1,144, 31, 0, 20,
/* 0x03a0 */ 144, 31, 0, 24, 75,255,255,188,129,127, 0, 8,129, 63, 0, 8, /* 0x03a0 */ 129, 63, 0, 24, 56, 9, 0, 1,144, 31, 0, 24, 75,255,255,188,
/* 0x03b0 */ 129, 41, 0, 4,128, 31, 0, 16,124, 9, 2, 20,144, 11, 0, 4, /* 0x03b0 */ 129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 4,128, 31, 0, 16,
/* 0x03c0 */ 129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 0,128, 31, 0, 16, /* 0x03c0 */ 124, 9, 2, 20,144, 11, 0, 4,129,127, 0, 8,129, 63, 0, 8,
/* 0x03d0 */ 124, 0, 72, 80,144, 11, 0, 0,129, 97, 0, 0,128, 11, 0, 4, /* 0x03d0 */ 129, 41, 0, 0,128, 31, 0, 16,124, 0, 72, 80,144, 11, 0, 0,
/* 0x03e0 */ 124, 8, 3,166,131,235,255,252,125, 97, 91,120, 78,128, 0, 32, /* 0x03e0 */ 129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,131,235,255,252,
/* 0x03f0 */ 148, 33,255,176,124, 8, 2,166,147,225, 0, 76,144, 1, 0, 84, /* 0x03f0 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,176,124, 8, 2,166,
/* 0x0400 */ 124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,144,191, 0, 16, /* 0x0400 */ 147,225, 0, 76,144, 1, 0, 84,124, 63, 11,120,144,127, 0, 8,
/* 0x0410 */ 144,223, 0, 20,129, 63, 0, 12,128, 9, 0, 0, 47,128, 0, 0, /* 0x0410 */ 144,159, 0, 12,144,191, 0, 16,144,223, 0, 20,129, 63, 0, 12,
/* 0x0420 */ 65,158, 1,228, 56, 31, 0, 32,128,127, 0, 8,124, 4, 3,120, /* 0x0420 */ 128, 9, 0, 0, 47,128, 0, 0, 65,158, 1,228, 56, 31, 0, 32,
/* 0x0430 */ 56,160, 0, 12, 75,255,254,213,128, 31, 0, 32, 47,128, 0, 0, /* 0x0430 */ 128,127, 0, 8,124, 4, 3,120, 56,160, 0, 12, 75,255,254,213,
/* 0x0440 */ 64,158, 0, 48,128, 31, 0, 36, 61, 32, 33, 88, 97, 41, 80, 85, /* 0x0440 */ 128, 31, 0, 32, 47,128, 0, 0, 64,158, 0, 48,128, 31, 0, 36,
/* 0x0450 */ 127,128, 72, 0, 65,158, 0, 8, 72, 0, 0, 36,129, 63, 0, 8, /* 0x0450 */ 61, 32, 33, 88, 97, 41, 80, 85,127,128, 72, 0, 65,158, 0, 8,
/* 0x0460 */ 128, 9, 0, 0, 47,128, 0, 0, 65,158, 1,156, 72, 0, 0, 16, /* 0x0460 */ 72, 0, 0, 36,129, 63, 0, 8,128, 9, 0, 0, 47,128, 0, 0,
/* 0x0470 */ 128, 31, 0, 36, 47,128, 0, 0, 64,158, 0, 12, 56, 96, 0,127, /* 0x0470 */ 65,158, 1,156, 72, 0, 0, 16,128, 31, 0, 36, 47,128, 0, 0,
/* 0x0480 */ 75,255,254, 57,128, 31, 0, 36,129, 63, 0, 32,127,128, 72, 64, /* 0x0480 */ 64,158, 0, 12, 56, 96, 0,127, 75,255,254, 57,128, 31, 0, 36,
/* 0x0490 */ 65,157,255,236,129, 63, 0, 12,129,127, 0, 32,128, 9, 0, 0, /* 0x0490 */ 129, 63, 0, 32,127,128, 72, 64, 65,157,255,236,129, 63, 0, 12,
/* 0x04a0 */ 127,139, 0, 64, 65,157,255,216,128, 31, 0, 36,129, 63, 0, 32, /* 0x04a0 */ 129,127, 0, 32,128, 9, 0, 0,127,139, 0, 64, 65,157,255,216,
/* 0x04b0 */ 127,128, 72, 64, 64,156, 1, 8,128, 31, 0, 32,144, 31, 0, 48, /* 0x04b0 */ 128, 31, 0, 36,129, 63, 0, 32,127,128, 72, 64, 64,156, 1, 8,
/* 0x04c0 */ 129, 63, 0, 8,129,127, 0, 12, 57, 95, 0, 48,136, 31, 0, 40, /* 0x04c0 */ 128, 31, 0, 32,144, 31, 0, 48,129, 63, 0, 8,129,127, 0, 12,
/* 0x04d0 */ 84, 0, 6, 62,129, 31, 0, 16,125, 9, 3,166,128,105, 0, 4, /* 0x04d0 */ 57, 95, 0, 48,136, 31, 0, 40, 84, 0, 6, 62,129, 31, 0, 16,
/* 0x04e0 */ 128,159, 0, 36,128,171, 0, 4,125, 70, 83,120,124, 7, 3,120, /* 0x04e0 */ 125, 9, 3,166,128,105, 0, 4,128,159, 0, 36,128,171, 0, 4,
/* 0x04f0 */ 78,128, 4, 33,124, 96, 27,120,144, 31, 0, 52,128, 31, 0, 52, /* 0x04f0 */ 125, 70, 83,120,124, 7, 3,120, 78,128, 4, 33,124, 96, 27,120,
/* 0x0500 */ 47,128, 0, 0, 64,158,255,120,128, 31, 0, 32,129, 63, 0, 48, /* 0x0500 */ 144, 31, 0, 52,128, 31, 0, 52, 47,128, 0, 0, 64,158,255,120,
/* 0x0510 */ 127,128, 72, 0, 64,158,255,104,136, 31, 0, 41, 84, 0, 6, 62, /* 0x0510 */ 128, 31, 0, 32,129, 63, 0, 48,127,128, 72, 0, 64,158,255,104,
/* 0x0520 */ 47,128, 0, 0, 65,158, 0,100,128, 31, 0, 20, 47,128, 0, 0, /* 0x0520 */ 136, 31, 0, 41, 84, 0, 6, 62, 47,128, 0, 0, 65,158, 0,100,
/* 0x0530 */ 65,158, 0, 88,128, 31, 0, 48, 43,128, 2, 0, 65,157, 0, 28, /* 0x0530 */ 128, 31, 0, 20, 47,128, 0, 0, 65,158, 0, 88,128, 31, 0, 48,
/* 0x0540 */ 129, 63, 0, 12,129, 41, 0, 0,128, 31, 0, 32,127,137, 0, 0, /* 0x0540 */ 43,128, 2, 0, 65,157, 0, 28,129, 63, 0, 12,129, 41, 0, 0,
/* 0x0550 */ 65,158, 0, 8, 72, 0, 0, 52,129, 63, 0, 12,136, 31, 0, 42, /* 0x0550 */ 128, 31, 0, 32,127,137, 0, 0, 65,158, 0, 8, 72, 0, 0, 52,
/* 0x0560 */ 84, 11, 6, 62,136, 31, 0, 41, 84, 0, 6, 62,129, 31, 0, 20, /* 0x0560 */ 129, 63, 0, 12,136, 31, 0, 42, 84, 11, 6, 62,136, 31, 0, 41,
/* 0x0570 */ 125, 9, 3,166,128,105, 0, 4,128,159, 0, 48,125,101, 91,120, /* 0x0570 */ 84, 0, 6, 62,129, 31, 0, 20,125, 9, 3,166,128,105, 0, 4,
/* 0x0580 */ 124, 6, 3,120, 78,128, 4, 33,129,127, 0, 8,129, 63, 0, 8, /* 0x0580 */ 128,159, 0, 48,125,101, 91,120,124, 6, 3,120, 78,128, 4, 33,
/* 0x0590 */ 129, 41, 0, 4,128, 31, 0, 36,124, 9, 2, 20,144, 11, 0, 4, /* 0x0590 */ 129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 4,128, 31, 0, 36,
/* 0x05a0 */ 129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 0,128, 31, 0, 36, /* 0x05a0 */ 124, 9, 2, 20,144, 11, 0, 4,129,127, 0, 8,129, 63, 0, 8,
/* 0x05b0 */ 124, 0, 72, 80,144, 11, 0, 0, 72, 0, 0, 24,129, 63, 0, 12, /* 0x05b0 */ 129, 41, 0, 0,128, 31, 0, 36,124, 0, 72, 80,144, 11, 0, 0,
/* 0x05c0 */ 128,127, 0, 8,128,137, 0, 4,128,191, 0, 36, 75,255,253, 61, /* 0x05c0 */ 72, 0, 0, 24,129, 63, 0, 12,128,127, 0, 8,128,137, 0, 4,
/* 0x05d0 */ 129,127, 0, 12,129, 63, 0, 12,129, 41, 0, 4,128, 31, 0, 32, /* 0x05d0 */ 128,191, 0, 36, 75,255,253, 61,129,127, 0, 12,129, 63, 0, 12,
/* 0x05e0 */ 124, 9, 2, 20,144, 11, 0, 4,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, 41, 0, 0,128, 31, 0, 32,124, 0, 72, 80,144, 11, 0, 0, /* 0x05f0 */ 129,127, 0, 12,129, 63, 0, 12,129, 41, 0, 0,128, 31, 0, 32,
/* 0x0600 */ 75,255,254, 20,129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166, /* 0x0600 */ 124, 0, 72, 80,144, 11, 0, 0, 75,255,254, 20,129, 97, 0, 0,
/* 0x0610 */ 131,235,255,252,125, 97, 91,120, 78,128, 0, 32,148, 33,255,208, /* 0x0610 */ 128, 11, 0, 4,124, 8, 3,166,131,235,255,252,125, 97, 91,120,
/* 0x0620 */ 124, 8, 2,166,147,225, 0, 44,144, 1, 0, 52,124, 63, 11,120, /* 0x0620 */ 78,128, 0, 32,148, 33,255,208,124, 8, 2,166,147,225, 0, 44,
/* 0x0630 */ 144,127, 0, 8,144,159, 0, 12,144,191, 0, 16, 56, 0, 0, 0, /* 0x0630 */ 144, 1, 0, 52,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,
/* 0x0640 */ 144, 31, 0, 20, 56, 0, 0, 0,144, 31, 0, 24,129, 63, 0, 8, /* 0x0640 */ 144,191, 0, 16, 56, 0, 0, 0,144, 31, 0, 20, 56, 0, 0, 0,
/* 0x0650 */ 128, 9, 0, 0, 47,128, 0, 1, 64,158, 1, 40,129, 63, 0, 8, /* 0x0650 */ 144, 31, 0, 24,129, 63, 0, 8,128, 9, 0, 0, 47,128, 0, 1,
/* 0x0660 */ 128, 9, 0, 24, 84, 0, 7,254, 47,128, 0, 0, 65,158, 1, 20, /* 0x0660 */ 64,158, 1, 40,129, 63, 0, 8,128, 9, 0, 24, 84, 0, 7,254,
/* 0x0670 */ 129, 63, 0, 8,129,127, 0, 8,129, 41, 0, 20,128, 11, 0, 8, /* 0x0670 */ 47,128, 0, 0, 65,158, 1, 20,129, 63, 0, 8,129,127, 0, 8,
/* 0x0680 */ 125, 41, 2, 20,128, 31, 0, 12,124, 9, 2, 20,144, 31, 0, 24, /* 0x0680 */ 129, 41, 0, 20,128, 11, 0, 8,125, 41, 2, 20,128, 31, 0, 12,
/* 0x0690 */ 129, 63, 0, 8,129,127, 0, 8,129, 41, 0, 20,128, 11, 0, 16, /* 0x0690 */ 124, 9, 2, 20,144, 31, 0, 24,129, 63, 0, 8,129,127, 0, 8,
/* 0x06a0 */ 127,137, 0, 0, 64,158, 0, 28,128, 31, 0, 24,125, 32, 0,208, /* 0x06a0 */ 129, 41, 0, 20,128, 11, 0, 16,127,137, 0, 0, 64,158, 0, 28,
/* 0x06b0 */ 128, 31, 0, 16,125, 32, 0, 56, 43,128, 0, 7, 65,157, 0,104, /* 0x06b0 */ 128, 31, 0, 24,125, 32, 0,208,128, 31, 0, 16,125, 32, 0, 56,
/* 0x06c0 */ 129,127, 0, 8,128, 31, 0, 12, 29, 32, 0, 52,128, 11, 0, 8, /* 0x06c0 */ 43,128, 0, 7, 65,157, 0,104,129,127, 0, 8,128, 31, 0, 12,
/* 0x06d0 */ 125, 41, 2, 20, 56, 9, 0, 8,144, 31, 0, 24,129, 63, 0, 8, /* 0x06d0 */ 29, 32, 0, 52,128, 11, 0, 8,125, 41, 2, 20, 56, 9, 0, 8,
/* 0x06e0 */ 128, 9, 0, 4, 47,128, 0, 0, 65,158, 0, 60, 56, 0, 0, 1, /* 0x06e0 */ 144, 31, 0, 24,129, 63, 0, 8,128, 9, 0, 4, 47,128, 0, 0,
/* 0x06f0 */ 144, 31, 0, 20, 56, 96, 0, 0, 56,128, 16, 0, 56,160, 0, 3, /* 0x06f0 */ 65,158, 0, 60, 56, 0, 0, 1,144, 31, 0, 20, 56, 96, 0, 0,
/* 0x0700 */ 56,192, 0, 34, 56,224,255,255, 57, 0, 0, 0, 75,255,251,153, /* 0x0700 */ 56,128, 16, 0, 56,160, 0, 3, 56,192, 0, 34, 56,224,255,255,
/* 0x0710 */ 144,127, 0, 24,128, 31, 0, 24, 47,128, 0, 0, 64,158, 0, 8, /* 0x0710 */ 57, 0, 0, 0, 75,255,251,153,144,127, 0, 24,128, 31, 0, 24,
/* 0x0720 */ 72, 0, 0, 88,129, 63, 0, 24, 56, 9, 0, 3, 84, 0, 0, 58, /* 0x0720 */ 47,128, 0, 0, 64,158, 0, 8, 72, 0, 0, 88,129, 63, 0, 24,
/* 0x0730 */ 144, 31, 0, 24,129, 63, 0, 24, 60, 0, 68, 0, 96, 0, 0, 2, /* 0x0730 */ 56, 9, 0, 3, 84, 0, 0, 58,144, 31, 0, 24,129, 63, 0, 24,
/* 0x0740 */ 144, 9, 0, 0,129, 63, 0, 24, 57, 41, 0, 4, 60, 0, 78,128, /* 0x0740 */ 60, 0, 68, 0, 96, 0, 0, 2,144, 9, 0, 0,129, 63, 0, 24,
/* 0x0750 */ 96, 0, 0, 32,144, 9, 0, 0,128, 31, 0, 20, 47,128, 0, 0, /* 0x0750 */ 57, 41, 0, 4, 60, 0, 78,128, 96, 0, 0, 32,144, 9, 0, 0,
/* 0x0760 */ 65,158, 0, 32,128,127, 0, 24, 56,128, 0, 8, 56,160, 0, 5, /* 0x0760 */ 128, 31, 0, 20, 47,128, 0, 0, 65,158, 0, 32,128,127, 0, 24,
/* 0x0770 */ 75,255,251, 33, 72, 0, 0, 12, 56, 0, 0, 0,144, 31, 0, 24, /* 0x0770 */ 56,128, 0, 8, 56,160, 0, 5, 75,255,251, 33, 72, 0, 0, 12,
/* 0x0780 */ 128, 31, 0, 24,124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4, /* 0x0780 */ 56, 0, 0, 0,144, 31, 0, 24,128, 31, 0, 24,124, 3, 3,120,
/* 0x0790 */ 124, 8, 3,166,131,235,255,252,125, 97, 91,120, 78,128, 0, 32, /* 0x0790 */ 129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,131,235,255,252,
/* 0x07a0 */ 148, 33,255,224,147,225, 0, 28,124, 63, 11,120,144,127, 0, 8, /* 0x07a0 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,224,147,225, 0, 28,
/* 0x07b0 */ 144,159, 0, 12,128, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 52, /* 0x07b0 */ 124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,128, 31, 0, 12,
/* 0x07c0 */ 129, 63, 0, 8,125, 43, 75,120, 56, 0, 0, 0,152, 11, 0, 0, /* 0x07c0 */ 47,128, 0, 0, 65,158, 0, 52,129, 63, 0, 8,125, 43, 75,120,
/* 0x07d0 */ 57, 41, 0, 1,145, 63, 0, 8,129, 63, 0, 12, 56, 9,255,255, /* 0x07d0 */ 56, 0, 0, 0,152, 11, 0, 0, 57, 41, 0, 1,145, 63, 0, 8,
/* 0x07e0 */ 144, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 8, 75,255,255,212, /* 0x07e0 */ 129, 63, 0, 12, 56, 9,255,255,144, 31, 0, 12, 47,128, 0, 0,
/* 0x07f0 */ 129, 97, 0, 0,131,235,255,252,125, 97, 91,120, 78,128, 0, 32, /* 0x07f0 */ 65,158, 0, 8, 75,255,255,212,129, 97, 0, 0,131,235,255,252,
/* 0x0800 */ 148, 33,255,224,147,225, 0, 28,124, 63, 11,120,144,127, 0, 8, /* 0x0800 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,224,147,225, 0, 28,
/* 0x0810 */ 144,159, 0, 12, 56, 0, 0, 0,144, 31, 0, 16,128, 31, 0, 8, /* 0x0810 */ 124, 63, 11,120,144,127, 0, 8,144,159, 0, 12, 56, 0, 0, 0,
/* 0x0820 */ 47,128, 0, 0, 65,158, 0, 76,129, 63, 0, 8,129, 41, 0, 0, /* 0x0820 */ 144, 31, 0, 16,128, 31, 0, 8, 47,128, 0, 0, 65,158, 0, 76,
/* 0x0830 */ 128, 31, 0, 12,127,137, 0, 0, 64,158, 0, 16,128, 31, 0, 8, /* 0x0830 */ 129, 63, 0, 8,129, 41, 0, 0,128, 31, 0, 12,127,137, 0, 0,
/* 0x0840 */ 144, 31, 0, 20, 72, 0, 0, 52,129, 63, 0, 8,128, 9, 0, 0, /* 0x0840 */ 64,158, 0, 16,128, 31, 0, 8,144, 31, 0, 20, 72, 0, 0, 52,
/* 0x0850 */ 47,128, 0, 1, 64,158, 0, 12,128, 31, 0, 8,144, 31, 0, 16, /* 0x0850 */ 129, 63, 0, 8,128, 9, 0, 0, 47,128, 0, 1, 64,158, 0, 12,
/* 0x0860 */ 129, 63, 0, 8, 56, 9, 0, 8,144, 31, 0, 8, 75,255,255,188, /* 0x0860 */ 128, 31, 0, 8,144, 31, 0, 16,129, 63, 0, 8, 56, 9, 0, 8,
/* 0x0870 */ 56, 0, 0, 0,144, 31, 0, 20,128,127, 0, 20,129, 97, 0, 0, /* 0x0870 */ 144, 31, 0, 8, 75,255,255,188, 56, 0, 0, 0,144, 31, 0, 20,
/* 0x0880 */ 131,235,255,252,125, 97, 91,120, 78,128, 0, 32,148, 33,255,224, /* 0x0880 */ 128,127, 0, 20,129, 97, 0, 0,131,235,255,252,125, 97, 91,120,
/* 0x0890 */ 124, 8, 2,166,147,225, 0, 28,144, 1, 0, 36,124, 63, 11,120, /* 0x0890 */ 78,128, 0, 32,148, 33,255,224,124, 8, 2,166,147,225, 0, 28,
/* 0x08a0 */ 144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,128,127, 0, 8, /* 0x08a0 */ 144, 1, 0, 36,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,
/* 0x08b0 */ 128,159, 0, 12, 75,255,255, 77,124, 96, 27,120,144, 31, 0, 8, /* 0x08b0 */ 144,191, 0, 16,128,127, 0, 8,128,159, 0, 12, 75,255,255, 77,
/* 0x08c0 */ 128, 31, 0, 8, 47,128, 0, 0, 65,158, 0, 16,129, 63, 0, 8, /* 0x08c0 */ 124, 96, 27,120,144, 31, 0, 8,128, 31, 0, 8, 47,128, 0, 0,
/* 0x08d0 */ 128, 31, 0, 16,144, 9, 0, 4,129, 97, 0, 0,128, 11, 0, 4, /* 0x08d0 */ 65,158, 0, 16,129, 63, 0, 8,128, 31, 0, 16,144, 9, 0, 4,
/* 0x08e0 */ 124, 8, 3,166,131,235,255,252,125, 97, 91,120, 78,128, 0, 32, /* 0x08e0 */ 129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,131,235,255,252,
/* 0x08f0 */ 148, 33,255,208,124, 8, 2,166,147,225, 0, 44,144, 1, 0, 52, /* 0x08f0 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,208,124, 8, 2,166,
/* 0x0900 */ 124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,144,191, 0, 16, /* 0x0900 */ 147,225, 0, 44,144, 1, 0, 52,124, 63, 11,120,144,127, 0, 8,
/* 0x0910 */ 144,223, 0, 20, 75,255,247,109,124, 96, 27,120,144, 31, 0, 24, /* 0x0910 */ 144,159, 0, 12,144,191, 0, 16,144,223, 0, 20, 75,255,247,101,
/* 0x0920 */ 56, 0,255,255,144, 31, 0, 28, 56, 0, 0, 0,144, 31, 0, 32, /* 0x0920 */ 124, 96, 27,120,144, 31, 0, 24, 56, 0,255,255,144, 31, 0, 28,
/* 0x0930 */ 56, 0, 0, 0,144, 31, 0, 36,129, 63, 0, 16, 56, 9,255,255, /* 0x0930 */ 56, 0, 0, 0,144, 31, 0, 32, 56, 0, 0, 0,144, 31, 0, 36,
/* 0x0940 */ 144, 31, 0, 16, 47,128, 0, 0, 65,156, 0,124,129, 63, 0, 12, /* 0x0940 */ 129, 63, 0, 16, 56, 9,255,255,144, 31, 0, 16, 47,128, 0, 0,
/* 0x0950 */ 128, 9, 0, 0, 47,128, 0, 1, 64,158, 0, 92,129, 63, 0, 12, /* 0x0950 */ 65,156, 0,124,129, 63, 0, 12,128, 9, 0, 0, 47,128, 0, 1,
/* 0x0960 */ 129, 41, 0, 8,128, 31, 0, 28,127,137, 0, 64, 64,156, 0, 16, /* 0x0960 */ 64,158, 0, 92,129, 63, 0, 12,129, 41, 0, 8,128, 31, 0, 28,
/* 0x0970 */ 129, 63, 0, 12,128, 9, 0, 8,144, 31, 0, 28,129, 63, 0, 12, /* 0x0970 */ 127,137, 0, 64, 64,156, 0, 16,129, 63, 0, 12,128, 9, 0, 8,
/* 0x0980 */ 129,127, 0, 12,129, 41, 0, 20,128, 11, 0, 8,125, 41, 2, 20, /* 0x0980 */ 144, 31, 0, 28,129, 63, 0, 12,129,127, 0, 12,129, 41, 0, 20,
/* 0x0990 */ 128, 31, 0, 32,127,137, 0, 64, 64,157, 0, 28,129, 63, 0, 12, /* 0x0990 */ 128, 11, 0, 8,125, 41, 2, 20,128, 31, 0, 32,127,137, 0, 64,
/* 0x09a0 */ 129,127, 0, 12,129, 41, 0, 20,128, 11, 0, 8,124, 9, 2, 20, /* 0x09a0 */ 64,157, 0, 28,129, 63, 0, 12,129,127, 0, 12,129, 41, 0, 20,
/* 0x09b0 */ 144, 31, 0, 32,129, 63, 0, 12, 56, 9, 0, 32,144, 31, 0, 12, /* 0x09b0 */ 128, 11, 0, 8,124, 9, 2, 20,144, 31, 0, 32,129, 63, 0, 12,
/* 0x09c0 */ 75,255,255,120,129, 63, 0, 28,128, 31, 0, 24,125, 32, 0, 56, /* 0x09c0 */ 56, 9, 0, 32,144, 31, 0, 12, 75,255,255,120,129, 63, 0, 28,
/* 0x09d0 */ 144, 31, 0, 28,129, 63, 0, 32,128, 31, 0, 28,125, 32, 72, 80, /* 0x09d0 */ 128, 31, 0, 24,125, 32, 0, 56,144, 31, 0, 28,129, 63, 0, 32,
/* 0x09e0 */ 128, 31, 0, 24,125, 32, 72, 80, 57, 41,255,255,128, 31, 0, 24, /* 0x09e0 */ 128, 31, 0, 28,125, 32, 72, 80,128, 31, 0, 24,125, 32, 72, 80,
/* 0x09f0 */ 125, 32, 0, 56,144, 31, 0, 32,128, 31, 0, 8, 96, 0, 0, 34, /* 0x09f0 */ 57, 41,255,255,128, 31, 0, 24,125, 32, 0, 56,144, 31, 0, 32,
/* 0x0a00 */ 128,127, 0, 28,128,159, 0, 32, 56,160, 0, 0,124, 6, 3,120, /* 0x0a00 */ 128, 31, 0, 8, 96, 0, 0, 34,128,127, 0, 28,128,159, 0, 32,
/* 0x0a10 */ 56,224,255,255, 57, 0, 0, 0, 75,255,248,141,144,127, 0, 36, /* 0x0a10 */ 56,160, 0, 0,124, 6, 3,120, 56,224,255,255, 57, 0, 0, 0,
/* 0x0a20 */ 129,127, 0, 20,129, 63, 0, 32,128, 31, 0, 36,124, 9, 2, 20, /* 0x0a20 */ 75,255,248,141,144,127, 0, 36,129,127, 0, 20,129, 63, 0, 32,
/* 0x0a30 */ 144, 11, 0, 0,129, 63, 0, 36,128, 31, 0, 28,124, 0, 72, 80, /* 0x0a30 */ 128, 31, 0, 36,124, 9, 2, 20,144, 11, 0, 0,129, 63, 0, 36,
/* 0x0a40 */ 124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166, /* 0x0a40 */ 128, 31, 0, 28,124, 0, 72, 80,124, 3, 3,120,129, 97, 0, 0,
/* 0x0a50 */ 131,235,255,252,125, 97, 91,120, 78,128, 0, 32,148, 33,255,144, /* 0x0a50 */ 128, 11, 0, 4,124, 8, 3,166,131,235,255,252,125, 97, 91,120,
/* 0x0a60 */ 124, 8, 2,166,147,225, 0,108,144, 1, 0,116,124, 63, 11,120, /* 0x0a60 */ 78,128, 0, 32,148, 33,255,144,124, 8, 2,166,147,225, 0,108,
/* 0x0a70 */ 144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,144,223, 0, 20, /* 0x0a70 */ 144, 1, 0,116,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,
/* 0x0a80 */ 144,255, 0, 24,145, 31, 0, 28, 75,255,245,249,124, 96, 27,120, /* 0x0a80 */ 144,191, 0, 16,144,223, 0, 20,144,255, 0, 24,145, 31, 0, 28,
/* 0x0a90 */ 124, 0, 0,248,144, 31, 0, 32,129, 63, 0, 12,129, 41, 0, 28, /* 0x0a90 */ 75,255,245,241,124, 96, 27,120,124, 0, 0,248,144, 31, 0, 32,
/* 0x0aa0 */ 128, 31, 0, 12,124, 9, 2, 20,144, 31, 0, 36,128, 31, 0, 16, /* 0x0aa0 */ 129, 63, 0, 12,129, 41, 0, 28,128, 31, 0, 12,124, 9, 2, 20,
/* 0x0ab0 */ 47,128, 0, 0, 65,158, 0,144,129, 63, 0, 24,128, 9, 0, 0, /* 0x0ab0 */ 144, 31, 0, 36,128, 31, 0, 16, 47,128, 0, 0, 65,158, 0,144,
/* 0x0ac0 */ 144, 31, 0, 48,129, 63, 0, 48, 56, 9, 0, 52,144, 31, 0, 52, /* 0x0ac0 */ 129, 63, 0, 24,128, 9, 0, 0,144, 31, 0, 48,129, 63, 0, 48,
/* 0x0ad0 */ 129, 63, 0, 48,160, 9, 0, 16, 84, 0, 4, 62, 47,128, 0, 2, /* 0x0ad0 */ 56, 9, 0, 52,144, 31, 0, 52,129, 63, 0, 48,160, 9, 0, 16,
/* 0x0ae0 */ 64,158, 0, 28,129, 63, 0, 52,128, 9, 0, 8,144, 31, 0, 48, /* 0x0ae0 */ 84, 0, 4, 62, 47,128, 0, 2, 64,158, 0, 28,129, 63, 0, 52,
/* 0x0af0 */ 56, 0, 0, 0,144, 31, 0, 44, 72, 0, 0, 36,129, 63, 0, 52, /* 0x0af0 */ 128, 9, 0, 8,144, 31, 0, 48, 56, 0, 0, 0,144, 31, 0, 44,
/* 0x0b00 */ 57, 41, 0, 32,129,127, 0, 48,128, 9, 0, 8,124, 0, 88, 80, /* 0x0b00 */ 72, 0, 0, 36,129, 63, 0, 52, 57, 41, 0, 32,129,127, 0, 48,
/* 0x0b10 */ 144, 31, 0, 48,128, 31, 0, 48,144, 31, 0, 44,129, 63, 0, 52, /* 0x0b10 */ 128, 9, 0, 8,124, 0, 88, 80,144, 31, 0, 48,128, 31, 0, 48,
/* 0x0b20 */ 129, 41, 0, 20,128, 31, 0, 48,124, 9, 2, 20,144, 31, 0, 40, /* 0x0b20 */ 144, 31, 0, 44,129, 63, 0, 52,129, 41, 0, 20,128, 31, 0, 48,
/* 0x0b30 */ 129, 63, 0, 52,128,127, 0, 48,128,137, 0, 20, 75,255,247,189, /* 0x0b30 */ 124, 9, 2, 20,144, 31, 0, 40,129, 63, 0, 52,128,127, 0, 48,
/* 0x0b40 */ 72, 0, 0, 84,129, 63, 0, 12,160, 9, 0, 16, 84, 0, 4, 62, /* 0x0b40 */ 128,137, 0, 20, 75,255,247,189, 72, 0, 0, 84,129, 63, 0, 12,
/* 0x0b50 */ 47,128, 0, 3, 65,158, 0, 16, 56, 0, 0, 16,144, 31, 0, 84, /* 0x0b50 */ 160, 9, 0, 16, 84, 0, 4, 62, 47,128, 0, 3, 65,158, 0, 16,
/* 0x0b60 */ 72, 0, 0, 12, 56, 0, 0, 0,144, 31, 0, 84,129, 63, 0, 12, /* 0x0b60 */ 56, 0, 0, 16,144, 31, 0, 84, 72, 0, 0, 12, 56, 0, 0, 0,
/* 0x0b70 */ 160, 9, 0, 44, 84, 0, 4, 62, 57, 63, 0, 40,128,127, 0, 84, /* 0x0b70 */ 144, 31, 0, 84,129, 63, 0, 12,160, 9, 0, 44, 84, 0, 4, 62,
/* 0x0b80 */ 128,159, 0, 36,124, 5, 3,120,125, 38, 75,120, 75,255,253,101, /* 0x0b80 */ 57, 63, 0, 40,128,127, 0, 84,128,159, 0, 36,124, 5, 3,120,
/* 0x0b90 */ 144,127, 0, 44, 56, 0, 0, 0,144, 31, 0, 52,129, 63, 0, 12, /* 0x0b90 */ 125, 38, 75,120, 75,255,253,101,144,127, 0, 44, 56, 0, 0, 0,
/* 0x0ba0 */ 160, 9, 0, 44, 84, 9, 4, 62,128, 31, 0, 52,127,137, 0, 0, /* 0x0ba0 */ 144, 31, 0, 52,129, 63, 0, 12,160, 9, 0, 44, 84, 9, 4, 62,
/* 0x0bb0 */ 64,157, 3, 84,128, 31, 0, 16, 47,128, 0, 0, 65,158, 0, 56, /* 0x0bb0 */ 128, 31, 0, 52,127,137, 0, 0, 64,157, 3, 84,128, 31, 0, 16,
/* 0x0bc0 */ 129, 63, 0, 36,128, 9, 0, 0, 47,128, 0, 6, 64,158, 0, 40, /* 0x0bc0 */ 47,128, 0, 0, 65,158, 0, 56,129, 63, 0, 36,128, 9, 0, 0,
/* 0x0bd0 */ 129, 63, 0, 36,129, 41, 0, 8,128, 31, 0, 44,124, 9, 2, 20, /* 0x0bd0 */ 47,128, 0, 6, 64,158, 0, 40,129, 63, 0, 36,129, 41, 0, 8,
/* 0x0be0 */ 128,127, 0, 20, 56,128, 0, 3,124, 5, 3,120, 75,255,252,161, /* 0x0be0 */ 128, 31, 0, 44,124, 9, 2, 20,128,127, 0, 20, 56,128, 0, 3,
/* 0x0bf0 */ 72, 0, 2,248,129, 63, 0, 36,128, 9, 0, 0, 47,128, 0, 1, /* 0x0bf0 */ 124, 5, 3,120, 75,255,252,161, 72, 0, 2,248,129, 63, 0, 36,
/* 0x0c00 */ 64,158, 2,232,129, 63, 0, 36,128, 9, 0, 20, 47,128, 0, 0, /* 0x0c00 */ 128, 9, 0, 0, 47,128, 0, 1, 64,158, 2,232,129, 63, 0, 36,
/* 0x0c10 */ 65,158, 2,216,128, 31, 0, 16, 47,128, 0, 0, 65,158, 0,120, /* 0x0c10 */ 128, 9, 0, 20, 47,128, 0, 0, 65,158, 2,216,128, 31, 0, 16,
/* 0x0c20 */ 129, 63, 0, 36,128, 9, 0, 4, 47,128, 0, 0, 64,158, 0,104, /* 0x0c20 */ 47,128, 0, 0, 65,158, 0,120,129, 63, 0, 36,128, 9, 0, 4,
/* 0x0c30 */ 129, 63, 0, 36,129, 41, 0, 8,128, 31, 0, 44,125,105, 2, 20, /* 0x0c30 */ 47,128, 0, 0, 64,158, 0,104,129, 63, 0, 36,129, 41, 0, 8,
/* 0x0c40 */ 129, 63, 0, 12,128, 9, 0, 28,124, 11, 2, 20,128,127, 0, 20, /* 0x0c40 */ 128, 31, 0, 44,125,105, 2, 20,129, 63, 0, 12,128, 9, 0, 28,
/* 0x0c50 */ 56,128, 0, 3,124, 5, 3,120, 75,255,252, 53,129, 63, 0, 12, /* 0x0c50 */ 124, 11, 2, 20,128,127, 0, 20, 56,128, 0, 3,124, 5, 3,120,
/* 0x0c60 */ 160, 9, 0, 44, 84, 0, 4, 62,128,127, 0, 20, 56,128, 0, 5, /* 0x0c60 */ 75,255,252, 53,129, 63, 0, 12,160, 9, 0, 44, 84, 0, 4, 62,
/* 0x0c70 */ 124, 5, 3,120, 75,255,252, 25,129, 63, 0, 12,160, 9, 0, 42, /* 0x0c70 */ 128,127, 0, 20, 56,128, 0, 5,124, 5, 3,120, 75,255,252, 25,
/* 0x0c80 */ 84, 0, 4, 62,128,127, 0, 20, 56,128, 0, 4,124, 5, 3,120, /* 0x0c80 */ 129, 63, 0, 12,160, 9, 0, 42, 84, 0, 4, 62,128,127, 0, 20,
/* 0x0c90 */ 75,255,251,253,129, 63, 0, 36,128, 9, 0, 24, 84, 0, 7,126, /* 0x0c90 */ 56,128, 0, 4,124, 5, 3,120, 75,255,251,253,129, 63, 0, 36,
/* 0x0ca0 */ 84, 9, 16, 58, 60, 0,115, 81, 96, 0, 98, 64,124, 0, 76, 48, /* 0x0ca0 */ 128, 9, 0, 24, 84, 0, 7,126, 84, 9, 16, 58, 60, 0,115, 81,
/* 0x0cb0 */ 84, 0, 7,126,144, 31, 0, 48,129, 63, 0, 36,128, 9, 0, 16, /* 0x0cb0 */ 96, 0, 98, 64,124, 0, 76, 48, 84, 0, 7,126,144, 31, 0, 48,
/* 0x0cc0 */ 144, 31, 0, 56,144, 31, 0, 64,129, 63, 0, 36,129, 41, 0, 8, /* 0x0cc0 */ 129, 63, 0, 36,128, 9, 0, 16,144, 31, 0, 56,144, 31, 0, 64,
/* 0x0cd0 */ 128, 31, 0, 44,124, 9, 2, 20,144, 31, 0, 60,144, 31, 0, 68, /* 0x0cd0 */ 129, 63, 0, 36,129, 41, 0, 8,128, 31, 0, 44,124, 9, 2, 20,
/* 0x0ce0 */ 129, 63, 0, 36,129, 41, 0, 20,128, 31, 0, 68,124, 9, 2, 20, /* 0x0ce0 */ 144, 31, 0, 60,144, 31, 0, 68,129, 63, 0, 36,129, 41, 0, 20,
/* 0x0cf0 */ 144, 31, 0, 72,129, 63, 0, 68,128, 31, 0, 32,125, 32, 0, 56, /* 0x0cf0 */ 128, 31, 0, 68,124, 9, 2, 20,144, 31, 0, 72,129, 63, 0, 68,
/* 0x0d00 */ 144, 31, 0, 76,129, 63, 0, 64,128, 31, 0, 76,124, 9, 2, 20, /* 0x0d00 */ 128, 31, 0, 32,125, 32, 0, 56,144, 31, 0, 76,129, 63, 0, 64,
/* 0x0d10 */ 144, 31, 0, 64,129, 63, 0, 68,128, 31, 0, 76,124, 0, 72, 80, /* 0x0d10 */ 128, 31, 0, 76,124, 9, 2, 20,144, 31, 0, 64,129, 63, 0, 68,
/* 0x0d20 */ 144, 31, 0, 68,128, 31, 0, 16, 47,128, 0, 0, 65,158, 0,120, /* 0x0d20 */ 128, 31, 0, 76,124, 0, 72, 80,144, 31, 0, 68,128, 31, 0, 16,
/* 0x0d30 */ 128,127, 0, 68,128,159, 0, 64, 56,160, 0, 3, 56,192, 0, 50, /* 0x0d30 */ 47,128, 0, 0, 65,158, 0,120,128,127, 0, 68,128,159, 0, 64,
/* 0x0d40 */ 56,224,255,255, 57, 0, 0, 0, 75,255,245, 93,124, 96, 27,120, /* 0x0d40 */ 56,160, 0, 3, 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0,
/* 0x0d50 */ 129, 63, 0, 68,127,128, 72, 0, 65,158, 0, 8, 72, 0, 1, 32, /* 0x0d50 */ 75,255,245, 93,124, 96, 27,120,129, 63, 0, 68,127,128, 72, 0,
/* 0x0d60 */ 56, 31, 0, 56,144, 31, 0, 88,128, 31, 0, 48, 84, 0, 7,122, /* 0x0d60 */ 65,158, 0, 8, 72, 0, 1, 32, 56, 31, 0, 56,144, 31, 0, 88,
/* 0x0d70 */ 47,128, 0, 0, 65,158, 0, 16,128, 31, 0, 28,144, 31, 0, 92, /* 0x0d70 */ 128, 31, 0, 48, 84, 0, 7,122, 47,128, 0, 0, 65,158, 0, 16,
/* 0x0d80 */ 72, 0, 0, 12, 56, 0, 0, 0,144, 31, 0, 92,128,127, 0, 16, /* 0x0d80 */ 128, 31, 0, 28,144, 31, 0, 92, 72, 0, 0, 12, 56, 0, 0, 0,
/* 0x0d90 */ 128,159, 0, 88,128,191, 0, 8,128,223, 0, 92, 75,255,246, 85, /* 0x0d90 */ 144, 31, 0, 92,128,127, 0, 16,128,159, 0, 88,128,191, 0, 8,
/* 0x0da0 */ 72, 0, 0, 68,129, 63, 0, 36,129, 41, 0, 4,128, 31, 0, 76, /* 0x0da0 */ 128,223, 0, 92, 75,255,246, 85, 72, 0, 0, 68,129, 63, 0, 36,
/* 0x0db0 */ 124, 0, 72, 80,128,127, 0, 68,128,159, 0, 64,128,191, 0, 48, /* 0x0db0 */ 129, 41, 0, 4,128, 31, 0, 76,124, 0, 72, 80,128,127, 0, 68,
/* 0x0dc0 */ 56,192, 0, 18,128,255, 0, 8,124, 8, 3,120, 75,255,244,217, /* 0x0dc0 */ 128,159, 0, 64,128,191, 0, 48, 56,192, 0, 18,128,255, 0, 8,
/* 0x0dd0 */ 124,105, 27,120,128, 31, 0, 68,127,137, 0, 0, 65,158, 0, 8, /* 0x0dd0 */ 124, 8, 3,120, 75,255,244,217,124,105, 27,120,128, 31, 0, 68,
/* 0x0de0 */ 72, 0, 0,156,128, 31, 0, 64,125, 32, 0,208,128, 31, 0, 32, /* 0x0de0 */ 127,137, 0, 0, 65,158, 0, 8, 72, 0, 0,156,128, 31, 0, 64,
/* 0x0df0 */ 125, 32, 0, 56,144, 31, 0, 76,128, 31, 0, 48, 84, 0, 7,188, /* 0x0df0 */ 125, 32, 0,208,128, 31, 0, 32,125, 32, 0, 56,144, 31, 0, 76,
/* 0x0e00 */ 47,128, 0, 0, 65,158, 0, 28,128, 31, 0, 68,129, 63, 0, 64, /* 0x0e00 */ 128, 31, 0, 48, 84, 0, 7,188, 47,128, 0, 0, 65,158, 0, 28,
/* 0x0e10 */ 124, 0, 74, 20,124, 3, 3,120,128,159, 0, 76, 75,255,249,133, /* 0x0e10 */ 128, 31, 0, 68,129, 63, 0, 64,124, 0, 74, 20,124, 3, 3,120,
/* 0x0e20 */ 128, 31, 0, 16, 47,128, 0, 0, 65,158, 0, 92,128,127, 0, 36, /* 0x0e20 */ 128,159, 0, 76, 75,255,249,133,128, 31, 0, 16, 47,128, 0, 0,
/* 0x0e30 */ 128,159, 0, 44,128,191, 0, 32, 75,255,247,229,124, 96, 27,120, /* 0x0e30 */ 65,158, 0, 92,128,127, 0, 36,128,159, 0, 44,128,191, 0, 32,
/* 0x0e40 */ 144, 31, 0, 80,128, 31, 0, 80, 47,128, 0, 0, 65,158, 0, 20, /* 0x0e40 */ 75,255,247,229,124, 96, 27,120,144, 31, 0, 80,128, 31, 0, 80,
/* 0x0e50 */ 128,127, 0, 20, 56,128, 0, 0,128,191, 0, 80, 75,255,250, 49, /* 0x0e50 */ 47,128, 0, 0, 65,158, 0, 20,128,127, 0, 20, 56,128, 0, 0,
/* 0x0e60 */ 128,127, 0, 68,128,159, 0, 64,128,191, 0, 48, 75,255,244, 37, /* 0x0e60 */ 128,191, 0, 80, 75,255,250, 49,128,127, 0, 68,128,159, 0, 64,
/* 0x0e70 */ 124, 96, 27,120, 47,128, 0, 0, 65,158, 0, 12, 56, 96, 0,127, /* 0x0e70 */ 128,191, 0, 48, 75,255,244, 37,124, 96, 27,120, 47,128, 0, 0,
/* 0x0e80 */ 75,255,244, 57,129, 63, 0, 64,128, 31, 0, 76,125, 41, 2, 20, /* 0x0e80 */ 65,158, 0, 12, 56, 96, 0,127, 75,255,244, 57,129, 63, 0, 64,
/* 0x0e90 */ 128, 31, 0, 68,124, 0, 74, 20,144, 31, 0, 68,129, 63, 0, 68, /* 0x0e90 */ 128, 31, 0, 76,125, 41, 2, 20,128, 31, 0, 68,124, 0, 74, 20,
/* 0x0ea0 */ 128, 31, 0, 72,127,137, 0, 64, 64,156, 0, 64,129, 63, 0, 72, /* 0x0ea0 */ 144, 31, 0, 68,129, 63, 0, 68,128, 31, 0, 72,127,137, 0, 64,
/* 0x0eb0 */ 128, 31, 0, 68,124, 0, 72, 80,128,127, 0, 68,124, 4, 3,120, /* 0x0eb0 */ 64,156, 0, 64,129, 63, 0, 72,128, 31, 0, 68,124, 0, 72, 80,
/* 0x0ec0 */ 128,191, 0, 48, 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, /* 0x0ec0 */ 128,127, 0, 68,124, 4, 3,120,128,191, 0, 48, 56,192, 0, 50,
/* 0x0ed0 */ 75,255,243,213,124,105, 27,120,128, 31, 0, 68,127,137, 0, 0, /* 0x0ed0 */ 56,224,255,255, 57, 0, 0, 0, 75,255,243,213,124,105, 27,120,
/* 0x0ee0 */ 65,158, 0, 8, 72, 0, 0, 0,129, 63, 0, 36, 56, 9, 0, 32, /* 0x0ee0 */ 128, 31, 0, 68,127,137, 0, 0, 65,158, 0, 8, 72, 0, 0, 0,
/* 0x0ef0 */ 144, 31, 0, 36,129, 63, 0, 52, 56, 9, 0, 1,144, 31, 0, 52, /* 0x0ef0 */ 129, 63, 0, 36, 56, 9, 0, 32,144, 31, 0, 36,129, 63, 0, 52,
/* 0x0f00 */ 75,255,252,156,128, 31, 0, 24, 47,128, 0, 0, 65,158, 0, 16, /* 0x0f00 */ 56, 9, 0, 1,144, 31, 0, 52, 75,255,252,156,128, 31, 0, 24,
/* 0x0f10 */ 129, 63, 0, 24,128, 31, 0, 44,144, 9, 0, 0,129, 63, 0, 12, /* 0x0f10 */ 47,128, 0, 0, 65,158, 0, 16,129, 63, 0, 24,128, 31, 0, 44,
/* 0x0f20 */ 129, 41, 0, 24,128, 31, 0, 44,124, 9, 2, 20,124, 3, 3,120, /* 0x0f20 */ 144, 9, 0, 0,129, 63, 0, 12,129, 41, 0, 24,128, 31, 0, 44,
/* 0x0f30 */ 129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,131,235,255,252, /* 0x0f30 */ 124, 9, 2, 20,124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4,
/* 0x0f40 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,160,124, 8, 2,166, /* 0x0f40 */ 124, 8, 3,166,131,235,255,252,125, 97, 91,120, 78,128, 0, 32,
/* 0x0f50 */ 147,225, 0, 92,144, 1, 0,100,124, 63, 11,120,144,127, 0, 8, /* 0x0f50 */ 148, 33,255,160,124, 8, 2,166,147,225, 0, 92,144, 1, 0,100,
/* 0x0f60 */ 144,159, 0, 12,144,191, 0, 16,144,223, 0, 20,144,255, 0, 24, /* 0x0f60 */ 124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,
/* 0x0f70 */ 145, 31, 0, 28,145, 63, 0, 32,129, 63, 0, 8,129, 41, 0, 4, /* 0x0f70 */ 144,223, 0, 20,144,255, 0, 24,145, 31, 0, 28,145, 63, 0, 32,
/* 0x0f80 */ 56, 9, 0, 12,144, 31, 0, 36,128, 31, 0, 16,144, 31, 0, 44, /* 0x0f80 */ 129, 63, 0, 8,129, 41, 0, 4, 56, 9, 0, 12,144, 31, 0, 36,
/* 0x0f90 */ 129, 63, 0, 8,128, 9, 0, 0,144, 31, 0, 40,128, 31, 0, 8, /* 0x0f90 */ 128, 31, 0, 16,144, 31, 0, 44,129, 63, 0, 8,128, 9, 0, 0,
/* 0x0fa0 */ 144, 31, 0, 52,128, 31, 0, 12,144, 31, 0, 48, 56, 31, 0, 48, /* 0x0fa0 */ 144, 31, 0, 40,128, 31, 0, 8,144, 31, 0, 52,128, 31, 0, 12,
/* 0x0fb0 */ 57, 63, 0, 40,124, 3, 3,120,125, 36, 75,120,128,191, 0, 24, /* 0x0fb0 */ 144, 31, 0, 48, 56, 31, 0, 48, 57, 63, 0, 40,124, 3, 3,120,
/* 0x0fc0 */ 56,192, 0, 0, 75,255,244, 45,129, 63, 0, 52,128, 31, 0, 36, /* 0x0fc0 */ 125, 36, 75,120,128,191, 0, 24, 56,192, 0, 0, 75,255,244, 45,
/* 0x0fd0 */ 124, 0, 72, 80,144, 31, 0, 52,128, 31, 0, 12,144, 31, 0, 48, /* 0x0fd0 */ 129, 63, 0, 52,128, 31, 0, 36,124, 0, 72, 80,144, 31, 0, 52,
/* 0x0fe0 */ 128, 31, 0, 32,144, 31, 0, 56,129, 63, 0, 16, 56, 9, 0, 52, /* 0x0fe0 */ 128, 31, 0, 12,144, 31, 0, 48,128, 31, 0, 32,144, 31, 0, 56,
/* 0x0ff0 */ 144, 31, 0, 60, 56, 31, 0, 48, 57, 63, 0, 56,128,127, 0, 24, /* 0x0ff0 */ 129, 63, 0, 16, 56, 9, 0, 52,144, 31, 0, 60, 56, 31, 0, 48,
/* 0x1000 */ 128,159, 0, 16,124, 5, 3,120,128,223, 0, 20,125, 39, 75,120, /* 0x1000 */ 57, 63, 0, 56,128,127, 0, 24,128,159, 0, 16,124, 5, 3,120,
/* 0x1010 */ 129, 31, 0, 28, 75,255,250, 73,124, 96, 27,120,144, 31, 0, 64, /* 0x1010 */ 128,223, 0, 20,125, 39, 75,120,129, 31, 0, 28, 75,255,250, 73,
/* 0x1020 */ 128,127, 0, 20, 56,128, 0, 9,128,191, 0, 64, 75,255,248, 97, /* 0x1020 */ 124, 96, 27,120,144, 31, 0, 64,128,127, 0, 20, 56,128, 0, 9,
/* 0x1030 */ 56, 0, 0, 0,144, 31, 0, 68,129, 63, 0, 16, 56, 9, 0, 52, /* 0x1030 */ 128,191, 0, 64, 75,255,248, 97, 56, 0, 0, 0,144, 31, 0, 68,
/* 0x1040 */ 144, 31, 0, 60,129, 63, 0, 16,160, 9, 0, 44, 84, 9, 4, 62, /* 0x1040 */ 129, 63, 0, 16, 56, 9, 0, 52,144, 31, 0, 60,129, 63, 0, 16,
/* 0x1050 */ 128, 31, 0, 68,127,137, 0, 0, 64,157, 0,208,129, 63, 0, 60, /* 0x1050 */ 160, 9, 0, 44, 84, 9, 4, 62,128, 31, 0, 68,127,137, 0, 0,
/* 0x1060 */ 128, 9, 0, 0, 47,128, 0, 3, 64,158, 0,164,129, 63, 0, 60, /* 0x1060 */ 64,157, 0,208,129, 63, 0, 60,128, 9, 0, 0, 47,128, 0, 3,
/* 0x1070 */ 129, 41, 0, 8,128, 31, 0, 56,124, 9, 2, 20,124, 3, 3,120, /* 0x1070 */ 64,158, 0,164,129, 63, 0, 60,129, 41, 0, 8,128, 31, 0, 56,
/* 0x1080 */ 56,128, 0, 0, 56,160, 0, 0, 75,255,242, 89,124, 96, 27,120, /* 0x1080 */ 124, 9, 2, 20,124, 3, 3,120, 56,128, 0, 0, 56,160, 0, 0,
/* 0x1090 */ 144, 31, 0, 72,128, 31, 0, 72, 47,128, 0, 0, 64,156, 0, 8, /* 0x1090 */ 75,255,242, 89,124, 96, 27,120,144, 31, 0, 72,128, 31, 0, 72,
/* 0x10a0 */ 72, 0, 0, 32,128,127, 0, 72,128,159, 0, 16, 56,160, 2, 0, /* 0x10a0 */ 47,128, 0, 0, 64,156, 0, 8, 72, 0, 0, 32,128,127, 0, 72,
/* 0x10b0 */ 75,255,242, 41,124, 96, 27,120, 47,128, 2, 0, 65,158, 0, 12, /* 0x10b0 */ 128,159, 0, 16, 56,160, 2, 0, 75,255,242, 41,124, 96, 27,120,
/* 0x10c0 */ 56, 96, 0,127, 75,255,241,245, 56, 31, 0, 56,128,127, 0, 72, /* 0x10c0 */ 47,128, 2, 0, 65,158, 0, 12, 56, 96, 0,127, 75,255,241,245,
/* 0x10d0 */ 128,159, 0, 16, 56,160, 0, 0,128,223, 0, 20,124, 7, 3,120, /* 0x10d0 */ 56, 31, 0, 56,128,127, 0, 72,128,159, 0, 16, 56,160, 0, 0,
/* 0x10e0 */ 57, 0, 0, 0, 75,255,249,121,124, 96, 27,120,144, 31, 0, 64, /* 0x10e0 */ 128,223, 0, 20,124, 7, 3,120, 57, 0, 0, 0, 75,255,249,121,
/* 0x10f0 */ 128,127, 0, 20, 56,128, 0, 7,128,191, 0, 56, 75,255,247,145, /* 0x10f0 */ 124, 96, 27,120,144, 31, 0, 64,128,127, 0, 20, 56,128, 0, 7,
/* 0x1100 */ 128,127, 0, 72, 75,255,241,229, 72, 0, 0, 32,129, 63, 0, 60, /* 0x1100 */ 128,191, 0, 56, 75,255,247,145,128,127, 0, 72, 75,255,241,229,
/* 0x1110 */ 56, 9, 0, 32,144, 31, 0, 60,129, 63, 0, 68, 56, 9, 0, 1, /* 0x1110 */ 72, 0, 0, 32,129, 63, 0, 60, 56, 9, 0, 32,144, 31, 0, 60,
/* 0x1120 */ 144, 31, 0, 68, 75,255,255, 32,128, 31, 0, 64,124, 3, 3,120, /* 0x1120 */ 129, 63, 0, 68, 56, 9, 0, 1,144, 31, 0, 68, 75,255,255, 32,
/* 0x1130 */ 129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,131,235,255,252, /* 0x1130 */ 128, 31, 0, 64,124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4,
/* 0x1140 */ 125, 97, 91,120, 78,128, 0, 32 /* 0x1140 */ 124, 8, 3,166,131,235,255,252,125, 97, 91,120, 78,128, 0, 32
}; };
+188 -187
View File
@@ -1,5 +1,5 @@
/* powerpc64-linux.elf-fold.h /* powerpc64-linux.elf-fold.h
created from powerpc64-linux.elf-fold.bin, 3504 (0xdb0) bytes created from powerpc64-linux.elf-fold.bin, 3512 (0xdb8) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -32,21 +32,21 @@
/* clang-format off */ /* clang-format off */
#define STUB_POWERPC64_LINUX_ELF_FOLD_SIZE 3504 #define STUB_POWERPC64_LINUX_ELF_FOLD_SIZE 3512
#define STUB_POWERPC64_LINUX_ELF_FOLD_ADLER32 0x74d9b80b #define STUB_POWERPC64_LINUX_ELF_FOLD_ADLER32 0x9e5bb7c9
#define STUB_POWERPC64_LINUX_ELF_FOLD_CRC32 0xd69d0996 #define STUB_POWERPC64_LINUX_ELF_FOLD_CRC32 0x13fbb209
unsigned char stub_powerpc64_linux_elf_fold[3504] = { unsigned char stub_powerpc64_linux_elf_fold[3512] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0000 */ 127, 69, 76, 70, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 2, 0, 21, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 13, 96, /* 0x0010 */ 0, 2, 0, 21, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 13,104,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 1, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 1, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0040 */ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0050 */ 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, /* 0x0050 */ 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 13, 96, 0, 0, 0, 0, 0, 0, 13, 96, /* 0x0060 */ 0, 0, 0, 0, 0, 0, 13,104, 0, 0, 0, 0, 0, 0, 13,104,
/* 0x0070 */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, /* 0x0070 */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6,
/* 0x0080 */ 0, 0, 0, 0, 0, 0, 13, 96, 0, 0, 0, 0, 0, 16, 13, 96, /* 0x0080 */ 0, 0, 0, 0, 0, 0, 13,104, 0, 0, 0, 0, 0, 16, 13,104,
/* 0x0090 */ 0, 0, 0, 0, 0, 16, 13, 96, 0, 0, 0, 0, 0, 0, 0, 80, /* 0x0090 */ 0, 0, 0, 0, 0, 16, 13,104, 0, 0, 0, 0, 0, 0, 0, 80,
/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 1, 0, 0, /* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 1, 0, 0,
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 96,255,248, /* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 96,255,248,
/* 0x00c0 */ 120, 99, 77,164, 78,128, 0, 32, 96, 0, 0, 0, 72, 0, 0,125, /* 0x00c0 */ 120, 99, 77,164, 78,128, 0, 32, 96, 0, 0, 0, 72, 0, 0,125,
@@ -63,9 +63,9 @@ unsigned char stub_powerpc64_linux_elf_fold[3504] = {
/* 0x0170 */ 248, 3, 0, 9,232, 4, 0, 8, 43,160, 0, 0,248, 3, 0, 8, /* 0x0170 */ 248, 3, 0, 9,232, 4, 0, 8, 43,160, 0, 0,248, 3, 0, 8,
/* 0x0180 */ 232, 4, 0, 17,248, 3, 0, 17, 64,158,255,236, 58,163, 0, 8, /* 0x0180 */ 232, 4, 0, 17,248, 3, 0, 17, 64,158,255,236, 58,163, 0, 8,
/* 0x0190 */ 126,154,168, 80,128, 22, 0,100, 58,100, 0, 8,148, 3, 0, 8, /* 0x0190 */ 126,154,168, 80,128, 22, 0,100, 58,100, 0, 8,148, 3, 0, 8,
/* 0x01a0 */ 58, 67, 0, 4, 56,128, 0, 0, 56,118, 0,104, 72, 0, 2, 49, /* 0x01a0 */ 58, 67, 0, 4, 56,128, 0, 0, 56,118, 0,104, 72, 0, 2, 57,
/* 0x01b0 */ 124,123, 27,120, 56,160, 15,255,126, 68,147,120, 56,118, 0,104, /* 0x01b0 */ 124,123, 27,120, 56,160, 15,255,126, 68,147,120, 56,118, 0,104,
/* 0x01c0 */ 72, 0, 2, 13, 56,178,255,252, 44, 35, 0, 0, 65,129, 0, 12, /* 0x01c0 */ 72, 0, 2, 21, 56,178,255,252, 44, 35, 0, 0, 65,129, 0, 12,
/* 0x01d0 */ 56,182, 0,100, 56, 96, 0, 12, 56, 99, 0, 4,124,133, 26, 20, /* 0x01d0 */ 56,182, 0,100, 56, 96, 0, 12, 56, 99, 0, 4,124,133, 26, 20,
/* 0x01e0 */ 124,105, 3,166,126, 99,155,120, 56,160, 0, 0,156,163,255,255, /* 0x01e0 */ 124,105, 3,166,126, 99,155,120, 56,160, 0, 0,156,163,255,255,
/* 0x01f0 */ 140, 4,255,255,156, 3,255,255, 66, 0,255,248,248,122,255,240, /* 0x01f0 */ 140, 4,255,255,156, 3,255,255, 66, 0,255,248,248,122,255,240,
@@ -77,183 +77,184 @@ unsigned char stub_powerpc64_linux_elf_fold[3504] = {
/* 0x0250 */ 126,228,187,120, 56,161, 0,144,127, 70,211,120,127,231,251,120, /* 0x0250 */ 126,228,187,120, 56,161, 0,144,127, 70,211,120,127,231,251,120,
/* 0x0260 */ 126,200,179,120, 56, 0, 0, 0,248,225, 0,112, 56,225, 0,112, /* 0x0260 */ 126,200,179,120, 56, 0, 0, 0,248,225, 0,112, 56,225, 0,112,
/* 0x0270 */ 248, 1, 0,120,249, 1, 0,128, 57, 1, 0,128,248, 1, 0,136, /* 0x0270 */ 248, 1, 0,120,249, 1, 0,128, 57, 1, 0,128,248, 1, 0,136,
/* 0x0280 */ 127,202,243,120, 72, 0, 8,197, 56, 33, 8,144,126,162,171,120, /* 0x0280 */ 127,202,243,120, 72, 0, 8,205, 56, 33, 8,144,126,162,171,120,
/* 0x0290 */ 112, 96, 0, 7, 64,130, 0, 36,128, 3, 0, 0, 40, 0, 0, 0, /* 0x0290 */ 112, 96, 0, 7, 64,130, 0, 36,128, 3, 0, 0, 40, 0, 0, 0,
/* 0x02a0 */ 64,130, 0, 24,232, 1, 1,136,232, 67, 0, 8,124, 66, 2, 20, /* 0x02a0 */ 64,130, 0, 24,232, 1, 1,136,232, 67, 0, 8,124, 66, 2, 20,
/* 0x02b0 */ 232, 99, 0, 0,124, 99, 2, 20,248,117, 0, 0,124,127, 27,120, /* 0x02b0 */ 232, 99, 0, 0,124, 99, 2, 20,248,117, 0, 0,124,127, 27,120,
/* 0x02c0 */ 232,153, 0,160,127, 35,203,120, 72, 0, 0,253,127, 35,203,120, /* 0x02c0 */ 232,153, 0,160,127, 35,203,120, 72, 0, 1, 5,127, 35,203,120,
/* 0x02d0 */ 72, 0, 1, 29, 57, 0, 0, 0,127,103,219,120, 56,192, 0, 2, /* 0x02d0 */ 72, 0, 1, 37, 57, 0, 0, 0,127,103,219,120, 44, 7, 0, 0,
/* 0x02e0 */ 56,160, 0, 1,124,158, 0,208, 56, 96, 0, 0, 72, 0, 0,161, /* 0x02e0 */ 65,128, 0, 32, 56,192, 0, 2, 56,160, 0, 1,124,158, 0,208,
/* 0x02f0 */ 127, 99,219,120, 72, 0, 0,241,232, 21,255,248,124, 9, 3,166, /* 0x02f0 */ 56, 96, 0, 0, 72, 0, 0,161,127, 99,219,120, 72, 0, 0,241,
/* 0x0300 */ 232, 21, 0, 0,248, 1, 1,128,127,163,235,120,127,132,227,120, /* 0x0300 */ 232, 21,255,248,124, 9, 3,166,232, 21, 0, 0,248, 1, 1,128,
/* 0x0310 */ 56, 0, 0, 91,127,232, 3,166,232,161, 0,176,232,193, 0,184, /* 0x0310 */ 127,163,235,120,127,132,227,120, 56, 0, 0, 91,127,232, 3,166,
/* 0x0320 */ 232,225, 0,192,233, 1, 0,200,233, 33, 0,208,233, 65, 0,216, /* 0x0320 */ 232,161, 0,176,232,193, 0,184,232,225, 0,192,233, 1, 0,200,
/* 0x0330 */ 233, 97, 0,224,233,129, 0,232,233,161, 0,240,233,193, 0,248, /* 0x0330 */ 233, 33, 0,208,233, 65, 0,216,233, 97, 0,224,233,129, 0,232,
/* 0x0340 */ 233,225, 1, 0,234, 1, 1, 8,234, 33, 1, 16,234, 65, 1, 24, /* 0x0340 */ 233,161, 0,240,233,193, 0,248,233,225, 1, 0,234, 1, 1, 8,
/* 0x0350 */ 234, 97, 1, 32,234,129, 1, 40,234,161, 1, 48,234,193, 1, 56, /* 0x0350 */ 234, 33, 1, 16,234, 65, 1, 24,234, 97, 1, 32,234,129, 1, 40,
/* 0x0360 */ 234,225, 1, 64,235, 1, 1, 72,235, 33, 1, 80,235, 65, 1, 88, /* 0x0360 */ 234,161, 1, 48,234,193, 1, 56,234,225, 1, 64,235, 1, 1, 72,
/* 0x0370 */ 235, 97, 1, 96,235,129, 1,104,235,161, 1,112,235,193, 1,120, /* 0x0370 */ 235, 33, 1, 80,235, 65, 1, 88,235, 97, 1, 96,235,129, 1,104,
/* 0x0380 */ 235,225, 1,128, 56, 33, 1,144, 78,128, 4, 32,120,231, 0, 32, /* 0x0380 */ 235,161, 1,112,235,193, 1,120,235,225, 1,128, 56, 33, 1,144,
/* 0x0390 */ 56, 0, 0, 90, 68, 0, 0, 2, 64,227, 0, 8, 56, 96,255,255, /* 0x0390 */ 78,128, 4, 32,120,231, 0, 32, 56, 0, 0, 90, 68, 0, 0, 2,
/* 0x03a0 */ 78,128, 0, 32, 56, 0, 15,255,124, 96, 0, 56,124, 96, 24, 80, /* 0x03a0 */ 64,227, 0, 8, 56, 96,255,255, 78,128, 0, 32, 56, 0, 15,255,
/* 0x03b0 */ 124,132, 2, 20, 56, 0, 0,125, 72, 0, 0, 16, 56, 0, 0, 1, /* 0x03b0 */ 124, 96, 0, 56,124, 96, 24, 80,124,132, 2, 20, 56, 0, 0,125,
/* 0x03c0 */ 72, 0, 0, 8, 56, 0, 0, 45, 72, 0, 0, 8, 56, 0, 0, 85, /* 0x03c0 */ 72, 0, 0, 16, 56, 0, 0, 1, 72, 0, 0, 8, 56, 0, 0, 45,
/* 0x03d0 */ 72, 0, 0, 8, 56, 0, 0, 3, 72, 0, 0, 8, 56, 0, 0, 5, /* 0x03d0 */ 72, 0, 0, 8, 56, 0, 0, 85, 72, 0, 0, 8, 56, 0, 0, 3,
/* 0x03e0 */ 72, 0, 0, 8, 56, 0, 0, 6, 72, 0, 0, 8, 56, 0, 0, 91, /* 0x03e0 */ 72, 0, 0, 8, 56, 0, 0, 5, 72, 0, 0, 8, 56, 0, 0, 6,
/* 0x03f0 */ 75,255,255,164,124,128, 0, 8, 78,128, 0, 32,233, 67, 0, 0, /* 0x03f0 */ 72, 0, 0, 8, 56, 0, 0, 91, 75,255,255,164,124,128, 0, 8,
/* 0x0400 */ 233, 3, 0, 8, 56,229, 0, 1, 57, 32, 0, 0,124,233, 3,166, /* 0x0400 */ 78,128, 0, 32,233, 67, 0, 0,233, 3, 0, 8, 56,229, 0, 1,
/* 0x0410 */ 127,170, 40, 64, 64,252, 0, 28,124, 8, 2,166, 56, 96, 0,127, /* 0x0410 */ 57, 32, 0, 0,124,233, 3,166,127,170, 40, 64, 64,252, 0, 28,
/* 0x0420 */ 248, 1, 0, 16,248, 33,255,145, 75,255,255,149, 96, 0, 0, 0, /* 0x0420 */ 124, 8, 2,166, 56, 96, 0,127,248, 1, 0, 16,248, 33,255,145,
/* 0x0430 */ 66, 64, 0, 20,125, 72, 72,174,125, 68, 73,174, 57, 41, 0, 1, /* 0x0430 */ 75,255,255,149, 96, 0, 0, 0, 66, 64, 0, 20,125, 72, 72,174,
/* 0x0440 */ 75,255,255,240,233, 67, 0, 8,125, 74, 74, 20,249, 67, 0, 8, /* 0x0440 */ 125, 68, 73,174, 57, 41, 0, 1, 75,255,255,240,233, 67, 0, 8,
/* 0x0450 */ 233, 67, 0, 0,125, 41, 80, 80,249, 35, 0, 0, 78,128, 0, 32, /* 0x0450 */ 125, 74, 74, 20,249, 67, 0, 8,233, 67, 0, 0,125, 41, 80, 80,
/* 0x0460 */ 0, 0, 0, 0, 0, 0, 0, 1,128, 0, 0, 0,125,128, 0, 38, /* 0x0460 */ 249, 35, 0, 0, 78,128, 0, 32, 0, 0, 0, 0, 0, 0, 0, 1,
/* 0x0470 */ 124, 8, 2,166,145,129, 0, 8, 72, 0, 8,125,248, 33,255, 81, /* 0x0470 */ 128, 0, 0, 0,125,128, 0, 38,124, 8, 2,166,145,129, 0, 8,
/* 0x0480 */ 124,126, 27,120,124,159, 35,120,124,189, 43,120,124,220, 51,120, /* 0x0480 */ 72, 0, 8,125,248, 33,255, 81,124,126, 27,120,124,159, 35,120,
/* 0x0490 */ 46, 38, 0, 0,233, 63, 0, 0, 47,169, 0, 0, 65,158, 1, 84, /* 0x0490 */ 124,189, 43,120,124,220, 51,120, 46, 38, 0, 0,233, 63, 0, 0,
/* 0x04a0 */ 127,195,243,120, 56,129, 0,112, 56,160, 0, 12, 75,255,255, 81, /* 0x04a0 */ 47,169, 0, 0, 65,158, 1, 84,127,195,243,120, 56,129, 0,112,
/* 0x04b0 */ 129, 65, 0,112,129, 33, 0,116, 47,170, 0, 0, 64,158, 0, 32, /* 0x04b0 */ 56,160, 0, 12, 75,255,255, 81,129, 65, 0,112,129, 33, 0,116,
/* 0x04c0 */ 109, 37, 33, 88, 47,133, 80, 85, 64,158, 0, 28,233, 62, 0, 0, /* 0x04c0 */ 47,170, 0, 0, 64,158, 0, 32,109, 37, 33, 88, 47,133, 80, 85,
/* 0x04d0 */ 47,169, 0, 0, 65,254, 1, 28, 72, 0, 0, 12,121, 41, 0, 33, /* 0x04d0 */ 64,158, 0, 28,233, 62, 0, 0, 47,169, 0, 0, 65,254, 1, 28,
/* 0x04e0 */ 64,226, 0, 16, 56, 96, 0,127, 75,255,254,213, 96, 0, 0, 0, /* 0x04e0 */ 72, 0, 0, 12,121, 41, 0, 33, 64,226, 0, 16, 56, 96, 0,127,
/* 0x04f0 */ 127, 9, 80, 64, 65,217,255,240,233, 31, 0, 0,127,170, 64, 64, /* 0x04f0 */ 75,255,254,213, 96, 0, 0, 0,127, 9, 80, 64, 65,217,255,240,
/* 0x0500 */ 65,221,255,228,232,191, 0, 8, 64,152, 0,184,125, 36, 75,120, /* 0x0500 */ 233, 31, 0, 0,127,170, 64, 64, 65,221,255,228,232,191, 0, 8,
/* 0x0510 */ 233, 61, 0, 0,232,126, 0, 8, 56,193, 0,128,249, 65, 0,128, /* 0x0510 */ 64,152, 0,184,125, 36, 75,120,233, 61, 0, 0,232,126, 0, 8,
/* 0x0520 */ 248, 65, 0, 40,136,225, 0,120,233,125, 0, 16,125, 41, 3,166, /* 0x0520 */ 56,193, 0,128,249, 65, 0,128,248, 65, 0, 40,136,225, 0,120,
/* 0x0530 */ 232, 93, 0, 8, 78,128, 4, 33,232, 65, 0, 40, 47,163, 0, 0, /* 0x0530 */ 233,125, 0, 16,125, 41, 3,166,232, 93, 0, 8, 78,128, 4, 33,
/* 0x0540 */ 64,222,255,164,232,129, 0,128,129, 33, 0,112,127,164, 72, 64, /* 0x0540 */ 232, 65, 0, 40, 47,163, 0, 0, 64,222,255,164,232,129, 0,128,
/* 0x0550 */ 64,222,255,148,136,193, 0,121, 47,166, 0, 0, 65,158, 0, 68, /* 0x0550 */ 129, 33, 0,112,127,164, 72, 64, 64,222,255,148,136,193, 0,121,
/* 0x0560 */ 65,146, 0, 64, 43,164, 2, 0, 65,157, 0, 16,233, 63, 0, 0, /* 0x0560 */ 47,166, 0, 0, 65,158, 0, 68, 65,146, 0, 64, 43,164, 2, 0,
/* 0x0570 */ 127,169, 32, 0, 64,158, 0, 44,232,127, 0, 8,136,161, 0,122, /* 0x0570 */ 65,157, 0, 16,233, 63, 0, 0,127,169, 32, 0, 64,158, 0, 44,
/* 0x0580 */ 120,132, 0, 32,248, 65, 0, 40,233, 60, 0, 0,233,124, 0, 16, /* 0x0580 */ 232,127, 0, 8,136,161, 0,122,120,132, 0, 32,248, 65, 0, 40,
/* 0x0590 */ 125, 41, 3,166,232, 92, 0, 8, 78,128, 4, 33,232, 65, 0, 40, /* 0x0590 */ 233, 60, 0, 0,233,124, 0, 16,125, 41, 3,166,232, 92, 0, 8,
/* 0x05a0 */ 129, 1, 0,116,233, 94, 0, 8,233, 62, 0, 0,125, 74, 66, 20, /* 0x05a0 */ 78,128, 4, 33,232, 65, 0, 40,129, 1, 0,116,233, 94, 0, 8,
/* 0x05b0 */ 125, 40, 72, 80,249, 94, 0, 8,249, 62, 0, 0, 72, 0, 0, 20, /* 0x05b0 */ 233, 62, 0, 0,125, 74, 66, 20,125, 40, 72, 80,249, 94, 0, 8,
/* 0x05c0 */ 124,164, 43,120,127,195,243,120,125, 37, 75,120, 75,255,254, 49, /* 0x05c0 */ 249, 62, 0, 0, 72, 0, 0, 20,124,164, 43,120,127,195,243,120,
/* 0x05d0 */ 129, 1, 0,112,233, 95, 0, 8,233, 63, 0, 0,125, 74, 66, 20, /* 0x05d0 */ 125, 37, 75,120, 75,255,254, 49,129, 1, 0,112,233, 95, 0, 8,
/* 0x05e0 */ 125, 40, 72, 80,249, 95, 0, 8,249, 63, 0, 0, 75,255,254,168, /* 0x05e0 */ 233, 63, 0, 0,125, 74, 66, 20,125, 40, 72, 80,249, 95, 0, 8,
/* 0x05f0 */ 56, 33, 0,176,129,129, 0, 8,125,144,129, 32, 72, 0, 7, 72, /* 0x05f0 */ 249, 63, 0, 0, 75,255,254,168, 56, 33, 0,176,129,129, 0, 8,
/* 0x0600 */ 0, 0, 0, 0, 0, 0, 0, 3,128, 4, 0, 0, 44, 35, 0, 0, /* 0x0600 */ 125,144,129, 32, 72, 0, 7, 72, 0, 0, 0, 0, 0, 0, 0, 3,
/* 0x0610 */ 77,130, 0, 32,120,105, 7,225, 76,130, 0, 32, 47, 36, 0, 0, /* 0x0610 */ 128, 4, 0, 0, 44, 35, 0, 0, 77,130, 0, 32,120,105, 7,225,
/* 0x0620 */ 233, 67, 0, 0,127,170, 32, 64, 64,158, 0, 16,248,131, 0, 0, /* 0x0620 */ 76,130, 0, 32, 47, 36, 0, 0,233, 67, 0, 0,127,170, 32, 64,
/* 0x0630 */ 248,163, 0, 8, 78,128, 0, 32, 43,170, 0, 1, 64,158, 0, 12, /* 0x0630 */ 64,158, 0, 16,248,131, 0, 0,248,163, 0, 8, 78,128, 0, 32,
/* 0x0640 */ 65,154, 0, 16, 75,255,255,232, 47,170, 0, 0, 77,158, 0, 32, /* 0x0640 */ 43,170, 0, 1, 64,158, 0, 12, 65,154, 0, 16, 75,255,255,232,
/* 0x0650 */ 56, 99, 0, 16, 75,255,255,204, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0650 */ 47,170, 0, 0, 77,158, 0, 32, 56, 99, 0, 16, 75,255,255,204,
/* 0x0660 */ 0, 0, 0, 0,124, 8, 2,166,125,128, 0, 38, 72, 0, 6, 81, /* 0x0660 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124, 8, 2,166,
/* 0x0670 */ 125, 53, 75,120,233, 35, 0, 32,125, 14, 67,120,161, 3, 0, 16, /* 0x0670 */ 125,128, 0, 38, 72, 0, 6, 81,125, 53, 75,120,233, 35, 0, 32,
/* 0x0680 */ 125, 94, 83,120,124,124, 27,120,145,129, 0, 8,248, 33,254,193, /* 0x0680 */ 125, 14, 67,120,161, 3, 0, 16,125, 94, 83,120,124,124, 27,120,
/* 0x0690 */ 46, 36, 0, 0,124,176, 43,120,124,216, 51,120,233, 85, 0, 0, /* 0x0690 */ 145,129, 0, 8,248, 33,254,193, 46, 36, 0, 0,124,176, 43,120,
/* 0x06a0 */ 124,239, 59,120,126, 67, 74, 20,124,145, 35,120, 65,146, 0, 88, /* 0x06a0 */ 124,216, 51,120,233, 85, 0, 0,124,239, 59,120,126, 67, 74, 20,
/* 0x06b0 */ 232,234, 0, 32, 85, 8, 4, 62, 47,136, 0, 2,124,234, 58, 20, /* 0x06b0 */ 124,145, 35,120, 65,146, 0, 88,232,234, 0, 32, 85, 8, 4, 62,
/* 0x06c0 */ 232,103, 0, 72,124, 99, 80, 80, 64,158, 0, 8,232,103, 0, 16, /* 0x06c0 */ 47,136, 0, 2,124,234, 58, 20,232,103, 0, 72,124, 99, 80, 80,
/* 0x06d0 */ 232,135, 0, 40, 56,160, 0, 0, 56,192, 0, 50, 56,224,255,255, /* 0x06d0 */ 64,158, 0, 8,232,103, 0, 16,232,135, 0, 40, 56,160, 0, 0,
/* 0x06e0 */ 57, 0, 0, 0, 75,255,252,169, 96, 0, 0, 0,161, 92, 0, 16, /* 0x06e0 */ 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, 75,255,252,169,
/* 0x06f0 */ 59,224, 0, 0, 47,138, 0, 2, 65,158, 0,220,124,127, 27,120, /* 0x06f0 */ 96, 0, 0, 0,161, 92, 0, 16, 59,224, 0, 0, 47,138, 0, 2,
/* 0x0700 */ 72, 0, 0,212, 85, 8, 4, 62, 56,224, 0, 16, 47,136, 0, 3, /* 0x0700 */ 65,158, 0,220,124,127, 27,120, 72, 0, 0,212, 85, 8, 4, 62,
/* 0x0710 */ 64,158, 0, 8, 56,224, 0, 0,160,188, 0, 56, 56,231, 0, 34, /* 0x0710 */ 56,224, 0, 16, 47,136, 0, 3, 64,158, 0, 8, 56,224, 0, 0,
/* 0x0720 */ 125, 67, 83,120,120,230, 0, 32,126, 68,147,120, 56,165, 0, 1, /* 0x0720 */ 160,188, 0, 56, 56,231, 0, 34,125, 67, 83,120,120,230, 0, 32,
/* 0x0730 */ 57, 0, 0, 0,124,169, 3,166, 59,224,255,255, 66, 64, 0, 60, /* 0x0730 */ 126, 68,147,120, 56,165, 0, 1, 57, 0, 0, 0,124,169, 3,166,
/* 0x0740 */ 128,164, 0, 0, 47,133, 0, 1, 64,158, 0, 40,233,100, 0, 16, /* 0x0740 */ 59,224,255,255, 66, 64, 0, 60,128,164, 0, 0, 47,133, 0, 1,
/* 0x0750 */ 127,191, 88, 64, 64,157, 0, 8,125,127, 91,120,232,164, 0, 40, /* 0x0750 */ 64,158, 0, 40,233,100, 0, 16,127,191, 88, 64, 64,157, 0, 8,
/* 0x0760 */ 124,171, 42, 20,127,168, 40, 64, 64,156, 0, 8,124,168, 43,120, /* 0x0760 */ 125,127, 91,120,232,164, 0, 40,124,171, 42, 20,127,168, 40, 64,
/* 0x0770 */ 56,132, 0, 56, 75,255,255,200,127,196,240,248,127,255,240, 56, /* 0x0770 */ 64,156, 0, 8,124,168, 43,120, 56,132, 0, 56, 75,255,255,200,
/* 0x0780 */ 125, 4, 66, 20,120,233,231,227,125, 31, 64, 80,125, 4,240, 56, /* 0x0780 */ 127,196,240,248,127,255,240, 56,125, 4, 66, 20,120,233,231,227,
/* 0x0790 */ 64,130, 0, 28, 47,191, 0, 0, 64,158, 0, 28, 47,170, 0, 0, /* 0x0790 */ 125, 31, 64, 80,125, 4,240, 56, 64,130, 0, 28, 47,191, 0, 0,
/* 0x07a0 */ 65,158, 0, 24, 56,192, 0, 50, 72, 0, 0, 16,127,227,251,120, /* 0x07a0 */ 64,158, 0, 28, 47,170, 0, 0, 65,158, 0, 24, 56,192, 0, 50,
/* 0x07b0 */ 72, 0, 0, 8, 56, 96, 0, 0, 56,160, 0, 0,124,198, 7,180, /* 0x07b0 */ 72, 0, 0, 16,127,227,251,120, 72, 0, 0, 8, 56, 96, 0, 0,
/* 0x07c0 */ 56,224,255,255, 57, 0, 0, 0, 75,255,251,197, 96, 0, 0, 0, /* 0x07c0 */ 56,160, 0, 0,124,198, 7,180, 56,224,255,255, 57, 0, 0, 0,
/* 0x07d0 */ 127,255, 24, 80, 57, 63, 0,120,127,211,240,248,249, 33, 0,144, /* 0x07d0 */ 75,255,251,197, 96, 0, 0, 0,127,255, 24, 80, 57, 63, 0,120,
/* 0x07e0 */ 123, 9, 7,164,127,222,240,248,249, 33, 0,152,251,193, 0,136, /* 0x07e0 */ 127,211,240,248,249, 33, 0,144,123, 9, 7,164,127,222,240,248,
/* 0x07f0 */ 57, 63, 0, 3, 62,224, 0, 1,249, 33, 0,160,122,247,131,228, /* 0x07f0 */ 249, 33, 0,152,251,193, 0,136, 57, 63, 0, 3, 62,224, 0, 1,
/* 0x0800 */ 59, 32, 0, 0, 98,247, 0, 1,161, 92, 0, 56,127,138,200, 0, /* 0x0800 */ 249, 33, 0,160,122,247,131,228, 59, 32, 0, 0, 98,247, 0, 1,
/* 0x0810 */ 64,157, 2,248,129, 82, 0, 0, 65,146, 0, 36, 47,138, 0, 6, /* 0x0810 */ 161, 92, 0, 56,127,138,200, 0, 64,157, 2,248,129, 82, 0, 0,
/* 0x0820 */ 64,158, 0, 28,232,178, 0, 16,127, 3,195,120, 56,128, 0, 3, /* 0x0820 */ 65,146, 0, 36, 47,138, 0, 6, 64,158, 0, 28,232,178, 0, 16,
/* 0x0830 */ 124,191, 42, 20, 75,255,253,217, 72, 0, 2,192, 47,138, 0, 1, /* 0x0830 */ 127, 3,195,120, 56,128, 0, 3,124,191, 42, 20, 75,255,253,217,
/* 0x0840 */ 64,158, 2,184,233, 82, 0, 40, 47,170, 0, 0, 65,158, 2,172, /* 0x0840 */ 72, 0, 2,192, 47,138, 0, 1, 64,158, 2,184,233, 82, 0, 40,
/* 0x0850 */ 131, 82, 0, 4, 61, 32,115, 81, 97, 41, 98, 64, 87, 90, 22,250, /* 0x0850 */ 47,170, 0, 0, 65,158, 2,172,131, 82, 0, 4, 61, 32,115, 81,
/* 0x0860 */ 125, 58,212, 48, 87, 84, 7,126,122,137, 0, 32,249, 33, 0,128, /* 0x0860 */ 97, 41, 98, 64, 87, 90, 22,250,125, 58,212, 48, 87, 84, 7,126,
/* 0x0870 */ 65,146, 0, 76,233, 82, 0, 8, 47,170, 0, 0, 64,158, 0, 64, /* 0x0870 */ 122,137, 0, 32,249, 33, 0,128, 65,146, 0, 76,233, 82, 0, 8,
/* 0x0880 */ 233, 92, 0, 32,232,178, 0, 16,127, 3,195,120, 56,128, 0, 3, /* 0x0880 */ 47,170, 0, 0, 64,158, 0, 64,233, 92, 0, 32,232,178, 0, 16,
/* 0x0890 */ 125, 95, 82, 20,124,170, 42, 20, 75,255,253,117,160,188, 0, 56, /* 0x0890 */ 127, 3,195,120, 56,128, 0, 3,125, 95, 82, 20,124,170, 42, 20,
/* 0x08a0 */ 127, 3,195,120, 56,128, 0, 5, 75,255,253,101,160,188, 0, 54, /* 0x08a0 */ 75,255,253,117,160,188, 0, 56,127, 3,195,120, 56,128, 0, 5,
/* 0x08b0 */ 127, 3,195,120, 56,128, 0, 4, 75,255,253, 85,235,210, 0, 16, /* 0x08b0 */ 75,255,253,101,160,188, 0, 54,127, 3,195,120, 56,128, 0, 4,
/* 0x08c0 */ 235,114, 0, 32,234,210, 0, 40,233, 33, 0,136,127,223,242, 20, /* 0x08c0 */ 75,255,253, 85,235,210, 0, 16,235,114, 0, 32,234,210, 0, 40,
/* 0x08d0 */ 251, 97, 0,112,127,200,152, 56,127,190,218, 20,251,193, 0,120, /* 0x08d0 */ 233, 33, 0,136,127,223,242, 20,251, 97, 0,112,127,200,152, 56,
/* 0x08e0 */ 121, 8, 0, 32,126,222,178, 20,127,104,218, 20,127,200,240, 80, /* 0x08e0 */ 127,190,218, 20,251,193, 0,120,121, 8, 0, 32,126,222,178, 20,
/* 0x08f0 */ 125, 94,218, 20,125, 74, 0,208,125, 74, 72, 56,127,106,218, 20, /* 0x08f0 */ 127,104,218, 20,127,200,240, 80,125, 94,218, 20,125, 74, 0,208,
/* 0x0900 */ 64,146, 0, 12, 56,160, 0, 0, 72, 0, 0, 8, 56,160, 0, 2, /* 0x0900 */ 125, 74, 72, 56,127,106,218, 20, 64,146, 0, 12, 56,160, 0, 0,
/* 0x0910 */ 124,165,163,120, 64,146, 0, 16, 57, 64,255,255,121, 74, 0, 32, /* 0x0910 */ 72, 0, 0, 8, 56,160, 0, 2,124,165,163,120, 64,146, 0, 16,
/* 0x0920 */ 72, 0, 0, 16, 61, 64,255,255, 97, 74,255,251,121, 74, 0, 32, /* 0x0920 */ 57, 64,255,255,121, 74, 0, 32, 72, 0, 0, 16, 61, 64,255,255,
/* 0x0930 */ 125, 69, 40, 56, 64,146, 0, 16,126, 7,131,120, 56,192, 0, 18, /* 0x0930 */ 97, 74,255,251,121, 74, 0, 32,125, 69, 40, 56, 64,146, 0, 16,
/* 0x0940 */ 72, 0, 0, 12, 56,192, 0, 50, 56,224,255,255,233, 82, 0, 8, /* 0x0940 */ 126, 7,131,120, 56,192, 0, 18, 72, 0, 0, 12, 56,192, 0, 50,
/* 0x0950 */ 127,195,243,120,127,100,219,120,125, 8, 80, 80, 75,255,250, 49, /* 0x0950 */ 56,224,255,255,233, 82, 0, 8,127,195,243,120,127,100,219,120,
/* 0x0960 */ 96, 0, 0, 0,127,190, 24, 0, 65,254, 0, 16, 56, 96, 0,127, /* 0x0960 */ 125, 8, 80, 80, 75,255,250, 49, 96, 0, 0, 0,127,190, 24, 0,
/* 0x0970 */ 75,255,250, 77, 96, 0, 0, 0, 65,146, 0, 24,126, 35,139,120, /* 0x0970 */ 65,254, 0, 16, 56, 96, 0,127, 75,255,250, 77, 96, 0, 0, 0,
/* 0x0980 */ 56,129, 0,112,125,229,123,120,125,198,115,120, 75,255,250,225, /* 0x0980 */ 65,146, 0, 24,126, 35,139,120, 56,129, 0,112,125,229,123,120,
/* 0x0990 */ 123, 73,255,227, 65,130, 0, 52,125, 93, 0,208, 57, 29,255,255, /* 0x0990 */ 125,198,115,120, 75,255,250,225,123, 73,255,227, 65,130, 0, 52,
/* 0x09a0 */ 125, 74,152, 56,121, 74, 0, 33, 64,130, 0, 12,127,189, 82, 20, /* 0x09a0 */ 125, 93, 0,208, 57, 29,255,255,125, 74,152, 56,121, 74, 0, 33,
/* 0x09b0 */ 72, 0, 0, 24,125, 73, 3,166, 56,224, 0, 0,156,232, 0, 1, /* 0x09b0 */ 64,130, 0, 12,127,189, 82, 20, 72, 0, 0, 24,125, 73, 3,166,
/* 0x09c0 */ 66, 0,255,252, 75,255,255,232, 65,146, 1, 0,233, 82, 0, 0, /* 0x09c0 */ 56,224, 0, 0,156,232, 0, 1, 66, 0,255,252, 75,255,255,232,
/* 0x09d0 */ 121, 74, 7,194,121, 74, 0, 2,127,170,184, 0, 64,158, 0,208, /* 0x09d0 */ 65,146, 1, 0,233, 82, 0, 0,121, 74, 7,194,121, 74, 0, 2,
/* 0x09e0 */ 233, 82, 0, 40,232,242, 0, 32,233, 18, 0, 16,127,170, 56, 0, /* 0x09e0 */ 127,170,184, 0, 64,158, 0,208,233, 82, 0, 40,232,242, 0, 32,
/* 0x09f0 */ 64,158, 0, 44,233, 33, 0,160,127, 73, 82, 20,127, 90, 66, 20, /* 0x09f0 */ 233, 18, 0, 16,127,170, 56, 0, 64,158, 0, 44,233, 33, 0,160,
/* 0x0a00 */ 123, 90, 7,100,125, 90, 0,208,125, 74,152, 56, 43,138, 0, 15, /* 0x0a00 */ 127, 73, 82, 20,127, 90, 66, 20,123, 90, 7,100,125, 90, 0,208,
/* 0x0a10 */ 64,157, 0, 12, 57, 64, 0, 0, 72, 0, 0, 60,233, 82, 0, 8, /* 0x0a10 */ 125, 74,152, 56, 43,138, 0, 15, 64,157, 0, 12, 57, 64, 0, 0,
/* 0x0a20 */ 47,170, 0, 0, 65,158, 1, 8, 56, 96, 0, 0, 56,128, 16, 0, /* 0x0a20 */ 72, 0, 0, 60,233, 82, 0, 8, 47,170, 0, 0, 65,158, 1, 8,
/* 0x0a30 */ 56,160, 0, 3, 56,192, 0, 34, 56,224,255,255, 57, 0, 0, 0, /* 0x0a30 */ 56, 96, 0, 0, 56,128, 16, 0, 56,160, 0, 3, 56,192, 0, 34,
/* 0x0a40 */ 75,255,249, 77, 96, 0, 0, 0,124,122, 27,121, 65,130, 0, 96, /* 0x0a40 */ 56,224,255,255, 57, 0, 0, 0, 75,255,249, 77, 96, 0, 0, 0,
/* 0x0a50 */ 57, 64, 0, 1, 61, 32, 68, 0, 61, 0, 56,128, 97, 41, 0, 2, /* 0x0a50 */ 124,122, 27,121, 65,130, 0, 96, 57, 64, 0, 1, 61, 32, 68, 0,
/* 0x0a60 */ 47,170, 0, 0,145, 26, 0, 8,145, 58, 0, 0, 61, 32,127,236, /* 0x0a60 */ 61, 0, 56,128, 97, 41, 0, 2, 47,170, 0, 0,145, 26, 0, 8,
/* 0x0a70 */ 97, 41,251,120,145, 58, 0, 4, 61, 32, 78,128, 97, 41, 0, 32, /* 0x0a70 */ 145, 58, 0, 0, 61, 32,127,236, 97, 41,251,120,145, 58, 0, 4,
/* 0x0a80 */ 145, 58, 0, 12, 65,158, 0, 24,127, 67,211,120, 56,128, 0, 16, /* 0x0a80 */ 61, 32, 78,128, 97, 41, 0, 32,145, 58, 0, 12, 65,158, 0, 24,
/* 0x0a90 */ 56,160, 0, 5, 75,255,249, 17, 96, 0, 0, 0,232, 97, 0,152, /* 0x0a90 */ 127, 67,211,120, 56,128, 0, 16, 56,160, 0, 5, 75,255,249, 17,
/* 0x0aa0 */ 56,128, 0, 0,127, 69,211,120, 75,255,251,101,232,161, 0,128, /* 0x0aa0 */ 96, 0, 0, 0,232, 97, 0,152, 56,128, 0, 0,127, 69,211,120,
/* 0x0ab0 */ 127,195,243,120,127,100,219,120, 75,255,248,237, 96, 0, 0, 0, /* 0x0ab0 */ 75,255,251,101,232,161, 0,128,127,195,243,120,127,100,219,120,
/* 0x0ac0 */ 47,163, 0, 0, 64,222,254,168,127,189,176, 64, 64,156, 0, 44, /* 0x0ac0 */ 75,255,248,237, 96, 0, 0, 0, 47,163, 0, 0, 64,222,254,168,
/* 0x0ad0 */ 127,163,235,120,124,157,176, 80,126,133, 7,180, 56,192, 0, 50, /* 0x0ad0 */ 127,189,176, 64, 64,156, 0, 44,127,163,235,120,124,157,176, 80,
/* 0x0ae0 */ 56,224,255,255, 57, 0, 0, 0, 75,255,248,165, 96, 0, 0, 0, /* 0x0ae0 */ 126,133, 7,180, 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0,
/* 0x0af0 */ 127,189, 24, 0, 64,222,254,120, 59, 57, 0, 1, 58, 82, 0, 56, /* 0x0af0 */ 75,255,248,165, 96, 0, 0, 0,127,189, 24, 0, 64,222,254,120,
/* 0x0b00 */ 127, 57, 7,180, 75,255,253, 4, 47,181, 0, 0, 65,158, 0, 8, /* 0x0b00 */ 59, 57, 0, 1, 58, 82, 0, 56,127, 57, 7,180, 75,255,253, 4,
/* 0x0b10 */ 251,245, 0, 0, 56, 33, 1, 64,232,124, 0, 24,124,127, 26, 20, /* 0x0b10 */ 47,181, 0, 0, 65,158, 0, 8,251,245, 0, 0, 56, 33, 1, 64,
/* 0x0b20 */ 129,129, 0, 8,125,144,129, 32, 72, 0, 1,228,233, 33, 0,144, /* 0x0b20 */ 232,124, 0, 24,124,127, 26, 20,129,129, 0, 8,125,144,129, 32,
/* 0x0b30 */ 127, 73, 66, 20, 59, 90, 0, 24, 75,255,255, 28, 0, 0, 0, 0, /* 0x0b30 */ 72, 0, 1,228,233, 33, 0,144,127, 73, 66, 20, 59, 90, 0, 24,
/* 0x0b40 */ 0, 0, 0, 3,128, 18, 0, 0,124, 8, 2,166, 72, 0, 1,153, /* 0x0b40 */ 75,255,255, 28, 0, 0, 0, 0, 0, 0, 0, 3,128, 18, 0, 0,
/* 0x0b50 */ 248, 33,255, 17,125, 61, 75,120,129, 35, 0, 0,124,191, 43,120, /* 0x0b50 */ 124, 8, 2,166, 72, 0, 1,153,248, 33,255, 17,125, 61, 75,120,
/* 0x0b60 */ 124,218, 51,120, 56,192, 0, 0,125, 88, 83,120,249, 33, 0,144, /* 0x0b60 */ 129, 35, 0, 0,124,191, 43,120,124,218, 51,120, 56,192, 0, 0,
/* 0x0b70 */ 248,161, 0,152,124,229, 59,120, 59,159, 0, 64,129, 35, 0, 4, /* 0x0b70 */ 125, 88, 83,120,249, 33, 0,144,248,161, 0,152,124,229, 59,120,
/* 0x0b80 */ 248, 97, 0,120, 59,192, 0, 0,248, 97, 0,136,248,129, 0,128, /* 0x0b80 */ 59,159, 0, 64,129, 35, 0, 4,248, 97, 0,120, 59,192, 0, 0,
/* 0x0b90 */ 57, 41, 0, 12,248,225, 0,160,249, 1, 0,168,249, 33, 0,112, /* 0x0b90 */ 248, 97, 0,136,248,129, 0,128, 57, 41, 0, 12,248,225, 0,160,
/* 0x0ba0 */ 56, 97, 0,112, 56,129, 0,144, 75,255,248,197,232,225, 0,160, /* 0x0ba0 */ 249, 1, 0,168,249, 33, 0,112, 56, 97, 0,112, 56,129, 0,144,
/* 0x0bb0 */ 233, 1, 0,168, 56,129, 0,128, 56,160, 0, 0,127, 70,211,120, /* 0x0bb0 */ 75,255,248,197,232,225, 0,160,233, 1, 0,168, 56,129, 0,128,
/* 0x0bc0 */ 127,169,235,120,127, 10,195,120,127,227,251,120, 75,255,250,153, /* 0x0bc0 */ 56,160, 0, 0,127, 70,211,120,127,169,235,120,127, 10,195,120,
/* 0x0bd0 */ 56,128, 0, 9,124,123, 27,120,127, 67,211,120,127,101,219,120, /* 0x0bd0 */ 127,227,251,120, 75,255,250,153, 56,128, 0, 9,124,123, 27,120,
/* 0x0be0 */ 75,255,250, 45,161, 63, 0, 56,127,137,240, 64, 64,157, 0,184, /* 0x0be0 */ 127, 67,211,120,127,101,219,120, 75,255,250, 45,161, 63, 0, 56,
/* 0x0bf0 */ 129, 60, 0, 0, 47,137, 0, 3, 64,158, 0,156,232,124, 0, 16, /* 0x0bf0 */ 127,137,240, 64, 64,157, 0,184,129, 60, 0, 0, 47,137, 0, 3,
/* 0x0c00 */ 233, 61, 0, 0, 56,128, 0, 0, 56,160, 0, 0,124, 99, 74, 20, /* 0x0c00 */ 64,158, 0,156,232,124, 0, 16,233, 61, 0, 0, 56,128, 0, 0,
/* 0x0c10 */ 75,255,247,205, 96, 0, 0, 0, 47,131, 0, 0,124,121, 27,120, /* 0x0c10 */ 56,160, 0, 0,124, 99, 74, 20, 75,255,247,205, 96, 0, 0, 0,
/* 0x0c20 */ 64,252, 0, 16, 56, 96, 0,127, 75,255,247,149, 96, 0, 0, 0, /* 0x0c20 */ 47,131, 0, 0,124,121, 27,120, 64,252, 0, 16, 56, 96, 0,127,
/* 0x0c30 */ 127,228,251,120, 56,160, 4, 0, 75,255,247,157, 96, 0, 0, 0, /* 0x0c30 */ 75,255,247,149, 96, 0, 0, 0,127,228,251,120, 56,160, 4, 0,
/* 0x0c40 */ 47,163, 4, 0, 64,222,255,224, 57, 32, 0, 0, 56,128, 0, 0, /* 0x0c40 */ 75,255,247,157, 96, 0, 0, 0, 47,163, 4, 0, 64,222,255,224,
/* 0x0c50 */ 249, 61, 0, 0,127, 37,203,120, 56,192, 0, 0, 56,224, 0, 0, /* 0x0c50 */ 57, 32, 0, 0, 56,128, 0, 0,249, 61, 0, 0,127, 37,203,120,
/* 0x0c60 */ 57, 0, 0, 0,127,169,235,120,127, 10,195,120,127,227,251,120, /* 0x0c60 */ 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0,127,169,235,120,
/* 0x0c70 */ 75,255,249,245,232,189, 0, 0, 56,128, 0, 7,124,123, 27,120, /* 0x0c70 */ 127, 10,195,120,127,227,251,120, 75,255,249,245,232,189, 0, 0,
/* 0x0c80 */ 127, 67,211,120, 75,255,249,137,127, 35,203,120, 75,255,247, 89, /* 0x0c80 */ 56,128, 0, 7,124,123, 27,120,127, 67,211,120, 75,255,249,137,
/* 0x0c90 */ 96, 0, 0, 0, 59,222, 0, 1, 59,156, 0, 56,123,222, 0, 32, /* 0x0c90 */ 127, 35,203,120, 75,255,247, 89, 96, 0, 0, 0, 59,222, 0, 1,
/* 0x0ca0 */ 75,255,255, 68, 56, 33, 0,240,127, 99,219,120, 72, 0, 0,136, /* 0x0ca0 */ 59,156, 0, 56,123,222, 0, 32, 75,255,255, 68, 56, 33, 0,240,
/* 0x0cb0 */ 0, 0, 0, 0, 0, 0, 0, 1,128, 8, 0, 0,249,193,255,112, /* 0x0cb0 */ 127, 99,219,120, 72, 0, 0,136, 0, 0, 0, 0, 0, 0, 0, 1,
/* 0x0cc0 */ 249,225,255,120,250, 1,255,128,250, 33,255,136,250, 65,255,144, /* 0x0cc0 */ 128, 8, 0, 0,249,193,255,112,249,225,255,120,250, 1,255,128,
/* 0x0cd0 */ 250, 97,255,152,250,129,255,160,250,161,255,168,250,193,255,176, /* 0x0cd0 */ 250, 33,255,136,250, 65,255,144,250, 97,255,152,250,129,255,160,
/* 0x0ce0 */ 250,225,255,184,251, 1,255,192,251, 33,255,200,251, 65,255,208, /* 0x0ce0 */ 250,161,255,168,250,193,255,176,250,225,255,184,251, 1,255,192,
/* 0x0cf0 */ 251, 97,255,216,251,129,255,224,251,161,255,232,251,193,255,240, /* 0x0cf0 */ 251, 33,255,200,251, 65,255,208,251, 97,255,216,251,129,255,224,
/* 0x0d00 */ 251,225,255,248,248, 1, 0, 16, 78,128, 0, 32,233,193,255,112, /* 0x0d00 */ 251,161,255,232,251,193,255,240,251,225,255,248,248, 1, 0, 16,
/* 0x0d10 */ 233,225,255,120,234, 1,255,128,234, 33,255,136,234, 65,255,144, /* 0x0d10 */ 78,128, 0, 32,233,193,255,112,233,225,255,120,234, 1,255,128,
/* 0x0d20 */ 234, 97,255,152,234,129,255,160,234,161,255,168,234,193,255,176, /* 0x0d20 */ 234, 33,255,136,234, 65,255,144,234, 97,255,152,234,129,255,160,
/* 0x0d30 */ 234,225,255,184,235, 1,255,192,235, 33,255,200,235, 65,255,208, /* 0x0d30 */ 234,161,255,168,234,193,255,176,234,225,255,184,235, 1,255,192,
/* 0x0d40 */ 235, 97,255,216,235,129,255,224,232, 1, 0, 16,235,161,255,232, /* 0x0d40 */ 235, 33,255,200,235, 65,255,208,235, 97,255,216,235,129,255,224,
/* 0x0d50 */ 124, 8, 3,166,235,193,255,240,235,225,255,248, 78,128, 0, 32, /* 0x0d50 */ 232, 1, 0, 16,235,161,255,232,124, 8, 3,166,235,193,255,240,
/* 0x0d60 */ 0, 0, 0, 0, 0, 16, 3,252, 0, 0, 0, 0, 0, 16,141, 96, /* 0x0d60 */ 235,225,255,248, 78,128, 0, 32, 0, 0, 0, 0, 0, 16, 4, 4,
/* 0x0d70 */ 0, 0, 0, 0, 0, 16, 4,108, 0, 0, 0, 0, 0, 16,141, 96, /* 0x0d70 */ 0, 0, 0, 0, 0, 16,141,104, 0, 0, 0, 0, 0, 16, 4,116,
/* 0x0d80 */ 0, 0, 0, 0, 0, 16, 6, 12, 0, 0, 0, 0, 0, 16,141, 96, /* 0x0d80 */ 0, 0, 0, 0, 0, 16,141,104, 0, 0, 0, 0, 0, 16, 6, 20,
/* 0x0d90 */ 0, 0, 0, 0, 0, 16, 6,100, 0, 0, 0, 0, 0, 16,141, 96, /* 0x0d90 */ 0, 0, 0, 0, 0, 16,141,104, 0, 0, 0, 0, 0, 16, 6,108,
/* 0x0da0 */ 0, 0, 0, 0, 0, 16, 11, 72, 0, 0, 0, 0, 0, 16,141, 96 /* 0x0da0 */ 0, 0, 0, 0, 0, 16,141,104, 0, 0, 0, 0, 0, 16, 11, 80,
/* 0x0db0 */ 0, 0, 0, 0, 0, 16,141,104
}; };
+188 -187
View File
@@ -1,5 +1,5 @@
/* powerpc64le-linux.elf-fold.h /* powerpc64le-linux.elf-fold.h
created from powerpc64le-linux.elf-fold.bin, 3499 (0xdab) bytes created from powerpc64le-linux.elf-fold.bin, 3507 (0xdb3) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -32,21 +32,21 @@
/* clang-format off */ /* clang-format off */
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_SIZE 3499 #define STUB_POWERPC64LE_LINUX_ELF_FOLD_SIZE 3507
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0xda0cb851 #define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0xfcd8b80f
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0xbc633727 #define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0x26b1a29e
unsigned char stub_powerpc64le_linux_elf_fold[3499] = { unsigned char stub_powerpc64le_linux_elf_fold[3507] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0, 21, 0, 1, 0, 0, 0, 96, 13, 16, 0, 0, 0, 0, 0, /* 0x0010 */ 2, 0, 21, 0, 1, 0, 0, 0,104, 13, 16, 0, 0, 0, 0, 0,
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 1, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x0030 */ 1, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, /* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
/* 0x0060 */ 92, 13, 0, 0, 0, 0, 0, 0, 92, 13, 0, 0, 0, 0, 0, 0, /* 0x0060 */ 100, 13, 0, 0, 0, 0, 0, 0,100, 13, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, /* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0,
/* 0x0080 */ 96, 13, 0, 0, 0, 0, 0, 0, 96, 13, 16, 0, 0, 0, 0, 0, /* 0x0080 */ 104, 13, 0, 0, 0, 0, 0, 0,104, 13, 16, 0, 0, 0, 0, 0,
/* 0x0090 */ 96, 13, 16, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, /* 0x0090 */ 104, 13, 16, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0,
/* 0x00a0 */ 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, /* 0x00a0 */ 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,255, 96, 56, /* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,255, 96, 56,
/* 0x00c0 */ 164, 77, 99,120, 32, 0,128, 78, 0, 0, 0, 96,125, 0, 0, 72, /* 0x00c0 */ 164, 77, 99,120, 32, 0,128, 78, 0, 0, 0, 96,125, 0, 0, 72,
@@ -63,9 +63,9 @@ unsigned char stub_powerpc64le_linux_elf_fold[3499] = {
/* 0x0170 */ 9, 0, 3,248, 8, 0, 4,232, 0, 0,160, 43, 8, 0, 3,248, /* 0x0170 */ 9, 0, 3,248, 8, 0, 4,232, 0, 0,160, 43, 8, 0, 3,248,
/* 0x0180 */ 17, 0, 4,232, 17, 0, 3,248,236,255,158, 64, 8, 0,163, 58, /* 0x0180 */ 17, 0, 4,232, 17, 0, 3,248,236,255,158, 64, 8, 0,163, 58,
/* 0x0190 */ 80,168,154,126,100, 0, 22,128, 8, 0,100, 58, 8, 0, 3,148, /* 0x0190 */ 80,168,154,126,100, 0, 22,128, 8, 0,100, 58, 8, 0, 3,148,
/* 0x01a0 */ 4, 0, 67, 58, 0, 0,128, 56,104, 0,118, 56, 49, 2, 0, 72, /* 0x01a0 */ 4, 0, 67, 58, 0, 0,128, 56,104, 0,118, 56, 57, 2, 0, 72,
/* 0x01b0 */ 120, 27,123,124,255, 15,160, 56,120,147, 68,126,104, 0,118, 56, /* 0x01b0 */ 120, 27,123,124,255, 15,160, 56,120,147, 68,126,104, 0,118, 56,
/* 0x01c0 */ 13, 2, 0, 72,252,255,178, 56, 0, 0, 35, 44, 12, 0,129, 65, /* 0x01c0 */ 21, 2, 0, 72,252,255,178, 56, 0, 0, 35, 44, 12, 0,129, 65,
/* 0x01d0 */ 100, 0,182, 56, 12, 0, 96, 56, 4, 0, 99, 56, 20, 26,133,124, /* 0x01d0 */ 100, 0,182, 56, 12, 0, 96, 56, 4, 0, 99, 56, 20, 26,133,124,
/* 0x01e0 */ 166, 3,105,124,120,155, 99,126, 0, 0,160, 56,255,255,163,156, /* 0x01e0 */ 166, 3,105,124,120,155, 99,126, 0, 0,160, 56,255,255,163,156,
/* 0x01f0 */ 255,255, 4,140,255,255, 3,156,248,255, 0, 66,240,255,122,248, /* 0x01f0 */ 255,255, 4,140,255,255, 3,156,248,255, 0, 66,240,255,122,248,
@@ -77,183 +77,184 @@ unsigned char stub_powerpc64le_linux_elf_fold[3499] = {
/* 0x0250 */ 120,187,228,126,144, 0,161, 56,120,211, 70,127,120,251,231,127, /* 0x0250 */ 120,187,228,126,144, 0,161, 56,120,211, 70,127,120,251,231,127,
/* 0x0260 */ 120,179,200,126, 0, 0, 0, 56,112, 0,225,248,112, 0,225, 56, /* 0x0260 */ 120,179,200,126, 0, 0, 0, 56,112, 0,225,248,112, 0,225, 56,
/* 0x0270 */ 120, 0, 1,248,128, 0, 1,249,128, 0, 1, 57,136, 0, 1,248, /* 0x0270 */ 120, 0, 1,248,128, 0, 1,249,128, 0, 1, 57,136, 0, 1,248,
/* 0x0280 */ 120,243,202,127,193, 8, 0, 72,144, 8, 33, 56,120,171,162,126, /* 0x0280 */ 120,243,202,127,201, 8, 0, 72,144, 8, 33, 56,120,171,162,126,
/* 0x0290 */ 7, 0, 96,112, 36, 0,130, 64, 0, 0, 3,128, 0, 0, 0, 40, /* 0x0290 */ 7, 0, 96,112, 36, 0,130, 64, 0, 0, 3,128, 0, 0, 0, 40,
/* 0x02a0 */ 24, 0,130, 64,136, 1, 1,232, 8, 0, 67,232, 20, 2, 66,124, /* 0x02a0 */ 24, 0,130, 64,136, 1, 1,232, 8, 0, 67,232, 20, 2, 66,124,
/* 0x02b0 */ 0, 0, 99,232, 20, 2, 99,124, 0, 0,117,248,120, 27,127,124, /* 0x02b0 */ 0, 0, 99,232, 20, 2, 99,124, 0, 0,117,248,120, 27,127,124,
/* 0x02c0 */ 160, 0,153,232,120,203, 35,127,253, 0, 0, 72,120,203, 35,127, /* 0x02c0 */ 160, 0,153,232,120,203, 35,127, 5, 1, 0, 72,120,203, 35,127,
/* 0x02d0 */ 29, 1, 0, 72, 0, 0, 0, 57,120,219,103,127, 2, 0,192, 56, /* 0x02d0 */ 37, 1, 0, 72, 0, 0, 0, 57,120,219,103,127, 0, 0, 7, 44,
/* 0x02e0 */ 1, 0,160, 56,208, 0,158,124, 0, 0, 96, 56,161, 0, 0, 72, /* 0x02e0 */ 32, 0,128, 65, 2, 0,192, 56, 1, 0,160, 56,208, 0,158,124,
/* 0x02f0 */ 120,219, 99,127,241, 0, 0, 72,248,255, 21,232,166, 3, 9,124, /* 0x02f0 */ 0, 0, 96, 56,161, 0, 0, 72,120,219, 99,127,241, 0, 0, 72,
/* 0x0300 */ 0, 0, 21,232,128, 1, 1,248,120,235,163,127,120,227,132,127, /* 0x0300 */ 248,255, 21,232,166, 3, 9,124, 0, 0, 21,232,128, 1, 1,248,
/* 0x0310 */ 91, 0, 0, 56,166, 3,232,127,176, 0,161,232,184, 0,193,232, /* 0x0310 */ 120,235,163,127,120,227,132,127, 91, 0, 0, 56,166, 3,232,127,
/* 0x0320 */ 192, 0,225,232,200, 0, 1,233,208, 0, 33,233,216, 0, 65,233, /* 0x0320 */ 176, 0,161,232,184, 0,193,232,192, 0,225,232,200, 0, 1,233,
/* 0x0330 */ 224, 0, 97,233,232, 0,129,233,240, 0,161,233,248, 0,193,233, /* 0x0330 */ 208, 0, 33,233,216, 0, 65,233,224, 0, 97,233,232, 0,129,233,
/* 0x0340 */ 0, 1,225,233, 8, 1, 1,234, 16, 1, 33,234, 24, 1, 65,234, /* 0x0340 */ 240, 0,161,233,248, 0,193,233, 0, 1,225,233, 8, 1, 1,234,
/* 0x0350 */ 32, 1, 97,234, 40, 1,129,234, 48, 1,161,234, 56, 1,193,234, /* 0x0350 */ 16, 1, 33,234, 24, 1, 65,234, 32, 1, 97,234, 40, 1,129,234,
/* 0x0360 */ 64, 1,225,234, 72, 1, 1,235, 80, 1, 33,235, 88, 1, 65,235, /* 0x0360 */ 48, 1,161,234, 56, 1,193,234, 64, 1,225,234, 72, 1, 1,235,
/* 0x0370 */ 96, 1, 97,235,104, 1,129,235,112, 1,161,235,120, 1,193,235, /* 0x0370 */ 80, 1, 33,235, 88, 1, 65,235, 96, 1, 97,235,104, 1,129,235,
/* 0x0380 */ 128, 1,225,235,144, 1, 33, 56, 32, 4,128, 78, 32, 0,231,120, /* 0x0380 */ 112, 1,161,235,120, 1,193,235,128, 1,225,235,144, 1, 33, 56,
/* 0x0390 */ 90, 0, 0, 56, 2, 0, 0, 68, 8, 0,227, 64,255,255, 96, 56, /* 0x0390 */ 32, 4,128, 78, 32, 0,231,120, 90, 0, 0, 56, 2, 0, 0, 68,
/* 0x03a0 */ 32, 0,128, 78,255, 15, 0, 56, 56, 0, 96,124, 80, 24, 96,124, /* 0x03a0 */ 8, 0,227, 64,255,255, 96, 56, 32, 0,128, 78,255, 15, 0, 56,
/* 0x03b0 */ 20, 2,132,124,125, 0, 0, 56, 16, 0, 0, 72, 1, 0, 0, 56, /* 0x03b0 */ 56, 0, 96,124, 80, 24, 96,124, 20, 2,132,124,125, 0, 0, 56,
/* 0x03c0 */ 8, 0, 0, 72, 45, 0, 0, 56, 8, 0, 0, 72, 85, 0, 0, 56, /* 0x03c0 */ 16, 0, 0, 72, 1, 0, 0, 56, 8, 0, 0, 72, 45, 0, 0, 56,
/* 0x03d0 */ 8, 0, 0, 72, 3, 0, 0, 56, 8, 0, 0, 72, 5, 0, 0, 56, /* 0x03d0 */ 8, 0, 0, 72, 85, 0, 0, 56, 8, 0, 0, 72, 3, 0, 0, 56,
/* 0x03e0 */ 8, 0, 0, 72, 6, 0, 0, 56, 8, 0, 0, 72, 91, 0, 0, 56, /* 0x03e0 */ 8, 0, 0, 72, 5, 0, 0, 56, 8, 0, 0, 72, 6, 0, 0, 56,
/* 0x03f0 */ 164,255,255, 75, 8, 0,128,124, 32, 0,128, 78, 0, 0, 67,233, /* 0x03f0 */ 8, 0, 0, 72, 91, 0, 0, 56,164,255,255, 75, 8, 0,128,124,
/* 0x0400 */ 8, 0, 3,233, 1, 0,229, 56, 0, 0, 32, 57,166, 3,233,124, /* 0x0400 */ 32, 0,128, 78, 0, 0, 67,233, 8, 0, 3,233, 1, 0,229, 56,
/* 0x0410 */ 64, 40,170,127, 28, 0,252, 64,166, 2, 8,124,127, 0, 96, 56, /* 0x0410 */ 0, 0, 32, 57,166, 3,233,124, 64, 40,170,127, 28, 0,252, 64,
/* 0x0420 */ 16, 0, 1,248,145,255, 33,248,149,255,255, 75, 0, 0, 0, 96, /* 0x0420 */ 166, 2, 8,124,127, 0, 96, 56, 16, 0, 1,248,145,255, 33,248,
/* 0x0430 */ 20, 0, 64, 66,174, 72, 72,125,174, 73, 68,125, 1, 0, 41, 57, /* 0x0430 */ 149,255,255, 75, 0, 0, 0, 96, 20, 0, 64, 66,174, 72, 72,125,
/* 0x0440 */ 240,255,255, 75, 8, 0, 67,233, 20, 74, 74,125, 8, 0, 67,249, /* 0x0440 */ 174, 73, 68,125, 1, 0, 41, 57,240,255,255, 75, 8, 0, 67,233,
/* 0x0450 */ 0, 0, 67,233, 80, 80, 41,125, 0, 0, 35,249, 32, 0,128, 78, /* 0x0450 */ 20, 74, 74,125, 8, 0, 67,249, 0, 0, 67,233, 80, 80, 41,125,
/* 0x0460 */ 0, 0, 0, 0, 0, 0, 0, 1,128, 0, 0, 0, 38, 0,128,125, /* 0x0460 */ 0, 0, 35,249, 32, 0,128, 78, 0, 0, 0, 0, 0, 0, 0, 1,
/* 0x0470 */ 166, 2, 8,124, 8, 0,129,145,121, 8, 0, 72, 81,255, 33,248, /* 0x0470 */ 128, 0, 0, 0, 38, 0,128,125,166, 2, 8,124, 8, 0,129,145,
/* 0x0480 */ 120, 27,126,124,120, 35,159,124,120, 43,189,124,120, 51,220,124, /* 0x0480 */ 121, 8, 0, 72, 81,255, 33,248,120, 27,126,124,120, 35,159,124,
/* 0x0490 */ 0, 0, 38, 46, 0, 0, 63,233, 0, 0,169, 47, 84, 1,158, 65, /* 0x0490 */ 120, 43,189,124,120, 51,220,124, 0, 0, 38, 46, 0, 0, 63,233,
/* 0x04a0 */ 120,243,195,127,112, 0,129, 56, 12, 0,160, 56, 81,255,255, 75, /* 0x04a0 */ 0, 0,169, 47, 84, 1,158, 65,120,243,195,127,112, 0,129, 56,
/* 0x04b0 */ 112, 0, 65,129,116, 0, 33,129, 0, 0,170, 47, 32, 0,158, 64, /* 0x04b0 */ 12, 0,160, 56, 81,255,255, 75,112, 0, 65,129,116, 0, 33,129,
/* 0x04c0 */ 88, 33, 37,109, 85, 80,133, 47, 28, 0,158, 64, 0, 0, 62,233, /* 0x04c0 */ 0, 0,170, 47, 32, 0,158, 64, 88, 33, 37,109, 85, 80,133, 47,
/* 0x04d0 */ 0, 0,169, 47, 28, 1,254, 65, 12, 0, 0, 72, 33, 0, 41,121, /* 0x04d0 */ 28, 0,158, 64, 0, 0, 62,233, 0, 0,169, 47, 28, 1,254, 65,
/* 0x04e0 */ 16, 0,226, 64,127, 0, 96, 56,213,254,255, 75, 0, 0, 0, 96, /* 0x04e0 */ 12, 0, 0, 72, 33, 0, 41,121, 16, 0,226, 64,127, 0, 96, 56,
/* 0x04f0 */ 64, 80, 9,127,240,255,217, 65, 0, 0, 31,233, 64, 64,170,127, /* 0x04f0 */ 213,254,255, 75, 0, 0, 0, 96, 64, 80, 9,127,240,255,217, 65,
/* 0x0500 */ 228,255,221, 65, 8, 0,191,232,184, 0,152, 64,120, 75, 36,125, /* 0x0500 */ 0, 0, 31,233, 64, 64,170,127,228,255,221, 65, 8, 0,191,232,
/* 0x0510 */ 0, 0, 61,233, 8, 0,126,232,128, 0,193, 56,128, 0, 65,249, /* 0x0510 */ 184, 0,152, 64,120, 75, 36,125, 0, 0, 61,233, 8, 0,126,232,
/* 0x0520 */ 40, 0, 65,248,120, 0,225,136, 16, 0,125,233,166, 3, 41,125, /* 0x0520 */ 128, 0,193, 56,128, 0, 65,249, 40, 0, 65,248,120, 0,225,136,
/* 0x0530 */ 8, 0, 93,232, 33, 4,128, 78, 40, 0, 65,232, 0, 0,163, 47, /* 0x0530 */ 16, 0,125,233,166, 3, 41,125, 8, 0, 93,232, 33, 4,128, 78,
/* 0x0540 */ 164,255,222, 64,128, 0,129,232,112, 0, 33,129, 64, 72,164,127, /* 0x0540 */ 40, 0, 65,232, 0, 0,163, 47,164,255,222, 64,128, 0,129,232,
/* 0x0550 */ 148,255,222, 64,121, 0,193,136, 0, 0,166, 47, 68, 0,158, 65, /* 0x0550 */ 112, 0, 33,129, 64, 72,164,127,148,255,222, 64,121, 0,193,136,
/* 0x0560 */ 64, 0,146, 65, 0, 2,164, 43, 16, 0,157, 65, 0, 0, 63,233, /* 0x0560 */ 0, 0,166, 47, 68, 0,158, 65, 64, 0,146, 65, 0, 2,164, 43,
/* 0x0570 */ 0, 32,169,127, 44, 0,158, 64, 8, 0,127,232,122, 0,161,136, /* 0x0570 */ 16, 0,157, 65, 0, 0, 63,233, 0, 32,169,127, 44, 0,158, 64,
/* 0x0580 */ 32, 0,132,120, 40, 0, 65,248, 0, 0, 60,233, 16, 0,124,233, /* 0x0580 */ 8, 0,127,232,122, 0,161,136, 32, 0,132,120, 40, 0, 65,248,
/* 0x0590 */ 166, 3, 41,125, 8, 0, 92,232, 33, 4,128, 78, 40, 0, 65,232, /* 0x0590 */ 0, 0, 60,233, 16, 0,124,233,166, 3, 41,125, 8, 0, 92,232,
/* 0x05a0 */ 116, 0, 1,129, 8, 0, 94,233, 0, 0, 62,233, 20, 66, 74,125, /* 0x05a0 */ 33, 4,128, 78, 40, 0, 65,232,116, 0, 1,129, 8, 0, 94,233,
/* 0x05b0 */ 80, 72, 40,125, 8, 0, 94,249, 0, 0, 62,249, 20, 0, 0, 72, /* 0x05b0 */ 0, 0, 62,233, 20, 66, 74,125, 80, 72, 40,125, 8, 0, 94,249,
/* 0x05c0 */ 120, 43,164,124,120,243,195,127,120, 75, 37,125, 49,254,255, 75, /* 0x05c0 */ 0, 0, 62,249, 20, 0, 0, 72,120, 43,164,124,120,243,195,127,
/* 0x05d0 */ 112, 0, 1,129, 8, 0, 95,233, 0, 0, 63,233, 20, 66, 74,125, /* 0x05d0 */ 120, 75, 37,125, 49,254,255, 75,112, 0, 1,129, 8, 0, 95,233,
/* 0x05e0 */ 80, 72, 40,125, 8, 0, 95,249, 0, 0, 63,249,168,254,255, 75, /* 0x05e0 */ 0, 0, 63,233, 20, 66, 74,125, 80, 72, 40,125, 8, 0, 95,249,
/* 0x05f0 */ 176, 0, 33, 56, 8, 0,129,129, 32,129,144,125, 68, 7, 0, 72, /* 0x05f0 */ 0, 0, 63,249,168,254,255, 75,176, 0, 33, 56, 8, 0,129,129,
/* 0x0600 */ 0, 0, 0, 0, 0, 0, 0, 3,128, 4, 0, 0, 0, 0, 35, 44, /* 0x0600 */ 32,129,144,125, 68, 7, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3,
/* 0x0610 */ 32, 0,130, 77,225, 7,105,120, 32, 0,130, 76, 0, 0, 36, 47, /* 0x0610 */ 128, 4, 0, 0, 0, 0, 35, 44, 32, 0,130, 77,225, 7,105,120,
/* 0x0620 */ 0, 0, 67,233, 64, 32,170,127, 16, 0,158, 64, 0, 0,131,248, /* 0x0620 */ 32, 0,130, 76, 0, 0, 36, 47, 0, 0, 67,233, 64, 32,170,127,
/* 0x0630 */ 8, 0,163,248, 32, 0,128, 78, 1, 0,170, 43, 12, 0,158, 64, /* 0x0630 */ 16, 0,158, 64, 0, 0,131,248, 8, 0,163,248, 32, 0,128, 78,
/* 0x0640 */ 16, 0,154, 65,232,255,255, 75, 0, 0,170, 47, 32, 0,158, 77, /* 0x0640 */ 1, 0,170, 43, 12, 0,158, 64, 16, 0,154, 65,232,255,255, 75,
/* 0x0650 */ 16, 0, 99, 56,204,255,255, 75, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0650 */ 0, 0,170, 47, 32, 0,158, 77, 16, 0, 99, 56,204,255,255, 75,
/* 0x0660 */ 0, 0, 0, 0,166, 2, 8,124, 38, 0,128,125, 77, 6, 0, 72, /* 0x0660 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 8,124,
/* 0x0670 */ 120, 75, 53,125, 32, 0, 35,233,120, 67, 14,125, 16, 0, 3,161, /* 0x0670 */ 38, 0,128,125, 77, 6, 0, 72,120, 75, 53,125, 32, 0, 35,233,
/* 0x0680 */ 120, 83, 94,125,120, 27,124,124, 8, 0,129,145,193,254, 33,248, /* 0x0680 */ 120, 67, 14,125, 16, 0, 3,161,120, 83, 94,125,120, 27,124,124,
/* 0x0690 */ 0, 0, 36, 46,120, 43,176,124,120, 51,216,124, 0, 0, 85,233, /* 0x0690 */ 8, 0,129,145,193,254, 33,248, 0, 0, 36, 46,120, 43,176,124,
/* 0x06a0 */ 120, 59,239,124, 20, 74, 67,126,120, 35,145,124, 88, 0,146, 65, /* 0x06a0 */ 120, 51,216,124, 0, 0, 85,233,120, 59,239,124, 20, 74, 67,126,
/* 0x06b0 */ 32, 0,234,232, 62, 4, 8, 85, 2, 0,136, 47, 20, 58,234,124, /* 0x06b0 */ 120, 35,145,124, 88, 0,146, 65, 32, 0,234,232, 62, 4, 8, 85,
/* 0x06c0 */ 72, 0,103,232, 80, 80, 99,124, 8, 0,158, 64, 16, 0,103,232, /* 0x06c0 */ 2, 0,136, 47, 20, 58,234,124, 72, 0,103,232, 80, 80, 99,124,
/* 0x06d0 */ 40, 0,135,232, 0, 0,160, 56, 50, 0,192, 56,255,255,224, 56, /* 0x06d0 */ 8, 0,158, 64, 16, 0,103,232, 40, 0,135,232, 0, 0,160, 56,
/* 0x06e0 */ 0, 0, 0, 57,169,252,255, 75, 0, 0, 0, 96, 16, 0, 92,161, /* 0x06e0 */ 50, 0,192, 56,255,255,224, 56, 0, 0, 0, 57,169,252,255, 75,
/* 0x06f0 */ 0, 0,224, 59, 2, 0,138, 47,220, 0,158, 65,120, 27,127,124, /* 0x06f0 */ 0, 0, 0, 96, 16, 0, 92,161, 0, 0,224, 59, 2, 0,138, 47,
/* 0x0700 */ 212, 0, 0, 72, 62, 4, 8, 85, 16, 0,224, 56, 3, 0,136, 47, /* 0x0700 */ 220, 0,158, 65,120, 27,127,124,212, 0, 0, 72, 62, 4, 8, 85,
/* 0x0710 */ 8, 0,158, 64, 0, 0,224, 56, 56, 0,188,160, 34, 0,231, 56, /* 0x0710 */ 16, 0,224, 56, 3, 0,136, 47, 8, 0,158, 64, 0, 0,224, 56,
/* 0x0720 */ 120, 83, 67,125, 32, 0,230,120,120,147, 68,126, 1, 0,165, 56, /* 0x0720 */ 56, 0,188,160, 34, 0,231, 56,120, 83, 67,125, 32, 0,230,120,
/* 0x0730 */ 0, 0, 0, 57,166, 3,169,124,255,255,224, 59, 60, 0, 64, 66, /* 0x0730 */ 120,147, 68,126, 1, 0,165, 56, 0, 0, 0, 57,166, 3,169,124,
/* 0x0740 */ 0, 0,164,128, 1, 0,133, 47, 40, 0,158, 64, 16, 0,100,233, /* 0x0740 */ 255,255,224, 59, 60, 0, 64, 66, 0, 0,164,128, 1, 0,133, 47,
/* 0x0750 */ 64, 88,191,127, 8, 0,157, 64,120, 91,127,125, 40, 0,164,232, /* 0x0750 */ 40, 0,158, 64, 16, 0,100,233, 64, 88,191,127, 8, 0,157, 64,
/* 0x0760 */ 20, 42,171,124, 64, 40,168,127, 8, 0,156, 64,120, 43,168,124, /* 0x0760 */ 120, 91,127,125, 40, 0,164,232, 20, 42,171,124, 64, 40,168,127,
/* 0x0770 */ 56, 0,132, 56,200,255,255, 75,248,240,196,127, 56,240,255,127, /* 0x0770 */ 8, 0,156, 64,120, 43,168,124, 56, 0,132, 56,200,255,255, 75,
/* 0x0780 */ 20, 66, 4,125,227,231,233,120, 80, 64, 31,125, 56,240, 4,125, /* 0x0780 */ 248,240,196,127, 56,240,255,127, 20, 66, 4,125,227,231,233,120,
/* 0x0790 */ 28, 0,130, 64, 0, 0,191, 47, 28, 0,158, 64, 0, 0,170, 47, /* 0x0790 */ 80, 64, 31,125, 56,240, 4,125, 28, 0,130, 64, 0, 0,191, 47,
/* 0x07a0 */ 24, 0,158, 65, 50, 0,192, 56, 16, 0, 0, 72,120,251,227,127, /* 0x07a0 */ 28, 0,158, 64, 0, 0,170, 47, 24, 0,158, 65, 50, 0,192, 56,
/* 0x07b0 */ 8, 0, 0, 72, 0, 0, 96, 56, 0, 0,160, 56,180, 7,198,124, /* 0x07b0 */ 16, 0, 0, 72,120,251,227,127, 8, 0, 0, 72, 0, 0, 96, 56,
/* 0x07c0 */ 255,255,224, 56, 0, 0, 0, 57,197,251,255, 75, 0, 0, 0, 96, /* 0x07c0 */ 0, 0,160, 56,180, 7,198,124,255,255,224, 56, 0, 0, 0, 57,
/* 0x07d0 */ 80, 24,255,127,120, 0, 63, 57,248,240,211,127,144, 0, 33,249, /* 0x07d0 */ 197,251,255, 75, 0, 0, 0, 96, 80, 24,255,127,120, 0, 63, 57,
/* 0x07e0 */ 164, 7, 9,123,248,240,222,127,152, 0, 33,249,136, 0,193,251, /* 0x07e0 */ 248,240,211,127,144, 0, 33,249,164, 7, 9,123,248,240,222,127,
/* 0x07f0 */ 3, 0, 63, 57, 1, 0,224, 62,160, 0, 33,249,228,131,247,122, /* 0x07f0 */ 152, 0, 33,249,136, 0,193,251, 3, 0, 63, 57, 1, 0,224, 62,
/* 0x0800 */ 0, 0, 32, 59, 1, 0,247, 98, 56, 0, 92,161, 0,200,138,127, /* 0x0800 */ 160, 0, 33,249,228,131,247,122, 0, 0, 32, 59, 1, 0,247, 98,
/* 0x0810 */ 244, 2,157, 64, 0, 0, 82,129, 36, 0,146, 65, 6, 0,138, 47, /* 0x0810 */ 56, 0, 92,161, 0,200,138,127,244, 2,157, 64, 0, 0, 82,129,
/* 0x0820 */ 28, 0,158, 64, 16, 0,178,232,120,195, 3,127, 3, 0,128, 56, /* 0x0820 */ 36, 0,146, 65, 6, 0,138, 47, 28, 0,158, 64, 16, 0,178,232,
/* 0x0830 */ 20, 42,191,124,217,253,255, 75,188, 2, 0, 72, 1, 0,138, 47, /* 0x0830 */ 120,195, 3,127, 3, 0,128, 56, 20, 42,191,124,217,253,255, 75,
/* 0x0840 */ 180, 2,158, 64, 40, 0, 82,233, 0, 0,170, 47,168, 2,158, 65, /* 0x0840 */ 188, 2, 0, 72, 1, 0,138, 47,180, 2,158, 64, 40, 0, 82,233,
/* 0x0850 */ 4, 0, 82,131, 81,115, 32, 61, 64, 98, 41, 97,250, 22, 90, 87, /* 0x0850 */ 0, 0,170, 47,168, 2,158, 65, 4, 0, 82,131, 81,115, 32, 61,
/* 0x0860 */ 48,212, 58,125,126, 7, 84, 87, 32, 0,137,122,128, 0, 33,249, /* 0x0860 */ 64, 98, 41, 97,250, 22, 90, 87, 48,212, 58,125,126, 7, 84, 87,
/* 0x0870 */ 76, 0,146, 65, 8, 0, 82,233, 0, 0,170, 47, 64, 0,158, 64, /* 0x0870 */ 32, 0,137,122,128, 0, 33,249, 76, 0,146, 65, 8, 0, 82,233,
/* 0x0880 */ 32, 0, 92,233, 16, 0,178,232,120,195, 3,127, 3, 0,128, 56, /* 0x0880 */ 0, 0,170, 47, 64, 0,158, 64, 32, 0, 92,233, 16, 0,178,232,
/* 0x0890 */ 20, 82, 95,125, 20, 42,170,124,117,253,255, 75, 56, 0,188,160, /* 0x0890 */ 120,195, 3,127, 3, 0,128, 56, 20, 82, 95,125, 20, 42,170,124,
/* 0x08a0 */ 120,195, 3,127, 5, 0,128, 56,101,253,255, 75, 54, 0,188,160, /* 0x08a0 */ 117,253,255, 75, 56, 0,188,160,120,195, 3,127, 5, 0,128, 56,
/* 0x08b0 */ 120,195, 3,127, 4, 0,128, 56, 85,253,255, 75, 16, 0,210,235, /* 0x08b0 */ 101,253,255, 75, 54, 0,188,160,120,195, 3,127, 4, 0,128, 56,
/* 0x08c0 */ 32, 0,114,235, 40, 0,210,234,136, 0, 33,233, 20,242,223,127, /* 0x08c0 */ 85,253,255, 75, 16, 0,210,235, 32, 0,114,235, 40, 0,210,234,
/* 0x08d0 */ 112, 0, 97,251, 56,152,200,127, 20,218,190,127,120, 0,193,251, /* 0x08d0 */ 136, 0, 33,233, 20,242,223,127,112, 0, 97,251, 56,152,200,127,
/* 0x08e0 */ 32, 0, 8,121, 20,178,222,126, 20,218,104,127, 80,240,200,127, /* 0x08e0 */ 20,218,190,127,120, 0,193,251, 32, 0, 8,121, 20,178,222,126,
/* 0x08f0 */ 20,218, 94,125,208, 0, 74,125, 56, 72, 74,125, 20,218,106,127, /* 0x08f0 */ 20,218,104,127, 80,240,200,127, 20,218, 94,125,208, 0, 74,125,
/* 0x0900 */ 12, 0,146, 64, 0, 0,160, 56, 8, 0, 0, 72, 2, 0,160, 56, /* 0x0900 */ 56, 72, 74,125, 20,218,106,127, 12, 0,146, 64, 0, 0,160, 56,
/* 0x0910 */ 120,163,165,124, 16, 0,146, 64,255,255, 64, 57, 32, 0, 74,121, /* 0x0910 */ 8, 0, 0, 72, 2, 0,160, 56,120,163,165,124, 16, 0,146, 64,
/* 0x0920 */ 16, 0, 0, 72,255,255, 64, 61,251,255, 74, 97, 32, 0, 74,121, /* 0x0920 */ 255,255, 64, 57, 32, 0, 74,121, 16, 0, 0, 72,255,255, 64, 61,
/* 0x0930 */ 56, 40, 69,125, 16, 0,146, 64,120,131, 7,126, 18, 0,192, 56, /* 0x0930 */ 251,255, 74, 97, 32, 0, 74,121, 56, 40, 69,125, 16, 0,146, 64,
/* 0x0940 */ 12, 0, 0, 72, 50, 0,192, 56,255,255,224, 56, 8, 0, 82,233, /* 0x0940 */ 120,131, 7,126, 18, 0,192, 56, 12, 0, 0, 72, 50, 0,192, 56,
/* 0x0950 */ 120,243,195,127,120,219,100,127, 80, 80, 8,125, 49,250,255, 75, /* 0x0950 */ 255,255,224, 56, 8, 0, 82,233,120,243,195,127,120,219,100,127,
/* 0x0960 */ 0, 0, 0, 96, 0, 24,190,127, 16, 0,254, 65,127, 0, 96, 56, /* 0x0960 */ 80, 80, 8,125, 49,250,255, 75, 0, 0, 0, 96, 0, 24,190,127,
/* 0x0970 */ 77,250,255, 75, 0, 0, 0, 96, 24, 0,146, 65,120,139, 35,126, /* 0x0970 */ 16, 0,254, 65,127, 0, 96, 56, 77,250,255, 75, 0, 0, 0, 96,
/* 0x0980 */ 112, 0,129, 56,120,123,229,125,120,115,198,125,225,250,255, 75, /* 0x0980 */ 24, 0,146, 65,120,139, 35,126,112, 0,129, 56,120,123,229,125,
/* 0x0990 */ 227,255, 73,123, 52, 0,130, 65,208, 0, 93,125,255,255, 29, 57, /* 0x0990 */ 120,115,198,125,225,250,255, 75,227,255, 73,123, 52, 0,130, 65,
/* 0x09a0 */ 56,152, 74,125, 33, 0, 74,121, 12, 0,130, 64, 20, 82,189,127, /* 0x09a0 */ 208, 0, 93,125,255,255, 29, 57, 56,152, 74,125, 33, 0, 74,121,
/* 0x09b0 */ 24, 0, 0, 72,166, 3, 73,125, 0, 0,224, 56, 1, 0,232,156, /* 0x09b0 */ 12, 0,130, 64, 20, 82,189,127, 24, 0, 0, 72,166, 3, 73,125,
/* 0x09c0 */ 252,255, 0, 66,232,255,255, 75,252, 0,146, 65, 0, 0, 82,233, /* 0x09c0 */ 0, 0,224, 56, 1, 0,232,156,252,255, 0, 66,232,255,255, 75,
/* 0x09d0 */ 192, 7, 74,121, 0,184,170,127,208, 0,158, 64, 40, 0, 82,233, /* 0x09d0 */ 252, 0,146, 65, 0, 0, 82,233,192, 7, 74,121, 0,184,170,127,
/* 0x09e0 */ 32, 0,242,232, 16, 0, 18,233, 0, 56,170,127, 44, 0,158, 64, /* 0x09e0 */ 208, 0,158, 64, 40, 0, 82,233, 32, 0,242,232, 16, 0, 18,233,
/* 0x09f0 */ 160, 0, 33,233, 20, 82, 73,127, 20, 66, 90,127,100, 7, 90,123, /* 0x09f0 */ 0, 56,170,127, 44, 0,158, 64,160, 0, 33,233, 20, 82, 73,127,
/* 0x0a00 */ 208, 0, 90,125, 56,152, 74,125, 15, 0,138, 43, 12, 0,157, 64, /* 0x0a00 */ 20, 66, 90,127,100, 7, 90,123,208, 0, 90,125, 56,152, 74,125,
/* 0x0a10 */ 0, 0, 64, 57, 60, 0, 0, 72, 8, 0, 82,233, 0, 0,170, 47, /* 0x0a10 */ 15, 0,138, 43, 12, 0,157, 64, 0, 0, 64, 57, 60, 0, 0, 72,
/* 0x0a20 */ 8, 1,158, 65, 0, 0, 96, 56, 0, 16,128, 56, 3, 0,160, 56, /* 0x0a20 */ 8, 0, 82,233, 0, 0,170, 47, 8, 1,158, 65, 0, 0, 96, 56,
/* 0x0a30 */ 34, 0,192, 56,255,255,224, 56, 0, 0, 0, 57, 81,249,255, 75, /* 0x0a30 */ 0, 16,128, 56, 3, 0,160, 56, 34, 0,192, 56,255,255,224, 56,
/* 0x0a40 */ 0, 0, 0, 96,121, 27,122,124, 96, 0,130, 65, 1, 0, 64, 57, /* 0x0a40 */ 0, 0, 0, 57, 81,249,255, 75, 0, 0, 0, 96,121, 27,122,124,
/* 0x0a50 */ 0, 68, 32, 61,128, 56, 0, 61, 2, 0, 41, 97, 0, 0,170, 47, /* 0x0a50 */ 96, 0,130, 65, 1, 0, 64, 57, 0, 68, 32, 61,128, 56, 0, 61,
/* 0x0a60 */ 8, 0, 26,145, 0, 0, 58,145,236,127, 32, 61,120,251, 41, 97, /* 0x0a60 */ 2, 0, 41, 97, 0, 0,170, 47, 8, 0, 26,145, 0, 0, 58,145,
/* 0x0a70 */ 4, 0, 58,145,128, 78, 32, 61, 32, 0, 41, 97, 12, 0, 58,145, /* 0x0a70 */ 236,127, 32, 61,120,251, 41, 97, 4, 0, 58,145,128, 78, 32, 61,
/* 0x0a80 */ 24, 0,158, 65,120,211, 67,127, 16, 0,128, 56, 5, 0,160, 56, /* 0x0a80 */ 32, 0, 41, 97, 12, 0, 58,145, 24, 0,158, 65,120,211, 67,127,
/* 0x0a90 */ 21,249,255, 75, 0, 0, 0, 96,152, 0, 97,232, 0, 0,128, 56, /* 0x0a90 */ 16, 0,128, 56, 5, 0,160, 56, 21,249,255, 75, 0, 0, 0, 96,
/* 0x0aa0 */ 120,211, 69,127,105,251,255, 75,128, 0,161,232,120,243,195,127, /* 0x0aa0 */ 152, 0, 97,232, 0, 0,128, 56,120,211, 69,127,105,251,255, 75,
/* 0x0ab0 */ 120,219,100,127,241,248,255, 75, 0, 0, 0, 96, 0, 0,163, 47, /* 0x0ab0 */ 128, 0,161,232,120,243,195,127,120,219,100,127,241,248,255, 75,
/* 0x0ac0 */ 172,254,222, 64, 64,176,189,127, 44, 0,156, 64,120,235,163,127, /* 0x0ac0 */ 0, 0, 0, 96, 0, 0,163, 47,172,254,222, 64, 64,176,189,127,
/* 0x0ad0 */ 80,176,157,124,180, 7,133,126, 50, 0,192, 56,255,255,224, 56, /* 0x0ad0 */ 44, 0,156, 64,120,235,163,127, 80,176,157,124,180, 7,133,126,
/* 0x0ae0 */ 0, 0, 0, 57,169,248,255, 75, 0, 0, 0, 96, 0, 24,189,127, /* 0x0ae0 */ 50, 0,192, 56,255,255,224, 56, 0, 0, 0, 57,169,248,255, 75,
/* 0x0af0 */ 124,254,222, 64, 1, 0, 57, 59, 56, 0, 82, 58,180, 7, 57,127, /* 0x0af0 */ 0, 0, 0, 96, 0, 24,189,127,124,254,222, 64, 1, 0, 57, 59,
/* 0x0b00 */ 8,253,255, 75, 0, 0,181, 47, 8, 0,158, 65, 0, 0,245,251, /* 0x0b00 */ 56, 0, 82, 58,180, 7, 57,127, 8,253,255, 75, 0, 0,181, 47,
/* 0x0b10 */ 64, 1, 33, 56, 24, 0,124,232, 20, 26,127,124, 8, 0,129,129, /* 0x0b10 */ 8, 0,158, 65, 0, 0,245,251, 64, 1, 33, 56, 24, 0,124,232,
/* 0x0b20 */ 32,129,144,125,228, 1, 0, 72,144, 0, 33,233, 20, 66, 73,127, /* 0x0b20 */ 20, 26,127,124, 8, 0,129,129, 32,129,144,125,228, 1, 0, 72,
/* 0x0b30 */ 24, 0, 90, 59, 28,255,255, 75, 0, 0, 0, 0, 0, 0, 0, 3, /* 0x0b30 */ 144, 0, 33,233, 20, 66, 73,127, 24, 0, 90, 59, 28,255,255, 75,
/* 0x0b40 */ 128, 18, 0, 0,166, 2, 8,124,153, 1, 0, 72, 17,255, 33,248, /* 0x0b40 */ 0, 0, 0, 0, 0, 0, 0, 3,128, 18, 0, 0,166, 2, 8,124,
/* 0x0b50 */ 120, 75, 61,125, 0, 0, 35,129,120, 43,191,124,120, 51,218,124, /* 0x0b50 */ 153, 1, 0, 72, 17,255, 33,248,120, 75, 61,125, 0, 0, 35,129,
/* 0x0b60 */ 0, 0,192, 56,120, 83, 88,125,144, 0, 33,249,152, 0,161,248, /* 0x0b60 */ 120, 43,191,124,120, 51,218,124, 0, 0,192, 56,120, 83, 88,125,
/* 0x0b70 */ 120, 59,229,124, 64, 0,159, 59, 4, 0, 35,129,120, 0, 97,248, /* 0x0b70 */ 144, 0, 33,249,152, 0,161,248,120, 59,229,124, 64, 0,159, 59,
/* 0x0b80 */ 0, 0,192, 59,136, 0, 97,248,128, 0,129,248, 12, 0, 41, 57, /* 0x0b80 */ 4, 0, 35,129,120, 0, 97,248, 0, 0,192, 59,136, 0, 97,248,
/* 0x0b90 */ 160, 0,225,248,168, 0, 1,249,112, 0, 33,249,112, 0, 97, 56, /* 0x0b90 */ 128, 0,129,248, 12, 0, 41, 57,160, 0,225,248,168, 0, 1,249,
/* 0x0ba0 */ 144, 0,129, 56,201,248,255, 75,160, 0,225,232,168, 0, 1,233, /* 0x0ba0 */ 112, 0, 33,249,112, 0, 97, 56,144, 0,129, 56,201,248,255, 75,
/* 0x0bb0 */ 128, 0,129, 56, 0, 0,160, 56,120,211, 70,127,120,235,169,127, /* 0x0bb0 */ 160, 0,225,232,168, 0, 1,233,128, 0,129, 56, 0, 0,160, 56,
/* 0x0bc0 */ 120,195, 10,127,120,251,227,127,157,250,255, 75, 9, 0,128, 56, /* 0x0bc0 */ 120,211, 70,127,120,235,169,127,120,195, 10,127,120,251,227,127,
/* 0x0bd0 */ 120, 27,123,124,120,211, 67,127,120,219,101,127, 49,250,255, 75, /* 0x0bd0 */ 157,250,255, 75, 9, 0,128, 56,120, 27,123,124,120,211, 67,127,
/* 0x0be0 */ 56, 0, 63,161, 64,240,137,127,184, 0,157, 64, 0, 0, 60,129, /* 0x0be0 */ 120,219,101,127, 49,250,255, 75, 56, 0, 63,161, 64,240,137,127,
/* 0x0bf0 */ 3, 0,137, 47,156, 0,158, 64, 16, 0,124,232, 0, 0, 61,233, /* 0x0bf0 */ 184, 0,157, 64, 0, 0, 60,129, 3, 0,137, 47,156, 0,158, 64,
/* 0x0c00 */ 0, 0,128, 56, 0, 0,160, 56, 20, 74, 99,124,209,247,255, 75, /* 0x0c00 */ 16, 0,124,232, 0, 0, 61,233, 0, 0,128, 56, 0, 0,160, 56,
/* 0x0c10 */ 0, 0, 0, 96, 0, 0,131, 47,120, 27,121,124, 16, 0,252, 64, /* 0x0c10 */ 20, 74, 99,124,209,247,255, 75, 0, 0, 0, 96, 0, 0,131, 47,
/* 0x0c20 */ 127, 0, 96, 56,153,247,255, 75, 0, 0, 0, 96,120,251,228,127, /* 0x0c20 */ 120, 27,121,124, 16, 0,252, 64,127, 0, 96, 56,153,247,255, 75,
/* 0x0c30 */ 0, 4,160, 56,161,247,255, 75, 0, 0, 0, 96, 0, 4,163, 47, /* 0x0c30 */ 0, 0, 0, 96,120,251,228,127, 0, 4,160, 56,161,247,255, 75,
/* 0x0c40 */ 224,255,222, 64, 0, 0, 32, 57, 0, 0,128, 56, 0, 0, 61,249, /* 0x0c40 */ 0, 0, 0, 96, 0, 4,163, 47,224,255,222, 64, 0, 0, 32, 57,
/* 0x0c50 */ 120,203, 37,127, 0, 0,192, 56, 0, 0,224, 56, 0, 0, 0, 57, /* 0x0c50 */ 0, 0,128, 56, 0, 0, 61,249,120,203, 37,127, 0, 0,192, 56,
/* 0x0c60 */ 120,235,169,127,120,195, 10,127,120,251,227,127,249,249,255, 75, /* 0x0c60 */ 0, 0,224, 56, 0, 0, 0, 57,120,235,169,127,120,195, 10,127,
/* 0x0c70 */ 0, 0,189,232, 7, 0,128, 56,120, 27,123,124,120,211, 67,127, /* 0x0c70 */ 120,251,227,127,249,249,255, 75, 0, 0,189,232, 7, 0,128, 56,
/* 0x0c80 */ 141,249,255, 75,120,203, 35,127, 93,247,255, 75, 0, 0, 0, 96, /* 0x0c80 */ 120, 27,123,124,120,211, 67,127,141,249,255, 75,120,203, 35,127,
/* 0x0c90 */ 1, 0,222, 59, 56, 0,156, 59, 32, 0,222,123, 68,255,255, 75, /* 0x0c90 */ 93,247,255, 75, 0, 0, 0, 96, 1, 0,222, 59, 56, 0,156, 59,
/* 0x0ca0 */ 240, 0, 33, 56,120,219, 99,127,136, 0, 0, 72, 0, 0, 0, 0, /* 0x0ca0 */ 32, 0,222,123, 68,255,255, 75,240, 0, 33, 56,120,219, 99,127,
/* 0x0cb0 */ 0, 0, 0, 1,128, 8, 0, 0,112,255,193,249,120,255,225,249, /* 0x0cb0 */ 136, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1,128, 8, 0, 0,
/* 0x0cc0 */ 128,255, 1,250,136,255, 33,250,144,255, 65,250,152,255, 97,250, /* 0x0cc0 */ 112,255,193,249,120,255,225,249,128,255, 1,250,136,255, 33,250,
/* 0x0cd0 */ 160,255,129,250,168,255,161,250,176,255,193,250,184,255,225,250, /* 0x0cd0 */ 144,255, 65,250,152,255, 97,250,160,255,129,250,168,255,161,250,
/* 0x0ce0 */ 192,255, 1,251,200,255, 33,251,208,255, 65,251,216,255, 97,251, /* 0x0ce0 */ 176,255,193,250,184,255,225,250,192,255, 1,251,200,255, 33,251,
/* 0x0cf0 */ 224,255,129,251,232,255,161,251,240,255,193,251,248,255,225,251, /* 0x0cf0 */ 208,255, 65,251,216,255, 97,251,224,255,129,251,232,255,161,251,
/* 0x0d00 */ 16, 0, 1,248, 32, 0,128, 78,112,255,193,233,120,255,225,233, /* 0x0d00 */ 240,255,193,251,248,255,225,251, 16, 0, 1,248, 32, 0,128, 78,
/* 0x0d10 */ 128,255, 1,234,136,255, 33,234,144,255, 65,234,152,255, 97,234, /* 0x0d10 */ 112,255,193,233,120,255,225,233,128,255, 1,234,136,255, 33,234,
/* 0x0d20 */ 160,255,129,234,168,255,161,234,176,255,193,234,184,255,225,234, /* 0x0d20 */ 144,255, 65,234,152,255, 97,234,160,255,129,234,168,255,161,234,
/* 0x0d30 */ 192,255, 1,235,200,255, 33,235,208,255, 65,235,216,255, 97,235, /* 0x0d30 */ 176,255,193,234,184,255,225,234,192,255, 1,235,200,255, 33,235,
/* 0x0d40 */ 224,255,129,235, 16, 0, 1,232,232,255,161,235,166, 3, 8,124, /* 0x0d40 */ 208,255, 65,235,216,255, 97,235,224,255,129,235, 16, 0, 1,232,
/* 0x0d50 */ 240,255,193,235,248,255,225,235, 32, 0,128, 78, 0, 0, 0, 0, /* 0x0d50 */ 232,255,161,235,166, 3, 8,124,240,255,193,235,248,255,225,235,
/* 0x0d60 */ 252, 3, 16, 0, 0, 0, 0, 0, 96,141, 16, 0, 0, 0, 0, 0, /* 0x0d60 */ 32, 0,128, 78, 0, 0, 0, 0, 4, 4, 16, 0, 0, 0, 0, 0,
/* 0x0d70 */ 108, 4, 16, 0, 0, 0, 0, 0, 96,141, 16, 0, 0, 0, 0, 0, /* 0x0d70 */ 104,141, 16, 0, 0, 0, 0, 0,116, 4, 16, 0, 0, 0, 0, 0,
/* 0x0d80 */ 12, 6, 16, 0, 0, 0, 0, 0, 96,141, 16, 0, 0, 0, 0, 0, /* 0x0d80 */ 104,141, 16, 0, 0, 0, 0, 0, 20, 6, 16, 0, 0, 0, 0, 0,
/* 0x0d90 */ 100, 6, 16, 0, 0, 0, 0, 0, 96,141, 16, 0, 0, 0, 0, 0, /* 0x0d90 */ 104,141, 16, 0, 0, 0, 0, 0,108, 6, 16, 0, 0, 0, 0, 0,
/* 0x0da0 */ 68, 11, 16, 0, 0, 0, 0, 0, 96,141, 16 /* 0x0da0 */ 104,141, 16, 0, 0, 0, 0, 0, 76, 11, 16, 0, 0, 0, 0, 0,
/* 0x0db0 */ 104,141, 16
}; };
+5 -10
View File
@@ -211,14 +211,6 @@ msg_SELinux:
L70: L70:
.asciz "PROT_EXEC|PROT_WRITE failed.\n" .asciz "PROT_EXEC|PROT_WRITE failed.\n"
L71: L71:
// IDENTSTR goes here
section ELFMAINZ
msg_proc_self_exe:
push $14; pop %arg3 // length
push %arg1; pop %arg2 // "/proc/self/exe"
jmp L75
L72: L72:
pop %arg2 // message text pop %arg2 // message text
L75: L75:
@@ -230,12 +222,15 @@ die:
push $ __NR_exit; pop %rax push $ __NR_exit; pop %rax
syscall syscall
// IDENTSTR goes here
section ELFMAINZ
// Decompress the rest of this loader, and jump to it. // Decompress the rest of this loader, and jump to it.
unfold: // IN: rbp= &f_exp; rsp/ &proc_self_exe,%entry unfold: // IN: rbp= &f_exp; rsp/ &proc_self_exe,%entry
pop %arg1 // &proc_self_exe pop %arg1 // &proc_self_exe
sub %arg2l,%arg2l // O_RDONLY sub %arg2l,%arg2l // O_RDONLY
push $__NR_open; pop %rax push $__NR_open; pop %rax; syscall
syscall; test %eax,%eax; js msg_proc_self_exe // test %eax,%eax; js msg_proc_self_exe // no longer fatal
push %rax // save fd push %rax // save fd
lea -4+ FOLD - proc_self_exe(%arg1),%rsi // &O_BINFO | is_ptinterp lea -4+ FOLD - proc_self_exe(%arg1),%rsi // &O_BINFO | is_ptinterp
+2 -1
View File
@@ -164,6 +164,7 @@ p_memsz= 5*NBPW
movq %r13,%arg1; call munmap # discard C_TEXT compressed data movq %r13,%arg1; call munmap # discard C_TEXT compressed data
// Map 1 page of /proc/self/exe so that the symlink does not disappear. // Map 1 page of /proc/self/exe so that the symlink does not disappear.
test %ebx,%ebx; js no_pse_map
subq %arg6,%arg6 # 0 offset subq %arg6,%arg6 # 0 offset
mov %ebx,%arg5l # fd mov %ebx,%arg5l # fd
push $MAP_PRIVATE; pop %arg4 push $MAP_PRIVATE; pop %arg4
@@ -174,7 +175,7 @@ p_memsz= 5*NBPW
mov %ebx,%edi # fd mov %ebx,%edi # fd
call close call close
no_pse_map:
pop %arg1 # ADRU: unfolded upx_main etc. pop %arg1 # ADRU: unfolded upx_main etc.
pop %arg2 # LENU pop %arg2 # LENU
push $__NR_munmap; pop %rax push $__NR_munmap; pop %rax
+1 -9
View File
@@ -234,14 +234,6 @@ hex:
.balign 4 .balign 4
#endif /*}*/ #endif /*}*/
L75:
mov r2,#14 @ length
adr r1,proc_self_exe
mov r0,#FD_stderr
do_sys7t __NR_write
mov r0,#127
do_sys7t __NR_exit
main: // IN: lr= &f_exp main: // IN: lr= &f_exp
ldr r0,[lr,#sz_pack2 - f_exp] @ sz_pack2 ldr r0,[lr,#sz_pack2 - f_exp] @ sz_pack2
add r6, lr,#sz_pack2 - f_exp @ &sz_pack2 add r6, lr,#sz_pack2 - f_exp @ &sz_pack2
@@ -254,7 +246,7 @@ main: // IN: lr= &f_exp
adr r0,proc_self_exe adr r0,proc_self_exe
mov r1,#O_RDONLY mov r1,#O_RDONLY
do_sys7t __NR_open do_sys7t __NR_open
cmp r0,#0; blt L75 // cmp r0,#0; blt L75 // missing /proc/self/exe is no longer fatal
str r0,[sp,#F_fd] str r0,[sp,#F_fd]
ldr r3,[lr,#mflg - f_exp] ldr r3,[lr,#mflg - f_exp]
+2 -1
View File
@@ -198,6 +198,7 @@ F_delta= 3*4
// Map 1 page of /proc/self/exe so that it does not disappear // Map 1 page of /proc/self/exe so that it does not disappear
ldr r4,[sp],#4 @ pop r4,F_fd ldr r4,[sp],#4 @ pop r4,F_fd
cmp r4,#0; blt no_map_pse
mov r5,#0 @ SEEK_SET offset mov r5,#0 @ SEEK_SET offset
stmdb sp!,{r4,r5} @ arg5,arg6 calling convention stmdb sp!,{r4,r5} @ arg5,arg6 calling convention
mov r3,#MAP_PRIVATE mov r3,#MAP_PRIVATE
@@ -207,7 +208,7 @@ F_delta= 3*4
call mmap @ no error check: cannot recover call mmap @ no error check: cannot recover
ldmia sp!,{r0,r1} @ fd, offset ldmia sp!,{r0,r1} @ fd, offset
call close call close
no_map_pse:
#if DEBUG //{ #if DEBUG //{
stmdb sp!,{TRACE_REGS}; mov r0,#0x15; bl trace stmdb sp!,{TRACE_REGS}; mov r0,#0x15; bl trace
#endif //} #endif //}
+1 -9
View File
@@ -343,14 +343,6 @@ zfind:
ldr x1,[x0],#NBPW; cbnz x1,zfind ldr x1,[x0],#NBPW; cbnz x1,zfind
ret ret
L75:
mov w2,#14 // length
adr x1,proc_self_exe
mov w0,#FD_stderr
do_sys __NR_write
mov w0,#127
do_sys __NR_exit
main: main:
mov xfexp,lr mov xfexp,lr
mov x0,sp; call zfind // x0= &envp mov x0,sp; call zfind // x0= &envp
@@ -370,7 +362,7 @@ main:
adr x1,proc_self_exe adr x1,proc_self_exe
mov w2,O_RDONLY mov w2,O_RDONLY
do_sys __NR_openat; mov wfd,w0 do_sys __NR_openat; mov wfd,w0
cmp w0,#0; blt L75 // cmp w0,#0; blt L75 // no longer fatal
call unfold call unfold
LxFOLD: LxFOLD:
+2 -1
View File
@@ -186,6 +186,7 @@ xPMASK .req x20
// Map 1 page of /proc/self/exe so that munmap does not remove all references // Map 1 page of /proc/self/exe so that munmap does not remove all references
mov x5,#0 // offset mov x5,#0 // offset
mov w4,wfd // fd mov w4,wfd // fd
cmp w4,#0; blt no_map_pse
mov w3,#MAP_PRIVATE mov w3,#MAP_PRIVATE
mov w2,#PROT_READ mov w2,#PROT_READ
mov x1,#PAGE_SIZE mov x1,#PAGE_SIZE
@@ -194,7 +195,7 @@ xPMASK .req x20
mov w0,wfd // fd mov w0,wfd // fd
call close call close
no_map_pse:
mov lr,xfexp // entry mov lr,xfexp // entry
mov x0,xADRU mov x0,xADRU
mov w1,wLENU mov w1,wLENU
+4 -1
View File
@@ -207,6 +207,9 @@ F_fd= 6*4 // frame offset to fd
push edi // fd, auxv, ADRU, LENU, entry, argc push edi // fd, auxv, ADRU, LENU, entry, argc
// Map one page of /proc/self/exe so that symlink does not disappear // Map one page of /proc/self/exe so that symlink does not disappear
pop ebx // fd in case no_pse_map
test edi,edi; js no_pse_map
push ebx // restore fd
sub ebp,ebp // 0 block in file sub ebp,ebp // 0 block in file
// edi has fd // edi has fd
push MAP_PRIVATE; pop esi push MAP_PRIVATE; pop esi
@@ -217,7 +220,7 @@ F_fd= 6*4 // frame offset to fd
pop ebx // fd; auxv, LENU, ADRU, entry, argc pop ebx // fd; auxv, LENU, ADRU, entry, argc
push __NR_close; pop eax; int 0x80 push __NR_close; pop eax; int 0x80
no_pse_map:
pop edi // auxv table pop edi // auxv table
sub eax,eax // 0, also AT_NULL sub eax,eax // 0, also AT_NULL
.byte 0x3c // "cmpb al, byte ..." like "jmp 1+L60" but 1 byte shorter .byte 0x3c // "cmpb al, byte ..." like "jmp 1+L60" but 1 byte shorter
+3 -2
View File
@@ -207,7 +207,8 @@ p_memsz= 5*NBPW
// Map 1 page of /proc/self/exe so that munmap does not remove all references // Map 1 page of /proc/self/exe so that munmap does not remove all references
lw a4,F_fd(sp) lw a4,F_fd(sp)
move a5,$0 // offset move a5,$0 // offset
bltz a4,no_map_pse
sw a4,a4_sys(sp) sw a4,a4_sys(sp)
sw a5,a5_sys(sp) sw a5,a5_sys(sp)
li a3,MAP_PRIVATE li a3,MAP_PRIVATE
@@ -218,7 +219,7 @@ p_memsz= 5*NBPW
// close /proc/self/exe // close /proc/self/exe
lw a0,a4_sys(sp) // fd lw a0,a4_sys(sp) // fd
li v0,__NR_close; syscall li v0,__NR_close; syscall
no_map_pse:
lw a1,F_LENU(sp) # prepare for munmap() at escape hatch lw a1,F_LENU(sp) # prepare for munmap() at escape hatch
lw a0,F_ADRU(sp) lw a0,F_ADRU(sp)
addiu sp,sp,sp_frame addiu sp,sp,sp_frame
+2
View File
@@ -182,6 +182,7 @@ p_memsz= 5*NBPW
// first page of /proc/self/exe, to preserve it despite munmap(ADRU, LENU) // first page of /proc/self/exe, to preserve it despite munmap(ADRU, LENU)
li a5,0 // offset li a5,0 // offset
movr a4,r_fd movr a4,r_fd
cmpwi a4,0; blt no_map_pse
li a3,MAP_PRIVATE li a3,MAP_PRIVATE
li a2,PROT_READ li a2,PROT_READ
neg a1,r_PMASK // PAGE_SIZE neg a1,r_PMASK // PAGE_SIZE
@@ -190,6 +191,7 @@ p_memsz= 5*NBPW
// close /proc/self/exe // close /proc/self/exe
movr a0,r_fd movr a0,r_fd
call close call close
no_map_pse:
AT_NULL= 0 // <elf.h> AT_NULL= 0 // <elf.h>
a_type= 0 a_type= 0
@@ -231,6 +231,7 @@ p_memsz= 4+4+ 4*NBPW
// first page of /proc/self/exe, to preserve it despite munmap(ADRU, LENU) // first page of /proc/self/exe, to preserve it despite munmap(ADRU, LENU)
li a5,0 // offset li a5,0 // offset
movr a4,r_fd movr a4,r_fd
cmpwi a4,0; blt no_map_pse
li a3,MAP_PRIVATE li a3,MAP_PRIVATE
li a2,PROT_READ li a2,PROT_READ
neg a1,r_PMASK // PAGE_SIZE neg a1,r_PMASK // PAGE_SIZE
@@ -239,6 +240,7 @@ p_memsz= 4+4+ 4*NBPW
// close /proc/self/exe // close /proc/self/exe
movr a0,r_fd movr a0,r_fd
call close call close
no_map_pse:
AT_NULL= 0 // <elf.h> AT_NULL= 0 // <elf.h>
a_type= 0 a_type= 0
+4 -8
View File
@@ -12,8 +12,8 @@ Idx Name Size VMA LMA File off Algn
7 LZMA_DEC20 09f7 0 0 0d01 2**0 CONTENTS 7 LZMA_DEC20 09f7 0 0 0d01 2**0 CONTENTS
8 LZMA_DEC30 018 0 0 016f8 2**0 CONTENTS 8 LZMA_DEC30 018 0 0 016f8 2**0 CONTENTS
9 NRV_TAIL 0 0 0 01710 2**0 CONTENTS 9 NRV_TAIL 0 0 0 01710 2**0 CONTENTS
10 ELFMAINY 03a 0 0 01710 2**0 CONTENTS 10 ELFMAINY 04b 0 0 01710 2**0 CONTENTS
11 ELFMAINZ 0b1 0 0 0174a 2**0 CONTENTS 11 ELFMAINZ 095 0 0 0175b 2**0 CONTENTS
SYMBOL TABLE: SYMBOL TABLE:
0000000000000000 l d NRV_HEAD 0 NRV_HEAD 0000000000000000 l d NRV_HEAD 0 NRV_HEAD
0000000000000000 l d LZMA_DEC30 0 LZMA_DEC30 0000000000000000 l d LZMA_DEC30 0 LZMA_DEC30
@@ -32,7 +32,7 @@ SYMBOL TABLE:
RELOCATION RECORDS FOR [ELFMAINX]: RELOCATION RECORDS FOR [ELFMAINX]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
0000000000000003 R_X86_64_PC32 ELFMAINZ+0x0000000000000094 0000000000000003 R_X86_64_PC32 ELFMAINZ+0x0000000000000078
RELOCATION RECORDS FOR [NRV2E]: RELOCATION RECORDS FOR [NRV2E]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
@@ -53,10 +53,6 @@ RELOCATION RECORDS FOR [LZMA_ELF00]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
0000000000000006 R_X86_64_PC32 LZMA_DEC30+0x0000000000000012 0000000000000006 R_X86_64_PC32 LZMA_DEC30+0x0000000000000012
RELOCATION RECORDS FOR [ELFMAINY]:
OFFSET TYPE VALUE
0000000000000018 R_X86_64_PC32 ELFMAINZ+0x0000000000000003
RELOCATION RECORDS FOR [ELFMAINZ]: RELOCATION RECORDS FOR [ELFMAINZ]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
00000000000000ad R_X86_64_32 O_BINFO 0000000000000091 R_X86_64_32 O_BINFO
+45 -45
View File
@@ -8,60 +8,60 @@ Linker script and memory map
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc) 0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x00000000001000bc 0x8b0 .text 0x00000000001000bc 0x8b4
*(.text) *(.text)
.text 0x00000000001000bc 0x1b3 tmp/amd64-linux.elf-fold.o .text 0x00000000001000bc 0x1b7 tmp/amd64-linux.elf-fold.o
0x000000000010025f munmap 0x0000000000100263 munmap
0x0000000000100226 mmap 0x000000000010022a mmap
0x0000000000100267 write 0x000000000010026b write
0x000000000010026b read 0x000000000010026f read
0x000000000010023d Pprotect 0x0000000000100241 Pprotect
0x000000000010024f exit 0x0000000000100253 exit
0x0000000000100253 brk 0x0000000000100257 brk
0x000000000010025b open 0x000000000010025f open
0x0000000000100263 mprotect 0x0000000000100267 mprotect
0x0000000000100257 close 0x000000000010025b close
*fill* 0x000000000010026f 0x1 00 *fill* 0x0000000000100273 0x1 00
.text 0x0000000000100270 0x6fa tmp/amd64-linux.elf-main.o .text 0x0000000000100274 0x6fa tmp/amd64-linux.elf-main.o
0x0000000000100822 upx_main 0x0000000000100826 upx_main
*fill* 0x000000000010096a 0x2 00 *fill* 0x000000000010096e 0x2 00
.text 0x000000000010096c 0x0 tmp/amd64-expand.o .text 0x0000000000100970 0x0 tmp/amd64-expand.o
*(.data) *(.data)
.data 0x000000000010096c 0x0 tmp/amd64-linux.elf-fold.o .data 0x0000000000100970 0x0 tmp/amd64-linux.elf-fold.o
.data 0x000000000010096c 0x0 tmp/amd64-linux.elf-main.o .data 0x0000000000100970 0x0 tmp/amd64-linux.elf-main.o
.data 0x000000000010096c 0x0 tmp/amd64-expand.o .data 0x0000000000100970 0x0 tmp/amd64-expand.o
0x000000000010096c . = ALIGN (0x1) 0x0000000000100970 . = ALIGN (0x1)
0x000000000010096c __start_EXP_HEAD = . 0x0000000000100970 __start_EXP_HEAD = .
EXP_HEAD 0x000000000010096c 0xe0 EXP_HEAD 0x0000000000100970 0xe0
EXP_HEAD 0x000000000010096c 0xe0 tmp/amd64-expand.o EXP_HEAD 0x0000000000100970 0xe0 tmp/amd64-expand.o
0x000000000010096c f_expand 0x0000000000100970 f_expand
0x0000000000100a4c __stop_EXP_HEAD = . 0x0000000000100a50 __stop_EXP_HEAD = .
0x0000000000100a4c . = ALIGN (0x1) 0x0000000000100a50 . = ALIGN (0x1)
0x0000000000100a4c __start_NRV2E = . 0x0000000000100a50 __start_NRV2E = .
NRV2E 0x0000000000100a4c 0xe5 NRV2E 0x0000000000100a50 0xe5
NRV2E 0x0000000000100a4c 0xe5 tmp/amd64-expand.o NRV2E 0x0000000000100a50 0xe5 tmp/amd64-expand.o
0x0000000000100b31 __stop_NRV2E = . 0x0000000000100b35 __stop_NRV2E = .
0x0000000000100b31 . = ALIGN (0x1) 0x0000000000100b35 . = ALIGN (0x1)
0x0000000000100b31 __start_NRV2D = . 0x0000000000100b35 __start_NRV2D = .
NRV2D 0x0000000000100b31 0xd7 NRV2D 0x0000000000100b35 0xd7
NRV2D 0x0000000000100b31 0xd7 tmp/amd64-expand.o NRV2D 0x0000000000100b35 0xd7 tmp/amd64-expand.o
0x0000000000100c08 __stop_NRV2D = . 0x0000000000100c0c __stop_NRV2D = .
0x0000000000100c08 . = ALIGN (0x1) 0x0000000000100c0c . = ALIGN (0x1)
0x0000000000100c08 __start_NRV2B = . 0x0000000000100c0c __start_NRV2B = .
NRV2B 0x0000000000100c08 0xc1 NRV2B 0x0000000000100c0c 0xc1
NRV2B 0x0000000000100c08 0xc1 tmp/amd64-expand.o NRV2B 0x0000000000100c0c 0xc1 tmp/amd64-expand.o
0x0000000000100cc9 __stop_NRV2B = . 0x0000000000100ccd __stop_NRV2B = .
.data .data
.bss 0x0000000000100ccc 0x0 .bss 0x0000000000100cd0 0x0
.bss 0x0000000000100ccc 0x0 tmp/amd64-linux.elf-fold.o .bss 0x0000000000100cd0 0x0 tmp/amd64-linux.elf-fold.o
.bss 0x0000000000100ccc 0x0 tmp/amd64-linux.elf-main.o .bss 0x0000000000100cd0 0x0 tmp/amd64-linux.elf-main.o
.bss 0x0000000000100ccc 0x0 tmp/amd64-expand.o .bss 0x0000000000100cd0 0x0 tmp/amd64-expand.o
.rela.dyn 0x0000000000100cd0 0x0 .rela.dyn 0x0000000000100cd0 0x0
.rela.text 0x0000000000000000 0x0 tmp/amd64-linux.elf-fold.o .rela.text 0x0000000000000000 0x0 tmp/amd64-linux.elf-fold.o
+4 -5
View File
@@ -13,7 +13,7 @@ Idx Name Size VMA LMA File off Algn Flags
8 LZMA_DEC10 0478 0 0 0d44 2**0 CONTENTS 8 LZMA_DEC10 0478 0 0 0d44 2**0 CONTENTS
9 LZMA_DEC30 0 0 0 011bc 2**0 CONTENTS 9 LZMA_DEC30 0 0 0 011bc 2**0 CONTENTS
10 ELFMAINY 0 0 0 011bc 2**0 CONTENTS 10 ELFMAINY 0 0 0 011bc 2**0 CONTENTS
11 ELFMAINZ 0f0 0 0 011bc 2**2 CONTENTS 11 ELFMAINZ 0d0 0 0 011bc 2**2 CONTENTS
SYMBOL TABLE: SYMBOL TABLE:
00000000 l d NRV2E 0 NRV2E 00000000 l d NRV2E 0 NRV2E
00000000 l d NRV2D 0 NRV2D 00000000 l d NRV2D 0 NRV2D
@@ -35,7 +35,7 @@ SYMBOL TABLE:
00000000 g LZMA_DEC10 0 LzmaDecode 00000000 g LZMA_DEC10 0 LzmaDecode
00000000 g ELFMAINY 0 end_decompress 00000000 g ELFMAINY 0 end_decompress
00000000 *UND* 0 O_BINFO 00000000 *UND* 0 O_BINFO
000000f0 g ELFMAINZ 0 cpr0 000000d0 g ELFMAINZ 0 cpr0
RELOCATION RECORDS FOR [ELFMAINX]: RELOCATION RECORDS FOR [ELFMAINX]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
@@ -250,6 +250,5 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZ]: RELOCATION RECORDS FOR [ELFMAINZ]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
000000dc R_ARM_PC24 ELFMAINZ 000000c8 R_ARM_PC24 ELFMAINZ
000000e8 R_ARM_PC24 ELFMAINZ 000000cc R_ARM_ABS32 O_BINFO
000000ec R_ARM_ABS32 O_BINFO
+26 -26
View File
@@ -8,34 +8,34 @@ Linker script and memory map
0x0000000000008040 . = ((0x8000 + SIZEOF_HEADERS) + 0xc) 0x0000000000008040 . = ((0x8000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000008040 0xaa8 .text 0x0000000000008040 0xab0
*(.text) *(.text)
.text 0x0000000000008040 0x338 tmp/arm.v4a-linux.elf-fold.o .text 0x0000000000008040 0x340 tmp/arm.v4a-linux.elf-fold.o
0x0000000000008250 my_bkpt 0x0000000000008258 my_bkpt
0x0000000000008258 exit 0x0000000000008260 exit
0x000000000000825c read 0x0000000000008264 read
0x0000000000008264 write 0x000000000000826c write
0x000000000000826c open 0x0000000000008274 open
0x0000000000008274 close 0x000000000000827c close
0x000000000000827c unlink 0x0000000000008284 unlink
0x0000000000008284 getpid 0x000000000000828c getpid
0x000000000000828c brk 0x0000000000008294 brk
0x0000000000008294 readlink 0x000000000000829c readlink
0x000000000000829c munmap 0x00000000000082a4 munmap
0x00000000000082a4 Pprotect 0x00000000000082ac Pprotect
0x00000000000082a4 mprotect 0x00000000000082ac mprotect
0x00000000000082bc mmap 0x00000000000082c4 mmap
0x00000000000082f0 __clear_cache 0x00000000000082f8 __clear_cache
0x00000000000082fc get_sys_munmap 0x0000000000008304 get_sys_munmap
0x0000000000008304 mmap_privanon 0x000000000000830c mmap_privanon
0x000000000000831c __udivsi3 0x0000000000008324 __udivsi3
0x000000000000831c div10 0x0000000000008324 div10
.text 0x0000000000008378 0x770 tmp/arm.v4a-linux.elf-main.o .text 0x0000000000008380 0x770 tmp/arm.v4a-linux.elf-main.o
0x0000000000008398 get_page_mask 0x00000000000083a0 get_page_mask
0x00000000000089b4 upx_main 0x00000000000089bc upx_main
*(.data) *(.data)
.data 0x0000000000008ae8 0x0 tmp/arm.v4a-linux.elf-fold.o .data 0x0000000000008af0 0x0 tmp/arm.v4a-linux.elf-fold.o
.data 0x0000000000008ae8 0x0 tmp/arm.v4a-linux.elf-main.o .data 0x0000000000008af0 0x0 tmp/arm.v4a-linux.elf-main.o
.data .data
LOAD tmp/arm.v4a-linux.elf-fold.o LOAD tmp/arm.v4a-linux.elf-fold.o
+4 -5
View File
@@ -13,7 +13,7 @@ Idx Name Size VMA LMA File off Algn Flags
8 LZMA_DEC10 0478 0 0 0da4 2**0 CONTENTS 8 LZMA_DEC10 0478 0 0 0da4 2**0 CONTENTS
9 LZMA_DEC30 0 0 0 0121c 2**0 CONTENTS 9 LZMA_DEC30 0 0 0 0121c 2**0 CONTENTS
10 ELFMAINY 0 0 0 0121c 2**0 CONTENTS 10 ELFMAINY 0 0 0 0121c 2**0 CONTENTS
11 ELFMAINZ 0104 0 0 0121c 2**2 CONTENTS 11 ELFMAINZ 0dc 0 0 0121c 2**2 CONTENTS
SYMBOL TABLE: SYMBOL TABLE:
00000000 l d NRV2E 0 NRV2E 00000000 l d NRV2E 0 NRV2E
00000000 l d NRV2D 0 NRV2D 00000000 l d NRV2D 0 NRV2D
@@ -35,7 +35,7 @@ SYMBOL TABLE:
00000000 g LZMA_DEC10 0 LzmaDecode 00000000 g LZMA_DEC10 0 LzmaDecode
00000000 g ELFMAINY 0 end_decompress 00000000 g ELFMAINY 0 end_decompress
00000000 *UND* 0 O_BINFO 00000000 *UND* 0 O_BINFO
00000104 g ELFMAINZ 0 cpr0 000000dc g ELFMAINZ 0 cpr0
RELOCATION RECORDS FOR [ELFMAINX]: RELOCATION RECORDS FOR [ELFMAINX]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
@@ -250,6 +250,5 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZ]: RELOCATION RECORDS FOR [ELFMAINZ]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
000000f0 R_ARM_PC24 ELFMAINZ 000000d4 R_ARM_PC24 ELFMAINZ
000000fc R_ARM_PC24 ELFMAINZ 000000d8 R_ARM_ABS32 O_BINFO
00000100 R_ARM_ABS32 O_BINFO
+29 -29
View File
@@ -9,40 +9,40 @@ Linker script and memory map
TARGET(elf32-littlearm) TARGET(elf32-littlearm)
0x0000000000008080 . = ((0x8000 + SIZEOF_HEADERS) + 0xc) 0x0000000000008080 . = ((0x8000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000008080 0xb54 .text 0x0000000000008080 0xb5c
*(.text) *(.text)
.text 0x0000000000008080 0x3ec tmp/arm.v5a-linux.elf-fold.o .text 0x0000000000008080 0x3f4 tmp/arm.v5a-linux.elf-fold.o
0x0000000000008348 munmap 0x0000000000008350 munmap
0x00000000000083f0 get_sys_munmap 0x00000000000083f8 get_sys_munmap
0x000000000000830c getpid 0x0000000000008314 getpid
0x0000000000008334 readlink 0x000000000000833c readlink
0x0000000000008410 __udivsi3 0x0000000000008418 __udivsi3
0x0000000000008380 mmap 0x0000000000008388 mmap
0x00000000000083cc __clear_cache 0x00000000000083d4 __clear_cache
0x00000000000083f8 mmap_privanon 0x0000000000008400 mmap_privanon
0x00000000000082bc write 0x00000000000082c4 write
0x00000000000082a8 read 0x00000000000082b0 read
0x00000000000082f8 unlink 0x0000000000008300 unlink
0x0000000000008290 my_bkpt 0x0000000000008298 my_bkpt
0x000000000000835c Pprotect 0x0000000000008364 Pprotect
0x0000000000008298 exit 0x00000000000082a0 exit
0x0000000000008320 brk 0x0000000000008328 brk
0x00000000000082d0 open 0x00000000000082d8 open
0x0000000000008410 div10 0x0000000000008418 div10
0x000000000000835c mprotect 0x0000000000008364 mprotect
0x00000000000082e4 close 0x00000000000082ec close
.text 0x000000000000846c 0x768 tmp/armel-linux.elf-main.o .text 0x0000000000008474 0x768 tmp/armel-linux.elf-main.o
0x000000000000848c get_page_mask 0x0000000000008494 get_page_mask
0x0000000000008aa0 upx_main 0x0000000000008aa8 upx_main
*(.data) *(.data)
.data 0x0000000000008bd4 0x0 tmp/arm.v5a-linux.elf-fold.o .data 0x0000000000008bdc 0x0 tmp/arm.v5a-linux.elf-fold.o
.data 0x0000000000008bd4 0x0 tmp/armel-linux.elf-main.o .data 0x0000000000008bdc 0x0 tmp/armel-linux.elf-main.o
.data .data
.bss 0x0000000000008bd4 0x0 .bss 0x0000000000008bdc 0x0
.bss 0x0000000000008bd4 0x0 tmp/arm.v5a-linux.elf-fold.o .bss 0x0000000000008bdc 0x0 tmp/arm.v5a-linux.elf-fold.o
.bss 0x0000000000008bd4 0x0 tmp/armel-linux.elf-main.o .bss 0x0000000000008bdc 0x0 tmp/armel-linux.elf-main.o
LOAD tmp/arm.v5a-linux.elf-fold.o LOAD tmp/arm.v5a-linux.elf-fold.o
LOAD tmp/armel-linux.elf-main.o LOAD tmp/armel-linux.elf-main.o
OUTPUT(tmp/arm.v5a-linux.elf-fold.bin elf32-littlearm) OUTPUT(tmp/arm.v5a-linux.elf-fold.bin elf32-littlearm)
+3 -3
View File
@@ -13,7 +13,7 @@ Idx Name Size VMA LMA File off Algn
8 LZMA_DEC10 04a0 0 0 0eec 2**0 CONTENTS 8 LZMA_DEC10 04a0 0 0 0eec 2**0 CONTENTS
9 LZMA_DEC30 0 0 0 0138c 2**0 CONTENTS 9 LZMA_DEC30 0 0 0 0138c 2**0 CONTENTS
10 ELFMAINY 03e 0 0 0138c 2**0 CONTENTS 10 ELFMAINY 03e 0 0 0138c 2**0 CONTENTS
11 ELFMAINZ 0138 0 0 013cc 2**2 CONTENTS 11 ELFMAINZ 0110 0 0 013cc 2**2 CONTENTS
SYMBOL TABLE: SYMBOL TABLE:
0000000000000000 l d LZMA_DEC30 0 LZMA_DEC30 0000000000000000 l d LZMA_DEC30 0 LZMA_DEC30
0000000000000000 l d ELFMAINZ 0 ELFMAINZ 0000000000000000 l d ELFMAINZ 0 ELFMAINZ
@@ -39,7 +39,7 @@ SYMBOL TABLE:
RELOCATION RECORDS FOR [ELFMAINX]: RELOCATION RECORDS FOR [ELFMAINX]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
0000000000000000 R_AARCH64_ABS32 MFLG 0000000000000000 R_AARCH64_ABS32 MFLG
0000000000000004 R_AARCH64_CALL26 ELFMAINZ+0x00000000000000e4 0000000000000004 R_AARCH64_CALL26 ELFMAINZ+0x00000000000000c4
RELOCATION RECORDS FOR [LZMA_ELF00]: RELOCATION RECORDS FOR [LZMA_ELF00]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
@@ -47,4 +47,4 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZ]: RELOCATION RECORDS FOR [ELFMAINZ]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
0000000000000134 R_AARCH64_ABS32 O_BINFO 000000000000010c R_AARCH64_ABS32 O_BINFO
+31 -31
View File
@@ -8,45 +8,45 @@ Linker script and memory map
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc) 0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x00000000001000bc 0xa50 .text 0x00000000001000bc 0xa58
*(.text) *(.text)
.text 0x00000000001000bc 0x294 tmp/arm64-linux.elf-fold.o .text 0x00000000001000bc 0x29c tmp/arm64-linux.elf-fold.o
0x000000000010026c my_bkpt 0x0000000000100274 my_bkpt
0x0000000000100274 exit 0x000000000010027c exit
0x000000000010027c read 0x0000000000100284 read
0x0000000000100288 write 0x0000000000100290 write
0x0000000000100294 close 0x000000000010029c close
0x00000000001002a0 getpid 0x00000000001002a8 getpid
0x00000000001002ac brk 0x00000000001002b4 brk
0x00000000001002b8 munmap 0x00000000001002c0 munmap
0x00000000001002c4 Pprotect 0x00000000001002cc Pprotect
0x00000000001002c4 mprotect 0x00000000001002cc mprotect
0x00000000001002dc mmap_privanon 0x00000000001002e4 mmap_privanon
0x00000000001002ec mmap 0x00000000001002f4 mmap
0x0000000000100304 unlink 0x000000000010030c unlink
0x0000000000100318 readlink 0x0000000000100320 readlink
0x0000000000100320 open 0x0000000000100328 open
0x000000000010033c __clear_cache 0x0000000000100344 __clear_cache
.text 0x0000000000100350 0x7bc tmp/arm64-linux.elf-main.o .text 0x0000000000100358 0x7bc tmp/arm64-linux.elf-main.o
0x00000000001009a4 upx_main 0x00000000001009ac upx_main
*(.data) *(.data)
.data 0x0000000000100b0c 0x0 tmp/arm64-linux.elf-fold.o .data 0x0000000000100b14 0x0 tmp/arm64-linux.elf-fold.o
.data 0x0000000000100b0c 0x0 tmp/arm64-linux.elf-main.o .data 0x0000000000100b14 0x0 tmp/arm64-linux.elf-main.o
.iplt 0x0000000000100b0c 0x0 .iplt 0x0000000000100b14 0x0
.iplt 0x0000000000100b0c 0x0 tmp/arm64-linux.elf-fold.o .iplt 0x0000000000100b14 0x0 tmp/arm64-linux.elf-fold.o
.rela.dyn 0x0000000000100b10 0x0 .rela.dyn 0x0000000000100b18 0x0
.rela.iplt 0x0000000000100b10 0x0 tmp/arm64-linux.elf-fold.o .rela.iplt 0x0000000000100b18 0x0 tmp/arm64-linux.elf-fold.o
.data .data
LOAD tmp/arm64-linux.elf-fold.o LOAD tmp/arm64-linux.elf-fold.o
LOAD tmp/arm64-linux.elf-main.o LOAD tmp/arm64-linux.elf-main.o
OUTPUT(tmp/arm64-linux.elf-fold.bin elf64-littleaarch64) OUTPUT(tmp/arm64-linux.elf-fold.bin elf64-littleaarch64)
.igot.plt 0x0000000000100b10 0x0 .igot.plt 0x0000000000100b18 0x0
.igot.plt 0x0000000000100b10 0x0 tmp/arm64-linux.elf-fold.o .igot.plt 0x0000000000100b18 0x0 tmp/arm64-linux.elf-fold.o
.bss 0x0000000000100b0c 0x0 .bss 0x0000000000100b14 0x0
.bss 0x0000000000100b0c 0x0 tmp/arm64-linux.elf-fold.o .bss 0x0000000000100b14 0x0 tmp/arm64-linux.elf-fold.o
.bss 0x0000000000100b0c 0x0 tmp/arm64-linux.elf-main.o .bss 0x0000000000100b14 0x0 tmp/arm64-linux.elf-main.o
+4 -5
View File
@@ -13,7 +13,7 @@ Idx Name Size VMA LMA File off Algn Flags
8 LZMA_DEC10 0478 0 0 0d44 2**0 CONTENTS 8 LZMA_DEC10 0478 0 0 0d44 2**0 CONTENTS
9 LZMA_DEC30 0 0 0 011bc 2**0 CONTENTS 9 LZMA_DEC30 0 0 0 011bc 2**0 CONTENTS
10 ELFMAINY 0 0 0 011bc 2**0 CONTENTS 10 ELFMAINY 0 0 0 011bc 2**0 CONTENTS
11 ELFMAINZ 0f0 0 0 011bc 2**2 CONTENTS 11 ELFMAINZ 0d0 0 0 011bc 2**2 CONTENTS
SYMBOL TABLE: SYMBOL TABLE:
00000000 l d NRV2E 0 NRV2E 00000000 l d NRV2E 0 NRV2E
00000000 l d NRV2D 0 NRV2D 00000000 l d NRV2D 0 NRV2D
@@ -35,7 +35,7 @@ SYMBOL TABLE:
00000000 g LZMA_DEC10 0 LzmaDecode 00000000 g LZMA_DEC10 0 LzmaDecode
00000000 g ELFMAINY 0 end_decompress 00000000 g ELFMAINY 0 end_decompress
00000000 *UND* 0 O_BINFO 00000000 *UND* 0 O_BINFO
000000f0 g ELFMAINZ 0 cpr0 000000d0 g ELFMAINZ 0 cpr0
RELOCATION RECORDS FOR [ELFMAINX]: RELOCATION RECORDS FOR [ELFMAINX]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
@@ -250,6 +250,5 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZ]: RELOCATION RECORDS FOR [ELFMAINZ]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
000000dc R_ARM_PC24 ELFMAINZ 000000c8 R_ARM_PC24 ELFMAINZ
000000e8 R_ARM_PC24 ELFMAINZ 000000cc R_ARM_ABS32 O_BINFO
000000ec R_ARM_ABS32 O_BINFO
+29 -29
View File
@@ -9,40 +9,40 @@ Linker script and memory map
TARGET(elf32-bigarm) TARGET(elf32-bigarm)
0x0000000000008080 . = ((0x8000 + SIZEOF_HEADERS) + 0xc) 0x0000000000008080 . = ((0x8000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000008080 0xaa8 .text 0x0000000000008080 0xab0
*(.text) *(.text)
.text 0x0000000000008080 0x338 tmp/armeb.v4a-linux.elf-fold.o .text 0x0000000000008080 0x340 tmp/armeb.v4a-linux.elf-fold.o
0x00000000000082dc munmap 0x00000000000082e4 munmap
0x000000000000833c get_sys_munmap 0x0000000000008344 get_sys_munmap
0x00000000000082c4 getpid 0x00000000000082cc getpid
0x00000000000082d4 readlink 0x00000000000082dc readlink
0x000000000000835c __udivsi3 0x0000000000008364 __udivsi3
0x00000000000082fc mmap 0x0000000000008304 mmap
0x0000000000008330 __clear_cache 0x0000000000008338 __clear_cache
0x0000000000008344 mmap_privanon 0x000000000000834c mmap_privanon
0x00000000000082a4 write 0x00000000000082ac write
0x000000000000829c read 0x00000000000082a4 read
0x00000000000082bc unlink 0x00000000000082c4 unlink
0x0000000000008290 my_bkpt 0x0000000000008298 my_bkpt
0x00000000000082e4 Pprotect 0x00000000000082ec Pprotect
0x0000000000008298 exit 0x00000000000082a0 exit
0x00000000000082cc brk 0x00000000000082d4 brk
0x00000000000082ac open 0x00000000000082b4 open
0x000000000000835c div10 0x0000000000008364 div10
0x00000000000082e4 mprotect 0x00000000000082ec mprotect
0x00000000000082b4 close 0x00000000000082bc close
.text 0x00000000000083b8 0x770 tmp/armeb.v4a-linux.elf-main.o .text 0x00000000000083c0 0x770 tmp/armeb.v4a-linux.elf-main.o
0x00000000000083d8 get_page_mask 0x00000000000083e0 get_page_mask
0x00000000000089f4 upx_main 0x00000000000089fc upx_main
*(.data) *(.data)
.data 0x0000000000008b28 0x0 tmp/armeb.v4a-linux.elf-fold.o .data 0x0000000000008b30 0x0 tmp/armeb.v4a-linux.elf-fold.o
.data 0x0000000000008b28 0x0 tmp/armeb.v4a-linux.elf-main.o .data 0x0000000000008b30 0x0 tmp/armeb.v4a-linux.elf-main.o
.data .data
.bss 0x0000000000008b28 0x0 .bss 0x0000000000008b30 0x0
.bss 0x0000000000008b28 0x0 tmp/armeb.v4a-linux.elf-fold.o .bss 0x0000000000008b30 0x0 tmp/armeb.v4a-linux.elf-fold.o
.bss 0x0000000000008b28 0x0 tmp/armeb.v4a-linux.elf-main.o .bss 0x0000000000008b30 0x0 tmp/armeb.v4a-linux.elf-main.o
LOAD tmp/armeb.v4a-linux.elf-fold.o LOAD tmp/armeb.v4a-linux.elf-fold.o
LOAD tmp/armeb.v4a-linux.elf-main.o LOAD tmp/armeb.v4a-linux.elf-main.o
OUTPUT(tmp/armeb.v4a-linux.elf-fold.bin elf32-bigarm) OUTPUT(tmp/armeb.v4a-linux.elf-fold.bin elf32-bigarm)
+14 -14
View File
@@ -9,26 +9,26 @@ Linker script and memory map
TARGET(elf32-i386) TARGET(elf32-i386)
0x0000000000c01080 . = ((0xc01000 + SIZEOF_HEADERS) + 0xc) 0x0000000000c01080 . = ((0xc01000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000c01080 0x764 .text 0x0000000000c01080 0x768
*(.text) *(.text)
.text 0x0000000000c01080 0x190 tmp/i386-linux.elf-fold.o .text 0x0000000000c01080 0x194 tmp/i386-linux.elf-fold.o
0x0000000000c011e2 mmap 0x0000000000c011e8 mmap
0x0000000000c011ba Pprotect 0x0000000000c011c0 Pprotect
.text 0x0000000000c01210 0x5d1 tmp/i386-linux.elf-main.o .text 0x0000000000c01214 0x5d1 tmp/i386-linux.elf-main.o
0x0000000000c01338 get_page_mask 0x0000000000c0133c get_page_mask
0x0000000000c016d7 upx_main 0x0000000000c016db upx_main
*(.data) *(.data)
*fill* 0x0000000000c017e1 0x3 00 *fill* 0x0000000000c017e5 0x3 00
.data 0x0000000000c017e4 0x0 tmp/i386-linux.elf-fold.o .data 0x0000000000c017e8 0x0 tmp/i386-linux.elf-fold.o
.data 0x0000000000c017e4 0x0 tmp/i386-linux.elf-main.o .data 0x0000000000c017e8 0x0 tmp/i386-linux.elf-main.o
.data .data
.bss 0x0000000000c017e4 0x0 .bss 0x0000000000c017e8 0x0
.bss 0x0000000000c017e4 0x0 tmp/i386-linux.elf-fold.o .bss 0x0000000000c017e8 0x0 tmp/i386-linux.elf-fold.o
.bss 0x0000000000c017e4 0x0 tmp/i386-linux.elf-main.o .bss 0x0000000000c017e8 0x0 tmp/i386-linux.elf-main.o
.rel.dyn 0x0000000000c017e4 0x0 .rel.dyn 0x0000000000c017e8 0x0
.rel.text 0x0000000000000000 0x0 tmp/i386-linux.elf-fold.o .rel.text 0x0000000000000000 0x0 tmp/i386-linux.elf-fold.o
LOAD tmp/i386-linux.elf-fold.o LOAD tmp/i386-linux.elf-fold.o
LOAD tmp/i386-linux.elf-main.o LOAD tmp/i386-linux.elf-main.o
+1 -1
View File
@@ -12,7 +12,7 @@ TARGET(elf32-bigmips)
.text 0x0000000000100080 0xad0 .text 0x0000000000100080 0xad0
*(.text) *(.text)
.text 0x0000000000100080 0x1c0 tmp/mips.r3000-linux.elf-fold.o .text 0x0000000000100080 0x1c0 tmp/mips.r3000-linux.elf-fold.o
0x0000000000100218 Pprotect 0x000000000010021c Pprotect
.text 0x0000000000100240 0x910 tmp/mips.r3000-linux.elf-main.o .text 0x0000000000100240 0x910 tmp/mips.r3000-linux.elf-main.o
0x00000000001009b0 upx_main 0x00000000001009b0 upx_main
*(.data) *(.data)
+1 -1
View File
@@ -12,7 +12,7 @@ TARGET(elf32-littlemips)
.text 0x0000000000100080 0xad0 .text 0x0000000000100080 0xad0
*(.text) *(.text)
.text 0x0000000000100080 0x1c0 tmp/mipsel.r3000-linux.elf-fold.o .text 0x0000000000100080 0x1c0 tmp/mipsel.r3000-linux.elf-fold.o
0x0000000000100218 Pprotect 0x000000000010021c Pprotect
.text 0x0000000000100240 0x910 tmp/mipsel.r3000-linux.elf-main.o .text 0x0000000000100240 0x910 tmp/mipsel.r3000-linux.elf-main.o
0x00000000001009b0 upx_main 0x00000000001009b0 upx_main
*(.data) *(.data)
+22 -22
View File
@@ -9,35 +9,35 @@ Linker script and memory map
TARGET(elf32-powerpc) TARGET(elf32-powerpc)
0x0000000000100080 . = ((0x100000 + SIZEOF_HEADERS) + 0xc) 0x0000000000100080 . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x0000000000100080 0x10c8 .text 0x0000000000100080 0x10d0
*(.text) *(.text)
.text 0x0000000000100080 0x288 tmp/powerpc-linux.elf-fold.o .text 0x0000000000100080 0x290 tmp/powerpc-linux.elf-fold.o
0x0000000000100080 get_page_mask 0x0000000000100080 get_page_mask
0x00000000001002f8 munmap 0x0000000000100300 munmap
0x00000000001002c8 readlink 0x00000000001002d0 readlink
0x00000000001002a4 mmap 0x00000000001002ac mmap
0x00000000001002d0 write 0x00000000001002d8 write
0x00000000001002d8 read 0x00000000001002e0 read
0x0000000000100300 my_bkpt 0x0000000000100308 my_bkpt
0x0000000000100290 Pprotect 0x0000000000100298 Pprotect
0x00000000001002b8 exit 0x00000000001002c0 exit
0x00000000001002c0 brk 0x00000000001002c8 brk
0x00000000001002e0 open 0x00000000001002e8 open
0x00000000001002f0 mprotect 0x00000000001002f8 mprotect
0x00000000001002e8 close 0x00000000001002f0 close
.text 0x0000000000100308 0xe40 tmp/powerpc-linux.elf-main.o .text 0x0000000000100310 0xe40 tmp/powerpc-linux.elf-main.o
0x0000000000100f48 upx_main 0x0000000000100f50 upx_main
*(.data) *(.data)
.data 0x0000000000101148 0x0 tmp/powerpc-linux.elf-fold.o .data 0x0000000000101150 0x0 tmp/powerpc-linux.elf-fold.o
.data 0x0000000000101148 0x0 tmp/powerpc-linux.elf-main.o .data 0x0000000000101150 0x0 tmp/powerpc-linux.elf-main.o
.data .data
.bss 0x0000000000101148 0x0 .bss 0x0000000000101150 0x0
.bss 0x0000000000101148 0x0 tmp/powerpc-linux.elf-fold.o .bss 0x0000000000101150 0x0 tmp/powerpc-linux.elf-fold.o
.bss 0x0000000000101148 0x0 tmp/powerpc-linux.elf-main.o .bss 0x0000000000101150 0x0 tmp/powerpc-linux.elf-main.o
.rela.dyn 0x0000000000101148 0x0 .rela.dyn 0x0000000000101150 0x0
.rela.text 0x0000000000000000 0x0 tmp/powerpc-linux.elf-fold.o .rela.text 0x0000000000000000 0x0 tmp/powerpc-linux.elf-fold.o
LOAD tmp/powerpc-linux.elf-fold.o LOAD tmp/powerpc-linux.elf-fold.o
LOAD tmp/powerpc-linux.elf-main.o LOAD tmp/powerpc-linux.elf-main.o
+42 -42
View File
@@ -9,62 +9,62 @@ Linker script and memory map
TARGET(elf64-powerpc) TARGET(elf64-powerpc)
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc) 0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x00000000001000bc 0xc00 .text 0x00000000001000bc 0xc08
*(.text) *(.text)
.text 0x00000000001000bc 0x340 tmp/powerpc64-linux.elf-fold.o .text 0x00000000001000bc 0x348 tmp/powerpc64-linux.elf-fold.o
0x00000000001000bc get_page_mask 0x00000000001000bc get_page_mask
0x000000000010038c mmap 0x0000000000100394 mmap
0x00000000001003a4 Pprotect 0x00000000001003ac Pprotect
0x00000000001003a4 mprotect 0x00000000001003ac mprotect
0x00000000001003bc exit 0x00000000001003c4 exit
0x00000000001003c4 brk 0x00000000001003cc brk
0x00000000001003cc readlink 0x00000000001003d4 readlink
0x00000000001003d4 read 0x00000000001003dc read
0x00000000001003dc open 0x00000000001003e4 open
0x00000000001003e4 close 0x00000000001003ec close
0x00000000001003ec munmap 0x00000000001003f4 munmap
0x00000000001003f4 my_bkpt 0x00000000001003fc my_bkpt
.text 0x00000000001003fc 0x8c0 tmp/powerpc64-linux.elf-main.o .text 0x0000000000100404 0x8c0 tmp/powerpc64-linux.elf-main.o
*(.data) *(.data)
.data 0x0000000000100cbc 0x0 tmp/powerpc64-linux.elf-fold.o .data 0x0000000000100cc4 0x0 tmp/powerpc64-linux.elf-fold.o
.data 0x0000000000100cbc 0x0 tmp/powerpc64-linux.elf-main.o .data 0x0000000000100cc4 0x0 tmp/powerpc64-linux.elf-main.o
.sfpr 0x0000000000100cbc 0xa4 .sfpr 0x0000000000100cc4 0xa4
.sfpr 0x0000000000100cbc 0xa4 linker stubs .sfpr 0x0000000000100cc4 0xa4 linker stubs
0x0000000000100cbc _savegpr0_14 0x0000000000100cc4 _savegpr0_14
0x0000000000100ce4 _savegpr0_24 0x0000000000100cec _savegpr0_24
0x0000000000100cf4 _savegpr0_28 0x0000000000100cfc _savegpr0_28
0x0000000000100d0c _restgpr0_14 0x0000000000100d14 _restgpr0_14
0x0000000000100d34 _restgpr0_24 0x0000000000100d3c _restgpr0_24
0x0000000000100d44 _restgpr0_28 0x0000000000100d4c _restgpr0_28
.glink 0x0000000000100d60 0x0 .glink 0x0000000000100d68 0x0
.glink 0x0000000000100d60 0x0 linker stubs .glink 0x0000000000100d68 0x0 linker stubs
.eh_frame 0x0000000000100d60 0x0 .eh_frame 0x0000000000100d68 0x0
.eh_frame 0x0000000000100d60 0x0 linker stubs .eh_frame 0x0000000000100d68 0x0 linker stubs
.rela.dyn 0x0000000000100d60 0x0 .rela.dyn 0x0000000000100d68 0x0
.rela.iplt 0x0000000000100d60 0x0 linker stubs .rela.iplt 0x0000000000100d68 0x0 linker stubs
.data .data
LOAD tmp/powerpc64-linux.elf-fold.o LOAD tmp/powerpc64-linux.elf-fold.o
LOAD tmp/powerpc64-linux.elf-main.o LOAD tmp/powerpc64-linux.elf-main.o
OUTPUT(tmp/powerpc64-linux.elf-fold.bin elf64-powerpc) OUTPUT(tmp/powerpc64-linux.elf-fold.bin elf64-powerpc)
.branch_lt 0x0000000000100d60 0x0 .branch_lt 0x0000000000100d68 0x0
.branch_lt 0x0000000000100d60 0x0 linker stubs .branch_lt 0x0000000000100d68 0x0 linker stubs
.toc 0x0000000000100d60 0x0 .toc 0x0000000000100d68 0x0
.toc 0x0000000000100d60 0x0 tmp/powerpc64-linux.elf-main.o .toc 0x0000000000100d68 0x0 tmp/powerpc64-linux.elf-main.o
.opd 0x0000000000100d60 0x58 .opd 0x0000000000100d68 0x58
.opd 0x0000000000100d60 0x58 tmp/powerpc64-linux.elf-main.o .opd 0x0000000000100d68 0x58 tmp/powerpc64-linux.elf-main.o
0x0000000000100da0 upx_main 0x0000000000100da8 upx_main
.iplt 0x0000000000100db8 0x0 .iplt 0x0000000000100dc0 0x0
.iplt 0x0000000000100db8 0x0 linker stubs .iplt 0x0000000000100dc0 0x0 linker stubs
.bss 0x0000000000100db8 0x0 .bss 0x0000000000100dc0 0x0
.bss 0x0000000000100db8 0x0 tmp/powerpc64-linux.elf-fold.o .bss 0x0000000000100dc0 0x0 tmp/powerpc64-linux.elf-fold.o
.bss 0x0000000000100db8 0x0 tmp/powerpc64-linux.elf-main.o .bss 0x0000000000100dc0 0x0 tmp/powerpc64-linux.elf-main.o
+42 -42
View File
@@ -9,62 +9,62 @@ Linker script and memory map
TARGET(elf64-powerpcle) TARGET(elf64-powerpcle)
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc) 0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x00000000001000bc 0xbfc .text 0x00000000001000bc 0xc04
*(.text) *(.text)
.text 0x00000000001000bc 0x340 tmp/powerpc64le-linux.elf-fold.o .text 0x00000000001000bc 0x348 tmp/powerpc64le-linux.elf-fold.o
0x00000000001000bc get_page_mask 0x00000000001000bc get_page_mask
0x000000000010038c mmap 0x0000000000100394 mmap
0x00000000001003a4 Pprotect 0x00000000001003ac Pprotect
0x00000000001003a4 mprotect 0x00000000001003ac mprotect
0x00000000001003bc exit 0x00000000001003c4 exit
0x00000000001003c4 brk 0x00000000001003cc brk
0x00000000001003cc readlink 0x00000000001003d4 readlink
0x00000000001003d4 read 0x00000000001003dc read
0x00000000001003dc open 0x00000000001003e4 open
0x00000000001003e4 close 0x00000000001003ec close
0x00000000001003ec munmap 0x00000000001003f4 munmap
0x00000000001003f4 my_bkpt 0x00000000001003fc my_bkpt
.text 0x00000000001003fc 0x8bc tmp/powerpc64le-linux.elf-main.o .text 0x0000000000100404 0x8bc tmp/powerpc64le-linux.elf-main.o
*(.data) *(.data)
.data 0x0000000000100cb8 0x0 tmp/powerpc64le-linux.elf-fold.o .data 0x0000000000100cc0 0x0 tmp/powerpc64le-linux.elf-fold.o
.data 0x0000000000100cb8 0x0 tmp/powerpc64le-linux.elf-main.o .data 0x0000000000100cc0 0x0 tmp/powerpc64le-linux.elf-main.o
.sfpr 0x0000000000100cb8 0xa4 .sfpr 0x0000000000100cc0 0xa4
.sfpr 0x0000000000100cb8 0xa4 linker stubs .sfpr 0x0000000000100cc0 0xa4 linker stubs
0x0000000000100cb8 _savegpr0_14 0x0000000000100cc0 _savegpr0_14
0x0000000000100ce0 _savegpr0_24 0x0000000000100ce8 _savegpr0_24
0x0000000000100cf0 _savegpr0_28 0x0000000000100cf8 _savegpr0_28
0x0000000000100d08 _restgpr0_14 0x0000000000100d10 _restgpr0_14
0x0000000000100d30 _restgpr0_24 0x0000000000100d38 _restgpr0_24
0x0000000000100d40 _restgpr0_28 0x0000000000100d48 _restgpr0_28
.glink 0x0000000000100d60 0x0 .glink 0x0000000000100d68 0x0
.glink 0x0000000000100d60 0x0 linker stubs .glink 0x0000000000100d68 0x0 linker stubs
.eh_frame 0x0000000000100d5c 0x0 .eh_frame 0x0000000000100d64 0x0
.eh_frame 0x0000000000100d5c 0x0 linker stubs .eh_frame 0x0000000000100d64 0x0 linker stubs
.rela.dyn 0x0000000000100d60 0x0 .rela.dyn 0x0000000000100d68 0x0
.rela.iplt 0x0000000000100d60 0x0 linker stubs .rela.iplt 0x0000000000100d68 0x0 linker stubs
.data .data
LOAD tmp/powerpc64le-linux.elf-fold.o LOAD tmp/powerpc64le-linux.elf-fold.o
LOAD tmp/powerpc64le-linux.elf-main.o LOAD tmp/powerpc64le-linux.elf-main.o
OUTPUT(tmp/powerpc64le-linux.elf-fold.bin elf64-powerpcle) OUTPUT(tmp/powerpc64le-linux.elf-fold.bin elf64-powerpcle)
.branch_lt 0x0000000000100d60 0x0 .branch_lt 0x0000000000100d68 0x0
.branch_lt 0x0000000000100d60 0x0 linker stubs .branch_lt 0x0000000000100d68 0x0 linker stubs
.toc 0x0000000000100d60 0x0 .toc 0x0000000000100d68 0x0
.toc 0x0000000000100d60 0x0 tmp/powerpc64le-linux.elf-main.o .toc 0x0000000000100d68 0x0 tmp/powerpc64le-linux.elf-main.o
.opd 0x0000000000100d60 0x58 .opd 0x0000000000100d68 0x58
.opd 0x0000000000100d60 0x58 tmp/powerpc64le-linux.elf-main.o .opd 0x0000000000100d68 0x58 tmp/powerpc64le-linux.elf-main.o
0x0000000000100da0 upx_main 0x0000000000100da8 upx_main
.iplt 0x0000000000100db8 0x0 .iplt 0x0000000000100dc0 0x0
.iplt 0x0000000000100db8 0x0 linker stubs .iplt 0x0000000000100dc0 0x0 linker stubs
.bss 0x0000000000100db8 0x0 .bss 0x0000000000100dc0 0x0
.bss 0x0000000000100db8 0x0 tmp/powerpc64le-linux.elf-fold.o .bss 0x0000000000100dc0 0x0 tmp/powerpc64le-linux.elf-fold.o
.bss 0x0000000000100db8 0x0 tmp/powerpc64le-linux.elf-main.o .bss 0x0000000000100dc0 0x0 tmp/powerpc64le-linux.elf-main.o
+109 -145
View File
@@ -42,7 +42,6 @@
// arm-wince-pe-gcc -Wl,--image-base,0x400000 // arm-wince-pe-gcc -Wl,--image-base,0x400000
#include <stddef.h> #include <stddef.h>
#include <stdarg.h> #include <stdarg.h>
#include <string.h> #include <string.h>
@@ -50,89 +49,83 @@
#include <errno.h> #include <errno.h>
#ifdef __i386__ #ifdef __i386__
# define UPX_MMAP_ADDRESS 0x20000000 #define UPX_MMAP_ADDRESS 0x20000000
#else #else
# define UPX_MMAP_ADDRESS 0x410000 // 0x10000 #define UPX_MMAP_ADDRESS 0x410000 // 0x10000
#endif #endif
#ifdef __linux__ #ifdef __linux__
# include <sys/mman.h> #include <sys/mman.h>
#else #else
void *VirtualAlloc(void *address, unsigned size, unsigned type, unsigned protect); void *VirtualAlloc(void *address, unsigned size, unsigned type, unsigned protect);
# define MEM_COMMIT 0x1000 #define MEM_COMMIT 0x1000
# define PAGE_EXECUTE_READWRITE 0x0040 #define PAGE_EXECUTE_READWRITE 0x0040
#endif #endif
typedef size_t upx_uintptr_t; typedef unsigned short LE16;
typedef unsigned short LE16; typedef unsigned int LE32;
typedef unsigned int LE32; #define get_le32(p) (*(const unsigned *) (p))
#define get_le32(p) (* (const unsigned *) (p)) #define set_le32(p, v) (*(unsigned *) (p) = (v))
#define set_le32(p,v) (* (unsigned *) (p) = (v)) #define get_le16(p) (*(const unsigned short *) (p))
#define get_le16(p) (* (const unsigned short *) (p))
#if !defined(__packed_struct) #if !defined(packed_struct)
# define __packed_struct(s) struct s { #define packed_struct(s) struct s
# define __packed_struct_end() };
#endif #endif
packed_struct(ddirs_t) {
LE32 vaddr;
LE32 size;
};
__packed_struct(ddirs_t) packed_struct(pe_header_t) {
LE32 vaddr;
LE32 size;
__packed_struct_end()
__packed_struct(pe_header_t)
// 0x0 // 0x0
char _[4]; char _[4];
LE16 cpu; LE16 cpu;
LE16 objects; LE16 objects;
char __[12]; char __[12];
LE16 opthdrsize; LE16 opthdrsize;
LE16 flags; LE16 flags;
// optional header // optional header
char ___[4]; char ___[4];
LE32 codesize; LE32 codesize;
// 0x20 // 0x20
LE32 datasize; LE32 datasize;
LE32 bsssize; LE32 bsssize;
LE32 entry; LE32 entry;
LE32 codebase; LE32 codebase;
// 0x30 // 0x30
LE32 database; LE32 database;
// nt specific fields // nt specific fields
LE32 imagebase; LE32 imagebase;
LE32 objectalign; LE32 objectalign;
LE32 filealign; LE32 filealign;
// 0x40 // 0x40
char ____[16]; char ____[16];
// 0x50 // 0x50
LE32 imagesize; LE32 imagesize;
LE32 headersize; LE32 headersize;
LE32 chksum; LE32 chksum;
LE16 subsystem; LE16 subsystem;
LE16 dllflags; LE16 dllflags;
// 0x60 // 0x60
char _____[20]; char _____[20];
// 0x74 // 0x74
LE32 ddirsentries; LE32 ddirsentries;
// //
struct ddirs_t ddirs[16]; struct ddirs_t ddirs[16];
__packed_struct_end() };
packed_struct(pe_section_t) {
char name[8];
LE32 vsize;
LE32 vaddr;
LE32 size;
LE32 rawdataptr;
char _[12];
LE32 flags;
};
__packed_struct(pe_section_t) packed_struct(exe_header_t) {
char name[8];
LE32 vsize;
LE32 vaddr;
LE32 size;
LE32 rawdataptr;
char _[12];
LE32 flags;
__packed_struct_end()
__packed_struct(exe_header_t)
LE16 mz; LE16 mz;
LE16 m512; LE16 m512;
LE16 p512; LE16 p512;
@@ -140,27 +133,25 @@ __packed_struct(exe_header_t)
LE16 relocoffs; LE16 relocoffs;
char __[34]; char __[34];
LE32 nexepos; LE32 nexepos;
__packed_struct_end()
enum {
PEDIR_EXPORT = 0,
PEDIR_IMPORT = 1,
PEDIR_RESOURCE = 2,
PEDIR_EXCEPTION = 3,
PEDIR_SEC = 4,
PEDIR_RELOC = 5,
PEDIR_DEBUG = 6,
PEDIR_COPYRIGHT = 7,
PEDIR_GLOBALPTR = 8,
PEDIR_TLS = 9,
PEDIR_LOADCONF = 10,
PEDIR_BOUNDIM = 11,
PEDIR_IAT = 12,
PEDIR_DELAYIMP = 13,
PEDIR_COMRT = 14
}; };
enum {
PEDIR_EXPORT = 0,
PEDIR_IMPORT = 1,
PEDIR_RESOURCE = 2,
PEDIR_EXCEPTION = 3, // Exception table
PEDIR_SECURITY = 4, // Certificate table (file pointer)
PEDIR_BASERELOC = 5,
PEDIR_DEBUG = 6,
PEDIR_ARCHITECTURE = 7, // Architecture-specific data
PEDIR_GLOBALPTR = 8, // Global pointer
PEDIR_TLS = 9,
PEDIR_LOAD_CONFIG = 10, // Load Config Table
PEDIR_BOUND_IMPORT = 11,
PEDIR_IAT = 12,
PEDIR_DELAY_IMPORT = 13, // Delay Import Descriptor
PEDIR_COM_DESCRIPTOR = 14 // Com+ Runtime Header
};
static struct pe_header_t ih; static struct pe_header_t ih;
static struct pe_section_t isections[4]; static struct pe_section_t isections[4];
@@ -184,8 +175,7 @@ static int print(const char *format, ...)
#define print printf #define print printf
#endif #endif
static int load(const char *file) static int load(const char *file) {
{
struct exe_header_t h; struct exe_header_t h;
int ic; int ic;
unsigned pe_offset = 0; unsigned pe_offset = 0;
@@ -193,20 +183,17 @@ static int load(const char *file)
if ((f = fopen(file, "rb")) == NULL) if ((f = fopen(file, "rb")) == NULL)
return print("can not open file: %s\n", file); return print("can not open file: %s\n", file);
for (ic = 0; ic < 20; ic++) for (ic = 0; ic < 20; ic++) {
{ if (fseek(f, pe_offset, SEEK_SET) || fread(&h, sizeof(h), 1, f) != 1)
if (fseek(f, pe_offset, SEEK_SET)
|| fread(&h, sizeof(h), 1, f) != 1)
return print("read error at %u\n", pe_offset); return print("read error at %u\n", pe_offset);
if (h.mz == 'M' + 'Z'*256) // dos exe if (h.mz == 'M' + 'Z' * 256) // dos exe
{ {
if (h.relocoffs >= 0x40) // new format exe if (h.relocoffs >= 0x40) // new format exe
pe_offset += h.nexepos; pe_offset += h.nexepos;
else else
pe_offset += h.p512 * 512 + h.m512 - h.m512 ? 512 : 0; pe_offset += h.p512 * 512 + h.m512 - h.m512 ? 512 : 0;
} } else if (get_le32(&h) == 'P' + 'E' * 256)
else if (get_le32(&h) == 'P' + 'E'*256)
break; break;
else else
return print("bad header at %u\n", pe_offset); return print("bad header at %u\n", pe_offset);
@@ -214,47 +201,40 @@ static int load(const char *file)
if (ic == 20) if (ic == 20)
return print("pe header not found\n"); return print("pe header not found\n");
printf("pe header found at offset: %u\n", pe_offset); printf("pe header found at offset: %u\n", pe_offset);
if (fseek(f, pe_offset, SEEK_SET) if (fseek(f, pe_offset, SEEK_SET) || fread(&ih, sizeof(ih), 1, f) != 1)
|| fread(&ih, sizeof(ih), 1, f) != 1)
return print("can not load pe header\n"); return print("can not load pe header\n");
print("ih.imagesize=0x%x\n", ih.imagesize); print("ih.imagesize=0x%x\n", ih.imagesize);
if (ih.cpu != 0x1c0 && ih.cpu != 0x1c2) if (ih.cpu != 0x1c0 && ih.cpu != 0x1c2)
return print("unsupported processor type: %x\n", ih.cpu); return print("unsupported processor type: %x\n", ih.cpu);
if ((ih.objects != 3 && ih.objects != 4) if ((ih.objects != 3 && ih.objects != 4) || fread(isections, sizeof(isections), 1, f) != 1)
|| fread(isections, sizeof(isections), 1, f) != 1)
return print("error reading section descriptors\n"); return print("error reading section descriptors\n");
return 0; return 0;
} }
static int read(void) static int read(void) {
{
unsigned ic; unsigned ic;
#ifdef __linux__ #ifdef __linux__
vaddr = mmap((void *) UPX_MMAP_ADDRESS, ih.imagesize, vaddr = mmap((void *) UPX_MMAP_ADDRESS, ih.imagesize, PROT_WRITE | PROT_READ | PROT_EXEC,
PROT_WRITE | PROT_READ | PROT_EXEC,
MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0); MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
if (((int) vaddr) == -1) if (((int) vaddr) == -1)
return print("mmap() failed: %d\n", errno); return print("mmap() failed: %d\n", errno);
print("mmap for %p (size %x) successful\n", vaddr, ih.imagesize); print("mmap for %p (size %x) successful\n", vaddr, ih.imagesize);
#else #else
if ((vaddr = VirtualAlloc(0, ih.imagesize, if ((vaddr = VirtualAlloc(0, ih.imagesize, MEM_COMMIT, PAGE_EXECUTE_READWRITE)) == 0)
MEM_COMMIT, PAGE_EXECUTE_READWRITE)) == 0)
return print("VirtualAlloc() failed\n"); return print("VirtualAlloc() failed\n");
print("VirtualAlloc() ok %x\n", vaddr); print("VirtualAlloc() ok %x\n", vaddr);
#endif #endif
for (ic = 1; ic <= (unsigned) ih.objects - 1; ic++) for (ic = 1; ic <= (unsigned) ih.objects - 1; ic++)
if (fseek(f, isections[ic].rawdataptr, SEEK_SET) if (fseek(f, isections[ic].rawdataptr, SEEK_SET) ||
|| fread(vaddr + isections[ic].vaddr, fread(vaddr + isections[ic].vaddr, isections[ic].vsize, 1, f) != 1)
isections[ic].vsize, 1, f) != 1)
return print("error reading section %u\n", ic); return print("error reading section %u\n", ic);
return 0; return 0;
} }
static void dump(char n) static void dump(char n) {
{
char buf[100]; char buf[100];
#ifdef __linux__ #ifdef __linux__
snprintf(buf, sizeof(buf), "a.dump%c", n); snprintf(buf, sizeof(buf), "a.dump%c", n);
@@ -266,49 +246,37 @@ static void dump(char n)
fclose(f2); fclose(f2);
} }
static int loadlibraryw(const unsigned short *name) static int loadlibraryw(const unsigned short *name) {
{
return name[0] + name[1] * 0x100 + name[2] * 0x10000; return name[0] + name[1] * 0x100 + name[2] * 0x10000;
} }
static int getprocaddressa(unsigned h, const char *proc) static int getprocaddressa(unsigned h, const char *proc) {
{
unsigned p = (unsigned) proc; unsigned p = (unsigned) proc;
if (p < 0x10000) if (p < 0x10000) {
{ print("getprocaddressa called %c%c%c, ordinal %u\n", h, h >> 8, h >> 16, p);
print("getprocaddressa called %c%c%c, ordinal %u\n",
h, h >> 8, h >> 16, p);
return h + p * 0x10000; return h + p * 0x10000;
} }
print("getprocaddressa called %c%c%c, name %s\n", print("getprocaddressa called %c%c%c, name %s\n", h, h >> 8, h >> 16, proc);
h, h >> 8, h >> 16, proc);
return h + proc[0] * 0x10000 + proc[1] * 0x1000000; return h + proc[0] * 0x10000 + proc[1] * 0x1000000;
} }
static void cachesync(unsigned v) static void cachesync(unsigned v) { print("cachesync called %u\n", v); }
{
print("cachesync called %u\n", v);
}
static int import(void) static int import(void) {
{
if (ih.ddirs[PEDIR_IMPORT].vaddr == 0) if (ih.ddirs[PEDIR_IMPORT].vaddr == 0)
return print("no imports?\n"); return print("no imports?\n");
print("loadlibraryw=%p,getprocaddressa=%p,cachesync=%p\n", print("loadlibraryw=%p,getprocaddressa=%p,cachesync=%p\n", loadlibraryw, getprocaddressa,
loadlibraryw, getprocaddressa, cachesync); cachesync);
void *imports = vaddr + ih.ddirs[PEDIR_IMPORT].vaddr; void *imports = vaddr + ih.ddirs[PEDIR_IMPORT].vaddr;
while (get_le32(imports + 12)) while (get_le32(imports + 12)) {
{ if (strcasecmp(vaddr + get_le32(imports + 12), "coredll.dll") == 0) {
if (strcasecmp(vaddr + get_le32(imports + 12), "coredll.dll") == 0)
{
void *coredll_imports = vaddr + get_le32(imports + 16); void *coredll_imports = vaddr + get_le32(imports + 16);
print("coredll_imports=%p\n", coredll_imports); print("coredll_imports=%p\n", coredll_imports);
void *oft = vaddr + get_le32(imports); void *oft = vaddr + get_le32(imports);
unsigned pos = 0; unsigned pos = 0;
while (get_le32(oft + pos)) while (get_le32(oft + pos)) {
{
void *name = vaddr + get_le32(oft + pos) + 2; void *name = vaddr + get_le32(oft + pos) + 2;
print("name=%s\n", (char*) name); print("name=%s\n", (char *) name);
if (strcasecmp(name, "loadlibraryw") == 0) if (strcasecmp(name, "loadlibraryw") == 0)
set_le32(coredll_imports + pos, (unsigned) loadlibraryw); set_le32(coredll_imports + pos, (unsigned) loadlibraryw);
else if (strcasecmp(name, "getprocaddressa") == 0) else if (strcasecmp(name, "getprocaddressa") == 0)
@@ -326,18 +294,16 @@ static int import(void)
return 1; return 1;
} }
static int reloc(void) static int reloc(void) {
{ if (ih.ddirs[PEDIR_BASERELOC].vaddr == 0)
if (ih.ddirs[PEDIR_RELOC].vaddr == 0)
return 0; return 0;
void *relocs = vaddr + ih.ddirs[PEDIR_RELOC].vaddr; void *relocs = vaddr + ih.ddirs[PEDIR_BASERELOC].vaddr;
void *page = vaddr + get_le32(relocs); void *page = vaddr + get_le32(relocs);
unsigned size = get_le32(relocs + 4); unsigned size = get_le32(relocs + 4);
if (size != ih.ddirs[PEDIR_RELOC].size) if (size != ih.ddirs[PEDIR_BASERELOC].size)
return print("only 1 page can be relocated\n"); return print("only 1 page can be relocated\n");
unsigned num = (size - 8) / 2; unsigned num = (size - 8) / 2;
while (num--) while (num--) {
{
unsigned pos = get_le16(relocs + 8 + num * 2); unsigned pos = get_le16(relocs + 8 + num * 2);
if (pos == 0) if (pos == 0)
continue; continue;
@@ -350,14 +316,14 @@ static int reloc(void)
return 0; return 0;
} }
static void dump2(int c) #ifndef __i386__
{ static void dump2(int c) {
print("dump2 %c\n", c); print("dump2 %c\n", c);
dump(c); dump(c);
} }
#endif
static void call(void) static void call(void) {
{
#ifndef __i386__ #ifndef __i386__
void (*entry)(void (*)(int), unsigned) = vaddr + ih.entry; void (*entry)(void (*)(int), unsigned) = vaddr + ih.entry;
entry(dump2, 1); entry(dump2, 1);
@@ -365,8 +331,7 @@ static void call(void)
#endif #endif
} }
static int main2(int argc, char **argv) static int main2(int argc, char **argv) {
{
if (argc != 2) if (argc != 2)
return print("usage: %s arm_pe_file\n", argv[0]), 1; return print("usage: %s arm_pe_file\n", argv[0]), 1;
if (load(argv[1])) if (load(argv[1]))
@@ -386,8 +351,7 @@ static int main2(int argc, char **argv)
return 0; return 0;
} }
int main(int argc, char **argv) int main(int argc, char **argv) {
{
out = stdout; out = stdout;
#ifndef __linux__ #ifndef __linux__
out = fopen("/wtest.log", "wt"); out = fopen("/wtest.log", "wt");
+2
View File
@@ -1,6 +1,8 @@
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
// Copyright 2022 BitWagon Software LLC. All rights reserved. // Copyright 2022 BitWagon Software LLC. All rights reserved.
/* clang-format off */
#include <errno.h> #include <errno.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
+2
View File
@@ -1,5 +1,7 @@
/* http://www.muppetlabs.com/~breadbox/software/elfkickers.html */ /* http://www.muppetlabs.com/~breadbox/software/elfkickers.html */
/* clang-format off */
/* sstrip: Copyright (C) 1999-2001 by Brian Raiter, under the GNU /* sstrip: Copyright (C) 1999-2001 by Brian Raiter, under the GNU
* General Public License. No warranty. See COPYING for details. * General Public License. No warranty. See COPYING for details.
* *
+24 -6
View File
@@ -63,6 +63,20 @@ struct UnsignedSizeOf {
static constexpr unsigned value = unsigned(Size); static constexpr unsigned value = unsigned(Size);
}; };
// a reinterpret_cast that does not trigger -Wcast-align warnings
template <class Result, class From>
forceinline Result ptr_reinterpret_cast(From *ptr) noexcept {
static_assert(std::is_pointer_v<Result>);
static_assert(!std::is_const_v<std::remove_pointer_t<Result> >); // enforce same constness
return reinterpret_cast<Result>(reinterpret_cast<void *>(ptr));
}
template <class Result, class From>
forceinline Result ptr_reinterpret_cast(const From *ptr) noexcept {
static_assert(std::is_pointer_v<Result>);
static_assert(std::is_const_v<std::remove_pointer_t<Result> >); // required
return reinterpret_cast<Result>(reinterpret_cast<const void *>(ptr));
}
class noncopyable { class noncopyable {
protected: protected:
forceinline constexpr noncopyable() noexcept {} forceinline constexpr noncopyable() noexcept {}
@@ -95,21 +109,24 @@ constexpr bool string_ge(const char *a, const char *b) { return !string_lt(a, b)
/************************************************************************* /*************************************************************************
// TriBool - tri-state bool // TriBool - tri-state bool
// an enum with an underlying type and 3 values // an enum with an underlying type and 3 values
// bool() checks for > 0, so ThirdValue determines if Third is false or true // IsThirdTrue determines if Third is false or true
**************************************************************************/ **************************************************************************/
template <class T = int, T ThirdValue = -1> // ThirdValue is false by default template <class T = int, bool IsThirdTrue = false> // Third is false by default
struct TriBool final { struct TriBool final {
static constexpr bool is_third_true = IsThirdTrue;
// types // types
typedef T underlying_type; typedef T underlying_type;
static_assert(std::is_integral_v<underlying_type>); static_assert(std::is_integral_v<underlying_type>);
typedef decltype(T(0) + T(0)) promoted_type; typedef decltype(T(0) + T(0)) promoted_type;
static_assert(std::is_integral_v<promoted_type>); static_assert(std::is_integral_v<promoted_type>);
static_assert(ThirdValue != 0 && ThirdValue != 1); enum value_type : underlying_type { False = 0, True = 1, Third = 2 };
enum value_type : underlying_type { False = 0, True = 1, Third = ThirdValue }; static_assert(sizeof(value_type) == sizeof(underlying_type));
static_assert(sizeof(underlying_type) <= sizeof(promoted_type));
// constructors // constructors
forceinline constexpr TriBool() noexcept {} forceinline constexpr TriBool() noexcept {}
forceinline constexpr TriBool(value_type x) noexcept : value(x) {} forceinline constexpr TriBool(value_type x) noexcept : value(x) {}
// permissive, converts all other values to Third!!
constexpr TriBool(promoted_type x) noexcept : value(x == 0 ? False : (x == 1 ? True : Third)) {} constexpr TriBool(promoted_type x) noexcept : value(x == 0 ? False : (x == 1 ? True : Third)) {}
#if __cplusplus >= 202002L #if __cplusplus >= 202002L
forceinline constexpr ~TriBool() noexcept = default; forceinline constexpr ~TriBool() noexcept = default;
@@ -117,8 +134,9 @@ struct TriBool final {
forceinline ~TriBool() noexcept = default; forceinline ~TriBool() noexcept = default;
#endif #endif
// explicit conversion to bool // explicit conversion to bool
// checks for > 0, so ThirdValue determines if Third is false (the default) or true explicit constexpr operator bool() const noexcept {
explicit constexpr operator bool() const noexcept { return value > False; } return IsThirdTrue ? (value != False) : (value == True);
}
// query; this is NOT the same as operator bool() // query; this is NOT the same as operator bool()
constexpr bool isStrictFalse() const noexcept { return value == False; } constexpr bool isStrictFalse() const noexcept { return value == False; }
constexpr bool isStrictTrue() const noexcept { return value == True; } constexpr bool isStrictTrue() const noexcept { return value == True; }
+5 -1
View File
@@ -26,9 +26,13 @@
#pragma once #pragma once
// UPX only uses the very basic Windows API
#if !defined(WIN32_LEAN_AND_MEAN) #if !defined(WIN32_LEAN_AND_MEAN)
#define WIN32_LEAN_AND_MEAN 1 #define WIN32_LEAN_AND_MEAN 1
#endif #endif
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x0400 // _WIN32_WINNT_NT4 aka Windows NT 4
#endif
#if (defined(_MSC_VER) && (_MSC_VER >= 1000 && _MSC_VER < 1200)) && !defined(__clang__) #if (defined(_MSC_VER) && (_MSC_VER >= 1000 && _MSC_VER < 1200)) && !defined(__clang__)
/* avoid -W4 warnings in <conio.h> */ /* avoid -W4 warnings in <conio.h> */
@@ -37,7 +41,7 @@
#pragma warning(disable : 4201 4214 4514) #pragma warning(disable : 4201 4214 4514)
#endif #endif
#if defined(_MSC_VER) && !defined(__clang__) #if defined(_MSC_VER) && !defined(__clang__)
/* avoid warnings in some versions of <windows.h> */ /* avoid warnings in some older versions of <windows.h> */
#pragma warning(disable : 5105) #pragma warning(disable : 5105)
#endif #endif
+7 -7
View File
@@ -130,15 +130,15 @@ using XSPAN_NAMESPACE_NAME::raw_index_bytes; // overloaded for all classes
// helper for implicit pointer conversions and MemBuffer overloads // helper for implicit pointer conversions and MemBuffer overloads
template <class R, class T> template <class R, class T>
inline R *xspan_make_helper__(R * /*dummy*/, T *first) may_throw { inline R *xspan_make_helper__(T *first) noexcept {
return first; // IMPORTANT: no cast here to detect bad usage return first; // IMPORTANT: no cast here to detect bad usage
} }
template <class R> template <class R>
inline R *xspan_make_helper__(R * /*dummy*/, std::nullptr_t /*first*/) noexcept { inline R *xspan_make_helper__(std::nullptr_t /*first*/) noexcept {
return nullptr; return nullptr;
} }
template <class R> template <class R>
inline R *xspan_make_helper__(R * /*dummy*/, MemBuffer &mb) noexcept { inline R *xspan_make_helper__(MemBuffer &mb) noexcept {
return (R *) membuffer_get_void_ptr(mb); return (R *) membuffer_get_void_ptr(mb);
} }
@@ -148,9 +148,9 @@ inline R *xspan_make_helper__(R * /*dummy*/, MemBuffer &mb) noexcept {
#define XSPAN_S(type) type * #define XSPAN_S(type) type *
// create a value // create a value
#define XSPAN_0_MAKE(type, first, ...) (xspan_make_helper__((type *) nullptr, (first))) #define XSPAN_0_MAKE(type, first, ...) (xspan_make_helper__<type>((first)))
#define XSPAN_P_MAKE(type, first, ...) (xspan_make_helper__((type *) nullptr, (first))) #define XSPAN_P_MAKE(type, first, ...) (xspan_make_helper__<type>((first)))
#define XSPAN_S_MAKE(type, first, ...) (xspan_make_helper__((type *) nullptr, (first))) #define XSPAN_S_MAKE(type, first, ...) (xspan_make_helper__<type>((first)))
// define a variable // define a variable
#define XSPAN_0_VAR(type, var, first, ...) type *var = XSPAN_0_MAKE(type, (first)) #define XSPAN_0_VAR(type, var, first, ...) type *var = XSPAN_0_MAKE(type, (first))
@@ -158,7 +158,7 @@ inline R *xspan_make_helper__(R * /*dummy*/, MemBuffer &mb) noexcept {
#define XSPAN_S_VAR(type, var, first, ...) type *var = XSPAN_S_MAKE(type, (first)) #define XSPAN_S_VAR(type, var, first, ...) type *var = XSPAN_S_MAKE(type, (first))
// cast to a different type (creates a new value) // cast to a different type (creates a new value)
#define XSPAN_TYPE_CAST(type, x) (reinterpret_cast<type *>(x)) #define XSPAN_TYPE_CAST(type, x) (upx::ptr_reinterpret_cast<type *>(x))
// poison a pointer: point to a non-null invalid address // poison a pointer: point to a non-null invalid address
#define XSPAN_INVALIDATE(x) ptr_invalidate_and_poison(x) #define XSPAN_INVALIDATE(x) ptr_invalidate_and_poison(x)
+2 -2
View File
@@ -284,8 +284,8 @@ public:
inline CSelf<U> type_cast() const { inline CSelf<U> type_cast() const {
typedef CSelf<U> R; typedef CSelf<U> R;
typedef typename R::pointer rpointer; typedef typename R::pointer rpointer;
return R(R::Unchecked, reinterpret_cast<rpointer>(ptr), size_in_bytes, return R(R::Unchecked, upx::ptr_reinterpret_cast<rpointer>(ptr), size_in_bytes,
reinterpret_cast<rpointer>(base)); upx::ptr_reinterpret_cast<rpointer>(base));
} }
bool operator==(pointer other) const noexcept { return ptr == other; } bool operator==(pointer other) const noexcept { return ptr == other; }
+1 -1
View File
@@ -127,7 +127,7 @@ public:
inline CSelf<U> type_cast() const { inline CSelf<U> type_cast() const {
typedef CSelf<U> R; typedef CSelf<U> R;
typedef typename R::pointer rpointer; typedef typename R::pointer rpointer;
return R(reinterpret_cast<rpointer>(ptr)); return R(upx::ptr_reinterpret_cast<rpointer>(ptr));
} }
// comparison // comparison
+5
View File
@@ -42,8 +42,13 @@ private:
#define CSelf PtrOrSpanOrNull #define CSelf PtrOrSpanOrNull
typedef CSelf<T> Self; typedef CSelf<T> Self;
// core config // core config
#if __cplusplus >= 201103L
static constexpr bool configRequirePtr = false;
static constexpr bool configRequireBase = false;
#else
enum { configRequirePtr = false }; enum { configRequirePtr = false };
enum { configRequireBase = false }; enum { configRequireBase = false };
#endif
#include "xspan_impl_common.h" #include "xspan_impl_common.h"
public: public:
+5
View File
@@ -42,8 +42,13 @@ private:
#define CSelf PtrOrSpan #define CSelf PtrOrSpan
typedef CSelf<T> Self; typedef CSelf<T> Self;
// core config // core config
#if __cplusplus >= 201103L
static constexpr bool configRequirePtr = true;
static constexpr bool configRequireBase = false;
#else
enum { configRequirePtr = true }; enum { configRequirePtr = true };
enum { configRequireBase = false }; enum { configRequireBase = false };
#endif
#include "xspan_impl_common.h" #include "xspan_impl_common.h"
public: public:
+5
View File
@@ -42,8 +42,13 @@ private:
#define CSelf Span #define CSelf Span
typedef CSelf<T> Self; typedef CSelf<T> Self;
// core config // core config
#if __cplusplus >= 201103L
static constexpr bool configRequirePtr = true;
static constexpr bool configRequireBase = true;
#else
enum { configRequirePtr = true }; enum { configRequirePtr = true };
enum { configRequireBase = true }; enum { configRequireBase = true };
#endif
#include "xspan_impl_common.h" #include "xspan_impl_common.h"
public: public:
+5 -5
View File
@@ -1,7 +1,7 @@
#pragma once #pragma once
#define UPX_VERSION_HEX 0x040200 /* 04.02.00 */ #define UPX_VERSION_HEX 0x040201 /* 04.02.01 */
#define UPX_VERSION_STRING "4.2.0" #define UPX_VERSION_STRING "4.2.1"
#define UPX_VERSION_STRING4 "4.20" #define UPX_VERSION_STRING4 "4.21"
#define UPX_VERSION_DATE "Oct 26th 2023" #define UPX_VERSION_DATE "Nov 1st 2023"
#define UPX_VERSION_DATE_ISO "2023-10-26" #define UPX_VERSION_DATE_ISO "2023-11-01"
#define UPX_VERSION_YEAR "2023" #define UPX_VERSION_YEAR "2023"
+69 -33
View File
@@ -36,6 +36,9 @@
#include <fcntl.h> #include <fcntl.h>
#include <sys/stat.h> #include <sys/stat.h>
#endif #endif
#if defined(_WIN32) || defined(__CYGWIN__)
#include "util/windows_lean.h" // _get_osfhandle, GetFileTime, SetFileTime
#endif
#include "conf.h" #include "conf.h"
#include "file.h" #include "file.h"
#include "packmast.h" #include "packmast.h"
@@ -43,6 +46,8 @@
#include "util/membuffer.h" #include "util/membuffer.h"
#if USE_UTIMENSAT && defined(AT_FDCWD) #if USE_UTIMENSAT && defined(AT_FDCWD)
#elif (defined(_WIN32) || defined(__CYGWIN__)) && 1
#define USE_SETFILETIME 1
#elif (ACC_OS_DOS32) && defined(__DJGPP__) #elif (ACC_OS_DOS32) && defined(__DJGPP__)
#define USE_FTIME 1 #define USE_FTIME 1
#elif ((ACC_OS_WIN32 || ACC_OS_WIN64) && (ACC_CC_INTELC || ACC_CC_MSC)) #elif ((ACC_OS_WIN32 || ACC_OS_WIN64) && (ACC_CC_INTELC || ACC_CC_MSC))
@@ -62,6 +67,18 @@
// util // util
**************************************************************************/ **************************************************************************/
namespace {
struct XStat {
struct stat st;
#if USE_SETFILETIME
FILETIME ft_atime;
FILETIME ft_mtime;
#elif USE_FTIME
struct ftime ft_ftime;
#endif
};
// ignore errors in some cases and silence __attribute__((__warn_unused_result__)) // ignore errors in some cases and silence __attribute__((__warn_unused_result__))
#define IGNORE_ERROR(var) ACC_UNUSED(var) #define IGNORE_ERROR(var) ACC_UNUSED(var)
@@ -79,7 +96,29 @@ static constexpr int get_open_flags(OpenMode om) noexcept {
return O_RDONLY | O_BINARY; // will cause an error if file does not exist return O_RDONLY | O_BINARY; // will cause an error if file does not exist
} }
static void copy_file_contents(const char *iname, const char *oname, OpenMode om) may_throw { // set file time of an open file
static void set_fd_timestamp(int fd, const XStat *xst) noexcept {
#if USE_SETFILETIME
BOOL r = SetFileTime((HANDLE) _get_osfhandle(fd), nullptr, &xst->ft_atime, &xst->ft_mtime);
IGNORE_ERROR(r);
#elif USE_FTIME
auto ft_ftime = xst->ft_ftime; // djgpp2 libc bug: not const, so use a copy
int r = setftime(fd, &ft_ftime);
IGNORE_ERROR(r);
#elif USE__FUTIME
struct _utimbuf u = {};
u.actime = xst->st.st_atime;
u.modtime = xst->st.st_mtime;
int r = _futime(fd, &u);
IGNORE_ERROR(r);
#endif
// maybe unused
UNUSED(fd);
UNUSED(xst);
}
static void copy_file_contents(const char *iname, const char *oname, OpenMode om,
const XStat *oname_timestamp) may_throw {
InputFile fi; InputFile fi;
fi.sopen(iname, get_open_flags(RO_MUST_EXIST), SH_DENYWR); fi.sopen(iname, get_open_flags(RO_MUST_EXIST), SH_DENYWR);
fi.seek(0, SEEK_SET); fi.seek(0, SEEK_SET);
@@ -96,17 +135,19 @@ static void copy_file_contents(const char *iname, const char *oname, OpenMode om
break; break;
fo.write(buf, bytes); fo.write(buf, bytes);
} }
if (oname_timestamp != nullptr)
set_fd_timestamp(fo.getFd(), oname_timestamp);
fi.closex(); fi.closex();
fo.closex(); fo.closex();
} }
static void copy_file_attributes(const struct stat *st, const char *oname, bool preserve_mode, static void copy_file_attributes(const XStat *xst, const char *oname, bool preserve_mode,
bool preserve_ownership, bool preserve_timestamp) noexcept { bool preserve_ownership, bool preserve_timestamp) noexcept {
const struct stat *const st = &xst->st;
// copy time stamp // copy time stamp
if (preserve_timestamp) { if (preserve_timestamp) {
#if USE_UTIMENSAT && defined(AT_FDCWD) #if USE_UTIMENSAT && defined(AT_FDCWD)
struct timespec times[2]; struct timespec times[2] = {};
memset(&times[0], 0, sizeof(times));
#if HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC #if HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC
// macOS // macOS
times[0] = st->st_atimespec; times[0] = st->st_atimespec;
@@ -119,8 +160,7 @@ static void copy_file_attributes(const struct stat *st, const char *oname, bool
int r = utimensat(AT_FDCWD, oname, &times[0], 0); int r = utimensat(AT_FDCWD, oname, &times[0], 0);
IGNORE_ERROR(r); IGNORE_ERROR(r);
#elif USE_UTIME #elif USE_UTIME
struct utimbuf u; struct utimbuf u = {};
mem_clear(&u);
u.actime = st->st_atime; u.actime = st->st_atime;
u.modtime = st->st_mtime; u.modtime = st->st_mtime;
int r = utime(oname, &u); int r = utime(oname, &u);
@@ -149,6 +189,7 @@ static void copy_file_attributes(const struct stat *st, const char *oname, bool
} }
#endif #endif
// maybe unused // maybe unused
UNUSED(xst);
UNUSED(st); UNUSED(st);
UNUSED(oname); UNUSED(oname);
UNUSED(preserve_mode); UNUSED(preserve_mode);
@@ -156,6 +197,8 @@ static void copy_file_attributes(const struct stat *st, const char *oname, bool
UNUSED(preserve_timestamp); UNUSED(preserve_timestamp);
} }
} // namespace
/************************************************************************* /*************************************************************************
// process one file // process one file
**************************************************************************/ **************************************************************************/
@@ -164,8 +207,8 @@ void do_one_file(const char *const iname, char *const oname) may_throw {
oname[0] = 0; // make empty oname[0] = 0; // make empty
// check iname stat // check iname stat
struct stat st; XStat xst = {};
mem_clear(&st); struct stat &st = xst.st;
#if HAVE_LSTAT #if HAVE_LSTAT
int rr = lstat(iname, &st); int rr = lstat(iname, &st);
#else #else
@@ -212,14 +255,16 @@ void do_one_file(const char *const iname, char *const oname) may_throw {
InputFile fi; InputFile fi;
fi.sopen(iname, get_open_flags(RO_MUST_EXIST), SH_DENYWR); fi.sopen(iname, get_open_flags(RO_MUST_EXIST), SH_DENYWR);
#if USE_FTIME
struct ftime fi_ftime;
mem_clear(&fi_ftime);
if (opt->preserve_timestamp) { if (opt->preserve_timestamp) {
if (getftime(fi.getFd(), &fi_ftime) != 0) #if USE_SETFILETIME
if (GetFileTime((HANDLE) _get_osfhandle(fi.getFd()), nullptr, &xst.ft_atime,
&xst.ft_mtime) == 0)
throwIOException("cannot determine file timestamp");
#elif USE_FTIME
if (getftime(fi.getFd(), &xst.ft_ftime) != 0)
throwIOException("cannot determine file timestamp"); throwIOException("cannot determine file timestamp");
}
#endif #endif
}
// open output file // open output file
// NOTE: only use "preserve_link" if you really need it, e.g. it can fail // NOTE: only use "preserve_link" if you really need it, e.g. it can fail
@@ -248,8 +293,7 @@ void do_one_file(const char *const iname, char *const oname) may_throw {
if (opt->output_name && preserve_link) { if (opt->output_name && preserve_link) {
flags = get_open_flags(WO_CREATE_OR_TRUNCATE); flags = get_open_flags(WO_CREATE_OR_TRUNCATE);
#if HAVE_LSTAT #if HAVE_LSTAT
struct stat ost; struct stat ost = {};
mem_clear(&ost);
int r = lstat(tname, &ost); int r = lstat(tname, &ost);
if (r == 0 && S_ISREG(ost.st_mode)) { if (r == 0 && S_ISREG(ost.st_mode)) {
preserve_link = ost.st_nlink >= 2; preserve_link = ost.st_nlink >= 2;
@@ -298,18 +342,8 @@ void do_one_file(const char *const iname, char *const oname) may_throw {
throwInternalError("invalid command"); throwInternalError("invalid command");
// copy time stamp // copy time stamp
if (oname[0] && opt->preserve_timestamp && fo.isOpen()) { if (oname[0] && opt->preserve_timestamp && fo.isOpen())
#if USE_FTIME set_fd_timestamp(fo.getFd(), &xst);
int r = setftime(fo.getFd(), &fi_ftime);
IGNORE_ERROR(r);
#elif USE__FUTIME
struct _utimbuf u;
u.actime = st.st_atime;
u.modtime = st.st_mtime;
int r = _futime(fo.getFd(), &u);
IGNORE_ERROR(r);
#endif
}
// close files // close files
fi.closex(); fi.closex();
@@ -323,9 +357,10 @@ void do_one_file(const char *const iname, char *const oname) may_throw {
if (!makebakname(bakname, sizeof(bakname), iname)) if (!makebakname(bakname, sizeof(bakname), iname))
throwIOException("could not create a backup file name"); throwIOException("could not create a backup file name");
if (preserve_link) { if (preserve_link) {
copy_file_contents(iname, bakname, WO_MUST_CREATE); copy_file_contents(iname, bakname, WO_MUST_CREATE, &xst);
copy_file_attributes(&st, bakname, true, true, true); copy_file_attributes(&xst, bakname, true, true, true);
copy_file_contents(oname, iname, WO_MUST_EXIST_TRUNCATE); const XStat *xstamp = opt->preserve_timestamp ? &xst : nullptr;
copy_file_contents(oname, iname, WO_MUST_EXIST_TRUNCATE, xstamp);
FileBase::unlink(oname); FileBase::unlink(oname);
copy_timestamp_only = true; copy_timestamp_only = true;
} else { } else {
@@ -333,7 +368,8 @@ void do_one_file(const char *const iname, char *const oname) may_throw {
FileBase::rename(oname, iname); FileBase::rename(oname, iname);
} }
} else if (preserve_link) { } else if (preserve_link) {
copy_file_contents(oname, iname, WO_MUST_EXIST_TRUNCATE); const XStat *xstamp = opt->preserve_timestamp ? &xst : nullptr;
copy_file_contents(oname, iname, WO_MUST_EXIST_TRUNCATE, xstamp);
FileBase::unlink(oname); FileBase::unlink(oname);
copy_timestamp_only = true; copy_timestamp_only = true;
} else { } else {
@@ -348,9 +384,9 @@ void do_one_file(const char *const iname, char *const oname) may_throw {
oname[0] = 0; // done with oname oname[0] = 0; // done with oname
const char *name = opt->output_name ? opt->output_name : iname; const char *name = opt->output_name ? opt->output_name : iname;
if (copy_timestamp_only) if (copy_timestamp_only)
copy_file_attributes(&st, name, false, false, opt->preserve_timestamp); copy_file_attributes(&xst, name, false, false, opt->preserve_timestamp);
else else
copy_file_attributes(&st, name, opt->preserve_mode, opt->preserve_ownership, copy_file_attributes(&xst, name, opt->preserve_mode, opt->preserve_ownership,
opt->preserve_timestamp); opt->preserve_timestamp);
} }