stash work-in-progress

modified:   stub/src/amd64-darwin.macho-main.c
	modified:   stub/src/amd64-darwin.macho-upxmain.c
	modified:   stub/src/arm.v5a-darwin.macho-entry.S
	modified:   stub/src/arm.v5a-darwin.macho-fold.S
	modified:   stub/src/arm.v5a-darwin.macho-main.c
	modified:   stub/src/arm64-darwin.macho-entry.S
	modified:   stub/src/arm64-darwin.macho-fold.S
	modified:   stub/src/i386-darwin.macho-upxmain.c
This commit is contained in:
John Reiser
2017-12-22 10:20:32 -08:00
parent 9d2d59b5d2
commit fb3699fb89
18 changed files with 1681 additions and 2051 deletions
+82 -78
View File
@@ -1,5 +1,5 @@
/* amd64-darwin.macho-fold.h /* amd64-darwin.macho-fold.h
created from amd64-darwin.macho-fold.bin, 3747 (0xea3) bytes created from amd64-darwin.macho-fold.bin, 3813 (0xee5) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -31,11 +31,11 @@
*/ */
#define STUB_AMD64_DARWIN_MACHO_FOLD_SIZE 3747 #define STUB_AMD64_DARWIN_MACHO_FOLD_SIZE 3813
#define STUB_AMD64_DARWIN_MACHO_FOLD_ADLER32 0xf284b1a1 #define STUB_AMD64_DARWIN_MACHO_FOLD_ADLER32 0x64d1cde8
#define STUB_AMD64_DARWIN_MACHO_FOLD_CRC32 0x7a8ad96c #define STUB_AMD64_DARWIN_MACHO_FOLD_CRC32 0x84d8a714
unsigned char stub_amd64_darwin_macho_fold[3747] = { unsigned char stub_amd64_darwin_macho_fold[3813] = {
/* 0x0000 */ 232, 74, 0, 0, 0,131,249, 73,117, 68, 83, 87, 72,141, 76, 55, /* 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, /* 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, /* 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[3747] = {
/* 0x0040 */ 41,248, 1,216,171, 72, 57,206,115, 3,172,235,223, 91,195, 65, /* 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, /* 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, /* 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,181, 11, 0, 0, 72,139, 40, 72,139, /* 0x0070 */ 41,204, 72,137,226, 80,232,247, 11, 0, 0, 72,139, 40, 72,139,
/* 0x0080 */ 136,128, 0, 0, 0, 76,137,228, 72,137, 76, 36, 24, 95,232, 45, /* 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, /* 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, /* 0x00a0 */ 137, 7,131,238, 4, 72,141,127, 4,119,241,195,176, 4,235, 2,
@@ -169,9 +169,9 @@ unsigned char stub_amd64_darwin_macho_fold[3747] = {
/* 0x0820 */ 80, 0,116, 9, 72,139, 92, 36, 80, 72,139, 67, 8, 80, 73,137, /* 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, /* 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, /* 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,186, 3, /* 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, 39, 3, 0, 0, 73, /* 0x0860 */ 0, 0, 65,139, 69, 0,131,248, 25, 15,133, 52, 3, 0, 0, 73,
/* 0x0870 */ 131,125, 32, 0, 15,132, 28, 3, 0, 0, 73,131,125, 40, 0,117, /* 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, /* 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, /* 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, /* 0x08a0 */ 10, 0, 0, 0,114,101,108,111, 99, 61, 37,112, 10, 0, 95, 72,
@@ -193,8 +193,8 @@ unsigned char stub_amd64_darwin_macho_fold[3747] = {
/* 0x09a0 */ 112, 10, 0, 95, 65, 84, 72,139, 84, 36, 16, 65,137,217,232,100, /* 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, /* 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, /* 0x09c0 */ 0, 0, 0, 72,137,239, 72,139, 52, 36,232,249,246,255,255, 72,
/* 0x09d0 */ 139, 92, 36, 56, 72,137,198, 72,131, 59, 0,117, 11, 72,137,197, /* 0x09d0 */ 139, 92, 36, 56, 72,137,198, 72,131, 59, 0,117, 11, 72,137, 3,
/* 0x09e0 */ 72,137, 3, 72,137, 68, 36, 24, 72, 57,245,116, 45, 72,137,234, /* 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, /* 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, /* 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, /* 0x0a10 */ 191, 8, 0, 0, 0,232, 83,251,255,255, 72,131,124, 36, 72, 0,
@@ -202,73 +202,77 @@ unsigned char stub_amd64_darwin_macho_fold[3747] = {
/* 0x0a30 */ 72,139, 68, 36, 56, 72,137, 40, 72,139, 76, 36, 40, 72,139, 84, /* 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, /* 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, /* 0x0a50 */ 255, 72,131,124, 36, 72, 0, 15,149,194, 49,192, 77,133,255, 15,
/* 0x0a60 */ 149,192,133,194,116,111, 73,131,125, 40, 0,117,104, 65,131,125, /* 0x0a60 */ 149,192,133,194,116,120, 73,131,125, 40, 0,117,113, 65,131,125,
/* 0x0a70 */ 64, 0,116, 97, 76,137,233, 72, 43, 76, 36, 88, 73,137,232,232, /* 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, /* 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, /* 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,141, 76, 13, 0, 72, /* 0x0aa0 */ 109,104,100,114, 61, 37,112, 10, 0, 95, 72,131,225,252, 72,141,
/* 0x0ab0 */ 141, 81, 72,139, 66, 48, 72,141, 68, 5, 0, 72,141, 88,252,199, /* 0x0ab0 */ 76, 13, 0, 72,141, 81, 72,139, 66, 48,193,232, 2,137,192, 72,
/* 0x0ac0 */ 64,252,144, 15, 5,195, 49,192, 72,137,222,232, 71,247,255,255, /* 0x0ac0 */ 141, 68,133, 0, 72,141, 88,252,199, 64,252,144, 15, 5,195, 49,
/* 0x0ad0 */ 72,137, 92, 36, 32, 76,137,251, 74,141, 84, 61, 0, 72,247,219, /* 0x0ad0 */ 192, 72,137,222,232, 62,247,255,255, 72,137, 92, 36, 32, 76,137,
/* 0x0ae0 */ 129,227,255, 15, 0, 0, 72,137,216, 72,133,219,116, 11,198, 2, /* 0x0ae0 */ 251, 74,141, 84, 61, 0, 72,247,219,129,227,255, 15, 0, 0, 72,
/* 0x0af0 */ 0, 72,255,194, 72,255,200,235,243, 77,133,255,116, 29, 65,139, /* 0x0af0 */ 137,216, 72,133,219,116, 11,198, 2, 0, 72,255,194, 72,255,200,
/* 0x0b00 */ 85, 60, 76,137,254, 72,137,239,232,167,245,255,255,133,192,116, /* 0x0b00 */ 235,243, 77,133,255,116, 29, 65,139, 85, 60, 76,137,254, 72,137,
/* 0x0b10 */ 10,191, 10, 0, 0, 0,232, 82,250,255,255, 73,141, 4, 31, 72, /* 0x0b10 */ 239,232,158,245,255,255,133,192,116, 10,191, 10, 0, 0, 0,232,
/* 0x0b20 */ 1,197, 72, 59,108, 36, 8,115, 67, 72,133,237, 15,132,206, 0, /* 0x0b20 */ 73,250,255,255, 73,141, 4, 31, 72, 1,197, 72, 59,108, 36, 8,
/* 0x0b30 */ 0, 0, 72, 41,108, 36, 8, 65,139, 85, 60, 69, 49,201, 72,139, /* 0x0b30 */ 115, 67, 72,133,237, 15,132,225, 0, 0, 0, 72, 41,108, 36, 8,
/* 0x0b40 */ 116, 36, 8, 65,131,200,255,185, 50, 0, 0, 0, 72,137,239,232, /* 0x0b40 */ 65,139, 85, 60, 69, 49,201, 72,139,116, 36, 8, 65,131,200,255,
/* 0x0b50 */ 116,245,255,255, 72, 57,197, 15,132,163, 0, 0, 0,191, 9, 0, /* 0x0b50 */ 185, 50, 0, 0, 0, 72,137,239,232,107,245,255,255, 72, 57,197,
/* 0x0b60 */ 0, 0,232, 6,250,255,255,233,148, 0, 0, 0, 72,131,124, 36, /* 0x0b60 */ 15,132,182, 0, 0, 0,191, 9, 0, 0, 0,232,253,249,255,255,
/* 0x0b70 */ 72, 0, 15,132,136, 0, 0, 0, 73,131,199, 3, 65,129,231,255, /* 0x0b70 */ 233,167, 0, 0, 0, 72,131,124, 36, 72, 0, 15,132,155, 0, 0,
/* 0x0b80 */ 15, 0, 0, 73,131,255, 3,119,119, 76,137,254, 72,137,239,232, /* 0x0b80 */ 0, 73,131,199, 3, 65,129,231,255, 15, 0, 0, 73,131,255, 3,
/* 0x0b90 */ 36,245,255,255,235,106,131,232, 4,131,248, 1,119, 98, 49,192, /* 0x0b90 */ 15,135,134, 0, 0, 0, 76,137,254, 72,137,239,232, 23,245,255,
/* 0x0ba0 */ 76,137,238,232, 20, 0, 0, 0,116,104,114,101, 97,100, 95, 99, /* 0x0ba0 */ 255,235,121,131,232, 4,131,248, 1,119,113, 49,192, 76,137,238,
/* 0x0bb0 */ 111,109,109, 97,110,100, 61, 32, 37,112, 10, 0, 95,232, 85,246, /* 0x0bb0 */ 232, 20, 0, 0, 0,116,104,114,101, 97,100, 95, 99,111,109,109,
/* 0x0bc0 */ 255,255, 65,131,125, 8, 4,117, 55, 73,141, 93, 16, 49,192,232, /* 0x0bc0 */ 97,110,100, 61, 32, 37,112, 10, 0, 95,232, 72,246,255,255, 65,
/* 0x0bd0 */ 18, 0, 0, 0,116,104,114,101, 97,100, 95,115,116, 97,116,101, /* 0x0bd0 */ 131,125, 8, 4,117, 70, 73,141, 93, 16, 72,139, 84, 36, 24, 49,
/* 0x0be0 */ 61, 32, 37,112, 10, 0, 95, 72,137,222,232, 40,246,255,255, 72, /* 0x0be0 */ 192,232, 28, 0, 0, 0,116,104,114,101, 97,100, 95,115,116, 97,
/* 0x0bf0 */ 139, 84, 36, 24, 73, 1,149,144, 0, 0, 0, 72,137, 92, 36, 32, /* 0x0bf0 */ 116,101, 61, 32, 37,112, 32, 32,114,101,108,111, 99, 61, 37,112,
/* 0x0c00 */ 65,139, 69, 4, 72,139, 76, 36, 88,255, 68, 36, 20,139, 92, 36, /* 0x0c00 */ 10, 0, 95, 72,137,222,232, 12,246,255,255, 72,139, 84, 36, 24,
/* 0x0c10 */ 20, 73, 1,197, 59, 89, 16,233, 64,252,255,255, 72,139, 68, 36, /* 0x0c10 */ 73, 1,149,144, 0, 0, 0, 72,137, 92, 36, 32, 65,139, 69, 4,
/* 0x0c20 */ 32, 72,131,196,120, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95,195, /* 0x0c20 */ 72,139, 76, 36, 88,255, 68, 36, 20,139, 92, 36, 20,193,232, 2,
/* 0x0c30 */ 65, 87, 77,137,207, 65, 86, 65, 85, 77,137,197, 65, 84, 85, 72, /* 0x0c30 */ 59, 89, 16,137,192, 77,141,108,133, 0,233, 29,252,255,255, 72,
/* 0x0c40 */ 137,213, 72,141, 87, 24, 83, 72,131,236,104, 68,139, 79, 24, 72, /* 0x0c40 */ 139,116, 36, 32, 49,192,232, 13, 0, 0, 0,100,111, 95,120,109,
/* 0x0c50 */ 137,116, 36, 88, 72,139, 68, 36, 88, 76,141,116, 36, 48, 76,139, /* 0x0c50 */ 97,112, 61, 32, 37,112, 10, 0, 95,232,185,245,255,255, 72,139,
/* 0x0c60 */ 164, 36,160, 0, 0, 0, 72,137, 76, 36, 16, 76,137,249, 72,137, /* 0x0c60 */ 68, 36, 32, 72,131,196,120, 91, 93, 65, 92, 65, 93, 65, 94, 65,
/* 0x0c70 */ 84, 36, 72, 72,137, 84, 36, 40, 77,137,240, 72,131,232, 24, 76, /* 0x0c70 */ 95,195, 65, 87, 77,137,207, 65, 86, 65, 85, 77,137,197, 65, 84,
/* 0x0c80 */ 137, 76, 36, 48, 72,139,116, 36, 88, 72,137, 68, 36, 64, 72,137, /* 0x0c80 */ 85, 72,137,213, 72,141, 87, 24, 83, 72,131,236,104, 68,139, 79,
/* 0x0c90 */ 68, 36, 32, 72,199, 68, 36, 8, 0, 0, 0, 0,199, 68, 36, 4, /* 0x0c90 */ 24, 72,137,116, 36, 88, 72,139, 68, 36, 88, 76,141,116, 36, 48,
/* 0x0ca0 */ 0, 0, 0, 0, 72,137,108, 36, 56, 65,255, 52, 36,232, 88, 0, /* 0x0ca0 */ 76,139,164, 36,160, 0, 0, 0, 72,137, 76, 36, 16, 76,137,249,
/* 0x0cb0 */ 0, 0,117,112,120, 95,109, 97,105,110, 32,115,122, 99, 61, 37, /* 0x0cb0 */ 72,137, 84, 36, 72, 72,137, 84, 36, 40, 77,137,240, 72,131,232,
/* 0x0cc0 */ 120, 32, 32,102, 95,100,101, 99, 61, 37,112, 32, 32,102, 95,117, /* 0x0cc0 */ 24, 76,137, 76, 36, 48, 72,139,116, 36, 88, 72,137, 68, 36, 64,
/* 0x0cd0 */ 110,102, 61, 37,112, 32, 32, 32, 32,120,111, 61, 37,112, 40, 37, /* 0x0cd0 */ 72,137, 68, 36, 32, 72,199, 68, 36, 8, 0, 0, 0, 0,199, 68,
/* 0x0ce0 */ 120, 32, 37,112, 41, 32, 32,120,105, 61, 37,112, 40, 37,120, 32, /* 0x0ce0 */ 36, 4, 0, 0, 0, 0, 72,137,108, 36, 56, 65,255, 52, 36,232,
/* 0x0cf0 */ 37,112, 41, 32, 32,109,104,100,114,112,112, 61, 37,112, 32, 32, /* 0x0cf0 */ 88, 0, 0, 0,117,112,120, 95,109, 97,105,110, 32,115,122, 99,
/* 0x0d00 */ 109,104,100,114,112, 61, 37,112, 10, 0, 95, 65, 84, 82, 76,137, /* 0x0d00 */ 61, 37,120, 32, 32,102, 95,100,101, 99, 61, 37,112, 32, 32,102,
/* 0x0d10 */ 234, 80, 49,192, 72,141, 92, 36, 96, 83, 85,232,247,244,255,255, /* 0x0d10 */ 95,117,110,102, 61, 37,112, 32, 32, 32, 32,120,111, 61, 37,112,
/* 0x0d20 */ 72,131,196, 48, 76,137,234, 76,137,246, 49,201, 72,137,223,232, /* 0x0d20 */ 40, 37,120, 32, 37,112, 41, 32, 32,120,105, 61, 37,112, 40, 37,
/* 0x0d30 */ 95,248,255,255, 80, 77,137,233, 77,137,224,131,201,255, 49,246, /* 0x0d30 */ 120, 32, 37,112, 41, 32, 32,109,104,100,114,112,112, 61, 37,112,
/* 0x0d40 */ 72,137,239, 72,141, 84, 36, 40, 65, 87,232, 16,250,255,255, 65, /* 0x0d40 */ 32, 32,109,104,100,114,112, 61, 37,112, 10, 0, 95, 65, 84, 82,
/* 0x0d50 */ 92, 65, 94,139,117, 16, 72,141, 85, 32, 73,137,197, 49,201, 57, /* 0x0d50 */ 76,137,234, 80, 49,192, 72,141, 92, 36, 96, 83, 85,232,181,244,
/* 0x0d60 */ 241, 15,131, 40, 1, 0, 0,131, 58, 14, 15,133, 18, 1, 0, 0, /* 0x0d60 */ 255,255, 72,131,196, 48, 76,137,234, 76,137,246, 49,201, 72,137,
/* 0x0d70 */ 139, 66, 8,232, 10, 0, 0, 0,100,121,108,100, 61, 32, 37,115, /* 0x0d70 */ 223,232, 29,248,255,255, 80, 77,137,233, 77,137,224,131,201,255,
/* 0x0d80 */ 10, 0, 95, 72,141, 28, 2, 49,192, 72,137,222,232,134,244,255, /* 0x0d80 */ 49,246, 72,137,239, 72,141, 84, 36, 40, 65, 87,232,206,249,255,
/* 0x0d90 */ 255, 49,210, 49,246, 49,192, 72,137,223,232, 37,243,255,255,133, /* 0x0d90 */ 255, 65, 92, 65, 94,139,117, 16, 72,141, 85, 32, 73,137,197, 49,
/* 0x0da0 */ 192, 65,137,196,121, 10,191, 18, 0, 0, 0,232,189,247,255,255, /* 0x0da0 */ 201, 57,241, 15,131, 40, 1, 0, 0,131, 58, 14, 15,133, 18, 1,
/* 0x0db0 */ 139, 76, 36, 4, 72,139, 84, 36, 16, 72,137,238, 68,137,231,232, /* 0x0db0 */ 0, 0,139, 66, 8,232, 10, 0, 0, 0,100,121,108,100, 61, 32,
/* 0x0dc0 */ 248,242,255,255, 72, 57, 68, 36, 16,116, 10,191, 19, 0, 0, 0, /* 0x0dc0 */ 37,115, 10, 0, 95, 72,141, 28, 2, 49,192, 72,137,222,232, 68,
/* 0x0dd0 */ 232,152,247,255,255,139, 69, 0, 61,202,254,186,190,116, 7, 61, /* 0x0dd0 */ 244,255,255, 49,210, 49,246, 49,192, 72,137,223,232,227,242,255,
/* 0x0de0 */ 190,186,254,202,117, 49, 72, 15,182,117, 7, 72,137,239, 72,141, /* 0x0de0 */ 255,133,192, 65,137,196,121, 10,191, 18, 0, 0, 0,232,123,247,
/* 0x0df0 */ 93, 8, 72,107,246, 20,131,198, 8,232,158,242,255,255,139, 69, /* 0x0df0 */ 255,255,139, 76, 36, 4, 72,139, 84, 36, 16, 72,137,238, 68,137,
/* 0x0e00 */ 4, 49,201, 57,193,115, 16,129, 59, 7, 0, 0, 1,116,103,255, /* 0x0e00 */ 231,232,182,242,255,255, 72, 57, 68, 36, 16,116, 10,191, 19, 0,
/* 0x0e10 */ 193, 72,131,195, 20,235,236, 72,199, 68, 36, 24, 0, 0, 0, 0, /* 0x0e10 */ 0, 0,232, 86,247,255,255,139, 69, 0, 61,202,254,186,190,116,
/* 0x0e20 */ 83, 69, 49,201, 68,137,225, 49,210,106, 0,139,116, 36, 20, 72, /* 0x0e20 */ 7, 61,190,186,254,202,117, 49, 72, 15,182,117, 7, 72,137,239,
/* 0x0e30 */ 137,239, 76,141, 68, 36, 40,232, 35,249,255,255, 72,137, 68, 36, /* 0x0e30 */ 72,141, 93, 8, 72,107,246, 20,131,198, 8,232, 92,242,255,255,
/* 0x0e40 */ 24, 72,137,198, 49,192, 65, 90, 65, 91,232, 15, 0, 0, 0,104, /* 0x0e40 */ 139, 69, 4, 49,201, 57,193,115, 16,129, 59, 7, 0, 0, 1,116,
/* 0x0e50 */ 97,116, 99,104, 32,112,116,114, 61, 32, 37,112, 10, 0, 95,232, /* 0x0e50 */ 103,255,193, 72,131,195, 20,235,236, 72,199, 68, 36, 24, 0, 0,
/* 0x0e60 */ 179,243,255,255, 72,139, 68, 36, 8, 68,137,231, 76,137, 40,232, /* 0x0e60 */ 0, 0, 83, 69, 49,201, 68,137,225, 49,210,106, 0,139,116, 36,
/* 0x0e70 */ 76,242,255,255,235, 25,139, 91, 8,137, 92, 36, 4,233, 46,255, /* 0x0e70 */ 20, 72,137,239, 76,141, 68, 36, 40,232,225,248,255,255, 72,137,
/* 0x0e80 */ 255,255,139, 66, 4,255,193, 72, 1,194,233,208,254,255,255, 72, /* 0x0e80 */ 68, 36, 24, 72,137,198, 49,192, 65, 90, 65, 91,232, 15, 0, 0,
/* 0x0e90 */ 139, 68, 36, 8, 72,131,196,104, 91, 93, 65, 92, 65, 93, 65, 94, /* 0x0e90 */ 0,104, 97,116, 99,104, 32,112,116,114, 61, 32, 37,112, 10, 0,
/* 0x0ea0 */ 65, 95,195 /* 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
}; };
File diff suppressed because it is too large Load Diff
+115 -111
View File
@@ -1,5 +1,5 @@
/* arm.v5a-darwin.macho-fold.h /* arm.v5a-darwin.macho-fold.h
created from arm.v5a-darwin.macho-fold.bin, 1696 (0x6a0) bytes created from arm.v5a-darwin.macho-fold.bin, 1756 (0x6dc) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -31,115 +31,119 @@
*/ */
#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_SIZE 1696 #define STUB_ARM_V5A_DARWIN_MACHO_FOLD_SIZE 1756
#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_ADLER32 0x93dddb92 #define STUB_ARM_V5A_DARWIN_MACHO_FOLD_ADLER32 0xa470fe2d
#define STUB_ARM_V5A_DARWIN_MACHO_FOLD_CRC32 0x2a2f439c #define STUB_ARM_V5A_DARWIN_MACHO_FOLD_CRC32 0x55f53e51
unsigned char stub_arm_v5a_darwin_macho_fold[1696] = { unsigned char stub_arm_v5a_darwin_macho_fold[1756] = {
/* 0x0000 */ 0, 16,155,229, 68,112,141,226, 1, 0, 75,224, 24, 48,144,229, /* 0x0000 */ 24, 48,144,229, 2,202,160,227, 12, 0, 83,225, 12, 48,160, 49,
/* 0x0010 */ 2, 10, 83,227, 2, 58,160,147, 3,208, 77,224, 13, 32,160,225, /* 0x0010 */ 13,128,160,225, 3,208, 77,224, 13, 32,160,225, 11, 16,160,225,
/* 0x0020 */ 20, 96,143,226,224, 0, 45,233, 54, 1, 0,235, 60, 0,144,229, /* 0x0020 */ 10, 0,160,225, 16, 96,136,226, 52, 80,143,226, 9, 64,160,225,
/* 0x0030 */ 60,208, 71,226, 4, 0, 7,229,255,223,189,232,255, 48, 3,226, /* 0x0030 */ 112, 0, 45,233, 66, 1, 0,235, 56,160,144,229, 0,144,144,229,
/* 0x0040 */ 80, 0, 83,227, 14,240,160, 17, 33, 17,176,225, 0, 0, 80, 19, /* 0x0040 */ 8,208,160,225, 0, 0,157,229, 44, 0, 0,235, 4, 0,157,229,
/* 0x0050 */ 14,240,160, 1, 1, 16, 65,226, 1, 33,144,231, 15, 52, 2,226, /* 0x0050 */ 8, 16,157,229, 91,112,160,227, 10,224,160,225, 16,208,141,226,
/* 0x0060 */ 11, 4, 83,227, 4, 0, 0, 26,255, 52, 2,226, 1, 32, 66,224, /* 0x0060 */ 25,255, 47,225,255, 48, 3,226, 80, 0, 83,227, 14,240,160, 17,
/* 0x0070 */ 255, 36,194,227, 3, 32,130,225, 1, 33,128,231, 0, 0, 81,227, /* 0x0070 */ 33, 17,176,225, 0, 0, 80, 19, 14,240,160, 1, 1, 16, 65,226,
/* 0x0080 */ 243,255,255, 26, 14,240,160,225, 30,255, 47,225, 1,192,160,227, /* 0x0080 */ 1, 33,144,231, 15, 52, 2,226, 11, 4, 83,227, 4, 0, 0, 26,
/* 0x0090 */ 128, 0, 0,239, 2, 1,128, 35, 30,255, 47,225, 3,192,160,227, /* 0x0090 */ 255, 52, 2,226, 1, 32, 66,224,255, 36,194,227, 3, 32,130,225,
/* 0x00a0 */ 128, 0, 0,239, 2, 1,128, 35, 30,255, 47,225, 30,255, 47,225, /* 0x00a0 */ 1, 33,128,231, 0, 0, 81,227,243,255,255, 26, 14,240,160,225,
/* 0x00b0 */ 4,192,160,227,128, 0, 0,239, 2, 1,128, 35, 30,255, 47,225, /* 0x00b0 */ 30,255, 47,225, 7,192,160,225, 1,112,160,227, 0, 0, 0,239,
/* 0x00c0 */ 30,255, 47,225, 5,192,160,227,128, 0, 0,239, 2, 1,128, 35, /* 0x00c0 */ 12,112,160,225, 7,192,160,225, 3,112,160,227, 0, 0, 0,239,
/* 0x00d0 */ 30,255, 47,225, 30,255, 47,225, 6,192,160,227,128, 0, 0,239, /* 0x00d0 */ 12,112,160,225, 30,255, 47,225, 7,192,160,225, 4,112,160,227,
/* 0x00e0 */ 2, 1,128, 35, 30,255, 47,225, 30,255, 47,225, 45,192,160,227, /* 0x00e0 */ 0, 0, 0,239, 12,112,160,225, 30,255, 47,225, 7,192,160,225,
/* 0x00f0 */ 128, 0, 0,239, 2, 1,128, 35, 30,255, 47,225, 30,255, 47,225, /* 0x00f0 */ 5,112,160,227, 0, 0, 0,239, 12,112,160,225, 30,255, 47,225,
/* 0x0100 */ 73,192,160,227,128, 0, 0,239, 2, 1,128, 35, 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, 74,192,160,227,128, 0, 0,239, 2, 1,128, 35, /* 0x0110 */ 30,255, 47,225, 7,192,160,225, 45,112,160,227, 0, 0, 0,239,
/* 0x0120 */ 30,255, 47,225, 30,255, 47,225, 13,192,160,225,112, 0, 45,233, /* 0x0120 */ 12,112,160,225, 30,255, 47,225, 7,192,160,225, 91,112,160,227,
/* 0x0130 */ 48, 0,156,232, 0, 96,160,227,197,192,160,227,128, 0, 0,239, /* 0x0130 */ 0, 0, 0,239, 12,112,160,225, 30,255, 47,225, 7,192,160,225,
/* 0x0140 */ 2, 1,128, 35, 30,255, 47,225,112, 0,189,232, 30,255, 47,225, /* 0x0140 */ 125,112,160,227, 0, 0, 0,239, 12,112,160,225, 30,255, 47,225,
/* 0x0150 */ 4, 64, 45,229, 0, 64,160,227,153,192,160,227,128, 0, 0,239, /* 0x0150 */ 48, 0, 45,233, 12, 80,157,229, 8, 64,157,229, 5,202,176,225,
/* 0x0160 */ 2, 1,128, 35, 30,255, 47,225, 4, 64,157,228, 30,255, 47,225, /* 0x0160 */ 6, 0, 0, 26, 37, 86,160,225, 7,192,160,225,192,112,160,227,
/* 0x0170 */ 255,192,160,227,255,200,140,227, 4, 0, 0,234, 0, 32,144,229, /* 0x0170 */ 0, 0, 0,239, 12,112,160,225, 48, 0,189,232, 30,255, 47,225,
/* 0x0180 */ 2, 48, 12,224, 98, 44, 12,224, 99, 36,130,225, 4, 32,128,228, /* 0x0180 */ 21, 0,224,227,251,255,255,234, 48, 0, 45,233, 3, 64,160,225,
/* 0x0190 */ 4, 16, 81,226,248,255,255,170, 30,255, 47,225, 0, 48,144,229, /* 0x0190 */ 0, 80,160,227, 7,192,160,225,180,112,160,227, 0, 0, 0,239,
/* 0x01a0 */ 2, 0, 83,225, 16, 64, 45,233, 0,192,160, 35, 2,224,160,225, /* 0x01a0 */ 12,112,160,225, 48, 0,189,232, 30,255, 47,225,255,192,160,227,
/* 0x01b0 */ 1, 64,160,225, 2, 32,160, 33, 4, 16,144,229, 4, 0, 0, 42, /* 0x01b0 */ 255,200,140,227, 4, 0, 0,234, 0, 32,144,229, 2, 48, 12,224,
/* 0x01c0 */ 127, 0,160,227,176,255,255,235, 1, 48,220,231, 4, 48,204,231, /* 0x01c0 */ 98, 44, 12,224, 99, 36,130,225, 4, 32,128,228, 4, 16, 81,226,
/* 0x01d0 */ 1,192,140,226, 1, 32, 82,226,250,255,255, 42, 4, 32,144,229, /* 0x01d0 */ 248,255,255,170, 30,255, 47,225, 0, 48,144,229, 2, 0, 83,225,
/* 0x01e0 */ 0, 48,144,229, 14, 32,130,224, 3, 48,110,224, 0, 48,128,229, /* 0x01e0 */ 16, 64, 45,233, 0,192,160, 35, 2,224,160,225, 1, 64,160,225,
/* 0x01f0 */ 4, 32,128,229, 16,128,189,232,240, 64, 45,233, 0, 80,160,225, /* 0x01f0 */ 2, 32,160, 33, 4, 16,144,229, 4, 0, 0, 42,127, 0,160,227,
/* 0x0200 */ 20,208, 77,226, 1, 64,160,225, 2,112,160,225, 3, 96,160,225, /* 0x0200 */ 171,255,255,235, 1, 48,220,231, 4, 48,204,231, 1,192,140,226,
/* 0x0210 */ 61, 0, 0,234, 4, 16,141,226, 5, 0,160,225, 12, 32,160,227, /* 0x0210 */ 1, 32, 82,226,250,255,255, 42, 4, 32,144,229, 0, 48,144,229,
/* 0x0220 */ 221,255,255,235, 4,224,157,229, 0, 0, 94,227, 8, 16,157,229, /* 0x0220 */ 14, 32,130,224, 3, 48,110,224, 0, 48,128,229, 4, 32,128,229,
/* 0x0230 */ 6, 0, 0, 26,228, 48,159,229, 3, 0, 81,225, 5, 0, 0, 26, /* 0x0230 */ 16,128,189,232,240, 64, 45,233, 0, 80,160,225, 20,208, 77,226,
/* 0x0240 */ 0, 48,149,229, 0, 0, 83,227, 2, 0, 0, 26, 49, 0, 0,234, /* 0x0240 */ 1, 64,160,225, 2,112,160,225, 3, 96,160,225, 61, 0, 0,234,
/* 0x0250 */ 0, 0, 81,227, 1, 0, 0, 26,127, 0,160,227,138,255,255,235, /* 0x0250 */ 4, 16,141,226, 5, 0,160,225, 12, 32,160,227,221,255,255,235,
/* 0x0260 */ 14, 0, 81,225,251,255,255,138, 0, 48,148,229, 3, 0, 94,225, /* 0x0260 */ 4,224,157,229, 0, 0, 94,227, 8, 16,157,229, 6, 0, 0, 26,
/* 0x0270 */ 248,255,255,138, 14, 0, 81,225, 26, 0, 0, 42, 12,192,221,229, /* 0x0270 */ 228, 48,159,229, 3, 0, 81,225, 5, 0, 0, 26, 0, 48,149,229,
/* 0x0280 */ 4, 0,149,229, 4, 32,148,229, 16, 48,141,226, 16,224,141,229, /* 0x0280 */ 0, 0, 83,227, 2, 0, 0, 26, 49, 0, 0,234, 0, 0, 81,227,
/* 0x0290 */ 0,192,141,229, 15,224,160,225, 7,240,160,225, 0, 0, 80,227, /* 0x0290 */ 1, 0, 0, 26,127, 0,160,227,133,255,255,235, 14, 0, 81,225,
/* 0x02a0 */ 236,255,255, 26, 16, 16,157,229, 4, 48,157,229, 3, 0, 81,225, /* 0x02a0 */ 251,255,255,138, 0, 48,148,229, 3, 0, 94,225,248,255,255,138,
/* 0x02b0 */ 232,255,255, 26, 13, 48,221,229, 0, 0, 83,227, 0, 0, 86, 19, /* 0x02b0 */ 14, 0, 81,225, 26, 0, 0, 42, 12,192,221,229, 4, 0,149,229,
/* 0x02c0 */ 4, 0,148, 21, 14, 32,221, 21, 15,224,160, 17, 6,240,160, 17, /* 0x02c0 */ 4, 32,148,229, 16, 48,141,226, 16,224,141,229, 0,192,141,229,
/* 0x02d0 */ 8, 48,157,229, 6, 0,149,232, 3, 32,130,224, 1, 16, 99,224, /* 0x02d0 */ 15,224,160,225, 7,240,160,225, 0, 0, 80,227,236,255,255, 26,
/* 0x02e0 */ 6, 0,133,232, 3, 0, 0,234, 1, 32,160,225, 5, 0,160,225, /* 0x02e0 */ 16, 16,157,229, 4, 48,157,229, 3, 0, 81,225,232,255,255, 26,
/* 0x02f0 */ 4, 16,148,229,168,255,255,235, 4, 48,157,229, 6, 0,148,232, /* 0x02f0 */ 13, 48,221,229, 0, 0, 83,227, 0, 0, 86, 19, 4, 0,148, 21,
/* 0x0300 */ 3, 32,130,224, 1, 16, 99,224, 6, 0,132,232, 0, 48,148,229, /* 0x0300 */ 14, 32,221, 21, 15,224,160, 17, 6,240,160, 17, 8, 48,157,229,
/* 0x0310 */ 0, 0, 83,227,190,255,255, 26, 20,208,141,226,240,128,189,232, /* 0x0310 */ 6, 0,149,232, 3, 32,130,224, 1, 16, 99,224, 6, 0,133,232,
/* 0x0320 */ 85, 80, 88, 33,240, 79, 45,233, 0,176,160,227, 32,208, 77,226, /* 0x0320 */ 3, 0, 0,234, 1, 32,160,225, 5, 0,160,225, 4, 16,148,229,
/* 0x0330 */ 2,160,160,225, 28, 80,128,226, 11,144,160,225, 16, 0,141,229, /* 0x0330 */ 168,255,255,235, 4, 48,157,229, 6, 0,148,232, 3, 32,130,224,
/* 0x0340 */ 12, 16,141,229, 8, 48,141,229,102, 0, 0,234, 0, 48,149,229, /* 0x0340 */ 1, 16, 99,224, 6, 0,132,232, 0, 48,148,229, 0, 0, 83,227,
/* 0x0350 */ 1, 0, 83,227, 87, 0, 0, 26, 24,128,149,229, 36, 32,149,229, /* 0x0350 */ 190,255,255, 26, 20,208,141,226,240,128,189,232, 85, 80, 88, 33,
/* 0x0360 */ 8, 58,160,225, 35, 58,160,225, 28, 0,149,229, 3,112,146,224, /* 0x0360 */ 240, 79, 45,233, 0,176,160,227, 32,208, 77,226, 2,160,160,225,
/* 0x0370 */ 24, 32,141,229, 28,128,141,229, 20, 0,141,229, 8, 96, 99,224, /* 0x0370 */ 28, 80,128,226, 11,144,160,225, 16, 0,141,229, 12, 16,141,229,
/* 0x0380 */ 23, 0, 0, 10, 0, 0, 90,227, 3, 0, 0, 26, 0, 0, 82,227, /* 0x0380 */ 8, 48,141,229,102, 0, 0,234, 0, 48,149,229, 1, 0, 83,227,
/* 0x0390 */ 18, 48,160, 19, 3, 0, 0, 26, 4, 0, 0,234, 0, 0, 82,227, /* 0x0390 */ 87, 0, 0, 26, 24,128,149,229, 36, 32,149,229, 8, 58,160,225,
/* 0x03a0 */ 2, 0, 0, 10, 88, 49,159,229, 8,224,157,229, 1, 0, 0,234, /* 0x03a0 */ 35, 58,160,225, 28, 0,149,229, 3,112,146,224, 24, 32,141,229,
/* 0x03b0 */ 76, 49,159,229, 0,224,224,227, 32,192,149,229, 12, 16,157,229, /* 0x03b0 */ 28,128,141,229, 20, 0,141,229, 8, 96, 99,224, 23, 0, 0, 10,
/* 0x03c0 */ 6, 0,160,225, 12,192,129,224, 3, 32,160,227, 7, 16,160,225, /* 0x03c0 */ 0, 0, 90,227, 3, 0, 0, 26, 0, 0, 82,227, 18, 48,160, 19,
/* 0x03d0 */ 0,224,141,229, 4,192,141,229, 82,255,255,235, 0, 0, 86,225, /* 0x03d0 */ 3, 0, 0, 26, 4, 0, 0,234, 0, 0, 82,227, 2, 0, 0, 10,
/* 0x03e0 */ 32, 0, 0, 26, 0, 0, 90,227, 11, 0, 0, 10, 36, 48,149,229, /* 0x03e0 */ 88, 49,159,229, 8,224,157,229, 1, 0, 0,234, 76, 49,159,229,
/* 0x03f0 */ 0, 0, 83,227, 8, 0, 0, 10, 32, 48,149,229, 0, 0, 83,227, /* 0x03f0 */ 0,224,224,227, 32,192,149,229, 12, 16,157,229, 6, 0,160,225,
/* 0x0400 */ 68, 32,157, 5, 10, 0,160,225, 0, 96,130, 5, 24, 16,141,226, /* 0x0400 */ 12,192,129,224, 3, 32,160,227, 7, 16,160,225, 0,224,141,229,
/* 0x0410 */ 72, 32,141,226, 12, 0,146,232,118,255,255,235, 0, 48,103,226, /* 0x0410 */ 4,192,141,229, 77,255,255,235, 0, 0, 86,225, 32, 0, 0, 26,
/* 0x0420 */ 3, 74,160,225, 36, 74,160,225, 0, 0, 84,227, 5, 0, 0, 10, /* 0x0420 */ 0, 0, 90,227, 11, 0, 0, 10, 36, 48,149,229, 0, 0, 83,227,
/* 0x0430 */ 7, 16,134,224, 4, 32,160,225, 0, 48,160,227, 1, 32, 82,226, /* 0x0430 */ 8, 0, 0, 10, 32, 48,149,229, 0, 0, 83,227, 68, 32,157, 5,
/* 0x0440 */ 1, 48,193,228,251,255,255, 26, 0, 0, 87,227, 7, 0, 0, 10, /* 0x0440 */ 10, 0,160,225, 0, 96,130, 5, 24, 16,141,226, 72, 32,141,226,
/* 0x0450 */ 6, 0,160,225, 7, 16,160,225, 44, 32,149,229, 44,255,255,235, /* 0x0450 */ 12, 0,146,232,118,255,255,235, 0, 48,103,226, 3, 74,160,225,
/* 0x0460 */ 0, 0, 80,227, 1, 0, 0, 10,127, 0,160,227, 6,255,255,235, /* 0x0460 */ 36, 74,160,225, 0, 0, 84,227, 5, 0, 0, 10, 7, 16,134,224,
/* 0x0470 */ 20, 0,157,229, 4, 48,135,224, 0, 16,136,224, 3, 64,134,224, /* 0x0470 */ 4, 32,160,225, 0, 48,160,227, 1, 32, 82,226, 1, 48,193,228,
/* 0x0480 */ 1, 0, 84,225, 20, 0, 0, 42, 0,192,224,227, 44, 32,149,229, /* 0x0480 */ 251,255,255, 26, 0, 0, 87,227, 7, 0, 0, 10, 6, 0,160,225,
/* 0x0490 */ 1, 16,100,224, 0,192,141,229, 4, 0,160,225, 1,192,140,226, /* 0x0490 */ 7, 16,160,225, 44, 32,149,229, 39,255,255,235, 0, 0, 80,227,
/* 0x04a0 */ 92, 48,159,229, 4,192,141,229, 30,255,255,235, 0, 0, 84,225, /* 0x04a0 */ 1, 0, 0, 10,127, 0,160,227, 1,255,255,235, 20, 0,157,229,
/* 0x04b0 */ 9, 0, 0, 10,235,255,255,234, 4, 48, 67,226, 1, 0, 83,227, /* 0x04b0 */ 4, 48,135,224, 0, 16,136,224, 3, 64,134,224, 1, 0, 84,225,
/* 0x04c0 */ 5, 0, 0,138, 8, 48,149,229, 1, 0, 83,227, 2, 0, 0, 26, /* 0x04c0 */ 20, 0, 0, 42, 0,192,224,227, 44, 32,149,229, 1, 16,100,224,
/* 0x04d0 */ 12, 48,149,229, 17, 0, 83,227, 16,176,133, 2, 4, 48,149,229, /* 0x04d0 */ 0,192,141,229, 4, 0,160,225, 1,192,140,226, 92, 48,159,229,
/* 0x04e0 */ 1,144,137,226, 3, 80,133,224, 16, 16,157,229, 16, 48,145,229, /* 0x04e0 */ 4,192,141,229, 25,255,255,235, 0, 0, 84,225, 9, 0, 0, 10,
/* 0x04f0 */ 3, 0, 89,225,148,255,255, 58, 11, 0,160,225, 32,208,141,226, /* 0x04f0 */ 235,255,255,234, 4, 48, 67,226, 1, 0, 83,227, 5, 0, 0,138,
/* 0x0500 */ 240,143,189,232, 18, 16, 0, 0,240, 67, 45,233, 40,208, 77,226, /* 0x0500 */ 8, 48,149,229, 1, 0, 83,227, 2, 0, 0, 26, 12, 48,149,229,
/* 0x0510 */ 12, 16,141,229, 12, 16,157,229, 24,192,144,229, 24, 16, 65,226, /* 0x0510 */ 17, 0, 83,227, 16,176,133, 2, 4, 48,149,229, 1,144,137,226,
/* 0x0520 */ 24, 0,128,226, 68, 64,157,229, 36, 0,141,229, 32, 16,141,229, /* 0x0520 */ 3, 80,133,224, 16, 16,157,229, 16, 48,145,229, 3, 0, 89,225,
/* 0x0530 */ 32,128,141,226, 0, 3,152,232, 2, 80,160,225, 32, 0,141,226, /* 0x0530 */ 148,255,255, 58, 11, 0,160,225, 32,208,141,226,240,143,189,232,
/* 0x0540 */ 24, 16,141,226, 4, 32,160,225, 3,112,160,225, 0, 48,160,227, /* 0x0540 */ 18, 16, 0, 0,240, 67, 45,233, 40,208, 77,226, 12, 16,141,229,
/* 0x0550 */ 24,192,141,229, 28, 80,141,229, 16,128,141,229, 20,144,141,229, /* 0x0550 */ 12, 16,157,229, 24,192,144,229, 24, 16, 65,226, 24, 0,128,226,
/* 0x0560 */ 36,255,255,235, 76,192,157,229, 0,192,141,229, 72,192,157,229, /* 0x0560 */ 68, 64,157,229, 36, 0,141,229, 32, 16,141,229, 32,128,141,226,
/* 0x0570 */ 0, 16,160,227, 16, 32,141,226, 5, 0,160,225, 0, 48,224,227, /* 0x0570 */ 0, 3,152,232, 2, 80,160,225, 32, 0,141,226, 24, 16,141,226,
/* 0x0580 */ 16, 16,141,233,102,255,255,235, 0, 96,160,225, 16, 0,149,229, /* 0x0580 */ 4, 32,160,225, 3,112,160,225, 0, 48,160,227, 24,192,141,229,
/* 0x0590 */ 28, 32,133,226, 0, 16,160,227, 58, 0, 0,234, 0, 48,146,229, /* 0x0590 */ 28, 80,141,229, 16,128,141,229, 20,144,141,229, 36,255,255,235,
/* 0x05a0 */ 14, 0, 83,227, 52, 0, 0, 26, 8, 0,146,229, 0, 16,160,227, /* 0x05a0 */ 76,192,157,229, 0,192,141,229, 72,192,157,229, 0, 16,160,227,
/* 0x05b0 */ 0, 0,130,224, 1, 32,160,225,193,254,255,235, 0, 64, 80,226, /* 0x05b0 */ 16, 32,141,226, 5, 0,160,225, 0, 48,224,227, 16, 16,141,233,
/* 0x05c0 */ 7, 0, 0,186, 0, 96,160,227, 4, 0,160,225, 5, 16,160,225, /* 0x05c0 */ 102,255,255,235, 0, 96,160,225, 16, 0,149,229, 28, 32,133,226,
/* 0x05d0 */ 7, 32,160,225, 6, 48,160,225,220,254,255,235, 0, 0, 87,225, /* 0x05d0 */ 0, 16,160,227, 58, 0, 0,234, 0, 48,146,229, 14, 0, 83,227,
/* 0x05e0 */ 3, 0, 0, 10,127, 0,160,227,167,254,255,235, 8, 96,146,229, /* 0x05e0 */ 52, 0, 0, 26, 8, 0,146,229, 0, 16,160,227, 0, 0,130,224,
/* 0x05f0 */ 244,255,255,234, 0, 32,149,229,156, 48,159,229, 3, 0, 82,225, /* 0x05f0 */ 1, 32,160,225,188,254,255,235, 0, 64, 80,226, 7, 0, 0,186,
/* 0x0600 */ 16, 0, 0, 26, 7, 48,213,229, 20, 32,160,227,147, 2, 1,224, /* 0x0600 */ 0, 96,160,227, 4, 0,160,225, 5, 16,160,225, 7, 32,160,225,
/* 0x0610 */ 5, 0,160,225, 8, 16,129,226,212,254,255,235, 4, 0,149,229, /* 0x0610 */ 6, 48,160,225,219,254,255,235, 0, 0, 87,225, 3, 0, 0, 10,
/* 0x0620 */ 8, 32,133,226, 0, 16,160,227, 4, 0, 0,234, 0, 48,146,229, /* 0x0620 */ 127, 0,160,227,162,254,255,235, 8, 96,146,229,244,255,255,234,
/* 0x0630 */ 12, 0, 83,227,236,255,255, 10, 1, 16,129,226, 20, 32,130,226, /* 0x0630 */ 0, 32,149,229,156, 48,159,229, 3, 0, 82,225, 16, 0, 0, 26,
/* 0x0640 */ 0, 0, 81,225,248,255,255, 26, 0,192,160,227, 6, 16,160,225, /* 0x0640 */ 7, 48,213,229, 20, 32,160,227,147, 2, 1,224, 5, 0,160,225,
/* 0x0650 */ 5, 0,160,225, 12, 32,160,225, 4, 48,160,225, 0,192,141,229, /* 0x0650 */ 8, 16,129,226,212,254,255,235, 4, 0,149,229, 8, 32,133,226,
/* 0x0660 */ 4,192,141,229, 8,192,141,229, 45,255,255,235, 0, 96,160,225, /* 0x0660 */ 0, 16,160,227, 4, 0, 0,234, 0, 48,146,229, 12, 0, 83,227,
/* 0x0670 */ 4, 0,160,225,151,254,255,235, 4, 0, 0,234, 4, 48,146,229, /* 0x0670 */ 236,255,255, 10, 1, 16,129,226, 20, 32,130,226, 0, 0, 81,225,
/* 0x0680 */ 1, 16,129,226, 3, 32,130,224, 0, 0, 81,225,194,255,255, 26, /* 0x0680 */ 248,255,255, 26, 0,192,160,227, 6, 16,160,225, 5, 0,160,225,
/* 0x0690 */ 6, 0,160,225, 40,208,141,226,240,131,189,232,190,186,254,202 /* 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
}; };
+195 -195
View File
@@ -1,5 +1,5 @@
/* arm64-darwin.macho-entry.h /* arm64-darwin.macho-entry.h
created from arm64-darwin.macho-entry.bin, 7929 (0x1ef9) bytes created from arm64-darwin.macho-entry.bin, 7921 (0x1ef1) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -31,14 +31,14 @@
*/ */
#define STUB_ARM64_DARWIN_MACHO_ENTRY_SIZE 7929 #define STUB_ARM64_DARWIN_MACHO_ENTRY_SIZE 7921
#define STUB_ARM64_DARWIN_MACHO_ENTRY_ADLER32 0x4d17a960 #define STUB_ARM64_DARWIN_MACHO_ENTRY_ADLER32 0x5ccea70c
#define STUB_ARM64_DARWIN_MACHO_ENTRY_CRC32 0x7e7a0dbf #define STUB_ARM64_DARWIN_MACHO_ENTRY_CRC32 0x829a61f1
unsigned char stub_arm64_darwin_macho_entry[7929] = { 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, /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 1, 0,183, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 1, 0,183, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,192, 22, 0, 0, 0, 0, 0, 0, /* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,184, 22, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0,
/* 0x0040 */ 226, 3, 0,145, 0, 0, 0,148,254, 15, 31,248,226, 15,191,169, /* 0x0040 */ 226, 3, 0,145, 0, 0, 0,148,254, 15, 31,248,226, 15,191,169,
/* 0x0050 */ 7, 64, 33,139, 5, 0,128, 18, 4, 0,176, 82, 24, 0, 0, 20, /* 0x0050 */ 7, 64, 33,139, 5, 0,128, 18, 4, 0,176, 82, 24, 0, 0, 20,
@@ -331,205 +331,205 @@ unsigned char stub_arm64_darwin_macho_entry[7929] = {
/* 0x1240 */ 99, 20, 67, 75, 0, 0, 0, 58, 35, 0, 0,121, 32, 2, 95,214, /* 0x1240 */ 99, 20, 67, 75, 0, 0, 0, 58, 35, 0, 0,121, 32, 2, 95,214,
/* 0x1250 */ 251, 3, 30,170,103, 3, 64,185, 98, 3, 22,203, 66, 64, 39,139, /* 0x1250 */ 251, 3, 30,170,103, 3, 64,185, 98, 3, 22,203, 66, 64, 39,139,
/* 0x1260 */ 226, 11, 0,249,225, 3, 2,170, 5, 0,128, 82, 4, 0,128, 18, /* 0x1260 */ 226, 11, 0,249,225, 3, 2,170, 5, 0,128, 82, 4, 0,128, 18,
/* 0x1270 */ 67, 4,128, 82, 98, 0,128, 82, 0, 0,128,210,200, 27,128, 82, /* 0x1270 */ 67, 4,128, 82, 98, 0,128, 82, 0, 0,128,210,168, 24,128, 82,
/* 0x1280 */ 1, 0, 0,212,224, 7, 0,249,148, 2, 22,203,148, 2, 0,139, /* 0x1280 */ 1, 0, 0,212,224, 7, 0,249,148, 2, 22,203,148, 2, 0,139,
/* 0x1290 */ 5, 0,128,210,228, 3, 64,185, 67, 2,128, 82, 98, 0,128, 82, /* 0x1290 */ 5, 0,128,210,228, 3, 64,185, 67, 2,128, 82, 98, 0,128, 82,
/* 0x12a0 */ 97, 3, 22,203,200, 27,128, 82, 1, 0, 0,212,226, 11, 64,249, /* 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, /* 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, 0,204,116,146,224, 7, 0,249, 66, 0, 0,203,
/* 0x12d0 */ 226, 11, 0,249,103, 3, 64,185,227, 99, 0,145,231, 15, 0,249, /* 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, /* 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, /* 0x12f0 */ 96, 51, 0,145,225, 3, 7,170,128, 3, 63,214,225, 11, 64,249,
/* 0x1300 */ 224, 7, 64,249,252, 7, 66,248,162, 0,128, 82, 72, 28,128, 82, /* 0x1300 */ 224, 7, 64,249,252, 7, 66,248,162, 0,128, 82, 72, 9,128, 82,
/* 0x1310 */ 1, 0, 0,212, 96, 2, 31,214,101,120,101, 99,117,116, 97, 98, /* 0x1310 */ 1, 0, 0,212, 96, 2, 31,214,101,120,101, 99,117,116, 97, 98,
/* 0x1320 */ 108,101, 95,112, 97,116,104, 61, 0, 0, 32,212,252, 3, 30,170, /* 0x1320 */ 108,101, 95,112, 97,116,104, 61, 0, 0, 32,212,252, 3, 30,170,
/* 0x1330 */ 64,132, 64,248,224,255,255,181, 64,132, 64,248,224,255,255,181, /* 0x1330 */ 64,132, 64,248,224,255,255,181, 64,132, 64,248,224,255,255,181,
/* 0x1340 */ 64,132, 64,248, 32,255,255,180,129,254,255, 16, 3, 2,128, 82, /* 0x1340 */ 64,132, 64,248, 32,255,255,180,129,254,255, 16, 3, 2,128, 82,
/* 0x1350 */ 4, 20, 64, 56, 37, 20, 64, 56, 99, 4, 0, 81,159, 0, 5,107, /* 0x1350 */ 4, 20, 64, 56, 37, 20, 64, 56, 99, 4, 0, 81,159, 0, 5,107,
/* 0x1360 */ 1,255,255, 84, 99,255,255, 53, 2, 0,128,210,225, 3, 0,170, /* 0x1360 */ 1,255,255, 84, 99,255,255, 53, 1, 0,128,210,168, 0,128, 82,
/* 0x1370 */ 96, 12,128, 18, 8, 7,128, 82, 1, 0, 0,212,224, 15, 29,248, /* 0x1370 */ 1, 0, 0,212,224, 15, 29,248, 1, 0, 0, 16,246, 3, 1,170,
/* 0x1380 */ 1, 0, 0, 16,246, 3, 1,170, 32, 68, 64,184,214, 66, 32,203, /* 0x1380 */ 32, 68, 64,184,214, 66, 32,203,246, 19, 0,249,244, 3, 1,170,
/* 0x1390 */ 246, 19, 0,249,244, 3, 1,170, 32, 68, 64,184,148, 66, 32,203, /* 0x1390 */ 32, 68, 64,184,148, 66, 32,203, 21, 32, 0,209,173,255,255,151,
/* 0x13a0 */ 21, 32, 0,209,171,255,255,151,102,105,108,101, 32,102,111,114, /* 0x13a0 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 54,
/* 0x13b0 */ 109, 97,116, 32,101,108,102, 54, 52, 45,108,105,116,116,108,101, /* 0x13b0 */ 52, 45,108,105,116,116,108,101, 97, 97,114, 99,104, 54, 52, 10,
/* 0x13c0 */ 97, 97,114, 99,104, 54, 52, 10, 10, 83,101, 99,116,105,111,110, /* 0x13c0 */ 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78,
/* 0x13d0 */ 115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, /* 0x13d0 */ 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,
/* 0x13e0 */ 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, /* 0x13e0 */ 101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32,
/* 0x13f0 */ 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x13f0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32,
/* 0x1400 */ 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1400 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,
/* 0x1410 */ 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103, /* 0x1410 */ 111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115,
/* 0x1420 */ 110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 77, 65, 67, /* 0x1420 */ 10, 32, 32, 48, 32, 77, 65, 67, 72, 77, 65, 73, 78, 88, 32, 32,
/* 0x1430 */ 72, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1430 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, 48,
/* 0x1440 */ 48, 48, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1440 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1450 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1450 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1460 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, /* 0x1460 */ 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32,
/* 0x1470 */ 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1470 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67,
/* 0x1480 */ 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1480 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78,
/* 0x1490 */ 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, /* 0x1490 */ 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48,
/* 0x14a0 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x14a0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x14b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x14b0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x14c0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x14c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x14d0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 56, 32, 32, 50, 42, 42, /* 0x14d0 */ 48, 52, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x14e0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x14e0 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32,
/* 0x14f0 */ 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, 32, /* 0x14f0 */ 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1500 */ 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 56, /* 0x1500 */ 48, 48, 48, 48, 48, 49, 50, 56, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1510 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1510 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x1520 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1520 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1530 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 56, 32, 32, /* 0x1530 */ 48, 48, 48, 48, 52, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x1540 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1540 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89,
/* 0x1550 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, /* 0x1550 */ 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32,
/* 0x1560 */ 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1560 */ 32, 32, 32, 48, 48, 48, 48, 48, 49, 49, 99, 32, 32, 48, 48, 48,
/* 0x1570 */ 49, 49, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1570 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1580 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1580 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1590 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 55, /* 0x1590 */ 32, 48, 48, 48, 48, 48, 49, 55, 48, 32, 32, 50, 42, 42, 48, 32,
/* 0x15a0 */ 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x15a0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79,
/* 0x15b0 */ 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, /* 0x15b0 */ 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32,
/* 0x15c0 */ 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x15c0 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,102, 48, 32, 32,
/* 0x15d0 */ 48, 48, 48, 48,102, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x15d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x15e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x15e0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x15f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x15f0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 56, 99, 32, 32, 50, 42,
/* 0x1600 */ 48, 50, 56, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1600 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x1610 */ 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1610 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 78, 82, 86, 95, 84,
/* 0x1620 */ 32, 53, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, /* 0x1620 */ 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1630 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1630 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1640 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1640 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1650 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1650 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 55, 99, 32,
/* 0x1660 */ 48, 48, 48, 48, 51, 55, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1660 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x1670 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1670 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90,
/* 0x1680 */ 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, /* 0x1680 */ 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48,
/* 0x1690 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,100, 48, 32, 32, 48, 48, /* 0x1690 */ 48, 48,100, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x16a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x16a0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x16b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x16b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51,
/* 0x16c0 */ 32, 32, 48, 48, 48, 48, 48, 51, 55, 99, 32, 32, 50, 42, 42, 48, /* 0x16c0 */ 55, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x16d0 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x16d0 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79,
/* 0x16e0 */ 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, /* 0x16e0 */ 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67,
/* 0x16f0 */ 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, /* 0x16f0 */ 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 54, 56, 32, 32,
/* 0x1700 */ 48, 48, 48, 57, 54, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1700 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1710 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1710 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1720 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1720 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 52, 99, 32, 32, 50, 42,
/* 0x1730 */ 48, 52, 52, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1730 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x1740 */ 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1740 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, 95,
/* 0x1750 */ 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, /* 0x1750 */ 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 52, 57,
/* 0x1760 */ 32, 48, 48, 48, 48, 48, 52, 57, 99, 32, 32, 48, 48, 48, 48, 48, /* 0x1760 */ 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1770 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1770 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1780 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1780 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,100, 98, 52, 32,
/* 0x1790 */ 48, 48, 48, 48,100, 98, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1790 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x17a0 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x17a0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 76, 90,
/* 0x17b0 */ 89, 10, 32, 32, 57, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, /* 0x17b0 */ 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48,
/* 0x17c0 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x17c0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x17d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x17d0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x17e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x17e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 50,
/* 0x17f0 */ 32, 32, 48, 48, 48, 48, 49, 50, 53, 48, 32, 32, 50, 42, 42, 48, /* 0x17f0 */ 53, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1800 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1800 */ 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48,
/* 0x1810 */ 79, 78, 76, 89, 10, 32, 49, 48, 32, 77, 65, 67, 72, 77, 65, 73, /* 0x1810 */ 32, 77, 65, 67, 72, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 48,
/* 0x1820 */ 78, 89, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1820 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1830 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1830 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1840 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1840 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1850 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 50, 53, 48, 32, 32, 50, /* 0x1850 */ 48, 49, 50, 53, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x1860 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1860 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10,
/* 0x1870 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 77, 65, 67, 72, /* 0x1870 */ 32, 49, 49, 32, 77, 65, 67, 72, 77, 65, 73, 78, 90, 32, 32, 32,
/* 0x1880 */ 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, /* 0x1880 */ 32, 32, 48, 48, 48, 48, 48, 49, 53, 48, 32, 32, 48, 48, 48, 48,
/* 0x1890 */ 53, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1890 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x18a0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x18a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x18b0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 50, 53, 48, /* 0x18b0 */ 48, 48, 48, 48, 49, 50, 53, 48, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x18c0 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x18c0 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44,
/* 0x18d0 */ 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x18d0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76,
/* 0x18e0 */ 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, /* 0x18e0 */ 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x18f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x18f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x1900 */ 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1900 */ 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48,
/* 0x1910 */ 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1910 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77,
/* 0x1920 */ 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, /* 0x1920 */ 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1930 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1930 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x1940 */ 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67, 72, 77, 65, 73, /* 0x1940 */ 32, 77, 65, 67, 72, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48,
/* 0x1950 */ 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1950 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 72,
/* 0x1960 */ 48, 48, 48, 32, 77, 65, 67, 72, 77, 65, 73, 78, 90, 10, 48, 48, /* 0x1960 */ 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1970 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1970 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77,
/* 0x1980 */ 32, 32, 32, 32,100, 32, 32, 77, 65, 67, 72, 77, 65, 73, 78, 88, /* 0x1980 */ 65, 67, 72, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x1990 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1990 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 72, 77, 65,
/* 0x19a0 */ 48, 32, 77, 65, 67, 72, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, /* 0x19a0 */ 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x19b0 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86,
/* 0x19c0 */ 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, /* 0x19c0 */ 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, /* 0x19d0 */ 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10,
/* 0x19e0 */ 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x19e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x19f0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48,
/* 0x1a00 */ 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1a10 */ 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, /* 0x1a10 */ 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x1a20 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78,
/* 0x1a30 */ 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, /* 0x1a30 */ 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, /* 0x1a40 */ 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48,
/* 0x1a50 */ 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x1a60 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x1a60 */ 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48,
/* 0x1a70 */ 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1a70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50,
/* 0x1a80 */ 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, /* 0x1a80 */ 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1a90 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84,
/* 0x1aa0 */ 100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, /* 0x1aa0 */ 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ab0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, /* 0x1ab0 */ 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48,
/* 0x1ac0 */ 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ac0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x1ad0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, /* 0x1ad0 */ 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48,
/* 0x1ae0 */ 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, /* 0x1ae0 */ 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1af0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1af0 */ 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48,
/* 0x1b00 */ 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x1b10 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, /* 0x1b10 */ 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50,
/* 0x1b20 */ 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, /* 0x1b20 */ 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1b30 */ 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48,
/* 0x1b40 */ 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x1b50 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, /* 0x1b50 */ 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49,
/* 0x1b60 */ 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, /* 0x1b60 */ 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x1b70 */ 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48,
/* 0x1b80 */ 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1b80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x1b90 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, /* 0x1b90 */ 32, 32, 32, 32,100, 32, 32, 77, 65, 67, 72, 77, 65, 73, 78, 89,
/* 0x1ba0 */ 65, 67, 72, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x1ba0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 72, 77, 65, /* 0x1bb0 */ 48, 32, 77, 65, 67, 72, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48,
/* 0x1bc0 */ 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1bc0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32,
/* 0x1bd0 */ 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 77, 65, 67, /* 0x1bd0 */ 32, 32, 32, 32, 32, 77, 65, 67, 72, 77, 65, 73, 78, 88, 9, 48,
/* 0x1be0 */ 72, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1be0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1bf0 */ 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, 10, 48, /* 0x1bf0 */ 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1c00 */ 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32,
/* 0x1c10 */ 103, 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 69, 9, 48, 48, /* 0x1c10 */ 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 50, 56, 32,117, /* 0x1c20 */ 48, 48, 48, 49, 50, 56, 32,117, 99,108, 95,110,114,118, 50,101,
/* 0x1c30 */ 99,108, 95,110,114,118, 50,101, 95,100,101, 99,111,109,112,114, /* 0x1c30 */ 95,100,101, 99,111,109,112,114,101,115,115, 95, 51, 50, 10, 48,
/* 0x1c40 */ 101,115,115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1c40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1c50 */ 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, /* 0x1c50 */ 103, 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 68, 9, 48, 48,
/* 0x1c60 */ 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1c60 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 99, 32,117,
/* 0x1c70 */ 48, 48, 48, 49, 49, 99, 32,117, 99,108, 95,110,114,118, 50,100, /* 0x1c70 */ 99,108, 95,110,114,118, 50,100, 95,100,101, 99,111,109,112,114,
/* 0x1c80 */ 95,100,101, 99,111,109,112,114,101,115,115, 95, 51, 50, 10, 48, /* 0x1c80 */ 101,115,115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1c90 */ 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32,
/* 0x1ca0 */ 103, 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50, 66, 9, 48, 48, /* 0x1ca0 */ 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1cb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,102, 48, 32,117, /* 0x1cb0 */ 48, 48, 48, 48,102, 48, 32,117, 99,108, 95,110,114,118, 50, 98,
/* 0x1cc0 */ 99,108, 95,110,114,118, 50, 98, 95,100,101, 99,111,109,112,114, /* 0x1cc0 */ 95,100,101, 99,111,109,112,114,101,115,115, 95, 51, 50, 10, 48,
/* 0x1cd0 */ 101,115,115, 95, 51, 50, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1cd0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1ce0 */ 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, /* 0x1ce0 */ 103, 32, 32, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67,
/* 0x1cf0 */ 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, /* 0x1cf0 */ 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76,122,109, 97, /* 0x1d00 */ 48, 48, 48, 32, 76,122,109, 97, 68,101, 99,111,100,101, 10, 48,
/* 0x1d10 */ 68,101, 99,111,100,101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1d20 */ 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, /* 0x1d20 */ 103, 32, 32, 32, 32, 32, 32, 32, 77, 65, 67, 72, 77, 65, 73, 78,
/* 0x1d30 */ 77, 65, 67, 72, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, /* 0x1d30 */ 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,101,110,100, 95,100, /* 0x1d40 */ 48, 48, 32,101,110,100, 95,100,101, 99,111,109,112,114,101,115,
/* 0x1d50 */ 101, 99,111,109,112,114,101,115,115, 10, 10, 82, 69, 76, 79, 67, /* 0x1d50 */ 115, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69,
/* 0x1d60 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, /* 0x1d60 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 77, 65, 67, 72, 77,
/* 0x1d70 */ 82, 32, 91, 77, 65, 67, 72, 77, 65, 73, 78, 88, 93, 58, 10, 79, /* 0x1d70 */ 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32,
/* 0x1d80 */ 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1d80 */ 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32,
/* 0x1d90 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1d90 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10,
/* 0x1da0 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1da0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52,
/* 0x1db0 */ 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 65, 65, 82, 67, 72, /* 0x1db0 */ 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 67, 65, 76, 76, 50,
/* 0x1dc0 */ 54, 52, 95, 67, 65, 76, 76, 50, 54, 32, 32, 77, 65, 67, 72, 77, /* 0x1dc0 */ 54, 32, 32, 77, 65, 67, 72, 77, 65, 73, 78, 90, 43, 48,120, 48,
/* 0x1dd0 */ 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1dd0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 99, 10,
/* 0x1de0 */ 48, 48, 48, 48, 48,100, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x1de0 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
/* 0x1df0 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x1df0 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76,
/* 0x1e00 */ 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, /* 0x1e00 */ 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32,
/* 0x1e10 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, /* 0x1e10 */ 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32,
/* 0x1e20 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1e20 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48,
/* 0x1e30 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32,
/* 0x1e40 */ 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 65, 65, 82, 67, 72, 54, /* 0x1e40 */ 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 67, 79, 78, 68, 66, 82,
/* 0x1e50 */ 52, 95, 67, 79, 78, 68, 66, 82, 49, 57, 32, 32, 76, 90, 77, 65, /* 0x1e50 */ 49, 57, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 10,
/* 0x1e60 */ 95, 68, 69, 67, 51, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x1e60 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
/* 0x1e70 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x1e70 */ 68, 83, 32, 70, 79, 82, 32, 91, 77, 65, 67, 72, 77, 65, 73, 78,
/* 0x1e80 */ 77, 65, 67, 72, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, /* 0x1e80 */ 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32,
/* 0x1e90 */ 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, /* 0x1e90 */ 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32,
/* 0x1ea0 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x1ea0 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48,
/* 0x1eb0 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1eb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 50, 56, 32, 82, 95,
/* 0x1ec0 */ 48, 48, 49, 51, 48, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, /* 0x1ec0 */ 65, 65, 82, 67, 72, 54, 52, 95, 65, 68, 82, 95, 80, 82, 69, 76,
/* 0x1ed0 */ 65, 68, 82, 95, 80, 82, 69, 76, 95, 76, 79, 50, 49, 32, 32, 95, /* 0x1ed0 */ 95, 76, 79, 50, 49, 32, 32, 95,115,116, 97,114,116, 45, 48,120,
/* 0x1ee0 */ 115,116, 97,114,116, 45, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ee0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 56,
/* 0x1ef0 */ 48, 48, 48, 48, 48, 48, 48, 56, 10 /* 0x1ef0 */ 10
}; };
+287 -285
View File
@@ -1,5 +1,5 @@
/* arm64-darwin.macho-fold.h /* arm64-darwin.macho-fold.h
created from arm64-darwin.macho-fold.bin, 4528 (0x11b0) bytes created from arm64-darwin.macho-fold.bin, 4552 (0x11c8) bytes
This file is part of the UPX executable compressor. This file is part of the UPX executable compressor.
@@ -31,292 +31,294 @@
*/ */
#define STUB_ARM64_DARWIN_MACHO_FOLD_SIZE 4528 #define STUB_ARM64_DARWIN_MACHO_FOLD_SIZE 4552
#define STUB_ARM64_DARWIN_MACHO_FOLD_ADLER32 0xa7c7351d #define STUB_ARM64_DARWIN_MACHO_FOLD_ADLER32 0x2d363f6f
#define STUB_ARM64_DARWIN_MACHO_FOLD_CRC32 0x27d37905 #define STUB_ARM64_DARWIN_MACHO_FOLD_CRC32 0x36b2ceb5
unsigned char stub_arm64_darwin_macho_fold[4528] = { 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, /* 0x0000 */ 224, 3, 20,170,225, 3, 21,170, 3, 24, 64,185, 9, 0,132, 82,
/* 0x0010 */ 127, 0, 9,107, 99,128,137, 26, 99, 60, 0, 17, 99,108, 28, 18, /* 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, /* 0x0020 */ 230,131, 0,145,243, 3, 0,145,255, 67, 35,203,226, 3, 0,145,
/* 0x0030 */ 228, 3, 28,170,197, 1, 0, 16, 0, 0, 32,212, 60, 3, 0,148, /* 0x0030 */ 228, 3, 28,170,165, 1, 0, 16, 67, 3, 0,148, 20,128, 64,249,
/* 0x0040 */ 20,128, 64,249, 28, 0, 64,249,127, 2, 0,145,224, 3, 64,185, /* 0x0040 */ 28, 0, 64,249,127, 2, 0,145,224, 3, 64,185, 38, 0, 0,148,
/* 0x0050 */ 42, 0, 0,148,224, 7, 64,249,225, 19, 64,185, 40, 9,128, 82, /* 0x0050 */ 224, 7, 64,249,225, 19, 64,185, 40, 9,128, 82,254, 3, 20,170,
/* 0x0060 */ 254, 3, 20,170,255,131, 0,145,128, 3, 31,214, 99, 28, 0, 18, /* 0x0060 */ 255,131, 0,145,128, 3, 31,214, 99, 28, 0, 18,127, 72, 1,113,
/* 0x0070 */ 127, 72, 1,113, 1, 2, 0, 84, 33,124, 2, 83,192, 1, 0,180, /* 0x0070 */ 1, 2, 0, 84, 33,124, 2, 83,192, 1, 0,180,161, 1, 0, 52,
/* 0x0080 */ 161, 1, 0, 52, 33, 4, 0, 81, 2, 88, 97,184, 67,124, 26, 83, /* 0x0080 */ 33, 4, 0, 81, 2, 88, 97,184, 67,124, 26, 83,127,148, 0,113,
/* 0x0090 */ 127,148, 0,113,193, 0, 0, 84, 67, 20, 6, 18, 66, 0, 1, 75, /* 0x0090 */ 193, 0, 0, 84, 67, 20, 6, 18, 66, 0, 1, 75, 66,100, 0, 18,
/* 0x00a0 */ 66,100, 0, 18, 66, 0, 3, 42, 2, 88, 33,184, 63, 0, 0,113, /* 0x00a0 */ 66, 0, 3, 42, 2, 88, 33,184, 63, 0, 0,113,161,254,255, 84,
/* 0x00b0 */ 161,254,255, 84,192, 3, 95,214,192, 3, 95,214,168, 11,128, 82, /* 0x00b0 */ 192, 3, 95,214,192, 3, 95,214, 40, 0,128, 82, 1, 0, 0,212,
/* 0x00c0 */ 1, 0, 0,212,232, 7,128, 82, 1, 0, 0,212,192, 3, 95,214, /* 0x00c0 */ 104, 0,128, 82, 1, 0, 0,212,192, 3, 95,214,136, 0,128, 82,
/* 0x00d0 */ 8, 8,128, 82, 1, 0, 0,212,192, 3, 95,214, 0, 0, 32,212, /* 0x00d0 */ 1, 0, 0,212,192, 3, 95,214,168, 0,128, 82, 1, 0, 0,212,
/* 0x00e0 */ 2, 0,128,210,225, 3, 0,170, 96, 12,128, 18, 8, 7,128, 82, /* 0x00e0 */ 192, 3, 95,214,200, 0,128, 82, 1, 0, 0,212,192, 3, 95,214,
/* 0x00f0 */ 1, 0, 0,212,192, 3, 95,214, 40, 7,128, 82, 1, 0, 0,212, /* 0x00f0 */ 168, 5,128, 82, 1, 0, 0,212,192, 3, 95,214, 40, 9,128, 82,
/* 0x0100 */ 192, 3, 95,214,168, 5,128, 82, 1, 0, 0,212,192, 3, 95,214, /* 0x0100 */ 1, 0, 0,212,192, 3, 95,214, 72, 9,128, 82, 1, 0, 0,212,
/* 0x0110 */ 232, 26,128, 82, 1, 0, 0,212,192, 3, 95,214, 72, 28,128, 82, /* 0x0110 */ 192, 3, 95,214,168, 24,128, 82, 1, 0, 0,212,192, 3, 95,214,
/* 0x0120 */ 1, 0, 0,212,192, 3, 95,214,200, 27,128, 82, 1, 0, 0,212, /* 0x0120 */ 40, 19,128, 82, 1, 0, 0,212,192, 3, 95,214,233, 31,128, 82,
/* 0x0130 */ 192, 3, 95,214,104, 8,128, 82, 1, 0, 0,212,192, 3, 95,214, /* 0x0130 */ 41, 29, 16, 50, 6, 0, 0, 20, 2, 0, 64,185, 35, 1, 2, 10,
/* 0x0140 */ 233, 31,128, 82, 41, 29, 16, 50, 6, 0, 0, 20, 2, 0, 64,185, /* 0x0140 */ 34, 97,194, 10, 66, 32,195, 42, 2, 68, 0,184, 33, 16, 0,113,
/* 0x0150 */ 35, 1, 2, 10, 34, 97,194, 10, 66, 32,195, 42, 2, 68, 0,184, /* 0x0150 */ 74,255,255, 84,192, 3, 95,214, 67, 1,128, 82,229, 3, 3, 42,
/* 0x0160 */ 33, 16, 0,113, 74,255,255, 84,192, 3, 95,214, 67, 1,128, 82, /* 0x0160 */ 4, 8,195, 26,159, 36, 0,113,105, 0, 0, 84, 99,124, 5, 27,
/* 0x0170 */ 229, 3, 3, 42, 4, 8,195, 26,159, 36, 0,113,105, 0, 0, 84, /* 0x0170 */ 252,255,255, 23, 4, 0,128,210, 71, 1,128, 82, 72,124, 64,147,
/* 0x0180 */ 99,124, 5, 27,252,255,255, 23, 4, 0,128,210, 71, 1,128, 82, /* 0x0180 */ 31, 36, 0,113, 69, 0, 4, 11, 41, 1, 0, 84, 5, 8,195, 26,
/* 0x0190 */ 72,124, 64,147, 31, 36, 0,113, 69, 0, 4, 11, 41, 1, 0, 84, /* 0x0190 */ 38, 0, 8,139,160,128, 3, 27,165,192, 0, 17,197,104, 36, 56,
/* 0x01a0 */ 5, 8,195, 26, 38, 0, 8,139,160,128, 3, 27,165,192, 0, 17, /* 0x01a0 */ 99, 8,199, 26,132, 4, 0,145,246,255,255, 23, 0,192, 0, 17,
/* 0x01b0 */ 197,104, 36, 56, 99, 8,199, 26,132, 4, 0,145,246,255,255, 23, /* 0x01b0 */ 32,200, 37, 56,160, 4, 0, 17,192, 3, 95,214,229, 1,128, 82,
/* 0x01c0 */ 0,192, 0, 17, 32,200, 37, 56,160, 4, 0, 17,192, 3, 95,214, /* 0x01c0 */ 3, 0,254,210,127, 0, 0,234,129, 0, 0, 84,165, 4, 0,113,
/* 0x01d0 */ 229, 1,128, 82, 3, 0,254,210,127, 0, 0,234,129, 0, 0, 84, /* 0x01d0 */ 99,252, 68,211,129,255,255, 84, 4, 0,128,210,230, 10,128, 82,
/* 0x01e0 */ 165, 4, 0,113, 99,252, 68,211,129,255,255, 84, 4, 0,128,210, /* 0x01e0 */ 7, 6,128, 82,130, 8, 0, 17,163, 1, 0,180,162, 0, 4, 75,
/* 0x01f0 */ 230, 10,128, 82, 7, 6,128, 82,130, 8, 0, 17,163, 1, 0,180, /* 0x01f0 */ 40, 0, 4,139, 66,116, 30, 83, 99,252, 68,211, 2, 36,194,154,
/* 0x0200 */ 162, 0, 4, 75, 40, 0, 4,139, 66,116, 30, 83, 99,252, 68,211, /* 0x0200 */ 132, 4, 0,145, 66, 12, 0, 18, 95, 36, 0,113,201,128,135, 26,
/* 0x0210 */ 2, 36,194,154,132, 4, 0,145, 66, 12, 0, 18, 95, 36, 0,113, /* 0x0210 */ 34, 1, 2, 11, 2, 9, 0, 57,243,255,255, 23,224, 3, 2, 42,
/* 0x0220 */ 201,128,135, 26, 34, 1, 2, 11, 2, 9, 0, 57,243,255,255, 23, /* 0x0220 */ 192, 3, 95,214,253,123,171,169,253, 3, 0,145,245, 91, 2,169,
/* 0x0230 */ 224, 3, 2, 42,192, 3, 95,214,253,123,171,169,253, 3, 0,145, /* 0x0230 */ 247, 99, 3,169,243, 83, 1,169,161,143, 0,249,161, 3, 4,145,
/* 0x0240 */ 245, 91, 2,169,247, 99, 3,169,243, 83, 1,169,161,143, 0,249, /* 0x0240 */ 162,147, 0,249,248, 3, 0,170,249,107, 4,169,163,151, 0,249,
/* 0x0250 */ 161, 3, 4,145,162,147, 0,249,248, 3, 0,170,249,107, 4,169, /* 0x0250 */ 160, 67, 5,145,164,155, 0,249, 2, 0,128,210,165,159, 0,249,
/* 0x0260 */ 163,151, 0,249,160, 67, 5,145,164,155, 0,249, 2, 0,128,210, /* 0x0260 */ 243, 3, 2, 42,166,163, 0,249, 21, 6,128, 82,167,167, 0,249,
/* 0x0270 */ 165,159, 0,249,243, 3, 2, 42,166,163, 0,249, 21, 6,128, 82, /* 0x0270 */ 22, 15,128, 82,160, 39,128, 61,183, 5,128, 82,161, 43,128, 61,
/* 0x0280 */ 167,167, 0,249, 22, 15,128, 82,160, 39,128, 61,183, 5,128, 82, /* 0x0280 */ 162, 47,128, 61,163, 51,128, 61,164, 55,128, 61,165, 59,128, 61,
/* 0x0290 */ 161, 43,128, 61,162, 47,128, 61,163, 51,128, 61,164, 55,128, 61, /* 0x0290 */ 166, 63,128, 61, 39, 0,128, 61,160, 59, 0,249,160, 63, 0,249,
/* 0x02a0 */ 165, 59,128, 61,166, 63,128, 61, 39, 0,128, 61,160, 59, 0,249, /* 0x02a0 */ 160, 67, 4,145,160, 67, 0,249,224, 6,128, 18,160,139, 0,185,
/* 0x02b0 */ 160, 63, 0,249,160, 67, 4,145,160, 67, 0,249,224, 6,128, 18, /* 0x02b0 */ 224, 15,128, 18,160,143, 0,185, 25, 3, 64, 57, 20, 7, 0,145,
/* 0x02c0 */ 160,139, 0,185,224, 15,128, 18,160,143, 0,185, 25, 3, 64, 57, /* 0x02c0 */ 250, 3, 20,170,121, 0, 0, 53, 34, 1, 0,181,137, 0, 0, 20,
/* 0x02d0 */ 20, 7, 0,145,250, 3, 20,170,121, 0, 0, 53, 34, 1, 0,181, /* 0x02d0 */ 63,151, 0,113,160, 0, 0, 84, 95, 0, 31,235, 66, 16,148,154,
/* 0x02e0 */ 137, 0, 0, 20, 63,151, 0,113,160, 0, 0, 84, 95, 0, 31,235, /* 0x02e0 */ 248, 3, 20,170,245,255,255, 23,226, 0, 0,180, 65, 4, 0,209,
/* 0x02f0 */ 66, 16,148,154,248, 3, 20,170,245,255,255, 23,226, 0, 0,180, /* 0x02f0 */ 64, 0,128, 82,130, 2, 2,203,117,255,255,151,115, 2, 0, 11,
/* 0x0300 */ 65, 4, 0,209, 64, 0,128, 82,130, 2, 2,203,113,255,255,151, /* 0x0300 */ 153, 15, 0, 52, 0, 7, 64, 57, 20, 11, 0,145, 31,192, 1,113,
/* 0x0310 */ 115, 2, 0, 11,153, 15, 0, 52, 0, 7, 64, 57, 20, 11, 0,145, /* 0x0310 */ 224, 6, 0, 84,168, 0, 0, 84,192, 14, 0, 52, 31,144, 1,113,
/* 0x0320 */ 31,192, 1,113,224, 6, 0, 84,168, 0, 0, 84,192, 14, 0, 52, /* 0x0320 */ 160, 3, 0, 84, 7, 0, 0, 20, 31,212, 1,113, 32, 1, 0, 84,
/* 0x0330 */ 31,144, 1,113,160, 3, 0, 84, 7, 0, 0, 20, 31,212, 1,113, /* 0x0330 */ 31,224, 1,113,224, 7, 0, 84, 31,204, 1,113,192, 10, 0, 84,
/* 0x0340 */ 32, 1, 0, 84, 31,224, 1,113,224, 7, 0, 84, 31,204, 1,113, /* 0x0340 */ 64, 0,128, 82,225, 3, 26,170, 34, 0,128,210, 78, 0, 0, 20,
/* 0x0350 */ 192, 10, 0, 84, 64, 0,128, 82,225, 3, 26,170, 34, 0,128,210, /* 0x0350 */ 161,139, 64,185,160, 59, 64,249,161, 0,248, 54, 34, 32, 0, 17,
/* 0x0360 */ 78, 0, 0, 20,161,139, 64,185,160, 59, 64,249,161, 0,248, 54, /* 0x0360 */ 162,139, 0,185, 95, 0, 31,107,173, 0, 0, 84, 1, 44, 0,145,
/* 0x0370 */ 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107,173, 0, 0, 84, /* 0x0370 */ 33,240,125,146,161, 59, 0,249, 3, 0, 0, 20,160, 63, 64,249,
/* 0x0380 */ 1, 44, 0,145, 33,240,125,146,161, 59, 0,249, 3, 0, 0, 20, /* 0x0380 */ 0,192, 33,139, 0, 0, 64,185,161, 99, 1,145, 2, 0,128, 82,
/* 0x0390 */ 160, 63, 64,249, 0,192, 33,139, 0, 0, 64,185,161, 99, 1,145, /* 0x0390 */ 21, 0, 0, 20,161,139, 64,185,160, 59, 64,249,161, 0,248, 54,
/* 0x03a0 */ 2, 0,128, 82, 21, 0, 0, 20,161,139, 64,185,160, 59, 64,249, /* 0x03a0 */ 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107,173, 0, 0, 84,
/* 0x03b0 */ 161, 0,248, 54, 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107, /* 0x03b0 */ 1, 44, 0,145, 33,240,125,146,161, 59, 0,249, 3, 0, 0, 20,
/* 0x03c0 */ 173, 0, 0, 84, 1, 44, 0,145, 33,240,125,146,161, 59, 0,249, /* 0x03c0 */ 160, 63, 64,249, 0,192, 33,139, 0, 0, 64,185, 2, 0,128, 82,
/* 0x03d0 */ 3, 0, 0, 20,160, 63, 64,249, 0,192, 33,139, 0, 0, 64,185, /* 0x03d0 */ 128, 0,248, 54,224, 3, 0, 75,183, 99, 1, 57, 34, 0,128, 82,
/* 0x03e0 */ 2, 0,128, 82,128, 0,248, 54,224, 3, 0, 75,183, 99, 1, 57, /* 0x03e0 */ 161, 99, 1,145, 93,255,255,151, 36, 0, 0, 20,161,139, 64,185,
/* 0x03f0 */ 34, 0,128, 82,161, 99, 1,145, 93,255,255,151, 36, 0, 0, 20, /* 0x03f0 */ 181, 99, 1, 57,182,103, 1, 57,160, 59, 64,249,161, 0,248, 54,
/* 0x0400 */ 161,139, 64,185,181, 99, 1, 57,182,103, 1, 57,160, 59, 64,249, /* 0x0400 */ 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107,173, 0, 0, 84,
/* 0x0410 */ 161, 0,248, 54, 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107, /* 0x0410 */ 1, 60, 0,145, 33,240,125,146,161, 59, 0,249, 3, 0, 0, 20,
/* 0x0420 */ 173, 0, 0, 84, 1, 60, 0,145, 33,240,125,146,161, 59, 0,249, /* 0x0420 */ 160, 63, 64,249, 0,192, 33,139, 0, 0, 64,249, 17, 0, 0, 20,
/* 0x0430 */ 3, 0, 0, 20,160, 63, 64,249, 0,192, 33,139, 0, 0, 64,249, /* 0x0430 */ 161,139, 64,185,160,103, 1, 57,181, 99, 1, 57,160, 59, 64,249,
/* 0x0440 */ 17, 0, 0, 20,161,139, 64,185,160,103, 1, 57,181, 99, 1, 57, /* 0x0440 */ 161, 0,248, 54, 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107,
/* 0x0450 */ 160, 59, 64,249,161, 0,248, 54, 34, 32, 0, 17,162,139, 0,185, /* 0x0450 */ 173, 0, 0, 84, 1, 44, 0,145, 33,240,125,146,161, 59, 0,249,
/* 0x0460 */ 95, 0, 31,107,173, 0, 0, 84, 1, 44, 0,145, 33,240,125,146, /* 0x0460 */ 3, 0, 0, 20,160, 63, 64,249, 0,192, 33,139, 0, 0,128,185,
/* 0x0470 */ 161, 59, 0,249, 3, 0, 0, 20,160, 63, 64,249, 0,192, 33,139, /* 0x0470 */ 161, 99, 1,145, 82,255,255,151, 2,124, 64,147,161, 99, 1,145,
/* 0x0480 */ 0, 0,128,185,161, 99, 1,145, 82,255,255,151, 2,124, 64,147, /* 0x0480 */ 64, 0,128, 82, 18,255,255,151,115, 2, 0, 11, 2, 0,128,210,
/* 0x0490 */ 161, 99, 1,145, 64, 0,128, 82, 14,255,255,151,115, 2, 0, 11, /* 0x0490 */ 148,255,255, 23,161,139, 64,185,160, 59, 64,249,161, 0,248, 54,
/* 0x04a0 */ 2, 0,128,210,148,255,255, 23,161,139, 64,185,160, 59, 64,249, /* 0x04a0 */ 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107,173, 0, 0, 84,
/* 0x04b0 */ 161, 0,248, 54, 34, 32, 0, 17,162,139, 0,185, 95, 0, 31,107, /* 0x04b0 */ 1, 60, 0,145, 33,240,125,146,161, 59, 0,249, 3, 0, 0, 20,
/* 0x04c0 */ 173, 0, 0, 84, 1, 60, 0,145, 33,240,125,146,161, 59, 0,249, /* 0x04c0 */ 160, 63, 64,249, 0,192, 33,139, 1, 0, 64,249,226, 3, 1,170,
/* 0x04d0 */ 3, 0, 0, 20,160, 63, 64,249, 0,192, 33,139, 1, 0, 64,249, /* 0x04d0 */ 161, 0, 0,180, 64, 0, 64, 57, 96, 0, 0, 52, 66, 4, 0,145,
/* 0x04e0 */ 226, 3, 1,170,161, 0, 0,180, 64, 0, 64, 57, 96, 0, 0, 52, /* 0x04e0 */ 253,255,255, 23, 64, 0,128, 82, 66, 0, 1,203,230,255,255, 23,
/* 0x04f0 */ 66, 4, 0,145,253,255,255, 23, 64, 0,128, 82, 66, 0, 1,203, /* 0x04f0 */ 224, 3, 19, 42,243, 83, 65,169,245, 91, 66,169,247, 99, 67,169,
/* 0x0500 */ 230,255,255, 23,224, 3, 19, 42,243, 83, 65,169,245, 91, 66,169, /* 0x0500 */ 249,107, 68,169,253,123,213,168,192, 3, 95,214,253,123,189,169,
/* 0x0510 */ 247, 99, 67,169,249,107, 68,169,253,123,213,168,192, 3, 95,214, /* 0x0510 */ 253, 3, 0,145,243, 83, 1,169,243, 3, 0,170,244, 3, 2,170,
/* 0x0520 */ 253,123,189,169,253, 3, 0,145,243, 83, 1,169,243, 3, 0,170, /* 0x0520 */ 245, 91, 2,169, 22, 4, 64,249,245, 3, 1,170, 98, 2, 64,249,
/* 0x0530 */ 244, 3, 2,170,245, 91, 2,169, 22, 4, 64,249,245, 3, 1,170, /* 0x0530 */ 225, 3, 19,170,227, 3, 22,170,228, 3, 21,170,229, 3, 20,170,
/* 0x0540 */ 98, 2, 64,249,225, 3, 19,170,227, 3, 22,170,228, 3, 21,170, /* 0x0540 */ 7, 0, 0,148,120,114,101, 97,100, 32, 37,112, 40, 37,120, 32,
/* 0x0550 */ 229, 3, 20,170, 7, 0, 0,148,120,114,101, 97,100, 32, 37,112, /* 0x0550 */ 37,112, 41, 32, 37,112, 32, 37,120, 10, 0, 0,224, 3, 30,170,
/* 0x0560 */ 40, 37,120, 32, 37,112, 41, 32, 37,112, 32, 37,120, 10, 0, 0, /* 0x0560 */ 49,255,255,151, 98, 2, 64,249, 0, 0,128,210, 95, 0, 20,235,
/* 0x0570 */ 224, 3, 30,170, 49,255,255,151, 98, 2, 64,249, 0, 0,128,210, /* 0x0570 */ 34, 2, 0, 84, 99, 6, 64,249,225, 3, 19,170,228, 3, 21,170,
/* 0x0580 */ 95, 0, 20,235, 34, 2, 0, 84, 99, 6, 64,249,225, 3, 19,170, /* 0x0580 */ 229, 3, 20,170, 8, 0, 0,148,120,114,101, 97,100,102, 97,105,
/* 0x0590 */ 228, 3, 21,170,229, 3, 20,170, 8, 0, 0,148,120,114,101, 97, /* 0x0590 */ 108, 32, 37,112, 40, 37,120, 32, 37,112, 41, 32, 37,112, 32, 37,
/* 0x05a0 */ 100,102, 97,105,108, 32, 37,112, 40, 37,120, 32, 37,112, 41, 32, /* 0x05a0 */ 120, 10, 0, 0,224, 3, 30,170, 31,255,255,151,224, 15,128, 82,
/* 0x05b0 */ 37,112, 32, 37,120, 10, 0, 0,224, 3, 30,170, 31,255,255,151, /* 0x05b0 */ 194,254,255,151, 31, 0, 20,235,160, 0, 0, 84,193,106, 96, 56,
/* 0x05c0 */ 224, 15,128, 82,190,254,255,151, 31, 0, 20,235,160, 0, 0, 84, /* 0x05c0 */ 161,106, 32, 56, 0, 4, 0,145,251,255,255, 23, 97, 6, 64,249,
/* 0x05d0 */ 193,106, 96, 56,161,106, 32, 56, 0, 4, 0,145,251,255,255, 23, /* 0x05d0 */ 245, 91, 66,169, 33, 0, 0,139, 97, 6, 0,249, 97, 2, 64,249,
/* 0x05e0 */ 97, 6, 64,249,245, 91, 66,169, 33, 0, 0,139, 97, 6, 0,249, /* 0x05e0 */ 32, 0, 0,203, 96, 2, 0,249,243, 83, 65,169,253,123,195,168,
/* 0x05f0 */ 97, 2, 64,249, 32, 0, 0,203, 96, 2, 0,249,243, 83, 65,169, /* 0x05f0 */ 192, 3, 95,214,253,123,190,169,253, 3, 0,145,243, 11, 0,249,
/* 0x0600 */ 253,123,195,168,192, 3, 95,214,253,123,190,169,253, 3, 0,145, /* 0x0600 */ 243, 3, 0, 42,225, 3, 19, 42, 5, 0, 0,148,101,114,114, 95,
/* 0x0610 */ 243, 11, 0,249,243, 3, 0, 42,225, 3, 19, 42, 5, 0, 0,148, /* 0x0610 */ 101,120,105,116, 32, 37,120, 10, 0, 0, 0, 0,224, 3, 30,170,
/* 0x0620 */ 101,114,114, 95,101,120,105,116, 32, 37,120, 10, 0, 0, 0, 0, /* 0x0620 */ 1,255,255,151,224, 3, 19, 42,164,254,255,151,255,131, 1,209,
/* 0x0630 */ 224, 3, 30,170, 1,255,255,151,224, 3, 19, 42,160,254,255,151, /* 0x0630 */ 253,123, 1,169,253, 67, 0,145,243, 83, 2,169,244, 3, 0,170,
/* 0x0640 */ 255,131, 1,209,253,123, 1,169,253, 67, 0,145,243, 83, 2,169, /* 0x0640 */ 243, 3, 1,170,245, 91, 3,169,227, 3, 0,249,246, 3, 2,170,
/* 0x0650 */ 244, 3, 0,170,243, 3, 1,170,245, 91, 3,169,227, 3, 0,249, /* 0x0650 */ 245, 3, 3,170,130, 2, 64,249,131, 6, 64,249,225, 3, 20,170,
/* 0x0660 */ 246, 3, 2,170,245, 3, 3,170,130, 2, 64,249,131, 6, 64,249, /* 0x0660 */ 101, 2, 64,249,228, 3, 19,170,102, 6, 64,249,231, 3, 22,170,
/* 0x0670 */ 225, 3, 20,170,101, 2, 64,249,228, 3, 19,170,102, 6, 64,249, /* 0x0670 */ 14, 0, 0,148,117,110,112, 97, 99,107, 69,120,116,101,110,116,
/* 0x0680 */ 231, 3, 22,170, 14, 0, 0,148,117,110,112, 97, 99,107, 69,120, /* 0x0680 */ 32,105,110, 61, 37,112, 40, 37,120, 32, 37,112, 41, 32, 32,111,
/* 0x0690 */ 116,101,110,116, 32,105,110, 61, 37,112, 40, 37,120, 32, 37,112, /* 0x0690 */ 117,116, 61, 37,112, 40, 37,120, 32, 37,112, 41, 32, 32, 37,112,
/* 0x06a0 */ 41, 32, 32,111,117,116, 61, 37,112, 40, 37,120, 32, 37,112, 41, /* 0x06a0 */ 32, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170,222,254,255,151,
/* 0x06b0 */ 32, 32, 37,112, 32, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170, /* 0x06b0 */ 96, 2, 64,249,160, 10, 0,180,130, 1,128,210,224, 3, 20,170,
/* 0x06c0 */ 222,254,255,151, 96, 2, 64,249,160, 10, 0,180,130, 1,128,210, /* 0x06c0 */ 161, 3, 1,145,146,255,255,151,162, 67, 64,185,164, 71, 64,185,
/* 0x06d0 */ 224, 3, 20,170,161, 3, 1,145,146,255,255,151,162, 67, 64,185, /* 0x06d0 */ 98, 1, 0, 53,160, 10,138, 82, 0, 43,164,114,159, 0, 0,107,
/* 0x06e0 */ 164, 71, 64,185, 98, 1, 0, 53,160, 10,138, 82, 0, 43,164,114, /* 0x06e0 */ 96, 0, 0, 84, 64, 0,128, 82, 4, 0, 0, 20,128, 2, 64,249,
/* 0x06f0 */ 159, 0, 0,107, 96, 0, 0, 84, 64, 0,128, 82, 4, 0, 0, 20, /* 0x06f0 */ 192, 8, 0,180, 96, 0,128, 82,191,255,255,151,100, 0, 0, 53,
/* 0x0700 */ 128, 2, 64,249,192, 8, 0,180, 96, 0,128, 82,191,255,255,151, /* 0x0700 */ 128, 0,128, 82,253,255,255, 23,159, 0, 2,107, 41, 2, 0, 84,
/* 0x0710 */ 100, 0, 0, 53,128, 0,128, 82,253,255,255, 23,159, 0, 2,107, /* 0x0710 */ 99, 2, 64,249,225, 3, 4, 42, 10, 0, 0,148,115,122, 95, 99,
/* 0x0720 */ 41, 2, 0, 84, 99, 2, 64,249,225, 3, 4, 42, 10, 0, 0,148, /* 0x0720 */ 112,114, 61, 37,120, 32, 32,115,122, 95,117,110, 99, 61, 37,120,
/* 0x0730 */ 115,122, 95, 99,112,114, 61, 37,120, 32, 32,115,122, 95,117,110, /* 0x0730 */ 32, 32,120,111, 45, 62,115,105,122,101, 61, 37,120, 10, 0, 0,
/* 0x0740 */ 99, 61, 37,120, 32, 32,120,111, 45, 62,115,105,122,101, 61, 37, /* 0x0740 */ 224, 3, 30,170,184,254,255,151,160, 0,128, 82,235,255,255, 23,
/* 0x0750 */ 120, 10, 0, 0,224, 3, 30,170,184,254,255,151,160, 0,128, 82, /* 0x0750 */ 97, 2, 64,249,224, 3, 2, 42, 31, 0, 1,235,168,253,255, 84,
/* 0x0760 */ 235,255,255, 23, 97, 2, 64,249,224, 3, 2, 42, 31, 0, 1,235, /* 0x0760 */ 159, 0, 2,107,162, 3, 0, 84,160, 31, 0,249,225, 3, 4, 42,
/* 0x0770 */ 168,253,255, 84,159, 0, 2,107,162, 3, 0, 84,160, 31, 0,249, /* 0x0770 */ 128, 6, 64,249,163,227, 0,145, 98, 6, 64,249,164, 35, 65, 57,
/* 0x0780 */ 225, 3, 4, 42,128, 6, 64,249,163,227, 0,145, 98, 6, 64,249, /* 0x0780 */ 192, 2, 63,214,160, 0, 0, 53,161, 31, 64,249,160, 67, 64,185,
/* 0x0790 */ 164, 35, 65, 57,192, 2, 63,214,160, 0, 0, 53,161, 31, 64,249, /* 0x0790 */ 63, 0, 0,235, 96, 0, 0, 84,224, 0,128, 82,215,255,255, 23,
/* 0x07a0 */ 160, 67, 64,185, 63, 0, 0,235, 96, 0, 0, 84,224, 0,128, 82, /* 0x07a0 */ 163, 39, 65, 57,181, 0, 0,180,131, 0, 0, 52, 96, 6, 64,249,
/* 0x07b0 */ 215,255,255, 23,163, 39, 65, 57,181, 0, 0,180,131, 0, 0, 52, /* 0x07b0 */ 162, 43, 65, 57,160, 2, 63,214,162, 71, 64,185,129, 6, 64,249,
/* 0x07c0 */ 96, 6, 64,249,162, 43, 65, 57,160, 2, 63,214,162, 71, 64,185, /* 0x07c0 */ 128, 2, 64,249, 33, 0, 2,139,129, 6, 0,249, 0, 0, 2,203,
/* 0x07d0 */ 129, 6, 64,249,128, 2, 64,249, 33, 0, 2,139,129, 6, 0,249, /* 0x07d0 */ 128, 2, 0,249, 5, 0, 0, 20, 97, 6, 64,249,224, 3, 20,170,
/* 0x07e0 */ 0, 0, 2,203,128, 2, 0,249, 5, 0, 0, 20, 97, 6, 64,249, /* 0x07e0 */ 226, 3, 4, 42, 74,255,255,151,162, 67, 64,185, 97, 6, 64,249,
/* 0x07f0 */ 224, 3, 20,170,226, 3, 4, 42, 74,255,255,151,162, 67, 64,185, /* 0x07f0 */ 96, 2, 64,249, 33, 0, 2,139, 97, 6, 0,249, 0, 0, 2,203,
/* 0x0800 */ 97, 6, 64,249, 96, 2, 64,249, 33, 0, 2,139, 97, 6, 0,249, /* 0x0800 */ 96, 2, 0,249,171,255,255, 23,191, 67, 0,209,243, 83, 66,169,
/* 0x0810 */ 0, 0, 2,203, 96, 2, 0,249,171,255,255, 23,191, 67, 0,209, /* 0x0810 */ 245, 91, 67,169,253,123, 65,169,255,131, 1,145,192, 3, 95,214,
/* 0x0820 */ 243, 83, 66,169,245, 91, 67,169,253,123, 65,169,255,131, 1,145, /* 0x0820 */ 253,123,179,169,253, 3, 0,145,234, 47, 7,109,243, 83, 1,169,
/* 0x0830 */ 192, 3, 95,214,253,123,179,169,253, 3, 0,145,234, 47, 7,109, /* 0x0830 */ 236, 55, 8,109,247, 99, 3,169,232, 39, 6,109,249,107, 4,169,
/* 0x0840 */ 243, 83, 1,169,236, 55, 8,109,247, 99, 3,169,232, 39, 6,109, /* 0x0840 */ 238, 63, 9,109,251,115, 5,169,245, 91, 2,169,251, 3, 0,170,
/* 0x0850 */ 249,107, 4,169,238, 63, 9,109,251,115, 5,169,245, 91, 2,169, /* 0x0850 */ 19,128, 0,145,106, 0, 39, 30,247, 3, 2,170, 44, 0, 39, 30,
/* 0x0860 */ 251, 3, 0,170, 19,128, 0,145,106, 0, 39, 30,247, 3, 2,170, /* 0x0860 */ 249, 3, 4,170,173, 0,103,158,227, 3, 4,170,203, 0,103,158,
/* 0x0870 */ 44, 0, 39, 30,249, 3, 4,170,173, 0,103,158,227, 3, 4,170, /* 0x0870 */ 17, 0, 0,148,100,111, 95,120,109, 97,112, 32, 32,102,100,105,
/* 0x0880 */ 203, 0,103,158, 17, 0, 0,148,100,111, 95,120,109, 97,112, 32, /* 0x0880 */ 61, 37,120, 32, 32,109,104,100,114, 61, 37,112, 32, 32, 42,109,
/* 0x0890 */ 32,102,100,105, 61, 37,120, 32, 32,109,104,100,114, 61, 37,112, /* 0x0890 */ 104,100,114,112,112, 61, 37,112, 32, 32,120,105, 61, 37,112, 40,
/* 0x08a0 */ 32, 32, 42,109,104,100,114,112,112, 61, 37,112, 32, 32,120,105, /* 0x08a0 */ 37,120, 32, 37,112, 41, 32,102, 95,117,110,102, 61, 37,112, 10,
/* 0x08b0 */ 61, 37,112, 40, 37,120, 32, 37,112, 41, 32,102, 95,117,110,102, /* 0x08b0 */ 0, 0, 0, 0,224, 3, 30,170, 68, 0, 0,180,131, 0, 64,249,
/* 0x08c0 */ 61, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170, 68, 0, 0,180, /* 0x08c0 */ 151, 0, 0,180,229, 2, 64,249,230, 6, 64,249, 3, 0, 0, 20,
/* 0x08d0 */ 131, 0, 64,249,151, 0, 0,180,229, 2, 64,249,230, 6, 64,249, /* 0x08d0 */ 229, 3, 23,170,230, 3, 23,170, 65, 1, 38, 30,226, 3, 27,170,
/* 0x08e0 */ 3, 0, 0, 20,229, 3, 23,170,230, 3, 23,170, 65, 1, 38, 30, /* 0x08e0 */ 103, 1,102,158,228, 3, 23,170, 24, 0,128,210, 28, 0,128, 82,
/* 0x08f0 */ 226, 3, 27,170,103, 1,102,158,228, 3, 23,170, 24, 0,128,210, /* 0x08f0 */ 250, 3, 24,170, 76,254,255,151, 6, 0, 0,148,116,104,114,101,
/* 0x0900 */ 28, 0,128, 82,250, 3, 24,170, 76,254,255,151, 6, 0, 0,148, /* 0x0900 */ 97,100, 95, 99,111,109,109, 97,110,100, 61, 32, 37,112, 10, 0,
/* 0x0910 */ 116,104,114,101, 97,100, 95, 99,111,109,109, 97,110,100, 61, 32, /* 0x0910 */ 224, 3, 30,170, 14, 0,103,158, 8, 0, 0,148,116,104,114,101,
/* 0x0920 */ 37,112, 10, 0,224, 3, 30,170, 14, 0,103,158, 6, 0, 0,148, /* 0x0920 */ 97,100, 95,115,116, 97,116,101, 61, 32, 37,112, 32, 32,114,101,
/* 0x0930 */ 116,104,114,101, 97,100, 95,115,116, 97,116,101, 61, 32, 37,112, /* 0x0930 */ 108,111, 99, 61, 37,112, 10, 0,224, 3, 30,170, 15, 0,103,158,
/* 0x0940 */ 10, 0, 0, 0,224, 3, 30,170, 15, 0,103,158, 96, 19, 64,185, /* 0x0940 */ 96, 19, 64,185,159, 3, 0,107, 98, 29, 0, 84, 96, 2, 64,185,
/* 0x0950 */ 159, 3, 0,107, 66, 29, 0, 84, 96, 2, 64,185, 31,100, 0,113, /* 0x0950 */ 31,100, 0,113, 97, 26, 0, 84, 97, 18, 64,249, 33, 26, 0,180,
/* 0x0960 */ 97, 26, 0, 84, 97, 18, 64,249, 33, 26, 0,180, 96, 22, 64,249, /* 0x0960 */ 96, 22, 64,249, 0, 2, 0,181, 96, 26, 64,249,192, 1, 0,180,
/* 0x0970 */ 0, 2, 0,181, 96, 26, 64,249,192, 1, 0,180, 32, 3, 64,249, /* 0x0970 */ 32, 3, 64,249,128, 1, 0,180, 1, 24, 64,185, 65, 1,168, 54,
/* 0x0980 */ 128, 1, 0,180, 1, 24, 64,185, 65, 1,168, 54,120, 14, 64,249, /* 0x0980 */ 120, 14, 64,249, 24, 0, 24,203,225, 3, 24,170, 4, 0, 0,148,
/* 0x0990 */ 24, 0, 24,203,225, 3, 24,170, 4, 0, 0,148,114,101,108,111, /* 0x0990 */ 114,101,108,111, 99, 61, 37,112, 10, 0, 0, 0,224, 3, 30,170,
/* 0x09a0 */ 99, 61, 37,112, 10, 0, 0, 0,224, 3, 30,170, 35,254,255,151, /* 0x09a0 */ 33,254,255,151,118, 14, 64,249, 98, 26, 64,249, 22, 3, 22,139,
/* 0x09b0 */ 118, 14, 64,249, 98, 26, 64,249, 22, 3, 22,139, 96, 18, 64,249, /* 0x09b0 */ 96, 18, 64,249,212, 46, 64,146,182,103, 0,249,192, 2, 0,139,
/* 0x09c0 */ 212, 46, 64,146,182,103, 0,249,192, 2, 0,139,162, 99, 0,249, /* 0x09c0 */ 162, 99, 0,249,214, 2, 20,203,148, 2, 2,171, 8, 0,103,158,
/* 0x09d0 */ 214, 2, 20,203,148, 2, 2,171, 8, 0,103,158, 64, 10, 0, 84, /* 0x09d0 */ 64, 10, 0, 84, 32, 3, 64,249,255, 2, 31,235,104, 0,128,210,
/* 0x09e0 */ 32, 3, 64,249,255, 2, 31,235,104, 0,128,210, 85, 0,128, 82, /* 0x09e0 */ 85, 0,128, 82, 8, 17,159,154, 31, 0, 31,235, 64, 2,128, 82,
/* 0x09f0 */ 8, 17,159,154, 31, 0, 31,235, 64, 2,128, 82, 8, 1, 20,139, /* 0x09f0 */ 8, 1, 20,139, 0, 16,149, 26,255, 2, 31,235,245, 7,159, 26,
/* 0x0a00 */ 0, 16,149, 26,255, 2, 31,235,245, 7,159, 26, 85, 0, 0, 53, /* 0x0a00 */ 85, 0, 0, 53, 66, 0, 0,181, 21, 4,128, 82,181, 2, 0, 42,
/* 0x0a10 */ 66, 0, 0,181, 21, 4,128, 82,181, 2, 0, 42, 95, 0, 31,235, /* 0x0a10 */ 95, 0, 31,235, 64, 1, 38, 30,105, 22, 64,249,226, 3, 8,170,
/* 0x0a20 */ 64, 1, 38, 30,105, 22, 64,249,226, 3, 8,170,228, 3, 21, 42, /* 0x0a20 */ 228, 3, 21, 42,225, 3, 22,170, 99, 0,128, 82,231, 3, 24,170,
/* 0x0a30 */ 225, 3, 22,170, 99, 0,128, 82,231, 3, 24,170,168, 87, 0,249, /* 0x0a30 */ 168, 87, 0,249, 10, 16,159, 90,170, 91, 0,249,128, 1, 38, 30,
/* 0x0a40 */ 10, 16,159, 90,170, 91, 0,249,128, 1, 38, 30,229, 3, 10, 42, /* 0x0a40 */ 229, 3, 10, 42, 9, 0, 9, 11,169, 95, 0,249,230, 3, 9, 42,
/* 0x0a50 */ 9, 0, 9, 11,169, 95, 0,249,230, 3, 9, 42, 18, 0, 0,148, /* 0x0a50 */ 18, 0, 0,148,109,109, 97,112, 32, 32, 97,100,100,114, 61, 37,
/* 0x0a60 */ 109,109, 97,112, 32, 32, 97,100,100,114, 61, 37,112, 32, 32,108, /* 0x0a60 */ 112, 32, 32,108,101,110, 61, 37,112, 32, 32,112,114,111,116, 61,
/* 0x0a70 */ 101,110, 61, 37,112, 32, 32,112,114,111,116, 61, 37,120, 32, 32, /* 0x0a70 */ 37,120, 32, 32,102,108, 97,103,115, 61, 37,120, 32, 32,102,100,
/* 0x0a80 */ 102,108, 97,103,115, 61, 37,120, 32, 32,102,100, 61, 37,100, 32, /* 0x0a80 */ 61, 37,100, 32, 32,111,102,102, 61, 37,112, 32, 32,114,101,108,
/* 0x0a90 */ 32,111,102,102, 61, 37,112, 32, 32,114,101,108,111, 99, 61, 37, /* 0x0a90 */ 111, 99, 61, 37,112, 10, 0, 0,224, 3, 30,170,226,253,255,151,
/* 0x0aa0 */ 112, 10, 0, 0,224, 3, 30,170,228,253,255,151,168, 87, 64,249, /* 0x0aa0 */ 168, 87, 64,249,227, 3, 21, 42,170, 91, 64,249,224, 3, 22,170,
/* 0x0ab0 */ 227, 3, 21, 42,170, 91, 64,249,224, 3, 22,170,169, 95, 64,249, /* 0x0ab0 */ 169, 95, 64,249,225, 3, 8,170, 98, 0,128, 82,228, 3, 10, 42,
/* 0x0ac0 */ 225, 3, 8,170, 98, 0,128, 82,228, 3, 10, 42,229, 3, 9, 42, /* 0x0ac0 */ 229, 3, 9, 42,148,253,255,151,245, 3, 0,170, 32, 3, 64,249,
/* 0x0ad0 */ 150,253,255,151,245, 3, 0,170, 32, 3, 64,249,128, 0, 0,181, /* 0x0ad0 */ 128, 0, 0,181, 53, 3, 0,249,248, 3, 21,170, 16, 0, 0, 20,
/* 0x0ae0 */ 53, 3, 0,249,248, 3, 21,170, 16, 0, 0, 20,223, 2, 21,235, /* 0x0ae0 */ 223, 2, 21,235,192, 1, 0, 84,225, 3, 21,170,226, 3, 22,170,
/* 0x0af0 */ 192, 1, 0, 84,225, 3, 21,170,226, 3, 22,170, 6, 0, 0,148, /* 0x0af0 */ 6, 0, 0,148,109, 97,100,100,114, 61, 37,112, 32, 32, 97,100,
/* 0x0b00 */ 109, 97,100,100,114, 61, 37,112, 32, 32, 97,100,100,114, 61, 37, /* 0x0b00 */ 100,114, 61, 37,112, 10, 0, 0,224, 3, 30,170,198,253,255,151,
/* 0x0b10 */ 112, 10, 0, 0,224, 3, 30,170,200,253,255,151, 0, 1,128, 82, /* 0x0b10 */ 0, 1,128, 82, 71, 0, 0, 20,245, 3, 22,170,119, 1, 0,180,
/* 0x0b20 */ 71, 0, 0, 20,245, 3, 22,170,119, 1, 0,180, 96, 26, 64,249, /* 0x0b20 */ 96, 26, 64,249, 32, 1, 0,180, 96, 22, 64,249, 64, 0, 0,181,
/* 0x0b30 */ 32, 1, 0,180, 96, 22, 64,249, 64, 0, 0,181, 53, 3, 0,249, /* 0x0b30 */ 53, 3, 0,249,162, 1,102,158,224, 3, 23,170, 99, 1,102,158,
/* 0x0b40 */ 162, 1,102,158,224, 3, 23,170, 99, 1,102,158,161, 3, 3,145, /* 0x0b40 */ 161, 3, 3,145,186,254,255,151,255, 2, 31,235,224, 7,159, 26,
/* 0x0b50 */ 188,254,255,151,255, 2, 31,235,224, 7,159, 26,159, 2, 31,235, /* 0x0b50 */ 159, 2, 31,235,229, 7,159, 26, 9, 0, 39, 30,101, 4, 0, 52,
/* 0x0b60 */ 229, 7,159, 26, 9, 0, 39, 30,101, 4, 0, 52, 64, 4, 0, 52, /* 0x0b60 */ 64, 4, 0, 52, 96, 22, 64,249, 0, 4, 0,181, 96, 66, 64,185,
/* 0x0b70 */ 96, 22, 64,249, 0, 4, 0,181, 96, 66, 64,185,192, 3, 0, 52, /* 0x0b70 */ 192, 3, 0, 52, 99, 2, 27,203, 33, 0,128, 82,163, 2, 3,139,
/* 0x0b80 */ 99, 2, 27,203, 33, 0,128, 82,163, 2, 3,139, 1,128,186,114, /* 0x0b80 */ 1,128,186,114, 98, 32, 1,145,228, 3, 21,170,165, 95, 0,249,
/* 0x0b90 */ 98, 32, 1,145,228, 3, 21,170,165, 95, 0,249, 64, 48, 64,185, /* 0x0b90 */ 64, 48, 64,185, 0, 32, 0,209,186, 2, 0,139,161,106, 32,184,
/* 0x0ba0 */ 0, 32, 0,209,186, 2, 0,139,161,106, 32,184, 0,120,128, 82, /* 0x0ba0 */ 0,120,128, 82,224,203,186,114,225, 3, 26,170, 64, 7, 0,185,
/* 0x0bb0 */ 224,203,186,114,225, 3, 26,170, 64, 7, 0,185, 11, 0, 0,148, /* 0x0bb0 */ 11, 0, 0,148,104, 97,116, 99,104, 61, 37,112, 32, 32,115,101,
/* 0x0bc0 */ 104, 97,116, 99,104, 61, 37,112, 32, 32,115,101, 99,112, 61, 37, /* 0x0bc0 */ 99,112, 61, 37,112, 32, 32,115,101,103,112, 61, 37,112, 32, 32,
/* 0x0bd0 */ 112, 32, 32,115,101,103,112, 61, 37,112, 32, 32,109,104,100,114, /* 0x0bd0 */ 109,104,100,114, 61, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170,
/* 0x0be0 */ 61, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170,147,253,255,151, /* 0x0be0 */ 145,253,255,151,165, 95, 64,249,246, 3, 20,203,214, 46, 64,242,
/* 0x0bf0 */ 165, 95, 64,249,246, 3, 20,203,214, 46, 64,242, 97, 0, 0, 84, /* 0x0bf0 */ 97, 0, 0, 84, 5, 2, 0, 52, 8, 0, 0, 20,161, 2, 20,139,
/* 0x0c00 */ 5, 2, 0, 52, 8, 0, 0, 20,161, 2, 20,139, 0, 0,128,210, /* 0x0c00 */ 0, 0,128,210, 63,104, 32, 56, 0, 4, 0,145, 31, 0, 22,235,
/* 0x0c10 */ 63,104, 32, 56, 0, 4, 0,145, 31, 0, 22,235,161,255,255, 84, /* 0x0c10 */ 161,255,255, 84,248,255,255, 23, 98, 62, 64,185,224, 3, 21,170,
/* 0x0c20 */ 248,255,255, 23, 98, 62, 64,185,224, 3, 21,170,225, 3, 20,170, /* 0x0c20 */ 225, 3, 20,170, 57,253,255,151, 96, 0, 0, 52, 64, 1,128, 82,
/* 0x0c30 */ 59,253,255,151, 96, 0, 0, 52, 64, 1,128, 82,115,254,255,151, /* 0x0c30 */ 113,254,255,151, 0, 1,102,158,214, 2, 20,139,181, 2, 22,139,
/* 0x0c40 */ 0, 1,102,158,214, 2, 20,139,181, 2, 22,139,191, 2, 0,235, /* 0x0c40 */ 191, 2, 0,235,194, 1, 0, 84,245, 4, 0,180, 1, 1,102,158,
/* 0x0c50 */ 194, 1, 0, 84,213, 4, 0,180, 1, 1,102,158, 98, 62, 64,185, /* 0x0c50 */ 98, 62, 64,185,224, 3, 21,170, 67, 6,128, 82, 4, 0,128, 18,
/* 0x0c60 */ 224, 3, 21,170, 67, 6,128, 82, 4, 0,128, 18, 5, 0,128, 82, /* 0x0c60 */ 5, 0,128, 82, 33, 0, 21,203, 43,253,255,151,191, 2, 0,235,
/* 0x0c70 */ 33, 0, 21,203, 45,253,255,151,191, 2, 0,235,128, 3, 0, 84, /* 0x0c70 */ 160, 3, 0, 84, 32, 1,128, 82,238,255,255, 23, 32, 1, 38, 30,
/* 0x0c80 */ 32, 1,128, 82,238,255,255, 23, 32, 1, 38, 30, 0, 3, 0, 52, /* 0x0c80 */ 32, 3, 0, 52,129, 14, 0,145, 33, 44, 64,146, 63, 12, 0,241,
/* 0x0c90 */ 129, 14, 0,145, 33, 44, 64,146, 63, 12, 0,241,136, 2, 0, 84, /* 0x0c90 */ 168, 2, 0, 84,224, 3, 21,170, 25,253,255,151, 18, 0, 0, 20,
/* 0x0ca0 */ 224, 3, 21,170, 27,253,255,151, 17, 0, 0, 20, 0, 16, 0, 81, /* 0x0ca0 */ 0, 16, 0, 81, 31, 4, 0,113,232, 1, 0, 84,192, 1,102,158,
/* 0x0cb0 */ 31, 4, 0,113,200, 1, 0, 84,192, 1,102,158,225, 3, 19,170, /* 0x0cb0 */ 225, 3, 19,170, 92,253,255,151, 96, 10, 64,185, 31, 16, 0,113,
/* 0x0cc0 */ 94,253,255,151, 96, 10, 64,185, 31, 16, 0,113, 1, 1, 0, 84, /* 0x0cc0 */ 33, 1, 0, 84,224, 1,102,158,122, 66, 0,145,225, 3, 26,170,
/* 0x0cd0 */ 224, 1,102,158,122, 66, 0,145,225, 3, 26,170, 87,253,255,151, /* 0x0cd0 */ 226, 3, 24,170, 84,253,255,151, 96,138, 64,249, 0, 0, 24,139,
/* 0x0ce0 */ 96,138, 64,249, 0, 0, 24,139, 96,138, 0,249, 96, 6, 64,185, /* 0x0ce0 */ 96,138, 0,249, 96, 6, 64,185,156, 7, 0, 17,115, 2, 0,139,
/* 0x0cf0 */ 156, 7, 0, 17,115, 2, 0,139, 21,255,255, 23,224, 3, 26,170, /* 0x0cf0 */ 20,255,255, 23,225, 3, 26,170, 5, 0, 0,148,100,111, 95,120,
/* 0x0d00 */ 232, 39, 70,109,243, 83, 65,169,234, 47, 71,109,245, 91, 66,169, /* 0x0d00 */ 109, 97,112, 61, 32, 37,112, 10, 0, 0, 0, 0,224, 3, 30,170,
/* 0x0d10 */ 236, 55, 72,109,247, 99, 67,169,238, 63, 73,109,249,107, 68,169, /* 0x0d10 */ 69,253,255,151,224, 3, 26,170,232, 39, 70,109,243, 83, 65,169,
/* 0x0d20 */ 251,115, 69,169,253,123,205,168,192, 3, 95,214,255, 3, 3,209, /* 0x0d20 */ 234, 47, 71,109,245, 91, 66,169,236, 55, 72,109,247, 99, 67,169,
/* 0x0d30 */ 253,123, 2,169,253,131, 0,145,243, 83, 3,169,161, 47, 0,249, /* 0x0d30 */ 238, 63, 73,109,249,107, 68,169,251,115, 69,169,253,123,205,168,
/* 0x0d40 */ 243, 3, 2,170, 2, 96, 0,145,162, 63, 0,249,167, 47, 64,249, /* 0x0d40 */ 192, 3, 95,214,255, 3, 3,209,253,123, 2,169,253,131, 0,145,
/* 0x0d50 */ 244, 3, 4,170,245, 91, 4,169,231, 96, 0,209,167, 59, 0,249, /* 0x0d50 */ 243, 83, 3,169,161, 47, 0,249,243, 3, 2,170, 2, 96, 0,145,
/* 0x0d60 */ 246, 3, 5,170, 5, 24, 64,185,231, 3, 0,249,245, 3, 6,170, /* 0x0d60 */ 162, 63, 0,249,167, 47, 64,249,244, 3, 4,170,245, 91, 4,169,
/* 0x0d70 */ 230, 11, 0,249,167,195, 1,145,226, 7, 0,249,160, 7, 71,169, /* 0x0d70 */ 231, 96, 0,209,167, 59, 0,249,246, 3, 5,170, 5, 24, 64,185,
/* 0x0d80 */ 194, 0, 64,249,230, 3, 19,170,160, 7, 9,169,161, 47, 64,249, /* 0x0d80 */ 231, 3, 0,249,245, 3, 6,170,230, 11, 0,249,167,195, 1,145,
/* 0x0d90 */ 247, 99, 5,169,226, 15, 0,249,247, 3, 3,170,226, 3, 4,170, /* 0x0d90 */ 226, 7, 0,249,160, 7, 71,169,194, 0, 64,249,230, 3, 19,170,
/* 0x0da0 */ 227, 3, 22,170,164, 3, 2,145,165, 67, 0,249,249, 51, 0,249, /* 0x0da0 */ 160, 7, 9,169,161, 47, 64,249,247, 99, 5,169,226, 15, 0,249,
/* 0x0db0 */ 179, 71, 0,249, 23, 0, 0,148,117,112,120, 95,109, 97,105,110, /* 0x0db0 */ 247, 3, 3,170,226, 3, 4,170,227, 3, 22,170,164, 3, 2,145,
/* 0x0dc0 */ 32,115,122, 99, 61, 37,120, 32, 32,102, 95,100,101, 99, 61, 37, /* 0x0dc0 */ 165, 67, 0,249,249, 51, 0,249,179, 71, 0,249, 23, 0, 0,148,
/* 0x0dd0 */ 112, 32, 32,102, 95,117,110,102, 61, 37,112, 32, 32, 32, 32,120, /* 0x0dd0 */ 117,112,120, 95,109, 97,105,110, 32,115,122, 99, 61, 37,120, 32,
/* 0x0de0 */ 111, 61, 37,112, 40, 37,120, 32, 37,112, 41, 32, 32,120,105, 61, /* 0x0de0 */ 32,102, 95,100,101, 99, 61, 37,112, 32, 32,102, 95,117,110,102,
/* 0x0df0 */ 37,112, 40, 37,120, 32, 37,112, 41, 32, 32,109,104,100,114,112, /* 0x0df0 */ 61, 37,112, 32, 32, 32, 32,120,111, 61, 37,112, 40, 37,120, 32,
/* 0x0e00 */ 112, 61, 37,112, 32, 32,109,104,100,114,112, 61, 37,112, 10, 0, /* 0x0e00 */ 37,112, 41, 32, 32,120,105, 61, 37,112, 40, 37,120, 32, 37,112,
/* 0x0e10 */ 224, 3, 30,170, 9,253,255,151,160,195, 1,145,161, 3, 2,145, /* 0x0e10 */ 41, 32, 32,109,104,100,114,112,112, 61, 37,112, 32, 32,109,104,
/* 0x0e20 */ 226, 3, 20,170, 3, 0,128,210, 6,254,255,151, 1, 0,128, 82, /* 0x0e20 */ 100,114,112, 61, 37,112, 10, 0,224, 3, 30,170,254,252,255,151,
/* 0x0e30 */ 228, 3, 21,170,224, 3, 19,170,162, 67, 2,145, 3, 0,128, 18, /* 0x0e30 */ 160,195, 1,145,161, 3, 2,145,226, 3, 20,170, 3, 0,128,210,
/* 0x0e40 */ 229, 3, 20,170,230, 3, 22,170,123,254,255,151,248, 3, 0,170, /* 0x0e40 */ 251,253,255,151, 1, 0,128, 82,228, 3, 21,170,224, 3, 19,170,
/* 0x0e50 */ 96, 18, 64,185, 97,130, 0,145, 4, 0,128, 82,159, 0, 0,107, /* 0x0e50 */ 162, 67, 2,145, 3, 0,128, 18,229, 3, 20,170,230, 3, 22,170,
/* 0x0e60 */ 224, 10, 0, 84, 34, 0, 64,185, 95, 56, 0,113, 1, 10, 0, 84, /* 0x0e60 */ 112,254,255,151,248, 3, 0,170, 96, 18, 64,185, 97,130, 0,145,
/* 0x0e70 */ 52, 8, 64,185, 22, 0,128, 82, 4, 0, 0,148,100,121,108,100, /* 0x0e70 */ 4, 0,128, 82,159, 0, 0,107,224, 10, 0, 84, 34, 0, 64,185,
/* 0x0e80 */ 61, 32, 37,115, 10, 0, 0, 0,224, 3, 30,170, 52, 0, 20,139, /* 0x0e80 */ 95, 56, 0,113, 1, 10, 0, 84, 52, 8, 64,185, 22, 0,128, 82,
/* 0x0e90 */ 153, 2,128, 82,225, 3, 20,170,232,252,255,151, 1, 0,128, 82, /* 0x0e90 */ 4, 0, 0,148,100,121,108,100, 61, 32, 37,115, 10, 0, 0, 0,
/* 0x0ea0 */ 224, 3, 20,170,226, 3, 1, 42,141,252,255,151,244, 3, 0, 42, /* 0x0ea0 */ 224, 3, 30,170, 52, 0, 20,139,153, 2,128, 82,225, 3, 20,170,
/* 0x0eb0 */ 20, 3,248, 54, 64, 2,128, 82, 30, 0, 0, 20, 98, 2, 64,185, /* 0x0eb0 */ 221,252,255,151, 1, 0,128, 82,224, 3, 20,170,226, 3, 1, 42,
/* 0x0ec0 */ 64,217,159, 82, 64,215,183,114, 95, 0, 0,107, 65, 3, 0, 84, /* 0x0ec0 */ 134,252,255,151,244, 3, 0, 42, 20, 3,248, 54, 64, 2,128, 82,
/* 0x0ed0 */ 97, 30, 64, 57,224, 3, 19,170,117, 34, 0,145, 33,124, 25, 27, /* 0x0ed0 */ 30, 0, 0, 20, 98, 2, 64,185, 64,217,159, 82, 64,215,183,114,
/* 0x0ee0 */ 33, 32, 0, 17,151,252,255,151, 96, 6, 64,185, 1, 0,128, 82, /* 0x0ee0 */ 95, 0, 0,107, 65, 3, 0, 84, 97, 30, 64, 57,224, 3, 19,170,
/* 0x0ef0 */ 63, 0, 0,107, 0, 3, 0, 84,163, 2, 64,185,226, 0,128, 82, /* 0x0ef0 */ 117, 34, 0,145, 33,124, 25, 27, 33, 32, 0, 17,140,252,255,151,
/* 0x0f00 */ 2, 32,160,114,127, 0, 2,107, 1, 2, 0, 84,182, 10, 64,185, /* 0x0f00 */ 96, 6, 64,185, 1, 0,128, 82, 63, 0, 0,107, 0, 3, 0, 84,
/* 0x0f10 */ 224, 3, 20, 42,225, 3, 19,170,226, 3, 23,170,227, 3, 22, 42, /* 0x0f10 */ 163, 2, 64,185,226, 0,128, 82, 2, 32,160,114,127, 0, 2,107,
/* 0x0f20 */ 133,252,255,151,255, 2, 0,235,160,252,255, 84, 96, 2,128, 82, /* 0x0f20 */ 1, 2, 0, 84,182, 10, 64,185,224, 3, 20, 42,225, 3, 19,170,
/* 0x0f30 */ 182,253,255,151,193, 87,151, 82,193, 95,185,114, 95, 0, 1,107, /* 0x0f30 */ 226, 3, 23,170,227, 3, 22, 42,122,252,255,151,255, 2, 0,235,
/* 0x0f40 */ 128,252,255, 84, 4, 0, 0, 20, 33, 4, 0, 17,181, 82, 0,145, /* 0x0f40 */ 160,252,255, 84, 96, 2,128, 82,171,253,255,151,193, 87,151, 82,
/* 0x0f50 */ 232,255,255, 23,164,131, 2,145, 2, 0,128,210,225, 3, 22, 42, /* 0x0f50 */ 193, 95,185,114, 95, 0, 1,107,128,252,255, 84, 4, 0, 0, 20,
/* 0x0f60 */ 227, 3, 20, 42,229, 3, 2,170,230, 3, 2,170,159,140, 28,248, /* 0x0f60 */ 33, 4, 0, 17,181, 82, 0,145,232,255,255, 23,164,131, 2,145,
/* 0x0f70 */ 224, 3, 19,170, 48,254,255,151,243, 3, 0,170,225, 3, 19,170, /* 0x0f70 */ 2, 0,128,210,225, 3, 22, 42,227, 3, 20, 42,229, 3, 2,170,
/* 0x0f80 */ 5, 0, 0,148,104, 97,116, 99,104, 32,112,116,114, 61, 32, 37, /* 0x0f80 */ 230, 3, 2,170,159,140, 28,248,224, 3, 19,170, 37,254,255,151,
/* 0x0f90 */ 112, 10, 0, 0,224, 3, 30,170,168,252,255,151,120, 2, 0,249, /* 0x0f90 */ 243, 3, 0,170,225, 3, 19,170, 5, 0, 0,148,104, 97,116, 99,
/* 0x0fa0 */ 224, 3, 20, 42, 85,252,255,151, 6, 0, 0, 20, 34, 4, 64,185, /* 0x0fa0 */ 104, 32,112,116,114, 61, 32, 37,112, 10, 0, 0,224, 3, 30,170,
/* 0x0fb0 */ 132, 4, 0, 17, 33, 0, 2,139,169,255,255, 23, 19, 0,128,210, /* 0x0fb0 */ 157,252,255,151,120, 2, 0,249,224, 3, 20, 42, 74,252,255,151,
/* 0x0fc0 */ 191,131, 0,209,224, 3, 19,170,243, 83, 67,169,245, 91, 68,169, /* 0x0fc0 */ 6, 0, 0, 20, 34, 4, 64,185,132, 4, 0, 17, 33, 0, 2,139,
/* 0x0fd0 */ 247, 99, 69,169,249, 51, 64,249,253,123, 66,169,255, 3, 3,145, /* 0x0fd0 */ 169,255,255, 23, 19, 0,128,210,191,131, 0,209,224, 3, 19,170,
/* 0x0fe0 */ 192, 3, 95,214, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, /* 0x0fe0 */ 243, 83, 67,169,245, 91, 68,169,247, 99, 69,169,249, 51, 64,249,
/* 0x0ff0 */ 1,122, 82, 0, 4,120, 30, 1, 27, 12, 31, 0, 0, 0, 0, 0, /* 0x0ff0 */ 253,123, 66,169,255, 3, 3,145,192, 3, 95,214, 0, 0, 0, 0,
/* 0x1000 */ 20, 0, 0, 0, 28, 0, 0, 0,100,241,255,255,100, 0, 0, 0, /* 0x1000 */ 20, 0, 0, 0, 0, 0, 0, 0, 1,122, 82, 0, 4,120, 30, 1,
/* 0x1010 */ 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 52, 0, 0, 0, /* 0x1010 */ 27, 12, 31, 0, 0, 0, 0, 0, 20, 0, 0, 0, 28, 0, 0, 0,
/* 0x1020 */ 176,241,255,255,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1020 */ 56,241,255,255,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x1030 */ 60, 0, 0, 0, 76, 0, 0, 0, 0,242,255,255,232, 2, 0, 0, /* 0x1030 */ 20, 0, 0, 0, 52, 0, 0, 0,132,241,255,255,104, 0, 0, 0,
/* 0x1040 */ 0, 65, 14,208, 2,157, 42,158, 41, 65, 13, 29, 70,149, 38,150, /* 0x1040 */ 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 76, 0, 0, 0,
/* 0x1050 */ 37,151, 36,152, 35,147, 40,148, 39, 66,153, 34,154, 33, 2,175, /* 0x1050 */ 212,241,255,255,232, 2, 0, 0, 0, 65, 14,208, 2,157, 42,158,
/* 0x1060 */ 222,221,218,217,216,215,214,213,212,211, 12, 31, 0, 0, 0, 0, /* 0x1060 */ 41, 65, 13, 29, 70,149, 38,150, 37,151, 36,152, 35,147, 40,148,
/* 0x1070 */ 44, 0, 0, 0,140, 0, 0, 0,168,244,255,255,232, 0, 0, 0, /* 0x1070 */ 39, 66,153, 34,154, 33, 2,175,222,221,218,217,216,215,214,213,
/* 0x1080 */ 0, 65, 14, 48,157, 6,158, 5, 65, 13, 29, 65,147, 4,148, 3, /* 0x1080 */ 212,211, 12, 31, 0, 0, 0, 0, 44, 0, 0, 0,140, 0, 0, 0,
/* 0x1090 */ 67,149, 2,150, 1,115,222,221,214,213,212,211, 12, 31, 0, 0, /* 0x1090 */ 124,244,255,255,232, 0, 0, 0, 0, 65, 14, 48,157, 6,158, 5,
/* 0x10a0 */ 28, 0, 0, 0,188, 0, 0, 0, 96,245,255,255, 56, 0, 0, 0, /* 0x10a0 */ 65, 13, 29, 65,147, 4,148, 3, 67,149, 2,150, 1,115,222,221,
/* 0x10b0 */ 0, 65, 14, 32,157, 4,158, 3, 65, 13, 29, 65,147, 2, 0, 0, /* 0x10b0 */ 214,213,212,211, 12, 31, 0, 0, 28, 0, 0, 0,188, 0, 0, 0,
/* 0x10c0 */ 52, 0, 0, 0,220, 0, 0, 0,120,245,255,255,244, 1, 0, 0, /* 0x10c0 */ 52,245,255,255, 56, 0, 0, 0, 0, 65, 14, 32,157, 4,158, 3,
/* 0x10d0 */ 0, 65, 14, 96, 65,157, 10,158, 9, 65, 12, 29, 80, 65,147, 8, /* 0x10d0 */ 65, 13, 29, 65,147, 2, 0, 0, 52, 0, 0, 0,220, 0, 0, 0,
/* 0x10e0 */ 148, 7, 67,149, 6,150, 5, 2,113, 12, 31, 96, 68,222,221,214, /* 0x10e0 */ 76,245,255,255,244, 1, 0, 0, 0, 65, 14, 96, 65,157, 10,158,
/* 0x10f0 */ 213,212,211, 14, 0, 0, 0, 0,108, 0, 0, 0, 20, 1, 0, 0, /* 0x10f0 */ 9, 65, 12, 29, 80, 65,147, 8,148, 7, 67,149, 6,150, 5, 2,
/* 0x1100 */ 52,247,255,255,248, 4, 0, 0, 0, 65, 14,208, 1,157, 26,158, /* 0x1100 */ 113, 12, 31, 96, 68,222,221,214,213,212,211, 14, 0, 0, 0, 0,
/* 0x1110 */ 25, 65, 13, 29, 73, 5, 74, 12, 5, 75, 11,147, 24,148, 23, 5, /* 0x1110 */ 108, 0, 0, 0, 20, 1, 0, 0, 8,247,255,255, 36, 5, 0, 0,
/* 0x1120 */ 76, 10, 5, 77, 9,151, 20,152, 19, 5, 72, 14, 5, 73, 13,153, /* 0x1120 */ 0, 65, 14,208, 1,157, 26,158, 25, 65, 13, 29, 73, 5, 74, 12,
/* 0x1130 */ 18,154, 17, 5, 78, 8, 5, 79, 7,155, 16,156, 15,149, 22,150, /* 0x1130 */ 5, 75, 11,147, 24,148, 23, 5, 76, 10, 5, 77, 9,151, 20,152,
/* 0x1140 */ 21, 3, 50, 1,222,221, 6, 79, 6, 78, 6, 77, 6, 76, 6, 75, /* 0x1140 */ 19, 5, 72, 14, 5, 73, 13,153, 18,154, 17, 5, 78, 8, 5, 79,
/* 0x1150 */ 6, 74, 6, 73, 6, 72,220,219,218,217,216,215,214,213,212,211, /* 0x1150 */ 7,155, 16,156, 15,149, 22,150, 21, 3, 61, 1,222,221, 6, 79,
/* 0x1160 */ 12, 31, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0,132, 1, 0, 0, /* 0x1160 */ 6, 78, 6, 77, 6, 76, 6, 75, 6, 74, 6, 73, 6, 72,220,219,
/* 0x1170 */ 188,251,255,255,184, 2, 0, 0, 0, 65, 14,192, 1, 65,157, 20, /* 0x1170 */ 218,217,216,215,214,213,212,211, 12, 31, 0, 0, 0, 0, 0, 0,
/* 0x1180 */ 158, 19, 65, 12, 29,160, 1, 66,147, 18,148, 17, 72,149, 16,150, /* 0x1180 */ 68, 0, 0, 0,132, 1, 0, 0,188,251,255,255,184, 2, 0, 0,
/* 0x1190 */ 15, 78,151, 14,152, 13, 70,153, 12, 2,133, 12, 31,192, 1, 71, /* 0x1190 */ 0, 65, 14,192, 1, 65,157, 20,158, 19, 65, 12, 29,160, 1, 66,
/* 0x11a0 */ 222,221,217,216,215,214,213,212,211, 14, 0, 0, 0, 0, 0, 0 /* 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
}; };
+68 -23
View File
@@ -33,6 +33,8 @@
#define __WORDSIZE 64 #define __WORDSIZE 64
#include "include/darwin.h" #include "include/darwin.h"
#define SIMULATE_ON_LINUX_EABI4 0
#ifndef DEBUG /*{*/ #ifndef DEBUG /*{*/
#define DEBUG 1 #define DEBUG 1
#endif /*}*/ #endif /*}*/
@@ -80,6 +82,15 @@
/*und*/ : "x30"); \ /*und*/ : "x30"); \
dprintf(r_fmt, args); \ dprintf(r_fmt, args); \
}) })
#elif defined(__arm__) //}{
#define DPRINTF(fmt, args...) ({ \
char const *r_fmt; \
asm("bl 0f; .string \"" fmt "\"; .balign 4; 0: mov %0,lr" \
/*out*/ : "=r"(r_fmt) \
/* in*/ : \
/*und*/ : "lr"); \
dprintf(r_fmt, args); \
})
#endif //} #endif //}
static int dprintf(char const *fmt, ...); // forward static int dprintf(char const *fmt, ...); // forward
@@ -282,8 +293,10 @@ typedef struct {
unsigned ncmds; unsigned ncmds;
unsigned sizeofcmds; unsigned sizeofcmds;
unsigned flags; unsigned flags;
unsigned reserved; #if defined(__x86_64__) || defined(__aarch64__) //{
} Mach_header64; unsigned reserved; // for 64-bit alignment
#endif //}
} Mach_header; // also Mach_header64 which has 4 more bytes
enum e0 { enum e0 {
MH_MAGIC = 0xfeedface, MH_MAGIC = 0xfeedface,
MH_MAGIC64 = 1+0xfeedface MH_MAGIC64 = 1+0xfeedface
@@ -368,6 +381,21 @@ typedef struct {
THREAD_STATE_COUNT = sizeof(Mach_thread_state)/4 THREAD_STATE_COUNT = sizeof(Mach_thread_state)/4
}; };
#elif defined(__arm__) //}{
typedef struct {
uint32_t r[13]; // r0-r12
uint32_t sp; // r13
uint32_t lr; // r14
uint32_t pc; // r15
uint32_t cpsr;
} Mach_thread_state; // Mach_ARM_thead_state;
enum e6 {
THREAD_STATE = 4 // ARM_THREAD_STATE
};
enum e7 {
THREAD_STATE_COUNT = sizeof(Mach_thread_state)/4
};
#elif defined(__x86_64__) //}{ #elif defined(__x86_64__) //}{
typedef struct { typedef struct {
uint64_t rax, rbx, rcx, rdx; uint64_t rax, rbx, rcx, rdx;
@@ -415,18 +443,18 @@ ssize_t pread(int, void *, size_t, off_t_upx_stub);
extern void bswap(void *, unsigned); extern void bswap(void *, unsigned);
// FIXME: must reserve convex hull of pages; must reloc PIE // FIXME: must reserve convex hull of pages; must reloc PIE
unsigned char * // &hatch if main; &Mach_AMD64_thread_state if dyld unsigned * // &hatch if main; &Mach_thread_state if dyld
do_xmap( do_xmap(
Mach_header64 *const mhdr, Mach_header *const mhdr,
off_t_upx_stub const fat_offset, off_t_upx_stub const fat_offset,
Extent *const xi, Extent *const xi,
int const fdi, int const fdi,
Mach_header64 **mhdrpp, Mach_header **mhdrpp,
f_expand *const f_decompress, f_expand *const f_decompress,
f_unfilter *const f_unf f_unfilter *const f_unf
) )
{ {
unsigned char *rv = 0; unsigned *rv = 0;
Mach_segment_command *sc = (Mach_segment_command *)(1+ mhdr); Mach_segment_command *sc = (Mach_segment_command *)(1+ mhdr);
size_t reloc = 0; size_t reloc = 0;
unsigned j; unsigned j;
@@ -435,7 +463,7 @@ do_xmap(
fdi, mhdr, (mhdrpp ? *mhdrpp : 0), xi, (xi? xi->size: 0), (xi? xi->buf: 0), f_unf); fdi, mhdr, (mhdrpp ? *mhdrpp : 0), xi, (xi? xi->size: 0), (xi? xi->buf: 0), f_unf);
for ( j=0; j < mhdr->ncmds; ++j, for ( j=0; j < mhdr->ncmds; ++j,
(sc = (Mach_segment_command *)(sc->cmdsize + (unsigned char *)sc)) (sc = (Mach_segment_command *)((sc->cmdsize>>2) + (unsigned *)sc))
) if (LC_SEGMENT_64==sc->cmd && sc->vmsize) { ) if (LC_SEGMENT_64==sc->cmd && sc->vmsize) {
if (!sc->fileoff && sc->filesize // should be __TEXT if (!sc->fileoff && sc->filesize // should be __TEXT
&& *mhdrpp && ((*mhdrpp)->flags & MH_PIE)) { && *mhdrpp && ((*mhdrpp)->flags & MH_PIE)) {
@@ -461,19 +489,20 @@ do_xmap(
DPRINTF("mmap addr=%%p len=%%p prot=%%x flags=%%x fd=%%d off=%%p reloc=%%p\\n", DPRINTF("mmap addr=%%p len=%%p prot=%%x flags=%%x fd=%%d off=%%p reloc=%%p\\n",
addr, mlen3, prot, flags, fdm, offset, reloc); addr, mlen3, prot, flags, fdm, offset, reloc);
unsigned char *maddr = mmap(addr, mlen3, prot, flags, fdm, offset); unsigned *maddr = mmap(addr, mlen3, prot, flags, fdm, offset);
if (!*mhdrpp) { // MH_DYLINKER if (!*mhdrpp) { // MH_DYLINKER
*mhdrpp = (Mach_header64*)(addr = maddr); *mhdrpp = (Mach_header*)maddr;
addr = (unsigned char *)maddr;
reloc = (size_t)addr; reloc = (size_t)addr;
} }
if (addr != maddr) { if (addr != (unsigned char *)maddr) {
DPRINTF("maddr=%%p addr=%%p\\n", maddr, addr); DPRINTF("maddr=%%p addr=%%p\\n", maddr, addr);
err_exit(8); err_exit(8);
} }
} }
if (xi && 0!=sc->filesize) { if (xi && 0!=sc->filesize) {
if (0==sc->fileoff /*&& 0!=mhdrpp*/) { if (0==sc->fileoff /*&& 0!=mhdrpp*/) {
*mhdrpp = (Mach_header64 *)(void *)addr; *mhdrpp = (Mach_header *)(void *)addr;
} }
unpackExtent(xi, &xo, f_decompress, f_unf); unpackExtent(xi, &xo, f_decompress, f_unf);
} }
@@ -481,18 +510,29 @@ do_xmap(
// main target __TEXT segment at beginning of file with sections (__text) // main target __TEXT segment at beginning of file with sections (__text)
// Use upto 2 words of header padding for the escape hatch. // Use upto 2 words of header padding for the escape hatch.
// fold.S could do this easier, except PROT_WRITE is missing then. // fold.S could do this easier, except PROT_WRITE is missing then.
Mach_segment_command *segp = (Mach_segment_command *)(((char *)sc - (char *)mhdr) + addr); 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); Mach_section_command *const secp = (Mach_section_command *)(1+ segp);
#if defined(__AARCH64EL__) //{ #if defined(__AARCH64EL__) //{
unsigned *hatch= -2+ (unsigned *)(secp->offset + (char *)addr); unsigned *hatch= -2+ (*secp->offset>>2) + u.p2);
hatch[0] = 0xd4000001; // syscall hatch[0] = 0xd4000001; // svc #0 // syscall
hatch[1] = 0xd65f03c0; // ret 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__) //}{ #elif defined(__x86_64__) //}{
unsigned *hatch= -1+ (unsigned *)(secp->offset + (char *)addr); unsigned *hatch= -1+ ((secp->offset>>2) + u.p2);
hatch[0] = 0xc3050f90; // nop; syscall; ret hatch[0] = 0xc3050f90; // nop; syscall; ret
#endif //} #endif //}
DPRINTF("hatch=%%p secp=%%p segp=%%p mhdr=%%p\\n", hatch, secp, segp, addr); DPRINTF("hatch=%%p secp=%%p segp=%%p mhdr=%%p\\n", hatch, secp, segp, addr);
rv = (unsigned char *)hatch; rv = hatch;
} }
/*bzero(addr, frag);*/ // fragment at lo end /*bzero(addr, frag);*/ // fragment at lo end
frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary
@@ -503,7 +543,7 @@ ERR_LAB
} }
addr += mlen + frag; /* page boundary on hi end */ addr += mlen + frag; /* page boundary on hi end */
if ( if (
#if defined(SIMULATE_ON_DEBIAN_EABI4) /*{*/ #if SIMULATE_ON_LINUX_EABI4 /*{*/
0!=addr && 0!=addr &&
#endif /*}*/ #endif /*}*/
addr < haddr) { // need pages for .bss addr < haddr) { // need pages for .bss
@@ -524,15 +564,18 @@ ERR_LAB
DPRINTF("thread_command= %%p\\n", sc); DPRINTF("thread_command= %%p\\n", sc);
if (THREAD_STATE ==thrc->flavor if (THREAD_STATE ==thrc->flavor
/* FIXME && THREAD_STATE_COUNT==thrc->count*/ ) { /* FIXME && THREAD_STATE_COUNT==thrc->count*/ ) {
DPRINTF("thread_state= %%p\\n", &thrc->state); DPRINTF("thread_state= %%p reloc=%%p\\n", &thrc->state, reloc);
#if defined(__AARCH64EL__) //{ #if defined(__AARCH64EL__) //{
thrc->state.pc += reloc; thrc->state.pc += reloc;
#elif defined(__arm__) //}{
thrc->state.pc += reloc;
#elif defined(__x86_64__) //}{ #elif defined(__x86_64__) //}{
thrc->state.rip += reloc; thrc->state.rip += reloc;
#endif //} #endif //}
rv = (unsigned char *)&thrc->state; rv = (unsigned *)&thrc->state;
} }
} }
DPRINTF("do_xmap= %%p\\n", rv);
return rv; return rv;
} }
@@ -545,15 +588,15 @@ Mach_thread_state const *
upx_main( upx_main(
struct l_info const *const li, struct l_info const *const li,
size_t volatile sz_compressed, // total length size_t volatile sz_compressed, // total length
Mach_header64 *const mhdr, // temp char[sz_mhdr] for decompressing Mach_header *const mhdr, // temp char[sz_mhdr] for decompressing
size_t const sz_mhdr, size_t const sz_mhdr,
f_expand *const f_decompress, f_expand *const f_decompress,
f_unfilter *const f_unf, f_unfilter *const f_unf,
Mach_header64 **const mhdrpp // Out: *mhdrpp= &real Mach_header64 Mach_header **const mhdrpp // Out: *mhdrpp= &real Mach_header
) )
{ {
Mach_thread_state *ts = 0; Mach_thread_state *ts = 0;
unsigned char *hatch; unsigned *hatch;
off_t_upx_stub fat_offset = 0; off_t_upx_stub fat_offset = 0;
Extent xi, xo, xi0; Extent xi, xo, xi0;
xi.buf = CONST_CAST(unsigned char *, 1+ (struct p_info const *)(1+ li)); // &b_info xi.buf = CONST_CAST(unsigned char *, 1+ (struct p_info const *)(1+ li)); // &b_info
@@ -609,11 +652,13 @@ ERR_LAB
} }
} break; } break;
} // switch } // switch
Mach_header64 *dyhdr = 0; Mach_header *dyhdr = 0;
ts = (Mach_thread_state *)do_xmap(mhdr, fat_offset, 0, fdi, &dyhdr, 0, 0); ts = (Mach_thread_state *)do_xmap(mhdr, fat_offset, 0, fdi, &dyhdr, 0, 0);
DPRINTF("hatch ptr= %%p\\n", ts); DPRINTF("hatch ptr= %%p\\n", ts);
#if defined(__AARCH64EL__) // { #if defined(__AARCH64EL__) // {
ts->x0 = (uint64_t)hatch; ts->x0 = (uint64_t)hatch;
#elif defined(__arm__) //}{
ts->r[0] = (uint32_t)hatch;
#elif defined(__x86_64__) //}{ #elif defined(__x86_64__) //}{
ts->rax = (uint64_t)hatch; ts->rax = (uint64_t)hatch;
#endif //} #endif //}
+2 -1
View File
@@ -34,6 +34,7 @@
typedef unsigned char * Addr; typedef unsigned char * Addr;
#define SIMULATE_ON_LINUX_EABI4 0
#ifndef DEBUG /*{*/ #ifndef DEBUG /*{*/
#define DEBUG 0 #define DEBUG 0
#endif /*}*/ #endif /*}*/
@@ -560,7 +561,7 @@ ERR_LAB
} }
addr += mlen + frag; /* page boundary on hi end */ addr += mlen + frag; /* page boundary on hi end */
if ( if (
#if defined(SIMULATE_ON_DEBIAN_EABI4) /*{*/ #if SIMULATE_ON_LINUX_EABI4 /*{*/
0!=addr && 0!=addr &&
#endif /*}*/ #endif /*}*/
addr < haddr) { // need pages for .bss addr < haddr) { // need pages for .bss
+38 -37
View File
@@ -29,13 +29,12 @@
* <jreiser@users.sourceforge.net> * <jreiser@users.sourceforge.net>
*/ */
#define SIMULATE_ON_DEBIAN_EABI4 1 #define SIMULATE_ON_LINUX_EABI4 1
//#undef SIMULATE_ON_DEBIAN_EABI4
#ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/ #if SIMULATE_ON_LINUX_EABI4 /*{*/
#define LINUX_ARM_CACHEFLUSH 1 /* SIMULATE_ON_DEBIAN_EABI4 */ #define LINUX_ARM_CACHEFLUSH 1 /* SIMULATE_ON_LINUX_EABI4 */
#define ARMEL_EABI4 1 /* SIMULATE_ON_DEBIAN_EABI4 */ #define ARMEL_EABI4 1 /* SIMULATE_ON_LINUX_EABI4 */
#else /*}{ usual case */ #else /*}{ native darwin usual case */
#define DARWIN_ARM_CACHEFLUSH 1 #define DARWIN_ARM_CACHEFLUSH 1
#define ARMEL_DARWIN 1 #define ARMEL_DARWIN 1
#endif /*}*/ #endif /*}*/
@@ -69,10 +68,10 @@ __NR_SYSCALL_BASE = 0
__NR_exit = 1 + __NR_SYSCALL_BASE __NR_exit = 1 + __NR_SYSCALL_BASE
__NR_write = 4 + __NR_SYSCALL_BASE __NR_write = 4 + __NR_SYSCALL_BASE
__NR_open = 5 + __NR_SYSCALL_BASE __NR_open = 5 + __NR_SYSCALL_BASE
#if defined(SIMULATE_ON_DEBIAN_EABI4) //{ #if SIMULATE_ON_LINUX_EABI4 //{
__NR_mmap = 0xc0 + __NR_SYSCALL_BASE __NR_mmap = 0xc0 + __NR_SYSCALL_BASE
__NR_mprotect=0x7d + __NR_SYSCALL_BASE __NR_mprotect=0x7d + __NR_SYSCALL_BASE
#else //}{ real Mach-o #else //}{ native darwin usual case
__NR_mmap = 197 + __NR_SYSCALL_BASE __NR_mmap = 197 + __NR_SYSCALL_BASE
__NR_mprotect = 74 + __NR_SYSCALL_BASE __NR_mprotect = 74 + __NR_SYSCALL_BASE
#endif //} #endif //}
@@ -85,8 +84,8 @@ __ARM_NR_cacheflush = 2 + __ARM_NR_BASE
//0: .word 0b - l_info // backwards distance to l_info //0: .word 0b - l_info // backwards distance to l_info
section MACHMAINX section MACHMAINX
_start: .globl _start _start: .globl _start
sub sp,sp,#NBPW // space for mhdrp mov r7,sp // &argc
stmdb sp!,{r0-r12,r14,r15} // paranoia [omit sp===r13] adr r6,-2*NBPW + _start
bl main bl main
L20: L20:
f_decompress: f_decompress:
@@ -113,11 +112,20 @@ end_decompress: .globl end_decompress
/* IDENTSTR goes here */ /* IDENTSTR goes here */
r_RELOC .req r12 // same as r_MHDR r_tmp .req r12
r_MHDR .req r12 rax .req r12 // clobbered by do_sys
r_LENX .req r11 r_LENX .req r11
r_ADRX .req r10 r_ADRX .req r10
r_FOLD .req r6 r_EXP .req r9
r_MHDR .req r8
r_RELOC .req r8
r_FOLD .req r8
rbx .req r7
// r0,r1,r2,r3,r6,r7 used by _start+main
arg1 .req r0 arg1 .req r0
arg2 .req r1 arg2 .req r1
@@ -131,10 +139,6 @@ rdi .req r0
rdx .req r2 rdx .req r2
rcx .req r3 rcx .req r3
rax .req r7
rbx .req r8
r_EXP .req r9
section MACHMAINZ section MACHMAINZ
unfold: // lr= &b_info; sp/ fd,%ADRU,%LENU,%entry,%&Mach_header unfold: // lr= &b_info; sp/ fd,%ADRU,%LENU,%entry,%&Mach_header
mov rbx,lr // &b_info:{sz_unc, sz_cpr, 4{byte}}, compressed_fold...} mov rbx,lr // &b_info:{sz_unc, sz_cpr, 4{byte}}, compressed_fold...}
@@ -180,7 +184,7 @@ unfold: // lr= &b_info; sp/ fd,%ADRU,%LENU,%entry,%&Mach_header
// Unfold // Unfold
ldr rax,[rbx,#sz_unc] // dstlen ldr rax,[rbx,#sz_unc] // dstlen
str rax,[sp,#-NBPW]; mov arg4,sp // P_13 &dstlen str rax,[sp,#-NBPW]!; mov arg4,sp // P_13 &dstlen
add arg3,rbx,r_RELOC // dst= new unfold add arg3,rbx,r_RELOC // dst= new unfold
mov r_FOLD,arg3 // execute here mov r_FOLD,arg3 // execute here
ldr rax,[rbx,#sz_cpr] // srclen ldr rax,[rbx,#sz_cpr] // srclen
@@ -198,7 +202,7 @@ unfold: // lr= &b_info; sp/ fd,%ADRU,%LENU,%entry,%&Mach_header
do_sys __NR_mprotect do_sys __NR_mprotect
// Use the copy. // Use the copy.
// r10= ADRX; r11= LENX; r9= f_exp // r9= f_exp; r10= ADRX; r11= LENX
// rsp/ fd,ADRU,LENU,%entry,&Mach_header // rsp/ fd,ADRU,LENU,%entry,&Mach_header
bx r_FOLD bx r_FOLD
@@ -207,38 +211,35 @@ execp:
L99: L99:
bkpt bkpt
main: main: // lr= &f_exp; r7= &argc; r6= -2*NBPW + _start
mov r5,lr // &f_decompress mov r_EXP,lr // &f_decompress
add r2,sp,#NBPW // &argv[0]
0: 0:
ldr r0,[r2],#NBPW ldr r0,[r7],#NBPW
cmp r0,#0; bne 0b // past argv cmp r0,#0; bne 0b // past argv
0: 0:
ldr r0,[r2],#NBPW ldr r0,[r7],#NBPW
cmp r0,#0; bne 0b // past envp cmp r0,#0; bne 0b // past envp
L30: L30:
ldr r0,[r2],#NBPW // r0= *apple++ ldr r0,[r7],#NBPW // r0= *apple++
cmp r0,#0; beq L99 cmp r0,#0; beq L99
adr r1,execp; mov r3,#16 adr r1,execp; mov r_tmp,#16
L40: L40:
ldrb r4,[r0],#1 ldrb r2,[r0],#1
ldrb r5,[r1],#1 ldrb r3,[r1],#1
cmp r4,r5; bne L30 // mismatch ==> next apple[] cmp r2,r3; bne L30 // mismatch ==> next apple[]
subs r3,r3,#1; bne L40 // not entire prefix subs r_tmp,r_tmp,#1; bne L40 // not entire prefix
mov arg2,#0 // O_RDONLY mov arg2,#0 // O_RDONLY
do_sys __NR_open do_sys __NR_open
str r5,[sp,#-5*NBPW]! // fd,%ADRU,%LENU,%entry,%&Mach_header str r0,[sp,#-5*NBPW]! // fd,%ADRU,%LENU,%entry,%&Mach_header
adr r1,-2*4 + _start mov r_MHDR,r6
ldr r0,[r6],#4
mov r_MHDR,r1
ldr r0,[r1],#4
sub r_MHDR,r_MHDR,r0 // &Mach_header sub r_MHDR,r_MHDR,r0 // &Mach_header
str r_MHDR,[sp,#4*NBPW] str r_MHDR,[sp,#4*NBPW]
mov r_ADRX,r1 mov r_ADRX,r6
ldr r0,[r1],#4 ldr r0,[r6],#4
sub r_ADRX,r_ADRX,r0 // &l_info sub r_ADRX,r_ADRX,r0 // &l_info
sub r_LENX,r0,#2*4 // omit words before _start sub r_LENX,r0,#2*4 // omit words before _start
+79 -45
View File
@@ -27,19 +27,27 @@
// <jreiser@users.sourceforge.net> // <jreiser@users.sourceforge.net>
// //
//#define SIMULATE_ON_DEBIAN_EABI4 1 #define SIMULATE_ON_LINUX_EABI4 1
#undef SIMULATE_ON_DEBIAN_EABI4
#ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/ #if SIMULATE_ON_LINUX_EABI4 /*{*/
#define LINUX_ARM_CACHEFLUSH 1 /* SIMULATE_ON_DEBIAN_EABI4 */ #define LINUX_ARM_CACHEFLUSH 1 /* SIMULATE_ON_LINUX_EABI4 */
#define ARMEL_EABI4 1 /* SIMULATE_ON_DEBIAN_EABI4 */ #define ARMEL_EABI4 1 /* SIMULATE_ON_LINUX_EABI4 */
#else /*}{ USUAL case */ #else /*}{ USUAL case */
#define DARWIN_ARM_CACHEFLUSH 1 #define DARWIN_ARM_CACHEFLUSH 1
#define ARMEL_DARWIN 1 #define ARMEL_DARWIN 1
#endif /*}*/ #endif /*}*/
NBPW= 4
#include "arch/arm/v5a/macros.S" #include "arch/arm/v5a/macros.S"
arg1 .req r0
arg2 .req r1
arg3 .req r2
arg4 .req r3
arg5 .req r4
arg6 .req r5
arg7 .req r6
sz_l_info = 12 sz_l_info = 12
sz_p_info = 12 sz_p_info = 12
sz_b_info = 12 sz_b_info = 12
@@ -47,6 +55,31 @@ sz_b_info = 12
sz_cpr= 4 sz_cpr= 4
b_method= 8 b_method= 8
#if SIMULATE_ON_LINUX_EABI4 /*{*/
__NR_brk = 45 + __NR_SYSCALL_BASE // 0x2d
__NR_close = 6 + __NR_SYSCALL_BASE // 0x06
__NR_exit = 1 + __NR_SYSCALL_BASE // ??
__NR_mmap = 192 + __NR_SYSCALL_BASE // 0xc0
__NR_mprotect = 125 + __NR_SYSCALL_BASE // 0x7d
__NR_munmap = 91 + __NR_SYSCALL_BASE // 0x5b
__NR_open = 5 + __NR_SYSCALL_BASE // ??
__NR_openat = 322 + __NR_SYSCALL_BASE // 0x142
__NR_pread = 180 + __NR_SYSCALL_BASE // 0xb4
__NR_read = 3 + __NR_SYSCALL_BASE // 0x03
__NR_write = 4 + __NR_SYSCALL_BASE // 0x04
#else //}{ native darwin usual case
__NR_brk = 45 + __NR_SYSCALL_BASE
__NR_close = 6 + __NR_SYSCALL_BASE
__NR_exit = 1 + __NR_SYSCALL_BASE
__NR_mmap = 197 + __NR_SYSCALL_BASE
__NR_mprotect = 74 + __NR_SYSCALL_BASE
__NR_munmap = 73 + __NR_SYSCALL_BASE
__NR_open = 5 + __NR_SYSCALL_BASE
__NR_pread = 153 + __NR_SYSCALL_BASE
__NR_read = 3 + __NR_SYSCALL_BASE
__NR_write = 4 + __NR_SYSCALL_BASE
#endif /*}*/
_start: .globl _start // ignored, but silence "cannot find entry symbol _start" from ld _start: .globl _start // ignored, but silence "cannot find entry symbol _start" from ld
// control just falls through, after this part and compiled C code // control just falls through, after this part and compiled C code
@@ -54,26 +87,46 @@ _start: .globl _start // ignored, but silence "cannot find entry symbol _start"
fold_begin: fold_begin:
/* In: /* In:
r11= &sz_pack2; follows compressed program {l_info; p_info; b_info; data...} r9= f_exp; r10= ADRX; r11= LENX
r5= f_decompress rsp/ fd,ADRU,LENU,%entry,&Mach_header
sp/ junk1,junk2,{15 original regs (omit sp)},junk3,original_stack...
*/ */
ldr r1,[r11] // sz_pack2 r_t0 .req r12 // scratch value
add r7,sp,#4*(2+(16-1)) // &junk3; will become &mhdrp r_LENX .req r11
sub r0,r11,r1 // &{l_info; p_info; b_info} r_ADRX .req r10
ldr r3,[r0,#sz_unc + sz_l_info + sz_p_info] // sz_unc of Mach_header r_EXP .req r9
cmp r3,#(1<<13) r_OSTK .req r8
movls r3,#(1<<13) // at least 8KiB
sub sp,sp,r3 // alloca ldr arg4,[arg1,#sz_unc + sz_l_info + sz_p_info] // sz_unc of Mach_header
mov r2,sp // Mach_header *tmp mov r_t0,#(1<<13)
adr r6,f_unfilter cmp arg4,r_t0
stmdb sp!,{r5,r6,r7} movlo arg4,r_t0 // at least 8KiB
bl upx_main // (r0=l_info *, r1=sz_compressed, r2=Mach_header *tmp, mov r_OSTK,sp // where to un-alloca
// r3=sz_mhdr, f_decompress, f_unfilter, Mach_header **) sub sp,sp,arg4 // alloca
ldr r0,[r0,#15*4] // entry: ((Mach_ARM_thread_state const *)dyld)->pc mov arg3,sp // temp[sz_mhdr]
sub sp, r7,#4*(16-1) // unalloca; keep 15 original registers and mhdrp mov arg2,r_LENX
str r0,[r7,#-4] // .r15= entry mov arg1,r_ADRX // &{l_info; p_info; b_info}
ldmia sp!,{r0-r12,r14,r15} // restore original registers; goto dynamic linker
add arg7,r_OSTK,#4*NBPW // & &Mach_header
adr arg6,f_unfilter
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 **)
bl upx_main // OUT: r0= &Mach_thread_state of dyld; will be in temp mhdr[]
ARM_ts_pc= 14*NBPW
ldr r_ADRX,[r0,#ARM_ts_pc] // dyld.entry
ldr r_EXP, [r0,#0] // &hatch
mov sp,r_OSTK // un-alloc
ldr r0,[sp,#0*NBPW] // fd
bl close
ldr r0,[sp,#1*NBPW] // ADRU
ldr r1,[sp,#2*NBPW] // LENU
mov r7,#__NR_munmap
mov lr,r_ADRX // dyld.entry
add sp,sp,#4*NBPW // leave &Mach_header
bx r_EXP // goto hatch: syscall.munmap(ADRU,LENU); ret
f_unfilter: // (char *ptr, uint len, uint cto, uint fid) f_unfilter: // (char *ptr, uint len, uint cto, uint fid)
ptr .req r0 ptr .req r0
@@ -118,25 +171,6 @@ tst_unf:
spin: .globl spin spin: .globl spin
ret ret
__NR_exit = 1 + __NR_SYSCALL_BASE
__NR_read = 3 + __NR_SYSCALL_BASE
__NR_write = 4 + __NR_SYSCALL_BASE
__NR_open = 5 + __NR_SYSCALL_BASE
__NR_close = 6 + __NR_SYSCALL_BASE
__NR_brk = 45 + __NR_SYSCALL_BASE
__NR_mmap = 197 + __NR_SYSCALL_BASE
__NR_munmap = 73 + __NR_SYSCALL_BASE
__NR_mprotect = 74 + __NR_SYSCALL_BASE
__NR_pread = 153 + __NR_SYSCALL_BASE
#ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/
__NR_mmap = 192 + __NR_SYSCALL_BASE // mmap2
__NR_munmap = 91 + __NR_SYSCALL_BASE
__NR_mprotect = 125 + __NR_SYSCALL_BASE
__NR_pread = 180 + __NR_SYSCALL_BASE
#endif /*}*/
.globl exit .globl exit
exit: exit:
do_sys __NR_exit do_sys __NR_exit
@@ -171,7 +205,7 @@ mprotect:
.globl mmap .globl mmap
mmap: mmap:
#ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/ #if SIMULATE_ON_LINUX_EABI4 /*{*/
stmdb sp!,{r4,r5} stmdb sp!,{r4,r5}
ldr r5,[sp,#3*4] // off_t ldr r5,[sp,#3*4] // off_t
ldr r4,[sp,#2*4] // fd ldr r4,[sp,#2*4] // fd
@@ -197,7 +231,7 @@ EINVAL=22
.globl pread .globl pread
pread: pread:
#ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/ #if SIMULATE_ON_LINUX_EABI4 /*{*/
stmdb sp!,{r4,r5} // EABI4 wants 64-bit off_t in even,odd register pair stmdb sp!,{r4,r5} // EABI4 wants 64-bit off_t in even,odd register pair
mov r4,r3 // 32-bit off_t mov r4,r3 // 32-bit off_t
mov r5,#0 // hi bits of 64-bit off_t mov r5,#0 // hi bits of 64-bit off_t
+1 -459
View File
@@ -1,459 +1 @@
/* arm-darwin.macho-main.c -- loader stub for Mach-o ARMEL #include "amd64-darwin.macho-main.c"
This file is part of the UPX executable compressor.
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2017 Laszlo Molnar
Copyright (C) 2000-2017 John F. Reiser
All Rights Reserved.
UPX and the UCL library are free software; you can redistribute them
and/or modify them under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING.
If not, write to the Free Software Foundation, Inc.,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Markus F.X.J. Oberhumer Laszlo Molnar
<markus@oberhumer.com> <ezerotven+github@gmail.com>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
//#define SIMULATE_ON_DEBIAN_EABI4 1
#undef SIMULATE_ON_DEBIAN_EABI4
#define __WORDSIZE 32
#include "include/darwin.h"
/*************************************************************************
// configuration section
**************************************************************************/
// In order to make it much easier to move this code at runtime and execute
// it at an address different from it load address: there must be no
// static data, and no string constants.
/*************************************************************************
// "file" util
**************************************************************************/
typedef struct {
size_t size; // must be first to match size[0] uncompressed size
void *buf;
} Extent;
static void
xread(Extent *x, void *buf, size_t count)
{
unsigned char *p=x->buf, *q=buf;
size_t j;
if (x->size < count) {
exit(127);
}
for (j = count; 0!=j--; ++p, ++q) {
*q = *p;
}
x->buf += count;
x->size -= count;
}
/*************************************************************************
// util
**************************************************************************/
#if 1 //{ save space
#define ERR_LAB error: exit(127);
#define err_exit(a) goto error
#else //}{ save debugging time
#define ERR_LAB /*empty*/
static void
err_exit(int a)
{
(void)a; // debugging convenience
exit(127);
}
#endif //}
/*************************************************************************
// UPX & NRV stuff
**************************************************************************/
struct l_info { // 12-byte trailer for loader (after macho headers)
unsigned l_checksum;
unsigned l_magic; // UPX_MAGIC_LE32
unsigned short l_lsize;
unsigned char l_version;
unsigned char l_format;
};
struct p_info { // 12-byte packed program header
unsigned p_progid;
unsigned p_filesize;
unsigned p_blocksize;
};
struct b_info { // 12-byte header before each compressed block
unsigned sz_unc; // uncompressed_size
unsigned sz_cpr; // compressed_size
unsigned char b_method; // compression algorithm
unsigned char b_ftid; // filter id
unsigned char b_cto8; // filter parameter
unsigned char b_unused;
};
typedef void f_unfilter(
nrv_byte *, // also addvalue
nrv_uint,
unsigned cto8, // junk in high 24 bits
unsigned ftid
);
typedef int f_expand(
const nrv_byte *, nrv_uint,
nrv_byte *, nrv_uint *, unsigned );
static void
unpackExtent(
Extent *const xi, // input
Extent *const xo, // output
f_expand *const f_decompress,
f_unfilter *f_unf
)
{
while (xo->size) {
struct b_info h;
// Note: if h.sz_unc == h.sz_cpr then the block was not
// compressible and is stored in its uncompressed form.
// Read and check block sizes.
xread(xi, (unsigned char *)&h, sizeof(h));
if (h.sz_unc == 0) { // uncompressed size 0 -> EOF
if (h.sz_cpr != UPX_MAGIC_LE32) // h.sz_cpr must be h->magic
err_exit(2);
if (xi->size != 0) // all bytes must be written
err_exit(3);
break;
}
if (h.sz_cpr <= 0) {
err_exit(4);
ERR_LAB
}
if (h.sz_cpr > h.sz_unc
|| h.sz_unc > xo->size ) {
err_exit(5);
}
// Now we have:
// assert(h.sz_cpr <= h.sz_unc);
// assert(h.sz_unc > 0 && h.sz_unc <= blocksize);
// assert(h.sz_cpr > 0 && h.sz_cpr <= blocksize);
if (h.sz_cpr < h.sz_unc) { // Decompress block
nrv_uint out_len = h.sz_unc; // EOF for lzma
int const j = (*f_decompress)(xi->buf, h.sz_cpr,
xo->buf, &out_len, h.b_method);
if (j != 0 || out_len != (nrv_uint)h.sz_unc)
err_exit(7);
if (h.b_ftid!=0 && f_unf) { // have filter
(*f_unf)(xo->buf, out_len, h.b_cto8, h.b_ftid);
}
xi->buf += h.sz_cpr;
xi->size -= h.sz_cpr;
}
else { // copy literal block
xread(xi, xo->buf, h.sz_cpr);
}
xo->buf += h.sz_unc;
xo->size -= h.sz_unc;
}
}
static void
upx_bzero(unsigned char *p, size_t len)
{
if (len) do {
*p++= 0;
} while (--len);
}
#define bzero upx_bzero
// The PF_* and PROT_* bits are {1,2,4}; the conversion table fits in 32 bits.
#define REP8(x) \
((x)|((x)<<4)|((x)<<8)|((x)<<12)|((x)<<16)|((x)<<20)|((x)<<24)|((x)<<28))
#define EXP8(y) \
((1&(y)) ? 0xf0f0f0f0 : (2&(y)) ? 0xff00ff00 : (4&(y)) ? 0xffff0000 : 0)
#define PF_TO_PROT(pf) \
((PROT_READ|PROT_WRITE|PROT_EXEC) & ( \
( (REP8(PROT_EXEC ) & EXP8(PF_X)) \
|(REP8(PROT_READ ) & EXP8(PF_R)) \
|(REP8(PROT_WRITE) & EXP8(PF_W)) \
) >> ((pf & (PF_R|PF_W|PF_X))<<2) ))
typedef struct {
unsigned magic;
unsigned nfat_arch;
} Fat_header;
typedef struct {
unsigned cputype;
unsigned cpusubtype;
unsigned offset;
unsigned size;
unsigned align; /* shift count (log base 2) */
} Fat_arch;
enum e8 {
FAT_MAGIC = 0xcafebabe
};
enum e9 {
CPU_TYPE_I386 = 7,
CPU_TYPE_ARM = 12,
CPU_TYPE_POWERPC = 0x00000012,
CPU_TYPE_POWERPC64 = 0x01000012
};
typedef struct {
unsigned magic;
unsigned cputype;
unsigned cpysubtype;
unsigned filetype;
unsigned ncmds;
unsigned sizeofcmds;
unsigned flags;
} Mach_header;
enum e0 {
MH_MAGIC = 0xfeedface
};
enum e2 {
MH_EXECUTE = 2
};
enum e3 {
MH_NOUNDEFS = 1
};
typedef struct {
unsigned cmd;
unsigned cmdsize;
} Mach_load_command;
enum e4 {
LC_SEGMENT = 0x1,
LC_THREAD = 0x4,
LC_UNIXTHREAD = 0x5,
LC_LOAD_DYLINKER = 0xe
};
typedef struct {
unsigned cmd;
unsigned cmdsize;
char segname[16];
unsigned vmaddr;
unsigned vmsize;
unsigned fileoff;
unsigned filesize;
unsigned maxprot;
unsigned initprot;
unsigned nsects;
unsigned flags;
} Mach_segment_command;
enum e5 {
VM_PROT_READ = 1,
VM_PROT_WRITE = 2,
VM_PROT_EXECUTE = 4
};
typedef struct {
unsigned r[13]; // r0-r12
unsigned sp; // r13
unsigned lr; // r14
unsigned pc; // r15
unsigned cpsr;
} Mach_ARM_thread_state;
typedef struct {
unsigned cmd; /* LC_THREAD or LC_UNIXTHREAD */
unsigned cmdsize; /* total size of this command */
unsigned flavor;
unsigned count; /* sizeof(following_thread_state)/4 */
Mach_ARM_thread_state state;
} Mach_thread_command;
enum e6 {
ARM_THREAD_STATE = 1
};
enum e7 {
ARM_THREAD_STATE_COUNT = sizeof(Mach_ARM_thread_state)/4
};
typedef union {
unsigned long offset; /* from start of load command to string */
char *ptr;
} Mach_lc_str;
#define MAP_FIXED 0x10
#define MAP_PRIVATE 0x02
#define MAP_ANON 0x1000
//#define MAP_ANON 0x20 // x86 DEBUG ONLY
#define PROT_READ 1
#define PROT_WRITE 2
#define PROT_EXEC 4
#define MAP_ANON_FD -1
extern void *mmap(void *, size_t, unsigned, unsigned, int, off_t_upx_stub);
ssize_t pread(int, void *, size_t, off_t_upx_stub);
extern void bswap(void *, unsigned);
static Mach_ARM_thread_state const *
do_xmap(
Mach_header const *const mhdr,
off_t_upx_stub const fat_offset,
Extent *const xi,
int const fdi,
Mach_header **mhdrpp,
f_expand *const f_decompress,
f_unfilter *const f_unf
)
{
Mach_segment_command const *sc = (Mach_segment_command const *)(1+ mhdr);
Mach_ARM_thread_state const *entry = 0;
unsigned j;
for ( j=0; j < mhdr->ncmds; ++j,
(sc = (Mach_segment_command const *)(sc->cmdsize + (void const *)sc))
) if (LC_SEGMENT==sc->cmd) {
Extent xo;
size_t mlen = xo.size = sc->filesize;
unsigned char *addr = xo.buf = (unsigned char *)sc->vmaddr;
unsigned char *haddr = sc->vmsize + addr;
size_t frag = (int)addr &~ PAGE_MASK;
addr -= frag;
mlen += frag;
if (0!=mlen && addr != mmap(addr, mlen, VM_PROT_READ | VM_PROT_WRITE,
MAP_FIXED | MAP_PRIVATE |
((xi || 0==sc->filesize) ? MAP_ANON : 0),
((0==sc->filesize) ? MAP_ANON_FD : fdi), sc->fileoff + fat_offset) ) {
err_exit(8);
}
if (xi && 0!=sc->filesize) {
if (0==sc->fileoff /*&& 0!=mhdrpp*/) {
*mhdrpp = (Mach_header *)(void *)addr;
}
unpackExtent(xi, &xo, f_decompress, f_unf);
}
/*bzero(addr, frag);*/ // fragment at lo end
frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary
bzero(mlen+addr, frag); // fragment at hi end
if (0!=mlen && 0!=mprotect(addr, mlen, sc->initprot)) {
err_exit(10);
ERR_LAB
}
addr += mlen + frag; /* page boundary on hi end */
if (
#if defined(SIMULATE_ON_DEBIAN_EABI4) /*{*/
0!=addr &&
#endif /*}*/
addr < haddr) { // need pages for .bss
if (addr != mmap(addr, haddr - addr, sc->initprot,
MAP_FIXED | MAP_PRIVATE | MAP_ANON, MAP_ANON_FD, 0 ) ) {
err_exit(9);
}
}
}
else if (LC_UNIXTHREAD==sc->cmd || LC_THREAD==sc->cmd) {
Mach_thread_command const *const thrc = (Mach_thread_command const *)sc;
if (ARM_THREAD_STATE ==thrc->flavor
&& ARM_THREAD_STATE_COUNT==thrc->count ) {
entry = &thrc->state;
}
}
return entry;
}
extern void spin(void *, ...);
/*************************************************************************
// upx_main - called by our entry code
//
**************************************************************************/
Mach_ARM_thread_state const *
upx_main(
struct l_info const *const li,
size_t volatile sz_compressed, // total length
Mach_header *const mhdr, // temp char[sz_mhdr] for decompressing
size_t const sz_mhdr,
f_expand *const f_decompress,
f_unfilter *const f_unf,
Mach_header **const mhdrpp // Out: *mhdrpp= &real Mach_header
)
{
Mach_ARM_thread_state const *entry;
off_t_upx_stub fat_offset = 0;
Extent xi, xo, xi0;
xi.buf = CONST_CAST(unsigned char *, 1+ (struct p_info const *)(1+ li)); // &b_info
xi.size = sz_compressed - (sizeof(struct l_info) + sizeof(struct p_info));
xo.buf = (unsigned char *)mhdr;
xo.size = ((struct b_info const *)(void const *)xi.buf)->sz_unc;
xi0 = xi;
// Uncompress Macho headers
unpackExtent(&xi, &xo, f_decompress, 0); // never filtered?
entry = do_xmap(mhdr, fat_offset, &xi0, MAP_ANON_FD, mhdrpp, f_decompress, f_unf);
{ // Map dyld dynamic loader
Mach_load_command const *lc = (Mach_load_command const *)(1+ mhdr);
unsigned j;
for (j=0; j < mhdr->ncmds; ++j,
(lc = (Mach_load_command const *)(lc->cmdsize + (void const *)lc))
) if (LC_LOAD_DYLINKER==lc->cmd) {
char const *const dyld_name = ((Mach_lc_str const *)(1+ lc))->offset +
(char const *)lc;
int const fdi = open(dyld_name, O_RDONLY, 0);
if (0 > fdi) {
err_exit(18);
}
fat:
if ((ssize_t)sz_mhdr!=pread(fdi, (void *)mhdr, sz_mhdr, fat_offset)) {
ERR_LAB
err_exit(19);
}
switch (mhdr->magic) {
case MH_MAGIC: break;
case FAT_MAGIC: {
// stupid Apple: waste code and a page fault on EVERY execve
Fat_header *const fh = (Fat_header *)mhdr;
Fat_arch *fa = (Fat_arch *)(1+ fh);
bswap(fh, sizeof(*fh) + (fh->nfat_arch>>24)*sizeof(*fa));
for (j= 0; j < fh->nfat_arch; ++j, ++fa) {
if (CPU_TYPE_ARM==fa->cputype) {
fat_offset= fa->offset;
goto fat;
}
}
} break;
} // switch
entry = do_xmap(mhdr, fat_offset, 0, fdi, 0, 0, 0);
close(fdi);
break;
}
}
return entry;
}
/* vim:set ts=4 sw=4 et: */
+6 -7
View File
@@ -29,12 +29,11 @@
* <jreiser@users.sourceforge.net> * <jreiser@users.sourceforge.net>
*/ */
#define SIMULATE_ON_DEBIAN_EABI4 1 #define SIMULATE_ON_LINUX_EABI4 0
//#undef SIMULATE_ON_DEBIAN_EABI4
#ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/ #if SIMULATE_ON_LINUX_EABI4 /*{*/
#define LINUX_ARM_CACHEFLUSH 1 /* SIMULATE_ON_DEBIAN_EABI4 */ #define LINUX_ARM_CACHEFLUSH 1 /* SIMULATE_ON_LINUX_EABI4 */
#define ARMEL_EABI4 1 /* SIMULATE_ON_DEBIAN_EABI4 */ #define ARMEL_EABI4 1 /* SIMULATE_ON_LINUX_EABI4 */
#else /*}{ USUAL case */ #else /*}{ USUAL case */
#define DARWIN_ARM_CACHEFLUSH 1 #define DARWIN_ARM_CACHEFLUSH 1
#define ARMEL_DARWIN 1 #define ARMEL_DARWIN 1
@@ -70,7 +69,7 @@ __NR_open = 5 + __NR_SYSCALL_BASE
__NR_mmap = 197 + __NR_SYSCALL_BASE __NR_mmap = 197 + __NR_SYSCALL_BASE
__NR_mprotect= 74 + __NR_SYSCALL_BASE __NR_mprotect= 74 + __NR_SYSCALL_BASE
#ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/ #if SIMULATE_ON_LINUX_EABI4 /*{*/
__NR_mmap = 0xde // 222 __GI___mmap64 __NR_mmap = 0xde // 222 __GI___mmap64
__NR_munmap = 0xd7 // 215 __NR_munmap = 0xd7 // 215
__NR_mprotect = 0xe2 // 226 __NR_mprotect = 0xe2 // 226
@@ -231,7 +230,7 @@ L40:
cmp w4,w5; bne L30 // mismatch ==> next apple[] cmp w4,w5; bne L30 // mismatch ==> next apple[]
cbnz w3,L40 // not entire prefix cbnz w3,L40 // not entire prefix
#ifdef SIMULATE_ON_DEBIAN_EABI4 //{ #if SIMULATE_ON_LINUX_EABI4 //{
mov arg3,#0 // O_RDONLY mov arg3,#0 // O_RDONLY
mov arg2,arg1 mov arg2,arg1
mov arg1w,#FD_CWD mov arg1w,#FD_CWD
+31 -33
View File
@@ -27,12 +27,11 @@
// <jreiser@users.sourceforge.net> // <jreiser@users.sourceforge.net>
// //
#define SIMULATE_ON_DEBIAN_EABI4 1 #define SIMULATE_ON_LINUX_EABI4 0
//#undef SIMULATE_ON_DEBIAN_EABI4
#ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/ #if SIMULATE_ON_LINUX_EABI4 /*{*/
#define LINUX_ARM_CACHEFLUSH 1 /* SIMULATE_ON_DEBIAN_EABI4 */ #define LINUX_ARM_CACHEFLUSH 1 /* SIMULATE_ON_LINUX_EABI4 */
#define ARMEL_EABI4 1 /* SIMULATE_ON_DEBIAN_EABI4 */ #define ARMEL_EABI4 1 /* SIMULATE_ON_LINUX_EABI4 */
#else /*}{ USUAL case */ #else /*}{ USUAL case */
#define DARWIN_ARM_CACHEFLUSH 1 #define DARWIN_ARM_CACHEFLUSH 1
#define ARMEL_DARWIN 1 #define ARMEL_DARWIN 1
@@ -56,6 +55,32 @@ sz_b_info = 12
sz_cpr= 4 sz_cpr= 4
b_method= 8 b_method= 8
#if SIMULATE_ON_LINUX_EABI4 /*{*/
__NR_brk = 0xd6 // 214
__NR_close = 0x39 // 57
__NR_exit = 0x5d // 93
__NR_mmap = 0xde // 222 __GI___mmap64
__NR_mprotect = 0xe2 // 226
__NR_munmap = 0xd7 // 215
__NR_openat = 0x38 // 56
__NR_pread = 0x43 // 67
__NR_read = 0x3f // 63
__NR_write = 0x40 // 64
#else //}{ native darwin usual case
__NR_exit = 1
__NR_read = 3
__NR_write = 4
__NR_open = 5
__NR_close = 6
__NR_brk = 45
__NR_mmap = 197
__NR_munmap = 73
__NR_mprotect = 74
__NR_pread = 153
#endif /*}*/
FD_CWD = -100
_start: .globl _start // ignored, but silence "cannot find entry symbol _start" from ld _start: .globl _start // ignored, but silence "cannot find entry symbol _start" from ld
// control just falls through, after this part and compiled C code // control just falls through, after this part and compiled C code
@@ -89,7 +114,6 @@ r_EXP .req x28
mov arg5,r_EXP mov arg5,r_EXP
adr arg6,f_unfilter adr arg6,f_unfilter
// upx_main(x0=&l_info, w1=len_cpr, x2=temp[sz_mhdr], w3=sz_mhdr, x4=f_exp, x5=f_unf, x6=mhdr **) // upx_main(x0=&l_info, w1=len_cpr, x2=temp[sz_mhdr], w3=sz_mhdr, x4=f_exp, x5=f_unf, x6=mhdr **)
brk #0
bl upx_main // OUT: x0= &Mach_thread_state of dyld; will be in temp mhdr[] bl upx_main // OUT: x0= &Mach_thread_state of dyld; will be in temp mhdr[]
ARM64_ts_pc= 32*NBPW ARM64_ts_pc= 32*NBPW
@@ -151,31 +175,6 @@ unf_ret:
spin: .globl spin spin: .globl spin
ret ret
__NR_exit = 1
__NR_read = 3
__NR_write = 4
__NR_open = 5
__NR_close = 6
__NR_brk = 45
__NR_mmap = 197
__NR_munmap = 73
__NR_mprotect = 74
__NR_pread = 153
#ifdef SIMULATE_ON_DEBIAN_EABI4 /*{*/
__NR_close = 0x39 // 57
__NR_exit = 0x5d // 93
__NR_mmap = 0xde // 222 __GI___mmap64
__NR_mprotect = 0xe2 // 226
__NR_munmap = 0xd7 // 215
__NR_openat = 0x38 // 56
__NR_pread = 0x43 // 67
__NR_read = 0x3f // 63
__NR_write = 0x40 // 64
#endif /*}*/
FD_CWD = -100
.globl exit .globl exit
exit: exit:
do_sys __NR_exit do_sys __NR_exit
@@ -190,8 +189,7 @@ write:
.globl open .globl open
open: open:
brk #0 #if SIMULATE_ON_LINUX_EABI4 //{
#ifdef SIMULATE_ON_DEBIAN_EABI4 //{
mov arg3,#0 // O_RDONLY mov arg3,#0 // O_RDONLY
mov arg2,arg1 mov arg2,arg1
mov arg1w,#FD_CWD mov arg1w,#FD_CWD
+1 -1
View File
@@ -559,7 +559,7 @@ ERR_LAB
} }
addr += mlen + frag; /* page boundary on hi end */ addr += mlen + frag; /* page boundary on hi end */
if ( if (
#if defined(SIMULATE_ON_DEBIAN_EABI4) /*{*/ #if defined(SIMULATE_ON_LINUX_EABI4) /*{*/
0!=addr && 0!=addr &&
#endif /*}*/ #endif /*}*/
addr < haddr) { // need pages for .bss addr < haddr) { // need pages for .bss
+33 -33
View File
@@ -72,7 +72,7 @@ LOAD tmp/amd64-darwin.macho-main.o
.plt .plt
*(.plt) *(.plt)
.text 0x0000000008048000 0xea3 .text 0x0000000008048000 0xee5
*(.text .stub .text.* .gnu.linkonce.t.*) *(.text .stub .text.* .gnu.linkonce.t.*)
.text 0x0000000008048000 0x157 tmp/amd64-darwin.macho-fold.o .text 0x0000000008048000 0x157 tmp/amd64-darwin.macho-fold.o
0x00000000080480b8 munmap 0x00000000080480b8 munmap
@@ -87,17 +87,17 @@ LOAD tmp/amd64-darwin.macho-main.o
0x00000000080480b4 mprotect 0x00000000080480b4 mprotect
0x00000000080480c0 close 0x00000000080480c0 close
*fill* 0x0000000008048157 0x1 90909090 *fill* 0x0000000008048157 0x1 90909090
.text 0x0000000008048158 0xd4b tmp/amd64-darwin.macho-main.o .text 0x0000000008048158 0xd8d tmp/amd64-darwin.macho-main.o
0x000000000804875f do_xmap 0x000000000804875f do_xmap
0x0000000008048c30 upx_main 0x0000000008048c72 upx_main
*(.text.*personality*) *(.text.*personality*)
*(.gnu.warning) *(.gnu.warning)
.fini .fini
*(.fini) *(.fini)
0x0000000008048ea3 PROVIDE (__etext, .) 0x0000000008048ee5 PROVIDE (__etext, .)
0x0000000008048ea3 PROVIDE (_etext, .) 0x0000000008048ee5 PROVIDE (_etext, .)
0x0000000008048ea3 PROVIDE (etext, .) 0x0000000008048ee5 PROVIDE (etext, .)
.rodata .rodata
*(.rodata .rodata.* .gnu.linkonce.r.*) *(.rodata .rodata.* .gnu.linkonce.r.*)
@@ -113,8 +113,8 @@ LOAD tmp/amd64-darwin.macho-main.o
.gcc_except_table .gcc_except_table
*(.gcc_except_table .gcc_except_table.*) *(.gcc_except_table .gcc_except_table.*)
0x0000000008048ea3 . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff)) 0x0000000008048ee5 . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff))
0x0000000008049ea3 . = (0x1000 DATA_SEGMENT_ALIGN 0x1000) 0x0000000008049ee5 . = (0x1000 DATA_SEGMENT_ALIGN 0x1000)
.eh_frame .eh_frame
*(.eh_frame) *(.eh_frame)
@@ -129,22 +129,22 @@ LOAD tmp/amd64-darwin.macho-main.o
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tbss .tbss.* .gnu.linkonce.tb.*)
*(.tcommon) *(.tcommon)
.preinit_array 0x0000000008049ea3 0x0 .preinit_array 0x0000000008049ee5 0x0
0x0000000008049ea3 PROVIDE (__preinit_array_start, .) 0x0000000008049ee5 PROVIDE (__preinit_array_start, .)
*(.preinit_array) *(.preinit_array)
0x0000000008049ea3 PROVIDE (__preinit_array_end, .) 0x0000000008049ee5 PROVIDE (__preinit_array_end, .)
.init_array 0x0000000008049ea3 0x0 .init_array 0x0000000008049ee5 0x0
0x0000000008049ea3 PROVIDE (__init_array_start, .) 0x0000000008049ee5 PROVIDE (__init_array_start, .)
*(SORT(.init_array.*)) *(SORT(.init_array.*))
*(.init_array) *(.init_array)
0x0000000008049ea3 PROVIDE (__init_array_end, .) 0x0000000008049ee5 PROVIDE (__init_array_end, .)
.fini_array 0x0000000008049ea3 0x0 .fini_array 0x0000000008049ee5 0x0
0x0000000008049ea3 PROVIDE (__fini_array_start, .) 0x0000000008049ee5 PROVIDE (__fini_array_start, .)
*(.fini_array) *(.fini_array)
*(SORT(.fini_array.*)) *(SORT(.fini_array.*))
0x0000000008049ea3 PROVIDE (__fini_array_end, .) 0x0000000008049ee5 PROVIDE (__fini_array_end, .)
.ctors .ctors
*crtbegin*.o(.ctors) *crtbegin*.o(.ctors)
@@ -170,35 +170,35 @@ LOAD tmp/amd64-darwin.macho-main.o
.got .got
*(.got) *(.got)
0x0000000008049ea3 . = (. DATA_SEGMENT_RELRO_END 0xc) 0x0000000008049ee5 . = (. DATA_SEGMENT_RELRO_END 0xc)
.got.plt .got.plt
*(.got.plt) *(.got.plt)
.data 0x0000000008049ea4 0x0 .data 0x0000000008049ee8 0x0
*(.data .data.* .gnu.linkonce.d.*) *(.data .data.* .gnu.linkonce.d.*)
.data 0x0000000008049ea4 0x0 tmp/amd64-darwin.macho-fold.o .data 0x0000000008049ee8 0x0 tmp/amd64-darwin.macho-fold.o
.data 0x0000000008049ea4 0x0 tmp/amd64-darwin.macho-main.o .data 0x0000000008049ee8 0x0 tmp/amd64-darwin.macho-main.o
*(.gnu.linkonce.d.*personality*) *(.gnu.linkonce.d.*personality*)
.data1 .data1
*(.data1) *(.data1)
0x0000000008049ea4 _edata = . 0x0000000008049ee8 _edata = .
0x0000000008049ea4 PROVIDE (edata, .) 0x0000000008049ee8 PROVIDE (edata, .)
0x0000000008049ea4 __bss_start = . 0x0000000008049ee8 __bss_start = .
.bss 0x0000000008049ea4 0x0 .bss 0x0000000008049ee8 0x0
*(.dynbss) *(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*) *(.bss .bss.* .gnu.linkonce.b.*)
.bss 0x0000000008049ea4 0x0 tmp/amd64-darwin.macho-fold.o .bss 0x0000000008049ee8 0x0 tmp/amd64-darwin.macho-fold.o
.bss 0x0000000008049ea4 0x0 tmp/amd64-darwin.macho-main.o .bss 0x0000000008049ee8 0x0 tmp/amd64-darwin.macho-main.o
*(COMMON) *(COMMON)
0x0000000008049ea4 . = ALIGN ((. != 0x0)?0x4:0x1) 0x0000000008049ee8 . = ALIGN ((. != 0x0)?0x4:0x1)
0x0000000008049ea4 . = ALIGN (0x4) 0x0000000008049ee8 . = ALIGN (0x4)
0x0000000008049ea4 . = ALIGN (0x4) 0x0000000008049ee8 . = ALIGN (0x4)
0x0000000008049ea4 _end = . 0x0000000008049ee8 _end = .
0x0000000008049ea4 PROVIDE (end, .) 0x0000000008049ee8 PROVIDE (end, .)
0x0000000008049ea4 . = DATA_SEGMENT_END (.) 0x0000000008049ee8 . = DATA_SEGMENT_END (.)
.stab .stab
*(.stab) *(.stab)
@@ -13,7 +13,7 @@ Idx Name Size VMA LMA File off Algn Flags
8 LZMA_DEC10 00000478 00000000 00000000 00000d80 2**0 CONTENTS, RELOC, READONLY 8 LZMA_DEC10 00000478 00000000 00000000 00000d80 2**0 CONTENTS, RELOC, READONLY
9 LZMA_DEC30 00000000 00000000 00000000 000011f8 2**0 CONTENTS, READONLY 9 LZMA_DEC30 00000000 00000000 00000000 000011f8 2**0 CONTENTS, READONLY
10 MACHMAINY 00000000 00000000 00000000 000011f8 2**0 CONTENTS, READONLY 10 MACHMAINY 00000000 00000000 00000000 000011f8 2**0 CONTENTS, READONLY
11 MACHMAINZ 0000018c 00000000 00000000 000011f8 2**0 CONTENTS, RELOC, READONLY 11 MACHMAINZ 00000184 00000000 00000000 000011f8 2**0 CONTENTS, RELOC, READONLY
SYMBOL TABLE: SYMBOL TABLE:
00000000 l d NRV2E 00000000 NRV2E 00000000 l d NRV2E 00000000 NRV2E
00000000 l d NRV2D 00000000 NRV2D 00000000 l d NRV2D 00000000 NRV2D
@@ -245,9 +245,9 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [MACHMAINZ]: RELOCATION RECORDS FOR [MACHMAINZ]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
00000110 R_ARM_PC24 MACHMAINZ 0000010c R_ARM_PC24 MACHMAINZ
0000011c R_ARM_PC24 MACHMAINZ 00000118 R_ARM_PC24 MACHMAINZ
00000128 R_ARM_PC24 MACHMAINZ 00000124 R_ARM_PC24 MACHMAINZ
00000140 R_ARM_PC24 MACHMAINZ 0000013c R_ARM_PC24 MACHMAINZ
00000148 R_ARM_PC24 MACHMAINZ 00000144 R_ARM_PC24 MACHMAINZ
00000188 R_ARM_PC24 MACHMAINZ 00000180 R_ARM_PC24 MACHMAINZ
+47 -46
View File
@@ -72,32 +72,33 @@ LOAD tmp/arm.v5a-darwin.macho-main.o
.plt .plt
*(.plt) *(.plt)
.text 0x0000000008048000 0x6a0 .text 0x0000000008048000 0xfa8
*(.text .stub .text.* .gnu.linkonce.t.*) *(.text .stub .text.* .gnu.linkonce.t.*)
.text 0x0000000008048000 0x19c tmp/arm.v5a-darwin.macho-fold.o .text 0x0000000008048000 0x1d8 tmp/arm.v5a-darwin.macho-fold.o
0x0000000008048100 munmap 0x0000000008048128 munmap
0x0000000008048170 bswap 0x00000000080481ac bswap
0x0000000008048128 mmap 0x0000000008048150 mmap
0x00000000080480b0 write 0x00000000080480d8 write
0x0000000008048000 _start 0x0000000008048000 _start
0x000000000804809c read 0x00000000080480c4 read
0x0000000008048088 spin 0x00000000080480b0 spin
0x0000000008048150 pread 0x0000000008048188 pread
0x000000000804808c exit 0x00000000080480b4 exit
0x00000000080480ec brk 0x0000000008048114 brk
0x00000000080480c4 open 0x00000000080480ec open
0x0000000008048114 mprotect 0x000000000804813c mprotect
0x00000000080480d8 close 0x0000000008048100 close
.text 0x000000000804819c 0x504 tmp/arm.v5a-darwin.macho-main.o .text 0x00000000080481d8 0xdd0 tmp/arm.v5a-darwin.macho-main.o
0x0000000008048508 upx_main 0x00000000080487bc do_xmap
0x0000000008048d08 upx_main
*(.text.*personality*) *(.text.*personality*)
*(.gnu.warning) *(.gnu.warning)
.fini .fini
*(.fini) *(.fini)
0x00000000080486a0 PROVIDE (__etext, .) 0x0000000008048fa8 PROVIDE (__etext, .)
0x00000000080486a0 PROVIDE (_etext, .) 0x0000000008048fa8 PROVIDE (_etext, .)
0x00000000080486a0 PROVIDE (etext, .) 0x0000000008048fa8 PROVIDE (etext, .)
.rodata .rodata
*(.rodata .rodata.* .gnu.linkonce.r.*) *(.rodata .rodata.* .gnu.linkonce.r.*)
@@ -113,8 +114,8 @@ LOAD tmp/arm.v5a-darwin.macho-main.o
.gcc_except_table .gcc_except_table
*(.gcc_except_table .gcc_except_table.*) *(.gcc_except_table .gcc_except_table.*)
0x00000000080486a0 . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff)) 0x0000000008048fa8 . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff))
0x00000000080496a0 . = (0x1000 DATA_SEGMENT_ALIGN 0x1000) 0x0000000008049fa8 . = (0x1000 DATA_SEGMENT_ALIGN 0x1000)
.eh_frame .eh_frame
*(.eh_frame) *(.eh_frame)
@@ -129,22 +130,22 @@ LOAD tmp/arm.v5a-darwin.macho-main.o
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tbss .tbss.* .gnu.linkonce.tb.*)
*(.tcommon) *(.tcommon)
.preinit_array 0x00000000080496a0 0x0 .preinit_array 0x0000000008049fa8 0x0
0x00000000080496a0 PROVIDE (__preinit_array_start, .) 0x0000000008049fa8 PROVIDE (__preinit_array_start, .)
*(.preinit_array) *(.preinit_array)
0x00000000080496a0 PROVIDE (__preinit_array_end, .) 0x0000000008049fa8 PROVIDE (__preinit_array_end, .)
.init_array 0x00000000080496a0 0x0 .init_array 0x0000000008049fa8 0x0
0x00000000080496a0 PROVIDE (__init_array_start, .) 0x0000000008049fa8 PROVIDE (__init_array_start, .)
*(SORT(.init_array.*)) *(SORT(.init_array.*))
*(.init_array) *(.init_array)
0x00000000080496a0 PROVIDE (__init_array_end, .) 0x0000000008049fa8 PROVIDE (__init_array_end, .)
.fini_array 0x00000000080496a0 0x0 .fini_array 0x0000000008049fa8 0x0
0x00000000080496a0 PROVIDE (__fini_array_start, .) 0x0000000008049fa8 PROVIDE (__fini_array_start, .)
*(.fini_array) *(.fini_array)
*(SORT(.fini_array.*)) *(SORT(.fini_array.*))
0x00000000080496a0 PROVIDE (__fini_array_end, .) 0x0000000008049fa8 PROVIDE (__fini_array_end, .)
.ctors .ctors
*crtbegin*.o(.ctors) *crtbegin*.o(.ctors)
@@ -170,35 +171,35 @@ LOAD tmp/arm.v5a-darwin.macho-main.o
.got .got
*(.got) *(.got)
0x00000000080496a0 . = (. DATA_SEGMENT_RELRO_END 0xc) 0x0000000008049fa8 . = (. DATA_SEGMENT_RELRO_END 0xc)
.got.plt .got.plt
*(.got.plt) *(.got.plt)
.data 0x00000000080496a0 0x0 .data 0x0000000008049fa8 0x0
*(.data .data.* .gnu.linkonce.d.*) *(.data .data.* .gnu.linkonce.d.*)
.data 0x00000000080496a0 0x0 tmp/arm.v5a-darwin.macho-fold.o .data 0x0000000008049fa8 0x0 tmp/arm.v5a-darwin.macho-fold.o
.data 0x00000000080496a0 0x0 tmp/arm.v5a-darwin.macho-main.o .data 0x0000000008049fa8 0x0 tmp/arm.v5a-darwin.macho-main.o
*(.gnu.linkonce.d.*personality*) *(.gnu.linkonce.d.*personality*)
.data1 .data1
*(.data1) *(.data1)
0x00000000080496a0 _edata = . 0x0000000008049fa8 _edata = .
0x00000000080496a0 PROVIDE (edata, .) 0x0000000008049fa8 PROVIDE (edata, .)
0x00000000080496a0 __bss_start = . 0x0000000008049fa8 __bss_start = .
.bss 0x00000000080496a0 0x0 .bss 0x0000000008049fa8 0x0
*(.dynbss) *(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*) *(.bss .bss.* .gnu.linkonce.b.*)
.bss 0x00000000080496a0 0x0 tmp/arm.v5a-darwin.macho-fold.o .bss 0x0000000008049fa8 0x0 tmp/arm.v5a-darwin.macho-fold.o
.bss 0x00000000080496a0 0x0 tmp/arm.v5a-darwin.macho-main.o .bss 0x0000000008049fa8 0x0 tmp/arm.v5a-darwin.macho-main.o
*(COMMON) *(COMMON)
0x00000000080496a0 . = ALIGN ((. != 0x0)?0x4:0x1) 0x0000000008049fa8 . = ALIGN ((. != 0x0)?0x4:0x1)
0x00000000080496a0 . = ALIGN (0x4) 0x0000000008049fa8 . = ALIGN (0x4)
0x00000000080496a0 . = ALIGN (0x4) 0x0000000008049fa8 . = ALIGN (0x4)
0x00000000080496a0 _end = . 0x0000000008049fa8 _end = .
0x00000000080496a0 PROVIDE (end, .) 0x0000000008049fa8 PROVIDE (end, .)
0x00000000080496a0 . = DATA_SEGMENT_END (.) 0x0000000008049fa8 . = DATA_SEGMENT_END (.)
.stab .stab
*(.stab) *(.stab)
@@ -13,7 +13,7 @@ Idx Name Size VMA LMA File off Algn
8 LZMA_DEC10 0000049c 0000000000000000 0000000000000000 00000db4 2**0 CONTENTS, READONLY 8 LZMA_DEC10 0000049c 0000000000000000 0000000000000000 00000db4 2**0 CONTENTS, READONLY
9 LZMA_DEC30 00000000 0000000000000000 0000000000000000 00001250 2**0 CONTENTS, READONLY 9 LZMA_DEC30 00000000 0000000000000000 0000000000000000 00001250 2**0 CONTENTS, READONLY
10 MACHMAINY 00000000 0000000000000000 0000000000000000 00001250 2**0 CONTENTS, READONLY 10 MACHMAINY 00000000 0000000000000000 0000000000000000 00001250 2**0 CONTENTS, READONLY
11 MACHMAINZ 00000158 0000000000000000 0000000000000000 00001250 2**0 CONTENTS, RELOC, READONLY 11 MACHMAINZ 00000150 0000000000000000 0000000000000000 00001250 2**0 CONTENTS, RELOC, READONLY
SYMBOL TABLE: SYMBOL TABLE:
0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30 0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30
0000000000000000 l d MACHMAINZ 0000000000000000 MACHMAINZ 0000000000000000 l d MACHMAINZ 0000000000000000 MACHMAINZ
@@ -44,4 +44,4 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [MACHMAINZ]: RELOCATION RECORDS FOR [MACHMAINZ]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
0000000000000130 R_AARCH64_ADR_PREL_LO21 _start-0x0000000000000008 0000000000000128 R_AARCH64_ADR_PREL_LO21 _start-0x0000000000000008
+58 -58
View File
@@ -67,36 +67,36 @@ LOAD tmp/arm64-darwin.macho-main.o
*(.iplt) *(.iplt)
.iplt 0x0000000000400080 0x0 tmp/arm64-darwin.macho-fold.o .iplt 0x0000000000400080 0x0 tmp/arm64-darwin.macho-fold.o
.text 0x0000000000400078 0xfe4 .text 0x0000000000400078 0xffc
*(.text.unlikely .text.*_unlikely .text.unlikely.*) *(.text.unlikely .text.*_unlikely .text.unlikely.*)
*(.text.exit .text.exit.*) *(.text.exit .text.exit.*)
*(.text.startup .text.startup.*) *(.text.startup .text.startup.*)
*(.text.hot .text.hot.*) *(.text.hot .text.hot.*)
*(.text .stub .text.* .gnu.linkonce.t.*) *(.text .stub .text.* .gnu.linkonce.t.*)
.text 0x0000000000400078 0x16c tmp/arm64-darwin.macho-fold.o .text 0x0000000000400078 0x158 tmp/arm64-darwin.macho-fold.o
0x0000000000400078 _start 0x0000000000400078 _start
0x0000000000400130 spin 0x000000000040012c spin
0x0000000000400134 exit 0x0000000000400130 exit
0x000000000040013c read 0x0000000000400138 read
0x0000000000400148 write 0x0000000000400144 write
0x0000000000400154 open 0x0000000000400150 open
0x0000000000400170 close 0x000000000040015c close
0x000000000040017c brk 0x0000000000400168 brk
0x0000000000400188 munmap 0x0000000000400174 munmap
0x0000000000400194 mprotect 0x0000000000400180 mprotect
0x00000000004001a0 mmap 0x000000000040018c mmap
0x00000000004001ac pread 0x0000000000400198 pread
0x00000000004001b8 bswap 0x00000000004001a4 bswap
.text 0x00000000004001e4 0xe78 tmp/arm64-darwin.macho-main.o .text 0x00000000004001d0 0xea4 tmp/arm64-darwin.macho-main.o
0x00000000004008ac do_xmap 0x0000000000400898 do_xmap
0x0000000000400da4 upx_main 0x0000000000400dbc upx_main
*(.gnu.warning) *(.gnu.warning)
.fini .fini
*(SORT(.fini)) *(SORT(.fini))
0x000000000040105c PROVIDE (__etext, .) 0x0000000000401074 PROVIDE (__etext, .)
0x000000000040105c PROVIDE (_etext, .) 0x0000000000401074 PROVIDE (_etext, .)
0x000000000040105c PROVIDE (etext, .) 0x0000000000401074 PROVIDE (etext, .)
.rodata .rodata
*(.rodata .rodata.* .gnu.linkonce.r.*) *(.rodata .rodata.* .gnu.linkonce.r.*)
@@ -107,9 +107,9 @@ LOAD tmp/arm64-darwin.macho-main.o
.eh_frame_hdr .eh_frame_hdr
*(.eh_frame_hdr) *(.eh_frame_hdr)
.eh_frame 0x0000000000401060 0x1c8 .eh_frame 0x0000000000401078 0x1c8
*(.eh_frame) *(.eh_frame)
.eh_frame 0x0000000000401060 0x1c8 tmp/arm64-darwin.macho-main.o .eh_frame 0x0000000000401078 0x1c8 tmp/arm64-darwin.macho-main.o
0x1b8 (size before relaxing) 0x1b8 (size before relaxing)
.gcc_except_table .gcc_except_table
@@ -117,8 +117,8 @@ LOAD tmp/arm64-darwin.macho-main.o
.exception_ranges .exception_ranges
*(.exception_ranges .exception_ranges*) *(.exception_ranges .exception_ranges*)
0x0000000000401228 . = (ALIGN (0x10000) - ((0x10000 - .) & 0xffff)) 0x0000000000401240 . = (ALIGN (0x10000) - ((0x10000 - .) & 0xffff))
0x0000000000411228 . = DATA_SEGMENT_ALIGN (0x10000, 0x1000) 0x0000000000411240 . = DATA_SEGMENT_ALIGN (0x10000, 0x1000)
.eh_frame .eh_frame
*(.eh_frame) *(.eh_frame)
@@ -136,22 +136,22 @@ LOAD tmp/arm64-darwin.macho-main.o
*(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tbss .tbss.* .gnu.linkonce.tb.*)
*(.tcommon) *(.tcommon)
.preinit_array 0x0000000000411228 0x0 .preinit_array 0x0000000000411240 0x0
0x0000000000411228 PROVIDE (__preinit_array_start, .) 0x0000000000411240 PROVIDE (__preinit_array_start, .)
*(.preinit_array) *(.preinit_array)
0x0000000000411228 PROVIDE (__preinit_array_end, .) 0x0000000000411240 PROVIDE (__preinit_array_end, .)
.init_array 0x0000000000411228 0x0 .init_array 0x0000000000411240 0x0
0x0000000000411228 PROVIDE (__init_array_start, .) 0x0000000000411240 PROVIDE (__init_array_start, .)
*(SORT(.init_array.*)) *(SORT(.init_array.*))
*(.init_array) *(.init_array)
0x0000000000411228 PROVIDE (__init_array_end, .) 0x0000000000411240 PROVIDE (__init_array_end, .)
.fini_array 0x0000000000411228 0x0 .fini_array 0x0000000000411240 0x0
0x0000000000411228 PROVIDE (__fini_array_start, .) 0x0000000000411240 PROVIDE (__fini_array_start, .)
*(SORT(.fini_array.*)) *(SORT(.fini_array.*))
*(.fini_array) *(.fini_array)
0x0000000000411228 PROVIDE (__fini_array_end, .) 0x0000000000411240 PROVIDE (__fini_array_end, .)
.ctors .ctors
*crtbegin.o(.ctors) *crtbegin.o(.ctors)
@@ -180,43 +180,43 @@ LOAD tmp/arm64-darwin.macho-main.o
.got .got
*(.got) *(.got)
*(.igot) *(.igot)
0x0000000000411228 . = DATA_SEGMENT_RELRO_END (., 0x18) 0x0000000000411240 . = DATA_SEGMENT_RELRO_END (., 0x18)
.got.plt 0x0000000000411228 0x0 .got.plt 0x0000000000411240 0x0
*(.got.plt) *(.got.plt)
*(.igot.plt) *(.igot.plt)
.igot.plt 0x0000000000411228 0x0 tmp/arm64-darwin.macho-fold.o .igot.plt 0x0000000000411240 0x0 tmp/arm64-darwin.macho-fold.o
.data 0x0000000000411228 0x0 .data 0x0000000000411240 0x0
0x0000000000411228 PROVIDE (__data_start, .) 0x0000000000411240 PROVIDE (__data_start, .)
*(.data .data.* .gnu.linkonce.d.*) *(.data .data.* .gnu.linkonce.d.*)
.data 0x0000000000411228 0x0 tmp/arm64-darwin.macho-fold.o .data 0x0000000000411240 0x0 tmp/arm64-darwin.macho-fold.o
.data 0x0000000000411228 0x0 tmp/arm64-darwin.macho-main.o .data 0x0000000000411240 0x0 tmp/arm64-darwin.macho-main.o
.data1 .data1
*(.data1) *(.data1)
0x0000000000411228 _edata = . 0x0000000000411240 _edata = .
0x0000000000411228 PROVIDE (edata, .) 0x0000000000411240 PROVIDE (edata, .)
0x0000000000411228 . = . 0x0000000000411240 . = .
0x0000000000411228 __bss_start = . 0x0000000000411240 __bss_start = .
0x0000000000411228 __bss_start__ = . 0x0000000000411240 __bss_start__ = .
.bss 0x0000000000411228 0x0 .bss 0x0000000000411240 0x0
*(.dynbss) *(.dynbss)
*(.bss .bss.* .gnu.linkonce.b.*) *(.bss .bss.* .gnu.linkonce.b.*)
.bss 0x0000000000411228 0x0 tmp/arm64-darwin.macho-fold.o .bss 0x0000000000411240 0x0 tmp/arm64-darwin.macho-fold.o
.bss 0x0000000000411228 0x0 tmp/arm64-darwin.macho-main.o .bss 0x0000000000411240 0x0 tmp/arm64-darwin.macho-main.o
*(COMMON) *(COMMON)
0x0000000000411228 . = ALIGN ((. != 0x0)?0x8:0x1) 0x0000000000411240 . = ALIGN ((. != 0x0)?0x8:0x1)
0x0000000000411228 _bss_end__ = . 0x0000000000411240 _bss_end__ = .
0x0000000000411228 __bss_end__ = . 0x0000000000411240 __bss_end__ = .
0x0000000000411228 . = ALIGN (0x8) 0x0000000000411240 . = ALIGN (0x8)
0x0000000000411228 . = SEGMENT_START ("ldata-segment", .) 0x0000000000411240 . = SEGMENT_START ("ldata-segment", .)
0x0000000000411228 . = ALIGN (0x8) 0x0000000000411240 . = ALIGN (0x8)
0x0000000000411228 __end__ = . 0x0000000000411240 __end__ = .
0x0000000000411228 _end = . 0x0000000000411240 _end = .
0x0000000000411228 PROVIDE (end, .) 0x0000000000411240 PROVIDE (end, .)
0x0000000000411228 . = DATA_SEGMENT_END (.) 0x0000000000411240 . = DATA_SEGMENT_END (.)
.stab .stab
*(.stab) *(.stab)