Revamp powerpc{,64le,64}.

Fix 64-bit stack frame (8*8 bytes for spilling a0-a7).  Avoid using r2 (t0).
Prepare for -pie executables.  Prepare for unified strategy in stubs.

	modified:   p_lx_elf.cpp
	modified:   stub/src/amd64-linux.elf-main.c
	modified:   stub/src/arch/powerpc/32/bxx.S
	modified:   stub/src/arch/powerpc/32/lzma_d.S
	modified:   stub/src/arch/powerpc/32/nrv2b_d.S
	modified:   stub/src/arch/powerpc/32/nrv2d_d.S
	modified:   stub/src/arch/powerpc/32/nrv2e_d.S
	modified:   stub/src/arch/powerpc/32/ppc_regs.h
	new file:   stub/src/arch/powerpc/64/Makefile
	new file:   stub/src/arch/powerpc/64/Makefile.extra
	new file:   stub/src/arch/powerpc/64/lzma_d.S
	new file:   stub/src/arch/powerpc/64/lzma_d_cf.S
	new file:   stub/src/arch/powerpc/64/lzma_d_cs.S
	modified:   stub/src/arch/powerpc/64le/bxx.S
	copied:     stub/src/arch/powerpc/64le/lzma_d.S -> stub/src/arch/powerpc/64le/lzma_d-common.S
	modified:   stub/src/arch/powerpc/64le/lzma_d.S
	modified:   stub/src/arch/powerpc/64le/lzma_d_cs.S
	modified:   stub/src/arch/powerpc/64le/nrv2b_d.S
	modified:   stub/src/arch/powerpc/64le/nrv2d_d.S
	modified:   stub/src/arch/powerpc/64le/nrv2e_d.S
	modified:   stub/src/arch/powerpc/64le/ppc_regs.h
	modified:   stub/src/i386-darwin.macho-entry.S
	modified:   stub/src/powerpc-darwin.dylib-entry.S
	modified:   stub/src/powerpc-darwin.macho-entry.S
	modified:   stub/src/powerpc-darwin.macho-fold.S
	modified:   stub/src/powerpc-linux.elf-entry.S
	modified:   stub/src/powerpc-linux.elf-fold.S
	modified:   stub/src/powerpc-linux.elf-main.c
	modified:   stub/src/powerpc64-darwin.dylib-entry.S
	modified:   stub/src/powerpc64-darwin.macho-entry.S
	modified:   stub/src/powerpc64-darwin.macho-fold.S
	modified:   stub/src/powerpc64-darwin.macho-main.c
	modified:   stub/src/powerpc64-linux.elf-main.c
	modified:   stub/src/powerpc64-savegpr0.S
	modified:   stub/src/powerpc64le-darwin.dylib-entry.S
	modified:   stub/src/powerpc64le-darwin.macho-entry.S
	modified:   stub/src/powerpc64le-darwin.macho-fold.S
	modified:   stub/src/powerpc64le-linux.elf-entry.S
	modified:   stub/src/powerpc64le-linux.elf-fold.S

	modified:   stub/i386-darwin.macho-entry.h
	modified:   stub/powerpc-darwin.dylib-entry.h
	modified:   stub/powerpc-darwin.macho-entry.h
	modified:   stub/powerpc-darwin.macho-fold.h
	modified:   stub/powerpc-linux.elf-entry.h
	modified:   stub/powerpc-linux.elf-fold.h
	modified:   stub/powerpc-linux.kernel.vmlinux.h
	modified:   stub/powerpc64-linux.elf-entry.h
	modified:   stub/powerpc64-linux.elf-fold.h
	modified:   stub/powerpc64le-darwin.dylib-entry.h
	modified:   stub/powerpc64le-darwin.macho-entry.h
	modified:   stub/powerpc64le-darwin.macho-fold.h
	modified:   stub/powerpc64le-linux.elf-entry.h
	modified:   stub/powerpc64le-linux.elf-fold.h
	modified:   stub/powerpc64le-linux.kernel.vmlinux.h
	modified:   stub/tmp/i386-darwin.macho-entry.bin.dump
	modified:   stub/tmp/powerpc-darwin.dylib-entry.bin.dump
	modified:   stub/tmp/powerpc-darwin.macho-entry.bin.dump
	modified:   stub/tmp/powerpc-linux.elf-entry.bin.dump
	modified:   stub/tmp/powerpc-linux.elf-fold.map
	modified:   stub/tmp/powerpc64le-darwin.dylib-entry.bin.dump
	modified:   stub/tmp/powerpc64le-darwin.macho-entry.bin.dump
	modified:   stub/tmp/powerpc64le-linux.elf-entry.bin.dump
	modified:   stub/tmp/powerpc64le-linux.elf-fold.map
	modified:   stub/tmp/powerpc64le-linux.kernel.vmlinux.bin.dump
