diff --git a/src/p_mach.cpp b/src/p_mach.cpp index 0f58a4e9..9d6fdd6f 100644 --- a/src/p_mach.cpp +++ b/src/p_mach.cpp @@ -517,19 +517,18 @@ PackMachBase::compare_segment_command(void const *const aa, void const *const if (xa < xb) return -1; // LC_SEGMENT first if (xa > xb) return 1; if (0 != xa) return 0; // not LC_SEGMENT - // Beware 0==.vmsize (some MacOSX __DWARF debug info: a "comment") - if (a->vmsize!=0 && b->vmsize!=0) { - if (a->vmaddr < b->vmaddr) return -1; // ascending by .vmaddr - if (a->vmaddr > b->vmaddr) return 1; - } - else { // 0==.vmsize goes last, except ordered by fileoff - if (a->vmsize) return -1; // 'a' is first - if (b->vmsize) return 1; // 'a' is last - if (a->fileoff < b->fileoff) + // Ascending by .fileoff so that find_SEGMENT_gap works + if (a->fileoff < b->fileoff) return -1; - if (a->fileoff > b->fileoff) + if (a->fileoff > b->fileoff) return 1; - } + // Ascending by .vmaddr + if (a->vmaddr < b->vmaddr) return -1; + if (a->vmaddr > b->vmaddr) return 1; + // Descending by .vmsize + if (a->vmsize) return -1; // 'a' is first + if (b->vmsize) return 1; // 'a' is last + // What could remain? return 0; } @@ -1485,7 +1484,7 @@ void PackMachBase::unpack(OutputFile *fo) } } - // Put LC_SEGMENT together at the beginning, ascending by .vmaddr. + // Put LC_SEGMENT together at the beginning qsort(msegcmd, ncmds, sizeof(*msegcmd), compare_segment_command); n_segment = 0; for (unsigned j= 0; j < ncmds; ++j) { @@ -1885,7 +1884,7 @@ bool PackMachBase::canPack() return false; } - // Put LC_SEGMENT together at the beginning, ascending by .vmaddr. + // Put LC_SEGMENT together at the beginning qsort(msegcmd, ncmds, sizeof(*msegcmd), compare_segment_command); if (lc_seg==msegcmd[0].cmd && 0==msegcmd[0].vmaddr @@ -1897,8 +1896,7 @@ bool PackMachBase::canPack() vma_max = 0; for (unsigned j= 0; j < ncmds; ++j) { if (lc_seg==msegcmd[j].cmd) { - if (msegcmd[j].vmsize==0) - break; // was sorted last + ++n_segment; if (~PAGE_MASK & (msegcmd[j].fileoff | msegcmd[j].vmaddr)) { return false; } @@ -1906,12 +1904,7 @@ bool PackMachBase::canPack() if (vma_max < t) { vma_max = t; } - - // We used to check that LC_SEGMENTS were contiguous, - // but apparently that is not needed anymore, - // and Google compilers generate strange layouts. - - ++n_segment; + // Segments need not be contigous {esp. "rust") sz_segment = msegcmd[j].filesize + msegcmd[j].fileoff - msegcmd[0].fileoff; } } diff --git a/src/stub/amd64-darwin.macho-fold.h b/src/stub/amd64-darwin.macho-fold.h index aeb4907f..689276d9 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, 2147 (0x863) bytes + created from amd64-darwin.macho-fold.bin, 2187 (0x88b) bytes This file is part of the UPX executable compressor. @@ -31,11 +31,11 @@ */ -#define STUB_AMD64_DARWIN_MACHO_FOLD_SIZE 2147 -#define STUB_AMD64_DARWIN_MACHO_FOLD_ADLER32 0x5bc87805 -#define STUB_AMD64_DARWIN_MACHO_FOLD_CRC32 0x89ac1ed4 +#define STUB_AMD64_DARWIN_MACHO_FOLD_SIZE 2187 +#define STUB_AMD64_DARWIN_MACHO_FOLD_ADLER32 0xf9ad84de +#define STUB_AMD64_DARWIN_MACHO_FOLD_CRC32 0x2577d36b -unsigned char stub_amd64_darwin_macho_fold[2147] = { +unsigned char stub_amd64_darwin_macho_fold[2187] = { /* 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[2147] = { /* 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, 83, 6, 0, 0, 72,139, 40, 72,139, +/* 0x0070 */ 41,204, 72,137,226, 80,232,123, 6, 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, @@ -90,8 +90,8 @@ unsigned char stub_amd64_darwin_macho_fold[2147] = { /* 0x0330 */ 1, 83, 8, 72, 41,208, 72,133,192, 72,137, 3,233,231,254,255, /* 0x0340 */ 255, 72,131,196, 40, 91, 93, 65, 92, 65, 93,195, 65, 87, 73,137, /* 0x0350 */ 255, 65, 86, 73,137,214, 65, 85, 76,141,111, 32, 65, 84, 73,131, -/* 0x0360 */ 204,255, 85, 83, 49,219, 72,131,236,104, 76,137, 76, 36, 56, 68, -/* 0x0370 */ 139, 79, 12, 72,139,132, 36,160, 0, 0, 0,137,116, 36, 76, 76, +/* 0x0360 */ 204,255, 85, 83, 49,219, 72,131,236,120, 76,137, 76, 36, 56, 68, +/* 0x0370 */ 139, 79, 12, 72,139,132, 36,176, 0, 0, 0,137,116, 36, 76, 76, /* 0x0380 */ 137,238,137, 76, 36, 72, 76,137, 68, 36, 64, 65,131,249, 7, 72, /* 0x0390 */ 199, 68, 36, 40, 0, 0, 0, 0, 72,199, 68, 36, 32, 0, 0, 0, /* 0x03a0 */ 0, 72,137, 68, 36, 48,139, 71, 16,116, 11,246, 71, 26, 32,189, @@ -109,66 +109,68 @@ unsigned char stub_amd64_darwin_macho_fold[2147] = { /* 0x0460 */ 72,137,222,232, 96,252,255,255,169,255, 15, 0, 0, 72,137, 68, /* 0x0470 */ 36, 32,116, 10,191, 6, 0, 0, 0,232,138,253,255,255, 72,139, /* 0x0480 */ 68, 36, 32,199, 68, 36, 20, 0, 0, 0, 0, 76, 41,224, 72,137, -/* 0x0490 */ 68, 36, 24, 49,192, 65, 59, 71, 16, 15,131, 27, 2, 0, 0, 65, -/* 0x04a0 */ 139, 69, 0,131,248, 25, 15,133,209, 1, 0, 0, 73,139, 85, 32, -/* 0x04b0 */ 72,133,210, 15,132,196, 1, 0, 0, 73,139, 69, 48, 72,139,124, -/* 0x04c0 */ 36, 24, 72,137, 68, 36, 80, 73, 3,125, 24, 73,137,196, 72,137, -/* 0x04d0 */ 251, 72,137,253, 72, 1,250,129,227,255, 15, 0, 0, 72,137,124, -/* 0x04e0 */ 36, 88, 72,137, 84, 36, 8, 72, 41,221, 73, 1,220,116,107, 77, -/* 0x04f0 */ 133,246, 76,137,230,116, 7, 73,141,116, 36, 3,235, 10, 72,133, -/* 0x0500 */ 192,185, 18, 0, 0, 0,117, 10, 77,133,246,185, 18, 16, 0, 0, -/* 0x0510 */ 117, 9, 72,133,192,139, 84, 36, 72,117, 3,131,202,255, 68,139, -/* 0x0520 */ 76, 36, 76, 69, 3, 77, 40, 65,137,208, 72,137,239,186, 3, 0, -/* 0x0530 */ 0, 0,232,145,251,255,255, 72, 57,232, 72,137,195,116, 10,191, -/* 0x0540 */ 8, 0, 0, 0,232,191,252,255,255, 72,139, 68, 36, 64, 72,137, -/* 0x0550 */ 221, 72,131, 56, 0,117, 3, 72,137, 24, 77,133,246,116, 45, 73, -/* 0x0560 */ 131,125, 48, 0,116, 38, 73,131,125, 40, 0,117, 8, 72,139, 68, -/* 0x0570 */ 36, 64, 72,137, 40, 72,139, 76, 36, 48, 72,139, 84, 36, 56, 72, -/* 0x0580 */ 141,116, 36, 80, 76,137,247,232,130,252,255,255, 77,133,246, 15, -/* 0x0590 */ 149,194, 49,192, 77,133,228, 15,149,192,133,194,116, 49, 73,131, -/* 0x05a0 */ 125, 40, 0,117, 42, 65,131,125, 64, 0,116, 35, 76,137,232, 76, -/* 0x05b0 */ 41,248, 72,131,224,252,139, 68, 5,120,193,232, 2,255,200, 72, -/* 0x05c0 */ 141, 68,133, 0,199, 0,144, 15, 5,195, 72,137, 68, 36, 40, 76, -/* 0x05d0 */ 137,227, 73,141, 20, 44, 72,247,219,129,227,255, 15, 0, 0, 72, -/* 0x05e0 */ 137,216, 72,133,219,116, 11,198, 2, 0, 72,255,194, 72,255,200, -/* 0x05f0 */ 235,243, 77,133,228,116, 29, 65,139, 85, 60, 76,137,230, 72,137, -/* 0x0600 */ 239,232,174,250,255,255,133,192,116, 10,191, 10, 0, 0, 0,232, -/* 0x0610 */ 244,251,255,255, 73,141, 4, 28, 72, 1,197, 72, 59,108, 36, 8, -/* 0x0620 */ 115, 56, 72,133,237,116,120, 72, 41,108, 36, 8, 65,139, 85, 60, -/* 0x0630 */ 69, 49,201, 72,139,116, 36, 8, 65,131,200,255,185, 18, 16, 0, -/* 0x0640 */ 0, 72,137,239,232,127,250,255,255, 72, 57,197,116, 81,191, 9, -/* 0x0650 */ 0, 0, 0,232,176,251,255,255,235, 69, 77,133,246,116, 64, 73, -/* 0x0660 */ 131,196, 3, 65,129,228,255, 15, 0, 0, 73,131,252, 3,119, 47, -/* 0x0670 */ 76,137,230, 72,137,239,232, 61,250,255,255,235, 34, 77,133,246, -/* 0x0680 */ 117, 29,131,232, 4,131,248, 1,119, 21, 72,139, 68, 36, 24, 73, -/* 0x0690 */ 1,133,144, 0, 0, 0, 73,141, 69, 16, 72,137, 68, 36, 40, 65, -/* 0x06a0 */ 139, 69, 4,255, 68, 36, 20,193,232, 2,137,192, 77,141,108,133, -/* 0x06b0 */ 0,139, 68, 36, 20,233,219,253,255,255, 72,139, 68, 36, 40, 72, -/* 0x06c0 */ 131,196,104, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195, 65, 87, -/* 0x06d0 */ 73,137,207, 49,201, 65, 86, 69, 49,246, 65, 85, 69, 49,237, 65, -/* 0x06e0 */ 84, 77,137,204, 85, 72,137,213, 72,141, 87, 24, 83, 76,137,195, -/* 0x06f0 */ 72,131,236, 88,139,127, 24, 72,137,116, 36, 72, 72,139, 68, 36, -/* 0x0700 */ 72, 72,141,116, 36, 32, 72,137, 84, 36, 56, 72,137, 84, 36, 24, -/* 0x0710 */ 76,137,194, 72,137,108, 36, 40, 72,137,124, 36, 32, 72,141,124, -/* 0x0720 */ 36, 48, 72,131,232, 24, 72,137, 68, 36, 48, 72,137, 68, 36, 16, -/* 0x0730 */ 232,217,250,255,255, 80,131,201,255, 49,246, 73,137,217, 72,137, -/* 0x0740 */ 239, 72,141, 84, 36, 24, 65, 84, 76,139,132, 36,160, 0, 0, 0, -/* 0x0750 */ 232,247,251,255,255, 72,137, 68, 36, 16,139,117, 16, 72,141, 85, -/* 0x0760 */ 32, 65, 90, 65, 91, 49,201, 57,241, 15,131,226, 0, 0, 0,131, -/* 0x0770 */ 58, 14, 15,133,204, 0, 0, 0,139,122, 8, 49,246, 49,192, 72, -/* 0x0780 */ 141, 60, 58, 49,210,232, 58,249,255,255,133,192, 65,137,196,121, -/* 0x0790 */ 10,191, 18, 0, 0, 0,232,109,250,255,255, 68,137,241, 76,137, -/* 0x07a0 */ 250, 72,137,238, 68,137,231,232, 16,249,255,255, 73, 57,199,116, -/* 0x07b0 */ 10,191, 19, 0, 0, 0,232, 77,250,255,255,139, 69, 0, 61,202, -/* 0x07c0 */ 254,186,190,116, 7, 61,190,186,254,202,117, 49, 72, 15,182,117, -/* 0x07d0 */ 7, 72,137,239, 72,141, 93, 8, 72,107,246, 20,131,198, 8,232, -/* 0x07e0 */ 184,248,255,255,139, 69, 4, 49,201, 57,193,115, 16,129, 59, 7, -/* 0x07f0 */ 0, 0, 1,116, 70,255,193, 72,131,195, 20,235,236, 72,199, 68, -/* 0x0800 */ 36, 8, 0, 0, 0, 0, 65, 81, 68,137,225, 69, 49,201, 49,210, -/* 0x0810 */ 106, 0, 68,137,246, 72,137,239, 76,141, 68, 36, 24,232, 42,251, -/* 0x0820 */ 255,255, 73,137,197, 72,139, 68, 36, 16, 68,137,231, 73,137, 69, -/* 0x0830 */ 0,232,138,248,255,255, 95, 65, 88,235, 22, 68,139,115, 8,233, -/* 0x0840 */ 87,255,255,255,139, 66, 4,255,193, 72, 1,194,233, 22,255,255, -/* 0x0850 */ 255, 72,131,196, 88, 76,137,232, 91, 93, 65, 92, 65, 93, 65, 94, -/* 0x0860 */ 65, 95,195 +/* 0x0490 */ 68, 36, 24, 49,192, 65, 59, 71, 16, 15,131, 67, 2, 0, 0, 65, +/* 0x04a0 */ 131,125, 0, 25,117, 33, 73,131,125, 32, 0,117, 26, 72,141,116, +/* 0x04b0 */ 36, 96,186, 12, 0, 0, 0, 76,137,247,232, 17,253,255,255,139, +/* 0x04c0 */ 68, 36,100, 73, 1, 70, 8, 65,139, 69, 0,131,248, 25, 15,133, +/* 0x04d0 */ 209, 1, 0, 0, 73,139, 85, 32, 72,133,210, 15,132,196, 1, 0, +/* 0x04e0 */ 0, 73,139, 69, 48, 72,139,124, 36, 24, 72,137, 68, 36, 80, 73, +/* 0x04f0 */ 3,125, 24, 73,137,196, 72,137,251, 72,137,253, 72, 1,250,129, +/* 0x0500 */ 227,255, 15, 0, 0, 72,137,124, 36, 88, 72,137, 84, 36, 8, 72, +/* 0x0510 */ 41,221, 73, 1,220,116,107, 77,133,246, 76,137,230,116, 7, 73, +/* 0x0520 */ 141,116, 36, 3,235, 10, 72,133,192,185, 18, 0, 0, 0,117, 10, +/* 0x0530 */ 77,133,246,185, 18, 16, 0, 0,117, 9, 72,133,192,139, 84, 36, +/* 0x0540 */ 72,117, 3,131,202,255, 68,139, 76, 36, 76, 69, 3, 77, 40, 65, +/* 0x0550 */ 137,208, 72,137,239,186, 3, 0, 0, 0,232,105,251,255,255, 72, +/* 0x0560 */ 57,232, 72,137,195,116, 10,191, 8, 0, 0, 0,232,151,252,255, +/* 0x0570 */ 255, 72,139, 68, 36, 64, 72,137,221, 72,131, 56, 0,117, 3, 72, +/* 0x0580 */ 137, 24, 77,133,246,116, 45, 73,131,125, 48, 0,116, 38, 73,131, +/* 0x0590 */ 125, 40, 0,117, 8, 72,139, 68, 36, 64, 72,137, 40, 72,139, 76, +/* 0x05a0 */ 36, 48, 72,139, 84, 36, 56, 72,141,116, 36, 80, 76,137,247,232, +/* 0x05b0 */ 90,252,255,255, 77,133,246, 15,149,194, 49,192, 77,133,228, 15, +/* 0x05c0 */ 149,192,133,194,116, 49, 73,131,125, 40, 0,117, 42, 65,131,125, +/* 0x05d0 */ 64, 0,116, 35, 76,137,232, 76, 41,248, 72,131,224,252,139, 68, +/* 0x05e0 */ 5,120,193,232, 2,255,200, 72,141, 68,133, 0,199, 0,144, 15, +/* 0x05f0 */ 5,195, 72,137, 68, 36, 40, 76,137,227, 73,141, 20, 44, 72,247, +/* 0x0600 */ 219,129,227,255, 15, 0, 0, 72,137,216, 72,133,219,116, 11,198, +/* 0x0610 */ 2, 0, 72,255,194, 72,255,200,235,243, 77,133,228,116, 29, 65, +/* 0x0620 */ 139, 85, 60, 76,137,230, 72,137,239,232,134,250,255,255,133,192, +/* 0x0630 */ 116, 10,191, 10, 0, 0, 0,232,204,251,255,255, 73,141, 4, 28, +/* 0x0640 */ 72, 1,197, 72, 59,108, 36, 8,115, 56, 72,133,237,116,120, 72, +/* 0x0650 */ 41,108, 36, 8, 65,139, 85, 60, 69, 49,201, 72,139,116, 36, 8, +/* 0x0660 */ 65,131,200,255,185, 18, 16, 0, 0, 72,137,239,232, 87,250,255, +/* 0x0670 */ 255, 72, 57,197,116, 81,191, 9, 0, 0, 0,232,136,251,255,255, +/* 0x0680 */ 235, 69, 77,133,246,116, 64, 73,131,196, 3, 65,129,228,255, 15, +/* 0x0690 */ 0, 0, 73,131,252, 3,119, 47, 76,137,230, 72,137,239,232, 21, +/* 0x06a0 */ 250,255,255,235, 34, 77,133,246,117, 29,131,232, 4,131,248, 1, +/* 0x06b0 */ 119, 21, 72,139, 68, 36, 24, 73, 1,133,144, 0, 0, 0, 73,141, +/* 0x06c0 */ 69, 16, 72,137, 68, 36, 40, 65,139, 69, 4,255, 68, 36, 20,193, +/* 0x06d0 */ 232, 2,137,192, 77,141,108,133, 0,139, 68, 36, 20,233,179,253, +/* 0x06e0 */ 255,255, 72,139, 68, 36, 40, 72,131,196,120, 91, 93, 65, 92, 65, +/* 0x06f0 */ 93, 65, 94, 65, 95,195, 65, 87, 73,137,207, 49,201, 65, 86, 69, +/* 0x0700 */ 49,246, 65, 85, 69, 49,237, 65, 84, 77,137,204, 85, 72,137,213, +/* 0x0710 */ 72,141, 87, 24, 83, 76,137,195, 72,131,236, 88,139,127, 24, 72, +/* 0x0720 */ 137,116, 36, 72, 72,139, 68, 36, 72, 72,141,116, 36, 32, 72,137, +/* 0x0730 */ 84, 36, 56, 72,137, 84, 36, 24, 76,137,194, 72,137,108, 36, 40, +/* 0x0740 */ 72,137,124, 36, 32, 72,141,124, 36, 48, 72,131,232, 24, 72,137, +/* 0x0750 */ 68, 36, 48, 72,137, 68, 36, 16,232,177,250,255,255, 80,131,201, +/* 0x0760 */ 255, 49,246, 73,137,217, 72,137,239, 72,141, 84, 36, 24, 65, 84, +/* 0x0770 */ 76,139,132, 36,160, 0, 0, 0,232,207,251,255,255, 72,137, 68, +/* 0x0780 */ 36, 16,139,117, 16, 72,141, 85, 32, 65, 90, 65, 91, 49,201, 57, +/* 0x0790 */ 241, 15,131,226, 0, 0, 0,131, 58, 14, 15,133,204, 0, 0, 0, +/* 0x07a0 */ 139,122, 8, 49,246, 49,192, 72,141, 60, 58, 49,210,232, 18,249, +/* 0x07b0 */ 255,255,133,192, 65,137,196,121, 10,191, 18, 0, 0, 0,232, 69, +/* 0x07c0 */ 250,255,255, 68,137,241, 76,137,250, 72,137,238, 68,137,231,232, +/* 0x07d0 */ 232,248,255,255, 73, 57,199,116, 10,191, 19, 0, 0, 0,232, 37, +/* 0x07e0 */ 250,255,255,139, 69, 0, 61,202,254,186,190,116, 7, 61,190,186, +/* 0x07f0 */ 254,202,117, 49, 72, 15,182,117, 7, 72,137,239, 72,141, 93, 8, +/* 0x0800 */ 72,107,246, 20,131,198, 8,232,144,248,255,255,139, 69, 4, 49, +/* 0x0810 */ 201, 57,193,115, 16,129, 59, 7, 0, 0, 1,116, 70,255,193, 72, +/* 0x0820 */ 131,195, 20,235,236, 72,199, 68, 36, 8, 0, 0, 0, 0, 65, 81, +/* 0x0830 */ 68,137,225, 69, 49,201, 49,210,106, 0, 68,137,246, 72,137,239, +/* 0x0840 */ 76,141, 68, 36, 24,232, 2,251,255,255, 73,137,197, 72,139, 68, +/* 0x0850 */ 36, 16, 68,137,231, 73,137, 69, 0,232, 98,248,255,255, 95, 65, +/* 0x0860 */ 88,235, 22, 68,139,115, 8,233, 87,255,255,255,139, 66, 4,255, +/* 0x0870 */ 193, 72, 1,194,233, 22,255,255,255, 72,131,196, 88, 76,137,232, +/* 0x0880 */ 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195 }; diff --git a/src/stub/arm.v5a-darwin.macho-fold.h b/src/stub/arm.v5a-darwin.macho-fold.h index 37f7ec23..cfef93ca 100644 --- a/src/stub/arm.v5a-darwin.macho-fold.h +++ b/src/stub/arm.v5a-darwin.macho-fold.h @@ -1,5 +1,5 @@ /* arm.v5a-darwin.macho-fold.h - created from arm.v5a-darwin.macho-fold.bin, 2424 (0x978) bytes + created from arm.v5a-darwin.macho-fold.bin, 2488 (0x9b8) bytes This file is part of the UPX executable compressor. @@ -31,15 +31,15 @@ */ -#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_SIZE 2424 -#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_ADLER32 0x12a4f745 -#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_CRC32 0x55f9715a +#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_SIZE 2488 +#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_ADLER32 0xac8114ab +#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_CRC32 0x5aed6310 -unsigned char stub_arm_v5a_darwin_macho_fold[2424] = { +unsigned char stub_arm_v5a_darwin_macho_fold[2488] = { /* 0x0000 */ 24, 48,154,229, 2,202,160,227, 12, 0, 83,225, 12, 48,160, 49, /* 0x0010 */ 13,128,160,225, 3,208, 77,224, 13, 32,160,225, 11, 16,160,225, /* 0x0020 */ 10, 0,160,225, 16, 96,136,226, 52, 80,143,226, 9, 64,160,225, -/* 0x0030 */ 112, 0, 45,233,225, 1, 0,235, 56,160,144,229, 0,144,144,229, +/* 0x0030 */ 112, 0, 45,233,241, 1, 0,235, 56,160,144,229, 0,144,144,229, /* 0x0040 */ 8,208,160,225, 0, 0,157,229, 44, 0, 0,235, 4, 0,157,229, /* 0x0050 */ 8, 16,157,229, 73,112,160,227, 10,224,160,225, 16,208,141,226, /* 0x0060 */ 25,255, 47,225,255, 48, 3,226, 80, 0, 83,227, 14,240,160, 17, @@ -98,8 +98,8 @@ unsigned char stub_arm_v5a_darwin_macho_fold[2424] = { /* 0x03b0 */ 4, 16,148,229,158,255,255,235, 4, 48,157,229, 6, 0,148,232, /* 0x03c0 */ 3, 32,130,224, 1, 16, 99,224, 6, 0,132,232, 0, 48,148,229, /* 0x03d0 */ 0, 0, 83,227,180,255,255, 26, 20,208,141,226,240,128,189,232, -/* 0x03e0 */ 85, 80, 88, 33,240, 79, 45,233, 12, 64,144,229, 36,208, 77,226, -/* 0x03f0 */ 7, 0, 84,227, 0,160,160,225, 12, 16,141,229, 2,144,160,225, +/* 0x03e0 */ 85, 80, 88, 33,240, 79, 45,233, 12, 64,144,229, 48,208, 77,226, +/* 0x03f0 */ 7, 0, 84,227, 0,144,160,225, 12, 16,141,229, 2,160,160,225, /* 0x0400 */ 8, 48,141,229, 28,112,128,226, 16, 96,144,229, 3, 0, 0, 10, /* 0x0410 */ 24, 48,144,229, 2, 6, 19,227, 16, 48,160, 3, 0, 0, 0, 10, /* 0x0420 */ 0, 48,160,227, 1, 90,131,226, 0,192,160,227, 2, 80,133,226, @@ -118,74 +118,78 @@ unsigned char stub_arm_v5a_darwin_macho_fold[2424] = { /* 0x04f0 */ 8, 32,160,225, 0,192,141,229, 4,128,141,229, 19,255,255,235, /* 0x0500 */ 0, 58,160,225, 35, 58,160,225, 8, 0, 83,225, 0, 64,160,225, /* 0x0510 */ 6, 0,160, 19, 68,255,255, 27, 4, 64,102,224, 8,176,160,225, -/* 0x0520 */ 16, 64,141,229, 20,128,141,229,150, 0, 0,234, 0, 48,151,229, -/* 0x0530 */ 1, 0, 83,227,132, 0, 0, 26, 28, 16,151,229, 0, 0, 81,227, -/* 0x0540 */ 129, 0, 0, 10, 24, 32,151,229, 16, 48,157,229, 2, 32,131,224, -/* 0x0550 */ 36, 0,151,229, 2, 58,160,225, 35, 58,160,225, 1, 16,130,224, -/* 0x0560 */ 3, 96,144,224, 28, 0,141,229, 32, 32,141,229, 24, 16,141,229, -/* 0x0570 */ 2, 80, 99,224, 26, 0, 0, 10, 0, 0, 89,227, 3, 0, 0, 26, -/* 0x0580 */ 0, 0, 80,227, 8,224,157, 21, 18, 48,160, 19, 1, 0, 0, 26, -/* 0x0590 */ 32, 50,159,229, 0,224,224,227, 32,192,151,229, 12, 32,157,229, -/* 0x05a0 */ 5, 0,160,225, 12,192,130,224, 6, 16,160,225, 3, 32,160,227, -/* 0x05b0 */ 0,224,141,229, 4,192,141,229,228,254,255,235, 5, 0, 80,225, -/* 0x05c0 */ 0, 64,160,225, 8, 0,160, 19, 23,255,255, 27, 72, 32,157,229, -/* 0x05d0 */ 0, 48,146,229, 0, 0, 83,227, 72, 48,157, 5, 0, 64,131, 5, -/* 0x05e0 */ 4, 80,160,225, 0, 0, 89,227,107, 0, 0, 10, 36, 48,151,229, -/* 0x05f0 */ 0, 0, 83,227, 8, 0, 0, 10, 32, 48,151,229, 0, 0, 83,227, -/* 0x0600 */ 72, 32,157, 5, 9, 0,160,225, 0, 80,130, 5, 28, 16,141,226, -/* 0x0610 */ 76, 32,141,226, 12, 0,146,232, 28,255,255,235, 0, 0, 86,226, -/* 0x0620 */ 1, 0,160, 19, 0, 0, 80,227, 18, 0, 0, 10, 32, 48,151,229, -/* 0x0630 */ 0, 0, 83,227, 15, 0, 0, 26, 48, 48,151,229, 0, 0, 83,227, -/* 0x0640 */ 12, 0, 0, 10, 7, 48,106,224, 3, 48,195,227, 5, 48,131,224, -/* 0x0650 */ 96, 48,147,229, 3, 48,195,227, 3, 48,133,224,239, 36,160,227, -/* 0x0660 */ 8, 32, 3,229, 80, 33,159,229, 8,176, 67,226, 1,128,160,227, -/* 0x0670 */ 4, 32, 3,229, 0, 0, 0,234, 1,128,160,227, 0, 48,102,226, -/* 0x0680 */ 3, 74,160,225, 36, 74,160,225, 0, 0, 84,227, 6, 0, 0, 10, -/* 0x0690 */ 5, 16,134,224, 0, 32,160,227, 0, 48,160,227, 1, 48,194,231, -/* 0x06a0 */ 1, 32,130,226, 4, 0, 82,225,250,255,255, 26, 0, 0, 80,227, -/* 0x06b0 */ 6, 0, 0, 10, 5, 0,160,225, 6, 16,160,225, 44, 32,151,229, -/* 0x06c0 */ 157,254,255,235, 0, 0, 80,227, 10, 0,160, 19,214,254,255, 27, -/* 0x06d0 */ 5, 48,134,224, 3, 64,132,224, 24, 48,157,229, 3, 0, 84,225, -/* 0x06e0 */ 15, 0, 0, 42, 0, 0, 84,227, 32, 0, 0, 10, 0,192,224,227, -/* 0x06f0 */ 44, 32,151,229, 3, 16,100,224, 0,192,141,229, 4, 0,160,225, -/* 0x0700 */ 1,192,140,226,172, 48,159,229, 4,192,141,229,143,254,255,235, -/* 0x0710 */ 0, 0, 84,225, 21, 0, 0, 10, 9, 0,160,227,194,254,255,235, -/* 0x0720 */ 18, 0, 0,234, 0, 0, 88,227, 16, 0, 0, 10, 3, 48,134,226, -/* 0x0730 */ 3, 26,160,225, 33, 26,160,225, 3, 0, 81,227, 11, 0, 0,138, -/* 0x0740 */ 4, 0,160,225,119,254,255,235, 8, 0, 0,234, 0, 0, 89,227, -/* 0x0750 */ 6, 0, 0, 26, 4, 48, 67,226, 1, 0, 83,227, 76, 48,151,149, -/* 0x0760 */ 16, 32,157,149, 2, 48,131,144, 76, 48,135,149, 16,176,135,146, -/* 0x0770 */ 4, 48,151,229, 3, 48,195,227, 3,112,135,224, 20, 48,157,229, -/* 0x0780 */ 1, 48,131,226, 20, 48,141,229, 16, 48,154,229, 20, 32,157,229, -/* 0x0790 */ 3, 0, 82,225,100,255,255, 58, 3, 0, 0,234, 0, 0, 86,226, -/* 0x07a0 */ 1, 0,160, 19, 9,128,160,225,179,255,255,234, 11, 0,160,225, -/* 0x07b0 */ 36,208,141,226,240,143,189,232, 18, 16, 0, 0, 30,255, 47,225, -/* 0x07c0 */ 240, 67, 45,233, 44,208, 77,226, 12, 16,141,229, 12, 16,157,229, -/* 0x07d0 */ 24,192,144,229, 24, 16, 65,226, 24, 0,128,226, 72, 64,157,229, -/* 0x07e0 */ 36, 0,141,229, 32, 16,141,229, 32,128,141,226, 0, 3,152,232, -/* 0x07f0 */ 2, 80,160,225, 32, 0,141,226, 24, 16,141,226, 4, 32,160,225, -/* 0x0800 */ 3,112,160,225, 0, 48,160,227, 24,192,141,229, 16,128,141,229, -/* 0x0810 */ 20,144,141,229, 28, 80,141,229,156,254,255,235, 80,192,157,229, -/* 0x0820 */ 0,192,141,229, 76,192,157,229, 0, 16,160,227, 16, 32,141,226, -/* 0x0830 */ 5, 0,160,225, 0, 48,224,227, 16, 16,141,233,232,254,255,235, -/* 0x0840 */ 0,128,160,225, 16, 0,149,229, 28, 32,133,226, 0, 16,160,227, -/* 0x0850 */ 62, 0, 0,234, 0, 48,146,229, 14, 0, 83,227, 57, 0, 0, 26, -/* 0x0860 */ 8, 0,146,229, 0, 16,160,227, 0, 0,130,224, 1, 32,160,225, -/* 0x0870 */ 29,254,255,235, 0, 96, 80,226, 18, 0,160,179,106,254,255,187, -/* 0x0880 */ 0, 64,160,227, 6, 0,160,225, 5, 16,160,225, 7, 32,160,225, -/* 0x0890 */ 4, 48,160,225, 55,254,255,235, 0, 0, 87,225, 19, 0,160, 19, -/* 0x08a0 */ 97,254,255, 27, 0, 32,149,229,188, 48,159,229, 3, 0, 82,225, -/* 0x08b0 */ 2, 0, 0, 10,180, 48,159,229, 3, 0, 82,225, 18, 0, 0, 26, -/* 0x08c0 */ 7, 48,213,229, 20, 32,160,227,147, 2, 1,224, 5, 0,160,225, -/* 0x08d0 */ 8, 16,129,226, 47,254,255,235, 4,192,149,229, 8, 16,133,226, -/* 0x08e0 */ 0, 0,160,227, 5, 0, 0,234, 0, 32,145,229,128, 48,159,229, -/* 0x08f0 */ 3, 0, 82,225, 8, 64,145, 5,225,255,255, 10, 20, 16,129,226, -/* 0x0900 */ 12, 0, 80,225, 1, 0,128,226,246,255,255, 26, 0,224,160,227, -/* 0x0910 */ 44,192,141,226, 4,224, 44,229, 4, 16,160,225, 5, 0,160,225, -/* 0x0920 */ 14, 32,160,225, 6, 48,160,225, 0, 80,141,232, 8,224,141,229, -/* 0x0930 */ 171,254,255,235, 0, 64,160,225, 0,128,128,229, 6, 0,160,225, -/* 0x0940 */ 238,253,255,235, 5, 0, 0,234, 4, 48,146,229, 3, 32,130,224, -/* 0x0950 */ 0, 0, 81,225, 1, 16,129,226,189,255,255, 26, 0, 64,160,227, -/* 0x0960 */ 4, 0,160,225, 44,208,141,226,240,131,189,232,202,254,186,190, -/* 0x0970 */ 190,186,254,202, 7, 0, 0, 1 +/* 0x0520 */ 16, 64,141,229, 20,128,141,229,163, 0, 0,234, 0, 48,151,229, +/* 0x0530 */ 1, 0, 83,227,165, 0, 0, 26, 28, 48,151,229, 0, 0, 83,227, +/* 0x0540 */ 13, 0, 0, 26, 28, 16,141,226, 12, 32,160,227, 10, 0,160,225, +/* 0x0550 */ 55,255,255,235, 4, 48,154,229, 0, 16,151,229, 32, 32,157,229, +/* 0x0560 */ 1, 0, 81,227, 2, 48,131,224, 4, 48,138,229,140, 0, 0, 26, +/* 0x0570 */ 28, 48,151,229, 0, 0, 83,227,137, 0, 0, 10, 24, 48,151,229, +/* 0x0580 */ 16, 32,157,229, 3, 48,130,224, 36, 0,151,229, 28, 16,151,229, +/* 0x0590 */ 3, 42,160,225, 34, 42,160,225, 1, 16,131,224, 2, 96,144,224, +/* 0x05a0 */ 40, 0,141,229, 44, 48,141,229, 24, 16,141,229, 3, 80, 98,224, +/* 0x05b0 */ 26, 0, 0, 10, 0, 0, 90,227, 3, 0, 0, 26, 0, 0, 80,227, +/* 0x05c0 */ 8,224,157, 21, 18, 48,160, 19, 1, 0, 0, 26, 36, 50,159,229, +/* 0x05d0 */ 0,224,224,227, 32,192,151,229, 12, 32,157,229, 5, 0,160,225, +/* 0x05e0 */ 12,192,130,224, 6, 16,160,225, 3, 32,160,227, 0,224,141,229, +/* 0x05f0 */ 4,192,141,229,213,254,255,235, 5, 0, 80,225, 0, 64,160,225, +/* 0x0600 */ 8, 0,160, 19, 8,255,255, 27, 84, 32,157,229, 0, 48,146,229, +/* 0x0610 */ 0, 0, 83,227, 84, 48,157, 5, 0, 64,131, 5, 4, 80,160,225, +/* 0x0620 */ 0, 0, 90,227,108, 0, 0, 10, 36, 48,151,229, 0, 0, 83,227, +/* 0x0630 */ 8, 0, 0, 10, 32, 48,151,229, 0, 0, 83,227, 84, 32,157, 5, +/* 0x0640 */ 10, 0,160,225, 0, 80,130, 5, 40, 16,141,226, 88, 32,141,226, +/* 0x0650 */ 12, 0,146,232, 13,255,255,235, 0, 0, 86,226, 1, 0,160, 19, +/* 0x0660 */ 0, 0, 80,227, 18, 0, 0, 10, 32, 48,151,229, 0, 0, 83,227, +/* 0x0670 */ 15, 0, 0, 26, 48, 48,151,229, 0, 0, 83,227, 12, 0, 0, 10, +/* 0x0680 */ 7, 48,105,224, 3, 48,195,227, 5, 48,131,224, 96, 48,147,229, +/* 0x0690 */ 3, 48,195,227, 3, 48,133,224,239, 36,160,227, 8, 32, 3,229, +/* 0x06a0 */ 84, 33,159,229, 8,176, 67,226, 1,128,160,227, 4, 32, 3,229, +/* 0x06b0 */ 0, 0, 0,234, 1,128,160,227, 0, 48,102,226, 3, 74,160,225, +/* 0x06c0 */ 36, 74,160,225, 0, 0, 84,227, 6, 0, 0, 10, 5, 16,134,224, +/* 0x06d0 */ 0, 32,160,227, 0, 48,160,227, 1, 48,194,231, 1, 32,130,226, +/* 0x06e0 */ 4, 0, 82,225,250,255,255, 26, 0, 0, 80,227, 6, 0, 0, 10, +/* 0x06f0 */ 5, 0,160,225, 6, 16,160,225, 44, 32,151,229,142,254,255,235, +/* 0x0700 */ 0, 0, 80,227, 10, 0,160, 19,199,254,255, 27, 5, 48,134,224, +/* 0x0710 */ 3, 64,132,224, 24, 48,157,229, 3, 0, 84,225, 15, 0, 0, 42, +/* 0x0720 */ 0, 0, 84,227, 30, 0, 0, 10, 0,192,224,227, 44, 32,151,229, +/* 0x0730 */ 3, 16,100,224, 0,192,141,229, 4, 0,160,225, 1,192,140,226, +/* 0x0740 */ 176, 48,159,229, 4,192,141,229,128,254,255,235, 0, 0, 84,225, +/* 0x0750 */ 19, 0, 0, 10, 9, 0,160,227,179,254,255,235, 16, 0, 0,234, +/* 0x0760 */ 0, 0, 88,227, 14, 0, 0, 10, 3, 48,134,226, 3, 26,160,225, +/* 0x0770 */ 33, 26,160,225, 3, 0, 81,227, 9, 0, 0,138, 4, 0,160,225, +/* 0x0780 */ 104,254,255,235, 6, 0, 0,234, 4, 48, 67,226, 1, 0, 83,227, +/* 0x0790 */ 76, 48,151,149, 16, 32,157,149, 2, 48,131,144, 76, 48,135,149, +/* 0x07a0 */ 16,176,135,146, 4, 48,151,229, 3, 48,195,227, 3,112,135,224, +/* 0x07b0 */ 20, 48,157,229, 1, 48,131,226, 20, 48,141,229, 16, 48,153,229, +/* 0x07c0 */ 20, 32,157,229, 3, 0, 82,225, 87,255,255, 58, 6, 0, 0,234, +/* 0x07d0 */ 0, 0, 90,227,242,255,255, 26,234,255,255,234, 0, 0, 86,226, +/* 0x07e0 */ 1, 0,160, 19, 10,128,160,225,178,255,255,234, 11, 0,160,225, +/* 0x07f0 */ 48,208,141,226,240,143,189,232, 18, 16, 0, 0, 30,255, 47,225, +/* 0x0800 */ 240, 67, 45,233, 44,208, 77,226, 12, 16,141,229, 12, 16,157,229, +/* 0x0810 */ 24,192,144,229, 24, 16, 65,226, 24, 0,128,226, 72, 64,157,229, +/* 0x0820 */ 36, 0,141,229, 32, 16,141,229, 32,128,141,226, 0, 3,152,232, +/* 0x0830 */ 2, 80,160,225, 32, 0,141,226, 24, 16,141,226, 4, 32,160,225, +/* 0x0840 */ 3,112,160,225, 0, 48,160,227, 24,192,141,229, 16,128,141,229, +/* 0x0850 */ 20,144,141,229, 28, 80,141,229,140,254,255,235, 80,192,157,229, +/* 0x0860 */ 0,192,141,229, 76,192,157,229, 0, 16,160,227, 16, 32,141,226, +/* 0x0870 */ 5, 0,160,225, 0, 48,224,227, 16, 16,141,233,216,254,255,235, +/* 0x0880 */ 0,128,160,225, 16, 0,149,229, 28, 32,133,226, 0, 16,160,227, +/* 0x0890 */ 62, 0, 0,234, 0, 48,146,229, 14, 0, 83,227, 57, 0, 0, 26, +/* 0x08a0 */ 8, 0,146,229, 0, 16,160,227, 0, 0,130,224, 1, 32,160,225, +/* 0x08b0 */ 13,254,255,235, 0, 96, 80,226, 18, 0,160,179, 90,254,255,187, +/* 0x08c0 */ 0, 64,160,227, 6, 0,160,225, 5, 16,160,225, 7, 32,160,225, +/* 0x08d0 */ 4, 48,160,225, 39,254,255,235, 0, 0, 87,225, 19, 0,160, 19, +/* 0x08e0 */ 81,254,255, 27, 0, 32,149,229,188, 48,159,229, 3, 0, 82,225, +/* 0x08f0 */ 2, 0, 0, 10,180, 48,159,229, 3, 0, 82,225, 18, 0, 0, 26, +/* 0x0900 */ 7, 48,213,229, 20, 32,160,227,147, 2, 1,224, 5, 0,160,225, +/* 0x0910 */ 8, 16,129,226, 31,254,255,235, 4,192,149,229, 8, 16,133,226, +/* 0x0920 */ 0, 0,160,227, 5, 0, 0,234, 0, 32,145,229,128, 48,159,229, +/* 0x0930 */ 3, 0, 82,225, 8, 64,145, 5,225,255,255, 10, 20, 16,129,226, +/* 0x0940 */ 12, 0, 80,225, 1, 0,128,226,246,255,255, 26, 0,224,160,227, +/* 0x0950 */ 44,192,141,226, 4,224, 44,229, 4, 16,160,225, 5, 0,160,225, +/* 0x0960 */ 14, 32,160,225, 6, 48,160,225, 0, 80,141,232, 8,224,141,229, +/* 0x0970 */ 155,254,255,235, 0, 64,160,225, 0,128,128,229, 6, 0,160,225, +/* 0x0980 */ 222,253,255,235, 5, 0, 0,234, 4, 48,146,229, 3, 32,130,224, +/* 0x0990 */ 0, 0, 81,225, 1, 16,129,226,189,255,255, 26, 0, 64,160,227, +/* 0x09a0 */ 4, 0,160,225, 44,208,141,226,240,131,189,232,202,254,186,190, +/* 0x09b0 */ 190,186,254,202, 7, 0, 0, 1 }; diff --git a/src/stub/arm64-darwin.macho-fold.h b/src/stub/arm64-darwin.macho-fold.h index 3a4f44c2..dccb1698 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, 2472 (0x9a8) bytes + created from arm64-darwin.macho-fold.bin, 2536 (0x9e8) bytes This file is part of the UPX executable compressor. @@ -31,15 +31,15 @@ */ -#define STUB_ARM64_DARWIN_MACHO_FOLD_SIZE 2472 -#define STUB_ARM64_DARWIN_MACHO_FOLD_ADLER32 0x41fc87b4 -#define STUB_ARM64_DARWIN_MACHO_FOLD_CRC32 0x08691991 +#define STUB_ARM64_DARWIN_MACHO_FOLD_SIZE 2536 +#define STUB_ARM64_DARWIN_MACHO_FOLD_ADLER32 0xae9ba614 +#define STUB_ARM64_DARWIN_MACHO_FOLD_CRC32 0x34f0eff2 -unsigned char stub_arm64_darwin_macho_fold[2472] = { +unsigned char stub_arm64_darwin_macho_fold[2536] = { /* 0x0000 */ 224, 3, 20,170,225, 3, 21,170,131, 26, 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,162, 1, 0,148, 20,128, 64,249, +/* 0x0030 */ 228, 3, 28,170,165, 1, 0, 16,177, 1, 0,148, 20,128, 64,249, /* 0x0040 */ 28, 0, 64,249,127, 2, 0,145,224, 3, 64,185, 38, 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, @@ -84,111 +84,115 @@ unsigned char stub_arm64_darwin_macho_fold[2472] = { /* 0x02d0 */ 162,255,255,151,163, 67, 64,185, 97, 6, 64,249, 96, 2, 64,249, /* 0x02e0 */ 33, 0, 3,139, 97, 6, 0,249, 0, 0, 3,203, 96, 2, 0,249, /* 0x02f0 */ 185,255,255, 23,243, 83, 65,169,245, 91, 66,169,253,123,197,168, -/* 0x0300 */ 192, 3, 95,214,253,123,182,169,253, 3, 0,145,232, 39, 6,109, -/* 0x0310 */ 243, 83, 1,169,234, 47, 7,109,203, 0,103,158, 6, 12, 64,185, -/* 0x0320 */ 19,128, 0,145,247, 99, 3,169,249,107, 4,169,251,115, 5,169, -/* 0x0330 */ 245, 91, 2,169,223, 28, 0,113,247, 3, 0,170,105, 0, 39, 30, -/* 0x0340 */ 249, 3, 2,170, 40, 0, 39, 30,251, 3, 4,170,170, 0,103,158, -/* 0x0350 */ 7, 16, 64,185, 3, 0,128, 82,192, 0, 0, 84, 0, 24, 64,185, -/* 0x0360 */ 0, 0, 11, 18, 31, 0, 3,107, 3, 2,128, 82,227, 19,131, 26, -/* 0x0370 */ 99, 4, 64, 17,224, 3, 19,170, 99, 8, 0, 17, 5, 0,128, 82, -/* 0x0380 */ 1, 0,128,210, 24, 0,128,146,191, 0, 7,107,106, 3, 0, 84, -/* 0x0390 */ 2, 0, 64,185, 95,100, 0,113, 97, 2, 0, 84, 4, 16, 64,249, -/* 0x03a0 */ 36, 2, 0,180, 2, 12, 64,249, 66, 0, 0,181,195, 1, 32, 55, -/* 0x03b0 */ 31, 7, 0,177,161, 0, 0, 84,223, 28, 0,113, 97, 0, 0, 84, -/* 0x03c0 */ 162, 0, 0,180, 67, 2,130, 82, 31, 3, 2,235, 24,147,130,154, -/* 0x03d0 */ 2, 0, 0, 20,248, 3, 2,170, 66, 0, 4,139, 63, 0, 2,235, -/* 0x03e0 */ 33, 32,130,154, 2, 4, 64,185,165, 4, 0, 17, 66,116,126,146, -/* 0x03f0 */ 0, 0, 2,139,229,255,255, 23, 24,207,116,146, 52,252, 63,145, -/* 0x0400 */ 148, 2, 24,203, 0, 0,128,210,148,206,116,146,227, 0, 32, 54, -/* 0x0410 */ 224, 3, 24,170,225, 3, 20,170,163, 71, 0,249, 56,255,255,151, -/* 0x0420 */ 163, 71, 64,249,224, 3, 24,170, 2, 0,128, 82,225, 3, 20,170, -/* 0x0430 */ 4, 0,128, 18,229, 3, 2, 42, 55,255,255,151, 22, 44, 64,242, -/* 0x0440 */ 96, 0, 0, 84,192, 0,128, 82, 65, 0, 0, 20, 24, 0, 24,203, -/* 0x0450 */ 250, 3, 22, 42, 23, 0, 0, 20, 96, 3, 64,249, 64, 0, 0,181, -/* 0x0460 */ 102, 3, 0,249, 25, 8, 0,181, 63, 3, 31,235,228, 7,159, 26, -/* 0x0470 */ 159, 2, 31,235,225, 7,159, 26,193, 8, 0, 53,227, 3, 20,203, -/* 0x0480 */ 99, 44, 64,242,225, 10, 0, 84,161, 11, 0, 53, 99, 0, 20,139, -/* 0x0490 */ 117, 0, 21,139,191, 2, 28,235,226, 13, 0, 84,117, 12, 0,181, -/* 0x04a0 */ 96, 6, 64,185, 90, 7, 0, 17, 0,116,126,146,115, 2, 0,139, -/* 0x04b0 */ 224, 18, 64,185, 95, 3, 0,107, 2, 15, 0, 84, 96, 2, 64,185, -/* 0x04c0 */ 31,100, 0,113,129, 13, 0, 84, 97, 18, 64,249,161,254,255,180, -/* 0x04d0 */ 102, 14, 64,249, 96, 26, 64,249, 6, 3, 6,139,160, 75, 0,249, -/* 0x04e0 */ 212, 44, 64,146,166, 79, 0,249,220, 0, 1,139,198, 0, 20,203, -/* 0x04f0 */ 148, 2, 0,171, 64, 3, 0, 84,217, 2, 0,181, 31, 0, 31,235, -/* 0x0500 */ 65, 2,128, 82, 66, 2,130, 82, 35, 16,130, 26, 31, 0, 31,235, -/* 0x0510 */ 32, 1, 38, 30, 4, 16,159, 90,224, 3, 6,170,166, 71, 0,249, -/* 0x0520 */ 6, 1, 38, 30,101, 22, 64,249,225, 3, 20,170, 98, 0,128, 82, -/* 0x0530 */ 197, 0, 5, 11,248,254,255,151,245, 3, 0,170,166, 71, 64,249, -/* 0x0540 */ 31, 0, 6,235,160,248,255, 84, 0, 1,128, 82,219,254,255,151, -/* 0x0550 */ 67, 2,130, 82, 4, 0,128, 18,240,255,255, 23,245, 3, 6,170, -/* 0x0560 */ 193,255,255, 23, 96, 26, 64,249, 0,248,255,180, 96, 22, 64,249, -/* 0x0570 */ 64, 0, 0,181,117, 3, 0,249, 66, 1,102,158,224, 3, 25,170, -/* 0x0580 */ 99, 1,102,158,161, 67, 2,145, 11,255,255,151,183,255,255, 23, -/* 0x0590 */ 100,247,255, 52, 96, 22, 64,249, 32,247,255,181, 96, 66, 64,185, -/* 0x05a0 */ 224,246,255, 52, 96, 2, 23,203, 34, 0,128, 82, 0,244,126,146, -/* 0x05b0 */ 2,128,186,114,160, 2, 0,139, 0,120, 64,185, 0,124, 2, 83, -/* 0x05c0 */ 0, 8, 0, 81, 0,244,126,211,182, 2, 0,139,162,106, 32,184, -/* 0x05d0 */ 0,120,128, 82,224,203,186,114,192, 6, 0,185,168,255,255, 23, -/* 0x05e0 */ 162, 2, 20,139, 0, 0,128,210, 31,104, 34, 56, 0, 4, 0,145, -/* 0x05f0 */ 31, 0, 3,235,161,255,255, 84,164,255,255, 23, 98, 62, 64,185, -/* 0x0600 */ 224, 3, 21,170,225, 3, 20,170,163, 67, 0,249,164, 71, 0,249, -/* 0x0610 */ 190,254,255,151,164, 71, 64,249,163, 67, 64,249,128,243,255, 52, -/* 0x0620 */ 64, 1,128, 82,202,255,255, 23, 98, 62, 64,185,224, 3, 21,170, -/* 0x0630 */ 129, 3, 21,203, 67, 2,130, 82, 4, 0,128, 18, 5, 0,128, 82, -/* 0x0640 */ 181,254,255,151, 31, 0, 21,235,192,242,255, 84, 32, 1,128, 82, -/* 0x0650 */ 191,255,255, 23,100,242,255, 52,148, 14, 0,145,129, 46, 64,146, -/* 0x0660 */ 63, 12, 0,241,232,241,255, 84,224, 3, 21,170,164,254,255,151, -/* 0x0670 */ 140,255,255, 23,121,241,255,181, 0, 16, 0, 81, 31, 4, 0,113, -/* 0x0680 */ 8,241,255, 84, 96,138, 64,249,118, 66, 0,145, 0, 0, 24,139, -/* 0x0690 */ 96,138, 0,249,131,255,255, 23,224, 3, 22,170,232, 39, 70,109, -/* 0x06a0 */ 243, 83, 65,169,234, 47, 71,109,245, 91, 66,169,247, 99, 67,169, -/* 0x06b0 */ 249,107, 68,169,251,115, 69,169,253,123,202,168,192, 3, 95,214, -/* 0x06c0 */ 253,123,182,169,253, 3, 0,145,243, 83, 1,169,244, 3, 4,170, -/* 0x06d0 */ 243, 3, 2,170,161, 47, 0,249, 1, 96, 0,145,161, 63, 0,249, -/* 0x06e0 */ 161, 47, 64,249, 0, 24, 64,185, 33, 96, 0,209,161, 59, 0,249, -/* 0x06f0 */ 160, 67, 0,249,160, 7, 71,169,247, 99, 3,169,160, 7, 9,169, -/* 0x0700 */ 162, 71, 0,249,160,195, 1,145,161, 3, 2,145,226, 3, 20,170, -/* 0x0710 */ 247, 3, 3,170, 3, 0,128,210,245, 91, 2,169,166, 43, 0,249, -/* 0x0720 */ 245, 3, 5,170,249, 35, 0,249,163,254,255,151,164, 43, 64,249, -/* 0x0730 */ 1, 0,128, 82,162, 67, 2,145,224, 3, 19,170, 3, 0,128, 18, -/* 0x0740 */ 229, 3, 20,170,230, 3, 21,170,239,254,255,151,248, 3, 0,170, -/* 0x0750 */ 98, 18, 64,185, 97,130, 0,145, 4, 0,128, 82,159, 0, 2,107, -/* 0x0760 */ 224, 8, 0, 84, 32, 0, 64,185, 31, 56, 0,113, 1, 8, 0, 84, -/* 0x0770 */ 32, 8, 64,185, 22, 0,128, 82,153, 2,128, 82, 32, 0, 0,139, -/* 0x0780 */ 1, 0,128, 82,226, 3, 1, 42, 84,254,255,151,244, 3, 0, 42, -/* 0x0790 */ 20, 3,248, 54, 64, 2,128, 82, 30, 0, 0, 20, 98, 2, 64,185, -/* 0x07a0 */ 65,217,159, 82, 65,215,183,114, 95, 0, 1,107, 65, 3, 0, 84, -/* 0x07b0 */ 97, 30, 64, 57,224, 3, 19,170,117, 34, 0,145, 33,124, 25, 27, -/* 0x07c0 */ 33, 32, 0, 17, 90,254,255,151, 96, 6, 64,185, 1, 0,128, 82, -/* 0x07d0 */ 63, 0, 0,107, 0, 3, 0, 84,163, 2, 64,185,226, 0,128, 82, -/* 0x07e0 */ 2, 32,160,114,127, 0, 2,107, 1, 2, 0, 84,182, 10, 64,185, -/* 0x07f0 */ 224, 3, 20, 42,225, 3, 19,170,226, 3, 23,170,227, 3, 22, 42, -/* 0x0800 */ 72,254,255,151,255, 2, 0,235,160,252,255, 84, 96, 2,128, 82, -/* 0x0810 */ 42,254,255,151,193, 87,151, 82,193, 95,185,114, 95, 0, 1,107, -/* 0x0820 */ 128,252,255, 84, 4, 0, 0, 20, 33, 4, 0, 17,181, 82, 0,145, -/* 0x0830 */ 232,255,255, 23,164,131, 2,145, 2, 0,128,210,224, 3, 19,170, -/* 0x0840 */ 225, 3, 22, 42,227, 3, 20, 42,229, 3, 2,170,159,140, 28,248, -/* 0x0850 */ 230, 3, 2,170,172,254,255,151,243, 3, 0,170, 24, 0, 0,249, -/* 0x0860 */ 224, 3, 20, 42, 32,254,255,151, 6, 0, 0, 20, 32, 4, 64,185, -/* 0x0870 */ 132, 4, 0, 17, 33, 0, 0,139,185,255,255, 23, 19, 0,128,210, -/* 0x0880 */ 224, 3, 19,170,249, 35, 64,249,243, 83, 65,169,245, 91, 66,169, -/* 0x0890 */ 247, 99, 67,169,253,123,202,168,192, 3, 95,214, 0, 0, 0, 0, -/* 0x08a0 */ 20, 0, 0, 0, 0, 0, 0, 0, 1,122, 82, 0, 4,120, 30, 1, -/* 0x08b0 */ 27, 12, 31, 0, 0, 0, 0, 0, 36, 0, 0, 0, 28, 0, 0, 0, -/* 0x08c0 */ 152,248,255,255, 92, 0, 0, 0, 0, 65, 14, 16,157, 2,158, 1, -/* 0x08d0 */ 66, 13, 29, 83,222,221, 12, 31, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x08e0 */ 44, 0, 0, 0, 68, 0, 0, 0,204,248,255,255, 80, 1, 0, 0, -/* 0x08f0 */ 0, 65, 14, 80,157, 10,158, 9, 65, 13, 29, 66,147, 8,148, 7, -/* 0x0900 */ 149, 6,150, 5, 2, 79,222,221,214,213,212,211, 12, 31, 0, 0, -/* 0x0910 */ 84, 0, 0, 0,116, 0, 0, 0,236,249,255,255,188, 3, 0, 0, -/* 0x0920 */ 0, 65, 14,160, 1,157, 20,158, 19, 65, 13, 29, 67, 5, 72, 8, -/* 0x0930 */ 5, 73, 7,147, 18,148, 17, 5, 74, 6, 5, 75, 5, 71,151, 14, -/* 0x0940 */ 152, 13,153, 12,154, 11,155, 10,156, 9,149, 16,150, 15, 2,226, -/* 0x0950 */ 222,221, 6, 75, 6, 74, 6, 73, 6, 72,220,219,218,217,216,215, -/* 0x0960 */ 214,213,212,211, 12, 31, 0, 0, 60, 0, 0, 0,204, 0, 0, 0, -/* 0x0970 */ 80,253,255,255,220, 1, 0, 0, 0, 65, 14,160, 1,157, 20,158, -/* 0x0980 */ 19, 65, 13, 29, 65,147, 18,148, 17, 81,151, 14,152, 13, 68,149, -/* 0x0990 */ 16,150, 15, 66,153, 12, 2, 92,222,221,217,216,215,214,213,212, -/* 0x09a0 */ 211, 12, 31, 0, 0, 0, 0, 0 +/* 0x0300 */ 192, 3, 95,214,253,123,181,169,253, 3, 0,145,234, 47, 7,109, +/* 0x0310 */ 236, 67, 0,253,232, 39, 6,109,204, 0,103,158, 6, 12, 64,185, +/* 0x0320 */ 243, 83, 1,169,247, 99, 3,169,249,107, 4,169,251,115, 5,169, +/* 0x0330 */ 245, 91, 2,169,223, 28, 0,113,249, 3, 0,170,106, 0, 39, 30, +/* 0x0340 */ 247, 3, 2,170, 41, 0, 39, 30,252, 3, 4,170,171, 0,103,158, +/* 0x0350 */ 19,128, 0,145, 7, 16, 64,185, 3, 0,128, 82,192, 0, 0, 84, +/* 0x0360 */ 0, 24, 64,185, 0, 0, 11, 18, 31, 0, 3,107, 3, 2,128, 82, +/* 0x0370 */ 227, 19,131, 26, 99, 4, 64, 17,224, 3, 19,170, 99, 8, 0, 17, +/* 0x0380 */ 5, 0,128, 82, 1, 0,128,210, 26, 0,128,146,191, 0, 7,107, +/* 0x0390 */ 106, 3, 0, 84, 2, 0, 64,185, 95,100, 0,113, 97, 2, 0, 84, +/* 0x03a0 */ 4, 16, 64,249, 36, 2, 0,180, 2, 12, 64,249, 66, 0, 0,181, +/* 0x03b0 */ 195, 1, 32, 55, 95, 7, 0,177,161, 0, 0, 84,223, 28, 0,113, +/* 0x03c0 */ 97, 0, 0, 84,162, 0, 0,180, 67, 2,130, 82, 95, 3, 2,235, +/* 0x03d0 */ 90,147,130,154, 2, 0, 0, 20,250, 3, 2,170, 66, 0, 4,139, +/* 0x03e0 */ 63, 0, 2,235, 33, 32,130,154, 2, 4, 64,185,165, 4, 0, 17, +/* 0x03f0 */ 66,116,126,146, 0, 0, 2,139,229,255,255, 23, 90,207,116,146, +/* 0x0400 */ 52,252, 63,145,148, 2, 26,203, 0, 0,128,210,148,206,116,146, +/* 0x0410 */ 227, 0, 32, 54,224, 3, 26,170,225, 3, 20,170,163, 79, 0,249, +/* 0x0420 */ 55,255,255,151,163, 79, 64,249,224, 3, 26,170, 2, 0,128, 82, +/* 0x0430 */ 225, 3, 20,170, 4, 0,128, 18,229, 3, 2, 42, 54,255,255,151, +/* 0x0440 */ 24, 44, 64,242, 96, 0, 0, 84,192, 0,128, 82, 68, 0, 0, 20, +/* 0x0450 */ 26, 0, 26,203,251, 3, 24, 42, 24, 0, 0, 20,128, 3, 64,249, +/* 0x0460 */ 64, 0, 0,181,150, 3, 0,249,215, 9, 0,181,255, 2, 31,235, +/* 0x0470 */ 227, 7,159, 26,159, 2, 31,235,225, 7,159, 26,129, 10, 0, 53, +/* 0x0480 */ 246, 3, 20,203,214, 46, 64,242,161, 12, 0, 84, 97, 13, 0, 53, +/* 0x0490 */ 0, 1,102,158,214, 2, 20,139,213, 2, 21,139,191, 2, 0,235, +/* 0x04a0 */ 98, 15, 0, 84,213, 13, 0,181, 96, 6, 64,185,123, 7, 0, 17, +/* 0x04b0 */ 0,116,126,146,115, 2, 0,139, 32, 19, 64,185,127, 3, 0,107, +/* 0x04c0 */ 130, 16, 0, 84, 96, 2, 64,185, 31,100, 0,113,160, 4, 0, 84, +/* 0x04d0 */ 96, 2, 64,185, 31,100, 0,113,161, 14, 0, 84, 97, 18, 64,249, +/* 0x04e0 */ 65,254,255,180,118, 14, 64,249, 96, 26, 64,249, 86, 3, 22,139, +/* 0x04f0 */ 160, 83, 0,249,212, 46, 64,146,193, 2, 1,139,182, 87, 0,249, +/* 0x0500 */ 214, 2, 20,203,148, 2, 0,171, 40, 0,103,158, 96, 4, 0, 84, +/* 0x0510 */ 247, 3, 0,181, 31, 0, 31,235, 67, 2,130, 82, 65, 2,128, 82, +/* 0x0520 */ 35, 16,131, 26, 31, 0, 31,235, 64, 1, 38, 30, 4, 16,159, 90, +/* 0x0530 */ 38, 1, 38, 30,101, 22, 64,249,224, 3, 22,170,225, 3, 20,170, +/* 0x0540 */ 98, 0,128, 82,197, 0, 5, 11,243,254,255,151, 31, 0, 22,235, +/* 0x0550 */ 245, 3, 0,170, 64,248,255, 84, 0, 1,128, 82,215,254,255,151, +/* 0x0560 */ 96, 18, 64,249, 96,251,255,181,224, 3, 23,170,161,131, 2,145, +/* 0x0570 */ 130, 1,128,210,249,254,255,151,225, 6, 64,249,160,167, 64,185, +/* 0x0580 */ 32, 0, 0,139,224, 6, 0,249,210,255,255, 23, 67, 2,130, 82, +/* 0x0590 */ 4, 0,128, 18,231,255,255, 23,245, 3, 22,170,179,255,255, 23, +/* 0x05a0 */ 96, 26, 64,249, 64,246,255,180, 96, 22, 64,249, 64, 0, 0,181, +/* 0x05b0 */ 149, 3, 0,249, 98, 1,102,158,224, 3, 23,170,131, 1,102,158, +/* 0x05c0 */ 161,131, 2,145,252,254,255,151,169,255,255, 23,163,245,255, 52, +/* 0x05d0 */ 96, 22, 64,249, 96,245,255,181, 96, 66, 64,185, 32,245,255, 52, +/* 0x05e0 */ 96, 2, 25,203, 34, 0,128, 82, 0,244,126,146, 2,128,186,114, +/* 0x05f0 */ 160, 2, 0,139, 0,120, 64,185, 0,124, 2, 83, 0, 8, 0, 81, +/* 0x0600 */ 0,244,126,211,184, 2, 0,139,162,106, 32,184, 0,120,128, 82, +/* 0x0610 */ 224,203,186,114, 0, 7, 0,185,154,255,255, 23,162, 2, 20,139, +/* 0x0620 */ 0, 0,128,210, 31,104, 34, 56, 0, 4, 0,145, 31, 0, 22,235, +/* 0x0630 */ 161,255,255, 84,150,255,255, 23, 98, 62, 64,185,224, 3, 21,170, +/* 0x0640 */ 225, 3, 20,170,163, 79, 0,249,176,254,255,151,163, 79, 64,249, +/* 0x0650 */ 0,242,255, 52, 64, 1,128, 82,193,255,255, 23, 1, 1,102,158, +/* 0x0660 */ 98, 62, 64,185,224, 3, 21,170, 67, 2,130, 82, 4, 0,128, 18, +/* 0x0670 */ 5, 0,128, 82, 33, 0, 21,203,167,254,255,151, 31, 0, 21,235, +/* 0x0680 */ 64,241,255, 84, 32, 1,128, 82,181,255,255, 23,227,240,255, 52, +/* 0x0690 */ 148, 14, 0,145,129, 46, 64,146, 63, 12, 0,241,104,240,255, 84, +/* 0x06a0 */ 224, 3, 21,170,150,254,255,151,128,255,255, 23,247,239,255,181, +/* 0x06b0 */ 0, 16, 0, 81, 31, 4, 0,113,136,239,255, 84, 96,138, 64,249, +/* 0x06c0 */ 120, 66, 0,145, 0, 0, 26,139, 96,138, 0,249,119,255,255, 23, +/* 0x06d0 */ 224, 3, 24,170,232, 39, 70,109,243, 83, 65,169,234, 47, 71,109, +/* 0x06e0 */ 245, 91, 66,169,247, 99, 67,169,249,107, 68,169,251,115, 69,169, +/* 0x06f0 */ 236, 67, 64,253,253,123,203,168,192, 3, 95,214,253,123,182,169, +/* 0x0700 */ 253, 3, 0,145,243, 83, 1,169,244, 3, 4,170,243, 3, 2,170, +/* 0x0710 */ 161, 47, 0,249, 1, 96, 0,145,161, 63, 0,249,161, 47, 64,249, +/* 0x0720 */ 0, 24, 64,185, 33, 96, 0,209,161, 59, 0,249,160, 67, 0,249, +/* 0x0730 */ 160, 7, 71,169,247, 99, 3,169,160, 7, 9,169,162, 71, 0,249, +/* 0x0740 */ 160,195, 1,145,161, 3, 2,145,226, 3, 20,170,247, 3, 3,170, +/* 0x0750 */ 3, 0,128,210,245, 91, 2,169,166, 43, 0,249,245, 3, 5,170, +/* 0x0760 */ 249, 35, 0,249,148,254,255,151,164, 43, 64,249, 1, 0,128, 82, +/* 0x0770 */ 162, 67, 2,145,224, 3, 19,170, 3, 0,128, 18,229, 3, 20,170, +/* 0x0780 */ 230, 3, 21,170,224,254,255,151,248, 3, 0,170, 98, 18, 64,185, +/* 0x0790 */ 97,130, 0,145, 4, 0,128, 82,159, 0, 2,107,224, 8, 0, 84, +/* 0x07a0 */ 32, 0, 64,185, 31, 56, 0,113, 1, 8, 0, 84, 32, 8, 64,185, +/* 0x07b0 */ 22, 0,128, 82,153, 2,128, 82, 32, 0, 0,139, 1, 0,128, 82, +/* 0x07c0 */ 226, 3, 1, 42, 69,254,255,151,244, 3, 0, 42, 20, 3,248, 54, +/* 0x07d0 */ 64, 2,128, 82, 30, 0, 0, 20, 98, 2, 64,185, 65,217,159, 82, +/* 0x07e0 */ 65,215,183,114, 95, 0, 1,107, 65, 3, 0, 84, 97, 30, 64, 57, +/* 0x07f0 */ 224, 3, 19,170,117, 34, 0,145, 33,124, 25, 27, 33, 32, 0, 17, +/* 0x0800 */ 75,254,255,151, 96, 6, 64,185, 1, 0,128, 82, 63, 0, 0,107, +/* 0x0810 */ 0, 3, 0, 84,163, 2, 64,185,226, 0,128, 82, 2, 32,160,114, +/* 0x0820 */ 127, 0, 2,107, 1, 2, 0, 84,182, 10, 64,185,224, 3, 20, 42, +/* 0x0830 */ 225, 3, 19,170,226, 3, 23,170,227, 3, 22, 42, 57,254,255,151, +/* 0x0840 */ 255, 2, 0,235,160,252,255, 84, 96, 2,128, 82, 27,254,255,151, +/* 0x0850 */ 193, 87,151, 82,193, 95,185,114, 95, 0, 1,107,128,252,255, 84, +/* 0x0860 */ 4, 0, 0, 20, 33, 4, 0, 17,181, 82, 0,145,232,255,255, 23, +/* 0x0870 */ 164,131, 2,145, 2, 0,128,210,224, 3, 19,170,225, 3, 22, 42, +/* 0x0880 */ 227, 3, 20, 42,229, 3, 2,170,159,140, 28,248,230, 3, 2,170, +/* 0x0890 */ 157,254,255,151,243, 3, 0,170, 24, 0, 0,249,224, 3, 20, 42, +/* 0x08a0 */ 17,254,255,151, 6, 0, 0, 20, 32, 4, 64,185,132, 4, 0, 17, +/* 0x08b0 */ 33, 0, 0,139,185,255,255, 23, 19, 0,128,210,224, 3, 19,170, +/* 0x08c0 */ 249, 35, 64,249,243, 83, 65,169,245, 91, 66,169,247, 99, 67,169, +/* 0x08d0 */ 253,123,202,168,192, 3, 95,214, 20, 0, 0, 0, 0, 0, 0, 0, +/* 0x08e0 */ 1,122, 82, 0, 4,120, 30, 1, 27, 12, 31, 0, 0, 0, 0, 0, +/* 0x08f0 */ 36, 0, 0, 0, 28, 0, 0, 0, 96,248,255,255, 92, 0, 0, 0, +/* 0x0900 */ 0, 65, 14, 16,157, 2,158, 1, 66, 13, 29, 83,222,221, 12, 31, +/* 0x0910 */ 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 68, 0, 0, 0, +/* 0x0920 */ 148,248,255,255, 80, 1, 0, 0, 0, 65, 14, 80,157, 10,158, 9, +/* 0x0930 */ 65, 13, 29, 66,147, 8,148, 7,149, 6,150, 5, 2, 79,222,221, +/* 0x0940 */ 214,213,212,211, 12, 31, 0, 0, 92, 0, 0, 0,116, 0, 0, 0, +/* 0x0950 */ 180,249,255,255,248, 3, 0, 0, 0, 65, 14,176, 1,157, 22,158, +/* 0x0960 */ 21, 65, 13, 29, 67, 5, 74, 8, 5, 75, 7, 5, 76, 6, 5, 72, +/* 0x0970 */ 10, 5, 73, 9, 71,147, 20,148, 19,151, 16,152, 15,153, 14,154, +/* 0x0980 */ 13,155, 12,156, 11,149, 18,150, 17, 2,241,222,221, 6, 76, 6, +/* 0x0990 */ 75, 6, 74, 6, 73, 6, 72,220,219,218,217,216,215,214,213,212, +/* 0x09a0 */ 211, 12, 31, 0, 0, 0, 0, 0, 60, 0, 0, 0,212, 0, 0, 0, +/* 0x09b0 */ 76,253,255,255,220, 1, 0, 0, 0, 65, 14,160, 1,157, 20,158, +/* 0x09c0 */ 19, 65, 13, 29, 65,147, 18,148, 17, 81,151, 14,152, 13, 68,149, +/* 0x09d0 */ 16,150, 15, 66,153, 12, 2, 92,222,221,217,216,215,214,213,212, +/* 0x09e0 */ 211, 12, 31, 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 c8dbf589..41eb4fa6 100644 --- a/src/stub/src/amd64-darwin.macho-main.c +++ b/src/stub/src/amd64-darwin.macho-main.c @@ -546,7 +546,15 @@ do_xmap( for ( j=0; j < mhdr->ncmds; ++j, (sc = (Mach_segment_command *)((sc->cmdsize>>2) + (unsigned *)sc)) ) { - DPRINTF(" #%%d cmd=%%x cmdsize=%%x\\n", j, sc->cmd, sc->cmdsize); + DPRINTF(" #%%d cmd=%%x cmdsize=%%x vmsize=%%x\\n", + j, sc->cmd, sc->cmdsize, sc->vmsize); + if (LC_SEGMENT==sc->cmd && !sc->vmsize) { + // Typical __DWARF info segment for 'rust' + struct b_info h; + xread(xi, (unsigned char *)&h, sizeof(h)); + DPRINTF(" 0==.vmsize; skipping %%x\\n", h.sz_cpr); + xi->buf += h.sz_cpr; + } if (LC_SEGMENT==sc->cmd && sc->vmsize) { Extent xo; size_t mlen = xo.size = sc->filesize; diff --git a/src/stub/src/amd64-darwin.macho-upxmain.c b/src/stub/src/amd64-darwin.macho-upxmain.c index eb285dfa..3a80724f 100644 --- a/src/stub/src/amd64-darwin.macho-upxmain.c +++ b/src/stub/src/amd64-darwin.macho-upxmain.c @@ -517,7 +517,13 @@ do_xmap( for ( j=0; j < mhdr->ncmds; ++j, (sc = (Mach_segment_command const *)(sc->cmdsize + (unsigned char const *)sc)) - ) if (LC_SEGMENT_64==sc->cmd && sc->vmsize!=0) { + ) if (LC_SEGMENT_64==sc->cmd && sc->vmsize==0) { + // Typical __DWARF info segment for 'rust' + struct b_info h; + xread(xi, (unsigned char *)&h, sizeof(h)); + DPRINTF(" 0==.vmsize; skipping %%x\\n", h.sz_cpr); + xi->buf += h.sz_cpr; + else if (LC_SEGMENT_64==sc->cmd && sc->vmsize!=0) { Extent xo; size_t mlen = xo.size = sc->filesize; Addr addr = xo.buf = base + (Addr)sc->vmaddr; diff --git a/src/stub/tmp/amd64-darwin.macho-fold.map b/src/stub/tmp/amd64-darwin.macho-fold.map index 95457446..b6e327b1 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 0x863 +.text 0x0000000008048000 0x88b *(.text .stub .text.* .gnu.linkonce.t.*) .text 0x0000000008048000 0x1d0 tmp/amd64-darwin.macho-fold.o 0x00000000080480b8 munmap @@ -86,17 +86,17 @@ LOAD tmp/amd64-darwin.macho-main.o 0x00000000080480c4 open 0x00000000080480b4 mprotect 0x00000000080480c0 close - .text 0x00000000080481d0 0x693 tmp/amd64-darwin.macho-main.o + .text 0x00000000080481d0 0x6bb tmp/amd64-darwin.macho-main.o 0x000000000804834c do_xmap - 0x00000000080486ce upx_main + 0x00000000080486f6 upx_main *(.text.*personality*) *(.gnu.warning) .fini *(.fini) - 0x0000000008048863 PROVIDE (__etext, .) - 0x0000000008048863 PROVIDE (_etext, .) - 0x0000000008048863 PROVIDE (etext, .) + 0x000000000804888b PROVIDE (__etext, .) + 0x000000000804888b PROVIDE (_etext, .) + 0x000000000804888b PROVIDE (etext, .) .rodata *(.rodata .rodata.* .gnu.linkonce.r.*) @@ -112,8 +112,8 @@ LOAD tmp/amd64-darwin.macho-main.o .gcc_except_table *(.gcc_except_table .gcc_except_table.*) - 0x0000000008048863 . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff)) - 0x0000000008049863 . = (0x1000 DATA_SEGMENT_ALIGN 0x1000) + 0x000000000804888b . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff)) + 0x000000000804988b . = (0x1000 DATA_SEGMENT_ALIGN 0x1000) .eh_frame *(.eh_frame) @@ -128,22 +128,22 @@ LOAD tmp/amd64-darwin.macho-main.o *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) -.preinit_array 0x0000000008049863 0x0 - 0x0000000008049863 PROVIDE (__preinit_array_start, .) +.preinit_array 0x000000000804988b 0x0 + 0x000000000804988b PROVIDE (__preinit_array_start, .) *(.preinit_array) - 0x0000000008049863 PROVIDE (__preinit_array_end, .) + 0x000000000804988b PROVIDE (__preinit_array_end, .) -.init_array 0x0000000008049863 0x0 - 0x0000000008049863 PROVIDE (__init_array_start, .) +.init_array 0x000000000804988b 0x0 + 0x000000000804988b PROVIDE (__init_array_start, .) *(SORT(.init_array.*)) *(.init_array) - 0x0000000008049863 PROVIDE (__init_array_end, .) + 0x000000000804988b PROVIDE (__init_array_end, .) -.fini_array 0x0000000008049863 0x0 - 0x0000000008049863 PROVIDE (__fini_array_start, .) +.fini_array 0x000000000804988b 0x0 + 0x000000000804988b PROVIDE (__fini_array_start, .) *(.fini_array) *(SORT(.fini_array.*)) - 0x0000000008049863 PROVIDE (__fini_array_end, .) + 0x000000000804988b PROVIDE (__fini_array_end, .) .ctors *crtbegin*.o(.ctors) @@ -169,35 +169,35 @@ LOAD tmp/amd64-darwin.macho-main.o .got *(.got) - 0x0000000008049863 . = (. DATA_SEGMENT_RELRO_END 0xc) + 0x000000000804988b . = (. DATA_SEGMENT_RELRO_END 0xc) .got.plt *(.got.plt) -.data 0x0000000008049864 0x0 +.data 0x000000000804988c 0x0 *(.data .data.* .gnu.linkonce.d.*) - .data 0x0000000008049864 0x0 tmp/amd64-darwin.macho-fold.o - .data 0x0000000008049864 0x0 tmp/amd64-darwin.macho-main.o + .data 0x000000000804988c 0x0 tmp/amd64-darwin.macho-fold.o + .data 0x000000000804988c 0x0 tmp/amd64-darwin.macho-main.o *(.gnu.linkonce.d.*personality*) .data1 *(.data1) - 0x0000000008049864 _edata = . - 0x0000000008049864 PROVIDE (edata, .) - 0x0000000008049864 __bss_start = . + 0x000000000804988c _edata = . + 0x000000000804988c PROVIDE (edata, .) + 0x000000000804988c __bss_start = . -.bss 0x0000000008049864 0x0 +.bss 0x000000000804988c 0x0 *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) - .bss 0x0000000008049864 0x0 tmp/amd64-darwin.macho-fold.o - .bss 0x0000000008049864 0x0 tmp/amd64-darwin.macho-main.o + .bss 0x000000000804988c 0x0 tmp/amd64-darwin.macho-fold.o + .bss 0x000000000804988c 0x0 tmp/amd64-darwin.macho-main.o *(COMMON) - 0x0000000008049864 . = ALIGN ((. != 0x0)?0x4:0x1) - 0x0000000008049864 . = ALIGN (0x4) - 0x0000000008049864 . = ALIGN (0x4) - 0x0000000008049864 _end = . - 0x0000000008049864 PROVIDE (end, .) - 0x0000000008049864 . = DATA_SEGMENT_END (.) + 0x000000000804988c . = ALIGN ((. != 0x0)?0x4:0x1) + 0x000000000804988c . = ALIGN (0x4) + 0x000000000804988c . = ALIGN (0x4) + 0x000000000804988c _end = . + 0x000000000804988c PROVIDE (end, .) + 0x000000000804988c . = DATA_SEGMENT_END (.) .stab *(.stab) diff --git a/src/stub/tmp/arm.v5a-darwin.macho-fold.map b/src/stub/tmp/arm.v5a-darwin.macho-fold.map index 7dccfecc..9436d249 100644 --- a/src/stub/tmp/arm.v5a-darwin.macho-fold.map +++ b/src/stub/tmp/arm.v5a-darwin.macho-fold.map @@ -72,7 +72,7 @@ LOAD tmp/arm.v5a-darwin.macho-main.o .plt *(.plt) -.text 0x0000000008048000 0x978 +.text 0x0000000008048000 0x9b8 *(.text .stub .text.* .gnu.linkonce.t.*) .text 0x0000000008048000 0x22c tmp/arm.v5a-darwin.macho-fold.o 0x0000000008048128 munmap @@ -90,17 +90,17 @@ LOAD tmp/arm.v5a-darwin.macho-main.o 0x00000000080481d0 div10 0x000000000804813c mprotect 0x0000000008048100 close - .text 0x000000000804822c 0x74c tmp/arm.v5a-darwin.macho-main.o + .text 0x000000000804822c 0x78c tmp/arm.v5a-darwin.macho-main.o 0x00000000080483e4 do_xmap - 0x00000000080487c0 upx_main + 0x0000000008048800 upx_main *(.text.*personality*) *(.gnu.warning) .fini *(.fini) - 0x0000000008048978 PROVIDE (__etext, .) - 0x0000000008048978 PROVIDE (_etext, .) - 0x0000000008048978 PROVIDE (etext, .) + 0x00000000080489b8 PROVIDE (__etext, .) + 0x00000000080489b8 PROVIDE (_etext, .) + 0x00000000080489b8 PROVIDE (etext, .) .rodata *(.rodata .rodata.* .gnu.linkonce.r.*) @@ -116,8 +116,8 @@ LOAD tmp/arm.v5a-darwin.macho-main.o .gcc_except_table *(.gcc_except_table .gcc_except_table.*) - 0x0000000008048978 . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff)) - 0x0000000008049978 . = (0x1000 DATA_SEGMENT_ALIGN 0x1000) + 0x00000000080489b8 . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff)) + 0x00000000080499b8 . = (0x1000 DATA_SEGMENT_ALIGN 0x1000) .eh_frame *(.eh_frame) @@ -132,22 +132,22 @@ LOAD tmp/arm.v5a-darwin.macho-main.o *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) -.preinit_array 0x0000000008049978 0x0 - 0x0000000008049978 PROVIDE (__preinit_array_start, .) +.preinit_array 0x00000000080499b8 0x0 + 0x00000000080499b8 PROVIDE (__preinit_array_start, .) *(.preinit_array) - 0x0000000008049978 PROVIDE (__preinit_array_end, .) + 0x00000000080499b8 PROVIDE (__preinit_array_end, .) -.init_array 0x0000000008049978 0x0 - 0x0000000008049978 PROVIDE (__init_array_start, .) +.init_array 0x00000000080499b8 0x0 + 0x00000000080499b8 PROVIDE (__init_array_start, .) *(SORT(.init_array.*)) *(.init_array) - 0x0000000008049978 PROVIDE (__init_array_end, .) + 0x00000000080499b8 PROVIDE (__init_array_end, .) -.fini_array 0x0000000008049978 0x0 - 0x0000000008049978 PROVIDE (__fini_array_start, .) +.fini_array 0x00000000080499b8 0x0 + 0x00000000080499b8 PROVIDE (__fini_array_start, .) *(.fini_array) *(SORT(.fini_array.*)) - 0x0000000008049978 PROVIDE (__fini_array_end, .) + 0x00000000080499b8 PROVIDE (__fini_array_end, .) .ctors *crtbegin*.o(.ctors) @@ -173,35 +173,35 @@ LOAD tmp/arm.v5a-darwin.macho-main.o .got *(.got) - 0x0000000008049978 . = (. DATA_SEGMENT_RELRO_END 0xc) + 0x00000000080499b8 . = (. DATA_SEGMENT_RELRO_END 0xc) .got.plt *(.got.plt) -.data 0x0000000008049978 0x0 +.data 0x00000000080499b8 0x0 *(.data .data.* .gnu.linkonce.d.*) - .data 0x0000000008049978 0x0 tmp/arm.v5a-darwin.macho-fold.o - .data 0x0000000008049978 0x0 tmp/arm.v5a-darwin.macho-main.o + .data 0x00000000080499b8 0x0 tmp/arm.v5a-darwin.macho-fold.o + .data 0x00000000080499b8 0x0 tmp/arm.v5a-darwin.macho-main.o *(.gnu.linkonce.d.*personality*) .data1 *(.data1) - 0x0000000008049978 _edata = . - 0x0000000008049978 PROVIDE (edata, .) - 0x0000000008049978 __bss_start = . + 0x00000000080499b8 _edata = . + 0x00000000080499b8 PROVIDE (edata, .) + 0x00000000080499b8 __bss_start = . -.bss 0x0000000008049978 0x0 +.bss 0x00000000080499b8 0x0 *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) - .bss 0x0000000008049978 0x0 tmp/arm.v5a-darwin.macho-fold.o - .bss 0x0000000008049978 0x0 tmp/arm.v5a-darwin.macho-main.o + .bss 0x00000000080499b8 0x0 tmp/arm.v5a-darwin.macho-fold.o + .bss 0x00000000080499b8 0x0 tmp/arm.v5a-darwin.macho-main.o *(COMMON) - 0x0000000008049978 . = ALIGN ((. != 0x0)?0x4:0x1) - 0x0000000008049978 . = ALIGN (0x4) - 0x0000000008049978 . = ALIGN (0x4) - 0x0000000008049978 _end = . - 0x0000000008049978 PROVIDE (end, .) - 0x0000000008049978 . = DATA_SEGMENT_END (.) + 0x00000000080499b8 . = ALIGN ((. != 0x0)?0x4:0x1) + 0x00000000080499b8 . = ALIGN (0x4) + 0x00000000080499b8 . = ALIGN (0x4) + 0x00000000080499b8 _end = . + 0x00000000080499b8 PROVIDE (end, .) + 0x00000000080499b8 . = DATA_SEGMENT_END (.) .stab *(.stab) diff --git a/src/stub/tmp/arm64-darwin.macho-fold.map b/src/stub/tmp/arm64-darwin.macho-fold.map index ff166013..4ab19b6e 100644 --- a/src/stub/tmp/arm64-darwin.macho-fold.map +++ b/src/stub/tmp/arm64-darwin.macho-fold.map @@ -67,7 +67,7 @@ LOAD tmp/arm64-darwin.macho-main.o *(.iplt) .iplt 0x0000000000400080 0x0 tmp/arm64-darwin.macho-fold.o -.text 0x0000000000400078 0x89c +.text 0x0000000000400078 0x8d8 *(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.exit .text.exit.*) *(.text.startup .text.startup.*) @@ -87,16 +87,16 @@ LOAD tmp/arm64-darwin.macho-main.o 0x000000000040018c mmap 0x0000000000400198 pread 0x00000000004001a4 bswap - .text 0x00000000004001d0 0x744 tmp/arm64-darwin.macho-main.o + .text 0x00000000004001d0 0x780 tmp/arm64-darwin.macho-main.o 0x000000000040037c do_xmap - 0x0000000000400738 upx_main + 0x0000000000400774 upx_main *(.gnu.warning) .fini *(SORT(.fini)) - 0x0000000000400914 PROVIDE (__etext, .) - 0x0000000000400914 PROVIDE (_etext, .) - 0x0000000000400914 PROVIDE (etext, .) + 0x0000000000400950 PROVIDE (__etext, .) + 0x0000000000400950 PROVIDE (_etext, .) + 0x0000000000400950 PROVIDE (etext, .) .rodata *(.rodata .rodata.* .gnu.linkonce.r.*) @@ -107,9 +107,9 @@ LOAD tmp/arm64-darwin.macho-main.o .eh_frame_hdr *(.eh_frame_hdr) -.eh_frame 0x0000000000400918 0x108 +.eh_frame 0x0000000000400950 0x110 *(.eh_frame) - .eh_frame 0x0000000000400918 0x108 tmp/arm64-darwin.macho-main.o + .eh_frame 0x0000000000400950 0x110 tmp/arm64-darwin.macho-main.o 0x100 (size before relaxing) .gcc_except_table @@ -117,8 +117,8 @@ LOAD tmp/arm64-darwin.macho-main.o .exception_ranges *(.exception_ranges .exception_ranges*) - 0x0000000000400a20 . = (ALIGN (0x10000) - ((0x10000 - .) & 0xffff)) - 0x0000000000410a20 . = DATA_SEGMENT_ALIGN (0x10000, 0x1000) + 0x0000000000400a60 . = (ALIGN (0x10000) - ((0x10000 - .) & 0xffff)) + 0x0000000000410a60 . = DATA_SEGMENT_ALIGN (0x10000, 0x1000) .eh_frame *(.eh_frame) @@ -136,22 +136,22 @@ LOAD tmp/arm64-darwin.macho-main.o *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) -.preinit_array 0x0000000000410a20 0x0 - 0x0000000000410a20 PROVIDE (__preinit_array_start, .) +.preinit_array 0x0000000000410a60 0x0 + 0x0000000000410a60 PROVIDE (__preinit_array_start, .) *(.preinit_array) - 0x0000000000410a20 PROVIDE (__preinit_array_end, .) + 0x0000000000410a60 PROVIDE (__preinit_array_end, .) -.init_array 0x0000000000410a20 0x0 - 0x0000000000410a20 PROVIDE (__init_array_start, .) +.init_array 0x0000000000410a60 0x0 + 0x0000000000410a60 PROVIDE (__init_array_start, .) *(SORT(.init_array.*)) *(.init_array) - 0x0000000000410a20 PROVIDE (__init_array_end, .) + 0x0000000000410a60 PROVIDE (__init_array_end, .) -.fini_array 0x0000000000410a20 0x0 - 0x0000000000410a20 PROVIDE (__fini_array_start, .) +.fini_array 0x0000000000410a60 0x0 + 0x0000000000410a60 PROVIDE (__fini_array_start, .) *(SORT(.fini_array.*)) *(.fini_array) - 0x0000000000410a20 PROVIDE (__fini_array_end, .) + 0x0000000000410a60 PROVIDE (__fini_array_end, .) .ctors *crtbegin.o(.ctors) @@ -180,43 +180,43 @@ LOAD tmp/arm64-darwin.macho-main.o .got *(.got) *(.igot) - 0x0000000000410a20 . = DATA_SEGMENT_RELRO_END (., 0x18) + 0x0000000000410a60 . = DATA_SEGMENT_RELRO_END (., 0x18) -.got.plt 0x0000000000410a20 0x0 +.got.plt 0x0000000000410a60 0x0 *(.got.plt) *(.igot.plt) - .igot.plt 0x0000000000410a20 0x0 tmp/arm64-darwin.macho-fold.o + .igot.plt 0x0000000000410a60 0x0 tmp/arm64-darwin.macho-fold.o -.data 0x0000000000410a20 0x0 - 0x0000000000410a20 PROVIDE (__data_start, .) +.data 0x0000000000410a60 0x0 + 0x0000000000410a60 PROVIDE (__data_start, .) *(.data .data.* .gnu.linkonce.d.*) - .data 0x0000000000410a20 0x0 tmp/arm64-darwin.macho-fold.o - .data 0x0000000000410a20 0x0 tmp/arm64-darwin.macho-main.o + .data 0x0000000000410a60 0x0 tmp/arm64-darwin.macho-fold.o + .data 0x0000000000410a60 0x0 tmp/arm64-darwin.macho-main.o .data1 *(.data1) - 0x0000000000410a20 _edata = . - 0x0000000000410a20 PROVIDE (edata, .) - 0x0000000000410a20 . = . - 0x0000000000410a20 __bss_start = . - 0x0000000000410a20 __bss_start__ = . + 0x0000000000410a60 _edata = . + 0x0000000000410a60 PROVIDE (edata, .) + 0x0000000000410a60 . = . + 0x0000000000410a60 __bss_start = . + 0x0000000000410a60 __bss_start__ = . -.bss 0x0000000000410a20 0x0 +.bss 0x0000000000410a60 0x0 *(.dynbss) *(.bss .bss.* .gnu.linkonce.b.*) - .bss 0x0000000000410a20 0x0 tmp/arm64-darwin.macho-fold.o - .bss 0x0000000000410a20 0x0 tmp/arm64-darwin.macho-main.o + .bss 0x0000000000410a60 0x0 tmp/arm64-darwin.macho-fold.o + .bss 0x0000000000410a60 0x0 tmp/arm64-darwin.macho-main.o *(COMMON) - 0x0000000000410a20 . = ALIGN ((. != 0x0)?0x8:0x1) - 0x0000000000410a20 _bss_end__ = . - 0x0000000000410a20 __bss_end__ = . - 0x0000000000410a20 . = ALIGN (0x8) - 0x0000000000410a20 . = SEGMENT_START ("ldata-segment", .) - 0x0000000000410a20 . = ALIGN (0x8) - 0x0000000000410a20 __end__ = . - 0x0000000000410a20 _end = . - 0x0000000000410a20 PROVIDE (end, .) - 0x0000000000410a20 . = DATA_SEGMENT_END (.) + 0x0000000000410a60 . = ALIGN ((. != 0x0)?0x8:0x1) + 0x0000000000410a60 _bss_end__ = . + 0x0000000000410a60 __bss_end__ = . + 0x0000000000410a60 . = ALIGN (0x8) + 0x0000000000410a60 . = SEGMENT_START ("ldata-segment", .) + 0x0000000000410a60 . = ALIGN (0x8) + 0x0000000000410a60 __end__ = . + 0x0000000000410a60 _end = . + 0x0000000000410a60 PROVIDE (end, .) + 0x0000000000410a60 . = DATA_SEGMENT_END (.) .stab *(.stab)