1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00

Fix ET_DYN main program on amd64-linux.elf.

This commit is contained in:
John Reiser 2010-03-08 16:59:53 -08:00
parent bf28a4df49
commit 8de5aa9409
6 changed files with 336 additions and 348 deletions

View File

@ -812,7 +812,7 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
adrm = page_mask & (~page_mask + adrm); // round up to page boundary adrm = page_mask & (~page_mask + adrm); // round up to page boundary
adrc = page_mask & (~page_mask + adrc); // round up to page boundary adrc = page_mask & (~page_mask + adrc); // round up to page boundary
linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion //linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
// For actual moving, we need the true count, which depends on sz_pack2 // For actual moving, we need the true count, which depends on sz_pack2
// and is not yet known. So the runtime stub detects "no move" // and is not yet known. So the runtime stub detects "no move"
@ -821,7 +821,7 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
linker->defineSymbol("LENU", lenu); // len for unmap linker->defineSymbol("LENU", lenu); // len for unmap
linker->defineSymbol("ADRC", adrc); // addr for copy linker->defineSymbol("ADRC", adrc); // addr for copy
linker->defineSymbol("ADRU", adru); // addr for unmap //linker->defineSymbol("ADRU", adru); // addr for unmap
#define EI_NIDENT 16 /* <elf.h> */ #define EI_NIDENT 16 /* <elf.h> */
linker->defineSymbol("JMPU", EI_NIDENT -4 + lo_va_user); // unmap trampoline linker->defineSymbol("JMPU", EI_NIDENT -4 + lo_va_user); // unmap trampoline
#undef EI_NIDENT #undef EI_NIDENT

View File

