Fix length when stub unmaps compressed input for main program

https://github.com/upx/upx/issues/606
	modified:   ../.github/travis_testsuite_1-expected_sha256sums.sh
	modified:   stub/amd64-linux.elf-fold.h
	modified:   stub/src/amd64-linux.elf-fold.S
	modified:   stub/tmp/amd64-linux.elf-fold.map
This commit is contained in:
John Reiser
2022-10-06 17:29:07 -07:00
committed by Markus F.X.J. Oberhumer
parent 1e8f1f49d0
commit 201d9f1346
4 changed files with 167 additions and 168 deletions
@@ -46,8 +46,8 @@ 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="\
f6b0cc2cc2277cf899bc5dc78b7945d2af0d7ec750fc8bfe2c4297f6d877ad20 *amd64-linux.elf/upx-3.91 a3ca73b07c89364cd8e858b12ee6fe38f8499da490bc954fcd3e60ce11a2eb66 *amd64-linux.elf/upx-3.91
007ebc519cb7418eaaf97da1bcb9d29e30f67749e607814842032e21d841308b *amd64-linux.elf/upx-3.95 7fea7e52eb9b38a3d28da8db3cde3f4d133f1c32dad6a8939ccbdc48d14437f8 *amd64-linux.elf/upx-3.95
939e9058b5abec32f27588474ad334d8d05a9a8515e75dc417d397c6de74d02a *amd64-win64.pe/upx-3.95.exe 939e9058b5abec32f27588474ad334d8d05a9a8515e75dc417d397c6de74d02a *amd64-win64.pe/upx-3.95.exe
2f38cd3b4269ef192f151410598013b43241f5d022fae297b4dab96a83fb768c *arm-linux.elf/upx-3.95 2f38cd3b4269ef192f151410598013b43241f5d022fae297b4dab96a83fb768c *arm-linux.elf/upx-3.95
4c488f100a589aace7e52a1f49982b618662ed2227e66a1e8c9699c9969ccedc *arm-wince.pe/upx-3.91.exe 4c488f100a589aace7e52a1f49982b618662ed2227e66a1e8c9699c9969ccedc *arm-wince.pe/upx-3.91.exe
@@ -69,8 +69,8 @@ ac331450fd0609f0f47a5012156a13d06dcabdc8ba58d5a7810dee6f17fda123 *m68k-atari.tos
0e7e2e72a4080ca90c6a748a11ecda96fdd9ad394017d13648df683090a62438 *powerpc64le-linux.elf/upx-3.95 0e7e2e72a4080ca90c6a748a11ecda96fdd9ad394017d13648df683090a62438 *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\ expected_sha256sums__t120_compress_ucl_nrv2d_3_no_filter="\
27bd802aea09729afb3174f2ae8f203689b09cc440197d5c32d9c62898d03d7a *amd64-linux.elf/upx-3.91 0f8c20ec1c25d65e700c0f095c0374bd19b66c9ed7e118e7b89b49f17a3e4a5c *amd64-linux.elf/upx-3.91
4a4b8e2334407b6a33c75c1c07d8b8b09c40f0b5f350e93a1c3e7069fa006a44 *amd64-linux.elf/upx-3.95 9dbb37b6f84258886238456e7de0167413e83262945b1d3b5acb79670951fbbf *amd64-linux.elf/upx-3.95
f5380d57da37b4d5e1258f0d36e329a936c3976ac7f684baa20899c9cfc5f167 *amd64-win64.pe/upx-3.95.exe f5380d57da37b4d5e1258f0d36e329a936c3976ac7f684baa20899c9cfc5f167 *amd64-win64.pe/upx-3.95.exe
a249ce25cccee0a0bf516b7e4fcadf7c7d2b653a0363d3267ef4549e6f7daf60 *arm-linux.elf/upx-3.95 a249ce25cccee0a0bf516b7e4fcadf7c7d2b653a0363d3267ef4549e6f7daf60 *arm-linux.elf/upx-3.95
0c588526f42f3f0931731fb01e1e257780c9a87a1701b2c3f4a7605b6911f618 *arm-wince.pe/upx-3.91.exe 0c588526f42f3f0931731fb01e1e257780c9a87a1701b2c3f4a7605b6911f618 *arm-wince.pe/upx-3.91.exe
@@ -92,8 +92,8 @@ fb7d8645e851534e4050efac23aff3fc0557f217d4fe2bb3715f8771845f5759 *i386-dos32.djg
640786b56b3225d450e5270aea84d82e8ca678e0ad93e7c8322556ecd173ba47 *powerpc64le-linux.elf/upx-3.95 640786b56b3225d450e5270aea84d82e8ca678e0ad93e7c8322556ecd173ba47 *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\ expected_sha256sums__t130_compress_ucl_nrv2e_3_no_filter="\
b168a4d89c38e76755f9ac1c63128ea9925f3fedabec9d952a7e30d03d45ed3e *amd64-linux.elf/upx-3.91 33df4d74f066c1e8070a7b569eb0125122ab94afb00f54dda311350612fe670b *amd64-linux.elf/upx-3.91
ea6ac20167f02c6fafa2eb55432a95ca5ed8fe9082e4feaf2311ec3f78c2f12b *amd64-linux.elf/upx-3.95 a984f52c22ddb0026663e6e0e9a9fa571e7162b73faed0f985a3687532702af0 *amd64-linux.elf/upx-3.95
c76b656a4e5c9d3f691d186b488e89401246395e05a4c571d8384826ec1afd7a *amd64-win64.pe/upx-3.95.exe c76b656a4e5c9d3f691d186b488e89401246395e05a4c571d8384826ec1afd7a *amd64-win64.pe/upx-3.95.exe
7650511c4e884de3705003bd7f2391477af4a08de83cdae12c948ed48a0bac8f *arm-linux.elf/upx-3.95 7650511c4e884de3705003bd7f2391477af4a08de83cdae12c948ed48a0bac8f *arm-linux.elf/upx-3.95
0fd539a9cf015e60f55cfe9a2cb735c39abcec4097a1d9dad14133817322f149 *arm-wince.pe/upx-3.91.exe 0fd539a9cf015e60f55cfe9a2cb735c39abcec4097a1d9dad14133817322f149 *arm-wince.pe/upx-3.91.exe
@@ -115,8 +115,8 @@ a6afff2e30fb11d2fb208aafaa5eb146add865a61816ae32e0f9206788a255df *powerpc-linux.
cbfd2079fe1d2864c29022580268d9e3418d77a2909de4df7a9225b0622f97b9 *powerpc64le-linux.elf/upx-3.95 cbfd2079fe1d2864c29022580268d9e3418d77a2909de4df7a9225b0622f97b9 *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t140_compress_lzma_2_no_filter="\ expected_sha256sums__t140_compress_lzma_2_no_filter="\
a3671172894755ab204da45c4c7cc5aaef05be02e66c1a14d0df8a90fbcc52d7 *amd64-linux.elf/upx-3.91 48fa9f3ea529f31bacb47245be82f890590ec533361d90649d1ea215f86c2043 *amd64-linux.elf/upx-3.91
4ae01576c777a57200045921eb34390613c7d664a0b8ffb1a0be33a767ceb1aa *amd64-linux.elf/upx-3.95 23d7034e40fb81ffc8308a6feb42f6ced036fe75c075b3296d3ccebaf6f281da *amd64-linux.elf/upx-3.95
dd10984767f9fe67900b64d63699ccaf858b9072272eef5ca373a7701d5057bb *amd64-win64.pe/upx-3.95.exe dd10984767f9fe67900b64d63699ccaf858b9072272eef5ca373a7701d5057bb *amd64-win64.pe/upx-3.95.exe
d5ee1927ebc47704a16fd93ff3d738817e927a8a828bcd4a8245770a759522c8 *arm-linux.elf/upx-3.95 d5ee1927ebc47704a16fd93ff3d738817e927a8a828bcd4a8245770a759522c8 *arm-linux.elf/upx-3.95
9e5ad415bb42155a3c527fd259ac7ca1534a14bec888cb1ee8a7cc8e2ca0019c *arm-wince.pe/upx-3.91.exe 9e5ad415bb42155a3c527fd259ac7ca1534a14bec888cb1ee8a7cc8e2ca0019c *arm-wince.pe/upx-3.91.exe
@@ -138,8 +138,8 @@ abcd61803665e26db028b350038b9e4c35d60879141a76cf0e97d73feca4aaec *powerpc-linux.
4e765dcea0a8d47d8d9836db4b61ee1531ac896bec210b4f44ff70e7bc32f549 *powerpc64le-linux.elf/upx-3.95 4e765dcea0a8d47d8d9836db4b61ee1531ac896bec210b4f44ff70e7bc32f549 *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t150_compress_ucl_2_all_filters="\ expected_sha256sums__t150_compress_ucl_2_all_filters="\
006bce12bc2b267fd4af5e9f133937b1db662eb5d410c26e7fd698063d222400 *amd64-linux.elf/upx-3.91 1d33164a278481a20dbb7111be79332eb1b9a99bbd6969193963c808875676a4 *amd64-linux.elf/upx-3.91
11537c56b05640039715a60748b0006e2b858f8befad10a8a72c12a37cd9939d *amd64-linux.elf/upx-3.95 cb9b63b3819eadece658a0e744128a1369d88f773cae2022df70c9acbd99edf8 *amd64-linux.elf/upx-3.95
870083b25a88a2ff5cb49dfa109e55fc082b11af39c352740bab65c551b40282 *amd64-win64.pe/upx-3.95.exe 870083b25a88a2ff5cb49dfa109e55fc082b11af39c352740bab65c551b40282 *amd64-win64.pe/upx-3.95.exe
7f65410fa7582b6d2086167b8b3b13ced9b1eaddb86e57b3bbe54652ec3f6a21 *arm-linux.elf/upx-3.95 7f65410fa7582b6d2086167b8b3b13ced9b1eaddb86e57b3bbe54652ec3f6a21 *arm-linux.elf/upx-3.95
f88d160e5a3e7e323623dc5f1f6edabd6ed0ac477beb168bf754047c04531097 *arm-wince.pe/upx-3.91.exe f88d160e5a3e7e323623dc5f1f6edabd6ed0ac477beb168bf754047c04531097 *arm-wince.pe/upx-3.91.exe
@@ -161,8 +161,8 @@ f29d9bb67de28a5eddbd3153c616f8b840d019bed48dfc6cf99ffc0bc6146390 *m68k-atari.tos
0e604a160e036fb263d0aa0f3d6580f8af69792f884774119e78bac01a4fc1d3 *powerpc64le-linux.elf/upx-3.95 0e604a160e036fb263d0aa0f3d6580f8af69792f884774119e78bac01a4fc1d3 *powerpc64le-linux.elf/upx-3.95
" "
expected_sha256sums__t160_compress_all_methods_1_no_filter="\ expected_sha256sums__t160_compress_all_methods_1_no_filter="\
214acc08207baa990df3f450bf25db91f1e7808913cdb9fb443211d47e0c2dc1 *amd64-linux.elf/upx-3.91 7258b52ee55c5edc7fab130ab04638b04858db8b98daf82347b6ca273dc57361 *amd64-linux.elf/upx-3.91
8ff9b9775181ae84e62a4180be8efb3902b2b2ebc877bdcea77b4933aa52152e *amd64-linux.elf/upx-3.95 63ae9c5c81f57e8a3c79855b6a3577e627ff0702bb2f509bacc903a9256f944e *amd64-linux.elf/upx-3.95
867627ab2c87ffe1d82d5f131c0b05f73fc73d1e0a0011e369adb543be3b0deb *amd64-win64.pe/upx-3.95.exe 867627ab2c87ffe1d82d5f131c0b05f73fc73d1e0a0011e369adb543be3b0deb *amd64-win64.pe/upx-3.95.exe
edecf9c4b5dd8ec1d819f09aad3e052a6aec95fe0c8a0a0fde5f2a00f208b8a7 *arm-linux.elf/upx-3.95 edecf9c4b5dd8ec1d819f09aad3e052a6aec95fe0c8a0a0fde5f2a00f208b8a7 *arm-linux.elf/upx-3.95
9394653a9f6ca77c82916f06d402af45639815edc1eb06ba01e67510927f9d34 *arm-wince.pe/upx-3.91.exe 9394653a9f6ca77c82916f06d402af45639815edc1eb06ba01e67510927f9d34 *arm-wince.pe/upx-3.91.exe
@@ -184,8 +184,8 @@ f30f6d95697a74646e7fe87048483bffb89242de9052d6b057bb860186368a5a *powerpc-linux.
6ec1ef45ca791fc3ca09d66f9da7ee2ac15378d0272a2cd771fdecdcb2562de9 *powerpc64le-linux.elf/upx-3.95 6ec1ef45ca791fc3ca09d66f9da7ee2ac15378d0272a2cd771fdecdcb2562de9 *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="\
6bfbec1dd44f805d0a857413159fa94d0a6a0392028958e23c19833aff7db521 *amd64-linux.elf/upx-3.91 2b8be89d9a9dbef48f9b4eaed7b91e7bf95a0b27b558c8cf0ddccc3dedbc68e1 *amd64-linux.elf/upx-3.91
7567ca9bc79e6d2e199aa091795c16ec7e9ee43273760d26f86ae8cb04d74755 *amd64-linux.elf/upx-3.95 c674cd29b09ed05c169307b675e599b8ee3d69f8275d517128792212606fa8a5 *amd64-linux.elf/upx-3.95
47165d0a33de56cdcf5788773f3630b698bbdc68b8f2a383b348d4264406536b *amd64-win64.pe/upx-3.95.exe 47165d0a33de56cdcf5788773f3630b698bbdc68b8f2a383b348d4264406536b *amd64-win64.pe/upx-3.95.exe
9dd04f03f54b1d5fd0c47b2fb7441c0a5b4ed28561e21f76369c42abd7e03298 *arm-linux.elf/upx-3.95 9dd04f03f54b1d5fd0c47b2fb7441c0a5b4ed28561e21f76369c42abd7e03298 *arm-linux.elf/upx-3.95
4f3f1dbdd225a72d37555d5f60a2eb8308b87ad1e641285f3f693e91cb430985 *arm-wince.pe/upx-3.91.exe 4f3f1dbdd225a72d37555d5f60a2eb8308b87ad1e641285f3f693e91cb430985 *arm-wince.pe/upx-3.91.exe
+126 -126
View File
@@ -1,5 +1,5 @@
/* amd64-linux.elf-fold.h /* amd64-linux.elf-fold.h
created from amd64-linux.elf-fold.bin, 2360 (0x938) bytes created from amd64-linux.elf-fold.bin, 2356 (0x934) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -31,20 +31,20 @@
*/ */
#define STUB_AMD64_LINUX_ELF_FOLD_SIZE 2360 #define STUB_AMD64_LINUX_ELF_FOLD_SIZE 2356
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0x2f1172c0 #define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0x4f86718f
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0xa8c542f0 #define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0x48291510
unsigned char stub_amd64_linux_elf_fold[2360] = { unsigned char stub_amd64_linux_elf_fold[2356] = {
/* 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 */ 56, 9, 0, 0, 0, 0, 0, 0, 56, 9, 0, 0, 0, 0, 0, 0, /* 0x0060 */ 52, 9, 0, 0, 0, 0, 0, 0, 52, 9, 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 */ 56, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0080 */ 52, 9, 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,
@@ -65,123 +65,123 @@ unsigned char stub_amd64_linux_elf_fold[2360] = {
/* 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, 22, 6, 0, 0, 72,129,196, 8, 8, 0, /* 0x01d0 */ 137,197, 73,137,232,232, 18, 6, 0, 0, 72,129,196, 8, 8, 0,
/* 0x01e0 */ 0, 72,137, 68, 36, 32, 91, 73,139,181,136, 0, 0, 0, 76,137, /* 0x01e0 */ 0, 72,137, 68, 36, 32, 91, 73,139,181,160, 0, 0, 0, 76,137,
/* 0x01f0 */ 239, 73, 43,117, 80,232, 79, 0, 0, 0, 77, 41,201, 65,137,216, /* 0x01f0 */ 239,232, 79, 0, 0, 0, 77, 41,201, 65,137,216,106, 2, 89,106,
/* 0x0200 */ 106, 2, 89,106, 1, 90,190, 0, 16, 0, 0, 41,255,232, 16, 0, /* 0x0200 */ 1, 90,190, 0, 16, 0, 0, 41,255,232, 16, 0, 0, 0,137,223,
/* 0x0210 */ 0, 0,137,223,232, 40, 0, 0, 0, 95, 94,106, 11, 88, 65,255, /* 0x0210 */ 232, 40, 0, 0, 0, 95, 94,106, 11, 88, 65,255,102,248,176, 9,
/* 0x0220 */ 102,248,176, 9, 73,137,202, 15,182,192, 15, 5, 72, 61, 0,240, /* 0x0220 */ 73,137,202, 15,182,192, 15, 5, 72, 61, 0,240,255,255,114, 4,
/* 0x0230 */ 255,255,114, 4, 72,131,200,255,195,176, 60,235, 2,176, 12,235, /* 0x0230 */ 72,131,200,255,195,176, 60,235, 2,176, 12,235, 2,176, 3,235,
/* 0x0240 */ 2,176, 3,235, 2,176, 2,235, 2,176, 11,235, 2,176, 10,235, /* 0x0240 */ 2,176, 2,235, 2,176, 11,235, 2,176, 10,235, 2,176, 1,235,
/* 0x0250 */ 2,176, 1,235, 2,176, 0,235,206, 0, 0, 0, 81, 72, 57, 23, /* 0x0250 */ 2,176, 0,235,206, 0, 0, 0, 81, 72, 57, 23, 76,139, 71, 8,
/* 0x0260 */ 76,139, 71, 8, 72,141, 74,255,115, 10,191,127, 0, 0, 0,232, /* 0x0260 */ 72,141, 74,255,115, 10,191,127, 0, 0, 0,232,197,255,255,255,
/* 0x0270 */ 197,255,255,255, 72,131,249,255,116, 17, 65, 15,182, 0, 72,255, /* 0x0270 */ 72,131,249,255,116, 17, 65, 15,182, 0, 72,255,201, 73,255,192,
/* 0x0280 */ 201, 73,255,192,136, 6, 72,255,198,235,233, 72, 1, 87, 8, 72, /* 0x0280 */ 136, 6, 72,255,198,235,233, 72, 1, 87, 8, 72, 41, 23, 88,195,
/* 0x0290 */ 41, 23, 88,195, 65, 85, 73,137,213, 65, 84, 73,137,204, 85, 72, /* 0x0290 */ 65, 85, 73,137,213, 65, 84, 73,137,204, 85, 72,137,253, 83, 72,
/* 0x02a0 */ 137,253, 83, 72,137,243, 72,131,236, 40, 72,131, 62, 0, 15,132, /* 0x02a0 */ 137,243, 72,131,236, 40, 72,131, 62, 0, 15,132,230, 0, 0, 0,
/* 0x02b0 */ 230, 0, 0, 0, 72,141,116, 36, 16,186, 12, 0, 0, 0, 72,137, /* 0x02b0 */ 72,141,116, 36, 16,186, 12, 0, 0, 0, 72,137,239,232,150,255,
/* 0x02c0 */ 239,232,150,255,255,255,139, 68, 36, 16,139,116, 36, 20,133,192, /* 0x02c0 */ 255,255,139, 68, 36, 16,139,116, 36, 20,133,192,117, 21,129,254,
/* 0x02d0 */ 117, 21,129,254, 85, 80, 88, 33,117, 17, 72,131,125, 0, 0, 15, /* 0x02d0 */ 85, 80, 88, 33,117, 17, 72,131,125, 0, 0, 15,132,181, 0, 0,
/* 0x02e0 */ 132,181, 0, 0, 0,235, 4,133,246,117, 10,191,127, 0, 0, 0, /* 0x02e0 */ 0,235, 4,133,246,117, 10,191,127, 0, 0, 0,232, 68,255,255,
/* 0x02f0 */ 232, 68,255,255,255, 57,198,119,242,137,194, 72, 59, 19,119,235, /* 0x02f0 */ 255, 57,198,119,242,137,194, 72, 59, 19,119,235, 57,198, 72,139,
/* 0x0300 */ 57,198, 72,139, 67, 8,115,108, 72,137, 84, 36, 8, 72,139,125, /* 0x0300 */ 67, 8,115,108, 72,137, 84, 36, 8, 72,139,125, 8, 72,141, 76,
/* 0x0310 */ 8, 72,141, 76, 36, 8, 68,139, 68, 36, 24, 72,137,194, 65,255, /* 0x0310 */ 36, 8, 68,139, 68, 36, 24, 72,137,194, 65,255,213,133,192,117,
/* 0x0320 */ 213,133,192,117,198,139, 68, 36, 16, 72,139,116, 36, 8, 72, 57, /* 0x0320 */ 198,139, 68, 36, 16, 72,139,116, 36, 8, 72, 57,198,117,184, 15,
/* 0x0330 */ 198,117,184, 15,182, 76, 36, 25,132,201, 15,149,194, 49,192, 77, /* 0x0330 */ 182, 76, 36, 25,132,201, 15,149,194, 49,192, 77,133,228, 15,149,
/* 0x0340 */ 133,228, 15,149,192,133,194,116, 29, 72,129,254, 0, 2, 0, 0, /* 0x0340 */ 192,133,194,116, 29, 72,129,254, 0, 2, 0, 0,119, 5, 72, 57,
/* 0x0350 */ 119, 5, 72, 57, 51,117, 15, 15,182, 84, 36, 26, 15,182,201, 72, /* 0x0350 */ 51,117, 15, 15,182, 84, 36, 26, 15,182,201, 72,139,123, 8, 65,
/* 0x0360 */ 139,123, 8, 65,255,212,139, 68, 36, 20, 72, 1, 69, 8, 72, 41, /* 0x0360 */ 255,212,139, 68, 36, 20, 72, 1, 69, 8, 72, 41, 69, 0,235, 13,
/* 0x0370 */ 69, 0,235, 13,137,242, 72,137,239, 72,137,198,232,219,254,255, /* 0x0370 */ 137,242, 72,137,239, 72,137,198,232,219,254,255,255,139, 84, 36,
/* 0x0380 */ 255,139, 84, 36, 16, 72,139, 3, 72, 1, 83, 8, 72, 41,208, 72, /* 0x0380 */ 16, 72,139, 3, 72, 1, 83, 8, 72, 41,208, 72,133,192, 72,137,
/* 0x0390 */ 133,192, 72,137, 3,233, 20,255,255,255, 72,131,196, 40, 91, 93, /* 0x0390 */ 3,233, 20,255,255,255, 72,131,196, 40, 91, 93, 65, 92, 65, 93,
/* 0x03a0 */ 65, 92, 65, 93,195, 72,133,255, 73,137,209,116, 54, 64,246,199, /* 0x03a0 */ 195, 72,133,255, 73,137,209,116, 54, 64,246,199, 1,117, 48, 72,
/* 0x03b0 */ 1,117, 48, 72,139, 15, 65,137,240, 76, 57,193,116, 18, 72,131, /* 0x03b0 */ 139, 15, 65,137,240, 76, 57,193,116, 18, 72,131,249, 1, 15,148,
/* 0x03c0 */ 249, 1, 15,148,194, 49,192,133,246, 15,149,192,133,194,116, 8, /* 0x03c0 */ 194, 49,192,133,246, 15,149,192,133,194,116, 8, 76,137, 7, 76,
/* 0x03d0 */ 76,137, 7, 76,137, 79, 8,195, 72,133,201,116, 6, 72,131,199, /* 0x03d0 */ 137, 79, 8,195, 72,133,201,116, 6, 72,131,199, 16,235,208,195,
/* 0x03e0 */ 16,235,208,195, 65, 87, 73,137,255, 65, 86, 65, 85, 73,137,253, /* 0x03e0 */ 65, 87, 73,137,255, 65, 86, 65, 85, 73,137,253, 65, 84, 85, 83,
/* 0x03f0 */ 65, 84, 85, 83, 72,131,236,104, 76, 3,111, 32, 72,133,246, 72, /* 0x03f0 */ 72,131,236,104, 76, 3,111, 32, 72,133,246, 72,139,132, 36,160,
/* 0x0400 */ 139,132, 36,160, 0, 0, 0,137, 84, 36, 60, 72,137,116, 36, 64, /* 0x0400 */ 0, 0, 0,137, 84, 36, 60, 72,137,116, 36, 64, 72,137, 76, 36,
/* 0x0410 */ 72,137, 76, 36, 48, 76,137, 68, 36, 40, 76,137, 76, 36, 32, 72, /* 0x0410 */ 48, 76,137, 68, 36, 40, 76,137, 76, 36, 32, 72,139, 56, 65, 15,
/* 0x0420 */ 139, 56, 65, 15,183, 87, 16,116, 76, 72,139, 71, 32, 72, 1,248, /* 0x0420 */ 183, 87, 16,116, 76, 72,139, 71, 32, 72, 1,248, 72, 43,120, 72,
/* 0x0430 */ 72, 43,120, 72,102,131,250, 2,117, 4, 72,139,120, 16, 72,139, /* 0x0430 */ 102,131,250, 2,117, 4, 72,139,120, 16, 72,139,112, 40, 69, 49,
/* 0x0440 */ 112, 40, 69, 49,201, 65,131,200,255, 49,210,185, 50, 0, 0, 0, /* 0x0440 */ 201, 65,131,200,255, 49,210,185, 50, 0, 0, 0, 72,141, 4, 62,
/* 0x0450 */ 72,141, 4, 62, 72,137, 68, 36, 72,232,196,253,255,255,102, 65, /* 0x0450 */ 72,137, 68, 36, 72,232,196,253,255,255,102, 65,131,127, 16, 2,
/* 0x0460 */ 131,127, 16, 2, 73,137,198, 15,133,172, 0, 0, 0, 69, 49,246, /* 0x0460 */ 73,137,198, 15,133,172, 0, 0, 0, 69, 49,246,233,164, 0, 0,
/* 0x0470 */ 233,164, 0, 0, 0,102,131,250, 3, 65, 15,183, 87, 56,185, 16, /* 0x0470 */ 0,102,131,250, 3, 65, 15,183, 87, 56,185, 16, 0, 0, 0,184,
/* 0x0480 */ 0, 0, 0,184, 0, 0, 0, 0, 73,137,248, 76,137,238, 15, 68, /* 0x0480 */ 0, 0, 0, 0, 73,137,248, 76,137,238, 15, 68,200, 72,131,205,
/* 0x0490 */ 200, 72,131,205,255, 49,219, 49,255,131,193, 34,255,202,120, 33, /* 0x0490 */ 255, 49,219, 49,255,131,193, 34,255,202,120, 33,131, 62, 1,117,
/* 0x04a0 */ 131, 62, 1,117, 22, 72,139, 70, 16, 72, 57,232, 72, 15, 66,232, /* 0x04a0 */ 22, 72,139, 70, 16, 72, 57,232, 72, 15, 66,232, 72, 3, 70, 40,
/* 0x04b0 */ 72, 3, 70, 40, 72, 57,195, 72, 15, 66,216, 72,131,198, 56,235, /* 0x04b0 */ 72, 57,195, 72, 15, 66,216, 72,131,198, 56,235,219, 72,129,229,
/* 0x04c0 */ 219, 72,129,229, 0,240,255,255, 72, 41,235, 72,129,195,255, 15, /* 0x04c0 */ 0,240,255,255, 72, 41,235, 72,129,195,255, 15, 0, 0, 72,129,
/* 0x04d0 */ 0, 0, 72,129,227, 0,240,255,255,246,193, 16,116, 5, 72,137, /* 0x04d0 */ 227, 0,240,255,255,246,193, 16,116, 5, 72,137,239,235, 19, 72,
/* 0x04e0 */ 239,235, 19, 72,133,237,117, 14,137,200, 76,137,199,131,200, 16, /* 0x04e0 */ 133,237,117, 14,137,200, 76,137,199,131,200, 16, 77,133,192, 15,
/* 0x04f0 */ 77,133,192, 15, 69,200, 69, 49,201, 65,131,200,255, 49,210, 72, /* 0x04f0 */ 69,200, 69, 49,201, 65,131,200,255, 49,210, 72,137,222,232, 27,
/* 0x0500 */ 137,222,232, 27,253,255,255, 72,137,199, 72,141, 4, 3, 73,137, /* 0x0500 */ 253,255,255, 72,137,199, 72,141, 4, 3, 73,137,254, 72,137, 68,
/* 0x0510 */ 254, 72,137, 68, 36, 72, 73, 41,238,102, 65,131,127, 56, 0,199, /* 0x0510 */ 36, 72, 73, 41,238,102, 65,131,127, 56, 0,199, 68, 36, 28, 0,
/* 0x0520 */ 68, 36, 28, 0, 0, 0, 0, 15,132,162, 2, 0, 0, 72,131,124, /* 0x0520 */ 0, 0, 0, 15,132,162, 2, 0, 0, 72,131,124, 36, 64, 0,116,
/* 0x0530 */ 36, 64, 0,116, 34, 65,131,125, 0, 6,117, 27, 73,139, 85, 16, /* 0x0530 */ 34, 65,131,125, 0, 6,117, 27, 73,139, 85, 16, 72,139,124, 36,
/* 0x0540 */ 72,139,124, 36, 48,190, 3, 0, 0, 0, 76, 1,242,232, 83,254, /* 0x0540 */ 48,190, 3, 0, 0, 0, 76, 1,242,232, 83,254,255,255,233, 97,
/* 0x0550 */ 255,255,233, 97, 2, 0, 0, 65,131,125, 0, 1, 15,133, 86, 2, /* 0x0550 */ 2, 0, 0, 65,131,125, 0, 1, 15,133, 86, 2, 0, 0, 72,131,
/* 0x0560 */ 0, 0, 72,131,124, 36, 64, 0,116, 73, 73,131,125, 8, 0,117, /* 0x0560 */ 124, 36, 64, 0,116, 73, 73,131,125, 8, 0,117, 66, 73,139, 85,
/* 0x0570 */ 66, 73,139, 85, 16, 72,139,124, 36, 48,190, 3, 0, 0, 0, 76, /* 0x0570 */ 16, 72,139,124, 36, 48,190, 3, 0, 0, 0, 76, 1,242, 73, 3,
/* 0x0580 */ 1,242, 73, 3, 87, 32,232, 26,254,255,255, 73, 15,183, 87, 56, /* 0x0580 */ 87, 32,232, 26,254,255,255, 73, 15,183, 87, 56, 72,139,124, 36,
/* 0x0590 */ 72,139,124, 36, 48,190, 5, 0, 0, 0,232, 6,254,255,255, 73, /* 0x0590 */ 48,190, 5, 0, 0, 0,232, 6,254,255,255, 73, 15,183, 87, 54,
/* 0x05a0 */ 15,183, 87, 54, 72,139,124, 36, 48,190, 4, 0, 0, 0,232,242, /* 0x05a0 */ 72,139,124, 36, 48,190, 4, 0, 0, 0,232,242,253,255,255, 73,
/* 0x05b0 */ 253,255,255, 73,139, 69, 16, 65,139, 77, 4, 65,131,200,255, 73, /* 0x05b0 */ 139, 69, 16, 65,139, 77, 4, 65,131,200,255, 73,139, 85, 32,199,
/* 0x05c0 */ 139, 85, 32,199, 68, 36, 24, 64, 98, 81,115, 76, 1,240,131,225, /* 0x05c0 */ 68, 36, 24, 64, 98, 81,115, 76, 1,240,131,225, 7, 73,137,196,
/* 0x05d0 */ 7, 73,137,196, 72,137, 68, 36, 88, 73,139, 69, 40, 76,137,229, /* 0x05d0 */ 72,137, 68, 36, 88, 73,139, 69, 40, 76,137,229,193,225, 2,211,
/* 0x05e0 */ 193,225, 2,211,108, 36, 24,129,229,255, 15, 0, 0,131,100, 36, /* 0x05e0 */ 108, 36, 24,129,229,255, 15, 0, 0,131,100, 36, 24, 7, 72,137,
/* 0x05f0 */ 24, 7, 72,137, 84, 36, 80, 76, 1,224, 72, 1,234, 73, 41,236, /* 0x05f0 */ 84, 36, 80, 76, 1,224, 72, 1,234, 73, 41,236, 72,137, 68, 36,
/* 0x0600 */ 72,137, 68, 36, 8,185, 50, 0, 0, 0, 73,139, 69, 8, 72,137, /* 0x0600 */ 8,185, 50, 0, 0, 0, 73,139, 69, 8, 72,137, 84, 36, 16, 72,
/* 0x0610 */ 84, 36, 16, 72, 41,232, 72,131,124, 36, 64, 0,117, 7, 68,139, /* 0x0610 */ 41,232, 72,131,124, 36, 64, 0,117, 7, 68,139, 68, 36, 60,177,
/* 0x0620 */ 68, 36, 60,177, 18,139, 84, 36, 24, 72,139,116, 36, 16, 73,137, /* 0x0620 */ 18,139, 84, 36, 24, 72,139,116, 36, 16, 73,137,193, 76,137,231,
/* 0x0630 */ 193, 76,137,231,131,202, 2, 72,131,124, 36, 64, 0, 15, 68, 84, /* 0x0630 */ 131,202, 2, 72,131,124, 36, 64, 0, 15, 68, 84, 36, 24,232,219,
/* 0x0640 */ 36, 24,232,219,251,255,255, 73, 57,196, 15,133, 37, 1, 0, 0, /* 0x0640 */ 251,255,255, 73, 57,196, 15,133, 37, 1, 0, 0, 72,131,124, 36,
/* 0x0650 */ 72,131,124, 36, 64, 0,116, 25, 72,139, 76, 36, 32, 72,139, 84, /* 0x0650 */ 64, 0,116, 25, 72,139, 76, 36, 32, 72,139, 84, 36, 40, 72,141,
/* 0x0660 */ 36, 40, 72,141,116, 36, 80, 72,139,124, 36, 64,232, 35,252,255, /* 0x0660 */ 116, 36, 80, 72,139,124, 36, 64,232, 35,252,255,255, 72,139,108,
/* 0x0670 */ 255, 72,139,108, 36, 16, 72,247,221,129,229,255, 15, 0, 0,246, /* 0x0670 */ 36, 16, 72,247,221,129,229,255, 15, 0, 0,246, 68, 36, 24, 2,
/* 0x0680 */ 68, 36, 24, 2,116, 17, 72,139, 68, 36, 16, 72,137,233,252, 73, /* 0x0680 */ 116, 17, 72,139, 68, 36, 16, 72,137,233,252, 73,141, 60, 4, 49,
/* 0x0690 */ 141, 60, 4, 49,192,243,170, 72,131,124, 36, 64, 0, 15,132,220, /* 0x0690 */ 192,243,170, 72,131,124, 36, 64, 0, 15,132,220, 0, 0, 0,199,
/* 0x06a0 */ 0, 0, 0,199, 68, 36, 4, 0, 0, 0, 0, 72,184,255,255,255, /* 0x06a0 */ 68, 36, 4, 0, 0, 0, 0, 72,184,255,255,255,255, 1, 0, 0,
/* 0x06b0 */ 255, 1, 0, 0, 0, 73, 35, 69, 0, 72,186, 1, 0, 0, 0, 1, /* 0x06b0 */ 0, 73, 35, 69, 0, 72,186, 1, 0, 0, 0, 1, 0, 0, 0, 72,
/* 0x06c0 */ 0, 0, 0, 72, 57,208, 15,133,148, 0, 0, 0, 73,139, 85, 40, /* 0x06c0 */ 57,208, 15,133,148, 0, 0, 0, 73,139, 85, 40, 73,139, 77, 16,
/* 0x06d0 */ 73,139, 77, 16, 73, 59, 85, 32, 72,141, 4, 10, 74,141, 28, 48, /* 0x06d0 */ 73, 59, 85, 32, 72,141, 4, 10, 74,141, 28, 48,117, 14,137,216,
/* 0x06e0 */ 117, 14,137,216,247,216, 37,255, 15, 0, 0,131,248, 3,119, 57, /* 0x06e0 */ 247,216, 37,255, 15, 0, 0,131,248, 3,119, 57, 73,131,125, 8,
/* 0x06f0 */ 73,131,125, 8, 0, 74,141, 92, 49, 12,116, 45, 69, 49,201, 65, /* 0x06f0 */ 0, 74,141, 92, 49, 12,116, 45, 69, 49,201, 65,131,200,255, 49,
/* 0x0700 */ 131,200,255, 49,255,185, 34, 0, 0, 0,186, 3, 0, 0, 0,190, /* 0x0700 */ 255,185, 34, 0, 0, 0,186, 3, 0, 0, 0,190, 0, 16, 0, 0,
/* 0x0710 */ 0, 16, 0, 0,199, 68, 36, 4, 1, 0, 0, 0,232, 1,251,255, /* 0x0710 */ 199, 68, 36, 4, 1, 0, 0, 0,232, 1,251,255,255, 72,133,192,
/* 0x0720 */ 255, 72,133,192, 72,137,195,116, 55,131,124, 36, 4, 0,199, 3, /* 0x0720 */ 72,137,195,116, 55,131,124, 36, 4, 0,199, 3, 15, 5, 90,195,
/* 0x0730 */ 15, 5, 90,195,116, 18,186, 5, 0, 0, 0,190, 4, 0, 0, 0, /* 0x0730 */ 116, 18,186, 5, 0, 0, 0,190, 4, 0, 0, 0, 72,137,223,232,
/* 0x0740 */ 72,137,223,232, 5,251,255,255, 72,133,219,116, 19, 72,139,124, /* 0x0740 */ 5,251,255,255, 72,133,219,116, 19, 72,139,124, 36, 48, 72,137,
/* 0x0750 */ 36, 48, 72,137,218, 49,246, 72,131,231,254,232, 69,252,255,255, /* 0x0750 */ 218, 49,246, 72,131,231,254,232, 69,252,255,255,139, 84, 36, 24,
/* 0x0760 */ 139, 84, 36, 24, 72,139,116, 36, 16, 76,137,231,232,220,250,255, /* 0x0760 */ 72,139,116, 36, 16, 76,137,231,232,220,250,255,255,133,192,116,
/* 0x0770 */ 255,133,192,116, 10,191,127, 0, 0, 0,232,186,250,255,255, 72, /* 0x0770 */ 10,191,127, 0, 0, 0,232,186,250,255,255, 72,139, 68, 36, 16,
/* 0x0780 */ 139, 68, 36, 16, 72, 1,232, 73, 1,196, 76, 59,100, 36, 8,115, /* 0x0780 */ 72, 1,232, 73, 1,196, 76, 59,100, 36, 8,115, 39, 76, 41,100,
/* 0x0790 */ 39, 76, 41,100, 36, 8,139, 84, 36, 24, 69, 49,201, 72,139,116, /* 0x0790 */ 36, 8,139, 84, 36, 24, 69, 49,201, 72,139,116, 36, 8, 65,131,
/* 0x07a0 */ 36, 8, 65,131,200,255,185, 50, 0, 0, 0, 76,137,231,232,111, /* 0x07a0 */ 200,255,185, 50, 0, 0, 0, 76,137,231,232,111,250,255,255, 73,
/* 0x07b0 */ 250,255,255, 73, 57,196,117,189,255, 68, 36, 28, 65, 15,183, 71, /* 0x07b0 */ 57,196,117,189,255, 68, 36, 28, 65, 15,183, 71, 56, 73,131,197,
/* 0x07c0 */ 56, 73,131,197, 56, 57, 68, 36, 28, 15,140, 94,253,255,255, 72, /* 0x07c0 */ 56, 57, 68, 36, 28, 15,140, 94,253,255,255, 72,139,132, 36,160,
/* 0x07d0 */ 139,132, 36,160, 0, 0, 0, 76,137, 48, 77, 3,119, 24, 72,131, /* 0x07d0 */ 0, 0, 0, 76,137, 48, 77, 3,119, 24, 72,131,196,104, 91, 93,
/* 0x07e0 */ 196,104, 91, 93, 65, 92, 65, 93, 76,137,240, 65, 94, 65, 95,195, /* 0x07e0 */ 65, 92, 65, 93, 76,137,240, 65, 94, 65, 95,195, 65, 87, 65, 86,
/* 0x07f0 */ 65, 87, 65, 86, 73,137,206, 49,201, 65, 85, 65, 84, 77,137,204, /* 0x07f0 */ 73,137,206, 49,201, 65, 85, 65, 84, 77,137,204, 85, 72,137,213,
/* 0x0800 */ 85, 72,137,213, 76,141,109, 64, 83, 76,137,195, 72,131,236, 72, /* 0x0800 */ 76,141,109, 64, 83, 76,137,195, 72,131,236, 72,139, 7, 72,137,
/* 0x0810 */ 139, 7, 72,137,124, 36, 24, 72,137,124, 36, 40, 76,141,188, 36, /* 0x0810 */ 124, 36, 24, 72,137,124, 36, 40, 76,141,188, 36,128, 0, 0, 0,
/* 0x0820 */ 128, 0, 0, 0, 72,137,116, 36, 32, 72,141,116, 36, 48, 72,137, /* 0x0820 */ 72,137,116, 36, 32, 72,141,116, 36, 48, 72,137, 84, 36, 56, 76,
/* 0x0830 */ 84, 36, 56, 76,137,194, 72,137, 68, 36, 48,139, 71, 4, 72,141, /* 0x0830 */ 137,194, 72,137, 68, 36, 48,139, 71, 4, 72,141,124, 36, 16, 72,
/* 0x0840 */ 124, 36, 16, 72,131,192, 12, 72,137, 68, 36, 16,232, 67,250,255, /* 0x0840 */ 131,192, 12, 72,137, 68, 36, 16,232, 67,250,255,255, 65, 83, 77,
/* 0x0850 */ 255, 65, 83, 77,137,225, 49,210, 73,137,216, 76,137,241, 72,137, /* 0x0850 */ 137,225, 49,210, 73,137,216, 76,137,241, 72,137,239, 72,141,116,
/* 0x0860 */ 239, 72,141,116, 36, 40, 65, 87,232,119,251,255,255,190, 9, 0, /* 0x0860 */ 36, 40, 65, 87,232,119,251,255,255,190, 9, 0, 0, 0, 72,137,
/* 0x0870 */ 0, 0, 72,137,194, 76,137,247, 73,137,196,232, 37,251,255,255, /* 0x0870 */ 194, 76,137,247, 73,137,196,232, 37,251,255,255, 65, 89, 65, 90,
/* 0x0880 */ 65, 89, 65, 90,102,131,125, 56, 0,199, 68, 36, 12, 0, 0, 0, /* 0x0880 */ 102,131,125, 56, 0,199, 68, 36, 12, 0, 0, 0, 0, 15,132,143,
/* 0x0890 */ 0, 15,132,143, 0, 0, 0, 65,131,125, 0, 3,117,114, 73,139, /* 0x0890 */ 0, 0, 0, 65,131,125, 0, 3,117,114, 73,139, 63, 73, 3,125,
/* 0x08a0 */ 63, 73, 3,125, 16, 49,210, 49,246,232,151,249,255,255,133,192, /* 0x08a0 */ 16, 49,210, 49,246,232,151,249,255,255,133,192,137,195,120, 23,
/* 0x08b0 */ 137,195,120, 23,186, 0, 4, 0, 0, 72,137,238,137,199,232,146, /* 0x08b0 */ 186, 0, 4, 0, 0, 72,137,238,137,199,232,146,249,255,255, 72,
/* 0x08c0 */ 249,255,255, 72, 61, 0, 4, 0, 0,116, 10,191,127, 0, 0, 0, /* 0x08c0 */ 61, 0, 4, 0, 0,116, 10,191,127, 0, 0, 0,232,100,249,255,
/* 0x08d0 */ 232,100,249,255,255, 73,199, 7, 0, 0, 0, 0, 65, 80, 69, 49, /* 0x08d0 */ 255, 73,199, 7, 0, 0, 0, 0, 65, 80, 69, 49,201, 69, 49,192,
/* 0x08e0 */ 201, 69, 49,192, 49,201, 65, 87,137,218, 49,246, 72,137,239,232, /* 0x08e0 */ 49,201, 65, 87,137,218, 49,246, 72,137,239,232,240,250,255,255,
/* 0x08f0 */ 240,250,255,255, 73,139, 23,190, 7, 0, 0, 0, 76,137,247, 73, /* 0x08f0 */ 73,139, 23,190, 7, 0, 0, 0, 76,137,247, 73,137,196,232,158,
/* 0x0900 */ 137,196,232,158,250,255,255,137,223,232, 51,249,255,255, 94, 95, /* 0x0900 */ 250,255,255,137,223,232, 51,249,255,255, 94, 95,255, 68, 36, 12,
/* 0x0910 */ 255, 68, 36, 12, 15,183, 69, 56, 73,131,197, 56, 57, 68, 36, 12, /* 0x0910 */ 15,183, 69, 56, 73,131,197, 56, 57, 68, 36, 12, 15,130,113,255,
/* 0x0920 */ 15,130,113,255,255,255, 72,131,196, 72, 76,137,224, 91, 93, 65, /* 0x0920 */ 255,255, 72,131,196, 72, 76,137,224, 91, 93, 65, 92, 65, 93, 65,
/* 0x0930 */ 92, 65, 93, 65, 94, 65, 95,195 /* 0x0930 */ 94, 65, 95,195
}; };
+8 -9
View File
@@ -119,15 +119,15 @@ L90:
mov %ecx,%eax mov %ecx,%eax
xor %edi,%eax xor %edi,%eax
xor $8,%eax xor $NBPW,%eax
and $8,%eax and $NBPW,%eax
sub %rax,%rdi # keep 16-byte alignment of %rsp sub %rax,%rdi # keep 16-byte alignment of %rsp
mov %rdi,%r14 # end of new auxv mov %rdi,%r14 # end of new auxv
sub $8,%rdi # &last qword of new auxv sub $NBPW,%rdi # &last qword of new auxv
lea -8(%r15),%rsi # &last qword of old auxv lea -NBPW(%r15),%rsi # &last qword of old auxv
shr $3,%rcx; rep movsq shr $3,%rcx; rep movsq
lea 8(%rdi),%rsp lea NBPW(%rdi),%rsp
cld cld
lea (%r14,%r12),%arg4 # &new Elf64_auxv lea (%r14,%r12),%arg4 # &new Elf64_auxv
@@ -154,11 +154,10 @@ L90:
sz_Ehdr= 8*NBPW sz_Ehdr= 8*NBPW
sz_Phdr= 7*NBPW sz_Phdr= 7*NBPW
p_vaddr= 4+4+8 p_memsz= 4+4+ 4*NBPW
// Discard pages of compressed data (includes [ADRX,+LENX) ) // Discard pages of compressed data (includes [ADRX,+LENX) )
movq p_vaddr+sz_Phdr+sz_Ehdr(%r13),%arg2 # Phdr[C_TEXT= 1].p_vaddr movq p_memsz+sz_Phdr+sz_Ehdr(%r13),%arg2 # Phdr[C_TEXT= 1].p_memsz
movq %r13,%arg1 # hi elfaddr movq %r13,%arg1 # hi elfaddr
subq p_vaddr +sz_Ehdr(%r13),%arg2 # - Phdr[C_BASE= 0].p_vaddr ==> len
call munmap # discard C_TEXT compressed data 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.
@@ -176,7 +175,7 @@ p_vaddr= 4+4+8
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
jmp *-8(%r14) # goto: syscall; pop %rdx; ret jmp *-NBPW(%r14) # goto: syscall; pop %rdx; ret
mmap: .globl mmap mmap: .globl mmap
movb $ __NR_mmap,%al movb $ __NR_mmap,%al
+19 -19
View File
@@ -8,30 +8,30 @@ Linker script and memory map
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc) 0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x00000000001000bc 0x87c .text 0x00000000001000bc 0x878
*(.text) *(.text)
.text 0x00000000001000bc 0x19d tmp/amd64-linux.elf-fold.o .text 0x00000000001000bc 0x199 tmp/amd64-linux.elf-fold.o
0x0000000000100249 munmap 0x0000000000100245 munmap
0x0000000000100222 mmap 0x000000000010021e mmap
0x0000000000100251 write 0x000000000010024d write
0x0000000000100255 read 0x0000000000100251 read
0x0000000000100239 exit 0x0000000000100235 exit
0x000000000010023d brk 0x0000000000100239 brk
0x0000000000100245 open 0x0000000000100241 open
0x000000000010024d mprotect 0x0000000000100249 mprotect
0x0000000000100241 close 0x000000000010023d close
*fill* 0x0000000000100259 0x3 00 *fill* 0x0000000000100255 0x3 00
.text 0x000000000010025c 0x6dc tmp/amd64-linux.elf-main.o .text 0x0000000000100258 0x6dc tmp/amd64-linux.elf-main.o
0x00000000001007f0 upx_main 0x00000000001007ec upx_main
*(.data) *(.data)
.data 0x0000000000100938 0x0 tmp/amd64-linux.elf-fold.o .data 0x0000000000100934 0x0 tmp/amd64-linux.elf-fold.o
.data 0x0000000000100938 0x0 tmp/amd64-linux.elf-main.o .data 0x0000000000100934 0x0 tmp/amd64-linux.elf-main.o
.data .data
.bss 0x0000000000100938 0x0 .bss 0x0000000000100934 0x0
.bss 0x0000000000100938 0x0 tmp/amd64-linux.elf-fold.o .bss 0x0000000000100934 0x0 tmp/amd64-linux.elf-fold.o
.bss 0x0000000000100938 0x0 tmp/amd64-linux.elf-main.o .bss 0x0000000000100934 0x0 tmp/amd64-linux.elf-main.o
.rela.dyn 0x0000000000100938 0x0 .rela.dyn 0x0000000000100938 0x0
.rela.text 0x0000000000000000 0x0 tmp/amd64-linux.elf-fold.o .rela.text 0x0000000000000000 0x0 tmp/amd64-linux.elf-fold.o