diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp index acb52f8a..da962cb6 100644 --- a/src/p_lx_elf.cpp +++ b/src/p_lx_elf.cpp @@ -574,7 +574,7 @@ PackLinuxElf64amd::defineSymbols(Filter const *) } } } - lsize = /*getLoaderSize()*/ 64 * 1024; // upper bound; avoid circularity + lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity acc_uint64l_t lo_va_stub = get_native64(&elfout.phdr[0].p_vaddr); acc_uint64l_t adrc; acc_uint64l_t adrm; @@ -1571,8 +1571,8 @@ void PackLinuxElf32mipsel::defineSymbols(Filter const * /*ft*/) } } } - lsize = /*getLoaderSize()*/ 64 * 1024; // upper bound; avoid circularity - unsigned lo_va_stub = get_native64(&elfout.phdr[0].p_vaddr); + lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity + unsigned lo_va_stub = get_native32(&elfout.phdr[0].p_vaddr); unsigned adrc; unsigned adrm; unsigned adru; diff --git a/src/stub/mipsel.r3000-linux.elf-entry.h b/src/stub/mipsel.r3000-linux.elf-entry.h index 8bf70ea4..0b87622d 100644 --- a/src/stub/mipsel.r3000-linux.elf-entry.h +++ b/src/stub/mipsel.r3000-linux.elf-entry.h @@ -1,5 +1,5 @@ /* mipsel.r3000-linux.elf-entry.h - created from mipsel.r3000-linux.elf-entry.bin, 10193 (0x27d1) bytes + created from mipsel.r3000-linux.elf-entry.bin, 10221 (0x27ed) bytes This file is part of the UPX executable compressor. @@ -28,16 +28,16 @@ */ -#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_SIZE 10193 -#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_ADLER32 0xe6a17f81 -#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_CRC32 0x989673fc +#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_SIZE 10221 +#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_ADLER32 0x9a8b8343 +#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_CRC32 0xc53813db -unsigned char stub_mipsel_r3000_linux_elf_entry[10193] = { +unsigned char stub_mipsel_r3000_linux_elf_entry[10221] = { 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 1, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */ -228, 29, 0, 0, 1, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */ + 0, 30, 0, 0, 1, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */ 21, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 30 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 17, 4, /* 0x 40 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 17, 4, /* 0x 40 */ 0, 0,247, 39, 0,128, 13, 60, 33, 72,160, 1, 1, 0, 11, 36, /* 0x 50 */ 194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,137,152, /* 0x 60 */ 3, 0,137,136, 4, 0,132, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 70 */ @@ -486,189 +486,190 @@ unsigned char stub_mipsel_r3000_linux_elf_entry[10193] = { 1, 0, 2, 36, 52, 0,183,143, 48, 0,182,143, 44, 0,181,143, /* 0x1c20 */ 40, 0,180,143, 36, 0,179,143, 32, 0,178,143, 28, 0,177,143, /* 0x1c30 */ 24, 0,176,143, 8, 0,224, 3, 56, 0,189, 39, 13, 0, 0, 0, /* 0x1c40 */ - 32, 40,164, 0, 0, 0,230,172, 0, 0,227,140, 34, 16,133, 0, /* 0x1c50 */ - 34, 24,195, 0, 8, 0,224, 3, 0, 0,227,172, 30, 0, 6, 36, /* 0x1c60 */ -255,255, 17, 4, 33, 40,224, 3, 80, 82, 79, 84, 95, 69, 88, 69, /* 0x1c70 */ - 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105, /* 0x1c80 */ -108,101,100, 46, 10, 0, 2, 0, 4, 36,164, 15, 2, 36, 12, 0, /* 0x1c90 */ - 0, 0,127, 0, 4, 36,161, 15, 2, 36, 12, 0, 0, 0,224,255, /* 0x1ca0 */ -189, 39,224,255,228,142, 7, 0, 6, 36,228,255,229,142, 18, 8, /* 0x1cb0 */ - 7, 36, 16, 0,160,175,250, 15, 2, 36, 12, 0, 0, 0, 25, 0, /* 0x1cc0 */ -224, 20, 33, 32, 64, 0,236,255,229,142,232,255,243,142,240,255, /* 0x1cd0 */ -242,142,244,255,241,142, 11, 0,133, 16, 35, 64,133, 0, 33,184, /* 0x1ce0 */ -232, 2, 33, 48,160, 2, 0, 0,168,140, 8, 0,132, 36, 4, 0, /* 0x1cf0 */ -169,140,248,255,198, 36,248,255,136,172, 8, 0,165, 36,249,255, /* 0x1d00 */ -192, 28,252,255,137,172, 0, 0,200,142, 33, 56,160, 3, 0, 0, /* 0x1d10 */ -168,175, 33, 48, 64, 0, 4, 0,197,142, 12, 0,196, 38, 8, 0, /* 0x1d20 */ -224, 2, 33,248,192, 0,255,255, 0, 16, 0, 0, 0, 0,220,255, /* 0x1d30 */ -245,142,218,255, 17, 4, 33,176,224, 3,116,109,112, 47,109,105, /* 0x1d40 */ -112,115,101,108, 46,114, 51, 48, 48, 48, 45,108,105,110,117,120, /* 0x1d50 */ - 46,101,108,102, 45,101,110,116,114,121, 46, 98,105,110, 58, 32, /* 0x1d60 */ - 32, 32, 32, 32,102,105,108,101, 32,102,111,114,109, 97,116, 32, /* 0x1d70 */ -101,108,102, 51, 50, 45,108,105,116,116,108,101,109,105,112,115, /* 0x1d80 */ - 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, /* 0x1d90 */ - 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105, /* 0x1da0 */ -122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, /* 0x1db0 */ - 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, /* 0x1dc0 */ - 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103, /* 0x1dd0 */ -115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, /* 0x1de0 */ - 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 48, 32, 32, 48, 48, /* 0x1df0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e00 */ - 32, 32, 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, /* 0x1e10 */ - 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x1e20 */ - 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, /* 0x1e30 */ - 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1e40 */ - 48, 48, 48, 50, 49, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e50 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1e60 */ - 48, 48, 53, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1e70 */ - 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1e80 */ - 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 68, 32, /* 0x1e90 */ - 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49,102, 48, /* 0x1ea0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1eb0 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 54, 99, 32, 32, /* 0x1ec0 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1ed0 */ - 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1ee0 */ - 32, 32, 51, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, /* 0x1ef0 */ - 32, 32, 48, 48, 48, 48, 48, 49, 98, 52, 32, 32, 48, 48, 48, 48, /* 0x1f00 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1f10 */ - 48, 48, 48, 48, 48, 52, 53, 99, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1f20 */ - 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x1f30 */ - 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 76, 90, /* 0x1f40 */ - 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1f50 */ - 48, 48, 56, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1f60 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 54, /* 0x1f70 */ - 49, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1f80 */ - 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, /* 0x1f90 */ - 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, /* 0x1fa0 */ - 48, 48, 48, 48, 97,100, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1fb0 */ - 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1fc0 */ - 48, 48, 54, 57, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1fd0 */ - 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x1fe0 */ - 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, /* 0x1ff0 */ - 32, 32, 48, 48, 48, 48, 48, 97,100, 56, 32, 32, 48, 48, 48, 48, /* 0x2000 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2010 */ - 48, 48, 48, 48, 49, 49, 55, 52, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x2020 */ - 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x2030 */ - 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, /* 0x2040 */ - 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, /* 0x2050 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x2060 */ - 48, 32, 32, 48, 48, 48, 48, 49, 99, 52, 99, 32, 32, 50, 42, 42, /* 0x2070 */ - 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x2080 */ - 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 78, 82, 86, 95, 72, 69, /* 0x2090 */ - 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, /* 0x20a0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x20b0 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 53, 48, 32, 32, /* 0x20c0 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x20d0 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, /* 0x20e0 */ - 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x20f0 */ - 48, 49, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2100 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 53, /* 0x2110 */ - 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x2120 */ - 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, /* 0x2130 */ - 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x2140 */ - 48, 48, 48, 48, 50, 97, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2150 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x2160 */ - 49, 99, 54, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x2170 */ - 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x2180 */ - 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, /* 0x2190 */ - 78, 90, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 98, 52, /* 0x21a0 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x21b0 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 57, 54, 32, 32, /* 0x21c0 */ - 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x21d0 */ - 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, /* 0x21e0 */ - 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x21f0 */ -108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, /* 0x2200 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, /* 0x2210 */ - 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2220 */ - 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, /* 0x2230 */ - 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, /* 0x2240 */ - 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2250 */ - 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2260 */ - 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, /* 0x2270 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, /* 0x2280 */ - 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, /* 0x2290 */ - 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x22a0 */ - 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22b0 */ - 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x22c0 */ -108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, /* 0x22d0 */ - 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, /* 0x22e0 */ - 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, /* 0x22f0 */ - 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2300 */ - 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, /* 0x2310 */ - 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, /* 0x2320 */ - 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2330 */ - 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, /* 0x2340 */ - 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, /* 0x2350 */ - 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2360 */ - 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, /* 0x2370 */ - 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, /* 0x2380 */ - 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2390 */ - 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, /* 0x23a0 */ - 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x23b0 */ - 86, 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x23c0 */ - 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x23d0 */ - 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, /* 0x23e0 */ - 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, /* 0x23f0 */ - 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x2400 */ - 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x2410 */ - 48, 48, 48, 48, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, /* 0x2420 */ - 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x2430 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, 77, 10, 48, /* 0x2440 */ - 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2450 */ - 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, /* 0x2460 */ - 68, 82, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, /* 0x2470 */ - 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, /* 0x2480 */ - 48, 48, 48, 32, 65, 68, 82, 67, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2490 */ - 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, /* 0x24a0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, 85, 10, 48, 48, /* 0x24b0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x24c0 */ - 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, /* 0x24d0 */ - 82, 88, 10, 48, 48, 48, 48, 48, 48, 49, 56, 32,103, 32, 32, 32, /* 0x24e0 */ - 32, 32, 79, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, /* 0x24f0 */ - 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, 10, 10, 82, 69, /* 0x2500 */ - 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x2510 */ - 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, /* 0x2520 */ - 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x2530 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2540 */ - 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 77, 73, 80, /* 0x2550 */ - 83, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, /* 0x2560 */ - 77, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 77, 73, 80, /* 0x2570 */ - 83, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, /* 0x2580 */ - 77, 10, 48, 48, 48, 48, 48, 48, 48, 56, 32, 82, 95, 77, 73, 80, /* 0x2590 */ - 83, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, /* 0x25a0 */ - 85, 10, 48, 48, 48, 48, 48, 48, 48, 99, 32, 82, 95, 77, 73, 80, /* 0x25b0 */ - 83, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, /* 0x25c0 */ - 67, 10, 48, 48, 48, 48, 48, 48, 49, 48, 32, 82, 95, 77, 73, 80, /* 0x25d0 */ - 83, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, /* 0x25e0 */ - 85, 10, 48, 48, 48, 48, 48, 48, 49, 52, 32, 82, 95, 77, 73, 80, /* 0x25f0 */ - 83, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, /* 0x2600 */ - 88, 10, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95, 77, 73, 80, /* 0x2610 */ - 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, /* 0x2620 */ - 77, 65, 73, 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x2630 */ - 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, /* 0x2640 */ - 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x2650 */ - 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2660 */ - 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 49, 49, 99, /* 0x2670 */ - 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, /* 0x2680 */ - 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, /* 0x2690 */ - 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x26a0 */ - 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, /* 0x26b0 */ - 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x26c0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x26d0 */ - 48, 48, 48, 49, 49, 99, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, /* 0x26e0 */ - 49, 54, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, /* 0x26f0 */ - 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x2700 */ - 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, /* 0x2710 */ - 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x2720 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x2730 */ - 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 99, 52, 32, 82, 95, 77, /* 0x2740 */ - 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x2750 */ - 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x2760 */ - 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2770 */ - 91, 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, /* 0x2780 */ - 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x2790 */ - 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, /* 0x27a0 */ - 48, 48, 48, 48, 52, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, /* 0x27b0 */ - 54, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x27c0 */ - 10 /* 0x27d0 */ + 32, 40,164, 0, 0, 0,230,172, 0, 0,227,140, 35,192,133, 0, /* 0x1c50 */ + 33, 32, 96, 0, 35, 40,195, 0, 0, 0,229,172, 3, 0, 6, 36, /* 0x1c60 */ + 51, 16, 2, 36, 12, 0, 0, 0, 8, 0,224, 3, 33, 16, 0, 3, /* 0x1c70 */ + 30, 0, 6, 36,255,255, 17, 4, 33, 40,224, 3, 80, 82, 79, 84, /* 0x1c80 */ + 95, 69, 88, 69, 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, /* 0x1c90 */ + 32,102, 97,105,108,101,100, 46, 10, 0, 2, 0, 4, 36,164, 15, /* 0x1ca0 */ + 2, 36, 12, 0, 0, 0,127, 0, 4, 36,161, 15, 2, 36, 12, 0, /* 0x1cb0 */ + 0, 0,224,255,189, 39,224,255,228,142, 7, 0, 6, 36,228,255, /* 0x1cc0 */ +229,142, 18, 8, 7, 36, 16, 0,160,175,250, 15, 2, 36, 12, 0, /* 0x1cd0 */ + 0, 0, 27, 0,224, 20, 33, 32, 64, 0,236,255,229,142,232,255, /* 0x1ce0 */ +243,142,240,255,242,142,244,255,241,142, 13, 0,133, 16, 35, 64, /* 0x1cf0 */ +133, 0, 35, 48,215, 2, 33, 48,213, 0, 33,184,232, 2, 0, 0, /* 0x1d00 */ +168,140, 8, 0,132, 36, 4, 0,169,140,248,255,198, 36,248,255, /* 0x1d10 */ +136,172, 8, 0,165, 36,249,255,192, 28,252,255,137,172, 33, 16, /* 0x1d20 */ +128, 0, 0, 0,200,142, 33, 56,160, 3, 0, 0,168,175, 33, 48, /* 0x1d30 */ + 64, 0, 4, 0,197,142, 12, 0,196, 38, 8, 0,224, 2, 33,248, /* 0x1d40 */ +192, 0,255,255, 0, 16, 0, 0, 0, 0,220,255,245,142,216,255, /* 0x1d50 */ + 17, 4, 33,176,224, 3,116,109,112, 47,109,105,112,115,101,108, /* 0x1d60 */ + 46,114, 51, 48, 48, 48, 45,108,105,110,117,120, 46,101,108,102, /* 0x1d70 */ + 45,101,110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32, /* 0x1d80 */ +102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, /* 0x1d90 */ + 50, 45,108,105,116,116,108,101,109,105,112,115, 10, 10, 83,101, /* 0x1da0 */ + 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, /* 0x1db0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, /* 0x1dc0 */ + 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, /* 0x1dd0 */ + 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, /* 0x1de0 */ + 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, /* 0x1df0 */ + 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, /* 0x1e00 */ + 48, 48, 48, 48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1e10 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1e20 */ + 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1e30 */ + 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x1e40 */ + 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 50, /* 0x1e50 */ + 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 50, /* 0x1e60 */ + 49, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1e70 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 53, 52, /* 0x1e80 */ + 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1e90 */ + 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1ea0 */ + 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, /* 0x1eb0 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 49,102, 48, 32, 32, 48, 48, /* 0x1ec0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ed0 */ + 32, 32, 48, 48, 48, 48, 48, 50, 54, 99, 32, 32, 50, 42, 42, 48, /* 0x1ee0 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x1ef0 */ + 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, /* 0x1f00 */ + 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1f10 */ + 48, 48, 48, 49, 98, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f20 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1f30 */ + 48, 52, 53, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1f40 */ + 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1f50 */ + 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 76, 90, 77, 65, 95, 69, /* 0x1f60 */ + 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 99, /* 0x1f70 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1f80 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 54, 49, 48, 32, 32, /* 0x1f90 */ + 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1fa0 */ + 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, /* 0x1fb0 */ + 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1fc0 */ + 97,100, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1fd0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 54, 57, /* 0x1fe0 */ + 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1ff0 */ + 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, /* 0x2000 */ + 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, /* 0x2010 */ + 48, 48, 48, 97,100, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2020 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x2030 */ + 49, 49, 55, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x2040 */ + 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x2050 */ + 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, /* 0x2060 */ + 32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, /* 0x2070 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2080 */ + 48, 48, 48, 49, 99, 52, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x2090 */ + 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x20a0 */ + 89, 10, 32, 32, 56, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 32, /* 0x20b0 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, /* 0x20c0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20d0 */ + 32, 32, 48, 48, 48, 48, 49, 99, 53, 48, 32, 32, 50, 42, 42, 48, /* 0x20e0 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x20f0 */ + 79, 78, 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, /* 0x2100 */ + 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 56, 32, /* 0x2110 */ + 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x2120 */ + 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 53, 56, 32, 32, 50, /* 0x2130 */ + 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x2140 */ + 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 69, 76, 70, 77, /* 0x2150 */ + 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2160 */ + 50, 97, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x2170 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 56, 48, /* 0x2180 */ + 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x2190 */ + 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x21a0 */ + 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, /* 0x21b0 */ + 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 98, 99, 32, 32, 48, 48, /* 0x21c0 */ + 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x21d0 */ + 32, 32, 48, 48, 48, 48, 49, 99, 97, 97, 32, 32, 50, 42, 42, 48, /* 0x21e0 */ + 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x21f0 */ + 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, /* 0x2200 */ + 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2210 */ + 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, /* 0x2220 */ + 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, /* 0x2230 */ + 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2240 */ + 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2250 */ + 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, /* 0x2260 */ + 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, /* 0x2270 */ + 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, /* 0x2280 */ + 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2290 */ +108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, /* 0x22a0 */ + 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, /* 0x22b0 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x22c0 */ + 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, /* 0x22d0 */ + 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x22e0 */ + 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, /* 0x22f0 */ + 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2300 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, /* 0x2310 */ + 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x2320 */ + 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2330 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x2340 */ + 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x2350 */ + 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2360 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x2370 */ + 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x2380 */ + 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2390 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x23a0 */ + 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, /* 0x23b0 */ + 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x23c0 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, /* 0x23d0 */ + 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, /* 0x23e0 */ + 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x23f0 */ + 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, /* 0x2400 */ + 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2410 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x2420 */ + 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2430 */ + 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2440 */ + 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, /* 0x2450 */ + 48, 48, 48, 48, 48, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, /* 0x2460 */ + 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, /* 0x2470 */ + 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 85, 10, /* 0x2480 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2490 */ + 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x24a0 */ + 65, 68, 82, 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x24b0 */ + 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x24c0 */ + 48, 48, 48, 48, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, /* 0x24d0 */ + 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x24e0 */ + 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 88, 10, 48, /* 0x24f0 */ + 48, 48, 48, 48, 48, 49, 56, 32,103, 32, 32, 32, 32, 32, 79, 32, /* 0x2500 */ + 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2510 */ + 48, 32, 95,115,116, 97,114,116, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x2520 */ + 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x2530 */ + 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, /* 0x2540 */ + 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, /* 0x2550 */ + 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, /* 0x2560 */ + 48, 48, 48, 48, 48, 48, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x2570 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48, /* 0x2580 */ + 48, 48, 48, 48, 48, 52, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x2590 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, /* 0x25a0 */ + 48, 48, 48, 48, 48, 56, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x25b0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 85, 10, 48, 48, /* 0x25c0 */ + 48, 48, 48, 48, 48, 99, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x25d0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 67, 10, 48, 48, /* 0x25e0 */ + 48, 48, 48, 48, 49, 48, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x25f0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 85, 10, 48, 48, /* 0x2600 */ + 48, 48, 48, 48, 49, 52, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, /* 0x2610 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 88, 10, 48, 48, /* 0x2620 */ + 48, 48, 48, 48, 49, 56, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, /* 0x2630 */ + 49, 54, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x2640 */ + 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x2650 */ + 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, /* 0x2660 */ + 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x2670 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x2680 */ + 76, 85, 69, 10, 48, 48, 48, 48, 48, 49, 49, 99, 32, 82, 95, 77, /* 0x2690 */ + 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 78, /* 0x26a0 */ + 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x26b0 */ + 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x26c0 */ + 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x26d0 */ + 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x26e0 */ + 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 49, /* 0x26f0 */ + 49, 99, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, /* 0x2700 */ + 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, /* 0x2710 */ + 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x2720 */ + 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, /* 0x2730 */ + 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x2740 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, /* 0x2750 */ + 48, 48, 48, 48, 48, 48, 99, 52, 32, 82, 95, 77, 73, 80, 83, 95, /* 0x2760 */ + 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, /* 0x2770 */ + 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x2780 */ + 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, /* 0x2790 */ + 77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, /* 0x27a0 */ + 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x27b0 */ + 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x27c0 */ + 52, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, /* 0x27d0 */ + 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10 /* 0x27e0 */ }; diff --git a/src/stub/mipsel.r3000-linux.elf-fold.h b/src/stub/mipsel.r3000-linux.elf-fold.h index 5070f90a..34a5df41 100644 --- a/src/stub/mipsel.r3000-linux.elf-fold.h +++ b/src/stub/mipsel.r3000-linux.elf-fold.h @@ -29,8 +29,8 @@ #define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 2560 -#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x47892e4c -#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0xf8bf56d3 +#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x62582e6c +#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0xbf4a45c4 unsigned char stub_mipsel_r3000_linux_elf_fold[2560] = { 127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ @@ -51,7 +51,7 @@ unsigned char stub_mipsel_r3000_linux_elf_fold[2560] = { 2, 0, 97,160, 61, 0, 1, 36, 3, 0, 97,160,255, 15, 6, 36, /* 0x f0 */ 4, 0,101, 36, 5, 0, 17, 4, 33, 32,224, 3, 47,112,114,111, /* 0x 100 */ 99, 47,115,101,108,102, 47,101,120,101, 0, 0,245, 15, 2, 36, /* 0x 110 */ - 12, 0, 0, 0, 2, 0,224, 4, 33, 8,130, 0, 0, 0, 32,160, /* 0x 120 */ + 12, 0, 0, 0, 2, 0,224, 4, 33, 8,162, 0, 0, 0, 32,160, /* 0x 120 */ 0,254,189, 39, 33, 72, 0, 0, 33, 64,224, 2, 33, 56,128, 2, /* 0x 130 */ 33, 48,160, 3,116,255,165, 38, 1, 0, 16, 4, 80, 1, 2, 36, /* 0x 140 */ 35, 16,226, 3, 84, 8, 66, 36, 9,248, 64, 0, 33, 32, 32, 2, /* 0x 150 */ diff --git a/src/stub/src/mipsel.r3000-linux.elf-entry.S b/src/stub/src/mipsel.r3000-linux.elf-entry.S index f46ca4af..4252de7d 100644 --- a/src/stub/src/mipsel.r3000-linux.elf-entry.S +++ b/src/stub/src/mipsel.r3000-linux.elf-entry.S @@ -210,10 +210,18 @@ lzma_decode: section NRV_TAIL eof: lw v1,(lxdstlen) // original lxdst - sub v0,lxsrc,lxsrclen // new_src - src_EOF; // return 0: good; else: bad - sub v1,lxdst,v1 // actual length generated + subu t8,lxsrc,lxsrclen // new_src - src_EOF; // return 0: good; else: bad + + move a0,v1 // original lxdst + subu a1,lxdst,v1 // actual length generated + sw a1,(lxdstlen) + li a2,ICACHE|DCACHE + li v0,__NR_cacheflush + syscall + jr ra - sw v1,(lxdstlen) + move v0,t8 # return value from decompression + section ELFMAINY msg_SELinux: @@ -273,14 +281,16 @@ unfold: // s7= &decompress; s6= &b_info(fold); s5= sz_pack2 beq a0,a1,L80 // no copy subu t0,a0,a1 // (ADRM - ADRC) == relocation amount + subu a2,s6,s7 // &b_info(fold) - &decompress; >= sizeof(decompress) + addu a2,a2,s5 // + sz_pack2; length to copy addu s7,s7,t0 // update &decompress - move a2,s5 // length move_up: // memcpy(dst=a0, src=a1, len=round_up(a2, 8)) lw t0, 0(a1); addiu a0,a0, 8 lw t1, 4(a1); addiu a2,a2,-8 sw t0,-8(a0); addiu a1,a1, 8 bgtz a2,move_up sw t1,-4(a0) + move v0,a0 // unfolded stub follows copied decompressor L80: // Decompress the folded part of this stub, then execute it. lw t0,sz_unc(s6); move a3,sp; sw t0,0(sp) // &dst_len diff --git a/src/stub/src/mipsel.r3000-linux.elf-fold.S b/src/stub/src/mipsel.r3000-linux.elf-fold.S index 46099125..6679a012 100644 --- a/src/stub/src/mipsel.r3000-linux.elf-fold.S +++ b/src/stub/src/mipsel.r3000-linux.elf-fold.S @@ -120,7 +120,7 @@ L30: # copy auxv li v0,__NR_readlink syscall bltz a3,0f - addu tmp,a0,v0 + addu tmp,a1,v0 sb $0,(tmp) # null terminate the path 0: addiu sp,-MAX_ELF_HDR # alloca diff --git a/src/stub/tmp/mipsel.r3000-linux.elf-entry.bin.dump b/src/stub/tmp/mipsel.r3000-linux.elf-entry.bin.dump index 9cdf6ce4..02e070e0 100644 --- a/src/stub/tmp/mipsel.r3000-linux.elf-entry.bin.dump +++ b/src/stub/tmp/mipsel.r3000-linux.elf-entry.bin.dump @@ -11,9 +11,9 @@ Idx Name Size VMA LMA File off Algn Flags 6 LZMA_DEC10 00000ad8 00000000 00000000 00001174 2**0 CONTENTS, READONLY 7 LZMA_DEC30 00000004 00000000 00000000 00001c4c 2**0 CONTENTS, READONLY 8 NRV_HEAD 00000008 00000000 00000000 00001c50 2**0 CONTENTS, READONLY - 9 NRV_TAIL 00000014 00000000 00000000 00001c58 2**0 CONTENTS, READONLY - 10 ELFMAINY 0000002a 00000000 00000000 00001c6c 2**0 CONTENTS, RELOC, READONLY - 11 ELFMAINZ 000000b4 00000000 00000000 00001c96 2**0 CONTENTS, READONLY + 9 NRV_TAIL 00000028 00000000 00000000 00001c58 2**0 CONTENTS, READONLY + 10 ELFMAINY 0000002a 00000000 00000000 00001c80 2**0 CONTENTS, RELOC, READONLY + 11 ELFMAINZ 000000bc 00000000 00000000 00001caa 2**0 CONTENTS, READONLY SYMBOL TABLE: 00000000 l d NRV_TAIL 00000000 NRV_TAIL 00000000 l d ELFMAINZ 00000000 ELFMAINZ