diff --git a/src/linker.cpp b/src/linker.cpp index e683b3b0..ee769a6a 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -656,6 +656,13 @@ void ElfLinkerArm64LE::relocate1(const Relocation *rel, upx_byte *location, upx_ set_le32(location, get_le32(location) + value); else if (!strcmp(type, "64")) set_le64(location, get_le64(location) + value); + } else if (!strcmp(type, "ADR_PREL_LO21")) { + value -= rel->section->offset + rel->offset; + upx_uint32_t const m19 = ~(~0u << 19); + upx_uint32_t w = get_le32(location); + set_le32(location, + (w & ~((3u << 29) | ( m19 << 5))) + | ((3u & value) << 29) | ((m19 & (value >> 2)) << 5)); } else if (!strcmp(type, "ABS32")) { set_le32(location, get_le32(location) + value); } else if (!strcmp(type, "ABS64")) { diff --git a/src/p_mach.cpp b/src/p_mach.cpp index 0b0a61b4..16fdcee0 100644 --- a/src/p_mach.cpp +++ b/src/p_mach.cpp @@ -152,15 +152,10 @@ const int *PackMachBase::getCompressionMethods(int method, int level) const const int *PackMachARMEL::getCompressionMethods(int method, int level) const { + // Un-aligned fetch does not work on 32-bit ARM, so use 8-bit methods return Packer::getDefaultCompressionMethods_8(method, level); } -const int *PackMachARM64EL::getCompressionMethods(int method, int level) const -{ - return Packer::getDefaultCompressionMethods_8(method, level); -} - - PackMachPPC32::PackMachPPC32(InputFile *f) : super(f, Mach_header::CPU_TYPE_POWERPC, Mach_header::MH_EXECUTE, Mach_thread_command::PPC_THREAD_STATE, sizeof(Mach_ppc_thread_state)>>2, sizeof(threado)) @@ -210,7 +205,7 @@ PackMachARMEL::PackMachARMEL(InputFile *f) : super(f, Mach_header::CPU_TYPE_ARM, sizeof(Mach_ARM_thread_state)>>2, sizeof(threado)) { } -PackMachARM64EL::PackMachARM64EL(InputFile *f) : super(f, Mach_header::CPU_TYPE_ARM, +PackMachARM64EL::PackMachARM64EL(InputFile *f) : super(f, Mach_header::CPU_TYPE_ARM64, Mach_header::MH_EXECUTE, (unsigned)Mach_thread_command::ARM_THREAD_STATE, sizeof(Mach_ARM64_thread_state)>>2, sizeof(threado)) { } @@ -1919,6 +1914,14 @@ bool PackMachBase::canPack() stub_arm_v5a_darwin_macho_fold, 0 }, + {CPU_TYPE_ARM64, MH_EXECUTE, + sizeof(stub_arm64_darwin_macho_entry), + sizeof(stub_arm64_darwin_macho_fold), + 0, + stub_arm64_darwin_macho_entry, + stub_arm64_darwin_macho_fold, + 0 + }, {CPU_TYPE_POWERPC, MH_EXECUTE, sizeof(stub_powerpc_darwin_macho_entry), sizeof(stub_powerpc_darwin_macho_fold), diff --git a/src/p_mach.h b/src/p_mach.h index d4b5f203..51ce5f7e 100644 --- a/src/p_mach.h +++ b/src/p_mach.h @@ -1207,7 +1207,6 @@ public: virtual const char *getName() const { return "macho/arm64"; } virtual const char *getFullName(const options_t *) const { return "arm64-darwin.macho"; } protected: - virtual const int *getCompressionMethods(int method, int level) const; virtual const int *getFilters() const; virtual void pack1_setup_threado(OutputFile *const fo); diff --git a/src/packmast.cpp b/src/packmast.cpp index 4c16cdc9..6e9f1fb9 100644 --- a/src/packmast.cpp +++ b/src/packmast.cpp @@ -224,6 +224,7 @@ Packer *PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio D(PackMachI386); D(PackMachAMD64); D(PackMachARMEL); + D(PackMachARM64EL); // 2010-03-12 omit these because PackMachBase::pack4dylib (p_mach.cpp) // does not understand what the Darwin (Apple Mac OS X) dynamic loader diff --git a/src/stub/Makefile b/src/stub/Makefile index 6a964bbb..2fc12f11 100644 --- a/src/stub/Makefile +++ b/src/stub/Makefile @@ -732,7 +732,6 @@ tmp/arm64-darwin.macho-main.o : $(srcdir)/src/$$T.c $(call tc,gcc) -c -Os $< -o $@ $(call tc,f-objstrip,$@) - # /*********************************************************************** # // i086-dos16.com # ************************************************************************/ diff --git a/src/stub/amd64-darwin.macho-fold.h b/src/stub/amd64-darwin.macho-fold.h index c01eda3d..9121eefb 100644 --- a/src/stub/amd64-darwin.macho-fold.h +++ b/src/stub/amd64-darwin.macho-fold.h @@ -1,5 +1,5 @@ /* amd64-darwin.macho-fold.h - created from amd64-darwin.macho-fold.bin, 1760 (0x6e0) bytes + created from amd64-darwin.macho-fold.bin, 3634 (0xe32) bytes This file is part of the UPX executable compressor. @@ -31,11 +31,11 @@ */ -#define STUB_AMD64_DARWIN_MACHO_FOLD_SIZE 1760 -#define STUB_AMD64_DARWIN_MACHO_FOLD_ADLER32 0x055fc520 -#define STUB_AMD64_DARWIN_MACHO_FOLD_CRC32 0xdffb08c7 +#define STUB_AMD64_DARWIN_MACHO_FOLD_SIZE 3634 +#define STUB_AMD64_DARWIN_MACHO_FOLD_ADLER32 0x7233848c +#define STUB_AMD64_DARWIN_MACHO_FOLD_CRC32 0x14c3e5c3 -unsigned char stub_amd64_darwin_macho_fold[1760] = { +unsigned char stub_amd64_darwin_macho_fold[3634] = { /* 0x0000 */ 232, 74, 0, 0, 0,131,249, 73,117, 68, 83, 87, 72,141, 76, 55, /* 0x0010 */ 253, 94, 86, 91,235, 47, 72, 57,206,115, 50, 86, 94,172, 60,128, /* 0x0020 */ 114, 10, 60,143,119, 6,128,126,254, 15,116, 6, 44,232, 60, 1, @@ -43,7 +43,7 @@ unsigned char stub_amd64_darwin_macho_fold[1760] = { /* 0x0040 */ 41,248, 1,216,171, 72, 57,206,115, 3,172,235,223, 91,195, 65, /* 0x0050 */ 89, 76,137,247, 76,137,254, 73,137,228,139, 79, 24,184, 0, 8, /* 0x0060 */ 0, 0, 57,193, 15, 66,200, 73,141, 68, 36, 32, 73,137,232, 72, -/* 0x0070 */ 41,204, 72,137,226, 80,232,221, 4, 0, 0, 72,139, 40, 72,139, +/* 0x0070 */ 41,204, 72,137,226, 80,232,104, 11, 0, 0, 72,139, 40, 72,139, /* 0x0080 */ 136,128, 0, 0, 0, 76,137,228, 72,137, 76, 36, 24, 95,232, 45, /* 0x0090 */ 0, 0, 0, 95, 94,184, 73, 0, 0, 2,255,229,139, 7, 15,200, /* 0x00a0 */ 137, 7,131,238, 4, 72,141,127, 4,119,241,195,176, 4,235, 2, @@ -57,93 +57,211 @@ unsigned char stub_amd64_darwin_macho_fold[1760] = { /* 0x0120 */ 131,200,255,195, 72,141, 53, 28, 0, 0, 0, 72,137,194,185, 16, /* 0x0130 */ 0, 0, 0, 72,193,194, 4,137,208,131,224, 15, 15,182, 4, 6, /* 0x0140 */ 170,131,233, 1,117,237,195, 48, 49, 50, 51, 52, 53, 54, 55, 56, -/* 0x0150 */ 57, 97, 98, 99,100,101,102,144, 81, 72, 57, 23, 76,139, 71, 8, -/* 0x0160 */ 72,141, 74,255,115, 10,191,127, 0, 0, 0,232, 64,255,255,255, -/* 0x0170 */ 72,131,249,255,116, 17, 65, 15,182, 0, 72,255,201, 73,255,192, -/* 0x0180 */ 136, 6, 72,255,198,235,233, 72, 1, 87, 8, 72, 41, 23, 88,195, -/* 0x0190 */ 65, 85, 73,137,213, 65, 84, 73,137,204, 85, 72,137,253, 83, 72, -/* 0x01a0 */ 137,243, 72,131,236, 40, 72,131, 62, 0, 15,132,217, 0, 0, 0, -/* 0x01b0 */ 72,141,116, 36, 16,186, 12, 0, 0, 0, 72,137,239,232,150,255, -/* 0x01c0 */ 255,255,139, 68, 36, 16,139,116, 36, 20,133,192,117, 21,129,254, -/* 0x01d0 */ 85, 80, 88, 33,117, 17, 72,131,125, 0, 0, 15,132,168, 0, 0, -/* 0x01e0 */ 0,235, 4,133,246,117, 10,191,127, 0, 0, 0,232,191,254,255, -/* 0x01f0 */ 255, 57,198,119,242,137,194, 72, 59, 19,119,235, 57,198, 72,139, -/* 0x0200 */ 67, 8,115, 95, 68, 15,182, 68, 36, 24, 72,137, 84, 36, 8, 72, -/* 0x0210 */ 141, 76, 36, 8, 72,139,125, 8, 72,137,194, 65,255,213,133,192, -/* 0x0220 */ 117,197,139, 68, 36, 16, 72,139,116, 36, 8, 72, 57,198,117,183, -/* 0x0230 */ 15,182, 76, 36, 25,132,201, 15,149,194, 49,192, 77,133,228, 15, -/* 0x0240 */ 149,192,133,194,116, 15, 15,182, 84, 36, 26, 15,182,201, 72,139, -/* 0x0250 */ 123, 8, 65,255,212,139, 68, 36, 20, 72, 1, 69, 8, 72, 41, 69, -/* 0x0260 */ 0,235, 13,137,242, 72,137,239, 72,137,198,232,232,254,255,255, -/* 0x0270 */ 139, 84, 36, 16, 72,139, 3, 72, 1, 83, 8, 72, 41,208, 72,133, -/* 0x0280 */ 192, 72,137, 3,233, 33,255,255,255, 72,131,196, 40, 91, 93, 65, -/* 0x0290 */ 92, 65, 93,195, 65, 87, 77,137,199, 65, 86, 65, 85, 65, 84, 73, -/* 0x02a0 */ 137,252, 73,131,196, 32, 85, 83, 72,131,236,104, 72,139,132, 36, -/* 0x02b0 */ 160, 0, 0, 0, 72,137, 84, 36, 56, 72,137,250, 72,137,124, 36, -/* 0x02c0 */ 72,137,116, 36, 68,137, 76, 36, 52, 76,137, 76, 36, 40, 72,137, -/* 0x02d0 */ 68, 36, 32, 72,199, 68, 36, 24, 0, 0, 0, 0, 49,192, 72,199, -/* 0x02e0 */ 68, 36, 16, 0, 0, 0, 0,199, 68, 36, 12, 0, 0, 0, 0, 59, -/* 0x02f0 */ 66, 16, 15,131, 76, 2, 0, 0, 65,139, 4, 36,131,248, 25, 15, -/* 0x0300 */ 133,245, 1, 0, 0, 73,139, 76, 36, 32, 72,133,201, 15,132,231, -/* 0x0310 */ 1, 0, 0, 77,139, 76, 36, 40, 77,133,201,117, 32, 73,131,124, -/* 0x0320 */ 36, 48, 0,116, 24, 73,139, 7, 72,133,192,116, 16,246, 64, 26, -/* 0x0330 */ 32,116, 10, 73, 43, 68, 36, 24, 72,137, 68, 36, 16, 73,139, 84, -/* 0x0340 */ 36, 48, 72,139,124, 36, 16, 72,137, 84, 36, 80, 73, 3,124, 36, -/* 0x0350 */ 24, 73,137,213, 72,137,251, 72,137,253, 72,137,124, 36, 88,129, -/* 0x0360 */ 227,255, 15, 0, 0, 76,141, 52, 15, 72, 41,221, 73, 1,221,116, -/* 0x0370 */ 108, 72,131,124, 36, 56, 0, 73,141, 69, 3, 76,137,238, 72, 15, -/* 0x0380 */ 69,240, 73,139, 7, 72,131,248, 1, 25,192,131,224,240, 72,131, -/* 0x0390 */ 124, 36, 56, 0,141, 72, 18,117, 5, 72,133,210,117, 3,128,205, -/* 0x03a0 */ 16, 65,131,200,255, 73,131,124, 36, 48, 0,186, 3, 0, 0, 0, -/* 0x03b0 */ 68, 15, 69, 68, 36, 52, 68, 3, 76, 36, 68, 72,137,239,232, 5, -/* 0x03c0 */ 253,255,255, 73,131, 63, 0,117, 11, 72,137,197, 73,137, 7, 72, -/* 0x03d0 */ 137, 68, 36, 16, 72, 57,197, 15,133,181, 0, 0, 0, 72,131,124, -/* 0x03e0 */ 36, 56, 0,116, 44, 73,131,124, 36, 48, 0,116, 36, 73,131,124, -/* 0x03f0 */ 36, 40, 0,117, 3, 73,137, 47, 72,139, 76, 36, 32, 72,139, 84, -/* 0x0400 */ 36, 40, 72,141,116, 36, 80, 72,139,124, 36, 56,232,127,253,255, -/* 0x0410 */ 255, 73,131, 63, 0, 15,149,194, 49,192, 77,133,237, 15,149,192, -/* 0x0420 */ 133,194,116, 49, 73,131,124, 36, 40, 0,117, 41, 65,131,124, 36, -/* 0x0430 */ 64, 0,116, 33, 76,137,224, 72, 43, 68, 36, 72,139, 68, 5,120, -/* 0x0440 */ 72,141, 68, 5, 0,199, 64,252,144, 15, 5,195, 72,131,232, 4, -/* 0x0450 */ 72,137, 68, 36, 24, 76,137,235, 74,141, 84, 45, 0, 72,247,219, -/* 0x0460 */ 129,227,255, 15, 0, 0, 72,137,216, 72,133,219,116, 11,198, 2, -/* 0x0470 */ 0, 72,255,194, 72,255,200,235,243, 77,133,237,116, 30, 65,139, -/* 0x0480 */ 84, 36, 60, 76,137,238, 72,137,239,232, 38,252,255,255,133,192, -/* 0x0490 */ 116, 10,191,127, 0, 0, 0,232, 20,252,255,255, 73,141, 68, 29, -/* 0x04a0 */ 0, 72, 1,197, 76, 57,245,115, 43, 72,133,237,116,124, 65,139, -/* 0x04b0 */ 84, 36, 60, 73, 41,238, 69, 49,201, 65,131,200,255,185, 18, 16, -/* 0x04c0 */ 0, 0, 76,137,246, 72,137,239,232,251,251,255,255, 72, 57,197, -/* 0x04d0 */ 116, 88,235,190, 72,131,124, 36, 56, 0,116, 78, 73,131,197, 3, -/* 0x04e0 */ 65,129,229,255, 15, 0, 0, 73,131,253, 3,119, 61, 76,137,238, -/* 0x04f0 */ 72,137,239,232,192,251,255,255,235, 48,131,232, 4,131,248, 1, -/* 0x0500 */ 119, 40, 72,184, 4, 0, 0, 0, 42, 0, 0, 0, 73, 57, 68, 36, -/* 0x0510 */ 8,117, 23, 72,139, 84, 36, 16, 73, 1,148, 36,144, 0, 0, 0, -/* 0x0520 */ 73,141, 68, 36, 16, 72,137, 68, 36, 24, 65,139, 68, 36, 4,255, -/* 0x0530 */ 68, 36, 12, 72,139, 84, 36, 72, 73, 1,196,139, 68, 36, 12,233, -/* 0x0540 */ 171,253,255,255, 72,139, 68, 36, 24, 72,131,196,104, 91, 93, 65, -/* 0x0550 */ 92, 65, 93, 65, 94, 65, 95,195, 65, 87, 73,137,207, 49,201, 65, -/* 0x0560 */ 86, 69, 49,246, 65, 85, 69, 49,237, 65, 84, 77,137,204, 85, 72, -/* 0x0570 */ 137,213, 72,141, 87, 24, 83, 76,137,195, 72,131,236, 88,139,127, -/* 0x0580 */ 24, 72,137,116, 36, 72, 72,139, 68, 36, 72, 72,141,116, 36, 32, -/* 0x0590 */ 72,137, 84, 36, 56, 72,137, 84, 36, 24, 76,137,194, 72,137,108, -/* 0x05a0 */ 36, 40, 72,137,124, 36, 32, 72,141,124, 36, 48, 72,131,232, 24, -/* 0x05b0 */ 72,137, 68, 36, 48, 72,137, 68, 36, 16,232,209,251,255,255, 65, -/* 0x05c0 */ 83, 73,137,217,131,201,255, 49,246, 72,137,239, 72,141, 84, 36, -/* 0x05d0 */ 24, 65, 84, 76,139,132, 36,160, 0, 0, 0,232,180,252,255,255, -/* 0x05e0 */ 72,137, 68, 36, 16,139,117, 16, 72,141, 85, 32, 65, 89, 65, 90, -/* 0x05f0 */ 49,201, 57,241, 15,131,212, 0, 0, 0,131, 58, 14, 15,133,190, -/* 0x0600 */ 0, 0, 0,139,122, 8, 49,246, 49,192, 72,141, 60, 58, 49,210, -/* 0x0610 */ 232,175,250,255,255,133,192, 65,137,196,120, 22, 68,137,241, 76, -/* 0x0620 */ 137,250, 72,137,238, 68,137,231,232,143,250,255,255, 73, 57,199, -/* 0x0630 */ 116, 16,191,127, 0, 0, 0,232,116,250,255,255, 68,139,115, 8, -/* 0x0640 */ 235,218,139, 69, 0, 61,202,254,186,190,116, 7, 61,190,186,254, -/* 0x0650 */ 202,117, 49, 72, 15,182,117, 7, 72,137,239, 72,141, 93, 8, 72, -/* 0x0660 */ 107,246, 20,131,198, 8,232, 49,250,255,255,139, 69, 4, 49,201, -/* 0x0670 */ 57,193,115, 16,129, 59, 7, 0, 0, 1,116,192,255,193, 72,131, -/* 0x0680 */ 195, 20,235,236, 72,199, 68, 36, 8, 0, 0, 0, 0, 65, 80, 68, -/* 0x0690 */ 137,246, 69, 49,201, 68,137,225,106, 0, 49,210, 72,137,239, 76, -/* 0x06a0 */ 141, 68, 36, 24,232,235,251,255,255, 73,137,197, 72,139, 68, 36, -/* 0x06b0 */ 16, 68,137,231, 73,137, 69, 0,232, 3,250,255,255, 94, 95,235, -/* 0x06c0 */ 13,139, 66, 4,255,193, 72, 1,194,233, 36,255,255,255, 72,131, -/* 0x06d0 */ 196, 88, 76,137,232, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195 +/* 0x0150 */ 57, 97, 98, 99,100,101,102,144, 83,137,249, 65,137,208,191, 10, +/* 0x0160 */ 0, 0, 0, 49,210,137,200,247,247,131,248, 9,118, 5,107,255, +/* 0x0170 */ 10,235,240,131,249, 9,118, 47,137,200, 49,210,247,247,186, 10, +/* 0x0180 */ 0, 0, 0,137,211, 49,210, 65,137,193,137,248, 65, 15,175,193, +/* 0x0190 */ 41,193,137,248,247,243, 65,141, 81, 48,137,199, 73, 99,192, 65, +/* 0x01a0 */ 255,192,136, 20, 6,235,204, 91,141, 65, 48, 73, 99,208, 65,255, +/* 0x01b0 */ 192,136, 4, 22, 68,137,192,195, 73,137,243, 65,137,210,184, 15, +/* 0x01c0 */ 0, 0, 0, 73,185, 0, 0, 0, 0, 0, 0, 0,240, 76,133,207, +/* 0x01d0 */ 117, 8, 73,193,233, 4,255,200,117,243, 77,133,201,116, 52, 68, +/* 0x01e0 */ 141, 4,133, 0, 0, 0, 0, 68,137,193, 72,137,248, 73, 99,242, +/* 0x01f0 */ 72,211,232, 65,255,194,131,224, 15,141, 80, 87,141, 72, 48,131, +/* 0x0200 */ 248, 10, 15, 66,209, 65,131,232, 4, 73,193,233, 4, 65,136, 20, +/* 0x0210 */ 51,117,212, 68,137,208,195, 65, 85, 69, 49,237, 65, 84, 73,137, +/* 0x0220 */ 252, 85, 49,237, 83, 72,129,236,248, 0, 0, 0, 72,137, 84, 36, +/* 0x0230 */ 80, 15,182,208, 72,137,116, 36, 72, 72,141, 4,149, 0, 0, 0, +/* 0x0240 */ 0, 72,141, 21, 75, 0, 0, 0, 72,137, 76, 36, 88, 76,137, 68, +/* 0x0250 */ 36, 96, 76,137, 76, 36,104, 72, 41,194, 72,141,132, 36,239, 0, +/* 0x0260 */ 0, 0,199, 4, 36, 8, 0, 0, 0,199, 68, 36, 4, 48, 0, 0, +/* 0x0270 */ 0,255,226, 15, 41,120,241, 15, 41,112,225, 15, 41,104,209, 15, +/* 0x0280 */ 41, 96,193, 15, 41, 88,177, 15, 41, 80,161, 15, 41, 72,145, 15, +/* 0x0290 */ 41, 64,129, 72,141,132, 36, 32, 1, 0, 0, 72,137, 68, 36, 8, +/* 0x02a0 */ 72,141, 68, 36, 64, 72,137, 68, 36, 16, 65, 15,182, 28, 36, 73, +/* 0x02b0 */ 255,196,132,219,117, 11, 77,133,237, 15,132,227, 1, 0, 0,235, +/* 0x02c0 */ 20,128,251, 37,116, 10, 77,133,237,117,223, 77,137,229,235,218, +/* 0x02d0 */ 77,133,237,116, 33, 73,141,117,255, 76,137,226,191, 2, 0, 0, +/* 0x02e0 */ 0, 76, 41,234, 69, 49,237,232,192,253,255,255, 1,197,132,219, +/* 0x02f0 */ 15,132,172, 1, 0, 0, 65, 15,190, 4, 36, 73,255,196,131,248, +/* 0x0300 */ 115, 15,132, 74, 1, 0, 0,127, 28,131,248,100,116,108,127, 10, +/* 0x0310 */ 133,192, 15,132,138, 1, 0, 0,235, 25,131,248,112, 15,132,165, +/* 0x0320 */ 0, 0, 0,235, 14,131,248,117,116, 24,131,248,120, 15,132,224, +/* 0x0330 */ 0, 0, 0, 73,141,116, 36,255,186, 1, 0, 0, 0,233, 79, 1, +/* 0x0340 */ 0, 0,139, 4, 36, 72,141,116, 36, 32,131,248, 48,115, 15,137, +/* 0x0350 */ 193, 72, 3, 76, 36, 16,131,192, 8,137, 4, 36,235, 14, 72,139, +/* 0x0360 */ 76, 36, 8, 72,141, 65, 8, 72,137, 68, 36, 8,139, 57, 49,210, +/* 0x0370 */ 232,227,253,255,255,233,143, 0, 0, 0,139, 4, 36,131,248, 48, +/* 0x0380 */ 115, 15,137,194, 72, 3, 84, 36, 16,131,192, 8,137, 4, 36,235, +/* 0x0390 */ 14, 72,139, 84, 36, 8, 72,141, 66, 8, 72,137, 68, 36, 8,139, +/* 0x03a0 */ 58, 49,210, 72,141, 92, 36, 32,133,255,121, 9,247,223,198, 68, +/* 0x03b0 */ 36, 32, 45,178, 1, 72,137,222,232,155,253,255,255, 72,137,222, +/* 0x03c0 */ 72, 99,208,233,201, 0, 0, 0,139, 4, 36,198, 68, 36, 32, 48, +/* 0x03d0 */ 72,141,116, 36, 32,198, 68, 36, 33,120,131,248, 48,115, 15,137, +/* 0x03e0 */ 193, 72, 3, 76, 36, 16,131,192, 8,137, 4, 36,235, 14, 72,139, +/* 0x03f0 */ 76, 36, 8, 72,141, 65, 8, 72,137, 68, 36, 8, 72,139, 57,186, +/* 0x0400 */ 2, 0, 0, 0,232,175,253,255,255, 72,141,116, 36, 32, 72, 99, +/* 0x0410 */ 208,235,126,139, 4, 36,198, 68, 36, 32, 48, 72,141,116, 36, 32, +/* 0x0420 */ 198, 68, 36, 33,120,131,248, 48,115, 15,137,194, 72, 3, 84, 36, +/* 0x0430 */ 16,131,192, 8,137, 4, 36,235, 14, 72,139, 84, 36, 8, 72,141, +/* 0x0440 */ 66, 8, 72,137, 68, 36, 8, 72, 99, 58,186, 2, 0, 0, 0,235, +/* 0x0450 */ 179,139, 4, 36,131,248, 48,115, 15,137,194, 72, 3, 84, 36, 16, +/* 0x0460 */ 131,192, 8,137, 4, 36,235, 14, 72,139, 84, 36, 8, 72,141, 66, +/* 0x0470 */ 8, 72,137, 68, 36, 8, 72,139, 50, 72,133,246, 72,137,242,116, +/* 0x0480 */ 13,128, 62, 0,116, 8, 72,255,194,128, 58, 0,235,246, 72, 41, +/* 0x0490 */ 242,191, 2, 0, 0, 0,232, 17,252,255,255, 1,197,233, 8,254, +/* 0x04a0 */ 255,255, 72,129,196,248, 0, 0, 0,137,232, 91, 93, 65, 92, 65, +/* 0x04b0 */ 93,195, 65, 85, 73,137,209, 73,137,240, 49,192, 65, 84, 73,137, +/* 0x04c0 */ 244, 85, 72,137,213, 83, 72,137,251, 72,137,222, 81, 76,139,111, +/* 0x04d0 */ 8, 72,139, 19,232, 23, 0, 0, 0,120,114,101, 97,100, 32, 37, +/* 0x04e0 */ 112, 40, 37,120, 32, 37,112, 41, 32, 37,112, 32, 37,120, 10, 0, +/* 0x04f0 */ 95, 76,137,233,232, 30,253,255,255, 72,139, 19, 72, 57,234,115, +/* 0x0500 */ 63, 72,139, 75, 8, 73,137,233, 77,137,224, 72,137,222, 49,192, +/* 0x0510 */ 232, 27, 0, 0, 0,120,114,101, 97,100,102, 97,105,108, 32, 37, +/* 0x0520 */ 112, 40, 37,120, 32, 37,112, 41, 32, 37,112, 32, 37,120, 10, 0, +/* 0x0530 */ 95,232,225,252,255,255,191,127, 0, 0, 0,232,112,251,255,255, +/* 0x0540 */ 72,141, 85,255, 72,131,250,255,116, 20, 65, 15,182, 69, 0, 72, +/* 0x0550 */ 255,202, 73,255,197, 65,136, 4, 36, 73,255,196,235,230, 72, 1, +/* 0x0560 */ 107, 8, 72, 41, 43, 88, 91, 93, 65, 92, 65, 93,195, 83,137,251, +/* 0x0570 */ 49,192,137,222,232, 13, 0, 0, 0,101,114,114, 95,101,120,105, +/* 0x0580 */ 116, 32, 37,120, 10, 0, 95,232,139,252,255,255,137,223,232, 29, +/* 0x0590 */ 251,255,255, 65, 85, 73,137,213, 73,137,240, 49,192, 65, 84, 73, +/* 0x05a0 */ 137,204, 85, 72,137,253,232, 49, 0, 0, 0,117,110,112, 97, 99, +/* 0x05b0 */ 107, 69,120,116,101,110,116, 32,105,110, 61, 37,112, 40, 37,120, +/* 0x05c0 */ 32, 37,112, 41, 32, 32,111,117,116, 61, 37,112, 40, 37,120, 32, +/* 0x05d0 */ 37,112, 41, 32, 32, 37,112, 32, 37,112, 10, 0, 95, 83, 72,137, +/* 0x05e0 */ 243, 72,131,236, 48, 72,139, 77, 8, 65, 84, 82,255,118, 8, 76, +/* 0x05f0 */ 139, 14, 72,139, 85, 0, 72,137,238,232, 25,252,255,255, 72,131, +/* 0x0600 */ 196, 32, 72,131, 59, 0, 15,132, 72, 1, 0, 0, 72,141,116, 36, +/* 0x0610 */ 16,186, 12, 0, 0, 0, 72,137,239,232,148,254,255,255,131,124, +/* 0x0620 */ 36, 16, 0,139, 68, 36, 20,117, 43, 61, 85, 80, 88, 33,116, 10, +/* 0x0630 */ 191, 2, 0, 0, 0,232, 51,255,255,255, 72,131,125, 0, 0, 15, +/* 0x0640 */ 132, 15, 1, 0, 0,191, 3, 0, 0, 0,232, 30,255,255,255,233, +/* 0x0650 */ 0, 1, 0, 0,133,192,117, 10,191, 4, 0, 0, 0,232, 11,255, +/* 0x0660 */ 255,255,139,116, 36, 20,139, 84, 36, 16, 57,214,119, 7,137,208, +/* 0x0670 */ 72, 59, 3,118, 61, 72,139, 11, 49,192,232, 35, 0, 0, 0,115, +/* 0x0680 */ 122, 95, 99,112,114, 61, 37,120, 32, 32,115,122, 95,117,110, 99, +/* 0x0690 */ 61, 37,120, 32, 32,120,111, 45, 62,115,105,122,101, 61, 37,120, +/* 0x06a0 */ 10, 0, 95,232,111,251,255,255,191, 5, 0, 0, 0,232,187,254, +/* 0x06b0 */ 255,255,139,116, 36, 20,139, 68, 36, 16, 76,139, 75, 8, 57,198, +/* 0x06c0 */ 115,108,137,192, 68, 15,182, 68, 36, 24, 72,139,125, 8, 72,137, +/* 0x06d0 */ 68, 36, 8, 72,141, 76, 36, 8, 76,137,202, 65,255,213,133,192, +/* 0x06e0 */ 117, 11,139, 68, 36, 16, 72, 57, 68, 36, 8,116, 10,191, 7, 0, +/* 0x06f0 */ 0, 0,232,118,254,255,255, 15,182, 76, 36, 25,132,201, 15,149, +/* 0x0700 */ 194, 49,192, 77,133,228, 15,149,192,133,194,116, 19, 15,182, 84, +/* 0x0710 */ 36, 26, 15,182,201, 72,139,123, 8,139,116, 36, 8, 65,255,212, +/* 0x0720 */ 139, 68, 36, 20, 72, 1, 69, 8, 72, 41, 69, 0,235, 13,137,242, +/* 0x0730 */ 72,137,239, 76,137,206,232,119,253,255,255,139, 84, 36, 16, 72, +/* 0x0740 */ 139, 3, 72, 1, 83, 8, 72, 41,208, 72,133,192, 72,137, 3,233, +/* 0x0750 */ 178,254,255,255, 72,131,196, 40, 91, 93, 65, 92, 65, 93,195, 65, +/* 0x0760 */ 87, 65, 86, 65, 85, 73,137,253, 73,131,197, 32, 65, 84, 85, 83, +/* 0x0770 */ 72,131,236,120, 72,137, 84, 36, 72, 72,137,124, 36, 88, 49,210, +/* 0x0780 */ 232, 61, 0, 0, 0,100,111, 95,120,109, 97,112, 32, 32,102,100, +/* 0x0790 */ 105, 61, 37,120, 32, 32,109,104,100,114, 61, 37,112, 32, 32, 42, +/* 0x07a0 */ 109,104,100,114,112,112, 61, 37,112, 32, 32,120,105, 61, 37,112, +/* 0x07b0 */ 40, 37,120, 32, 37,112, 41, 32,102, 95,117,110,102, 61, 37,112, +/* 0x07c0 */ 10, 0, 95, 72,131,124, 36, 72, 0, 72,139,132, 36,176, 0, 0, +/* 0x07d0 */ 0,137,116, 36, 84,137, 76, 36, 68, 76,137, 68, 36, 56, 76,137, +/* 0x07e0 */ 76, 36, 48, 72,137, 68, 36, 40, 72,199, 68, 36, 32, 0, 0, 0, +/* 0x07f0 */ 0, 72,199, 68, 36, 24, 0, 0, 0, 0,116, 8, 72,139, 76, 36, +/* 0x0800 */ 72, 72,139, 17, 49,201, 72,131,124, 36, 56, 0,116, 8, 72,139, +/* 0x0810 */ 92, 36, 56, 72,139, 11,255,116, 36, 40, 49,192, 72,131,124, 36, +/* 0x0820 */ 80, 0,116, 9, 72,139, 92, 36, 80, 72,139, 67, 8, 80, 73,137, +/* 0x0830 */ 209, 76,139, 68, 36, 88, 72,139, 84, 36,104,139,116, 36, 84, 49, +/* 0x0840 */ 192,232,209,249,255,255, 65, 88, 65, 89, 49,210,199, 68, 36, 20, +/* 0x0850 */ 0, 0, 0, 0, 72,139, 68, 36, 88, 59, 80, 16, 15,131,109, 3, +/* 0x0860 */ 0, 0, 65,139, 69, 0,131,248, 25, 15,133, 31, 3, 0, 0, 73, +/* 0x0870 */ 131,125, 32, 0, 15,132, 20, 3, 0, 0, 73,131,125, 40, 0,117, +/* 0x0880 */ 61, 73,131,125, 48, 0,116, 54, 72,139, 76, 36, 56, 72,139, 1, +/* 0x0890 */ 72,133,192,116, 41,246, 64, 26, 32,116, 35, 73, 43, 69, 24,232, +/* 0x08a0 */ 10, 0, 0, 0,114,101,108,111, 99, 61, 37,112, 10, 0, 95, 72, +/* 0x08b0 */ 137, 68, 36, 24, 72,137,198, 49,192,232, 89,249,255,255, 73,139, +/* 0x08c0 */ 85, 48, 72,139,124, 36, 24, 72,137, 84, 36, 96, 73, 3,125, 24, +/* 0x08d0 */ 73,137,215, 73,139, 93, 32, 72, 1,251, 72,137,253, 72,137,124, +/* 0x08e0 */ 36,104, 72,137, 92, 36, 8, 72,137,251,129,227,255, 15, 0, 0, +/* 0x08f0 */ 72, 41,221, 73, 1,223, 15,132, 30, 1, 0, 0, 72,131,124, 36, +/* 0x0900 */ 72, 0, 73,141, 71, 3, 72,139, 76, 36, 56, 73, 15, 68,199, 72, +/* 0x0910 */ 137, 4, 36, 72,139, 1, 72,131,248, 1, 25,192,131,224,240, 72, +/* 0x0920 */ 131,124, 36, 72, 0, 68,141,112, 18,117, 5, 72,133,210,117, 4, +/* 0x0930 */ 65,131,206, 32,131,203,255, 73,131,125, 48, 0, 68,139,100, 36, +/* 0x0940 */ 84, 15, 69, 92, 36, 68, 69, 3,101, 40, 69,137,240,255,116, 36, +/* 0x0950 */ 24,185, 3, 0, 0, 0, 72,137,238, 49,192,232, 67, 0, 0, 0, +/* 0x0960 */ 109,109, 97,112, 32, 32, 97,100,100,114, 61, 37,112, 32, 32,108, +/* 0x0970 */ 101,110, 61, 37,112, 32, 32,112,114,111,116, 61, 37,120, 32, 32, +/* 0x0980 */ 102,108, 97,103,115, 61, 37,120, 32, 32,102,100, 61, 37,100, 32, +/* 0x0990 */ 32,111,102,102, 61, 37,112, 32, 32,114,101,108,111, 99, 61, 37, +/* 0x09a0 */ 112, 10, 0, 95, 65, 84, 72,139, 84, 36, 16, 65,137,217,232,100, +/* 0x09b0 */ 248,255,255, 94, 95, 65,137,216, 69,137,225, 68,137,241,186, 3, +/* 0x09c0 */ 0, 0, 0, 72,137,239, 72,139, 52, 36,232,249,246,255,255, 72, +/* 0x09d0 */ 139, 92, 36, 56, 72,137,198, 72,131, 59, 0,117, 11, 72,137,197, +/* 0x09e0 */ 72,137, 3, 72,137, 68, 36, 24, 72, 57,245,116, 45, 72,137,234, +/* 0x09f0 */ 49,192,232, 19, 0, 0, 0,109, 97,100,100,114, 61, 37,112, 32, +/* 0x0a00 */ 32, 97,100,100,114, 61, 37,112, 10, 0, 95,232, 7,248,255,255, +/* 0x0a10 */ 191, 8, 0, 0, 0,232, 83,251,255,255, 72,131,124, 36, 72, 0, +/* 0x0a20 */ 116, 47, 73,131,125, 48, 0,116, 40, 73,131,125, 40, 0,117, 8, +/* 0x0a30 */ 72,139, 68, 36, 56, 72,137, 40, 72,139, 76, 36, 40, 72,139, 84, +/* 0x0a40 */ 36, 48, 72,141,116, 36, 96, 72,139,124, 36, 72,232, 66,251,255, +/* 0x0a50 */ 255, 72,139, 84, 36, 56, 72,131, 58, 0, 15,149,194, 49,192, 77, +/* 0x0a60 */ 133,255, 15,149,192,133,194,116,111, 73,131,125, 40, 0,117,104, +/* 0x0a70 */ 65,131,125, 64, 0,116, 97, 76,137,233, 72, 43, 76, 36, 88, 73, +/* 0x0a80 */ 137,232,232, 37, 0, 0, 0,104, 97,116, 99,104, 61, 37,112, 32, +/* 0x0a90 */ 32,115,101, 99,112, 61, 37,112, 32, 32,115,101,103,112, 61, 37, +/* 0x0aa0 */ 112, 32, 32,109,104,100,114, 61, 37,112, 10, 0, 95, 72,141, 76, +/* 0x0ab0 */ 13, 0, 72,141, 81, 72,139, 66, 48, 72,141, 68, 5, 0, 72,141, +/* 0x0ac0 */ 88,252,199, 64,252,144, 15, 5,195, 49,192, 72,137,222,232, 68, +/* 0x0ad0 */ 247,255,255, 72,137, 92, 36, 32, 76,137,251, 74,141, 84, 61, 0, +/* 0x0ae0 */ 72,247,219,129,227,255, 15, 0, 0, 72,137,216, 72,133,219,116, +/* 0x0af0 */ 11,198, 2, 0, 72,255,194, 72,255,200,235,243, 77,133,255,116, +/* 0x0b00 */ 29, 65,139, 85, 60, 76,137,254, 72,137,239,232,164,245,255,255, +/* 0x0b10 */ 133,192,116, 10,191, 10, 0, 0, 0,232, 79,250,255,255, 73,141, +/* 0x0b20 */ 4, 31, 72, 1,197, 72, 59,108, 36, 8,115, 60, 72,133,237, 15, +/* 0x0b30 */ 132,134, 0, 0, 0, 72, 41,108, 36, 8, 65,139, 85, 60, 69, 49, +/* 0x0b40 */ 201, 72,139,116, 36, 8, 65,131,200,255,185, 50, 0, 0, 0, 72, +/* 0x0b50 */ 137,239,232,113,245,255,255, 72, 57,197,116, 95,191, 9, 0, 0, +/* 0x0b60 */ 0,232, 7,250,255,255,235, 83, 72,131,124, 36, 72, 0,116, 75, +/* 0x0b70 */ 73,131,199, 3, 65,129,231,255, 15, 0, 0, 73,131,255, 3,119, +/* 0x0b80 */ 58, 76,137,254, 72,137,239,232, 44,245,255,255,235, 45,131,232, +/* 0x0b90 */ 4,131,248, 1,119, 37, 72,184, 4, 0, 0, 0, 42, 0, 0, 0, +/* 0x0ba0 */ 73, 57, 69, 8,117, 21, 72,139, 76, 36, 24, 73, 1,141,144, 0, +/* 0x0bb0 */ 0, 0, 73,141, 93, 16, 72,137, 92, 36, 32, 65,139, 69, 4,255, +/* 0x0bc0 */ 68, 36, 20,139, 84, 36, 20, 73, 1,197,233,133,252,255,255, 72, +/* 0x0bd0 */ 139, 68, 36, 32, 72,131,196,120, 91, 93, 65, 92, 65, 93, 65, 94, +/* 0x0be0 */ 65, 95,195, 65, 87, 77,137,207, 65, 86, 65, 85, 77,137,197, 65, +/* 0x0bf0 */ 84, 85, 72,137,213, 72,141, 87, 24, 83, 72,131,236,104, 68,139, +/* 0x0c00 */ 79, 24, 72,137,116, 36, 88, 72,139, 68, 36, 88, 76,141,116, 36, +/* 0x0c10 */ 48, 76,139,164, 36,160, 0, 0, 0, 72,137, 76, 36, 16, 76,137, +/* 0x0c20 */ 249, 72,137, 84, 36, 72, 72,137, 84, 36, 40, 77,137,240, 72,131, +/* 0x0c30 */ 232, 24, 76,137, 76, 36, 48, 72,139,116, 36, 88, 72,137, 68, 36, +/* 0x0c40 */ 64, 72,137, 68, 36, 32, 72,199, 68, 36, 8, 0, 0, 0, 0,199, +/* 0x0c50 */ 68, 36, 4, 0, 0, 0, 0, 72,137,108, 36, 56, 65,255, 52, 36, +/* 0x0c60 */ 232, 88, 0, 0, 0,117,112,120, 95,109, 97,105,110, 32,115,122, +/* 0x0c70 */ 99, 61, 37,120, 32, 32,102, 95,100,101, 99, 61, 37,112, 32, 32, +/* 0x0c80 */ 102, 95,117,110,102, 61, 37,112, 32, 32, 32, 32,120,111, 61, 37, +/* 0x0c90 */ 112, 40, 37,120, 32, 37,112, 41, 32, 32,120,105, 61, 37,112, 40, +/* 0x0ca0 */ 37,120, 32, 37,112, 41, 32, 32,109,104,100,114,112,112, 61, 37, +/* 0x0cb0 */ 112, 32, 32,109,104,100,114,112, 61, 37,112, 10, 0, 95, 65, 84, +/* 0x0cc0 */ 82, 76,137,234, 80, 49,192, 72,141, 92, 36, 96, 83, 85,232, 68, +/* 0x0cd0 */ 245,255,255, 72,131,196, 48, 76,137,234, 76,137,246, 49,201, 72, +/* 0x0ce0 */ 137,223,232,172,248,255,255, 80, 77,137,233, 77,137,224,131,201, +/* 0x0cf0 */ 255, 49,246, 72,137,239, 72,141, 84, 36, 40, 65, 87,232, 93,250, +/* 0x0d00 */ 255,255, 65, 92, 65, 94,139,117, 16, 72,141, 85, 32, 73,137,197, +/* 0x0d10 */ 49,201, 57,241, 15,131, 4, 1, 0, 0,131, 58, 14, 15,133,238, +/* 0x0d20 */ 0, 0, 0,139, 66, 8,232, 10, 0, 0, 0,100,121,108,100, 61, +/* 0x0d30 */ 32, 37,115, 10, 0, 95, 72,141, 28, 2, 49,192, 72,137,222,232, +/* 0x0d40 */ 211,244,255,255, 49,210, 49,246, 49,192, 72,137,223,232,114,243, +/* 0x0d50 */ 255,255,133,192, 65,137,196,121, 10,191, 18, 0, 0, 0,232, 10, +/* 0x0d60 */ 248,255,255,139, 76, 36, 4, 72,139, 84, 36, 16, 72,137,238, 68, +/* 0x0d70 */ 137,231,232, 69,243,255,255, 72, 57, 68, 36, 16,116, 10,191, 19, +/* 0x0d80 */ 0, 0, 0,232,229,247,255,255,139, 69, 0, 61,202,254,186,190, +/* 0x0d90 */ 116, 7, 61,190,186,254,202,117, 49, 72, 15,182,117, 7, 72,137, +/* 0x0da0 */ 239, 72,141, 93, 8, 72,107,246, 20,131,198, 8,232,235,242,255, +/* 0x0db0 */ 255,139, 69, 4, 49,201, 57,193,115, 16,129, 59, 7, 0, 0, 1, +/* 0x0dc0 */ 116, 67,255,193, 72,131,195, 20,235,236, 72,199, 68, 36, 24, 0, +/* 0x0dd0 */ 0, 0, 0, 83, 69, 49,201, 68,137,225, 49,210,106, 0,139,116, +/* 0x0de0 */ 36, 20, 72,137,239, 76,141, 68, 36, 40,232,112,249,255,255, 68, +/* 0x0df0 */ 137,231, 76,137, 40, 72,137, 68, 36, 24,232,193,242,255,255, 65, +/* 0x0e00 */ 90, 65, 91,235, 25,139, 91, 8,137, 92, 36, 4,233, 82,255,255, +/* 0x0e10 */ 255,139, 66, 4,255,193, 72, 1,194,233,244,254,255,255, 72,139, +/* 0x0e20 */ 68, 36, 8, 72,131,196,104, 91, 93, 65, 92, 65, 93, 65, 94, 65, +/* 0x0e30 */ 95,195 }; diff --git a/src/stub/arm.v5a-darwin.macho-entry.h b/src/stub/arm.v5a-darwin.macho-entry.h index 8fd63b90..e652cf2e 100644 --- a/src/stub/arm.v5a-darwin.macho-entry.h +++ b/src/stub/arm.v5a-darwin.macho-entry.h @@ -32,8 +32,8 @@ #define STUB_ARM_V5A_DARWIN_MACHO_ENTRY_SIZE 14641 -#define STUB_ARM_V5A_DARWIN_MACHO_ENTRY_ADLER32 0x0ffa216f -#define STUB_ARM_V5A_DARWIN_MACHO_ENTRY_CRC32 0xbe87f3f4 +#define STUB_ARM_V5A_DARWIN_MACHO_ENTRY_ADLER32 0x8f2a1f61 +#define STUB_ARM_V5A_DARWIN_MACHO_ENTRY_CRC32 0xb74e9697 unsigned char stub_arm_v5a_darwin_macho_entry[14641] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, @@ -331,8 +331,8 @@ unsigned char stub_arm_v5a_darwin_macho_entry[14641] = { /* 0x1240 */ 0,160,138,224, 0, 80,160,227, 0, 64,157,229, 18, 48,160,227, /* 0x1250 */ 3, 32,160,227, 12, 16, 72,224, 7,192,160,225,192,112,160,227, /* 0x1260 */ 0, 0, 0,239, 12,112,160,225, 8, 32,157,229, 16, 48,157,229, -/* 0x1270 */ 7, 32,130,224, 3,192, 71,224, 9,112,135,224, 4,144, 45,229, -/* 0x1280 */ 39,118,160,225, 7,118,160,225, 4,112, 45,229, 7, 32, 66,224, +/* 0x1270 */ 0, 32,130,224, 3,192, 64,224, 12, 48,137,224, 4, 48, 45,229, +/* 0x1280 */ 32, 6,160,225, 0, 6,160,225, 4, 0, 45,229, 0, 32, 66,224, /* 0x1290 */ 4, 32, 45,229, 0,112,152,229, 4,112, 13,229, 13, 48,160,225, /* 0x12a0 */ 12, 32,136,224, 2, 96,160,225, 4,112,152,229, 8, 64,152,229, /* 0x12b0 */ 12, 0,136,226, 7, 16,160,225, 57,255, 47,225, 4,208,141,226, diff --git a/src/stub/arm64-darwin.macho-entry.h b/src/stub/arm64-darwin.macho-entry.h index 61cc8c3f..d0c9f804 100644 --- a/src/stub/arm64-darwin.macho-entry.h +++ b/src/stub/arm64-darwin.macho-entry.h @@ -1,5 +1,5 @@ /* arm64-darwin.macho-entry.h - created from arm64-darwin.macho-entry.bin, 7997 (0x1f3d) bytes + created from arm64-darwin.macho-entry.bin, 7929 (0x1ef9) bytes This file is part of the UPX executable compressor. @@ -31,509 +31,505 @@ */ -#define STUB_ARM64_DARWIN_MACHO_ENTRY_SIZE 7997 -#define STUB_ARM64_DARWIN_MACHO_ENTRY_ADLER32 0xc3a0cd93 -#define STUB_ARM64_DARWIN_MACHO_ENTRY_CRC32 0x23734600 +#define STUB_ARM64_DARWIN_MACHO_ENTRY_SIZE 7929 +#define STUB_ARM64_DARWIN_MACHO_ENTRY_ADLER32 0x4d17a960 +#define STUB_ARM64_DARWIN_MACHO_ENTRY_CRC32 0x7e7a0dbf -unsigned char stub_arm64_darwin_macho_entry[7997] = { +unsigned char stub_arm64_darwin_macho_entry[7929] = { /* 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, 8, 23, 0, 0, 0, 0, 0, 0, +/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,192, 22, 0, 0, 0, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, -/* 0x0040 */ 255, 35, 0,209,224, 7,177,169,226, 15, 1,169,228, 23, 2,169, -/* 0x0050 */ 230, 31, 3,169,232, 39, 4,169,234, 47, 5,169,236, 55, 6,169, -/* 0x0060 */ 238, 63, 7,169,240, 71, 8,169,242, 79, 9,169,244, 87, 10,169, -/* 0x0070 */ 246, 95, 11,169,248,103, 12,169,250,111, 13,169,252,119, 14,169, -/* 0x0080 */ 0, 0, 0,148,254, 15, 31,248,226, 15,191,169, 7, 64, 33,139, -/* 0x0090 */ 5, 0,128, 18, 4, 0,176, 82, 24, 0, 0, 20,227, 19,193,168, -/* 0x00a0 */ 0, 0, 7,203, 66, 0, 3,203,130, 0, 0,185,228, 3, 0,170, -/* 0x00b0 */ 224, 3, 3,170, 97, 0, 2,139, 32,123, 11,213, 32,117, 11,213, -/* 0x00c0 */ 0, 0, 1,145, 31, 0, 1,235,131,255,255, 84,224, 3, 4,170, -/* 0x00d0 */ 254, 7, 65,248,192, 3, 95,214,132, 0, 4, 43, 68, 0, 0, 52, -/* 0x00e0 */ 192, 3, 95,214, 4, 68, 64,184,132, 0, 4, 58,192, 3, 95,214, -/* 0x00f0 */ 3, 20, 64, 56, 67, 20, 0, 56,248,255,255,151,162,255,255, 84, -/* 0x0100 */ 33, 0,128, 82, 4, 0, 0, 20, 33, 4, 0, 81,243,255,255,151, -/* 0x0110 */ 33, 0, 1, 26,241,255,255,151, 33, 0, 1, 26,239,255,255,151, -/* 0x0120 */ 67,255,255, 84, 35, 12, 0,113, 1, 0,128, 82, 35, 1, 0, 84, -/* 0x0130 */ 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42, 5,251,255, 52, -/* 0x0140 */ 191, 0, 0,114,165,124, 1, 19,161, 1, 0, 84, 3, 0, 0, 20, -/* 0x0150 */ 226,255,255,151, 66, 1, 0, 84, 33, 0,128, 82,223,255,255,151, -/* 0x0160 */ 226, 0, 0, 84,221,255,255,151, 33, 0, 1, 26,219,255,255,151, -/* 0x0170 */ 163,255,255, 84, 33, 16, 0, 17, 4, 0, 0, 20,215,255,255,151, -/* 0x0180 */ 33, 0, 1, 26, 33, 8, 0, 17,191, 0, 20, 49, 33, 36,129, 26, -/* 0x0190 */ 67, 64, 33,139, 99,240, 95, 56, 67,200,101, 56, 67, 20, 0, 56, -/* 0x01a0 */ 33, 4, 0,113,161,255,255, 84,212,255,255, 23,226, 15,190,169, -/* 0x01b0 */ 254, 11, 0,249, 7, 64, 33,139, 5, 0,128, 18, 4, 0,176, 82, -/* 0x01c0 */ 24, 0, 0, 20,227, 19,193,168, 0, 0, 7,203, 66, 0, 3,203, -/* 0x01d0 */ 130, 0, 0,185,228, 3, 0,170,224, 3, 3,170, 97, 0, 2,139, -/* 0x01e0 */ 32,123, 11,213, 32,117, 11,213, 0, 0, 1,145, 31, 0, 1,235, -/* 0x01f0 */ 131,255,255, 84,224, 3, 4,170,254, 7, 65,248,192, 3, 95,214, -/* 0x0200 */ 132, 0, 4, 43, 68, 0, 0, 52,192, 3, 95,214, 4, 68, 64,184, -/* 0x0210 */ 132, 0, 4, 58,192, 3, 95,214, 3, 20, 64, 56, 67, 20, 0, 56, -/* 0x0220 */ 248,255,255,151,162,255,255, 84, 33, 0,128, 82, 4, 0, 0, 20, -/* 0x0230 */ 33, 4, 0, 81,243,255,255,151, 33, 0, 1, 58,241,255,255,151, -/* 0x0240 */ 33, 0, 1, 58,239,255,255,151, 67,255,255, 84, 35, 12, 0,113, -/* 0x0250 */ 1, 0,128, 82, 35, 1, 0, 84, 5, 20, 64, 56,165, 32, 3, 42, -/* 0x0260 */ 229, 3, 37, 42, 5,251,255, 52,163, 0, 1, 83,165,124, 1, 83, -/* 0x0270 */ 99, 0, 3, 43, 2, 0, 0, 20,226,255,255,151, 33, 0, 1, 58, -/* 0x0280 */ 224,255,255,151, 33, 0, 1, 58,225, 0, 0, 84, 33, 0,128, 82, -/* 0x0290 */ 220,255,255,151, 33, 0, 1, 58,218,255,255,151,163,255,255, 84, -/* 0x02a0 */ 33, 8, 0, 17, 33, 4, 0, 17,191, 0, 20, 49, 33, 52,129, 26, -/* 0x02b0 */ 67, 0, 64, 57, 67,200,101, 56, 67, 20, 0, 56, 33, 4, 0,113, -/* 0x02c0 */ 161,255,255, 84,215,255,255, 23, 1, 64, 33,139,225, 11,190,169, -/* 0x02d0 */ 227,123, 1,169, 5, 0,128, 18, 4, 0,176, 82, 31, 0, 0, 20, -/* 0x02e0 */ 228,123, 65,169,225, 15,194,168, 0, 0, 1,203, 66, 0, 3,203, -/* 0x02f0 */ 130, 0, 0,185,228, 3, 0,170,224, 3, 3,170, 97, 0, 2,139, -/* 0x0300 */ 32,123, 11,213, 32,117, 11,213, 0, 0, 1,145, 31, 0, 1,235, -/* 0x0310 */ 131,255,255, 84,224, 3, 4,170,192, 3, 95,214,132, 0, 4, 43, -/* 0x0320 */ 68, 0, 0, 52,192, 3, 95,214, 4, 68, 64,184,132, 0, 4, 58, -/* 0x0330 */ 192, 3, 95,214, 33, 0,128, 82,240, 3, 30,170,248,255,255,151, -/* 0x0340 */ 33, 0, 1, 58,246,255,255,151,163,255,255, 84, 0, 2, 31,214, -/* 0x0350 */ 3, 20, 64, 56, 67, 20, 0, 56,241,255,255,151,162,255,255, 84, -/* 0x0360 */ 245,255,255,151, 35, 12, 0,113, 1, 0,128, 82,163, 0, 0, 84, -/* 0x0370 */ 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42, 37,251,255, 52, -/* 0x0380 */ 231,255,255,151, 33, 0, 1, 58,229,255,255,151, 33, 0, 1, 58, -/* 0x0390 */ 97, 0, 0, 84,232,255,255,151, 33, 8, 0, 17,191, 0, 52, 49, -/* 0x03a0 */ 33, 36,129, 26, 67,200,101, 56, 33, 4, 0,113, 67, 20, 0, 56, -/* 0x03b0 */ 162,255,255, 84,233,255,255, 23,159, 56, 0,113, 1, 0, 0, 84, -/* 0x03c0 */ 1, 64, 33,139, 4, 0,128,210,225, 11,190,169,227,123, 1,169, -/* 0x03d0 */ 228, 19,191,169,224, 3, 0,145,227, 35, 0,145,230, 51, 0,145, -/* 0x03e0 */ 8, 0, 64, 57, 7,192,128, 82, 8,125, 3, 83,231, 32,200, 26, -/* 0x03f0 */ 253, 3, 0,145,231,192, 57, 17,232, 3, 0,145,255, 67, 39,203, -/* 0x0400 */ 100, 16,129,168,127, 0, 8,235,195,255,255, 84,230, 3, 3,170, -/* 0x0410 */ 229, 3, 7, 42,228, 3, 2,170, 34, 8, 0, 81,225, 3, 0,170, -/* 0x0420 */ 39, 20, 64, 56,231, 8, 0, 18,231, 11, 0, 57, 39, 20, 64, 56, -/* 0x0430 */ 232,124, 4, 83,232, 7, 0, 57,231, 12, 0, 18,231, 3, 0, 57, -/* 0x0440 */ 224, 3, 0,145, 17, 0, 0,148,191, 3, 0,145,228,123, 65,169, -/* 0x0450 */ 225, 15,194,168, 0, 0, 1,203, 66, 0, 3,203,130, 0, 0,185, -/* 0x0460 */ 228, 3, 0,170,224, 3, 3,170, 97, 0, 2,139, 32,123, 11,213, -/* 0x0470 */ 32,117, 11,213, 0, 0, 1,145, 31, 0, 1,235,131,255,255, 84, -/* 0x0480 */ 224, 3, 4,170,192, 3, 95,214,255, 67, 1,209, 39, 0,128, 82, -/* 0x0490 */ 17, 16, 0,145, 9,128,128, 82,243, 83, 0,169,245, 91, 1,169, -/* 0x04a0 */ 247, 99, 2,169,249,107, 3,169,251,115, 4,169, 20, 8, 64, 57, -/* 0x04b0 */ 19, 4, 64, 57, 22, 0, 64, 57,244, 32,212, 26,127, 0, 0,185, -/* 0x04c0 */ 243, 32,211, 26,223, 0, 0,185, 7, 0,128,210,148, 6, 0, 81, -/* 0x04d0 */ 8, 4, 64, 57, 10, 1, 22, 11,104, 6, 0, 81, 18, 1, 39, 30, -/* 0x04e0 */ 8, 96,128, 82, 8, 33,202, 26, 8,217, 28, 49,160, 0, 0, 84, -/* 0x04f0 */ 41,122, 39,120,231, 4, 0,145, 31, 1, 7,107,168,255,255, 84, -/* 0x0500 */ 34, 64, 34,139, 63, 0, 2,235, 64, 16, 0, 84,235, 3, 1,170, -/* 0x0510 */ 40, 4, 0,145,103, 85, 64, 56, 31, 1, 2,235,160, 15, 0, 84, -/* 0x0520 */ 9, 21, 64, 56, 31, 1, 11,235, 39, 33, 7, 42, 97,255,255, 84, -/* 0x0530 */ 229, 69, 0, 52, 8, 1,128, 82, 53, 0,128, 82, 18, 0,128, 82, -/* 0x0540 */ 9, 0,128, 18, 20, 1, 39, 30,104, 0,128, 82,177, 2, 39, 30, -/* 0x0550 */ 247, 3, 21, 42, 7, 1, 39, 30, 8, 86,128,210,165, 2, 39, 30, -/* 0x0560 */ 252, 3, 21, 42, 3, 1,103,158,104, 1,128, 82,234, 3, 18, 42, -/* 0x0570 */ 240, 3, 18, 42, 0, 1, 39, 30, 8,176, 41,145, 14,224,191, 18, -/* 0x0580 */ 15, 0,129, 82, 1, 1,103,158, 40, 1,128, 82, 2, 1, 39, 30, -/* 0x0590 */ 136, 2, 38, 30, 8, 1, 22, 75, 16, 1, 39, 30, 72,110, 28, 83, -/* 0x05a0 */ 63, 1, 14,107, 25, 2, 20, 10, 13,125, 64,147,173,193, 57,139, -/* 0x05b0 */ 173,249,127,211,232, 0, 0, 84,127, 1, 2,235,160, 10, 0, 84, -/* 0x05c0 */ 104, 1, 64, 57, 41, 93, 24, 83,107, 5, 0,145, 7, 33, 7, 42, -/* 0x05d0 */ 59,106,109,120, 40,125, 11, 83, 8,125, 27, 27,255, 0, 8,107, -/* 0x05e0 */ 130, 10, 0, 84, 73, 2, 38, 30, 19, 62, 1, 14, 95, 26, 0,113, -/* 0x05f0 */ 12, 2, 9, 10, 73, 41,211, 26,140, 33,214, 26,234, 1, 27, 75, -/* 0x0600 */ 41, 1, 12, 11,106, 23,138, 11, 42,106, 45,120, 41, 5, 9, 11, -/* 0x0610 */ 41, 93,120,211, 41,217, 28,145, 58, 6, 9,139,109, 31, 0, 84, -/* 0x0620 */ 10, 2, 28, 75, 41, 0,128, 82,153,104,106, 56, 7, 0, 0, 20, -/* 0x0630 */ 91,107, 42,120, 41,121, 31, 83,232, 3, 13, 42, 83, 57, 0, 53, -/* 0x0640 */ 63,253, 3,113,236, 3, 0, 84, 57,123, 31, 83, 31, 1, 14,107, -/* 0x0650 */ 51, 3, 24, 18, 56,121, 31, 83,106,126, 64,147, 74, 1, 4,145, -/* 0x0660 */ 74,193, 41,139, 74,249,127,211,232, 0, 0, 84,127, 1, 2,235, -/* 0x0670 */ 8, 93, 24, 83,224, 4, 0, 84,108, 1, 64, 57,107, 5, 0,145, -/* 0x0680 */ 135, 33, 7, 42, 76,107,106,120, 13,125, 11, 83,251, 1, 12, 75, -/* 0x0690 */ 173,125, 12, 27,155, 21,155, 11,140, 21, 76, 75,255, 0, 13,107, -/* 0x06a0 */ 8, 1, 13, 75, 99,252,255, 84, 76,107, 42,120, 9, 7, 0, 17, -/* 0x06b0 */ 231, 0, 13, 75,115,252,255, 53, 63,253, 3,113, 77, 27, 0, 84, -/* 0x06c0 */ 42, 29, 0, 83,233, 3, 8, 42,138, 72, 48, 56, 16, 6, 0, 17, -/* 0x06d0 */ 95, 38, 0,113,236, 49, 0, 84, 82, 14, 0, 81,191, 0, 16,107, -/* 0x06e0 */ 232,245,255, 84, 0,224,191, 18, 63, 1, 0,107,136, 0, 0, 84, -/* 0x06f0 */ 127, 1, 2,235,224, 0, 0, 84,107, 5, 0,145, 97, 1, 1,203, -/* 0x0700 */ 97, 0, 0,185,208, 0, 0,185, 0, 0,128, 82, 2, 0, 0, 20, -/* 0x0710 */ 32, 0,128, 82,243, 83, 64,169,245, 91, 65,169,247, 99, 66,169, -/* 0x0720 */ 249,107, 67,169,251,115, 68,169,255, 67, 1,145,192, 3, 95,214, -/* 0x0730 */ 58, 1, 8, 75, 74,126, 64,147,105, 23, 91, 75, 95, 3, 14,107, -/* 0x0740 */ 41,106, 45,120, 76, 1, 3,145,231, 0, 8, 75,140,249,127,211, -/* 0x0750 */ 232, 0, 0, 84,127, 1, 2,235,192,253,255, 84,104, 1, 64, 57, -/* 0x0760 */ 90, 95, 24, 83,107, 5, 0,145, 7, 33, 7, 42, 40,106,108,120, -/* 0x0770 */ 74,127, 11, 83, 74,125, 8, 27,255, 0, 10,107,130, 25, 0, 84, -/* 0x0780 */ 237, 0, 38, 30,233, 1, 8, 75, 95, 30, 0,113, 53, 2, 38, 30, -/* 0x0790 */ 8, 21,137, 11,241, 2, 39, 30, 40,106, 44,120,242,179,141, 26, -/* 0x07a0 */ 12,160, 25,145,247, 3, 28, 42, 95, 1, 14,107,232, 0, 0, 84, -/* 0x07b0 */ 127, 1, 2,235,224,250,255, 84,104, 1, 64, 57, 74, 93, 24, 83, -/* 0x07c0 */ 107, 5, 0,145, 7, 33, 7, 42,141, 1, 64,121, 73,125, 11, 83, -/* 0x07d0 */ 41,125, 13, 27,255, 0, 9,107, 98, 31, 0, 84, 40,115, 29, 83, -/* 0x07e0 */ 115, 0,128, 82,234, 1, 13, 75, 8,125, 64,147, 8, 9, 0,145, -/* 0x07f0 */ 173, 21,138, 11,228, 3, 39, 30,141, 1, 0,121,102, 2, 39, 30, -/* 0x0800 */ 153, 5, 8,139,218, 0, 38, 30, 44, 0,128, 82, 6, 0, 0, 20, -/* 0x0810 */ 13, 3, 0,121, 90, 7, 0,113,140,121, 31, 83,233, 3, 8, 42, -/* 0x0820 */ 32, 3, 0, 84, 63, 1, 14,107,147,121, 31, 83, 56,199, 44,139, -/* 0x0830 */ 232, 0, 0, 84,127, 1, 2,235, 41, 93, 24, 83,160,246,255, 84, -/* 0x0840 */ 104, 1, 64, 57,107, 5, 0,145, 7, 33, 7, 42, 8, 3, 64,121, -/* 0x0850 */ 42,125, 11, 83,237, 1, 8, 75, 27, 21, 72, 75, 13, 21,141, 11, -/* 0x0860 */ 72,125, 8, 27,255, 0, 8,107, 41, 1, 8, 75, 35,253,255, 84, -/* 0x0870 */ 27, 3, 0,121, 90, 7, 0,113,231, 0, 8, 75,108, 6, 0, 17, -/* 0x0880 */ 33,253,255, 84,166, 68,166, 46,138, 0, 38, 30, 95, 14, 0,113, -/* 0x0890 */ 200, 0, 38, 30, 72, 1, 8, 75, 8, 1, 12, 11, 6, 1, 39, 30, -/* 0x08a0 */ 236, 22, 0, 84,234, 0, 38, 30, 31, 13, 0,113,220, 0,128, 82, -/* 0x08b0 */ 10,209,138, 26, 40, 0,128, 82, 74,101, 26, 83, 74,125, 64,147, -/* 0x08c0 */ 74,193, 6,145, 91,249,127,211, 6, 0, 0, 20, 44,106, 57,120, -/* 0x08d0 */ 156, 7, 0,113, 8,121, 31, 83,233, 3, 10, 42, 32, 3, 0, 84, -/* 0x08e0 */ 63, 1, 14,107, 19,121, 31, 83,121,199, 40,139,232, 0, 0, 84, -/* 0x08f0 */ 127, 1, 2,235, 41, 93, 24, 83,192,240,255, 84,106, 1, 64, 57, -/* 0x0900 */ 107, 5, 0,145, 71, 33, 7, 42, 42,106,121,120, 45,125, 11, 83, -/* 0x0910 */ 236, 1, 10, 75, 90, 21, 74, 75, 76, 21,140, 11,170,125, 10, 27, -/* 0x0920 */ 255, 0, 10,107, 41, 1, 10, 75, 35,253,255, 84, 58,106, 57,120, -/* 0x0930 */ 156, 7, 0,113,231, 0, 10, 75,104, 6, 0, 17, 33,253,255, 84, -/* 0x0940 */ 10, 1, 1, 81, 95, 13, 0,113, 45, 17, 0, 84, 95, 53, 0,113, -/* 0x0950 */ 72, 1, 0, 18, 77,125, 1, 19, 12, 1, 31, 50,140, 32, 0, 84, -/* 0x0960 */ 104, 0,102,158,187, 5, 0, 81,152, 33,219, 26, 8,193, 42,203, -/* 0x0970 */ 8, 65, 56,139, 40, 6, 8,139, 8, 9, 0,209, 19, 1,103,158, -/* 0x0980 */ 40, 0,128, 82,252, 3, 8, 42, 7, 0, 0, 20, 83, 3, 0,121, -/* 0x0990 */ 8,121, 31, 83,233, 3, 10, 42,123, 7, 0,113,156,123, 31, 83, -/* 0x09a0 */ 128, 14, 0, 84,106, 2,102,158, 63, 1, 14,107, 25,121, 31, 83, -/* 0x09b0 */ 90,197, 40,139,232, 0, 0, 84,127, 1, 2,235, 41, 93, 24, 83, -/* 0x09c0 */ 128,234,255, 84,106, 1, 64, 57,107, 5, 0,145, 71, 33, 7, 42, -/* 0x09d0 */ 74, 3, 64,121, 45,125, 11, 83,243, 1, 10, 75, 76, 21, 74, 75, -/* 0x09e0 */ 83, 21,147, 11,170,125, 10, 27,255, 0, 10,107, 41, 1, 10, 75, -/* 0x09f0 */ 227,252,255, 84, 76, 3, 0,121, 24, 3, 28, 42,231, 0, 10, 75, -/* 0x0a00 */ 40, 7, 0, 17,229,255,255, 23, 41, 0,128, 82, 6, 0, 0, 20, -/* 0x0a10 */ 41,121, 31, 83, 74,107, 56,120, 63,253, 3,113,232, 3, 12, 42, -/* 0x0a20 */ 44, 3, 0, 84, 31, 1, 14,107, 51,121, 31, 83, 56,125,127,147, -/* 0x0a30 */ 232, 0, 0, 84,127, 1, 2,235, 8, 93, 24, 83,160,230,255, 84, -/* 0x0a40 */ 106, 1, 64, 57,107, 5, 0,145, 71, 33, 7, 42, 74,107,120,120, -/* 0x0a50 */ 12,125, 11, 83,237, 1, 10, 75,140,125, 10, 27, 89, 21, 74, 75, -/* 0x0a60 */ 74, 21,141, 11,255, 0, 12,107, 8, 1, 12, 75, 35,253,255, 84, -/* 0x0a70 */ 105, 6, 0, 17, 89,107, 56,120, 63,253, 3,113,231, 0, 12, 75, -/* 0x0a80 */ 45,253,255, 84, 42, 29, 0, 83, 95, 14, 0,113,138, 72, 48, 56, -/* 0x0a90 */ 233, 3, 8, 42, 16, 6, 0, 17,204,225,255, 84,191, 0, 16,107, -/* 0x0aa0 */ 18, 0,128, 82,200,215,255, 84, 15,255,255, 23, 73, 3, 10, 75, -/* 0x0ab0 */ 8, 21, 72, 75, 63, 1, 14,107, 40,106, 44,120,231, 0, 10, 75, -/* 0x0ac0 */ 154, 97, 0,145,232, 0, 0, 84,127, 1, 2,235, 32,226,255, 84, -/* 0x0ad0 */ 104, 1, 64, 57, 41, 93, 24, 83,107, 5, 0,145, 7, 33, 7, 42, -/* 0x0ae0 */ 40,106,122,120, 42,125, 11, 83, 74,125, 8, 27,255, 0, 10,107, -/* 0x0af0 */ 66, 10, 0, 84,233, 1, 8, 75, 95, 1, 14,107,173,129, 7,145, -/* 0x0b00 */ 8, 21,137, 11, 40,106, 58,120,232, 0, 0, 84,127, 1, 2,235, -/* 0x0b10 */ 0,224,255, 84,104, 1, 64, 57, 74, 93, 24, 83,107, 5, 0,145, -/* 0x0b20 */ 7, 33, 7, 42, 40,106,109,120, 73,125, 11, 83, 41,125, 8, 27, -/* 0x0b30 */ 255, 0, 9,107,226, 16, 0, 84,234, 1, 8, 75, 8, 21,138, 11, -/* 0x0b40 */ 40,106, 45,120,112,222,255, 52, 74, 0, 38, 30, 8, 2, 28, 75, -/* 0x0b50 */ 12, 0, 38, 30, 95, 30, 0,113, 82,177,140, 26,138,104,104, 56, -/* 0x0b60 */ 138, 72, 48, 56, 16, 6, 0, 17,221,254,255, 23,248, 3, 10, 42, -/* 0x0b70 */ 28, 7, 0, 49,128,219,255, 84, 82, 30, 0, 17,200, 0, 38, 30, -/* 0x0b80 */ 159, 3, 16,107, 12, 9, 0, 17, 72,220,255, 84,232, 3, 16, 42, -/* 0x0b90 */ 2, 0, 0, 20, 76,218,255, 52, 10, 2, 28, 75, 16, 6, 0, 17, -/* 0x0ba0 */ 31, 2, 5,107,140, 5, 0, 81,138,104,106, 56,138, 72, 40, 56, -/* 0x0bb0 */ 232, 3, 16, 42, 3,255,255, 84,191, 0, 16,107, 8,207,255, 84, -/* 0x0bc0 */ 201,254,255, 23, 74, 1, 9, 75,173, 21, 77, 75, 95, 1, 14,107, -/* 0x0bd0 */ 141, 1, 0,121,231, 0, 9, 75,232, 0, 0, 84,127, 1, 2,235, -/* 0x0be0 */ 128,217,255, 84,104, 1, 64, 57, 74, 93, 24, 83,107, 5, 0,145, -/* 0x0bf0 */ 7, 33, 7, 42,141, 5, 64,121, 73,125, 11, 83, 41,125, 13, 27, -/* 0x0c00 */ 255, 0, 9,107, 34, 7, 0, 84, 40,115, 29, 83, 19, 1,128, 82, -/* 0x0c10 */ 234, 1, 13, 75, 8,125, 64,147,100, 2, 39, 30, 8, 9, 2,145, -/* 0x0c20 */ 115, 0,128, 82,173, 21,138, 11,153, 5, 8,139,141, 5, 0,121, -/* 0x0c30 */ 102, 2, 39, 30,244,254,255, 23, 41, 1, 10, 75, 8, 21, 72, 75, -/* 0x0c40 */ 63, 1, 14,107, 40,106, 58,120,231, 0, 10, 75,154,193, 0,145, -/* 0x0c50 */ 232, 0, 0, 84,127, 1, 2,235,192,213,255, 84,104, 1, 64, 57, -/* 0x0c60 */ 41, 93, 24, 83,107, 5, 0,145, 7, 33, 7, 42, 45,106,122,120, -/* 0x0c70 */ 40,125, 11, 83, 10,125, 13, 27,255, 0, 10,107, 35, 5, 0, 84, -/* 0x0c80 */ 41, 1, 10, 75,173, 21, 77, 75, 63, 1, 14,107, 45,106, 58,120, -/* 0x0c90 */ 231, 0, 10, 75,140, 33, 1,145,232, 0, 0, 84,127, 1, 2,235, -/* 0x0ca0 */ 128,211,255, 84,104, 1, 64, 57, 41, 93, 24, 83,107, 5, 0,145, -/* 0x0cb0 */ 7, 33, 7, 42, 45,106,108,120, 40,125, 11, 83, 10,125, 13, 27, -/* 0x0cc0 */ 255, 0, 10,107, 2, 8, 0, 84,232, 1, 13, 75,233, 3, 28, 42, -/* 0x0cd0 */ 60, 2, 38, 30,173, 21,136, 11, 45,106, 44,120,241, 2, 39, 30, -/* 0x0ce0 */ 247, 3, 9, 42, 21, 0, 0, 20, 8, 2,128, 82,231, 0, 9, 75, -/* 0x0cf0 */ 173, 21, 77, 75,153, 17, 8,145, 4, 1, 39, 30, 8, 1,128, 82, -/* 0x0d00 */ 141, 5, 0,121, 73, 1, 9, 75, 6, 1, 39, 30,190,254,255, 23, -/* 0x0d10 */ 191, 0, 16,107, 82, 26, 0, 81, 40,196,255, 84,114,254,255, 23, -/* 0x0d20 */ 232, 1, 13, 75,233, 3, 28, 42,252, 3, 23, 42,247, 3, 9, 42, -/* 0x0d30 */ 173, 21,136, 11, 45,106, 58,120,136, 2, 38, 30, 95, 30, 0,113, -/* 0x0d40 */ 9, 0, 38, 30, 44, 0,102,158, 18,177,137, 26,151,254,255, 23, -/* 0x0d50 */ 8, 21, 72, 75, 74, 1, 9, 75,231, 0, 9, 75, 40,106, 45,120, -/* 0x0d60 */ 246,255,255, 23,232, 3, 13, 42, 84,254,255, 23,170, 21, 0, 81, -/* 0x0d70 */ 63, 1, 14,107,140,121, 31, 83,232, 0, 0, 84,127, 1, 2,235, -/* 0x0d80 */ 41, 93, 24, 83, 96,204,255, 84,104, 1, 64, 57,107, 5, 0,145, -/* 0x0d90 */ 7, 33, 7, 42, 41,125, 1, 83,255, 0, 9,107, 99, 0, 0, 84, -/* 0x0da0 */ 231, 0, 9, 75,140, 1, 0, 50, 74, 5, 0,113, 33,254,255, 84, -/* 0x0db0 */ 8, 32, 25,145,152,109, 28, 83,155, 0,128, 82, 19, 1,103,158, -/* 0x0dc0 */ 240,254,255, 23,232, 3, 28, 42,231, 0, 10, 75,173, 21, 77, 75, -/* 0x0dd0 */ 252, 3, 21, 42, 45,106, 44,120, 42, 1, 10, 75, 53, 2, 38, 30, -/* 0x0de0 */ 241, 2, 39, 30,247, 3, 8, 42,212,255,255, 23,240, 3, 5, 42, -/* 0x0df0 */ 227, 19,189,169,229, 27, 1,169,254, 19, 0,249,232, 3, 1,170, -/* 0x0e00 */ 45, 64, 34,139,233, 3, 4,170,142, 64, 37,139, 11, 16, 0,145, -/* 0x0e10 */ 6, 0, 64, 57, 5, 4, 64, 57, 4, 8, 64, 57,174, 0, 6, 11, -/* 0x0e20 */ 7, 0,128, 18,229, 32,197, 26,229, 3, 37, 42,228, 32,196, 26, -/* 0x0e30 */ 228, 3, 36, 42, 35, 0,128, 82, 34, 0,128, 82, 33, 0,128, 82, -/* 0x0e40 */ 32, 0,128, 82, 6, 0,128, 82,230, 31, 0,185, 2, 96,128, 82, -/* 0x0e50 */ 192,230,128, 82, 66, 32,206, 26, 66, 0, 0, 11, 0,128,128,210, -/* 0x0e60 */ 225, 3, 11,170, 0, 64, 0,170, 0,128, 0,170, 32,132, 0,248, -/* 0x0e70 */ 66, 16, 0,113,204,255,255, 84, 0, 21, 0,145,231, 0, 0,148, -/* 0x0e80 */ 31, 0, 8,235,193,255,255, 84,227, 67, 66,248,226, 19, 64,185, -/* 0x0e90 */ 36, 1, 3,203,128, 0, 2, 10,224, 47, 0,185, 0, 16, 6, 11, -/* 0x0ea0 */ 97, 1, 0,145,225, 0, 0,148,129, 5, 0, 84,227, 23, 64,185, -/* 0x0eb0 */ 226, 27, 64,185, 99, 0, 4, 10,224,115, 64, 57, 99, 32,194, 26, -/* 0x0ec0 */ 226, 3, 2, 75, 66, 32, 0, 17, 2, 36,194, 26, 99, 0, 2, 11, -/* 0x0ed0 */ 106,177, 57,145, 99, 4, 3, 11,227, 3, 3, 42, 32, 0,128, 82, -/* 0x0ee0 */ 74, 37, 3,139,223, 28, 0,113, 3, 2, 0, 84,227,125, 64,147, -/* 0x0ef0 */ 227, 3, 3,203, 37,105, 99, 56,165,120, 31, 83, 65, 1, 8,145, -/* 0x0f00 */ 164, 0, 24, 18,227, 3, 4, 42, 33, 4, 3,139,201, 0, 0,148, -/* 0x0f10 */ 3, 0, 0, 18,127, 32, 68,107,193, 0, 0, 84, 31, 0, 4,113, -/* 0x0f20 */ 195,254,255, 84, 5, 0, 0, 20,225, 3, 10,170,193, 0, 0,148, -/* 0x0f30 */ 31, 0, 4,113,163,255,255, 84, 98, 0,128, 82,195, 0,128, 82, -/* 0x0f40 */ 223, 40, 0,113, 67, 48,131, 26,223, 16, 0,113,195, 48,131, 26, -/* 0x0f50 */ 198, 0, 3, 75, 34, 0, 0, 20, 97, 1, 6,145,178, 0, 0,148, -/* 0x0f60 */ 129, 1, 0, 84,227, 11, 64,185,226, 7, 64,185,227, 15, 0,185, -/* 0x0f70 */ 226, 11, 0,185,239, 7, 0,185, 3, 0,128, 82,223, 28, 0,113, -/* 0x0f80 */ 102, 0,128, 82,102, 48,134, 26,106,145, 25,145, 42, 0, 0, 20, -/* 0x0f90 */ 97, 97, 6,145,164, 0, 0,148, 97, 2, 0, 84,227, 47, 64,185, -/* 0x0fa0 */ 97,129, 7,145, 96, 16, 6, 11,160, 0, 0,148,161, 3, 0, 84, -/* 0x0fb0 */ 35, 1,128, 82,223, 28, 0,113,102, 1,128, 82,102, 48,134, 26, -/* 0x0fc0 */ 227, 67, 66,248, 36, 1, 3,203,159, 0, 15,107,131, 17, 0, 84, -/* 0x0fd0 */ 227,125, 64,147,227, 3, 3,203, 32,105, 99, 56, 32, 21, 0, 56, -/* 0x0fe0 */ 121, 0, 0, 20, 97,193, 6,145,143, 0, 0,148,228, 7, 64,185, -/* 0x0ff0 */ 64, 1, 0, 84, 97, 33, 7,145,139, 0, 0,148,228, 11, 64,185, -/* 0x1000 */ 128, 0, 0, 84,227, 11, 64,185,228, 15, 64,185,227, 15, 0,185, -/* 0x1010 */ 227, 7, 64,185,227, 11, 0,185,239, 7, 0,185,239, 3, 4, 42, -/* 0x1020 */ 3, 1,128, 82,223, 28, 0,113,102, 1,128, 82,102, 48,134, 26, -/* 0x1030 */ 106,161, 41,145, 65, 1, 0,145,125, 0, 0,148, 1, 1, 0, 84, -/* 0x1040 */ 227, 47, 64,185, 69, 17, 0,145,227, 3, 3, 42, 2, 0,128, 82, -/* 0x1050 */ 165, 16, 3,139, 4, 1,128, 82, 14, 0, 0, 20, 65, 9, 0,145, -/* 0x1060 */ 115, 0, 0,148, 1, 1, 0, 84,227, 47, 64,185, 69, 17, 4,145, -/* 0x1070 */ 227, 3, 3, 42, 2, 1,128, 82,165, 16, 3,139, 4, 1,128, 82, -/* 0x1080 */ 4, 0, 0, 20, 69, 17, 8,145, 2, 2,128, 82, 4, 32,128, 82, -/* 0x1090 */ 226, 55, 0,185, 32, 0,128, 82,225, 3, 5,170,101, 0, 0,148, -/* 0x10a0 */ 3, 0, 4,107,163,255,255, 84,229, 55, 64,185,165, 0, 3, 11, -/* 0x10b0 */ 229, 55, 0,185,223, 16, 0,113,194, 6, 0, 84,198, 28, 0, 17, -/* 0x10c0 */ 99, 0,128, 82,191, 16, 0,113,101, 32,133, 26,227, 3, 5, 42, -/* 0x10d0 */ 101, 29, 3,139,165,128, 13,145, 32, 0,128, 82, 4, 8,128, 82, -/* 0x10e0 */ 225, 3, 5,170, 83, 0, 0,148, 3, 0, 4,107,163,255,255, 84, -/* 0x10f0 */ 227, 47, 0,185,127, 16, 0,113, 99, 4, 0, 84,100,124, 1, 83, -/* 0x1100 */ 132, 4, 0, 81,111, 0, 0, 18,239, 1, 31, 50,127, 56, 0,113, -/* 0x1110 */ 226, 0, 0, 84,239, 33,196, 26,106,121, 21,145,227, 1, 3, 75, -/* 0x1120 */ 227, 3, 3, 42, 74, 5, 3,139, 12, 0, 0, 20,132, 16, 0, 81, -/* 0x1130 */ 53, 0, 0,148,231,124, 1, 83,131, 1, 7,107,108, 32,140, 26, -/* 0x1140 */ 239, 1, 15, 26,132, 4, 0,113, 65,255,255, 84,106, 17, 25,145, -/* 0x1150 */ 239,109, 28, 83,132, 0,128, 82, 37, 0,128, 82, 32, 0,128, 82, -/* 0x1160 */ 225, 3, 10,170, 51, 0, 0,148, 31, 0, 0,114, 64, 0, 0, 84, -/* 0x1170 */ 239, 1, 5, 42,165,120, 31, 83,132, 4, 0,113, 33,255,255, 84, -/* 0x1180 */ 2, 0, 0, 20,239, 47, 64,185,239, 5, 0, 49,229, 55, 64,185, -/* 0x1190 */ 227, 67, 66,248,165, 8, 0, 17, 35, 1, 3,203,255, 1, 3,107, -/* 0x11a0 */ 232, 2, 0, 84,227,125, 64,147,227, 3, 3,203, 32,105, 99, 56, -/* 0x11b0 */ 32, 21, 0, 56, 63, 1, 14,235,194, 0, 0, 84,165, 4, 0,113, -/* 0x11c0 */ 97,255,255, 84,224,115, 0, 57, 63, 1, 14,235,227,229,255, 84, -/* 0x11d0 */ 13, 0, 0,148, 0, 0,128, 82,226, 19, 64,249, 3, 1, 2,203, -/* 0x11e0 */ 226, 31, 64,249, 67, 0, 0,185,226, 67, 66,248, 35, 1, 2,203, -/* 0x11f0 */ 226, 55, 64,249, 67, 0, 0,185,255,243, 0,145, 32, 0,128, 82, -/* 0x1200 */ 246,255,255, 23,227,124, 24, 83,195, 0, 0, 53, 31, 1, 13,235, -/* 0x1210 */ 231, 92, 24, 83, 66,255,255, 84, 3, 21, 64, 56,108, 32, 12, 42, -/* 0x1220 */ 192, 3, 95,214,224, 3, 6, 42, 33, 68, 32,139, 0, 0,128, 82, -/* 0x1230 */ 33, 68, 32,139,227,124, 24, 83,241, 3, 30,170, 94, 0, 0, 16, -/* 0x1240 */ 99,254,255, 52, 35, 0, 64,121,226,124, 11, 83, 98,124, 2, 27, -/* 0x1250 */ 159, 1, 2,107, 2, 1, 0, 84, 2, 0,129, 82,231, 3, 2, 42, -/* 0x1260 */ 66, 0, 3, 75, 0, 0, 0, 58, 99, 20, 66, 11, 35, 0, 0,121, -/* 0x1270 */ 32, 2, 95,214,140, 1, 2, 75,231, 0, 2, 75, 99, 20, 67, 75, -/* 0x1280 */ 0, 0, 0, 58, 35, 0, 0,121, 32, 2, 95,214,232, 3, 30,170, -/* 0x1290 */ 7, 1, 64,185,226, 3, 8,170, 66, 0, 12,203, 66, 64, 39,139, -/* 0x12a0 */ 226, 11, 0,249,225, 3, 2,170, 5, 0,128, 82, 4, 0,128, 18, -/* 0x12b0 */ 67, 4,128, 82, 98, 0,128, 82, 0, 0,128,210,168, 24,128, 82, -/* 0x12c0 */ 1, 0, 0,212,224, 7, 0,249, 74, 1, 12,203, 74, 1, 0,139, -/* 0x12d0 */ 5, 0,128,210,228, 3, 64,185, 67, 2,128, 82, 98, 0,128, 82, -/* 0x12e0 */ 1, 1, 12,203,168, 24,128, 82, 1, 0, 0,212,226, 11, 64,249, -/* 0x12f0 */ 227, 19, 64,249, 66, 0, 7,139,236, 0, 3,203,231, 0, 9,139, -/* 0x1300 */ 233,143, 31,248,231,252, 76,211,231,204,116,211,231,143, 31,248, -/* 0x1310 */ 66, 0, 7,203,226,143, 31,248, 7, 1, 64,185,231,131, 31,248, -/* 0x1320 */ 227, 3, 0,145, 2, 1, 12,139,230, 3, 2,170, 7, 5, 64,185, -/* 0x1330 */ 4, 9, 64,185, 0, 49, 0,145,225, 3, 7,170, 32, 1, 63,214, -/* 0x1340 */ 255, 35, 0,145,225,135, 64,248,224,135, 64,248,233,135, 64,248, -/* 0x1350 */ 162, 0,128, 82, 72, 9,128, 82, 1, 0, 0,212,192, 0, 31,214, -/* 0x1360 */ 101,120,101, 99,117,116, 97, 98,108,101, 95,112, 97,116,104, 61, -/* 0x1370 */ 0, 0, 32,212,229, 3, 30,170,226, 35, 0,145, 64,132, 64,248, -/* 0x1380 */ 224,255,255,181, 64,132, 64,248,224,255,255,181, 64,132, 64,248, -/* 0x1390 */ 0,255,255,180, 97,254,255, 16, 3, 2,128, 82, 4, 20, 64, 56, -/* 0x13a0 */ 37, 20, 64, 56, 99, 4, 0, 81,159, 0, 5,107, 1,255,255, 84, -/* 0x13b0 */ 99,255,255, 53, 1, 0,128,210,168, 0,128, 82, 1, 0, 0,212, -/* 0x13c0 */ 229,143, 29,248, 1, 0, 0, 16,236, 3, 1,170, 32, 68, 64,184, -/* 0x13d0 */ 140, 65, 32,203,236, 19, 0,249,234, 3, 1,170, 32, 68, 64,184, -/* 0x13e0 */ 74, 65, 32,203, 11, 32, 0,209,169,255,255,151,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, 77, 65, 67, 72, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 48, -/* 0x1480 */ 48, 48, 48, 48, 48, 52, 52, 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, 56, 52, 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, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, -/* 0x1550 */ 48, 49, 50, 56, 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 */ 56, 52, 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, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, -/* 0x15b0 */ 48, 48, 48, 48, 49, 49, 99, 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, 49, 97, 99, 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, 66, 32, 32, 32, 32, 32, 32, 32, -/* 0x1610 */ 32, 32, 48, 48, 48, 48, 48, 48,102, 48, 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, 50, 99, 56, 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, 95, 84, 65, 73, 76, 32, -/* 0x1670 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 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, 51, 98, 56, 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,100, 48, -/* 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, 98, 56, 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, 56, 56, 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,102, 48, 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, 56, 99, 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, 77, 65, 67, -/* 0x1860 */ 72, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, -/* 0x1870 */ 48, 48, 48, 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, 56, -/* 0x18a0 */ 99, 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 */ 77, 65, 67, 72, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 48, 48, -/* 0x18d0 */ 48, 48, 48, 49, 54, 48, 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, 56, 99, 32, 32, 50, 42, 42, 48, 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, -/* 0x1980 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67, -/* 0x1990 */ 72, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x19a0 */ 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 72, 77, 65, 73, 78, -/* 0x19b0 */ 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x19c0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67, 72, 77, -/* 0x19d0 */ 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x19e0 */ 48, 48, 48, 48, 48, 32, 77, 65, 67, 72, 77, 65, 73, 78, 88, 10, -/* 0x19f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1a00 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, -/* 0x1a10 */ 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1a20 */ 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, -/* 0x1a30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, -/* 0x1a40 */ 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, -/* 0x1a50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, -/* 0x1a60 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1a70 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, -/* 0x1a80 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1a90 */ 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1aa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, -/* 0x1ab0 */ 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1ac0 */ 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, -/* 0x1ad0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, -/* 0x1ae0 */ 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, -/* 0x1af0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1b00 */ 32, 78, 82, 86, 95, 84, 65, 73, 76, 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, 69, 76, 70, 48, 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, 69, 76, 70, 48, 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, 50, 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, 50, 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, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, -/* 0x1bb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, -/* 0x1bc0 */ 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, -/* 0x1bd0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, -/* 0x1be0 */ 100, 32, 32, 77, 65, 67, 72, 77, 65, 73, 78, 89, 9, 48, 48, 48, -/* 0x1bf0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, -/* 0x1c00 */ 67, 72, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1c10 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, -/* 0x1c20 */ 32, 77, 65, 67, 72, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, -/* 0x1c30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97, -/* 0x1c40 */ 114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1c50 */ 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, -/* 0x1c60 */ 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, -/* 0x1c70 */ 50, 56, 32,117, 99,108, 95,110,114,118, 50,101, 95,100,101, 99, -/* 0x1c80 */ 111,109,112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48, 48, 48, -/* 0x1c90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, -/* 0x1ca0 */ 32, 32, 70, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, -/* 0x1cb0 */ 48, 48, 48, 48, 48, 48, 48, 49, 49, 99, 32,117, 99,108, 95,110, -/* 0x1cc0 */ 114,118, 50,100, 95,100,101, 99,111,109,112,114,101,115,115, 95, -/* 0x1cd0 */ 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1ce0 */ 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, -/* 0x1cf0 */ 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1d00 */ 102, 48, 32,117, 99,108, 95,110,114,118, 50, 98, 95,100,101, 99, -/* 0x1d10 */ 111,109,112,114,101,115,115, 95, 51, 50, 10, 48, 48, 48, 48, 48, -/* 0x1d20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, -/* 0x1d30 */ 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, -/* 0x1d40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x1d50 */ 76,122,109, 97, 68,101, 99,111,100,101, 10, 48, 48, 48, 48, 48, -/* 0x1d60 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, -/* 0x1d70 */ 32, 32, 32, 32, 77, 65, 67, 72, 77, 65, 73, 78, 89, 9, 48, 48, -/* 0x1d80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,101, -/* 0x1d90 */ 110,100, 95,100,101, 99,111,109,112,114,101,115,115, 10, 10, 82, -/* 0x1da0 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, -/* 0x1db0 */ 83, 32, 70, 79, 82, 32, 91, 77, 65, 67, 72, 77, 65, 73, 78, 88, -/* 0x1dc0 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, -/* 0x1dd0 */ 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x1de0 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, -/* 0x1df0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 48, 32, 82, 95, 65, -/* 0x1e00 */ 65, 82, 67, 72, 54, 52, 95, 67, 65, 76, 76, 50, 54, 32, 32, 77, -/* 0x1e10 */ 65, 67, 72, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, -/* 0x1e20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48,101, 56, 10, 10, 82, 69, 76, -/* 0x1e30 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, -/* 0x1e40 */ 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, -/* 0x1e50 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x1e60 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x1e70 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, -/* 0x1e80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 65, 65, -/* 0x1e90 */ 82, 67, 72, 54, 52, 95, 67, 79, 78, 68, 66, 82, 49, 57, 32, 32, -/* 0x1ea0 */ 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, -/* 0x1eb0 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, -/* 0x1ec0 */ 79, 82, 32, 91, 77, 65, 67, 72, 77, 65, 73, 78, 90, 93, 58, 10, -/* 0x1ed0 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x1ee0 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x1ef0 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x1f00 */ 48, 48, 48, 48, 48, 48, 49, 51, 56, 32, 82, 95, 65, 65, 82, 67, -/* 0x1f10 */ 72, 54, 52, 95, 65, 68, 82, 95, 80, 82, 69, 76, 95, 76, 79, 50, -/* 0x1f20 */ 49, 32, 32, 95,115,116, 97,114,116, 45, 48,120, 48, 48, 48, 48, -/* 0x1f30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56, 10 +/* 0x0040 */ 226, 3, 0,145, 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, +/* 0x0060 */ 227, 19,193,168, 0, 0, 7,203, 66, 0, 3,203,130, 0, 0,185, +/* 0x0070 */ 228, 3, 0,170,224, 3, 3,170, 97, 0, 2,139, 32,123, 11,213, +/* 0x0080 */ 32,117, 11,213, 0, 0, 1,145, 31, 0, 1,235,131,255,255, 84, +/* 0x0090 */ 224, 3, 4,170,254, 7, 65,248,192, 3, 95,214,132, 0, 4, 43, +/* 0x00a0 */ 68, 0, 0, 52,192, 3, 95,214, 4, 68, 64,184,132, 0, 4, 58, +/* 0x00b0 */ 192, 3, 95,214, 3, 20, 64, 56, 67, 20, 0, 56,248,255,255,151, +/* 0x00c0 */ 162,255,255, 84, 33, 0,128, 82, 4, 0, 0, 20, 33, 4, 0, 81, +/* 0x00d0 */ 243,255,255,151, 33, 0, 1, 26,241,255,255,151, 33, 0, 1, 26, +/* 0x00e0 */ 239,255,255,151, 67,255,255, 84, 35, 12, 0,113, 1, 0,128, 82, +/* 0x00f0 */ 35, 1, 0, 84, 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42, +/* 0x0100 */ 5,251,255, 52,191, 0, 0,114,165,124, 1, 19,161, 1, 0, 84, +/* 0x0110 */ 3, 0, 0, 20,226,255,255,151, 66, 1, 0, 84, 33, 0,128, 82, +/* 0x0120 */ 223,255,255,151,226, 0, 0, 84,221,255,255,151, 33, 0, 1, 26, +/* 0x0130 */ 219,255,255,151,163,255,255, 84, 33, 16, 0, 17, 4, 0, 0, 20, +/* 0x0140 */ 215,255,255,151, 33, 0, 1, 26, 33, 8, 0, 17,191, 0, 20, 49, +/* 0x0150 */ 33, 36,129, 26, 67, 64, 33,139, 99,240, 95, 56, 67,200,101, 56, +/* 0x0160 */ 67, 20, 0, 56, 33, 4, 0,113,161,255,255, 84,212,255,255, 23, +/* 0x0170 */ 226, 15,190,169,254, 11, 0,249, 7, 64, 33,139, 5, 0,128, 18, +/* 0x0180 */ 4, 0,176, 82, 24, 0, 0, 20,227, 19,193,168, 0, 0, 7,203, +/* 0x0190 */ 66, 0, 3,203,130, 0, 0,185,228, 3, 0,170,224, 3, 3,170, +/* 0x01a0 */ 97, 0, 2,139, 32,123, 11,213, 32,117, 11,213, 0, 0, 1,145, +/* 0x01b0 */ 31, 0, 1,235,131,255,255, 84,224, 3, 4,170,254, 7, 65,248, +/* 0x01c0 */ 192, 3, 95,214,132, 0, 4, 43, 68, 0, 0, 52,192, 3, 95,214, +/* 0x01d0 */ 4, 68, 64,184,132, 0, 4, 58,192, 3, 95,214, 3, 20, 64, 56, +/* 0x01e0 */ 67, 20, 0, 56,248,255,255,151,162,255,255, 84, 33, 0,128, 82, +/* 0x01f0 */ 4, 0, 0, 20, 33, 4, 0, 81,243,255,255,151, 33, 0, 1, 58, +/* 0x0200 */ 241,255,255,151, 33, 0, 1, 58,239,255,255,151, 67,255,255, 84, +/* 0x0210 */ 35, 12, 0,113, 1, 0,128, 82, 35, 1, 0, 84, 5, 20, 64, 56, +/* 0x0220 */ 165, 32, 3, 42,229, 3, 37, 42, 5,251,255, 52,163, 0, 1, 83, +/* 0x0230 */ 165,124, 1, 83, 99, 0, 3, 43, 2, 0, 0, 20,226,255,255,151, +/* 0x0240 */ 33, 0, 1, 58,224,255,255,151, 33, 0, 1, 58,225, 0, 0, 84, +/* 0x0250 */ 33, 0,128, 82,220,255,255,151, 33, 0, 1, 58,218,255,255,151, +/* 0x0260 */ 163,255,255, 84, 33, 8, 0, 17, 33, 4, 0, 17,191, 0, 20, 49, +/* 0x0270 */ 33, 52,129, 26, 67, 0, 64, 57, 67,200,101, 56, 67, 20, 0, 56, +/* 0x0280 */ 33, 4, 0,113,161,255,255, 84,215,255,255, 23, 1, 64, 33,139, +/* 0x0290 */ 225, 11,190,169,227,123, 1,169, 5, 0,128, 18, 4, 0,176, 82, +/* 0x02a0 */ 31, 0, 0, 20,228,123, 65,169,225, 15,194,168, 0, 0, 1,203, +/* 0x02b0 */ 66, 0, 3,203,130, 0, 0,185,228, 3, 0,170,224, 3, 3,170, +/* 0x02c0 */ 97, 0, 2,139, 32,123, 11,213, 32,117, 11,213, 0, 0, 1,145, +/* 0x02d0 */ 31, 0, 1,235,131,255,255, 84,224, 3, 4,170,192, 3, 95,214, +/* 0x02e0 */ 132, 0, 4, 43, 68, 0, 0, 52,192, 3, 95,214, 4, 68, 64,184, +/* 0x02f0 */ 132, 0, 4, 58,192, 3, 95,214, 33, 0,128, 82,240, 3, 30,170, +/* 0x0300 */ 248,255,255,151, 33, 0, 1, 58,246,255,255,151,163,255,255, 84, +/* 0x0310 */ 0, 2, 31,214, 3, 20, 64, 56, 67, 20, 0, 56,241,255,255,151, +/* 0x0320 */ 162,255,255, 84,245,255,255,151, 35, 12, 0,113, 1, 0,128, 82, +/* 0x0330 */ 163, 0, 0, 84, 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42, +/* 0x0340 */ 37,251,255, 52,231,255,255,151, 33, 0, 1, 58,229,255,255,151, +/* 0x0350 */ 33, 0, 1, 58, 97, 0, 0, 84,232,255,255,151, 33, 8, 0, 17, +/* 0x0360 */ 191, 0, 52, 49, 33, 36,129, 26, 67,200,101, 56, 33, 4, 0,113, +/* 0x0370 */ 67, 20, 0, 56,162,255,255, 84,233,255,255, 23,159, 56, 0,113, +/* 0x0380 */ 1, 0, 0, 84, 1, 64, 33,139, 4, 0,128,210,225, 11,190,169, +/* 0x0390 */ 227,123, 1,169,228, 19,191,169,224, 3, 0,145,227, 35, 0,145, +/* 0x03a0 */ 230, 51, 0,145, 8, 0, 64, 57, 7,192,128, 82, 8,125, 3, 83, +/* 0x03b0 */ 231, 32,200, 26,253, 3, 0,145,231,192, 57, 17,232, 3, 0,145, +/* 0x03c0 */ 255, 67, 39,203,100, 16,129,168,127, 0, 8,235,195,255,255, 84, +/* 0x03d0 */ 230, 3, 3,170,229, 3, 7, 42,228, 3, 2,170, 34, 8, 0, 81, +/* 0x03e0 */ 225, 3, 0,170, 39, 20, 64, 56,231, 8, 0, 18,231, 11, 0, 57, +/* 0x03f0 */ 39, 20, 64, 56,232,124, 4, 83,232, 7, 0, 57,231, 12, 0, 18, +/* 0x0400 */ 231, 3, 0, 57,224, 3, 0,145, 17, 0, 0,148,191, 3, 0,145, +/* 0x0410 */ 228,123, 65,169,225, 15,194,168, 0, 0, 1,203, 66, 0, 3,203, +/* 0x0420 */ 130, 0, 0,185,228, 3, 0,170,224, 3, 3,170, 97, 0, 2,139, +/* 0x0430 */ 32,123, 11,213, 32,117, 11,213, 0, 0, 1,145, 31, 0, 1,235, +/* 0x0440 */ 131,255,255, 84,224, 3, 4,170,192, 3, 95,214,255, 67, 1,209, +/* 0x0450 */ 39, 0,128, 82, 17, 16, 0,145, 9,128,128, 82,243, 83, 0,169, +/* 0x0460 */ 245, 91, 1,169,247, 99, 2,169,249,107, 3,169,251,115, 4,169, +/* 0x0470 */ 20, 8, 64, 57, 19, 4, 64, 57, 22, 0, 64, 57,244, 32,212, 26, +/* 0x0480 */ 127, 0, 0,185,243, 32,211, 26,223, 0, 0,185, 7, 0,128,210, +/* 0x0490 */ 148, 6, 0, 81, 8, 4, 64, 57, 10, 1, 22, 11,104, 6, 0, 81, +/* 0x04a0 */ 18, 1, 39, 30, 8, 96,128, 82, 8, 33,202, 26, 8,217, 28, 49, +/* 0x04b0 */ 160, 0, 0, 84, 41,122, 39,120,231, 4, 0,145, 31, 1, 7,107, +/* 0x04c0 */ 168,255,255, 84, 34, 64, 34,139, 63, 0, 2,235, 64, 16, 0, 84, +/* 0x04d0 */ 235, 3, 1,170, 40, 4, 0,145,103, 85, 64, 56, 31, 1, 2,235, +/* 0x04e0 */ 160, 15, 0, 84, 9, 21, 64, 56, 31, 1, 11,235, 39, 33, 7, 42, +/* 0x04f0 */ 97,255,255, 84,229, 69, 0, 52, 8, 1,128, 82, 53, 0,128, 82, +/* 0x0500 */ 18, 0,128, 82, 9, 0,128, 18, 20, 1, 39, 30,104, 0,128, 82, +/* 0x0510 */ 177, 2, 39, 30,247, 3, 21, 42, 7, 1, 39, 30, 8, 86,128,210, +/* 0x0520 */ 165, 2, 39, 30,252, 3, 21, 42, 3, 1,103,158,104, 1,128, 82, +/* 0x0530 */ 234, 3, 18, 42,240, 3, 18, 42, 0, 1, 39, 30, 8,176, 41,145, +/* 0x0540 */ 14,224,191, 18, 15, 0,129, 82, 1, 1,103,158, 40, 1,128, 82, +/* 0x0550 */ 2, 1, 39, 30,136, 2, 38, 30, 8, 1, 22, 75, 16, 1, 39, 30, +/* 0x0560 */ 72,110, 28, 83, 63, 1, 14,107, 25, 2, 20, 10, 13,125, 64,147, +/* 0x0570 */ 173,193, 57,139,173,249,127,211,232, 0, 0, 84,127, 1, 2,235, +/* 0x0580 */ 160, 10, 0, 84,104, 1, 64, 57, 41, 93, 24, 83,107, 5, 0,145, +/* 0x0590 */ 7, 33, 7, 42, 59,106,109,120, 40,125, 11, 83, 8,125, 27, 27, +/* 0x05a0 */ 255, 0, 8,107,130, 10, 0, 84, 73, 2, 38, 30, 19, 62, 1, 14, +/* 0x05b0 */ 95, 26, 0,113, 12, 2, 9, 10, 73, 41,211, 26,140, 33,214, 26, +/* 0x05c0 */ 234, 1, 27, 75, 41, 1, 12, 11,106, 23,138, 11, 42,106, 45,120, +/* 0x05d0 */ 41, 5, 9, 11, 41, 93,120,211, 41,217, 28,145, 58, 6, 9,139, +/* 0x05e0 */ 109, 31, 0, 84, 10, 2, 28, 75, 41, 0,128, 82,153,104,106, 56, +/* 0x05f0 */ 7, 0, 0, 20, 91,107, 42,120, 41,121, 31, 83,232, 3, 13, 42, +/* 0x0600 */ 83, 57, 0, 53, 63,253, 3,113,236, 3, 0, 84, 57,123, 31, 83, +/* 0x0610 */ 31, 1, 14,107, 51, 3, 24, 18, 56,121, 31, 83,106,126, 64,147, +/* 0x0620 */ 74, 1, 4,145, 74,193, 41,139, 74,249,127,211,232, 0, 0, 84, +/* 0x0630 */ 127, 1, 2,235, 8, 93, 24, 83,224, 4, 0, 84,108, 1, 64, 57, +/* 0x0640 */ 107, 5, 0,145,135, 33, 7, 42, 76,107,106,120, 13,125, 11, 83, +/* 0x0650 */ 251, 1, 12, 75,173,125, 12, 27,155, 21,155, 11,140, 21, 76, 75, +/* 0x0660 */ 255, 0, 13,107, 8, 1, 13, 75, 99,252,255, 84, 76,107, 42,120, +/* 0x0670 */ 9, 7, 0, 17,231, 0, 13, 75,115,252,255, 53, 63,253, 3,113, +/* 0x0680 */ 77, 27, 0, 84, 42, 29, 0, 83,233, 3, 8, 42,138, 72, 48, 56, +/* 0x0690 */ 16, 6, 0, 17, 95, 38, 0,113,236, 49, 0, 84, 82, 14, 0, 81, +/* 0x06a0 */ 191, 0, 16,107,232,245,255, 84, 0,224,191, 18, 63, 1, 0,107, +/* 0x06b0 */ 136, 0, 0, 84,127, 1, 2,235,224, 0, 0, 84,107, 5, 0,145, +/* 0x06c0 */ 97, 1, 1,203, 97, 0, 0,185,208, 0, 0,185, 0, 0,128, 82, +/* 0x06d0 */ 2, 0, 0, 20, 32, 0,128, 82,243, 83, 64,169,245, 91, 65,169, +/* 0x06e0 */ 247, 99, 66,169,249,107, 67,169,251,115, 68,169,255, 67, 1,145, +/* 0x06f0 */ 192, 3, 95,214, 58, 1, 8, 75, 74,126, 64,147,105, 23, 91, 75, +/* 0x0700 */ 95, 3, 14,107, 41,106, 45,120, 76, 1, 3,145,231, 0, 8, 75, +/* 0x0710 */ 140,249,127,211,232, 0, 0, 84,127, 1, 2,235,192,253,255, 84, +/* 0x0720 */ 104, 1, 64, 57, 90, 95, 24, 83,107, 5, 0,145, 7, 33, 7, 42, +/* 0x0730 */ 40,106,108,120, 74,127, 11, 83, 74,125, 8, 27,255, 0, 10,107, +/* 0x0740 */ 130, 25, 0, 84,237, 0, 38, 30,233, 1, 8, 75, 95, 30, 0,113, +/* 0x0750 */ 53, 2, 38, 30, 8, 21,137, 11,241, 2, 39, 30, 40,106, 44,120, +/* 0x0760 */ 242,179,141, 26, 12,160, 25,145,247, 3, 28, 42, 95, 1, 14,107, +/* 0x0770 */ 232, 0, 0, 84,127, 1, 2,235,224,250,255, 84,104, 1, 64, 57, +/* 0x0780 */ 74, 93, 24, 83,107, 5, 0,145, 7, 33, 7, 42,141, 1, 64,121, +/* 0x0790 */ 73,125, 11, 83, 41,125, 13, 27,255, 0, 9,107, 98, 31, 0, 84, +/* 0x07a0 */ 40,115, 29, 83,115, 0,128, 82,234, 1, 13, 75, 8,125, 64,147, +/* 0x07b0 */ 8, 9, 0,145,173, 21,138, 11,228, 3, 39, 30,141, 1, 0,121, +/* 0x07c0 */ 102, 2, 39, 30,153, 5, 8,139,218, 0, 38, 30, 44, 0,128, 82, +/* 0x07d0 */ 6, 0, 0, 20, 13, 3, 0,121, 90, 7, 0,113,140,121, 31, 83, +/* 0x07e0 */ 233, 3, 8, 42, 32, 3, 0, 84, 63, 1, 14,107,147,121, 31, 83, +/* 0x07f0 */ 56,199, 44,139,232, 0, 0, 84,127, 1, 2,235, 41, 93, 24, 83, +/* 0x0800 */ 160,246,255, 84,104, 1, 64, 57,107, 5, 0,145, 7, 33, 7, 42, +/* 0x0810 */ 8, 3, 64,121, 42,125, 11, 83,237, 1, 8, 75, 27, 21, 72, 75, +/* 0x0820 */ 13, 21,141, 11, 72,125, 8, 27,255, 0, 8,107, 41, 1, 8, 75, +/* 0x0830 */ 35,253,255, 84, 27, 3, 0,121, 90, 7, 0,113,231, 0, 8, 75, +/* 0x0840 */ 108, 6, 0, 17, 33,253,255, 84,166, 68,166, 46,138, 0, 38, 30, +/* 0x0850 */ 95, 14, 0,113,200, 0, 38, 30, 72, 1, 8, 75, 8, 1, 12, 11, +/* 0x0860 */ 6, 1, 39, 30,236, 22, 0, 84,234, 0, 38, 30, 31, 13, 0,113, +/* 0x0870 */ 220, 0,128, 82, 10,209,138, 26, 40, 0,128, 82, 74,101, 26, 83, +/* 0x0880 */ 74,125, 64,147, 74,193, 6,145, 91,249,127,211, 6, 0, 0, 20, +/* 0x0890 */ 44,106, 57,120,156, 7, 0,113, 8,121, 31, 83,233, 3, 10, 42, +/* 0x08a0 */ 32, 3, 0, 84, 63, 1, 14,107, 19,121, 31, 83,121,199, 40,139, +/* 0x08b0 */ 232, 0, 0, 84,127, 1, 2,235, 41, 93, 24, 83,192,240,255, 84, +/* 0x08c0 */ 106, 1, 64, 57,107, 5, 0,145, 71, 33, 7, 42, 42,106,121,120, +/* 0x08d0 */ 45,125, 11, 83,236, 1, 10, 75, 90, 21, 74, 75, 76, 21,140, 11, +/* 0x08e0 */ 170,125, 10, 27,255, 0, 10,107, 41, 1, 10, 75, 35,253,255, 84, +/* 0x08f0 */ 58,106, 57,120,156, 7, 0,113,231, 0, 10, 75,104, 6, 0, 17, +/* 0x0900 */ 33,253,255, 84, 10, 1, 1, 81, 95, 13, 0,113, 45, 17, 0, 84, +/* 0x0910 */ 95, 53, 0,113, 72, 1, 0, 18, 77,125, 1, 19, 12, 1, 31, 50, +/* 0x0920 */ 140, 32, 0, 84,104, 0,102,158,187, 5, 0, 81,152, 33,219, 26, +/* 0x0930 */ 8,193, 42,203, 8, 65, 56,139, 40, 6, 8,139, 8, 9, 0,209, +/* 0x0940 */ 19, 1,103,158, 40, 0,128, 82,252, 3, 8, 42, 7, 0, 0, 20, +/* 0x0950 */ 83, 3, 0,121, 8,121, 31, 83,233, 3, 10, 42,123, 7, 0,113, +/* 0x0960 */ 156,123, 31, 83,128, 14, 0, 84,106, 2,102,158, 63, 1, 14,107, +/* 0x0970 */ 25,121, 31, 83, 90,197, 40,139,232, 0, 0, 84,127, 1, 2,235, +/* 0x0980 */ 41, 93, 24, 83,128,234,255, 84,106, 1, 64, 57,107, 5, 0,145, +/* 0x0990 */ 71, 33, 7, 42, 74, 3, 64,121, 45,125, 11, 83,243, 1, 10, 75, +/* 0x09a0 */ 76, 21, 74, 75, 83, 21,147, 11,170,125, 10, 27,255, 0, 10,107, +/* 0x09b0 */ 41, 1, 10, 75,227,252,255, 84, 76, 3, 0,121, 24, 3, 28, 42, +/* 0x09c0 */ 231, 0, 10, 75, 40, 7, 0, 17,229,255,255, 23, 41, 0,128, 82, +/* 0x09d0 */ 6, 0, 0, 20, 41,121, 31, 83, 74,107, 56,120, 63,253, 3,113, +/* 0x09e0 */ 232, 3, 12, 42, 44, 3, 0, 84, 31, 1, 14,107, 51,121, 31, 83, +/* 0x09f0 */ 56,125,127,147,232, 0, 0, 84,127, 1, 2,235, 8, 93, 24, 83, +/* 0x0a00 */ 160,230,255, 84,106, 1, 64, 57,107, 5, 0,145, 71, 33, 7, 42, +/* 0x0a10 */ 74,107,120,120, 12,125, 11, 83,237, 1, 10, 75,140,125, 10, 27, +/* 0x0a20 */ 89, 21, 74, 75, 74, 21,141, 11,255, 0, 12,107, 8, 1, 12, 75, +/* 0x0a30 */ 35,253,255, 84,105, 6, 0, 17, 89,107, 56,120, 63,253, 3,113, +/* 0x0a40 */ 231, 0, 12, 75, 45,253,255, 84, 42, 29, 0, 83, 95, 14, 0,113, +/* 0x0a50 */ 138, 72, 48, 56,233, 3, 8, 42, 16, 6, 0, 17,204,225,255, 84, +/* 0x0a60 */ 191, 0, 16,107, 18, 0,128, 82,200,215,255, 84, 15,255,255, 23, +/* 0x0a70 */ 73, 3, 10, 75, 8, 21, 72, 75, 63, 1, 14,107, 40,106, 44,120, +/* 0x0a80 */ 231, 0, 10, 75,154, 97, 0,145,232, 0, 0, 84,127, 1, 2,235, +/* 0x0a90 */ 32,226,255, 84,104, 1, 64, 57, 41, 93, 24, 83,107, 5, 0,145, +/* 0x0aa0 */ 7, 33, 7, 42, 40,106,122,120, 42,125, 11, 83, 74,125, 8, 27, +/* 0x0ab0 */ 255, 0, 10,107, 66, 10, 0, 84,233, 1, 8, 75, 95, 1, 14,107, +/* 0x0ac0 */ 173,129, 7,145, 8, 21,137, 11, 40,106, 58,120,232, 0, 0, 84, +/* 0x0ad0 */ 127, 1, 2,235, 0,224,255, 84,104, 1, 64, 57, 74, 93, 24, 83, +/* 0x0ae0 */ 107, 5, 0,145, 7, 33, 7, 42, 40,106,109,120, 73,125, 11, 83, +/* 0x0af0 */ 41,125, 8, 27,255, 0, 9,107,226, 16, 0, 84,234, 1, 8, 75, +/* 0x0b00 */ 8, 21,138, 11, 40,106, 45,120,112,222,255, 52, 74, 0, 38, 30, +/* 0x0b10 */ 8, 2, 28, 75, 12, 0, 38, 30, 95, 30, 0,113, 82,177,140, 26, +/* 0x0b20 */ 138,104,104, 56,138, 72, 48, 56, 16, 6, 0, 17,221,254,255, 23, +/* 0x0b30 */ 248, 3, 10, 42, 28, 7, 0, 49,128,219,255, 84, 82, 30, 0, 17, +/* 0x0b40 */ 200, 0, 38, 30,159, 3, 16,107, 12, 9, 0, 17, 72,220,255, 84, +/* 0x0b50 */ 232, 3, 16, 42, 2, 0, 0, 20, 76,218,255, 52, 10, 2, 28, 75, +/* 0x0b60 */ 16, 6, 0, 17, 31, 2, 5,107,140, 5, 0, 81,138,104,106, 56, +/* 0x0b70 */ 138, 72, 40, 56,232, 3, 16, 42, 3,255,255, 84,191, 0, 16,107, +/* 0x0b80 */ 8,207,255, 84,201,254,255, 23, 74, 1, 9, 75,173, 21, 77, 75, +/* 0x0b90 */ 95, 1, 14,107,141, 1, 0,121,231, 0, 9, 75,232, 0, 0, 84, +/* 0x0ba0 */ 127, 1, 2,235,128,217,255, 84,104, 1, 64, 57, 74, 93, 24, 83, +/* 0x0bb0 */ 107, 5, 0,145, 7, 33, 7, 42,141, 5, 64,121, 73,125, 11, 83, +/* 0x0bc0 */ 41,125, 13, 27,255, 0, 9,107, 34, 7, 0, 84, 40,115, 29, 83, +/* 0x0bd0 */ 19, 1,128, 82,234, 1, 13, 75, 8,125, 64,147,100, 2, 39, 30, +/* 0x0be0 */ 8, 9, 2,145,115, 0,128, 82,173, 21,138, 11,153, 5, 8,139, +/* 0x0bf0 */ 141, 5, 0,121,102, 2, 39, 30,244,254,255, 23, 41, 1, 10, 75, +/* 0x0c00 */ 8, 21, 72, 75, 63, 1, 14,107, 40,106, 58,120,231, 0, 10, 75, +/* 0x0c10 */ 154,193, 0,145,232, 0, 0, 84,127, 1, 2,235,192,213,255, 84, +/* 0x0c20 */ 104, 1, 64, 57, 41, 93, 24, 83,107, 5, 0,145, 7, 33, 7, 42, +/* 0x0c30 */ 45,106,122,120, 40,125, 11, 83, 10,125, 13, 27,255, 0, 10,107, +/* 0x0c40 */ 35, 5, 0, 84, 41, 1, 10, 75,173, 21, 77, 75, 63, 1, 14,107, +/* 0x0c50 */ 45,106, 58,120,231, 0, 10, 75,140, 33, 1,145,232, 0, 0, 84, +/* 0x0c60 */ 127, 1, 2,235,128,211,255, 84,104, 1, 64, 57, 41, 93, 24, 83, +/* 0x0c70 */ 107, 5, 0,145, 7, 33, 7, 42, 45,106,108,120, 40,125, 11, 83, +/* 0x0c80 */ 10,125, 13, 27,255, 0, 10,107, 2, 8, 0, 84,232, 1, 13, 75, +/* 0x0c90 */ 233, 3, 28, 42, 60, 2, 38, 30,173, 21,136, 11, 45,106, 44,120, +/* 0x0ca0 */ 241, 2, 39, 30,247, 3, 9, 42, 21, 0, 0, 20, 8, 2,128, 82, +/* 0x0cb0 */ 231, 0, 9, 75,173, 21, 77, 75,153, 17, 8,145, 4, 1, 39, 30, +/* 0x0cc0 */ 8, 1,128, 82,141, 5, 0,121, 73, 1, 9, 75, 6, 1, 39, 30, +/* 0x0cd0 */ 190,254,255, 23,191, 0, 16,107, 82, 26, 0, 81, 40,196,255, 84, +/* 0x0ce0 */ 114,254,255, 23,232, 1, 13, 75,233, 3, 28, 42,252, 3, 23, 42, +/* 0x0cf0 */ 247, 3, 9, 42,173, 21,136, 11, 45,106, 58,120,136, 2, 38, 30, +/* 0x0d00 */ 95, 30, 0,113, 9, 0, 38, 30, 44, 0,102,158, 18,177,137, 26, +/* 0x0d10 */ 151,254,255, 23, 8, 21, 72, 75, 74, 1, 9, 75,231, 0, 9, 75, +/* 0x0d20 */ 40,106, 45,120,246,255,255, 23,232, 3, 13, 42, 84,254,255, 23, +/* 0x0d30 */ 170, 21, 0, 81, 63, 1, 14,107,140,121, 31, 83,232, 0, 0, 84, +/* 0x0d40 */ 127, 1, 2,235, 41, 93, 24, 83, 96,204,255, 84,104, 1, 64, 57, +/* 0x0d50 */ 107, 5, 0,145, 7, 33, 7, 42, 41,125, 1, 83,255, 0, 9,107, +/* 0x0d60 */ 99, 0, 0, 84,231, 0, 9, 75,140, 1, 0, 50, 74, 5, 0,113, +/* 0x0d70 */ 33,254,255, 84, 8, 32, 25,145,152,109, 28, 83,155, 0,128, 82, +/* 0x0d80 */ 19, 1,103,158,240,254,255, 23,232, 3, 28, 42,231, 0, 10, 75, +/* 0x0d90 */ 173, 21, 77, 75,252, 3, 21, 42, 45,106, 44,120, 42, 1, 10, 75, +/* 0x0da0 */ 53, 2, 38, 30,241, 2, 39, 30,247, 3, 8, 42,212,255,255, 23, +/* 0x0db0 */ 240, 3, 5, 42,227, 19,189,169,229, 27, 1,169,254, 19, 0,249, +/* 0x0dc0 */ 232, 3, 1,170, 45, 64, 34,139,233, 3, 4,170,142, 64, 37,139, +/* 0x0dd0 */ 11, 16, 0,145, 6, 0, 64, 57, 5, 4, 64, 57, 4, 8, 64, 57, +/* 0x0de0 */ 174, 0, 6, 11, 7, 0,128, 18,229, 32,197, 26,229, 3, 37, 42, +/* 0x0df0 */ 228, 32,196, 26,228, 3, 36, 42, 35, 0,128, 82, 34, 0,128, 82, +/* 0x0e00 */ 33, 0,128, 82, 32, 0,128, 82, 6, 0,128, 82,230, 31, 0,185, +/* 0x0e10 */ 2, 96,128, 82,192,230,128, 82, 66, 32,206, 26, 66, 0, 0, 11, +/* 0x0e20 */ 0,128,128,210,225, 3, 11,170, 0, 64, 0,170, 0,128, 0,170, +/* 0x0e30 */ 32,132, 0,248, 66, 16, 0,113,204,255,255, 84, 0, 21, 0,145, +/* 0x0e40 */ 231, 0, 0,148, 31, 0, 8,235,193,255,255, 84,227, 67, 66,248, +/* 0x0e50 */ 226, 19, 64,185, 36, 1, 3,203,128, 0, 2, 10,224, 47, 0,185, +/* 0x0e60 */ 0, 16, 6, 11, 97, 1, 0,145,225, 0, 0,148,129, 5, 0, 84, +/* 0x0e70 */ 227, 23, 64,185,226, 27, 64,185, 99, 0, 4, 10,224,115, 64, 57, +/* 0x0e80 */ 99, 32,194, 26,226, 3, 2, 75, 66, 32, 0, 17, 2, 36,194, 26, +/* 0x0e90 */ 99, 0, 2, 11,106,177, 57,145, 99, 4, 3, 11,227, 3, 3, 42, +/* 0x0ea0 */ 32, 0,128, 82, 74, 37, 3,139,223, 28, 0,113, 3, 2, 0, 84, +/* 0x0eb0 */ 227,125, 64,147,227, 3, 3,203, 37,105, 99, 56,165,120, 31, 83, +/* 0x0ec0 */ 65, 1, 8,145,164, 0, 24, 18,227, 3, 4, 42, 33, 4, 3,139, +/* 0x0ed0 */ 201, 0, 0,148, 3, 0, 0, 18,127, 32, 68,107,193, 0, 0, 84, +/* 0x0ee0 */ 31, 0, 4,113,195,254,255, 84, 5, 0, 0, 20,225, 3, 10,170, +/* 0x0ef0 */ 193, 0, 0,148, 31, 0, 4,113,163,255,255, 84, 98, 0,128, 82, +/* 0x0f00 */ 195, 0,128, 82,223, 40, 0,113, 67, 48,131, 26,223, 16, 0,113, +/* 0x0f10 */ 195, 48,131, 26,198, 0, 3, 75, 34, 0, 0, 20, 97, 1, 6,145, +/* 0x0f20 */ 178, 0, 0,148,129, 1, 0, 84,227, 11, 64,185,226, 7, 64,185, +/* 0x0f30 */ 227, 15, 0,185,226, 11, 0,185,239, 7, 0,185, 3, 0,128, 82, +/* 0x0f40 */ 223, 28, 0,113,102, 0,128, 82,102, 48,134, 26,106,145, 25,145, +/* 0x0f50 */ 42, 0, 0, 20, 97, 97, 6,145,164, 0, 0,148, 97, 2, 0, 84, +/* 0x0f60 */ 227, 47, 64,185, 97,129, 7,145, 96, 16, 6, 11,160, 0, 0,148, +/* 0x0f70 */ 161, 3, 0, 84, 35, 1,128, 82,223, 28, 0,113,102, 1,128, 82, +/* 0x0f80 */ 102, 48,134, 26,227, 67, 66,248, 36, 1, 3,203,159, 0, 15,107, +/* 0x0f90 */ 131, 17, 0, 84,227,125, 64,147,227, 3, 3,203, 32,105, 99, 56, +/* 0x0fa0 */ 32, 21, 0, 56,121, 0, 0, 20, 97,193, 6,145,143, 0, 0,148, +/* 0x0fb0 */ 228, 7, 64,185, 64, 1, 0, 84, 97, 33, 7,145,139, 0, 0,148, +/* 0x0fc0 */ 228, 11, 64,185,128, 0, 0, 84,227, 11, 64,185,228, 15, 64,185, +/* 0x0fd0 */ 227, 15, 0,185,227, 7, 64,185,227, 11, 0,185,239, 7, 0,185, +/* 0x0fe0 */ 239, 3, 4, 42, 3, 1,128, 82,223, 28, 0,113,102, 1,128, 82, +/* 0x0ff0 */ 102, 48,134, 26,106,161, 41,145, 65, 1, 0,145,125, 0, 0,148, +/* 0x1000 */ 1, 1, 0, 84,227, 47, 64,185, 69, 17, 0,145,227, 3, 3, 42, +/* 0x1010 */ 2, 0,128, 82,165, 16, 3,139, 4, 1,128, 82, 14, 0, 0, 20, +/* 0x1020 */ 65, 9, 0,145,115, 0, 0,148, 1, 1, 0, 84,227, 47, 64,185, +/* 0x1030 */ 69, 17, 4,145,227, 3, 3, 42, 2, 1,128, 82,165, 16, 3,139, +/* 0x1040 */ 4, 1,128, 82, 4, 0, 0, 20, 69, 17, 8,145, 2, 2,128, 82, +/* 0x1050 */ 4, 32,128, 82,226, 55, 0,185, 32, 0,128, 82,225, 3, 5,170, +/* 0x1060 */ 101, 0, 0,148, 3, 0, 4,107,163,255,255, 84,229, 55, 64,185, +/* 0x1070 */ 165, 0, 3, 11,229, 55, 0,185,223, 16, 0,113,194, 6, 0, 84, +/* 0x1080 */ 198, 28, 0, 17, 99, 0,128, 82,191, 16, 0,113,101, 32,133, 26, +/* 0x1090 */ 227, 3, 5, 42,101, 29, 3,139,165,128, 13,145, 32, 0,128, 82, +/* 0x10a0 */ 4, 8,128, 82,225, 3, 5,170, 83, 0, 0,148, 3, 0, 4,107, +/* 0x10b0 */ 163,255,255, 84,227, 47, 0,185,127, 16, 0,113, 99, 4, 0, 84, +/* 0x10c0 */ 100,124, 1, 83,132, 4, 0, 81,111, 0, 0, 18,239, 1, 31, 50, +/* 0x10d0 */ 127, 56, 0,113,226, 0, 0, 84,239, 33,196, 26,106,121, 21,145, +/* 0x10e0 */ 227, 1, 3, 75,227, 3, 3, 42, 74, 5, 3,139, 12, 0, 0, 20, +/* 0x10f0 */ 132, 16, 0, 81, 53, 0, 0,148,231,124, 1, 83,131, 1, 7,107, +/* 0x1100 */ 108, 32,140, 26,239, 1, 15, 26,132, 4, 0,113, 65,255,255, 84, +/* 0x1110 */ 106, 17, 25,145,239,109, 28, 83,132, 0,128, 82, 37, 0,128, 82, +/* 0x1120 */ 32, 0,128, 82,225, 3, 10,170, 51, 0, 0,148, 31, 0, 0,114, +/* 0x1130 */ 64, 0, 0, 84,239, 1, 5, 42,165,120, 31, 83,132, 4, 0,113, +/* 0x1140 */ 33,255,255, 84, 2, 0, 0, 20,239, 47, 64,185,239, 5, 0, 49, +/* 0x1150 */ 229, 55, 64,185,227, 67, 66,248,165, 8, 0, 17, 35, 1, 3,203, +/* 0x1160 */ 255, 1, 3,107,232, 2, 0, 84,227,125, 64,147,227, 3, 3,203, +/* 0x1170 */ 32,105, 99, 56, 32, 21, 0, 56, 63, 1, 14,235,194, 0, 0, 84, +/* 0x1180 */ 165, 4, 0,113, 97,255,255, 84,224,115, 0, 57, 63, 1, 14,235, +/* 0x1190 */ 227,229,255, 84, 13, 0, 0,148, 0, 0,128, 82,226, 19, 64,249, +/* 0x11a0 */ 3, 1, 2,203,226, 31, 64,249, 67, 0, 0,185,226, 67, 66,248, +/* 0x11b0 */ 35, 1, 2,203,226, 55, 64,249, 67, 0, 0,185,255,243, 0,145, +/* 0x11c0 */ 32, 0,128, 82,246,255,255, 23,227,124, 24, 83,195, 0, 0, 53, +/* 0x11d0 */ 31, 1, 13,235,231, 92, 24, 83, 66,255,255, 84, 3, 21, 64, 56, +/* 0x11e0 */ 108, 32, 12, 42,192, 3, 95,214,224, 3, 6, 42, 33, 68, 32,139, +/* 0x11f0 */ 0, 0,128, 82, 33, 68, 32,139,227,124, 24, 83,241, 3, 30,170, +/* 0x1200 */ 94, 0, 0, 16, 99,254,255, 52, 35, 0, 64,121,226,124, 11, 83, +/* 0x1210 */ 98,124, 2, 27,159, 1, 2,107, 2, 1, 0, 84, 2, 0,129, 82, +/* 0x1220 */ 231, 3, 2, 42, 66, 0, 3, 75, 0, 0, 0, 58, 99, 20, 66, 11, +/* 0x1230 */ 35, 0, 0,121, 32, 2, 95,214,140, 1, 2, 75,231, 0, 2, 75, +/* 0x1240 */ 99, 20, 67, 75, 0, 0, 0, 58, 35, 0, 0,121, 32, 2, 95,214, +/* 0x1250 */ 251, 3, 30,170,103, 3, 64,185, 98, 3, 22,203, 66, 64, 39,139, +/* 0x1260 */ 226, 11, 0,249,225, 3, 2,170, 5, 0,128, 82, 4, 0,128, 18, +/* 0x1270 */ 67, 4,128, 82, 98, 0,128, 82, 0, 0,128,210,200, 27,128, 82, +/* 0x1280 */ 1, 0, 0,212,224, 7, 0,249,148, 2, 22,203,148, 2, 0,139, +/* 0x1290 */ 5, 0,128,210,228, 3, 64,185, 67, 2,128, 82, 98, 0,128, 82, +/* 0x12a0 */ 97, 3, 22,203,200, 27,128, 82, 1, 0, 0,212,226, 11, 64,249, +/* 0x12b0 */ 227, 19, 64,249, 66, 0, 0,139, 23, 0, 3,203,131, 3, 23,139, +/* 0x12c0 */ 227, 15, 30,248, 0,204,116,146,224, 7, 0,249, 66, 0, 0,203, +/* 0x12d0 */ 226, 11, 0,249,103, 3, 64,185,227, 99, 0,145,231, 15, 0,249, +/* 0x12e0 */ 98, 3, 23,139,243, 3, 2,170,103, 7, 64,185,100, 11, 64,185, +/* 0x12f0 */ 96, 51, 0,145,225, 3, 7,170,128, 3, 63,214,225, 11, 64,249, +/* 0x1300 */ 224, 7, 64,249,252, 7, 66,248,162, 0,128, 82, 72, 28,128, 82, +/* 0x1310 */ 1, 0, 0,212, 96, 2, 31,214,101,120,101, 99,117,116, 97, 98, +/* 0x1320 */ 108,101, 95,112, 97,116,104, 61, 0, 0, 32,212,252, 3, 30,170, +/* 0x1330 */ 64,132, 64,248,224,255,255,181, 64,132, 64,248,224,255,255,181, +/* 0x1340 */ 64,132, 64,248, 32,255,255,180,129,254,255, 16, 3, 2,128, 82, +/* 0x1350 */ 4, 20, 64, 56, 37, 20, 64, 56, 99, 4, 0, 81,159, 0, 5,107, +/* 0x1360 */ 1,255,255, 84, 99,255,255, 53, 2, 0,128,210,225, 3, 0,170, +/* 0x1370 */ 96, 12,128, 18, 8, 7,128, 82, 1, 0, 0,212,224, 15, 29,248, +/* 0x1380 */ 1, 0, 0, 16,246, 3, 1,170, 32, 68, 64,184,214, 66, 32,203, +/* 0x1390 */ 246, 19, 0,249,244, 3, 1,170, 32, 68, 64,184,148, 66, 32,203, +/* 0x13a0 */ 21, 32, 0,209,171,255,255,151,102,105,108,101, 32,102,111,114, +/* 0x13b0 */ 109, 97,116, 32,101,108,102, 54, 52, 45,108,105,116,116,108,101, +/* 0x13c0 */ 97, 97,114, 99,104, 54, 52, 10, 10, 83,101, 99,116,105,111,110, +/* 0x13d0 */ 115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, +/* 0x13e0 */ 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, +/* 0x13f0 */ 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x1400 */ 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x1410 */ 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103, +/* 0x1420 */ 110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 77, 65, 67, +/* 0x1430 */ 72, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, +/* 0x1440 */ 48, 48, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1450 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1460 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, +/* 0x1470 */ 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, +/* 0x1480 */ 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, +/* 0x1490 */ 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, +/* 0x14a0 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, +/* 0x14b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x14c0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x14d0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 56, 32, 32, 50, 42, 42, +/* 0x14e0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, +/* 0x14f0 */ 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, 32, +/* 0x1500 */ 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 56, +/* 0x1510 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1520 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1530 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 56, 32, 32, +/* 0x1540 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, +/* 0x1550 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, +/* 0x1560 */ 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, +/* 0x1570 */ 49, 49, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1580 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1590 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 55, +/* 0x15a0 */ 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, +/* 0x15b0 */ 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, +/* 0x15c0 */ 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, +/* 0x15d0 */ 48, 48, 48, 48,102, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x15e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, +/* 0x15f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, +/* 0x1600 */ 48, 50, 56, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, +/* 0x1610 */ 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, +/* 0x1620 */ 32, 53, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, +/* 0x1630 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, +/* 0x1640 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, +/* 0x1650 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, +/* 0x1660 */ 48, 48, 48, 48, 51, 55, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, +/* 0x1670 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, +/* 0x1680 */ 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, +/* 0x1690 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,100, 48, 32, 32, 48, 48, +/* 0x16a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, +/* 0x16b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x16c0 */ 32, 32, 48, 48, 48, 48, 48, 51, 55, 99, 32, 32, 50, 42, 42, 48, +/* 0x16d0 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, +/* 0x16e0 */ 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, +/* 0x16f0 */ 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, +/* 0x1700 */ 48, 48, 48, 57, 54, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1710 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, +/* 0x1720 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, +/* 0x1730 */ 48, 52, 52, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, +/* 0x1740 */ 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, +/* 0x1750 */ 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, +/* 0x1760 */ 32, 48, 48, 48, 48, 48, 52, 57, 99, 32, 32, 48, 48, 48, 48, 48, +/* 0x1770 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, +/* 0x1780 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, +/* 0x1790 */ 48, 48, 48, 48,100, 98, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, +/* 0x17a0 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, +/* 0x17b0 */ 89, 10, 32, 32, 57, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, +/* 0x17c0 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, +/* 0x17d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, +/* 0x17e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x17f0 */ 32, 32, 48, 48, 48, 48, 49, 50, 53, 48, 32, 32, 50, 42, 42, 48, +/* 0x1800 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, +/* 0x1810 */ 79, 78, 76, 89, 10, 32, 49, 48, 32, 77, 65, 67, 72, 77, 65, 73, +/* 0x1820 */ 78, 89, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x1830 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1840 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1850 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 50, 53, 48, 32, 32, 50, +/* 0x1860 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, +/* 0x1870 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 77, 65, 67, 72, +/* 0x1880 */ 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, +/* 0x1890 */ 53, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x18a0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x18b0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 50, 53, 48, +/* 0x18c0 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, +/* 0x18d0 */ 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, +/* 0x18e0 */ 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, +/* 0x18f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1900 */ 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, +/* 0x1910 */ 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1920 */ 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, +/* 0x1930 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1940 */ 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67, 72, 77, 65, 73, +/* 0x1950 */ 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1960 */ 48, 48, 48, 32, 77, 65, 67, 72, 77, 65, 73, 78, 90, 10, 48, 48, +/* 0x1970 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, +/* 0x1980 */ 32, 32, 32, 32,100, 32, 32, 77, 65, 67, 72, 77, 65, 73, 78, 88, +/* 0x1990 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x19a0 */ 48, 32, 77, 65, 67, 72, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, +/* 0x19b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, +/* 0x19c0 */ 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, +/* 0x19d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, +/* 0x19e0 */ 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x19f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, +/* 0x1a00 */ 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1a10 */ 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, +/* 0x1a20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, +/* 0x1a30 */ 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, +/* 0x1a40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, +/* 0x1a50 */ 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1a60 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, +/* 0x1a70 */ 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1a80 */ 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, +/* 0x1a90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, +/* 0x1aa0 */ 100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, +/* 0x1ab0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, +/* 0x1ac0 */ 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1ad0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, +/* 0x1ae0 */ 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, +/* 0x1af0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, +/* 0x1b00 */ 69, 76, 70, 48, 48, 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, 68, 69, 67, 50, 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 */ 68, 69, 67, 50, 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, 49, 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, 49, 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, 77, +/* 0x1ba0 */ 65, 67, 72, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, +/* 0x1bb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 72, 77, 65, +/* 0x1bc0 */ 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1bd0 */ 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 77, 65, 67, +/* 0x1be0 */ 72, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1bf0 */ 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, 10, 48, +/* 0x1c00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x1c10 */ 103, 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 69, 9, 48, 48, +/* 0x1c20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 50, 56, 32,117, +/* 0x1c30 */ 99,108, 95,110,114,118, 50,101, 95,100,101, 99,111,109,112,114, +/* 0x1c40 */ 101,115,115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1c50 */ 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, +/* 0x1c60 */ 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1c70 */ 48, 48, 48, 49, 49, 99, 32,117, 99,108, 95,110,114,118, 50,100, +/* 0x1c80 */ 95,100,101, 99,111,109,112,114,101,115,115, 95, 51, 50, 10, 48, +/* 0x1c90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x1ca0 */ 103, 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 66, 9, 48, 48, +/* 0x1cb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,102, 48, 32,117, +/* 0x1cc0 */ 99,108, 95,110,114,118, 50, 98, 95,100,101, 99,111,109,112,114, +/* 0x1cd0 */ 101,115,115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1ce0 */ 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, +/* 0x1cf0 */ 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, +/* 0x1d00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76,122,109, 97, +/* 0x1d10 */ 68,101, 99,111,100,101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1d20 */ 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, +/* 0x1d30 */ 77, 65, 67, 72, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, +/* 0x1d40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,101,110,100, 95,100, +/* 0x1d50 */ 101, 99,111,109,112,114,101,115,115, 10, 10, 82, 69, 76, 79, 67, +/* 0x1d60 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, +/* 0x1d70 */ 82, 32, 91, 77, 65, 67, 72, 77, 65, 73, 78, 88, 93, 58, 10, 79, +/* 0x1d80 */ 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x1d90 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x1da0 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1db0 */ 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 65, 65, 82, 67, 72, +/* 0x1dc0 */ 54, 52, 95, 67, 65, 76, 76, 50, 54, 32, 32, 77, 65, 67, 72, 77, +/* 0x1dd0 */ 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1de0 */ 48, 48, 48, 48, 48,100, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, +/* 0x1df0 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, +/* 0x1e00 */ 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, +/* 0x1e10 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, +/* 0x1e20 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x1e30 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1e40 */ 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 65, 65, 82, 67, 72, 54, +/* 0x1e50 */ 52, 95, 67, 79, 78, 68, 66, 82, 49, 57, 32, 32, 76, 90, 77, 65, +/* 0x1e60 */ 95, 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, +/* 0x1e70 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, +/* 0x1e80 */ 77, 65, 67, 72, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, +/* 0x1e90 */ 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, +/* 0x1ea0 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, +/* 0x1eb0 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1ec0 */ 48, 48, 49, 51, 48, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, +/* 0x1ed0 */ 65, 68, 82, 95, 80, 82, 69, 76, 95, 76, 79, 50, 49, 32, 32, 95, +/* 0x1ee0 */ 115,116, 97,114,116, 45, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1ef0 */ 48, 48, 48, 48, 48, 48, 48, 56, 10 }; diff --git a/src/stub/arm64-darwin.macho-fold.h b/src/stub/arm64-darwin.macho-fold.h index f10058cf..285bdcd7 100644 --- a/src/stub/arm64-darwin.macho-fold.h +++ b/src/stub/arm64-darwin.macho-fold.h @@ -1,5 +1,5 @@ /* arm64-darwin.macho-fold.h - created from arm64-darwin.macho-fold.bin, 1920 (0x780) bytes + created from arm64-darwin.macho-fold.bin, 4392 (0x1128) bytes This file is part of the UPX executable compressor. @@ -31,129 +31,284 @@ */ -#define STUB_ARM64_DARWIN_MACHO_FOLD_SIZE 1920 -#define STUB_ARM64_DARWIN_MACHO_FOLD_ADLER32 0x6158c999 -#define STUB_ARM64_DARWIN_MACHO_FOLD_CRC32 0x39554d8d +#define STUB_ARM64_DARWIN_MACHO_FOLD_SIZE 4392 +#define STUB_ARM64_DARWIN_MACHO_FOLD_ADLER32 0x4d170c93 +#define STUB_ARM64_DARWIN_MACHO_FOLD_CRC32 0xa4e1bfcd -unsigned char stub_arm64_darwin_macho_fold[1920] = { -/* 0x0000 */ 97, 1, 64,249,231, 3, 4,145, 96, 65, 33,203, 3, 24, 64,185, -/* 0x0010 */ 9, 0,132, 82,127, 0, 9,107, 99,128,137, 26,255, 67, 35,203, -/* 0x0020 */ 226, 3, 0,145,101, 2, 0, 16, 44, 1, 0,148, 30,120, 64,249, -/* 0x0030 */ 252,119, 78,169,250,111, 77,169,248,103, 76,169,246, 95, 75,169, -/* 0x0040 */ 244, 87, 74,169,242, 79, 73,169,240, 71, 72,169,238, 63, 71,169, -/* 0x0050 */ 236, 55, 70,169,234, 47, 69,169,232, 39, 68,169,230, 31, 67,169, -/* 0x0060 */ 228, 23, 66,169,226, 15, 65,169,224, 7,207,168,192, 3, 31,214, -/* 0x0070 */ 99, 28, 0, 18,127, 72, 1,113, 1, 2, 0, 84, 33,124, 2, 83, -/* 0x0080 */ 192, 1, 0,180,161, 1, 0, 52, 33, 4, 0, 81, 2, 88, 97,184, -/* 0x0090 */ 67,124, 26, 83,127,148, 0,113,193, 0, 0, 84, 67, 20, 6, 18, -/* 0x00a0 */ 66, 0, 1, 75, 66,100, 0, 18, 66, 0, 3, 42, 2, 88, 33,184, -/* 0x00b0 */ 63, 0, 0,113,161,254,255, 84,192, 3, 95,214,192, 3, 95,214, -/* 0x00c0 */ 40, 0,128, 82, 1, 0, 0,212,104, 0,128, 82, 1, 0, 0,212, -/* 0x00d0 */ 192, 3, 95,214,136, 0,128, 82, 1, 0, 0,212,192, 3, 95,214, -/* 0x00e0 */ 168, 0,128, 82, 1, 0, 0,212,192, 3, 95,214,200, 0,128, 82, -/* 0x00f0 */ 1, 0, 0,212,192, 3, 95,214,168, 5,128, 82, 1, 0, 0,212, -/* 0x0100 */ 192, 3, 95,214, 40, 9,128, 82, 1, 0, 0,212,192, 3, 95,214, -/* 0x0110 */ 72, 9,128, 82, 1, 0, 0,212,192, 3, 95,214,168, 24,128, 82, -/* 0x0120 */ 1, 0, 0,212,192, 3, 95,214, 40, 19,128, 82, 1, 0, 0,212, -/* 0x0130 */ 192, 3, 95,214,233, 31,128, 82, 41, 29, 16, 50, 6, 0, 0, 20, -/* 0x0140 */ 2, 0, 64,185, 35, 1, 2, 10, 34, 97,194, 10, 66, 32,195, 42, -/* 0x0150 */ 2, 68, 0,184, 33, 16, 0,113, 74,255,255, 84,192, 3, 95,214, -/* 0x0160 */ 253,123,191,169, 3, 0,128,210,253, 3, 0,145, 5, 0, 64,249, -/* 0x0170 */ 4, 4, 64,249,191, 0, 2,235, 98, 0, 0, 84,224, 15,128, 82, -/* 0x0180 */ 208,255,255,151,127, 0, 2,235,160, 0, 0, 84,133,104, 99, 56, -/* 0x0190 */ 37,104, 35, 56, 99, 4, 0,145,251,255,255, 23, 1, 4, 64,249, -/* 0x01a0 */ 33, 0, 3,139, 1, 4, 0,249, 1, 0, 64,249, 35, 0, 3,203, -/* 0x01b0 */ 3, 0, 0,249,253,123,193,168,192, 3, 95,214,253,123,187,169, -/* 0x01c0 */ 253, 3, 0,145,243, 83, 1,169,245, 91, 2,169,244, 3, 0,170, -/* 0x01d0 */ 243, 3, 1,170,246, 3, 2,170,245, 3, 3,170, 96, 2, 64,249, -/* 0x01e0 */ 224, 7, 0,180,224, 3, 20,170,130, 1,128,210,161, 3, 1,145, -/* 0x01f0 */ 220,255,255,151,160, 67, 64,185,162, 71, 64,185, 0, 1, 0, 53, -/* 0x0200 */ 160, 10,138, 82, 0, 43,164,114, 95, 0, 0,107,225, 0, 0, 84, -/* 0x0210 */ 128, 2, 64,249, 64, 6, 0,180, 4, 0, 0, 20, 98, 0, 0, 52, -/* 0x0220 */ 95, 0, 0,107,105, 0, 0, 84,224, 15,128, 82,165,255,255,151, -/* 0x0230 */ 97, 2, 64,249, 63, 64, 32,235,131,255,255, 84, 95, 0, 0,107, -/* 0x0240 */ 98, 3, 0, 84,160, 63, 0,185,225, 3, 2, 42,128, 6, 64,249, -/* 0x0250 */ 163,243, 0,145, 98, 6, 64,249,164, 35, 65, 57,192, 2, 63,214, -/* 0x0260 */ 64,254,255, 53,161, 63, 64,185,160, 67, 64,185, 63, 0, 0,107, -/* 0x0270 */ 193,253,255, 84,163, 39, 65, 57,181, 0, 0,180,131, 0, 0, 52, -/* 0x0280 */ 96, 6, 64,249,162, 43, 65, 57,160, 2, 63,214,163, 71, 64,185, -/* 0x0290 */ 129, 6, 64,249,128, 2, 64,249, 33, 0, 3,139,129, 6, 0,249, -/* 0x02a0 */ 0, 0, 3,203,128, 2, 0,249, 5, 0, 0, 20, 97, 6, 64,249, -/* 0x02b0 */ 224, 3, 20,170,226, 3, 2, 42,170,255,255,151,163, 67, 64,185, -/* 0x02c0 */ 97, 6, 64,249, 96, 2, 64,249, 33, 0, 3,139, 97, 6, 0,249, -/* 0x02d0 */ 0, 0, 3,203, 96, 2, 0,249,193,255,255, 23,243, 83, 65,169, -/* 0x02e0 */ 245, 91, 66,169,253,123,197,168,192, 3, 95,214,253,123,182,169, -/* 0x02f0 */ 253, 3, 0,145,232, 39, 6,109,234, 59, 0,253, 40, 0, 39, 30, -/* 0x0300 */ 169, 0,103,158,202, 0,103,158,247, 99, 3,169,249,107, 4,169, -/* 0x0310 */ 243, 83, 1,169,245, 91, 2,169,251,115, 5,169,249, 3, 0,170, -/* 0x0320 */ 245, 3, 2,170,250, 3, 3, 42,252, 3, 4,170, 20,112, 0,145, -/* 0x0330 */ 24, 0,128, 82, 23, 0,128,210, 32, 19, 64,185, 31, 3, 0,107, -/* 0x0340 */ 130, 11, 0, 84,128, 2, 64,185, 31,100, 0,113, 33, 9, 0, 84, -/* 0x0350 */ 150, 18, 64,249,246, 8, 0,180,147, 14, 64,249,128, 26, 64,249, -/* 0x0360 */ 179, 79, 0,249,118, 2, 22,139,123,206,116,146,115, 46, 64,146, -/* 0x0370 */ 160, 75, 0,249,115, 2, 0,171, 96, 9, 0, 84, 31, 0, 31,235, -/* 0x0380 */ 67, 2,130, 82, 68, 19,159, 90,181, 0, 0,181, 31, 0, 31,235, -/* 0x0390 */ 65, 2,128, 82, 64, 2,130, 82, 3, 0,129, 26, 6, 1, 38, 30, -/* 0x03a0 */ 133, 22, 64,249,224, 3, 27,170,225, 3, 19,170, 98, 0,128, 82, -/* 0x03b0 */ 197, 0, 5, 11, 90,255,255,151,127, 3, 0,235, 96, 0, 0, 84, -/* 0x03c0 */ 224, 15,128, 82, 63,255,255,151,117, 1, 0,180,128, 26, 64,249, -/* 0x03d0 */ 32, 1, 0,180,128, 22, 64,249, 64, 0, 0,181,155, 3, 0,249, -/* 0x03e0 */ 34, 1,102,158,224, 3, 21,170, 67, 1,102,158,161, 67, 2,145, -/* 0x03f0 */ 115,255,255,151,227, 3, 19,203, 99, 44, 64,242,224, 0, 0, 84, -/* 0x0400 */ 97, 3, 19,139, 0, 0,128,210, 63,104, 32, 56, 0, 4, 0,145, -/* 0x0410 */ 31, 0, 3,235,161,255,255, 84, 19, 1, 0,180,130, 62, 64,185, -/* 0x0420 */ 224, 3, 27,170,225, 3, 19,170,163, 71, 0,249, 57,255,255,151, -/* 0x0430 */ 163, 71, 64,249, 96,252,255, 53,115, 0, 19,139,115, 3, 19,139, -/* 0x0440 */ 127, 2, 22,235,130, 2, 0, 84,130, 62, 64,185,224, 3, 19,170, -/* 0x0450 */ 193, 2, 19,203, 67, 2,130, 82, 4, 0,128, 18, 5, 0,128, 82, -/* 0x0460 */ 47,255,255,151,127, 2, 0,235, 96, 1, 0, 84,213,255,255, 23, -/* 0x0470 */ 0, 16, 0, 81, 31, 4, 0,113,232, 0, 0, 84,130, 6, 64,249, -/* 0x0480 */ 33, 0,128,210,129, 8,192,242,128, 66, 0,145, 95, 0, 1,235, -/* 0x0490 */ 247, 18,128,154,128, 6, 64,185, 24, 7, 0, 17,148, 2, 0,139, -/* 0x04a0 */ 166,255,255, 23,227, 3, 21,170, 53,249,255,181,227,255,255, 23, -/* 0x04b0 */ 224, 3, 23,170,232, 39, 70,109,243, 83, 65,169,245, 91, 66,169, -/* 0x04c0 */ 247, 99, 67,169,249,107, 68,169,251,115, 69,169,234, 59, 64,253, -/* 0x04d0 */ 253,123,202,168,192, 3, 95,214,253,123,184,169,253, 3, 0,145, -/* 0x04e0 */ 243, 83, 1,169,244, 3, 4,170,243, 3, 2,170,161, 39, 0,249, -/* 0x04f0 */ 1, 96, 0,145,161, 47, 0,249,161, 39, 64,249, 0, 24, 64,185, -/* 0x0500 */ 33, 96, 0,209,161, 43, 0,249,160, 51, 0,249,160, 7, 69,169, -/* 0x0510 */ 160, 7, 7,169,247, 99, 3,169,162, 55, 0,249,160, 67, 1,145, -/* 0x0520 */ 161,131, 1,145,226, 3, 20,170,247, 3, 3,170, 3, 0,128,210, -/* 0x0530 */ 245, 91, 2,169,166, 35, 0,249,245, 3, 5,170, 32,255,255,151, -/* 0x0540 */ 164, 35, 64,249, 1, 0,128, 82,230, 3, 21,170,224, 3, 19,170, -/* 0x0550 */ 162,195, 1,145, 3, 0,128, 18,229, 3, 20,170,100,255,255,151, -/* 0x0560 */ 245, 3, 0,170, 96, 18, 64,185, 97,114, 0,145, 4, 0,128, 82, -/* 0x0570 */ 159, 0, 0,107,160, 7, 0, 84, 34, 0, 64,185, 95, 56, 0,113, -/* 0x0580 */ 193, 6, 0, 84, 32, 4, 64,249, 22, 0,128, 82,152, 2,128, 82, -/* 0x0590 */ 32, 0, 0,139, 1, 0,128, 82,226, 3, 1, 42,209,254,255,151, -/* 0x05a0 */ 244, 3, 0, 42,212, 2,248, 54,224, 15,128, 82,197,254,255,151, -/* 0x05b0 */ 97, 2, 64,185,192, 87,151, 82,192, 95,185,114, 63, 0, 0,107, -/* 0x05c0 */ 65, 3, 0, 84, 97, 30, 64, 57,224, 3, 19,170,117, 34, 0,145, -/* 0x05d0 */ 33,124, 24, 27, 33, 32, 0, 17,215,254,255,151, 97, 6, 64,185, -/* 0x05e0 */ 0, 0,128, 82, 31, 0, 1,107, 0, 2, 0, 84,162, 2, 64,185, -/* 0x05f0 */ 95, 48, 0,113, 65, 1, 0, 84,182, 10, 64,185,224, 3, 20, 42, -/* 0x0600 */ 225, 3, 19,170,226, 3, 23,170,227, 3, 22, 42,199,254,255,151, -/* 0x0610 */ 255, 2, 0,235,224,252,255, 84,228,255,255, 23, 0, 4, 0, 17, -/* 0x0620 */ 181, 82, 0,145,240,255,255, 23, 2, 0,128,210,224, 3, 19,170, -/* 0x0630 */ 225, 3, 22, 42,227, 3, 20, 42,228, 3, 2,170,229, 3, 2,170, -/* 0x0640 */ 230, 3, 2,170, 42,255,255,151,245, 3, 0,170,224, 3, 20, 42, -/* 0x0650 */ 167,254,255,151, 5, 0, 0, 20, 34, 4, 64,185,132, 4, 0, 17, -/* 0x0660 */ 33, 0, 2,139,195,255,255, 23,224, 3, 21,170,243, 83, 65,169, -/* 0x0670 */ 245, 91, 66,169,247, 99, 67,169,253,123,200,168,192, 3, 95,214, -/* 0x0680 */ 20, 0, 0, 0, 0, 0, 0, 0, 1,122, 82, 0, 4,120, 30, 1, -/* 0x0690 */ 27, 12, 31, 0, 0, 0, 0, 0, 36, 0, 0, 0, 28, 0, 0, 0, -/* 0x06a0 */ 192,250,255,255, 92, 0, 0, 0, 0, 65, 14, 16,157, 2,158, 1, -/* 0x06b0 */ 66, 13, 29, 83,222,221, 12, 31, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x06c0 */ 44, 0, 0, 0, 68, 0, 0, 0,244,250,255,255, 48, 1, 0, 0, -/* 0x06d0 */ 0, 65, 14, 80,157, 10,158, 9, 65, 13, 29, 66,147, 8,148, 7, -/* 0x06e0 */ 149, 6,150, 5, 2, 71,222,221,214,213,212,211, 12, 31, 0, 0, -/* 0x06f0 */ 84, 0, 0, 0,116, 0, 0, 0,244,251,255,255,236, 1, 0, 0, -/* 0x0700 */ 0, 65, 14,160, 1,157, 20,158, 19, 65, 13, 29, 66, 5, 72, 8, -/* 0x0710 */ 5, 73, 7, 5, 74, 6, 72,151, 14,152, 13,153, 12,154, 11,147, -/* 0x0720 */ 18,148, 17,149, 16,150, 15,155, 10,156, 9, 2,110,222,221, 6, -/* 0x0730 */ 74, 6, 73, 6, 72,220,219,218,217,216,215,214,213,212,211, 12, -/* 0x0740 */ 31, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,204, 0, 0, 0, -/* 0x0750 */ 136,253,255,255,168, 1, 0, 0, 0, 65, 14,128, 1,157, 16,158, -/* 0x0760 */ 15, 65, 13, 29, 65,147, 14,148, 13, 81,151, 10,152, 9, 67,149, -/* 0x0770 */ 12,150, 11, 2, 82,222,221,216,215,214,213,212,211, 12, 31, 0 +unsigned char stub_arm64_darwin_macho_fold[4392] = { +/* 0x0000 */ 224, 3, 20,170,225, 3, 21,170, 3, 24, 64,185, 9, 0,132, 82, +/* 0x0010 */ 127, 0, 9,107, 99,128,137, 26, 99, 60, 0, 17, 99,108, 28, 18, +/* 0x0020 */ 230,131, 0,145,243, 3, 0,145,255, 67, 35,203,226, 3, 0,145, +/* 0x0030 */ 228, 3, 28,170,165, 1, 0, 16, 39, 3, 0,148, 20,128, 64,249, +/* 0x0040 */ 28, 0, 64,249,127, 2, 0,145,224, 3, 64,185, 39, 0, 0,148, +/* 0x0050 */ 224, 7, 64,249,225, 19, 64,185, 40, 9,128, 82,254, 3, 20,170, +/* 0x0060 */ 255,131, 0,145,128, 3, 31,214, 99, 28, 0, 18,127, 72, 1,113, +/* 0x0070 */ 1, 2, 0, 84, 33,124, 2, 83,192, 1, 0,180,161, 1, 0, 52, +/* 0x0080 */ 33, 4, 0, 81, 2, 88, 97,184, 67,124, 26, 83,127,148, 0,113, +/* 0x0090 */ 193, 0, 0, 84, 67, 20, 6, 18, 66, 0, 1, 75, 66,100, 0, 18, +/* 0x00a0 */ 66, 0, 3, 42, 2, 88, 33,184, 63, 0, 0,113,161,254,255, 84, +/* 0x00b0 */ 192, 3, 95,214,192, 3, 95,214,168, 11,128, 82, 1, 0, 0,212, +/* 0x00c0 */ 232, 7,128, 82, 1, 0, 0,212,192, 3, 95,214, 8, 8,128, 82, +/* 0x00d0 */ 1, 0, 0,212,192, 3, 95,214, 0, 0, 32,212,168, 0,128, 82, +/* 0x00e0 */ 1, 0, 0,212,192, 3, 95,214, 40, 7,128, 82, 1, 0, 0,212, +/* 0x00f0 */ 192, 3, 95,214,168, 5,128, 82, 1, 0, 0,212,192, 3, 95,214, +/* 0x0100 */ 232, 26,128, 82, 1, 0, 0,212,192, 3, 95,214, 72, 28,128, 82, +/* 0x0110 */ 1, 0, 0,212,192, 3, 95,214,200, 27,128, 82, 1, 0, 0,212, +/* 0x0120 */ 192, 3, 95,214,104, 8,128, 82, 1, 0, 0,212,192, 3, 95,214, +/* 0x0130 */ 233, 31,128, 82, 41, 29, 16, 50, 6, 0, 0, 20, 2, 0, 64,185, +/* 0x0140 */ 35, 1, 2, 10, 34, 97,194, 10, 66, 32,195, 42, 2, 68, 0,184, +/* 0x0150 */ 33, 16, 0,113, 74,255,255, 84,192, 3, 95,214, 67, 1,128, 82, +/* 0x0160 */ 229, 3, 3, 42, 4, 8,195, 26,159, 36, 0,113,105, 0, 0, 84, +/* 0x0170 */ 99,124, 5, 27,252,255,255, 23, 4, 0,128,210, 71, 1,128, 82, +/* 0x0180 */ 72,124, 64,147, 31, 36, 0,113, 69, 0, 4, 11, 41, 1, 0, 84, +/* 0x0190 */ 5, 8,195, 26, 38, 0, 8,139,160,128, 3, 27,165,192, 0, 17, +/* 0x01a0 */ 197,104, 36, 56, 99, 8,199, 26,132, 4, 0,145,246,255,255, 23, +/* 0x01b0 */ 0,192, 0, 17, 32,200, 37, 56,160, 4, 0, 17,192, 3, 95,214, +/* 0x01c0 */ 229, 1,128, 82, 3, 0,254,210,127, 0, 0,234,129, 0, 0, 84, +/* 0x01d0 */ 165, 4, 0,113, 99,252, 68,211,129,255,255, 84, 4, 0,128,210, +/* 0x01e0 */ 230, 10,128, 82, 7, 6,128, 82,130, 8, 0, 17,163, 1, 0,180, +/* 0x01f0 */ 162, 0, 4, 75, 40, 0, 4,139, 66,116, 30, 83, 99,252, 68,211, +/* 0x0200 */ 2, 36,194,154,132, 4, 0,145, 66, 12, 0, 18, 95, 36, 0,113, +/* 0x0210 */ 201,128,135, 26, 34, 1, 2, 11, 2, 9, 0, 57,243,255,255, 23, +/* 0x0220 */ 224, 3, 2, 42,192, 3, 95,214,253,123,171,169,253, 3, 0,145, +/* 0x0230 */ 245, 91, 2,169,247, 99, 3,169,243, 83, 1,169,161,143, 0,249, +/* 0x0240 */ 161, 3, 4,145,162,147, 0,249,248, 3, 0,170,249,107, 4,169, +/* 0x0250 */ 163,151, 0,249,160, 67, 5,145,164,155, 0,249, 2, 0,128,210, +/* 0x0260 */ 165,159, 0,249,243, 3, 2, 42,166,163, 0,249, 21, 6,128, 82, +/* 0x0270 */ 167,167, 0,249, 22, 15,128, 82,160, 39,128, 61,183, 5,128, 82, +/* 0x0280 */ 161, 43,128, 61,162, 47,128, 61,163, 51,128, 61,164, 55,128, 61, +/* 0x0290 */ 165, 59,128, 61,166, 63,128, 61, 39, 0,128, 61,160, 59, 0,249, +/* 0x02a0 */ 160, 63, 0,249,160, 67, 4,145,160, 67, 0,249,224, 6,128, 18, +/* 0x02b0 */ 160,139, 0,185,224, 15,128, 18,160,143, 0,185, 25, 3, 64, 57, +/* 0x02c0 */ 20, 7, 0,145,250, 3, 20,170,121, 0, 0, 53, 34, 1, 0,181, +/* 0x02d0 */ 137, 0, 0, 20, 63,151, 0,113,160, 0, 0, 84, 95, 0, 31,235, +/* 0x02e0 */ 66, 16,148,154,248, 3, 20,170,245,255,255, 23,226, 0, 0,180, +/* 0x02f0 */ 65, 4, 0,209, 64, 0,128, 82,130, 2, 2,203,116,255,255,151, +/* 0x0300 */ 115, 2, 0, 11,153, 15, 0, 52, 0, 7, 64, 57, 20, 11, 0,145, +/* 0x0310 */ 31,192, 1,113,224, 6, 0, 84,168, 0, 0, 84,192, 14, 0, 52, +/* 0x0320 */ 31,144, 1,113,160, 3, 0, 84, 7, 0, 0, 20, 31,212, 1,113, +/* 0x0330 */ 32, 1, 0, 84, 31,224, 1,113,224, 7, 0, 84, 31,204, 1,113, +/* 0x0340 */ 192, 10, 0, 84, 64, 0,128, 82,225, 3, 26,170, 34, 0,128,210, +/* 0x0350 */ 78, 0, 0, 20,161,139, 64,185,160, 59, 64,249,161, 0,248, 54, +/* 0x0360 */ 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107,173, 0, 0, 84, +/* 0x0370 */ 1, 44, 0,145, 33,240,125,146,161, 59, 0,249, 3, 0, 0, 20, +/* 0x0380 */ 160, 63, 64,249, 0,192, 33,139, 0, 0, 64,185,161, 99, 1,145, +/* 0x0390 */ 2, 0,128, 82, 21, 0, 0, 20,161,139, 64,185,160, 59, 64,249, +/* 0x03a0 */ 161, 0,248, 54, 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107, +/* 0x03b0 */ 173, 0, 0, 84, 1, 44, 0,145, 33,240,125,146,161, 59, 0,249, +/* 0x03c0 */ 3, 0, 0, 20,160, 63, 64,249, 0,192, 33,139, 0, 0, 64,185, +/* 0x03d0 */ 2, 0,128, 82,128, 0,248, 54,224, 3, 0, 75,183, 99, 1, 57, +/* 0x03e0 */ 34, 0,128, 82,161, 99, 1,145, 93,255,255,151, 36, 0, 0, 20, +/* 0x03f0 */ 161,139, 64,185,181, 99, 1, 57,182,103, 1, 57,160, 59, 64,249, +/* 0x0400 */ 161, 0,248, 54, 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107, +/* 0x0410 */ 173, 0, 0, 84, 1, 60, 0,145, 33,240,125,146,161, 59, 0,249, +/* 0x0420 */ 3, 0, 0, 20,160, 63, 64,249, 0,192, 33,139, 0, 0, 64,249, +/* 0x0430 */ 17, 0, 0, 20,161,139, 64,185,160,103, 1, 57,181, 99, 1, 57, +/* 0x0440 */ 160, 59, 64,249,161, 0,248, 54, 34, 32, 0, 17,162,139, 0,185, +/* 0x0450 */ 95, 0, 31,107,173, 0, 0, 84, 1, 44, 0,145, 33,240,125,146, +/* 0x0460 */ 161, 59, 0,249, 3, 0, 0, 20,160, 63, 64,249, 0,192, 33,139, +/* 0x0470 */ 0, 0,128,185,161, 99, 1,145, 82,255,255,151, 2,124, 64,147, +/* 0x0480 */ 161, 99, 1,145, 64, 0,128, 82, 17,255,255,151,115, 2, 0, 11, +/* 0x0490 */ 2, 0,128,210,148,255,255, 23,161,139, 64,185,160, 59, 64,249, +/* 0x04a0 */ 161, 0,248, 54, 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107, +/* 0x04b0 */ 173, 0, 0, 84, 1, 60, 0,145, 33,240,125,146,161, 59, 0,249, +/* 0x04c0 */ 3, 0, 0, 20,160, 63, 64,249, 0,192, 33,139, 1, 0, 64,249, +/* 0x04d0 */ 226, 3, 1,170,161, 0, 0,180, 64, 0, 64, 57, 96, 0, 0, 52, +/* 0x04e0 */ 66, 4, 0,145,253,255,255, 23, 64, 0,128, 82, 66, 0, 1,203, +/* 0x04f0 */ 230,255,255, 23,224, 3, 19, 42,243, 83, 65,169,245, 91, 66,169, +/* 0x0500 */ 247, 99, 67,169,249,107, 68,169,253,123,213,168,192, 3, 95,214, +/* 0x0510 */ 253,123,189,169,253, 3, 0,145,243, 83, 1,169,243, 3, 0,170, +/* 0x0520 */ 244, 3, 2,170,245, 91, 2,169, 22, 4, 64,249,245, 3, 1,170, +/* 0x0530 */ 98, 2, 64,249,225, 3, 19,170,227, 3, 22,170,228, 3, 21,170, +/* 0x0540 */ 229, 3, 20,170, 7, 0, 0,148,120,114,101, 97,100, 32, 37,112, +/* 0x0550 */ 40, 37,120, 32, 37,112, 41, 32, 37,112, 32, 37,120, 10, 0, 0, +/* 0x0560 */ 224, 3, 30,170, 49,255,255,151, 98, 2, 64,249, 0, 0,128,210, +/* 0x0570 */ 95, 0, 20,235, 34, 2, 0, 84, 99, 6, 64,249,225, 3, 19,170, +/* 0x0580 */ 228, 3, 21,170,229, 3, 20,170, 8, 0, 0,148,120,114,101, 97, +/* 0x0590 */ 100,102, 97,105,108, 32, 37,112, 40, 37,120, 32, 37,112, 41, 32, +/* 0x05a0 */ 37,112, 32, 37,120, 10, 0, 0,224, 3, 30,170, 31,255,255,151, +/* 0x05b0 */ 224, 15,128, 82,193,254,255,151, 31, 0, 20,235,160, 0, 0, 84, +/* 0x05c0 */ 193,106, 96, 56,161,106, 32, 56, 0, 4, 0,145,251,255,255, 23, +/* 0x05d0 */ 97, 6, 64,249,245, 91, 66,169, 33, 0, 0,139, 97, 6, 0,249, +/* 0x05e0 */ 97, 2, 64,249, 32, 0, 0,203, 96, 2, 0,249,243, 83, 65,169, +/* 0x05f0 */ 253,123,195,168,192, 3, 95,214,253,123,190,169,253, 3, 0,145, +/* 0x0600 */ 243, 11, 0,249,243, 3, 0, 42,225, 3, 19, 42, 5, 0, 0,148, +/* 0x0610 */ 101,114,114, 95,101,120,105,116, 32, 37,120, 10, 0, 0, 0, 0, +/* 0x0620 */ 224, 3, 30,170, 1,255,255,151,224, 3, 19, 42,163,254,255,151, +/* 0x0630 */ 255,131, 1,209,253,123, 1,169,253, 67, 0,145,243, 83, 2,169, +/* 0x0640 */ 244, 3, 0,170,243, 3, 1,170,245, 91, 3,169,227, 3, 0,249, +/* 0x0650 */ 246, 3, 2,170,245, 3, 3,170,130, 2, 64,249,131, 6, 64,249, +/* 0x0660 */ 225, 3, 20,170,101, 2, 64,249,228, 3, 19,170,102, 6, 64,249, +/* 0x0670 */ 231, 3, 22,170, 14, 0, 0,148,117,110,112, 97, 99,107, 69,120, +/* 0x0680 */ 116,101,110,116, 32,105,110, 61, 37,112, 40, 37,120, 32, 37,112, +/* 0x0690 */ 41, 32, 32,111,117,116, 61, 37,112, 40, 37,120, 32, 37,112, 41, +/* 0x06a0 */ 32, 32, 37,112, 32, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170, +/* 0x06b0 */ 222,254,255,151, 96, 2, 64,249,160, 10, 0,180,130, 1,128,210, +/* 0x06c0 */ 224, 3, 20,170,161, 3, 1,145,146,255,255,151,162, 67, 64,185, +/* 0x06d0 */ 164, 71, 64,185, 98, 1, 0, 53,160, 10,138, 82, 0, 43,164,114, +/* 0x06e0 */ 159, 0, 0,107, 96, 0, 0, 84, 64, 0,128, 82, 4, 0, 0, 20, +/* 0x06f0 */ 128, 2, 64,249,192, 8, 0,180, 96, 0,128, 82,191,255,255,151, +/* 0x0700 */ 100, 0, 0, 53,128, 0,128, 82,253,255,255, 23,159, 0, 2,107, +/* 0x0710 */ 41, 2, 0, 84, 99, 2, 64,249,225, 3, 4, 42, 10, 0, 0,148, +/* 0x0720 */ 115,122, 95, 99,112,114, 61, 37,120, 32, 32,115,122, 95,117,110, +/* 0x0730 */ 99, 61, 37,120, 32, 32,120,111, 45, 62,115,105,122,101, 61, 37, +/* 0x0740 */ 120, 10, 0, 0,224, 3, 30,170,184,254,255,151,160, 0,128, 82, +/* 0x0750 */ 235,255,255, 23, 97, 2, 64,249,224, 3, 2, 42, 31, 0, 1,235, +/* 0x0760 */ 168,253,255, 84,159, 0, 2,107,162, 3, 0, 84,160, 31, 0,249, +/* 0x0770 */ 225, 3, 4, 42,128, 6, 64,249,163,227, 0,145, 98, 6, 64,249, +/* 0x0780 */ 164, 35, 65, 57,192, 2, 63,214,160, 0, 0, 53,161, 31, 64,249, +/* 0x0790 */ 160, 67, 64,185, 63, 0, 0,235, 96, 0, 0, 84,224, 0,128, 82, +/* 0x07a0 */ 215,255,255, 23,163, 39, 65, 57,181, 0, 0,180,131, 0, 0, 52, +/* 0x07b0 */ 96, 6, 64,249,162, 43, 65, 57,160, 2, 63,214,162, 71, 64,185, +/* 0x07c0 */ 129, 6, 64,249,128, 2, 64,249, 33, 0, 2,139,129, 6, 0,249, +/* 0x07d0 */ 0, 0, 2,203,128, 2, 0,249, 5, 0, 0, 20, 97, 6, 64,249, +/* 0x07e0 */ 224, 3, 20,170,226, 3, 4, 42, 74,255,255,151,162, 67, 64,185, +/* 0x07f0 */ 97, 6, 64,249, 96, 2, 64,249, 33, 0, 2,139, 97, 6, 0,249, +/* 0x0800 */ 0, 0, 2,203, 96, 2, 0,249,171,255,255, 23,191, 67, 0,209, +/* 0x0810 */ 243, 83, 66,169,245, 91, 67,169,253,123, 65,169,255,131, 1,145, +/* 0x0820 */ 192, 3, 95,214,253,123,180,169,253, 3, 0,145,234, 47, 7,109, +/* 0x0830 */ 243, 83, 1,169,232, 39, 6,109,245, 91, 2,169,247, 99, 3,169, +/* 0x0840 */ 251,115, 5,169,249,107, 4,169,236, 67, 0,253,251, 3, 0,170, +/* 0x0850 */ 105, 0, 39, 30, 19,128, 0,145, 43, 0, 39, 30,246, 3, 2,170, +/* 0x0860 */ 248, 3, 4,170,227, 3, 4,170,172, 0,103,158,202, 0,103,158, +/* 0x0870 */ 17, 0, 0,148,100,111, 95,120,109, 97,112, 32, 32,102,100,105, +/* 0x0880 */ 61, 37,120, 32, 32,109,104,100,114, 61, 37,112, 32, 32, 42,109, +/* 0x0890 */ 104,100,114,112,112, 61, 37,112, 32, 32,120,105, 61, 37,112, 40, +/* 0x08a0 */ 37,120, 32, 37,112, 41, 32,102, 95,117,110,102, 61, 37,112, 10, +/* 0x08b0 */ 0, 0, 0, 0,224, 3, 30,170, 68, 0, 0,180,131, 0, 64,249, +/* 0x08c0 */ 150, 0, 0,180,197, 2, 64,249,198, 6, 64,249, 3, 0, 0, 20, +/* 0x08d0 */ 229, 3, 22,170,230, 3, 22,170, 33, 1, 38, 30, 23, 0,128,210, +/* 0x08e0 */ 71, 1,102,158,226, 3, 27,170,228, 3, 22,170, 28, 0,128, 82, +/* 0x08f0 */ 249, 3, 23,170, 77,254,255,151, 96, 19, 64,185,159, 3, 0,107, +/* 0x0900 */ 66, 29, 0, 84, 96, 2, 64,185, 31,100, 0,113,161, 26, 0, 84, +/* 0x0910 */ 97, 18, 64,249, 97, 26, 0,180, 96, 22, 64,249, 0, 2, 0,181, +/* 0x0920 */ 96, 26, 64,249,192, 1, 0,180, 0, 3, 64,249,128, 1, 0,180, +/* 0x0930 */ 1, 24, 64,185, 65, 1,168, 54,119, 14, 64,249, 23, 0, 23,203, +/* 0x0940 */ 225, 3, 23,170, 4, 0, 0,148,114,101,108,111, 99, 61, 37,112, +/* 0x0950 */ 10, 0, 0, 0,224, 3, 30,170, 52,254,255,151,116, 14, 64,249, +/* 0x0960 */ 98, 26, 64,249,244, 2, 20,139,122, 18, 64,249,137, 46, 64,146, +/* 0x0970 */ 180, 95, 0,249,128, 2, 26,139,162, 91, 0,249, 58, 1, 2,171, +/* 0x0980 */ 148, 2, 9,203, 8, 0,103,158,192, 10, 0, 84, 0, 3, 64,249, +/* 0x0990 */ 223, 2, 31,235,104, 0,128,210, 85, 0,128, 82, 8, 17,159,154, +/* 0x09a0 */ 31, 0, 31,235, 64, 2,128, 82, 8, 1, 26,139, 21, 16,149, 26, +/* 0x09b0 */ 223, 2, 31,235,234, 7,159, 26,106, 0, 0, 53,224, 3, 10, 42, +/* 0x09c0 */ 66, 0, 0,181, 0, 4,128, 82, 21, 0, 21, 42, 95, 0, 31,235, +/* 0x09d0 */ 32, 1, 38, 30,107, 22, 64,249,226, 3, 8,170,225, 3, 20,170, +/* 0x09e0 */ 99, 0,128, 82,228, 3, 21, 42,231, 3, 23,170,170, 75, 0,249, +/* 0x09f0 */ 12, 16,159, 90,168, 79, 0,249, 96, 1, 38, 30,229, 3, 12, 42, +/* 0x0a00 */ 172, 83, 0,249, 11, 0, 11, 11,171, 87, 0,249,230, 3, 11, 42, +/* 0x0a10 */ 18, 0, 0,148,109,109, 97,112, 32, 32, 97,100,100,114, 61, 37, +/* 0x0a20 */ 112, 32, 32,108,101,110, 61, 37,112, 32, 32,112,114,111,116, 61, +/* 0x0a30 */ 37,120, 32, 32,102,108, 97,103,115, 61, 37,120, 32, 32,102,100, +/* 0x0a40 */ 61, 37,100, 32, 32,111,102,102, 61, 37,112, 32, 32,114,101,108, +/* 0x0a50 */ 111, 99, 61, 37,112, 10, 0, 0,224, 3, 30,170,243,253,255,151, +/* 0x0a60 */ 168, 79, 64,249,224, 3, 20,170,172, 83, 64,249, 98, 0,128, 82, +/* 0x0a70 */ 171, 87, 64,249,225, 3, 8,170,227, 3, 21, 42,228, 3, 12, 42, +/* 0x0a80 */ 229, 3, 11, 42,165,253,255,151,225, 3, 0,170, 0, 3, 64,249, +/* 0x0a90 */ 170, 75, 64,249,192, 0, 0,181, 1, 3, 0,249,247, 3, 1,170, +/* 0x0aa0 */ 244, 3, 1,170, 42, 2, 0, 53, 26, 0, 0, 20,159, 2, 1,235, +/* 0x0ab0 */ 128, 15, 0, 84,226, 3, 20,170, 6, 0, 0,148,109, 97,100,100, +/* 0x0ac0 */ 114, 61, 37,112, 32, 32, 97,100,100,114, 61, 37,112, 10, 0, 0, +/* 0x0ad0 */ 224, 3, 30,170,213,253,255,151, 0, 1,128, 82, 70, 0, 0, 20, +/* 0x0ae0 */ 229, 3, 22, 42, 86, 6, 0,180, 96, 26, 64,249, 32, 1, 0,180, +/* 0x0af0 */ 96, 22, 64,249, 64, 0, 0,181, 20, 3, 0,249,130, 1,102,158, +/* 0x0b00 */ 224, 3, 22,170, 67, 1,102,158,161,195, 2,145,201,254,255,151, +/* 0x0b10 */ 95, 3, 31,235,229, 7,159, 26,165, 4, 0, 52, 0, 3, 64,249, +/* 0x0b20 */ 96, 4, 0,180, 96, 22, 64,249, 37, 0,128, 82, 0, 4, 0,181, +/* 0x0b30 */ 96, 66, 64,185,192, 3, 0, 52, 99, 2, 27,203,225, 3, 5, 42, +/* 0x0b40 */ 131, 2, 3,139, 1,128,186,114, 98, 32, 1,145,228, 3, 20,170, +/* 0x0b50 */ 165, 87, 0,249, 64, 48, 64,185, 0, 32, 0,209,153, 2, 0,139, +/* 0x0b60 */ 129,106, 32,184, 0,120,128, 82,224,203,186,114,225, 3, 25,170, +/* 0x0b70 */ 32, 7, 0,185, 11, 0, 0,148,104, 97,116, 99,104, 61, 37,112, +/* 0x0b80 */ 32, 32,115,101, 99,112, 61, 37,112, 32, 32,115,101,103,112, 61, +/* 0x0b90 */ 37,112, 32, 32,109,104,100,114, 61, 37,112, 10, 0, 0, 0, 0, +/* 0x0ba0 */ 224, 3, 30,170,161,253,255,151,165, 87, 64,249,245, 3, 26,203, +/* 0x0bb0 */ 181, 46, 64,242, 97, 0, 0, 84, 5, 2, 0, 52, 8, 0, 0, 20, +/* 0x0bc0 */ 129, 2, 26,139, 0, 0,128,210, 63,104, 32, 56, 0, 4, 0,145, +/* 0x0bd0 */ 31, 0, 21,235,161,255,255, 84,248,255,255, 23, 98, 62, 64,185, +/* 0x0be0 */ 224, 3, 20,170,225, 3, 26,170, 73,253,255,151, 96, 0, 0, 52, +/* 0x0bf0 */ 64, 1,128, 82,129,254,255,151, 0, 1,102,158,181, 2, 26,139, +/* 0x0c00 */ 148, 2, 21,139,159, 2, 0,235,194, 1, 0, 84, 52, 4, 0,180, +/* 0x0c10 */ 1, 1,102,158, 98, 62, 64,185,224, 3, 20,170, 67, 6,128, 82, +/* 0x0c20 */ 4, 0,128, 18, 5, 0,128, 82, 33, 0, 20,203, 59,253,255,151, +/* 0x0c30 */ 159, 2, 0,235,224, 2, 0, 84, 32, 1,128, 82,238,255,255, 23, +/* 0x0c40 */ 150, 2, 0,180, 65, 15, 0,145, 33, 44, 64,146, 63, 12, 0,241, +/* 0x0c50 */ 8, 2, 0, 84,224, 3, 20,170, 42,253,255,151, 13, 0, 0, 20, +/* 0x0c60 */ 0, 16, 0, 81, 31, 4, 0,113, 72, 1, 0, 84, 97, 6, 64,249, +/* 0x0c70 */ 128, 0,128,210,128, 8,192,242, 63, 0, 0,235,161, 0, 0, 84, +/* 0x0c80 */ 96,138, 64,249,121, 66, 0,145, 0, 0, 23,139, 96,138, 0,249, +/* 0x0c90 */ 96, 6, 64,185,156, 7, 0, 17,115, 2, 0,139, 23,255,255, 23, +/* 0x0ca0 */ 74,242,255, 53,160,255,255, 23,224, 3, 25,170,232, 39, 70,109, +/* 0x0cb0 */ 243, 83, 65,169,234, 47, 71,109,245, 91, 66,169,247, 99, 67,169, +/* 0x0cc0 */ 249,107, 68,169,251,115, 69,169,236, 67, 64,253,253,123,204,168, +/* 0x0cd0 */ 192, 3, 95,214,255, 3, 3,209,253,123, 2,169,253,131, 0,145, +/* 0x0ce0 */ 243, 83, 3,169,161, 47, 0,249,243, 3, 2,170, 2, 96, 0,145, +/* 0x0cf0 */ 162, 63, 0,249,167, 47, 64,249,244, 3, 4,170,245, 91, 4,169, +/* 0x0d00 */ 231, 96, 0,209,167, 59, 0,249,246, 3, 5,170, 5, 24, 64,185, +/* 0x0d10 */ 231, 3, 0,249,245, 3, 6,170,230, 11, 0,249,167,195, 1,145, +/* 0x0d20 */ 226, 7, 0,249,160, 7, 71,169,194, 0, 64,249,230, 3, 19,170, +/* 0x0d30 */ 160, 7, 9,169,161, 47, 64,249,247, 99, 5,169,226, 15, 0,249, +/* 0x0d40 */ 247, 3, 3,170,226, 3, 4,170,227, 3, 22,170,164, 3, 2,145, +/* 0x0d50 */ 165, 67, 0,249,249, 51, 0,249,179, 71, 0,249, 23, 0, 0,148, +/* 0x0d60 */ 117,112,120, 95,109, 97,105,110, 32,115,122, 99, 61, 37,120, 32, +/* 0x0d70 */ 32,102, 95,100,101, 99, 61, 37,112, 32, 32,102, 95,117,110,102, +/* 0x0d80 */ 61, 37,112, 32, 32, 32, 32,120,111, 61, 37,112, 40, 37,120, 32, +/* 0x0d90 */ 37,112, 41, 32, 32,120,105, 61, 37,112, 40, 37,120, 32, 37,112, +/* 0x0da0 */ 41, 32, 32,109,104,100,114,112,112, 61, 37,112, 32, 32,109,104, +/* 0x0db0 */ 100,114,112, 61, 37,112, 10, 0,224, 3, 30,170, 27,253,255,151, +/* 0x0dc0 */ 160,195, 1,145,161, 3, 2,145,226, 3, 20,170, 3, 0,128,210, +/* 0x0dd0 */ 24,254,255,151, 1, 0,128, 82,228, 3, 21,170,224, 3, 19,170, +/* 0x0de0 */ 162, 67, 2,145, 3, 0,128, 18,229, 3, 20,170,230, 3, 22,170, +/* 0x0df0 */ 141,254,255,151,248, 3, 0,170, 96, 18, 64,185, 97,130, 0,145, +/* 0x0e00 */ 4, 0,128, 82,159, 0, 0,107,224, 9, 0, 84, 34, 0, 64,185, +/* 0x0e10 */ 95, 56, 0,113, 1, 9, 0, 84, 52, 8, 64,185, 22, 0,128, 82, +/* 0x0e20 */ 4, 0, 0,148,100,121,108,100, 61, 32, 37,115, 10, 0, 0, 0, +/* 0x0e30 */ 224, 3, 30,170, 52, 0, 20,139,153, 2,128, 82,225, 3, 20,170, +/* 0x0e40 */ 250,252,255,151, 1, 0,128, 82,224, 3, 20,170,226, 3, 1, 42, +/* 0x0e50 */ 162,252,255,151,244, 3, 0, 42, 20, 3,248, 54, 64, 2,128, 82, +/* 0x0e60 */ 30, 0, 0, 20, 98, 2, 64,185, 64,217,159, 82, 64,215,183,114, +/* 0x0e70 */ 95, 0, 0,107, 65, 3, 0, 84, 97, 30, 64, 57,224, 3, 19,170, +/* 0x0e80 */ 117, 34, 0,145, 33,124, 25, 27, 33, 32, 0, 17,169,252,255,151, +/* 0x0e90 */ 96, 6, 64,185, 1, 0,128, 82, 63, 0, 0,107, 0, 3, 0, 84, +/* 0x0ea0 */ 163, 2, 64,185,226, 0,128, 82, 2, 32,160,114,127, 0, 2,107, +/* 0x0eb0 */ 1, 2, 0, 84,182, 10, 64,185,224, 3, 20, 42,225, 3, 19,170, +/* 0x0ec0 */ 226, 3, 23,170,227, 3, 22, 42,151,252,255,151,255, 2, 0,235, +/* 0x0ed0 */ 160,252,255, 84, 96, 2,128, 82,200,253,255,151,193, 87,151, 82, +/* 0x0ee0 */ 193, 95,185,114, 95, 0, 1,107,128,252,255, 84, 4, 0, 0, 20, +/* 0x0ef0 */ 33, 4, 0, 17,181, 82, 0,145,232,255,255, 23,164,131, 2,145, +/* 0x0f00 */ 2, 0,128,210,224, 3, 19,170,225, 3, 22, 42,227, 3, 20, 42, +/* 0x0f10 */ 229, 3, 2,170,159,140, 28,248,230, 3, 2,170, 66,254,255,151, +/* 0x0f20 */ 243, 3, 0,170, 24, 0, 0,249,224, 3, 20, 42,111,252,255,151, +/* 0x0f30 */ 6, 0, 0, 20, 34, 4, 64,185,132, 4, 0, 17, 33, 0, 2,139, +/* 0x0f40 */ 177,255,255, 23, 19, 0,128,210,191,131, 0,209,224, 3, 19,170, +/* 0x0f50 */ 243, 83, 67,169,245, 91, 68,169,247, 99, 69,169,249, 51, 64,249, +/* 0x0f60 */ 253,123, 66,169,255, 3, 3,145,192, 3, 95,214, 0, 0, 0, 0, +/* 0x0f70 */ 20, 0, 0, 0, 0, 0, 0, 0, 1,122, 82, 0, 4,120, 30, 1, +/* 0x0f80 */ 27, 12, 31, 0, 0, 0, 0, 0, 20, 0, 0, 0, 28, 0, 0, 0, +/* 0x0f90 */ 204,241,255,255,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0fa0 */ 20, 0, 0, 0, 52, 0, 0, 0, 24,242,255,255,104, 0, 0, 0, +/* 0x0fb0 */ 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 76, 0, 0, 0, +/* 0x0fc0 */ 104,242,255,255,232, 2, 0, 0, 0, 65, 14,208, 2,157, 42,158, +/* 0x0fd0 */ 41, 65, 13, 29, 70,149, 38,150, 37,151, 36,152, 35,147, 40,148, +/* 0x0fe0 */ 39, 66,153, 34,154, 33, 2,175,222,221,218,217,216,215,214,213, +/* 0x0ff0 */ 212,211, 12, 31, 0, 0, 0, 0, 44, 0, 0, 0,140, 0, 0, 0, +/* 0x1000 */ 16,245,255,255,232, 0, 0, 0, 0, 65, 14, 48,157, 6,158, 5, +/* 0x1010 */ 65, 13, 29, 65,147, 4,148, 3, 67,149, 2,150, 1,115,222,221, +/* 0x1020 */ 214,213,212,211, 12, 31, 0, 0, 28, 0, 0, 0,188, 0, 0, 0, +/* 0x1030 */ 200,245,255,255, 56, 0, 0, 0, 0, 65, 14, 32,157, 4,158, 3, +/* 0x1040 */ 65, 13, 29, 65,147, 2, 0, 0, 52, 0, 0, 0,220, 0, 0, 0, +/* 0x1050 */ 224,245,255,255,244, 1, 0, 0, 0, 65, 14, 96, 65,157, 10,158, +/* 0x1060 */ 9, 65, 12, 29, 80, 65,147, 8,148, 7, 67,149, 6,150, 5, 2, +/* 0x1070 */ 113, 12, 31, 96, 68,222,221,214,213,212,211, 14, 0, 0, 0, 0, +/* 0x1080 */ 92, 0, 0, 0, 20, 1, 0, 0,156,247,255,255,176, 4, 0, 0, +/* 0x1090 */ 0, 65, 14,192, 1,157, 24,158, 23, 65, 13, 29, 72, 5, 74, 10, +/* 0x10a0 */ 5, 75, 9,147, 22,148, 21, 5, 72, 12, 5, 73, 11,149, 20,150, +/* 0x10b0 */ 19,151, 18,152, 17,155, 14,156, 13,153, 16,154, 15, 5, 76, 8, +/* 0x10c0 */ 3, 33, 1,222,221, 6, 76, 6, 75, 6, 74, 6, 73, 6, 72,220, +/* 0x10d0 */ 219,218,217,216,215,214,213,212,211, 12, 31, 0, 0, 0, 0, 0, +/* 0x10e0 */ 68, 0, 0, 0,116, 1, 0, 0,236,251,255,255,152, 2, 0, 0, +/* 0x10f0 */ 0, 65, 14,192, 1, 65,157, 20,158, 19, 65, 12, 29,160, 1, 66, +/* 0x1100 */ 147, 18,148, 17, 72,149, 16,150, 15, 78,151, 14,152, 13, 70,153, +/* 0x1110 */ 12, 2,125, 12, 31,192, 1, 71,222,221,217,216,215,214,213,212, +/* 0x1120 */ 211, 14, 0, 0, 0, 0, 0, 0 }; diff --git a/src/stub/src/amd64-darwin.macho-main.c b/src/stub/src/amd64-darwin.macho-main.c index e3bf76ba..63b1f60f 100644 --- a/src/stub/src/amd64-darwin.macho-main.c +++ b/src/stub/src/amd64-darwin.macho-main.c @@ -34,7 +34,7 @@ #include "include/darwin.h" #ifndef DEBUG /*{*/ -#define DEBUG 0 +#define DEBUG 1 #endif /*}*/ /************************************************************************* @@ -118,7 +118,7 @@ xread(Extent *x, void *buf, size_t count) // util **************************************************************************/ -#if 1 //{ save space +#if 0 //{ save space #define ERR_LAB error: exit(127); #define err_exit(a) goto error #else //}{ save debugging time @@ -348,6 +348,27 @@ typedef struct { uint64_t stacksize; // non-default initial stack size } Mach_main_command; +#if defined(__AARCH64EL__) // { +typedef struct { + uint64_t x0, x1, x2, x3; + uint64_t x4, x5, x6, x7; + uint64_t x8, x9, x10, x11; + uint64_t x12, x13, x14, x15; + uint64_t x16, x17, x18, x19; + uint64_t x20, x21, x22, x23; + uint64_t x24, x25, x26, x27; + uint64_t x28, fp, lr, sp; + uint64_t pc; + uint32_t cpsr; +} Mach_thread_state; // Mach_ARM64_thread_state + enum e6 { + THREAD_STATE = 4 // ARM64_THREAD_STATE + }; + enum e7 { + THREAD_STATE_COUNT = sizeof(Mach_thread_state)/4 + }; + +#elif defined(__x86_64__) //}{ typedef struct { uint64_t rax, rbx, rcx, rdx; uint64_t rdi, rsi, rbp, rsp; @@ -355,21 +376,23 @@ typedef struct { uint64_t r12, r13, r14, r15; uint64_t rip, rflags; uint64_t cs, fs, gs; -} Mach_AMD64_thread_state; +} Mach_thread_state; // Mach_AMD64_thread_state; + enum e6 { + THREAD_STATE = 4 // AMD_THREAD_STATE + }; + enum e7 { + THREAD_STATE_COUNT = sizeof(Mach_thread_state)/4 + }; + +#endif //} typedef struct { unsigned cmd; /* LC_THREAD or LC_UNIXTHREAD */ unsigned cmdsize; /* total size of this command */ unsigned flavor; unsigned count; /* sizeof(following_thread_state)/4 */ - Mach_AMD64_thread_state state; + Mach_thread_state state; } Mach_thread_command; - enum e6 { - AMD64_THREAD_STATE = 4 // x86_THREAD_STATE64 - }; - enum e7 { - AMD64_THREAD_STATE_COUNT = sizeof(Mach_AMD64_thread_state)/4 - }; typedef union { unsigned offset; /* from start of load command to string */ @@ -377,8 +400,11 @@ typedef union { #define MAP_FIXED 0x10 #define MAP_PRIVATE 0x02 + #define MAP_ANON 0x1000 -//#define MAP_ANON 0x20 // x86 DEBUG ONLY +#undef MAP_ANON // x86 DEBUG ONLY +#define MAP_ANON 0x20 // x86 DEBUG ONLY + #define PROT_READ 1 #define PROT_WRITE 2 #define PROT_EXEC 4 @@ -457,9 +483,15 @@ do_xmap( // fold.S could do this easier, except PROT_WRITE is missing then. Mach_segment_command *segp = (Mach_segment_command *)(((char *)sc - (char *)mhdr) + addr); Mach_section_command *const secp = (Mach_section_command *)(1+ segp); +#if defined(__AARCH64EL__) //{ + unsigned *hatch= -2+ (unsigned *)(secp->offset + (char *)addr); + hatch[0] = 0xd4000001; // syscall + hatch[1] = 0xd65f03c0; // ret +#elif defined(__x86_64__) //}{ unsigned *hatch= -1+ (unsigned *)(secp->offset + (char *)addr); + hatch[0] = 0xc3050f90; // nop; syscall; ret +#endif //} DPRINTF("hatch=%%p secp=%%p segp=%%p mhdr=%%p\\n", hatch, secp, segp, addr); - *hatch = 0xc3050f90; // nop; syscall; ret rv= (unsigned char *)hatch; } /*bzero(addr, frag);*/ // fragment at lo end @@ -489,9 +521,13 @@ ERR_LAB } else if (LC_UNIXTHREAD==sc->cmd || LC_THREAD==sc->cmd) { Mach_thread_command *const thrc = (Mach_thread_command *)sc; - if (AMD64_THREAD_STATE ==thrc->flavor - && AMD64_THREAD_STATE_COUNT==thrc->count ) { + if (THREAD_STATE ==thrc->flavor + && THREAD_STATE_COUNT==thrc->count ) { +#if defined(__AARCH64EL__) // { + thrc->state.pc += reloc; +#elif defined(__x86_64__) //}{ thrc->state.rip += reloc; +#endif //} rv = (unsigned char *)&thrc->state; } } @@ -503,8 +539,7 @@ ERR_LAB // upx_main - called by our unfolded entry code // **************************************************************************/ - -Mach_AMD64_thread_state const * +Mach_thread_state const * upx_main( struct l_info const *const li, size_t volatile sz_compressed, // total length @@ -515,7 +550,7 @@ upx_main( Mach_header64 **const mhdrpp // Out: *mhdrpp= &real Mach_header64 ) { - Mach_AMD64_thread_state *ts = 0; + Mach_thread_state *ts = 0; unsigned char *hatch; off_t_upx_stub fat_offset = 0; Extent xi, xo, xi0; @@ -545,6 +580,7 @@ upx_main( ) if (LC_LOAD_DYLINKER==lc->cmd) { char const *const dyld_name = ((Mach_lc_str const *)(1+ lc))->offset + (char const *)lc; + DPRINTF("dyld= %%s\\n", dyld_name); int const fdi = open(dyld_name, O_RDONLY, 0); if (0 > fdi) { err_exit(18); @@ -572,8 +608,12 @@ ERR_LAB } break; } // switch Mach_header64 *dyhdr = 0; - ts = (Mach_AMD64_thread_state *)do_xmap(mhdr, fat_offset, 0, fdi, &dyhdr, 0, 0); - ts->rax = (uint64_t)hatch; + ts = (Mach_thread_state *)do_xmap(mhdr, fat_offset, 0, fdi, &dyhdr, 0, 0); +#if defined(__AARCH64EL__) // { + ts->x0 = (uint64_t)hatch; +#elif defined(__x86_64__) //}{ + ts->rax = (uint64_t)hatch; +#endif //} close(fdi); break; } @@ -682,6 +722,11 @@ finish: buf[1] = 'x'; n+= write(2, buf, heximal(va_arg(va, int), buf, 2)); } break; + case 's': { + char *s0= (char *)va_arg(va, char *), *s= s0; + if (s) while (*s) ++s; + n+= write(2, s0, s - s0); + } break; } // 'switch' } done: diff --git a/src/stub/src/arm.v5a-darwin.macho-entry.S b/src/stub/src/arm.v5a-darwin.macho-entry.S index 22f2888e..f670f0f4 100644 --- a/src/stub/src/arm.v5a-darwin.macho-entry.S +++ b/src/stub/src/arm.v5a-darwin.macho-entry.S @@ -133,7 +133,7 @@ rcx .req r3 rax .req r7 rbx .req r8 -rbp .req r9 +r_EXP .req r9 section MACHMAINZ unfold: // lr= &b_info; sp/ fd,%ADRU,%LENU,%entry,%&Mach_header @@ -168,13 +168,14 @@ unfold: // lr= &b_info; sp/ fd,%ADRU,%LENU,%entry,%&Mach_header // Remember new f_exp region for PROT_EXEC. ldr rdx,[sp,#2*NBPW] // LENU ldr rcx,[sp,#4*NBPW] // &Mach_header - add rdx,rdx,rax // new last of unfolded - sub r_RELOC,rax,rcx // relocation constant = new - old - add rax,rax,rbp; str rbp,[sp,#-NBPW]! // P_10 new f_exp - mov rax,rax,lsr #PAGE_SHIFT - mov rax,rax,lsl #PAGE_SHIFT - str rax,[sp,#-NBPW]! // P_11 address - sub rdx,rdx,rax + add rdx,rdx,r0 // new last of unfolded + sub r_RELOC,r0,rcx // relocation constant = new - old + add rcx,r_EXP,r_RELOC + str rcx,[sp,#-NBPW]! // P_10 new f_exp + mov r0,r0,lsr #PAGE_SHIFT + mov r0,r0,lsl #PAGE_SHIFT + str r0,[sp,#-NBPW]! // P_11 address + sub rdx,rdx,r0 str rdx,[sp,#-NBPW]! // P_12 length // Unfold @@ -186,13 +187,13 @@ unfold: // lr= &b_info; sp/ fd,%ADRU,%LENU,%entry,%&Mach_header ldr arg5,[rbx,#b_method] add arg1,rbx,#sz_b_info // src mov arg2,rax // srclen - blx rbp // old f_exp + blx r_EXP // old f_exp; new f_exp lacks PROT_EXEC add sp,sp,#NBPW // P_13 toss dstlen // PROT_EXEC - ldr arg2,[sp],#NBPW // P_12 length - ldr arg1,[sp],#NBPW // P_11 addr - ldr rbp,[sp],#NBPW // P_10 new f_exp + ldr arg2,[sp],#NBPW // P_12 length + ldr arg1,[sp],#NBPW // P_11 addr + ldr r_EXP,[sp],#NBPW // P_10 new f_exp mov arg3,#PROT_READ|PROT_EXEC do_sys __NR_mprotect diff --git a/src/stub/src/arm64-darwin.macho-entry.S b/src/stub/src/arm64-darwin.macho-entry.S index 35e07185..154ea47e 100644 --- a/src/stub/src/arm64-darwin.macho-entry.S +++ b/src/stub/src/arm64-darwin.macho-entry.S @@ -29,6 +29,17 @@ * */ +#define SIMULATE_ON_DEBIAN_EABI4 1 +//#undef SIMULATE_ON_DEBIAN_EABI4 + +#ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/ + #define LINUX_ARM_CACHEFLUSH 1 /* SIMULATE_ON_DEBIAN_EABI4 */ + #define ARMEL_EABI4 1 /* SIMULATE_ON_DEBIAN_EABI4 */ +#else /*}{ USUAL case */ + #define DARWIN_ARM_CACHEFLUSH 1 + #define ARMEL_DARWIN 1 +#endif /*}*/ + NBPW= 8 #include "arch/arm64/v8/macros.S" @@ -46,6 +57,7 @@ PROT_EXEC= 4 MAP_PRIVATE= 2 MAP_FIXED= 0x10 MAP_ANONYMOUS= 0x20 +FD_ANON= -1 PAGE_SHIFT= 12 PAGE_SIZE = -(~0< next apple[] cbnz w3,L40 // not entire prefix +#ifdef SIMULATE_ON_DEBIAN_EABI4 //{ + mov arg3,#0 // O_RDONLY + mov arg2,arg1 + mov arg1w,#FD_CWD + do_sys __NR_openat +#else //}{ mov arg2,#0 // O_RDONLY do_sys __NR_open - str x5,[sp,#-5*NBPW]! // fd,%ADRU,%LENU,%entry,%&Mach_header +#endif //} + str x0,[sp,#-6*NBPW]! // fd,%ADRU,%LENU,%entry,%&Mach_header,HOLE adr x1,-2*4 + _start diff --git a/src/stub/src/arm64-darwin.macho-fold.S b/src/stub/src/arm64-darwin.macho-fold.S index f526ed69..5e7c14ca 100644 --- a/src/stub/src/arm64-darwin.macho-fold.S +++ b/src/stub/src/arm64-darwin.macho-fold.S @@ -27,8 +27,8 @@ // // -//#define SIMULATE_ON_DEBIAN_EABI4 1 -#undef SIMULATE_ON_DEBIAN_EABI4 +#define SIMULATE_ON_DEBIAN_EABI4 1 +//#undef SIMULATE_ON_DEBIAN_EABI4 #ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/ #define LINUX_ARM_CACHEFLUSH 1 /* SIMULATE_ON_DEBIAN_EABI4 */ @@ -38,8 +38,17 @@ #define ARMEL_DARWIN 1 #endif /*}*/ +NBPW= 8 #include "arch/arm64/v8/macros.S" +arg1 .req x0 +arg2 .req x1 +arg3 .req x2 +arg4 .req x3; arg4w .req w3 +arg5 .req x4 +arg6 .req x5 +arg7 .req x6 + sz_l_info = 12 sz_p_info = 12 sz_b_info = 12 @@ -54,40 +63,48 @@ _start: .globl _start // ignored, but silence "cannot find entry symbol _start" fold_begin: /* In: - x11= &sz_pack2; follows compressed program {l_info; p_info; b_info; data...} - x4= f_decompress - sp/ junk1,junk2,{30 original regs (omit sp,lr)},junk3,original_stack... + rsp/ fd,ADRU,LENU,%entry,&Mach_header,HOLE + x20=r_ADRX= ADRX = &l_info + x21=r_LENX= LENX + x28=r_EXP= f_exp */ +r_OSTK .req x19 +r_ADRX .req x20 +r_LENX .req x21 +r_EXP .req x28 + #define t0w w9 /* scratch value */ - ldr x1,[x11] // sz_pack2 - add x7,sp,#8*(2+(32-2)) // &junk3; will become &mhdrp - sub x0,x11,x1,uxtw // &{l_info; p_info; b_info} - ldr w3,[x0,#sz_unc + sz_l_info + sz_p_info] // sz_unc of Mach_header + mov arg1,r_ADRX // &{l_info; p_info; b_info} + mov arg2,r_LENX + ldr arg4w,[arg1,#sz_unc + sz_l_info + sz_p_info] // sz_unc of Mach_header mov t0w,#(1<<13) - cmp w3,t0w - csel w3,w3,t0w,hi // at least 8KiB - sub sp,sp,w3,uxtw // alloca - mov x2,sp // Mach_header *tmp - adr x5,f_unfilter - bl upx_main // (x0=l_info *, w1=sz_compressed, x2=Mach_header *tmp, - // w3=sz_mhdr, x4=f_decompress, x5=f_unfilter, x6= &Mach_header *) - ldr lr,[x0,#30*8] // entry: ((Mach_ARM_thread_state const *)dyld)->pc - ldp x28,x29,[sp,#8*28] - ldp x26,x27,[sp,#8*26] - ldp x24,x25,[sp,#8*24] - ldp x22,x23,[sp,#8*22] - ldp x20,x21,[sp,#8*20] - ldp x18,x19,[sp,#8*18] - ldp x16,x17,[sp,#8*16] - ldp x14,x15,[sp,#8*14] - ldp x12,x13,[sp,#8*12] - ldp x10,x11,[sp,#8*10] - ldp x8,x9,[sp,#8*8] - ldp x6,x7,[sp,#8*6] - ldp x4,x5,[sp,#8*4] - ldp x2,x3,[sp,#8*2] - ldp x0,x1,[sp],#8*30 - br lr + cmp arg4w,t0w + csel arg4w,arg4w,t0w,hi // at least 8KiB + add arg4w,arg4w,# 0xf + and arg4w,arg4w,#~0xf // 16-byte align for stack pointer + add arg7,sp,#4*NBPW + mov r_OSTK,sp // where to un-alloca + sub sp,sp,arg4w,uxtw // alloca + mov arg3,sp // Mach_header *tmp + mov arg5,r_EXP + adr arg6,f_unfilter +// upx_main(x0=&l_info, w1=len_cpr, x2=temp[sz_mhdr], w3=sz_mhdr, x4=f_exp, x5=f_unf, x6=mhdr **) + bl upx_main // OUT: x0= &Mach_thread_state of dyld; will be in temp mhdr[] + +ARM64_ts_pc= 32*NBPW + ldr r_ADRX,[x0,#ARM64_ts_pc] // dyld.entry + ldr r_EXP, [x0,#0] // &hatch + mov sp,r_OSTK // un-alloca + + ldr w0,[sp,#0*NBPW] // fd + bl close + + ldr x0,[sp,#1*NBPW] // ADRU + ldr w1,[sp,#2*NBPW] // LENU + mov w8,#__NR_munmap + mov lr,r_ADRX // dyld.entry + add sp,sp,#4*NBPW // leave &Mach_header,HOLE + br r_EXP // goto hatch: syscall.munmap(ADRU,LENU); ret f_unfilter: // (char *ptr, uint len, uint cto, uint fid) ptr .req x0 @@ -146,10 +163,15 @@ __NR_mprotect = 74 __NR_pread = 153 #ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/ -__NR_mmap = 192 // mmap2 -__NR_munmap = 91 -__NR_mprotect = 125 -__NR_pread = 180 +__NR_close = 0x39 // 57 +__NR_exit = 0x5d // 93 +__NR_mmap = 0xde // 222 __GI___mmap64 +__NR_mprotect = 0xe2 // 226 +__NR_munmap = 0xd7 // 215 +__NR_openat = 0x38 // 56 +__NR_pread = 0x43 // 67 +__NR_read = 0x3f // 63 +__NR_write = 0x40 // 64 #endif /*}*/ .globl exit @@ -166,6 +188,7 @@ write: .globl open open: + brk #0 do_sys __NR_open; ret .globl close diff --git a/src/stub/src/arm64-darwin.macho-main.c b/src/stub/src/arm64-darwin.macho-main.c index 7c3890de..2d64362d 100644 --- a/src/stub/src/arm64-darwin.macho-main.c +++ b/src/stub/src/arm64-darwin.macho-main.c @@ -1,465 +1 @@ -/* arm64-darwin.macho-main.c -- loader stub for Mach-o - - This file is part of the UPX executable compressor. - - Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer - Copyright (C) 1996-2017 Laszlo Molnar - Copyright (C) 2000-2017 John F. Reiser - All Rights Reserved. - - UPX and the UCL library are free software; you can redistribute them - and/or modify them under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING. - If not, write to the Free Software Foundation, Inc., - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - - Markus F.X.J. Oberhumer Laszlo Molnar - - - John F. Reiser - - */ - - -//#define SIMULATE_ON_DEBIAN_EABI4 1 -#undef SIMULATE_ON_DEBIAN_EABI4 - -#define __WORDSIZE 64 -#include "include/darwin.h" - - -/************************************************************************* -// configuration section -**************************************************************************/ - -// In order to make it much easier to move this code at runtime and execute -// it at an address different from it load address: there must be no -// static data, and no string constants. - - -/************************************************************************* -// "file" util -**************************************************************************/ - -typedef struct { - size_t size; // must be first to match size[0] uncompressed size - void *buf; -} Extent; - - -static void -xread(Extent *x, void *buf, size_t count) -{ - unsigned char *p=x->buf, *q=buf; - size_t j; - if (x->size < count) { - exit(127); - } - for (j = count; 0!=j--; ++p, ++q) { - *q = *p; - } - x->buf += count; - x->size -= count; -} - - -/************************************************************************* -// util -**************************************************************************/ - -#if 1 //{ save space -#define ERR_LAB error: exit(127); -#define err_exit(a) goto error -#else //}{ save debugging time -#define ERR_LAB /*empty*/ -static void -err_exit(int a) -{ - (void)a; // debugging convenience - exit(127); -} -#endif //} - - -/************************************************************************* -// UPX & NRV stuff -**************************************************************************/ - -struct l_info { // 12-byte trailer for loader (after macho headers) - unsigned l_checksum; - unsigned l_magic; // UPX_MAGIC_LE32 - unsigned short l_lsize; - unsigned char l_version; - unsigned char l_format; -}; -struct p_info { // 12-byte packed program header - unsigned p_progid; - unsigned p_filesize; - unsigned p_blocksize; -}; - -struct b_info { // 12-byte header before each compressed block - unsigned sz_unc; // uncompressed_size - unsigned sz_cpr; // compressed_size - unsigned char b_method; // compression algorithm - unsigned char b_ftid; // filter id - unsigned char b_cto8; // filter parameter - unsigned char b_unused; -}; - -typedef void f_unfilter( - nrv_byte *, // also addvalue - nrv_uint, - unsigned cto8, // junk in high 24 bits - unsigned ftid -); -typedef int f_expand( - const nrv_byte *, nrv_uint, - nrv_byte *, nrv_uint *, unsigned ); - -static void -unpackExtent( - Extent *const xi, // input - Extent *const xo, // output - f_expand *const f_decompress, - f_unfilter *f_unf -) -{ - while (xo->size) { - struct b_info h; - // Note: if h.sz_unc == h.sz_cpr then the block was not - // compressible and is stored in its uncompressed form. - - // Read and check block sizes. - xread(xi, (unsigned char *)&h, sizeof(h)); - if (h.sz_unc == 0) { // uncompressed size 0 -> EOF - if (h.sz_cpr != UPX_MAGIC_LE32) // h.sz_cpr must be h->magic - err_exit(2); - if (xi->size != 0) // all bytes must be written - err_exit(3); - break; - } - if (h.sz_cpr <= 0) { - err_exit(4); -ERR_LAB - } - if (h.sz_cpr > h.sz_unc - || h.sz_unc > xo->size ) { - err_exit(5); - } - // Now we have: - // assert(h.sz_cpr <= h.sz_unc); - // assert(h.sz_unc > 0 && h.sz_unc <= blocksize); - // assert(h.sz_cpr > 0 && h.sz_cpr <= blocksize); - - if (h.sz_cpr < h.sz_unc) { // Decompress block - nrv_uint out_len = h.sz_unc; // EOF for lzma - int const j = (*f_decompress)(xi->buf, h.sz_cpr, - xo->buf, &out_len, h.b_method); - if (j != 0 || out_len != (nrv_uint)h.sz_unc) - err_exit(7); - if (h.b_ftid!=0 && f_unf) { // have filter - (*f_unf)(xo->buf, out_len, h.b_cto8, h.b_ftid); - } - xi->buf += h.sz_cpr; - xi->size -= h.sz_cpr; - } - else { // copy literal block - xread(xi, xo->buf, h.sz_cpr); - } - xo->buf += h.sz_unc; - xo->size -= h.sz_unc; - } -} - -static void -upx_bzero(unsigned char *p, size_t len) -{ - if (len) do { - *p++= 0; - } while (--len); -} -#define bzero upx_bzero - - -// The PF_* and PROT_* bits are {1,2,4}; the conversion table fits in 32 bits. -#define REP8(x) \ - ((x)|((x)<<4)|((x)<<8)|((x)<<12)|((x)<<16)|((x)<<20)|((x)<<24)|((x)<<28)) -#define EXP8(y) \ - ((1&(y)) ? 0xf0f0f0f0 : (2&(y)) ? 0xff00ff00 : (4&(y)) ? 0xffff0000 : 0) -#define PF_TO_PROT(pf) \ - ((PROT_READ|PROT_WRITE|PROT_EXEC) & ( \ - ( (REP8(PROT_EXEC ) & EXP8(PF_X)) \ - |(REP8(PROT_READ ) & EXP8(PF_R)) \ - |(REP8(PROT_WRITE) & EXP8(PF_W)) \ - ) >> ((pf & (PF_R|PF_W|PF_X))<<2) )) - -typedef struct { - unsigned magic; - unsigned nfat_arch; -} Fat_header; -typedef struct { - unsigned cputype; - unsigned cpusubtype; - unsigned offset; - unsigned size; - unsigned align; /* shift count (log base 2) */ -} Fat_arch; - enum e8 { - FAT_MAGIC = 0xcafebabe - }; - enum e9 { - CPU_TYPE_I386 = 7, - CPU_TYPE_ARM = 12, - CPU_TYPE_POWERPC = 0x00000012, - CPU_TYPE_POWERPC64 = 0x01000012 - }; - -typedef struct { - unsigned magic; - unsigned cputype; - unsigned cpysubtype; - unsigned filetype; - unsigned ncmds; - unsigned sizeofcmds; - unsigned flags; -} Mach_header; - enum e0 { - MH_MAGIC = 0xfeedface - }; - enum e2 { - MH_EXECUTE = 2 - }; - enum e3 { - MH_NOUNDEFS = 1 - }; - -typedef struct { - unsigned cmd; - unsigned cmdsize; -} Mach_load_command; - enum e4 { - LC_SEGMENT = 0x1, - LC_SEGMENT_64 = 0x19, - LC_THREAD = 0x4, - LC_UNIXTHREAD = 0x5, - LC_LOAD_DYLINKER = 0xe - }; - -typedef struct { - unsigned cmd; - unsigned cmdsize; - char segname[16]; - unsigned long vmaddr; - unsigned long vmsize; - unsigned long fileoff; - unsigned long filesize; - unsigned maxprot; - unsigned initprot; - unsigned nsects; - unsigned flags; -} Mach_segment_command; - enum e5 { - VM_PROT_READ = 1, - VM_PROT_WRITE = 2, - VM_PROT_EXECUTE = 4 - }; - -typedef struct { - unsigned long x0, x1, x2, x3; - unsigned long x4, x5, x6, x7; - unsigned long x8, x9, x10, x11; - unsigned long x12, x13, x14, x15; - unsigned long x16, x17, x18, x19; - unsigned long x20, x21, x22, x23; - unsigned long x24, x25, x26, x27; - unsigned long x28, fp, lr, sp; - unsigned long pc; - unsigned int cpsr; -} Mach_ARM_thread_state; - -typedef struct { - unsigned cmd; /* LC_THREAD or LC_UNIXTHREAD */ - unsigned cmdsize; /* total size of this command */ - unsigned flavor; - unsigned count; /* sizeof(following_thread_state)/4 */ - Mach_ARM_thread_state state; -} Mach_thread_command; - enum e6 { - ARM_THREAD_STATE = 1 - }; - enum e7 { - ARM_THREAD_STATE_COUNT = sizeof(Mach_ARM_thread_state)/4 - }; - -typedef union { - unsigned long offset; /* from start of load command to string */ - char *ptr; -} Mach_lc_str; - -#define MAP_FIXED 0x10 -#define MAP_PRIVATE 0x02 -#define MAP_ANON 0x1000 -//#define MAP_ANON 0x20 // x86 DEBUG ONLY -#define PROT_READ 1 -#define PROT_WRITE 2 -#define PROT_EXEC 4 - -#define MAP_ANON_FD -1 - -extern void *mmap(void *, size_t, unsigned, unsigned, int, off_t_upx_stub); -ssize_t pread(int, void *, size_t, off_t_upx_stub); -extern void bswap(void *, unsigned); - -static Mach_ARM_thread_state const * -do_xmap( - Mach_header const *const mhdr, - off_t_upx_stub const fat_offset, - Extent *const xi, - int const fdi, - Mach_header **mhdrpp, - f_expand *const f_decompress, - f_unfilter *const f_unf -) -{ - Mach_segment_command const *sc = (Mach_segment_command const *)(1+ mhdr); - Mach_ARM_thread_state const *entry = 0; - unsigned j; - - for ( j=0; j < mhdr->ncmds; ++j, - (sc = (Mach_segment_command const *)(sc->cmdsize + (void const *)sc)) - ) if (LC_SEGMENT_64==sc->cmd && sc->vmsize!=0) { - Extent xo; - size_t mlen = xo.size = sc->filesize; - unsigned char *addr = xo.buf = (unsigned char *)sc->vmaddr; - unsigned char *haddr = sc->vmsize + addr; - size_t frag = (size_t)addr &~ PAGE_MASK; - addr -= frag; - mlen += frag; - - if (0!=mlen && addr != mmap(addr, mlen, VM_PROT_READ | VM_PROT_WRITE, - MAP_FIXED | MAP_PRIVATE | - ((xi || 0==sc->filesize) ? MAP_ANON : 0), - ((0==sc->filesize) ? MAP_ANON_FD : fdi), sc->fileoff + fat_offset) ) { - err_exit(8); - } - if (xi && 0!=sc->filesize) { - if (0==sc->fileoff /*&& 0!=mhdrpp*/) { - *mhdrpp = (Mach_header *)(void *)addr; - } - unpackExtent(xi, &xo, f_decompress, f_unf); - } - /*bzero(addr, frag);*/ // fragment at lo end - frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary - bzero(mlen+addr, frag); // fragment at hi end - if (0!=mlen && 0!=mprotect(addr, mlen, sc->initprot)) { - err_exit(10); -ERR_LAB - } - addr += mlen + frag; /* page boundary on hi end */ - if ( -#if defined(SIMULATE_ON_DEBIAN_EABI4) /*{*/ - 0!=addr && -#endif /*}*/ - addr < haddr) { // need pages for .bss - if (addr != mmap(addr, haddr - addr, sc->initprot, - MAP_FIXED | MAP_PRIVATE | MAP_ANON, MAP_ANON_FD, 0 ) ) { - err_exit(9); - } - } - } - else if (LC_UNIXTHREAD==sc->cmd || LC_THREAD==sc->cmd) { - Mach_thread_command const *const thrc = (Mach_thread_command const *)sc; - if (ARM_THREAD_STATE ==thrc->flavor - && ARM_THREAD_STATE_COUNT==thrc->count ) { - entry = &thrc->state; - } - } - return entry; -} - - -extern void spin(void *, ...); - -/************************************************************************* -// upx_main - called by our entry code -// -**************************************************************************/ - -Mach_ARM_thread_state const * -upx_main( - struct l_info const *const li, - size_t volatile sz_compressed, // total length - Mach_header *const mhdr, // temp char[sz_mhdr] for decompressing - size_t const sz_mhdr, - f_expand *const f_decompress, - f_unfilter *const f_unf, - Mach_header **const mhdrpp // Out: *mhdrpp= &real Mach_header -) -{ - Mach_ARM_thread_state const *entry; - off_t_upx_stub fat_offset = 0; - Extent xi, xo, xi0; - xi.buf = CONST_CAST(unsigned char *, 1+ (struct p_info const *)(1+ li)); // &b_info - xi.size = sz_compressed - (sizeof(struct l_info) + sizeof(struct p_info)); - xo.buf = (unsigned char *)mhdr; - xo.size = ((struct b_info const *)(void const *)xi.buf)->sz_unc; - xi0 = xi; - - // Uncompress Macho headers - unpackExtent(&xi, &xo, f_decompress, 0); // never filtered? - - entry = do_xmap(mhdr, fat_offset, &xi0, MAP_ANON_FD, mhdrpp, f_decompress, f_unf); - - { // Map dyld dynamic loader - Mach_load_command const *lc = (Mach_load_command const *)(1+ mhdr); - unsigned j; - - for (j=0; j < mhdr->ncmds; ++j, - (lc = (Mach_load_command const *)(lc->cmdsize + (void const *)lc)) - ) if (LC_LOAD_DYLINKER==lc->cmd) { - char const *const dyld_name = ((Mach_lc_str const *)(1+ lc))->offset + - (char const *)lc; - int const fdi = open(dyld_name, O_RDONLY, 0); - if (0 > fdi) { - err_exit(18); - } -fat: - if ((ssize_t)sz_mhdr!=pread(fdi, (void *)mhdr, sz_mhdr, fat_offset)) { -ERR_LAB - err_exit(19); - } - switch (mhdr->magic) { - case MH_MAGIC: break; - case FAT_MAGIC: { - // stupid Apple: waste code and a page fault on EVERY execve - Fat_header *const fh = (Fat_header *)mhdr; - Fat_arch *fa = (Fat_arch *)(1+ fh); - bswap(fh, sizeof(*fh) + (fh->nfat_arch>>24)*sizeof(*fa)); - for (j= 0; j < fh->nfat_arch; ++j, ++fa) { - if (CPU_TYPE_ARM==fa->cputype) { - fat_offset= fa->offset; - goto fat; - } - } - } break; - } // switch - entry = do_xmap(mhdr, fat_offset, 0, fdi, 0, 0, 0); - close(fdi); - break; - } - } - - return entry; -} - -/* vim:set ts=4 sw=4 et: */ +#include "amd64-darwin.macho-main.c" diff --git a/src/stub/tmp/amd64-darwin.macho-fold.map b/src/stub/tmp/amd64-darwin.macho-fold.map index a6283c0f..1653f484 100644 --- a/src/stub/tmp/amd64-darwin.macho-fold.map +++ b/src/stub/tmp/amd64-darwin.macho-fold.map @@ -72,7 +72,7 @@ LOAD tmp/amd64-darwin.macho-main.o .plt *(.plt) -.text 0x0000000008048000 0x6e0 +.text 0x0000000008048000 0xe32 *(.text .stub .text.* .gnu.linkonce.t.*) .text 0x0000000008048000 0x157 tmp/amd64-darwin.macho-fold.o 0x00000000080480b8 munmap @@ -87,17 +87,17 @@ LOAD tmp/amd64-darwin.macho-main.o 0x00000000080480b4 mprotect 0x00000000080480c0 close *fill* 0x0000000008048157 0x1 90909090 - .text 0x0000000008048158 0x588 tmp/amd64-darwin.macho-main.o - 0x0000000008048294 do_xmap - 0x0000000008048558 upx_main + .text 0x0000000008048158 0xcda tmp/amd64-darwin.macho-main.o + 0x000000000804875f do_xmap + 0x0000000008048be3 upx_main *(.text.*personality*) *(.gnu.warning) .fini *(.fini) - 0x00000000080486e0 PROVIDE (__etext, .) - 0x00000000080486e0 PROVIDE (_etext, .) - 0x00000000080486e0 PROVIDE (etext, .) + 0x0000000008048e32 PROVIDE (__etext, .) + 0x0000000008048e32 PROVIDE (_etext, .) + 0x0000000008048e32 PROVIDE (etext, .) .rodata *(.rodata .rodata.* .gnu.linkonce.r.*) @@ -113,8 +113,8 @@ LOAD tmp/amd64-darwin.macho-main.o .gcc_except_table *(.gcc_except_table .gcc_except_table.*) - 0x00000000080486e0 . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff)) - 0x00000000080496e0 . = (0x1000 DATA_SEGMENT_ALIGN 0x1000) + 0x0000000008048e32 . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff)) + 0x0000000008049e32 . = (0x1000 DATA_SEGMENT_ALIGN 0x1000) .eh_frame *(.eh_frame) @@ -129,22 +129,22 @@ LOAD tmp/amd64-darwin.macho-main.o *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) -.preinit_array 0x00000000080496e0 0x0 - 0x00000000080496e0 PROVIDE (__preinit_array_start, .) +.preinit_array 0x0000000008049e32 0x0 + 0x0000000008049e32 PROVIDE (__preinit_array_start, .) *(.preinit_array) - 0x00000000080496e0 PROVIDE (__preinit_array_end, .) + 0x0000000008049e32 PROVIDE (__preinit_array_end, .) -.init_array 0x00000000080496e0 0x0 - 0x00000000080496e0 PROVIDE (__init_array_start, .) +.init_array 0x0000000008049e32 0x0 + 0x0000000008049e32 PROVIDE (__init_array_start, .) *(SORT(.init_array.*)) *(.init_array) - 0x00000000080496e0 PROVIDE (__init_array_end, .) + 0x0000000008049e32 PROVIDE (__init_array_end, .) -.fini_array 0x00000000080496e0 0x0 - 0x00000000080496e0 PROVIDE (__fini_array_start, .) +.fini_array 0x0000000008049e32 0x0 + 0x0000000008049e32 PROVIDE (__fini_array_start, .) *(.fini_array) *(SORT(.fini_array.*)) - 0x00000000080496e0 PROVIDE (__fini_array_end, .) + 0x0000000008049e32 PROVIDE (__fini_array_end, .) .ctors *crtbegin*.o(.ctors) @@ -170,35 +170,35 @@ LOAD tmp/amd64-darwin.macho-main.o .got *(.got) - 0x00000000080496e0 . = (. DATA_SEGMENT_RELRO_END 0xc) + 0x0000000008049e32 . = (. DATA_SEGMENT_RELRO_END 0xc) .got.plt *(.got.plt) -.data 0x00000000080496e0 0x0 +.data 0x0000000008049e34 0x0 *(.data .data.* .gnu.linkonce.d.*) - .data 0x00000000080496e0 0x0 tmp/amd64-darwin.macho-fold.o - .data 0x00000000080496e0 0x0 tmp/amd64-darwin.macho-main.o + .data 0x0000000008049e34 0x0 tmp/amd64-darwin.macho-fold.o + .data 0x0000000008049e34 0x0 tmp/amd64-darwin.macho-main.o *(.gnu.linkonce.d.*personality*) .data1 *(.data1) - 0x00000000080496e0 _edata = . - 0x00000000080496e0 PROVIDE (edata, .) - 0x00000000080496e0 __bss_start = . + 0x0000000008049e34 _edata = . + 0x0000000008049e34 PROVIDE (edata, .) + 0x0000000008049e34 __bss_start = . -.bss 0x00000000080496e0 0x0 +.bss 0x0000000008049e34 0x0 *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) - .bss 0x00000000080496e0 0x0 tmp/amd64-darwin.macho-fold.o - .bss 0x00000000080496e0 0x0 tmp/amd64-darwin.macho-main.o + .bss 0x0000000008049e34 0x0 tmp/amd64-darwin.macho-fold.o + .bss 0x0000000008049e34 0x0 tmp/amd64-darwin.macho-main.o *(COMMON) - 0x00000000080496e0 . = ALIGN ((. != 0x0)?0x4:0x1) - 0x00000000080496e0 . = ALIGN (0x4) - 0x00000000080496e0 . = ALIGN (0x4) - 0x00000000080496e0 _end = . - 0x00000000080496e0 PROVIDE (end, .) - 0x00000000080496e0 . = DATA_SEGMENT_END (.) + 0x0000000008049e34 . = ALIGN ((. != 0x0)?0x4:0x1) + 0x0000000008049e34 . = ALIGN (0x4) + 0x0000000008049e34 . = ALIGN (0x4) + 0x0000000008049e34 _end = . + 0x0000000008049e34 PROVIDE (end, .) + 0x0000000008049e34 . = DATA_SEGMENT_END (.) .stab *(.stab) diff --git a/src/stub/tmp/arm64-darwin.macho-entry.bin.dump b/src/stub/tmp/arm64-darwin.macho-entry.bin.dump index ed4c3420..dc010098 100644 --- a/src/stub/tmp/arm64-darwin.macho-entry.bin.dump +++ b/src/stub/tmp/arm64-darwin.macho-entry.bin.dump @@ -2,18 +2,18 @@ file format elf64-littleaarch64 Sections: Idx Name Size VMA LMA File off Algn Flags - 0 MACHMAINX 00000044 0000000000000000 0000000000000000 00000040 2**0 CONTENTS, RELOC, READONLY - 1 NRV_HEAD 00000000 0000000000000000 0000000000000000 00000084 2**0 CONTENTS, READONLY - 2 NRV2E 00000128 0000000000000000 0000000000000000 00000084 2**0 CONTENTS, READONLY - 3 NRV2D 0000011c 0000000000000000 0000000000000000 000001ac 2**0 CONTENTS, READONLY - 4 NRV2B 000000f0 0000000000000000 0000000000000000 000002c8 2**0 CONTENTS, READONLY - 5 NRV_TAIL 00000000 0000000000000000 0000000000000000 000003b8 2**0 CONTENTS, READONLY - 6 LZMA_ELF00 000000d0 0000000000000000 0000000000000000 000003b8 2**0 CONTENTS, RELOC, READONLY - 7 LZMA_DEC20 00000968 0000000000000000 0000000000000000 00000488 2**0 CONTENTS, READONLY - 8 LZMA_DEC10 0000049c 0000000000000000 0000000000000000 00000df0 2**0 CONTENTS, READONLY - 9 LZMA_DEC30 00000000 0000000000000000 0000000000000000 0000128c 2**0 CONTENTS, READONLY - 10 MACHMAINY 00000000 0000000000000000 0000000000000000 0000128c 2**0 CONTENTS, READONLY - 11 MACHMAINZ 00000160 0000000000000000 0000000000000000 0000128c 2**0 CONTENTS, RELOC, READONLY + 0 MACHMAINX 00000008 0000000000000000 0000000000000000 00000040 2**0 CONTENTS, RELOC, READONLY + 1 NRV_HEAD 00000000 0000000000000000 0000000000000000 00000048 2**0 CONTENTS, READONLY + 2 NRV2E 00000128 0000000000000000 0000000000000000 00000048 2**0 CONTENTS, READONLY + 3 NRV2D 0000011c 0000000000000000 0000000000000000 00000170 2**0 CONTENTS, READONLY + 4 NRV2B 000000f0 0000000000000000 0000000000000000 0000028c 2**0 CONTENTS, READONLY + 5 NRV_TAIL 00000000 0000000000000000 0000000000000000 0000037c 2**0 CONTENTS, READONLY + 6 LZMA_ELF00 000000d0 0000000000000000 0000000000000000 0000037c 2**0 CONTENTS, RELOC, READONLY + 7 LZMA_DEC20 00000968 0000000000000000 0000000000000000 0000044c 2**0 CONTENTS, READONLY + 8 LZMA_DEC10 0000049c 0000000000000000 0000000000000000 00000db4 2**0 CONTENTS, READONLY + 9 LZMA_DEC30 00000000 0000000000000000 0000000000000000 00001250 2**0 CONTENTS, READONLY + 10 MACHMAINY 00000000 0000000000000000 0000000000000000 00001250 2**0 CONTENTS, READONLY + 11 MACHMAINZ 00000158 0000000000000000 0000000000000000 00001250 2**0 CONTENTS, RELOC, READONLY SYMBOL TABLE: 0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30 0000000000000000 l d MACHMAINZ 0000000000000000 MACHMAINZ @@ -36,7 +36,7 @@ SYMBOL TABLE: RELOCATION RECORDS FOR [MACHMAINX]: OFFSET TYPE VALUE -0000000000000040 R_AARCH64_CALL26 MACHMAINZ+0x00000000000000e8 +0000000000000004 R_AARCH64_CALL26 MACHMAINZ+0x00000000000000dc RELOCATION RECORDS FOR [LZMA_ELF00]: OFFSET TYPE VALUE @@ -44,4 +44,4 @@ OFFSET TYPE VALUE RELOCATION RECORDS FOR [MACHMAINZ]: OFFSET TYPE VALUE -0000000000000138 R_AARCH64_ADR_PREL_LO21 _start-0x0000000000000008 +0000000000000130 R_AARCH64_ADR_PREL_LO21 _start-0x0000000000000008 diff --git a/src/stub/tmp/arm64-darwin.macho-fold.map b/src/stub/tmp/arm64-darwin.macho-fold.map index 54be1596..b547852a 100644 --- a/src/stub/tmp/arm64-darwin.macho-fold.map +++ b/src/stub/tmp/arm64-darwin.macho-fold.map @@ -67,35 +67,36 @@ LOAD tmp/arm64-darwin.macho-main.o *(.iplt) .iplt 0x0000000000400080 0x0 tmp/arm64-darwin.macho-fold.o -.text 0x0000000000400078 0x680 +.text 0x0000000000400078 0xf6c *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) *(.text.hot .text.hot.*) *(.text .stub .text.* .gnu.linkonce.t.*) - .text 0x0000000000400078 0x160 tmp/arm64-darwin.macho-fold.o + .text 0x0000000000400078 0x15c tmp/arm64-darwin.macho-fold.o 0x0000000000400078 _start - 0x0000000000400134 spin - 0x0000000000400138 exit - 0x0000000000400140 read - 0x000000000040014c write - 0x0000000000400158 open - 0x0000000000400164 close - 0x0000000000400170 brk - 0x000000000040017c munmap - 0x0000000000400188 mprotect - 0x0000000000400194 mmap - 0x00000000004001a0 pread - 0x00000000004001ac bswap - .text 0x00000000004001d8 0x520 tmp/arm64-darwin.macho-main.o - 0x0000000000400550 upx_main + 0x000000000040012c spin + 0x0000000000400130 exit + 0x0000000000400138 read + 0x0000000000400144 write + 0x0000000000400150 open + 0x0000000000400160 close + 0x000000000040016c brk + 0x0000000000400178 munmap + 0x0000000000400184 mprotect + 0x0000000000400190 mmap + 0x000000000040019c pread + 0x00000000004001a8 bswap + .text 0x00000000004001d4 0xe10 tmp/arm64-darwin.macho-main.o + 0x000000000040089c do_xmap + 0x0000000000400d4c upx_main *(.gnu.warning) .fini *(SORT(.fini)) - 0x00000000004006f8 PROVIDE (__etext, .) - 0x00000000004006f8 PROVIDE (_etext, .) - 0x00000000004006f8 PROVIDE (etext, .) + 0x0000000000400fe4 PROVIDE (__etext, .) + 0x0000000000400fe4 PROVIDE (_etext, .) + 0x0000000000400fe4 PROVIDE (etext, .) .rodata *(.rodata .rodata.* .gnu.linkonce.r.*) @@ -106,18 +107,18 @@ LOAD tmp/arm64-darwin.macho-main.o .eh_frame_hdr *(.eh_frame_hdr) -.eh_frame 0x00000000004006f8 0x100 +.eh_frame 0x0000000000400fe8 0x1b8 *(.eh_frame) - .eh_frame 0x00000000004006f8 0x100 tmp/arm64-darwin.macho-main.o - 0xf8 (size before relaxing) + .eh_frame 0x0000000000400fe8 0x1b8 tmp/arm64-darwin.macho-main.o + 0x1a8 (size before relaxing) .gcc_except_table *(.gcc_except_table .gcc_except_table.*) .exception_ranges *(.exception_ranges .exception_ranges*) - 0x00000000004007f8 . = (ALIGN (0x10000) - ((0x10000 - .) & 0xffff)) - 0x00000000004107f8 . = DATA_SEGMENT_ALIGN (0x10000, 0x1000) + 0x00000000004011a0 . = (ALIGN (0x10000) - ((0x10000 - .) & 0xffff)) + 0x00000000004111a0 . = DATA_SEGMENT_ALIGN (0x10000, 0x1000) .eh_frame *(.eh_frame) @@ -135,22 +136,22 @@ LOAD tmp/arm64-darwin.macho-main.o *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) -.preinit_array 0x00000000004107f8 0x0 - 0x00000000004107f8 PROVIDE (__preinit_array_start, .) +.preinit_array 0x00000000004111a0 0x0 + 0x00000000004111a0 PROVIDE (__preinit_array_start, .) *(.preinit_array) - 0x00000000004107f8 PROVIDE (__preinit_array_end, .) + 0x00000000004111a0 PROVIDE (__preinit_array_end, .) -.init_array 0x00000000004107f8 0x0 - 0x00000000004107f8 PROVIDE (__init_array_start, .) +.init_array 0x00000000004111a0 0x0 + 0x00000000004111a0 PROVIDE (__init_array_start, .) *(SORT(.init_array.*)) *(.init_array) - 0x00000000004107f8 PROVIDE (__init_array_end, .) + 0x00000000004111a0 PROVIDE (__init_array_end, .) -.fini_array 0x00000000004107f8 0x0 - 0x00000000004107f8 PROVIDE (__fini_array_start, .) +.fini_array 0x00000000004111a0 0x0 + 0x00000000004111a0 PROVIDE (__fini_array_start, .) *(SORT(.fini_array.*)) *(.fini_array) - 0x00000000004107f8 PROVIDE (__fini_array_end, .) + 0x00000000004111a0 PROVIDE (__fini_array_end, .) .ctors *crtbegin.o(.ctors) @@ -179,43 +180,43 @@ LOAD tmp/arm64-darwin.macho-main.o .got *(.got) *(.igot) - 0x00000000004107f8 . = DATA_SEGMENT_RELRO_END (., 0x18) + 0x00000000004111a0 . = DATA_SEGMENT_RELRO_END (., 0x18) -.got.plt 0x00000000004107f8 0x0 +.got.plt 0x00000000004111a0 0x0 *(.got.plt) *(.igot.plt) - .igot.plt 0x00000000004107f8 0x0 tmp/arm64-darwin.macho-fold.o + .igot.plt 0x00000000004111a0 0x0 tmp/arm64-darwin.macho-fold.o -.data 0x00000000004107f8 0x0 - 0x00000000004107f8 PROVIDE (__data_start, .) +.data 0x00000000004111a0 0x0 + 0x00000000004111a0 PROVIDE (__data_start, .) *(.data .data.* .gnu.linkonce.d.*) - .data 0x00000000004107f8 0x0 tmp/arm64-darwin.macho-fold.o - .data 0x00000000004107f8 0x0 tmp/arm64-darwin.macho-main.o + .data 0x00000000004111a0 0x0 tmp/arm64-darwin.macho-fold.o + .data 0x00000000004111a0 0x0 tmp/arm64-darwin.macho-main.o .data1 *(.data1) - 0x00000000004107f8 _edata = . - 0x00000000004107f8 PROVIDE (edata, .) - 0x00000000004107f8 . = . - 0x00000000004107f8 __bss_start = . - 0x00000000004107f8 __bss_start__ = . + 0x00000000004111a0 _edata = . + 0x00000000004111a0 PROVIDE (edata, .) + 0x00000000004111a0 . = . + 0x00000000004111a0 __bss_start = . + 0x00000000004111a0 __bss_start__ = . -.bss 0x00000000004107f8 0x0 +.bss 0x00000000004111a0 0x0 *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) - .bss 0x00000000004107f8 0x0 tmp/arm64-darwin.macho-fold.o - .bss 0x00000000004107f8 0x0 tmp/arm64-darwin.macho-main.o + .bss 0x00000000004111a0 0x0 tmp/arm64-darwin.macho-fold.o + .bss 0x00000000004111a0 0x0 tmp/arm64-darwin.macho-main.o *(COMMON) - 0x00000000004107f8 . = ALIGN ((. != 0x0)?0x8:0x1) - 0x00000000004107f8 _bss_end__ = . - 0x00000000004107f8 __bss_end__ = . - 0x00000000004107f8 . = ALIGN (0x8) - 0x00000000004107f8 . = SEGMENT_START ("ldata-segment", .) - 0x00000000004107f8 . = ALIGN (0x8) - 0x00000000004107f8 __end__ = . - 0x00000000004107f8 _end = . - 0x00000000004107f8 PROVIDE (end, .) - 0x00000000004107f8 . = DATA_SEGMENT_END (.) + 0x00000000004111a0 . = ALIGN ((. != 0x0)?0x8:0x1) + 0x00000000004111a0 _bss_end__ = . + 0x00000000004111a0 __bss_end__ = . + 0x00000000004111a0 . = ALIGN (0x8) + 0x00000000004111a0 . = SEGMENT_START ("ldata-segment", .) + 0x00000000004111a0 . = ALIGN (0x8) + 0x00000000004111a0 __end__ = . + 0x00000000004111a0 _end = . + 0x00000000004111a0 PROVIDE (end, .) + 0x00000000004111a0 . = DATA_SEGMENT_END (.) .stab *(.stab)