diff --git a/src/stub/powerpc-linux.elf-entry.h b/src/stub/powerpc-linux.elf-entry.h index 5b8affc1..01f6fb6d 100644 --- a/src/stub/powerpc-linux.elf-entry.h +++ b/src/stub/powerpc-linux.elf-entry.h @@ -1,5 +1,5 @@ /* powerpc-linux.elf-entry.h - created from powerpc-linux.elf-entry.bin, 9325 (0x246d) bytes + created from powerpc-linux.elf-entry.bin, 9329 (0x2471) bytes This file is part of the UPX executable compressor. @@ -31,15 +31,15 @@ */ -#define STUB_POWERPC_LINUX_ELF_ENTRY_SIZE 9325 -#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0xa3727536 -#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0x4e844a16 +#define STUB_POWERPC_LINUX_ELF_ENTRY_SIZE 9329 +#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0x9ecd7694 +#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0x0552746c -unsigned char stub_powerpc_linux_elf_entry[9325] = { +unsigned char stub_powerpc_linux_elf_entry[9329] = { /* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0020 */ 0, 0, 25,212, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, -/* 0x0030 */ 0, 0, 0, 0, 72, 0, 1, 25,124, 0, 41,236,125,168, 2,166, +/* 0x0020 */ 0, 0, 25,216, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, +/* 0x0030 */ 0, 0, 0, 0, 72, 0, 1, 29,124, 0, 41,236,125,168, 2,166, /* 0x0040 */ 40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, /* 0x0050 */ 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x0060 */ 57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, @@ -427,196 +427,197 @@ unsigned char stub_powerpc_linux_elf_entry[9325] = { /* 0x1840 */ 255,205,124,124, 27,120,128, 3, 0, 0,128,131, 0, 4, 56, 99, /* 0x1850 */ 0, 8, 44, 0, 0, 6, 65,130, 0, 16, 44, 0, 0, 0, 64,130, /* 0x1860 */ 255,232, 56,128, 16, 0,124,155, 35,120, 57, 0, 0, 0, 56,224, -/* 0x1870 */ 255,255, 56,192, 0, 34, 56,160, 0, 7,128,158, 0, 4,128,126, -/* 0x1880 */ 0, 0, 56, 0, 0, 90,124,110, 27,120, 68, 0, 0, 2,124, 14, -/* 0x1890 */ 24, 64, 64,130, 0, 0,128, 30, 0, 4, 58,192, 0, 0,124, 0, -/* 0x18a0 */ 216, 64, 64,129, 0, 56,126,216, 24, 80,127,255,178, 20,127, 24, -/* 0x18b0 */ 178, 20, 56, 0, 0, 7, 56,132,255,252, 84, 0,232,254, 56, 99, -/* 0x18c0 */ 255,252,124, 9, 3,166,129,100, 0, 4,133,132, 0, 8,145, 99, -/* 0x18d0 */ 0, 4,149,131, 0, 8, 66, 0,255,240,127,233, 3,166,128, 30, -/* 0x18e0 */ 0, 16,136,254, 0, 24, 56,193, 0,140,144, 1, 0,140,125,197, -/* 0x18f0 */ 115,120,125,200, 3,166,128,158, 0, 20, 56,126, 0, 28, 78,128, -/* 0x1900 */ 4, 32,148, 33,255,112,188, 65, 0, 20,127,232, 2,166, 75,255, -/* 0x1910 */ 255, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x1920 */ 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108, -/* 0x1930 */ 102, 51, 50, 45,112,111,119,101,114,112, 99, 10, 10, 83,101, 99, -/* 0x1940 */ 116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, -/* 0x1950 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, -/* 0x1960 */ 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, -/* 0x1970 */ 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, -/* 0x1980 */ 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, -/* 0x1990 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, -/* 0x19a0 */ 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, -/* 0x19b0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, -/* 0x19c0 */ 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, -/* 0x19d0 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, -/* 0x19e0 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, -/* 0x19f0 */ 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, -/* 0x1a00 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, -/* 0x1a10 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, -/* 0x1a20 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, -/* 0x1a30 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, -/* 0x1a40 */ 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, -/* 0x1a50 */ 48, 49, 52, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, -/* 0x1a60 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, -/* 0x1a70 */ 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, -/* 0x1a80 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, -/* 0x1a90 */ 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, 32, -/* 0x1aa0 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 99, 32, 32, -/* 0x1ab0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, -/* 0x1ac0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 56, 48, 32, 32, 50, 42, -/* 0x1ad0 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, -/* 0x1ae0 */ 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, -/* 0x1af0 */ 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x1b00 */ 48, 48, 48, 48, 48, 48,102, 48, 32, 32, 48, 48, 48, 48, 48, 48, -/* 0x1b10 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, -/* 0x1b20 */ 48, 48, 48, 50, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1b30 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, -/* 0x1b40 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, 65, -/* 0x1b50 */ 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, -/* 0x1b60 */ 57, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, -/* 0x1b70 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 57, 99, -/* 0x1b80 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x1b90 */ 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, -/* 0x1ba0 */ 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, -/* 0x1bb0 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, -/* 0x1bc0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1bd0 */ 32, 32, 48, 48, 48, 48, 48, 52, 50, 99, 32, 32, 50, 42, 42, 48, -/* 0x1be0 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, -/* 0x1bf0 */ 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, -/* 0x1c00 */ 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, -/* 0x1c10 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, -/* 0x1c20 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,100, 99, 56, 32, 32, 50, -/* 0x1c30 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, -/* 0x1c40 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, -/* 0x1c50 */ 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, -/* 0x1c60 */ 50, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, -/* 0x1c70 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 54, 52, -/* 0x1c80 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x1c90 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78, -/* 0x1ca0 */ 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, -/* 0x1cb0 */ 48, 48, 48, 49, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x1cc0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, -/* 0x1cd0 */ 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x1ce0 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, -/* 0x1cf0 */ 48, 32, 67, 70, 76, 85, 83, 72, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x1d00 */ 48, 48, 48, 48, 48, 48, 50, 52, 32, 32, 48, 48, 48, 48, 48, 48, -/* 0x1d10 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, -/* 0x1d20 */ 48, 48, 49, 55, 97, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1d30 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, -/* 0x1d40 */ 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, -/* 0x1d50 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 50, 32, 32, 48, 48, 48, -/* 0x1d60 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x1d70 */ 32, 48, 48, 48, 48, 49, 55, 99, 56, 32, 32, 50, 42, 42, 48, 32, -/* 0x1d80 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, -/* 0x1d90 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, 32, 69, -/* 0x1da0 */ 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48, 48, -/* 0x1db0 */ 48, 48, 49, 51, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x1dc0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, -/* 0x1dd0 */ 55,101, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x1de0 */ 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, -/* 0x1df0 */ 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, -/* 0x1e00 */ 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x1e10 */ 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, -/* 0x1e20 */ 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, -/* 0x1e30 */ 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x1e40 */ 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, -/* 0x1e50 */ 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, -/* 0x1e60 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x1e70 */ 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, -/* 0x1e80 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, -/* 0x1e90 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, -/* 0x1ea0 */ 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, -/* 0x1eb0 */ 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x1ec0 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, -/* 0x1ed0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, -/* 0x1ee0 */ 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x1ef0 */ 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, 48, -/* 0x1f00 */ 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, -/* 0x1f10 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x1f20 */ 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, -/* 0x1f30 */ 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, -/* 0x1f40 */ 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, -/* 0x1f50 */ 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, -/* 0x1f60 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, -/* 0x1f70 */ 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, -/* 0x1f80 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x1f90 */ 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, -/* 0x1fa0 */ 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, -/* 0x1fb0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x1fc0 */ 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, -/* 0x1fd0 */ 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, -/* 0x1fe0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x1ff0 */ 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, -/* 0x2000 */ 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, -/* 0x2010 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x2020 */ 32, 32, 67, 70, 76, 85, 83, 72, 9, 48, 48, 48, 48, 48, 48, 48, -/* 0x2030 */ 48, 32, 67, 70, 76, 85, 83, 72, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x2040 */ 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, -/* 0x2050 */ 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97, -/* 0x2060 */ 114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, -/* 0x2070 */ 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, -/* 0x2080 */ 48, 48, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2090 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, -/* 0x20a0 */ 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, 77, 10, 48, 48, 48, -/* 0x20b0 */ 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, -/* 0x20c0 */ 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, -/* 0x20d0 */ 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, -/* 0x20e0 */ 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, -/* 0x20f0 */ 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, -/* 0x2100 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x2110 */ 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, -/* 0x2120 */ 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, -/* 0x2130 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, -/* 0x2140 */ 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, -/* 0x2150 */ 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, -/* 0x2160 */ 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 49, 49, 56, 10, 10, 82, -/* 0x2170 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, -/* 0x2180 */ 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, -/* 0x2190 */ 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, -/* 0x21a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, -/* 0x21b0 */ 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, -/* 0x21c0 */ 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, -/* 0x21d0 */ 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, -/* 0x21e0 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, -/* 0x21f0 */ 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, -/* 0x2200 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x2210 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, -/* 0x2220 */ 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, -/* 0x2230 */ 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, -/* 0x2240 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, -/* 0x2250 */ 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, -/* 0x2260 */ 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x2270 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, -/* 0x2280 */ 48, 48, 57, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, -/* 0x2290 */ 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, -/* 0x22a0 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, -/* 0x22b0 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, -/* 0x22c0 */ 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, -/* 0x22d0 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x22e0 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, -/* 0x22f0 */ 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, -/* 0x2300 */ 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, -/* 0x2310 */ 48, 48, 48, 48, 48, 50, 52, 10, 10, 82, 69, 76, 79, 67, 65, 84, -/* 0x2320 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, -/* 0x2330 */ 91, 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, -/* 0x2340 */ 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, -/* 0x2350 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, -/* 0x2360 */ 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, -/* 0x2370 */ 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, -/* 0x2380 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, -/* 0x2390 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, -/* 0x23a0 */ 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, -/* 0x23b0 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x23c0 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 97, 56, 32, 82, -/* 0x23d0 */ 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, -/* 0x23e0 */ 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 49, -/* 0x23f0 */ 50, 56, 32, 82, 95, 80, 80, 67, 95, 65, 68, 68, 82, 51, 50, 32, -/* 0x2400 */ 32, 32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 49, -/* 0x2410 */ 50, 99, 32, 82, 95, 80, 80, 67, 95, 65, 68, 68, 82, 51, 50, 32, -/* 0x2420 */ 32, 32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, 49, -/* 0x2430 */ 51, 48, 32, 82, 95, 80, 80, 67, 95, 65, 68, 68, 82, 51, 50, 32, -/* 0x2440 */ 32, 32, 32, 32, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 49, -/* 0x2450 */ 51, 52, 32, 82, 95, 80, 80, 67, 95, 65, 68, 68, 82, 51, 50, 32, -/* 0x2460 */ 32, 32, 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, 10 +/* 0x1870 */ 255,255, 56,192, 0, 34, 56,160, 0, 7,128,158, 0, 4, 56,128, +/* 0x1880 */ 32, 0,128,126, 0, 0, 56, 0, 0, 90,124,110, 27,120, 68, 0, +/* 0x1890 */ 0, 2,124, 14, 24, 64, 64,130, 0, 0,128, 30, 0, 4, 58,192, +/* 0x18a0 */ 0, 0,124, 0,216, 64, 64,129, 0, 56,126,216, 24, 80,127,255, +/* 0x18b0 */ 178, 20,127, 24,178, 20, 56, 0, 0, 7, 56,132,255,252, 84, 0, +/* 0x18c0 */ 232,254, 56, 99,255,252,124, 9, 3,166,129,100, 0, 4,133,132, +/* 0x18d0 */ 0, 8,145, 99, 0, 4,149,131, 0, 8, 66, 0,255,240,127,233, +/* 0x18e0 */ 3,166,128, 30, 0, 16,136,254, 0, 24, 56,193, 0,140,144, 1, +/* 0x18f0 */ 0,140,125,197,115,120,125,200, 3,166,128,158, 0, 20, 56,126, +/* 0x1900 */ 0, 28, 78,128, 4, 32,148, 33,255,112,188, 65, 0, 20,127,232, +/* 0x1910 */ 2,166, 75,255,255, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x1920 */ 0, 0, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,109, 97, +/* 0x1930 */ 116, 32,101,108,102, 51, 50, 45,112,111,119,101,114,112, 99, 10, +/* 0x1940 */ 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, +/* 0x1950 */ 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122, +/* 0x1960 */ 101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, +/* 0x1970 */ 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32, +/* 0x1980 */ 111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, +/* 0x1990 */ 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, +/* 0x19a0 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, +/* 0x19b0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x19c0 */ 32, 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, +/* 0x19d0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, +/* 0x19e0 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, +/* 0x19f0 */ 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, +/* 0x1a00 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x1a10 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, +/* 0x1a20 */ 48, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, +/* 0x1a30 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, +/* 0x1a40 */ 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x1a50 */ 48, 48, 48, 48, 48, 49, 52, 56, 32, 32, 48, 48, 48, 48, 48, 48, +/* 0x1a60 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, +/* 0x1a70 */ 48, 48, 48, 48, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, +/* 0x1a80 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, +/* 0x1a90 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, +/* 0x1aa0 */ 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, +/* 0x1ab0 */ 50, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, +/* 0x1ac0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 56, 48, +/* 0x1ad0 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, +/* 0x1ae0 */ 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, +/* 0x1af0 */ 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, +/* 0x1b00 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,102, 48, 32, 32, 48, 48, +/* 0x1b10 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1b20 */ 32, 32, 48, 48, 48, 48, 48, 50, 97, 99, 32, 32, 50, 42, 42, 48, +/* 0x1b30 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, +/* 0x1b40 */ 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, +/* 0x1b50 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, +/* 0x1b60 */ 48, 48, 48, 48, 57, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1b70 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, +/* 0x1b80 */ 48, 51, 57, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, +/* 0x1b90 */ 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, +/* 0x1ba0 */ 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, +/* 0x1bb0 */ 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, +/* 0x1bc0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, +/* 0x1bd0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 50, 99, 32, 32, +/* 0x1be0 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, +/* 0x1bf0 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, +/* 0x1c00 */ 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, +/* 0x1c10 */ 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, +/* 0x1c20 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,100, 99, +/* 0x1c30 */ 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, +/* 0x1c40 */ 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, +/* 0x1c50 */ 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, +/* 0x1c60 */ 48, 48, 48, 48, 50, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1c70 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, +/* 0x1c80 */ 49, 55, 54, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, +/* 0x1c90 */ 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, +/* 0x1ca0 */ 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, +/* 0x1cb0 */ 32, 48, 48, 48, 48, 48, 48, 49, 99, 32, 32, 48, 48, 48, 48, 48, +/* 0x1cc0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, +/* 0x1cd0 */ 48, 48, 48, 49, 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, +/* 0x1ce0 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, +/* 0x1cf0 */ 89, 10, 32, 49, 48, 32, 67, 70, 76, 85, 83, 72, 32, 32, 32, 32, +/* 0x1d00 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 52, 32, 32, 48, 48, +/* 0x1d10 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1d20 */ 32, 32, 48, 48, 48, 48, 49, 55, 97, 52, 32, 32, 50, 42, 42, 48, +/* 0x1d30 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, +/* 0x1d40 */ 79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, +/* 0x1d50 */ 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 50, 32, +/* 0x1d60 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, +/* 0x1d70 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 99, 56, 32, 32, 50, +/* 0x1d80 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, +/* 0x1d90 */ 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, +/* 0x1da0 */ 49, 50, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, +/* 0x1db0 */ 32, 48, 48, 48, 48, 48, 49, 51, 99, 32, 32, 48, 48, 48, 48, 48, +/* 0x1dc0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, +/* 0x1dd0 */ 48, 48, 48, 49, 55,101, 97, 32, 32, 50, 42, 42, 48, 32, 32, 67, +/* 0x1de0 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, +/* 0x1df0 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, +/* 0x1e00 */ 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x1e10 */ 108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, +/* 0x1e20 */ 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, +/* 0x1e30 */ 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x1e40 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, +/* 0x1e50 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, +/* 0x1e60 */ 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, +/* 0x1e70 */ 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, +/* 0x1e80 */ 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, +/* 0x1e90 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, +/* 0x1ea0 */ 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, +/* 0x1eb0 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, +/* 0x1ec0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, +/* 0x1ed0 */ 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, +/* 0x1ee0 */ 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x1ef0 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, +/* 0x1f00 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, +/* 0x1f10 */ 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, +/* 0x1f20 */ 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, +/* 0x1f30 */ 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, +/* 0x1f40 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, +/* 0x1f50 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, +/* 0x1f60 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, +/* 0x1f70 */ 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, +/* 0x1f80 */ 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, +/* 0x1f90 */ 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, +/* 0x1fa0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, +/* 0x1fb0 */ 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, +/* 0x1fc0 */ 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, +/* 0x1fd0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, +/* 0x1fe0 */ 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, +/* 0x1ff0 */ 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, +/* 0x2000 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, +/* 0x2010 */ 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, +/* 0x2020 */ 32, 32, 32,100, 32, 32, 67, 70, 76, 85, 83, 72, 9, 48, 48, 48, +/* 0x2030 */ 48, 48, 48, 48, 48, 32, 67, 70, 76, 85, 83, 72, 10, 48, 48, 48, +/* 0x2040 */ 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, +/* 0x2050 */ 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x2060 */ 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x2070 */ 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, +/* 0x2080 */ 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, +/* 0x2090 */ 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, +/* 0x20a0 */ 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, 77, +/* 0x20b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, +/* 0x20c0 */ 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x20d0 */ 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, +/* 0x20e0 */ 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, +/* 0x20f0 */ 48, 48, 48, 48, 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82, +/* 0x2100 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, +/* 0x2110 */ 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, +/* 0x2120 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, +/* 0x2130 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, +/* 0x2140 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, +/* 0x2150 */ 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, +/* 0x2160 */ 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 49, 49, +/* 0x2170 */ 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, +/* 0x2180 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, +/* 0x2190 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, +/* 0x21a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, +/* 0x21b0 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, +/* 0x21c0 */ 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, +/* 0x21d0 */ 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, +/* 0x21e0 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, +/* 0x21f0 */ 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, +/* 0x2200 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x2210 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, +/* 0x2220 */ 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, +/* 0x2230 */ 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, +/* 0x2240 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, +/* 0x2250 */ 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, +/* 0x2260 */ 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, +/* 0x2270 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, +/* 0x2280 */ 48, 48, 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, 67, 95, 82, +/* 0x2290 */ 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, +/* 0x22a0 */ 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, +/* 0x22b0 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, +/* 0x22c0 */ 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, +/* 0x22d0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x22e0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, +/* 0x22f0 */ 48, 48, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, +/* 0x2300 */ 32, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, +/* 0x2310 */ 43, 48,120, 48, 48, 48, 48, 48, 48, 50, 52, 10, 10, 82, 69, 76, +/* 0x2320 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, +/* 0x2330 */ 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, 10, +/* 0x2340 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, +/* 0x2350 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, +/* 0x2360 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, +/* 0x2370 */ 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, +/* 0x2380 */ 65, 73, 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, +/* 0x2390 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, +/* 0x23a0 */ 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, +/* 0x23b0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x23c0 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, +/* 0x23d0 */ 97, 99, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, +/* 0x23e0 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, +/* 0x23f0 */ 48, 48, 48, 49, 50, 99, 32, 82, 95, 80, 80, 67, 95, 65, 68, 68, +/* 0x2400 */ 82, 51, 50, 32, 32, 32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48, +/* 0x2410 */ 48, 48, 48, 49, 51, 48, 32, 82, 95, 80, 80, 67, 95, 65, 68, 68, +/* 0x2420 */ 82, 51, 50, 32, 32, 32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, +/* 0x2430 */ 48, 48, 48, 49, 51, 52, 32, 82, 95, 80, 80, 67, 95, 65, 68, 68, +/* 0x2440 */ 82, 51, 50, 32, 32, 32, 32, 32, 32, 76, 69, 78, 85, 10, 48, 48, +/* 0x2450 */ 48, 48, 48, 49, 51, 56, 32, 82, 95, 80, 80, 67, 95, 65, 68, 68, +/* 0x2460 */ 82, 51, 50, 32, 32, 32, 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, +/* 0x2470 */ 10 }; diff --git a/src/stub/powerpc-linux.elf-fold.h b/src/stub/powerpc-linux.elf-fold.h index e021f15e..c824cfd0 100644 --- a/src/stub/powerpc-linux.elf-fold.h +++ b/src/stub/powerpc-linux.elf-fold.h @@ -1,5 +1,5 @@ /* powerpc-linux.elf-fold.h - created from powerpc-linux.elf-fold.bin, 3832 (0xef8) bytes + created from powerpc-linux.elf-fold.bin, 3940 (0xf64) bytes This file is part of the UPX executable compressor. @@ -31,17 +31,17 @@ */ -#define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 3832 -#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0xbb4dfc8c -#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0x634bb311 +#define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 3940 +#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0x5b612076 +#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0x96348586 -unsigned char stub_powerpc_linux_elf_fold[3832] = { +unsigned char stub_powerpc_linux_elf_fold[3940] = { /* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 0, 2, 0, 20, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0, -/* 0x0040 */ 0, 16, 0, 0, 0, 0, 14,248, 0, 0, 14,248, 0, 0, 0, 5, -/* 0x0050 */ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 14,248, 0, 0, 0, 0, +/* 0x0040 */ 0, 16, 0, 0, 0, 0, 15,100, 0, 0, 15,100, 0, 0, 0, 5, +/* 0x0050 */ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 15,100, 0, 0, 0, 0, /* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0070 */ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0080 */ 72, 0, 0,125, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, @@ -52,228 +52,235 @@ unsigned char stub_powerpc_linux_elf_fold[3832] = { /* 0x00d0 */ 133, 99, 0, 4, 85, 96, 85,190,124, 0, 40, 64, 65,162,255,220, /* 0x00e0 */ 66, 0,255,240, 78,128, 0, 32, 32, 32, 32, 61, 47,112,114,111, /* 0x00f0 */ 99, 47,115,101,108,102, 47,101,120,101, 0, 0,126,168, 2,166, -/* 0x0100 */ 56,128, 0, 0, 56,117, 0,104, 56, 0, 0, 5, 68, 0, 0, 2, -/* 0x0110 */ 124,116, 27,120, 56,129,255,252, 56, 33,239,252,124, 59, 8, 80, -/* 0x0120 */ 124, 59, 8, 80, 56, 97,255,252, 59,156,255,252,132, 4, 0, 4, -/* 0x0130 */ 127,132,224, 64,148, 3, 0, 4, 65,156,255,244, 59,131, 0, 8, -/* 0x0140 */ 148, 3, 0, 4,128, 4, 0, 4, 43,128, 0, 0,144, 3, 0, 4, -/* 0x0150 */ 132, 4, 0, 8,148, 3, 0, 8, 64,158,255,236, 58, 99, 0, 4, -/* 0x0160 */ 126, 92,152, 80,128, 21, 0,100, 58, 36, 0, 4,148, 3, 0, 4, -/* 0x0170 */ 57,195, 0, 4, 56,160, 15,255,125,196,115,120, 56,117, 0,104, -/* 0x0180 */ 56, 0, 0, 85, 68, 0, 0, 2, 56,174,255,252, 44, 3, 0, 0, -/* 0x0190 */ 65,129, 0, 12, 56,181, 0,100, 56, 96, 0, 16, 56, 99, 0, 4, -/* 0x01a0 */ 124,133, 26, 20,124,105, 3,166,126, 35,139,120, 56,160, 0, 0, -/* 0x01b0 */ 156,163,255,255,140, 4,255,255,156, 3,255,255, 66, 0,255,248, -/* 0x01c0 */ 144,124,255,248,124, 27, 40, 80,124,112, 0, 56,126, 16, 2, 20, -/* 0x01d0 */ 127,146,128, 80, 57, 0, 0, 0,126,135,163,120, 56,192, 0, 18, -/* 0x01e0 */ 56,160, 0, 1,127,100,219,120,126, 3,131,120, 56, 0, 0, 90, -/* 0x01f0 */ 68, 0, 0, 2,126,100,155,120,132, 4,255,252,127,132, 8, 64, -/* 0x0200 */ 148, 3,255,252, 65,157,255,244,124, 97, 27,120,126,131,163,120, -/* 0x0210 */ 56, 0, 0, 6, 68, 0, 0, 2, 56, 0, 0, 0, 57, 65, 0,140, -/* 0x0220 */ 146,202, 0, 0,124, 27, 0, 80,127,106,219,120,127,137,227,120, -/* 0x0230 */ 126,168,171,120,125, 30, 0, 56,127,231,251,120, 56, 33,248, 0, -/* 0x0240 */ 128,159,255,248,127,164,248, 80, 59,189,255,248,147,161, 0, 8, -/* 0x0250 */ 124,125,210, 20,124,154, 32, 80, 56,161, 0, 16,148, 33,247,240, -/* 0x0260 */ 128,195, 0, 0, 72, 0, 9,153,124,127, 27,120,127, 3,195,120, -/* 0x0270 */ 126,229,187,120, 72, 0, 0, 81,127,232, 3,166,184, 65, 8, 20, -/* 0x0280 */ 56, 33, 8,144, 78,128, 0, 32, 56, 0, 0, 90, 68, 0, 0, 2, -/* 0x0290 */ 64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, -/* 0x02a0 */ 72, 0, 0, 8, 56, 0, 0, 3, 72, 0, 0, 8, 56, 0, 0, 5, -/* 0x02b0 */ 72, 0, 0, 8, 56, 0, 0, 6, 72, 0, 0, 8, 56, 0, 0,125, -/* 0x02c0 */ 72, 0, 0, 8, 56, 0, 0, 91, 72, 0, 0, 8, 56, 0, 0, 45, -/* 0x02d0 */ 75,255,255,188,148, 33,255,208,124, 8, 2,166,147,225, 0, 44, -/* 0x02e0 */ 144, 1, 0, 52,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12, -/* 0x02f0 */ 144,191, 0, 16,129, 63, 0, 8,128, 9, 0, 4,144, 31, 0, 20, -/* 0x0300 */ 128, 31, 0, 12,144, 31, 0, 24,129, 63, 0, 8,129, 41, 0, 0, -/* 0x0310 */ 128, 31, 0, 16,127,137, 0, 64, 64,156, 0, 12, 56, 96, 0,127, -/* 0x0320 */ 75,255,255,125,128, 31, 0, 16,144, 31, 0, 28,129, 63, 0, 28, -/* 0x0330 */ 56, 9,255,255,124, 9, 3,120,145, 63, 0, 28, 56, 0,255,255, -/* 0x0340 */ 127,137, 0, 0, 65,158, 0, 48,129,127, 0, 24,129, 63, 0, 20, -/* 0x0350 */ 136, 9, 0, 0,152, 11, 0, 0,129, 63, 0, 20, 56, 9, 0, 1, -/* 0x0360 */ 144, 31, 0, 20,129, 63, 0, 24, 56, 9, 0, 1,144, 31, 0, 24, -/* 0x0370 */ 75,255,255,188,129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 4, -/* 0x0380 */ 128, 31, 0, 16,124, 9, 2, 20,144, 11, 0, 4,129,127, 0, 8, -/* 0x0390 */ 129, 63, 0, 8,129, 41, 0, 0,128, 31, 0, 16,124, 0, 72, 80, -/* 0x03a0 */ 144, 11, 0, 0,129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166, -/* 0x03b0 */ 131,235,255,252,125, 97, 91,120, 78,128, 0, 32,148, 33,255,176, -/* 0x03c0 */ 124, 8, 2,166,147,225, 0, 76,144, 1, 0, 84,124, 63, 11,120, -/* 0x03d0 */ 144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,144,223, 0, 20, -/* 0x03e0 */ 129, 63, 0, 12,128, 9, 0, 0, 47,128, 0, 0, 65,158, 1,192, -/* 0x03f0 */ 56, 31, 0, 32,128,127, 0, 8,124, 4, 3,120, 56,160, 0, 12, -/* 0x0400 */ 75,255,254,213,128, 31, 0, 32, 47,128, 0, 0, 64,158, 0, 48, -/* 0x0410 */ 128, 31, 0, 36, 61, 32, 33, 88, 97, 41, 80, 85,127,128, 72, 0, -/* 0x0420 */ 65,158, 0, 8, 72, 0, 0, 36,129, 63, 0, 8,128, 9, 0, 0, -/* 0x0430 */ 47,128, 0, 0, 65,158, 1,120, 72, 0, 0, 16,128, 31, 0, 36, -/* 0x0440 */ 47,128, 0, 0, 64,158, 0, 12, 56, 96, 0,127, 75,255,254, 81, -/* 0x0450 */ 128, 31, 0, 36,129, 63, 0, 32,127,128, 72, 64, 65,157,255,236, -/* 0x0460 */ 129, 63, 0, 12,129,127, 0, 32,128, 9, 0, 0,127,139, 0, 64, -/* 0x0470 */ 65,157,255,216,128, 31, 0, 36,129, 63, 0, 32,127,128, 72, 64, -/* 0x0480 */ 64,156, 0,228,128, 31, 0, 32,144, 31, 0, 48,129, 63, 0, 8, -/* 0x0490 */ 129,127, 0, 12, 57, 95, 0, 48,136, 31, 0, 40, 84, 0, 6, 62, -/* 0x04a0 */ 129, 31, 0, 16,125, 9, 3,166,128,105, 0, 4,128,159, 0, 36, -/* 0x04b0 */ 128,171, 0, 4,125, 70, 83,120,124, 7, 3,120, 78,128, 4, 33, -/* 0x04c0 */ 124, 96, 27,120,144, 31, 0, 52,128, 31, 0, 52, 47,128, 0, 0, -/* 0x04d0 */ 64,158,255,120,128, 31, 0, 32,129, 63, 0, 48,127,128, 72, 0, -/* 0x04e0 */ 64,158,255,104,136, 31, 0, 41, 84, 0, 6, 62, 47,128, 0, 0, -/* 0x04f0 */ 65,158, 0, 64,128, 31, 0, 20, 47,128, 0, 0, 65,158, 0, 52, -/* 0x0500 */ 129, 63, 0, 12,136, 31, 0, 42, 84, 11, 6, 62,136, 31, 0, 41, -/* 0x0510 */ 84, 0, 6, 62,129, 31, 0, 20,125, 9, 3,166,128,105, 0, 4, -/* 0x0520 */ 128,159, 0, 48,125,101, 91,120,124, 6, 3,120, 78,128, 4, 33, -/* 0x0530 */ 129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 4,128, 31, 0, 36, -/* 0x0540 */ 124, 9, 2, 20,144, 11, 0, 4,129,127, 0, 8,129, 63, 0, 8, -/* 0x0550 */ 129, 41, 0, 0,128, 31, 0, 36,124, 0, 72, 80,144, 11, 0, 0, -/* 0x0560 */ 72, 0, 0, 24,129, 63, 0, 12,128,127, 0, 8,128,137, 0, 4, -/* 0x0570 */ 128,191, 0, 36, 75,255,253, 97,129,127, 0, 12,129, 63, 0, 12, -/* 0x0580 */ 129, 41, 0, 4,128, 31, 0, 32,124, 9, 2, 20,144, 11, 0, 4, -/* 0x0590 */ 129,127, 0, 12,129, 63, 0, 12,129, 41, 0, 0,128, 31, 0, 32, -/* 0x05a0 */ 124, 0, 72, 80,144, 11, 0, 0, 75,255,254, 56,129, 97, 0, 0, -/* 0x05b0 */ 128, 11, 0, 4,124, 8, 3,166,131,235,255,252,125, 97, 91,120, -/* 0x05c0 */ 78,128, 0, 32,148, 33,255,224,147,225, 0, 28,124, 63, 11,120, -/* 0x05d0 */ 144,127, 0, 8,144,159, 0, 12,128, 31, 0, 12, 47,128, 0, 0, -/* 0x05e0 */ 65,158, 0, 52,129, 63, 0, 8,125, 43, 75,120, 56, 0, 0, 0, -/* 0x05f0 */ 152, 11, 0, 0, 57, 41, 0, 1,145, 63, 0, 8,129, 63, 0, 12, -/* 0x0600 */ 56, 9,255,255,144, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 8, -/* 0x0610 */ 75,255,255,212,129, 97, 0, 0,131,235,255,252,125, 97, 91,120, -/* 0x0620 */ 78,128, 0, 32,148, 33,255,224,147,225, 0, 28,124, 63, 11,120, -/* 0x0630 */ 144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,128, 31, 0, 8, -/* 0x0640 */ 47,128, 0, 0, 65,158, 0,100,129, 63, 0, 8,129, 41, 0, 0, -/* 0x0650 */ 128, 31, 0, 12,127,137, 0, 0, 65,158, 0, 36,129, 63, 0, 8, -/* 0x0660 */ 128, 9, 0, 0, 47,128, 0, 1, 64,158, 0, 48,128, 31, 0, 12, -/* 0x0670 */ 47,128, 0, 0, 64,158, 0, 8, 72, 0, 0, 32,129, 63, 0, 8, -/* 0x0680 */ 128, 31, 0, 12,144, 9, 0, 0,129, 63, 0, 8,128, 31, 0, 16, -/* 0x0690 */ 144, 9, 0, 4, 72, 0, 0, 20,129, 63, 0, 8, 56, 9, 0, 8, -/* 0x06a0 */ 144, 31, 0, 8, 75,255,255,164,129, 97, 0, 0,131,235,255,252, -/* 0x06b0 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,192,124, 8, 2,166, -/* 0x06c0 */ 147,225, 0, 60,144, 1, 0, 68,124, 63, 11,120,144,127, 0, 8, -/* 0x06d0 */ 144,159, 0, 12,144,191, 0, 16,144,223, 0, 20,144,255, 0, 24, -/* 0x06e0 */ 56, 0,255,255,144, 31, 0, 28, 56, 0, 0, 0,144, 31, 0, 32, -/* 0x06f0 */ 56, 0, 0, 0,144, 31, 0, 36,129, 63, 0, 8, 56, 9, 8, 34, -/* 0x0700 */ 144, 31, 0, 8,129, 63, 0, 16, 56, 9,255,255,144, 31, 0, 16, -/* 0x0710 */ 47,128, 0, 0, 65,156, 0,136,129, 63, 0, 12,128, 9, 0, 0, -/* 0x0720 */ 47,128, 0, 1, 64,158, 0,104,129, 63, 0, 12,129, 41, 0, 8, -/* 0x0730 */ 128, 31, 0, 28,127,137, 0, 64, 64,156, 0, 28,129, 63, 0, 12, -/* 0x0740 */ 128, 9, 0, 8,144, 31, 0, 28,129, 63, 0, 12,128, 9, 0, 16, -/* 0x0750 */ 144, 31, 0, 36,129, 63, 0, 12,129,127, 0, 12,129, 41, 0, 20, -/* 0x0760 */ 128, 11, 0, 8,125, 41, 2, 20,128, 31, 0, 32,127,137, 0, 64, -/* 0x0770 */ 64,157, 0, 28,129, 63, 0, 12,129,127, 0, 12,129, 41, 0, 20, -/* 0x0780 */ 128, 11, 0, 8,124, 9, 2, 20,144, 31, 0, 32,129, 63, 0, 12, -/* 0x0790 */ 56, 9, 0, 32,144, 31, 0, 12, 75,255,255,108,128, 31, 0, 24, -/* 0x07a0 */ 124, 9, 0,248,128, 31, 0, 28,125, 41, 0, 56,128, 31, 0, 36, -/* 0x07b0 */ 124, 0, 74, 20,144, 31, 0, 36,129, 63, 0, 28,128, 31, 0, 24, -/* 0x07c0 */ 125, 32, 0, 56,144, 31, 0, 28,129, 63, 0, 32,128, 31, 0, 28, -/* 0x07d0 */ 125, 32, 72, 80,128, 31, 0, 24,125, 32, 72, 80, 57, 41,255,255, -/* 0x07e0 */ 128, 31, 0, 24,125, 32, 0, 56,144, 31, 0, 32,129, 63, 0, 36, -/* 0x07f0 */ 128, 31, 0, 24,125, 32, 72, 80, 57, 41,255,255,128, 31, 0, 24, -/* 0x0800 */ 125, 32, 0, 56,144, 31, 0, 36,128,127, 0, 28,128,159, 0, 32, -/* 0x0810 */ 56,160, 0, 0,128,223, 0, 8, 56,224,255,255, 57, 0, 0, 0, -/* 0x0820 */ 75,255,250,105,144,127, 0, 40,129,127, 0, 20,129, 63, 0, 40, -/* 0x0830 */ 128, 31, 0, 32,124, 9, 2, 20,144, 11, 0, 0,129, 63, 0, 40, -/* 0x0840 */ 128, 31, 0, 28,124, 0, 72, 80,124, 3, 3,120,129, 97, 0, 0, -/* 0x0850 */ 128, 11, 0, 4,124, 8, 3,166,131,235,255,252,125, 97, 91,120, -/* 0x0860 */ 78,128, 0, 32,148, 33,255,144,124, 8, 2,166,147,225, 0,108, -/* 0x0870 */ 144, 1, 0,116,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12, -/* 0x0880 */ 144,191, 0, 16,144,223, 0, 20,144,255, 0, 24,145, 31, 0, 28, -/* 0x0890 */ 145, 63, 0, 32,145, 95, 0, 36,129, 63, 0, 8,129, 41, 0, 28, -/* 0x08a0 */ 128, 31, 0, 8,124, 9, 2, 20,144, 31, 0, 40,129, 63, 0, 8, -/* 0x08b0 */ 160, 9, 0, 16, 84, 0, 4, 62, 47,128, 0, 3, 65,158, 0, 16, -/* 0x08c0 */ 56, 0, 0, 16,144, 31, 0, 88, 72, 0, 0, 12, 57, 32, 0, 0, -/* 0x08d0 */ 145, 63, 0, 88,129, 63, 0, 8,160, 9, 0, 44, 84, 0, 4, 62, -/* 0x08e0 */ 57, 63, 0, 44,128,127, 0, 88,128,159, 0, 40,124, 5, 3,120, -/* 0x08f0 */ 125, 38, 75,120,128,255, 0, 36, 75,255,253,193,124, 96, 27,120, -/* 0x0900 */ 144, 31, 0, 48, 56, 0, 0, 0,144, 31, 0, 52,129, 63, 0, 8, -/* 0x0910 */ 160, 9, 0, 44, 84, 9, 4, 62,128, 31, 0, 52,127,137, 0, 0, -/* 0x0920 */ 64,157, 2,152,128, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 56, -/* 0x0930 */ 129, 63, 0, 40,128, 9, 0, 0, 47,128, 0, 6, 64,158, 0, 40, -/* 0x0940 */ 129, 63, 0, 40,129, 41, 0, 8,128, 31, 0, 48,124, 9, 2, 20, -/* 0x0950 */ 128,127, 0, 20, 56,128, 0, 3,124, 5, 3,120, 75,255,252,201, -/* 0x0960 */ 72, 0, 2, 60,129, 63, 0, 40,128, 9, 0, 0, 47,128, 0, 1, -/* 0x0970 */ 64,158, 2, 44,129, 63, 0, 40,128, 9, 0, 24, 84, 0, 7,126, -/* 0x0980 */ 84, 9, 16, 58, 60, 0,115, 81, 96, 0, 98, 64,124, 0, 76, 48, -/* 0x0990 */ 84, 0, 7,126,144, 31, 0, 56,129, 63, 0, 40,128, 9, 0, 16, -/* 0x09a0 */ 144, 31, 0, 64,144, 31, 0, 72,129, 63, 0, 40,129, 41, 0, 8, -/* 0x09b0 */ 128, 31, 0, 48,124, 9, 2, 20,144, 31, 0, 68,144, 31, 0, 76, -/* 0x09c0 */ 129, 63, 0, 40,129, 41, 0, 20,128, 31, 0, 76,124, 9, 2, 20, -/* 0x09d0 */ 144, 31, 0, 80,128, 31, 0, 36,124, 9, 0,248,128, 31, 0, 76, -/* 0x09e0 */ 125, 32, 0, 56,144, 31, 0, 84,129, 63, 0, 72,128, 31, 0, 84, -/* 0x09f0 */ 124, 9, 2, 20,144, 31, 0, 72,129, 63, 0, 76,128, 31, 0, 84, -/* 0x0a00 */ 124, 0, 72, 80,144, 31, 0, 76,128, 31, 0, 12,124, 11,254,112, -/* 0x0a10 */ 125,105, 2,120,125, 43, 72, 80,145, 63, 0, 92,128, 31, 0, 92, -/* 0x0a20 */ 124, 0, 0,208,144, 31, 0, 92,129, 63, 0, 92, 85, 41, 15,254, -/* 0x0a30 */ 145, 63, 0, 92,129,127, 0, 92, 85,107, 8, 60,145,127, 0, 92, -/* 0x0a40 */ 128, 31, 0, 56,129, 63, 0, 92,125, 41, 3,120,145, 63, 0, 92, -/* 0x0a50 */ 128, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 16, 57, 96, 0, 50, -/* 0x0a60 */ 145,127, 0, 96, 72, 0, 0, 12, 56, 0, 0, 18,144, 31, 0, 96, -/* 0x0a70 */ 128, 31, 0, 12, 47,128, 0, 0, 64,158, 0, 16,129, 63, 0, 16, -/* 0x0a80 */ 145, 63, 0,100, 72, 0, 0, 12, 57, 96,255,255,145,127, 0,100, -/* 0x0a90 */ 129, 63, 0, 40,129, 41, 0, 4,128, 31, 0, 84,124, 0, 72, 80, -/* 0x0aa0 */ 128,127, 0, 76,128,159, 0, 72,128,191, 0, 92,128,223, 0, 96, -/* 0x0ab0 */ 128,255, 0,100,124, 8, 3,120, 75,255,247,209,124,105, 27,120, -/* 0x0ac0 */ 128, 31, 0, 76,127,137, 0, 0, 65,158, 0, 8, 72, 0, 0,200, -/* 0x0ad0 */ 128, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 28, 56, 31, 0, 64, -/* 0x0ae0 */ 128,127, 0, 12,124, 4, 3,120,128,191, 0, 24,128,223, 0, 28, -/* 0x0af0 */ 75,255,248,205,128, 31, 0, 72,125, 32, 0,208,128, 31, 0, 36, -/* 0x0b00 */ 124, 0, 0,248,125, 32, 0, 56,144, 31, 0, 84,128, 31, 0, 56, -/* 0x0b10 */ 84, 0, 7,188, 47,128, 0, 0, 65,158, 0, 28,128, 31, 0, 76, -/* 0x0b20 */ 129, 63, 0, 72,124, 0, 74, 20,124, 3, 3,120,128,159, 0, 84, -/* 0x0b30 */ 75,255,250,149,129, 63, 0, 72,128, 31, 0, 84,125, 41, 2, 20, -/* 0x0b40 */ 128, 31, 0, 76,124, 0, 74, 20,144, 31, 0, 76,129, 63, 0, 76, -/* 0x0b50 */ 128, 31, 0, 80,127,137, 0, 64, 64,156, 0, 68,129, 63, 0, 80, -/* 0x0b60 */ 128, 31, 0, 76,124, 0, 72, 80,128,127, 0, 76,124, 4, 3,120, -/* 0x0b70 */ 128,191, 0, 56, 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, -/* 0x0b80 */ 75,255,247, 9,124,105, 27,120,128, 31, 0, 76,127,137, 0, 0, -/* 0x0b90 */ 65,158, 0, 12, 56, 96, 0,127, 75,255,247, 5,129, 63, 0, 40, -/* 0x0ba0 */ 56, 9, 0, 32,144, 31, 0, 40,129, 63, 0, 52, 56, 9, 0, 1, -/* 0x0bb0 */ 144, 31, 0, 52, 75,255,253, 88,128, 31, 0, 32, 47,128, 0, 0, -/* 0x0bc0 */ 65,158, 0, 16,129, 63, 0, 32,128, 31, 0, 48,144, 9, 0, 0, -/* 0x0bd0 */ 129, 63, 0, 8,129, 41, 0, 24,128, 31, 0, 48,124, 9, 2, 20, -/* 0x0be0 */ 124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166, -/* 0x0bf0 */ 131,235,255,252,125, 97, 91,120, 78,128, 0, 32,148, 33,255,144, -/* 0x0c00 */ 124, 8, 2,166,147,225, 0,108,144, 1, 0,116,124, 63, 11,120, -/* 0x0c10 */ 144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,144,223, 0, 20, -/* 0x0c20 */ 144,255, 0, 24,145, 31, 0, 28,145, 63, 0, 32,145, 95, 0, 36, -/* 0x0c30 */ 128, 31, 0, 36,124, 0, 0,208,144, 31, 0, 40,128, 31, 0, 36, -/* 0x0c40 */ 47,128, 16, 0, 65,158, 0, 28,128, 31, 0, 36, 61, 32, 0, 1, -/* 0x0c50 */ 127,128, 72, 0, 65,158, 0, 12, 56, 96, 0,232, 75,255,246, 65, -/* 0x0c60 */ 129, 63, 0, 16, 56, 9, 0, 52,144, 31, 0, 44,128, 31, 0, 16, -/* 0x0c70 */ 144, 31, 0, 52,129, 63, 0, 8,128, 9, 0, 0,144, 31, 0, 48, -/* 0x0c80 */ 128, 31, 0, 8,144, 31, 0, 68,128, 31, 0, 12,144, 31, 0, 64, -/* 0x0c90 */ 128, 31, 0, 8,144, 31, 0, 60,128, 31, 0, 12,144, 31, 0, 56, -/* 0x0ca0 */ 56, 31, 0, 64, 57, 63, 0, 48,124, 3, 3,120,125, 36, 75,120, -/* 0x0cb0 */ 128,191, 0, 24, 56,192, 0, 0, 75,255,247, 5,129, 63, 0, 44, -/* 0x0cc0 */ 128,127, 0, 32, 56,128, 0, 3,128,169, 0, 8, 75,255,249, 89, -/* 0x0cd0 */ 129, 63, 0, 16,160, 9, 0, 44, 84, 0, 4, 62,128,127, 0, 32, -/* 0x0ce0 */ 56,128, 0, 5,124, 5, 3,120, 75,255,249, 61,129, 63, 0, 16, -/* 0x0cf0 */ 160, 9, 0, 16, 84, 0, 4, 62,144, 31, 0, 72,128, 31, 0, 72, -/* 0x0d00 */ 47,128, 0, 3, 64,158, 0,168,129, 63, 0, 16, 56, 0, 0, 2, -/* 0x0d10 */ 176, 9, 0, 16,129, 63, 0, 16,129, 41, 0, 24,128, 31, 0,120, -/* 0x0d20 */ 124, 9, 2, 20,128,127, 0, 32, 56,128, 0, 9,124, 5, 3,120, -/* 0x0d30 */ 75,255,248,245,129, 63, 0, 16, 56, 9, 0, 52,144, 31, 0, 44, -/* 0x0d40 */ 56, 0, 0, 0,144, 31, 0, 76,129, 63, 0, 16,160, 9, 0, 44, -/* 0x0d50 */ 84, 9, 4, 62,128, 31, 0, 76,127,137, 0, 64, 64,157, 0, 80, -/* 0x0d60 */ 129,127, 0, 44,129, 63, 0, 44,129, 41, 0, 8,128, 31, 0,120, -/* 0x0d70 */ 124, 9, 2, 20,144, 11, 0, 8,129,127, 0, 44,129, 63, 0, 44, -/* 0x0d80 */ 129, 41, 0, 12,128, 31, 0,120,124, 9, 2, 20,144, 11, 0, 12, -/* 0x0d90 */ 129, 63, 0, 44, 56, 9, 0, 32,144, 31, 0, 44,129, 63, 0, 76, -/* 0x0da0 */ 56, 9, 0, 1,144, 31, 0, 76, 75,255,255,160, 56, 31, 0, 56, -/* 0x0db0 */ 128,127, 0, 16,124, 4, 3,120, 56,160, 0, 0,128,223, 0, 32, -/* 0x0dc0 */ 128,255, 0, 24,129, 31, 0, 28, 57, 63, 0,120,129, 95, 0, 40, -/* 0x0dd0 */ 75,255,250,149,124, 96, 27,120,144, 31, 0, 76,128, 31, 0, 72, -/* 0x0de0 */ 47,128, 0, 3, 65,158, 0, 20,128,127, 0, 32, 56,128, 0, 9, -/* 0x0df0 */ 128,191, 0, 76, 75,255,248, 49, 56, 0, 0, 0,144, 31, 0, 80, -/* 0x0e00 */ 129, 63, 0, 16,160, 9, 0, 44, 84, 9, 4, 62,128, 31, 0, 80, -/* 0x0e10 */ 127,137, 0, 0, 64,157, 0,196,129, 63, 0, 44,128, 9, 0, 0, -/* 0x0e20 */ 47,128, 0, 3, 64,158, 0,152,129, 63, 0, 44,129, 41, 0, 8, -/* 0x0e30 */ 128, 31, 0,120,124, 9, 2, 20,144, 31, 0, 84,128,127, 0, 84, -/* 0x0e40 */ 56,128, 0, 0, 56,160, 0, 0, 75,255,244,101,124, 96, 27,120, -/* 0x0e50 */ 144, 31, 0, 88,128, 31, 0, 88, 47,128, 0, 0, 64,156, 0, 8, -/* 0x0e60 */ 72, 0, 0, 32,128,127, 0, 88,128,159, 0, 16, 56,160, 2, 0, -/* 0x0e70 */ 75,255,244, 53,124, 96, 27,120, 47,128, 2, 0, 65,158, 0, 12, -/* 0x0e80 */ 56, 96, 0,127, 75,255,244, 25,128,127, 0, 16, 56,128, 0, 0, -/* 0x0e90 */ 128,191, 0, 88, 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, -/* 0x0ea0 */ 57, 32, 0, 0,129, 95, 0, 40, 75,255,249,189,124, 96, 27,120, -/* 0x0eb0 */ 144, 31, 0, 76,128,127, 0, 88, 75,255,243,253,129, 63, 0, 44, -/* 0x0ec0 */ 56, 9, 0, 32,144, 31, 0, 44,129, 63, 0, 80, 56, 9, 0, 1, -/* 0x0ed0 */ 144, 31, 0, 80, 75,255,255, 44,128, 31, 0, 76,124, 3, 3,120, -/* 0x0ee0 */ 129, 97, 0, 0,128, 11, 0, 4,124, 8, 3,166,131,235,255,252, -/* 0x0ef0 */ 125, 97, 91,120, 78,128, 0, 32 +/* 0x0100 */ 56,128, 0, 0, 56,117, 0,104, 72, 0, 1,157,124,116, 27,120, +/* 0x0110 */ 56,129,255,252, 56, 33,239,252, 56, 97,255,252, 59,156,255,252, +/* 0x0120 */ 132, 4, 0, 4,127,132,224, 64,148, 3, 0, 4, 65,156,255,244, +/* 0x0130 */ 59,131, 0, 8,148, 3, 0, 4,128, 4, 0, 4, 43,128, 0, 0, +/* 0x0140 */ 144, 3, 0, 4,132, 4, 0, 8,148, 3, 0, 8, 64,158,255,236, +/* 0x0150 */ 58, 99, 0, 4,126, 92,152, 80,128, 21, 0,100, 58, 36, 0, 4, +/* 0x0160 */ 148, 3, 0, 4, 57,195, 0, 4, 56,160, 15,255,125,196,115,120, +/* 0x0170 */ 56,117, 0,104, 72, 0, 1, 33, 56,174,255,252, 44, 3, 0, 0, +/* 0x0180 */ 65,129, 0, 12, 56,181, 0,100, 56, 96, 0, 16, 56, 99, 0, 4, +/* 0x0190 */ 124,133, 26, 20,124,105, 3,166,126, 35,139,120, 56,160, 0, 0, +/* 0x01a0 */ 156,163,255,255,140, 4,255,255,156, 3,255,255, 66, 0,255,248, +/* 0x01b0 */ 144,124,255,248, 84, 99, 0, 58,124, 32, 34,120,124, 0, 26,120, +/* 0x01c0 */ 84, 0, 7,122,124, 96, 24, 80,126,100,155,120,127,146, 24, 80, +/* 0x01d0 */ 132, 4,255,252,127,132, 8, 64,148, 3,255,252, 65,157,255,244, +/* 0x01e0 */ 124, 97, 27,120, 56, 0, 0, 0, 57, 65, 0,140,146,202, 0, 0, +/* 0x01f0 */ 124, 27, 0, 80,127,106,219,120,127,137,227,120,126,168,171,120, +/* 0x0200 */ 125, 30, 0, 56,127,231,251,120,148, 33,247,240,128,159,255,248, +/* 0x0210 */ 127,164,248, 80, 59,189,255,248,147,161, 0, 8,124,125,210, 20, +/* 0x0220 */ 124,154, 32, 80, 56,161, 0, 16,128,195, 0, 0, 72, 0, 10, 21, +/* 0x0230 */ 56, 33, 8, 16,124,127, 27,120, 57, 0, 0, 0,126,135,163,120, +/* 0x0240 */ 56,192, 0, 2, 56,160, 0, 1,127,100,219,120, 56, 96, 0, 0, +/* 0x0250 */ 72, 0, 0, 41,126,131,163,120, 72, 0, 0, 85,127, 3,195,120, +/* 0x0260 */ 126,228,187,120, 72, 0, 0, 89,127,232, 3,166,184, 65, 0, 20, +/* 0x0270 */ 56, 33, 0,144, 78,128, 0, 32, 56, 0, 0, 90, 68, 0, 0, 2, +/* 0x0280 */ 64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, +/* 0x0290 */ 72, 0, 0, 8, 56, 0, 0, 85, 72, 0, 0, 8, 56, 0, 0, 3, +/* 0x02a0 */ 72, 0, 0, 8, 56, 0, 0, 5, 72, 0, 0, 8, 56, 0, 0, 6, +/* 0x02b0 */ 72, 0, 0, 8, 56, 0, 0,125, 72, 0, 0, 8, 56, 0, 0, 91, +/* 0x02c0 */ 72, 0, 0, 8, 56, 0, 0, 45, 75,255,255,180,148, 33,255,208, +/* 0x02d0 */ 124, 8, 2,166,147,225, 0, 44,144, 1, 0, 52,124, 63, 11,120, +/* 0x02e0 */ 144,127, 0, 8,144,159, 0, 12,144,191, 0, 16,129, 63, 0, 8, +/* 0x02f0 */ 128, 9, 0, 4,144, 31, 0, 20,128, 31, 0, 12,144, 31, 0, 24, +/* 0x0300 */ 129, 63, 0, 8,129, 41, 0, 0,128, 31, 0, 16,127,137, 0, 64, +/* 0x0310 */ 64,156, 0, 12, 56, 96, 0,127, 75,255,255,117,128, 31, 0, 16, +/* 0x0320 */ 144, 31, 0, 28,129, 63, 0, 28, 56, 9,255,255,124, 9, 3,120, +/* 0x0330 */ 145, 63, 0, 28, 56, 0,255,255,127,137, 0, 0, 65,158, 0, 48, +/* 0x0340 */ 129,127, 0, 24,129, 63, 0, 20,136, 9, 0, 0,152, 11, 0, 0, +/* 0x0350 */ 129, 63, 0, 20, 56, 9, 0, 1,144, 31, 0, 20,129, 63, 0, 24, +/* 0x0360 */ 56, 9, 0, 1,144, 31, 0, 24, 75,255,255,188,129,127, 0, 8, +/* 0x0370 */ 129, 63, 0, 8,129, 41, 0, 4,128, 31, 0, 16,124, 9, 2, 20, +/* 0x0380 */ 144, 11, 0, 4,129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 0, +/* 0x0390 */ 128, 31, 0, 16,124, 0, 72, 80,144, 11, 0, 0,129, 97, 0, 0, +/* 0x03a0 */ 128, 11, 0, 4,124, 8, 3,166,131,235,255,252,125, 97, 91,120, +/* 0x03b0 */ 78,128, 0, 32,148, 33,255,224,124, 8, 2,166,147,225, 0, 28, +/* 0x03c0 */ 144, 1, 0, 36,124, 63, 11,120,144,127, 0, 8, 56, 96, 0,127, +/* 0x03d0 */ 75,255,254,189,148, 33,255,176,124, 8, 2,166,147,225, 0, 76, +/* 0x03e0 */ 144, 1, 0, 84,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12, +/* 0x03f0 */ 144,191, 0, 16,144,223, 0, 20,129, 63, 0, 12,128, 9, 0, 0, +/* 0x0400 */ 47,128, 0, 0, 65,158, 1,228, 56, 31, 0, 32,128,127, 0, 8, +/* 0x0410 */ 124, 4, 3,120, 56,160, 0, 12, 75,255,254,181,128, 31, 0, 32, +/* 0x0420 */ 47,128, 0, 0, 64,158, 0, 60,128, 31, 0, 36, 61, 32, 33, 88, +/* 0x0430 */ 97, 41, 80, 85,127,128, 72, 0, 65,158, 0, 12, 56, 96, 0, 2, +/* 0x0440 */ 75,255,255,117,129, 63, 0, 8,128, 9, 0, 0, 47,128, 0, 0, +/* 0x0450 */ 65,158, 1,152, 56, 96, 0, 3, 75,255,255, 93, 72, 0, 1,140, +/* 0x0460 */ 128, 31, 0, 36, 47,128, 0, 0, 64,158, 0, 12, 56, 96, 0, 4, +/* 0x0470 */ 75,255,255, 69,128, 31, 0, 36,129, 63, 0, 32,127,128, 72, 64, +/* 0x0480 */ 65,157, 0, 28,129, 63, 0, 12,129,127, 0, 32,128, 9, 0, 0, +/* 0x0490 */ 127,139, 0, 64, 65,157, 0, 8, 72, 0, 0, 12, 56, 96, 0, 5, +/* 0x04a0 */ 75,255,255, 21,128, 31, 0, 36,129, 63, 0, 32,127,128, 72, 64, +/* 0x04b0 */ 64,156, 0,240,128, 31, 0, 32,144, 31, 0, 48,129, 63, 0, 8, +/* 0x04c0 */ 129,127, 0, 12, 57, 95, 0, 48,136, 31, 0, 40, 84, 0, 6, 62, +/* 0x04d0 */ 129, 31, 0, 16,125, 9, 3,166,128,105, 0, 4,128,159, 0, 36, +/* 0x04e0 */ 128,171, 0, 4,125, 70, 83,120,124, 7, 3,120, 78,128, 4, 33, +/* 0x04f0 */ 124, 96, 27,120,144, 31, 0, 52,128, 31, 0, 52, 47,128, 0, 0, +/* 0x0500 */ 64,158, 0, 24,128, 31, 0, 32,129, 63, 0, 48,127,128, 72, 0, +/* 0x0510 */ 64,158, 0, 8, 72, 0, 0, 12, 56, 96, 0, 7, 75,255,254,153, +/* 0x0520 */ 136, 31, 0, 41, 84, 0, 6, 62, 47,128, 0, 0, 65,158, 0, 64, +/* 0x0530 */ 128, 31, 0, 20, 47,128, 0, 0, 65,158, 0, 52,129, 63, 0, 12, +/* 0x0540 */ 136, 31, 0, 42, 84, 11, 6, 62,136, 31, 0, 41, 84, 0, 6, 62, +/* 0x0550 */ 129, 31, 0, 20,125, 9, 3,166,128,105, 0, 4,128,159, 0, 48, +/* 0x0560 */ 125,101, 91,120,124, 6, 3,120, 78,128, 4, 33,129,127, 0, 8, +/* 0x0570 */ 129, 63, 0, 8,129, 41, 0, 4,128, 31, 0, 36,124, 9, 2, 20, +/* 0x0580 */ 144, 11, 0, 4,129,127, 0, 8,129, 63, 0, 8,129, 41, 0, 0, +/* 0x0590 */ 128, 31, 0, 36,124, 0, 72, 80,144, 11, 0, 0, 72, 0, 0, 24, +/* 0x05a0 */ 129, 63, 0, 12,128,127, 0, 8,128,137, 0, 4,128,191, 0, 36, +/* 0x05b0 */ 75,255,253, 29,129,127, 0, 12,129, 63, 0, 12,129, 41, 0, 4, +/* 0x05c0 */ 128, 31, 0, 32,124, 9, 2, 20,144, 11, 0, 4,129,127, 0, 12, +/* 0x05d0 */ 129, 63, 0, 12,129, 41, 0, 0,128, 31, 0, 32,124, 0, 72, 80, +/* 0x05e0 */ 144, 11, 0, 0, 75,255,254, 20,129, 97, 0, 0,128, 11, 0, 4, +/* 0x05f0 */ 124, 8, 3,166,131,235,255,252,125, 97, 91,120, 78,128, 0, 32, +/* 0x0600 */ 148, 33,255,224,147,225, 0, 28,124, 63, 11,120,144,127, 0, 8, +/* 0x0610 */ 144,159, 0, 12,128, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 52, +/* 0x0620 */ 129, 63, 0, 8,125, 43, 75,120, 56, 0, 0, 0,152, 11, 0, 0, +/* 0x0630 */ 57, 41, 0, 1,145, 63, 0, 8,129, 63, 0, 12, 56, 9,255,255, +/* 0x0640 */ 144, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 8, 75,255,255,212, +/* 0x0650 */ 129, 97, 0, 0,131,235,255,252,125, 97, 91,120, 78,128, 0, 32, +/* 0x0660 */ 148, 33,255,224,147,225, 0, 28,124, 63, 11,120,144,127, 0, 8, +/* 0x0670 */ 144,159, 0, 12,144,191, 0, 16,128, 31, 0, 8, 47,128, 0, 0, +/* 0x0680 */ 64,158, 0, 8, 72, 0, 0,100,129, 63, 0, 8,129, 41, 0, 0, +/* 0x0690 */ 128, 31, 0, 12,127,137, 0, 0, 65,158, 0, 36,129, 63, 0, 8, +/* 0x06a0 */ 128, 9, 0, 0, 47,128, 0, 1, 64,158, 0, 48,128, 31, 0, 12, +/* 0x06b0 */ 47,128, 0, 0, 64,158, 0, 8, 72, 0, 0, 32,129, 63, 0, 8, +/* 0x06c0 */ 128, 31, 0, 12,144, 9, 0, 0,129, 63, 0, 8,128, 31, 0, 16, +/* 0x06d0 */ 144, 9, 0, 4, 72, 0, 0, 20,129, 63, 0, 8, 56, 9, 0, 8, +/* 0x06e0 */ 144, 31, 0, 8, 75,255,255,164,129, 97, 0, 0,131,235,255,252, +/* 0x06f0 */ 125, 97, 91,120, 78,128, 0, 32,148, 33,255,192,124, 8, 2,166, +/* 0x0700 */ 147,225, 0, 60,144, 1, 0, 68,124, 63, 11,120,144,127, 0, 8, +/* 0x0710 */ 144,159, 0, 12,144,191, 0, 16,144,223, 0, 20,144,255, 0, 24, +/* 0x0720 */ 56, 0,255,255,144, 31, 0, 28, 56, 0, 0, 0,144, 31, 0, 32, +/* 0x0730 */ 56, 0, 0, 0,144, 31, 0, 36,129, 63, 0, 8, 56, 9, 8, 34, +/* 0x0740 */ 144, 31, 0, 8,129, 63, 0, 16, 56, 9,255,255,144, 31, 0, 16, +/* 0x0750 */ 47,128, 0, 0, 65,156, 0,136,129, 63, 0, 12,128, 9, 0, 0, +/* 0x0760 */ 47,128, 0, 1, 64,158, 0,104,129, 63, 0, 12,129, 41, 0, 8, +/* 0x0770 */ 128, 31, 0, 28,127,137, 0, 64, 64,156, 0, 28,129, 63, 0, 12, +/* 0x0780 */ 128, 9, 0, 8,144, 31, 0, 28,129, 63, 0, 12,128, 9, 0, 16, +/* 0x0790 */ 144, 31, 0, 36,129, 63, 0, 12,129,127, 0, 12,129, 41, 0, 20, +/* 0x07a0 */ 128, 11, 0, 8,125, 41, 2, 20,128, 31, 0, 32,127,137, 0, 64, +/* 0x07b0 */ 64,157, 0, 28,129, 63, 0, 12,129,127, 0, 12,129, 41, 0, 20, +/* 0x07c0 */ 128, 11, 0, 8,124, 9, 2, 20,144, 31, 0, 32,129, 63, 0, 12, +/* 0x07d0 */ 56, 9, 0, 32,144, 31, 0, 12, 75,255,255,108,128, 31, 0, 24, +/* 0x07e0 */ 124, 9, 0,248,128, 31, 0, 28,125, 41, 0, 56,128, 31, 0, 36, +/* 0x07f0 */ 124, 0, 74, 20,144, 31, 0, 36,129, 63, 0, 28,128, 31, 0, 24, +/* 0x0800 */ 125, 32, 0, 56,144, 31, 0, 28,129, 63, 0, 32,128, 31, 0, 28, +/* 0x0810 */ 125, 32, 72, 80,128, 31, 0, 24,125, 32, 72, 80, 57, 41,255,255, +/* 0x0820 */ 128, 31, 0, 24,125, 32, 0, 56,144, 31, 0, 32,129, 63, 0, 36, +/* 0x0830 */ 128, 31, 0, 24,125, 32, 72, 80, 57, 41,255,255,128, 31, 0, 24, +/* 0x0840 */ 125, 32, 0, 56,144, 31, 0, 36,128,127, 0, 28,128,159, 0, 32, +/* 0x0850 */ 56,160, 0, 0,128,223, 0, 8, 56,224,255,255, 57, 0, 0, 0, +/* 0x0860 */ 75,255,250, 25,144,127, 0, 40,129,127, 0, 20,129, 63, 0, 40, +/* 0x0870 */ 128, 31, 0, 32,124, 9, 2, 20,144, 11, 0, 0,129, 63, 0, 40, +/* 0x0880 */ 128, 31, 0, 28,124, 0, 72, 80,124, 3, 3,120,129, 97, 0, 0, +/* 0x0890 */ 128, 11, 0, 4,124, 8, 3,166,131,235,255,252,125, 97, 91,120, +/* 0x08a0 */ 78,128, 0, 32,148, 33,255,144,124, 8, 2,166,147,225, 0,108, +/* 0x08b0 */ 144, 1, 0,116,124, 63, 11,120,144,127, 0, 8,144,159, 0, 12, +/* 0x08c0 */ 144,191, 0, 16,144,223, 0, 20,144,255, 0, 24,145, 31, 0, 28, +/* 0x08d0 */ 145, 63, 0, 32,145, 95, 0, 36,129, 63, 0, 8,129, 41, 0, 28, +/* 0x08e0 */ 128, 31, 0, 8,124, 9, 2, 20,144, 31, 0, 40,129, 63, 0, 8, +/* 0x08f0 */ 160, 9, 0, 16, 84, 0, 4, 62, 47,128, 0, 3, 65,158, 0, 16, +/* 0x0900 */ 56, 0, 0, 16,144, 31, 0, 88, 72, 0, 0, 12, 57, 32, 0, 0, +/* 0x0910 */ 145, 63, 0, 88,129, 63, 0, 8,160, 9, 0, 44, 84, 0, 4, 62, +/* 0x0920 */ 57, 63, 0, 44,128,127, 0, 88,128,159, 0, 40,124, 5, 3,120, +/* 0x0930 */ 125, 38, 75,120,128,255, 0, 36, 75,255,253,193,124, 96, 27,120, +/* 0x0940 */ 144, 31, 0, 48, 56, 0, 0, 0,144, 31, 0, 52,129, 63, 0, 8, +/* 0x0950 */ 160, 9, 0, 44, 84, 9, 4, 62,128, 31, 0, 52,127,137, 0, 0, +/* 0x0960 */ 64,157, 2,156,128, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 56, +/* 0x0970 */ 129, 63, 0, 40,128, 9, 0, 0, 47,128, 0, 6, 64,158, 0, 40, +/* 0x0980 */ 129, 63, 0, 40,129, 41, 0, 8,128, 31, 0, 48,124, 9, 2, 20, +/* 0x0990 */ 128,127, 0, 20, 56,128, 0, 3,124, 5, 3,120, 75,255,252,197, +/* 0x09a0 */ 72, 0, 2, 64,129, 63, 0, 40,128, 9, 0, 0, 47,128, 0, 1, +/* 0x09b0 */ 64,158, 2, 48,129, 63, 0, 40,128, 9, 0, 24, 84, 0, 7,126, +/* 0x09c0 */ 84, 9, 16, 58, 60, 0,115, 81, 96, 0, 98, 64,124, 0, 76, 48, +/* 0x09d0 */ 84, 0, 7,126,144, 31, 0, 56,129, 63, 0, 40,128, 9, 0, 16, +/* 0x09e0 */ 144, 31, 0, 64,144, 31, 0, 72,129, 63, 0, 40,129, 41, 0, 8, +/* 0x09f0 */ 128, 31, 0, 48,124, 9, 2, 20,144, 31, 0, 68,144, 31, 0, 76, +/* 0x0a00 */ 129, 63, 0, 40,129, 41, 0, 20,128, 31, 0, 76,124, 9, 2, 20, +/* 0x0a10 */ 144, 31, 0, 80,128, 31, 0, 36,124, 9, 0,248,128, 31, 0, 76, +/* 0x0a20 */ 125, 32, 0, 56,144, 31, 0, 84,129, 63, 0, 72,128, 31, 0, 84, +/* 0x0a30 */ 124, 9, 2, 20,144, 31, 0, 72,129, 63, 0, 76,128, 31, 0, 84, +/* 0x0a40 */ 124, 0, 72, 80,144, 31, 0, 76,128, 31, 0, 12,124, 11,254,112, +/* 0x0a50 */ 125,105, 2,120,125, 43, 72, 80,145, 63, 0, 92,128, 31, 0, 92, +/* 0x0a60 */ 124, 0, 0,208,144, 31, 0, 92,129, 63, 0, 92, 85, 41, 15,254, +/* 0x0a70 */ 145, 63, 0, 92,129,127, 0, 92, 85,107, 8, 60,145,127, 0, 92, +/* 0x0a80 */ 128, 31, 0, 56,129, 63, 0, 92,125, 41, 3,120,145, 63, 0, 92, +/* 0x0a90 */ 128, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 16, 57, 96, 0, 50, +/* 0x0aa0 */ 145,127, 0, 96, 72, 0, 0, 12, 56, 0, 0, 18,144, 31, 0, 96, +/* 0x0ab0 */ 128, 31, 0, 12, 47,128, 0, 0, 64,158, 0, 16,129, 63, 0, 16, +/* 0x0ac0 */ 145, 63, 0,100, 72, 0, 0, 12, 57, 96,255,255,145,127, 0,100, +/* 0x0ad0 */ 129, 63, 0, 40,129, 41, 0, 4,128, 31, 0, 84,124, 0, 72, 80, +/* 0x0ae0 */ 128,127, 0, 76,128,159, 0, 72,128,191, 0, 92,128,223, 0, 96, +/* 0x0af0 */ 128,255, 0,100,124, 8, 3,120, 75,255,247,129,124,105, 27,120, +/* 0x0b00 */ 128, 31, 0, 76,127,137, 0, 0, 65,158, 0, 12, 56, 96, 0, 8, +/* 0x0b10 */ 75,255,248,165,128, 31, 0, 12, 47,128, 0, 0, 65,158, 0, 28, +/* 0x0b20 */ 56, 31, 0, 64,128,127, 0, 12,124, 4, 3,120,128,191, 0, 24, +/* 0x0b30 */ 128,223, 0, 28, 75,255,248,161,128, 31, 0, 72,125, 32, 0,208, +/* 0x0b40 */ 128, 31, 0, 36,124, 0, 0,248,125, 32, 0, 56,144, 31, 0, 84, +/* 0x0b50 */ 128, 31, 0, 56, 84, 0, 7,188, 47,128, 0, 0, 65,158, 0, 28, +/* 0x0b60 */ 128, 31, 0, 76,129, 63, 0, 72,124, 0, 74, 20,124, 3, 3,120, +/* 0x0b70 */ 128,159, 0, 84, 75,255,250,141,129, 63, 0, 72,128, 31, 0, 84, +/* 0x0b80 */ 125, 41, 2, 20,128, 31, 0, 76,124, 0, 74, 20,144, 31, 0, 76, +/* 0x0b90 */ 129, 63, 0, 76,128, 31, 0, 80,127,137, 0, 64, 64,156, 0, 68, +/* 0x0ba0 */ 129, 63, 0, 80,128, 31, 0, 76,124, 0, 72, 80,128,127, 0, 76, +/* 0x0bb0 */ 124, 4, 3,120,128,191, 0, 56, 56,192, 0, 50, 56,224,255,255, +/* 0x0bc0 */ 57, 0, 0, 0, 75,255,246,181,124,105, 27,120,128, 31, 0, 76, +/* 0x0bd0 */ 127,137, 0, 0, 65,158, 0, 12, 56, 96, 0, 9, 75,255,247,217, +/* 0x0be0 */ 129, 63, 0, 40, 56, 9, 0, 32,144, 31, 0, 40,129, 63, 0, 52, +/* 0x0bf0 */ 56, 9, 0, 1,144, 31, 0, 52, 75,255,253, 84,128, 31, 0, 32, +/* 0x0c00 */ 47,128, 0, 0, 65,158, 0, 16,129, 63, 0, 32,128, 31, 0, 48, +/* 0x0c10 */ 144, 9, 0, 0,129, 63, 0, 8,129, 41, 0, 24,128, 31, 0, 48, +/* 0x0c20 */ 124, 9, 2, 20,124, 3, 3,120,129, 97, 0, 0,128, 11, 0, 4, +/* 0x0c30 */ 124, 8, 3,166,131,235,255,252,125, 97, 91,120, 78,128, 0, 32, +/* 0x0c40 */ 148, 33,255,144,124, 8, 2,166,147,225, 0,108,144, 1, 0,116, +/* 0x0c50 */ 124, 63, 11,120,144,127, 0, 8,144,159, 0, 12,144,191, 0, 16, +/* 0x0c60 */ 144,223, 0, 20,144,255, 0, 24,145, 31, 0, 28,145, 63, 0, 32, +/* 0x0c70 */ 145, 95, 0, 36,128, 31, 0, 36,124, 0, 0,208,144, 31, 0, 40, +/* 0x0c80 */ 128, 31, 0, 36, 47,128, 16, 0, 65,158, 0, 28,128, 31, 0, 36, +/* 0x0c90 */ 61, 32, 0, 1,127,128, 72, 0, 65,158, 0, 12, 56, 96, 0,232, +/* 0x0ca0 */ 75,255,245,237,128, 31, 0, 16,144, 31, 0, 52,129, 63, 0, 8, +/* 0x0cb0 */ 128, 9, 0, 0,144, 31, 0, 48,128, 31, 0, 8,144, 31, 0, 68, +/* 0x0cc0 */ 128, 31, 0, 12,144, 31, 0, 64,128, 31, 0, 8,144, 31, 0, 60, +/* 0x0cd0 */ 128, 31, 0, 12,144, 31, 0, 56, 56, 31, 0, 64, 57, 63, 0, 48, +/* 0x0ce0 */ 124, 3, 3,120,125, 36, 75,120,128,191, 0, 24, 56,192, 0, 0, +/* 0x0cf0 */ 75,255,246,229,129, 63, 0, 16,129, 41, 0, 28,128, 31, 0,120, +/* 0x0d00 */ 124, 9, 2, 20,128,127, 0, 32, 56,128, 0, 3,124, 5, 3,120, +/* 0x0d10 */ 75,255,249, 81,129, 63, 0, 16,160, 9, 0, 44, 84, 0, 4, 62, +/* 0x0d20 */ 128,127, 0, 32, 56,128, 0, 5,124, 5, 3,120, 75,255,249, 53, +/* 0x0d30 */ 129, 63, 0, 16, 56, 9, 0, 52,144, 31, 0, 72,129, 63, 0, 16, +/* 0x0d40 */ 160, 9, 0, 16, 84, 0, 4, 62,144, 31, 0, 76,128, 31, 0, 76, +/* 0x0d50 */ 47,128, 0, 3, 64,158, 0,164,129, 63, 0, 16, 56, 0, 0, 2, +/* 0x0d60 */ 176, 9, 0, 16,129,127, 0, 16,129, 63, 0, 16,129, 41, 0, 24, +/* 0x0d70 */ 128, 31, 0,120,124, 9, 2, 20,144, 11, 0, 24,128,127, 0, 32, +/* 0x0d80 */ 56,128, 0, 9,124, 5, 3,120, 75,255,248,217, 56, 0, 0, 0, +/* 0x0d90 */ 144, 31, 0, 80,129, 63, 0, 16,160, 9, 0, 44, 84, 9, 4, 62, +/* 0x0da0 */ 128, 31, 0, 80,127,137, 0, 64, 64,157, 0, 80,129,127, 0, 72, +/* 0x0db0 */ 129, 63, 0, 72,129, 41, 0, 8,128, 31, 0,120,124, 9, 2, 20, +/* 0x0dc0 */ 144, 11, 0, 8,129,127, 0, 72,129, 63, 0, 72,129, 41, 0, 12, +/* 0x0dd0 */ 128, 31, 0,120,124, 9, 2, 20,144, 11, 0, 12,129, 63, 0, 72, +/* 0x0de0 */ 56, 9, 0, 32,144, 31, 0, 72,129, 63, 0, 80, 56, 9, 0, 1, +/* 0x0df0 */ 144, 31, 0, 80, 75,255,255,160, 56, 31, 0, 56,128,127, 0, 16, +/* 0x0e00 */ 124, 4, 3,120, 56,160, 0, 0,128,223, 0, 32,128,255, 0, 24, +/* 0x0e10 */ 129, 31, 0, 28, 57, 63, 0,120,129, 95, 0, 40, 75,255,250,137, +/* 0x0e20 */ 124, 96, 27,120,144, 31, 0, 80,128, 31, 0, 76, 47,128, 0, 3, +/* 0x0e30 */ 65,158, 0, 20,128,127, 0, 32, 56,128, 0, 9,128,191, 0, 80, +/* 0x0e40 */ 75,255,248, 33,129, 63, 0, 16, 56, 9, 0, 52,144, 31, 0, 72, +/* 0x0e50 */ 56, 0, 0, 0,144, 31, 0, 84,129, 63, 0, 16,160, 9, 0, 44, +/* 0x0e60 */ 84, 9, 4, 62,128, 31, 0, 84,127,137, 0, 64, 64,157, 0,216, +/* 0x0e70 */ 129, 63, 0, 72,128, 9, 0, 0, 47,128, 0, 3, 64,158, 0,172, +/* 0x0e80 */ 129, 63, 0, 72,129, 41, 0, 8,128, 31, 0,120,124, 9, 2, 20, +/* 0x0e90 */ 144, 31, 0, 88,128,127, 0, 88, 56,128, 0, 0, 56,160, 0, 0, +/* 0x0ea0 */ 75,255,244, 5,124, 96, 27,120,144, 31, 0, 92,128, 31, 0, 92, +/* 0x0eb0 */ 47,128, 0, 0, 64,156, 0, 12, 56, 96, 0, 18, 75,255,244,249, +/* 0x0ec0 */ 128,127, 0, 92,128,159, 0, 16, 56,160, 2, 0, 75,255,243,209, +/* 0x0ed0 */ 124, 96, 27,120, 47,128, 2, 0, 65,158, 0, 12, 56, 96, 0, 19, +/* 0x0ee0 */ 75,255,244,213,128,127, 0, 16, 56,128, 0, 0,128,191, 0, 92, +/* 0x0ef0 */ 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, 57, 63, 0,120, +/* 0x0f00 */ 129, 95, 0, 40, 75,255,249,161,124, 96, 27,120,144, 31, 0, 80, +/* 0x0f10 */ 128,127, 0, 32, 56,128, 0, 7,128,191, 0,120, 75,255,247, 69, +/* 0x0f20 */ 128,127, 0, 92, 75,255,243,137,129, 63, 0, 72, 56, 9, 0, 32, +/* 0x0f30 */ 144, 31, 0, 72,129, 63, 0, 84, 56, 9, 0, 1,144, 31, 0, 84, +/* 0x0f40 */ 75,255,255, 24,128, 31, 0, 80,124, 3, 3,120,129, 97, 0, 0, +/* 0x0f50 */ 128, 11, 0, 4,124, 8, 3,166,131,235,255,252,125, 97, 91,120, +/* 0x0f60 */ 78,128, 0, 32 }; diff --git a/src/stub/src/powerpc-linux.elf-entry.S b/src/stub/src/powerpc-linux.elf-entry.S index c7ec89f6..0233bfee 100644 --- a/src/stub/src/powerpc-linux.elf-entry.S +++ b/src/stub/src/powerpc-linux.elf-entry.S @@ -186,6 +186,7 @@ sz_auxv= 2*4 li a3,MAP_PRIVATE | MAP_ANONYMOUS li a2,PROT_READ | PROT_WRITE | PROT_EXEC // 'fold' will execute here lwz a1,LLENM - LrUNF(r30) +li a1,2*4096 // FIXME: .sz_unc lwz a0,LADRM - LrUNF(r30) li r0,__NR_mmap mr t4,a0 // save address being allocated @@ -231,7 +232,7 @@ L80: // blr # goto return address main: - ////teq r0,r0 // debugging +//// teq r0,r0 // debugging stwu r1,-(SZ_FRAME+32*4)(sp) // allocate space (keeping 0 mod 16), save r1 stmw r2, SZ_FRAME+2*4-4(sp) // save registers r2 thru r31 mflr r31 // &decompress diff --git a/src/stub/src/powerpc-linux.elf-fold.S b/src/stub/src/powerpc-linux.elf-fold.S index 5d972f57..9feb2524 100644 --- a/src/stub/src/powerpc-linux.elf-fold.S +++ b/src/stub/src/powerpc-linux.elf-fold.S @@ -86,6 +86,7 @@ SZ_FRAME= SZ_LINKA #define pag r16 fold_begin: +//// teq r0,r0 // debugging call L90 L90b: #include "arch/powerpc/32/bxx.S" @@ -97,13 +98,10 @@ L90: // open /proc/self/exe li a1,O_RDONLY la a0,4+ L90a - L90b(r21) // "/proc/self/exe" - li r0,SYS_open - sc; movr r_fd,a0 + call open; movr r_fd,a0 // slide {<>,argc,argv,0,env,0,auxv} down with maximum room before strings la a1,-4(sp) // src ready for lwzu la sp,-(4+ PATH_MAX)(sp) - sub sp,sp,r27 // sp -= PAGE_SIZE - sub sp,sp,r27 // sp -= PAGE_SIZE la a0,-4(sp) // dst ready for stwu la av_lo,-4(av_lo) // &end ready for lwzu 0: // copy upto auxv @@ -127,8 +125,7 @@ L90: li a2,-1+ PATH_MAX movr a1,r14 // buffer la a0,4+ L90a - L90b(r21) // "/proc/self/exe" - li r0,SYS_readlink - sc; la a2,-4(r14) // a0= len; a2= buffer + call readlink; la a2,-4(r14) // a0= len; a2= buffer cmpwi a0,0; bgt 0f // success la a2,L90a - L90b(r21) // " =/proc/self/exe" li a0,L90 - (4+ L90a) // round_up(4, strlen("/proc/self/exe")) @@ -144,29 +141,19 @@ L90: stbu r0,-1(a0); bdnz 0b stw a0,-2*4(av_lo) // &" =<>" for env - subf r0,r27,a2 // -PAGE_SIZE == PAGE_MASK - and pag, a0,r0 // round down to page boundary - add pag,pag,r0 // next lower page - subf av_lo,av_len,pag // final auxv (stack alignment?) -// map the first page of /proc/self/exe - li a5,0 // offset - movr a4,r_fd - li a3,MAP_PRIVATE|MAP_FIXED - li a2,PROT_READ - movr a1,r27 // PAGE_SIZE - movr a0,pag // &page - li r0,SYS_mmap - sc // a0= &page -// slide the rest of the stack up to just below the mapped page + clrrwi a0,a0,2 // word align + xor r0,sp,a1 // parity of length + xor r0,r0,a0 // length vs destination + rlwinm r0,r0,0,29,29 // andi r0,r0,1<<(31-29) + sub a0,a0,r0 + +// slide the rest of the stack up movr a1,av_hi + sub av_lo,a0,av_len 0: lwzu r0,-4(a1); cmpl cr7,a1,sp stwu r0,-4(a0); bgt+ cr7,0b movr sp,a0 -// close /proc/self/exe - movr a0,r_fd - li r0,SYS_close - sc li r0,0 r_reloc= 32 - 1 # use a slot in register save area @@ -179,7 +166,7 @@ r_reloc= 32 - 1 # use a slot in register save area and r30,a5,r0 // r30= &this_page mr a4,r31 // &decompress: f_expand - la sp,-OVERHEAD(sp) // -SZ_FRAME + &Elf32_Ehdr temporary space + stwu sp,-(SZ_FRAME+OVERHEAD)(sp) // allocate this frame lwz a1,-2*4(r31) // sz_pack2 == #bytes which preceed -2*4(r31) subf r29,a1,r31 // 2*4+ (char *)&our_Elf32_Ehdr addi r29,r29,-2*4 // &our_Elf32_Ehdr @@ -188,21 +175,33 @@ r_reloc= 32 - 1 # use a slot in register save area add a0,r29,r26 // &b_info sub a1,a1,r26 // total_size la a2,SZ_FRAME(sp) // &Elf32_Ehdr temporary space - stwu sp,-(SZ_FRAME+OVERHEAD)(sp) lwz a3,sz_unc(a0) // sz_elf_headers call upx_main // Out: a0= entry // entry= upx_main(b_info *a0, total_size a1, Elf32_Ehdr *a2, sz_ehdr a3, // f_exp a4, f_unf a5, Elf32_auxv_t *a6, page_size a7, reloc ARG9) + la sp,SZ_FRAME+OVERHEAD(sp) // deallocate this frame mr r31,a0 // save &entry +// map the first page of /proc/self/exe + li a5,0 // offset + movr a4,r_fd + li a3,MAP_PRIVATE + li a2,PROT_READ + movr a1,r27 // PAGE_SIZE + li a0,0 // kernel chooses where + call mmap +// close /proc/self/exe + movr a0,r_fd + call close + movr a0,adru - movr a2,lenu + movr a1,lenu call munmap // unmap compressed program; /proc/self/exe disappears mtlr r31 // entry address - lmw r2,OVERHEAD+SZ_FRAME+2*4-4(sp) // restore registers r2 thru r31 - la sp,OVERHEAD+SZ_FRAME+32*4(sp) // deallocate space + lmw r2,SZ_FRAME+2*4-4(sp) // restore registers r2 thru r31 + la sp, SZ_FRAME+32*4(sp) // deallocate outer frame ret // enter /lib/ld.so.1 SYS_exit= 1 @@ -229,6 +228,8 @@ no_fail: exit: .globl exit li r0,SYS_exit; b 5f +readlink: .globl readlink + li r0,SYS_readlink; 5: b 5f read: .globl read li r0,SYS_read; 5: b 5f open: .globl open diff --git a/src/stub/src/powerpc-linux.elf-main.c b/src/stub/src/powerpc-linux.elf-main.c index 675effb9..32335624 100644 --- a/src/stub/src/powerpc-linux.elf-main.c +++ b/src/stub/src/powerpc-linux.elf-main.c @@ -34,6 +34,49 @@ #undef PAGE_MASK #undef PAGE_SIZE +#ifndef DEBUG //{ +#define DEBUG 0 +#endif //} + +#if !DEBUG //{ +#define DPRINTF(fmt, args...) /*empty*/ +#else //}{ +// DPRINTF is defined as an expression using "({ ... })" +// so that DPRINTF can be invoked inside an expression, +// and then followed by a comma to ignore the return value. +// The only complication is that percent and backslash +// must be doubled in the format string, because the format +// string is processd twice: once at compile-time by 'asm' +// to produce the assembled value, and once at runtime to use it. +#if defined(__powerpc__) //{ +#define DPRINTF(fmt, args...) ({ \ + char const *r_fmt; \ + asm("bl 0f; .string \"" fmt "\"; .balign 4; 0: mflr %0" \ +/*out*/ : "=r"(r_fmt) \ +/* in*/ : \ +/*und*/ : "lr"); \ + dprintf(r_fmt, args); \ +}) +#elif defined(__x86_64) //}{ +#define DPRINTF(fmt, args...) ({ \ + char const *r_fmt; \ + asm("call 0f; .asciz \"" fmt "\"; 0: pop %0" \ +/*out*/ : "=r"(r_fmt) ); \ + dprintf(r_fmt, args); \ +}) +#elif defined(__AARCH64EL__) //}{ +#define DPRINTF(fmt, args...) ({ \ + char const *r_fmt; \ + asm("bl 0f; .string \"" fmt "\"; .balign 4; 0: mov %0,x30" \ +/*out*/ : "=r"(r_fmt) \ +/* in*/ : \ +/*und*/ : "x30"); \ + dprintf(r_fmt, args); \ +}) +#endif //} + +static int dprintf(char const *fmt, ...); // forward +#endif /*}*/ /************************************************************************* // configuration section @@ -61,6 +104,7 @@ xread(Extent *x, char *buf, size_t count) { char *p=x->buf, *q=buf; size_t j; + DPRINTF("xread %%p(%%x %%p) %%p %%x\\n", x, x->size, x->buf, buf, count); if (x->size < count) { exit(127); } @@ -76,7 +120,7 @@ xread(Extent *x, char *buf, size_t count) // util **************************************************************************/ -#if 1 //{ save space +#if 0 //{ save space #define ERR_LAB error: exit(127); #define err_exit(a) goto error #else //}{ save debugging time @@ -84,6 +128,7 @@ xread(Extent *x, char *buf, size_t count) static void err_exit(int a) { + DPRINTF("err_exit %%x\\n", a); (void)a; // debugging convenience exit(127); } @@ -111,6 +156,8 @@ unpackExtent( f_unfilter *f_unf ) { + DPRINTF("unpackExtent in=%%p(%%x %%p) out=%%p(%%x %%p) %%p %%p\\n", + xi, xi->size, xi->buf, xo, xo->size, xo->buf, f_decompress, f_unf); while (xo->size) { struct b_info h; // Note: if h.sz_unc == h.sz_cpr then the block was not @@ -131,6 +178,7 @@ ERR_LAB } if (h.sz_cpr > h.sz_unc || h.sz_unc > xo->size ) { + DPRINTF("sz_cpr=%%x sz_unc=%%x xo->size=%%x\\n", h.sz_cpr, h.sz_unc, xo->size); err_exit(5); } // Now we have: @@ -171,8 +219,11 @@ upx_bzero(char *p, size_t len) static void auxv_up(Elf32_auxv_t *av, unsigned type, unsigned const value) { - if (av) + if (!av) + return; + DPRINTF("\\nauxv_up av=%%p %%d %%p\\n", av, type, value); for (;; ++av) { + DPRINTF(" %%d %%p\\n", av->a_type, av->a_un.a_val); if (av->a_type==type || (av->a_type==AT_IGNORE && type!=AT_NULL)) { av->a_type = type; av->a_un.a_val = value; @@ -242,6 +293,7 @@ do_xmap( unsigned long const reloc = xfind_pages( ((ET_DYN!=ehdr->e_type) ? MAP_FIXED : 0), phdr, ehdr->e_phnum, &v_brk, PAGE_MASK); + DPRINTF("do_xmap reloc=%%p", reloc); int j; for (j=0; j < ehdr->e_phnum; ++phdr, ++j) if (xi && PT_PHDR==phdr->p_type) { @@ -312,13 +364,10 @@ void *upx_main( Elf32_Addr reloc // IN OUT; value result for ET_DYN ) { - ACC_UNUSED(sz_ehdr); - int const page_mask = -page_size; if ((page_size != 4096) && (page_size != 65536)) exit(232); - - Elf32_Phdr *phdr = (Elf32_Phdr *)(1+ ehdr); + ACC_UNUSED(sz_ehdr); Extent xo, xi1, xi2; xo.buf = (char *)ehdr; @@ -329,18 +378,19 @@ void *upx_main( // ehdr = Uncompress Ehdr and Phdrs unpackExtent(&xi2, &xo, f_decompress, 0); // never filtered? + DPRINTF("upx_main1 .e_entry=%%p reloc=%%p\\n", ehdr->e_entry, reloc); // AT_PHDR.a_un.a_val is set again by do_xmap if PT_PHDR is present. - auxv_up(av, AT_PHDR , (unsigned)phdr->p_vaddr); - auxv_up(av, AT_PHNUM , ehdr->e_phnum); + auxv_up(av, AT_PHDR , reloc + ehdr->e_phoff); + auxv_up(av, AT_PHNUM, ehdr->e_phnum); //auxv_up(av, AT_PHENT , ehdr->e_phentsize); /* this can never change */ //auxv_up(av, AT_PAGESZ, PAGE_SIZE); /* ld-linux.so.2 does not need this */ + Elf32_Phdr *phdr = (Elf32_Phdr *)(1+ ehdr); unsigned const orig_e_type = ehdr->e_type; - if (ET_DYN==orig_e_type /*&& phdr->p_vaddr==0*/) { // -fpie /*FIXME: and not pre-linked*/ + if (ET_DYN==orig_e_type /*&& phdr->p_vaddr==0*/) { // -pie /*FIXME: and not pre-linked*/ // Unpacked must start at same place as packed, so that brk(0) works. ehdr->e_type = ET_EXEC; - auxv_up(av, AT_ENTRY, ehdr->e_entry + reloc); - phdr = (Elf32_Phdr *)(1+ ehdr); + auxv_up(av, AT_ENTRY, ehdr->e_entry += reloc); unsigned j; for (j=0; j < ehdr->e_phnum; ++phdr, ++j) { phdr->p_vaddr += reloc; @@ -348,13 +398,16 @@ void *upx_main( } } - Elf32_Addr entry = do_xmap(ehdr, &xi1, 0, av, f_decompress, f_unf, &reloc, page_mask); // "rewind" + // De-compress Ehdr again into actual position, then de-compress the rest. + Elf32_Addr entry = do_xmap(ehdr, &xi1, 0, av, f_decompress, f_unf, &reloc, page_mask); + DPRINTF("upx_main2 entry=%%p reloc=%%p\\n", entry, reloc); if (ET_DYN!=orig_e_type) { auxv_up(av, AT_ENTRY , entry); } { // Map PT_INTERP program interpreter - int j; + phdr = (Elf32_Phdr *)(1+ ehdr); + unsigned j; for (j=0; j < ehdr->e_phnum; ++phdr, ++j) if (PT_INTERP==phdr->p_type) { char const *const iname = reloc + (char const *)phdr->p_vaddr; int const fdi = open(iname, O_RDONLY, 0); @@ -365,7 +418,8 @@ void *upx_main( ERR_LAB err_exit(19); } - entry = do_xmap(ehdr, 0, fdi, 0, 0, 0, 0, page_mask); + entry = do_xmap(ehdr, 0, fdi, 0, 0, 0, &reloc, page_mask); + auxv_up(av, AT_BASE, reloc); // musl close(fdi); } } @@ -373,4 +427,130 @@ ERR_LAB return (void *)entry; } +#if DEBUG //{ + +#if defined(__powerpc__) //{ +#define __NR_write 4 + +ssize_t +write(int fd, void const *ptr, size_t len) +{ + register int sys asm("r0") = __NR_write; + register int a0 asm("r3") = fd; + register void const *a1 asm("r4") = ptr; + register size_t a2 asm("r5") = len; + __asm__ __volatile__("sc" + : "+r"(sys), "+r"(a0), "+r"(a1), "+r"(a2) + : + : "r6", "r7", "r8", "r9", "r10", "r11", "r12", "r13" + ); + return a0; +} +#endif //} + +static int +unsimal(unsigned x, char *ptr, int n) +{ + unsigned m = 10; + while (10 <= (x / m)) m *= 10; + while (10 <= x) { + unsigned d = x / m; + x -= m * d; + m /= 10; + ptr[n++] = '0' + d; + } + ptr[n++] = '0' + x; + return n; +} + +static int +decimal(int x, char *ptr, int n) +{ + if (x < 0) { + x = -x; + ptr[n++] = '-'; + } + return unsimal(x, ptr, n); +} + +static int +heximal(unsigned long x, char *ptr, int n) +{ + unsigned j = -1+ 2*sizeof(unsigned long); + unsigned long m = 0xful << (4 * j); + for (; j; --j, m >>= 4) { // omit leading 0 digits + if (m & x) break; + } + for (; m; --j, m >>= 4) { + unsigned d = 0xf & (x >> (4 * j)); + ptr[n++] = ((10<=d) ? ('a' - 10) : '0') + d; + } + return n; +} + +#define va_arg __builtin_va_arg +#define va_end __builtin_va_end +#define va_list __builtin_va_list +#define va_start __builtin_va_start + +static int +dprintf(char const *fmt, ...) +{ + int n= 0; + char const *literal = 0; // NULL + char buf[24]; // ~0ull == 18446744073709551615 ==> 20 chars + va_list va; va_start(va, fmt); + for (;;) { + char c = *fmt++; + if (!c) { // end of fmt + if (literal) { + goto finish; + } + break; // goto done + } + if ('%'!=c) { + if (!literal) { + literal = fmt; // 1 beyond start of literal + } + continue; + } + // '%' == c + if (literal) { +finish: + n += write(2, -1+ literal, fmt - literal); + literal = 0; // NULL + if (!c) { // fmt already ended + break; // goto done + } + } + switch (c= *fmt++) { // deficiency: does not handle _long_ + default: { // un-implemented conversion + n+= write(2, -1+ fmt, 1); + } break; + case 0: { // fmt ends with "%\0" ==> ignore + goto done; + } break; + case 'u': { + n+= write(2, buf, unsimal(va_arg(va, unsigned), buf, 0)); + } break; + case 'd': { + n+= write(2, buf, decimal(va_arg(va, int), buf, 0)); + } break; + case 'p': { + buf[0] = '0'; + buf[1] = 'x'; + n+= write(2, buf, heximal((unsigned long)va_arg(va, void *), buf, 2)); + } break; + case 'x': { + buf[0] = '0'; + buf[1] = 'x'; + n+= write(2, buf, heximal(va_arg(va, int), buf, 2)); + } break; + } // 'switch' + } +done: + va_end(va); + return n; +} +#endif //} /* vim:set ts=4 sw=4 et: */ diff --git a/src/stub/tmp/powerpc-linux.elf-entry.bin.dump b/src/stub/tmp/powerpc-linux.elf-entry.bin.dump index 7efd8276..c115775e 100644 --- a/src/stub/tmp/powerpc-linux.elf-entry.bin.dump +++ b/src/stub/tmp/powerpc-linux.elf-entry.bin.dump @@ -14,7 +14,7 @@ Idx Name Size VMA LMA File off Algn Flags 9 NRV_TAIL 0000001c 00000000 00000000 00001788 2**0 CONTENTS, READONLY 10 CFLUSH 00000024 00000000 00000000 000017a4 2**0 CONTENTS, READONLY 11 ELFMAINY 00000022 00000000 00000000 000017c8 2**0 CONTENTS, RELOC, READONLY - 12 ELFMAINZ 00000138 00000000 00000000 000017ea 2**0 CONTENTS, RELOC, READONLY + 12 ELFMAINZ 0000013c 00000000 00000000 000017ea 2**0 CONTENTS, RELOC, READONLY SYMBOL TABLE: 00000000 l d LZMA_DEC30 00000000 LZMA_DEC30 00000000 l d NRV_TAIL 00000000 NRV_TAIL @@ -37,7 +37,7 @@ SYMBOL TABLE: RELOCATION RECORDS FOR [ELFMAINX]: OFFSET TYPE VALUE -00000000 R_PPC_REL24 ELFMAINZ+0x00000118 +00000000 R_PPC_REL24 ELFMAINZ+0x0000011c RELOCATION RECORDS FOR [NRV2E]: OFFSET TYPE VALUE @@ -61,8 +61,8 @@ OFFSET TYPE VALUE RELOCATION RECORDS FOR [ELFMAINZ]: OFFSET TYPE VALUE -000000a8 R_PPC_REL14 ELFMAINY -00000128 R_PPC_ADDR32 ADRM -0000012c R_PPC_ADDR32 LENM -00000130 R_PPC_ADDR32 LENU -00000134 R_PPC_ADDR32 O_BINFO +000000ac R_PPC_REL14 ELFMAINY +0000012c R_PPC_ADDR32 ADRM +00000130 R_PPC_ADDR32 LENM +00000134 R_PPC_ADDR32 LENU +00000138 R_PPC_ADDR32 O_BINFO diff --git a/src/stub/tmp/powerpc-linux.elf-fold.map b/src/stub/tmp/powerpc-linux.elf-fold.map index 477f8b38..63e87657 100644 --- a/src/stub/tmp/powerpc-linux.elf-fold.map +++ b/src/stub/tmp/powerpc-linux.elf-fold.map @@ -9,30 +9,31 @@ Linker script and memory map TARGET(elf32-powerpc) 0x0000000000100080 . = ((0x100000 + SIZEOF_HEADERS) + 0xc) -.text 0x0000000000100080 0xe78 +.text 0x0000000000100080 0xee4 *(.text) - .text 0x0000000000100080 0x254 tmp/powerpc-linux.elf-fold.o - 0x00000000001002c4 munmap - 0x0000000000100288 mmap - 0x00000000001002a4 read - 0x000000000010029c exit - 0x00000000001002cc brk - 0x00000000001002ac open - 0x00000000001002bc mprotect - 0x00000000001002b4 close - .text 0x00000000001002d4 0xc24 tmp/powerpc-linux.elf-main.o - 0x0000000000100bfc upx_main + .text 0x0000000000100080 0x24c tmp/powerpc-linux.elf-fold.o + 0x00000000001002bc munmap + 0x0000000000100294 readlink + 0x0000000000100278 mmap + 0x000000000010029c read + 0x000000000010028c exit + 0x00000000001002c4 brk + 0x00000000001002a4 open + 0x00000000001002b4 mprotect + 0x00000000001002ac close + .text 0x00000000001002cc 0xc98 tmp/powerpc-linux.elf-main.o + 0x0000000000100c40 upx_main *(.data) - .data 0x0000000000100ef8 0x0 tmp/powerpc-linux.elf-fold.o - .data 0x0000000000100ef8 0x0 tmp/powerpc-linux.elf-main.o + .data 0x0000000000100f64 0x0 tmp/powerpc-linux.elf-fold.o + .data 0x0000000000100f64 0x0 tmp/powerpc-linux.elf-main.o .data -.bss 0x0000000000100ef8 0x0 - .bss 0x0000000000100ef8 0x0 tmp/powerpc-linux.elf-fold.o - .bss 0x0000000000100ef8 0x0 tmp/powerpc-linux.elf-main.o +.bss 0x0000000000100f64 0x0 + .bss 0x0000000000100f64 0x0 tmp/powerpc-linux.elf-fold.o + .bss 0x0000000000100f64 0x0 tmp/powerpc-linux.elf-main.o -.rela.dyn 0x0000000000100ef8 0x0 +.rela.dyn 0x0000000000100f64 0x0 .rela.text 0x0000000000000000 0x0 tmp/powerpc-linux.elf-fold.o LOAD tmp/powerpc-linux.elf-fold.o LOAD tmp/powerpc-linux.elf-main.o