From e06a390771bd0eed3582d3a75e0a1ed7c43d75ed Mon Sep 17 00:00:00 2001 From: John Reiser Date: Sun, 16 Jul 2006 19:01:17 -0700 Subject: [PATCH] PackLinuxElf32ppc works (except lzma) --- src/linker.cpp | 4 +- src/stub/powerpc-linux.elf-entry.h | 415 ++++++++++++----------- src/stub/powerpc-linux.elf-fold.h | 223 ++++++------ src/stub/src/arch/powerpc/32/bxx.S | 2 +- src/stub/src/arch/powerpc/32/nrv2b_d.S | 10 +- src/stub/src/arch/powerpc/32/nrv2e_d.S | 10 +- src/stub/src/arch/powerpc/32/ppc_regs.h | 46 +++ src/stub/src/powerpc-darwin.macho-fold.S | 2 +- src/stub/src/powerpc-linux.elf-entry.S | 5 +- src/stub/src/powerpc-linux.elf-fold.S | 19 +- src/stub/src/powerpc-linux.elf-main.c | 4 +- 11 files changed, 396 insertions(+), 344 deletions(-) create mode 100644 src/stub/src/arch/powerpc/32/ppc_regs.h diff --git a/src/linker.cpp b/src/linker.cpp index a78a544d..ff81809b 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -842,7 +842,7 @@ void ElfLinkerPpc32::relocate1(Relocation *rel, upx_byte *location, } // FIXME: displacment overflow? set_be32(location, (0xfc000003 & get_be32(location)) + - (0x03fffffc & (rel->add + value))); + (0x03fffffc & value)); } else if (strcmp(type, "14") == 0) { if (3& value) { @@ -851,7 +851,7 @@ void ElfLinkerPpc32::relocate1(Relocation *rel, upx_byte *location, } // FIXME: displacment overflow? set_be32(location, (0xffff0003 & get_be32(location)) + - (0x0000fffc & (rel->add + value))); + (0x0000fffc & value)); } else super::relocate1(rel, location, value, type); diff --git a/src/stub/powerpc-linux.elf-entry.h b/src/stub/powerpc-linux.elf-entry.h index cb19eb05..3050e9fb 100644 --- a/src/stub/powerpc-linux.elf-entry.h +++ b/src/stub/powerpc-linux.elf-entry.h @@ -1,4 +1,4 @@ -/* powerpc-linux.elf-entry.h -- created from powerpc-linux.elf-entry.bin, 3251 (0xcb3) bytes +/* powerpc-linux.elf-entry.h -- created from powerpc-linux.elf-entry.bin, 3279 (0xccf) bytes This file is part of the UPX executable compressor. @@ -27,213 +27,214 @@ */ -#define LINUX_ELFPPC32_LOADER_SIZE 3251 -#define LINUX_ELFPPC32_LOADER_ADLER32 0xbb8d8b77 -#define LINUX_ELFPPC32_LOADER_CRC32 0xf2bf619c +#define LINUX_ELFPPC32_LOADER_SIZE 3279 +#define LINUX_ELFPPC32_LOADER_ADLER32 0x58e8917b +#define LINUX_ELFPPC32_LOADER_CRC32 0x99385f7d -unsigned char linux_elfppc32_loader[3251] = { +unsigned char linux_elfppc32_loader[3279] = { 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */ - 0, 0, 3,144, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */ - 0, 15, 0, 12, 72, 0, 0,117,124, 0, 41,236,144,166, 0, 0, /* 0x 30 */ -124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, /* 0x 40 */ - 56,165,255,255, 57, 64,255,255,125,168, 2,166, 72, 0, 1, 12, /* 0x 50 */ - 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64, /* 0x 60 */ -125, 41, 72, 20, 97, 41, 0, 1, 78,128, 0, 32,141, 3, 0, 1, /* 0x 70 */ -157, 5, 0, 1,124, 9, 0, 64,125, 41, 74, 20, 65,162,255,213, /* 0x 80 */ - 65,129,255,236, 56,224, 0, 1, 72, 0, 0, 20, 56,231,255,255, /* 0x 90 */ -125, 41, 72, 21, 65,162,255,189,124,231, 57, 20,125, 41, 72, 21, /* 0x a0 */ - 65,162,255,177,124,231, 57, 20,124, 9, 0, 64,125, 41, 74, 20, /* 0x b0 */ - 65,162,255,161, 65,160,255,216, 57, 0, 0, 0, 52,231,255,253, /* 0x c0 */ - 84,231, 64, 46, 65,128, 0, 32,140, 67, 0, 1,124,234, 16,249, /* 0x d0 */ -125, 74, 14,112, 65,130, 0, 0,112, 66, 0, 1, 65,162, 0, 80, /* 0x e0 */ - 72, 0, 0, 20,124, 9, 0, 64,125, 41, 74, 20, 65,162,255,101, /* 0x f0 */ - 65,161, 0, 60, 57, 0, 0, 1,124, 9, 0, 64,125, 41, 74, 20, /* 0x 100 */ - 65,162,255, 81, 65,161, 0, 40,125, 41, 72, 21, 65,162,255, 69, /* 0x 110 */ -125, 8, 65, 20,124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 53, /* 0x 120 */ - 65,160,255,232, 57, 8, 0, 2, 72, 0, 0, 16,125, 41, 72, 21, /* 0x 130 */ - 65,162,255, 33,125, 8, 65, 20, 32,234,250,255, 57, 8, 0, 2, /* 0x 140 */ -125, 8, 1,148,124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1, /* 0x 150 */ -157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,124, 7, 41,236, /* 0x 160 */ -124, 7, 26, 44, 75,255,255, 16,124, 0, 41,236,144,166, 0, 0, /* 0x 170 */ -124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, /* 0x 180 */ - 56,165,255,255, 57, 64,255,255,125,168, 2,166, 72, 0, 0,180, /* 0x 190 */ -124, 9, 0, 64,125, 41, 72, 20, 76,162, 0, 32, 57, 32, 0, 1, /* 0x 1a0 */ -125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64,125, 41, 73, 20, /* 0x 1b0 */ - 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1, 75,255,255,213, /* 0x 1c0 */ - 65,129,255,244, 56,224, 0, 1, 75,255,255,201,124,231, 57, 21, /* 0x 1d0 */ - 75,255,255,193, 65,160,255,244, 52,231,255,253, 57, 0, 0, 0, /* 0x 1e0 */ - 65,128, 0, 20,140, 67, 0, 1, 84,231, 64, 46,124,234, 16,249, /* 0x 1f0 */ - 65,130, 0, 0, 75,255,255,157,125, 8, 65, 21, 75,255,255,149, /* 0x 200 */ -125, 8, 65, 21, 56,224, 0, 1, 64,130, 0, 28, 56,224, 0, 3, /* 0x 210 */ - 57, 0, 0, 1, 75,255,255,125,125, 8, 65, 21, 75,255,255,117, /* 0x 220 */ - 65,160,255,244, 32, 74,242,255,125, 8, 57, 20,124,234, 42, 20, /* 0x 230 */ -125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, /* 0x 240 */ - 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, /* 0x 250 */ -128, 6, 0, 0,125,168, 3,166, 56,165, 0, 1, 56, 99, 0, 1, /* 0x 260 */ -124,160, 40, 80,124,100, 24, 80,144,166, 0, 0, 78,128, 0, 32, /* 0x 270 */ - 72, 0, 0, 1, 80, 82, 79, 84, 95, 69, 88, 69, 67,124, 80, 82, /* 0x 280 */ - 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105,108,101,100, 46, /* 0x 290 */ - 10, 0, 0, 0, 56,160, 0, 30,124,136, 2,166, 56, 96, 0, 2, /* 0x 2a0 */ - 56, 0, 0, 4, 68, 0, 0, 2, 56, 96, 0,127, 56, 0, 0, 1, /* 0x 2b0 */ - 68, 0, 0, 2,127,200, 2,166, 57, 0, 0, 0, 56,224,255,255, /* 0x 2c0 */ -128,126, 0, 4, 56,192, 0, 50, 56,160, 0, 7, 56,128, 16, 0, /* 0x 2d0 */ -124, 99,242, 20, 56, 0, 0, 90, 56, 99, 16, 11, 84, 99, 0, 38, /* 0x 2e0 */ - 68, 0, 0, 2, 65,131, 0, 32,127,233, 3,166,136,254, 0, 8, /* 0x 2f0 */ - 56,193, 0,124,124,101, 27,120,124,104, 3,166,128,158, 0, 4, /* 0x 300 */ - 56,126, 0, 12, 78,128, 4, 32,148, 33,255,128,188, 65, 0, 4, /* 0x 310 */ -127,232, 2,166, 75,255,255,161, 0, 46,115,121,109,116, 97, 98, /* 0x 320 */ - 0, 46,115,116,114,116, 97, 98, 0, 46,115,104,115,116,114,116, /* 0x 330 */ - 97, 98, 0, 46,114,101,108, 97, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x 340 */ - 0, 78, 82, 86, 95, 67, 79, 77, 77, 79, 78, 0, 46,114,101,108, /* 0x 350 */ - 97, 78, 82, 86, 50, 69, 0, 46,114,101,108, 97, 78, 82, 86, 50, /* 0x 360 */ - 66, 0, 46,114,101,108, 97, 69, 76, 70, 77, 65, 73, 78, 89, 0, /* 0x 370 */ - 46,114,101,108, 97, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, /* 0x 380 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 390 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 3a0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, /* 0x 3b0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, /* 0x 3c0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x 3d0 */ - 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 3e0 */ - 0, 0, 6,112, 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 1, /* 0x 3f0 */ - 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 41, 0, 0, 0, 1, /* 0x 400 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, /* 0x 410 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x 420 */ - 0, 0, 0, 57, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 430 */ - 0, 0, 0, 56, 0, 0, 1, 64, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 440 */ - 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, /* 0x 450 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,124, 0, 0, 0, 12, /* 0x 460 */ - 0, 0, 0, 13, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 12, /* 0x 470 */ - 0, 0, 0, 68, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 480 */ - 0, 0, 1,120, 0, 0, 0,232, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 490 */ - 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 4, /* 0x 4a0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,136, 0, 0, 0, 12, /* 0x 4b0 */ - 0, 0, 0, 13, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, /* 0x 4c0 */ - 0, 0, 0, 79, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4d0 */ - 0, 0, 2, 96, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4e0 */ - 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 4, /* 0x 4f0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,148, 0, 0, 0, 12, /* 0x 500 */ - 0, 0, 0, 13, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, /* 0x 510 */ - 0, 0, 0, 93, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 520 */ - 0, 0, 2,164, 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 530 */ - 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 4, /* 0x 540 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,160, 0, 0, 0, 12, /* 0x 550 */ - 0, 0, 0, 13, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 12, /* 0x 560 */ - 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 570 */ - 0, 0, 3, 40, 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 580 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, /* 0x 590 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,232, 0, 0, 0,128, /* 0x 5a0 */ - 0, 0, 0, 14, 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 16, /* 0x 5b0 */ - 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 5c0 */ - 0, 0, 6,104, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 5d0 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 5e0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 5f0 */ - 0, 0, 0, 0, 3, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 600 */ - 0, 0, 0, 0, 3, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 610 */ - 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 620 */ - 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 630 */ - 0, 0, 0, 0, 3, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 640 */ - 0, 0, 0, 0, 3, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x 650 */ - 0, 0, 0, 0, 16, 0, 0, 1, 0, 95,115,116, 97,114,116, 0, /* 0x 660 */ - 0, 0, 0, 0, 0, 0, 2, 10, 0, 0, 0,116, 0, 0, 0,172, /* 0x 670 */ - 0, 0, 1, 11, 0, 0, 0, 0, 0, 0, 0,136, 0, 0, 1, 11, /* 0x 680 */ - 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 2, 10, 0, 0, 0, 0, /* 0x 690 */ - 0, 0, 0, 80, 0, 0, 1, 11, 0, 0, 0, 32, 10,116,109,112, /* 0x 6a0 */ - 47,112,111,119,101,114,112, 99, 45,108,105,110,117,120, 46,101, /* 0x 6b0 */ -108,102, 45,101,110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, /* 0x 6c0 */ - 32, 32,102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108, /* 0x 6d0 */ -102, 51, 50, 45,112,111,119,101,114,112, 99, 10, 10, 83,101, 99, /* 0x 6e0 */ -116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, /* 0x 6f0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, /* 0x 700 */ - 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, /* 0x 710 */ - 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, /* 0x 720 */ - 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, /* 0x 730 */ - 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, /* 0x 740 */ - 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x 750 */ - 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x 760 */ - 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, /* 0x 770 */ - 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x 780 */ - 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 67, /* 0x 790 */ - 79, 77, 77, 79, 78, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x 7a0 */ - 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x 7b0 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, /* 0x 7c0 */ - 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x 7d0 */ - 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, /* 0x 7e0 */ - 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x 7f0 */ - 48, 49, 52, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x 800 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x 810 */ - 51, 56, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x 820 */ - 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x 830 */ - 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 66, 32, 32, 32, /* 0x 840 */ - 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,101, 56, 32, 32, /* 0x 850 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x 860 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 55, 56, 32, 32, 50, 42, /* 0x 870 */ - 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x 880 */ - 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x 890 */ - 52, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, /* 0x 8a0 */ - 48, 48, 48, 48, 48, 48, 52, 52, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x 8b0 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x 8c0 */ - 48, 48, 48, 50, 54, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, /* 0x 8d0 */ - 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x 8e0 */ - 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 69, 76, 70, 77, /* 0x 8f0 */ - 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x 900 */ - 56, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x 910 */ - 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 97, 52, /* 0x 920 */ - 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x 930 */ - 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x 940 */ - 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, /* 0x 950 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x 960 */ - 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, /* 0x 970 */ - 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, /* 0x 980 */ - 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, /* 0x 990 */ - 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, /* 0x 9a0 */ - 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 9b0 */ - 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x 9c0 */ - 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, /* 0x 9d0 */ - 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x 9e0 */ - 32, 32,100, 32, 32, 78, 82, 86, 95, 67, 79, 77, 77, 79, 78, 9, /* 0x 9f0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 67, 79, 77, /* 0x a00 */ - 77, 79, 78, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x a10 */ - 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, /* 0x a20 */ - 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x a30 */ - 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, /* 0x a40 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, /* 0x a50 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, /* 0x a60 */ - 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, /* 0x a70 */ - 48, 48, 32, 95,115,116, 97,114,116, 10, 10, 10, 82, 69, 76, 79, /* 0x a80 */ - 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x a90 */ - 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, /* 0x aa0 */ - 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, /* 0x ab0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, /* 0x ac0 */ - 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, /* 0x ad0 */ - 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x ae0 */ - 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 55, 52, 10, /* 0x af0 */ - 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x b00 */ - 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, /* 0x b10 */ - 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x b20 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x b30 */ - 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 97, 99, 32, 82, 95, 80, /* 0x b40 */ - 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 69, /* 0x b50 */ - 76, 70, 77, 65, 73, 78, 89, 10, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x b60 */ - 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x b70 */ - 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x b80 */ - 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x b90 */ - 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, /* 0x ba0 */ - 48, 48, 56, 56, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, /* 0x bb0 */ - 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, /* 0x bc0 */ - 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x bd0 */ - 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, /* 0x be0 */ - 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, /* 0x bf0 */ - 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x c00 */ - 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 50, 48, 32, /* 0x c10 */ - 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, /* 0x c20 */ - 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 10, 10, 82, 69, 76, /* 0x c30 */ - 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x c40 */ - 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, /* 0x c50 */ - 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x c60 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x c70 */ - 32, 10, 48, 48, 48, 48, 48, 48, 53, 48, 32, 82, 95, 80, 80, 67, /* 0x c80 */ - 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, /* 0x c90 */ - 77, 65, 73, 78, 89, 43, 48,120, 48, 48, 48, 48, 48, 48, 50, 48, /* 0x ca0 */ - 10, 10, 10 /* 0x cb0 */ + 0, 0, 3,172, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */ + 0, 15, 0, 12, 72, 0, 0,125,124, 0, 41,236,125,168, 2,166, /* 0x 30 */ + 40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, /* 0x 40 */ + 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 50 */ + 57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 60 */ + 56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1, /* 0x 70 */ + 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64, /* 0x 80 */ +125, 41, 74, 20, 65,162,255,213, 65,129,255,236, 56,224, 0, 1, /* 0x 90 */ + 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,162,255,189, /* 0x a0 */ +124,231, 57, 20,125, 41, 72, 21, 65,162,255,177,124,231, 57, 20, /* 0x b0 */ +124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161, 65,160,255,216, /* 0x c0 */ + 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,128, 0, 32, /* 0x d0 */ +140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,130, 0, 0, /* 0x e0 */ +112, 66, 0, 1, 65,162, 0, 80, 72, 0, 0, 20,124, 9, 0, 64, /* 0x f0 */ +125, 41, 74, 20, 65,162,255,101, 65,161, 0, 60, 57, 0, 0, 1, /* 0x 100 */ +124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 81, 65,161, 0, 40, /* 0x 110 */ +125, 41, 72, 21, 65,162,255, 69,125, 8, 65, 20,124, 9, 0, 64, /* 0x 120 */ +125, 41, 74, 20, 65,162,255, 53, 65,160,255,232, 57, 8, 0, 2, /* 0x 130 */ + 72, 0, 0, 16,125, 41, 72, 21, 65,162,255, 33,125, 8, 65, 20, /* 0x 140 */ + 32,234,250,255, 57, 8, 0, 2,125, 8, 1,148,124,234, 42, 20, /* 0x 150 */ +125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, /* 0x 160 */ + 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, 75,255,255, 16, /* 0x 170 */ +124, 0, 41,236,125,168, 2,166, 40, 7, 0, 2, 64,130, 0,228, /* 0x 180 */ +144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0, /* 0x 190 */ + 56, 99,255,255, 56,165,255,255, 57, 64,255,255, 72, 0, 0,180, /* 0x 1a0 */ +124, 9, 0, 64,125, 41, 72, 20, 76,162, 0, 32, 57, 32, 0, 1, /* 0x 1b0 */ +125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64,125, 41, 73, 20, /* 0x 1c0 */ + 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1, 75,255,255,213, /* 0x 1d0 */ + 65,129,255,244, 56,224, 0, 1, 75,255,255,201,124,231, 57, 21, /* 0x 1e0 */ + 75,255,255,193, 65,160,255,244, 52,231,255,253, 57, 0, 0, 0, /* 0x 1f0 */ + 65,128, 0, 20,140, 67, 0, 1, 84,231, 64, 46,124,234, 16,249, /* 0x 200 */ + 65,130, 0, 0, 75,255,255,157,125, 8, 65, 21, 75,255,255,149, /* 0x 210 */ +125, 8, 65, 21, 56,224, 0, 1, 64,130, 0, 28, 56,224, 0, 3, /* 0x 220 */ + 57, 0, 0, 1, 75,255,255,125,125, 8, 65, 21, 75,255,255,117, /* 0x 230 */ + 65,160,255,244, 32, 74,242,255,125, 8, 57, 20,124,234, 42, 20, /* 0x 240 */ +125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, /* 0x 250 */ + 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, /* 0x 260 */ +128, 6, 0, 0,125,168, 3,166, 56,165, 0, 1, 56, 99, 0, 1, /* 0x 270 */ +124,160, 40, 80,124,100, 24, 80,144,166, 0, 0, 78,128, 0, 32, /* 0x 280 */ + 72, 0, 0, 1, 80, 82, 79, 84, 95, 69, 88, 69, 67,124, 80, 82, /* 0x 290 */ + 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105,108,101,100, 46, /* 0x 2a0 */ + 10, 0, 0, 0, 56,160, 0, 30,124,136, 2,166, 56, 96, 0, 2, /* 0x 2b0 */ + 56, 0, 0, 4, 68, 0, 0, 2, 56, 96, 0,127, 56, 0, 0, 1, /* 0x 2c0 */ + 68, 0, 0, 2,127,200, 2,166, 57, 0, 0, 0, 56,224,255,255, /* 0x 2d0 */ +128,126, 0, 4, 56,192, 0, 50, 56,160, 0, 7, 56,128, 16, 0, /* 0x 2e0 */ +124, 99,242, 20, 56, 0, 0, 90, 56, 99, 16, 11, 84, 99, 0, 38, /* 0x 2f0 */ + 68, 0, 0, 2, 65,131, 0, 32,127,233, 3,166,128, 30, 0, 0, /* 0x 300 */ +136,254, 0, 8, 56,193, 0,124,144, 1, 0,124,124,101, 27,120, /* 0x 310 */ +124,104, 3,166,128,158, 0, 4, 56,126, 0, 12, 78,128, 4, 32, /* 0x 320 */ +124,128, 0, 8,148, 33,255,128,188, 65, 0, 4,127,232, 2,166, /* 0x 330 */ + 75,255,255,149, 0, 46,115,121,109,116, 97, 98, 0, 46,115,116, /* 0x 340 */ +114,116, 97, 98, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46, /* 0x 350 */ +114,101,108, 97, 69, 76, 70, 77, 65, 73, 78, 88, 0, 78, 82, 86, /* 0x 360 */ + 95, 67, 79, 77, 77, 79, 78, 0, 46,114,101,108, 97, 78, 82, 86, /* 0x 370 */ + 50, 69, 0, 46,114,101,108, 97, 78, 82, 86, 50, 66, 0, 46,114, /* 0x 380 */ +101,108, 97, 69, 76, 70, 77, 65, 73, 78, 89, 0, 46,114,101,108, /* 0x 390 */ + 97, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, 0, 0, 0, 0, /* 0x 3a0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 3b0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 3c0 */ + 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x 3d0 */ + 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x 3e0 */ + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 27, /* 0x 3f0 */ + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,140, /* 0x 400 */ + 0, 0, 0, 12, 0, 0, 0, 13, 0, 0, 0, 1, 0, 0, 0, 4, /* 0x 410 */ + 0, 0, 0, 12, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x 420 */ + 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 430 */ + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 57, /* 0x 440 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, /* 0x 450 */ + 0, 0, 1, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, /* 0x 460 */ + 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x 470 */ + 0, 0, 0, 0, 0, 0, 6,152, 0, 0, 0, 12, 0, 0, 0, 13, /* 0x 480 */ + 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 68, /* 0x 490 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,128, /* 0x 4a0 */ + 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, /* 0x 4b0 */ + 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x 4c0 */ + 0, 0, 0, 0, 0, 0, 6,164, 0, 0, 0, 12, 0, 0, 0, 13, /* 0x 4d0 */ + 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 79, /* 0x 4e0 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,112, /* 0x 4f0 */ + 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, /* 0x 500 */ + 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x 510 */ + 0, 0, 0, 0, 0, 0, 6,176, 0, 0, 0, 12, 0, 0, 0, 13, /* 0x 520 */ + 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 93, /* 0x 530 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,180, /* 0x 540 */ + 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, /* 0x 550 */ + 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x 560 */ + 0, 0, 0, 0, 0, 0, 6,188, 0, 0, 0, 12, 0, 0, 0, 13, /* 0x 570 */ + 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 17, /* 0x 580 */ + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 68, /* 0x 590 */ + 0, 0, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x 5a0 */ + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, /* 0x 5b0 */ + 0, 0, 0, 0, 0, 0, 6, 4, 0, 0, 0,128, 0, 0, 0, 14, /* 0x 5c0 */ + 0, 0, 0, 7, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, /* 0x 5d0 */ + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,132, /* 0x 5e0 */ + 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x 5f0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 600 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 610 */ + 3, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 620 */ + 3, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 630 */ + 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 640 */ + 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 650 */ + 3, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 660 */ + 3, 0, 0, 6, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 670 */ + 16, 0, 0, 1, 0, 95,115,116, 97,114,116, 0, 0, 0, 0, 0, /* 0x 680 */ + 0, 0, 2, 10, 0, 0, 0,124, 0, 0, 0,180, 0, 0, 1, 11, /* 0x 690 */ + 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 1, 11, 0, 0, 0, 0, /* 0x 6a0 */ + 0, 0, 0, 32, 0, 0, 2, 10, 0, 0, 0, 0, 0, 0, 0, 80, /* 0x 6b0 */ + 0, 0, 1, 11, 0, 0, 0, 32, 10,116,109,112, 47,112,111,119, /* 0x 6c0 */ +101,114,112, 99, 45,108,105,110,117,120, 46,101,108,102, 45,101, /* 0x 6d0 */ +110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32,102,105, /* 0x 6e0 */ +108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, 50, 45, /* 0x 6f0 */ +112,111,119,101,114,112, 99, 10, 10, 83,101, 99,116,105,111,110, /* 0x 700 */ +115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, /* 0x 710 */ + 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, /* 0x 720 */ + 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, /* 0x 730 */ + 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103, /* 0x 740 */ +110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, /* 0x 750 */ + 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x 760 */ + 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x 770 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, /* 0x 780 */ + 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x 790 */ + 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x 7a0 */ + 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 67, 79, 77, 77, 79, /* 0x 7b0 */ + 78, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x 7c0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x 7d0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, 32, 50, 42, 42, /* 0x 7e0 */ + 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, /* 0x 7f0 */ + 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, 32, /* 0x 800 */ + 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 52, 56, /* 0x 810 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x 820 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, 32, /* 0x 830 */ + 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x 840 */ + 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x 850 */ + 32, 32, 51, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, /* 0x 860 */ + 32, 32, 48, 48, 48, 48, 48, 48,102, 48, 32, 32, 48, 48, 48, 48, /* 0x 870 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x 880 */ + 48, 48, 48, 48, 48, 49, 56, 48, 32, 32, 50, 42, 42, 50, 32, 32, /* 0x 890 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x 8a0 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 69, 76, /* 0x 8b0 */ + 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x 8c0 */ + 48, 48, 52, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x 8d0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, /* 0x 8e0 */ + 55, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x 8f0 */ + 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x 900 */ + 78, 76, 89, 10, 32, 32, 53, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x 910 */ + 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 57, 48, 32, 32, /* 0x 920 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x 930 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 98, 52, 32, 32, 50, 42, /* 0x 940 */ + 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x 950 */ + 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, /* 0x 960 */ + 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, /* 0x 970 */ + 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, /* 0x 980 */ + 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, /* 0x 990 */ + 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 9a0 */ + 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x 9b0 */ + 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, /* 0x 9c0 */ + 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x 9d0 */ + 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, /* 0x 9e0 */ + 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, /* 0x 9f0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x a00 */ + 32, 78, 82, 86, 95, 67, 79, 77, 77, 79, 78, 9, 48, 48, 48, 48, /* 0x a10 */ + 48, 48, 48, 48, 32, 78, 82, 86, 95, 67, 79, 77, 77, 79, 78, 10, /* 0x a20 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x a30 */ + 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x a40 */ + 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x a50 */ + 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, /* 0x a60 */ + 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, /* 0x a70 */ + 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, /* 0x a80 */ + 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95, /* 0x a90 */ +115,116, 97,114,116, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x aa0 */ + 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x ab0 */ + 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x ac0 */ + 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x ad0 */ + 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, /* 0x ae0 */ + 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, /* 0x af0 */ + 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x b00 */ + 43, 48,120, 48, 48, 48, 48, 48, 48, 55, 99, 10, 10, 10, 82, 69, /* 0x b10 */ + 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x b20 */ + 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, /* 0x b30 */ + 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x b40 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, /* 0x b50 */ + 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, /* 0x b60 */ + 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, /* 0x b70 */ + 73, 78, 89, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x b80 */ + 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, /* 0x b90 */ + 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x ba0 */ + 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x bb0 */ + 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 57, 48, /* 0x bc0 */ + 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, /* 0x bd0 */ + 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 10, 10, 82, 69, /* 0x be0 */ + 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x bf0 */ + 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, /* 0x c00 */ + 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x c10 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x c20 */ + 69, 32, 10, 48, 48, 48, 48, 48, 48, 50, 48, 32, 82, 95, 80, 80, /* 0x c30 */ + 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, /* 0x c40 */ + 70, 77, 65, 73, 78, 90, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x c50 */ + 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x c60 */ + 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, /* 0x c70 */ + 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, /* 0x c80 */ + 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, /* 0x c90 */ + 48, 48, 48, 48, 53, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, /* 0x ca0 */ + 49, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x cb0 */ + 89, 43, 48,120, 48, 48, 48, 48, 48, 48, 50, 48, 10, 10, 10 /* 0x cc0 */ }; diff --git a/src/stub/powerpc-linux.elf-fold.h b/src/stub/powerpc-linux.elf-fold.h index 42d9feb8..a1593f89 100644 --- a/src/stub/powerpc-linux.elf-fold.h +++ b/src/stub/powerpc-linux.elf-fold.h @@ -1,4 +1,4 @@ -/* powerpc-linux.elf-fold.h -- created from powerpc-linux.elf-fold.bin, 1936 (0x790) bytes +/* powerpc-linux.elf-fold.h -- created from powerpc-linux.elf-fold.bin, 1944 (0x798) bytes This file is part of the UPX executable compressor. @@ -27,17 +27,17 @@ */ -#define LINUX_ELFPPC32_FOLD_SIZE 1936 -#define LINUX_ELFPPC32_FOLD_ADLER32 0x1a2f7017 -#define LINUX_ELFPPC32_FOLD_CRC32 0xf69d4404 +#define LINUX_ELFPPC32_FOLD_SIZE 1944 +#define LINUX_ELFPPC32_FOLD_ADLER32 0x727175e2 +#define LINUX_ELFPPC32_FOLD_CRC32 0xe344893c -unsigned char linux_elfppc32_fold[1936] = { +unsigned char linux_elfppc32_fold[1944] = { 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 0, 2, 0, 20, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52, /* 0x 10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x 20 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0, /* 0x 30 */ - 0, 16, 0, 0, 0, 0, 7,144, 0, 0, 7,144, 0, 0, 0, 5, /* 0x 40 */ - 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,144, 0, 0, 0, 0, /* 0x 50 */ + 0, 16, 0, 0, 0, 0, 7,152, 0, 0, 7,152, 0, 0, 0, 5, /* 0x 40 */ + 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,152, 0, 0, 0, 0, /* 0x 50 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 60 */ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 72, 0, 0,125, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 80 */ @@ -49,108 +49,109 @@ unsigned char linux_elfppc32_fold[1936] = { 66, 0,255,240, 78,128, 0, 32,128, 73, 0, 0, 57, 41, 0, 4, /* 0x e0 */ 47,130, 0, 0, 64,158,255,244, 78,128, 0, 32,125, 8, 2,166, /* 0x f0 */ 129, 33, 0, 0, 75,255,255,229, 75,255,255,225,128,159,255,248, /* 0x 100 */ - 85, 30, 0, 38, 56,161,248, 0,127,231,251,120,124,100,248, 80, /* 0x 110 */ - 56, 33,247,240, 84,125, 0, 38,128,195, 0, 24, 72, 0, 5, 13, /* 0x 120 */ -124,127, 27,120,127,163,235,120,124,157,240, 80, 72, 0, 0, 81, /* 0x 130 */ -127,232, 3,166,184, 65, 8, 20,128, 33, 8, 16, 78,128, 0, 32, /* 0x 140 */ - 56, 0, 0, 90, 68, 0, 0, 2, 64,163, 0, 8, 56, 96,255,255, /* 0x 150 */ - 78,128, 0, 32, 56, 0, 0, 1, 75,255,255,236, 56, 0, 0, 3, /* 0x 160 */ - 75,255,255,228, 56, 0, 0, 5, 75,255,255,220, 56, 0, 0, 6, /* 0x 170 */ - 75,255,255,212, 56, 0, 0,125, 75,255,255,204, 56, 0, 0, 91, /* 0x 180 */ - 75,255,255,196, 56, 0, 0, 45, 75,255,255,188,124, 8, 2,166, /* 0x 190 */ -148, 33,255,240,144, 1, 0, 20,128, 3, 0, 0,129, 35, 0, 4, /* 0x 1a0 */ -127,128, 40, 64, 64,188, 0, 12, 56, 96, 0,127, 75,255,255,169, /* 0x 1b0 */ - 47,133, 0, 0, 65,158, 0, 28,124,169, 3,166,136, 9, 0, 0, /* 0x 1c0 */ - 57, 41, 0, 1,152, 4, 0, 0, 56,132, 0, 1, 66, 0,255,240, /* 0x 1d0 */ -128, 3, 0, 0,129, 35, 0, 4,124, 5, 0, 80,144, 3, 0, 0, /* 0x 1e0 */ -128, 1, 0, 20,125, 41, 42, 20,124, 8, 3,166, 56, 33, 0, 16, /* 0x 1f0 */ -145, 35, 0, 4, 78,128, 0, 32,124, 8, 2,166,148, 33,255,192, /* 0x 200 */ -144, 1, 0, 68,128, 4, 0, 0,191,129, 0, 48, 47,128, 0, 0, /* 0x 210 */ -124,159, 35,120,124,126, 27,120,124,188, 43,120,124,221, 51,120, /* 0x 220 */ - 65,158, 1, 36, 56,160, 0, 12,127,195,243,120, 56,129, 0, 16, /* 0x 230 */ - 75,255,255, 93,129, 33, 0, 16,128,161, 0, 20, 47,137, 0, 0, /* 0x 240 */ - 64,190, 0, 36, 60, 0, 33, 88, 96, 0, 80, 85,127,133, 0, 0, /* 0x 250 */ - 64,190, 0, 28,128, 30, 0, 0, 47,128, 0, 0, 65,190, 0,232, /* 0x 260 */ - 72, 0, 0, 12, 47,133, 0, 0, 64,190, 0, 12, 56, 96, 0,127, /* 0x 270 */ - 75,255,254,229,127, 5, 72, 64, 65,185,255,244,128, 31, 0, 0, /* 0x 280 */ -127,137, 0, 64, 65,189,255,232,128, 31, 0, 4, 64,152, 0,136, /* 0x 290 */ -124,164, 43,120,128,126, 0, 4,124, 5, 3,120, 56,193, 0, 32, /* 0x 2a0 */ -128,225, 0, 24,145, 33, 0, 32,127,136, 3,166, 78,128, 0, 33, /* 0x 2b0 */ - 47,131, 0, 0, 64,190,255,184,128,129, 0, 32,128, 1, 0, 16, /* 0x 2c0 */ -127,132, 0, 0, 64,190,255,168,136,193, 0, 25, 49, 61,255,255, /* 0x 2d0 */ -124, 9,233, 16,125, 38, 0,208, 85, 41, 15,254,125, 43, 0, 57, /* 0x 2e0 */ - 65,162, 0, 20,128,127, 0, 4,136,161, 0, 26,127,168, 3,166, /* 0x 2f0 */ - 78,128, 0, 33,128, 30, 0, 4,129, 97, 0, 20,129, 62, 0, 0, /* 0x 300 */ -124, 0, 90, 20,125, 43, 72, 80,144, 30, 0, 4,145, 62, 0, 0, /* 0x 310 */ - 72, 0, 0, 16,124, 4, 3,120,127,195,243,120, 75,255,254,113, /* 0x 320 */ -129, 97, 0, 16,129, 63, 0, 0,128, 31, 0, 4,125, 43, 72, 80, /* 0x 330 */ - 47,137, 0, 0,124, 0, 90, 20,144, 31, 0, 4,145, 63, 0, 0, /* 0x 340 */ - 75,255,254,224,128, 1, 0, 68,187,129, 0, 48,124, 8, 3,166, /* 0x 350 */ - 56, 33, 0, 64, 78,128, 0, 32, 44, 3, 0, 0, 77,130, 0, 32, /* 0x 360 */ - 48, 4,255,255,125, 96, 33, 16,128, 3, 0, 0,127,128, 32, 0, /* 0x 370 */ -104, 9, 0, 1, 33, 73, 0, 0,125, 42, 73, 20,125, 42, 88, 57, /* 0x 380 */ - 65,158, 0, 8, 65,162, 0, 16,144,163, 0, 4,144,131, 0, 0, /* 0x 390 */ - 78,128, 0, 32, 56, 99, 0, 8, 75,255,255,208,124, 8, 2,166, /* 0x 3a0 */ -148, 33,255,160,144, 1, 0,100,160, 3, 0, 16,161, 67, 0, 44, /* 0x 3b0 */ -125,128, 0, 38,129, 35, 0, 28,104, 0, 0, 3, 53, 74,255,255, /* 0x 3c0 */ -124, 0, 0,208,190, 65, 0, 40,127,163, 74, 20,124,121, 27,120, /* 0x 3d0 */ - 84, 3, 46,246,145,129, 0, 36,124,151, 35,120,124,178, 43,120, /* 0x 3e0 */ -124,211, 51,120,124,244, 59,120,125, 21, 67,120, 56, 99, 8, 34, /* 0x 3f0 */ -127,171,235,120, 59,224,255,255, 59,192, 0, 0, 65,128, 0, 68, /* 0x 400 */ - 57, 74, 0, 1,125, 73, 3,166,128, 11, 0, 0, 47,128, 0, 1, /* 0x 410 */ - 64,190, 0, 40,129, 43, 0, 8,127,137,248, 64, 64,156, 0, 8, /* 0x 420 */ -125, 63, 75,120,128, 11, 0, 20,124, 0, 74, 20,127,158, 0, 64, /* 0x 430 */ - 64,156, 0, 8,124, 30, 3,120, 57,107, 0, 32, 66, 0,255,204, /* 0x 440 */ - 87,255, 0, 38,125, 63,240, 80, 57, 41, 15,255, 85, 62, 0, 38, /* 0x 450 */ -124,102, 27,120,127,196,243,120,127,227,251,120, 56,160, 0, 0, /* 0x 460 */ - 56,224,255,255, 57, 0, 0, 0, 75,255,252,217,160, 25, 0, 44, /* 0x 470 */ - 58,192, 0, 0,127,150, 0, 0,124, 3,242, 20,144, 1, 0, 8, /* 0x 480 */ -127, 31, 24, 80, 64,156, 1,128, 46, 23, 0, 0, 65,146, 0, 40, /* 0x 490 */ -128, 29, 0, 0, 47,128, 0, 6, 64,190, 0, 28,128,189, 0, 8, /* 0x 4a0 */ -126, 99,155,120,124,165,194, 20, 56,128, 0, 3, 75,255,254,173, /* 0x 4b0 */ - 72, 0, 1, 64,128, 29, 0, 0, 47,128, 0, 1, 64,190, 1, 52, /* 0x 4c0 */ -128, 29, 0, 24,129, 93, 0, 8, 61, 32,115, 81, 84, 0, 22,250, /* 0x 4d0 */ - 97, 41, 98, 64,129,125, 0, 20,125, 41, 4, 48, 85, 94, 5, 62, /* 0x 4e0 */ - 48, 23,255,255,124,160,185, 16,128, 29, 0, 16, 85, 58, 7,126, /* 0x 4f0 */ -127,106, 90, 20, 84,165, 8, 60,127,254, 80, 80,144, 1, 0, 16, /* 0x 500 */ -145, 65, 0, 20,127,128,242, 20,127,255,194, 20,127,123,194, 20, /* 0x 510 */ -124,165,211,120, 65,146, 0, 12, 56,192, 0, 50, 72, 0, 0, 8, /* 0x 520 */ - 56,192, 0, 18, 64,146, 0, 12,126, 71,147,120, 72, 0, 0, 8, /* 0x 530 */ - 56,224,255,255,129, 29, 0, 4,127,227,251,120,125, 30, 64, 80, /* 0x 540 */ -127,132,227,120, 75,255,251,253,127,159, 24, 0, 64,158, 0,104, /* 0x 550 */ - 65,178, 0, 24,126,227,187,120, 56,129, 0, 16,126,133,163,120, /* 0x 560 */ -126,166,171,120, 75,255,252,149,115, 64, 0, 2,124, 28, 0,208, /* 0x 570 */ - 84, 30, 5, 62, 65,130, 0, 36, 47,158, 0, 0,125, 63,226, 20, /* 0x 580 */ - 65,158, 0, 24,127,201, 3,166, 56, 0, 0, 0,152, 9, 0, 0, /* 0x 590 */ - 57, 41, 0, 1, 66, 0,255,248, 65,178, 0, 36,127,227,251,120, /* 0x 5a0 */ -127,132,227,120,127, 69,211,120, 75,255,251,205, 47,131, 0, 0, /* 0x 5b0 */ - 65,190, 0, 12, 56, 96, 0,127, 75,255,251,157,124, 28,242, 20, /* 0x 5c0 */ -127,255, 2, 20,127,159,216, 64, 64,188, 0, 40,124,159,216, 80, /* 0x 5d0 */ -127, 69,211,120,127,227,251,120, 56,192, 0, 50, 56,224,255,255, /* 0x 5e0 */ - 57, 0, 0, 0, 75,255,251, 93,127,159, 24, 0, 64,190,255,200, /* 0x 5f0 */ -160, 25, 0, 44, 58,214, 0, 1,127,150, 0, 0, 59,189, 0, 32, /* 0x 600 */ - 75,255,254,132,128,121, 0, 24,128, 1, 0,100,129,129, 0, 36, /* 0x 610 */ -124, 99,194, 20,124, 8, 3,166,186, 65, 0, 40,125,128,129, 32, /* 0x 620 */ - 56, 33, 0, 96, 78,128, 0, 32,124, 8, 2,166,148, 33,255,192, /* 0x 630 */ -144, 1, 0, 68, 56,132,255,232, 56, 3, 0, 24,144, 1, 0, 12, /* 0x 640 */ -144,129, 0, 8,128, 3, 0, 24,191, 97, 0, 44,129, 97, 0, 8, /* 0x 650 */ -124,191, 43,120,129,129, 0, 12,124,229, 59,120, 56,192, 0, 0, /* 0x 660 */ - 56, 97, 0, 8, 56,129, 0, 16, 59,223, 0, 52,125, 61, 75,120, /* 0x 670 */ -124,251, 59,120,144, 1, 0, 16,125, 28, 67,120,145, 97, 0, 24, /* 0x 680 */ -145,129, 0, 28,147,225, 0, 20, 75,255,251,113,128,190, 0, 8, /* 0x 690 */ -127,163,235,120, 56,165, 0, 52, 56,128, 0, 3, 75,255,252,189, /* 0x 6a0 */ -160,191, 0, 44,127,163,235,120, 56,128, 0, 5, 75,255,252,173, /* 0x 6b0 */ -128,191, 0, 24,127,163,235,120, 56,128, 0, 9, 75,255,252,157, /* 0x 6c0 */ -127,103,219,120,127,136,227,120,127,227,251,120,127,166,235,120, /* 0x 6d0 */ - 56,129, 0, 24, 56,160, 0, 0, 75,255,252,197,160, 31, 0, 44, /* 0x 6e0 */ -124,124, 27,120, 59, 96, 0, 0,127,155, 0, 0, 64,156, 0,124, /* 0x 6f0 */ -128, 30, 0, 0, 59,123, 0, 1, 47,128, 0, 3, 56,128, 0, 0, /* 0x 700 */ - 56,160, 0, 0, 64,190, 0, 88,128,126, 0, 8, 75,255,250, 89, /* 0x 710 */ -124,125, 27,121,127,228,251,120, 56,160, 2, 0, 65,128, 0, 40, /* 0x 720 */ - 75,255,250, 61, 47,131, 2, 0, 56,128, 0, 0,127,227,251,120, /* 0x 730 */ -127,165,235,120, 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, /* 0x 740 */ - 65,190, 0, 12, 56, 96, 0,127, 75,255,250, 13, 75,255,252, 81, /* 0x 750 */ -124,124, 27,120,127,163,235,120, 75,255,250, 21,160, 31, 0, 44, /* 0x 760 */ - 59,222, 0, 32, 75,255,255,132,128, 1, 0, 68,127,131,227,120, /* 0x 770 */ -124, 8, 3,166,187, 97, 0, 44, 56, 33, 0, 64, 78,128, 0, 32 /* 0x 780 */ + 85, 30, 0, 38,127,231,251,120,127,164,248, 80, 56,161,248, 0, /* 0x 110 */ + 59,189,255,248, 56,132,255,140, 56,125, 0,116, 56, 33,247,240, /* 0x 120 */ +128,195, 0, 24, 72, 0, 5, 13,124,127, 27,120,127,163,235,120, /* 0x 130 */ +124,157,240, 80, 72, 0, 0, 81,127,232, 3,166,184, 65, 8, 20, /* 0x 140 */ +128, 33, 8, 16, 78,128, 0, 32, 56, 0, 0, 90, 68, 0, 0, 2, /* 0x 150 */ + 64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, /* 0x 160 */ + 75,255,255,236, 56, 0, 0, 3, 75,255,255,228, 56, 0, 0, 5, /* 0x 170 */ + 75,255,255,220, 56, 0, 0, 6, 75,255,255,212, 56, 0, 0,125, /* 0x 180 */ + 75,255,255,204, 56, 0, 0, 91, 75,255,255,196, 56, 0, 0, 45, /* 0x 190 */ + 75,255,255,188,124, 8, 2,166,148, 33,255,240,144, 1, 0, 20, /* 0x 1a0 */ +128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, 64,188, 0, 12, /* 0x 1b0 */ + 56, 96, 0,127, 75,255,255,169, 47,133, 0, 0, 65,158, 0, 28, /* 0x 1c0 */ +124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1,152, 4, 0, 0, /* 0x 1d0 */ + 56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0,129, 35, 0, 4, /* 0x 1e0 */ +124, 5, 0, 80,144, 3, 0, 0,128, 1, 0, 20,125, 41, 42, 20, /* 0x 1f0 */ +124, 8, 3,166, 56, 33, 0, 16,145, 35, 0, 4, 78,128, 0, 32, /* 0x 200 */ +124, 8, 2,166,148, 33,255,192,144, 1, 0, 68,128, 4, 0, 0, /* 0x 210 */ +191,129, 0, 48, 47,128, 0, 0,124,159, 35,120,124,126, 27,120, /* 0x 220 */ +124,188, 43,120,124,221, 51,120, 65,158, 1, 36, 56,160, 0, 12, /* 0x 230 */ +127,195,243,120, 56,129, 0, 16, 75,255,255, 93,129, 33, 0, 16, /* 0x 240 */ +128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, 60, 0, 33, 88, /* 0x 250 */ + 96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28,128, 30, 0, 0, /* 0x 260 */ + 47,128, 0, 0, 65,190, 0,232, 72, 0, 0, 12, 47,133, 0, 0, /* 0x 270 */ + 64,190, 0, 12, 56, 96, 0,127, 75,255,254,229,127, 5, 72, 64, /* 0x 280 */ + 65,185,255,244,128, 31, 0, 0,127,137, 0, 64, 65,189,255,232, /* 0x 290 */ +128, 31, 0, 4, 64,152, 0,136,124,164, 43,120,128,126, 0, 4, /* 0x 2a0 */ +124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24,145, 33, 0, 32, /* 0x 2b0 */ +127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0, 64,190,255,184, /* 0x 2c0 */ +128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0, 64,190,255,168, /* 0x 2d0 */ +136,193, 0, 25, 49, 61,255,255,124, 9,233, 16,125, 38, 0,208, /* 0x 2e0 */ + 85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4, /* 0x 2f0 */ +136,161, 0, 26,127,168, 3,166, 78,128, 0, 33,128, 30, 0, 4, /* 0x 300 */ +129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80, /* 0x 310 */ +144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120, /* 0x 320 */ +127,195,243,120, 75,255,254,113,129, 97, 0, 16,129, 63, 0, 0, /* 0x 330 */ +128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20, /* 0x 340 */ +144, 31, 0, 4,145, 63, 0, 0, 75,255,254,224,128, 1, 0, 68, /* 0x 350 */ +187,129, 0, 48,124, 8, 3,166, 56, 33, 0, 64, 78,128, 0, 32, /* 0x 360 */ + 44, 3, 0, 0, 77,130, 0, 32, 48, 4,255,255,125, 96, 33, 16, /* 0x 370 */ +128, 3, 0, 0,127,128, 32, 0,104, 9, 0, 1, 33, 73, 0, 0, /* 0x 380 */ +125, 42, 73, 20,125, 42, 88, 57, 65,158, 0, 8, 65,162, 0, 16, /* 0x 390 */ +144,163, 0, 4,144,131, 0, 0, 78,128, 0, 32, 56, 99, 0, 8, /* 0x 3a0 */ + 75,255,255,208,124, 8, 2,166,148, 33,255,160,144, 1, 0,100, /* 0x 3b0 */ +160, 3, 0, 16,161, 67, 0, 44,125,128, 0, 38,129, 35, 0, 28, /* 0x 3c0 */ +104, 0, 0, 3, 53, 74,255,255,124, 0, 0,208,190, 65, 0, 40, /* 0x 3d0 */ +127,163, 74, 20,124,121, 27,120, 84, 3, 46,246,145,129, 0, 36, /* 0x 3e0 */ +124,151, 35,120,124,178, 43,120,124,211, 51,120,124,244, 59,120, /* 0x 3f0 */ +125, 21, 67,120, 56, 99, 8, 34,127,171,235,120, 59,224,255,255, /* 0x 400 */ + 59,192, 0, 0, 65,128, 0, 68, 57, 74, 0, 1,125, 73, 3,166, /* 0x 410 */ +128, 11, 0, 0, 47,128, 0, 1, 64,190, 0, 40,129, 43, 0, 8, /* 0x 420 */ +127,137,248, 64, 64,156, 0, 8,125, 63, 75,120,128, 11, 0, 20, /* 0x 430 */ +124, 0, 74, 20,127,158, 0, 64, 64,156, 0, 8,124, 30, 3,120, /* 0x 440 */ + 57,107, 0, 32, 66, 0,255,204, 87,255, 0, 38,125, 63,240, 80, /* 0x 450 */ + 57, 41, 15,255, 85, 62, 0, 38,124,102, 27,120,127,196,243,120, /* 0x 460 */ +127,227,251,120, 56,160, 0, 0, 56,224,255,255, 57, 0, 0, 0, /* 0x 470 */ + 75,255,252,217,160, 25, 0, 44, 58,192, 0, 0,127,150, 0, 0, /* 0x 480 */ +124, 3,242, 20,144, 1, 0, 8,127, 31, 24, 80, 64,156, 1,128, /* 0x 490 */ + 46, 23, 0, 0, 65,146, 0, 40,128, 29, 0, 0, 47,128, 0, 6, /* 0x 4a0 */ + 64,190, 0, 28,128,189, 0, 8,126, 99,155,120,124,165,194, 20, /* 0x 4b0 */ + 56,128, 0, 3, 75,255,254,173, 72, 0, 1, 64,128, 29, 0, 0, /* 0x 4c0 */ + 47,128, 0, 1, 64,190, 1, 52,128, 29, 0, 24,129, 93, 0, 8, /* 0x 4d0 */ + 61, 32,115, 81, 84, 0, 22,250, 97, 41, 98, 64,129,125, 0, 20, /* 0x 4e0 */ +125, 41, 4, 48, 85, 94, 5, 62, 48, 23,255,255,124,160,185, 16, /* 0x 4f0 */ +128, 29, 0, 16, 85, 58, 7,126,127,106, 90, 20, 84,165, 8, 60, /* 0x 500 */ +127,254, 80, 80,144, 1, 0, 16,145, 65, 0, 20,127,128,242, 20, /* 0x 510 */ +127,255,194, 20,127,123,194, 20,124,165,211,120, 65,146, 0, 12, /* 0x 520 */ + 56,192, 0, 50, 72, 0, 0, 8, 56,192, 0, 18, 64,146, 0, 12, /* 0x 530 */ +126, 71,147,120, 72, 0, 0, 8, 56,224,255,255,129, 29, 0, 4, /* 0x 540 */ +127,227,251,120,125, 30, 64, 80,127,132,227,120, 75,255,251,253, /* 0x 550 */ +127,159, 24, 0, 64,158, 0,104, 65,178, 0, 24,126,227,187,120, /* 0x 560 */ + 56,129, 0, 16,126,133,163,120,126,166,171,120, 75,255,252,149, /* 0x 570 */ +115, 64, 0, 2,124, 28, 0,208, 84, 30, 5, 62, 65,130, 0, 36, /* 0x 580 */ + 47,158, 0, 0,125, 63,226, 20, 65,158, 0, 24,127,201, 3,166, /* 0x 590 */ + 56, 0, 0, 0,152, 9, 0, 0, 57, 41, 0, 1, 66, 0,255,248, /* 0x 5a0 */ + 65,178, 0, 36,127,227,251,120,127,132,227,120,127, 69,211,120, /* 0x 5b0 */ + 75,255,251,205, 47,131, 0, 0, 65,190, 0, 12, 56, 96, 0,127, /* 0x 5c0 */ + 75,255,251,157,124, 28,242, 20,127,255, 2, 20,127,159,216, 64, /* 0x 5d0 */ + 64,188, 0, 40,124,159,216, 80,127, 69,211,120,127,227,251,120, /* 0x 5e0 */ + 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, 75,255,251, 93, /* 0x 5f0 */ +127,159, 24, 0, 64,190,255,200,160, 25, 0, 44, 58,214, 0, 1, /* 0x 600 */ +127,150, 0, 0, 59,189, 0, 32, 75,255,254,132,128,121, 0, 24, /* 0x 610 */ +128, 1, 0,100,129,129, 0, 36,124, 99,194, 20,124, 8, 3,166, /* 0x 620 */ +186, 65, 0, 40,125,128,129, 32, 56, 33, 0, 96, 78,128, 0, 32, /* 0x 630 */ +124, 8, 2,166,148, 33,255,192,144, 1, 0, 68, 56,132,255,232, /* 0x 640 */ + 56, 3, 0, 24,144, 1, 0, 12,144,129, 0, 8,128, 3, 0, 24, /* 0x 650 */ +191, 97, 0, 44,129, 97, 0, 8,124,191, 43,120,129,129, 0, 12, /* 0x 660 */ +124,229, 59,120, 56,192, 0, 0, 56, 97, 0, 8, 56,129, 0, 16, /* 0x 670 */ + 59,223, 0, 52,125, 61, 75,120,124,251, 59,120,144, 1, 0, 16, /* 0x 680 */ +125, 28, 67,120,145, 97, 0, 24,145,129, 0, 28,147,225, 0, 20, /* 0x 690 */ + 75,255,251,113,128,190, 0, 8,127,163,235,120, 56,165, 0, 52, /* 0x 6a0 */ + 56,128, 0, 3, 75,255,252,189,160,191, 0, 44,127,163,235,120, /* 0x 6b0 */ + 56,128, 0, 5, 75,255,252,173,128,191, 0, 24,127,163,235,120, /* 0x 6c0 */ + 56,128, 0, 9, 75,255,252,157,127,103,219,120,127,136,227,120, /* 0x 6d0 */ +127,227,251,120,127,166,235,120, 56,129, 0, 24, 56,160, 0, 0, /* 0x 6e0 */ + 75,255,252,197,160, 31, 0, 44,124,124, 27,120, 59, 96, 0, 0, /* 0x 6f0 */ +127,155, 0, 0, 64,156, 0,124,128, 30, 0, 0, 59,123, 0, 1, /* 0x 700 */ + 47,128, 0, 3, 56,128, 0, 0, 56,160, 0, 0, 64,190, 0, 88, /* 0x 710 */ +128,126, 0, 8, 75,255,250, 89,124,125, 27,121,127,228,251,120, /* 0x 720 */ + 56,160, 2, 0, 65,128, 0, 40, 75,255,250, 61, 47,131, 2, 0, /* 0x 730 */ + 56,128, 0, 0,127,227,251,120,127,165,235,120, 56,192, 0, 0, /* 0x 740 */ + 56,224, 0, 0, 57, 0, 0, 0, 65,190, 0, 12, 56, 96, 0,127, /* 0x 750 */ + 75,255,250, 13, 75,255,252, 81,124,124, 27,120,127,163,235,120, /* 0x 760 */ + 75,255,250, 21,160, 31, 0, 44, 59,222, 0, 32, 75,255,255,132, /* 0x 770 */ +128, 1, 0, 68,127,131,227,120,124, 8, 3,166,187, 97, 0, 44, /* 0x 780 */ + 56, 33, 0, 64, 78,128, 0, 32 /* 0x 790 */ }; diff --git a/src/stub/src/arch/powerpc/32/bxx.S b/src/stub/src/arch/powerpc/32/bxx.S index 9ffcbcda..d17196e2 100644 --- a/src/stub/src/arch/powerpc/32/bxx.S +++ b/src/stub/src/arch/powerpc/32/bxx.S @@ -24,7 +24,7 @@ */ -#include "regs.h" +#include "ppc_regs.h" ppcbxx: # (*f_unf)(xo->buf, out_len, h.b_cto8, h.b_ftid); #define W_CTO 4 /* must match filteri/ppcbxx.h */ diff --git a/src/stub/src/arch/powerpc/32/nrv2b_d.S b/src/stub/src/arch/powerpc/32/nrv2b_d.S index 4bf17907..59acc56e 100644 --- a/src/stub/src/arch/powerpc/32/nrv2b_d.S +++ b/src/stub/src/arch/powerpc/32/nrv2b_d.S @@ -30,11 +30,11 @@ */ #define M_NRV2B_LE32 2 - rlwinm r0,meth,8,25,31 // .b_method (hi byte of meth) - cmpli cr0,r0,M_NRV2B_LE32 - bne cr0,not_nrv2b - dcbtst 0,dst // prime dcache for store + mflr t3 // return address + + cmpli cr0,meth,M_NRV2B_LE32 + bne cr0,not_nrv2b stw dst,0(ldst) // original dst add lsrc,lsrc,src // input eof @@ -44,8 +44,6 @@ addi src,src,-1 // prepare for 'lbzu' addi dst,dst,-1 // prepare for 'stbu' li disp,-1 // initial displacement - - mflr t3 // return address b bot_n2b #undef jnextb0y diff --git a/src/stub/src/arch/powerpc/32/nrv2e_d.S b/src/stub/src/arch/powerpc/32/nrv2e_d.S index fd63010a..1028191b 100644 --- a/src/stub/src/arch/powerpc/32/nrv2e_d.S +++ b/src/stub/src/arch/powerpc/32/nrv2e_d.S @@ -30,11 +30,11 @@ */ #define M_NRV2E_LE32 8 - rlwinm r0,meth,8,25,31 // .b_method (hi byte of meth) - cmpli cr0,r0,M_NRV2E_LE32 - bne cr0,not_nrv2e + dcbtst 0,dst // prime dcache for store + mflr t3 // return address - dcbtst 0,dst # prime dcache for store + cmpli cr0,meth,M_NRV2E_LE32 + bne cr0,not_nrv2e stw dst,0(ldst) # original dst add lsrc,lsrc,src # input eof @@ -44,8 +44,6 @@ addi src,src,-1 # prepare for 'lbzu' addi dst,dst,-1 # prepare for 'stbu' li disp,-1 # initial displacement - - mflr t3 # return address b bot_n2e #undef jnextb0y diff --git a/src/stub/src/arch/powerpc/32/ppc_regs.h b/src/stub/src/arch/powerpc/32/ppc_regs.h new file mode 100644 index 00000000..c601c622 --- /dev/null +++ b/src/stub/src/arch/powerpc/32/ppc_regs.h @@ -0,0 +1,46 @@ +#ifndef __PPC_REGS__ /*{*/ +#define __PPC_REGS__ + +#define r0 0 +#define r1 1 +#define r2 2 + +#define r29 29 +#define r30 30 +#define r31 31 + +/* Stack pointer */ +#define sp 1 + +/* Subroutine arguments; not saved by callee */ +#define a0 3 +#define a1 4 +#define a2 5 +#define a3 6 +#define a4 7 +#define a5 8 +#define a6 9 +#define a7 10 + +/* Scratch (temporary) registers; not saved by callee */ +#define t0 2 +#define t1 11 +#define t2 12 +#define t3 13 + +/* branch and link */ +#define call bl + +/* branch to link register */ +#define ret blr + +/* move register */ +#define movr mr + +#endif /*} __PPC_REGS__ */ + + +/* +vi:ts=4:et:nowrap +*/ + diff --git a/src/stub/src/powerpc-darwin.macho-fold.S b/src/stub/src/powerpc-darwin.macho-fold.S index 88b17eb4..76f2ed8c 100644 --- a/src/stub/src/powerpc-darwin.macho-fold.S +++ b/src/stub/src/powerpc-darwin.macho-fold.S @@ -28,7 +28,7 @@ * John F. Reiser * */ -#include "arch/powerpc/32/regs.h" +#include "arch/powerpc/32/ppc_regs.h" sz_b_info= 12 sz_unc= 0 diff --git a/src/stub/src/powerpc-linux.elf-entry.S b/src/stub/src/powerpc-linux.elf-entry.S index 38b834af..ba45a0c2 100644 --- a/src/stub/src/powerpc-linux.elf-entry.S +++ b/src/stub/src/powerpc-linux.elf-entry.S @@ -138,8 +138,10 @@ unfold: sc; bso- msg_SELinux // Branch if SummaryOverflow (failure) 0: mtctr r31 + lwz r0,sz_unc(r30) lbz meth,b_method(r30) - la ldst,31*4(sp) // &do_not_care + la ldst,31*4(sp) // &slot on stack + stw r0,31*4(sp) // lzma uses for EOF mr dst,a0 mtlr a0 // &continuation lwz lsrc,sz_cpr(r30) @@ -147,6 +149,7 @@ unfold: bctr // goto decomrpess; return to link register (mmap'ed page) main: +//// teq r0,r0 // debugging stwu r1,-32*4(sp) // allocate space (keeping 0 mod 16), save r1 stmw r2,4(sp) // save registers r2 thru r31 mflr r31 // &decompress diff --git a/src/stub/src/powerpc-linux.elf-fold.S b/src/stub/src/powerpc-linux.elf-fold.S index 312f436e..907f1d66 100644 --- a/src/stub/src/powerpc-linux.elf-fold.S +++ b/src/stub/src/powerpc-linux.elf-fold.S @@ -1,4 +1,7 @@ -#include "arch/powerpc/32/regs.h" +#include "arch/powerpc/32/ppc_regs.h" + +#define szElf32_Ehdr 0x34 +#define szElf32_Phdr 0x20 sz_b_info= 12 sz_unc= 0 @@ -10,7 +13,7 @@ sz_p_info= 12 OVERHEAD= 2048 LINKAREA= 4*4 // SysV C linkage area: (sp, lr); but 16-byte align /* In: - r31= &decompress; also 8+ (char *)&(offset to {l_info; p_info; b_info}) + r31= &decompress; also 8+ (char *)&(#bytes which preceed &-8(r31) */ fold_begin: call L90 @@ -36,16 +39,18 @@ L90: lwz a6,0(sp) // sp at execve call zfind // a6= &env call zfind // a6= &Elf32_auxv - lwz a1,-8(r31) // total size = offset to {l_info; p_info; b_info} + lwz a1,-8(r31) // #bytes which preceed -8(r31) rlwinm r30,a5,0,0,31-12 // r30= &this_page - la a2,-OVERHEAD(sp) // &Elf32_Ehdr temporary space mr a4,r31 // &decompress: f_expand - subf a0,a1,r31 // &l_info + subf r29,a1,r31 // 8+ (char *)&our_Elf32_Ehdr + la a2,-OVERHEAD(sp) // &Elf32_Ehdr temporary space + addi r29,r29,-8 // &our_Elf32_Ehdr + addi a1,a1,-(szElf32_Ehdr + 2*szElf32_Phdr) + addi a0,r29,(szElf32_Ehdr + 2*szElf32_Phdr) // &{l_info; p_info; b_info} addi sp,sp,-(LINKAREA+OVERHEAD) - rlwinm r29,a0,0,0,31-12 // r29= &our_Elf32_Ehdr lwz a3,sz_unc+sz_p_info+sz_l_info(a0) // sz_elf_headers call upx_main // Out: a0= entry -/* entry= upx_main(l_info *a0, total_size a1, Elf32_Ehdr *a2, sz_ehdr a3, + /* entry= upx_main(l_info *a0, total_size a1, Elf32_Ehdr *a2, sz_ehdr a3, f_decomp a4, f_unf a5, Elf32_auxv_t *a6) */ mr r31,a0 // save &entry diff --git a/src/stub/src/powerpc-linux.elf-main.c b/src/stub/src/powerpc-linux.elf-main.c index e997e24e..efa3699e 100644 --- a/src/stub/src/powerpc-linux.elf-main.c +++ b/src/stub/src/powerpc-linux.elf-main.c @@ -139,8 +139,8 @@ ERR_LAB 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, - *(int *)(void *)&h.b_method); + 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