arm64 works: ELF layout for page holes

modified:   stub/src/arm64-linux.elf-entry.S
	modified:   stub/src/arm64-linux.elf-fold.S

	modified:   stub/arm64-linux.elf-entry.h
	modified:   stub/arm64-linux.elf-fold.h
	modified:   stub/tmp/arm64-linux.elf-entry.bin.dump
	modified:   stub/tmp/arm64-linux.elf-fold.map
This commit is contained in:
John Reiser 2020-05-10 09:18:06 -07:00 committed by Markus F.X.J. Oberhumer
parent 2a849444db
commit b463f24eda
6 changed files with 455 additions and 466 deletions

View File

@ -1,5 +1,5 @@
/* arm64-linux.elf-entry.h
created from arm64-linux.elf-entry.bin, 8110 (0x1fae) bytes
created from arm64-linux.elf-entry.bin, 8050 (0x1f72) bytes
This file is part of the UPX executable compressor.
@ -31,14 +31,14 @@
*/
#define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 8110
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0xaf20ceb5
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x1c7b1387
#define STUB_ARM64_LINUX_ELF_ENTRY_SIZE 8050
#define STUB_ARM64_LINUX_ELF_ENTRY_ADLER32 0xc594ba2a
#define STUB_ARM64_LINUX_ELF_ENTRY_CRC32 0x5df6790e
unsigned char stub_arm64_linux_elf_entry[8110] = {
unsigned char stub_arm64_linux_elf_entry[8050] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 1, 0,183, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 88, 23, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 24, 23, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
/* 0x0040 */ 0, 0, 0, 0, 0, 0, 0,148,254, 15, 31,248,226, 15,191,169,
/* 0x0050 */ 7, 64, 33,139, 5, 0,128, 18, 4, 0,176, 82, 24, 0, 0, 20,
@ -333,214 +333,211 @@ unsigned char stub_arm64_linux_elf_entry[8110] = {
/* 0x1260 */ 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105,
/* 0x1270 */ 108,101,100, 46, 10, 0, 0, 0, 5, 0,128,210, 98, 0,128, 82,
/* 0x1280 */ 200, 27,128, 82, 1, 0, 0,212,192, 3, 95,214,244, 3, 30,170,
/* 0x1290 */ 0, 67, 95,184, 25, 51, 0,209, 57, 3, 0,203,149, 6, 64,185,
/* 0x12a0 */ 129, 2, 25,203, 4, 0,128, 18, 67, 4,128, 82, 33, 64, 53,139,
/* 0x12b0 */ 0, 0,128,210,241,255,255,151,224, 7,191,169,136, 10, 64,185,
/* 0x12c0 */ 129, 2, 25,203,228, 3, 27, 42, 67, 2,128, 82,250,111,191,169,
/* 0x12d0 */ 33, 0, 8,139,233,255,255,151, 23, 0, 25,203,232, 3, 24,170,
/* 0x12e0 */ 24, 3, 23,139,155, 2, 64,185,128, 66, 0,145,148, 2, 23,139,
/* 0x12f0 */ 157, 66, 53,139, 28, 3, 26,138,189, 3, 28,203,132, 50, 64, 57,
/* 0x1300 */ 245, 15, 31,248,227, 3, 0,145,226, 3, 20,170,129, 10, 64,185,
/* 0x1310 */ 0, 1, 63,214,232, 7, 65,248,128, 66, 64,248, 65, 3,192,218,
/* 0x1320 */ 33, 16,192,218, 33, 4, 0,145, 33,212,118,211, 0, 0, 1,170,
/* 0x1330 */ 128, 66, 0,248,162, 0,128, 82,225, 3, 29, 42,224, 3, 28,170,
/* 0x1340 */ 72, 28,128, 82, 1, 0, 0,212, 29, 67, 95,184, 60, 67, 59,139,
/* 0x1350 */ 156, 3, 23,139,128, 66, 0,145, 0, 0, 31,214, 47,112,114,111,
/* 0x1360 */ 99, 47,115,101,108,102, 47,101,120,101, 0, 0, 1,132, 64,248,
/* 0x1370 */ 225,255,255,181,192, 3, 95,214,194, 1,128, 82, 1,255,255, 16,
/* 0x1380 */ 64, 0,128, 82, 8, 8,128, 82, 1, 0, 0,212,224, 15,128, 82,
/* 0x1390 */ 168, 11,128, 82, 1, 0, 0,212,248, 3, 30,170,224, 3, 0,145,
/* 0x13a0 */ 243,255,255,151,242,255,255,151,246, 3, 0,170, 1,136,192,168,
/* 0x13b0 */ 63, 24, 0,113, 96, 0, 0, 84,161,255,255, 53, 34, 0,160,210,
/* 0x13c0 */ 250, 3, 2,203, 96, 12,128, 18,161,252,255, 16, 2, 0,128, 82,
/* 0x13d0 */ 8, 7,128, 82, 1, 0, 0,212,251, 3, 0, 42, 31, 0, 0,113,
/* 0x13e0 */ 203,252,255, 84,170,255,255,151, 0, 0, 0, 0,102,105,108,101,
/* 0x13f0 */ 32,102,111,114,109, 97,116, 32,101,108,102, 54, 52, 45,108,105,
/* 0x1400 */ 116,116,108,101, 97, 97,114, 99,104, 54, 52, 10, 10, 83,101, 99,
/* 0x1410 */ 116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32,
/* 0x1420 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32,
/* 0x1430 */ 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1440 */ 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1450 */ 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32,
/* 0x1460 */ 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48,
/* 0x1470 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48,
/* 0x1480 */ 48, 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1490 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x14a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x14b0 */ 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x14c0 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69,
/* 0x14d0 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72,
/* 0x14e0 */ 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x14f0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1500 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1510 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 56, 32,
/* 0x1520 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x1530 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82,
/* 0x1540 */ 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48,
/* 0x1550 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1560 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1570 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1580 */ 52, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1590 */ 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51,
/* 0x15a0 */ 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48,
/* 0x15b0 */ 48, 48, 48, 48, 49, 50, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x15c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x15d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x15e0 */ 48, 48, 48, 52, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x15f0 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10,
/* 0x1600 */ 32, 32, 52, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32,
/* 0x1610 */ 32, 32, 48, 48, 48, 48, 48, 49, 49, 99, 32, 32, 48, 48, 48, 48,
/* 0x1620 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1630 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x1640 */ 48, 48, 48, 48, 48, 49, 55, 48, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x1650 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78,
/* 0x1660 */ 76, 89, 10, 32, 32, 53, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32,
/* 0x1670 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,102, 48, 32, 32, 48,
/* 0x1680 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1690 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x16a0 */ 48, 32, 32, 48, 48, 48, 48, 48, 50, 56, 99, 32, 32, 50, 42, 42,
/* 0x16b0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65,
/* 0x16c0 */ 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 69,
/* 0x16d0 */ 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 98, 56,
/* 0x16e0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x16f0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1700 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 55, 99, 32, 32,
/* 0x1710 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32,
/* 0x1720 */ 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10,
/* 0x1730 */ 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32,
/* 0x1740 */ 32, 32, 48, 48, 48, 48, 48, 57, 54, 56, 32, 32, 48, 48, 48, 48,
/* 0x1750 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1760 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x1770 */ 48, 48, 48, 48, 48, 52, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x1780 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78,
/* 0x1790 */ 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49,
/* 0x17a0 */ 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 52, 57, 99, 32, 32, 48,
/* 0x17b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x17c0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x17d0 */ 48, 32, 32, 48, 48, 48, 48, 48,100, 57, 99, 32, 32, 50, 42, 42,
/* 0x17e0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65,
/* 0x17f0 */ 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 76, 90, 77, 65, 95, 68,
/* 0x1800 */ 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1810 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1820 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1830 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 50, 51, 56, 32, 32,
/* 0x1840 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32,
/* 0x1850 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 69, 76, 70,
/* 0x1860 */ 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48,
/* 0x1870 */ 48, 51,101, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1880 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1890 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 50, 51,
/* 0x18a0 */ 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84,
/* 0x18b0 */ 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32,
/* 0x18c0 */ 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48,
/* 0x18d0 */ 48, 48, 48, 49, 55, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x18e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x18f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x1900 */ 49, 50, 55, 56, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84,
/* 0x1910 */ 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65,
/* 0x1920 */ 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66,
/* 0x1930 */ 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1940 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77,
/* 0x1950 */ 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1960 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69,
/* 0x1970 */ 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1290 */ 0, 67, 95,184, 25, 51, 0,209, 57, 3, 0,203,129, 6, 64,185,
/* 0x12a0 */ 4, 0,128, 18, 67, 4,128, 82, 0, 0,128,210,243,255,255,151,
/* 0x12b0 */ 224, 7,191,169,250,111,191,169,251, 3, 0,170,226, 3, 0,170,
/* 0x12c0 */ 225, 15, 31,248,227, 3, 0,145,128, 66, 0,145,129, 10, 64,185,
/* 0x12d0 */ 132, 50, 64, 57, 0, 3, 63,214,232, 7, 65,248, 96, 67, 64,248,
/* 0x12e0 */ 65, 3,192,218, 33, 16,192,218, 33, 4, 0,145, 33,212,118,211,
/* 0x12f0 */ 0, 0, 1,170, 96, 67, 0,248,162, 0,128, 82,225, 27, 64,185,
/* 0x1300 */ 224, 3, 27,170, 72, 28,128, 82, 1, 0, 0,212,128, 2, 64,185,
/* 0x1310 */ 29, 67, 95,184, 60, 3, 0,139, 96, 67, 0,145, 0, 0, 31,214,
/* 0x1320 */ 47,112,114,111, 99, 47,115,101,108,102, 47,101,120,101, 0, 0,
/* 0x1330 */ 1,132, 64,248,225,255,255,181,192, 3, 95,214,194, 1,128, 82,
/* 0x1340 */ 1,255,255, 16, 64, 0,128, 82, 8, 8,128, 82, 1, 0, 0,212,
/* 0x1350 */ 224, 15,128, 82,168, 11,128, 82, 1, 0, 0,212,248, 3, 30,170,
/* 0x1360 */ 224, 3, 0,145,243,255,255,151,242,255,255,151,246, 3, 0,170,
/* 0x1370 */ 1,136,192,168, 63, 24, 0,113, 96, 0, 0, 84,161,255,255, 53,
/* 0x1380 */ 34, 0,160,210,250, 3, 2,203, 96, 12,128, 18,161,252,255, 16,
/* 0x1390 */ 2, 0,128, 82, 8, 7,128, 82, 1, 0, 0,212,251, 3, 0, 42,
/* 0x13a0 */ 31, 0, 0,113,203,252,255, 84,185,255,255,151, 0, 0, 0, 0,
/* 0x13b0 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 54,
/* 0x13c0 */ 52, 45,108,105,116,116,108,101, 97, 97,114, 99,104, 54, 52, 10,
/* 0x13d0 */ 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78,
/* 0x13e0 */ 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,
/* 0x13f0 */ 101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32,
/* 0x1400 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32,
/* 0x1410 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,
/* 0x1420 */ 111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115,
/* 0x1430 */ 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32,
/* 0x1440 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, 48,
/* 0x1450 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1460 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1470 */ 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32,
/* 0x1480 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67,
/* 0x1490 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78,
/* 0x14a0 */ 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48,
/* 0x14b0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x14c0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x14d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x14e0 */ 48, 52, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x14f0 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32,
/* 0x1500 */ 50, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32,
/* 0x1510 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1520 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x1530 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1540 */ 48, 48, 48, 48, 52, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x1550 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89,
/* 0x1560 */ 10, 32, 32, 51, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32,
/* 0x1570 */ 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 56, 32, 32, 48, 48, 48,
/* 0x1580 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1590 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x15a0 */ 32, 48, 48, 48, 48, 48, 48, 52, 56, 32, 32, 50, 42, 42, 48, 32,
/* 0x15b0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79,
/* 0x15c0 */ 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 68, 32, 32, 32,
/* 0x15d0 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 49, 99, 32, 32,
/* 0x15e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x15f0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1600 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 55, 48, 32, 32, 50, 42,
/* 0x1610 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x1620 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 78, 82, 86, 50, 66,
/* 0x1630 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,102,
/* 0x1640 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1650 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1660 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 56, 99, 32,
/* 0x1670 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x1680 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90,
/* 0x1690 */ 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48,
/* 0x16a0 */ 48, 48, 98, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x16b0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x16c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51,
/* 0x16d0 */ 55, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x16e0 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79,
/* 0x16f0 */ 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67,
/* 0x1700 */ 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 54, 56, 32, 32,
/* 0x1710 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1720 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1730 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 51, 52, 32, 32, 50, 42,
/* 0x1740 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x1750 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, 95,
/* 0x1760 */ 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 52, 57,
/* 0x1770 */ 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1780 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1790 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,100, 57, 99, 32,
/* 0x17a0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x17b0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 76, 90,
/* 0x17c0 */ 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48,
/* 0x17d0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x17e0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x17f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 50,
/* 0x1800 */ 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1810 */ 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48,
/* 0x1820 */ 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48,
/* 0x1830 */ 48, 48, 48, 48, 48, 51,101, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1840 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1850 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1860 */ 48, 49, 50, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x1870 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10,
/* 0x1880 */ 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32,
/* 0x1890 */ 32, 32, 48, 48, 48, 48, 48, 49, 51, 56, 32, 32, 48, 48, 48, 48,
/* 0x18a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x18b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x18c0 */ 48, 48, 48, 48, 49, 50, 55, 56, 32, 32, 50, 42, 42, 50, 32, 32,
/* 0x18d0 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44,
/* 0x18e0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76,
/* 0x18f0 */ 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1900 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x1910 */ 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48,
/* 0x1920 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77,
/* 0x1930 */ 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1940 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x1950 */ 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48,
/* 0x1960 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65,
/* 0x1970 */ 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1980 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70,
/* 0x1990 */ 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19a0 */ 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
/* 0x1990 */ 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19a0 */ 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10,
/* 0x19b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19c0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78,
/* 0x19d0 */ 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19e0 */ 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48,
/* 0x19c0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65,
/* 0x19d0 */ 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19e0 */ 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48,
/* 0x19f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x1a00 */ 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48,
/* 0x1a00 */ 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48,
/* 0x1a10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78,
/* 0x1a20 */ 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a20 */ 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a30 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x1a40 */ 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48,
/* 0x1a50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84,
/* 0x1a60 */ 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a70 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86,
/* 0x1a80 */ 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a90 */ 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48,
/* 0x1aa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x1ab0 */ 100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ac0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10,
/* 0x1ad0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ae0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48,
/* 0x1af0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1b00 */ 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b10 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76,
/* 0x1b20 */ 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48,
/* 0x1b30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95,
/* 0x1b40 */ 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b50 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76,
/* 0x1b60 */ 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48,
/* 0x1b70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95,
/* 0x1b80 */ 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b90 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76,
/* 0x1ba0 */ 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48,
/* 0x1bb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95,
/* 0x1bc0 */ 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bd0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69,
/* 0x1be0 */ 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bf0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78,
/* 0x1c00 */ 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c10 */ 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42,
/* 0x1c20 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c30 */ 48, 32, 77, 70, 76, 71, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c40 */ 48, 48, 48, 48, 48, 48, 52, 32,103, 32, 32, 32, 32, 32, 32, 32,
/* 0x1c50 */ 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c60 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116,
/* 0x1c70 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c80 */ 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 69, 9,
/* 0x1c90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 50, 56,
/* 0x1ca0 */ 32,117, 99,108, 95,110,114,118, 50,101, 95,100,101, 99,111,109,
/* 0x1cb0 */ 112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x1cc0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32,
/* 0x1cd0 */ 70, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ce0 */ 48, 48, 48, 48, 48, 49, 49, 99, 32,117, 99,108, 95,110,114,118,
/* 0x1cf0 */ 50,100, 95,100,101, 99,111,109,112,114,101,115,115, 95, 51, 50,
/* 0x1d00 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d10 */ 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 66, 9,
/* 0x1d20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,102, 48,
/* 0x1d30 */ 32,117, 99,108, 95,110,114,118, 50, 98, 95,100,101, 99,111,109,
/* 0x1d40 */ 112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32,
/* 0x1d60 */ 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48,
/* 0x1d70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76,122,
/* 0x1d80 */ 109, 97, 68,101, 99,111,100,101, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32,
/* 0x1da0 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48,
/* 0x1db0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,101,110,100, 95,
/* 0x1dc0 */ 100,101, 99,111,109,112,114,101,115,115, 10, 48, 48, 48, 48, 48,
/* 0x1dd0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32,
/* 0x1de0 */ 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48,
/* 0x1df0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 79, 95, 66, 73, 78,
/* 0x1e00 */ 70, 79, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
/* 0x1e10 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77,
/* 0x1e20 */ 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
/* 0x1e30 */ 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
/* 0x1e40 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
/* 0x1e50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e60 */ 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 66, 83, 51, 50,
/* 0x1e70 */ 32, 32, 32, 77, 70, 76, 71, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e80 */ 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 65, 65, 82, 67, 72,
/* 0x1e90 */ 54, 52, 95, 67, 65, 76, 76, 50, 54, 32, 32, 69, 76, 70, 77, 65,
/* 0x1ea0 */ 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1eb0 */ 48, 48, 48, 49, 50, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x1ec0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x1ed0 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70,
/* 0x1ee0 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
/* 0x1ef0 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1f00 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f10 */ 48, 48, 48, 48, 48, 52, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52,
/* 0x1f20 */ 95, 67, 79, 78, 68, 66, 82, 49, 57, 32, 32, 76, 90, 77, 65, 95,
/* 0x1f30 */ 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79,
/* 0x1f40 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69,
/* 0x1f50 */ 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84,
/* 0x1f60 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32,
/* 0x1f70 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76,
/* 0x1f80 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f90 */ 49, 55, 48, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 65, 66,
/* 0x1fa0 */ 83, 51, 50, 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, 10
/* 0x1a40 */ 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a50 */ 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48,
/* 0x1a60 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x1a70 */ 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48,
/* 0x1a80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82,
/* 0x1a90 */ 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1aa0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86,
/* 0x1ab0 */ 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ac0 */ 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48,
/* 0x1ad0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x1ae0 */ 100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48,
/* 0x1af0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76,
/* 0x1b00 */ 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48,
/* 0x1b10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x1b20 */ 100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48,
/* 0x1b30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76,
/* 0x1b40 */ 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48,
/* 0x1b50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x1b60 */ 100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48,
/* 0x1b70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76,
/* 0x1b80 */ 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48,
/* 0x1b90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x1ba0 */ 100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48,
/* 0x1bb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70,
/* 0x1bc0 */ 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bd0 */ 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42,
/* 0x1be0 */ 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bf0 */ 48, 48, 48, 48, 48, 32, 77, 70, 76, 71, 10, 48, 48, 48, 48, 48,
/* 0x1c00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32,103, 32, 32, 32,
/* 0x1c10 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48,
/* 0x1c20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,
/* 0x1c30 */ 116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c40 */ 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 78, 82,
/* 0x1c50 */ 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c60 */ 48, 49, 50, 56, 32,117, 99,108, 95,110,114,118, 50,101, 95,100,
/* 0x1c70 */ 101, 99,111,109,112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48,
/* 0x1c80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
/* 0x1c90 */ 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48,
/* 0x1ca0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 99, 32,117, 99,108,
/* 0x1cb0 */ 95,110,114,118, 50,100, 95,100,101, 99,111,109,112,114,101,115,
/* 0x1cc0 */ 115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1cd0 */ 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 78, 82,
/* 0x1ce0 */ 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1cf0 */ 48, 48,102, 48, 32,117, 99,108, 95,110,114,118, 50, 98, 95,100,
/* 0x1d00 */ 101, 99,111,109,112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48,
/* 0x1d10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
/* 0x1d20 */ 32, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48,
/* 0x1d30 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d40 */ 48, 32, 76,122,109, 97, 68,101, 99,111,100,101, 10, 48, 48, 48,
/* 0x1d50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32,
/* 0x1d60 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48,
/* 0x1d70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1d80 */ 101,110,100, 95,100,101, 99,111,109,112,114,101,115,115, 10, 48,
/* 0x1d90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1da0 */ 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48,
/* 0x1db0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 79,
/* 0x1dc0 */ 95, 66, 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x1dd0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x1de0 */ 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69,
/* 0x1df0 */ 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69,
/* 0x1e00 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65,
/* 0x1e10 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e20 */ 48, 48, 48, 48, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 65,
/* 0x1e30 */ 66, 83, 51, 50, 32, 32, 32, 77, 70, 76, 71, 10, 48, 48, 48, 48,
/* 0x1e40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 65,
/* 0x1e50 */ 65, 82, 67, 72, 54, 52, 95, 67, 65, 76, 76, 50, 54, 32, 32, 69,
/* 0x1e60 */ 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48,
/* 0x1e70 */ 48, 48, 48, 48, 48, 48, 48, 48,101, 52, 10, 10, 82, 69, 76, 79,
/* 0x1e80 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0x1e90 */ 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58,
/* 0x1ea0 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1eb0 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1ec0 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
/* 0x1ed0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 65, 65, 82,
/* 0x1ee0 */ 67, 72, 54, 52, 95, 67, 79, 78, 68, 66, 82, 49, 57, 32, 32, 76,
/* 0x1ef0 */ 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, 67,
/* 0x1f00 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79,
/* 0x1f10 */ 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70,
/* 0x1f20 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84,
/* 0x1f30 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1f40 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f50 */ 48, 48, 48, 48, 49, 51, 52, 32, 82, 95, 65, 65, 82, 67, 72, 54,
/* 0x1f60 */ 52, 95, 65, 66, 83, 51, 50, 32, 32, 32, 79, 95, 66, 73, 78, 70,
/* 0x1f70 */ 79, 10
};

View File

@ -1,5 +1,5 @@
/* arm64-linux.elf-fold.h
created from arm64-linux.elf-fold.bin, 2672 (0xa70) bytes
created from arm64-linux.elf-fold.bin, 2692 (0xa84) bytes
This file is part of the UPX executable compressor.
@ -31,20 +31,20 @@
*/
#define STUB_ARM64_LINUX_ELF_FOLD_SIZE 2672
#define STUB_ARM64_LINUX_ELF_FOLD_ADLER32 0x3b16a767
#define STUB_ARM64_LINUX_ELF_FOLD_CRC32 0x456496b0
#define STUB_ARM64_LINUX_ELF_FOLD_SIZE 2692
#define STUB_ARM64_LINUX_ELF_FOLD_ADLER32 0x31d6ad75
#define STUB_ARM64_LINUX_ELF_FOLD_CRC32 0x6fb35e62
unsigned char stub_arm64_linux_elf_fold[2672] = {
unsigned char stub_arm64_linux_elf_fold[2692] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 2, 0,183, 0, 1, 0, 0, 0,188, 0, 16, 0, 0, 0, 0, 0,
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
/* 0x0060 */ 112, 10, 0, 0, 0, 0, 0, 0,112, 10, 0, 0, 0, 0, 0, 0,
/* 0x0060 */ 132, 10, 0, 0, 0, 0, 0, 0,132, 10, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 132, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0090 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,146,
@ -56,151 +56,153 @@ unsigned char stub_arm64_linux_elf_fold[2672] = {
/* 0x0110 */ 2,132, 0,248,194,255,255,181, 34,132, 64,248, 2,132, 0,248,
/* 0x0120 */ 194,255,255,181, 4, 32, 0,209, 31,132, 0,248,231, 3, 0,170,
/* 0x0130 */ 246, 3, 0,170, 34, 12,193,168, 2, 12,129,168,194,255,255,181,
/* 0x0140 */ 247, 3, 0,170,225, 3, 6,170,129, 0, 0,249, 98, 4, 0, 24,
/* 0x0150 */ 34, 68, 0,184,226,255,129, 82, 32, 4, 0, 16, 88, 0, 0,148,
/* 0x0140 */ 247, 3, 0,170,225, 3, 6,170,129, 0, 0,249, 2, 5, 0, 24,
/* 0x0150 */ 34, 68, 0,184,226,255,129, 82,192, 4, 0, 16, 93, 0, 0,148,
/* 0x0160 */ 31, 4, 64,177, 66, 0, 0, 84, 95,104, 32, 56,231, 3, 20,170,
/* 0x0170 */ 230, 3, 25,170,255, 3, 40,209,165, 3, 0, 16,228, 3, 24,170,
/* 0x0170 */ 230, 3, 25,170,255, 3, 40,209, 69, 4, 0, 16,228, 3, 24,170,
/* 0x0180 */ 227, 3, 22,170,226, 3, 0,145,225, 3, 29, 42,224, 3, 28,170,
/* 0x0190 */ 222, 1, 0,148,255, 3, 40,145,248, 3, 0,170, 5, 0,128,210,
/* 0x01a0 */ 228, 3, 21, 42, 67, 0,128, 82, 34, 0,128, 82, 1, 0,130,210,
/* 0x01b0 */ 0, 0,128,210, 58, 0, 0,148,224, 3, 21, 42, 37, 0, 0,148,
/* 0x01c0 */ 254, 3, 24,170,224, 3, 26,170,225, 3, 27, 42,226,130, 95,248,
/* 0x01d0 */ 232, 26,128, 82, 64, 0, 31,214, 32, 32, 32, 61, 47,112,114,111,
/* 0x01e0 */ 99, 47,115,101,108,102, 47,101,120,101, 0, 0, 99, 28, 0, 18,
/* 0x01f0 */ 127, 72, 1,113,129, 1, 0, 84, 33,252, 66,211, 65, 1, 0,180,
/* 0x0200 */ 33, 4, 0,209, 2,120, 97,184, 67,120, 26, 83,127, 20, 0,113,
/* 0x0210 */ 129, 0, 0, 84, 67, 0, 1, 75, 98,100, 0, 51, 2,120, 33,184,
/* 0x0220 */ 1,255,255,181,192, 3, 95,214, 0, 0, 32,212,192, 3, 95,214,
/* 0x0230 */ 168, 11,128, 82, 1, 0, 0,212,232, 7,128, 82, 1, 0, 0,212,
/* 0x0240 */ 192, 3, 95,214, 8, 8,128, 82, 1, 0, 0,212,192, 3, 95,214,
/* 0x0250 */ 40, 7,128, 82, 1, 0, 0,212,192, 3, 95,214,168, 21,128, 82,
/* 0x0260 */ 1, 0, 0,212,192, 3, 95,214,200, 26,128, 82, 1, 0, 0,212,
/* 0x0270 */ 192, 3, 95,214,232, 26,128, 82, 1, 0, 0,212,192, 3, 95,214,
/* 0x0280 */ 72, 28,128, 82, 1, 0, 0,212,192, 3, 95,214,230,241,255, 24,
/* 0x0290 */ 5, 0,128,210, 4, 0,128,146, 99, 0, 6, 42,200, 27,128, 82,
/* 0x02a0 */ 1, 0, 0,212,192, 3, 95,214, 2, 0,128,210,225, 3, 0,170,
/* 0x02b0 */ 96, 12,128, 18,104, 4,128, 82, 4, 0, 0, 20,200, 9,128, 82,
/* 0x02c0 */ 2, 0, 0, 20, 8, 7,128, 82,227, 3, 2,170,226, 3, 1,170,
/* 0x02d0 */ 225, 3, 0,170, 96, 12,128,146, 1, 0, 0,212,192, 3, 95,214,
/* 0x02e0 */ 0, 0, 64,212, 2, 0,128, 82, 8, 0,128, 82, 1, 0, 0,212,
/* 0x02f0 */ 192, 3, 95,214,253,123,191,169, 3, 0,128,210,253, 3, 0,145,
/* 0x0300 */ 5, 0, 64,249, 4, 4, 64,249,191, 0, 2,235, 98, 0, 0, 84,
/* 0x0310 */ 224, 15,128, 82,199,255,255,151,127, 0, 2,235,160, 0, 0, 84,
/* 0x0320 */ 133,104, 99, 56, 37,104, 35, 56, 99, 4, 0,145,251,255,255, 23,
/* 0x0330 */ 1, 4, 64,249, 33, 0, 3,139, 1, 4, 0,249, 1, 0, 64,249,
/* 0x0340 */ 35, 0, 3,203, 3, 0, 0,249,253,123,193,168,192, 3, 95,214,
/* 0x0350 */ 253,123,187,169,253, 3, 0,145,243, 83, 1,169,245, 91, 2,169,
/* 0x0360 */ 244, 3, 0,170,243, 3, 1,170,246, 3, 2,170,245, 3, 3,170,
/* 0x0370 */ 96, 2, 64,249,160, 8, 0,180,224, 3, 20,170,130, 1,128,210,
/* 0x0380 */ 161, 3, 1,145,220,255,255,151,160, 67, 64,185,162, 71, 64,185,
/* 0x0390 */ 0, 1, 0, 53,160, 10,138, 82, 0, 43,164,114, 95, 0, 0,107,
/* 0x03a0 */ 225, 0, 0, 84,128, 2, 64,249, 0, 7, 0,180, 4, 0, 0, 20,
/* 0x03b0 */ 98, 0, 0, 52, 95, 0, 0,107,105, 0, 0, 84,224, 15,128, 82,
/* 0x03c0 */ 156,255,255,151, 99, 2, 64,249,225, 3, 0, 42, 63, 0, 3,235,
/* 0x03d0 */ 104,255,255, 84, 95, 0, 0,107, 2, 4, 0, 84,161, 31, 0,249,
/* 0x03e0 */ 225, 3, 2, 42,128, 6, 64,249,163,227, 0,145, 98, 6, 64,249,
/* 0x03f0 */ 164, 35, 65, 57,192, 2, 63,214, 32,254,255, 53,161, 31, 64,249,
/* 0x0400 */ 160, 67, 64,185, 63, 0, 0,235,161,253,255, 84,163, 39, 65, 57,
/* 0x0410 */ 85, 1, 0,180, 35, 1, 0, 52, 63, 0, 8,241,136, 0, 0, 84,
/* 0x0420 */ 96, 2, 64,249, 31, 0, 1,235,129, 0, 0, 84, 96, 6, 64,249,
/* 0x0430 */ 162, 43, 65, 57,160, 2, 63,214,163, 71, 64,185,129, 6, 64,249,
/* 0x0440 */ 128, 2, 64,249, 33, 0, 3,139,129, 6, 0,249, 0, 0, 3,203,
/* 0x0450 */ 128, 2, 0,249, 5, 0, 0, 20, 97, 6, 64,249,224, 3, 20,170,
/* 0x0460 */ 226, 3, 2, 42,164,255,255,151,163, 67, 64,185, 97, 6, 64,249,
/* 0x0470 */ 96, 2, 64,249, 33, 0, 3,139, 97, 6, 0,249, 0, 0, 3,203,
/* 0x0480 */ 96, 2, 0,249,187,255,255, 23,243, 83, 65,169,245, 91, 66,169,
/* 0x0490 */ 253,123,197,168,192, 3, 95,214, 0, 2, 0,180,224, 1, 0, 55,
/* 0x04a0 */ 228, 3, 1, 42, 3, 0, 64,249,127, 0, 4,235,129, 0, 0, 84,
/* 0x04b0 */ 4, 0, 0,249, 2, 4, 0,249, 8, 0, 0, 20,127, 4, 0,241,
/* 0x04c0 */ 97, 0, 0, 84, 97, 0, 0, 52,250,255,255, 23, 99, 0, 0,180,
/* 0x04d0 */ 0, 64, 0,145,244,255,255, 23,192, 3, 95,214,253,123,181,169,
/* 0x04e0 */ 253, 3, 0,145,234, 47, 7,109,202, 0,103,158, 6, 16, 64,249,
/* 0x04f0 */ 238, 63, 9,109,247, 99, 3,169,236, 55, 8,109,251,115, 5,169,
/* 0x0500 */ 232, 39, 6,109,247, 3, 0,170, 28, 0, 6,139, 64, 1,102,158,
/* 0x0510 */ 248, 3, 3,170,245, 91, 2,169,249,107, 4,169,243, 83, 1,169,
/* 0x0520 */ 77, 0, 39, 30,246, 3, 1,170,142, 0,103,158,250, 3, 7,170,
/* 0x0530 */ 175, 0,103,158, 2, 0, 64,249,161, 1, 0,180, 65, 16, 64,249,
/* 0x0540 */ 67, 6,128, 82, 4, 0,128, 18, 5, 0,128,210, 65, 0, 1,139,
/* 0x0550 */ 32, 36, 64,249, 33, 20, 64,249, 64, 0, 0,203, 2, 0,128, 82,
/* 0x0560 */ 79,255,255,151,243, 3, 0,170, 43, 0, 0, 20,224, 34, 64,121,
/* 0x0570 */ 3, 2,128, 82,231,114, 64,121,228, 3, 28,170, 31, 12, 0,113,
/* 0x0580 */ 19, 0,128,146, 99, 16,159, 26,224, 3, 2,170, 99,136, 0, 17,
/* 0x0590 */ 231, 4, 0, 81,255, 4, 0, 49,160, 1, 0, 84,133, 0, 64,185,
/* 0x05a0 */ 191, 4, 0,113, 1, 1, 0, 84,136, 8, 64,249,133, 20, 64,249,
/* 0x05b0 */ 127, 2, 8,235, 5, 1, 5,139,115,146,136,154, 63, 0, 5,235,
/* 0x05c0 */ 33, 32,133,154,132,224, 0,145,242,255,255, 23,228, 3, 58,170,
/* 0x05d0 */ 115, 2, 26,138,129, 0, 1,139, 33, 0, 19,203, 33, 0, 26,138,
/* 0x05e0 */ 163, 0, 32, 55, 83, 0, 0,181,162, 0, 0,181, 0, 0,128,210,
/* 0x05f0 */ 4, 0, 0, 20,224, 3, 19,170, 2, 0, 0, 20, 67, 6,128, 82,
/* 0x0600 */ 2, 0,128, 82, 4, 0,128, 18, 5, 0,128,210, 36,255,255,151,
/* 0x0610 */ 19, 0, 19,203,224, 3, 58,170,232, 3, 39, 30, 12, 0,103,158,
/* 0x0620 */ 1, 1, 38, 30,224,114, 64,121, 63, 0, 0,107,106, 20, 0, 84,
/* 0x0630 */ 128, 3, 64,185, 54, 1, 0,180, 31, 24, 0,113,225, 0, 0, 84,
/* 0x0640 */ 130, 11, 64,249,224, 3, 24,170, 97, 0,128, 82, 98, 2, 2,139,
/* 0x0650 */ 146,255,255,151,148, 0, 0, 20, 31, 4, 0,113, 65, 18, 0, 84,
/* 0x0660 */ 86, 2, 0,180,128, 7, 64,249, 0, 2, 0,181,226, 18, 64,249,
/* 0x0670 */ 224, 3, 24,170,131, 11, 64,249, 97, 0,128, 82, 98, 2, 2,139,
/* 0x0680 */ 66, 0, 3,139,133,255,255,151,226,114, 64,121,224, 3, 24,170,
/* 0x0690 */ 161, 0,128, 82,129,255,255,151,226,110, 64,121,224, 3, 24,170,
/* 0x06a0 */ 129, 0,128, 82,125,255,255,151,155, 7, 64,185, 0, 72,140, 82,
/* 0x06b0 */ 32,106,174,114,149, 11, 64,249,123, 11, 30, 83,223, 2, 31,235,
/* 0x06c0 */ 27, 36,219, 26,117, 2, 21,139, 96, 11, 0, 18,148, 19, 64,249,
/* 0x06d0 */ 135, 7, 64,249, 67, 6,128, 82, 9, 0, 39, 30,128, 23, 64,249,
/* 0x06e0 */ 180, 83, 0,249,160, 2, 0,139,181, 87, 0,249, 11, 0,103,158,
/* 0x06f0 */ 128, 1,102,158, 36, 1, 38, 30,165, 2, 0,138, 64, 0,128, 82,
/* 0x0700 */ 2, 16,159, 26,223, 2, 31,235, 66, 0, 4, 42, 64, 2,128, 82,
/* 0x0710 */ 164, 1, 38, 30,181, 2, 5,203, 3, 0,131, 26,180, 0, 20,139,
/* 0x0720 */ 223, 2, 31,235,224, 3, 21,170,225, 3, 20,170,229, 0, 5,203,
/* 0x0730 */ 132, 0,159, 90,218,254,255,151,191, 2, 0,235, 96, 0, 0, 84,
/* 0x0740 */ 224, 15,128, 82,187,254,255,151,214, 0, 0,180,194, 1,102,158,
/* 0x0750 */ 224, 3, 22,170,227, 1,102,158,161,131, 2,145,253,254,255,151,
/* 0x0760 */ 128, 1,102,158,249, 3, 20,203, 57, 3, 0,138,123, 0, 8, 55,
/* 0x0770 */ 86, 1, 0,181, 61, 0, 0, 20,217,255,255,180,161, 2, 20,139,
/* 0x0780 */ 0, 0,128,210, 63,104, 32, 56, 0, 4, 0,145, 31, 0, 25,235,
/* 0x0790 */ 161,255,255, 84,247,255,255, 23,128, 3, 64,249,225, 3, 0,178,
/* 0x07a0 */ 0,128, 64,146, 31, 0, 1,235, 97, 5, 0, 84,128, 23, 64,249,
/* 0x07b0 */ 130, 19, 64,249,129, 11, 64,249, 31, 0, 2,235, 97, 1, 0, 84,
/* 0x07c0 */ 123, 14, 0,145,123, 3, 0,139,123, 3, 1,139,123,247,126,146,
/* 0x07d0 */ 224, 3, 27, 75, 0, 0, 58, 10, 31, 28, 0,113,105, 0, 0, 84,
/* 0x07e0 */ 0, 0,128, 82, 13, 0, 0, 20,128, 7, 64,249,224, 6, 0,180,
/* 0x07f0 */ 0, 0,128,210, 1, 0,130,210, 98, 0,128, 82, 67, 4,128, 82,
/* 0x0800 */ 4, 0,128, 18,229, 3, 0,170,165,254,255,151,251, 3, 0,170,
/* 0x0810 */ 32, 2, 0,180, 32, 0,128, 82, 33, 0,128, 82, 1,128,186,114,
/* 0x0820 */ 97, 3, 0,185, 1,120,128, 82,225,203,186,114, 97, 7, 0,185,
/* 0x0830 */ 160, 0, 0, 52,224, 3, 27,170, 1, 1,128,210,162, 0,128, 82,
/* 0x0840 */ 144,254,255,151, 0,251,127,146, 1, 0,128, 82,226, 3, 27,170,
/* 0x0850 */ 18,255,255,151, 34, 1, 38, 30,224, 3, 21,170,225, 3, 20,170,
/* 0x0860 */ 136,254,255,151,224,246,255, 53, 96, 1,102,158, 52, 3, 20,139,
/* 0x0870 */ 181, 2, 20,139,191, 2, 0,235, 98, 1, 0, 84, 97, 1,102,158,
/* 0x0880 */ 224, 3, 21,170, 34, 1, 38, 30, 67, 6,128, 82, 4, 0,128, 18,
/* 0x0890 */ 5, 0,128,210, 33, 0, 21,203,129,254,255,151,191, 2, 0,235,
/* 0x08a0 */ 1,245,255, 84, 0, 1, 38, 30,156,227, 0,145, 0, 4, 0, 17,
/* 0x08b0 */ 8, 0, 39, 30, 91,255,255, 23, 64, 1,102,158,192, 0, 0,180,
/* 0x08c0 */ 19, 0, 0,249, 4, 0, 0, 20, 59, 0, 19,139,123, 35, 0,145,
/* 0x08d0 */ 210,255,255, 23,224, 14, 64,249,232, 39, 70,109,245, 91, 66,169,
/* 0x08e0 */ 234, 47, 71,109, 96, 2, 0,139,236, 55, 72,109,243, 83, 65,169,
/* 0x08f0 */ 238, 63, 73,109,247, 99, 67,169,249,107, 68,169,251,115, 69,169,
/* 0x0900 */ 253,123,203,168,192, 3, 95,214,253,123,182,169,253, 3, 0,145,
/* 0x0910 */ 247, 99, 3,169,247, 3, 3,170, 3, 4, 64,185,243, 83, 1,169,
/* 0x0920 */ 162, 63, 0,249,243, 3, 2,170, 99, 48, 0,145, 2, 0, 64,185,
/* 0x0930 */ 162, 59, 0,249,226, 3, 4,170,160, 79, 0,249,116, 2, 1,145,
/* 0x0940 */ 163, 75, 0,249, 3, 0,128,210,160, 71, 0,249,160, 67, 2,145,
/* 0x0950 */ 161, 67, 0,249,161,195, 1,145,245, 91, 2,169,249, 35, 0,249,
/* 0x0960 */ 249, 3, 7,170,165, 47, 0,249, 22, 0,128, 82,166, 55, 0,249,
/* 0x0970 */ 164, 51, 0,249,119,254,255,151,164, 51, 64,249,161, 3, 2,145,
/* 0x0980 */ 165, 47, 64,249, 2, 0,128, 82,227, 3, 23,170,166,163, 1,145,
/* 0x0990 */ 231, 3, 25,170,224, 3, 19,170,209,254,255,151,245, 3, 0,170,
/* 0x09a0 */ 33, 1,128, 82,224, 3, 23,170,226, 3, 21,170,187,254,255,151,
/* 0x09b0 */ 96,114, 64,121,223, 2, 0,107,226, 4, 0, 84,128, 2, 64,185,
/* 0x09c0 */ 31, 12, 0,113, 33, 4, 0, 84,129, 10, 64,249,160, 55, 64,249,
/* 0x09d0 */ 32, 0, 0,139, 1, 0,128, 82,226, 3, 1, 42, 58,254,255,151,
/* 0x09e0 */ 248, 3, 0, 42, 96, 0,248, 54,224, 15,128, 82, 17,254,255,151,
/* 0x09f0 */ 225, 3, 19,170, 2,128,128,210, 16,254,255,151, 31, 0, 16,241,
/* 0x0a00 */ 65,255,255, 84, 1, 0,128,210,226, 3, 24, 42,227, 3, 1,170,
/* 0x0a10 */ 228, 3, 1,170,229, 3, 1,170,166,163, 1,145,231, 3, 25,170,
/* 0x0a20 */ 224, 3, 19,170,191, 55, 0,249,173,254,255,151,245, 3, 0,170,
/* 0x0a30 */ 162, 55, 64,249,224, 3, 23,170,225, 0,128, 82,151,254,255,151,
/* 0x0a40 */ 224, 3, 24, 42, 3,254,255,151,148,226, 0,145,214, 6, 0, 17,
/* 0x0a50 */ 216,255,255, 23,224, 3, 21,170,249, 35, 64,249,243, 83, 65,169,
/* 0x0a60 */ 245, 91, 66,169,247, 99, 67,169,253,123,202,168,192, 3, 95,214
/* 0x0190 */ 227, 1, 0,148,255, 3, 40,145,248, 3, 0,170, 33, 71, 64,249,
/* 0x01a0 */ 34, 43, 64,249,224, 3, 25,170, 33, 0, 2,203, 55, 0, 0,148,
/* 0x01b0 */ 5, 0,128,210,228, 3, 21, 42, 67, 0,128, 82, 34, 0,128, 82,
/* 0x01c0 */ 1, 0,130,210, 0, 0,128,210, 58, 0, 0,148,224, 3, 21, 42,
/* 0x01d0 */ 37, 0, 0,148,254, 3, 24,170,224, 3, 26,170,225, 3, 27, 42,
/* 0x01e0 */ 226,130, 95,248,232, 26,128, 82, 64, 0, 31,214, 32, 32, 32, 61,
/* 0x01f0 */ 47,112,114,111, 99, 47,115,101,108,102, 47,101,120,101, 0, 0,
/* 0x0200 */ 99, 28, 0, 18,127, 72, 1,113,129, 1, 0, 84, 33,252, 66,211,
/* 0x0210 */ 65, 1, 0,180, 33, 4, 0,209, 2,120, 97,184, 67,120, 26, 83,
/* 0x0220 */ 127, 20, 0,113,129, 0, 0, 84, 67, 0, 1, 75, 98,100, 0, 51,
/* 0x0230 */ 2,120, 33,184, 1,255,255,181,192, 3, 95,214, 0, 0, 32,212,
/* 0x0240 */ 192, 3, 95,214,168, 11,128, 82, 1, 0, 0,212,232, 7,128, 82,
/* 0x0250 */ 1, 0, 0,212,192, 3, 95,214, 8, 8,128, 82, 1, 0, 0,212,
/* 0x0260 */ 192, 3, 95,214, 40, 7,128, 82, 1, 0, 0,212,192, 3, 95,214,
/* 0x0270 */ 168, 21,128, 82, 1, 0, 0,212,192, 3, 95,214,200, 26,128, 82,
/* 0x0280 */ 1, 0, 0,212,192, 3, 95,214,232, 26,128, 82, 1, 0, 0,212,
/* 0x0290 */ 192, 3, 95,214, 72, 28,128, 82, 1, 0, 0,212,192, 3, 95,214,
/* 0x02a0 */ 70,241,255, 24, 5, 0,128,210, 4, 0,128,146, 99, 0, 6, 42,
/* 0x02b0 */ 200, 27,128, 82, 1, 0, 0,212,192, 3, 95,214, 2, 0,128,210,
/* 0x02c0 */ 225, 3, 0,170, 96, 12,128, 18,104, 4,128, 82, 4, 0, 0, 20,
/* 0x02d0 */ 200, 9,128, 82, 2, 0, 0, 20, 8, 7,128, 82,227, 3, 2,170,
/* 0x02e0 */ 226, 3, 1,170,225, 3, 0,170, 96, 12,128,146, 1, 0, 0,212,
/* 0x02f0 */ 192, 3, 95,214, 0, 0, 64,212, 2, 0,128, 82, 8, 0,128, 82,
/* 0x0300 */ 1, 0, 0,212,192, 3, 95,214,253,123,191,169, 3, 0,128,210,
/* 0x0310 */ 253, 3, 0,145, 5, 0, 64,249, 4, 4, 64,249,191, 0, 2,235,
/* 0x0320 */ 98, 0, 0, 84,224, 15,128, 82,199,255,255,151,127, 0, 2,235,
/* 0x0330 */ 160, 0, 0, 84,133,104, 99, 56, 37,104, 35, 56, 99, 4, 0,145,
/* 0x0340 */ 251,255,255, 23, 1, 4, 64,249, 33, 0, 3,139, 1, 4, 0,249,
/* 0x0350 */ 1, 0, 64,249, 35, 0, 3,203, 3, 0, 0,249,253,123,193,168,
/* 0x0360 */ 192, 3, 95,214,253,123,187,169,253, 3, 0,145,243, 83, 1,169,
/* 0x0370 */ 245, 91, 2,169,244, 3, 0,170,243, 3, 1,170,246, 3, 2,170,
/* 0x0380 */ 245, 3, 3,170, 96, 2, 64,249,160, 8, 0,180,224, 3, 20,170,
/* 0x0390 */ 130, 1,128,210,161, 3, 1,145,220,255,255,151,160, 67, 64,185,
/* 0x03a0 */ 162, 71, 64,185, 0, 1, 0, 53,160, 10,138, 82, 0, 43,164,114,
/* 0x03b0 */ 95, 0, 0,107,225, 0, 0, 84,128, 2, 64,249, 0, 7, 0,180,
/* 0x03c0 */ 4, 0, 0, 20, 98, 0, 0, 52, 95, 0, 0,107,105, 0, 0, 84,
/* 0x03d0 */ 224, 15,128, 82,156,255,255,151, 99, 2, 64,249,225, 3, 0, 42,
/* 0x03e0 */ 63, 0, 3,235,104,255,255, 84, 95, 0, 0,107, 2, 4, 0, 84,
/* 0x03f0 */ 161, 31, 0,249,225, 3, 2, 42,128, 6, 64,249,163,227, 0,145,
/* 0x0400 */ 98, 6, 64,249,164, 35, 65, 57,192, 2, 63,214, 32,254,255, 53,
/* 0x0410 */ 161, 31, 64,249,160, 67, 64,185, 63, 0, 0,235,161,253,255, 84,
/* 0x0420 */ 163, 39, 65, 57, 85, 1, 0,180, 35, 1, 0, 52, 63, 0, 8,241,
/* 0x0430 */ 136, 0, 0, 84, 96, 2, 64,249, 31, 0, 1,235,129, 0, 0, 84,
/* 0x0440 */ 96, 6, 64,249,162, 43, 65, 57,160, 2, 63,214,163, 71, 64,185,
/* 0x0450 */ 129, 6, 64,249,128, 2, 64,249, 33, 0, 3,139,129, 6, 0,249,
/* 0x0460 */ 0, 0, 3,203,128, 2, 0,249, 5, 0, 0, 20, 97, 6, 64,249,
/* 0x0470 */ 224, 3, 20,170,226, 3, 2, 42,164,255,255,151,163, 67, 64,185,
/* 0x0480 */ 97, 6, 64,249, 96, 2, 64,249, 33, 0, 3,139, 97, 6, 0,249,
/* 0x0490 */ 0, 0, 3,203, 96, 2, 0,249,187,255,255, 23,243, 83, 65,169,
/* 0x04a0 */ 245, 91, 66,169,253,123,197,168,192, 3, 95,214, 0, 2, 0,180,
/* 0x04b0 */ 224, 1, 0, 55,228, 3, 1, 42, 3, 0, 64,249,127, 0, 4,235,
/* 0x04c0 */ 129, 0, 0, 84, 4, 0, 0,249, 2, 4, 0,249, 8, 0, 0, 20,
/* 0x04d0 */ 127, 4, 0,241, 97, 0, 0, 84, 97, 0, 0, 52,250,255,255, 23,
/* 0x04e0 */ 99, 0, 0,180, 0, 64, 0,145,244,255,255, 23,192, 3, 95,214,
/* 0x04f0 */ 253,123,181,169,253, 3, 0,145,234, 47, 7,109,202, 0,103,158,
/* 0x0500 */ 6, 16, 64,249,238, 63, 9,109,247, 99, 3,169,236, 55, 8,109,
/* 0x0510 */ 251,115, 5,169,232, 39, 6,109,247, 3, 0,170, 28, 0, 6,139,
/* 0x0520 */ 64, 1,102,158,248, 3, 3,170,245, 91, 2,169,249,107, 4,169,
/* 0x0530 */ 243, 83, 1,169, 77, 0, 39, 30,246, 3, 1,170,142, 0,103,158,
/* 0x0540 */ 250, 3, 7,170,175, 0,103,158, 2, 0, 64,249,161, 1, 0,180,
/* 0x0550 */ 65, 16, 64,249, 67, 6,128, 82, 4, 0,128, 18, 5, 0,128,210,
/* 0x0560 */ 65, 0, 1,139, 32, 36, 64,249, 33, 20, 64,249, 64, 0, 0,203,
/* 0x0570 */ 2, 0,128, 82, 79,255,255,151,243, 3, 0,170, 43, 0, 0, 20,
/* 0x0580 */ 224, 34, 64,121, 3, 2,128, 82,231,114, 64,121,228, 3, 28,170,
/* 0x0590 */ 31, 12, 0,113, 19, 0,128,146, 99, 16,159, 26,224, 3, 2,170,
/* 0x05a0 */ 99,136, 0, 17,231, 4, 0, 81,255, 4, 0, 49,160, 1, 0, 84,
/* 0x05b0 */ 133, 0, 64,185,191, 4, 0,113, 1, 1, 0, 84,136, 8, 64,249,
/* 0x05c0 */ 133, 20, 64,249,127, 2, 8,235, 5, 1, 5,139,115,146,136,154,
/* 0x05d0 */ 63, 0, 5,235, 33, 32,133,154,132,224, 0,145,242,255,255, 23,
/* 0x05e0 */ 228, 3, 58,170,115, 2, 26,138,129, 0, 1,139, 33, 0, 19,203,
/* 0x05f0 */ 33, 0, 26,138,163, 0, 32, 55, 83, 0, 0,181,162, 0, 0,181,
/* 0x0600 */ 0, 0,128,210, 4, 0, 0, 20,224, 3, 19,170, 2, 0, 0, 20,
/* 0x0610 */ 67, 6,128, 82, 2, 0,128, 82, 4, 0,128, 18, 5, 0,128,210,
/* 0x0620 */ 36,255,255,151, 19, 0, 19,203,224, 3, 58,170,232, 3, 39, 30,
/* 0x0630 */ 12, 0,103,158, 1, 1, 38, 30,224,114, 64,121, 63, 0, 0,107,
/* 0x0640 */ 106, 20, 0, 84,128, 3, 64,185, 54, 1, 0,180, 31, 24, 0,113,
/* 0x0650 */ 225, 0, 0, 84,130, 11, 64,249,224, 3, 24,170, 97, 0,128, 82,
/* 0x0660 */ 98, 2, 2,139,146,255,255,151,148, 0, 0, 20, 31, 4, 0,113,
/* 0x0670 */ 65, 18, 0, 84, 86, 2, 0,180,128, 7, 64,249, 0, 2, 0,181,
/* 0x0680 */ 226, 18, 64,249,224, 3, 24,170,131, 11, 64,249, 97, 0,128, 82,
/* 0x0690 */ 98, 2, 2,139, 66, 0, 3,139,133,255,255,151,226,114, 64,121,
/* 0x06a0 */ 224, 3, 24,170,161, 0,128, 82,129,255,255,151,226,110, 64,121,
/* 0x06b0 */ 224, 3, 24,170,129, 0,128, 82,125,255,255,151,155, 7, 64,185,
/* 0x06c0 */ 0, 72,140, 82, 32,106,174,114,149, 11, 64,249,123, 11, 30, 83,
/* 0x06d0 */ 223, 2, 31,235, 27, 36,219, 26,117, 2, 21,139, 96, 11, 0, 18,
/* 0x06e0 */ 148, 19, 64,249,135, 7, 64,249, 67, 6,128, 82, 9, 0, 39, 30,
/* 0x06f0 */ 128, 23, 64,249,180, 83, 0,249,160, 2, 0,139,181, 87, 0,249,
/* 0x0700 */ 11, 0,103,158,128, 1,102,158, 36, 1, 38, 30,165, 2, 0,138,
/* 0x0710 */ 64, 0,128, 82, 2, 16,159, 26,223, 2, 31,235, 66, 0, 4, 42,
/* 0x0720 */ 64, 2,128, 82,164, 1, 38, 30,181, 2, 5,203, 3, 0,131, 26,
/* 0x0730 */ 180, 0, 20,139,223, 2, 31,235,224, 3, 21,170,225, 3, 20,170,
/* 0x0740 */ 229, 0, 5,203,132, 0,159, 90,218,254,255,151,191, 2, 0,235,
/* 0x0750 */ 96, 0, 0, 84,224, 15,128, 82,187,254,255,151,214, 0, 0,180,
/* 0x0760 */ 194, 1,102,158,224, 3, 22,170,227, 1,102,158,161,131, 2,145,
/* 0x0770 */ 253,254,255,151,128, 1,102,158,249, 3, 20,203, 57, 3, 0,138,
/* 0x0780 */ 123, 0, 8, 55, 86, 1, 0,181, 61, 0, 0, 20,217,255,255,180,
/* 0x0790 */ 161, 2, 20,139, 0, 0,128,210, 63,104, 32, 56, 0, 4, 0,145,
/* 0x07a0 */ 31, 0, 25,235,161,255,255, 84,247,255,255, 23,128, 3, 64,249,
/* 0x07b0 */ 225, 3, 0,178, 0,128, 64,146, 31, 0, 1,235, 97, 5, 0, 84,
/* 0x07c0 */ 128, 23, 64,249,130, 19, 64,249,129, 11, 64,249, 31, 0, 2,235,
/* 0x07d0 */ 97, 1, 0, 84,123, 14, 0,145,123, 3, 0,139,123, 3, 1,139,
/* 0x07e0 */ 123,247,126,146,224, 3, 27, 75, 0, 0, 58, 10, 31, 28, 0,113,
/* 0x07f0 */ 105, 0, 0, 84, 0, 0,128, 82, 13, 0, 0, 20,128, 7, 64,249,
/* 0x0800 */ 224, 6, 0,180, 0, 0,128,210, 1, 0,130,210, 98, 0,128, 82,
/* 0x0810 */ 67, 4,128, 82, 4, 0,128, 18,229, 3, 0,170,165,254,255,151,
/* 0x0820 */ 251, 3, 0,170, 32, 2, 0,180, 32, 0,128, 82, 33, 0,128, 82,
/* 0x0830 */ 1,128,186,114, 97, 3, 0,185, 1,120,128, 82,225,203,186,114,
/* 0x0840 */ 97, 7, 0,185,160, 0, 0, 52,224, 3, 27,170, 1, 1,128,210,
/* 0x0850 */ 162, 0,128, 82,144,254,255,151, 0,251,127,146, 1, 0,128, 82,
/* 0x0860 */ 226, 3, 27,170, 18,255,255,151, 34, 1, 38, 30,224, 3, 21,170,
/* 0x0870 */ 225, 3, 20,170,136,254,255,151,224,246,255, 53, 96, 1,102,158,
/* 0x0880 */ 52, 3, 20,139,181, 2, 20,139,191, 2, 0,235, 98, 1, 0, 84,
/* 0x0890 */ 97, 1,102,158,224, 3, 21,170, 34, 1, 38, 30, 67, 6,128, 82,
/* 0x08a0 */ 4, 0,128, 18, 5, 0,128,210, 33, 0, 21,203,129,254,255,151,
/* 0x08b0 */ 191, 2, 0,235, 1,245,255, 84, 0, 1, 38, 30,156,227, 0,145,
/* 0x08c0 */ 0, 4, 0, 17, 8, 0, 39, 30, 91,255,255, 23, 64, 1,102,158,
/* 0x08d0 */ 192, 0, 0,180, 19, 0, 0,249, 4, 0, 0, 20, 59, 0, 19,139,
/* 0x08e0 */ 123, 35, 0,145,210,255,255, 23,224, 14, 64,249,232, 39, 70,109,
/* 0x08f0 */ 245, 91, 66,169,234, 47, 71,109, 96, 2, 0,139,236, 55, 72,109,
/* 0x0900 */ 243, 83, 65,169,238, 63, 73,109,247, 99, 67,169,249,107, 68,169,
/* 0x0910 */ 251,115, 69,169,253,123,203,168,192, 3, 95,214,253,123,182,169,
/* 0x0920 */ 253, 3, 0,145,247, 99, 3,169,247, 3, 3,170, 3, 4, 64,185,
/* 0x0930 */ 243, 83, 1,169,162, 63, 0,249,243, 3, 2,170, 99, 48, 0,145,
/* 0x0940 */ 2, 0, 64,185,162, 59, 0,249,226, 3, 4,170,160, 79, 0,249,
/* 0x0950 */ 116, 2, 1,145,163, 75, 0,249, 3, 0,128,210,160, 71, 0,249,
/* 0x0960 */ 160, 67, 2,145,161, 67, 0,249,161,195, 1,145,245, 91, 2,169,
/* 0x0970 */ 249, 35, 0,249,249, 3, 7,170,165, 47, 0,249, 22, 0,128, 82,
/* 0x0980 */ 166, 55, 0,249,164, 51, 0,249,119,254,255,151,164, 51, 64,249,
/* 0x0990 */ 161, 3, 2,145,165, 47, 64,249, 2, 0,128, 82,227, 3, 23,170,
/* 0x09a0 */ 166,163, 1,145,231, 3, 25,170,224, 3, 19,170,209,254,255,151,
/* 0x09b0 */ 245, 3, 0,170, 33, 1,128, 82,224, 3, 23,170,226, 3, 21,170,
/* 0x09c0 */ 187,254,255,151, 96,114, 64,121,223, 2, 0,107,226, 4, 0, 84,
/* 0x09d0 */ 128, 2, 64,185, 31, 12, 0,113, 33, 4, 0, 84,129, 10, 64,249,
/* 0x09e0 */ 160, 55, 64,249, 32, 0, 0,139, 1, 0,128, 82,226, 3, 1, 42,
/* 0x09f0 */ 58,254,255,151,248, 3, 0, 42, 96, 0,248, 54,224, 15,128, 82,
/* 0x0a00 */ 17,254,255,151,225, 3, 19,170, 2,128,128,210, 16,254,255,151,
/* 0x0a10 */ 31, 0, 16,241, 65,255,255, 84, 1, 0,128,210,226, 3, 24, 42,
/* 0x0a20 */ 227, 3, 1,170,228, 3, 1,170,229, 3, 1,170,166,163, 1,145,
/* 0x0a30 */ 231, 3, 25,170,224, 3, 19,170,191, 55, 0,249,173,254,255,151,
/* 0x0a40 */ 245, 3, 0,170,162, 55, 64,249,224, 3, 23,170,225, 0,128, 82,
/* 0x0a50 */ 151,254,255,151,224, 3, 24, 42, 3,254,255,151,148,226, 0,145,
/* 0x0a60 */ 214, 6, 0, 17,216,255,255, 23,224, 3, 21,170,249, 35, 64,249,
/* 0x0a70 */ 243, 83, 65,169,245, 91, 66,169,247, 99, 67,169,253,123,202,168,
/* 0x0a80 */ 192, 3, 95,214
};

View File

@ -90,26 +90,26 @@ __NR_write = 0x40 // 64
#endif //}
//lr .req x30
wLENU .req w29
wLENU .req w29 // un-folded fold_begin and upx_main
xLENU .req x29
xADRU .req x28
wfd .req w27
wfd .req w27 // file descriptor of /proc/self/exe
xfd .req x27
xPMASK .req x26
xPMASK .req x26 // PAGE_MASK
// The above 4 registers are passed on stack to unfolded code.
xelfa .req x25
xfexp .req x24
xelfa .req x25 // hi &Elf64_Ehdr
xfexp .req x24 // de-compressor
// xPMASK, xelfa, xfexp still are used here.
wLENM .req w29 // overlaps wLENU
xLENM .req x29
wLENX .req wLENM
xADRM .req x28 // overlaps xADRU
xADRX .req xADRM
wobinf .req w27 // overlaps wfd
wLENC .req w29 // compressed input OVERLAPS wLENU
xLENC .req x29
xADRC .req x28 // OVERLAPS xADRU
xADRM .req x27 // conveneinence; OVERLAPS wfd, xfd
wLENM .req w23
xLENM .req x23
xrelo .req x23
xauxv .req x22
wszuf .req w21
xszuf .req x21
@ -187,70 +187,49 @@ mmap:
unfold:
mov xFOLD,lr
// Reserve enough space to decompress the folded code onto xFOLD
// Reserve enough space to decompress the folded code of the stub
ldr w0, [xfexp,#sz_pack2 - f_exp]
add xelfa,xfexp,#sz_pack2 - f_exp
sub xelfa,xelfa,x0 // &Elf64_Ehdr of stub
ldr wszuf,[xFOLD,#sz_unc + LBINFO - LxFOLD] // sz_unc of fold
sub x1,xFOLD,xelfa // offset(FOLD)
ldr w1,[xFOLD,#sz_unc + LBINFO - LxFOLD] // .sz_unc of fold
mov w4,#-1 // fd
mov w3,#MAP_PRIVATE|MAP_ANONYMOUS
add x1,x1,wszuf,uxtw // length needed
mov x0,#0 // kernel chooses addr
call mmapRW0
PUSH2(x0,x1) // ADRU, LENU
// Duplicate the input data.
ldr w8,[xFOLD,#sz_cpr + LBINFO - LxFOLD] // sz_cpr of fold
sub x1,xFOLD,xelfa // offset(FOLD)
mov w4,wfd // from file
mov w3,#MAP_PRIVATE|MAP_FIXED
PUSH2(xPMASK,xfd)
add x1,x1,x8 // + sz_cpr of fold; x1 <= .st_size
call mmapRW0 // IN: x0= ADRU; OUT: x0= ADRU
sub xrelo,x0,xelfa // relocation amount
mov x8,xfexp; add xfexp,xfexp,xrelo // use old f_exp; xfexp= new &f_exp
// Decompress from old folded code, overwriting new copy of folded code
ldr wobinf,[xFOLD,# LOBINFO - LxFOLD] // O_BINFO
add src,xFOLD,#sz_b_info + LBINFO - LxFOLD // old folded code
add xFOLD,xFOLD,xrelo // dst for unfolding; use copied data
add xLENM,xFOLD,wszuf,uxtw // + sz_unc = last of unfolded
and xADRM,xfexp,xPMASK // base for PROT_EXEC
sub xLENM,xLENM,xADRM // length for PROT_EXEC
mov xADRM,x0 // convenience
// Decompress folded code
mov dst,x0 // ADRU
PUSH1(x1); mov ldst,sp // &slot on stack; lzma uses for EOF
add src, xFOLD,#sz_b_info + LBINFO - LxFOLD // folded code
ldr lsrc, [XFOLD,#sz_cpr + LBINFO - LxFOLD]
ldrb wmeth,[xFOLD,#b_method + LBINFO - LxFOLD]
TRACE(#1)
// The new f_exp has PROT_WRITE, so use the old f_exp to decompress
ldrb wmeth,[xFOLD,#b_method + LBINFO - LxFOLD]
PUSH1(xszuf) // lzma uses for EOF
mov ldst,sp // &slot on stack
mov dst,xFOLD // dst for unfolding
ldr lsrc,[xFOLD,#sz_cpr + LBINFO - LxFOLD]
callr x8 // decompress it
POP1(x8)
callr xfexp // decompress it
POP1(x8) // discard lzma EOF
// Generate code to compute PAGE_MASK
ldr x0,[xFOLD,#1*4] // 2nd instr
ldr x0,[xADRM,#1*4] // 2nd instr
rbit x1,xPMASK
clz x1,x1 // # trailing 0's in xPMASK
add x1,x1,#1
lsl x1,x1,#2*5 // past two register numbers
orr x0,x0,x1
str x0,[xFOLD,#1*4] // modify 2nd instr: "add x1,x0,#1+ count"
str x0,[xADRM,#1*4] // modify 2nd instr: "add x1,x0,#1+ count"
// PROT_EXEC
mov w2,#PROT_EXEC|PROT_READ
mov w1,wLENM // length
ldr w1,[sp,3*NBPW] // LENU
mov x0,xADRM // base
TRACE(#2)
do_sys __NR_mprotect
// Use the unfolded code
ldr wLENX,[xfexp,#sz_pack2 - f_exp]
add xADRX,xelfa,wobinf,uxtw // old compressed &b_info
add xADRX,xADRX,xrelo // new compressed &b_info
add x0,xFOLD,#4*4 // jmp over get_page_mask()
ldr w0,[xFOLD, #LOBINFO - LxFOLD] // O_BINFO
ldr wLENC,[xfexp,#sz_pack2 - f_exp]
add xADRC,xelfa,x0 // &b_info of compressed input data
add x0,xADRM,#4*4 // jmp over get_page_mask()
jr x0
#if DEBUG //{

View File

@ -28,11 +28,15 @@
//
NBPW= 8
#define call bl
#define ARM_OLDABI 1
#include "arch/arm64/v8/macros.S"
sz_Elf64_Ehdr= 64
sz_Elf64_Phdr= 56
sz_Ehdr= 8*NBPW
sz_Phdr= 7*NBPW
p_vaddr= 4+4+8
sz_l_info = 12
sz_p_info = 12
sz_b_info = 12
@ -59,7 +63,7 @@ PATH_MAX= 4096
#endif /*}*/
#if DEBUG //{
#define TRACE(arg) \
stp lr,x0,[sp,#-2*NBPW]!; mov x0,arg; bl trace; \
stp lr,x0,[sp,#-2*NBPW]!; mov x0,arg; call trace; \
ldp lr,x0,[sp],#2*NBPW
#else //}{
#define TRACE(arg) /*empty*/
@ -82,15 +86,16 @@ fold_begin:
// In: sp/ PMASK,fd,ADRU,LENU, argc,argv,...
//lr .req x30
wLENX .req w29
xADRX .req x28
wLENC .req w29 // compressed input
xLENC .req x29
xADRC .req x28
wLENU .req w27
wLENU .req w27 // unfolded fold_begin and upx_main
xLENU .req x27
xADRU .req x26
xelfa .req x25
xfexp .req x24
xelfa .req x25 // hi &Elf64_Ehdr
xfexp .req x24 // de-compressor
xauxe .req x23 // past new auxv
xauxv .req x22
@ -146,7 +151,7 @@ xPMASK .req x20
mov w2,#PATH_MAX-1 // buffer length and null terminator
adr x0,proc_self_exe
bl readlink
call readlink
cmn x0,#4096; bcs 0f // error
strb wzr,[x2,x0] // null terminate pathname (x2 is old x1)
0:
@ -159,12 +164,19 @@ xPMASK .req x20
mov x4,xfexp // &f_decompress
mov x3,xauxv // new &Elf64_auxv_t
mov x2,sp // ehdr
mov w1,wLENX // total size of compressed data
mov x0,xADRX // &b_info
bl upx_main
mov w1,wLENC // total size of compressed data
mov x0,xADRC // &b_info
call upx_main
add sp,sp,#MAX_ELF_HDR + OVERHEAD // un-alloca
mov xfexp,x0 // entry address
// Discard pages of compressed input data (includes [ADRC,+LENC) )
ldr x1,[xelfa,#p_vaddr+sz_Phdr+sz_Ehdr] // Phdr[C_TEXT= 1].p_vaddr
ldr x2,[xelfa,#p_vaddr +sz_Ehdr] // Phdr[C_BASE= 0].p_vaddr
mov x0,xelfa // hi &Elf64_Ehdr
sub x1,x1,x2
call munmap // discard C_TEXT compressed data
// Map 1 page of /proc/self/exe so that munmap does not remove all references
mov x5,#0 // offset
mov w4,wfd // fd
@ -172,22 +184,21 @@ xPMASK .req x20
mov w2,#PROT_READ
mov x1,#PAGE_SIZE
mov x0,#0 // addr
bl mmap
call mmap
mov w0,wfd // fd
bl close
call close
mov lr,xfexp // entry
mov x0,xADRU
mov w1,wLENU
ldr x2,[xauxe,#NBPW - sz_auxv] // Elf64_auxv_t[AT_NULL@.a_type].a_val
mov w8,#__NR_munmap
mov w8,#__NR_munmap // munmap(ADRU, LENU) unfolded stub
#if DEBUG //{
ldr w3,[x2,#0] // 1st instr
ldr w4,[x2,#4] // 2nd instr
TRACE(4)
#endif //}
br x2 // goto escape hatch
space3eq:
@ -256,18 +267,18 @@ trace: // preserves condition code (thank you, CBNZ) [if write() does!]
sub sp,sp,#TRACE_BUFLEN
mov x2,sp // output string
mov w1,#'\n'; bl trace_hex // In: r0 as label
mov w1,#'\n'; call trace_hex // In: r0 as label
mov w1,#'>'; strb w1,[x2],#1
mov w5,#10 // nrows to print
L600: // each row
add x1,sp,#TRACE_BUFLEN
sub x0,x4,x1
lsr x0,x0,#3; mov w1,#'\n'; bl trace_hex2 // which block of 4
lsr x0,x0,#3; mov w1,#'\n'; call trace_hex2 // which block of 4
mov w6,#4 // 64-bit words per row
L610: // each word
ldr x0,[x4],#8; mov w1,#(' '<<8)|' '; bl trace_hex // next word
ldr x0,[x4],#8; mov w1,#(' '<<8)|' '; call trace_hex // next word
sub w6,w6,#1; cbnz w6,L610
sub w5,w5,#1; cbnz w5,L600

View File

@ -13,7 +13,7 @@ Idx Name Size VMA LMA File off Algn
8 LZMA_DEC10 0000049c 0000000000000000 0000000000000000 00000d9c 2**0 CONTENTS, READONLY
9 LZMA_DEC30 00000000 0000000000000000 0000000000000000 00001238 2**0 CONTENTS, READONLY
10 ELFMAINY 0000003e 0000000000000000 0000000000000000 00001238 2**0 CONTENTS, READONLY
11 ELFMAINZ 00000174 0000000000000000 0000000000000000 00001278 2**2 CONTENTS, RELOC, READONLY
11 ELFMAINZ 00000138 0000000000000000 0000000000000000 00001278 2**2 CONTENTS, RELOC, READONLY
SYMBOL TABLE:
0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30
0000000000000000 l d ELFMAINZ 0000000000000000 ELFMAINZ
@ -39,7 +39,7 @@ SYMBOL TABLE:
RELOCATION RECORDS FOR [ELFMAINX]:
OFFSET TYPE VALUE
0000000000000000 R_AARCH64_ABS32 MFLG
0000000000000004 R_AARCH64_CALL26 ELFMAINZ+0x0000000000000120
0000000000000004 R_AARCH64_CALL26 ELFMAINZ+0x00000000000000e4
RELOCATION RECORDS FOR [LZMA_ELF00]:
OFFSET TYPE VALUE
@ -47,4 +47,4 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZ]:
OFFSET TYPE VALUE
0000000000000170 R_AARCH64_ABS32 O_BINFO
0000000000000134 R_AARCH64_ABS32 O_BINFO

View File

@ -8,44 +8,44 @@ Linker script and memory map
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x00000000001000bc 0x9b4
.text 0x00000000001000bc 0x9c8
*(.text)
.text 0x00000000001000bc 0x238 tmp/arm64-linux.elf-fold.o
0x0000000000100228 my_bkpt
0x0000000000100230 exit
0x0000000000100238 read
0x0000000000100244 write
0x0000000000100250 close
0x000000000010025c getpid
0x0000000000100268 brk
0x0000000000100274 munmap
0x0000000000100280 mprotect
0x000000000010028c mmap_privanon
0x000000000010029c mmap
0x00000000001002a8 unlink
0x00000000001002bc readlink
0x00000000001002c4 open
0x00000000001002e0 __clear_cache
.text 0x00000000001002f4 0x77c tmp/arm64-linux.elf-main.o
0x0000000000100908 upx_main
.text 0x00000000001000bc 0x24c tmp/arm64-linux.elf-fold.o
0x000000000010023c my_bkpt
0x0000000000100244 exit
0x000000000010024c read
0x0000000000100258 write
0x0000000000100264 close
0x0000000000100270 getpid
0x000000000010027c brk
0x0000000000100288 munmap
0x0000000000100294 mprotect
0x00000000001002a0 mmap_privanon
0x00000000001002b0 mmap
0x00000000001002bc unlink
0x00000000001002d0 readlink
0x00000000001002d8 open
0x00000000001002f4 __clear_cache
.text 0x0000000000100308 0x77c tmp/arm64-linux.elf-main.o
0x000000000010091c upx_main
*(.data)
.data 0x0000000000100a70 0x0 tmp/arm64-linux.elf-fold.o
.data 0x0000000000100a70 0x0 tmp/arm64-linux.elf-main.o
.data 0x0000000000100a84 0x0 tmp/arm64-linux.elf-fold.o
.data 0x0000000000100a84 0x0 tmp/arm64-linux.elf-main.o
.iplt 0x0000000000100a70 0x0
.iplt 0x0000000000100a70 0x0 tmp/arm64-linux.elf-fold.o
.iplt 0x0000000000100a84 0x0
.iplt 0x0000000000100a84 0x0 tmp/arm64-linux.elf-fold.o
.rela.dyn 0x0000000000100a70 0x0
.rela.iplt 0x0000000000100a70 0x0 tmp/arm64-linux.elf-fold.o
.rela.dyn 0x0000000000100a88 0x0
.rela.iplt 0x0000000000100a88 0x0 tmp/arm64-linux.elf-fold.o
.data
LOAD tmp/arm64-linux.elf-fold.o
LOAD tmp/arm64-linux.elf-main.o
OUTPUT(tmp/arm64-linux.elf-fold.bin elf64-littleaarch64)
.igot.plt 0x0000000000100a70 0x0
.igot.plt 0x0000000000100a70 0x0 tmp/arm64-linux.elf-fold.o
.igot.plt 0x0000000000100a88 0x0
.igot.plt 0x0000000000100a88 0x0 tmp/arm64-linux.elf-fold.o
.bss 0x0000000000100a70 0x0
.bss 0x0000000000100a70 0x0 tmp/arm64-linux.elf-fold.o
.bss 0x0000000000100a70 0x0 tmp/arm64-linux.elf-main.o
.bss 0x0000000000100a84 0x0
.bss 0x0000000000100a84 0x0 tmp/arm64-linux.elf-fold.o
.bss 0x0000000000100a84 0x0 tmp/arm64-linux.elf-main.o