From b71aaccff331cc0245bbafdbdef22ef404642ad0 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Tue, 23 Jan 2007 10:34:33 -0800 Subject: [PATCH] fix amd64-linux.elf-entry.S invoking large programs (>3MB compressed) --- src/stub/amd64-linux.elf-entry.h | 519 ++++++++++---------- src/stub/src/amd64-linux.elf-entry.S | 8 +- src/stub/tmp/amd64-linux.elf-entry.bin.dump | 4 +- 3 files changed, 265 insertions(+), 266 deletions(-) diff --git a/src/stub/amd64-linux.elf-entry.h b/src/stub/amd64-linux.elf-entry.h index e3e1d540..82dd8c92 100644 --- a/src/stub/amd64-linux.elf-entry.h +++ b/src/stub/amd64-linux.elf-entry.h @@ -1,5 +1,5 @@ /* amd64-linux.elf-entry.h - created from amd64-linux.elf-entry.bin, 10083 (0x2763) bytes + created from amd64-linux.elf-entry.bin, 10080 (0x2760) bytes This file is part of the UPX executable compressor. @@ -28,11 +28,11 @@ */ -#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 10083 -#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xade2081d -#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0xfca80bc2 +#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 10080 +#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0x83c806e2 +#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0x989209b3 -unsigned char stub_amd64_linux_elf_entry[10083] = { +unsigned char stub_amd64_linux_elf_entry[10080] = { 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */ 0, 0, 0, 0, 0, 0, 0, 0,112, 24, 0, 0, 0, 0, 0, 0, /* 0x 20 */ @@ -409,259 +409,258 @@ unsigned char stub_amd64_linux_elf_entry[10083] = { 7, 90,190, 0, 0, 0, 0,106, 50, 65, 90, 69, 41,192,106, 9, /* 0x1750 */ 88, 15, 5, 57,199, 15,133, 0, 0, 0, 0,104, 0, 0, 0, 0, /* 0x1760 */ 104, 0, 0, 0, 0,190, 0, 0, 0, 0,104, 0, 0, 0, 0,104, /* 0x1770 */ - 0, 0, 0, 0, 65, 87, 41,201,137,250, 41,242,116, 14, 1,213, /* 0x1780 */ - 1,211, 68,137,249,193,233, 3,252,243, 72,165,151,137,222, 80, /* 0x1790 */ -146,173, 80, 72,137,225,173,151,173, 68, 15,182,192,135,254,255, /* 0x17a0 */ -213, 89,195, 93, 68,139,125,247, 65,129,239,200, 0, 0, 0,232, /* 0x17b0 */ -133,255,255,255,116,109,112, 47, 97,109,100, 54, 52, 45,108,105, /* 0x17c0 */ -110,117,120, 46,101,108,102, 45,101,110,116,114,121, 46, 98,105, /* 0x17d0 */ -110, 58, 32, 32, 32, 32, 32,102,105,108,101, 32,102,111,114,109, /* 0x17e0 */ - 97,116, 32,101,108,102, 54, 52, 45,120, 56, 54, 45, 54, 52, 10, /* 0x17f0 */ - 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, /* 0x1800 */ - 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122, /* 0x1810 */ -101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, /* 0x1820 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, /* 0x1830 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32, /* 0x1840 */ -111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, /* 0x1850 */ - 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, /* 0x1860 */ - 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,100, 32, 32, 48, 48, 48, /* 0x1870 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1880 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1890 */ - 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, /* 0x18a0 */ - 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x18b0 */ - 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, /* 0x18c0 */ - 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x18d0 */ - 48, 48, 48, 54, 54, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x18e0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x18f0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1900 */ - 48, 52,100, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1910 */ - 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x1920 */ - 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1930 */ - 48, 48, 48, 48, 48, 48, 98, 55, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1940 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1950 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1960 */ - 48, 48, 48, 48, 98, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1970 */ - 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x1980 */ - 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, /* 0x1990 */ - 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x19a0 */ - 57,101, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x19b0 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x19c0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 54, 97, /* 0x19d0 */ - 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x19e0 */ - 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x19f0 */ - 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, /* 0x1a00 */ - 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 57, 48, 32, 32, 48, 48, /* 0x1a10 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1a20 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a30 */ - 32, 32, 48, 48, 48, 48, 48, 50, 48, 56, 32, 32, 50, 42, 42, 48, /* 0x1a40 */ - 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x1a50 */ - 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, /* 0x1a60 */ - 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, /* 0x1a70 */ - 48, 48, 48, 48, 54, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a80 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1a90 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1aa0 */ - 48, 50, 57, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1ab0 */ - 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1ac0 */ - 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, /* 0x1ad0 */ - 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57,102, 55, /* 0x1ae0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1af0 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b00 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50,102, 99, 32, 32, /* 0x1b10 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1b20 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, /* 0x1b30 */ - 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1b40 */ - 57,102, 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b50 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b60 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 99,102, /* 0x1b70 */ - 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1b80 */ - 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, /* 0x1b90 */ - 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, /* 0x1ba0 */ - 48, 48, 48, 48, 49, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1bb0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1bc0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1bd0 */ - 49, 54,101, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1be0 */ - 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1bf0 */ - 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, /* 0x1c00 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1c10 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1c20 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1c30 */ - 48, 48, 48, 49, 54,102,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1c40 */ - 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1c50 */ - 89, 10, 32, 49, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, /* 0x1c60 */ - 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 51, 97, 32, 32, 48, 48, /* 0x1c70 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1c80 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1c90 */ - 32, 32, 48, 48, 48, 48, 49, 54,102,101, 32, 32, 50, 42, 42, 48, /* 0x1ca0 */ - 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x1cb0 */ - 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, /* 0x1cc0 */ - 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1cd0 */ - 48, 48, 48, 48, 56, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ce0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1cf0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1d00 */ - 49, 55, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1d10 */ - 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1d20 */ - 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, /* 0x1d30 */ - 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d40 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x1d50 */ - 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d60 */ - 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, /* 0x1d70 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d80 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1d90 */ - 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1da0 */ - 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, /* 0x1db0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1dc0 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x1dd0 */ - 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1de0 */ - 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, /* 0x1df0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1e00 */ - 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, /* 0x1e10 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, /* 0x1e20 */ - 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e30 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1e40 */ - 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, /* 0x1e50 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, /* 0x1e60 */ - 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e70 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x1e80 */ - 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e90 */ - 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x1ea0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1eb0 */ -100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x1ec0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, /* 0x1ed0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ee0 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, /* 0x1ef0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1f00 */ - 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f10 */ - 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, /* 0x1f20 */ - 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, /* 0x1f30 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1f40 */ - 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f50 */ - 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, /* 0x1f60 */ - 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, /* 0x1f70 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1f80 */ - 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f90 */ - 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, /* 0x1fa0 */ - 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, /* 0x1fb0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1fc0 */ - 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1fd0 */ - 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, /* 0x1fe0 */ - 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ff0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, /* 0x2000 */ - 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2010 */ - 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, /* 0x2020 */ - 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2030 */ - 48, 48, 48, 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, /* 0x2040 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, /* 0x2050 */ - 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, /* 0x2060 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 77, /* 0x2070 */ - 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2080 */ - 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, /* 0x2090 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20a0 */ - 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20b0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x20c0 */ - 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20d0 */ - 48, 48, 48, 48, 48, 32, 74, 77, 80, 85, 10, 48, 48, 48, 48, 48, /* 0x20e0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, /* 0x20f0 */ - 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, /* 0x2100 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 85, 10, /* 0x2110 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2120 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, /* 0x2130 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2140 */ - 65, 68, 82, 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2150 */ - 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, /* 0x2160 */ - 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2170 */ - 48, 48, 48, 48, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, /* 0x2180 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, /* 0x2190 */ - 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x21a0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 88, 10, 10, /* 0x21b0 */ - 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x21c0 */ - 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x21d0 */ - 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, /* 0x21e0 */ - 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x21f0 */ - 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, /* 0x2200 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 88, /* 0x2210 */ - 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, /* 0x2220 */ - 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, /* 0x2230 */ - 48, 48, 48, 48, 48, 48, 48, 48, 55, 55, 10, 10, 82, 69, 76, 79, /* 0x2240 */ - 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x2250 */ - 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, /* 0x2260 */ - 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, /* 0x2270 */ - 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x2280 */ - 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2290 */ - 48, 48, 48, 97,101, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, /* 0x22a0 */ - 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, /* 0x22b0 */ - 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22c0 */ - 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22d0 */ - 48, 48, 53, 98, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, /* 0x22e0 */ - 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, /* 0x22f0 */ - 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,102, /* 0x2300 */ -102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x2310 */ - 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, /* 0x2320 */ - 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, /* 0x2330 */ - 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x2340 */ - 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, /* 0x2350 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 57, 53, 32, 82, 95, /* 0x2360 */ - 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, /* 0x2370 */ - 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48, 48, /* 0x2380 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48, 48, /* 0x2390 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 98, 32, 82, 95, 88, /* 0x23a0 */ - 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, /* 0x23b0 */ - 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,102,102,102,102, /* 0x23c0 */ -102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, /* 0x23d0 */ - 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x23e0 */ - 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, /* 0x23f0 */ - 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, /* 0x2400 */ - 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x2410 */ - 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2420 */ - 48, 48, 48, 56, 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, /* 0x2430 */ - 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, /* 0x2440 */ - 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2450 */ - 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2460 */ - 48, 48, 53, 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, /* 0x2470 */ - 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, /* 0x2480 */ - 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,102, /* 0x2490 */ -102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x24a0 */ - 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, /* 0x24b0 */ - 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x24c0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x24d0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x24e0 */ - 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x24f0 */ - 48, 54, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, /* 0x2500 */ - 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, /* 0x2510 */ - 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2520 */ - 49, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x2530 */ - 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, /* 0x2540 */ - 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x2550 */ - 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x2560 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, /* 0x2570 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 56, /* 0x2580 */ - 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, /* 0x2590 */ - 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102, /* 0x25a0 */ -102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, 10, /* 0x25b0 */ - 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x25c0 */ - 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x25d0 */ - 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, /* 0x25e0 */ - 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x25f0 */ - 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, /* 0x2600 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 51, 32, 82, 95, 88, /* 0x2610 */ - 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, /* 0x2620 */ - 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2630 */ - 48, 48, 49, 98, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, /* 0x2640 */ - 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, /* 0x2650 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 52, 32, 82, 95, 88, /* 0x2660 */ - 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 74, /* 0x2670 */ - 77, 80, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2680 */ - 48, 48, 51, 57, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, /* 0x2690 */ - 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 85, 10, 48, 48, 48, 48, /* 0x26a0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51,101, 32, 82, 95, 88, /* 0x26b0 */ - 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, /* 0x26c0 */ - 68, 82, 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x26d0 */ - 48, 48, 52, 51, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, /* 0x26e0 */ - 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, /* 0x26f0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 56, 32, 82, 95, 88, /* 0x2700 */ - 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, /* 0x2710 */ - 68, 82, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2720 */ - 48, 48, 50,102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, /* 0x2730 */ - 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, /* 0x2740 */ - 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2750 */ - 48,100, 10 /* 0x2760 */ + 0, 0, 0, 0, 65, 87,137,250, 41,242,116, 13, 1,213,137,217, /* 0x1780 */ + 41,241,193,233, 3,252,243, 72,165,151,137,222, 80,146,173, 80, /* 0x1790 */ + 72,137,225,173,151,173, 68, 15,182,192,135,254,255,213, 89,195, /* 0x17a0 */ + 93, 68,139,125,247, 65,129,239,200, 0, 0, 0,232,136,255,255, /* 0x17b0 */ +255,116,109,112, 47, 97,109,100, 54, 52, 45,108,105,110,117,120, /* 0x17c0 */ + 46,101,108,102, 45,101,110,116,114,121, 46, 98,105,110, 58, 32, /* 0x17d0 */ + 32, 32, 32, 32,102,105,108,101, 32,102,111,114,109, 97,116, 32, /* 0x17e0 */ +101,108,102, 54, 52, 45,120, 56, 54, 45, 54, 52, 10, 10, 83,101, /* 0x17f0 */ + 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, /* 0x1800 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, /* 0x1810 */ + 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1820 */ + 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, /* 0x1830 */ + 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, /* 0x1840 */ + 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, /* 0x1850 */ + 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, /* 0x1860 */ + 48, 48, 48, 48, 48, 48, 48,100, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1870 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1880 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1890 */ + 48, 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x18a0 */ + 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x18b0 */ + 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, /* 0x18c0 */ + 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x18d0 */ + 54, 54, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x18e0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x18f0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52,100, /* 0x1900 */ + 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1910 */ + 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, /* 0x1920 */ + 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1930 */ + 48, 48, 48, 98, 55, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1940 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1950 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1960 */ + 48, 98, 51, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1970 */ + 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x1980 */ + 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, /* 0x1990 */ + 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 57,101, 32, /* 0x19a0 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x19b0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x19c0 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 54, 97, 32, 32, 50, /* 0x19d0 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x19e0 */ + 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x19f0 */ + 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1a00 */ + 32, 48, 48, 48, 48, 48, 48, 57, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1a10 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1a20 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1a30 */ + 48, 48, 48, 48, 50, 48, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1a40 */ + 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x1a50 */ + 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, /* 0x1a60 */ + 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1a70 */ + 48, 54, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a80 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a90 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 57, /* 0x1aa0 */ + 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1ab0 */ + 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1ac0 */ + 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x1ad0 */ + 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57,102, 55, 32, 32, 48, /* 0x1ae0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1af0 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b00 */ + 48, 32, 32, 48, 48, 48, 48, 48, 50,102, 99, 32, 32, 50, 42, 42, /* 0x1b10 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x1b20 */ + 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, /* 0x1b30 */ + 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57,102, 55, /* 0x1b40 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b50 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b60 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 99,102, 51, 32, 32, /* 0x1b70 */ + 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1b80 */ + 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, /* 0x1b90 */ + 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1ba0 */ + 48, 49, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1bb0 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1bc0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 54,101, /* 0x1bd0 */ + 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1be0 */ + 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, /* 0x1bf0 */ + 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1c00 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1c10 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1c20 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1c30 */ + 49, 54,102,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1c40 */ + 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1c50 */ + 49, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, /* 0x1c60 */ + 32, 48, 48, 48, 48, 48, 48, 51, 97, 32, 32, 48, 48, 48, 48, 48, /* 0x1c70 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1c80 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1c90 */ + 48, 48, 48, 49, 54,102,101, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1ca0 */ + 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x1cb0 */ + 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, /* 0x1cc0 */ + 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1cd0 */ + 48, 56, 57, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ce0 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1cf0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 51, /* 0x1d00 */ + 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1d10 */ + 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1d20 */ + 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, /* 0x1d30 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d40 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, /* 0x1d50 */ + 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d60 */ + 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, /* 0x1d70 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1d80 */ + 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, /* 0x1d90 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1da0 */ + 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, /* 0x1db0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1dc0 */ + 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, /* 0x1dd0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1de0 */ + 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x1df0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x1e00 */ + 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, /* 0x1e10 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, /* 0x1e20 */ + 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e30 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, /* 0x1e40 */ + 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e50 */ + 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x1e60 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e70 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, /* 0x1e80 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e90 */ + 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ea0 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x1eb0 */ + 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ec0 */ + 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, /* 0x1ed0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x1ee0 */ + 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, /* 0x1ef0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, /* 0x1f00 */ + 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f10 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x1f20 */ + 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f30 */ + 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, /* 0x1f40 */ + 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f50 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x1f60 */ + 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f70 */ + 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1f80 */ + 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f90 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, /* 0x1fa0 */ + 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1fb0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1fc0 */ + 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1fd0 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, /* 0x1fe0 */ + 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ff0 */ + 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, /* 0x2000 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2010 */ +103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x2020 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2030 */ + 48, 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2040 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x2050 */ + 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2060 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 77, 10, 48, 48, /* 0x2070 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2080 */ + 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, /* 0x2090 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, /* 0x20a0 */ + 78, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20b0 */ + 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, /* 0x20c0 */ + 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20d0 */ + 48, 48, 32, 74, 77, 80, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20e0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x20f0 */ + 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2100 */ + 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 85, 10, 48, 48, 48, /* 0x2110 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x2120 */ + 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x2130 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, /* 0x2140 */ + 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2150 */ + 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x2160 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2170 */ + 48, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2180 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2190 */ + 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x21a0 */ + 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 88, 10, 10, 82, 69, 76, /* 0x21b0 */ + 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x21c0 */ + 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, /* 0x21d0 */ + 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x21e0 */ + 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x21f0 */ + 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2200 */ + 48, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, 88, 56, 54, 95, /* 0x2210 */ + 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x2220 */ + 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2230 */ + 48, 48, 48, 48, 48, 55, 52, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x2240 */ + 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2250 */ + 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x2260 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x2270 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2280 */ + 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2290 */ + 97,101, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, /* 0x22a0 */ + 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, /* 0x22b0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, /* 0x22c0 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, /* 0x22d0 */ + 98, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, /* 0x22e0 */ + 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102, /* 0x22f0 */ +102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, /* 0x2300 */ + 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x2310 */ + 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, /* 0x2320 */ + 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2330 */ + 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2340 */ + 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x2350 */ + 48, 48, 48, 48, 48, 48, 48, 48, 57, 53, 32, 82, 95, 88, 56, 54, /* 0x2360 */ + 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, /* 0x2370 */ + 95, 72, 69, 65, 68, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2380 */ + 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2390 */ + 48, 48, 48, 48, 48, 48, 48, 53, 98, 32, 82, 95, 88, 56, 54, 95, /* 0x23a0 */ + 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x23b0 */ + 65, 73, 78, 89, 43, 48,120,102,102,102,102,102,102,102,102,102, /* 0x23c0 */ +102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x23d0 */ + 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x23e0 */ + 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x23f0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x2400 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2410 */ + 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2420 */ + 56, 97, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, /* 0x2430 */ + 32, 32, 32, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 43, 48,120, /* 0x2440 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, /* 0x2450 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, /* 0x2460 */ + 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, /* 0x2470 */ + 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102, /* 0x2480 */ +102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10, /* 0x2490 */ + 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x24a0 */ + 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, /* 0x24b0 */ + 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, /* 0x24c0 */ + 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x24d0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, /* 0x24e0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 54, 32, /* 0x24f0 */ + 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, /* 0x2500 */ + 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, /* 0x2510 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, 10, /* 0x2520 */ + 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x2530 */ + 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, /* 0x2540 */ + 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, /* 0x2550 */ + 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x2560 */ + 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, /* 0x2570 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95, /* 0x2580 */ + 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, /* 0x2590 */ + 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,102,102,102,102, /* 0x25a0 */ +102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76, /* 0x25b0 */ + 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x25c0 */ + 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, /* 0x25d0 */ + 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x25e0 */ + 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x25f0 */ + 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2600 */ + 48, 48, 48, 48, 48, 48, 48, 49, 51, 32, 82, 95, 88, 56, 54, 95, /* 0x2610 */ + 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 77, /* 0x2620 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, /* 0x2630 */ + 98, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, /* 0x2640 */ + 32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2650 */ + 48, 48, 48, 48, 48, 48, 48, 51, 52, 32, 82, 95, 88, 56, 54, 95, /* 0x2660 */ + 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 74, 77, 80, 85, /* 0x2670 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 51, /* 0x2680 */ + 57, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, /* 0x2690 */ + 32, 32, 32, 32, 65, 68, 82, 85, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x26a0 */ + 48, 48, 48, 48, 48, 48, 48, 51,101, 32, 82, 95, 88, 56, 54, 95, /* 0x26b0 */ + 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 67, /* 0x26c0 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, /* 0x26d0 */ + 51, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, /* 0x26e0 */ + 32, 32, 32, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x26f0 */ + 48, 48, 48, 48, 48, 48, 48, 52, 56, 32, 82, 95, 88, 56, 54, 95, /* 0x2700 */ + 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 88, /* 0x2710 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, /* 0x2720 */ +102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, /* 0x2730 */ + 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120, 48, /* 0x2740 */ + 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 10 /* 0x2750 */ }; diff --git a/src/stub/src/amd64-linux.elf-entry.S b/src/stub/src/amd64-linux.elf-entry.S index b0b3e3a2..b77b4801 100644 --- a/src/stub/src/amd64-linux.elf-entry.S +++ b/src/stub/src/amd64-linux.elf-entry.S @@ -251,13 +251,13 @@ unfold: push $ ADRX // for upx_main push %r15 // LENX for upx_main - subl %ecx,%ecx // assume small, thus no copy movl %edi,%edx // ADRM subl %esi,%edx // (ADRM - ADRC) == relocation amount je L80 // no copy addl %edx,%ebp // update &decompress - addl %edx,%ebx // update &b_info - movl %r15d,%ecx // LENX + //addl %edx,%ebx // copy==>no overlap; unfolded before overwrite + movl %ebx,%ecx // XXX: 4GB [&b_info] beyond end of decompressor + subl %esi,%ecx // byte length shrl $3,%ecx // qwords to copy cld rep; movsq @@ -265,7 +265,7 @@ L80: xchgl %eax,%edi /* Decompress the folded part of this stub, then execute it. */ - movl %ebx,%esi // %arg2l= &b_info (relocated) + movl %ebx,%esi // %arg2l= &b_info push %rax // ret_addr after decompression xchgl %eax,%arg3l // %arg3= dst for unfolding XXX: 4GB lodsl; push %rax // allocate slot on stack diff --git a/src/stub/tmp/amd64-linux.elf-entry.bin.dump b/src/stub/tmp/amd64-linux.elf-entry.bin.dump index 7564288c..e881be56 100644 --- a/src/stub/tmp/amd64-linux.elf-entry.bin.dump +++ b/src/stub/tmp/amd64-linux.elf-entry.bin.dump @@ -13,7 +13,7 @@ Idx Name Size VMA LMA File off Algn 8 LZMA_DEC30 00000014 0000000000000000 0000000000000000 000016ea 2**0 CONTENTS, READONLY 9 NRV_TAIL 00000000 0000000000000000 0000000000000000 000016fe 2**0 CONTENTS, READONLY 10 ELFMAINY 0000003a 0000000000000000 0000000000000000 000016fe 2**0 CONTENTS, RELOC, READONLY - 11 ELFMAINZ 0000008c 0000000000000000 0000000000000000 00001738 2**0 CONTENTS, RELOC, READONLY + 11 ELFMAINZ 00000089 0000000000000000 0000000000000000 00001738 2**0 CONTENTS, RELOC, READONLY SYMBOL TABLE: 0000000000000000 l d NRV_HEAD 0000000000000000 NRV_HEAD 0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30 @@ -38,7 +38,7 @@ SYMBOL TABLE: RELOCATION RECORDS FOR [ELFMAINX]: OFFSET TYPE VALUE -0000000000000001 R_X86_64_PC32 ELFMAINZ+0x0000000000000077 +0000000000000001 R_X86_64_PC32 ELFMAINZ+0x0000000000000074 RELOCATION RECORDS FOR [NRV2E]: OFFSET TYPE VALUE