amd64-linux revamp for compressing shared libraries

Major changes: p_lx_elf.cpp and stub/src/amd64-linux.elf-so*.
(Includes run-time infrastructure for multiple de-compressors.)
	modified:   linker.cpp
	modified:   p_lx_elf.cpp
	modified:   p_lx_elf.h
	modified:   p_unix.cpp
	modified:   p_unix.h
	modified:   stub/Makefile
	modified:   stub/src/amd64-darwin.dylib-entry.S
	modified:   stub/src/amd64-darwin.macho-entry.S
	new file:   stub/src/amd64-expand.S
	modified:   stub/src/amd64-linux.elf-entry.S
	new file:   stub/src/amd64-linux.elf-so_entry.S
	new file:   stub/src/amd64-linux.elf-so_fold.S
	new file:   stub/src/amd64-linux.elf-so_fold.lds
	new file:   stub/src/amd64-linux.elf-so_main.c
	modified:   stub/src/amd64-linux.shlib-init.S
	modified:   stub/src/amd64-win64.pep.S
	modified:   stub/src/arch/amd64/nrv2b_d.S
	modified:   stub/src/arch/amd64/nrv2d_d.S
	modified:   stub/src/arch/amd64/nrv2e_d.S
           plus many generated stub/*.h and stub/tmp/*.bin.dump
This commit is contained in:
John Reiser
2023-01-09 09:39:25 -08:00
committed by Markus F.X.J. Oberhumer
parent 5f3ebc8a7f
commit 26d8e9c4c5
133 changed files with 42126 additions and 48117 deletions
+109 -144
View File
@@ -1,5 +1,5 @@
/* mips.r3000-linux.shlib-init.h
created from mips.r3000-linux.shlib-init.bin, 10071 (0x2757) bytes
created from mips.r3000-linux.shlib-init.bin, 9517 (0x252d) bytes
This file is part of the UPX executable compressor.
@@ -31,11 +31,11 @@
*/
#define STUB_MIPS_R3000_LINUX_SHLIB_INIT_SIZE 10071
#define STUB_MIPS_R3000_LINUX_SHLIB_INIT_ADLER32 0x662384fd
#define STUB_MIPS_R3000_LINUX_SHLIB_INIT_CRC32 0xc06781e5
#define STUB_MIPS_R3000_LINUX_SHLIB_INIT_SIZE 9517
#define STUB_MIPS_R3000_LINUX_SHLIB_INIT_ADLER32 0xa6bb1270
#define STUB_MIPS_R3000_LINUX_SHLIB_INIT_CRC32 0x3f34e1d4
unsigned char stub_mips_r3000_linux_shlib_init[10071] = {
unsigned char stub_mips_r3000_linux_shlib_init[9517] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 1, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 30,220, 0, 0, 0, 1, 0, 52, 0, 0, 0, 0, 0, 40,
@@ -527,143 +527,108 @@ unsigned char stub_mips_r3000_linux_shlib_init[10071] = {
/* 0x1e80 */ 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32,
/* 0x1e90 */ 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32,
/* 0x1ea0 */ 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65,
/* 0x1eb0 */ 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 99,
/* 0x1ec0 */ 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1ed0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 52, 32,
/* 0x1ee0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x1ef0 */ 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89,
/* 0x1f00 */ 10, 32, 32, 49, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32,
/* 0x1f10 */ 32, 32, 32, 48, 48, 48, 48, 48, 49, 53, 52, 32, 32, 48, 48, 48,
/* 0x1f20 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1f30 */ 32, 48, 48, 48, 48, 48, 48,102, 56, 32, 32, 50, 42, 42, 48, 32,
/* 0x1f40 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67,
/* 0x1f50 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78,
/* 0x1f60 */ 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48,
/* 0x1f70 */ 48, 48, 49, 52, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1f80 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1f90 */ 50, 52, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x1fa0 */ 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68,
/* 0x1fb0 */ 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 66, 32, 32,
/* 0x1fc0 */ 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 56, 32,
/* 0x1fd0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1fe0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 57, 48, 32, 32, 50,
/* 0x1ff0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82,
/* 0x2000 */ 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32,
/* 0x2010 */ 32, 52, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32,
/* 0x2020 */ 32, 48, 48, 48, 48, 48, 48, 57, 99, 32, 32, 48, 48, 48, 48, 48,
/* 0x2030 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x2040 */ 48, 48, 48, 48, 52, 98, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67,
/* 0x2050 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76,
/* 0x2060 */ 89, 10, 32, 32, 53, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48,
/* 0x2070 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 97,100, 56, 32, 32, 48, 48,
/* 0x2080 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2090 */ 32, 32, 48, 48, 48, 48, 48, 53, 53, 52, 32, 32, 50, 42, 42, 48,
/* 0x20a0 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68,
/* 0x20b0 */ 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69,
/* 0x20c0 */ 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 97,100, 56, 32,
/* 0x20d0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x20e0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 48, 50, 99, 32, 32, 50,
/* 0x20f0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82,
/* 0x2100 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65,
/* 0x2110 */ 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x2120 */ 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x2130 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 98, 48, 52,
/* 0x2140 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
/* 0x2150 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 78,
/* 0x2160 */ 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48,
/* 0x2170 */ 48, 48, 48, 49, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2180 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49,
/* 0x2190 */ 98, 48, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x21a0 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32,
/* 0x21b0 */ 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32,
/* 0x21c0 */ 48, 48, 48, 48, 48, 48, 49, 48, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x21d0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x21e0 */ 48, 48, 49, 98, 49, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x21f0 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89,
/* 0x2200 */ 10, 32, 49, 48, 32, 67, 70, 76, 85, 83, 72, 32, 32, 32, 32, 32,
/* 0x2210 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 52, 32, 32, 48, 48, 48,
/* 0x2220 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2230 */ 32, 48, 48, 48, 48, 49, 98, 50, 56, 32, 32, 50, 42, 42, 48, 32,
/* 0x2240 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79,
/* 0x2250 */ 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x2260 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x2270 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x2280 */ 48, 48, 32, 32, 48, 48, 48, 48, 49, 98, 52, 99, 32, 32, 50, 42,
/* 0x2290 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x22a0 */ 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, 32, 69, 76, 70, 77, 65,
/* 0x22b0 */ 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 50,102,
/* 0x22c0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x22d0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 98, 52, 99, 32,
/* 0x22e0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x22f0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76,
/* 0x2300 */ 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2310 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73,
/* 0x2320 */ 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84,
/* 0x2330 */ 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x2340 */ 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48,
/* 0x2350 */ 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
/* 0x2360 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x2370 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48,
/* 0x2380 */ 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48,
/* 0x2390 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86,
/* 0x23a0 */ 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50,
/* 0x23b0 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x23c0 */ 100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x23d0 */ 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x23e0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48,
/* 0x23f0 */ 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48,
/* 0x2400 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76,
/* 0x2410 */ 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48,
/* 0x2420 */ 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48,
/* 0x2430 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76,
/* 0x2440 */ 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48,
/* 0x2450 */ 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48,
/* 0x2460 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76,
/* 0x2470 */ 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48,
/* 0x2480 */ 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48,
/* 0x2490 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76,
/* 0x24a0 */ 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48,
/* 0x24b0 */ 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48,
/* 0x24c0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78,
/* 0x24d0 */ 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x24e0 */ 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48,
/* 0x24f0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 70, 76, 85, 83,
/* 0x2500 */ 72, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 70, 76, 85, 83,
/* 0x2510 */ 72, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x2520 */ 100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48,
/* 0x2530 */ 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48,
/* 0x2540 */ 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 79, 32, 69,
/* 0x2550 */ 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2560 */ 32, 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2570 */ 32,103, 32, 32, 32, 32, 32, 79, 32, 69, 76, 70, 77, 65, 73, 78,
/* 0x2580 */ 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,101,110,100, 95,100,
/* 0x2590 */ 101, 99,111,109,112,114,101,115,115, 10, 10, 82, 69, 76, 79, 67,
/* 0x25a0 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79,
/* 0x25b0 */ 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70,
/* 0x25c0 */ 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32,
/* 0x25d0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48,
/* 0x25e0 */ 48, 48, 48, 48, 48, 49, 56, 32, 82, 95, 77, 73, 80, 83, 95, 76,
/* 0x25f0 */ 79, 49, 54, 32, 32, 32, 32, 32, 32, 32, 95,115,116, 97,114,116,
/* 0x2600 */ 10, 48, 48, 48, 48, 48, 48, 50, 48, 32, 82, 95, 77, 73, 80, 83,
/* 0x2610 */ 95, 76, 79, 49, 54, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77,
/* 0x2620 */ 65, 73, 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
/* 0x2630 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82,
/* 0x2640 */ 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84,
/* 0x2650 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2660 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 55, 99, 32,
/* 0x2670 */ 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32,
/* 0x2680 */ 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79,
/* 0x2690 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0x26a0 */ 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83,
/* 0x26b0 */ 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32,
/* 0x26c0 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48,
/* 0x26d0 */ 48, 48, 48, 55, 99, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49,
/* 0x26e0 */ 54, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76,
/* 0x26f0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
/* 0x2700 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93,
/* 0x2710 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32,
/* 0x2720 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76,
/* 0x2730 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 54, 52, 32, 82, 95, 77, 73,
/* 0x2740 */ 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 78, 82,
/* 0x2750 */ 86, 95, 84, 65, 73, 76, 10
/* 0x1eb0 */ 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 99, 52, 32, 32, 48, 32,
/* 0x1ec0 */ 32, 48, 32, 32, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67,
/* 0x1ed0 */ 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 49, 32, 78, 82, 86, 50,
/* 0x1ee0 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 49, 53, 52, 32, 32,
/* 0x1ef0 */ 48, 32, 32, 48, 32, 32, 48,102, 56, 32, 32, 50, 42, 42, 48, 32,
/* 0x1f00 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 50, 32, 78, 82,
/* 0x1f10 */ 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 49, 52, 52,
/* 0x1f20 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 50, 52, 99, 32, 32, 50, 42,
/* 0x1f30 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 51,
/* 0x1f40 */ 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48,
/* 0x1f50 */ 49, 50, 56, 32, 32, 48, 32, 32, 48, 32, 32, 48, 51, 57, 48, 32,
/* 0x1f60 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10,
/* 0x1f70 */ 32, 32, 52, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32,
/* 0x1f80 */ 32, 32, 48, 57, 99, 32, 32, 48, 32, 32, 48, 32, 32, 48, 52, 98,
/* 0x1f90 */ 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84,
/* 0x1fa0 */ 83, 10, 32, 32, 53, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48,
/* 0x1fb0 */ 32, 32, 32, 32, 48, 97,100, 56, 32, 32, 48, 32, 32, 48, 32, 32,
/* 0x1fc0 */ 48, 53, 53, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84,
/* 0x1fd0 */ 69, 78, 84, 83, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69,
/* 0x1fe0 */ 67, 49, 48, 32, 32, 32, 32, 48, 97,100, 56, 32, 32, 48, 32, 32,
/* 0x1ff0 */ 48, 32, 32, 48, 49, 48, 50, 99, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x2000 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 55, 32, 76, 90, 77,
/* 0x2010 */ 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 52, 32, 32, 48,
/* 0x2020 */ 32, 32, 48, 32, 32, 48, 49, 98, 48, 52, 32, 32, 50, 42, 42, 48,
/* 0x2030 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32, 56, 32, 78,
/* 0x2040 */ 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 49, 48,
/* 0x2050 */ 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 98, 48, 56, 32, 32, 50,
/* 0x2060 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 10, 32, 32,
/* 0x2070 */ 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32,
/* 0x2080 */ 48, 49, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49, 98, 49, 56,
/* 0x2090 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
/* 0x20a0 */ 10, 32, 49, 48, 32, 67, 70, 76, 85, 83, 72, 32, 32, 32, 32, 32,
/* 0x20b0 */ 32, 32, 32, 48, 50, 52, 32, 32, 48, 32, 32, 48, 32, 32, 48, 49,
/* 0x20c0 */ 98, 50, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x20d0 */ 78, 84, 83, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x20e0 */ 32, 32, 32, 32, 32, 32, 48, 32, 32, 48, 32, 32, 48, 32, 32, 48,
/* 0x20f0 */ 49, 98, 52, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84,
/* 0x2100 */ 69, 78, 84, 83, 10, 32, 49, 50, 32, 69, 76, 70, 77, 65, 73, 78,
/* 0x2110 */ 90, 32, 32, 32, 32, 32, 32, 48, 50,102, 48, 32, 32, 48, 32, 32,
/* 0x2120 */ 48, 32, 32, 48, 49, 98, 52, 99, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x2130 */ 67, 79, 78, 84, 69, 78, 84, 83, 10, 83, 89, 77, 66, 79, 76, 32,
/* 0x2140 */ 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2150 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76,
/* 0x2160 */ 32, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48,
/* 0x2170 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70,
/* 0x2180 */ 77, 65, 73, 78, 90, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90,
/* 0x2190 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
/* 0x21a0 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 69, 76, 70,
/* 0x21b0 */ 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x21c0 */ 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 32, 48, 32, 78,
/* 0x21d0 */ 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x21e0 */ 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 32, 48, 32, 78, 82,
/* 0x21f0 */ 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x2200 */ 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 32, 48, 32, 78, 82, 86,
/* 0x2210 */ 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
/* 0x2220 */ 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 48,
/* 0x2230 */ 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48,
/* 0x2240 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77,
/* 0x2250 */ 65, 95, 68, 69, 67, 50, 48, 32, 48, 32, 76, 90, 77, 65, 95, 68,
/* 0x2260 */ 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x2270 */ 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48,
/* 0x2280 */ 32, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48,
/* 0x2290 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76,
/* 0x22a0 */ 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 48, 32, 76, 90, 77, 65,
/* 0x22b0 */ 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x22c0 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68,
/* 0x22d0 */ 32, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48,
/* 0x22e0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 70, 76,
/* 0x22f0 */ 85, 83, 72, 32, 48, 32, 67, 70, 76, 85, 83, 72, 10, 48, 48, 48,
/* 0x2300 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76,
/* 0x2310 */ 70, 77, 65, 73, 78, 89, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78,
/* 0x2320 */ 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32,
/* 0x2330 */ 32, 79, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 48, 32, 95,115,
/* 0x2340 */ 116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
/* 0x2350 */ 32, 32, 32, 32, 79, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 48,
/* 0x2360 */ 32,101,110,100, 95,100,101, 99,111,109,112,114,101,115,115, 10,
/* 0x2370 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
/* 0x2380 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78,
/* 0x2390 */ 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80,
/* 0x23a0 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86,
/* 0x23b0 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 49, 56, 32, 82, 95,
/* 0x23c0 */ 77, 73, 80, 83, 95, 76, 79, 49, 54, 32, 32, 32, 32, 32, 32, 32,
/* 0x23d0 */ 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 50, 48, 32,
/* 0x23e0 */ 82, 95, 77, 73, 80, 83, 95, 76, 79, 49, 54, 32, 32, 32, 32, 32,
/* 0x23f0 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 10, 82, 69, 76, 79,
/* 0x2400 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0x2410 */ 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83,
/* 0x2420 */ 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32,
/* 0x2430 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48,
/* 0x2440 */ 48, 48, 48, 55, 99, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49,
/* 0x2450 */ 54, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76,
/* 0x2460 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
/* 0x2470 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93,
/* 0x2480 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32,
/* 0x2490 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76,
/* 0x24a0 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 55, 99, 32, 82, 95, 77, 73,
/* 0x24b0 */ 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 78, 82,
/* 0x24c0 */ 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x24d0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x24e0 */ 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
/* 0x24f0 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2500 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 54,
/* 0x2510 */ 52, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32,
/* 0x2520 */ 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10
};