From 59f18b9d9f9a0b652964f4396812950a162f6588 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Fri, 22 Dec 2017 23:07:03 -0800 Subject: [PATCH] stash work-in-progress modified: stub/src/amd64-darwin.macho-main.c modified: stub/src/arm.v5a-darwin.macho-entry.S modified: stub/src/arm.v5a-darwin.macho-fold.S modified: stub/src/arm64-darwin.macho-entry.S modified: stub/src/arm64-darwin.macho-fold.S --- src/stub/amd64-darwin.macho-fold.h | 378 ++++++++++---------- src/stub/arm.v5a-darwin.macho-entry.h | 10 +- src/stub/arm.v5a-darwin.macho-fold.h | 391 +++++++++++++++------ src/stub/arm64-darwin.macho-entry.h | 6 +- src/stub/arm64-darwin.macho-fold.h | 326 ++++++++--------- src/stub/src/amd64-darwin.macho-main.c | 264 +++++++------- src/stub/src/arm.v5a-darwin.macho-entry.S | 12 +- src/stub/src/arm.v5a-darwin.macho-fold.S | 41 ++- src/stub/src/arm64-darwin.macho-entry.S | 2 +- src/stub/src/arm64-darwin.macho-fold.S | 2 +- src/stub/tmp/amd64-darwin.macho-fold.map | 68 ++-- src/stub/tmp/arm.v5a-darwin.macho-fold.map | 96 ++--- src/stub/tmp/arm64-darwin.macho-fold.map | 88 ++--- 13 files changed, 964 insertions(+), 720 deletions(-) diff --git a/src/stub/amd64-darwin.macho-fold.h b/src/stub/amd64-darwin.macho-fold.h index de5363a1..74f42a72 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, 3813 (0xee5) bytes + created from amd64-darwin.macho-fold.bin, 3977 (0xf89) bytes This file is part of the UPX executable compressor. @@ -31,11 +31,11 @@ */ -#define STUB_AMD64_DARWIN_MACHO_FOLD_SIZE 3813 -#define STUB_AMD64_DARWIN_MACHO_FOLD_ADLER32 0x64d1cde8 -#define STUB_AMD64_DARWIN_MACHO_FOLD_CRC32 0x84d8a714 +#define STUB_AMD64_DARWIN_MACHO_FOLD_SIZE 3977 +#define STUB_AMD64_DARWIN_MACHO_FOLD_ADLER32 0x2226023d +#define STUB_AMD64_DARWIN_MACHO_FOLD_CRC32 0x75b9482f -unsigned char stub_amd64_darwin_macho_fold[3813] = { +unsigned char stub_amd64_darwin_macho_fold[3977] = { /* 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[3813] = { /* 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,247, 11, 0, 0, 72,139, 40, 72,139, +/* 0x0070 */ 41,204, 72,137,226, 80,232,149, 12, 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, @@ -79,15 +79,15 @@ unsigned char stub_amd64_darwin_macho_fold[3813] = { /* 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, +/* 0x02b0 */ 255,196,132,219,117, 11, 77,133,237, 15,132,226, 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, +/* 0x02f0 */ 15,132,171, 1, 0, 0, 65, 15,190, 4, 36, 73,255,196,131,248, +/* 0x0300 */ 115, 15,132, 73, 1, 0, 0,127, 28,131,248,100,116,108,127, 10, +/* 0x0310 */ 133,192, 15,132,137, 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, +/* 0x0330 */ 0, 0, 0, 73,141,116, 36,255,186, 1, 0, 0, 0,233, 78, 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, @@ -96,183 +96,193 @@ unsigned char stub_amd64_darwin_macho_fold[3813] = { /* 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, +/* 0x03c0 */ 72, 99,208,233,200, 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, +/* 0x0410 */ 208,235,125,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, 72,139, 68, 36, -/* 0x0850 */ 88,199, 68, 36, 20, 0, 0, 0, 0, 59, 80, 16, 15,131,221, 3, -/* 0x0860 */ 0, 0, 65,139, 69, 0,131,248, 25, 15,133, 52, 3, 0, 0, 73, -/* 0x0870 */ 131,125, 32, 0, 15,132, 41, 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, 3, -/* 0x09e0 */ 72,137, 68, 36, 24, 72,137,197, 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,131,124, 36, 72, 0, 15,149,194, 49,192, 77,133,255, 15, -/* 0x0a60 */ 149,192,133,194,116,120, 73,131,125, 40, 0,117,113, 65,131,125, -/* 0x0a70 */ 64, 0,116,106, 76,137,233, 72, 43, 76, 36, 88, 73,137,232,232, -/* 0x0a80 */ 37, 0, 0, 0,104, 97,116, 99,104, 61, 37,112, 32, 32,115,101, -/* 0x0a90 */ 99,112, 61, 37,112, 32, 32,115,101,103,112, 61, 37,112, 32, 32, -/* 0x0aa0 */ 109,104,100,114, 61, 37,112, 10, 0, 95, 72,131,225,252, 72,141, -/* 0x0ab0 */ 76, 13, 0, 72,141, 81, 72,139, 66, 48,193,232, 2,137,192, 72, -/* 0x0ac0 */ 141, 68,133, 0, 72,141, 88,252,199, 64,252,144, 15, 5,195, 49, -/* 0x0ad0 */ 192, 72,137,222,232, 62,247,255,255, 72,137, 92, 36, 32, 76,137, -/* 0x0ae0 */ 251, 74,141, 84, 61, 0, 72,247,219,129,227,255, 15, 0, 0, 72, -/* 0x0af0 */ 137,216, 72,133,219,116, 11,198, 2, 0, 72,255,194, 72,255,200, -/* 0x0b00 */ 235,243, 77,133,255,116, 29, 65,139, 85, 60, 76,137,254, 72,137, -/* 0x0b10 */ 239,232,158,245,255,255,133,192,116, 10,191, 10, 0, 0, 0,232, -/* 0x0b20 */ 73,250,255,255, 73,141, 4, 31, 72, 1,197, 72, 59,108, 36, 8, -/* 0x0b30 */ 115, 67, 72,133,237, 15,132,225, 0, 0, 0, 72, 41,108, 36, 8, -/* 0x0b40 */ 65,139, 85, 60, 69, 49,201, 72,139,116, 36, 8, 65,131,200,255, -/* 0x0b50 */ 185, 50, 0, 0, 0, 72,137,239,232,107,245,255,255, 72, 57,197, -/* 0x0b60 */ 15,132,182, 0, 0, 0,191, 9, 0, 0, 0,232,253,249,255,255, -/* 0x0b70 */ 233,167, 0, 0, 0, 72,131,124, 36, 72, 0, 15,132,155, 0, 0, -/* 0x0b80 */ 0, 73,131,199, 3, 65,129,231,255, 15, 0, 0, 73,131,255, 3, -/* 0x0b90 */ 15,135,134, 0, 0, 0, 76,137,254, 72,137,239,232, 23,245,255, -/* 0x0ba0 */ 255,235,121,131,232, 4,131,248, 1,119,113, 49,192, 76,137,238, -/* 0x0bb0 */ 232, 20, 0, 0, 0,116,104,114,101, 97,100, 95, 99,111,109,109, -/* 0x0bc0 */ 97,110,100, 61, 32, 37,112, 10, 0, 95,232, 72,246,255,255, 65, -/* 0x0bd0 */ 131,125, 8, 4,117, 70, 73,141, 93, 16, 72,139, 84, 36, 24, 49, -/* 0x0be0 */ 192,232, 28, 0, 0, 0,116,104,114,101, 97,100, 95,115,116, 97, -/* 0x0bf0 */ 116,101, 61, 32, 37,112, 32, 32,114,101,108,111, 99, 61, 37,112, -/* 0x0c00 */ 10, 0, 95, 72,137,222,232, 12,246,255,255, 72,139, 84, 36, 24, -/* 0x0c10 */ 73, 1,149,144, 0, 0, 0, 72,137, 92, 36, 32, 65,139, 69, 4, -/* 0x0c20 */ 72,139, 76, 36, 88,255, 68, 36, 20,139, 92, 36, 20,193,232, 2, -/* 0x0c30 */ 59, 89, 16,137,192, 77,141,108,133, 0,233, 29,252,255,255, 72, -/* 0x0c40 */ 139,116, 36, 32, 49,192,232, 13, 0, 0, 0,100,111, 95,120,109, -/* 0x0c50 */ 97,112, 61, 32, 37,112, 10, 0, 95,232,185,245,255,255, 72,139, -/* 0x0c60 */ 68, 36, 32, 72,131,196,120, 91, 93, 65, 92, 65, 93, 65, 94, 65, -/* 0x0c70 */ 95,195, 65, 87, 77,137,207, 65, 86, 65, 85, 77,137,197, 65, 84, -/* 0x0c80 */ 85, 72,137,213, 72,141, 87, 24, 83, 72,131,236,104, 68,139, 79, -/* 0x0c90 */ 24, 72,137,116, 36, 88, 72,139, 68, 36, 88, 76,141,116, 36, 48, -/* 0x0ca0 */ 76,139,164, 36,160, 0, 0, 0, 72,137, 76, 36, 16, 76,137,249, -/* 0x0cb0 */ 72,137, 84, 36, 72, 72,137, 84, 36, 40, 77,137,240, 72,131,232, -/* 0x0cc0 */ 24, 76,137, 76, 36, 48, 72,139,116, 36, 88, 72,137, 68, 36, 64, -/* 0x0cd0 */ 72,137, 68, 36, 32, 72,199, 68, 36, 8, 0, 0, 0, 0,199, 68, -/* 0x0ce0 */ 36, 4, 0, 0, 0, 0, 72,137,108, 36, 56, 65,255, 52, 36,232, -/* 0x0cf0 */ 88, 0, 0, 0,117,112,120, 95,109, 97,105,110, 32,115,122, 99, -/* 0x0d00 */ 61, 37,120, 32, 32,102, 95,100,101, 99, 61, 37,112, 32, 32,102, -/* 0x0d10 */ 95,117,110,102, 61, 37,112, 32, 32, 32, 32,120,111, 61, 37,112, -/* 0x0d20 */ 40, 37,120, 32, 37,112, 41, 32, 32,120,105, 61, 37,112, 40, 37, -/* 0x0d30 */ 120, 32, 37,112, 41, 32, 32,109,104,100,114,112,112, 61, 37,112, -/* 0x0d40 */ 32, 32,109,104,100,114,112, 61, 37,112, 10, 0, 95, 65, 84, 82, -/* 0x0d50 */ 76,137,234, 80, 49,192, 72,141, 92, 36, 96, 83, 85,232,181,244, -/* 0x0d60 */ 255,255, 72,131,196, 48, 76,137,234, 76,137,246, 49,201, 72,137, -/* 0x0d70 */ 223,232, 29,248,255,255, 80, 77,137,233, 77,137,224,131,201,255, -/* 0x0d80 */ 49,246, 72,137,239, 72,141, 84, 36, 40, 65, 87,232,206,249,255, -/* 0x0d90 */ 255, 65, 92, 65, 94,139,117, 16, 72,141, 85, 32, 73,137,197, 49, -/* 0x0da0 */ 201, 57,241, 15,131, 40, 1, 0, 0,131, 58, 14, 15,133, 18, 1, -/* 0x0db0 */ 0, 0,139, 66, 8,232, 10, 0, 0, 0,100,121,108,100, 61, 32, -/* 0x0dc0 */ 37,115, 10, 0, 95, 72,141, 28, 2, 49,192, 72,137,222,232, 68, -/* 0x0dd0 */ 244,255,255, 49,210, 49,246, 49,192, 72,137,223,232,227,242,255, -/* 0x0de0 */ 255,133,192, 65,137,196,121, 10,191, 18, 0, 0, 0,232,123,247, -/* 0x0df0 */ 255,255,139, 76, 36, 4, 72,139, 84, 36, 16, 72,137,238, 68,137, -/* 0x0e00 */ 231,232,182,242,255,255, 72, 57, 68, 36, 16,116, 10,191, 19, 0, -/* 0x0e10 */ 0, 0,232, 86,247,255,255,139, 69, 0, 61,202,254,186,190,116, -/* 0x0e20 */ 7, 61,190,186,254,202,117, 49, 72, 15,182,117, 7, 72,137,239, -/* 0x0e30 */ 72,141, 93, 8, 72,107,246, 20,131,198, 8,232, 92,242,255,255, -/* 0x0e40 */ 139, 69, 4, 49,201, 57,193,115, 16,129, 59, 7, 0, 0, 1,116, -/* 0x0e50 */ 103,255,193, 72,131,195, 20,235,236, 72,199, 68, 36, 24, 0, 0, -/* 0x0e60 */ 0, 0, 83, 69, 49,201, 68,137,225, 49,210,106, 0,139,116, 36, -/* 0x0e70 */ 20, 72,137,239, 76,141, 68, 36, 40,232,225,248,255,255, 72,137, -/* 0x0e80 */ 68, 36, 24, 72,137,198, 49,192, 65, 90, 65, 91,232, 15, 0, 0, -/* 0x0e90 */ 0,104, 97,116, 99,104, 32,112,116,114, 61, 32, 37,112, 10, 0, -/* 0x0ea0 */ 95,232,113,243,255,255, 72,139, 68, 36, 8, 68,137,231, 76,137, -/* 0x0eb0 */ 40,232, 10,242,255,255,235, 25,139, 91, 8,137, 92, 36, 4,233, -/* 0x0ec0 */ 46,255,255,255,139, 66, 4,255,193, 72, 1,194,233,208,254,255, -/* 0x0ed0 */ 255, 72,139, 68, 36, 8, 72,131,196,104, 91, 93, 65, 92, 65, 93, -/* 0x0ee0 */ 65, 94, 65, 95,195 +/* 0x0440 */ 66, 8, 72,137, 68, 36, 8,139, 58,186, 2, 0, 0, 0,235,180, +/* 0x0450 */ 139, 4, 36,131,248, 48,115, 15,137,194, 72, 3, 84, 36, 16,131, +/* 0x0460 */ 192, 8,137, 4, 36,235, 14, 72,139, 84, 36, 8, 72,141, 66, 8, +/* 0x0470 */ 72,137, 68, 36, 8, 72,139, 50, 72,133,246, 72,137,242,116, 13, +/* 0x0480 */ 128, 62, 0,116, 8, 72,255,194,128, 58, 0,235,246, 72, 41,242, +/* 0x0490 */ 191, 2, 0, 0, 0,232, 18,252,255,255, 1,197,233, 9,254,255, +/* 0x04a0 */ 255, 72,129,196,248, 0, 0, 0,137,232, 91, 93, 65, 92, 65, 93, +/* 0x04b0 */ 195, 65, 85, 73,137,209, 73,137,240, 49,192, 65, 84, 73,137,244, +/* 0x04c0 */ 85, 72,137,213, 83, 72,137,251, 72,137,222, 81, 76,139,111, 8, +/* 0x04d0 */ 72,139, 19,232, 23, 0, 0, 0,120,114,101, 97,100, 32, 37,112, +/* 0x04e0 */ 40, 37,120, 32, 37,112, 41, 32, 37,112, 32, 37,120, 10, 0, 95, +/* 0x04f0 */ 76,137,233,232, 31,253,255,255, 72,139, 19, 72, 57,234,115, 63, +/* 0x0500 */ 72,139, 75, 8, 73,137,233, 77,137,224, 72,137,222, 49,192,232, +/* 0x0510 */ 27, 0, 0, 0,120,114,101, 97,100,102, 97,105,108, 32, 37,112, +/* 0x0520 */ 40, 37,120, 32, 37,112, 41, 32, 37,112, 32, 37,120, 10, 0, 95, +/* 0x0530 */ 232,226,252,255,255,191,127, 0, 0, 0,232,113,251,255,255, 72, +/* 0x0540 */ 141, 85,255, 72,131,250,255,116, 20, 65, 15,182, 69, 0, 72,255, +/* 0x0550 */ 202, 73,255,197, 65,136, 4, 36, 73,255,196,235,230, 72, 1,107, +/* 0x0560 */ 8, 72, 41, 43, 88, 91, 93, 65, 92, 65, 93,195, 83,137,251, 49, +/* 0x0570 */ 192,137,222,232, 13, 0, 0, 0,101,114,114, 95,101,120,105,116, +/* 0x0580 */ 32, 37,120, 10, 0, 95,232,140,252,255,255,137,223,232, 30,251, +/* 0x0590 */ 255,255, 65, 85, 73,137,213, 73,137,240, 49,192, 65, 84, 73,137, +/* 0x05a0 */ 204, 85, 72,137,253,232, 49, 0, 0, 0,117,110,112, 97, 99,107, +/* 0x05b0 */ 69,120,116,101,110,116, 32,105,110, 61, 37,112, 40, 37,120, 32, +/* 0x05c0 */ 37,112, 41, 32, 32,111,117,116, 61, 37,112, 40, 37,120, 32, 37, +/* 0x05d0 */ 112, 41, 32, 32, 37,112, 32, 37,112, 10, 0, 95, 83, 72,137,243, +/* 0x05e0 */ 72,131,236, 48, 72,139, 77, 8, 65, 84, 82,255,118, 8, 76,139, +/* 0x05f0 */ 14, 72,139, 85, 0, 72,137,238,232, 26,252,255,255, 72,131,196, +/* 0x0600 */ 32, 72,131, 59, 0, 15,132, 72, 1, 0, 0, 72,141,116, 36, 16, +/* 0x0610 */ 186, 12, 0, 0, 0, 72,137,239,232,148,254,255,255,131,124, 36, +/* 0x0620 */ 16, 0,139, 68, 36, 20,117, 43, 61, 85, 80, 88, 33,116, 10,191, +/* 0x0630 */ 2, 0, 0, 0,232, 51,255,255,255, 72,131,125, 0, 0, 15,132, +/* 0x0640 */ 15, 1, 0, 0,191, 3, 0, 0, 0,232, 30,255,255,255,233, 0, +/* 0x0650 */ 1, 0, 0,133,192,117, 10,191, 4, 0, 0, 0,232, 11,255,255, +/* 0x0660 */ 255,139,116, 36, 20,139, 84, 36, 16, 57,214,119, 7,137,208, 72, +/* 0x0670 */ 59, 3,118, 61, 72,139, 11, 49,192,232, 35, 0, 0, 0,115,122, +/* 0x0680 */ 95, 99,112,114, 61, 37,120, 32, 32,115,122, 95,117,110, 99, 61, +/* 0x0690 */ 37,120, 32, 32,120,111, 45, 62,115,105,122,101, 61, 37,120, 10, +/* 0x06a0 */ 0, 95,232,112,251,255,255,191, 5, 0, 0, 0,232,187,254,255, +/* 0x06b0 */ 255,139,116, 36, 20,139, 68, 36, 16, 76,139, 75, 8, 57,198,115, +/* 0x06c0 */ 108,137,192, 68, 15,182, 68, 36, 24, 72,139,125, 8, 72,137, 68, +/* 0x06d0 */ 36, 8, 72,141, 76, 36, 8, 76,137,202, 65,255,213,133,192,117, +/* 0x06e0 */ 11,139, 68, 36, 16, 72, 57, 68, 36, 8,116, 10,191, 7, 0, 0, +/* 0x06f0 */ 0,232,118,254,255,255, 15,182, 76, 36, 25,132,201, 15,149,194, +/* 0x0700 */ 49,192, 77,133,228, 15,149,192,133,194,116, 19, 15,182, 84, 36, +/* 0x0710 */ 26, 15,182,201, 72,139,123, 8,139,116, 36, 8, 65,255,212,139, +/* 0x0720 */ 68, 36, 20, 72, 1, 69, 8, 72, 41, 69, 0,235, 13,137,242, 72, +/* 0x0730 */ 137,239, 76,137,206,232,119,253,255,255,139, 84, 36, 16, 72,139, +/* 0x0740 */ 3, 72, 1, 83, 8, 72, 41,208, 72,133,192, 72,137, 3,233,178, +/* 0x0750 */ 254,255,255, 72,131,196, 40, 91, 93, 65, 92, 65, 93,195, 65, 87, +/* 0x0760 */ 65, 86, 65, 85, 73,137,253, 73,131,197, 32, 65, 84, 85, 83, 72, +/* 0x0770 */ 131,236,120, 72,137, 84, 36, 72, 72,137,124, 36, 88, 49,210,232, +/* 0x0780 */ 61, 0, 0, 0,100,111, 95,120,109, 97,112, 32, 32,102,100,105, +/* 0x0790 */ 61, 37,120, 32, 32,109,104,100,114, 61, 37,112, 32, 32, 42,109, +/* 0x07a0 */ 104,100,114,112,112, 61, 37,112, 32, 32,120,105, 61, 37,112, 40, +/* 0x07b0 */ 37,120, 32, 37,112, 41, 32,102, 95,117,110,102, 61, 37,112, 10, +/* 0x07c0 */ 0, 95, 72,131,124, 36, 72, 0, 72,139,132, 36,176, 0, 0, 0, +/* 0x07d0 */ 137,116, 36, 84,137, 76, 36, 68, 76,137, 68, 36, 56, 76,137, 76, +/* 0x07e0 */ 36, 48, 72,137, 68, 36, 40, 72,199, 68, 36, 32, 0, 0, 0, 0, +/* 0x07f0 */ 72,199, 68, 36, 24, 0, 0, 0, 0,116, 8, 72,139, 76, 36, 72, +/* 0x0800 */ 72,139, 17, 49,201, 72,131,124, 36, 56, 0,116, 8, 72,139, 92, +/* 0x0810 */ 36, 56, 72,139, 11,255,116, 36, 40, 49,192, 72,131,124, 36, 80, +/* 0x0820 */ 0,116, 9, 72,139, 92, 36, 80, 72,139, 67, 8, 80, 73,137,209, +/* 0x0830 */ 76,139, 68, 36, 88, 72,139, 84, 36,104,139,116, 36, 84, 49,192, +/* 0x0840 */ 232,210,249,255,255, 65, 88, 65, 89, 49,210, 72,139, 68, 36, 88, +/* 0x0850 */ 199, 68, 36, 20, 0, 0, 0, 0, 59, 80, 16, 15,131,124, 4, 0, +/* 0x0860 */ 0, 65,139, 77, 4, 65,139, 85, 0, 49,192,139,116, 36, 20,232, +/* 0x0870 */ 27, 0, 0, 0, 32, 32, 35, 37,100, 32, 32, 99,109,100, 61, 37, +/* 0x0880 */ 120, 32, 32, 99,109,100,115,105,122,101, 61, 37,120, 10, 0, 95, +/* 0x0890 */ 232,130,249,255,255, 65,139, 69, 0,131,248, 25, 15,133,121, 3, +/* 0x08a0 */ 0, 0, 73,131,125, 32, 0, 15,132,110, 3, 0, 0, 73,131,125, +/* 0x08b0 */ 40, 0,117, 61, 73,131,125, 48, 0,116, 54, 72,139, 76, 36, 56, +/* 0x08c0 */ 72,139, 1, 72,133,192,116, 41,246, 64, 26, 32,116, 35, 73, 43, +/* 0x08d0 */ 69, 24,232, 10, 0, 0, 0,114,101,108,111, 99, 61, 37,112, 10, +/* 0x08e0 */ 0, 95, 72,137, 68, 36, 24, 72,137,198, 49,192,232, 38,249,255, +/* 0x08f0 */ 255, 73,139, 85, 48, 72,139,124, 36, 24, 72,137, 84, 36, 96, 73, +/* 0x0900 */ 3,125, 24, 73,137,214, 73,139, 93, 32, 72, 1,251, 72,137,253, +/* 0x0910 */ 72,137,124, 36,104, 72,137, 92, 36, 8, 72,137,251,129,227,255, +/* 0x0920 */ 15, 0, 0, 72, 41,221, 73, 1,222, 15,132, 33, 1, 0, 0, 72, +/* 0x0930 */ 131,124, 36, 72, 0, 73,141, 70, 3, 72,139, 76, 36, 56, 73, 15, +/* 0x0940 */ 68,198, 72,137, 4, 36, 72,139, 1, 72,131,248, 1, 25,192,131, +/* 0x0950 */ 224,240, 72,131,124, 36, 72, 0, 68,141,120, 18,117, 5, 72,133, +/* 0x0960 */ 210,117, 7, 65,129,207, 0, 16, 0, 0,131,203,255, 73,131,125, +/* 0x0970 */ 48, 0, 68,139,100, 36, 84, 15, 69, 92, 36, 68, 69, 3,101, 40, +/* 0x0980 */ 69,137,248,255,116, 36, 24,185, 3, 0, 0, 0, 72,137,238, 49, +/* 0x0990 */ 192,232, 67, 0, 0, 0,109,109, 97,112, 32, 32, 97,100,100,114, +/* 0x09a0 */ 61, 37,112, 32, 32,108,101,110, 61, 37,112, 32, 32,112,114,111, +/* 0x09b0 */ 116, 61, 37,120, 32, 32,102,108, 97,103,115, 61, 37,120, 32, 32, +/* 0x09c0 */ 102,100, 61, 37,100, 32, 32,111,102,102, 61, 37,112, 32, 32,114, +/* 0x09d0 */ 101,108,111, 99, 61, 37,112, 10, 0, 95, 65, 84, 72,139, 84, 36, +/* 0x09e0 */ 16, 65,137,217,232, 46,248,255,255, 94, 95, 65,137,216, 69,137, +/* 0x09f0 */ 225, 68,137,249,186, 3, 0, 0, 0, 72,137,239, 72,139, 52, 36, +/* 0x0a00 */ 232,195,246,255,255, 72,139, 92, 36, 56, 72,137,198, 72,131, 59, +/* 0x0a10 */ 0,117, 11, 72,137, 3, 72,137, 68, 36, 24, 72,137,197, 72, 57, +/* 0x0a20 */ 245,116, 45, 72,137,234, 49,192,232, 19, 0, 0, 0,109, 97,100, +/* 0x0a30 */ 100,114, 61, 37,112, 32, 32, 97,100,100,114, 61, 37,112, 10, 0, +/* 0x0a40 */ 95,232,209,247,255,255,191, 8, 0, 0, 0,232, 28,251,255,255, +/* 0x0a50 */ 72,131,124, 36, 72, 0,116, 47, 73,131,125, 48, 0,116, 40, 73, +/* 0x0a60 */ 131,125, 40, 0,117, 8, 72,139, 68, 36, 56, 72,137, 40, 72,139, +/* 0x0a70 */ 76, 36, 40, 72,139, 84, 36, 48, 72,141,116, 36, 96, 72,139,124, +/* 0x0a80 */ 36, 72,232, 11,251,255,255, 73,139, 77, 40, 69,139, 69, 64, 76, +/* 0x0a90 */ 137,242, 72,139,116, 36, 72, 49,192,232, 39, 0, 0, 0,120,105, +/* 0x0aa0 */ 61, 37,112, 32, 32,109,108,101,110, 61, 37,112, 32, 32,102,105, +/* 0x0ab0 */ 108,101,111,102,102, 61, 37,112, 32, 32,110,115,101, 99,116,115, +/* 0x0ac0 */ 61, 37,100, 10, 0, 95,232, 76,247,255,255, 72,131,124, 36, 72, +/* 0x0ad0 */ 0, 15,149,194, 49,192, 77,133,246, 15,149,192,133,194,116,115, +/* 0x0ae0 */ 73,131,125, 40, 0,117,108, 65,131,125, 64, 0,116,101, 76,137, +/* 0x0af0 */ 233, 72, 43, 76, 36, 88, 73,137,232,232, 37, 0, 0, 0,104, 97, +/* 0x0b00 */ 116, 99,104, 61, 37,112, 32, 32,115,101, 99,112, 61, 37,112, 32, +/* 0x0b10 */ 32,115,101,103,112, 61, 37,112, 32, 32,109,104,100,114, 61, 37, +/* 0x0b20 */ 112, 10, 0, 95, 72,131,225,252, 72,141, 76, 13, 0, 72,141, 81, +/* 0x0b30 */ 72,139, 66, 48,193,232, 2,255,200, 72,141, 92,133, 0, 49,192, +/* 0x0b40 */ 199, 3,144, 15, 5,195, 72,137,222,232,201,246,255,255, 72,137, +/* 0x0b50 */ 92, 36, 32, 76,137,243, 74,141, 84, 53, 0, 72,247,219,129,227, +/* 0x0b60 */ 255, 15, 0, 0, 72,137,216, 72,133,219,116, 11,198, 2, 0, 72, +/* 0x0b70 */ 255,194, 72,255,200,235,243, 77,133,246,116, 29, 65,139, 85, 60, +/* 0x0b80 */ 76,137,246, 72,137,239,232, 41,245,255,255,133,192,116, 10,191, +/* 0x0b90 */ 10, 0, 0, 0,232,211,249,255,255, 73,141, 4, 30, 72, 1,197, +/* 0x0ba0 */ 72, 59,108, 36, 8,115, 67, 72,133,237, 15,132, 10, 1, 0, 0, +/* 0x0bb0 */ 72, 41,108, 36, 8, 65,139, 85, 60, 69, 49,201, 72,139,116, 36, +/* 0x0bc0 */ 8, 65,131,200,255,185, 18, 16, 0, 0, 72,137,239,232,246,244, +/* 0x0bd0 */ 255,255, 72, 57,197, 15,132,223, 0, 0, 0,191, 9, 0, 0, 0, +/* 0x0be0 */ 232,135,249,255,255,233,208, 0, 0, 0, 72,131,124, 36, 72, 0, +/* 0x0bf0 */ 15,132,196, 0, 0, 0, 73,131,198, 3, 65,129,230,255, 15, 0, +/* 0x0c00 */ 0, 73,131,254, 3, 15,135,175, 0, 0, 0, 76,137,246, 72,137, +/* 0x0c10 */ 239,232,162,244,255,255,233,159, 0, 0, 0, 72,131,124, 36, 72, +/* 0x0c20 */ 0, 15,133,147, 0, 0, 0,131,232, 4,131,248, 1, 15,135,135, +/* 0x0c30 */ 0, 0, 0, 76,137,238, 49,192, 73,141, 93, 16,232, 20, 0, 0, +/* 0x0c40 */ 0,116,104,114,101, 97,100, 95, 99,111,109,109, 97,110,100, 61, +/* 0x0c50 */ 32, 37,112, 10, 0, 95,232,188,245,255,255, 65,139, 85, 8, 65, +/* 0x0c60 */ 139, 77, 12, 72,137,222, 76,139, 68, 36, 24, 49,192,232, 49, 0, +/* 0x0c70 */ 0, 0,116,104,114,101, 97,100, 95,115,116, 97,116,101, 61, 32, +/* 0x0c80 */ 37,112, 32, 32,102,108, 97,118,111,114, 61, 37,100, 32, 32, 99, +/* 0x0c90 */ 111,117,110,116, 61, 37,120, 32, 32,114,101,108,111, 99, 61, 37, +/* 0x0ca0 */ 112, 10, 0, 95,232,110,245,255,255, 72,139, 84, 36, 24, 73, 1, +/* 0x0cb0 */ 149,144, 0, 0, 0, 72,137, 92, 36, 32, 65,139, 69, 4, 72,139, +/* 0x0cc0 */ 76, 36, 88,255, 68, 36, 20,139, 92, 36, 20,193,232, 2, 59, 89, +/* 0x0cd0 */ 16,137,192, 77,141,108,133, 0,233,126,251,255,255, 72,139,116, +/* 0x0ce0 */ 36, 32, 49,192,232, 13, 0, 0, 0,100,111, 95,120,109, 97,112, +/* 0x0cf0 */ 61, 32, 37,112, 10, 0, 95,232, 27,245,255,255, 72,139, 68, 36, +/* 0x0d00 */ 32, 72,131,196,120, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195, +/* 0x0d10 */ 65, 87, 77,137,207, 65, 86, 65, 85, 77,137,197, 65, 84, 85, 72, +/* 0x0d20 */ 137,213, 72,141, 87, 24, 83, 72,131,236,104, 68,139, 79, 24, 72, +/* 0x0d30 */ 137,116, 36, 88, 72,139, 68, 36, 88, 76,141,116, 36, 48, 76,139, +/* 0x0d40 */ 164, 36,160, 0, 0, 0, 72,137, 76, 36, 16, 76,137,249, 72,137, +/* 0x0d50 */ 84, 36, 72, 72,137, 84, 36, 40, 77,137,240, 72,131,232, 24, 76, +/* 0x0d60 */ 137, 76, 36, 48, 72,139,116, 36, 88, 72,137, 68, 36, 64, 72,137, +/* 0x0d70 */ 68, 36, 32, 72,199, 68, 36, 8, 0, 0, 0, 0,199, 68, 36, 4, +/* 0x0d80 */ 0, 0, 0, 0, 72,137,108, 36, 56, 65,255, 52, 36,232, 88, 0, +/* 0x0d90 */ 0, 0,117,112,120, 95,109, 97,105,110, 32,115,122, 99, 61, 37, +/* 0x0da0 */ 120, 32, 32,102, 95,101,120,112, 61, 37,112, 32, 32,102, 95,117, +/* 0x0db0 */ 110,102, 61, 37,112, 32, 32, 32, 32,120,111, 61, 37,112, 40, 37, +/* 0x0dc0 */ 120, 32, 37,112, 41, 32, 32,120,105, 61, 37,112, 40, 37,120, 32, +/* 0x0dd0 */ 37,112, 41, 32, 32,109,104,100,114,112,112, 61, 37,112, 32, 32, +/* 0x0de0 */ 109,104,100,114,112, 61, 37,112, 10, 0, 95, 65, 84, 82, 76,137, +/* 0x0df0 */ 234, 80, 49,192, 72,141, 92, 36, 96, 83, 85,232, 23,244,255,255, +/* 0x0e00 */ 72,131,196, 48, 76,137,234, 76,137,246, 49,201, 72,137,223,232, +/* 0x0e10 */ 126,247,255,255, 80, 77,137,233, 77,137,224,131,201,255, 49,246, +/* 0x0e20 */ 72,137,239, 72,141, 84, 36, 40, 65, 87,232, 47,249,255,255, 65, +/* 0x0e30 */ 92, 65, 94,139,117, 16, 72,141, 85, 32, 73,137,197, 49,201, 57, +/* 0x0e40 */ 241, 15,131, 46, 1, 0, 0,131, 58, 14, 15,133, 24, 1, 0, 0, +/* 0x0e50 */ 139, 66, 8,232, 10, 0, 0, 0,100,121,108,100, 61, 32, 37,115, +/* 0x0e60 */ 10, 0, 95, 72,141, 28, 2, 49,192, 72,137,222,232,166,243,255, +/* 0x0e70 */ 255, 49,210, 49,246, 49,192, 72,137,223,232, 69,242,255,255,133, +/* 0x0e80 */ 192, 65,137,196,121, 10,191, 18, 0, 0, 0,232,220,246,255,255, +/* 0x0e90 */ 139, 76, 36, 4, 72,139, 84, 36, 16, 72,137,238, 68,137,231,232, +/* 0x0ea0 */ 24,242,255,255, 72, 57, 68, 36, 16,116, 10,191, 19, 0, 0, 0, +/* 0x0eb0 */ 232,183,246,255,255,139, 69, 0, 61,202,254,186,190,116, 7, 61, +/* 0x0ec0 */ 190,186,254,202,117, 49, 72, 15,182,117, 7, 72,137,239, 72,141, +/* 0x0ed0 */ 93, 8, 72,107,246, 20,131,198, 8,232,190,241,255,255,139, 69, +/* 0x0ee0 */ 4, 49,201, 57,193,115, 16,129, 59, 7, 0, 0, 1,116,109,255, +/* 0x0ef0 */ 193, 72,131,195, 20,235,236, 72,199, 68, 36, 24, 0, 0, 0, 0, +/* 0x0f00 */ 83, 69, 49,201, 68,137,225, 49,210,106, 0,139,116, 36, 20, 72, +/* 0x0f10 */ 137,239, 76,141, 68, 36, 40,232, 66,248,255,255, 72,137, 68, 36, +/* 0x0f20 */ 24, 72,137,198, 76,137,234, 65, 90, 65, 91, 49,192,232, 18, 0, +/* 0x0f30 */ 0, 0,116,115, 61, 32, 37,112, 32, 32,104, 97,116, 99,104, 61, +/* 0x0f40 */ 37,112, 10, 0, 95,232,205,242,255,255, 72,139, 68, 36, 8, 68, +/* 0x0f50 */ 137,231, 76,137, 40,232,102,241,255,255,235, 25,139, 91, 8,137, +/* 0x0f60 */ 92, 36, 4,233, 40,255,255,255,139, 66, 4,255,193, 72, 1,194, +/* 0x0f70 */ 233,202,254,255,255, 72,139, 68, 36, 8, 72,131,196,104, 91, 93, +/* 0x0f80 */ 65, 92, 65, 93, 65, 94, 65, 95,195 }; diff --git a/src/stub/arm.v5a-darwin.macho-entry.h b/src/stub/arm.v5a-darwin.macho-entry.h index aeb2786a..0ae5d112 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 14633 -#define STUB_ARM_V5A_DARWIN_MACHO_ENTRY_ADLER32 0xada01c67 -#define STUB_ARM_V5A_DARWIN_MACHO_ENTRY_CRC32 0xa5d52727 +#define STUB_ARM_V5A_DARWIN_MACHO_ENTRY_ADLER32 0x983a1b77 +#define STUB_ARM_V5A_DARWIN_MACHO_ENTRY_CRC32 0x415fd26a unsigned char stub_arm_v5a_darwin_macho_entry[14633] = { /* 0x0000 */ 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, @@ -332,10 +332,10 @@ unsigned char stub_arm_v5a_darwin_macho_entry[14633] = { /* 0x1250 */ 3, 32,160,227, 8, 16, 71,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 */ 0, 32,130,224, 3,128, 64,224, 8, 48,137,224, 4, 48, 45,229, -/* 0x1280 */ 32, 6,160,225, 0, 6,160,225, 4, 0, 45,229, 0, 32, 66,224, +/* 0x1280 */ 35, 6,160,225, 0, 6,160,225, 4, 0, 45,229, 0, 32, 66,224, /* 0x1290 */ 4, 32, 45,229, 0,192,151,229, 4,192, 45,229, 13, 48,160,225, -/* 0x12a0 */ 8, 32,135,224, 2,128,160,225, 4,192,151,229, 8, 64,151,229, -/* 0x12b0 */ 12, 0,135,226, 12, 16,160,225, 57,255, 47,225, 4,208,141,226, +/* 0x12a0 */ 8, 32,135,224, 2,128,160,225, 8, 64,151,229, 4, 16,151,229, +/* 0x12b0 */ 12, 0,135,226, 4, 64, 45,229, 57,255, 47,225, 8,208,141,226, /* 0x12c0 */ 4, 16,157,228, 4, 0,157,228, 4,144,157,228, 5, 32,160,227, /* 0x12d0 */ 7,192,160,225,125,112,160,227, 0, 0, 0,239, 12,112,160,225, /* 0x12e0 */ 24,255, 47,225,101,120,101, 99,117,116, 97, 98,108,101, 95,112, diff --git a/src/stub/arm.v5a-darwin.macho-fold.h b/src/stub/arm.v5a-darwin.macho-fold.h index 698038d9..ee26b2bc 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, 1756 (0x6dc) bytes + created from arm.v5a-darwin.macho-fold.bin, 4360 (0x1108) bytes This file is part of the UPX executable compressor. @@ -31,119 +31,282 @@ */ -#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_SIZE 1756 -#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_ADLER32 0xa470fe2d -#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_CRC32 0x55f53e51 +#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_SIZE 4360 +#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_ADLER32 0x79ebf58e +#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_CRC32 0x61ea297c -unsigned char stub_arm_v5a_darwin_macho_fold[1756] = { -/* 0x0000 */ 24, 48,144,229, 2,202,160,227, 12, 0, 83,225, 12, 48,160, 49, +unsigned char stub_arm_v5a_darwin_macho_fold[4360] = { +/* 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, 66, 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, 91,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, -/* 0x0070 */ 33, 17,176,225, 0, 0, 80, 19, 14,240,160, 1, 1, 16, 65,226, -/* 0x0080 */ 1, 33,144,231, 15, 52, 2,226, 11, 4, 83,227, 4, 0, 0, 26, -/* 0x0090 */ 255, 52, 2,226, 1, 32, 66,224,255, 36,194,227, 3, 32,130,225, -/* 0x00a0 */ 1, 33,128,231, 0, 0, 81,227,243,255,255, 26, 14,240,160,225, -/* 0x00b0 */ 30,255, 47,225, 7,192,160,225, 1,112,160,227, 0, 0, 0,239, -/* 0x00c0 */ 12,112,160,225, 7,192,160,225, 3,112,160,227, 0, 0, 0,239, -/* 0x00d0 */ 12,112,160,225, 30,255, 47,225, 7,192,160,225, 4,112,160,227, -/* 0x00e0 */ 0, 0, 0,239, 12,112,160,225, 30,255, 47,225, 7,192,160,225, -/* 0x00f0 */ 5,112,160,227, 0, 0, 0,239, 12,112,160,225, 30,255, 47,225, -/* 0x0100 */ 7,192,160,225, 6,112,160,227, 0, 0, 0,239, 12,112,160,225, -/* 0x0110 */ 30,255, 47,225, 7,192,160,225, 45,112,160,227, 0, 0, 0,239, -/* 0x0120 */ 12,112,160,225, 30,255, 47,225, 7,192,160,225, 91,112,160,227, -/* 0x0130 */ 0, 0, 0,239, 12,112,160,225, 30,255, 47,225, 7,192,160,225, -/* 0x0140 */ 125,112,160,227, 0, 0, 0,239, 12,112,160,225, 30,255, 47,225, -/* 0x0150 */ 48, 0, 45,233, 12, 80,157,229, 8, 64,157,229, 5,202,176,225, -/* 0x0160 */ 6, 0, 0, 26, 37, 86,160,225, 7,192,160,225,192,112,160,227, -/* 0x0170 */ 0, 0, 0,239, 12,112,160,225, 48, 0,189,232, 30,255, 47,225, -/* 0x0180 */ 21, 0,224,227,251,255,255,234, 48, 0, 45,233, 3, 64,160,225, -/* 0x0190 */ 0, 80,160,227, 7,192,160,225,180,112,160,227, 0, 0, 0,239, -/* 0x01a0 */ 12,112,160,225, 48, 0,189,232, 30,255, 47,225,255,192,160,227, -/* 0x01b0 */ 255,200,140,227, 4, 0, 0,234, 0, 32,144,229, 2, 48, 12,224, -/* 0x01c0 */ 98, 44, 12,224, 99, 36,130,225, 4, 32,128,228, 4, 16, 81,226, -/* 0x01d0 */ 248,255,255,170, 30,255, 47,225, 0, 48,144,229, 2, 0, 83,225, -/* 0x01e0 */ 16, 64, 45,233, 0,192,160, 35, 2,224,160,225, 1, 64,160,225, -/* 0x01f0 */ 2, 32,160, 33, 4, 16,144,229, 4, 0, 0, 42,127, 0,160,227, -/* 0x0200 */ 171,255,255,235, 1, 48,220,231, 4, 48,204,231, 1,192,140,226, -/* 0x0210 */ 1, 32, 82,226,250,255,255, 42, 4, 32,144,229, 0, 48,144,229, -/* 0x0220 */ 14, 32,130,224, 3, 48,110,224, 0, 48,128,229, 4, 32,128,229, -/* 0x0230 */ 16,128,189,232,240, 64, 45,233, 0, 80,160,225, 20,208, 77,226, -/* 0x0240 */ 1, 64,160,225, 2,112,160,225, 3, 96,160,225, 61, 0, 0,234, -/* 0x0250 */ 4, 16,141,226, 5, 0,160,225, 12, 32,160,227,221,255,255,235, -/* 0x0260 */ 4,224,157,229, 0, 0, 94,227, 8, 16,157,229, 6, 0, 0, 26, -/* 0x0270 */ 228, 48,159,229, 3, 0, 81,225, 5, 0, 0, 26, 0, 48,149,229, -/* 0x0280 */ 0, 0, 83,227, 2, 0, 0, 26, 49, 0, 0,234, 0, 0, 81,227, -/* 0x0290 */ 1, 0, 0, 26,127, 0,160,227,133,255,255,235, 14, 0, 81,225, -/* 0x02a0 */ 251,255,255,138, 0, 48,148,229, 3, 0, 94,225,248,255,255,138, -/* 0x02b0 */ 14, 0, 81,225, 26, 0, 0, 42, 12,192,221,229, 4, 0,149,229, -/* 0x02c0 */ 4, 32,148,229, 16, 48,141,226, 16,224,141,229, 0,192,141,229, -/* 0x02d0 */ 15,224,160,225, 7,240,160,225, 0, 0, 80,227,236,255,255, 26, -/* 0x02e0 */ 16, 16,157,229, 4, 48,157,229, 3, 0, 81,225,232,255,255, 26, -/* 0x02f0 */ 13, 48,221,229, 0, 0, 83,227, 0, 0, 86, 19, 4, 0,148, 21, -/* 0x0300 */ 14, 32,221, 21, 15,224,160, 17, 6,240,160, 17, 8, 48,157,229, -/* 0x0310 */ 6, 0,149,232, 3, 32,130,224, 1, 16, 99,224, 6, 0,133,232, -/* 0x0320 */ 3, 0, 0,234, 1, 32,160,225, 5, 0,160,225, 4, 16,148,229, -/* 0x0330 */ 168,255,255,235, 4, 48,157,229, 6, 0,148,232, 3, 32,130,224, -/* 0x0340 */ 1, 16, 99,224, 6, 0,132,232, 0, 48,148,229, 0, 0, 83,227, -/* 0x0350 */ 190,255,255, 26, 20,208,141,226,240,128,189,232, 85, 80, 88, 33, -/* 0x0360 */ 240, 79, 45,233, 0,176,160,227, 32,208, 77,226, 2,160,160,225, -/* 0x0370 */ 28, 80,128,226, 11,144,160,225, 16, 0,141,229, 12, 16,141,229, -/* 0x0380 */ 8, 48,141,229,102, 0, 0,234, 0, 48,149,229, 1, 0, 83,227, -/* 0x0390 */ 87, 0, 0, 26, 24,128,149,229, 36, 32,149,229, 8, 58,160,225, -/* 0x03a0 */ 35, 58,160,225, 28, 0,149,229, 3,112,146,224, 24, 32,141,229, -/* 0x03b0 */ 28,128,141,229, 20, 0,141,229, 8, 96, 99,224, 23, 0, 0, 10, -/* 0x03c0 */ 0, 0, 90,227, 3, 0, 0, 26, 0, 0, 82,227, 18, 48,160, 19, -/* 0x03d0 */ 3, 0, 0, 26, 4, 0, 0,234, 0, 0, 82,227, 2, 0, 0, 10, -/* 0x03e0 */ 88, 49,159,229, 8,224,157,229, 1, 0, 0,234, 76, 49,159,229, -/* 0x03f0 */ 0,224,224,227, 32,192,149,229, 12, 16,157,229, 6, 0,160,225, -/* 0x0400 */ 12,192,129,224, 3, 32,160,227, 7, 16,160,225, 0,224,141,229, -/* 0x0410 */ 4,192,141,229, 77,255,255,235, 0, 0, 86,225, 32, 0, 0, 26, -/* 0x0420 */ 0, 0, 90,227, 11, 0, 0, 10, 36, 48,149,229, 0, 0, 83,227, -/* 0x0430 */ 8, 0, 0, 10, 32, 48,149,229, 0, 0, 83,227, 68, 32,157, 5, -/* 0x0440 */ 10, 0,160,225, 0, 96,130, 5, 24, 16,141,226, 72, 32,141,226, -/* 0x0450 */ 12, 0,146,232,118,255,255,235, 0, 48,103,226, 3, 74,160,225, -/* 0x0460 */ 36, 74,160,225, 0, 0, 84,227, 5, 0, 0, 10, 7, 16,134,224, -/* 0x0470 */ 4, 32,160,225, 0, 48,160,227, 1, 32, 82,226, 1, 48,193,228, -/* 0x0480 */ 251,255,255, 26, 0, 0, 87,227, 7, 0, 0, 10, 6, 0,160,225, -/* 0x0490 */ 7, 16,160,225, 44, 32,149,229, 39,255,255,235, 0, 0, 80,227, -/* 0x04a0 */ 1, 0, 0, 10,127, 0,160,227, 1,255,255,235, 20, 0,157,229, -/* 0x04b0 */ 4, 48,135,224, 0, 16,136,224, 3, 64,134,224, 1, 0, 84,225, -/* 0x04c0 */ 20, 0, 0, 42, 0,192,224,227, 44, 32,149,229, 1, 16,100,224, -/* 0x04d0 */ 0,192,141,229, 4, 0,160,225, 1,192,140,226, 92, 48,159,229, -/* 0x04e0 */ 4,192,141,229, 25,255,255,235, 0, 0, 84,225, 9, 0, 0, 10, -/* 0x04f0 */ 235,255,255,234, 4, 48, 67,226, 1, 0, 83,227, 5, 0, 0,138, -/* 0x0500 */ 8, 48,149,229, 1, 0, 83,227, 2, 0, 0, 26, 12, 48,149,229, -/* 0x0510 */ 17, 0, 83,227, 16,176,133, 2, 4, 48,149,229, 1,144,137,226, -/* 0x0520 */ 3, 80,133,224, 16, 16,157,229, 16, 48,145,229, 3, 0, 89,225, -/* 0x0530 */ 148,255,255, 58, 11, 0,160,225, 32,208,141,226,240,143,189,232, -/* 0x0540 */ 18, 16, 0, 0,240, 67, 45,233, 40,208, 77,226, 12, 16,141,229, -/* 0x0550 */ 12, 16,157,229, 24,192,144,229, 24, 16, 65,226, 24, 0,128,226, -/* 0x0560 */ 68, 64,157,229, 36, 0,141,229, 32, 16,141,229, 32,128,141,226, -/* 0x0570 */ 0, 3,152,232, 2, 80,160,225, 32, 0,141,226, 24, 16,141,226, -/* 0x0580 */ 4, 32,160,225, 3,112,160,225, 0, 48,160,227, 24,192,141,229, -/* 0x0590 */ 28, 80,141,229, 16,128,141,229, 20,144,141,229, 36,255,255,235, -/* 0x05a0 */ 76,192,157,229, 0,192,141,229, 72,192,157,229, 0, 16,160,227, -/* 0x05b0 */ 16, 32,141,226, 5, 0,160,225, 0, 48,224,227, 16, 16,141,233, -/* 0x05c0 */ 102,255,255,235, 0, 96,160,225, 16, 0,149,229, 28, 32,133,226, -/* 0x05d0 */ 0, 16,160,227, 58, 0, 0,234, 0, 48,146,229, 14, 0, 83,227, -/* 0x05e0 */ 52, 0, 0, 26, 8, 0,146,229, 0, 16,160,227, 0, 0,130,224, -/* 0x05f0 */ 1, 32,160,225,188,254,255,235, 0, 64, 80,226, 7, 0, 0,186, -/* 0x0600 */ 0, 96,160,227, 4, 0,160,225, 5, 16,160,225, 7, 32,160,225, -/* 0x0610 */ 6, 48,160,225,219,254,255,235, 0, 0, 87,225, 3, 0, 0, 10, -/* 0x0620 */ 127, 0,160,227,162,254,255,235, 8, 96,146,229,244,255,255,234, -/* 0x0630 */ 0, 32,149,229,156, 48,159,229, 3, 0, 82,225, 16, 0, 0, 26, -/* 0x0640 */ 7, 48,213,229, 20, 32,160,227,147, 2, 1,224, 5, 0,160,225, -/* 0x0650 */ 8, 16,129,226,212,254,255,235, 4, 0,149,229, 8, 32,133,226, -/* 0x0660 */ 0, 16,160,227, 4, 0, 0,234, 0, 48,146,229, 12, 0, 83,227, -/* 0x0670 */ 236,255,255, 10, 1, 16,129,226, 20, 32,130,226, 0, 0, 81,225, -/* 0x0680 */ 248,255,255, 26, 0,192,160,227, 6, 16,160,225, 5, 0,160,225, -/* 0x0690 */ 12, 32,160,225, 4, 48,160,225, 0,192,141,229, 4,192,141,229, -/* 0x06a0 */ 8,192,141,229, 45,255,255,235, 0, 96,160,225, 4, 0,160,225, -/* 0x06b0 */ 146,254,255,235, 4, 0, 0,234, 4, 48,146,229, 1, 16,129,226, -/* 0x06c0 */ 3, 32,130,224, 0, 0, 81,225,194,255,255, 26, 6, 0,160,225, -/* 0x06d0 */ 40,208,141,226,240,131,189,232,190,186,254,202 +/* 0x0020 */ 10, 0,160,225, 16, 96,136,226, 56, 80,143,226, 9, 64,160,225, +/* 0x0030 */ 112, 0, 45,233,112, 0, 32,225,136, 3, 0,235, 56,160,144,229, +/* 0x0040 */ 0,144,144,229, 8,208,160,225, 0, 0,157,229, 44, 0, 0,235, +/* 0x0050 */ 4, 0,157,229, 8, 16,157,229, 91,112,160,227, 10,224,160,225, +/* 0x0060 */ 16,208,141,226, 25,255, 47,225,255, 48, 3,226, 80, 0, 83,227, +/* 0x0070 */ 14,240,160, 17, 33, 17,176,225, 0, 0, 80, 19, 14,240,160, 1, +/* 0x0080 */ 1, 16, 65,226, 1, 33,144,231, 15, 52, 2,226, 11, 4, 83,227, +/* 0x0090 */ 4, 0, 0, 26,255, 52, 2,226, 1, 32, 66,224,255, 36,194,227, +/* 0x00a0 */ 3, 32,130,225, 1, 33,128,231, 0, 0, 81,227,243,255,255, 26, +/* 0x00b0 */ 14,240,160,225, 30,255, 47,225, 7,192,160,225, 1,112,160,227, +/* 0x00c0 */ 0, 0, 0,239, 12,112,160,225, 7,192,160,225, 3,112,160,227, +/* 0x00d0 */ 0, 0, 0,239, 12,112,160,225, 30,255, 47,225, 7,192,160,225, +/* 0x00e0 */ 4,112,160,227, 0, 0, 0,239, 12,112,160,225, 30,255, 47,225, +/* 0x00f0 */ 7,192,160,225, 5,112,160,227, 0, 0, 0,239, 12,112,160,225, +/* 0x0100 */ 30,255, 47,225, 7,192,160,225, 6,112,160,227, 0, 0, 0,239, +/* 0x0110 */ 12,112,160,225, 30,255, 47,225, 7,192,160,225, 45,112,160,227, +/* 0x0120 */ 0, 0, 0,239, 12,112,160,225, 30,255, 47,225, 7,192,160,225, +/* 0x0130 */ 91,112,160,227, 0, 0, 0,239, 12,112,160,225, 30,255, 47,225, +/* 0x0140 */ 7,192,160,225,125,112,160,227, 0, 0, 0,239, 12,112,160,225, +/* 0x0150 */ 30,255, 47,225, 48, 0, 45,233, 12, 80,157,229, 8, 64,157,229, +/* 0x0160 */ 5,202,176,225, 6, 0, 0, 26, 37, 86,160,225, 7,192,160,225, +/* 0x0170 */ 192,112,160,227, 0, 0, 0,239, 12,112,160,225, 48, 0,189,232, +/* 0x0180 */ 30,255, 47,225, 21, 0,224,227,251,255,255,234, 48, 0, 45,233, +/* 0x0190 */ 3, 64,160,225, 0, 80,160,227, 7,192,160,225,180,112,160,227, +/* 0x01a0 */ 0, 0, 0,239, 12,112,160,225, 48, 0,189,232, 30,255, 47,225, +/* 0x01b0 */ 255,192,160,227,255,200,140,227, 4, 0, 0,234, 0, 32,144,229, +/* 0x01c0 */ 2, 48, 12,224, 98, 44, 12,224, 99, 36,130,225, 4, 32,128,228, +/* 0x01d0 */ 4, 16, 81,226,248,255,255,170, 30,255, 47,225,112, 0, 32,225, +/* 0x01e0 */ 10, 0, 81,227,252,255,255, 26, 0,192,160,225, 1, 16, 65,224, +/* 0x01f0 */ 0, 32,160,225,128, 1,144,224,129, 17,161,224,162, 30,129,224, +/* 0x0200 */ 0, 32,160,225, 0, 2,144,224, 1, 18,161,224, 34, 30,129,224, +/* 0x0210 */ 0, 32,160,225, 0, 4,144,224, 1, 20,161,224, 34, 28,129,224, +/* 0x0220 */ 0, 32,160,225, 0, 8,144,224, 1, 24,161,224, 34, 24,129,224, +/* 0x0230 */ 140, 15, 80,224,172, 16,193,224, 12, 0,144,224, 0, 0,161,226, +/* 0x0240 */ 30,255, 47,225,240, 69, 45,233, 0, 96,160,225, 1,160,160,225, +/* 0x0250 */ 2, 64,160,225, 10, 80,160,227, 1, 0, 0,234, 10, 48,160,227, +/* 0x0260 */ 147, 5, 5,224, 5, 16,160,225, 6, 0,160,225,219,255,255,235, +/* 0x0270 */ 9, 0, 80,227,248,255,255,138, 4,112,138,224, 10, 0, 0,234, +/* 0x0280 */ 214,255,255,235,144, 5, 3,224, 0, 64,160,225, 10, 16,160,227, +/* 0x0290 */ 5, 0,160,225, 6, 96, 99,224,208,255,255,235, 48, 64,132,226, +/* 0x02a0 */ 1, 64, 71,229, 0, 80,160,225, 8, 64,160,225, 9, 0, 86,227, +/* 0x02b0 */ 5, 16,160,225, 6, 0,160,225, 1,112,135,226, 1,128,132,226, +/* 0x02c0 */ 238,255,255,138, 48, 48,134,226, 8, 0,160,225, 4, 48,202,231, +/* 0x02d0 */ 240,133,189,232,112, 64, 45,233, 7, 48,160,227, 1, 96,160,225, +/* 0x02e0 */ 0, 80,160,225, 2, 64,160,225, 15, 18,160,227, 5, 0, 17,225, +/* 0x02f0 */ 2, 0, 0, 26, 1, 48, 83,226, 33, 18,160,225,250,255,255, 26, +/* 0x0300 */ 3,193,160,225, 0,224,160,227, 8, 0, 0,234, 53, 44,160,225, +/* 0x0310 */ 15, 32, 2,226, 9, 0, 82,227, 87, 48,160,131, 48, 48,160,147, +/* 0x0320 */ 2, 48,131,224, 0, 48,196,231, 1,224,142,226, 4,192, 76,226, +/* 0x0330 */ 0, 0, 81,227, 14, 0,134,224, 33, 18,160,225,242,255,255, 26, +/* 0x0340 */ 14, 0,132,224,112,128,189,232, 15, 0, 45,233,240, 64, 45,233, +/* 0x0350 */ 28,208, 77,226, 52, 48,141,226, 0, 80,160,227, 24, 48,141,229, +/* 0x0360 */ 48, 96,157,229, 5,112,160,225, 1, 48,214,228, 0, 0, 83,227, +/* 0x0370 */ 2, 0, 0, 26, 0, 0, 87,227, 8, 0, 0, 26,104, 0, 0,234, +/* 0x0380 */ 37, 0, 83,227, 2, 0, 0, 10, 0, 0, 87,227, 6,112,160, 1, +/* 0x0390 */ 244,255,255,234, 0, 0, 87,227, 90, 0, 0, 26, 5, 0, 0,234, +/* 0x03a0 */ 6, 32,103,224, 2, 0,160,227, 1, 16, 71,226, 74,255,255,235, +/* 0x03b0 */ 0, 80,133,224, 90, 0, 0,234, 1, 32,214,228,115, 0, 82,227, +/* 0x03c0 */ 62, 0, 0, 10, 6, 0, 0,138,100, 0, 82,227, 19, 0, 0, 10, +/* 0x03d0 */ 112, 0, 82,227, 31, 0, 0, 10, 0, 0, 82,227, 80, 0, 0, 10, +/* 0x03e0 */ 3, 0, 0,234,117, 0, 82,227, 5, 0, 0, 10,120, 0, 82,227, +/* 0x03f0 */ 36, 0, 0, 10, 2, 0,160,227, 1, 16, 70,226, 1, 32,160,227, +/* 0x0400 */ 61, 0, 0,234, 24, 48,157,229, 0, 0,147,229, 13, 64,160,225, +/* 0x0410 */ 4, 48,131,226, 13, 16,160,225, 0, 32,160,227, 10, 0, 0,234, +/* 0x0420 */ 24, 16,157,229, 0, 0,145,229, 0, 0, 80,227, 45, 48,160,179, +/* 0x0430 */ 0, 48,205,181, 0, 32,160,163, 4, 48,129,226, 0, 0, 96,178, +/* 0x0440 */ 1, 32,160,179, 13, 64,160,225, 13, 16,160,225, 24, 48,141,229, +/* 0x0450 */ 123,255,255,235, 22, 0, 0,234, 24, 16,157,229, 48, 48,160,227, +/* 0x0460 */ 4, 32,129,226, 0, 48,205,229, 72, 48,131,226, 24, 32,141,229, +/* 0x0470 */ 1, 48,205,229, 0, 0,145,229, 13, 64,160,225, 13, 16,160,225, +/* 0x0480 */ 2, 32,160,227, 9, 0, 0,234, 48, 48,160,227, 0, 48,205,229, +/* 0x0490 */ 1, 32,205,229, 24, 48,157,229, 0, 0,147,229, 4, 48,131,226, +/* 0x04a0 */ 24, 48,141,229, 13, 64,160,225, 13, 16,160,225, 2, 32,160,227, +/* 0x04b0 */ 135,255,255,235, 0, 32,160,225, 13, 16,160,225, 13, 0, 0,234, +/* 0x04c0 */ 24, 48,157,229, 0, 16,147,229, 4, 48,131,226, 0, 0, 81,227, +/* 0x04d0 */ 24, 48,141,229, 1, 32,160, 1, 1, 32,160, 17, 1, 0, 0, 26, +/* 0x04e0 */ 3, 0, 0,234, 1, 32,130,226, 0, 48,210,229, 0, 0, 83,227, +/* 0x04f0 */ 251,255,255, 26, 2, 32, 97,224, 2, 0,160,227,246,254,255,235, +/* 0x0500 */ 0, 80,133,224,151,255,255,234, 6, 32,103,224, 1, 16, 71,226, +/* 0x0510 */ 2, 0,160,227,240,254,255,235, 0,112,160,227, 0, 80,133,224, +/* 0x0520 */ 164,255,255,234, 5, 0,160,225, 28,208,141,226,240, 64,189,232, +/* 0x0530 */ 16,208,141,226, 14,240,160,225, 16, 64, 45,233, 0, 64,160,225, +/* 0x0540 */ 4, 16,160,225, 3, 0, 0,235,101,114,114, 95,101,120,105,116, +/* 0x0550 */ 32, 37,120, 10, 0, 0, 0, 0, 14, 0,160,225,121,255,255,235, +/* 0x0560 */ 4, 0,160,225,211,254,255,235,240, 64, 45,233, 4,112,144,229, +/* 0x0570 */ 0, 64,160,225, 2, 80,160,225, 8,208, 77,226, 0, 32,148,229, +/* 0x0580 */ 5, 0, 0,235,120,114,101, 97,100, 32, 37,112, 40, 37,120, 32, +/* 0x0590 */ 37,112, 41, 32, 37,112, 32, 37,120, 10, 0, 0, 14, 0,160,225, +/* 0x05a0 */ 1, 96,160,225, 7, 48,160,225, 4, 16,160,225, 0, 96,141,229, +/* 0x05b0 */ 4, 80,141,229, 99,255,255,235, 0, 32,148,229, 5, 0, 82,225, +/* 0x05c0 */ 5, 32,160, 33, 0, 16,160, 35, 18, 0, 0, 42, 0, 96,141,229, +/* 0x05d0 */ 6, 0, 0,235,120,114,101, 97,100,102, 97,105,108, 32, 37,112, +/* 0x05e0 */ 40, 37,120, 32, 37,112, 41, 32, 37,112, 32, 37,120, 10, 0, 0, +/* 0x05f0 */ 14, 0,160,225, 4, 80,141,229, 4, 16,160,225, 4, 48,148,229, +/* 0x0600 */ 80,255,255,235,127, 0,160,227,170,254,255,235, 7, 48,209,231, +/* 0x0610 */ 6, 48,193,231, 1, 16,129,226, 1, 32, 82,226,250,255,255, 42, +/* 0x0620 */ 4, 32,148,229, 0, 48,148,229, 5, 32,130,224, 3, 48,101,224, +/* 0x0630 */ 0, 48,132,229, 4, 32,132,229, 8,208,141,226,240,128,189,232, +/* 0x0640 */ 240, 64, 45,233, 0,192,145,229, 0, 80,160,225, 12, 0, 0,235, +/* 0x0650 */ 117,110,112, 97, 99,107, 69,120,116,101,110,116, 32,105,110, 61, +/* 0x0660 */ 37,112, 40, 37,120, 32, 37,112, 41, 32, 32,111,117,116, 61, 37, +/* 0x0670 */ 112, 40, 37,120, 32, 37,112, 41, 32, 32, 37,112, 32, 37,112, 10, +/* 0x0680 */ 0, 0, 0, 0, 14, 0,160,225, 4,224,145,229, 36,208, 77,226, +/* 0x0690 */ 1, 64,160,225, 2,112,160,225, 3, 96,160,225, 12, 0,149,232, +/* 0x06a0 */ 5, 16,160,225, 16, 80,141,232, 12,112,141,229, 16, 96,141,229, +/* 0x06b0 */ 36,255,255,235, 85, 0, 0,234, 12, 32,160,227, 5, 0,160,225, +/* 0x06c0 */ 20, 16,141,226,167,255,255,235, 20, 48,157,229, 0, 0, 83,227, +/* 0x06d0 */ 24, 32,157,229, 9, 0, 0, 26, 68, 49,159,229, 3, 0, 82,225, +/* 0x06e0 */ 2, 0,160, 19,147,255,255, 27, 0, 48,149,229, 0, 0, 83,227, +/* 0x06f0 */ 73, 0, 0, 10, 3, 0,160,227,142,255,255,235, 70, 0, 0,234, +/* 0x0700 */ 0, 0, 82,227, 4, 0,160, 3,138,255,255, 11, 24, 16,157,229, +/* 0x0710 */ 20, 32,157,229, 2, 0, 81,225, 2, 0, 0,138, 0, 48,148,229, +/* 0x0720 */ 3, 0, 82,225, 14, 0, 0,154, 8, 0, 0,235,115,122, 95, 99, +/* 0x0730 */ 112,114, 61, 37,120, 32, 32,115,122, 95,117,110, 99, 61, 37,120, +/* 0x0740 */ 32, 32,120,111, 45, 62,115,105,122,101, 61, 37,120, 10, 0, 0, +/* 0x0750 */ 14, 0,160,225, 0, 48,148,229,250,254,255,235, 5, 0,160,227, +/* 0x0760 */ 116,255,255,235, 24, 16,157,229, 20,224,157,229, 14, 0, 81,225, +/* 0x0770 */ 29, 0, 0, 42, 28,192,221,229, 4, 0,149,229, 4, 32,148,229, +/* 0x0780 */ 32, 48,141,226, 32,224,141,229, 0,192,141,229, 15,224,160,225, +/* 0x0790 */ 7,240,160,225, 0, 0, 80,227, 3, 0, 0, 26, 32, 32,157,229, +/* 0x07a0 */ 20, 48,157,229, 3, 0, 82,225, 1, 0, 0, 10, 7, 0,160,227, +/* 0x07b0 */ 96,255,255,235, 29, 48,221,229, 0, 0, 83,227, 0, 0, 86, 19, +/* 0x07c0 */ 4, 0,148, 21, 32, 16,157, 21, 30, 32,221, 21, 15,224,160, 17, +/* 0x07d0 */ 6,240,160, 17, 24, 48,157,229, 6, 0,149,232, 3, 32,130,224, +/* 0x07e0 */ 1, 16, 99,224, 6, 0,133,232, 3, 0, 0,234, 1, 32,160,225, +/* 0x07f0 */ 5, 0,160,225, 4, 16,148,229, 90,255,255,235, 20, 48,157,229, +/* 0x0800 */ 6, 0,148,232, 3, 32,130,224, 1, 16, 99,224, 6, 0,132,232, +/* 0x0810 */ 0, 48,148,229, 0, 0, 83,227,166,255,255, 26, 36,208,141,226, +/* 0x0820 */ 240,128,189,232, 85, 80, 88, 33,240, 79, 45,233, 15, 0, 0,235, +/* 0x0830 */ 100,111, 95,120,109, 97,112, 32, 32,102,100,105, 61, 37,120, 32, +/* 0x0840 */ 32,109,104,100,114, 61, 37,112, 32, 32, 42,109,104,100,114,112, +/* 0x0850 */ 112, 61, 37,112, 32, 32,120,105, 61, 37,112, 40, 37,120, 32, 37, +/* 0x0860 */ 112, 41, 32,102, 95,117,110,102, 61, 37,112, 10, 0, 0, 0, 0, +/* 0x0870 */ 14, 64,160,225, 52,208, 77,226, 88,192,157,229, 0, 0, 92,227, +/* 0x0880 */ 2,144,160,225, 88, 32,157, 21, 16, 48,141,229, 0, 48,146, 21, +/* 0x0890 */ 12, 48,160, 1, 0, 0, 89,227, 0,192,153, 21, 9,192,160, 1, +/* 0x08a0 */ 4,224,153, 21, 24, 0,141,229, 4,192,141,229, 96,192,157,229, +/* 0x08b0 */ 20, 16,141,229, 9,224,160, 1, 24, 32,157,229, 4, 0,160,225, +/* 0x08c0 */ 16, 16,157,229, 8,224,141,229, 0,144,141,229, 12,192,141,229, +/* 0x08d0 */ 156,254,255,235, 24, 48,157,229, 0, 32,160,227, 28, 80,131,226, +/* 0x08e0 */ 28, 32,141,229, 32, 32,141,229, 36, 32,141,229, 46, 1, 0,234, +/* 0x08f0 */ 0, 32,149,229, 6, 0, 0,235, 32, 32, 35, 37,100, 32, 32, 99, +/* 0x0900 */ 109,100, 61, 37,120, 32, 32, 99,109,100,115,105,122,101, 61, 37, +/* 0x0910 */ 120, 10, 0, 0, 14, 0,160,225, 36, 16,157,229, 4, 48,149,229, +/* 0x0920 */ 136,254,255,235, 0, 32,149,229, 1, 0, 82,227,239, 0, 0, 26, +/* 0x0930 */ 28, 48,149,229, 0, 0, 83,227,236, 0, 0, 10, 32, 48,149,229, +/* 0x0940 */ 0, 0, 83,227, 19, 0, 0, 26, 36, 48,149,229, 0, 0, 83,227, +/* 0x0950 */ 16, 0, 0, 10, 88,192,157,229, 0, 32,156,229, 0, 0, 82,227, +/* 0x0960 */ 12, 0, 0, 10, 24, 48,146,229, 2, 6, 19,227, 9, 0, 0, 10, +/* 0x0970 */ 24, 48,149,229, 2, 0, 0,235,114,101,108,111, 99, 61, 37,112, +/* 0x0980 */ 10, 0, 0, 0, 14, 0,160,225, 2, 32, 99,224, 2, 16,160,225, +/* 0x0990 */ 32, 32,141,229,107,254,255,235, 24, 48,149,229, 32, 32,157,229, +/* 0x09a0 */ 3, 48,130,224, 36, 0,149,229, 28, 16,149,229, 3, 42,160,225, +/* 0x09b0 */ 34, 42,160,225, 1, 16,131,224, 2,160,144,224, 44, 0,141,229, +/* 0x09c0 */ 48, 48,141,229, 40, 16,141,229, 3,112, 98,224, 76, 0, 0, 10, +/* 0x09d0 */ 88,192,157,229, 0, 48,156,229, 0, 0, 83,227, 2, 32,160, 3, +/* 0x09e0 */ 18, 32,160, 19, 0, 0, 89,227, 3, 48,160, 19, 0, 48,160, 3, +/* 0x09f0 */ 0, 0, 89,227, 3,176,138,224, 3, 0, 0, 26, 0, 0, 80,227, +/* 0x0a00 */ 1,106,130, 3, 6, 1, 0, 10,237, 0, 0,234, 0, 0, 80,227, +/* 0x0a10 */ 1,106,130,227, 2, 1, 0, 10, 16,128,157,229, 32, 64,149,229, +/* 0x0a20 */ 16, 0, 0,235,109,109, 97,112, 32, 32, 97,100,100,114, 61, 37, +/* 0x0a30 */ 112, 32, 32,108,101,110, 61, 37,112, 32, 32,112,114,111,116, 61, +/* 0x0a40 */ 37,120, 32, 32,102,108, 97,103,115, 61, 37,120, 32, 32,102,100, +/* 0x0a50 */ 61, 37,100, 32, 32,111,102,102, 61, 37,112, 32, 32,114,101,108, +/* 0x0a60 */ 111, 99, 61, 37,112, 10, 0, 0, 14, 0,160,225, 20, 32,157,229, +/* 0x0a70 */ 32,192,157,229, 4, 64,130,224, 7, 16,160,225, 11, 32,160,225, +/* 0x0a80 */ 3, 48,160,227, 12,192,141,229, 64, 1,141,232, 8, 64,141,229, +/* 0x0a90 */ 44,254,255,235, 11, 16,160,225, 6, 48,160,225, 7, 0,160,225, +/* 0x0aa0 */ 3, 32,160,227, 0,128,141,229, 4, 64,141,229,168,253,255,235, +/* 0x0ab0 */ 88, 32,157,229, 0, 48,146,229, 0, 0, 83,227, 0, 16,160,225, +/* 0x0ac0 */ 32, 0,141, 5, 0,112,160, 1, 0, 0,130, 5, 12, 0, 0, 10, +/* 0x0ad0 */ 0, 0, 87,225, 10, 0, 0, 10, 4, 0, 0,235,109, 97,100,100, +/* 0x0ae0 */ 114, 61, 37,112, 32, 32, 97,100,100,114, 61, 37,112, 10, 0, 0, +/* 0x0af0 */ 14, 0,160,225, 7, 32,160,225, 18,254,255,235, 8, 0,160,227, +/* 0x0b00 */ 140,254,255,235, 0, 0, 89,227,175, 0, 0, 10, 36, 48,149,229, +/* 0x0b10 */ 0, 0, 83,227, 8, 0, 0, 10, 32, 48,149,229, 0, 0, 83,227, +/* 0x0b20 */ 88, 48,157, 5, 9, 0,160,225, 0,112,131, 5, 44, 16,141,226, +/* 0x0b30 */ 92, 32,141,226, 12, 0,146,232,192,254,255,235, 48,192,149,229, +/* 0x0b40 */ 9, 0, 0,235,120,105, 61, 37,112, 32, 32,109,108,101,110, 61, +/* 0x0b50 */ 37,112, 32, 32,102,105,108,101,111,102,102, 61, 37,112, 32, 32, +/* 0x0b60 */ 110,115,101, 99,116,115, 61, 37,100, 10, 0, 0, 14, 0,160,225, +/* 0x0b70 */ 32, 48,149,229, 0, 96, 90,226, 1, 96,160, 19, 9, 16,160,225, +/* 0x0b80 */ 10, 32,160,225, 0,192,141,229,238,253,255,235, 0, 0, 86,227, +/* 0x0b90 */ 34, 0, 0, 10, 32, 48,149,229, 0, 0, 83,227, 31, 0, 0, 26, +/* 0x0ba0 */ 48, 48,149,229, 0, 0, 83,227, 28, 0, 0, 10, 24,192,157,229, +/* 0x0bb0 */ 9, 0, 0,235,104, 97,116, 99,104, 61, 37,112, 32, 32,115,101, +/* 0x0bc0 */ 99,112, 61, 37,112, 32, 32,115,101,103,112, 61, 37,112, 32, 32, +/* 0x0bd0 */ 109,104,100,114, 61, 37,112, 10, 0, 0, 0, 0, 14, 0,160,225, +/* 0x0be0 */ 5, 48,108,224, 3, 48,195,227, 3, 48,135,224, 56, 32,131,226, +/* 0x0bf0 */ 40, 16,146,229, 92,194,159,229, 3, 16,193,227, 1, 16,135,224, +/* 0x0c00 */ 4,192, 1,229, 8, 64, 65,226,239,196,160,227, 8,192, 1,229, +/* 0x0c10 */ 4, 16,160,225, 0,112,141,229,202,253,255,235, 28, 64,141,229, +/* 0x0c20 */ 1,128,160,227, 0, 48,106,226, 3, 74,160,225, 36, 74,160,225, +/* 0x0c30 */ 0, 0, 84,227, 5, 0, 0, 10, 10, 16,135,224, 4, 32,160,225, +/* 0x0c40 */ 0, 48,160,227, 1, 32, 82,226, 1, 48,193,228,251,255,255, 26, +/* 0x0c50 */ 0, 0, 86,227, 6, 0, 0, 10, 7, 0,160,225, 10, 16,160,225, +/* 0x0c60 */ 44, 32,149,229, 53,253,255,235, 0, 0, 80,227, 10, 0,160, 19, +/* 0x0c70 */ 48,254,255, 27, 4, 48,138,224, 40, 32,157,229, 3, 64,135,224, +/* 0x0c80 */ 2, 0, 84,225, 15, 0, 0, 42, 0, 0, 84,227, 64, 0, 0, 10, +/* 0x0c90 */ 0,192,224,227, 2, 16,100,224, 4, 0,160,225, 44, 32,149,229, +/* 0x0ca0 */ 180, 49,159,229, 0,192,141,229, 1,192,140,226, 4,192,141,229, +/* 0x0cb0 */ 39,253,255,235, 0, 0, 84,225, 53, 0, 0, 10, 9, 0,160,227, +/* 0x0cc0 */ 28,254,255,235, 50, 0, 0,234, 0, 0, 88,227, 48, 0, 0, 10, +/* 0x0cd0 */ 3, 48,138,226, 3, 26,160,225, 33, 26,160,225, 3, 0, 81,227, +/* 0x0ce0 */ 43, 0, 0,138, 4, 0,160,225, 15,253,255,235, 40, 0, 0,234, +/* 0x0cf0 */ 0, 0, 89,227, 38, 0, 0, 26, 4, 48, 66,226, 1, 0, 83,227, +/* 0x0d00 */ 35, 0, 0,138, 5, 16,160,225, 16, 64,133,226, 4, 0, 0,235, +/* 0x0d10 */ 116,104,114,101, 97,100, 95, 99,111,109,109, 97,110,100, 61, 32, +/* 0x0d20 */ 37,112, 10, 0, 14, 0,160,225,134,253,255,235, 12, 0, 0,235, +/* 0x0d30 */ 116,104,114,101, 97,100, 95,115,116, 97,116,101, 61, 32, 37,112, +/* 0x0d40 */ 32, 32,102,108, 97,118,111,114, 61, 37,100, 32, 32, 99,111,117, +/* 0x0d50 */ 110,116, 61, 37,120, 32, 32,114,101,108,111, 99, 61, 37,112, 10, +/* 0x0d60 */ 0, 0, 0, 0, 14, 0,160,225, 32,192,157,229, 8, 32,133,226, +/* 0x0d70 */ 12, 0,146,232, 4, 16,160,225, 0,192,141,229,113,253,255,235, +/* 0x0d80 */ 76, 48,149,229, 32, 32,157,229, 2, 48,131,224, 76, 48,133,229, +/* 0x0d90 */ 28, 64,141,229, 4, 48,149,229, 3, 48,195,227, 3, 80,133,224, +/* 0x0da0 */ 36, 48,157,229, 1, 48,131,226, 36, 48,141,229, 24,192,157,229, +/* 0x0db0 */ 36, 32,157,229, 16, 48,156,229, 3, 0, 82,225,203,254,255, 58, +/* 0x0dc0 */ 25, 0, 0,234, 2, 96,160,225, 18,255,255,234, 48,192,149,229, +/* 0x0dd0 */ 9, 0, 0,235,120,105, 61, 37,112, 32, 32,109,108,101,110, 61, +/* 0x0de0 */ 37,112, 32, 32,102,105,108,101,111,102,102, 61, 37,112, 32, 32, +/* 0x0df0 */ 110,115,101, 99,116,115, 61, 37,100, 10, 0, 0, 14, 0,160,225, +/* 0x0e00 */ 32, 48,149,229, 9, 16,160,225, 10, 32,160,225, 0,192,141,229, +/* 0x0e10 */ 76,253,255,235, 0, 96, 90,226, 1, 96,160, 19, 9,128,160,225, +/* 0x0e20 */ 127,255,255,234, 0,128,224,227,251,254,255,234, 3, 0, 0,235, +/* 0x0e30 */ 100,111, 95,120,109, 97,112, 61, 32, 37,112, 10, 0, 0, 0, 0, +/* 0x0e40 */ 14, 0,160,225, 28, 16,157,229, 62,253,255,235, 28, 0,157,229, +/* 0x0e50 */ 52,208,141,226,240,143,189,232, 30,255, 47,225, 18, 16, 0, 0, +/* 0x0e60 */ 240, 79, 45,233, 21, 0, 0,235,117,112,120, 95,109, 97,105,110, +/* 0x0e70 */ 32,115,122, 99, 61, 37,120, 32, 32,102, 95,101,120,112, 61, 37, +/* 0x0e80 */ 112, 32, 32,102, 95,117,110,102, 61, 37,112, 32, 32, 32, 32,120, +/* 0x0e90 */ 111, 61, 37,112, 40, 37,120, 32, 37,112, 41, 32, 32,120,105, 61, +/* 0x0ea0 */ 37,112, 40, 37,120, 32, 37,112, 41, 32, 32,109,104,100,114,112, +/* 0x0eb0 */ 112, 61, 37,112, 32, 32,109,104,100,114,112, 61, 37,112, 10, 0, +/* 0x0ec0 */ 14, 80,160,225, 68,208, 77,226, 36, 16,141,229, 36,224,157,229, +/* 0x0ed0 */ 24,128,144,229, 24,192,128,226,112, 96,157,229, 24,224, 78,226, +/* 0x0ee0 */ 60,192,141,229, 56,224,141,229, 0,160,150,229,104, 64,141,226, +/* 0x0ef0 */ 16, 2,148,232, 4,128,141,229, 48,128,141,229, 56,112,141,226, +/* 0x0f00 */ 128, 1,151,232, 2,176,160,225, 36, 16,157,229, 32, 48,141,229, +/* 0x0f10 */ 5, 0,160,225, 9, 48,160,225, 56, 80,141,226, 4, 32,160,225, +/* 0x0f20 */ 40,112,141,229, 44,128,141,229, 48,128,141,226, 16,224,141,229, +/* 0x0f30 */ 20,192,141,229, 24, 96,141,229, 28,160,141,229, 52,176,141,229, +/* 0x0f40 */ 0,128,141,229, 8,176,141,229, 12, 80,141,229,253,252,255,235, +/* 0x0f50 */ 5, 0,160,225, 48, 16,141,226, 4, 32,160,225, 0, 48,160,227, +/* 0x0f60 */ 182,253,255,235, 0, 16,160,227, 40, 32,141,226, 11, 0,160,225, +/* 0x0f70 */ 0, 48,224,227, 0, 96,141,229, 16, 2,141,233, 41,254,255,235, +/* 0x0f80 */ 0, 96,160,225, 16, 0,155,229, 28, 32,139,226, 0, 16,160,227, +/* 0x0f90 */ 82, 0, 0,234, 0, 48,146,229, 14, 0, 83,227, 77, 0, 0, 26, +/* 0x0fa0 */ 8, 64,146,229, 2, 0, 0,235,100,121,108,100, 61, 32, 37,115, +/* 0x0fb0 */ 10, 0, 0, 0, 14, 0,160,225, 4, 64,130,224, 4, 16,160,225, +/* 0x0fc0 */ 224,252,255,235, 0, 16,160,227, 4, 0,160,225, 1, 32,160,225, +/* 0x0fd0 */ 70,252,255,235, 0, 80, 80,226, 18, 0,160,179, 85,253,255,187, +/* 0x0fe0 */ 0, 64,160,227, 5, 0,160,225, 11, 16,160,225, 32, 32,157,229, +/* 0x0ff0 */ 4, 48,160,225,100,252,255,235, 32,192,157,229, 0, 0, 92,225, +/* 0x1000 */ 19, 0,160, 19, 75,253,255, 27, 0, 32,155,229,232, 48,159,229, +/* 0x1010 */ 3, 0, 82,225, 2, 0, 0, 10,224, 48,159,229, 3, 0, 82,225, +/* 0x1020 */ 18, 0, 0, 26, 7, 48,219,229, 20, 32,160,227,147, 2, 1,224, +/* 0x1030 */ 11, 0,160,225, 8, 16,129,226, 92,252,255,235, 4,192,155,229, +/* 0x1040 */ 8, 16,139,226, 0, 0,160,227, 5, 0, 0,234, 0, 32,145,229, +/* 0x1050 */ 172, 48,159,229, 3, 0, 82,225, 8, 64,145, 5,224,255,255, 10, +/* 0x1060 */ 20, 16,129,226, 12, 0, 80,225, 1, 0,128,226,246,255,255, 26, +/* 0x1070 */ 0,224,160,227, 68,192,141,226, 4,224, 44,229, 14, 32,160,225, +/* 0x1080 */ 4, 16,160,225, 5, 48,160,225, 11, 0,160,225, 4,224,141,229, +/* 0x1090 */ 8,224,141,229, 0,192,141,229,226,253,255,235, 0, 64,160,225, +/* 0x10a0 */ 4, 16,160,225, 4, 0, 0,235,116,115, 61, 32, 37,112, 32, 32, +/* 0x10b0 */ 104, 97,116, 99,104, 61, 37,112, 10, 0, 0, 0, 14, 0,160,225, +/* 0x10c0 */ 6, 32,160,225,159,252,255,235, 0, 96,132,229, 5, 0,160,225, +/* 0x10d0 */ 11,252,255,235, 5, 0, 0,234, 4, 48,146,229, 3, 32,130,224, +/* 0x10e0 */ 0, 0, 81,225, 1, 16,129,226,169,255,255, 26, 0, 64,160,227, +/* 0x10f0 */ 4, 0,160,225, 68,208,141,226,240,143,189,232,202,254,186,190, +/* 0x1100 */ 190,186,254,202, 7, 0, 0, 1 }; diff --git a/src/stub/arm64-darwin.macho-entry.h b/src/stub/arm64-darwin.macho-entry.h index bf24bc2c..48051750 100644 --- a/src/stub/arm64-darwin.macho-entry.h +++ b/src/stub/arm64-darwin.macho-entry.h @@ -32,8 +32,8 @@ #define STUB_ARM64_DARWIN_MACHO_ENTRY_SIZE 7921 -#define STUB_ARM64_DARWIN_MACHO_ENTRY_ADLER32 0x5ccea70c -#define STUB_ARM64_DARWIN_MACHO_ENTRY_CRC32 0x829a61f1 +#define STUB_ARM64_DARWIN_MACHO_ENTRY_ADLER32 0xedeaa76c +#define STUB_ARM64_DARWIN_MACHO_ENTRY_CRC32 0x22df959e unsigned char stub_arm64_darwin_macho_entry[7921] = { /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -336,7 +336,7 @@ unsigned char stub_arm64_darwin_macho_entry[7921] = { /* 0x1290 */ 5, 0,128,210,228, 3, 64,185, 67, 2,128, 82, 98, 0,128, 82, /* 0x12a0 */ 97, 3, 22,203,168, 24,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, +/* 0x12c0 */ 227, 15, 30,248, 96,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, diff --git a/src/stub/arm64-darwin.macho-fold.h b/src/stub/arm64-darwin.macho-fold.h index 6d401437..14528425 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, 4552 (0x11c8) bytes + created from arm64-darwin.macho-fold.bin, 4744 (0x1288) bytes This file is part of the UPX executable compressor. @@ -31,15 +31,15 @@ */ -#define STUB_ARM64_DARWIN_MACHO_FOLD_SIZE 4552 -#define STUB_ARM64_DARWIN_MACHO_FOLD_ADLER32 0x2d363f6f -#define STUB_ARM64_DARWIN_MACHO_FOLD_CRC32 0x36b2ceb5 +#define STUB_ARM64_DARWIN_MACHO_FOLD_SIZE 4744 +#define STUB_ARM64_DARWIN_MACHO_FOLD_ADLER32 0xba61851b +#define STUB_ARM64_DARWIN_MACHO_FOLD_CRC32 0xaea9eea0 -unsigned char stub_arm64_darwin_macho_fold[4552] = { -/* 0x0000 */ 224, 3, 20,170,225, 3, 21,170, 3, 24, 64,185, 9, 0,132, 82, +unsigned char stub_arm64_darwin_macho_fold[4744] = { +/* 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, 67, 3, 0,148, 20,128, 64,249, +/* 0x0030 */ 228, 3, 28,170,165, 1, 0, 16,114, 3, 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, @@ -106,7 +106,7 @@ unsigned char stub_arm64_darwin_macho_fold[4552] = { /* 0x0430 */ 161,139, 64,185,160,103, 1, 57,181, 99, 1, 57,160, 59, 64,249, /* 0x0440 */ 161, 0,248, 54, 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107, /* 0x0450 */ 173, 0, 0, 84, 1, 44, 0,145, 33,240,125,146,161, 59, 0,249, -/* 0x0460 */ 3, 0, 0, 20,160, 63, 64,249, 0,192, 33,139, 0, 0,128,185, +/* 0x0460 */ 3, 0, 0, 20,160, 63, 64,249, 0,192, 33,139, 0, 0, 64,185, /* 0x0470 */ 161, 99, 1,145, 82,255,255,151, 2,124, 64,147,161, 99, 1,145, /* 0x0480 */ 64, 0,128, 82, 18,255,255,151,115, 2, 0, 11, 2, 0,128,210, /* 0x0490 */ 148,255,255, 23,161,139, 64,185,160, 59, 64,249,161, 0,248, 54, @@ -167,158 +167,170 @@ unsigned char stub_arm64_darwin_macho_fold[4552] = { /* 0x0800 */ 96, 2, 0,249,171,255,255, 23,191, 67, 0,209,243, 83, 66,169, /* 0x0810 */ 245, 91, 67,169,253,123, 65,169,255,131, 1,145,192, 3, 95,214, /* 0x0820 */ 253,123,179,169,253, 3, 0,145,234, 47, 7,109,243, 83, 1,169, -/* 0x0830 */ 236, 55, 8,109,247, 99, 3,169,232, 39, 6,109,249,107, 4,169, -/* 0x0840 */ 238, 63, 9,109,251,115, 5,169,245, 91, 2,169,251, 3, 0,170, -/* 0x0850 */ 19,128, 0,145,106, 0, 39, 30,247, 3, 2,170, 44, 0, 39, 30, -/* 0x0860 */ 249, 3, 4,170,173, 0,103,158,227, 3, 4,170,203, 0,103,158, +/* 0x0830 */ 232, 39, 6,109,245, 91, 2,169,236, 55, 8,109,247, 99, 3,169, +/* 0x0840 */ 238, 63, 9,109,249,107, 4,169,251,115, 5,169,250, 3, 0,170, +/* 0x0850 */ 19,128, 0,145,105, 0, 39, 30,245, 3, 2,170, 43, 0, 39, 30, +/* 0x0860 */ 247, 3, 4,170,172, 0,103,158,227, 3, 4,170,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 */ 151, 0, 0,180,229, 2, 64,249,230, 6, 64,249, 3, 0, 0, 20, -/* 0x08d0 */ 229, 3, 23,170,230, 3, 23,170, 65, 1, 38, 30,226, 3, 27,170, -/* 0x08e0 */ 103, 1,102,158,228, 3, 23,170, 24, 0,128,210, 28, 0,128, 82, -/* 0x08f0 */ 250, 3, 24,170, 76,254,255,151, 6, 0, 0,148,116,104,114,101, -/* 0x0900 */ 97,100, 95, 99,111,109,109, 97,110,100, 61, 32, 37,112, 10, 0, -/* 0x0910 */ 224, 3, 30,170, 14, 0,103,158, 8, 0, 0,148,116,104,114,101, -/* 0x0920 */ 97,100, 95,115,116, 97,116,101, 61, 32, 37,112, 32, 32,114,101, -/* 0x0930 */ 108,111, 99, 61, 37,112, 10, 0,224, 3, 30,170, 15, 0,103,158, -/* 0x0940 */ 96, 19, 64,185,159, 3, 0,107, 98, 29, 0, 84, 96, 2, 64,185, -/* 0x0950 */ 31,100, 0,113, 97, 26, 0, 84, 97, 18, 64,249, 33, 26, 0,180, -/* 0x0960 */ 96, 22, 64,249, 0, 2, 0,181, 96, 26, 64,249,192, 1, 0,180, -/* 0x0970 */ 32, 3, 64,249,128, 1, 0,180, 1, 24, 64,185, 65, 1,168, 54, -/* 0x0980 */ 120, 14, 64,249, 24, 0, 24,203,225, 3, 24,170, 4, 0, 0,148, -/* 0x0990 */ 114,101,108,111, 99, 61, 37,112, 10, 0, 0, 0,224, 3, 30,170, -/* 0x09a0 */ 33,254,255,151,118, 14, 64,249, 98, 26, 64,249, 22, 3, 22,139, -/* 0x09b0 */ 96, 18, 64,249,212, 46, 64,146,182,103, 0,249,192, 2, 0,139, -/* 0x09c0 */ 162, 99, 0,249,214, 2, 20,203,148, 2, 2,171, 8, 0,103,158, -/* 0x09d0 */ 64, 10, 0, 84, 32, 3, 64,249,255, 2, 31,235,104, 0,128,210, -/* 0x09e0 */ 85, 0,128, 82, 8, 17,159,154, 31, 0, 31,235, 64, 2,128, 82, -/* 0x09f0 */ 8, 1, 20,139, 0, 16,149, 26,255, 2, 31,235,245, 7,159, 26, -/* 0x0a00 */ 85, 0, 0, 53, 66, 0, 0,181, 21, 4,128, 82,181, 2, 0, 42, -/* 0x0a10 */ 95, 0, 31,235, 64, 1, 38, 30,105, 22, 64,249,226, 3, 8,170, -/* 0x0a20 */ 228, 3, 21, 42,225, 3, 22,170, 99, 0,128, 82,231, 3, 24,170, -/* 0x0a30 */ 168, 87, 0,249, 10, 16,159, 90,170, 91, 0,249,128, 1, 38, 30, -/* 0x0a40 */ 229, 3, 10, 42, 9, 0, 9, 11,169, 95, 0,249,230, 3, 9, 42, -/* 0x0a50 */ 18, 0, 0,148,109,109, 97,112, 32, 32, 97,100,100,114, 61, 37, -/* 0x0a60 */ 112, 32, 32,108,101,110, 61, 37,112, 32, 32,112,114,111,116, 61, -/* 0x0a70 */ 37,120, 32, 32,102,108, 97,103,115, 61, 37,120, 32, 32,102,100, -/* 0x0a80 */ 61, 37,100, 32, 32,111,102,102, 61, 37,112, 32, 32,114,101,108, -/* 0x0a90 */ 111, 99, 61, 37,112, 10, 0, 0,224, 3, 30,170,226,253,255,151, -/* 0x0aa0 */ 168, 87, 64,249,227, 3, 21, 42,170, 91, 64,249,224, 3, 22,170, -/* 0x0ab0 */ 169, 95, 64,249,225, 3, 8,170, 98, 0,128, 82,228, 3, 10, 42, -/* 0x0ac0 */ 229, 3, 9, 42,148,253,255,151,245, 3, 0,170, 32, 3, 64,249, -/* 0x0ad0 */ 128, 0, 0,181, 53, 3, 0,249,248, 3, 21,170, 16, 0, 0, 20, -/* 0x0ae0 */ 223, 2, 21,235,192, 1, 0, 84,225, 3, 21,170,226, 3, 22,170, -/* 0x0af0 */ 6, 0, 0,148,109, 97,100,100,114, 61, 37,112, 32, 32, 97,100, -/* 0x0b00 */ 100,114, 61, 37,112, 10, 0, 0,224, 3, 30,170,198,253,255,151, -/* 0x0b10 */ 0, 1,128, 82, 71, 0, 0, 20,245, 3, 22,170,119, 1, 0,180, -/* 0x0b20 */ 96, 26, 64,249, 32, 1, 0,180, 96, 22, 64,249, 64, 0, 0,181, -/* 0x0b30 */ 53, 3, 0,249,162, 1,102,158,224, 3, 23,170, 99, 1,102,158, -/* 0x0b40 */ 161, 3, 3,145,186,254,255,151,255, 2, 31,235,224, 7,159, 26, -/* 0x0b50 */ 159, 2, 31,235,229, 7,159, 26, 9, 0, 39, 30,101, 4, 0, 52, -/* 0x0b60 */ 64, 4, 0, 52, 96, 22, 64,249, 0, 4, 0,181, 96, 66, 64,185, -/* 0x0b70 */ 192, 3, 0, 52, 99, 2, 27,203, 33, 0,128, 82,163, 2, 3,139, -/* 0x0b80 */ 1,128,186,114, 98, 32, 1,145,228, 3, 21,170,165, 95, 0,249, -/* 0x0b90 */ 64, 48, 64,185, 0, 32, 0,209,186, 2, 0,139,161,106, 32,184, -/* 0x0ba0 */ 0,120,128, 82,224,203,186,114,225, 3, 26,170, 64, 7, 0,185, -/* 0x0bb0 */ 11, 0, 0,148,104, 97,116, 99,104, 61, 37,112, 32, 32,115,101, -/* 0x0bc0 */ 99,112, 61, 37,112, 32, 32,115,101,103,112, 61, 37,112, 32, 32, -/* 0x0bd0 */ 109,104,100,114, 61, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170, -/* 0x0be0 */ 145,253,255,151,165, 95, 64,249,246, 3, 20,203,214, 46, 64,242, -/* 0x0bf0 */ 97, 0, 0, 84, 5, 2, 0, 52, 8, 0, 0, 20,161, 2, 20,139, -/* 0x0c00 */ 0, 0,128,210, 63,104, 32, 56, 0, 4, 0,145, 31, 0, 22,235, -/* 0x0c10 */ 161,255,255, 84,248,255,255, 23, 98, 62, 64,185,224, 3, 21,170, -/* 0x0c20 */ 225, 3, 20,170, 57,253,255,151, 96, 0, 0, 52, 64, 1,128, 82, -/* 0x0c30 */ 113,254,255,151, 0, 1,102,158,214, 2, 20,139,181, 2, 22,139, -/* 0x0c40 */ 191, 2, 0,235,194, 1, 0, 84,245, 4, 0,180, 1, 1,102,158, -/* 0x0c50 */ 98, 62, 64,185,224, 3, 21,170, 67, 6,128, 82, 4, 0,128, 18, -/* 0x0c60 */ 5, 0,128, 82, 33, 0, 21,203, 43,253,255,151,191, 2, 0,235, -/* 0x0c70 */ 160, 3, 0, 84, 32, 1,128, 82,238,255,255, 23, 32, 1, 38, 30, -/* 0x0c80 */ 32, 3, 0, 52,129, 14, 0,145, 33, 44, 64,146, 63, 12, 0,241, -/* 0x0c90 */ 168, 2, 0, 84,224, 3, 21,170, 25,253,255,151, 18, 0, 0, 20, -/* 0x0ca0 */ 0, 16, 0, 81, 31, 4, 0,113,232, 1, 0, 84,192, 1,102,158, -/* 0x0cb0 */ 225, 3, 19,170, 92,253,255,151, 96, 10, 64,185, 31, 16, 0,113, -/* 0x0cc0 */ 33, 1, 0, 84,224, 1,102,158,122, 66, 0,145,225, 3, 26,170, -/* 0x0cd0 */ 226, 3, 24,170, 84,253,255,151, 96,138, 64,249, 0, 0, 24,139, -/* 0x0ce0 */ 96,138, 0,249, 96, 6, 64,185,156, 7, 0, 17,115, 2, 0,139, -/* 0x0cf0 */ 20,255,255, 23,225, 3, 26,170, 5, 0, 0,148,100,111, 95,120, -/* 0x0d00 */ 109, 97,112, 61, 32, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170, -/* 0x0d10 */ 69,253,255,151,224, 3, 26,170,232, 39, 70,109,243, 83, 65,169, -/* 0x0d20 */ 234, 47, 71,109,245, 91, 66,169,236, 55, 72,109,247, 99, 67,169, -/* 0x0d30 */ 238, 63, 73,109,249,107, 68,169,251,115, 69,169,253,123,205,168, -/* 0x0d40 */ 192, 3, 95,214,255, 3, 3,209,253,123, 2,169,253,131, 0,145, -/* 0x0d50 */ 243, 83, 3,169,161, 47, 0,249,243, 3, 2,170, 2, 96, 0,145, -/* 0x0d60 */ 162, 63, 0,249,167, 47, 64,249,244, 3, 4,170,245, 91, 4,169, -/* 0x0d70 */ 231, 96, 0,209,167, 59, 0,249,246, 3, 5,170, 5, 24, 64,185, -/* 0x0d80 */ 231, 3, 0,249,245, 3, 6,170,230, 11, 0,249,167,195, 1,145, -/* 0x0d90 */ 226, 7, 0,249,160, 7, 71,169,194, 0, 64,249,230, 3, 19,170, -/* 0x0da0 */ 160, 7, 9,169,161, 47, 64,249,247, 99, 5,169,226, 15, 0,249, -/* 0x0db0 */ 247, 3, 3,170,226, 3, 4,170,227, 3, 22,170,164, 3, 2,145, -/* 0x0dc0 */ 165, 67, 0,249,249, 51, 0,249,179, 71, 0,249, 23, 0, 0,148, -/* 0x0dd0 */ 117,112,120, 95,109, 97,105,110, 32,115,122, 99, 61, 37,120, 32, -/* 0x0de0 */ 32,102, 95,100,101, 99, 61, 37,112, 32, 32,102, 95,117,110,102, -/* 0x0df0 */ 61, 37,112, 32, 32, 32, 32,120,111, 61, 37,112, 40, 37,120, 32, -/* 0x0e00 */ 37,112, 41, 32, 32,120,105, 61, 37,112, 40, 37,120, 32, 37,112, -/* 0x0e10 */ 41, 32, 32,109,104,100,114,112,112, 61, 37,112, 32, 32,109,104, -/* 0x0e20 */ 100,114,112, 61, 37,112, 10, 0,224, 3, 30,170,254,252,255,151, -/* 0x0e30 */ 160,195, 1,145,161, 3, 2,145,226, 3, 20,170, 3, 0,128,210, -/* 0x0e40 */ 251,253,255,151, 1, 0,128, 82,228, 3, 21,170,224, 3, 19,170, -/* 0x0e50 */ 162, 67, 2,145, 3, 0,128, 18,229, 3, 20,170,230, 3, 22,170, -/* 0x0e60 */ 112,254,255,151,248, 3, 0,170, 96, 18, 64,185, 97,130, 0,145, -/* 0x0e70 */ 4, 0,128, 82,159, 0, 0,107,224, 10, 0, 84, 34, 0, 64,185, -/* 0x0e80 */ 95, 56, 0,113, 1, 10, 0, 84, 52, 8, 64,185, 22, 0,128, 82, -/* 0x0e90 */ 4, 0, 0,148,100,121,108,100, 61, 32, 37,115, 10, 0, 0, 0, -/* 0x0ea0 */ 224, 3, 30,170, 52, 0, 20,139,153, 2,128, 82,225, 3, 20,170, -/* 0x0eb0 */ 221,252,255,151, 1, 0,128, 82,224, 3, 20,170,226, 3, 1, 42, -/* 0x0ec0 */ 134,252,255,151,244, 3, 0, 42, 20, 3,248, 54, 64, 2,128, 82, -/* 0x0ed0 */ 30, 0, 0, 20, 98, 2, 64,185, 64,217,159, 82, 64,215,183,114, -/* 0x0ee0 */ 95, 0, 0,107, 65, 3, 0, 84, 97, 30, 64, 57,224, 3, 19,170, -/* 0x0ef0 */ 117, 34, 0,145, 33,124, 25, 27, 33, 32, 0, 17,140,252,255,151, -/* 0x0f00 */ 96, 6, 64,185, 1, 0,128, 82, 63, 0, 0,107, 0, 3, 0, 84, -/* 0x0f10 */ 163, 2, 64,185,226, 0,128, 82, 2, 32,160,114,127, 0, 2,107, -/* 0x0f20 */ 1, 2, 0, 84,182, 10, 64,185,224, 3, 20, 42,225, 3, 19,170, -/* 0x0f30 */ 226, 3, 23,170,227, 3, 22, 42,122,252,255,151,255, 2, 0,235, -/* 0x0f40 */ 160,252,255, 84, 96, 2,128, 82,171,253,255,151,193, 87,151, 82, -/* 0x0f50 */ 193, 95,185,114, 95, 0, 1,107,128,252,255, 84, 4, 0, 0, 20, -/* 0x0f60 */ 33, 4, 0, 17,181, 82, 0,145,232,255,255, 23,164,131, 2,145, -/* 0x0f70 */ 2, 0,128,210,225, 3, 22, 42,227, 3, 20, 42,229, 3, 2,170, -/* 0x0f80 */ 230, 3, 2,170,159,140, 28,248,224, 3, 19,170, 37,254,255,151, -/* 0x0f90 */ 243, 3, 0,170,225, 3, 19,170, 5, 0, 0,148,104, 97,116, 99, -/* 0x0fa0 */ 104, 32,112,116,114, 61, 32, 37,112, 10, 0, 0,224, 3, 30,170, -/* 0x0fb0 */ 157,252,255,151,120, 2, 0,249,224, 3, 20, 42, 74,252,255,151, -/* 0x0fc0 */ 6, 0, 0, 20, 34, 4, 64,185,132, 4, 0, 17, 33, 0, 2,139, -/* 0x0fd0 */ 169,255,255, 23, 19, 0,128,210,191,131, 0,209,224, 3, 19,170, -/* 0x0fe0 */ 243, 83, 67,169,245, 91, 68,169,247, 99, 69,169,249, 51, 64,249, -/* 0x0ff0 */ 253,123, 66,169,255, 3, 3,145,192, 3, 95,214, 0, 0, 0, 0, -/* 0x1000 */ 20, 0, 0, 0, 0, 0, 0, 0, 1,122, 82, 0, 4,120, 30, 1, -/* 0x1010 */ 27, 12, 31, 0, 0, 0, 0, 0, 20, 0, 0, 0, 28, 0, 0, 0, -/* 0x1020 */ 56,241,255,255,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x1030 */ 20, 0, 0, 0, 52, 0, 0, 0,132,241,255,255,104, 0, 0, 0, -/* 0x1040 */ 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 76, 0, 0, 0, -/* 0x1050 */ 212,241,255,255,232, 2, 0, 0, 0, 65, 14,208, 2,157, 42,158, -/* 0x1060 */ 41, 65, 13, 29, 70,149, 38,150, 37,151, 36,152, 35,147, 40,148, -/* 0x1070 */ 39, 66,153, 34,154, 33, 2,175,222,221,218,217,216,215,214,213, -/* 0x1080 */ 212,211, 12, 31, 0, 0, 0, 0, 44, 0, 0, 0,140, 0, 0, 0, -/* 0x1090 */ 124,244,255,255,232, 0, 0, 0, 0, 65, 14, 48,157, 6,158, 5, -/* 0x10a0 */ 65, 13, 29, 65,147, 4,148, 3, 67,149, 2,150, 1,115,222,221, -/* 0x10b0 */ 214,213,212,211, 12, 31, 0, 0, 28, 0, 0, 0,188, 0, 0, 0, -/* 0x10c0 */ 52,245,255,255, 56, 0, 0, 0, 0, 65, 14, 32,157, 4,158, 3, -/* 0x10d0 */ 65, 13, 29, 65,147, 2, 0, 0, 52, 0, 0, 0,220, 0, 0, 0, -/* 0x10e0 */ 76,245,255,255,244, 1, 0, 0, 0, 65, 14, 96, 65,157, 10,158, -/* 0x10f0 */ 9, 65, 12, 29, 80, 65,147, 8,148, 7, 67,149, 6,150, 5, 2, -/* 0x1100 */ 113, 12, 31, 96, 68,222,221,214,213,212,211, 14, 0, 0, 0, 0, -/* 0x1110 */ 108, 0, 0, 0, 20, 1, 0, 0, 8,247,255,255, 36, 5, 0, 0, -/* 0x1120 */ 0, 65, 14,208, 1,157, 26,158, 25, 65, 13, 29, 73, 5, 74, 12, -/* 0x1130 */ 5, 75, 11,147, 24,148, 23, 5, 76, 10, 5, 77, 9,151, 20,152, -/* 0x1140 */ 19, 5, 72, 14, 5, 73, 13,153, 18,154, 17, 5, 78, 8, 5, 79, -/* 0x1150 */ 7,155, 16,156, 15,149, 22,150, 21, 3, 61, 1,222,221, 6, 79, -/* 0x1160 */ 6, 78, 6, 77, 6, 76, 6, 75, 6, 74, 6, 73, 6, 72,220,219, -/* 0x1170 */ 218,217,216,215,214,213,212,211, 12, 31, 0, 0, 0, 0, 0, 0, -/* 0x1180 */ 68, 0, 0, 0,132, 1, 0, 0,188,251,255,255,184, 2, 0, 0, -/* 0x1190 */ 0, 65, 14,192, 1, 65,157, 20,158, 19, 65, 12, 29,160, 1, 66, -/* 0x11a0 */ 147, 18,148, 17, 72,149, 16,150, 15, 78,151, 14,152, 13, 70,153, -/* 0x11b0 */ 12, 2,133, 12, 31,192, 1, 71,222,221,217,216,215,214,213,212, -/* 0x11c0 */ 211, 14, 0, 0, 0, 0, 0, 0 +/* 0x08c0 */ 149, 0, 0,180,165, 2, 64,249,166, 6, 64,249, 3, 0, 0, 20, +/* 0x08d0 */ 229, 3, 21,170,230, 3, 21,170, 33, 1, 38, 30,226, 3, 26,170, +/* 0x08e0 */ 71, 1,102,158,228, 3, 21,170, 22, 0,128,210, 25, 0,128, 82, +/* 0x08f0 */ 248, 3, 22,170, 76,254,255,151, 8, 0, 0,148, 32, 32, 35, 37, +/* 0x0900 */ 100, 32, 32, 99,109,100, 61, 37,120, 32, 32, 99,109,100,115,105, +/* 0x0910 */ 122,101, 61, 37,120, 10, 0, 0,224, 3, 30,170, 13, 0,103,158, +/* 0x0920 */ 6, 0, 0,148,116,104,114,101, 97,100, 95, 99,111,109,109, 97, +/* 0x0930 */ 110,100, 61, 32, 37,112, 10, 0,224, 3, 30,170, 14, 0,103,158, +/* 0x0940 */ 14, 0, 0,148,116,104,114,101, 97,100, 95,115,116, 97,116,101, +/* 0x0950 */ 61, 32, 37,112, 32, 32,102,108, 97,118,111,114, 61, 37,100, 32, +/* 0x0960 */ 32, 99,111,117,110,116, 61, 37,120, 32, 32,114,101,108,111, 99, +/* 0x0970 */ 61, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170, 15, 0,103,158, +/* 0x0980 */ 11, 0, 0,148,120,105, 61, 37,112, 32, 32,109,108,101,110, 61, +/* 0x0990 */ 37,112, 32, 32,102,105,108,101,111,102,102, 61, 37,112, 32, 32, +/* 0x09a0 */ 110,115,101, 99,116,115, 61, 37,100, 10, 0, 0,224, 3, 30,170, +/* 0x09b0 */ 160, 95, 0,249, 64, 19, 64,185, 63, 3, 0,107,162, 31, 0, 84, +/* 0x09c0 */ 160, 1,102,158, 98, 2, 64,185, 99, 6, 64,185,225, 3, 25, 42, +/* 0x09d0 */ 21,254,255,151, 96, 2, 64,185, 31,100, 0,113,225, 27, 0, 84, +/* 0x09e0 */ 96, 18, 64,249,192, 29, 0,180, 96, 22, 64,249, 0, 2, 0,181, +/* 0x09f0 */ 96, 26, 64,249,192, 1, 0,180,224, 2, 64,249,128, 1, 0,180, +/* 0x0a00 */ 1, 24, 64,185, 65, 1,168, 54,118, 14, 64,249, 22, 0, 22,203, +/* 0x0a10 */ 225, 3, 22,170, 4, 0, 0,148,114,101,108,111, 99, 61, 37,112, +/* 0x0a20 */ 10, 0, 0, 0,224, 3, 30,170,255,253,255,151,104, 14, 64,249, +/* 0x0a30 */ 98, 26, 64,249,200, 2, 8,139,123, 18, 64,249, 20, 45, 64,146, +/* 0x0a40 */ 162, 99, 0,249, 0, 1, 27,139, 28, 1, 20,203,168,103, 0,249, +/* 0x0a50 */ 148, 2, 2,171, 8, 0,103,158, 64, 10, 0, 84,224, 2, 64,249, +/* 0x0a60 */ 191, 2, 31,235,106, 0,128,210, 73, 0,128, 82, 74, 17,159,154, +/* 0x0a70 */ 31, 0, 31,235, 64, 2,128, 82, 74, 1, 20,139, 0, 16,137, 26, +/* 0x0a80 */ 191, 2, 31,235,233, 7,159, 26, 73, 0, 0, 53, 66, 0, 0,181, +/* 0x0a90 */ 9, 0,130, 82, 41, 1, 0, 42, 95, 0, 31,235, 32, 1, 38, 30, +/* 0x0aa0 */ 107, 22, 64,249,226, 3, 10,170,228, 3, 9, 42,225, 3, 28,170, +/* 0x0ab0 */ 99, 0,128, 82,231, 3, 22,170,170, 83, 0,249, 12, 16,159, 90, +/* 0x0ac0 */ 169, 87, 0,249, 96, 1, 38, 30,229, 3, 12, 42,172, 91, 0,249, +/* 0x0ad0 */ 27, 0, 11, 11,230, 3, 27, 42, 18, 0, 0,148,109,109, 97,112, +/* 0x0ae0 */ 32, 32, 97,100,100,114, 61, 37,112, 32, 32,108,101,110, 61, 37, +/* 0x0af0 */ 112, 32, 32,112,114,111,116, 61, 37,120, 32, 32,102,108, 97,103, +/* 0x0b00 */ 115, 61, 37,120, 32, 32,102,100, 61, 37,100, 32, 32,111,102,102, +/* 0x0b10 */ 61, 37,112, 32, 32,114,101,108,111, 99, 61, 37,112, 10, 0, 0, +/* 0x0b20 */ 224, 3, 30,170,192,253,255,151,170, 83, 64,249,229, 3, 27, 42, +/* 0x0b30 */ 169, 87, 64,249,224, 3, 28,170,172, 91, 64,249,225, 3, 10,170, +/* 0x0b40 */ 98, 0,128, 82,227, 3, 9, 42,228, 3, 12, 42,114,253,255,151, +/* 0x0b50 */ 251, 3, 0,170,224, 2, 64,249,128, 0, 0,181,251, 2, 0,249, +/* 0x0b60 */ 246, 3, 27,170, 16, 0, 0, 20,159, 3, 27,235,192, 1, 0, 84, +/* 0x0b70 */ 225, 3, 27,170,226, 3, 28,170, 6, 0, 0,148,109, 97,100,100, +/* 0x0b80 */ 114, 61, 37,112, 32, 32, 97,100,100,114, 61, 37,112, 10, 0, 0, +/* 0x0b90 */ 224, 3, 30,170,164,253,255,151, 0, 1,128, 82, 82, 0, 0, 20, +/* 0x0ba0 */ 251, 3, 28,170,117, 1, 0,180, 96, 26, 64,249, 32, 1, 0,180, +/* 0x0bb0 */ 96, 22, 64,249, 64, 0, 0,181,251, 2, 0,249,130, 1,102,158, +/* 0x0bc0 */ 224, 3, 21,170, 67, 1,102,158,161, 3, 3,145,152,254,255,151, +/* 0x0bd0 */ 160, 95, 64,249,225, 3, 21,170, 99, 22, 64,249,226, 3, 20,170, +/* 0x0be0 */ 100, 66, 64,185,144,253,255,151,191, 2, 31,235,224, 7,159, 26, +/* 0x0bf0 */ 159, 2, 31,235,229, 7,159, 26,252, 3, 0, 42,197, 4, 0, 52, +/* 0x0c00 */ 160, 4, 0, 52, 96, 22, 64,249, 96, 4, 0,181, 96, 66, 64,185, +/* 0x0c10 */ 32, 4, 0, 52, 99, 2, 26,203, 33, 0,128, 82, 99,244,126,146, +/* 0x0c20 */ 1,128,186,114, 99, 3, 3,139,228, 3, 27,170, 98, 32, 1,145, +/* 0x0c30 */ 165, 91, 0,249, 64, 48, 64,185, 0,124, 2, 83, 0, 8, 0, 81, +/* 0x0c40 */ 0,244,126,211,120, 3, 0,139, 97,107, 32,184, 0,120,128, 82, +/* 0x0c50 */ 224,203,186,114,225, 3, 24,170, 0, 7, 0,185, 11, 0, 0,148, +/* 0x0c60 */ 104, 97,116, 99,104, 61, 37,112, 32, 32,115,101, 99,112, 61, 37, +/* 0x0c70 */ 112, 32, 32,115,101,103,112, 61, 37,112, 32, 32,109,104,100,114, +/* 0x0c80 */ 61, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170,102,253,255,151, +/* 0x0c90 */ 165, 91, 64,249,227, 3, 20,203, 99, 44, 64,242, 97, 0, 0, 84, +/* 0x0ca0 */ 69, 2, 0, 52, 8, 0, 0, 20, 97, 3, 20,139, 0, 0,128,210, +/* 0x0cb0 */ 63,104, 32, 56, 0, 4, 0,145, 31, 0, 3,235,161,255,255, 84, +/* 0x0cc0 */ 248,255,255, 23, 98, 62, 64,185,224, 3, 27,170,225, 3, 20,170, +/* 0x0cd0 */ 163, 91, 0,249, 13,253,255,151,163, 91, 64,249, 96, 0, 0, 52, +/* 0x0ce0 */ 64, 1,128, 82, 68,254,255,151, 0, 1,102,158, 99, 0, 20,139, +/* 0x0cf0 */ 102, 3, 3,139,223, 0, 0,235, 2, 2, 0, 84, 6, 5, 0,180, +/* 0x0d00 */ 1, 1,102,158, 98, 62, 64,185,224, 3, 6,170, 67, 2,130, 82, +/* 0x0d10 */ 4, 0,128, 18, 5, 0,128, 82,166, 91, 0,249, 33, 0, 6,203, +/* 0x0d20 */ 253,252,255,151,166, 91, 64,249,223, 0, 0,235,128, 3, 0, 84, +/* 0x0d30 */ 32, 1,128, 82,236,255,255, 23, 60, 3, 0, 52,129, 14, 0,145, +/* 0x0d40 */ 33, 44, 64,146, 63, 12, 0,241,168, 2, 0, 84,224, 3, 6,170, +/* 0x0d50 */ 235,252,255,151, 18, 0, 0, 20, 53, 2, 0,181, 0, 16, 0, 81, +/* 0x0d60 */ 31, 4, 0,113,200, 1, 0, 84,192, 1,102,158,225, 3, 19,170, +/* 0x0d70 */ 120, 66, 0,145, 44,253,255,151,224, 1,102,158, 98, 10, 64,185, +/* 0x0d80 */ 99, 14, 64,185,225, 3, 24,170,228, 3, 22,170, 38,253,255,151, +/* 0x0d90 */ 96,138, 64,249, 0, 0, 22,139, 96,138, 0,249, 96, 6, 64,185, +/* 0x0da0 */ 57, 7, 0, 17, 0,116,126,146,115, 2, 0,139, 2,255,255, 23, +/* 0x0db0 */ 225, 3, 24,170, 5, 0, 0,148,100,111, 95,120,109, 97,112, 61, +/* 0x0dc0 */ 32, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170, 22,253,255,151, +/* 0x0dd0 */ 224, 3, 24,170,232, 39, 70,109,243, 83, 65,169,234, 47, 71,109, +/* 0x0de0 */ 245, 91, 66,169,236, 55, 72,109,247, 99, 67,169,238, 63, 73,109, +/* 0x0df0 */ 249,107, 68,169,251,115, 69,169,253,123,205,168,192, 3, 95,214, +/* 0x0e00 */ 255, 3, 3,209,253,123, 2,169,253,131, 0,145,243, 83, 3,169, +/* 0x0e10 */ 161, 47, 0,249,243, 3, 2,170, 2, 96, 0,145,162, 63, 0,249, +/* 0x0e20 */ 167, 47, 64,249,244, 3, 4,170,245, 91, 4,169,231, 96, 0,209, +/* 0x0e30 */ 167, 59, 0,249,246, 3, 5,170, 5, 24, 64,185,231, 3, 0,249, +/* 0x0e40 */ 245, 3, 6,170,230, 11, 0,249,167,195, 1,145,226, 7, 0,249, +/* 0x0e50 */ 160, 7, 71,169,194, 0, 64,249,230, 3, 19,170,160, 7, 9,169, +/* 0x0e60 */ 161, 47, 64,249,247, 99, 5,169,226, 15, 0,249,248, 3, 3,170, +/* 0x0e70 */ 226, 3, 4,170,227, 3, 22,170,164, 3, 2,145,165, 67, 0,249, +/* 0x0e80 */ 249, 51, 0,249,179, 71, 0,249, 23, 0, 0,148,117,112,120, 95, +/* 0x0e90 */ 109, 97,105,110, 32,115,122, 99, 61, 37,120, 32, 32,102, 95,101, +/* 0x0ea0 */ 120,112, 61, 37,112, 32, 32,102, 95,117,110,102, 61, 37,112, 32, +/* 0x0eb0 */ 32, 32, 32,120,111, 61, 37,112, 40, 37,120, 32, 37,112, 41, 32, +/* 0x0ec0 */ 32,120,105, 61, 37,112, 40, 37,120, 32, 37,112, 41, 32, 32,109, +/* 0x0ed0 */ 104,100,114,112,112, 61, 37,112, 32, 32,109,104,100,114,112, 61, +/* 0x0ee0 */ 37,112, 10, 0,224, 3, 30,170,207,252,255,151,160,195, 1,145, +/* 0x0ef0 */ 161, 3, 2,145,226, 3, 20,170, 3, 0,128,210,204,253,255,151, +/* 0x0f00 */ 1, 0,128, 82,228, 3, 21,170,224, 3, 19,170,162, 67, 2,145, +/* 0x0f10 */ 3, 0,128, 18,229, 3, 20,170,230, 3, 22,170, 65,254,255,151, +/* 0x0f20 */ 247, 3, 0,170, 96, 18, 64,185, 97,130, 0,145, 4, 0,128, 82, +/* 0x0f30 */ 159, 0, 0,107, 32, 11, 0, 84, 34, 0, 64,185, 95, 56, 0,113, +/* 0x0f40 */ 65, 10, 0, 84, 52, 8, 64,185, 22, 0,128, 82, 4, 0, 0,148, +/* 0x0f50 */ 100,121,108,100, 61, 32, 37,115, 10, 0, 0, 0,224, 3, 30,170, +/* 0x0f60 */ 52, 0, 20,139,153, 2,128, 82,225, 3, 20,170,174,252,255,151, +/* 0x0f70 */ 1, 0,128, 82,224, 3, 20,170,226, 3, 1, 42, 87,252,255,151, +/* 0x0f80 */ 244, 3, 0, 42, 20, 3,248, 54, 64, 2,128, 82, 30, 0, 0, 20, +/* 0x0f90 */ 97, 2, 64,185, 64,217,159, 82, 64,215,183,114, 63, 0, 0,107, +/* 0x0fa0 */ 65, 3, 0, 84, 97, 30, 64, 57,224, 3, 19,170,117, 34, 0,145, +/* 0x0fb0 */ 33,124, 25, 27, 33, 32, 0, 17, 93,252,255,151, 98, 6, 64,185, +/* 0x0fc0 */ 1, 0,128, 82, 63, 0, 2,107, 0, 3, 0, 84,163, 2, 64,185, +/* 0x0fd0 */ 224, 0,128, 82, 0, 32,160,114,127, 0, 0,107, 1, 2, 0, 84, +/* 0x0fe0 */ 182, 10, 64,185,224, 3, 20, 42,225, 3, 19,170,226, 3, 24,170, +/* 0x0ff0 */ 227, 3, 22, 42, 75,252,255,151, 31, 3, 0,235,160,252,255, 84, +/* 0x1000 */ 96, 2,128, 82,124,253,255,151,192, 87,151, 82,192, 95,185,114, +/* 0x1010 */ 63, 0, 0,107,128,252,255, 84, 4, 0, 0, 20, 33, 4, 0, 17, +/* 0x1020 */ 181, 82, 0,145,232,255,255, 23,164,131, 2,145, 2, 0,128,210, +/* 0x1030 */ 229, 3, 2,170,230, 3, 2,170,225, 3, 22, 42,227, 3, 20, 42, +/* 0x1040 */ 159,140, 28,248,224, 3, 19,170,246,253,255,151,243, 3, 0,170, +/* 0x1050 */ 225, 3, 19,170,226, 3, 23,170, 6, 0, 0,148,116,115, 61, 32, +/* 0x1060 */ 37,112, 32, 32,104, 97,116, 99,104, 61, 37,112, 10, 0, 0, 0, +/* 0x1070 */ 224, 3, 30,170,108,252,255,151,119, 2, 0,249,224, 3, 20, 42, +/* 0x1080 */ 25,252,255,151, 6, 0, 0, 20, 34, 4, 64,185,132, 4, 0, 17, +/* 0x1090 */ 33, 0, 2,139,167,255,255, 23, 19, 0,128,210,191,131, 0,209, +/* 0x10a0 */ 224, 3, 19,170,243, 83, 67,169,245, 91, 68,169,247, 99, 69,169, +/* 0x10b0 */ 249, 51, 64,249,253,123, 66,169,255, 3, 3,145,192, 3, 95,214, +/* 0x10c0 */ 20, 0, 0, 0, 0, 0, 0, 0, 1,122, 82, 0, 4,120, 30, 1, +/* 0x10d0 */ 27, 12, 31, 0, 0, 0, 0, 0, 20, 0, 0, 0, 28, 0, 0, 0, +/* 0x10e0 */ 120,240,255,255,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x10f0 */ 20, 0, 0, 0, 52, 0, 0, 0,196,240,255,255,104, 0, 0, 0, +/* 0x1100 */ 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 76, 0, 0, 0, +/* 0x1110 */ 20,241,255,255,232, 2, 0, 0, 0, 65, 14,208, 2,157, 42,158, +/* 0x1120 */ 41, 65, 13, 29, 70,149, 38,150, 37,151, 36,152, 35,147, 40,148, +/* 0x1130 */ 39, 66,153, 34,154, 33, 2,175,222,221,218,217,216,215,214,213, +/* 0x1140 */ 212,211, 12, 31, 0, 0, 0, 0, 44, 0, 0, 0,140, 0, 0, 0, +/* 0x1150 */ 188,243,255,255,232, 0, 0, 0, 0, 65, 14, 48,157, 6,158, 5, +/* 0x1160 */ 65, 13, 29, 65,147, 4,148, 3, 67,149, 2,150, 1,115,222,221, +/* 0x1170 */ 214,213,212,211, 12, 31, 0, 0, 28, 0, 0, 0,188, 0, 0, 0, +/* 0x1180 */ 116,244,255,255, 56, 0, 0, 0, 0, 65, 14, 32,157, 4,158, 3, +/* 0x1190 */ 65, 13, 29, 65,147, 2, 0, 0, 52, 0, 0, 0,220, 0, 0, 0, +/* 0x11a0 */ 140,244,255,255,244, 1, 0, 0, 0, 65, 14, 96, 65,157, 10,158, +/* 0x11b0 */ 9, 65, 12, 29, 80, 65,147, 8,148, 7, 67,149, 6,150, 5, 2, +/* 0x11c0 */ 113, 12, 31, 96, 68,222,221,214,213,212,211, 14, 0, 0, 0, 0, +/* 0x11d0 */ 108, 0, 0, 0, 20, 1, 0, 0, 72,246,255,255,224, 5, 0, 0, +/* 0x11e0 */ 0, 65, 14,208, 1,157, 26,158, 25, 65, 13, 29, 73, 5, 74, 12, +/* 0x11f0 */ 5, 75, 11,147, 24,148, 23, 5, 72, 14, 5, 73, 13,149, 22,150, +/* 0x1200 */ 21, 5, 76, 10, 5, 77, 9,151, 20,152, 19, 5, 78, 8, 5, 79, +/* 0x1210 */ 7,153, 18,154, 17,155, 16,156, 15, 3,108, 1,222,221, 6, 79, +/* 0x1220 */ 6, 78, 6, 77, 6, 76, 6, 75, 6, 74, 6, 73, 6, 72,220,219, +/* 0x1230 */ 218,217,216,215,214,213,212,211, 12, 31, 0, 0, 0, 0, 0, 0, +/* 0x1240 */ 68, 0, 0, 0,132, 1, 0, 0,184,251,255,255,192, 2, 0, 0, +/* 0x1250 */ 0, 65, 14,192, 1, 65,157, 20,158, 19, 65, 12, 29,160, 1, 66, +/* 0x1260 */ 147, 18,148, 17, 72,149, 16,150, 15, 78,151, 14,152, 13, 70,153, +/* 0x1270 */ 12, 2,135, 12, 31,192, 1, 71,222,221,217,216,215,214,213,212, +/* 0x1280 */ 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 b7aeb67a..fd124d88 100644 --- a/src/stub/src/amd64-darwin.macho-main.c +++ b/src/stub/src/amd64-darwin.macho-main.c @@ -185,12 +185,12 @@ static void unpackExtent( Extent *const xi, // input Extent *const xo, // output - f_expand *const f_decompress, + f_expand *const f_exp, f_unfilter *f_unf ) { DPRINTF("unpackExtent in=%%p(%%x %%p) out=%%p(%%x %%p) %%p %%p\\n", - xi, xi->size, xi->buf, xo, xo->size, xo->buf, f_decompress, f_unf); + xi, xi->size, xi->buf, xo, xo->size, xo->buf, f_exp, f_unf); while (xo->size) { struct b_info h; // Note: if h.sz_unc == h.sz_cpr then the block was not @@ -222,7 +222,7 @@ ERR_LAB if (h.sz_cpr < h.sz_unc) { // Decompress block size_t out_len = h.sz_unc; // EOF for lzma - int const j = (*f_decompress)(xi->buf, h.sz_cpr, + int const j = (*f_exp)(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); @@ -314,8 +314,8 @@ typedef struct { unsigned cmdsize; } Mach_load_command; enum e4 { - LC_SEGMENT = 0x1, - LC_SEGMENT_64 = 0x19, +// LC_SEGMENT = 0x1, +// LC_SEGMENT_64 = 0x19, LC_THREAD = 0x4, LC_UNIXTHREAD = 0x5, LC_LOAD_DYLINKER = 0xe @@ -380,6 +380,9 @@ typedef struct { enum e7 { THREAD_STATE_COUNT = sizeof(Mach_thread_state)/4 }; + enum e10 { + LC_SEGMENT = 0x19 // LC_SEGMENT_64 + }; #elif defined(__arm__) //}{ typedef struct { @@ -390,11 +393,14 @@ typedef struct { uint32_t cpsr; } Mach_thread_state; // Mach_ARM_thead_state; enum e6 { - THREAD_STATE = 4 // ARM_THREAD_STATE + THREAD_STATE = 1 // ARM_THREAD_STATE }; enum e7 { THREAD_STATE_COUNT = sizeof(Mach_thread_state)/4 }; + enum e10 { + LC_SEGMENT = 0x1 + }; #elif defined(__x86_64__) //}{ typedef struct { @@ -411,6 +417,9 @@ typedef struct { enum e7 { THREAD_STATE_COUNT = sizeof(Mach_thread_state)/4 }; + enum e10 { + LC_SEGMENT = 0x19 // LC_SEGMENT_64 + }; #endif //} @@ -429,14 +438,16 @@ typedef union { #define MAP_FIXED 0x10 #define MAP_PRIVATE 0x02 -#define MAP_ANON 0x1000 -#undef MAP_ANON // x86 DEBUG ONLY -#define MAP_ANON 0x20 // x86 DEBUG ONLY +#if SIMULATE_ON_LINUX_EABI4 //{ +#define MAP_ANON 0x20 /* SIMULATE_ON_LINUX_EABI4 */ +#else //}{ +#define MAP_ANON 0x1000 /* native darwin usual case */ +#endif //} +#define MAP_ANON_FD -1 #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); @@ -450,7 +461,7 @@ do_xmap( Extent *const xi, int const fdi, Mach_header **mhdrpp, - f_expand *const f_decompress, + f_expand *const f_exp, f_unfilter *const f_unf ) { @@ -464,115 +475,124 @@ do_xmap( for ( j=0; j < mhdr->ncmds; ++j, (sc = (Mach_segment_command *)((sc->cmdsize>>2) + (unsigned *)sc)) - ) if (LC_SEGMENT_64==sc->cmd && sc->vmsize) { - if (!sc->fileoff && sc->filesize // should be __TEXT - && *mhdrpp && ((*mhdrpp)->flags & MH_PIE)) { - reloc = (size_t)*mhdrpp - sc->vmaddr; - DPRINTF("reloc=%%p\\n", reloc); - } - Extent xo; - size_t mlen = xo.size = sc->filesize; - unsigned char *addr = xo.buf = reloc + (unsigned char *)sc->vmaddr; - unsigned char *haddr = sc->vmsize + addr; - size_t frag = (int)(uint64_t)addr &~ PAGE_MASK; - addr -= frag; - mlen += frag; + ) { + DPRINTF(" #%%d cmd=%%x cmdsize=%%x\\n", j, sc->cmd, sc->cmdsize); + if (LC_SEGMENT==sc->cmd && sc->vmsize) { + if (!sc->fileoff && sc->filesize // should be __TEXT + && *mhdrpp && ((*mhdrpp)->flags & MH_PIE)) { + reloc = (size_t)*mhdrpp - sc->vmaddr; + DPRINTF("reloc=%%p\\n", reloc); + } + Extent xo; + size_t mlen = xo.size = sc->filesize; + unsigned char *addr = xo.buf = reloc + (unsigned char *)sc->vmaddr; + unsigned char *haddr = sc->vmsize + addr; + size_t frag = (int)(uint64_t)addr &~ PAGE_MASK; + addr -= frag; + mlen += frag; - if (0!=mlen) { - // Decompressor can overrun the destination by 3 bytes. [x86 only] - size_t const mlen3 = mlen + (xi ? 3 : 0); - unsigned const prot = VM_PROT_READ | VM_PROT_WRITE; - unsigned const flags = (*mhdrpp ? MAP_FIXED : 0) | MAP_PRIVATE | - ((xi || 0==sc->filesize) ? MAP_ANON : 0); - int const fdm = ((0==sc->filesize) ? MAP_ANON_FD : fdi); - off_t_upx_stub const offset = sc->fileoff + fat_offset; + if (0!=mlen) { + // Decompressor can overrun the destination by 3 bytes. [x86 only] + size_t const mlen3 = mlen + (xi ? 3 : 0); + unsigned const prot = VM_PROT_READ | VM_PROT_WRITE; + unsigned const flags = (*mhdrpp ? MAP_FIXED : 0) | MAP_PRIVATE | + ((xi || 0==sc->filesize) ? MAP_ANON : 0); + int const fdm = ((0==sc->filesize) ? MAP_ANON_FD : fdi); + off_t_upx_stub const offset = sc->fileoff + fat_offset; - DPRINTF("mmap addr=%%p len=%%p prot=%%x flags=%%x fd=%%d off=%%p reloc=%%p\\n", - addr, mlen3, prot, flags, fdm, offset, reloc); - unsigned *maddr = mmap(addr, mlen3, prot, flags, fdm, offset); - if (!*mhdrpp) { // MH_DYLINKER - *mhdrpp = (Mach_header*)maddr; - addr = (unsigned char *)maddr; - reloc = (size_t)addr; + DPRINTF("mmap addr=%%p len=%%p prot=%%x flags=%%x fd=%%d off=%%p reloc=%%p\\n", + addr, mlen3, prot, flags, fdm, offset, reloc); + unsigned *maddr = mmap(addr, mlen3, prot, flags, fdm, offset); + if (!*mhdrpp) { // MH_DYLINKER + *mhdrpp = (Mach_header*)maddr; + addr = (unsigned char *)maddr; + reloc = (size_t)addr; + } + if (addr != (unsigned char *)maddr) { + DPRINTF("maddr=%%p addr=%%p\\n", maddr, addr); + err_exit(8); + } } - if (addr != (unsigned char *)maddr) { - DPRINTF("maddr=%%p addr=%%p\\n", maddr, addr); - err_exit(8); + if (xi && 0!=sc->filesize) { + if (0==sc->fileoff /*&& 0!=mhdrpp*/) { + *mhdrpp = (Mach_header *)(void *)addr; + } + unpackExtent(xi, &xo, f_exp, f_unf); + } + DPRINTF("xi=%%p mlen=%%p fileoff=%%p nsects=%%d\\n", + xi, mlen, sc->fileoff, sc->nsects); + if (xi && mlen && !sc->fileoff && sc->nsects) { + // main target __TEXT segment at beginning of file with sections (__text) + // Use upto 2 words of header padding for the escape hatch. + // fold.S could do this easier, except PROT_WRITE is missing then. + union { + unsigned char *p0; + unsigned short *p1; + unsigned int *p2; + unsigned long *p3; + } u; + u.p0 = addr; + Mach_segment_command *segp = (Mach_segment_command *)((((char *)sc - (char *)mhdr)>>2) + u.p2); + Mach_section_command *const secp = (Mach_section_command *)(1+ segp); + #if defined(__AARCH64EL__) //{ + unsigned *hatch= -2+ (secp->offset>>2) + u.p2; + hatch[0] = 0xd4000001; // svc #0 // syscall + hatch[1] = 0xd65f03c0; // ret + #elif defined(__arm__) //}{ + unsigned *hatch= -2+ (secp->offset>>2) + u.p2; + hatch[0] = 0xef000000; // svc 0x0 // syscall + hatch[1] = 0xe12fff1e; // bx lr + #elif defined(__x86_64__) //}{ + unsigned *hatch= -1+ (secp->offset>>2) + u.p2; + hatch[0] = 0xc3050f90; // nop; syscall; ret + #endif //} + DPRINTF("hatch=%%p secp=%%p segp=%%p mhdr=%%p\\n", hatch, secp, segp, addr); + rv = hatch; + } + /*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 SIMULATE_ON_LINUX_EABI4 /*{*/ + 0!=addr && + #endif /*}*/ + addr < haddr) { // need pages for .bss + if (0!=addr && addr != mmap(addr, haddr - addr, sc->initprot, + MAP_FIXED | MAP_PRIVATE | MAP_ANON, MAP_ANON_FD, 0 ) ) { + err_exit(9); + } + } + else if (xi) { // cleanup if decompressor overrun crosses page boundary + mlen = ~PAGE_MASK & (3+ mlen); + if (mlen<=3) { // page fragment was overrun buffer only + munmap((char *)addr, mlen); + } } } - if (xi && 0!=sc->filesize) { - if (0==sc->fileoff /*&& 0!=mhdrpp*/) { - *mhdrpp = (Mach_header *)(void *)addr; + else if (!xi // dyld + && (LC_UNIXTHREAD==sc->cmd || LC_THREAD==sc->cmd)) { + Mach_thread_command *const thrc = (Mach_thread_command *)sc; + DPRINTF("thread_command= %%p\\n", sc); + if (1 + // FIXME THREAD_STATE ==thrc->flavor + // && THREAD_STATE_COUNT==thrc->count + ) { + DPRINTF("thread_state= %%p flavor=%%d count=%%x reloc=%%p\\n", + &thrc->state, thrc->flavor, thrc->count, reloc); + #if defined(__AARCH64EL__) //{ + thrc->state.pc += reloc; + #elif defined(__arm__) //}{ + thrc->state.pc += reloc; + #elif defined(__x86_64__) //}{ + thrc->state.rip += reloc; + #endif //} + rv = (unsigned *)&thrc->state; } - unpackExtent(xi, &xo, f_decompress, f_unf); - } - if (xi && mlen && !sc->fileoff && sc->nsects) { - // main target __TEXT segment at beginning of file with sections (__text) - // Use upto 2 words of header padding for the escape hatch. - // fold.S could do this easier, except PROT_WRITE is missing then. - union { - unsigned char *p0; - unsigned short *p1; - unsigned int *p2; - unsigned long *p3; - } u; - u.p0 = addr; - Mach_segment_command *segp = (Mach_segment_command *)((((char *)sc - (char *)mhdr)>>2) + u.p2); - Mach_section_command *const secp = (Mach_section_command *)(1+ segp); -#if defined(__AARCH64EL__) //{ - unsigned *hatch= -2+ (*secp->offset>>2) + u.p2); - hatch[0] = 0xd4000001; // svc #0 // syscall - hatch[1] = 0xd65f03c0; // ret -#elif defined(__arm__) //}{ - unsigned *hatch= -2+ ((secp->offset>>2) + u.p2); - hatch[0] = 0xef000000; // svc 0x0 // syscall - hatch[1] = 0xe12fff1e; // bx lr -#elif defined(__x86_64__) //}{ - unsigned *hatch= -1+ ((secp->offset>>2) + u.p2); - hatch[0] = 0xc3050f90; // nop; syscall; ret -#endif //} - DPRINTF("hatch=%%p secp=%%p segp=%%p mhdr=%%p\\n", hatch, secp, segp, addr); - rv = hatch; - } - /*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 SIMULATE_ON_LINUX_EABI4 /*{*/ - 0!=addr && -#endif /*}*/ - addr < haddr) { // need pages for .bss - if (0!=addr && addr != mmap(addr, haddr - addr, sc->initprot, - MAP_FIXED | MAP_PRIVATE | MAP_ANON, MAP_ANON_FD, 0 ) ) { - err_exit(9); - } - } - else if (xi) { // cleanup if decompressor overrun crosses page boundary - mlen = ~PAGE_MASK & (3+ mlen); - if (mlen<=3) { // page fragment was overrun buffer only - munmap((char *)addr, mlen); - } - } - } - else if (LC_UNIXTHREAD==sc->cmd || LC_THREAD==sc->cmd) { - Mach_thread_command *const thrc = (Mach_thread_command *)sc; - DPRINTF("thread_command= %%p\\n", sc); - if (THREAD_STATE ==thrc->flavor - /* FIXME && THREAD_STATE_COUNT==thrc->count*/ ) { - DPRINTF("thread_state= %%p reloc=%%p\\n", &thrc->state, reloc); -#if defined(__AARCH64EL__) //{ - thrc->state.pc += reloc; -#elif defined(__arm__) //}{ - thrc->state.pc += reloc; -#elif defined(__x86_64__) //}{ - thrc->state.rip += reloc; -#endif //} - rv = (unsigned *)&thrc->state; } } DPRINTF("do_xmap= %%p\\n", rv); @@ -590,7 +610,7 @@ upx_main( 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_expand *const f_exp, f_unfilter *const f_unf, Mach_header **const mhdrpp // Out: *mhdrpp= &real Mach_header ) @@ -605,16 +625,16 @@ upx_main( xo.size = ((struct b_info const *)(void const *)xi.buf)->sz_unc; xi0 = xi; - DPRINTF("upx_main szc=%%x f_dec=%%p f_unf=%%p " + DPRINTF("upx_main szc=%%x f_exp=%%p f_unf=%%p " " xo=%%p(%%x %%p) xi=%%p(%%x %%p) mhdrpp=%%p mhdrp=%%p\\n", - sz_compressed, f_decompress, f_unf, &xo, xo.size, xo.buf, + sz_compressed, f_exp, f_unf, &xo, xo.size, xo.buf, &xi, xi.size, xi.buf, mhdrpp, *mhdrpp); // Uncompress Macho headers - unpackExtent(&xi, &xo, f_decompress, 0); // never filtered? + unpackExtent(&xi, &xo, f_exp, 0); // never filtered? // Overwrite the OS-chosen address space at *mhdrpp. - hatch = do_xmap(mhdr, fat_offset, &xi0, MAP_ANON_FD, mhdrpp, f_decompress, f_unf); + hatch = do_xmap(mhdr, fat_offset, &xi0, MAP_ANON_FD, mhdrpp, f_exp, f_unf); { // Map dyld dynamic loader Mach_load_command const *lc = (Mach_load_command const *)(1+ mhdr); @@ -654,7 +674,7 @@ ERR_LAB } // switch Mach_header *dyhdr = 0; ts = (Mach_thread_state *)do_xmap(mhdr, fat_offset, 0, fdi, &dyhdr, 0, 0); - DPRINTF("hatch ptr= %%p\\n", ts); + DPRINTF("ts= %%p hatch=%%p\\n", ts, hatch); #if defined(__AARCH64EL__) // { ts->x0 = (uint64_t)hatch; #elif defined(__arm__) //}{ @@ -768,10 +788,10 @@ finish: case 'x': { buf[0] = '0'; buf[1] = 'x'; - n+= write(2, buf, heximal(va_arg(va, int), buf, 2)); + n+= write(2, buf, heximal(va_arg(va, unsigned int), buf, 2)); } break; case 's': { - char *s0= (char *)va_arg(va, char *), *s= s0; + char *s0= (char *)va_arg(va, unsigned char *), *s= s0; if (s) while (*s) ++s; n+= write(2, s0, s - s0); } break; diff --git a/src/stub/src/arm.v5a-darwin.macho-entry.S b/src/stub/src/arm.v5a-darwin.macho-entry.S index 713d4511..e6f2f643 100644 --- a/src/stub/src/arm.v5a-darwin.macho-entry.S +++ b/src/stub/src/arm.v5a-darwin.macho-entry.S @@ -176,8 +176,8 @@ unfold: // lr= &b_info; sp/ fd,%ADRU,%LENU,%entry,%&Mach_header 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 + mov r0,rcx,lsr #PAGE_SHIFT + mov r0,r0, lsl #PAGE_SHIFT // page boundary below new f_exp str r0,[sp,#-NBPW]! // P_11 address sub rdx,rdx,r0 str rdx,[sp,#-NBPW]! // P_12 length @@ -186,13 +186,13 @@ unfold: // lr= &b_info; sp/ fd,%ADRU,%LENU,%entry,%&Mach_header ldr rax,[rbx,#sz_unc] // dstlen str rax,[sp,#-NBPW]!; mov arg4,sp // P_13 &dstlen add arg3,rbx,r_RELOC // dst= new unfold - mov r_FOLD,arg3 // execute here - ldr rax,[rbx,#sz_cpr] // srclen + mov r_FOLD,arg3 // remember where to execute after unfold ldr arg5,[rbx,#b_method] + ldr arg2,[rbx,#sz_cpr] // srclen add arg1,rbx,#sz_b_info // src - mov arg2,rax // srclen + str arg5,[sp,#-NBPW]! // P_14 ABI: fifth arg goes on stack blx r_EXP // old f_exp; new f_exp lacks PROT_EXEC - add sp,sp,#NBPW // P_13 toss dstlen + add sp,sp,#2*NBPW // P_14,P_13 toss fifth arg and dstlen // PROT_EXEC ldr arg2,[sp],#NBPW // P_12 length diff --git a/src/stub/src/arm.v5a-darwin.macho-fold.S b/src/stub/src/arm.v5a-darwin.macho-fold.S index d0970ecf..31924bcc 100644 --- a/src/stub/src/arm.v5a-darwin.macho-fold.S +++ b/src/stub/src/arm.v5a-darwin.macho-fold.S @@ -90,13 +90,13 @@ fold_begin: r9= f_exp; r10= ADRX; r11= LENX rsp/ fd,ADRU,LENU,%entry,&Mach_header */ -r_t0 .req r12 // scratch value +r_t0 .req r12 // scratch r_LENX .req r11 r_ADRX .req r10 r_EXP .req r9 r_OSTK .req r8 - ldr arg4,[arg1,#sz_unc + sz_l_info + sz_p_info] // sz_unc of Mach_header + ldr arg4,[r_ADRX,#sz_unc + sz_l_info + sz_p_info] // sz_unc of Mach_header mov r_t0,#(1<<13) cmp arg4,r_t0 movlo arg4,r_t0 // at least 8KiB @@ -111,6 +111,7 @@ r_OSTK .req r8 mov arg5,r_EXP stmdb sp!,{arg5,arg6,arg7} // ABI: only arg1,arg2,arg3,arg4 in registers // upx_main(r0=&l_info, r1=len_cpr, r2=temp[sz_mhdr], r3=sz_mhdr, r4=f_exp, r5=f_unf, r6=mhdr **) + bkpt bl upx_main // OUT: r0= &Mach_thread_state of dyld; will be in temp mhdr[] ARM_ts_pc= 14*NBPW @@ -262,4 +263,40 @@ bswap9: bge bswap0 ret +bad__udivsi3: + bkpt +__udivsi3: .globl __udivsi3 + cmp r1,#10 + bne bad__udivsi3 +div10: .globl div10 + mov ip,r0 @ extra copy used at end + sub r1,r1,r1 @ hi + + mov r2,r0 @ copy lo + adds r0,r0,r0,lsl #3 @ 9*lo + adc r1,r1,r1,lsl #3 @ 9*hi + C + add r1,r1,r2,lsr #(32 - 3) @ bits shifted from lo to hi + + mov r2,r0 @ copy lo + adds r0,r0,r0,lsl #4 + adc r1,r1,r1,lsl #4 + add r1,r1,r2,lsr #(32 - 4) @ * 0x99 + + mov r2,r0 @ copy lo + adds r0,r0,r0,lsl #8 + adc r1,r1,r1,lsl #8 + add r1,r1,r2,lsr #(32 - 8) @ * 0x9999 + + mov r2,r0 @ copy lo + adds r0,r0,r0,lsl #16 + adc r1,r1,r1,lsl #16 + add r1,r1,r2,lsr #(32 - 16) @ * 0x99999999 + + subs r0,r0,ip,lsl #(32 - 1) @ - * 0x80000000 + sbc r1,r1,ip,lsr #1 @ * 0x19999999 + + adds r0,r0,ip + adc r0,r1,#0 @ * 0x0.1999999a + ret + /* vim:set ts=8 sw=8 et: */ diff --git a/src/stub/src/arm64-darwin.macho-entry.S b/src/stub/src/arm64-darwin.macho-entry.S index b217e676..4baba9ef 100644 --- a/src/stub/src/arm64-darwin.macho-entry.S +++ b/src/stub/src/arm64-darwin.macho-entry.S @@ -177,7 +177,7 @@ unfold: // lr= &b_info; sp/ fd,%ADRU,%LENU,%entry,%&Mach_header,HOLE sub r_RELOC,x0,rcx // relocation constant = new - old add rcx,r_EXP,r_RELOC str rcx,[sp,#-4*NBPW]! // P_10 new f_exp - and x0,x0,#~0<