This commit is contained in:
John Reiser
2017-04-19 19:25:05 -07:00
parent 4e05f087f9
commit c4a921283a
64 changed files with 8739 additions and 7226 deletions
+100 -110
View File
@@ -1,5 +1,5 @@
/* powerpc-darwin.macho-entry.h
created from powerpc-darwin.macho-entry.bin, 9076 (0x2374) bytes
created from powerpc-darwin.macho-entry.bin, 8924 (0x22dc) bytes
This file is part of the UPX executable compressor.
@@ -31,20 +31,20 @@
*/
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_SIZE 9076
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_ADLER32 0x26193a29
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_CRC32 0xb72e6768
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_SIZE 8924
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_ADLER32 0x067719e1
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_CRC32 0x1ea12920
unsigned char stub_powerpc_darwin_macho_entry[9076] = {
unsigned char stub_powerpc_darwin_macho_entry[8924] = {
/* 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, 72, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40,
/* 0x0020 */ 0, 0, 25, 68, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40,
/* 0x0030 */ 0, 0, 0, 0, 0, 0, 0,104, 40, 6, 0,208, 76,130, 0, 32,
/* 0x0040 */ 84,132,240,191, 77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64,
/* 0x0050 */ 65,128, 0, 8,124, 4, 3,120, 56,165, 1, 32,124,103, 27,120,
/* 0x0060 */ 56, 99,255,252,124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,
/* 0x0070 */ 125, 99, 88, 80,125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0,
/* 0x0080 */ 78, 64, 0, 32,132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64,
/* 0x0060 */ 56, 99,255,252,124,137, 3,166, 72, 0, 0, 28, 85, 96, 2,186,
/* 0x0070 */ 124, 3, 0, 80,124, 0, 58, 20, 80, 11, 1,186,145, 99, 0, 0,
/* 0x0080 */ 78, 64, 0, 32,133, 99, 0, 4, 85, 96, 85,190,124, 0, 40, 64,
/* 0x0090 */ 65,162,255,220, 66, 0,255,240, 78,128, 0, 32, 72, 0, 0, 73,
/* 0x00a0 */ 124, 0, 41,236,125,168, 2,166, 40, 7, 0, 8, 64,130, 1, 60,
/* 0x00b0 */ 144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0,
@@ -56,8 +56,8 @@ unsigned char stub_powerpc_darwin_macho_entry[9076] = {
/* 0x0110 */ 125, 41, 72, 21, 65,162,255,189,124,231, 57, 20,125, 41, 72, 21,
/* 0x0120 */ 65,162,255,177,124,231, 57, 20,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0130 */ 65,162,255,161, 65,160,255,216, 57, 0, 0, 0, 52,231,255,253,
/* 0x0140 */ 84,231, 64, 46, 65,128, 0, 32,140, 67, 0, 1,124,234, 16,249,
/* 0x0150 */ 125, 74, 14,112, 65,130, 0, 0,112, 66, 0, 1, 65,162, 0, 80,
/* 0x0140 */ 84,231, 64, 46, 65,128, 0, 32,141, 99, 0, 1,124,234, 88,249,
/* 0x0150 */ 125, 74, 14,112, 65,130, 0, 0,113,107, 0, 1, 65,162, 0, 80,
/* 0x0160 */ 72, 0, 0, 20,124, 9, 0, 64,125, 41, 74, 20, 65,162,255,101,
/* 0x0170 */ 65,161, 0, 60, 57, 0, 0, 1,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0180 */ 65,162,255, 81, 65,161, 0, 40,125, 41, 72, 21, 65,162,255, 69,
@@ -77,7 +77,7 @@ unsigned char stub_powerpc_darwin_macho_entry[9076] = {
/* 0x0260 */ 124,231, 57, 21,125, 41, 72, 21, 65,162,255,177,124,231, 57, 21,
/* 0x0270 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161, 65,160,255,216,
/* 0x0280 */ 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,128, 0, 24,
/* 0x0290 */ 140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,130, 0, 0,
/* 0x0290 */ 141, 99, 0, 1,124,234, 88,249,125, 74, 14,112, 65,130, 0, 0,
/* 0x02a0 */ 72, 0, 0, 12,125, 41, 72, 21, 65,162,255,113,125, 8, 65, 21,
/* 0x02b0 */ 125, 41, 72, 21, 65,162,255,101,125, 8, 65, 21, 64,130, 0, 40,
/* 0x02c0 */ 57, 0, 0, 1,125, 41, 72, 21, 65,162,255, 81,125, 8, 65, 21,
@@ -93,22 +93,22 @@ unsigned char stub_powerpc_darwin_macho_entry[9076] = {
/* 0x0360 */ 125, 41, 73, 20, 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,
/* 0x0370 */ 75,255,255,213, 65,129,255,244, 56,224, 0, 1, 75,255,255,201,
/* 0x0380 */ 124,231, 57, 21, 75,255,255,193, 65,160,255,244, 52,231,255,253,
/* 0x0390 */ 57, 0, 0, 0, 65,128, 0, 20,140, 67, 0, 1, 84,231, 64, 46,
/* 0x03a0 */ 124,234, 16,249, 65,130, 0, 0, 75,255,255,157,125, 8, 65, 21,
/* 0x0390 */ 57, 0, 0, 0, 65,128, 0, 20,141, 99, 0, 1, 84,231, 64, 46,
/* 0x03a0 */ 124,234, 88,249, 65,130, 0, 0, 75,255,255,157,125, 8, 65, 21,
/* 0x03b0 */ 75,255,255,149,125, 8, 65, 21, 56,224, 0, 1, 64,130, 0, 28,
/* 0x03c0 */ 56,224, 0, 3, 57, 0, 0, 1, 75,255,255,125,125, 8, 65, 21,
/* 0x03d0 */ 75,255,255,117, 65,160,255,244, 32, 74,242,255,125, 8, 57, 20,
/* 0x03d0 */ 75,255,255,117, 65,160,255,244, 33,106,242,255,125, 8, 57, 20,
/* 0x03e0 */ 124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1,
/* 0x03f0 */ 66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44,
/* 0x0400 */ 75,255,255,112, 40, 7, 0, 14, 64,130, 0, 36,148, 33,255,232,
/* 0x0410 */ 124, 8, 2,166,124,201, 51,120,129, 6, 0, 0,124,167, 43,120,
/* 0x0420 */ 56,164,255,254, 56,131, 0, 2,144, 1, 0, 8,136, 3, 0, 0,
/* 0x0430 */ 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0,124, 99, 88, 48,
/* 0x0430 */ 84, 11,232,254, 84, 12, 7,126, 56, 96,250, 0,124, 99, 88, 48,
/* 0x0440 */ 56, 99,241,124,124, 38, 11,120,124, 33, 26, 20, 84, 33, 0, 52,
/* 0x0450 */ 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0,148, 3,255,252,
/* 0x0460 */ 124, 1, 24, 64, 65,128,255,248,144,193, 0, 0,136, 4,255,255,
/* 0x0470 */ 144,225, 0, 8, 56,193, 0, 16,145, 33, 0, 12, 56, 97, 0, 20,
/* 0x0480 */ 84, 11,225, 62, 84, 0, 7, 62,152, 67, 0, 2,153, 99, 0, 1,
/* 0x0480 */ 84, 11,225, 62, 84, 0, 7, 62,153,131, 0, 2,153, 99, 0, 1,
/* 0x0490 */ 152, 3, 0, 0,124, 8, 2,166,148, 33,255,160,189,193, 0, 24,
/* 0x04a0 */ 59, 32, 0, 0,125, 40, 3,166,124,206, 51,120,124,147, 35,120,
/* 0x04b0 */ 144, 1, 0,100,124,245, 59,120,125, 20, 67,120,137, 67, 0, 2,
@@ -423,10 +423,10 @@ unsigned char stub_powerpc_darwin_macho_entry[9076] = {
/* 0x1800 */ 56, 99, 0, 1, 56,132, 0, 1,144,134, 0, 0, 96,231, 0, 31,
/* 0x1810 */ 124, 0, 56,108,124, 7, 40, 64,124, 0, 63,172, 56,231, 0, 32,
/* 0x1820 */ 65,128,255,240,124, 0, 4,172, 76, 0, 1, 44, 78,128, 0, 32,
/* 0x1830 */ 124, 72, 2,166,128,130, 0, 12,124,137, 3,166,128,194, 0, 8,
/* 0x1840 */ 136,226, 0, 16,124,164, 18, 20, 56,165, 0, 16,124,102, 18, 20,
/* 0x1830 */ 125,136, 2,166,128,140, 0, 12,124,137, 3,166,128,204, 0, 8,
/* 0x1840 */ 136,236, 0, 16,124,164, 98, 20, 56,165, 0, 16,124,102, 98, 20,
/* 0x1850 */ 56, 99, 0,192,140, 5,255,255,156, 3,255,255, 66, 0,255,248,
/* 0x1860 */ 127,233, 3,166, 56,162, 0,128,144,193,255,252, 56,193,255,252,
/* 0x1860 */ 127,233, 3,166, 56,172, 0,128,144,193,255,252, 56,193,255,252,
/* 0x1870 */ 56, 33,255,232, 78,128, 4, 32,127,232, 2,166, 75,255,255,181,
/* 0x1880 */ 72, 0, 0,128, 0, 0, 0, 0,102,105,108,101, 32,102,111,114,
/* 0x1890 */ 109, 97,116, 32,101,108,102, 51, 50, 45,112,111,119,101,114,112,
@@ -514,94 +514,84 @@ unsigned char stub_powerpc_darwin_macho_entry[9076] = {
/* 0x1db0 */ 32, 32, 48, 48, 48, 48, 48, 48, 53, 56, 32, 32, 48, 48, 48, 48,
/* 0x1dc0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x1dd0 */ 48, 48, 48, 48, 49, 56, 51, 48, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x1de0 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44,
/* 0x1df0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76,
/* 0x1e00 */ 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e10 */ 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69,
/* 0x1e20 */ 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77,
/* 0x1e30 */ 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e40 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73,
/* 0x1e50 */ 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84,
/* 0x1e60 */ 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x1e70 */ 32, 32,100, 32, 32, 77, 65, 67, 72, 77, 65, 73, 78, 90, 9, 48,
/* 0x1e80 */ 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 72, 77, 65, 73, 78,
/* 0x1e90 */ 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x1ea0 */ 100, 32, 32, 80, 80, 67, 51, 50, 66, 88, 88, 9, 48, 48, 48, 48,
/* 0x1eb0 */ 48, 48, 48, 48, 32, 80, 80, 67, 51, 50, 66, 88, 88, 10, 48, 48,
/* 0x1ec0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77,
/* 0x1ed0 */ 65, 67, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ee0 */ 32, 77, 65, 67, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48,
/* 0x1ef0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67, 72, 95,
/* 0x1f00 */ 85, 78, 67, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67,
/* 0x1f10 */ 72, 95, 85, 78, 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x1f20 */ 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 9,
/* 0x1f30 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65,
/* 0x1f40 */ 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x1f50 */ 100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f60 */ 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f70 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48,
/* 0x1f80 */ 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48,
/* 0x1f90 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78,
/* 0x1fa0 */ 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82,
/* 0x1fb0 */ 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x1fc0 */ 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9,
/* 0x1fd0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76,
/* 0x1fe0 */ 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x1ff0 */ 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9,
/* 0x2000 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69,
/* 0x2010 */ 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x2020 */ 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9,
/* 0x2030 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69,
/* 0x2040 */ 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x2050 */ 32, 32,100, 32, 32, 67, 70, 76, 85, 83, 72, 9, 48, 48, 48, 48,
/* 0x2060 */ 48, 48, 48, 48, 32, 67, 70, 76, 85, 83, 72, 10, 48, 48, 48, 48,
/* 0x2070 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67,
/* 0x2080 */ 72, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2090 */ 77, 65, 67, 72, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48,
/* 0x20a0 */ 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 77, 65, 67, 77, 65,
/* 0x20b0 */ 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116,
/* 0x20c0 */ 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32,
/* 0x20d0 */ 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48,
/* 0x20e0 */ 48, 48, 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82, 69, 76,
/* 0x20f0 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
/* 0x2100 */ 70, 79, 82, 32, 91, 77, 65, 67, 77, 65, 73, 78, 88, 93, 58, 10,
/* 0x2110 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
/* 0x2120 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0x2130 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95,
/* 0x2140 */ 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 77, 65, 67, 72,
/* 0x2150 */ 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 52, 56,
/* 0x2160 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
/* 0x2170 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93,
/* 0x2180 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32,
/* 0x2190 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76,
/* 0x21a0 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, 80,
/* 0x21b0 */ 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82,
/* 0x21c0 */ 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x21d0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x21e0 */ 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
/* 0x21f0 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2200 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98,
/* 0x2210 */ 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32,
/* 0x2220 */ 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69,
/* 0x2230 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
/* 0x2240 */ 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70,
/* 0x2250 */ 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32,
/* 0x2260 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48,
/* 0x2270 */ 48, 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69,
/* 0x2280 */ 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65,
/* 0x2290 */ 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
/* 0x22a0 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65,
/* 0x22b0 */ 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
/* 0x22c0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x22d0 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
/* 0x22e0 */ 48, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32,
/* 0x22f0 */ 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43,
/* 0x2300 */ 48,120, 48, 48, 48, 48, 48, 48, 50, 52, 10, 10, 82, 69, 76, 79,
/* 0x2310 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0x2320 */ 79, 82, 32, 91, 77, 65, 67, 72, 77, 65, 73, 78, 90, 93, 58, 10,
/* 0x2330 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
/* 0x2340 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0x2350 */ 10, 48, 48, 48, 48, 48, 48, 53, 52, 32, 82, 95, 80, 80, 67, 95,
/* 0x2360 */ 65, 68, 68, 82, 51, 50, 32, 32, 32, 32, 32, 32, 79, 95, 66, 73,
/* 0x2370 */ 78, 70, 79, 10
/* 0x1de0 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78,
/* 0x1df0 */ 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58,
/* 0x1e00 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
/* 0x1e10 */ 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48,
/* 0x1e20 */ 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48,
/* 0x1e30 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
/* 0x1e40 */ 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48,
/* 0x1e50 */ 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48,
/* 0x1e60 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65,
/* 0x1e70 */ 67, 72, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e80 */ 32, 77, 65, 67, 72, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48,
/* 0x1e90 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 80, 80, 67, 51,
/* 0x1ea0 */ 50, 66, 88, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 80, 80,
/* 0x1eb0 */ 67, 51, 50, 66, 88, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1ec0 */ 108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67, 77, 65, 73, 78, 88,
/* 0x1ed0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 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, 77, 65, 67, 72, 95, 85, 78, 67, 9, 48, 48, 48,
/* 0x1f00 */ 48, 48, 48, 48, 48, 32, 77, 65, 67, 72, 95, 85, 78, 67, 10, 48,
/* 0x1f10 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x1f20 */ 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f30 */ 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48,
/* 0x1f40 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50,
/* 0x1f50 */ 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69,
/* 0x1f60 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
/* 0x1f70 */ 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f80 */ 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1f90 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48,
/* 0x1fa0 */ 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48,
/* 0x1fb0 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90,
/* 0x1fc0 */ 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x1fd0 */ 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48,
/* 0x1fe0 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90,
/* 0x1ff0 */ 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x2000 */ 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48,
/* 0x2010 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90,
/* 0x2020 */ 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x2030 */ 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48,
/* 0x2040 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 70,
/* 0x2050 */ 76, 85, 83, 72, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 70,
/* 0x2060 */ 76, 85, 83, 72, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x2070 */ 32, 32, 32,100, 32, 32, 77, 65, 67, 72, 77, 65, 73, 78, 89, 9,
/* 0x2080 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 72, 77, 65, 73,
/* 0x2090 */ 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32,
/* 0x20a0 */ 32, 32, 32, 32, 77, 65, 67, 77, 65, 73, 78, 88, 9, 48, 48, 48,
/* 0x20b0 */ 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, 10, 10, 82, 69,
/* 0x20c0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
/* 0x20d0 */ 32, 70, 79, 82, 32, 91, 77, 65, 67, 77, 65, 73, 78, 88, 93, 58,
/* 0x20e0 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32,
/* 0x20f0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85,
/* 0x2100 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67,
/* 0x2110 */ 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 77, 65, 67,
/* 0x2120 */ 72, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 52,
/* 0x2130 */ 56, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69,
/* 0x2140 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69,
/* 0x2150 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69,
/* 0x2160 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65,
/* 0x2170 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80,
/* 0x2180 */ 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78,
/* 0x2190 */ 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84,
/* 0x21a0 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32,
/* 0x21b0 */ 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
/* 0x21c0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x21d0 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
/* 0x21e0 */ 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32,
/* 0x21f0 */ 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82,
/* 0x2200 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68,
/* 0x2210 */ 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79,
/* 0x2220 */ 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
/* 0x2230 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
/* 0x2240 */ 48, 48, 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, 67, 95, 82,
/* 0x2250 */ 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84,
/* 0x2260 */ 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x2270 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77,
/* 0x2280 */ 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84,
/* 0x2290 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x22a0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48,
/* 0x22b0 */ 48, 48, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32,
/* 0x22c0 */ 32, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48,
/* 0x22d0 */ 43, 48,120, 48, 48, 48, 48, 48, 48, 50, 52, 10
};