@ -1,5 +1,5 @@
/* amd64-linux.elf-entry.h /* amd64-linux.elf-entry.h
created from amd64-linux.elf-entry.bin, 10593 (0x2961) bytes created from amd64-linux.elf-entry.bin, 10412 (0x28ac) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@ -31,11 +31,11 @@
*/ */
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 10593 #define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 10412
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0x88d96914 #define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0x1f234954
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0x7aafc760 #define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0x86a6c65f
unsigned char stub_amd64_linux_elf_entry[10593] = { unsigned char stub_amd64_linux_elf_entry[10412] = {
/* 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,144, 24, 0, 0, 0, 0, 0, 0, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,144, 24, 0, 0, 0, 0, 0, 0,
@ -408,295 +408,283 @@ unsigned char stub_amd64_linux_elf_entry[10593] = {
/* 0x1710 */ 30, 0, 0, 0, 90,232, 0, 0, 0, 0, 80, 82, 79, 84, 95, 69, /* 0x1710 */ 30, 0, 0, 0, 90,232, 0, 0, 0, 0, 80, 82, 79, 84, 95, 69,
/* 0x1720 */ 88, 69, 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 32,102, /* 0x1720 */ 88, 69, 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 32,102,
/* 0x1730 */ 97,105,108,101,100, 46, 10, 0, 94,106, 2, 95,106, 1, 88, 15, /* 0x1730 */ 97,105,108,101,100, 46, 10, 0, 94,106, 2, 95,106, 1, 88, 15,
/* 0x1740 */ 5,106,127, 95,106, 60, 88, 15, 5, 91,106, 0,106, 1,191, 0, /* 0x1740 */ 5,106,127, 95,106, 60, 88, 15, 5, 91,106, 0,106, 1,104, 0,
/* 0x1750 */ 0, 0, 0,106, 7, 90,190, 0, 0, 0, 0,106, 50, 65, 90, 69, /* 0x1750 */ 0, 0, 0, 80,104, 0, 0, 0, 0, 81, 65, 87,191, 0, 0, 0,
/* 0x1760 */ 41,192,106, 9, 88, 15, 5, 57,199, 15,133, 0, 0, 0, 0,104, /* 0x1760 */ 0,106, 7, 90,190, 0, 0, 0, 0,106, 50, 65, 90, 69, 41,192,
/* 0x1770 */ 0, 0, 0, 0,104, 0, 0, 0, 0,190, 0, 0, 0, 0,104, 0, /* 0x1770 */ 106, 9, 88, 15, 5, 57,199, 15,133, 0, 0, 0, 0,190, 0, 0,
/* 0x1780 */ 0, 0, 0,104, 0, 0, 0, 0, 65, 87,137,250, 41,242,116, 13, /* 0x1780 */ 0, 0,137,250, 41,242,116, 13, 1,213,137,217, 41,241,193,233,
/* 0x1790 */ 1,213,137,217, 41,241,193,233, 3,252,243, 72,165,151,137,222, /* 0x1790 */ 3,252,243, 72,165,151, 72,137,222, 80,146,173, 80, 72,137,225,
/* 0x17a0 */ 80,146,173, 80, 72,137,225,173,151,173, 68, 15,182,192,135,254, /* 0x17a0 */ 173,151,173, 68, 15,182,192, 72,135,254,255,213, 89,195, 93, 72,
/* 0x17b0 */ 255,213, 89,195, 93, 68,139,125,247, 65,129,239,200, 0, 0, 0, /* 0x17b0 */ 141, 69,247, 68,139, 56,186,200, 0, 0, 0, 76, 41,248, 65, 41,
/* 0x17c0 */ 232, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, /* 0x17c0 */ 215, 72,141, 12, 16,232, 0, 0, 0, 0,102,105,108,101, 32,102,
/* 0x17d0 */ 32,101,108,102, 54, 52, 45,120, 56, 54, 45, 54, 52, 10, 10, 83, /* 0x17d0 */ 111,114,109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, 54, 45,
/* 0x17e0 */ 101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109, /* 0x17e0 */ 54, 52, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,
/* 0x17f0 */ 101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, /* 0x17f0 */ 120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1800 */ 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1800 */ 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32,
/* 0x1810 */ 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, /* 0x1810 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32,
/* 0x1820 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102, /* 0x1820 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,
/* 0x1830 */ 102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, /* 0x1830 */ 108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108,
/* 0x1840 */ 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, /* 0x1840 */ 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88,
/* 0x1850 */ 32, 48, 48, 48, 48, 48, 48, 48,100, 32, 32, 48, 48, 48, 48, 48, /* 0x1850 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,100, 32, 32,
/* 0x1860 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1860 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1870 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1870 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1880 */ 48, 48, 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1880 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, 50, 42,
/* 0x1890 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x1890 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x18a0 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, /* 0x18a0 */ 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32,
/* 0x18b0 */ 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x18b0 */ 49, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32,
/* 0x18c0 */ 48, 54, 54, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x18c0 */ 48, 48, 48, 48, 48, 48, 54, 54, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x18d0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x18d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x18e0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, /* 0x18e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x18f0 */ 100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x18f0 */ 48, 48, 48, 48, 52,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x1900 */ 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, /* 0x1900 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89,
/* 0x1910 */ 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1910 */ 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32,
/* 0x1920 */ 48, 48, 48, 48, 98, 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1920 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 98, 55, 32, 32, 48, 48, 48,
/* 0x1930 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1930 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1940 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1940 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1950 */ 48, 48, 98, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1950 */ 32, 48, 48, 48, 48, 48, 48, 98, 51, 32, 32, 50, 42, 42, 48, 32,
/* 0x1960 */ 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1960 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67,
/* 0x1970 */ 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, /* 0x1970 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78,
/* 0x1980 */ 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 57,101, /* 0x1980 */ 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48,
/* 0x1990 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1990 */ 48, 48, 48, 57,101, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19a0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x19a0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x19b0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 54, 97, 32, 32, /* 0x19b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x19c0 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x19c0 */ 49, 54, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x19d0 */ 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x19d0 */ 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68,
/* 0x19e0 */ 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, /* 0x19e0 */ 79, 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32,
/* 0x19f0 */ 32, 32, 48, 48, 48, 48, 48, 48, 57, 48, 32, 32, 48, 48, 48, 48, /* 0x19f0 */ 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 57, 48, 32,
/* 0x1a00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1a00 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1a10 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a20 */ 48, 48, 48, 48, 48, 50, 48, 56, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1a20 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 48, 56, 32, 32, 50,
/* 0x1a30 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x1a30 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82,
/* 0x1a40 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, /* 0x1a40 */ 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32,
/* 0x1a50 */ 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1a50 */ 32, 53, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32,
/* 0x1a60 */ 48, 48, 54, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a60 */ 32, 48, 48, 48, 48, 48, 48, 54, 52, 32, 32, 48, 48, 48, 48, 48,
/* 0x1a70 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1a80 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, /* 0x1a80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1a90 */ 57, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1a90 */ 48, 48, 48, 48, 50, 57, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67,
/* 0x1aa0 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x1aa0 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32,
/* 0x1ab0 */ 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1ab0 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77,
/* 0x1ac0 */ 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57,102, 55, 32, 32, /* 0x1ac0 */ 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48,
/* 0x1ad0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ad0 */ 57,102, 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ae0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ae0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1af0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 50,102, 99, 32, 32, 50, 42, /* 0x1af0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50,102,
/* 0x1b00 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x1b00 */ 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84,
/* 0x1b10 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, /* 0x1b10 */ 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32,
/* 0x1b20 */ 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57,102, /* 0x1b20 */ 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48,
/* 0x1b30 */ 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b30 */ 48, 48, 48, 57,102, 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b40 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b40 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1b50 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 99,102, 51, 32, /* 0x1b50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x1b60 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1b60 */ 48, 99,102, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84,
/* 0x1b70 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, /* 0x1b70 */ 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32,
/* 0x1b80 */ 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1b80 */ 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32,
/* 0x1b90 */ 48, 48, 49, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b90 */ 32, 48, 48, 48, 48, 48, 48, 49, 52, 32, 32, 48, 48, 48, 48, 48,
/* 0x1ba0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ba0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1bb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 54, /* 0x1bb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1bc0 */ 101, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1bc0 */ 48, 48, 48, 49, 54,101, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67,
/* 0x1bd0 */ 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, /* 0x1bd0 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76,
/* 0x1be0 */ 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, /* 0x1be0 */ 89, 10, 32, 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32,
/* 0x1bf0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1bf0 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1c00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1c00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x1c10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1c10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c20 */ 48, 49, 54,102,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1c20 */ 32, 32, 48, 48, 48, 48, 49, 54,102,101, 32, 32, 50, 42, 42, 48,
/* 0x1c30 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1c30 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68,
/* 0x1c40 */ 32, 49, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, /* 0x1c40 */ 79, 78, 76, 89, 10, 32, 49, 48, 32, 69, 76, 70, 77, 65, 73, 78,
/* 0x1c50 */ 32, 32, 48, 48, 48, 48, 48, 48, 51, 97, 32, 32, 48, 48, 48, 48, /* 0x1c50 */ 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 51, 97, 32,
/* 0x1c60 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1c60 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1c70 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c80 */ 48, 48, 48, 48, 49, 54,102,101, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1c80 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 54,102,101, 32, 32, 50,
/* 0x1c90 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x1c90 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82,
/* 0x1ca0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, /* 0x1ca0 */ 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32,
/* 0x1cb0 */ 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1cb0 */ 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32,
/* 0x1cc0 */ 48, 48, 49, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1cc0 */ 32, 48, 48, 48, 48, 48, 48, 49, 50, 32, 32, 48, 48, 48, 48, 48,
/* 0x1cd0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1cd0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1ce0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, /* 0x1ce0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1cf0 */ 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1cf0 */ 48, 48, 48, 49, 55, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67,
/* 0x1d00 */ 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, /* 0x1d00 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76,
/* 0x1d10 */ 32, 76, 85, 78, 77, 80, 48, 48, 48, 32, 32, 32, 32, 32, 32, 48, /* 0x1d10 */ 89, 10, 32, 49, 50, 32, 76, 85, 78, 77, 80, 48, 48, 48, 32, 32,
/* 0x1d20 */ 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1d20 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48,
/* 0x1d30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1d30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x1d40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1d40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d50 */ 48, 49, 55, 52, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1d50 */ 32, 32, 48, 48, 48, 48, 49, 55, 52, 97, 32, 32, 50, 42, 42, 48,
/* 0x1d60 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1d60 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68,
/* 0x1d70 */ 32, 49, 51, 32, 76, 85, 78, 77, 80, 48, 48, 49, 32, 32, 32, 32, /* 0x1d70 */ 79, 78, 76, 89, 10, 32, 49, 51, 32, 76, 85, 78, 77, 80, 48, 48,
/* 0x1d80 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32, 32, 48, 48, 48, 48, /* 0x1d80 */ 49, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 50, 32,
/* 0x1d90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1d90 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1da0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1da0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1db0 */ 48, 48, 48, 48, 49, 55, 52, 99, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1db0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 52, 99, 32, 32, 50,
/* 0x1dc0 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1dc0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82,
/* 0x1dd0 */ 76, 89, 10, 32, 49, 52, 32, 69, 76, 70, 77, 65, 73, 78, 90,117, /* 0x1dd0 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 52, 32, 69, 76, 70, 77,
/* 0x1de0 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 55, 55, 32, 32, 48, /* 0x1de0 */ 65, 73, 78, 90,117, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1df0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1df0 */ 55, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e00 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e00 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e10 */ 48, 32, 32, 48, 48, 48, 48, 49, 55, 52,101, 32, 32, 50, 42, 42, /* 0x1e10 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 52,101,
/* 0x1e20 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x1e20 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
/* 0x1e30 */ 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, /* 0x1e30 */ 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76,
/* 0x1e40 */ 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, /* 0x1e40 */ 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10,
/* 0x1e50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x1e50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e60 */ 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, 48, /* 0x1e60 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65,
/* 0x1e70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, /* 0x1e70 */ 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e80 */ 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e80 */ 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48,
/* 0x1e90 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x1e90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x1ea0 */ 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, /* 0x1ea0 */ 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9,
/* 0x1eb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x1eb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ec0 */ 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ec0 */ 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48,
/* 0x1ed0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x1ed0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x1ee0 */ 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x1ee0 */ 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48,
/* 0x1ef0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, /* 0x1ef0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69,
/* 0x1f00 */ 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f00 */ 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f10 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, /* 0x1f10 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x1f20 */ 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f20 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48,
/* 0x1f30 */ 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, /* 0x1f30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65,
/* 0x1f40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1f40 */ 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f50 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x1f50 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70,
/* 0x1f60 */ 117, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f60 */ 77, 65, 73, 78, 90,117, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f70 */ 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90,117, 10, 48, 48, 48, /* 0x1f70 */ 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90,
/* 0x1f80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1f80 */ 117, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f90 */ 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, /* 0x1f90 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65,
/* 0x1fa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1fa0 */ 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1fb0 */ 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1fb0 */ 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48,
/* 0x1fc0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1fc0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x1fd0 */ 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1fd0 */ 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48,
/* 0x1fe0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, /* 0x1fe0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82,
/* 0x1ff0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ff0 */ 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2000 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, /* 0x2000 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86,
/* 0x2010 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, /* 0x2010 */ 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2020 */ 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2020 */ 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48,
/* 0x2030 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x2030 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x2040 */ 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2040 */ 100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x2050 */ 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, /* 0x2050 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10,
/* 0x2060 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2060 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2070 */ 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, /* 0x2070 */ 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76,
/* 0x2080 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2080 */ 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2090 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, /* 0x2090 */ 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10,
/* 0x20a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x20a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20b0 */ 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, /* 0x20b0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69,
/* 0x20c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x20c0 */ 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20d0 */ 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, /* 0x20d0 */ 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10,
/* 0x20e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x20e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20f0 */ 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, /* 0x20f0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69,
/* 0x2100 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2100 */ 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2110 */ 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, /* 0x2110 */ 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10,
/* 0x2120 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2120 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2130 */ 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, /* 0x2130 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73,
/* 0x2140 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, /* 0x2140 */ 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2150 */ 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2150 */ 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48,
/* 0x2160 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2160 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x2170 */ 76, 85, 78, 77, 80, 48, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2170 */ 32, 32,100, 32, 32, 76, 85, 78, 77, 80, 48, 48, 48, 9, 48, 48,
/* 0x2180 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 85, 78, 77, 80, 48, /* 0x2180 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76,
/* 0x2190 */ 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2190 */ 85, 78, 77, 80, 48, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21a0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 85, 78, 77, /* 0x21a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x21b0 */ 80, 48, 48, 49, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x21b0 */ 32, 76, 85, 78, 77, 80, 48, 48, 49, 9, 48, 48, 48, 48, 48, 48,
/* 0x21c0 */ 48, 48, 48, 48, 48, 32, 76, 85, 78, 77, 80, 48, 48, 49, 10, 48, /* 0x21c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 85, 78, 77, 80,
/* 0x21d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x21d0 */ 48, 48, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21e0 */ 103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x21e0 */ 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70,
/* 0x21f0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x21f0 */ 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2200 */ 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2200 */ 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, 10, 48, 48,
/* 0x2210 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x2210 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x2220 */ 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2220 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48,
/* 0x2230 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 77, 10, 48, 48, /* 0x2230 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 74, 77,
/* 0x2240 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2240 */ 80, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2250 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, /* 0x2250 */ 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68,
/* 0x2260 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, /* 0x2260 */ 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2270 */ 78, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2270 */ 48, 48, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2280 */ 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, /* 0x2280 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2290 */ 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2290 */ 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x22a0 */ 48, 48, 32, 74, 77, 80, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22a0 */ 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 77, 10, 48, 48, 48,
/* 0x22b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x22b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32,
/* 0x22c0 */ 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22c0 */ 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48,
/* 0x22d0 */ 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 85, 10, 48, 48, 48, /* 0x22d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78,
/* 0x22e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x22e0 */ 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x22f0 */ 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x22f0 */ 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42,
/* 0x2300 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, /* 0x2300 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2310 */ 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2310 */ 48, 32, 65, 68, 82, 67, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x2320 */ 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x2320 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x2330 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2330 */ 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69,
/* 0x2340 */ 48, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2340 */ 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69,
/* 0x2350 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2350 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65,
/* 0x2360 */ 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2360 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2370 */ 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 88, 10, 10, 82, 69, 76, /* 0x2370 */ 48, 48, 48, 49, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67,
/* 0x2380 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2380 */ 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90,117,
/* 0x2390 */ 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, /* 0x2390 */ 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x23a0 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x23a0 */ 48, 53, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x23b0 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x23b0 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86,
/* 0x23c0 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x23c0 */ 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
/* 0x23d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 88, 56, 54, 95, /* 0x23d0 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
/* 0x23e0 */ 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x23e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
/* 0x23f0 */ 65, 73, 78, 90,117, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x23f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 97,101, 32, 82,
/* 0x2400 */ 48, 48, 48, 48, 48, 48, 54, 50, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x2400 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
/* 0x2410 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x2410 */ 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48,
/* 0x2420 */ 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x2420 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48,
/* 0x2430 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x2430 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 98, 32, 82, 95,
/* 0x2440 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2440 */ 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
/* 0x2450 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2450 */ 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,102,102,102,
/* 0x2460 */ 48, 97,101, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, /* 0x2460 */ 102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76,
/* 0x2470 */ 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48, /* 0x2470 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
/* 0x2480 */ 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, /* 0x2480 */ 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70,
/* 0x2490 */ 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2490 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
/* 0x24a0 */ 53, 98, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, /* 0x24a0 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x24b0 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120, /* 0x24b0 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x24c0 */ 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99, /* 0x24c0 */ 48, 48, 48, 48, 57, 53, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95,
/* 0x24d0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x24d0 */ 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65,
/* 0x24e0 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, /* 0x24e0 */ 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x24f0 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x24f0 */ 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2500 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2500 */ 48, 48, 48, 53, 98, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80,
/* 0x2510 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, /* 0x2510 */ 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x2520 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 57, 53, 32, 82, 95, 88, 56, /* 0x2520 */ 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,
/* 0x2530 */ 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, /* 0x2530 */ 102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x2540 */ 86, 95, 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, /* 0x2540 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86,
/* 0x2550 */ 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, /* 0x2550 */ 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
/* 0x2560 */ 48, 48, 48, 48, 48, 48, 48, 48, 53, 98, 32, 82, 95, 88, 56, 54, /* 0x2560 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
/* 0x2570 */ 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, /* 0x2570 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
/* 0x2580 */ 77, 65, 73, 78, 89, 43, 48,120,102,102,102,102,102,102,102,102, /* 0x2580 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 97, 32, 82,
/* 0x2590 */ 102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x2590 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
/* 0x25a0 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x25a0 */ 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48,
/* 0x25b0 */ 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x25b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48,
/* 0x25c0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x25c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 50, 32, 82, 95,
/* 0x25d0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x25d0 */ 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
/* 0x25e0 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x25e0 */ 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,102,102,102,
/* 0x25f0 */ 48, 56, 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, /* 0x25f0 */ 102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76,
/* 0x2600 */ 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48, /* 0x2600 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
/* 0x2610 */ 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, /* 0x2610 */ 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93,
/* 0x2620 */ 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2620 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2630 */ 53, 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, /* 0x2630 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2640 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120, /* 0x2640 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48,
/* 0x2650 */ 102,102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99, /* 0x2650 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 32, 82, 95, 88, 56,
/* 0x2660 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x2660 */ 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 76, 90,
/* 0x2670 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, /* 0x2670 */ 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48,
/* 0x2680 */ 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x2680 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, 10, 10, 82, 69, 76,
/* 0x2690 */ 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x2690 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
/* 0x26a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, /* 0x26a0 */ 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, 10,
/* 0x26b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, /* 0x26b0 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x26c0 */ 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, /* 0x26c0 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x26d0 */ 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, /* 0x26d0 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x26e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, /* 0x26e0 */ 48, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95, 88, 56, 54, 95,
/* 0x26f0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x26f0 */ 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77,
/* 0x2700 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, /* 0x2700 */ 65, 73, 78, 90, 43, 48,120,102,102,102,102,102,102,102,102,102,
/* 0x2710 */ 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, /* 0x2710 */ 102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84,
/* 0x2720 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2720 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32,
/* 0x2730 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2730 */ 91, 69, 76, 70, 77, 65, 73, 78, 90,117, 93, 58, 10, 79, 70, 70,
/* 0x2740 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, /* 0x2740 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
/* 0x2750 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, /* 0x2750 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2760 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102,102,102, /* 0x2760 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2770 */ 102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, /* 0x2770 */ 48, 48, 48, 48, 48, 49, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95,
/* 0x2780 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x2780 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 74, 77, 80, 85, 10, 48, 48,
/* 0x2790 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90,117, 93, /* 0x2790 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 32, 82,
/* 0x27a0 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x27a0 */ 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32,
/* 0x27b0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x27b0 */ 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x27c0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, /* 0x27c0 */ 48, 48, 48, 48, 48,102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95,
/* 0x27d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 88, 56, /* 0x27d0 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48,
/* 0x27e0 */ 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, /* 0x27e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 55, 32, 82,
/* 0x27f0 */ 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x27f0 */ 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32,
/* 0x2800 */ 48, 48, 57, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, /* 0x2800 */ 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2810 */ 32, 32, 32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, /* 0x2810 */ 48, 48, 48, 48, 51, 48, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95,
/* 0x2820 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 50, 32, 82, 95, 88, 56, /* 0x2820 */ 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 67, 10, 48, 48,
/* 0x2830 */ 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 74, 77, /* 0x2830 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 56, 32, 82,
/* 0x2840 */ 80, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2840 */ 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32,
/* 0x2850 */ 48, 50, 55, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, /* 0x2850 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48,
/* 0x2860 */ 32, 32, 32, 32, 32, 32, 65, 68, 82, 85, 10, 48, 48, 48, 48, 48, /* 0x2860 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 10, 48, 48, 48,
/* 0x2870 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 99, 32, 82, 95, 88, 56, /* 0x2870 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 98, 32, 82, 95,
/* 0x2880 */ 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, /* 0x2880 */ 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
/* 0x2890 */ 82, 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2890 */ 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120, 48, 48, 48, 48, 48,
/* 0x28a0 */ 48, 51, 49, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, /* 0x28a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 10
/* 0x28b0 */ 32, 32, 32, 32, 32, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48,
/* 0x28c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 54, 32, 82, 95, 88, 56,
/* 0x28d0 */ 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68,
/* 0x28e0 */ 82, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x28f0 */ 48, 55, 51, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51,
/* 0x2900 */ 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,
/* 0x2910 */ 120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2920 */ 100, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2930 */ 49,100, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50,
/* 0x2940 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,
/* 0x2950 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100,
/* 0x2960 */ 10
}; };

