From 4f0d89ef8bc25c5666fb067a7c1553389c6cc402 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Sat, 19 Aug 2006 15:28:16 -0700 Subject: [PATCH] convert PackMachPPC32 to new Linker --- src/p_mach.cpp | 32 +- src/p_mach.h | 2 + src/stub/powerpc-darwin.macho-entry.h | 470 +++++++++++----------- src/stub/powerpc-darwin.macho-fold.h | 6 +- src/stub/src/powerpc-darwin.macho-entry.S | 6 +- src/stub/src/powerpc-darwin.macho-main.c | 4 +- 6 files changed, 273 insertions(+), 247 deletions(-) diff --git a/src/p_mach.cpp b/src/p_mach.cpp index 75ce8613..f30da44e 100644 --- a/src/p_mach.cpp +++ b/src/p_mach.cpp @@ -69,17 +69,37 @@ Linker *PackMachPPC32::newLinker() const return new ElfLinkerPpc32; } +void +PackMachPPC32::addStubEntrySections(Filter const *) +{ + addLoader("MACOS000", NULL); + //addLoader(getDecompressorSections(), NULL); + addLoader( + ( M_IS_NRV2E(ph.method) ? "NRV_HEAD,NRV2E,NRV_TAIL" + : M_IS_NRV2D(ph.method) ? "NRV_HEAD,NRV2D,NRV_TAIL" + : M_IS_NRV2B(ph.method) ? "NRV_HEAD,NRV2B,NRV_TAIL" + : M_IS_LZMA(ph.method) ? "LZMA_ELF00,LZMA_DEC20,LZMA_DEC30" + : NULL), NULL); + addLoader("ELFMAINY,IDENTSTR,+40,ELFMAINZ,FOLDEXEC", NULL); +} + + +void PackMachPPC32::addLinkerSymbols(Filter const *) +{ + // empty +} + + int PackMachPPC32::buildMachLoader( upx_byte const *const proto, unsigned const szproto, upx_byte const *const fold, unsigned const szfold, - Filter const */*ft*/ + Filter const *ft ) { - int eof_empty = -1; - initLoader(&eof_empty, 4096, 0, 0); + initLoader(proto, szproto); struct b_info h; memset(&h, 0, sizeof(h)); unsigned fold_hdrlen = 0; @@ -109,11 +129,11 @@ PackMachPPC32::buildMachLoader( int const GAP = 128; // must match stub/l_mac_ppc.S segcmdo.vmsize += h.sz_unc - h.sz_cpr + GAP + 64; - linker->addSection("MACOS000", proto, szproto, 0); + addStubEntrySections(ft); - addLoader("MACOS000", NULL); - addLoader("FOLDEXEC", NULL); freezeLoader(); + addLinkerSymbols(ft); + linker->relocate(); return getLoaderSize(); } diff --git a/src/p_mach.h b/src/p_mach.h index d55276de..e2af1e8d 100644 --- a/src/p_mach.h +++ b/src/p_mach.h @@ -191,6 +191,8 @@ protected: upx_byte const *const fold, unsigned const szfold, Filter const *ft ); + virtual void addLinkerSymbols(Filter const *); + virtual void addStubEntrySections(Filter const *); unsigned n_segment; unsigned sz_segment; diff --git a/src/stub/powerpc-darwin.macho-entry.h b/src/stub/powerpc-darwin.macho-entry.h index 3dfa86a6..3eb3e49f 100644 --- a/src/stub/powerpc-darwin.macho-entry.h +++ b/src/stub/powerpc-darwin.macho-entry.h @@ -1,4 +1,4 @@ -/* powerpc-darwin.macho-entry.h -- created from powerpc-darwin.macho-entry.bin, 9698 (0x25e2) bytes +/* powerpc-darwin.macho-entry.h -- created from powerpc-darwin.macho-entry.bin, 9710 (0x25ee) bytes This file is part of the UPX executable compressor. @@ -27,15 +27,15 @@ */ -#define L_MAC_PPC32_LOADER_SIZE 9698 -#define L_MAC_PPC32_LOADER_ADLER32 0xc122dd2d -#define L_MAC_PPC32_LOADER_CRC32 0xe09b1a26 +#define L_MAC_PPC32_LOADER_SIZE 9710 +#define L_MAC_PPC32_LOADER_ADLER32 0x4e54e33e +#define L_MAC_PPC32_LOADER_CRC32 0x78175f48 -unsigned char l_mac_ppc32_loader[9698] = { +unsigned char l_mac_ppc32_loader[9710] = { 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, 24,112, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */ - 0, 21, 0, 18, 72, 0, 0, 61,124, 0, 41,236,125,168, 2,166, /* 0x 30 */ + 0, 0, 24,124, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */ + 0, 21, 0, 18, 72, 0, 0, 69,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 */ @@ -409,234 +409,234 @@ unsigned char l_mac_ppc32_loader[9698] = { 124, 8, 3,166, 78,128, 0, 32,128, 6, 0, 0,125,168, 3,166, /* 0x1760 */ 56,165, 0, 1, 56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80, /* 0x1770 */ 144,166, 0, 0, 78,128, 0, 32,124, 72, 2,166,128,130, 0, 8, /* 0x1780 */ -124,137, 3,166,128,194, 0, 4,124,164, 18, 20, 56,165, 0, 16, /* 0x1790 */ -124,102, 18, 20, 56, 99, 0,192,140, 5,255,255,156, 3,255,255, /* 0x17a0 */ - 66, 0,255,248,127,233, 3,166, 56,162, 0,128, 56,193,255,252, /* 0x17b0 */ - 78,128, 4, 32,127,232, 2,166, 75,255,255,193, 72, 0, 0,128, /* 0x17c0 */ - 0, 46,115,121,109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, /* 0x17d0 */ - 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,114,101,108, 97, /* 0x17e0 */ - 77, 65, 67, 79, 83, 48, 48, 48, 0, 78, 82, 86, 95, 72, 69, 65, /* 0x17f0 */ - 68, 0, 46,114,101,108, 97, 78, 82, 86, 50, 69, 0, 46,114,101, /* 0x1800 */ -108, 97, 78, 82, 86, 50, 68, 0, 46,114,101,108, 97, 78, 82, 86, /* 0x1810 */ - 50, 66, 0, 46,114,101,108, 97, 76, 90, 77, 65, 95, 69, 76, 70, /* 0x1820 */ - 48, 48, 0, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 0, 76, 90, /* 0x1830 */ - 77, 65, 95, 68, 69, 67, 50, 48, 0, 76, 90, 77, 65, 95, 68, 69, /* 0x1840 */ - 67, 51, 48, 0, 78, 82, 86, 95, 84, 65, 73, 76, 0, 69, 76, 70, /* 0x1850 */ - 77, 65, 73, 78, 89, 0, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, /* 0x1860 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1870 */ +124,137, 3,166,128,194, 0, 4,136,226, 0, 12,124,164, 18, 20, /* 0x1790 */ + 56,165, 0, 16,124,102, 18, 20, 56, 99, 0,192,140, 5,255,255, /* 0x17a0 */ +156, 3,255,255, 66, 0,255,248,127,233, 3,166, 56,162, 0,128, /* 0x17b0 */ +144,193,255,252, 56,193,255,252, 78,128, 4, 32,124,128, 0, 8, /* 0x17c0 */ +127,232, 2,166, 75,255,255,181, 72, 0, 0,128, 0, 46,115,121, /* 0x17d0 */ +109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,104, /* 0x17e0 */ +115,116,114,116, 97, 98, 0, 46,114,101,108, 97, 77, 65, 67, 79, /* 0x17f0 */ + 83, 48, 48, 48, 0, 78, 82, 86, 95, 72, 69, 65, 68, 0, 46,114, /* 0x1800 */ +101,108, 97, 78, 82, 86, 50, 69, 0, 46,114,101,108, 97, 78, 82, /* 0x1810 */ + 86, 50, 68, 0, 46,114,101,108, 97, 78, 82, 86, 50, 66, 0, 46, /* 0x1820 */ +114,101,108, 97, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 0, 76, /* 0x1830 */ + 90, 77, 65, 95, 68, 69, 67, 49, 48, 0, 76, 90, 77, 65, 95, 68, /* 0x1840 */ + 69, 67, 50, 48, 0, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 0, /* 0x1850 */ + 78, 82, 86, 95, 84, 65, 73, 76, 0, 69, 76, 70, 77, 65, 73, 78, /* 0x1860 */ + 89, 0, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, 0, 0, 0, 0, /* 0x1870 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1880 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, /* 0x1890 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, /* 0x18a0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x18b0 */ - 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18c0 */ - 0, 0, 28,160, 0, 0, 0, 12, 0, 0, 0, 19, 0, 0, 0, 1, /* 0x18d0 */ - 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 41, 0, 0, 0, 1, /* 0x18e0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, /* 0x18f0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x1900 */ - 0, 0, 0, 55, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1910 */ - 0, 0, 0, 56, 0, 0, 1, 72, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1920 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 4, /* 0x1930 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,172, 0, 0, 0, 12, /* 0x1940 */ - 0, 0, 0, 19, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 12, /* 0x1950 */ - 0, 0, 0, 66, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1960 */ - 0, 0, 1,128, 0, 0, 1, 44, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1970 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 4, /* 0x1980 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,184, 0, 0, 0, 12, /* 0x1990 */ - 0, 0, 0, 19, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, /* 0x19a0 */ - 0, 0, 0, 77, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x19b0 */ - 0, 0, 2,172, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x19c0 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 4, /* 0x19d0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,196, 0, 0, 0, 12, /* 0x19e0 */ - 0, 0, 0, 19, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, /* 0x19f0 */ - 0, 0, 0, 88, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a00 */ - 0, 0, 3,156, 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a10 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 4, /* 0x1a20 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,208, 0, 0, 0, 12, /* 0x1a30 */ - 0, 0, 0, 19, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 12, /* 0x1a40 */ - 0, 0, 0, 99, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a50 */ - 0, 0, 4, 32, 0, 0, 9,156, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a60 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,110, 0, 0, 0, 1, /* 0x1a70 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,188, 0, 0, 9,156, /* 0x1a80 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x1a90 */ - 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1aa0 */ - 0, 0, 23, 88, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ab0 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0, 1, /* 0x1ac0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,104, 0, 0, 0, 32, /* 0x1ad0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x1ae0 */ - 0, 0, 0,141, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1af0 */ - 0, 0, 23,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b00 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,150, 0, 0, 0, 1, /* 0x1b10 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,136, 0, 0, 0, 72, /* 0x1b20 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x1b30 */ - 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b40 */ - 0, 0, 23,208, 0, 0, 0,159, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b50 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, /* 0x1b60 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,184, 0, 0, 0,224, /* 0x1b70 */ - 0, 0, 0, 20, 0, 0, 0, 13, 0, 0, 0, 4, 0, 0, 0, 16, /* 0x1b80 */ - 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b90 */ - 0, 0, 28,152, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ba0 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1bb0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1890 */ + 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x18a0 */ + 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x18b0 */ + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 27, /* 0x18c0 */ + 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,172, /* 0x18d0 */ + 0, 0, 0, 12, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 4, /* 0x18e0 */ + 0, 0, 0, 12, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x18f0 */ + 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1900 */ + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 55, /* 0x1910 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, /* 0x1920 */ + 0, 0, 1, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x1930 */ + 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x1940 */ + 0, 0, 0, 0, 0, 0, 28,184, 0, 0, 0, 12, 0, 0, 0, 19, /* 0x1950 */ + 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 66, /* 0x1960 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,128, /* 0x1970 */ + 0, 0, 1, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x1980 */ + 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x1990 */ + 0, 0, 0, 0, 0, 0, 28,196, 0, 0, 0, 12, 0, 0, 0, 19, /* 0x19a0 */ + 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 77, /* 0x19b0 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,172, /* 0x19c0 */ + 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x19d0 */ + 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x19e0 */ + 0, 0, 0, 0, 0, 0, 28,208, 0, 0, 0, 12, 0, 0, 0, 19, /* 0x19f0 */ + 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 88, /* 0x1a00 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,156, /* 0x1a10 */ + 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x1a20 */ + 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x1a30 */ + 0, 0, 0, 0, 0, 0, 28,220, 0, 0, 0, 12, 0, 0, 0, 19, /* 0x1a40 */ + 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 99, /* 0x1a50 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 32, /* 0x1a60 */ + 0, 0, 9,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x1a70 */ + 0, 0, 0, 0, 0, 0, 0,110, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x1a80 */ + 0, 0, 0, 0, 0, 0, 13,188, 0, 0, 9,156, 0, 0, 0, 0, /* 0x1a90 */ + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,121, /* 0x1aa0 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 88, /* 0x1ab0 */ + 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x1ac0 */ + 0, 0, 0, 0, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x1ad0 */ + 0, 0, 0, 0, 0, 0, 23,104, 0, 0, 0, 32, 0, 0, 0, 0, /* 0x1ae0 */ + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,141, /* 0x1af0 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,136, /* 0x1b00 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x1b10 */ + 0, 0, 0, 0, 0, 0, 0,150, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x1b20 */ + 0, 0, 0, 0, 0, 0, 23,136, 0, 0, 0, 84, 0, 0, 0, 0, /* 0x1b30 */ + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 17, /* 0x1b40 */ + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,220, /* 0x1b50 */ + 0, 0, 0,159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x1b60 */ + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, /* 0x1b70 */ + 0, 0, 0, 0, 0, 0, 27,196, 0, 0, 0,224, 0, 0, 0, 20, /* 0x1b80 */ + 0, 0, 0, 13, 0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, /* 0x1b90 */ + 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28,164, /* 0x1ba0 */ + 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x1bb0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1bc0 */ - 0, 0, 0, 0, 3, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1bd0 */ - 0, 0, 0, 0, 3, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1be0 */ - 0, 0, 0, 0, 3, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1bf0 */ - 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c00 */ - 0, 0, 0, 0, 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c10 */ - 0, 0, 0, 0, 3, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c20 */ - 0, 0, 0, 0, 3, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c30 */ - 0, 0, 0, 0, 3, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c40 */ - 0, 0, 0, 0, 3, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c50 */ - 0, 0, 0, 0, 3, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c60 */ - 0, 0, 0, 0, 3, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c70 */ - 0, 0, 0, 0, 3, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x1c80 */ - 0, 0, 0, 0, 16, 0, 0, 1, 0, 95,115,116, 97,114,116, 0, /* 0x1c90 */ - 0, 0, 0, 0, 0, 0, 3, 10, 0, 0, 0, 60, 0, 0, 0,180, /* 0x1ca0 */ - 0, 0, 2, 11, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 2, 11, /* 0x1cb0 */ - 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 2, 11, 0, 0, 0, 0, /* 0x1cc0 */ - 0, 0, 0, 4, 0, 0, 1, 11, 0, 0, 0, 16, 10,116,109,112, /* 0x1cd0 */ - 47,112,111,119,101,114,112, 99, 45,100, 97,114,119,105,110, 46, /* 0x1ce0 */ -109, 97, 99,104,111, 45,101,110,116,114,121, 46, 98,105,110, 58, /* 0x1cf0 */ - 32, 32, 32, 32, 32,102,105,108,101, 32,102,111,114,109, 97,116, /* 0x1d00 */ - 32,101,108,102, 51, 50, 45,112,111,119,101,114,112, 99, 10, 10, /* 0x1d10 */ - 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97, /* 0x1d20 */ -109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, /* 0x1d30 */ - 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, /* 0x1d40 */ - 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111, /* 0x1d50 */ -102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, /* 0x1d60 */ - 32, 32, 48, 32, 77, 65, 67, 79, 83, 48, 48, 48, 32, 32, 32, 32, /* 0x1d70 */ - 32, 32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, /* 0x1d80 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1d90 */ - 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x1da0 */ - 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, /* 0x1db0 */ - 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, /* 0x1dc0 */ - 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x1dd0 */ - 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x1de0 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1df0 */ - 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x1e00 */ - 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, /* 0x1e10 */ - 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, /* 0x1e20 */ - 48, 48, 48, 48, 49, 52, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1e30 */ - 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1e40 */ - 48, 48, 48, 51, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1e50 */ - 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x1e60 */ - 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, /* 0x1e70 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, /* 0x1e80 */ - 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1e90 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 56, 48, 32, /* 0x1ea0 */ - 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1eb0 */ - 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1ec0 */ - 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, /* 0x1ed0 */ - 32, 32, 32, 48, 48, 48, 48, 48, 48,102, 48, 32, 32, 48, 48, 48, /* 0x1ee0 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ef0 */ - 32, 48, 48, 48, 48, 48, 50, 97, 99, 32, 32, 50, 42, 42, 48, 32, /* 0x1f00 */ - 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1f10 */ - 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, /* 0x1f20 */ - 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, /* 0x1f30 */ - 48, 48, 48, 56, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1f40 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1f50 */ - 51, 57, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1f60 */ - 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x1f70 */ - 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1f80 */ - 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, /* 0x1f90 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1fa0 */ - 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 50, 48, 32, 32, 50, /* 0x1fb0 */ - 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1fc0 */ - 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, /* 0x1fd0 */ - 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, /* 0x1fe0 */ - 57, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1ff0 */ - 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,100, 98, 99, /* 0x2000 */ - 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x2010 */ - 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, /* 0x2020 */ - 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, /* 0x2030 */ - 48, 48, 48, 49, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2040 */ - 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, /* 0x2050 */ - 55, 53, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x2060 */ - 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x2070 */ - 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, /* 0x2080 */ - 48, 48, 48, 48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2090 */ - 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x20a0 */ - 48, 48, 49, 55, 54, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x20b0 */ - 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x20c0 */ - 10, 32, 49, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, /* 0x20d0 */ - 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x20e0 */ - 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x20f0 */ - 32, 48, 48, 48, 48, 49, 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, /* 0x2100 */ - 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x2110 */ - 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x2120 */ - 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 52, 56, 32, 32, /* 0x2130 */ - 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2140 */ - 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 56, 56, 32, 32, 50, 42, /* 0x2150 */ - 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x2160 */ - 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, /* 0x2170 */ - 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x2180 */ - 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, /* 0x2190 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, /* 0x21a0 */ - 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x21b0 */ - 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, /* 0x21c0 */ - 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, /* 0x21d0 */ - 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x21e0 */ - 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, /* 0x21f0 */ - 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, /* 0x2200 */ - 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, /* 0x2210 */ - 67, 79, 83, 48, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2220 */ - 77, 65, 67, 79, 83, 48, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2230 */ - 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, /* 0x2240 */ - 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, /* 0x2250 */ - 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x2260 */ - 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, /* 0x2270 */ - 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, /* 0x2280 */ - 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, /* 0x2290 */ - 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, /* 0x22a0 */ - 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x22b0 */ - 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22c0 */ - 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x22d0 */ -108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, /* 0x22e0 */ - 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x22f0 */ - 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2300 */ -108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x2310 */ - 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x2320 */ - 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2330 */ -108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x2340 */ - 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x2350 */ - 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2360 */ -108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2370 */ - 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, /* 0x2380 */ - 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, /* 0x2390 */ - 32, 32, 32, 32, 77, 65, 67, 79, 83, 48, 48, 48, 9, 48, 48, 48, /* 0x23a0 */ - 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, 10, 10, 10, 82, /* 0x23b0 */ - 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, /* 0x23c0 */ - 83, 32, 70, 79, 82, 32, 91, 77, 65, 67, 79, 83, 48, 48, 48, 93, /* 0x23d0 */ - 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x23e0 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x23f0 */ - 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, /* 0x2400 */ - 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, /* 0x2410 */ - 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 51, /* 0x2420 */ - 99, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x2430 */ - 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, /* 0x2440 */ - 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, /* 0x2450 */ - 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x2460 */ - 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, /* 0x2470 */ - 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, /* 0x2480 */ - 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 10, 82, 69, 76, 79, 67, /* 0x2490 */ - 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, /* 0x24a0 */ - 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x24b0 */ - 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x24c0 */ - 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, /* 0x24d0 */ - 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, /* 0x24e0 */ - 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, /* 0x24f0 */ - 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x2500 */ - 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, /* 0x2510 */ - 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x2520 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2530 */ - 85, 69, 10, 48, 48, 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, /* 0x2540 */ - 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, /* 0x2550 */ - 86, 95, 84, 65, 73, 76, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x2560 */ - 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2570 */ - 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, /* 0x2580 */ - 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x2590 */ - 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, /* 0x25a0 */ - 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, /* 0x25b0 */ - 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, /* 0x25c0 */ - 69, 67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48, 49, 48, 10, /* 0x25d0 */ - 10, 10 /* 0x25e0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1bd0 */ + 3, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1be0 */ + 3, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1bf0 */ + 3, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c00 */ + 3, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c10 */ + 3, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c20 */ + 3, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c30 */ + 3, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c40 */ + 3, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c50 */ + 3, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c60 */ + 3, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c70 */ + 3, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c80 */ + 3, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c90 */ + 16, 0, 0, 1, 0, 95,115,116, 97,114,116, 0, 0, 0, 0, 0, /* 0x1ca0 */ + 0, 0, 3, 10, 0, 0, 0, 68, 0, 0, 0,180, 0, 0, 2, 11, /* 0x1cb0 */ + 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 2, 11, 0, 0, 0, 0, /* 0x1cc0 */ + 0, 0, 0,144, 0, 0, 2, 11, 0, 0, 0, 0, 0, 0, 0, 4, /* 0x1cd0 */ + 0, 0, 1, 11, 0, 0, 0, 16, 10,116,109,112, 47,112,111,119, /* 0x1ce0 */ +101,114,112, 99, 45,100, 97,114,119,105,110, 46,109, 97, 99,104, /* 0x1cf0 */ +111, 45,101,110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, 32, /* 0x1d00 */ + 32,102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, /* 0x1d10 */ + 51, 50, 45,112,111,119,101,114,112, 99, 10, 10, 83,101, 99,116, /* 0x1d20 */ +105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, /* 0x1d30 */ + 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, /* 0x1d40 */ + 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, /* 0x1d50 */ + 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, /* 0x1d60 */ + 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, /* 0x1d70 */ + 77, 65, 67, 79, 83, 48, 48, 48, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1d80 */ + 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d90 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1da0 */ + 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1db0 */ + 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1dc0 */ + 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, 69, /* 0x1dd0 */ + 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1de0 */ + 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1df0 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 56, 32, 32, /* 0x1e00 */ + 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1e10 */ + 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, 86, /* 0x1e20 */ + 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1e30 */ + 49, 52, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1e40 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, /* 0x1e50 */ + 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1e60 */ + 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x1e70 */ + 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, /* 0x1e80 */ + 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 99, 32, 32, 48, /* 0x1e90 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1ea0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 49, 56, 48, 32, 32, 50, 42, 42, /* 0x1eb0 */ + 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x1ec0 */ + 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 52, /* 0x1ed0 */ + 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, /* 0x1ee0 */ + 48, 48, 48, 48, 48,102, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x1ef0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1f00 */ + 48, 48, 50, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x1f10 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x1f20 */ + 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, 65, 95, /* 0x1f30 */ + 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 56, /* 0x1f40 */ + 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1f50 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 57, 99, 32, /* 0x1f60 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1f70 */ + 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1f80 */ + 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, /* 0x1f90 */ + 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, 48, /* 0x1fa0 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1fb0 */ + 32, 48, 48, 48, 48, 48, 52, 50, 48, 32, 32, 50, 42, 42, 48, 32, /* 0x1fc0 */ + 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x1fd0 */ + 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1fe0 */ + 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, /* 0x1ff0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2000 */ + 48, 48, 32, 32, 48, 48, 48, 48, 48,100, 98, 99, 32, 32, 50, 42, /* 0x2010 */ + 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x2020 */ + 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, 95, /* 0x2030 */ + 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, /* 0x2040 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2050 */ + 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 53, 56, 32, /* 0x2060 */ + 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x2070 */ + 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78, 82, /* 0x2080 */ + 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x2090 */ + 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x20a0 */ + 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, /* 0x20b0 */ + 54, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x20c0 */ + 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, /* 0x20d0 */ + 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, /* 0x20e0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x20f0 */ + 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2100 */ + 48, 49, 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x2110 */ + 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x2120 */ + 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, /* 0x2130 */ + 32, 32, 48, 48, 48, 48, 48, 48, 53, 52, 32, 32, 48, 48, 48, 48, /* 0x2140 */ + 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2150 */ + 48, 48, 48, 48, 49, 55, 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, /* 0x2160 */ + 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x2170 */ + 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, /* 0x2180 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x2190 */ + 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, /* 0x21a0 */ + 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, /* 0x21b0 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x21c0 */ + 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, /* 0x21d0 */ + 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, /* 0x21e0 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, /* 0x21f0 */ + 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2200 */ + 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2210 */ + 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65, 67, 79, 83, 48, /* 0x2220 */ + 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 79, /* 0x2230 */ + 83, 48, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, /* 0x2240 */ + 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, /* 0x2250 */ + 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, /* 0x2260 */ + 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x2270 */ + 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2280 */ + 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2290 */ +108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, /* 0x22a0 */ + 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, /* 0x22b0 */ + 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, /* 0x22c0 */ + 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, /* 0x22d0 */ + 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x22e0 */ + 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, /* 0x22f0 */ + 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, /* 0x2300 */ + 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2310 */ + 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, /* 0x2320 */ + 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x2330 */ + 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2340 */ + 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, /* 0x2350 */ + 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x2360 */ + 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2370 */ + 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, /* 0x2380 */ + 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, /* 0x2390 */ + 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, /* 0x23a0 */ + 77, 65, 67, 79, 83, 48, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x23b0 */ + 48, 32, 95,115,116, 97,114,116, 10, 10, 10, 82, 69, 76, 79, 67, /* 0x23c0 */ + 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, /* 0x23d0 */ + 82, 32, 91, 77, 65, 67, 79, 83, 48, 48, 48, 93, 58, 10, 79, 70, /* 0x23e0 */ + 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x23f0 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, /* 0x2400 */ + 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, /* 0x2410 */ + 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, /* 0x2420 */ + 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 52, 52, 10, 10, 10, /* 0x2430 */ + 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2440 */ + 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, /* 0x2450 */ + 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2460 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2470 */ + 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, /* 0x2480 */ + 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, /* 0x2490 */ + 84, 65, 73, 76, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x24a0 */ + 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, /* 0x24b0 */ + 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, /* 0x24c0 */ + 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x24d0 */ + 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, /* 0x24e0 */ + 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, /* 0x24f0 */ + 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 10, 82, 69, /* 0x2500 */ + 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x2510 */ + 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, /* 0x2520 */ + 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x2530 */ + 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, /* 0x2540 */ + 48, 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, 67, 95, 82, 69, /* 0x2550 */ + 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, /* 0x2560 */ + 73, 76, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x2570 */ + 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, /* 0x2580 */ + 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x2590 */ + 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x25a0 */ + 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, /* 0x25b0 */ + 48, 48, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, /* 0x25c0 */ + 32, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, /* 0x25d0 */ + 43, 48,120, 48, 48, 48, 48, 48, 48, 49, 48, 10, 10, 10 /* 0x25e0 */ }; diff --git a/src/stub/powerpc-darwin.macho-fold.h b/src/stub/powerpc-darwin.macho-fold.h index 5229e64f..b4edbff5 100644 --- a/src/stub/powerpc-darwin.macho-fold.h +++ b/src/stub/powerpc-darwin.macho-fold.h @@ -28,8 +28,8 @@ #define FOLD_MACHPPC32_SIZE 1660 -#define FOLD_MACHPPC32_ADLER32 0xdacb2724 -#define FOLD_MACHPPC32_CRC32 0xa548d6c6 +#define FOLD_MACHPPC32_ADLER32 0xfc8b272c +#define FOLD_MACHPPC32_CRC32 0x62ce0ae3 unsigned char fold_machppc32[1660] = { 72, 0, 0,105, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 0 */ @@ -68,7 +68,7 @@ unsigned char fold_machppc32[1660] = { 56, 96, 0,127, 75,255,254,245,127, 5, 72, 64, 65,185,255,244, /* 0x 210 */ 128, 31, 0, 0,127,137, 0, 64, 65,189,255,232,128, 31, 0, 4, /* 0x 220 */ 64,152, 0,136,124,164, 43,120,128,126, 0, 4,124, 5, 3,120, /* 0x 230 */ - 56,193, 0, 32,128,225, 0, 24,145, 33, 0, 32,127,136, 3,166, /* 0x 240 */ + 56,193, 0, 32,136,225, 0, 24,145, 33, 0, 32,127,136, 3,166, /* 0x 240 */ 78,128, 0, 33, 47,131, 0, 0, 64,190,255,184,128,129, 0, 32, /* 0x 250 */ 128, 1, 0, 16,127,132, 0, 0, 64,190,255,168,136,193, 0, 25, /* 0x 260 */ 49, 61,255,255,124, 9,233, 16,125, 38, 0,208, 85, 41, 15,254, /* 0x 270 */ diff --git a/src/stub/src/powerpc-darwin.macho-entry.S b/src/stub/src/powerpc-darwin.macho-entry.S index 029e1e39..f0894c8c 100644 --- a/src/stub/src/powerpc-darwin.macho-entry.S +++ b/src/stub/src/powerpc-darwin.macho-entry.S @@ -81,6 +81,7 @@ eof_nrv: sz_b_info= 12 sz_unc= 0 sz_cpr= 4 + b_method= 8 /* Decompress the rest of this loader, and jump to it. */ unfold: @@ -88,6 +89,7 @@ unfold: lwz lsrc,4+sz_cpr(t0); mtctr lsrc # length to copy (and decompress) lwz ldst,4+sz_unc(t0) + lbz meth,4+b_method(t0) add dst,lsrc,t0; addi dst,dst,4+sz_b_info add src,ldst,t0; addi src,src,GAP+64 # defend against prefetch and overlap movup: # descending copy moves folded_loader to higher address @@ -97,10 +99,12 @@ movup: # descending copy moves folded_loader to higher address mtctr r31 # &decompress addi dst,t0,GAP # &unfolded result - la ldst,-4(sp) # &sz_result [will be ignored] + stw ldst,-4(sp) # LZMA needs for EOF + la ldst,-4(sp) # &sz_result bctr # call decompress: branch to counter register, return to link register main: + teq r0,r0 // debugging mflr r31 # r31= &decompress call unfold L100: GAP= 128 # > farthest_prefetch; must match ../p_mach.cpp diff --git a/src/stub/src/powerpc-darwin.macho-main.c b/src/stub/src/powerpc-darwin.macho-main.c index 84c5f6da..451f05f7 100644 --- a/src/stub/src/powerpc-darwin.macho-main.c +++ b/src/stub/src/powerpc-darwin.macho-main.c @@ -175,8 +175,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