View File

@ -32,8 +32,8 @@
#define STUB_AMD64_LINUX_ELF_FOLD_SIZE 1838 #define STUB_AMD64_LINUX_ELF_FOLD_SIZE 1838
#define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0x0dfdbdc9 #define STUB_AMD64_LINUX_ELF_FOLD_ADLER32 0x93d7be1c
#define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0x7d6fdfdb #define STUB_AMD64_LINUX_ELF_FOLD_CRC32 0x7041ca9e
unsigned char stub_amd64_linux_elf_fold[1838] = { unsigned char stub_amd64_linux_elf_fold[1838] = {
/* 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,
@ -62,12 +62,12 @@ unsigned char stub_amd64_linux_elf_fold[1838] = {
/* 0x0170 */ 15, 5,133,192,120, 4,198, 4, 6, 0, 73,131,193, 15, 89, 94, /* 0x0170 */ 15, 5,133,192,120, 4,198, 4, 6, 0, 73,131,193, 15, 89, 94,
/* 0x0180 */ 95, 72,129,236, 0, 8, 0, 0, 72,137,226, 73,137,232,106, 0, /* 0x0180 */ 95, 72,129,236, 0, 8, 0, 0, 72,137,226, 73,137,232,106, 0,
/* 0x0190 */ 232, 97, 4, 0, 0, 90, 72,129,196, 0, 8, 0, 0, 94, 95, 89, /* 0x0190 */ 232, 97, 4, 0, 0, 90, 72,129,196, 0, 8, 0, 0, 94, 95, 89,
/* 0x01a0 */ 89,193,225, 12, 1,207, 41,206, 80,106, 11, 88, 65,255, 39,176, /* 0x01a0 */ 89,193,225, 12, 72, 1,207, 41,206, 80,106, 11, 88, 65,255, 39,
/* 0x01b0 */ 11,235, 13,176, 10,235, 9,176, 12,235, 5,176, 9, 73,137,202, /* 0x01b0 */ 176, 11,235, 13,176, 10,235, 9,176, 12,235, 5,176, 9, 73,137,
/* 0x01c0 */ 15,182,192, 15, 5, 72, 61, 0,240,255,255,114, 4, 72,131,200, /* 0x01c0 */ 202, 15,182,192, 15, 5, 72, 61, 0,240,255,255,114, 4, 72,131,
/* 0x01d0 */ 255,195,176, 0,235,234,176, 2,235,230,176, 3,235,226,176, 60, /* 0x01d0 */ 200,255,195,176, 0,235,234,176, 2,235,230,176, 3,235,226,176,
/* 0x01e0 */ 235,222, 0, 0, 81, 72, 57, 23, 76,139, 71, 8, 72,141, 74,255, /* 0x01e0 */ 60,235,222, 0, 81, 72, 57, 23, 76,139, 71, 8, 72,141, 74,255,
/* 0x01f0 */ 115, 10,191,127, 0, 0, 0,232,226,255,255,255, 72,131,249,255, /* 0x01f0 */ 115, 10,191,127, 0, 0, 0,232,227,255,255,255, 72,131,249,255,
/* 0x0200 */ 116, 17, 65, 15,182, 0, 72,255,201, 73,255,192,136, 6, 72,255, /* 0x0200 */ 116, 17, 65, 15,182, 0, 72,255,201, 73,255,192,136, 6, 72,255,
/* 0x0210 */ 198,235,233, 72, 1, 87, 8, 72, 41, 23, 88,195, 65, 85, 73,137, /* 0x0210 */ 198,235,233, 72, 1, 87, 8, 72, 41, 23, 88,195, 65, 85, 73,137,
/* 0x0220 */ 213, 65, 84, 73,137,204, 85, 72,137,253, 83, 72,137,243, 72,131, /* 0x0220 */ 213, 65, 84, 73,137,204, 85, 72,137,253, 83, 72,137,243, 72,131,
@ -75,7 +75,7 @@ unsigned char stub_amd64_linux_elf_fold[1838] = {
/* 0x0240 */ 16,186, 12, 0, 0, 0, 72,137,239,232,150,255,255,255,139, 84, /* 0x0240 */ 16,186, 12, 0, 0, 0, 72,137,239,232,150,255,255,255,139, 84,
/* 0x0250 */ 36, 16,139,116, 36, 20,133,210,117, 21,129,254, 85, 80, 88, 33, /* 0x0250 */ 36, 16,139,116, 36, 20,133,210,117, 21,129,254, 85, 80, 88, 33,
/* 0x0260 */ 117, 17, 72,131,125, 0, 0, 15,132,177, 0, 0, 0,235, 4,133, /* 0x0260 */ 117, 17, 72,131,125, 0, 0, 15,132,177, 0, 0, 0,235, 4,133,
/* 0x0270 */ 246,117, 10,191,127, 0, 0, 0,232, 97,255,255,255, 57,214,119, /* 0x0270 */ 246,117, 10,191,127, 0, 0, 0,232, 98,255,255,255, 57,214,119,
/* 0x0280 */ 242,137,208, 72, 59, 3,119,235, 57,214, 72,139, 67, 8,115,104, /* 0x0280 */ 242,137,208, 72, 59, 3,119,235, 57,214, 72,139, 67, 8,115,104,
/* 0x0290 */ 137, 84, 36, 12, 72,139,125, 8, 72,141, 76, 36, 12, 68,139, 68, /* 0x0290 */ 137, 84, 36, 12, 72,139,125, 8, 72,141, 76, 36, 12, 68,139, 68,
/* 0x02a0 */ 36, 24, 72,137,194, 65,255,213,133,192,117,199,139,116, 36, 12, /* 0x02a0 */ 36, 24, 72,137,194, 65,255,213,133,192,117,199,139,116, 36, 12,
@ -99,7 +99,7 @@ unsigned char stub_amd64_linux_elf_fold[1838] = {
/* 0x03c0 */ 232, 72, 3, 70, 40, 72, 57,195, 72, 15, 66,216, 72,131,198, 56, /* 0x03c0 */ 232, 72, 3, 70, 40, 72, 57,195, 72, 15, 66,216, 72,131,198, 56,
/* 0x03d0 */ 235,219, 72,129,229, 0,240,255,255, 49,210, 69, 49,201, 72, 41, /* 0x03d0 */ 235,219, 72,129,229, 0,240,255,255, 49,210, 69, 49,201, 72, 41,
/* 0x03e0 */ 235, 65,131,200,255, 72,137,239, 72,129,195,255, 15, 0, 0, 72, /* 0x03e0 */ 235, 65,131,200,255, 72,137,239, 72,129,195,255, 15, 0, 0, 72,
/* 0x03f0 */ 129,227, 0,240,255,255, 72,137,222,232,189,253,255,255, 72,141, /* 0x03f0 */ 129,227, 0,240,255,255, 72,137,222,232,190,253,255,255, 72,141,
/* 0x0400 */ 20, 24, 72, 41,232,102, 65,131,127, 56, 0, 72,137, 68, 36, 24, /* 0x0400 */ 20, 24, 72, 41,232,102, 65,131,127, 56, 0, 72,137, 68, 36, 24,
/* 0x0410 */ 199, 68, 36, 20, 0, 0, 0, 0, 72,137, 84, 36, 72, 15,132,155, /* 0x0410 */ 199, 68, 36, 20, 0, 0, 0, 0, 72,137, 84, 36, 72, 15,132,155,
/* 0x0420 */ 1, 0, 0, 72,131,124, 36, 64, 0,116, 37, 65,131, 60, 36, 6, /* 0x0420 */ 1, 0, 0, 72,131,124, 36, 64, 0,116, 37, 65,131, 60, 36, 6,
@ -114,7 +114,7 @@ unsigned char stub_amd64_linux_elf_fold[1838] = {
/* 0x04b0 */ 7, 76,141, 44, 26,185, 50, 0, 0, 0, 72, 41,216, 72,131,124, /* 0x04b0 */ 7, 76,141, 44, 26,185, 50, 0, 0, 0, 72, 41,216, 72,131,124,
/* 0x04c0 */ 36, 64, 0,117, 7, 68,139, 68, 36, 60,177, 18, 68,137,242, 73, /* 0x04c0 */ 36, 64, 0,117, 7, 68,139, 68, 36, 60,177, 18, 68,137,242, 73,
/* 0x04d0 */ 137,193, 76,137,238,131,202, 2, 72,131,124, 36, 64, 0, 72,137, /* 0x04d0 */ 137,193, 76,137,238,131,202, 2, 72,131,124, 36, 64, 0, 72,137,
/* 0x04e0 */ 239, 65, 15, 68,214,232,209,252,255,255, 72, 57,197,117,121, 72, /* 0x04e0 */ 239, 65, 15, 68,214,232,210,252,255,255, 72, 57,197,117,121, 72,
/* 0x04f0 */ 131,124, 36, 64, 0,116, 25, 72,139, 76, 36, 32, 72,139, 84, 36, /* 0x04f0 */ 131,124, 36, 64, 0,116, 25, 72,139, 76, 36, 32, 72,139, 84, 36,
/* 0x0500 */ 40, 72,141,116, 36, 80, 72,139,124, 36, 64,232, 12,253,255,255, /* 0x0500 */ 40, 72,141,116, 36, 80, 72,139,124, 36, 64,232, 12,253,255,255,
/* 0x0510 */ 76,137,235, 72,247,219,129,227,255, 15, 0, 0, 65,246,198, 2, /* 0x0510 */ 76,137,235, 72,247,219,129,227,255, 15, 0, 0, 65,246,198, 2,
@ -122,10 +122,10 @@ unsigned char stub_amd64_linux_elf_fold[1838] = {
/* 0x0530 */ 131,124, 36, 64, 0,116, 59, 73,131,124, 36, 8, 0,117, 23, 72, /* 0x0530 */ 131,124, 36, 64, 0,116, 59, 73,131,124, 36, 8, 0,117, 23, 72,
/* 0x0540 */ 139,124, 36, 48, 72,141, 85, 12,199, 69, 12, 15, 5,195,144, 49, /* 0x0540 */ 139,124, 36, 48, 72,141, 85, 12,199, 69, 12, 15, 5,195,144, 49,
/* 0x0550 */ 246,232,211,253,255,255, 68,137,242, 76,137,238, 72,137,239,232, /* 0x0550 */ 246,232,211,253,255,255, 68,137,242, 76,137,238, 72,137,239,232,
/* 0x0560 */ 79,252,255,255,133,192,116, 10,191,127, 0, 0, 0,232,108,252, /* 0x0560 */ 80,252,255,255,133,192,116, 10,191,127, 0, 0, 0,232,109,252,
/* 0x0570 */ 255,255, 73,141, 68, 29, 0, 72, 1,197, 72, 59,108, 36, 8,115, /* 0x0570 */ 255,255, 73,141, 68, 29, 0, 72, 1,197, 72, 59,108, 36, 8,115,
/* 0x0580 */ 38, 72, 41,108, 36, 8, 69, 49,201, 65,131,200,255, 72,139,116, /* 0x0580 */ 38, 72, 41,108, 36, 8, 69, 49,201, 65,131,200,255, 72,139,116,
/* 0x0590 */ 36, 8,185, 50, 0, 0, 0, 68,137,242, 72,137,239,232, 25,252, /* 0x0590 */ 36, 8,185, 50, 0, 0, 0, 68,137,242, 72,137,239,232, 26,252,
/* 0x05a0 */ 255,255, 72, 57,197,117,193,255, 68, 36, 20, 65, 15,183, 71, 56, /* 0x05a0 */ 255,255, 72, 57,197,117,193,255, 68, 36, 20, 65, 15,183, 71, 56,
/* 0x05b0 */ 73,131,196, 56, 57, 68, 36, 20, 15,140,101,254,255,255, 72,131, /* 0x05b0 */ 73,131,196, 56, 57, 68, 36, 20, 15,140,101,254,255,255, 72,131,
/* 0x05c0 */ 188, 36,160, 0, 0, 0, 0,116, 16, 72,139, 68, 36, 24, 72,139, /* 0x05c0 */ 188, 36,160, 0, 0, 0, 0,116, 16, 72,139, 68, 36, 24, 72,139,
@ -143,12 +143,12 @@ unsigned char stub_amd64_linux_elf_fold[1838] = {
/* 0x0680 */ 141,116, 36, 24, 69, 49,237, 80,232,206,252,255,255,190, 9, 0, /* 0x0680 */ 141,116, 36, 24, 69, 49,237, 80,232,206,252,255,255,190, 9, 0,
/* 0x0690 */ 0, 0, 72,137,194, 72,137,223, 73,137,196,232,137,252,255,255, /* 0x0690 */ 0, 0, 72,137,194, 72,137,223, 73,137,196,232,137,252,255,255,
/* 0x06a0 */ 102,131,125, 56, 0, 65, 89, 65, 90,116,115, 65,131, 62, 3,117, /* 0x06a0 */ 102,131,125, 56, 0, 65, 89, 65, 90,116,115, 65,131, 62, 3,117,
/* 0x06b0 */ 93, 72,139,124, 36, 96, 73, 3,126, 16, 49,210, 49,246,232, 19, /* 0x06b0 */ 93, 72,139,124, 36, 96, 73, 3,126, 16, 49,210, 49,246,232, 20,
/* 0x06c0 */ 251,255,255,133,192,137,195,120, 23,186, 0, 4, 0, 0, 72,137, /* 0x06c0 */ 251,255,255,133,192,137,195,120, 23,186, 0, 4, 0, 0, 72,137,
/* 0x06d0 */ 238,137,199,232,250,250,255,255, 72, 61, 0, 4, 0, 0,116, 10, /* 0x06d0 */ 238,137,199,232,251,250,255,255, 72, 61, 0, 4, 0, 0,116, 10,
/* 0x06e0 */ 191,127, 0, 0, 0,232,244,250,255,255, 65, 80, 49,246, 69, 49, /* 0x06e0 */ 191,127, 0, 0, 0,232,245,250,255,255, 65, 80, 49,246, 69, 49,
/* 0x06f0 */ 201, 69, 49,192, 49,201,106, 0,137,218, 72,137,239,232, 89,252, /* 0x06f0 */ 201, 69, 49,192, 49,201,106, 0,137,218, 72,137,239,232, 89,252,
/* 0x0700 */ 255,255,137,223, 73,137,196,232,206,250,255,255, 94, 95, 15,183, /* 0x0700 */ 255,255,137,223, 73,137,196,232,207,250,255,255, 94, 95, 15,183,
/* 0x0710 */ 69, 56, 65,255,197, 73,131,198, 56, 65, 57,197,124,141, 72,131, /* 0x0710 */ 69, 56, 65,255,197, 73,131,198, 56, 65, 57,197,124,141, 72,131,
/* 0x0720 */ 196, 48, 76,137,224, 91, 93, 65, 92, 65, 93, 65, 94,195 /* 0x0720 */ 196, 48, 76,137,224, 91, 93, 65, 92, 65, 93, 65, 94,195
}; };

View File

@ -228,6 +228,17 @@ unfold:
push $1 // 1-page bread crumb push $1 // 1-page bread crumb
section ELFMAINZu section ELFMAINZu
/* Load the addresses and lengths.
XXX: 2GB Note that PUSH $imm32 sign-extends to 64 bits.
XXX: 4GB Note that MOVL $imm32,reg zero-extends to 64-bits.
(Use an temporary register to obtain 4GB range on PUSH constant.)
*/
push $ JMPU // for unmap in fold
push %rax // for unmap in fold
push $ LENU // for unmap in fold
push %rcx // ADRX for upx_main
push %r15 // LENX for upx_main
/* Get some pages. If small, then get 1 page located just after the end /* Get some pages. If small, then get 1 page located just after the end
of the first PT_LOAD of the compressed program. This will still be below of the first PT_LOAD of the compressed program. This will still be below
all of the uncompressed program. If large (>=3 MiB uncompressed), then enough all of the uncompressed program. If large (>=3 MiB uncompressed), then enough
@ -244,18 +255,7 @@ unfold:
syscall // %rax= result; trashes %rcx,%r11 only syscall // %rax= result; trashes %rcx,%r11 only
cmpl %eax,%edi; jne msg_SELinux // XXX: 4GB cmpl %eax,%edi; jne msg_SELinux // XXX: 4GB
/* Load the addresses and lengths.
XXX: 2GB Note that PUSH $imm32 sign-extends to 64 bits.
XXX: 4GB Note that MOVL $imm32,reg zero-extends to 64-bits.
(Use an temporary register to obtain 4GB range on PUSH constant.)
*/
push $ JMPU // for unmap in fold
push $ ADRU // for unmap in fold
movl $ ADRC,%esi movl $ ADRC,%esi
push $ LENU // for unmap in fold
push $ ADRX // for upx_main
push %r15 // LENX for upx_main
movl %edi,%edx // ADRM movl %edi,%edx // ADRM
subl %esi,%edx // (ADRM - ADRC) == relocation amount subl %esi,%edx // (ADRM - ADRC) == relocation amount
je L80 // no copy je L80 // no copy
@ -270,14 +270,14 @@ L80:
xchgl %eax,%edi xchgl %eax,%edi
/* Decompress the folded part of this stub, then execute it. */ /* Decompress the folded part of this stub, then execute it. */
movl %ebx,%esi // %arg2l= &b_info movq %rbx,%arg2 // &b_info
push %rax // ret_addr after decompression push %rax // ret_addr after decompression
xchgl %eax,%arg3l // %arg3= dst for unfolding XXX: 4GB xchgl %eax,%arg3l // %arg3= dst for unfolding XXX: 4GB
lodsl; push %rax // allocate slot on stack lodsl; push %rax // allocate slot on stack
movq %rsp,%arg4 // &len_dst ==> used by lzma for EOF movq %rsp,%arg4 // &len_dst ==> used by lzma for EOF
lodsl; xchgl %eax,%arg1l // sz_cpr XXX: 4GB lodsl; xchgl %eax,%arg1l // sz_cpr XXX: 4GB
lodsl; movzbl %al,%arg5l // b_method lodsl; movzbl %al,%arg5l // b_method
xchg %arg1l,%arg2l // XXX: 4GB xchg %arg1,%arg2
call *%rbp // decompress call *%rbp // decompress
pop %rcx // discard len_dst pop %rcx // discard len_dst
ret ret
@ -285,9 +285,13 @@ L80:
main: main:
//// nop; int3 # uncomment for debugging //// nop; int3 # uncomment for debugging
pop %rbp // &decompress pop %rbp // &decompress
movl -4-(ret_main - _start)(%rbp),%r15d // sz_pack2: length before stub lea -4-(ret_main - _start)(%rbp),%rax // &sz_pack2
subl $ sz_Ehdr + 2*sz_Phdr + sz_l_info + sz_p_info,%r15d // XXX: 4GB movl (%rax),%r15d // sz_pack2: length before stub
call unfold // push &b_info movl $ sz_Ehdr + 2*sz_Phdr + sz_l_info + sz_p_info,%edx
subq %r15,%rax // ADRU= &Elf64_Ehdr of this stub (ET_DYN)
subl %edx,%r15d // LENX for upx_main
lea (%rax,%rdx),%rcx // ADRX= &b_info of user program for upx_main
call unfold // push &b_info of folded_loader
// { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...} // { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...}
/*__XTHEENDX__*/ /*__XTHEENDX__*/

View File

@ -111,10 +111,10 @@ L90:
addq $OVERHEAD,%rsp addq $OVERHEAD,%rsp
pop %arg2 # LENU pop %arg2 # LENU
pop %arg1 # ADRU pop %arg1 # ADRU
pop %rcx # JMPU pop %rcx # JMPU [unused]
pop %rcx # breadcrumb size in pages pop %rcx # breadcrumb size in pages
shl $12,%ecx shl $12,%ecx
addl %ecx,%arg1l # addr += crumb XXX 4GB addq %rcx,%arg1 # addr += crumb
subl %ecx,%arg2l # len -= crumb XXX 4GB subl %ecx,%arg2l # len -= crumb XXX 4GB
push %rax # &entry push %rax # &entry
push $ __NR_munmap; pop %rax push $ __NR_munmap; pop %rax

View File

@ -16,7 +16,7 @@ Idx Name Size VMA LMA File off Algn
11 ELFMAINZ 00000012 0000000000000000 0000000000000000 00001738 2**0 CONTENTS, READONLY 11 ELFMAINZ 00000012 0000000000000000 0000000000000000 00001738 2**0 CONTENTS, READONLY
12 LUNMP000 00000002 0000000000000000 0000000000000000 0000174a 2**0 CONTENTS, READONLY 12 LUNMP000 00000002 0000000000000000 0000000000000000 0000174a 2**0 CONTENTS, READONLY
13 LUNMP001 00000002 0000000000000000 0000000000000000 0000174c 2**0 CONTENTS, READONLY 13 LUNMP001 00000002 0000000000000000 0000000000000000 0000174c 2**0 CONTENTS, READONLY
14 ELFMAINZu 00000077 0000000000000000 0000000000000000 0000174e 2**0 CONTENTS, RELOC, READONLY 14 ELFMAINZu 0000007c 0000000000000000 0000000000000000 0000174e 2**0 CONTENTS, RELOC, READONLY
SYMBOL TABLE: SYMBOL TABLE:
0000000000000000 l d NRV_HEAD 0000000000000000 NRV_HEAD 0000000000000000 l d NRV_HEAD 0000000000000000 NRV_HEAD
0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30 0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30
@ -34,17 +34,15 @@ SYMBOL TABLE:
0000000000000000 l d LUNMP000 0000000000000000 LUNMP000 0000000000000000 l d LUNMP000 0000000000000000 LUNMP000
0000000000000000 l d LUNMP001 0000000000000000 LUNMP001 0000000000000000 l d LUNMP001 0000000000000000 LUNMP001
0000000000000000 g ELFMAINX 0000000000000000 _start 0000000000000000 g ELFMAINX 0000000000000000 _start
0000000000000000 *UND* 0000000000000000 JMPU
0000000000000000 *UND* 0000000000000000 LENU
0000000000000000 *UND* 0000000000000000 ADRM 0000000000000000 *UND* 0000000000000000 ADRM
0000000000000000 *UND* 0000000000000000 LENM 0000000000000000 *UND* 0000000000000000 LENM
0000000000000000 *UND* 0000000000000000 JMPU
0000000000000000 *UND* 0000000000000000 ADRU
0000000000000000 *UND* 0000000000000000 ADRC 0000000000000000 *UND* 0000000000000000 ADRC
0000000000000000 *UND* 0000000000000000 LENU
0000000000000000 *UND* 0000000000000000 ADRX
RELOCATION RECORDS FOR [ELFMAINX]: RELOCATION RECORDS FOR [ELFMAINX]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
0000000000000001 R_X86_64_PC32 ELFMAINZu+0x0000000000000062 0000000000000001 R_X86_64_PC32 ELFMAINZu+0x000000000000005c
RELOCATION RECORDS FOR [NRV2E]: RELOCATION RECORDS FOR [NRV2E]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
@ -71,12 +69,10 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZu]: RELOCATION RECORDS FOR [ELFMAINZu]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
0000000000000001 R_X86_64_32 ADRM 0000000000000001 R_X86_64_32 JMPU
0000000000000009 R_X86_64_32 LENM 0000000000000007 R_X86_64_32 LENU
0000000000000022 R_X86_64_32 JMPU 000000000000000f R_X86_64_32 ADRM
0000000000000027 R_X86_64_32 ADRU 0000000000000017 R_X86_64_32 LENM
000000000000002c R_X86_64_32 ADRC 0000000000000030 R_X86_64_32 ADRC
0000000000000031 R_X86_64_32 LENU 0000000000000078 R_X86_64_PC32 ELFMAINZ+0x000000000000000d
0000000000000036 R_X86_64_32 ADRX 000000000000002b R_X86_64_PC32 ELFMAINY+0x000000000000000d
0000000000000073 R_X86_64_PC32 ELFMAINZ+0x000000000000000d
000000000000001d R_X86_64_PC32 ELFMAINY+0x000000000000000d