From 4e05f087f9c2b9e688f6a9461452d35589f715f5 Mon Sep 17 00:00:00 2001 From: John Reiser Date: Tue, 11 Apr 2017 19:15:43 -0700 Subject: [PATCH] PowerPC 64-bit big-endian modified: conf.h modified: linker.cpp modified: linker.h modified: p_lx_elf.cpp modified: p_lx_elf.h modified: packmast.cpp modified: stub/Makefile modified: stub/powerpc-linux.elf-entry.h new file: stub/powerpc64-linux.elf-entry.h new file: stub/powerpc64-linux.elf-fold.h modified: stub/powerpc64le-linux.elf-entry.h modified: stub/powerpc64le-linux.elf-fold.h modified: stub/scripts/xstrip.py modified: stub/src/arch/powerpc/64le/nrv2b_d.S modified: stub/src/arch/powerpc/64le/nrv2d_d.S modified: stub/src/arch/powerpc/64le/nrv2e_d.S new file: stub/src/powerpc64-darwin.dylib-entry.S new file: stub/src/powerpc64-darwin.macho-entry.S new file: stub/src/powerpc64-darwin.macho-fold.S new file: stub/src/powerpc64-darwin.macho-main.c new file: stub/src/powerpc64-linux.elf-entry.S new file: stub/src/powerpc64-linux.elf-fold.S new file: stub/src/powerpc64-linux.elf-fold.lds new file: stub/src/powerpc64-linux.elf-main.c modified: stub/src/powerpc64le-linux.elf-entry.S modified: stub/src/powerpc64le-linux.elf-fold.S modified: stub/src/powerpc64le-linux.elf-main.c modified: stub/tmp/powerpc64le-linux.elf-entry.bin.dump modified: stub/tmp/powerpc64le-linux.elf-fold.map --- src/conf.h | 4 + src/linker.cpp | 34 + src/linker.h | 11 + src/p_lx_elf.cpp | 283 ++++++- src/p_lx_elf.h | 32 + src/packmast.cpp | 1 + src/stub/Makefile | 92 +++ src/stub/powerpc-linux.elf-entry.h | 6 +- src/stub/powerpc64-linux.elf-entry.h | 750 ++++++++++++++++++ src/stub/powerpc64-linux.elf-fold.h | 198 +++++ src/stub/powerpc64le-linux.elf-entry.h | 465 ++++++----- src/stub/powerpc64le-linux.elf-fold.h | 278 +++---- src/stub/scripts/xstrip.py | 2 +- src/stub/src/arch/powerpc/64le/nrv2b_d.S | 5 +- src/stub/src/arch/powerpc/64le/nrv2d_d.S | 5 +- src/stub/src/arch/powerpc/64le/nrv2e_d.S | 5 +- src/stub/src/powerpc64-darwin.dylib-entry.S | 1 + src/stub/src/powerpc64-darwin.macho-entry.S | 1 + src/stub/src/powerpc64-darwin.macho-fold.S | 1 + src/stub/src/powerpc64-darwin.macho-main.c | 1 + src/stub/src/powerpc64-linux.elf-entry.S | 2 + src/stub/src/powerpc64-linux.elf-fold.S | 2 + src/stub/src/powerpc64-linux.elf-fold.lds | 48 ++ src/stub/src/powerpc64-linux.elf-main.c | 1 + src/stub/src/powerpc64le-linux.elf-entry.S | 41 +- src/stub/src/powerpc64le-linux.elf-fold.S | 61 +- src/stub/src/powerpc64le-linux.elf-main.c | 8 +- .../tmp/powerpc64le-linux.elf-entry.bin.dump | 6 +- src/stub/tmp/powerpc64le-linux.elf-fold.map | 78 +- 29 files changed, 1944 insertions(+), 478 deletions(-) create mode 100644 src/stub/powerpc64-linux.elf-entry.h create mode 100644 src/stub/powerpc64-linux.elf-fold.h create mode 100644 src/stub/src/powerpc64-darwin.dylib-entry.S create mode 100644 src/stub/src/powerpc64-darwin.macho-entry.S create mode 100644 src/stub/src/powerpc64-darwin.macho-fold.S create mode 100644 src/stub/src/powerpc64-darwin.macho-main.c create mode 100644 src/stub/src/powerpc64-linux.elf-entry.S create mode 100644 src/stub/src/powerpc64-linux.elf-fold.S create mode 100644 src/stub/src/powerpc64-linux.elf-fold.lds create mode 100644 src/stub/src/powerpc64-linux.elf-main.c diff --git a/src/conf.h b/src/conf.h index e28a5ee4..3d0d0a7c 100644 --- a/src/conf.h +++ b/src/conf.h @@ -416,6 +416,10 @@ private: #define UPX_F_LINUX_ELF32_MIPSEB 137 #define UPX_F_DYLIB_PPC32 138 +#define UPX_F_MACH_PPC64 139 +#define UPX_F_LINUX_ELFPPC64 140 +#define UPX_F_VMLINUX_PPC64 141 +#define UPX_F_DYLIB_PPC64 142 // compression methods #define M_ALL (-1) diff --git a/src/linker.cpp b/src/linker.cpp index 6ba0c0f8..2f63f21b 100644 --- a/src/linker.cpp +++ b/src/linker.cpp @@ -797,6 +797,10 @@ void ElfLinkerPpc32::relocate1(const Relocation *rel, upx_byte *location, upx_ui void ElfLinkerPpc64le::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value, const char *type) { + if (!strcmp(type, "R_PPC64_ADDR64")) { + set_le64(location, get_le64(location) + value); + return; + } if (!strcmp(type, "R_PPC64_ADDR32")) { set_le32(location, get_le32(location) + value); return; @@ -834,6 +838,36 @@ void ElfLinkerPpc64le::relocate1(const Relocation *rel, upx_byte *location, upx_ super::relocate1(rel, location, value, type); } +void ElfLinkerPpc64::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value, + const char *type) { + if (!strcmp(type, "R_PPC64_ADDR32")) { + set_be32(location, get_be32(location) + value); + return; + } + if (!strcmp(type, "R_PPC64_ADDR64")) { + set_be64(location, get_be64(location) + value); + return; + } + if (strncmp(type, "R_PPC64_REL", 11)) + return super::relocate1(rel, location, value, type); + type += 11; + + if (strncmp(type, "PC", 2) == 0) { + type += 2; + } + + // We have "R_PPC64_REL" or "R_PPC64_RELPC" as a prefix. + /* value will hold relative displacement */ + value -= rel->section->offset + rel->offset; + + if (strncmp(type, "14", 2) == 0) // for "14" and "14S" + set_be16(2+ location, get_be16(2+ location) + value); + else if (strncmp(type, "24", 2) == 0) // for "24" and "24S" + set_be24(1+ location, get_be24(1+ location) + value); + else + super::relocate1(rel, location, value, type); +} + void ElfLinkerX86::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value, const char *type) { if (strncmp(type, "R_386_", 6)) diff --git a/src/linker.h b/src/linker.h index 20e1b3fa..f43e8a48 100644 --- a/src/linker.h +++ b/src/linker.h @@ -246,6 +246,17 @@ protected: const char *type); }; +class ElfLinkerPpc64 : public ElfLinker { + typedef ElfLinker super; + +public: + ElfLinkerPpc64() { bele = &N_BELE_RTP::be_policy; } + +protected: + virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value, + const char *type); +}; + class ElfLinkerX86 : public ElfLinker { typedef ElfLinker super; diff --git a/src/p_lx_elf.cpp b/src/p_lx_elf.cpp index a73b5ce3..712acc9b 100644 --- a/src/p_lx_elf.cpp +++ b/src/p_lx_elf.cpp @@ -527,7 +527,11 @@ PackLinuxElf::addStubEntrySections(Filter const *) : NULL), NULL); if (hasLoaderSection("CFLUSH")) addLoader("CFLUSH"); - addLoader("ELFMAINY,IDENTSTR,+40,ELFMAINZ", NULL); + addLoader("ELFMAINY,IDENTSTR", NULL); + if (hasLoaderSection("ELFMAINZe")) { // ppc64 big-endian only + addLoader("ELFMAINZe", NULL); + } + addLoader("+40,ELFMAINZ", NULL); if (hasLoaderSection("ELFMAINZu")) { addLoader(/*(all_pages ? "LUNMP000" : "LUNMP001"),*/ "ELFMAINZu", NULL); } @@ -697,6 +701,15 @@ PackLinuxElf64ppcle::getFilters() const return filters; } +int const * +PackLinuxElf64ppc::getFilters() const +{ + static const int filters[] = { + 0xd0, + FT_END }; + return filters; +} + int const * PackLinuxElf64amd::getFilters() const { @@ -758,9 +771,23 @@ void PackLinuxElf32::updateLoader(OutputFile * /*fo*/) void PackLinuxElf64::updateLoader(OutputFile * /*fo*/) { - set_te64(&elfout.ehdr.e_entry, sz_pack2 + - linker->getSymbolOffset("_start") + - get_te64(&elfout.phdr[0].p_vaddr)); + upx_uint64_t const vbase = get_te64(&elfout.phdr[0].p_vaddr); + unsigned start = linker->getSymbolOffset("_start"); + + if (get_te16(&elfout.ehdr.e_machine)==Elf64_Ehdr::EM_PPC64 + && elfout.ehdr.e_ident[Elf64_Ehdr::EI_DATA]==Elf64_Ehdr::ELFDATA2MSB) { + unsigned descr = linker->getSymbolOffset("entry_descr"); + + // External relocation of PPC64 function descriptor. + upx_uint64_t dot_entry = start + sz_pack2 + vbase; + upx_byte *p = getLoader(); + + set_te64(&p[descr], dot_entry); + set_te64(&elfout.ehdr.e_entry, descr + sz_pack2 + vbase); + } + else { + set_te64(&elfout.ehdr.e_entry, start + sz_pack2 + vbase); + } } PackLinuxElf32ppc::PackLinuxElf32ppc(InputFile *f) @@ -790,15 +817,33 @@ PackLinuxElf64ppcle::PackLinuxElf64ppcle(InputFile *f) ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX; } +PackLinuxElf64ppc::PackLinuxElf64ppc(InputFile *f) + : super(f), lg2_page(16), page_size(1u<readx(u.buf, sizeof(u.buf)); + fi->seek(0, SEEK_SET); + Elf64_Ehdr const *const ehdr = (Elf64_Ehdr *) u.buf; + + // now check the ELF header + if (checkEhdr(ehdr) != 0) + return false; + + // additional requirements for linux/elf386 + if (get_te16(&ehdr->e_ehsize) != sizeof(*ehdr)) { + throwCantPack("invalid Ehdr e_ehsize; try '--force-execve'"); + return false; + } + if (e_phoff != sizeof(*ehdr)) {// Phdrs not contiguous with Ehdr + throwCantPack("non-contiguous Ehdr/Phdr; try '--force-execve'"); + return false; + } + + // The first PT_LOAD64 must cover the beginning of the file (0==p_offset). + Elf64_Phdr const *phdr = phdri; + for (unsigned j=0; j < e_phnum; ++phdr, ++j) { + if (j >= 14) + return false; + unsigned const p_type = get_te32(&phdr->p_type); + if (1!=exetype && phdr->PT_LOAD64 == p_type) { // 1st PT_LOAD + exetype = 1; + load_va = get_te64(&phdr->p_vaddr); // class data member + upx_uint64_t const p_offset = get_te64(&phdr->p_offset); + upx_uint64_t const off = ~page_mask & load_va; + if (off && off == p_offset) { // specific hint + throwCantPack("Go-language PT_LOAD: try hemfix.c, or try '--force-execve'"); + // Fixing it inside upx fails because packExtent() reads original file. + return false; + } + if (0 != p_offset) { // 1st PT_LOAD must cover Ehdr and Phdr + throwCantPack("first PT_LOAD.p_offset != 0; try '--force-execve'"); + return false; + } + break; + } + } + // We want to compress position-independent executable (gcc -pie) + // main programs, but compressing a shared library must be avoided + // because the result is no longer usable. In theory, there is no way + // to tell them apart: both are just ET_DYN. Also in theory, + // neither the presence nor the absence of any particular symbol name + // can be used to tell them apart; there are counterexamples. + // However, we will use the following heuristic suggested by + // Peter S. Mazinger September 2005: + // If a ET_DYN has __libc_start_main as a global undefined symbol, + // then the file is a position-independent executable main program + // (that depends on libc.so.6) and is eligible to be compressed. + // Otherwise (no __libc_start_main as global undefined): skip it. + // Also allow __uClibc_main and __uClibc_start_main . + + if (Elf32_Ehdr::ET_DYN==get_te16(&ehdr->e_type)) { + // The DT_SYMTAB has no designated length. Read the whole file. + alloc_file_image(file_image, file_size); + fi->seek(0, SEEK_SET); + fi->readx(file_image, file_size); + memcpy(&ehdri, ehdr, sizeof(Elf64_Ehdr)); + phdri= (Elf64_Phdr *)((size_t)e_phoff + file_image); // do not free() !! + shdri= (Elf64_Shdr const *)((size_t)e_shoff + file_image); // do not free() !! + + //sec_strndx = &shdri[ehdr->e_shstrndx]; + //shstrtab = (char const *)(sec_strndx->sh_offset + file_image); + sec_dynsym = elf_find_section_type(Elf64_Shdr::SHT_DYNSYM); + if (sec_dynsym) + sec_dynstr = get_te32(&sec_dynsym->sh_link) + shdri; + + int j= e_phnum; + phdr= phdri; + for (; --j>=0; ++phdr) + if (Elf64_Phdr::PT_DYNAMIC==get_te32(&phdr->p_type)) { + dynseg= (Elf64_Dyn const *)(get_te32(&phdr->p_offset) + file_image); + break; + } + // elf_find_dynamic() returns 0 if 0==dynseg. + dynstr= (char const *)elf_find_dynamic(Elf64_Dyn::DT_STRTAB); + dynsym= (Elf64_Sym const *)elf_find_dynamic(Elf64_Dyn::DT_SYMTAB); + + // Modified 2009-10-10 to detect a ProgramLinkageTable relocation + // which references the symbol, because DT_GNU_HASH contains only + // defined symbols, and there might be no DT_HASH. + + Elf64_Rela const * + rela= (Elf64_Rela const *)elf_find_dynamic(Elf64_Dyn::DT_RELA); + Elf64_Rela const * + jmprela= (Elf64_Rela const *)elf_find_dynamic(Elf64_Dyn::DT_JMPREL); + for ( int sz = elf_unsigned_dynamic(Elf64_Dyn::DT_PLTRELSZ); + 0 < sz; + (sz -= sizeof(Elf64_Rela)), ++jmprela + ) { + unsigned const symnum = get_te64(&jmprela->r_info) >> 32; + char const *const symnam = get_te32(&dynsym[symnum].st_name) + dynstr; + if (0==strcmp(symnam, "__libc_start_main") + || 0==strcmp(symnam, "__uClibc_main") + || 0==strcmp(symnam, "__uClibc_start_main")) { + is_pie = true; + goto proceed; + } + } + + // 2016-10-09 DT_JMPREL is no more (binutils-2.26.1)? + // Check the general case, too. + for ( int sz = elf_unsigned_dynamic(Elf64_Dyn::DT_RELASZ); + 0 < sz; + (sz -= sizeof(Elf64_Rela)), ++rela + ) { + unsigned const symnum = get_te64(&rela->r_info) >> 32; + char const *const symnam = get_te32(&dynsym[symnum].st_name) + dynstr; + if (0==strcmp(symnam, "__libc_start_main") + || 0==strcmp(symnam, "__uClibc_main") + || 0==strcmp(symnam, "__uClibc_start_main")) { + is_pie = true; + goto proceed; + } + } + // Heuristic HACK for shared libraries (compare Darwin (MacOS) Dylib.) + // If there is an existing DT_INIT, and if everything that the dynamic + // linker ld-linux needs to perform relocations before calling DT_INIT + // resides below the first SHT_EXECINSTR Section in one PT_LOAD, then + // compress from the first executable Section to the end of that PT_LOAD. + // We must not alter anything that ld-linux might touch before it calls + // the DT_INIT function. + // + // Obviously this hack requires that the linker script put pieces + // into good positions when building the original shared library, + // and also requires ld-linux to behave. + + if (elf_find_dynamic(Elf64_Dyn::DT_INIT)) { + if (elf_has_dynamic(Elf64_Dyn::DT_TEXTREL)) { + throwCantPack("DT_TEXTREL found; re-compile with -fPIC"); + goto abandon; + } + Elf64_Shdr const *shdr = shdri; + xct_va = ~0ull; + for (j= e_shnum; --j>=0; ++shdr) { + if (Elf64_Shdr::SHF_EXECINSTR & get_te32(&shdr->sh_flags)) { + xct_va = umin64(xct_va, get_te64(&shdr->sh_addr)); + } + } + // Rely on 0==elf_unsigned_dynamic(tag) if no such tag. + upx_uint64_t const va_gash = elf_unsigned_dynamic(Elf64_Dyn::DT_GNU_HASH); + upx_uint64_t const va_hash = elf_unsigned_dynamic(Elf64_Dyn::DT_HASH); + if (xct_va < va_gash || (0==va_gash && xct_va < va_hash) + || xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_STRTAB) + || xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_SYMTAB) + || xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_REL) + || xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_RELA) + || xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_JMPREL) + || xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_VERDEF) + || xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_VERSYM) + || xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_VERNEEDED) ) { + throwCantPack("DT_ tag above stub"); + goto abandon; + } + for ((shdr= shdri), (j= e_shnum); --j>=0; ++shdr) { + upx_uint64_t const sh_addr = get_te64(&shdr->sh_addr); + if ( sh_addr==va_gash + || (sh_addr==va_hash && 0==va_gash) ) { + shdr= &shdri[get_te32(&shdr->sh_link)]; // the associated SHT_SYMTAB + hatch_off = (char *)&ehdri.e_ident[11] - (char *)&ehdri; + break; + } + } + ACC_UNUSED(shdr); + xct_off = elf_get_offset_from_address(xct_va); + goto proceed; // But proper packing depends on checking xct_va. + } + else + throwCantPack("need DT_INIT; try \"void _init(void){}\""); +abandon: + return false; +proceed: ; + } + // XXX Theoretically the following test should be first, + // but PackUnix::canPack() wants 0!=exetype ? + if (!super::canPack()) + return false; + assert(exetype == 1); + + exetype = 0; + + // set options + opt->o_unix.blocksize = blocksize = file_size; + return true; +} + bool PackLinuxElf64amd::canPack() { @@ -2586,7 +2842,7 @@ PackLinuxElf64::generateElfHdr( h3->ehdr.e_ident[Elf32_Ehdr::EI_OSABI] = ei_osabi; unsigned phnum_o = get_te16(&h2->ehdr.e_phnum); - assert(get_te32(&h2->ehdr.e_phoff) == sizeof(Elf64_Ehdr)); + assert(get_te64(&h2->ehdr.e_phoff) == sizeof(Elf64_Ehdr)); h2->ehdr.e_shoff = 0; assert(get_te16(&h2->ehdr.e_ehsize) == sizeof(Elf64_Ehdr)); assert(get_te16(&h2->ehdr.e_phentsize) == sizeof(Elf64_Phdr)); @@ -2629,11 +2885,10 @@ PackLinuxElf64::generateElfHdr( // anyway by phdr[0].p_align and constant offset from phdr[0].p_vaddr. // However, somebody might complain because (.p_vaddr - .p_offset) // is divisible only by phdr[1].p_align, and not by phdr[0].p_align. - set_te64(&h2->phdr[1].p_align, 0x1000); - if ( ~page_mask == 0xffff ) /* 64K specific case */ - set_te64(&h2->phdr[1].p_offset, /*~page_mask*/ 0xffff & brkb); - else - set_te64(&h2->phdr[1].p_offset, /*~page_mask*/ 0xfff & brkb); + if (get_te16(&elfout.ehdr.e_machine) != Elf64_Ehdr::EM_PPC64) { + set_te64(&h2->phdr[1].p_align, 0x1000); + } + set_te64(&h2->phdr[1].p_offset, (-1+ get_te64(&h2->phdr[1].p_align)) & brkb); set_te64(&h2->phdr[1].p_vaddr, brkb); set_te64(&h2->phdr[1].p_paddr, brkb); @@ -2859,6 +3114,14 @@ void PackLinuxElf64ppcle::pack1(OutputFile *fo, Filter &ft) generateElfHdr(fo, stub_powerpc64le_linux_elf_fold, getbrk(phdri, e_phnum) ); } +void PackLinuxElf64ppc::pack1(OutputFile *fo, Filter &ft) +{ + super::pack1(fo, ft); + if (0!=xct_off) // shared library + return; + generateElfHdr(fo, stub_powerpc64_linux_elf_fold, getbrk(phdri, e_phnum) ); +} + void PackLinuxElf64::pack1(OutputFile *fo, Filter & /*ft*/) { fi->seek(0, SEEK_SET); diff --git a/src/p_lx_elf.h b/src/p_lx_elf.h index 93954ec7..d59704dd 100644 --- a/src/p_lx_elf.h +++ b/src/p_lx_elf.h @@ -372,6 +372,18 @@ protected: } }; +class PackLinuxElf64Be : public PackLinuxElf64 +{ + typedef PackLinuxElf64 super; +protected: + PackLinuxElf64Be(InputFile *f) : super(f) { + lg2_page=16; + page_size=1u< + + John F. Reiser + + */ + + +#define STUB_POWERPC64_LINUX_ELF_ENTRY_SIZE 11372 +#define STUB_POWERPC64_LINUX_ELF_ENTRY_ADLER32 0x3d0b9761 +#define STUB_POWERPC64_LINUX_ELF_ENTRY_CRC32 0x677cb124 + +unsigned char stub_powerpc64_linux_elf_entry[11372] = { +/* 0x0000 */ 127, 69, 76, 70, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0010 */ 0, 1, 0, 21, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33,160, +/* 0x0030 */ 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, +/* 0x0040 */ 72, 0, 0, 1,124, 0, 41,236,125,168, 2,166, 40, 7, 0, 8, +/* 0x0050 */ 64,130, 1, 92,248,166, 0, 0,124,132, 26, 20, 60, 0,128, 0, +/* 0x0060 */ 120, 0, 7,198, 61, 32,128, 0,121, 41, 7,198, 56, 99,255,255, +/* 0x0070 */ 56,165,255,255, 57, 64,255,255, 72, 0, 1, 36, 57, 32, 0, 1, +/* 0x0080 */ 125, 41, 28, 44, 56, 99, 0, 4,121, 41, 7,198,124, 41, 0, 64, +/* 0x0090 */ 125, 41, 72, 20, 57,128, 0, 1,121,140, 7,198,125, 41, 99,120, +/* 0x00a0 */ 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,124, 41, 0, 64, +/* 0x00b0 */ 125, 41, 74, 20, 65,194,255,201, 65,225,255,236, 56,224, 0, 1, +/* 0x00c0 */ 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,194,255,177, +/* 0x00d0 */ 124,231, 57, 20,125, 41, 72, 21, 65,194,255,165,124,231, 57, 20, +/* 0x00e0 */ 124, 41, 0, 64,125, 41, 74, 20, 65,194,255,149, 65,192,255,216, +/* 0x00f0 */ 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 57,128,255,255, +/* 0x0100 */ 121,140, 7,198,124,231, 99,120, 65,192, 0, 32,140, 67, 0, 1, +/* 0x0110 */ 124,234, 16,249,125, 74, 14,112, 65,194, 0, 0,112, 66, 0, 1, +/* 0x0120 */ 65,226, 0, 80, 72, 0, 0, 20,124, 41, 0, 64,125, 41, 74, 20, +/* 0x0130 */ 65,194,255, 77, 65,225, 0, 60, 57, 0, 0, 1,124, 41, 0, 64, +/* 0x0140 */ 125, 41, 74, 20, 65,194,255, 57, 65,225, 0, 40,125, 41, 72, 21, +/* 0x0150 */ 65,194,255, 45,125, 8, 65, 20,124, 41, 0, 64,125, 41, 74, 20, +/* 0x0160 */ 65,194,255, 29, 65,192,255,232, 57, 8, 0, 2, 72, 0, 0, 16, +/* 0x0170 */ 125, 41, 72, 21, 65,194,255, 9,125, 8, 65, 20, 32,234,250,255, +/* 0x0180 */ 57, 8, 0, 2,125, 8, 1,148,124,234, 42, 20,125, 9, 3,166, +/* 0x0190 */ 141, 7, 0, 1,157, 5, 0, 1, 67, 32,255,248, 56,224, 1, 0, +/* 0x01a0 */ 124, 7, 41,236,124, 7, 26, 44, 75,255,255, 4,124, 0, 41,236, +/* 0x01b0 */ 125,168, 2,166, 40, 7, 0, 5, 64,130, 1, 56,248,166, 0, 0, +/* 0x01c0 */ 124,132, 26, 20, 60, 0,128, 0,120, 0, 7,198, 61, 32,128, 0, +/* 0x01d0 */ 121, 41, 7,198, 56, 99,255,255, 56,165,255,255, 57, 64,255,255, +/* 0x01e0 */ 72, 0, 1, 0, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4, +/* 0x01f0 */ 121, 41, 7,198,124, 41, 0, 64,125, 41, 72, 20, 57,128, 0, 1, +/* 0x0200 */ 121,140, 7,198,125, 41, 99,120, 78,128, 0, 32,141, 3, 0, 1, +/* 0x0210 */ 157, 5, 0, 1,124, 41, 0, 64,125, 41, 74, 20, 65,194,255,201, +/* 0x0220 */ 65,225,255,236, 56,224, 0, 1, 72, 0, 0, 20, 56,231,255,255, +/* 0x0230 */ 125, 41, 72, 21, 65,194,255,177,124,231, 57, 21,125, 41, 72, 21, +/* 0x0240 */ 65,194,255,165,124,231, 57, 21,124, 41, 0, 64,125, 41, 74, 20, +/* 0x0250 */ 65,194,255,149, 65,192,255,216, 57, 0, 0, 0, 52,231,255,253, +/* 0x0260 */ 84,231, 64, 46, 65,192, 0, 28,140, 67, 0, 1,124,234, 16,249, +/* 0x0270 */ 125, 74, 14,112, 44, 42, 0, 0, 65,194, 0, 0, 72, 0, 0, 12, +/* 0x0280 */ 125, 41, 72, 21, 65,194,255, 97,125, 8, 65, 21,125, 41, 72, 21, +/* 0x0290 */ 65,194,255, 85,125, 8, 65, 21, 64,130, 0, 40, 57, 0, 0, 1, +/* 0x02a0 */ 125, 41, 72, 21, 65,194,255, 65,125, 8, 65, 21,124, 41, 0, 64, +/* 0x02b0 */ 125, 41, 74, 20, 65,194,255, 49, 65,192,255,232, 57, 8, 0, 2, +/* 0x02c0 */ 32,234,250,255, 57, 8, 0, 1,125, 8, 1,148,124,234, 42, 20, +/* 0x02d0 */ 125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 67, 32,255,248, +/* 0x02e0 */ 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, 75,255,255, 40, +/* 0x02f0 */ 124, 0, 41,236,125,168, 2,166, 40, 7, 0, 2, 64,130, 1, 12, +/* 0x0300 */ 248,166, 0, 0,124,132, 26, 20, 60, 0,128, 0,120, 0, 7,198, +/* 0x0310 */ 61, 32,128, 0,121, 41, 7,198, 56, 99,255,255, 56,165,255,255, +/* 0x0320 */ 57, 64,255,255, 72, 0, 0,212,124, 41, 0, 64,125, 41, 72, 20, +/* 0x0330 */ 76,226, 0, 32, 57,128, 0, 0,125,140, 97, 20,121,140, 7,198, +/* 0x0340 */ 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4,121, 41, 7,198, +/* 0x0350 */ 124, 41, 0, 64,125, 41, 72, 20,125, 41, 98, 20, 78,128, 0, 32, +/* 0x0360 */ 141, 3, 0, 1,157, 5, 0, 1, 75,255,255,193, 65,225,255,244, +/* 0x0370 */ 56,224, 0, 1, 75,255,255,181,124,231, 57, 21, 75,255,255,173, +/* 0x0380 */ 65,192,255,244, 52,231,255,253, 57, 0, 0, 0, 65,192, 0, 32, +/* 0x0390 */ 84,231, 64, 46,140, 67, 0, 1,124,234, 16,249, 57,128,255,255, +/* 0x03a0 */ 121,140, 7,198,124, 42, 96, 0, 65,194, 0, 0, 75,255,255,125, +/* 0x03b0 */ 125, 8, 65, 21, 75,255,255,117,125, 8, 65, 21, 56,224, 0, 1, +/* 0x03c0 */ 64,194, 0, 28, 56,224, 0, 3, 57, 0, 0, 1, 75,255,255, 93, +/* 0x03d0 */ 125, 8, 65, 21, 75,255,255, 85, 65,192,255,244, 32, 74,242,255, +/* 0x03e0 */ 125, 8, 57, 20,124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1, +/* 0x03f0 */ 157, 5, 0, 1, 67, 32,255,248, 56,224, 1, 0,124, 7, 41,236, +/* 0x0400 */ 124, 7, 26, 44, 75,255,255,100, 40, 7, 0, 14, 64,130, 0, 0, +/* 0x0410 */ 248, 33,255,209,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, +/* 0x0420 */ 124,167, 43,120, 56,164,255,254, 56,131, 0, 2,248, 1, 0, 16, +/* 0x0430 */ 136, 3, 0, 0,120, 11,232,194,120, 2, 7, 96, 56, 96,250, 0, +/* 0x0440 */ 124, 99, 88, 54, 56, 99,241,100,124, 38, 11,120,124, 33, 26, 20, +/* 0x0450 */ 120, 33, 6,164, 56, 0, 0, 0,124,195, 51,120,248, 9, 0, 0, +/* 0x0460 */ 248, 3,255,249,124, 33, 24, 64, 65,128,255,248,248,193, 0, 0, +/* 0x0470 */ 136, 4,255,255, 56,193, 0, 32, 56, 97, 0, 40,248,225, 0, 16, +/* 0x0480 */ 249, 33, 0, 24,120, 11,225, 2,120, 0, 7, 32,152, 67, 0, 2, +/* 0x0490 */ 153, 99, 0, 1,152, 3, 0, 0,248, 33,255,209,166, 2, 8,124, +/* 0x04a0 */ 1, 0, 64, 57, 1, 0, 0, 72, 2, 0, 99,137, 4, 0, 99, 59, +/* 0x04b0 */ 48, 88, 75,125,255,255,107, 57, 32, 0,107,121, 96,255, 97,249, +/* 0x04c0 */ 1, 0, 99,137, 2, 0,227, 59, 48, 88, 74,125,255,255, 74, 57, +/* 0x04d0 */ 0, 0, 96, 57, 32, 0, 74,121,166, 3, 72,125, 0, 0, 67,137, +/* 0x04e0 */ 0, 0,102,145, 0, 0,105,145,180, 7, 84,125, 1, 0, 99,137, +/* 0x04f0 */ 0, 4, 0, 56, 20, 82, 75,125, 0, 3, 96, 57, 48, 80,106,125, +/* 0x0500 */ 54, 7, 74, 57, 32, 0, 74,121, 0, 0,138, 47, 1, 0,106, 57, +/* 0x0510 */ 8, 0,190, 64, 1, 0, 96, 57,255,255,107, 53, 12, 0,130, 65, +/* 0x0520 */ 2, 0, 31,180,244,255,255, 75, 5, 0, 0, 56,166, 3, 9,124, +/* 0x0530 */ 20, 42,164,124, 5, 0,100, 57,120, 35,159,124, 0, 0, 64, 57, +/* 0x0540 */ 64, 40,191,127, 12, 0,190, 64, 1, 0, 96, 56, 88, 10, 0, 72, +/* 0x0550 */ 1, 0,255, 59,255,255, 31,136, 46, 64, 74, 85,120, 83, 10,124, +/* 0x0560 */ 32, 0, 74,121,220,255, 0, 66,255,255, 0, 56,255, 0, 32, 63, +/* 0x0570 */ 32, 0, 0,120, 1, 0,160, 58, 1, 0, 0, 59, 1, 0,192, 58, +/* 0x0580 */ 1, 0,160, 59, 0, 0,128, 57, 0, 0,192, 59, 0, 0, 64, 59, +/* 0x0590 */ 255,255, 57, 99, 1, 0, 96, 58, 8, 0, 84, 34, 64, 64,154,127, +/* 0x05a0 */ 216, 9,156, 64, 96,255,225,235, 54, 32,156, 85, 56,248, 87,127, +/* 0x05b0 */ 64,200,128,127,180, 7,241,126,180, 7,156,127, 20,226,145,127, +/* 0x05c0 */ 164, 15,145,123, 36, 0,157, 65, 64, 40,171,127,124,255,190, 65, +/* 0x05d0 */ 0, 0,235,139, 46, 64, 74, 85,120, 83,234,127, 40, 64, 0,120, +/* 0x05e0 */ 32, 0, 74,121, 1, 0,107, 57, 46,138,251,125,254,170, 16, 84, +/* 0x05f0 */ 214,121, 16,126, 64,128,138,127, 32, 0, 28,122,228, 1,156, 64, +/* 0x0600 */ 0, 8,239, 35,112, 46,255,127,166, 2, 8,124, 20,122,255,127, +/* 0x0610 */ 46,139,251,127, 48,150,223,127, 56, 0, 94,127, 48,160,222,127, +/* 0x0620 */ 20,242,223,127, 0, 3,222, 31, 6, 0,140, 47, 32, 0,222,123, +/* 0x0630 */ 54, 7,222, 59,164, 15,222,123, 20,242,219,127, 16, 0,157, 65, +/* 0x0640 */ 1, 0,224, 59,120,227,128,127, 12, 1, 0, 72, 80,208, 29,124, +/* 0x0650 */ 32, 0, 0,120,174, 0,231,125, 1, 0,224, 59, 60, 8,247, 85, +/* 0x0660 */ 180, 7,239,126,238, 5,247, 86,180, 7,247,126, 64,200,156,127, +/* 0x0670 */ 0, 1, 55, 58, 20,250, 49,126,164, 15, 49,122, 36, 0,157, 65, +/* 0x0680 */ 64, 40,171,127,196,254,190, 65, 0, 0, 11,136, 46, 64, 74, 85, +/* 0x0690 */ 120, 83, 10,124, 40, 64,156,123, 32, 0, 74,121, 1, 0,107, 57, +/* 0x06a0 */ 46,138, 30,126,254,170,128, 87,214,129, 0,124, 60, 8,255, 87, +/* 0x06b0 */ 64, 0, 10,127, 32, 0, 14,120, 0, 0,183, 47, 36, 0,152, 64, +/* 0x06c0 */ 0, 8, 16, 32,112, 46, 0,124, 20,130, 0,126, 46,139, 30,126, +/* 0x06d0 */ 180, 7,255,127,120,115,220,125, 48, 0,190, 65,104,255,255, 75, +/* 0x06e0 */ 80,224,128,127, 80, 80, 64,125,126,217, 0, 86, 80,128, 0,126, +/* 0x06f0 */ 1, 0,255, 59, 32, 0,156,123, 32, 0, 74,121, 46,139, 30,126, +/* 0x0700 */ 180, 7,255,127, 64,255,190, 65,255, 0,159, 47, 80,255,157, 64, +/* 0x0710 */ 52,255,255, 75, 64,200,128,127,164, 15,241,123, 68, 0,157, 64, +/* 0x0720 */ 46,138,254,126,254,170, 28, 84,214,185,156,127, 60, 8,255, 87, +/* 0x0730 */ 64,224,138,127, 32, 0,144,123, 76, 0,156, 64, 0, 8,151, 35, +/* 0x0740 */ 112, 46,156,127, 20,186,156,127, 46,139,158,127,180, 7,255,127, +/* 0x0750 */ 120,131, 0,126,255, 0,159, 47,188,255,157, 64, 80, 0, 0, 72, +/* 0x0760 */ 64, 40,171,127,228,253,190, 65, 0, 0,139,139, 46, 64, 74, 85, +/* 0x0770 */ 120, 83,138,127, 40, 64, 0,120, 32, 0, 74,121, 1, 0,107, 57, +/* 0x0780 */ 160,255,255, 75, 80, 0, 28,124, 80, 80, 92,125,126,217,252, 86, +/* 0x0790 */ 80,184,156,127, 1, 0,255, 59, 32, 0, 74,121, 46,139,158,127, +/* 0x07a0 */ 180, 7,255,127, 32, 0, 16,120,168,255,255, 75, 3, 0,140, 47, +/* 0x07b0 */ 32, 6,254,123, 1, 0,154, 59, 32, 0,156,123,174,209,199,127, +/* 0x07c0 */ 172, 7,157, 64, 9, 0,140, 47, 12, 0,157, 65,253,255,140, 57, +/* 0x07d0 */ 8, 0, 0, 72,250,255,140, 57,180, 7,140,125,148, 7, 0, 72, +/* 0x07e0 */ 80, 0, 16,124, 64,200,128,127,126,217,255, 85, 80, 80, 16,126, +/* 0x07f0 */ 80,120,255,127,192, 0,204, 59, 32, 0, 28,120, 32, 0, 10,122, +/* 0x0800 */ 46,139,251,127,164, 15,222,123, 36, 0,157, 65, 64, 40,171,127, +/* 0x0810 */ 56,253,190, 65, 0, 0, 75,137, 46, 64, 16, 86,120,131, 74,125, +/* 0x0820 */ 40, 64, 28,120, 32, 0, 74,121, 1, 0,107, 57, 46,242, 27,124, +/* 0x0830 */ 254,170,159, 87,214, 1, 31,126, 64,128,138,127, 32, 0, 31,122, +/* 0x0840 */ 68, 0,156, 64, 7, 0,140, 47, 0, 8,128, 35,112, 46,156,127, +/* 0x0850 */ 38, 0,128,125,254,239,140, 85, 20, 2, 28,124,208, 0,140,125, +/* 0x0860 */ 66,240,140,121, 0, 16,140,121, 46,243, 27,124,120,195, 21,127, +/* 0x0870 */ 3, 0,140, 57,120,179,216,126,104, 6,195, 59,120,235,182,127, +/* 0x0880 */ 124, 2, 0, 72, 80,224,240,125, 64,200,143,127, 80, 80,240,127, +/* 0x0890 */ 126,217, 16, 84, 80, 0, 16,124, 32, 0,252,121, 32, 0,234,123, +/* 0x08a0 */ 46,243, 27,124, 24, 0, 30, 58, 36, 0,157, 65, 64, 40,171,127, +/* 0x08b0 */ 152,252,190, 65, 0, 0, 11,136, 46, 64,234, 87,120, 83, 10,124, +/* 0x08c0 */ 40, 64,252,121, 32, 0, 74,121, 1, 0,107, 57, 46,130,251,125, +/* 0x08d0 */ 254,170,128, 87,214,121, 0,124, 64, 0,138,127, 32, 0, 31,120, +/* 0x08e0 */ 208, 0,156, 64, 0, 8,207, 35, 64,200,128,127,112, 46,222,127, +/* 0x08f0 */ 20,122,254,125, 46,131,251,125,224, 1,145, 59, 36, 0,157, 65, +/* 0x0900 */ 64, 40,171,127, 68,252,190, 65, 40, 64, 31,120, 0, 0, 11,136, +/* 0x0910 */ 46, 64, 74, 85,120, 83, 10,124, 32, 0, 74,121, 1, 0,107, 57, +/* 0x0920 */ 46,226, 59,126,254,170,254, 87,214,137,222,127, 64,240,138,127, +/* 0x0930 */ 32, 0,192,123, 80, 0,156, 64, 0, 8,241, 35, 0, 0,186, 47, +/* 0x0940 */ 112, 46,255,127, 20,138, 63,126, 46,227, 59,126,252,251,190, 65, +/* 0x0950 */ 7, 0,140, 47, 80,208,253,127, 32, 0,255,123, 38, 0,128,125, +/* 0x0960 */ 254,239,140, 85,174,248,199,127,208, 0,140,125,164, 7,140,121, +/* 0x0970 */ 1, 0,154, 59, 11, 0,140, 57, 32, 0,156,123,174,209,199,127, +/* 0x0980 */ 240, 5, 0, 72,126,217, 32, 86, 80,136, 32,126, 80,248,254,127, +/* 0x0990 */ 80, 80, 94,125,120,195, 0,127, 32, 0,255,123,120,235,184,127, +/* 0x09a0 */ 32, 0, 74,121, 46,227, 59,126,120,179,221,126,124, 0, 0, 72, +/* 0x09b0 */ 80,224,128,127, 64,200,156,127,126,217,255, 85, 80, 80, 0,124, +/* 0x09c0 */ 80,120,255,127, 46,131,251,127, 32, 0,145,123, 32, 0, 10,120, +/* 0x09d0 */ 48, 0, 30, 58, 36, 0,157, 65, 64, 40,171,127,108,251,190, 65, +/* 0x09e0 */ 0, 0, 75,137, 46, 64, 0, 84,120, 3, 74,125, 40, 64,145,123, +/* 0x09f0 */ 32, 0, 74,121, 1, 0,107, 57, 46,130, 27,124,254,170, 63, 86, +/* 0x0a00 */ 214, 1,255,125, 64,120,138,127, 32, 0,255,121, 36, 0,156, 64, +/* 0x0a10 */ 0, 8,192, 35,112, 46,222,127, 20, 2, 30,124, 46,131, 27,124, +/* 0x0a20 */ 120,195, 0,127,120,179,216,126,120, 3, 22,124,160, 0, 0, 72, +/* 0x0a30 */ 80,136, 47,126, 64,200,145,127, 80, 80,239,127,126,217, 15, 84, +/* 0x0a40 */ 80, 0, 15,124, 32, 0, 60,122, 32, 0,234,123, 46,131, 27,124, +/* 0x0a50 */ 72, 0,222, 59, 36, 0,157, 65, 64, 40,171,127,236,250,190, 65, +/* 0x0a60 */ 0, 0, 11,136, 46, 64,234, 87,120, 83, 10,124, 40, 64, 60,122, +/* 0x0a70 */ 32, 0, 74,121, 1, 0,107, 57, 46,242, 59,126,254,170,128, 87, +/* 0x0a80 */ 214,137, 0,124, 64, 0,138,127, 32, 0, 31,120, 24, 0,156, 64, +/* 0x0a90 */ 0, 8, 17, 32,112, 46, 0,124, 20,138, 0,124, 46,243, 27,124, +/* 0x0aa0 */ 44, 0, 0, 72, 80,224,224,127, 80, 80, 64,125,126,217, 32, 86, +/* 0x0ab0 */ 80,136, 0,124, 46,243, 27,124,120,195, 0,127, 32, 0, 74,121, +/* 0x0ac0 */ 120,171,184,126, 32, 0,255,123,120, 3, 21,124, 7, 0,140, 47, +/* 0x0ad0 */ 120,235,160,127,108, 10,195, 59, 38, 0,128,125,254,239,140, 85, +/* 0x0ae0 */ 120,195, 29,127,208, 0,140,125, 66,240,140,121, 0, 16,140,121, +/* 0x0af0 */ 120,179,216,126, 11, 0,140, 57,120, 3, 22,124, 64,200,159,127, +/* 0x0b00 */ 36, 0,157, 65, 64, 40,171,127, 64,250,190, 65, 0, 0, 11,136, +/* 0x0b10 */ 46, 64, 74, 85,120, 83, 10,124, 40, 64,255,123, 32, 0, 74,121, +/* 0x0b20 */ 1, 0,107, 57, 0, 0, 30,162,254,170,252, 87,214,129,156,127, +/* 0x0b30 */ 64,224,138,127, 32, 0,128,123, 48, 0,156, 64, 56, 24,247, 86, +/* 0x0b40 */ 0, 8,240, 35,180, 7,247,126,112, 46,255,127, 2, 0,247, 58, +/* 0x0b50 */ 20,130, 31,126,164, 15,247,122, 0, 0, 30,178, 0, 0,192, 57, +/* 0x0b60 */ 20,186,222,127,136, 0, 0, 72, 80,248,252,127, 64,200,159,127, +/* 0x0b70 */ 126,217, 0, 86, 80, 80,156,127, 80,128, 0,126, 32, 0,241,123, +/* 0x0b80 */ 32, 0,138,123, 0, 0, 30,178, 36, 0,157, 65, 64, 40,171,127, +/* 0x0b90 */ 184,249,190, 65, 0, 0, 75,137, 46, 64,156, 87,120,227, 74,125, +/* 0x0ba0 */ 40, 64,241,123, 32, 0, 74,121, 1, 0,107, 57, 2, 0,158,163, +/* 0x0bb0 */ 254,170, 63, 86,214,225,255,127, 64,248,138,127, 32, 0,224,123, +/* 0x0bc0 */ 52, 0,156, 64, 56, 24,247, 86, 0, 8,252, 35,180, 7,247,126, +/* 0x0bd0 */ 112, 46,255,127,130, 0,247, 58, 20,226,255,127,164, 15,247,122, +/* 0x0be0 */ 2, 0,254,179, 8, 0,192, 57, 20,186,222,127, 3, 0,224, 57, +/* 0x0bf0 */ 44, 0, 0, 72, 80,136, 31,124, 80, 80, 95,125,126,217,159, 87, +/* 0x0c00 */ 80,224,255,127, 2, 0,254,179, 32, 0, 74,121, 4, 2,222, 59, +/* 0x0c10 */ 32, 0, 0,120, 16, 0,192, 57, 8, 0,224, 57,255,255,143, 59, +/* 0x0c20 */ 32, 0,156,123, 1, 0,156, 59,166, 3,137,127, 1, 0,224, 59, +/* 0x0c30 */ 64,200,128,127,164, 15,240,123, 20,130, 30,126, 36, 0,157, 65, +/* 0x0c40 */ 64, 40,171,127, 4,249,190, 65, 0, 0,139,139, 46, 64, 74, 85, +/* 0x0c50 */ 120, 83,138,127, 40, 64, 0,120, 32, 0, 74,121, 1, 0,107, 57, +/* 0x0c60 */ 0, 0, 48,162,254,170, 23, 84,214,137,247,126, 60, 8,255, 87, +/* 0x0c70 */ 64,184,138,127, 32, 0,252,122, 32, 0,156, 64, 0, 8, 17, 32, +/* 0x0c80 */ 112, 46, 0,124, 20,138, 32,126, 0, 0, 48,178,180, 7,255,127, +/* 0x0c90 */ 120,227,128,127, 40, 0, 0, 72,126,217, 60, 86, 80,136, 60,126, +/* 0x0ca0 */ 80, 0, 23,124, 80, 80, 87,125, 1, 0,255, 59, 0, 0, 48,178, +/* 0x0cb0 */ 32, 0, 0,120, 32, 0, 74,121,180, 7,255,127,116,255, 0, 66, +/* 0x0cc0 */ 3, 0,140, 47, 48,120,111,126, 80,112,239,125, 20,250,143,127, +/* 0x0cd0 */ 80, 2,157, 65, 3, 0,156, 47,120,227,159,127, 8, 0,157, 64, +/* 0x0ce0 */ 3, 0,224, 59, 6, 0,192, 59, 50, 48,255, 87,166, 3,201,127, +/* 0x0cf0 */ 180, 7,255,127,176, 1,255, 59,164, 15,253,123, 1, 0,224, 59, +/* 0x0d00 */ 64,200,128,127,164, 15,241,123, 20,234, 49,126, 36, 0,157, 65, +/* 0x0d10 */ 64, 40,171,127, 52,248,190, 65, 0, 0,203,139, 46, 64, 74, 85, +/* 0x0d20 */ 120, 83,202,127, 40, 64, 0,120, 32, 0, 74,121, 1, 0,107, 57, +/* 0x0d30 */ 46,138,251,126,254,170, 30, 84,214,185,222,127, 60, 8,255, 87, +/* 0x0d40 */ 64,240,138,127, 32, 0,208,123, 32, 0,156, 64, 0, 8,215, 35, +/* 0x0d50 */ 112, 46,222,127, 20,186,222,127, 46,139,219,127,180, 7,255,127, +/* 0x0d60 */ 120,131, 0,126, 40, 0, 0, 72, 80, 0, 30,124, 80, 80, 94,125, +/* 0x0d70 */ 126,217,254, 86, 80,184,222,127, 1, 0,255, 59, 46,139,219,127, +/* 0x0d80 */ 32, 0, 0,120, 32, 0, 74,121,180, 7,255,127,116,255, 0, 66, +/* 0x0d90 */ 192,255,223, 59, 3, 0,158, 47,180, 7,215,127,108, 1,157, 64, +/* 0x0da0 */ 13, 0,158, 47,254, 7,223, 87, 2, 0,240, 99,112, 14,221,127, +/* 0x0db0 */ 32, 0, 17,122, 40, 0,157, 65,255,255,221, 59, 48,240, 31,126, +/* 0x0dc0 */ 180, 7,221,127,176, 2,215, 35, 20,250,222,127,164, 15,222,123, +/* 0x0dd0 */ 254,255,222, 59, 20,242,219,127,116, 0, 0, 72,250,255,221, 59, +/* 0x0de0 */ 32, 0,222,123, 1, 0,222, 59,166, 3,201,127, 64,200,128,127, +/* 0x0df0 */ 36, 0,157, 65, 64, 40,171,127, 80,247,190, 65, 0, 0,235,139, +/* 0x0e00 */ 46, 64, 74, 85,120, 83,234,127, 40, 64, 0,120, 32, 0, 74,121, +/* 0x0e10 */ 1, 0,107, 57,126,248, 29, 84, 64,232,138,127, 60, 8, 63, 86, +/* 0x0e20 */ 32, 0,160,123, 32, 0,241,123, 20, 0,156, 65, 80, 80, 93,125, +/* 0x0e30 */ 1, 0,255, 99, 32, 0, 74,121, 32, 0,241,123,176,255, 0, 66, +/* 0x0e40 */ 72, 6,195, 59, 40, 32, 63,122, 4, 0,160, 59,255,255,189, 59, +/* 0x0e50 */ 32, 0,189,123, 1, 0,189, 59,166, 3,169,127, 1, 0,224, 58, +/* 0x0e60 */ 1, 0,224, 57, 64,200,128,127,164, 15,241,122, 20,138, 62,126, +/* 0x0e70 */ 36, 0,157, 65, 64, 40,171,127,208,246,190, 65, 0, 0,171,139, +/* 0x0e80 */ 46, 64, 74, 85,120, 83,170,127, 40, 64, 0,120, 32, 0, 74,121, +/* 0x0e90 */ 1, 0,107, 57, 0, 0, 17,162,254,170, 29, 84,214,129,189,127, +/* 0x0ea0 */ 60, 8,247, 86, 64,232,138,127, 32, 0,174,123, 32, 0,156, 64, +/* 0x0eb0 */ 0, 8, 16, 32,112, 46, 0,124, 20,130, 0,126, 0, 0, 17,178, +/* 0x0ec0 */ 180, 7,247,126,120,115,192,125, 48, 0, 0, 72, 80, 0, 29,124, +/* 0x0ed0 */ 80, 80, 93,125,126,217, 29, 86, 80,128, 29,126, 1, 0,247, 58, +/* 0x0ee0 */ 120,251,255,125, 0, 0, 17,178, 32, 0, 0,120, 32, 0, 74,121, +/* 0x0ef0 */ 180, 7,247,126, 32, 0,255,123, 60, 8,239, 85,180, 7,239,125, +/* 0x0f00 */ 100,255, 0, 66, 8, 0, 0, 72, 32, 0,223,123, 1, 0,255, 59, +/* 0x0f10 */ 33, 0,253,123,100, 0,130, 65, 7, 0,140, 57,180, 7,140,125, +/* 0x0f20 */ 64,208,157,127, 2, 0,252, 59,180, 7,255,127, 28,246,189, 65, +/* 0x0f30 */ 255,255,255, 59, 32, 0,255,123, 1, 0,255, 59,166, 3,233,127, +/* 0x0f40 */ 80,208,253,127, 32, 0,255,123,174,248,199,127, 1, 0,250, 59, +/* 0x0f50 */ 32, 0,252,123,174,209,199,127, 24, 0, 64, 66, 64, 64,159,127, +/* 0x0f60 */ 120,227,154,127,220,255,156, 65, 8, 0, 0, 72, 0, 0,128, 57, +/* 0x0f70 */ 120,227,154,127, 40,246,255, 75,255, 0, 64, 61,255,255, 74, 97, +/* 0x0f80 */ 64, 80,128,127, 16, 0,157, 65, 64, 40,171,127,188,245,190, 65, +/* 0x0f90 */ 1, 0,107, 57, 80, 88,132,124, 0, 0,134,144, 0, 0, 73,147, +/* 0x0fa0 */ 0, 0, 96, 56, 0, 0, 0, 72,112,255,193,249,120,255,225,249, +/* 0x0fb0 */ 128,255, 1,250,136,255, 33,250,144,255, 65,250,152,255, 97,250, +/* 0x0fc0 */ 160,255,129,250,168,255,161,250,176,255,193,250,184,255,225,250, +/* 0x0fd0 */ 192,255, 1,251,200,255, 33,251,208,255, 65,251,216,255, 97,251, +/* 0x0fe0 */ 224,255,129,251,232,255,161,251,240,255,193,251,248,255,225,251, +/* 0x0ff0 */ 16, 0, 1,248, 32, 0,128, 78,112,255,193,233,120,255,225,233, +/* 0x1000 */ 128,255, 1,234,136,255, 33,234,144,255, 65,234,152,255, 97,234, +/* 0x1010 */ 160,255,129,234,168,255,161,234,176,255,193,234,184,255,225,234, +/* 0x1020 */ 192,255, 1,235,200,255, 33,235,208,255, 65,235,216,255, 97,235, +/* 0x1030 */ 224,255,129,235, 16, 0, 1,232,232,255,161,235,166, 3, 8,124, +/* 0x1040 */ 240,255,193,235,248,255,225,235, 32, 0,128, 78, 0, 0, 0, 0, +/* 0x1050 */ 0, 0, 0, 1, 72, 0, 0, 9, 72, 0, 12, 44,166, 2, 8,124, +/* 0x1060 */ 160,255,129,250, 16, 0, 1,248,112,255,193,249,120,255,225,249, +/* 0x1070 */ 128,255, 1,250,136,255, 33,250,144,255, 65,250,152,255, 97,250, +/* 0x1080 */ 168,255,161,250,176,255,193,250,184,255,225,250,192,255, 1,251, +/* 0x1090 */ 200,255, 33,251,208,255, 65,251,216,255, 97,251,224,255,129,251, +/* 0x10a0 */ 232,255,161,251,240,255,193,251,248,255,225,251, 0, 0, 64, 57, +/* 0x10b0 */ 0, 0, 3,138, 2, 0, 35,138, 1, 0, 67,138, 0, 0, 70,145, +/* 0x10c0 */ 0, 0, 73,145, 0, 3, 64, 57, 1, 0, 99,137, 1, 0, 0, 56, +/* 0x10d0 */ 20,130,107,125, 48, 88, 75,125,202,248,139, 47, 48,136, 17,124, +/* 0x10e0 */ 48,144, 18,124,255,255, 49, 58,255,255, 82, 58, 4, 0,131, 58, +/* 0x10f0 */ 32, 0, 49,122, 32, 0, 82,122,180, 7, 16,126, 36, 0,158, 65, +/* 0x1100 */ 53, 7,107, 57,200, 15,107,121, 2, 0, 67, 57, 20, 90,116,125, +/* 0x1110 */ 0, 4, 0, 56, 2, 0, 10,180, 64, 88,170,127,248,255,158, 64, +/* 0x1120 */ 20, 42,164,124, 64, 40,164,127, 20, 2,158, 65, 4, 0,192, 59, +/* 0x1130 */ 166, 3,201,127, 0, 0, 68,137, 1, 0,100, 57, 5, 0,228, 59, +/* 0x1140 */ 64, 40,171,127, 46, 64, 74, 85, 1, 0,107, 57,240, 1,158, 65, +/* 0x1150 */ 255,255, 11,136,120, 83, 10,124, 32, 0, 74,121,228,255, 0, 66, +/* 0x1160 */ 0, 0,168, 47, 16, 11,158, 65, 1, 0,192, 57, 1, 0, 0, 56, +/* 0x1170 */ 166, 3,200,125, 96,255, 1,248, 8, 0, 16, 32,255,255,192, 59, +/* 0x1180 */ 255, 0, 32, 63, 88,255, 1,144, 32, 0,222,123, 1, 0,224, 57, +/* 0x1190 */ 0, 0,160, 58, 0, 0, 96, 57, 0, 0,192, 58,255,255, 57, 99, +/* 0x11a0 */ 56,136,219,126, 54, 32,160, 86, 64,200,158,127,180, 7,125,127, +/* 0x11b0 */ 180, 7, 0,124, 20, 2,189,127,164, 15,189,123, 36, 0,157, 65, +/* 0x11c0 */ 64, 40,191,127,120, 1,158, 65, 0, 0, 31,136, 46, 64, 74, 85, +/* 0x11d0 */ 120, 83, 10,124, 40, 64,222,123, 32, 0, 74,121, 1, 0,255, 59, +/* 0x11e0 */ 46,234,148,127,254,170,218, 87,214,225, 90,127, 64,208,138,127, +/* 0x11f0 */ 32, 0, 64,123,160, 1,156, 64, 88,255,193,131, 0, 8,124, 35, +/* 0x1200 */ 48,246,107,125, 56,144,222,126, 48,128,222,127, 20,242,107,125, +/* 0x1210 */ 46, 64,126, 85, 42, 80,107, 85, 80, 88,126,125, 32, 0,107,121, +/* 0x1220 */ 6, 0,149, 47,112, 46,123,127, 54, 7,203, 59, 20,226,155,127, +/* 0x1230 */ 164, 15,222,123, 46,235,148,127, 20,242,212,127,192, 4,157, 64, +/* 0x1240 */ 80,176,111,125, 32, 0,107,121,174, 88, 71,127, 1, 0, 96, 57, +/* 0x1250 */ 28, 0, 0, 72, 46, 99,126,127,180, 7,107,125,120,235,160,127, +/* 0x1260 */ 172, 0,130, 64,255, 0,139, 47,172, 0,157, 65, 60, 8, 90, 87, +/* 0x1270 */ 238, 5, 76, 87,180, 7,140,125, 0, 0, 44, 44, 64,200,128,127, +/* 0x1280 */ 0, 1,140, 57, 60, 8,120, 85, 20, 90,140,125, 64, 40, 63,127, +/* 0x1290 */ 120,195, 11,127, 46, 64, 93, 85, 0, 0,128, 76, 1, 0, 24, 59, +/* 0x12a0 */ 164, 15,140,121,180, 7, 90,127, 28, 0,157, 65,144, 0,154, 65, +/* 0x12b0 */ 0, 0, 95,137, 40, 64, 0,120,120,235, 74,125, 32, 0, 74,121, +/* 0x12c0 */ 1, 0,255, 59, 46, 98,158,127,254,170, 29, 84,214,225,189,127, +/* 0x12d0 */ 0, 8,124, 35, 64,232,138,127,112, 46,123,127,126,217,151, 87, +/* 0x12e0 */ 20,226,123,127, 80, 0, 29,124, 80, 80,125,126, 80,224,151,127, +/* 0x12f0 */ 32, 0,189,123, 96,255,188, 65, 46, 99,158,127,180, 7, 11,127, +/* 0x1300 */ 32, 0, 0,120, 32, 0,106,122, 92,255,134, 64,255, 0,139, 47, +/* 0x1310 */ 4, 4,189, 64, 32, 6,107,121, 1, 0,182, 59,174,177,103,125, +/* 0x1320 */ 120, 3, 30,124, 32, 0,182,123, 9, 0,149, 47, 68, 8,157, 65, +/* 0x1330 */ 253,255,181, 58,180, 7,181,126, 64, 6, 0, 72, 1, 0, 96, 56, +/* 0x1340 */ 16, 0, 1,232,112,255,193,233,166, 3, 8,124,120,255,225,233, +/* 0x1350 */ 128,255, 1,234,136,255, 33,234,144,255, 65,234,152,255, 97,234, +/* 0x1360 */ 160,255,129,234,168,255,161,234,176,255,193,234,184,255,225,234, +/* 0x1370 */ 192,255, 1,235,200,255, 33,235,208,255, 65,235,216,255, 97,235, +/* 0x1380 */ 224,255,129,235,232,255,161,235,240,255,193,235,248,255,225,235, +/* 0x1390 */ 32, 0,128, 78, 80,240,218,127, 64,200,158,127,126,217,139, 87, +/* 0x13a0 */ 80,224,139,127, 80, 80, 90,127,192, 0,117, 57, 46,235,148,127, +/* 0x13b0 */ 32, 0,216,123, 32, 0, 74,123,164, 15,124,121, 36, 0,157, 65, +/* 0x13c0 */ 64, 40,191,127,120,255,190, 65, 0, 0, 95,137, 46, 64, 90, 87, +/* 0x13d0 */ 120,211, 74,125, 40, 64,216,123, 32, 0, 74,121, 1, 0,255, 59, +/* 0x13e0 */ 46,226, 20,124,254,170, 11, 87,214, 1,107,125, 64, 88,138,127, +/* 0x13f0 */ 32, 0,122,121,204, 3,156, 64, 7, 0,149, 47, 0, 8, 96, 33, +/* 0x1400 */ 112, 46,107,125, 38, 0,160,126,254,239,181, 86, 20, 2, 11,124, +/* 0x1410 */ 208, 0,181,126, 66,240,181,122, 0, 16,181,122, 46,227, 20,124, +/* 0x1420 */ 104,255,225,249, 3, 0,181, 58,104, 6, 99, 58, 64,200,154,127, +/* 0x1430 */ 36, 0,157, 65, 64, 40,191,127, 4,255,190, 65, 0, 0,127,137, +/* 0x1440 */ 46, 64, 74, 85,120, 83,106,125, 40, 64, 90,123, 32, 0, 74,121, +/* 0x1450 */ 1, 0,255, 59, 0, 0, 19,160,254,170, 75, 87,214, 1,107,125, +/* 0x1460 */ 64, 88,138,127, 32, 0,126,121, 72, 5,156, 64, 0, 8, 96, 33, +/* 0x1470 */ 56, 24,123, 87,112, 46,107,125,180, 7,123,127, 20, 2, 11,124, +/* 0x1480 */ 2, 0,123, 59, 0, 0, 96, 57,164, 15,123,123, 80,255, 97,249, +/* 0x1490 */ 0, 0, 19,176, 3, 0,128, 57, 20,218,115,126,255,255, 12, 59, +/* 0x14a0 */ 32, 0, 24,123, 1, 0, 24, 59,166, 3, 9,127, 1, 0,160, 59, +/* 0x14b0 */ 64,200,158,127, 60, 8,187, 87,164, 15,188,123, 64, 40, 63,127, +/* 0x14c0 */ 120,219,125,127, 46, 64, 75, 85, 1, 0,123, 59, 20,226,147,127, +/* 0x14d0 */ 28, 0,157, 65,104,254,186, 65, 0, 0, 95,137, 40, 64,222,123, +/* 0x14e0 */ 120, 91, 74,125, 32, 0, 74,121, 1, 0,255, 59, 0, 0,252,162, +/* 0x14f0 */ 254,170,203, 87,214,185,107,125, 0, 8, 23, 32, 64, 88,138,127, +/* 0x1500 */ 126,217,250, 86,112, 46, 0,124, 80,184, 90,127, 20,186, 0,124, +/* 0x1510 */ 80,240,203,127, 80, 80,235,126, 32, 0,107,121,164, 3,156, 64, +/* 0x1520 */ 0, 0, 28,176,180, 7,189,127,120, 91,126,125,132,255, 0, 66, +/* 0x1530 */ 80,255, 97,233, 1, 0, 0, 56, 48, 96, 12,124, 3, 0,149, 47, +/* 0x1540 */ 80, 88,140,125, 20,234,140,125, 80,255,129,145,188, 3,157, 65, +/* 0x1550 */ 3, 0,140, 47, 32, 0,139,121, 36, 6,157, 65, 6, 0, 0, 56, +/* 0x1560 */ 50, 48,107, 85,166, 3, 9,124,180, 7,107,125,176, 1,107, 57, +/* 0x1570 */ 164, 15,119,121, 1, 0,128, 59, 64,200,158,127, 60, 8,155, 87, +/* 0x1580 */ 164, 15,157,123, 64, 40, 63,127,120,219,124,127, 46, 64, 75, 85, +/* 0x1590 */ 1, 0,123, 59, 20,186,189,127, 28, 0,157, 65,160,253,186, 65, +/* 0x15a0 */ 0, 0, 95,137, 40, 64,222,123,120, 91, 74,125, 32, 0, 74,121, +/* 0x15b0 */ 1, 0,255, 59, 46,234,116,126,254,170,203, 87,214,153,107,125, +/* 0x15c0 */ 0, 8, 19, 32, 64, 88,138,127,126,217,122, 86,112, 46, 0,124, +/* 0x15d0 */ 80,152, 90,127, 20,154, 0,124, 80,240,235,125, 80, 80,107,126, +/* 0x15e0 */ 32, 0,126,121,244, 2,156, 64, 46,235, 20,124,180, 7,156,127, +/* 0x15f0 */ 136,255, 0, 66,192,255,156, 59, 3, 0,156, 47,180, 7,155,127, +/* 0x1600 */ 240, 2,157, 64, 13, 0,156, 47,254, 7,128, 87, 2, 0, 0, 96, +/* 0x1610 */ 112, 14,139,127, 32, 0, 29,120,192, 5,157, 65,255,255,107, 57, +/* 0x1620 */ 48, 88, 28,124,176, 2,187, 35, 20,226,189,127,164, 15,189,123, +/* 0x1630 */ 254,255,189, 59,180, 7,123,125, 20,234,116,125,255,255, 27, 56, +/* 0x1640 */ 32, 0, 29,120, 1, 0,189, 59, 1, 0, 96, 59, 1, 0, 64, 59, +/* 0x1650 */ 166, 3,169,127, 28, 0, 0, 72, 0, 0,184,179,180, 7,123,127, +/* 0x1660 */ 120, 3, 30,124, 60, 8, 90, 87,180, 7, 90,127,136, 2, 64, 66, +/* 0x1670 */ 64,200,158,127, 60, 8,119, 87,164, 15,120,123, 64, 40, 63,127, +/* 0x1680 */ 120,187,251,126, 46, 64, 64, 85,120,227, 79,127, 1, 0,247, 58, +/* 0x1690 */ 20,194, 11,127, 28, 0,157, 65,164,252,186, 65, 0, 0, 95,137, +/* 0x16a0 */ 40, 64,222,123,120, 3, 74,125, 32, 0, 74,121, 1, 0,255, 59, +/* 0x16b0 */ 0, 0,152,161,254,170,192, 87,214, 97, 0,124, 0, 8,172, 35, +/* 0x16c0 */ 64, 0,138,127,126,217,147, 85,112, 46,189,127, 80, 96,115,126, +/* 0x16d0 */ 20, 98,189,127, 80,240,192,127, 80, 80,128,125, 32, 0, 0,120, +/* 0x16e0 */ 120,255,188, 65, 0, 0,120,178, 32, 0,222,123, 32, 0,138,121, +/* 0x16f0 */ 180, 7,251,126, 32, 0,252,121,108,255,255, 75, 1, 0, 96, 57, +/* 0x1700 */ 20, 0, 0, 72, 46, 91,158,127,180, 7, 11,127,255, 0,139, 47, +/* 0x1710 */ 136, 0,157, 65, 64,200,128,127, 60, 8,122, 85,120,211, 88,127, +/* 0x1720 */ 64, 40, 63,127, 46, 64, 93, 85, 1, 0, 90, 59,164, 15,107,121, +/* 0x1730 */ 28, 0,157, 65, 8,252,186, 65, 0, 0, 95,137, 40, 64, 0,120, +/* 0x1740 */ 120,235, 74,125, 32, 0, 74,121, 1, 0,255, 59, 46, 90,254,126, +/* 0x1750 */ 254,170, 29, 84,214,185,189,127, 0, 8,151, 35, 64,232,138,127, +/* 0x1760 */ 126,217,251, 86,112, 46,156,127, 80,184,123,127, 20,186,156,127, +/* 0x1770 */ 80, 0,125,126, 80, 80,253,126, 32, 0,160,123,136,255,188, 65, +/* 0x1780 */ 46, 91,126,127,180, 7, 75,127,255, 0,139, 47, 32, 0, 96,122, +/* 0x1790 */ 32, 0,234,122,128,255,157, 64, 3, 0,149, 47, 1, 0,182, 59, +/* 0x17a0 */ 32, 6,107,121, 32, 0,189,123,174,177,103,125,120, 3, 30,124, +/* 0x17b0 */ 120,235,182,127,116,251,189, 65, 0, 0,160, 58,188, 1, 0, 72, +/* 0x17c0 */ 80,192, 11,127, 64,200,152,127,126,217, 30, 84, 80, 0, 30,124, +/* 0x17d0 */ 80, 80,107,125, 46,227, 20,124, 32, 0, 30,123, 32, 0,106,121, +/* 0x17e0 */ 24, 0, 28, 56, 36, 0,157, 65, 64, 40,191,127, 80,251,190, 65, +/* 0x17f0 */ 0, 0, 95,137, 46, 64,107, 85,120, 91, 74,125, 40, 64, 30,123, +/* 0x1800 */ 32, 0, 74,121, 1, 0,255, 59, 46, 2,116,125,254,170,216, 87, +/* 0x1810 */ 214, 89, 24,127, 64,192,138,127, 32, 0, 26,123, 36, 2,156, 64, +/* 0x1820 */ 0, 8,203, 35, 64,200,152,127,112, 46,222,127, 20, 90,126,125, +/* 0x1830 */ 46, 3,116,125,224, 1,189, 59, 36, 0,157, 65, 64, 40,191,127, +/* 0x1840 */ 252,250,190, 65, 0, 0,127,137, 46, 64, 74, 85,120, 83,106,125, +/* 0x1850 */ 40, 64, 26,123, 32, 0, 74,121, 1, 0,255, 59, 46,234, 20,124, +/* 0x1860 */ 254,170, 75, 87,214, 1,107,125, 64, 88,138,127, 32, 0,126,121, +/* 0x1870 */ 20, 3,156, 64, 0, 8, 96, 33, 0, 0,182, 47,112, 46,107,125, +/* 0x1880 */ 20, 2,107,125, 46,235,116,125,180,250,190, 65, 7, 0,149, 47, +/* 0x1890 */ 80,176,111,125, 32, 0,107,121, 38, 0,160,126,254,239,181, 86, +/* 0x18a0 */ 174, 88,103,125,208, 0,181,126,164, 7,181,122, 1, 0, 22, 56, +/* 0x18b0 */ 174,177,103,125, 11, 0,181, 58, 32, 0, 22,120,188, 0, 0, 72, +/* 0x18c0 */ 0, 0, 92,179, 32, 0,222,123, 32, 0,234,122,180, 7,125,127, +/* 0x18d0 */ 224,251, 0, 66, 92,252,255, 75, 46,235, 84,127, 32, 0,254,121, +/* 0x18e0 */ 32, 0,106,122,180, 7,124,127,144,252, 0, 66, 8,253,255, 75, +/* 0x18f0 */ 32, 0,156,123, 1, 0,156, 59, 33, 0,143,123,132, 0,130, 65, +/* 0x1900 */ 7, 0,181, 58,180, 7,181,126, 64,176,143,127, 48,250,189, 65, +/* 0x1910 */ 80,255, 97,129, 1, 0,150, 59, 20, 90, 28,124, 80,176,175,127, +/* 0x1920 */ 32, 0,189,123, 80, 0, 15,124, 80, 0, 29,124, 32, 0, 11,120, +/* 0x1930 */ 1, 0,107, 57,120,179,219,126,166, 3,105,125, 20, 0, 0, 72, +/* 0x1940 */ 120,179,219,126, 32, 0,189,123, 56, 0,157, 64, 1, 0,150, 59, +/* 0x1950 */ 174,232,103,125, 64,224,136,127, 1, 0,189, 59, 32, 0,150,123, +/* 0x1960 */ 174,217,103,125,220,255, 0, 66,104,255, 1,232, 96,255,193,249, +/* 0x1970 */ 166, 2,200,125,166, 3, 8,124, 64,176,136,127, 36,248,157, 65, +/* 0x1980 */ 255, 0, 64, 61,255,255, 74, 97, 64, 80,158,127, 16, 0,157, 65, +/* 0x1990 */ 64, 40,191,127,168,249,190, 65, 1, 0,255, 59, 80,248,132,124, +/* 0x19a0 */ 0, 0,134,144, 0, 0, 96, 56, 0, 0,201,146,148,249,255, 75, +/* 0x19b0 */ 80,208, 75,127, 64,200,154,127,126,217, 30, 84, 80, 80,107,125, +/* 0x19c0 */ 80, 0, 30,124, 32, 0, 93,123, 32, 0,106,121, 0, 0, 19,176, +/* 0x19d0 */ 36, 0,157, 65, 64, 40,191,127,100,249,190, 65, 0, 0, 31,136, +/* 0x19e0 */ 46, 64,106, 85,120, 83, 10,124, 40, 64, 93,123, 32, 0, 74,121, +/* 0x19f0 */ 1, 0,255, 59, 2, 0, 19,160,254,170,171, 87,214, 1,107,125, +/* 0x1a00 */ 64, 88,138,127, 32, 0,126,121, 56, 1,156, 64, 0, 8,160, 35, +/* 0x1a10 */ 56, 24,107, 87,180, 7,107,125,112, 46,189,127, 20, 2, 29,124, +/* 0x1a20 */ 130, 0,107, 57, 2, 0, 19,176,164, 15,107,121, 8, 0, 0, 56, +/* 0x1a30 */ 20, 90,115,126, 80,255, 1,248, 3, 0,128, 57, 96,250,255, 75, +/* 0x1a40 */ 80,240,216,127, 64,200,158,127,126,217,125, 85, 80, 88,125,125, +/* 0x1a50 */ 80, 80, 24,127, 32, 0,221,123, 32, 0, 10,123, 46, 3,116,125, +/* 0x1a60 */ 48, 0,252, 58, 36, 0,157, 65, 64, 40,191,127,208,248,190, 65, +/* 0x1a70 */ 0, 0,127,137, 46, 64, 10, 87,120, 83,106,125, 40, 64,221,123, +/* 0x1a80 */ 32, 0, 74,121, 1, 0,255, 59, 46,186, 20,124,254,170,171, 87, +/* 0x1a90 */ 214, 1,107,125, 64, 88,138,127, 32, 0,122,121, 24, 1,156, 65, +/* 0x1aa0 */ 80,232,171,127, 64,200,157,127,126,217, 30, 84, 80, 0, 30,124, +/* 0x1ab0 */ 80, 80,107,125, 32, 0,190,123, 32, 0,106,121, 46,187, 20,124, +/* 0x1ac0 */ 72, 0,156, 59, 36, 0,157, 65, 64, 40,191,127,112,248,190, 65, +/* 0x1ad0 */ 0, 0, 95,137, 46, 64,107, 85,120, 91, 74,125, 40, 64,190,123, +/* 0x1ae0 */ 32, 0, 74,121, 1, 0,255, 59, 46,226, 20,124,254,170,203, 87, +/* 0x1af0 */ 214, 1,107,125, 64, 88,138,127, 32, 0,122,121, 80, 1,156, 64, +/* 0x1b00 */ 0, 8, 96, 33,112, 46,107,125, 20, 2, 11,124,104,255,225,249, +/* 0x1b10 */ 46,227, 20,124,120,115,207,125, 96,255,193,233, 7, 0,149, 47, +/* 0x1b20 */ 108, 10, 99, 58, 38, 0,160,126,254,239,181, 86,208, 0,181,126, +/* 0x1b30 */ 66,240,181,122, 0, 16,181,122, 11, 0,181, 58,240,248,255, 75, +/* 0x1b40 */ 126,217, 30, 84, 80, 0, 30,124, 80, 80, 75,125, 80,232,203,127, +/* 0x1b50 */ 16, 0, 96, 57, 2, 0, 19,176, 32, 0, 74,121, 4, 2,115, 58, +/* 0x1b60 */ 32, 0,222,123, 80,255, 97,249, 8, 0,128, 57, 48,249,255, 75, +/* 0x1b70 */ 250,255,181, 58,180, 7,181,126, 0,254,255, 75, 3, 0, 96, 57, +/* 0x1b80 */ 220,249,255, 75,126,217, 30, 84, 80,208, 75,127, 80, 80, 75,125, +/* 0x1b90 */ 80, 0,126,125,166, 2, 8,124, 32, 0, 90,123,166, 3,200,125, +/* 0x1ba0 */ 104,255, 1,248, 32, 0, 74,121, 46,235,116,125, 96,255,193,233, +/* 0x1bb0 */ 108,255,255, 75, 0, 8, 96, 33,112, 46,107,125, 20, 2, 11,124, +/* 0x1bc0 */ 104,255,225,249, 46,187, 20,124,166, 2,232,125,166, 3,200,125, +/* 0x1bd0 */ 96,255,193,233, 72,255,255, 75,250,255,107, 57, 32, 0,107,121, +/* 0x1be0 */ 1, 0,107, 57,166, 3,105,125, 64,200,158,127, 60, 8,188, 87, +/* 0x1bf0 */ 64, 40, 63,127, 46, 64, 64, 85, 1, 0,155, 99, 28, 0,157, 65, +/* 0x1c00 */ 60,247,186, 65, 0, 0, 95,137, 40, 64,222,123,120, 3, 74,125, +/* 0x1c10 */ 32, 0, 74,121, 1, 0,255, 59,126,248,222, 87, 64,240,138,127, +/* 0x1c20 */ 80, 80, 30,124, 32, 0,157,123, 32, 0,222,123, 12, 0,156, 65, +/* 0x1c30 */ 32, 0, 10,120, 32, 0,125,123,176,255, 0, 66, 72, 6, 99, 57, +/* 0x1c40 */ 40, 32,188,123, 4, 0, 96, 59,244,249,255, 75,126,217, 29, 84, +/* 0x1c50 */ 80, 0, 29,124, 80,240,203,127, 80, 80, 75,125,104,255,225,249, +/* 0x1c60 */ 46,227, 20,124, 32, 0, 74,121, 32, 0,218,123, 96,255,225,233, +/* 0x1c70 */ 172,254,255, 75, 0, 0,192, 58, 36,253,255, 75, 0, 0, 0, 0, +/* 0x1c80 */ 0, 0, 0, 1, 56, 33, 0, 48,232,161, 0, 24,232,225, 0, 16, +/* 0x1c90 */ 232,165, 0, 0,232, 33, 0, 0,124,165, 58, 20,232, 1, 0, 16, +/* 0x1ca0 */ 56,165,255,255,232, 33, 0, 0,124, 8, 3,166,232,230, 0, 0, +/* 0x1cb0 */ 125,168, 3,166,124,100, 24, 80,124,135, 40, 80, 56, 99, 0, 1, +/* 0x1cc0 */ 56,132, 0, 1,248,134, 0, 0, 96,231, 0, 31,124, 0, 56,108, +/* 0x1cd0 */ 124, 39, 40, 64,124, 0, 63,172, 56,231, 0, 32, 65,128,255,240, +/* 0x1ce0 */ 124, 0, 4,172, 76, 0, 1, 44, 78,128, 0, 32, 72, 0, 0, 1, +/* 0x1cf0 */ 80, 82, 79, 84, 95, 69, 88, 69, 67,124, 80, 82, 79, 84, 95, 87, +/* 0x1d00 */ 82, 73, 84, 69, 32,102, 97,105,108,101,100, 46, 10, 0, 0, 0, +/* 0x1d10 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x1d20 */ 0, 0, 0, 0, 0, 0, 0, 0, 56,160, 0, 30,124,136, 2,166, +/* 0x1d30 */ 56, 96, 0, 2, 56, 0, 0, 4, 68, 0, 0, 2, 56, 96, 0,127, +/* 0x1d40 */ 56, 0, 0, 1, 68, 0, 0, 2,127,200, 2,166,131, 94, 0, 0, +/* 0x1d50 */ 128,126, 0, 8, 57, 0, 0, 0, 60,128, 0, 1, 56,224,255,255, +/* 0x1d60 */ 124, 99,242, 20, 56,192, 0, 50, 56, 99, 0, 15, 56,160, 0, 7, +/* 0x1d70 */ 124, 99, 34, 20, 56, 0, 0, 90, 84, 99, 0, 30, 68, 0, 0, 2, +/* 0x1d80 */ 65,195, 0, 0,127,233, 3,166,128, 30, 0, 4,136,254, 0, 12, +/* 0x1d90 */ 56,193, 0,248,248, 1, 0,248,124,101, 27,120,124,104, 3,166, +/* 0x1da0 */ 128,158, 0, 8, 56,126, 0, 16, 56, 33,255,208, 78,128, 4, 32, +/* 0x1db0 */ 248, 33,255, 1,248, 65, 0, 8,248, 97, 0, 16,248,129, 0, 24, +/* 0x1dc0 */ 248,161, 0, 32,248,193, 0, 40,248,225, 0, 48,249, 1, 0, 56, +/* 0x1dd0 */ 249, 33, 0, 64,249, 65, 0, 72,249, 97, 0, 80,249,129, 0, 88, +/* 0x1de0 */ 249,161, 0, 96,249,193, 0,104,249,225, 0,112,250, 1, 0,120, +/* 0x1df0 */ 250, 33, 0,128,250, 65, 0,136,250, 97, 0,144,250,129, 0,152, +/* 0x1e00 */ 250,161, 0,160,250,193, 0,168,250,225, 0,176,251, 1, 0,184, +/* 0x1e10 */ 251, 33, 0,192,251, 65, 0,200,251, 97, 0,208,251,129, 0,216, +/* 0x1e20 */ 251,161, 0,224,251,193, 0,232,251,225, 0,240,127,232, 2,166, +/* 0x1e30 */ 75,255,255, 25, 0, 0, 0, 0,102,105,108,101, 32,102,111,114, +/* 0x1e40 */ 109, 97,116, 32,101,108,102, 54, 52, 45,112,111,119,101,114,112, +/* 0x1e50 */ 99, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, +/* 0x1e60 */ 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83, +/* 0x1e70 */ 105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, +/* 0x1e80 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, +/* 0x1e90 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108, +/* 0x1ea0 */ 101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97, +/* 0x1eb0 */ 103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, +/* 0x1ec0 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, +/* 0x1ed0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x1ee0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1ef0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, +/* 0x1f00 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, +/* 0x1f10 */ 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, +/* 0x1f20 */ 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, +/* 0x1f30 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, +/* 0x1f40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, +/* 0x1f50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, +/* 0x1f60 */ 48, 48, 48, 52, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, +/* 0x1f70 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, +/* 0x1f80 */ 32, 32, 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, +/* 0x1f90 */ 32, 32, 48, 48, 48, 48, 48, 49, 54, 56, 32, 32, 48, 48, 48, 48, +/* 0x1fa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, +/* 0x1fb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, +/* 0x1fc0 */ 48, 48, 48, 48, 48, 48, 52, 52, 32, 32, 50, 42, 42, 48, 32, 32, +/* 0x1fd0 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, +/* 0x1fe0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, +/* 0x1ff0 */ 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, +/* 0x2000 */ 48, 49, 52, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2010 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2020 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, +/* 0x2030 */ 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, +/* 0x2040 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, +/* 0x2050 */ 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, +/* 0x2060 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 49, 56, 32, 32, +/* 0x2070 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2080 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2090 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 50,102, 48, 32, 32, 50, 42, +/* 0x20a0 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, +/* 0x20b0 */ 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, +/* 0x20c0 */ 53, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, +/* 0x20d0 */ 48, 48, 48, 48, 48, 48, 57, 52, 32, 32, 48, 48, 48, 48, 48, 48, +/* 0x20e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, +/* 0x20f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, +/* 0x2100 */ 48, 48, 48, 52, 48, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, +/* 0x2110 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, +/* 0x2120 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, +/* 0x2130 */ 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 98, +/* 0x2140 */ 98, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2150 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2160 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 57, 99, +/* 0x2170 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, +/* 0x2180 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, +/* 0x2190 */ 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, +/* 0x21a0 */ 48, 48, 99, 51, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x21b0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, +/* 0x21c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, +/* 0x21d0 */ 48, 53, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, +/* 0x21e0 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, +/* 0x21f0 */ 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, +/* 0x2200 */ 48, 48, 48, 48, 48, 48, 50, 56, 32, 32, 48, 48, 48, 48, 48, 48, +/* 0x2210 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, +/* 0x2220 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, +/* 0x2230 */ 48, 48, 49, 99, 56, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, +/* 0x2240 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, +/* 0x2250 */ 10, 32, 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, +/* 0x2260 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 99, 32, 32, 48, 48, 48, +/* 0x2270 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, +/* 0x2280 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x2290 */ 32, 48, 48, 48, 48, 49, 99, 97, 99, 32, 32, 50, 42, 42, 48, 32, +/* 0x22a0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, +/* 0x22b0 */ 78, 76, 89, 10, 32, 49, 48, 32, 67, 70, 76, 85, 83, 72, 32, 32, +/* 0x22c0 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 52, 32, 32, +/* 0x22d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x22e0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x22f0 */ 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 99, 56, 32, 32, 50, 42, +/* 0x2300 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, +/* 0x2310 */ 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, +/* 0x2320 */ 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, +/* 0x2330 */ 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2340 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2350 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99,101, 99, 32, +/* 0x2360 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, +/* 0x2370 */ 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, +/* 0x2380 */ 10, 32, 49, 50, 32, 69, 76, 70, 77, 65, 73, 78, 90,101, 32, 32, +/* 0x2390 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 56, 32, 32, 48, 48, 48, +/* 0x23a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, +/* 0x23b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x23c0 */ 32, 48, 48, 48, 48, 49,100, 49, 48, 32, 32, 50, 42, 42, 51, 32, +/* 0x23d0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, +/* 0x23e0 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 51, 32, 69, +/* 0x23f0 */ 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48, 48, +/* 0x2400 */ 48, 48, 49, 49, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2410 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, +/* 0x2420 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, +/* 0x2430 */ 100, 50, 56, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, +/* 0x2440 */ 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, +/* 0x2450 */ 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, +/* 0x2460 */ 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2470 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, +/* 0x2480 */ 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2490 */ 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, +/* 0x24a0 */ 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x24b0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, +/* 0x24c0 */ 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x24d0 */ 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, +/* 0x24e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x24f0 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, +/* 0x2500 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2510 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, +/* 0x2520 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, +/* 0x2530 */ 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, +/* 0x2540 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, +/* 0x2550 */ 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2560 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, +/* 0x2570 */ 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, +/* 0x2580 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, +/* 0x2590 */ 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x25a0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, +/* 0x25b0 */ 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x25c0 */ 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, +/* 0x25d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x25e0 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, +/* 0x25f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, +/* 0x2600 */ 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2610 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, +/* 0x2620 */ 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2630 */ 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, +/* 0x2640 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, +/* 0x2650 */ 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, +/* 0x2660 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, +/* 0x2670 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2680 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, +/* 0x2690 */ 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x26a0 */ 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, +/* 0x26b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x26c0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, +/* 0x26d0 */ 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x26e0 */ 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, +/* 0x26f0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2700 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, +/* 0x2710 */ 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2720 */ 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, +/* 0x2730 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2740 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 70, 76, 85, 83, 72, +/* 0x2750 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2760 */ 48, 32, 67, 70, 76, 85, 83, 72, 10, 48, 48, 48, 48, 48, 48, 48, +/* 0x2770 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, +/* 0x2780 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 90,101, 9, 48, 48, 48, 48, +/* 0x2790 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, +/* 0x27a0 */ 77, 65, 73, 78, 90,101, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x27b0 */ 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, +/* 0x27c0 */ 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, +/* 0x27d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, +/* 0x27e0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x27f0 */ 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, +/* 0x2800 */ 78, 90,101, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2810 */ 48, 48, 48, 48, 32,101,110,116,114,121, 95,100,101,115, 99,114, +/* 0x2820 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2830 */ 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, +/* 0x2840 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2850 */ 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, 67, 65, +/* 0x2860 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, +/* 0x2870 */ 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, +/* 0x2880 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, +/* 0x2890 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x28a0 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x28b0 */ 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, +/* 0x28c0 */ 69, 76, 50, 52, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, +/* 0x28d0 */ 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x28e0 */ 48, 48, 56, 56, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, +/* 0x28f0 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, +/* 0x2900 */ 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, +/* 0x2910 */ 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, +/* 0x2920 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, +/* 0x2930 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 52, 32, +/* 0x2940 */ 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, +/* 0x2950 */ 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, +/* 0x2960 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, +/* 0x2970 */ 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, +/* 0x2980 */ 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, +/* 0x2990 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, +/* 0x29a0 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x29b0 */ 48, 48, 48, 99, 99, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, +/* 0x29c0 */ 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, +/* 0x29d0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, +/* 0x29e0 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, +/* 0x29f0 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x2a00 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x2a10 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, +/* 0x2a20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 98, 56, 32, 82, 95, 80, 80, +/* 0x2a30 */ 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, +/* 0x2a40 */ 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, +/* 0x2a50 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, +/* 0x2a60 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, +/* 0x2a70 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, +/* 0x2a80 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x2a90 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2aa0 */ 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, +/* 0x2ab0 */ 69, 76, 49, 52, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, +/* 0x2ac0 */ 67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2ad0 */ 48, 48, 48, 48, 50, 56, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, +/* 0x2ae0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, +/* 0x2af0 */ 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, +/* 0x2b00 */ 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, +/* 0x2b10 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, +/* 0x2b20 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2b30 */ 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, +/* 0x2b40 */ 50, 52, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, +/* 0x2b50 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, +/* 0x2b60 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, +/* 0x2b70 */ 90,101, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, +/* 0x2b80 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, +/* 0x2b90 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, +/* 0x2ba0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, +/* 0x2bb0 */ 95, 80, 80, 67, 54, 52, 95, 65, 68, 68, 82, 54, 52, 32, 32, 32, +/* 0x2bc0 */ 32, 95,115,116, 97,114,116, 10, 10, 82, 69, 76, 79, 67, 65, 84, +/* 0x2bd0 */ 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, +/* 0x2be0 */ 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, +/* 0x2bf0 */ 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, +/* 0x2c00 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, +/* 0x2c10 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2c20 */ 48, 48, 48, 53, 56, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, +/* 0x2c30 */ 76, 49, 52, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, +/* 0x2c40 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, +/* 0x2c50 */ 99, 32, 82, 95, 80, 80, 67, 54, 52, 95, 65, 68, 68, 82, 51, 50, +/* 0x2c60 */ 32, 32, 32, 32, 79, 95, 66, 73, 78, 70, 79, 10 +}; diff --git a/src/stub/powerpc64-linux.elf-fold.h b/src/stub/powerpc64-linux.elf-fold.h new file mode 100644 index 00000000..a2652463 --- /dev/null +++ b/src/stub/powerpc64-linux.elf-fold.h @@ -0,0 +1,198 @@ +/* powerpc64-linux.elf-fold.h + created from powerpc64-linux.elf-fold.bin, 2536 (0x9e8) bytes + + This file is part of the UPX executable compressor. + + Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer + Copyright (C) 1996-2017 Laszlo Molnar + Copyright (C) 2000-2017 John F. Reiser + All Rights Reserved. + + UPX and the UCL library are free software; you can redistribute them + and/or modify them under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + If not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Markus F.X.J. Oberhumer Laszlo Molnar + + + John F. Reiser + + */ + + +#define STUB_POWERPC64_LINUX_ELF_FOLD_SIZE 2536 +#define STUB_POWERPC64_LINUX_ELF_FOLD_ADLER32 0x3bda8ef9 +#define STUB_POWERPC64_LINUX_ELF_FOLD_CRC32 0xe5f29d29 + +unsigned char stub_powerpc64_linux_elf_fold[2536] = { +/* 0x0000 */ 127, 69, 76, 70, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0010 */ 0, 2, 0, 21, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 9,152, +/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0030 */ 0, 0, 0, 1, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, +/* 0x0040 */ 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, +/* 0x0050 */ 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, +/* 0x0060 */ 0, 0, 0, 0, 0, 0, 9,148, 0, 0, 0, 0, 0, 0, 9,148, +/* 0x0070 */ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, +/* 0x0080 */ 0, 0, 0, 0, 0, 0, 9,152, 0, 0, 0, 0, 0, 16, 9,152, +/* 0x0090 */ 0, 0, 0, 0, 0, 16, 9,152, 0, 0, 0, 0, 0, 0, 0, 80, +/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 1, 0, 0, +/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0,125, +/* 0x00c0 */ 40, 6, 0,208, 76,194, 0, 32, 84,132,240,191, 77,194, 0, 32, +/* 0x00d0 */ 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8,124, 4, 3,120, +/* 0x00e0 */ 56,165, 1, 32,124,103, 27,120, 56, 99,255,252,124,137, 3,166, +/* 0x00f0 */ 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80,125,107, 58, 20, +/* 0x0100 */ 81, 98, 1,186,144, 67, 0, 0, 79, 64, 0, 32,132, 67, 0, 4, +/* 0x0110 */ 84, 75, 85,190,124, 11, 40, 64, 65,194,255,220, 67, 32,255,240, +/* 0x0120 */ 78,128, 0, 32,232, 73, 0, 0, 57, 41, 0, 8, 43,162, 0, 0, +/* 0x0130 */ 64,254,255,244, 78,128, 0, 32,125, 8, 2,166,233, 33, 0, 48, +/* 0x0140 */ 75,255,255,229, 75,255,255,225, 57, 65, 1, 40,248, 74, 0, 0, +/* 0x0150 */ 56, 33,248, 0,128,159,255,248, 85, 30, 0, 38,127,164,248, 80, +/* 0x0160 */ 127,231,251,120, 59,189,255,248,124,154, 32, 80,124,125,210, 20, +/* 0x0170 */ 56,161, 0, 48,128,195, 0, 0,248,225, 0, 24, 56,225, 0, 24, +/* 0x0180 */ 249, 1, 0, 32, 57, 1, 0, 32, 72, 0, 5,229,232, 1, 9, 40, +/* 0x0190 */ 232, 67, 0, 8,124, 66, 2, 20,232, 99, 0, 0,124, 99, 2, 20, +/* 0x01a0 */ 124,127, 27,120,127,163,235,120,124,157,240, 80, 72, 0, 0,205, +/* 0x01b0 */ 127,232, 3,166,232, 97, 8, 64,232,129, 8, 72,232,161, 8, 80, +/* 0x01c0 */ 232,193, 8, 88,232,225, 8, 96,233, 1, 8,104,233, 33, 8,112, +/* 0x01d0 */ 233, 65, 8,120,233, 97, 8,128,233,129, 8,136,233,161, 8,144, +/* 0x01e0 */ 233,193, 8,152,233,225, 8,160,234, 1, 8,168,234, 33, 8,176, +/* 0x01f0 */ 234, 65, 8,184,234, 97, 8,192,234,129, 8,200,234,161, 8,208, +/* 0x0200 */ 234,193, 8,216,234,225, 8,224,235, 1, 8,232,235, 33, 8,240, +/* 0x0210 */ 235, 65, 8,248,235, 97, 9, 0,235,129, 9, 8,235,161, 9, 16, +/* 0x0220 */ 235,193, 9, 24,235,225, 9, 32,232, 33, 8, 48, 56, 0, 0, 0, +/* 0x0230 */ 124, 15,241, 32,124, 9, 3,166, 78,128, 0, 32, 56, 0, 0, 90, +/* 0x0240 */ 68, 0, 0, 2, 64,227, 0, 8, 56, 96,255,255, 78,128, 0, 32, +/* 0x0250 */ 56, 0, 0, 1, 75,255,255,236, 56, 0, 0, 3, 75,255,255,228, +/* 0x0260 */ 56, 0, 0, 5, 75,255,255,220, 56, 0, 0, 6, 75,255,255,212, +/* 0x0270 */ 56, 0, 0,125, 75,255,255,204, 56, 0, 0, 91, 75,255,255,196, +/* 0x0280 */ 56, 0, 0, 45, 75,255,255,188, 44, 35, 0, 0, 77,130, 0, 32, +/* 0x0290 */ 47, 36, 0, 0,233, 67, 0, 0,127,170, 32, 64, 64,158, 0, 16, +/* 0x02a0 */ 248,131, 0, 0,248,163, 0, 8, 78,128, 0, 32, 43,170, 0, 1, +/* 0x02b0 */ 64,158, 0, 8, 64,154,255,236, 56, 99, 0, 16, 75,255,255,216, +/* 0x02c0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 67, 0, 0, +/* 0x02d0 */ 233, 3, 0, 8, 56,229, 0, 1, 57, 32, 0, 0,124,233, 3,166, +/* 0x02e0 */ 127,170, 40, 64, 64,252, 0, 28,124, 8, 2,166, 56, 96, 0,127, +/* 0x02f0 */ 248, 1, 0, 16,248, 33,255,145, 75,255,255, 89, 96, 0, 0, 0, +/* 0x0300 */ 66, 64, 0, 20,125, 72, 72,174,125, 68, 73,174, 57, 41, 0, 1, +/* 0x0310 */ 75,255,255,240,233, 67, 0, 8,125, 74, 74, 20,249, 67, 0, 8, +/* 0x0320 */ 233, 67, 0, 0,125, 41, 80, 80,249, 35, 0, 0, 78,128, 0, 32, +/* 0x0330 */ 0, 0, 0, 0, 0, 0, 0, 1,128, 0, 0, 0,125,128, 0, 38, +/* 0x0340 */ 124, 8, 2,166,145,129, 0, 8, 72, 0, 5,225,248, 33,255, 81, +/* 0x0350 */ 124,126, 27,120,124,159, 35,120,124,189, 43,120,124,220, 51,120, +/* 0x0360 */ 46, 38, 0, 0,233, 63, 0, 0, 47,169, 0, 0, 65,158, 1, 64, +/* 0x0370 */ 127,195,243,120, 56,129, 0,112, 56,160, 0, 12, 75,255,255, 81, +/* 0x0380 */ 129, 65, 0,112,129, 33, 0,116, 47,170, 0, 0, 64,158, 0, 32, +/* 0x0390 */ 109, 37, 33, 88, 47,133, 80, 85, 64,158, 0, 28,233, 62, 0, 0, +/* 0x03a0 */ 47,169, 0, 0, 65,254, 1, 8, 72, 0, 0, 12,121, 41, 0, 33, +/* 0x03b0 */ 64,226, 0, 16, 56, 96, 0,127, 75,255,254,153, 96, 0, 0, 0, +/* 0x03c0 */ 127, 9, 80, 64, 65,217,255,240,233, 31, 0, 0,127,170, 64, 64, +/* 0x03d0 */ 65,221,255,228,232,191, 0, 8, 64,152, 0,164,125, 36, 75,120, +/* 0x03e0 */ 233, 61, 0, 0,232,126, 0, 8, 56,193, 0,128,249, 65, 0,128, +/* 0x03f0 */ 248, 65, 0, 40,136,225, 0,120,233,125, 0, 16,125, 41, 3,166, +/* 0x0400 */ 232, 93, 0, 8, 78,128, 4, 33,232, 65, 0, 40, 47,163, 0, 0, +/* 0x0410 */ 64,222,255,164,232,129, 0,128,129, 33, 0,112,127,164, 72, 0, +/* 0x0420 */ 64,222,255,148,136,193, 0,121, 47,166, 0, 0, 65,158, 0, 48, +/* 0x0430 */ 65,146, 0, 44,232,127, 0, 8,136,161, 0,122,120,132, 0, 32, +/* 0x0440 */ 248, 65, 0, 40,233, 60, 0, 0,233,124, 0, 16,125, 41, 3,166, +/* 0x0450 */ 232, 92, 0, 8, 78,128, 4, 33,232, 65, 0, 40,129, 1, 0,116, +/* 0x0460 */ 233, 94, 0, 8,233, 62, 0, 0,125, 74, 66, 20,125, 40, 72, 80, +/* 0x0470 */ 249, 94, 0, 8,249, 62, 0, 0, 72, 0, 0, 20,124,164, 43,120, +/* 0x0480 */ 127,195,243,120,125, 37, 75,120, 75,255,254, 69,129, 1, 0,112, +/* 0x0490 */ 233, 95, 0, 8,233, 63, 0, 0,125, 74, 66, 20,125, 40, 72, 80, +/* 0x04a0 */ 249, 95, 0, 8,249, 63, 0, 0, 75,255,254,188, 56, 33, 0,176, +/* 0x04b0 */ 129,129, 0, 8,125,144,129, 32, 72, 0, 4,192, 0, 0, 0, 0, +/* 0x04c0 */ 0, 0, 0, 3,128, 4, 0, 0,124, 8, 2,166,125,128, 0, 38, +/* 0x04d0 */ 72, 0, 4, 33,125, 58, 75,120,161, 35, 0, 16,235,163, 0, 32, +/* 0x04e0 */ 124,215, 51,120,124,123, 27,120,124,153, 35,120, 47,137, 0, 3, +/* 0x04f0 */ 145,129, 0, 8,248, 33,254,241,124,184, 43,120,124,246, 59,120, +/* 0x0500 */ 125, 21, 67,120,127,163,234, 20, 56,192, 0, 16, 64,158, 0, 8, +/* 0x0510 */ 56,192, 0, 0,161, 59, 0, 56, 56,198, 8, 34,127,168,235,120, +/* 0x0520 */ 57, 64, 0, 0, 59,192,255,255, 57, 41, 0, 1,125, 41, 3,166, +/* 0x0530 */ 66, 64, 0, 60,129, 40, 0, 0, 47,137, 0, 1, 64,158, 0, 40, +/* 0x0540 */ 232,232, 0, 16,127,190, 56, 64, 64,157, 0, 8,124,254, 59,120, +/* 0x0550 */ 233, 40, 0, 40,125, 39, 74, 20,127,170, 72, 64, 64,156, 0, 8, +/* 0x0560 */ 125, 42, 75,120, 57, 8, 0, 56, 75,255,255,200, 61, 74, 0, 1, +/* 0x0570 */ 123,222, 3,228, 57, 74,255,255,127,195,243,120,124,158, 80, 80, +/* 0x0580 */ 56,160, 0, 0,120,132, 3,228,124,198, 7,180, 56,224,255,255, +/* 0x0590 */ 57, 0, 0, 0, 75,255,252,169, 96, 0, 0, 0, 62, 64,115, 81, +/* 0x05a0 */ 58,128, 0, 0, 46, 57, 0, 0, 98, 82, 98, 64,127,222, 24, 80, +/* 0x05b0 */ 58, 32, 0, 0,161, 59, 0, 56,127,137,160, 0, 64,157, 1,128, +/* 0x05c0 */ 129, 61, 0, 0, 65,146, 0, 36, 47,137, 0, 6, 64,158, 0, 28, +/* 0x05d0 */ 232,189, 0, 16,126,227,187,120, 56,128, 0, 3,124,190, 42, 20, +/* 0x05e0 */ 75,255,252,169, 72, 0, 1, 72, 47,137, 0, 1, 64,158, 1, 64, +/* 0x05f0 */ 129,253, 0, 4,235,157, 0, 16,235,253, 0, 32,234,125, 0, 40, +/* 0x0600 */ 85,239, 22,250,127,158,226, 20,251,225, 0,112,126, 79,124, 48, +/* 0x0610 */ 123,137, 4, 32,251,129, 0,120,126,124,154, 20,127,233,250, 20, +/* 0x0620 */ 123,156, 3,228, 85,240, 7,126, 64,146, 0, 12, 56,160, 0, 0, +/* 0x0630 */ 72, 0, 0, 8, 56,160, 0, 2,124,165,131,120,124,165, 7,180, +/* 0x0640 */ 64,146, 0, 16,127, 7,195,120, 56,192, 0, 18, 72, 0, 0, 12, +/* 0x0650 */ 56,192, 0, 50, 56,224,255,255,233, 29, 0, 8,127,131,227,120, +/* 0x0660 */ 127,228,251,120,125, 9, 64, 80, 75,255,251,213, 96, 0, 0, 0, +/* 0x0670 */ 127,188, 24, 0, 65,254, 0, 16, 56, 96, 0,127, 75,255,251,213, +/* 0x0680 */ 96, 0, 0, 0, 65,146, 0, 24,127, 35,203,120, 56,129, 0,112, +/* 0x0690 */ 126,197,179,120,126,166,171,120, 75,255,252,165,125,223, 0,208, +/* 0x06a0 */ 121,233,255,227,121,206, 4, 32, 64,130, 0, 12, 64,146, 0, 44, +/* 0x06b0 */ 72, 0, 0, 68, 47,174, 0, 0, 65,158,255,244,125,201, 3,166, +/* 0x06c0 */ 125, 92,250, 20, 57, 32, 0, 0,126, 42, 73,174, 57, 41, 0, 1, +/* 0x06d0 */ 66, 0,255,248, 75,255,255,216,127,131,227,120,127,228,251,120, +/* 0x06e0 */ 126, 5, 7,180, 75,255,251,141, 96, 0, 0, 0, 47,163, 0, 0, +/* 0x06f0 */ 64,222,255,136,127,238,250, 20,127,252,250, 20,127,191,152, 64, +/* 0x0700 */ 64,156, 0, 44,127,227,251,120,124,159,152, 80,126, 5, 7,180, +/* 0x0710 */ 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, 75,255,251, 33, +/* 0x0720 */ 96, 0, 0, 0,127,191, 24, 0, 64,222,255, 80, 58,148, 0, 1, +/* 0x0730 */ 59,189, 0, 56,126,148, 7,180, 75,255,254,124, 47,186, 0, 0, +/* 0x0740 */ 65,158, 0, 8,251,218, 0, 0, 56, 33, 1, 16,232,123, 0, 24, +/* 0x0750 */ 124,126, 26, 20,129,129, 0, 8,125,144,129, 32, 72, 0, 1,228, +/* 0x0760 */ 0, 0, 0, 0, 0, 0, 0, 3,128, 18, 0, 0,124, 8, 2,166, +/* 0x0770 */ 56,192, 0, 0, 72, 0, 1,173,248, 33,255, 33,124,191, 43,120, +/* 0x0780 */ 125, 62, 75,120,125, 91, 83,120,129, 35, 0, 0, 59,165, 0, 64, +/* 0x0790 */ 248, 97, 0,152,248,129, 0,144,248,161, 0,136,249, 33, 0,128, +/* 0x07a0 */ 124,229, 59,120,248,225, 0,160,249, 1, 0,168, 56, 97, 0,144, +/* 0x07b0 */ 56,129, 0,128,233, 65, 0,144,233, 97, 0,152,249, 65, 0,112, +/* 0x07c0 */ 249, 97, 0,120, 75,255,251,121,127,195,243,120, 56,128, 0, 3, +/* 0x07d0 */ 232,191, 0, 80, 56,165, 0, 64, 75,255,250,177,160,191, 0, 56, +/* 0x07e0 */ 127,195,243,120, 56,128, 0, 5, 75,255,250,161,128,191, 0, 28, +/* 0x07f0 */ 127,195,243,120, 56,128, 0, 9, 75,255,250,145,232,225, 0,160, +/* 0x0800 */ 233, 1, 0,168,127,198,243,120, 56,129, 0,112, 56,160, 0, 0, +/* 0x0810 */ 127,105,219,120,127,227,251,120, 75,255,252,177, 56,128, 0, 9, +/* 0x0820 */ 124,124, 27,120,127,195,243,120,127,133,227,120, 59,192, 0, 0, +/* 0x0830 */ 75,255,250, 89,161, 31, 0, 56,127,136,240, 0, 64,157, 0,156, +/* 0x0840 */ 129, 61, 0, 0, 47,137, 0, 3, 64,158, 0,128,232,125, 0, 16, +/* 0x0850 */ 233, 59, 0, 0, 56,128, 0, 0, 56,160, 0, 0,124, 99, 74, 20, +/* 0x0860 */ 75,255,250, 1, 96, 0, 0, 0, 47,131, 0, 0,124,122, 27,120, +/* 0x0870 */ 64,252, 0, 16, 56, 96, 0,127, 75,255,249,217, 96, 0, 0, 0, +/* 0x0880 */ 127,228,251,120, 56,160, 4, 0, 75,255,249,209, 96, 0, 0, 0, +/* 0x0890 */ 47,163, 4, 0, 64,222,255,224,127,227,251,120, 56,128, 0, 0, +/* 0x08a0 */ 127, 69,211,120, 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, +/* 0x08b0 */ 127,105,219,120, 75,255,252, 21,124,124, 27,120,127, 67,211,120, +/* 0x08c0 */ 75,255,249,169, 96, 0, 0, 0, 59,222, 0, 1, 59,189, 0, 56, +/* 0x08d0 */ 127,222, 7,180, 75,255,255, 96, 56, 33, 0,224,127,131,227,120, +/* 0x08e0 */ 72, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 1,128, 6, 0, 0, +/* 0x08f0 */ 249,193,255,112,249,225,255,120,250, 1,255,128,250, 33,255,136, +/* 0x0900 */ 250, 65,255,144,250, 97,255,152,250,129,255,160,250,161,255,168, +/* 0x0910 */ 250,193,255,176,250,225,255,184,251, 1,255,192,251, 33,255,200, +/* 0x0920 */ 251, 65,255,208,251, 97,255,216,251,129,255,224,251,161,255,232, +/* 0x0930 */ 251,193,255,240,251,225,255,248,248, 1, 0, 16, 78,128, 0, 32, +/* 0x0940 */ 233,193,255,112,233,225,255,120,234, 1,255,128,234, 33,255,136, +/* 0x0950 */ 234, 65,255,144,234, 97,255,152,234,129,255,160,234,161,255,168, +/* 0x0960 */ 234,193,255,176,234,225,255,184,235, 1,255,192,235, 33,255,200, +/* 0x0970 */ 235, 65,255,208,235, 97,255,216,235,129,255,224,232, 1, 0, 16, +/* 0x0980 */ 235,161,255,232,124, 8, 3,166,235,193,255,240,235,225,255,248, +/* 0x0990 */ 78,128, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 2,136, +/* 0x09a0 */ 0, 0, 0, 0, 0, 16,137,152, 0, 0, 0, 0, 0, 16, 2,204, +/* 0x09b0 */ 0, 0, 0, 0, 0, 16,137,152, 0, 0, 0, 0, 0, 16, 3, 60, +/* 0x09c0 */ 0, 0, 0, 0, 0, 16,137,152, 0, 0, 0, 0, 0, 16, 4,200, +/* 0x09d0 */ 0, 0, 0, 0, 0, 16,137,152, 0, 0, 0, 0, 0, 16, 7,108, +/* 0x09e0 */ 0, 0, 0, 0, 0, 16,137,152 +}; diff --git a/src/stub/powerpc64le-linux.elf-entry.h b/src/stub/powerpc64le-linux.elf-entry.h index 08e194b8..d4705616 100644 --- a/src/stub/powerpc64le-linux.elf-entry.h +++ b/src/stub/powerpc64le-linux.elf-entry.h @@ -1,5 +1,5 @@ /* powerpc64le-linux.elf-entry.h - created from powerpc64le-linux.elf-entry.bin, 11018 (0x2b0a) bytes + created from powerpc64le-linux.elf-entry.bin, 10998 (0x2af6) bytes This file is part of the UPX executable compressor. @@ -31,14 +31,14 @@ */ -#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_SIZE 11018 -#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_ADLER32 0xf1704a2d -#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_CRC32 0x7f036a10 +#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_SIZE 10998 +#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_ADLER32 0x82284965 +#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_CRC32 0x3f0e7f29 -unsigned char stub_powerpc64le_linux_elf_entry[11018] = { +unsigned char stub_powerpc64le_linux_elf_entry[10998] = { /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0010 */ 1, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 56, 33, 0, 0, 0, 0, 0, 0, +/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, /* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, /* 0x0040 */ 1, 0, 0, 72,236, 41, 0,124,166, 2,168,125, 8, 0, 7, 40, /* 0x0050 */ 92, 1,130, 64, 0, 0,166,248, 20, 26,132,124, 0,128, 0, 60, @@ -498,231 +498,230 @@ unsigned char stub_powerpc64le_linux_elf_entry[11018] = { /* 0x1cb0 */ 166, 3,168,125, 80, 24,100,124, 80, 40,135,124, 1, 0, 99, 56, /* 0x1cc0 */ 1, 0,132, 56, 0, 0,134,248, 31, 0,231, 96,108, 56, 0,124, /* 0x1cd0 */ 64, 40, 39,124,172, 63, 0,124, 32, 0,231, 56,240,255,128, 65, -/* 0x1ce0 */ 172, 4, 0,124, 44, 1, 0, 76, 32, 0,128, 78, 0, 0, 0, 0, -/* 0x1cf0 */ 1, 0, 0, 72, 80, 82, 79, 84, 95, 69, 88, 69, 67,124, 80, 82, -/* 0x1d00 */ 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105,108,101,100, 46, -/* 0x1d10 */ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x1d20 */ 44, 0,160, 56,166, 2,136,124, 2, 0, 96, 56, 4, 0, 0, 56, -/* 0x1d30 */ 2, 0, 0, 68,127, 0, 96, 56, 1, 0, 0, 56, 2, 0, 0, 68, -/* 0x1d40 */ 166, 2,200,127, 0, 0, 94,131, 0, 0, 0, 57,255,255,224, 56, -/* 0x1d50 */ 8, 0,126,128, 50, 0,192, 56, 7, 0,160, 56, 1, 0,128, 60, -/* 0x1d60 */ 20,242, 99,124, 90, 0, 0, 56, 15, 0, 99, 56, 20, 34, 99,124, -/* 0x1d70 */ 30, 0, 99, 84, 2, 0, 0, 68, 0, 0,195, 65,166, 3,233,127, -/* 0x1d80 */ 4, 0, 30,128, 12, 0,254,136,248, 0,193, 56,248, 0, 1,248, -/* 0x1d90 */ 120, 27,101,124,166, 3,104,124, 8, 0,158,128, 16, 0,126, 56, -/* 0x1da0 */ 208,255, 33, 56, 32, 4,128, 78, 8, 0,128,124, 1,255, 33,248, -/* 0x1db0 */ 8, 0, 65,248, 16, 0, 97,248, 24, 0,129,248, 32, 0,161,248, -/* 0x1dc0 */ 40, 0,193,248, 48, 0,225,248, 56, 0, 1,249, 64, 0, 33,249, -/* 0x1dd0 */ 72, 0, 65,249, 80, 0, 97,249, 88, 0,129,249, 96, 0,161,249, -/* 0x1de0 */ 104, 0,193,249,112, 0,225,249,120, 0, 1,250,128, 0, 33,250, -/* 0x1df0 */ 136, 0, 65,250,144, 0, 97,250,152, 0,129,250,160, 0,161,250, -/* 0x1e00 */ 168, 0,193,250,176, 0,225,250,184, 0, 1,251,192, 0, 33,251, -/* 0x1e10 */ 200, 0, 65,251,208, 0, 97,251,216, 0,129,251,224, 0,161,251, -/* 0x1e20 */ 232, 0,193,251,240, 0,225,251,166, 2,232,127, 21,255,255, 75, -/* 0x1e30 */ 0, 0, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32, -/* 0x1e40 */ 101,108,102, 54, 52, 45,112,111,119,101,114,112, 99,108,101, 10, -/* 0x1e50 */ 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, -/* 0x1e60 */ 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122, -/* 0x1e70 */ 101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, -/* 0x1e80 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, -/* 0x1e90 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32, -/* 0x1ea0 */ 111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, -/* 0x1eb0 */ 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, -/* 0x1ec0 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, -/* 0x1ed0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, -/* 0x1ee0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x1ef0 */ 32, 48, 48, 48, 48, 48, 48, 52, 48, 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, 49, 32, 78, -/* 0x1f20 */ 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, -/* 0x1f30 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x1f40 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, -/* 0x1f50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, -/* 0x1f60 */ 48, 52, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, -/* 0x1f70 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, -/* 0x1f80 */ 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x1f90 */ 48, 48, 48, 48, 48, 49, 54, 56, 32, 32, 48, 48, 48, 48, 48, 48, -/* 0x1fa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, -/* 0x1fb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, -/* 0x1fc0 */ 48, 48, 48, 48, 52, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, -/* 0x1fd0 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, -/* 0x1fe0 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, -/* 0x1ff0 */ 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, -/* 0x2000 */ 52, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2010 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2020 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 97, 99, -/* 0x2030 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, -/* 0x2040 */ 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, -/* 0x2050 */ 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, -/* 0x2060 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 49, 56, 32, 32, 48, 48, -/* 0x2070 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, -/* 0x2080 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2090 */ 32, 32, 48, 48, 48, 48, 48, 50,102, 48, 32, 32, 50, 42, 42, 48, -/* 0x20a0 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, -/* 0x20b0 */ 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, -/* 0x20c0 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, -/* 0x20d0 */ 48, 48, 48, 48, 57, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x20e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, -/* 0x20f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, -/* 0x2100 */ 48, 52, 48, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, -/* 0x2110 */ 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, -/* 0x2120 */ 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, -/* 0x2130 */ 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 98, 98, 56, -/* 0x2140 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2150 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2160 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 57, 99, 32, 32, -/* 0x2170 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, -/* 0x2180 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, -/* 0x2190 */ 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, -/* 0x21a0 */ 99, 51, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x21b0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x21c0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 48, 53, -/* 0x21d0 */ 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, -/* 0x21e0 */ 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, -/* 0x21f0 */ 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, -/* 0x2200 */ 48, 48, 48, 48, 50, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2210 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, -/* 0x2220 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, -/* 0x2230 */ 49, 99, 56, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, -/* 0x2240 */ 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, -/* 0x2250 */ 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, -/* 0x2260 */ 32, 48, 48, 48, 48, 48, 48, 49, 99, 32, 32, 48, 48, 48, 48, 48, -/* 0x2270 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, -/* 0x2280 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, -/* 0x2290 */ 48, 48, 48, 49, 99, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x22a0 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, -/* 0x22b0 */ 89, 10, 32, 49, 48, 32, 67, 70, 76, 85, 83, 72, 32, 32, 32, 32, -/* 0x22c0 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 52, 32, 32, 48, 48, -/* 0x22d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, -/* 0x22e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x22f0 */ 32, 32, 48, 48, 48, 48, 49, 99, 99, 56, 32, 32, 50, 42, 42, 48, -/* 0x2300 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, -/* 0x2310 */ 79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, -/* 0x2320 */ 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 51, 48, 32, -/* 0x2330 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2340 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2350 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99,102, 48, 32, 32, 50, -/* 0x2360 */ 42, 42, 52, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, -/* 0x2370 */ 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, -/* 0x2380 */ 49, 50, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, -/* 0x2390 */ 32, 48, 48, 48, 48, 48, 49, 49, 52, 32, 32, 48, 48, 48, 48, 48, -/* 0x23a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, -/* 0x23b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, -/* 0x23c0 */ 48, 48, 48, 49,100, 50, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, -/* 0x23d0 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, -/* 0x23e0 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, -/* 0x23f0 */ 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2400 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x2410 */ 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, -/* 0x2420 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, -/* 0x2430 */ 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2440 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x2450 */ 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, -/* 0x2460 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, -/* 0x2470 */ 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2480 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, -/* 0x2490 */ 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x24a0 */ 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, -/* 0x24b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x24c0 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, -/* 0x24d0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x24e0 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, -/* 0x24f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, -/* 0x2500 */ 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, -/* 0x2510 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, -/* 0x2520 */ 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2530 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, -/* 0x2540 */ 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, -/* 0x2550 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, -/* 0x2560 */ 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2570 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, -/* 0x2580 */ 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2590 */ 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, -/* 0x25a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, -/* 0x25b0 */ 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x25c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, -/* 0x25d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x25e0 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, -/* 0x25f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, -/* 0x2600 */ 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2610 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, -/* 0x2620 */ 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, -/* 0x2630 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, -/* 0x2640 */ 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2650 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, -/* 0x2660 */ 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, -/* 0x2670 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, -/* 0x2680 */ 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2690 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, -/* 0x26a0 */ 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, -/* 0x26b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, -/* 0x26c0 */ 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x26d0 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 70, -/* 0x26e0 */ 76, 85, 83, 72, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x26f0 */ 48, 48, 48, 48, 48, 32, 67, 70, 76, 85, 83, 72, 10, 48, 48, 48, -/* 0x2700 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, -/* 0x2710 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, -/* 0x2720 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, -/* 0x2730 */ 95,115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2740 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x2750 */ 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2760 */ 48, 48, 48, 48, 48, 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, -/* 0x2770 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, -/* 0x2780 */ 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, -/* 0x2790 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, -/* 0x27a0 */ 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x27b0 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, -/* 0x27c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, -/* 0x27d0 */ 80, 67, 54, 52, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 69, -/* 0x27e0 */ 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, -/* 0x27f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 56, 56, 10, 10, 82, 69, 76, 79, -/* 0x2800 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, -/* 0x2810 */ 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, -/* 0x2820 */ 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, -/* 0x2830 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, -/* 0x2840 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2850 */ 48, 48, 48,100, 52, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, -/* 0x2860 */ 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, -/* 0x2870 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, -/* 0x2880 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, -/* 0x2890 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x28a0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x28b0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, -/* 0x28c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 99, 99, 32, 82, 95, 80, 80, -/* 0x28d0 */ 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, -/* 0x28e0 */ 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, -/* 0x28f0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, -/* 0x2900 */ 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, -/* 0x2910 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, -/* 0x2920 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, -/* 0x2930 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 98, -/* 0x2940 */ 56, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, -/* 0x2950 */ 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, -/* 0x2960 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, -/* 0x2970 */ 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, -/* 0x2980 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, -/* 0x2990 */ 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x29a0 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, -/* 0x29b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, -/* 0x29c0 */ 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 76, -/* 0x29d0 */ 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, 48, -/* 0x29e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 56, 10, 10, 82, 69, -/* 0x29f0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, -/* 0x2a00 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, -/* 0x2a10 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x2a20 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, -/* 0x2a30 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, -/* 0x2a40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, -/* 0x2a50 */ 54, 52, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 69, 76, 70, -/* 0x2a60 */ 77, 65, 73, 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, -/* 0x2a70 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, -/* 0x2a80 */ 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, -/* 0x2a90 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, -/* 0x2aa0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, -/* 0x2ab0 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, -/* 0x2ac0 */ 48, 53, 56, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, -/* 0x2ad0 */ 52, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, -/* 0x2ae0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 48, 32, -/* 0x2af0 */ 82, 95, 80, 80, 67, 54, 52, 95, 65, 68, 68, 82, 51, 50, 32, 32, -/* 0x2b00 */ 32, 32, 79, 95, 66, 73, 78, 70, 79, 10 +/* 0x1ce0 */ 172, 4, 0,124, 44, 1, 0, 76, 32, 0,128, 78, 1, 0, 0, 72, +/* 0x1cf0 */ 80, 82, 79, 84, 95, 69, 88, 69, 67,124, 80, 82, 79, 84, 95, 87, +/* 0x1d00 */ 82, 73, 84, 69, 32,102, 97,105,108,101,100, 46, 10, 0, 0, 0, +/* 0x1d10 */ 30, 0,160, 56,166, 2,136,124, 2, 0, 96, 56, 4, 0, 0, 56, +/* 0x1d20 */ 2, 0, 0, 68,127, 0, 96, 56, 1, 0, 0, 56, 2, 0, 0, 68, +/* 0x1d30 */ 166, 2,200,127, 0, 0, 94,131, 8, 0,126,128, 0, 0, 0, 57, +/* 0x1d40 */ 1, 0,128, 60,255,255,224, 56, 20,242, 99,124, 50, 0,192, 56, +/* 0x1d50 */ 15, 0, 99, 56, 7, 0,160, 56, 20, 34, 99,124, 90, 0, 0, 56, +/* 0x1d60 */ 30, 0, 99, 84, 2, 0, 0, 68, 0, 0,195, 65,166, 3,233,127, +/* 0x1d70 */ 4, 0, 30,128, 12, 0,254,136,248, 0,193, 56,248, 0, 1,248, +/* 0x1d80 */ 120, 27,101,124,166, 3,104,124, 8, 0,158,128, 16, 0,126, 56, +/* 0x1d90 */ 208,255, 33, 56, 32, 4,128, 78, 1,255, 33,248, 8, 0, 65,248, +/* 0x1da0 */ 16, 0, 97,248, 24, 0,129,248, 32, 0,161,248, 40, 0,193,248, +/* 0x1db0 */ 48, 0,225,248, 56, 0, 1,249, 64, 0, 33,249, 72, 0, 65,249, +/* 0x1dc0 */ 80, 0, 97,249, 88, 0,129,249, 96, 0,161,249,104, 0,193,249, +/* 0x1dd0 */ 112, 0,225,249,120, 0, 1,250,128, 0, 33,250,136, 0, 65,250, +/* 0x1de0 */ 144, 0, 97,250,152, 0,129,250,160, 0,161,250,168, 0,193,250, +/* 0x1df0 */ 176, 0,225,250,184, 0, 1,251,192, 0, 33,251,200, 0, 65,251, +/* 0x1e00 */ 208, 0, 97,251,216, 0,129,251,224, 0,161,251,232, 0,193,251, +/* 0x1e10 */ 240, 0,225,251,166, 2,232,127, 25,255,255, 75, 0, 0, 0, 0, +/* 0x1e20 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 54, +/* 0x1e30 */ 52, 45,112,111,119,101,114,112, 99,108,101, 10, 10, 83,101, 99, +/* 0x1e40 */ 116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, +/* 0x1e50 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, +/* 0x1e60 */ 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x1e70 */ 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x1e80 */ 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, +/* 0x1e90 */ 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, +/* 0x1ea0 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48, +/* 0x1eb0 */ 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, +/* 0x1ec0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, +/* 0x1ed0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, +/* 0x1ee0 */ 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, +/* 0x1ef0 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, +/* 0x1f00 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72, +/* 0x1f10 */ 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, +/* 0x1f20 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1f30 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1f40 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 52, 32, +/* 0x1f50 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, +/* 0x1f60 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82, +/* 0x1f70 */ 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, +/* 0x1f80 */ 48, 49, 54, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1f90 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x1fa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, +/* 0x1fb0 */ 52, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, +/* 0x1fc0 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, +/* 0x1fd0 */ 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, 32, +/* 0x1fe0 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 52, 52, 32, 32, +/* 0x1ff0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2000 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2010 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 97, 99, 32, 32, 50, 42, +/* 0x2020 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, +/* 0x2030 */ 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, +/* 0x2040 */ 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x2050 */ 48, 48, 48, 48, 48, 49, 49, 56, 32, 32, 48, 48, 48, 48, 48, 48, +/* 0x2060 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, +/* 0x2070 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, +/* 0x2080 */ 48, 48, 48, 50,102, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, +/* 0x2090 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, +/* 0x20a0 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, 65, +/* 0x20b0 */ 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, +/* 0x20c0 */ 57, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x20d0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x20e0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 48, 56, +/* 0x20f0 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, +/* 0x2100 */ 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, +/* 0x2110 */ 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, +/* 0x2120 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 98, 98, 56, 32, 32, 48, 48, +/* 0x2130 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, +/* 0x2140 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2150 */ 32, 32, 48, 48, 48, 48, 48, 52, 57, 99, 32, 32, 50, 42, 42, 48, +/* 0x2160 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, +/* 0x2170 */ 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, +/* 0x2180 */ 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 99, 51, 48, 32, +/* 0x2190 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x21a0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x21b0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 48, 53, 52, 32, 32, 50, +/* 0x21c0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, +/* 0x21d0 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, +/* 0x21e0 */ 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, +/* 0x21f0 */ 50, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2200 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2210 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 56, 52, +/* 0x2220 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, +/* 0x2230 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78, +/* 0x2240 */ 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, +/* 0x2250 */ 48, 48, 48, 49, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2260 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, +/* 0x2270 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, +/* 0x2280 */ 99, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, +/* 0x2290 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, +/* 0x22a0 */ 48, 32, 67, 70, 76, 85, 83, 72, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x22b0 */ 48, 48, 48, 48, 48, 48, 50, 52, 32, 32, 48, 48, 48, 48, 48, 48, +/* 0x22c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, +/* 0x22d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, +/* 0x22e0 */ 48, 48, 49, 99, 99, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, +/* 0x22f0 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, +/* 0x2300 */ 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32, +/* 0x2310 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 50, 32, 32, 48, 48, 48, +/* 0x2320 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, +/* 0x2330 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x2340 */ 32, 48, 48, 48, 48, 49, 99,101, 99, 32, 32, 50, 42, 42, 48, 32, +/* 0x2350 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, +/* 0x2360 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, 32, 69, +/* 0x2370 */ 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48, 48, +/* 0x2380 */ 48, 48, 49, 49, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2390 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, +/* 0x23a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, +/* 0x23b0 */ 100, 49, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, +/* 0x23c0 */ 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, +/* 0x23d0 */ 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, +/* 0x23e0 */ 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x23f0 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, +/* 0x2400 */ 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2410 */ 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, +/* 0x2420 */ 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2430 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, +/* 0x2440 */ 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2450 */ 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, +/* 0x2460 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x2470 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, +/* 0x2480 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2490 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, +/* 0x24a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, +/* 0x24b0 */ 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, +/* 0x24c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, +/* 0x24d0 */ 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x24e0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, +/* 0x24f0 */ 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, +/* 0x2500 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, +/* 0x2510 */ 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2520 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, +/* 0x2530 */ 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2540 */ 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, +/* 0x2550 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, +/* 0x2560 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, +/* 0x2570 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, +/* 0x2580 */ 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2590 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, +/* 0x25a0 */ 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x25b0 */ 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, +/* 0x25c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, +/* 0x25d0 */ 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, +/* 0x25e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, +/* 0x25f0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2600 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, +/* 0x2610 */ 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2620 */ 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, +/* 0x2630 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2640 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, +/* 0x2650 */ 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2660 */ 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, +/* 0x2670 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2680 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, +/* 0x2690 */ 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x26a0 */ 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, +/* 0x26b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x26c0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 70, 76, 85, 83, 72, +/* 0x26d0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x26e0 */ 48, 32, 67, 70, 76, 85, 83, 72, 10, 48, 48, 48, 48, 48, 48, 48, +/* 0x26f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, +/* 0x2700 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, +/* 0x2710 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97, +/* 0x2720 */ 114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2730 */ 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, +/* 0x2740 */ 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2750 */ 48, 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, 82, 69, 76, 79, +/* 0x2760 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, +/* 0x2770 */ 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, +/* 0x2780 */ 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x2790 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x27a0 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x27b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 54, 52, +/* 0x27c0 */ 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, +/* 0x27d0 */ 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x27e0 */ 48, 48, 48, 48, 56, 56, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, +/* 0x27f0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, +/* 0x2800 */ 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, +/* 0x2810 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, +/* 0x2820 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, +/* 0x2830 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, +/* 0x2840 */ 52, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, +/* 0x2850 */ 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, +/* 0x2860 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, +/* 0x2870 */ 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, +/* 0x2880 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, +/* 0x2890 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x28a0 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x28b0 */ 48, 48, 48, 48, 48, 99, 99, 32, 82, 95, 80, 80, 67, 54, 52, 95, +/* 0x28c0 */ 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, +/* 0x28d0 */ 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, +/* 0x28e0 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, +/* 0x28f0 */ 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, +/* 0x2900 */ 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, +/* 0x2910 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, +/* 0x2920 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 98, 56, 32, 82, 95, +/* 0x2930 */ 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, +/* 0x2940 */ 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, +/* 0x2950 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, +/* 0x2960 */ 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, +/* 0x2970 */ 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x2980 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x2990 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x29a0 */ 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67, 54, 52, +/* 0x29b0 */ 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, +/* 0x29c0 */ 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x29d0 */ 48, 48, 48, 48, 48, 48, 50, 56, 10, 10, 82, 69, 76, 79, 67, 65, +/* 0x29e0 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, +/* 0x29f0 */ 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, +/* 0x2a00 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, +/* 0x2a10 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, +/* 0x2a20 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, +/* 0x2a30 */ 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, +/* 0x2a40 */ 69, 76, 50, 52, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, +/* 0x2a50 */ 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, +/* 0x2a60 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, +/* 0x2a70 */ 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, +/* 0x2a80 */ 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, +/* 0x2a90 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, +/* 0x2aa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 56, 32, +/* 0x2ab0 */ 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, +/* 0x2ac0 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, +/* 0x2ad0 */ 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, 99, 32, 82, 95, 80, 80, +/* 0x2ae0 */ 67, 54, 52, 95, 65, 68, 68, 82, 51, 50, 32, 32, 32, 32, 79, 95, +/* 0x2af0 */ 66, 73, 78, 70, 79, 10 }; diff --git a/src/stub/powerpc64le-linux.elf-fold.h b/src/stub/powerpc64le-linux.elf-fold.h index cc96a762..0df0a0ef 100644 --- a/src/stub/powerpc64le-linux.elf-fold.h +++ b/src/stub/powerpc64le-linux.elf-fold.h @@ -1,5 +1,5 @@ /* powerpc64le-linux.elf-fold.h - created from powerpc64le-linux.elf-fold.bin, 2483 (0x9b3) bytes + created from powerpc64le-linux.elf-fold.bin, 2491 (0x9bb) bytes This file is part of the UPX executable compressor. @@ -31,21 +31,21 @@ */ -#define STUB_POWERPC64LE_LINUX_ELF_FOLD_SIZE 2483 -#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0x8a02824e -#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0xac1e6e2e +#define STUB_POWERPC64LE_LINUX_ELF_FOLD_SIZE 2491 +#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0x110180cf +#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0x65fadd7d -unsigned char stub_powerpc64le_linux_elf_fold[2483] = { +unsigned char stub_powerpc64le_linux_elf_fold[2491] = { /* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x0010 */ 2, 0, 21, 0, 1, 0, 0, 0,104, 9, 16, 0, 0, 0, 0, 0, +/* 0x0010 */ 2, 0, 21, 0, 1, 0, 0, 0,112, 9, 16, 0, 0, 0, 0, 0, /* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0030 */ 1, 0, 0, 0, 64, 0, 56, 0, 2, 0, 0, 0, 0, 0, 0, 0, /* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, -/* 0x0060 */ 104, 9, 0, 0, 0, 0, 0, 0,104, 9, 0, 0, 0, 0, 0, 0, +/* 0x0060 */ 108, 9, 0, 0, 0, 0, 0, 0,108, 9, 0, 0, 0, 0, 0, 0, /* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, -/* 0x0080 */ 104, 9, 0, 0, 0, 0, 0, 0,104, 9, 16, 0, 0, 0, 0, 0, -/* 0x0090 */ 104, 9, 16, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, +/* 0x0080 */ 112, 9, 0, 0, 0, 0, 0, 0,112, 9, 16, 0, 0, 0, 0, 0, +/* 0x0090 */ 112, 9, 16, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, /* 0x00a0 */ 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, /* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 0, 0, 72, /* 0x00c0 */ 208, 0, 6, 40, 32, 0,194, 76,191,240,132, 84, 32, 0,194, 77, @@ -55,12 +55,12 @@ unsigned char stub_powerpc64le_linux_elf_fold[2483] = { /* 0x0100 */ 186, 1, 98, 81, 0, 0, 67,144, 32, 0, 64, 79, 4, 0, 67,132, /* 0x0110 */ 190, 85, 75, 84, 64, 40, 11,124,220,255,194, 65,240,255, 32, 67, /* 0x0120 */ 32, 0,128, 78, 0, 0, 73,232, 8, 0, 41, 57, 0, 0,162, 43, -/* 0x0130 */ 244,255,254, 64, 32, 0,128, 78, 48, 0, 33, 56,166, 2, 8,125, -/* 0x0140 */ 0, 0, 33,233,225,255,255, 75,221,255,255, 75,248,255,159,128, -/* 0x0150 */ 38, 0, 30, 85,120,243,202,127,120,251,231,127, 80,248,164,127, -/* 0x0160 */ 0,248,161, 56,248,255,189, 59, 80, 32,154,124, 20,210,125,124, -/* 0x0170 */ 208,247, 33, 56, 24, 0,195,128,205, 5, 0, 72,120, 27,127,124, -/* 0x0180 */ 120,235,163,127, 80,240,157,124,201, 0, 0, 72,166, 3,232,127, +/* 0x0130 */ 244,255,254, 64, 32, 0,128, 78,166, 2, 8,125, 48, 0, 33,233, +/* 0x0140 */ 229,255,255, 75,225,255,255, 75, 40, 1, 65, 57, 0, 0, 74,248, +/* 0x0150 */ 0,248, 33, 56,248,255,159,128, 38, 0, 30, 85, 80,248,164,127, +/* 0x0160 */ 120,251,231,127,248,255,189, 59, 80, 32,154,124, 20,210,125,124, +/* 0x0170 */ 48, 0,161, 56, 0, 0,195,128,213, 5, 0, 72,120, 27,127,124, +/* 0x0180 */ 120,235,163,127, 80,240,157,124,209, 0, 0, 72,166, 3,232,127, /* 0x0190 */ 56, 8, 65,232, 64, 8, 97,232, 72, 8,129,232, 80, 8,161,232, /* 0x01a0 */ 88, 8,193,232, 96, 8,225,232,104, 8, 1,233,112, 8, 33,233, /* 0x01b0 */ 120, 8, 65,233,128, 8, 97,233,136, 8,129,233,144, 8,161,233, @@ -68,128 +68,128 @@ unsigned char stub_powerpc64le_linux_elf_fold[2483] = { /* 0x01d0 */ 184, 8, 65,234,192, 8, 97,234,200, 8,129,234,208, 8,161,234, /* 0x01e0 */ 216, 8,193,234,224, 8,225,234,232, 8, 1,235,240, 8, 33,235, /* 0x01f0 */ 248, 8, 65,235, 0, 9, 97,235, 8, 9,129,235, 16, 9,161,235, -/* 0x0200 */ 24, 9,193,235, 32, 9,225,235, 48, 8, 33,232,166, 2,136,125, -/* 0x0210 */ 32, 0,128, 78, 90, 0, 0, 56, 2, 0, 0, 68, 8, 0,227, 64, -/* 0x0220 */ 255,255, 96, 56, 32, 0,128, 78, 1, 0, 0, 56,236,255,255, 75, -/* 0x0230 */ 3, 0, 0, 56,228,255,255, 75, 5, 0, 0, 56,220,255,255, 75, -/* 0x0240 */ 6, 0, 0, 56,212,255,255, 75,125, 0, 0, 56,204,255,255, 75, -/* 0x0250 */ 91, 0, 0, 56,196,255,255, 75, 45, 0, 0, 56,188,255,255, 75, -/* 0x0260 */ 0, 0, 35, 44, 32, 0,130, 77, 0, 0, 36, 47, 0, 0, 67,233, -/* 0x0270 */ 64, 32,170,127, 16, 0,158, 64, 0, 0,131,248, 8, 0,163,248, -/* 0x0280 */ 32, 0,128, 78, 1, 0,170, 43, 8, 0,158, 64,236,255,154, 64, -/* 0x0290 */ 16, 0, 99, 56,216,255,255, 75, 0, 0, 0, 0, 0, 0, 0, 0, -/* 0x02a0 */ 0, 0, 0, 0, 0, 0, 67,233, 8, 0, 3,233, 1, 0,229, 56, -/* 0x02b0 */ 0, 0, 32, 57,166, 3,233,124, 64, 40,170,127, 28, 0,252, 64, -/* 0x02c0 */ 166, 2, 8,124,127, 0, 96, 56, 16, 0, 1,248,145,255, 33,248, -/* 0x02d0 */ 89,255,255, 75, 0, 0, 0, 96, 20, 0, 64, 66,174, 72, 72,125, -/* 0x02e0 */ 174, 73, 68,125, 1, 0, 41, 57,240,255,255, 75, 8, 0, 67,233, -/* 0x02f0 */ 20, 74, 74,125, 8, 0, 67,249, 0, 0, 67,233, 80, 80, 41,125, -/* 0x0300 */ 0, 0, 35,249, 32, 0,128, 78, 0, 0, 0, 0, 0, 0, 0, 1, -/* 0x0310 */ 128, 0, 0, 0, 38, 0,128,125,166, 2, 8,124, 8, 0,129,145, -/* 0x0320 */ 221, 5, 0, 72, 81,255, 33,248,120, 27,126,124,120, 35,159,124, -/* 0x0330 */ 120, 43,189,124,120, 51,220,124, 0, 0, 38, 46, 0, 0, 63,233, -/* 0x0340 */ 0, 0,169, 47, 64, 1,158, 65,120,243,195,127,112, 0,129, 56, -/* 0x0350 */ 12, 0,160, 56, 81,255,255, 75,112, 0, 65,129,116, 0, 33,129, -/* 0x0360 */ 0, 0,170, 47, 32, 0,158, 64, 88, 33, 37,109, 85, 80,133, 47, -/* 0x0370 */ 28, 0,158, 64, 0, 0, 62,233, 0, 0,169, 47, 8, 1,254, 65, -/* 0x0380 */ 12, 0, 0, 72, 33, 0, 41,121, 16, 0,226, 64,127, 0, 96, 56, -/* 0x0390 */ 153,254,255, 75, 0, 0, 0, 96, 64, 80, 9,127,240,255,217, 65, -/* 0x03a0 */ 0, 0, 31,233, 64, 64,170,127,228,255,221, 65, 8, 0,191,232, -/* 0x03b0 */ 164, 0,152, 64,120, 75, 36,125, 0, 0, 61,233, 8, 0,126,232, -/* 0x03c0 */ 128, 0,193, 56,128, 0, 65,249, 40, 0, 65,248,120, 0,225,136, -/* 0x03d0 */ 16, 0,125,233,166, 3, 41,125, 8, 0, 93,232, 33, 4,128, 78, -/* 0x03e0 */ 40, 0, 65,232, 0, 0,163, 47,164,255,222, 64,128, 0,129,232, -/* 0x03f0 */ 112, 0, 33,129, 0, 72,164,127,148,255,222, 64,121, 0,193,136, -/* 0x0400 */ 0, 0,166, 47, 48, 0,158, 65, 44, 0,146, 65, 8, 0,127,232, -/* 0x0410 */ 122, 0,161,136, 32, 0,132,120, 40, 0, 65,248, 0, 0, 60,233, -/* 0x0420 */ 16, 0,124,233,166, 3, 41,125, 8, 0, 92,232, 33, 4,128, 78, -/* 0x0430 */ 40, 0, 65,232,116, 0, 1,129, 8, 0, 94,233, 0, 0, 62,233, -/* 0x0440 */ 20, 66, 74,125, 80, 72, 40,125, 8, 0, 94,249, 0, 0, 62,249, -/* 0x0450 */ 20, 0, 0, 72,120, 43,164,124,120,243,195,127,120, 75, 37,125, -/* 0x0460 */ 69,254,255, 75,112, 0, 1,129, 8, 0, 95,233, 0, 0, 63,233, -/* 0x0470 */ 20, 66, 74,125, 80, 72, 40,125, 8, 0, 95,249, 0, 0, 63,249, -/* 0x0480 */ 188,254,255, 75,176, 0, 33, 56, 8, 0,129,129, 32,129,144,125, -/* 0x0490 */ 188, 4, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3,128, 4, 0, 0, -/* 0x04a0 */ 166, 2, 8,124, 38, 0,128,125, 29, 4, 0, 72,120, 75, 58,125, -/* 0x04b0 */ 16, 0, 35,161, 32, 0,163,235,120, 51,215,124,120, 27,123,124, -/* 0x04c0 */ 120, 35,153,124, 3, 0,137, 47, 8, 0,129,145,241,254, 33,248, -/* 0x04d0 */ 120, 43,184,124,120, 59,246,124,120, 67, 21,125, 20,234,163,127, -/* 0x04e0 */ 16, 0,192, 56, 8, 0,158, 64, 0, 0,192, 56, 56, 0, 59,161, -/* 0x04f0 */ 34, 8,198, 56,120,235,168,127, 0, 0, 64, 57,255,255,192, 59, -/* 0x0500 */ 1, 0, 41, 57,166, 3, 41,125, 60, 0, 64, 66, 0, 0, 40,129, -/* 0x0510 */ 1, 0,137, 47, 40, 0,158, 64, 16, 0,232,232, 64, 56,190,127, -/* 0x0520 */ 8, 0,157, 64,120, 59,254,124, 40, 0, 40,233, 20, 74, 39,125, -/* 0x0530 */ 64, 72,170,127, 8, 0,156, 64,120, 75, 42,125, 56, 0, 8, 57, -/* 0x0540 */ 200,255,255, 75, 1, 0, 74, 61,228, 3,222,123,255,255, 74, 57, -/* 0x0550 */ 120,243,195,127, 80, 80,158,124, 0, 0,160, 56,228, 3,132,120, -/* 0x0560 */ 180, 7,198,124,255,255,224, 56, 0, 0, 0, 57,169,252,255, 75, -/* 0x0570 */ 0, 0, 0, 96, 81,115, 64, 62, 0, 0,128, 58, 0, 0, 57, 46, -/* 0x0580 */ 64, 98, 82, 98, 80, 24,222,127, 0, 0, 32, 58, 56, 0, 59,161, -/* 0x0590 */ 0,160,137,127,128, 1,157, 64, 0, 0, 61,129, 36, 0,146, 65, -/* 0x05a0 */ 6, 0,137, 47, 28, 0,158, 64, 16, 0,189,232,120,187,227,126, -/* 0x05b0 */ 3, 0,128, 56, 20, 42,190,124,169,252,255, 75, 72, 1, 0, 72, -/* 0x05c0 */ 1, 0,137, 47, 64, 1,158, 64, 4, 0,253,129, 16, 0,157,235, -/* 0x05d0 */ 32, 0,253,235, 40, 0,125,234,250, 22,239, 85, 20,226,158,127, -/* 0x05e0 */ 112, 0,225,251, 48,124, 79,126, 32, 4,137,123,120, 0,129,251, -/* 0x05f0 */ 20,154,124,126, 20,250,233,127,228, 3,156,123,126, 7,240, 85, -/* 0x0600 */ 12, 0,146, 64, 0, 0,160, 56, 8, 0, 0, 72, 2, 0,160, 56, -/* 0x0610 */ 120,131,165,124,180, 7,165,124, 16, 0,146, 64,120,195, 7,127, -/* 0x0620 */ 18, 0,192, 56, 12, 0, 0, 72, 50, 0,192, 56,255,255,224, 56, -/* 0x0630 */ 8, 0, 29,233,120,227,131,127,120,251,228,127, 80, 64, 9,125, -/* 0x0640 */ 213,251,255, 75, 0, 0, 0, 96, 0, 24,188,127, 16, 0,254, 65, -/* 0x0650 */ 127, 0, 96, 56,213,251,255, 75, 0, 0, 0, 96, 24, 0,146, 65, -/* 0x0660 */ 120,203, 35,127,112, 0,129, 56,120,179,197,126,120,171,166,126, -/* 0x0670 */ 165,252,255, 75,208, 0,223,125,227,255,233,121, 32, 4,206,121, -/* 0x0680 */ 12, 0,130, 64, 44, 0,146, 64, 68, 0, 0, 72, 0, 0,174, 47, -/* 0x0690 */ 244,255,158, 65,166, 3,201,125, 20,250, 92,125, 0, 0, 32, 57, -/* 0x06a0 */ 174, 73, 42,126, 1, 0, 41, 57,248,255, 0, 66,216,255,255, 75, -/* 0x06b0 */ 120,227,131,127,120,251,228,127,180, 7, 5,126,141,251,255, 75, -/* 0x06c0 */ 0, 0, 0, 96, 0, 0,163, 47,136,255,222, 64, 20,250,238,127, -/* 0x06d0 */ 20,250,252,127, 64,152,191,127, 44, 0,156, 64,120,251,227,127, -/* 0x06e0 */ 80,152,159,124,180, 7, 5,126, 50, 0,192, 56,255,255,224, 56, -/* 0x06f0 */ 0, 0, 0, 57, 33,251,255, 75, 0, 0, 0, 96, 0, 24,191,127, -/* 0x0700 */ 80,255,222, 64, 1, 0,148, 58, 56, 0,189, 59,180, 7,148,126, -/* 0x0710 */ 124,254,255, 75, 0, 0,186, 47, 8, 0,158, 65, 0, 0,218,251, -/* 0x0720 */ 16, 1, 33, 56, 24, 0,123,232, 20, 26,126,124, 8, 0,129,129, -/* 0x0730 */ 32,129,144,125,224, 1, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3, -/* 0x0740 */ 128, 18, 0, 0,166, 2, 8,124, 0, 0,192, 56,173, 1, 0, 72, -/* 0x0750 */ 33,255, 33,248,120, 43,191,124,120, 75, 62,125, 64, 0,165, 59, -/* 0x0760 */ 0, 0, 35,129,152, 0, 97,248,144, 0,129,248,136, 0,161,248, -/* 0x0770 */ 128, 0, 33,249,120, 59,229,124,112, 0,129,248,120, 0, 97,248, -/* 0x0780 */ 224, 0,129, 59,144, 0, 97, 56,128, 0,129, 56,105, 0, 92,249, -/* 0x0790 */ 160, 0,225,248,168, 0, 1,249,125,251,255, 75, 80, 0,191,232, -/* 0x07a0 */ 120,243,195,127, 3, 0,128, 56, 64, 0,165, 56,181,250,255, 75, -/* 0x07b0 */ 56, 0,191,160,120,243,195,127, 5, 0,128, 56,165,250,255, 75, -/* 0x07c0 */ 24, 0,191,128,120,243,195,127, 9, 0,128, 56,149,250,255, 75, -/* 0x07d0 */ 160, 0,225,232,168, 0, 1,233,120,243,198,127,112, 0,129, 56, -/* 0x07e0 */ 0, 0,160, 56,120,251,227,127,120,227,137,127,181,252,255, 75, -/* 0x07f0 */ 9, 0,128, 56,120, 27,124,124,120,243,195,127,120,227,133,127, -/* 0x0800 */ 0, 0,192, 59, 93,250,255, 75, 56, 0, 63,161, 0,240,137,127, -/* 0x0810 */ 156, 0,157, 64, 0, 0, 61,129, 3, 0,137, 47,128, 0,158, 64, -/* 0x0820 */ 16, 0,125,232, 72, 1, 33,233, 0, 0,128, 56, 0, 0,160, 56, -/* 0x0830 */ 20, 74, 99,124, 5,250,255, 75, 0, 0, 0, 96, 0, 0,131, 47, -/* 0x0840 */ 120, 27,123,124, 16, 0,252, 64,127, 0, 96, 56,221,249,255, 75, -/* 0x0850 */ 0, 0, 0, 96,120,251,228,127, 0, 4,160, 56,213,249,255, 75, -/* 0x0860 */ 0, 0, 0, 96, 0, 4,163, 47,224,255,222, 64,120,251,227,127, -/* 0x0870 */ 0, 0,128, 56,120,219,101,127, 0, 0,192, 56, 0, 0,224, 56, -/* 0x0880 */ 0, 0, 0, 57, 0, 0, 32, 57, 25,252,255, 75,120, 27,124,124, -/* 0x0890 */ 120,219, 99,127,173,249,255, 75, 0, 0, 0, 96, 1, 0,222, 59, -/* 0x08a0 */ 56, 0,189, 59,180, 7,222,127, 96,255,255, 75,224, 0, 33, 56, -/* 0x08b0 */ 120,227,131,127,148, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, -/* 0x08c0 */ 128, 5, 0, 0,112,255,193,249,120,255,225,249,128,255, 1,250, -/* 0x08d0 */ 136,255, 33,250,144,255, 65,250,152,255, 97,250,160,255,129,250, -/* 0x08e0 */ 168,255,161,250,176,255,193,250,184,255,225,250,192,255, 1,251, -/* 0x08f0 */ 200,255, 33,251,208,255, 65,251,216,255, 97,251,224,255,129,251, -/* 0x0900 */ 232,255,161,251,240,255,193,251,248,255,225,251, 16, 0, 1,248, -/* 0x0910 */ 32, 0,128, 78,112,255,193,233,120,255,225,233,128,255, 1,234, -/* 0x0920 */ 136,255, 33,234,144,255, 65,234,152,255, 97,234,160,255,129,234, -/* 0x0930 */ 168,255,161,234,176,255,193,234,184,255,225,234,192,255, 1,235, -/* 0x0940 */ 200,255, 33,235,208,255, 65,235,216,255, 97,235,224,255,129,235, -/* 0x0950 */ 16, 0, 1,232,232,255,161,235,166, 3, 8,124,240,255,193,235, -/* 0x0960 */ 248,255,225,235, 32, 0,128, 78, 96, 2, 16, 0, 0, 0, 0, 0, -/* 0x0970 */ 104,137, 16, 0, 0, 0, 0, 0,164, 2, 16, 0, 0, 0, 0, 0, -/* 0x0980 */ 104,137, 16, 0, 0, 0, 0, 0, 20, 3, 16, 0, 0, 0, 0, 0, -/* 0x0990 */ 104,137, 16, 0, 0, 0, 0, 0,160, 4, 16, 0, 0, 0, 0, 0, -/* 0x09a0 */ 104,137, 16, 0, 0, 0, 0, 0, 68, 7, 16, 0, 0, 0, 0, 0, -/* 0x09b0 */ 104,137, 16 +/* 0x0200 */ 24, 9,193,235, 32, 9,225,235, 48, 8, 33,232, 0, 0, 0, 56, +/* 0x0210 */ 32,241, 15,124,166, 3, 9,124, 32, 0,128, 78, 90, 0, 0, 56, +/* 0x0220 */ 2, 0, 0, 68, 8, 0,227, 64,255,255, 96, 56, 32, 0,128, 78, +/* 0x0230 */ 1, 0, 0, 56,236,255,255, 75, 3, 0, 0, 56,228,255,255, 75, +/* 0x0240 */ 5, 0, 0, 56,220,255,255, 75, 6, 0, 0, 56,212,255,255, 75, +/* 0x0250 */ 125, 0, 0, 56,204,255,255, 75, 91, 0, 0, 56,196,255,255, 75, +/* 0x0260 */ 45, 0, 0, 56,188,255,255, 75, 0, 0, 35, 44, 32, 0,130, 77, +/* 0x0270 */ 0, 0, 36, 47, 0, 0, 67,233, 64, 32,170,127, 16, 0,158, 64, +/* 0x0280 */ 0, 0,131,248, 8, 0,163,248, 32, 0,128, 78, 1, 0,170, 43, +/* 0x0290 */ 8, 0,158, 64,236,255,154, 64, 16, 0, 99, 56,216,255,255, 75, +/* 0x02a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,233, +/* 0x02b0 */ 8, 0, 3,233, 1, 0,229, 56, 0, 0, 32, 57,166, 3,233,124, +/* 0x02c0 */ 64, 40,170,127, 28, 0,252, 64,166, 2, 8,124,127, 0, 96, 56, +/* 0x02d0 */ 16, 0, 1,248,145,255, 33,248, 89,255,255, 75, 0, 0, 0, 96, +/* 0x02e0 */ 20, 0, 64, 66,174, 72, 72,125,174, 73, 68,125, 1, 0, 41, 57, +/* 0x02f0 */ 240,255,255, 75, 8, 0, 67,233, 20, 74, 74,125, 8, 0, 67,249, +/* 0x0300 */ 0, 0, 67,233, 80, 80, 41,125, 0, 0, 35,249, 32, 0,128, 78, +/* 0x0310 */ 0, 0, 0, 0, 0, 0, 0, 1,128, 0, 0, 0, 38, 0,128,125, +/* 0x0320 */ 166, 2, 8,124, 8, 0,129,145,217, 5, 0, 72, 81,255, 33,248, +/* 0x0330 */ 120, 27,126,124,120, 35,159,124,120, 43,189,124,120, 51,220,124, +/* 0x0340 */ 0, 0, 38, 46, 0, 0, 63,233, 0, 0,169, 47, 64, 1,158, 65, +/* 0x0350 */ 120,243,195,127,112, 0,129, 56, 12, 0,160, 56, 81,255,255, 75, +/* 0x0360 */ 112, 0, 65,129,116, 0, 33,129, 0, 0,170, 47, 32, 0,158, 64, +/* 0x0370 */ 88, 33, 37,109, 85, 80,133, 47, 28, 0,158, 64, 0, 0, 62,233, +/* 0x0380 */ 0, 0,169, 47, 8, 1,254, 65, 12, 0, 0, 72, 33, 0, 41,121, +/* 0x0390 */ 16, 0,226, 64,127, 0, 96, 56,153,254,255, 75, 0, 0, 0, 96, +/* 0x03a0 */ 64, 80, 9,127,240,255,217, 65, 0, 0, 31,233, 64, 64,170,127, +/* 0x03b0 */ 228,255,221, 65, 8, 0,191,232,164, 0,152, 64,120, 75, 36,125, +/* 0x03c0 */ 0, 0, 61,233, 8, 0,126,232,128, 0,193, 56,128, 0, 65,249, +/* 0x03d0 */ 40, 0, 65,248,120, 0,225,136, 16, 0,125,233,166, 3, 41,125, +/* 0x03e0 */ 8, 0, 93,232, 33, 4,128, 78, 40, 0, 65,232, 0, 0,163, 47, +/* 0x03f0 */ 164,255,222, 64,128, 0,129,232,112, 0, 33,129, 0, 72,164,127, +/* 0x0400 */ 148,255,222, 64,121, 0,193,136, 0, 0,166, 47, 48, 0,158, 65, +/* 0x0410 */ 44, 0,146, 65, 8, 0,127,232,122, 0,161,136, 32, 0,132,120, +/* 0x0420 */ 40, 0, 65,248, 0, 0, 60,233, 16, 0,124,233,166, 3, 41,125, +/* 0x0430 */ 8, 0, 92,232, 33, 4,128, 78, 40, 0, 65,232,116, 0, 1,129, +/* 0x0440 */ 8, 0, 94,233, 0, 0, 62,233, 20, 66, 74,125, 80, 72, 40,125, +/* 0x0450 */ 8, 0, 94,249, 0, 0, 62,249, 20, 0, 0, 72,120, 43,164,124, +/* 0x0460 */ 120,243,195,127,120, 75, 37,125, 69,254,255, 75,112, 0, 1,129, +/* 0x0470 */ 8, 0, 95,233, 0, 0, 63,233, 20, 66, 74,125, 80, 72, 40,125, +/* 0x0480 */ 8, 0, 95,249, 0, 0, 63,249,188,254,255, 75,176, 0, 33, 56, +/* 0x0490 */ 8, 0,129,129, 32,129,144,125,184, 4, 0, 72, 0, 0, 0, 0, +/* 0x04a0 */ 0, 0, 0, 3,128, 4, 0, 0,166, 2, 8,124, 38, 0,128,125, +/* 0x04b0 */ 25, 4, 0, 72,120, 75, 58,125, 16, 0, 35,161, 32, 0,163,235, +/* 0x04c0 */ 120, 51,215,124,120, 27,123,124,120, 35,153,124, 3, 0,137, 47, +/* 0x04d0 */ 8, 0,129,145,241,254, 33,248,120, 43,184,124,120, 59,246,124, +/* 0x04e0 */ 120, 67, 21,125, 20,234,163,127, 16, 0,192, 56, 8, 0,158, 64, +/* 0x04f0 */ 0, 0,192, 56, 56, 0, 59,161, 34, 8,198, 56,120,235,168,127, +/* 0x0500 */ 0, 0, 64, 57,255,255,192, 59, 1, 0, 41, 57,166, 3, 41,125, +/* 0x0510 */ 60, 0, 64, 66, 0, 0, 40,129, 1, 0,137, 47, 40, 0,158, 64, +/* 0x0520 */ 16, 0,232,232, 64, 56,190,127, 8, 0,157, 64,120, 59,254,124, +/* 0x0530 */ 40, 0, 40,233, 20, 74, 39,125, 64, 72,170,127, 8, 0,156, 64, +/* 0x0540 */ 120, 75, 42,125, 56, 0, 8, 57,200,255,255, 75, 1, 0, 74, 61, +/* 0x0550 */ 228, 3,222,123,255,255, 74, 57,120,243,195,127, 80, 80,158,124, +/* 0x0560 */ 0, 0,160, 56,228, 3,132,120,180, 7,198,124,255,255,224, 56, +/* 0x0570 */ 0, 0, 0, 57,169,252,255, 75, 0, 0, 0, 96, 81,115, 64, 62, +/* 0x0580 */ 0, 0,128, 58, 0, 0, 57, 46, 64, 98, 82, 98, 80, 24,222,127, +/* 0x0590 */ 0, 0, 32, 58, 56, 0, 59,161, 0,160,137,127,128, 1,157, 64, +/* 0x05a0 */ 0, 0, 61,129, 36, 0,146, 65, 6, 0,137, 47, 28, 0,158, 64, +/* 0x05b0 */ 16, 0,189,232,120,187,227,126, 3, 0,128, 56, 20, 42,190,124, +/* 0x05c0 */ 169,252,255, 75, 72, 1, 0, 72, 1, 0,137, 47, 64, 1,158, 64, +/* 0x05d0 */ 4, 0,253,129, 16, 0,157,235, 32, 0,253,235, 40, 0,125,234, +/* 0x05e0 */ 250, 22,239, 85, 20,226,158,127,112, 0,225,251, 48,124, 79,126, +/* 0x05f0 */ 32, 4,137,123,120, 0,129,251, 20,154,124,126, 20,250,233,127, +/* 0x0600 */ 228, 3,156,123,126, 7,240, 85, 12, 0,146, 64, 0, 0,160, 56, +/* 0x0610 */ 8, 0, 0, 72, 2, 0,160, 56,120,131,165,124,180, 7,165,124, +/* 0x0620 */ 16, 0,146, 64,120,195, 7,127, 18, 0,192, 56, 12, 0, 0, 72, +/* 0x0630 */ 50, 0,192, 56,255,255,224, 56, 8, 0, 29,233,120,227,131,127, +/* 0x0640 */ 120,251,228,127, 80, 64, 9,125,213,251,255, 75, 0, 0, 0, 96, +/* 0x0650 */ 0, 24,188,127, 16, 0,254, 65,127, 0, 96, 56,213,251,255, 75, +/* 0x0660 */ 0, 0, 0, 96, 24, 0,146, 65,120,203, 35,127,112, 0,129, 56, +/* 0x0670 */ 120,179,197,126,120,171,166,126,165,252,255, 75,208, 0,223,125, +/* 0x0680 */ 227,255,233,121, 32, 4,206,121, 12, 0,130, 64, 44, 0,146, 64, +/* 0x0690 */ 68, 0, 0, 72, 0, 0,174, 47,244,255,158, 65,166, 3,201,125, +/* 0x06a0 */ 20,250, 92,125, 0, 0, 32, 57,174, 73, 42,126, 1, 0, 41, 57, +/* 0x06b0 */ 248,255, 0, 66,216,255,255, 75,120,227,131,127,120,251,228,127, +/* 0x06c0 */ 180, 7, 5,126,141,251,255, 75, 0, 0, 0, 96, 0, 0,163, 47, +/* 0x06d0 */ 136,255,222, 64, 20,250,238,127, 20,250,252,127, 64,152,191,127, +/* 0x06e0 */ 44, 0,156, 64,120,251,227,127, 80,152,159,124,180, 7, 5,126, +/* 0x06f0 */ 50, 0,192, 56,255,255,224, 56, 0, 0, 0, 57, 33,251,255, 75, +/* 0x0700 */ 0, 0, 0, 96, 0, 24,191,127, 80,255,222, 64, 1, 0,148, 58, +/* 0x0710 */ 56, 0,189, 59,180, 7,148,126,124,254,255, 75, 0, 0,186, 47, +/* 0x0720 */ 8, 0,158, 65, 0, 0,218,251, 16, 1, 33, 56, 24, 0,123,232, +/* 0x0730 */ 20, 26,126,124, 8, 0,129,129, 32,129,144,125,220, 1, 0, 72, +/* 0x0740 */ 0, 0, 0, 0, 0, 0, 0, 3,128, 18, 0, 0,166, 2, 8,124, +/* 0x0750 */ 0, 0,192, 56,165, 1, 0, 72, 33,255, 33,248,120, 43,191,124, +/* 0x0760 */ 120, 75, 62,125, 64, 0,165, 59, 0, 0, 35,129,120, 83, 91,125, +/* 0x0770 */ 152, 0, 97,248,144, 0,129,248,136, 0,161,248,128, 0, 33,249, +/* 0x0780 */ 120, 59,229,124,112, 0,129,248,120, 0, 97,248,160, 0,225,248, +/* 0x0790 */ 168, 0, 1,249,144, 0, 97, 56,128, 0,129, 56,129,251,255, 75, +/* 0x07a0 */ 80, 0,191,232,120,243,195,127, 3, 0,128, 56, 64, 0,165, 56, +/* 0x07b0 */ 185,250,255, 75, 56, 0,191,160,120,243,195,127, 5, 0,128, 56, +/* 0x07c0 */ 169,250,255, 75, 24, 0,191,128,120,243,195,127, 9, 0,128, 56, +/* 0x07d0 */ 153,250,255, 75,160, 0,225,232,168, 0, 1,233,120,243,198,127, +/* 0x07e0 */ 112, 0,129, 56, 0, 0,160, 56,120,219,105,127,120,251,227,127, +/* 0x07f0 */ 185,252,255, 75, 9, 0,128, 56,120, 27,124,124,120,243,195,127, +/* 0x0800 */ 120,227,133,127, 0, 0,192, 59, 97,250,255, 75, 56, 0, 31,161, +/* 0x0810 */ 0,240,136,127,156, 0,157, 64, 0, 0, 61,129, 3, 0,137, 47, +/* 0x0820 */ 128, 0,158, 64, 16, 0,125,232, 0, 0, 59,233, 0, 0,128, 56, +/* 0x0830 */ 0, 0,160, 56, 20, 74, 99,124, 9,250,255, 75, 0, 0, 0, 96, +/* 0x0840 */ 0, 0,131, 47,120, 27,122,124, 16, 0,252, 64,127, 0, 96, 56, +/* 0x0850 */ 225,249,255, 75, 0, 0, 0, 96,120,251,228,127, 0, 4,160, 56, +/* 0x0860 */ 217,249,255, 75, 0, 0, 0, 96, 0, 4,163, 47,224,255,222, 64, +/* 0x0870 */ 120,251,227,127, 0, 0,128, 56,120,211, 69,127, 0, 0,192, 56, +/* 0x0880 */ 0, 0,224, 56, 0, 0, 0, 57,120,219,105,127, 29,252,255, 75, +/* 0x0890 */ 120, 27,124,124,120,211, 67,127,177,249,255, 75, 0, 0, 0, 96, +/* 0x08a0 */ 1, 0,222, 59, 56, 0,189, 59,180, 7,222,127, 96,255,255, 75, +/* 0x08b0 */ 224, 0, 33, 56,120,227,131,127,144, 0, 0, 72, 0, 0, 0, 0, +/* 0x08c0 */ 0, 0, 0, 1,128, 6, 0, 0,112,255,193,249,120,255,225,249, +/* 0x08d0 */ 128,255, 1,250,136,255, 33,250,144,255, 65,250,152,255, 97,250, +/* 0x08e0 */ 160,255,129,250,168,255,161,250,176,255,193,250,184,255,225,250, +/* 0x08f0 */ 192,255, 1,251,200,255, 33,251,208,255, 65,251,216,255, 97,251, +/* 0x0900 */ 224,255,129,251,232,255,161,251,240,255,193,251,248,255,225,251, +/* 0x0910 */ 16, 0, 1,248, 32, 0,128, 78,112,255,193,233,120,255,225,233, +/* 0x0920 */ 128,255, 1,234,136,255, 33,234,144,255, 65,234,152,255, 97,234, +/* 0x0930 */ 160,255,129,234,168,255,161,234,176,255,193,234,184,255,225,234, +/* 0x0940 */ 192,255, 1,235,200,255, 33,235,208,255, 65,235,216,255, 97,235, +/* 0x0950 */ 224,255,129,235, 16, 0, 1,232,232,255,161,235,166, 3, 8,124, +/* 0x0960 */ 240,255,193,235,248,255,225,235, 32, 0,128, 78, 0, 0, 0, 0, +/* 0x0970 */ 104, 2, 16, 0, 0, 0, 0, 0,112,137, 16, 0, 0, 0, 0, 0, +/* 0x0980 */ 172, 2, 16, 0, 0, 0, 0, 0,112,137, 16, 0, 0, 0, 0, 0, +/* 0x0990 */ 28, 3, 16, 0, 0, 0, 0, 0,112,137, 16, 0, 0, 0, 0, 0, +/* 0x09a0 */ 168, 4, 16, 0, 0, 0, 0, 0,112,137, 16, 0, 0, 0, 0, 0, +/* 0x09b0 */ 76, 7, 16, 0, 0, 0, 0, 0,112,137, 16 }; diff --git a/src/stub/scripts/xstrip.py b/src/stub/scripts/xstrip.py index 03cf4657..f52db596 100644 --- a/src/stub/scripts/xstrip.py +++ b/src/stub/scripts/xstrip.py @@ -172,7 +172,7 @@ def do_file(fn): # with PROGBITS sections. This happens on powerpc64le and arm64. # The general solution probably requires a C++ program # that combines "objcopy -R", "objdump -htr", and xstrip. - if re.search(r"^powerpc64le-", os.path.basename(fn)): + if re.search(r"^powerpc64", os.path.basename(fn)): assert pos >= len(odata), ("unexpected strip_with_dump", pos, len(odata)) elif re.search(r"^arm64-", os.path.basename(fn)): assert pos >= len(odata), ("unexpected strip_with_dump", pos, len(odata)) diff --git a/src/stub/src/arch/powerpc/64le/nrv2b_d.S b/src/stub/src/arch/powerpc/64le/nrv2b_d.S index b1d536e2..2510cdf9 100644 --- a/src/stub/src/arch/powerpc/64le/nrv2b_d.S +++ b/src/stub/src/arch/powerpc/64le/nrv2b_d.S @@ -84,8 +84,11 @@ get1: lbzu t0,4(src); rlwimi bits,t0,24, 0, 7 #else /*}{ pray for no unalignment trap or slowdown */ li bits,1 // compensate for 'lbzu' -// lwbrx bits,bits,src // bits= fetch_le32(bits+src) +#if BIG_ENDIAN //{ + lwbrx bits,bits,src // bits= fetch_le32(bits+src) +#else //}{ lwzx bits,bits,src +#endif //} addi src,src,4 #endif /*}*/ diff --git a/src/stub/src/arch/powerpc/64le/nrv2d_d.S b/src/stub/src/arch/powerpc/64le/nrv2d_d.S index 79302843..c18af920 100644 --- a/src/stub/src/arch/powerpc/64le/nrv2d_d.S +++ b/src/stub/src/arch/powerpc/64le/nrv2d_d.S @@ -78,8 +78,11 @@ get32d: lbzu t0,4(src); rlwimi bits,t0,24, 0, 7 #else /*}{ pray for no unalignment trap or slowdown */ li bits,1 // compensate for 'lbzu' -// lwbrx bits,bits,src // bits= fetch_le32(bits+src) +#if BIG_ENDIAN //{ + lwbrx bits,bits,src // bits= fetch_le32(bits+src) +#else //}{ lwzx bits,bits,src +#endif //} addi src,src,4 #endif /*}*/ diff --git a/src/stub/src/arch/powerpc/64le/nrv2e_d.S b/src/stub/src/arch/powerpc/64le/nrv2e_d.S index a6244efc..bfd1de82 100644 --- a/src/stub/src/arch/powerpc/64le/nrv2e_d.S +++ b/src/stub/src/arch/powerpc/64le/nrv2e_d.S @@ -78,8 +78,11 @@ get32: lbzu t0,4(src); rlwimi bits,t0,24, 0, 7 #else /*}{ pray for no unalignment trap or slowdown */ li bits,1 // compensate for 'lbzu' -// lwbrx bits,bits,src // bits= fetch_le32(bits+src) endianess +#if BIG_ENDIAN //{ + lwbrx bits,bits,src // bits= fetch_le32(bits+src) +#else //}{ lwzx bits,bits,src +#endif //} addi src,src,4 #endif /*}*/ diff --git a/src/stub/src/powerpc64-darwin.dylib-entry.S b/src/stub/src/powerpc64-darwin.dylib-entry.S new file mode 100644 index 00000000..b7c6d109 --- /dev/null +++ b/src/stub/src/powerpc64-darwin.dylib-entry.S @@ -0,0 +1 @@ +#include "powerpc64le-darwin.dylib-entry.S" diff --git a/src/stub/src/powerpc64-darwin.macho-entry.S b/src/stub/src/powerpc64-darwin.macho-entry.S new file mode 100644 index 00000000..2d182f42 --- /dev/null +++ b/src/stub/src/powerpc64-darwin.macho-entry.S @@ -0,0 +1 @@ +#include "powerpc64le-darwin.macho-entry.S" diff --git a/src/stub/src/powerpc64-darwin.macho-fold.S b/src/stub/src/powerpc64-darwin.macho-fold.S new file mode 100644 index 00000000..d3ce9d34 --- /dev/null +++ b/src/stub/src/powerpc64-darwin.macho-fold.S @@ -0,0 +1 @@ +#include "powerpc64le-darwin.macho-fold.S" diff --git a/src/stub/src/powerpc64-darwin.macho-main.c b/src/stub/src/powerpc64-darwin.macho-main.c new file mode 100644 index 00000000..07b5e6e6 --- /dev/null +++ b/src/stub/src/powerpc64-darwin.macho-main.c @@ -0,0 +1 @@ +#include "powerpc64le-darwin.macho-main.c" diff --git a/src/stub/src/powerpc64-linux.elf-entry.S b/src/stub/src/powerpc64-linux.elf-entry.S new file mode 100644 index 00000000..3743c51a --- /dev/null +++ b/src/stub/src/powerpc64-linux.elf-entry.S @@ -0,0 +1,2 @@ +#define BIG_ENDIAN 1 +#include "powerpc64le-linux.elf-entry.S" diff --git a/src/stub/src/powerpc64-linux.elf-fold.S b/src/stub/src/powerpc64-linux.elf-fold.S new file mode 100644 index 00000000..4991ded9 --- /dev/null +++ b/src/stub/src/powerpc64-linux.elf-fold.S @@ -0,0 +1,2 @@ +#define BIG_ENDIAN 1 +#include "powerpc64le-linux.elf-fold.S" diff --git a/src/stub/src/powerpc64-linux.elf-fold.lds b/src/stub/src/powerpc64-linux.elf-fold.lds new file mode 100644 index 00000000..7115cf33 --- /dev/null +++ b/src/stub/src/powerpc64-linux.elf-fold.lds @@ -0,0 +1,48 @@ +/* powerpc64le-linux.elf-fold.lds -- + + This file is part of the UPX executable compressor. + + Copyright (C) 2000-2017 John F. Reiser + All Rights Reserved. + + UPX and the UCL library are free software; you can redistribute them + and/or modify them under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of + the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. + If not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + Markus F.X.J. Oberhumer Laszlo Molnar + + + John F. Reiser + + */ + + +OUTPUT_FORMAT("elf64-powerpc", "elf64-powerpc", "elf64-powerpc") +OUTPUT_ARCH(powerpc:common64) +/*ENTRY(_start)*/ +PHDRS +{ + text PT_LOAD FILEHDR PHDRS ; + data PT_LOAD ; /* for setting brk(0) */ +} +SECTIONS +{ + . = 0x00100000 + SIZEOF_HEADERS + 12; /* 12==sizeof(l_info) */ + .text : { + *(.text) + *(.data) + } : text + .data : { + } : data +} diff --git a/src/stub/src/powerpc64-linux.elf-main.c b/src/stub/src/powerpc64-linux.elf-main.c new file mode 100644 index 00000000..1242ad2f --- /dev/null +++ b/src/stub/src/powerpc64-linux.elf-main.c @@ -0,0 +1 @@ +#include "powerpc64le-linux.elf-main.c" diff --git a/src/stub/src/powerpc64le-linux.elf-entry.S b/src/stub/src/powerpc64le-linux.elf-entry.S index f1ef86f5..b2cd620d 100644 --- a/src/stub/src/powerpc64le-linux.elf-entry.S +++ b/src/stub/src/powerpc64le-linux.elf-entry.S @@ -77,6 +77,10 @@ SZ_DLINE=128 # size of data cache line in Apple G5 #define bits a6 #define disp a7 +#ifndef BIG_ENDIAN +#define BIG_ENDIAN 0 +#endif + section NRV2E #include "arch/powerpc/64le/nrv2e_d.S" @@ -129,11 +133,19 @@ msg_SELinux: call L72 L70: .asciz "PROT_EXEC|PROT_WRITE failed.\n" - .align 4 L71: // IDENTSTR goes here +#if BIG_ENDIAN //{ + section ELFMAINZe + .balign 8 + .globl entry_descr +entry_descr: // Elf64_Ehdr.e_entry points here (big endian only) + .quad _start,0,0 +#endif //} + section ELFMAINZ + .balign 4 L72: li a2,L71 - L70 // length mflr a1 // message text @@ -149,21 +161,19 @@ unfold: lwz r26,0(r30) // O_BINFO sz_obinfo= 4 + lwz a0,sz_obinfo + sz_cpr(r30) // sz_cpr(fold) (< 1 Page) li a5,0 // off_t + lis a1,1 // PAGE_SIZE li a4,-1 // fd; cater to *BSD for MAP_ANON - lwz a0,sz_obinfo + sz_cpr(r30) // size < 1 Page + add a0,a0,r30 // beyond compressed fold li a3,MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS + addi a0,a0,sz_obinfo + sz_b_info-1 li a2,PROT_READ | PROT_WRITE | PROT_EXEC -// li a1,PAGE_SIZE - lis a1,1 - add a0,a0,r30 + add a0,a0,a1 // across next page boundary li 0,__NR_mmap -// addi a0,a0,sz_b_info+PAGE_SIZE-1 - addi a0,a0,sz_obinfo + sz_b_info-1 - add a0,a0,a1 - rlwinm a0,a0,0,0,31-PAGE_SHIFT // next page boundary after fold + rlwinm a0,a0,0,0,31-PAGE_SHIFT // next page boundary after fold sc; bso- msg_SELinux // Branch if SummaryOverflow (failure) -0: + mtctr r31 lwz r0,sz_obinfo + sz_unc(r30) // size uncompressed lbz meth,sz_obinfo + b_method(r30) @@ -173,15 +183,16 @@ sz_obinfo= 4 mtlr a0 // &continuation lwz lsrc,sz_obinfo + sz_cpr(r30) // size of compressed addi src,r30,sz_obinfo + sz_b_info - la sp,-6*8(sp) // (sp,pc,cr, xx,yy,zz) save area per calling convention +LINKAREA= 6*8 // matches fold.S + la sp,-LINKAREA(sp) // (sp,cr,lr, xlc.tmp,ld.tmp,save.toc) save area per calling convention bctr // goto decomrpess; return to link register (mmap'ed page) -// Example code at entrypoint of C-language subroutine: +// Example 32-bit code at entrypoint of C-language subroutine: // mflr r0 # r0= return address // stwu sp,-96(sp) # allocate local frame; chain to previous frame // stmw r14,24(sp) # save 18 regs r14,r15,...,r31; 4*18 == (96 - 24) // stw r0,100(sp) # save return address into caller's frame (100 >= 96) -// Example code at exit: +// Example 32-bit code at exit: // lwz r0,100(sp) # r0= return address // lmw r14,24(sp) # restore 18 regs r14,r15,...,r31 // mtlr r0 # prepare for indirect jump @@ -189,7 +200,7 @@ sz_obinfo= 4 // blr # goto return address main: - teq r0,r0 // debugging +//// teq r0,r0 // debugging stdu r1,-32*8(sp) // allocate space (keeping 0 mod 16), save r1 // stm r2,8(sp) // save registers r2 thru r31 - 32bits save std 2,2*8-8(sp) @@ -224,7 +235,7 @@ main: std 31,31*8-8(sp) mflr r31 // &decompress call unfold - .long O_BINFO + .long O_BINFO // .int4 /* { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...} */ /* vim:set ts=8 sw=8 et: */ diff --git a/src/stub/src/powerpc64le-linux.elf-fold.S b/src/stub/src/powerpc64le-linux.elf-fold.S index b24a7f96..e7e9f9c0 100644 --- a/src/stub/src/powerpc64le-linux.elf-fold.S +++ b/src/stub/src/powerpc64le-linux.elf-fold.S @@ -32,6 +32,10 @@ #include "arch/powerpc/64le/macros.S" #include "arch/powerpc/64le/ppc_regs.h" +#ifndef BIG_ENDIAN +#define BIG_ENDIAN 0 +#endif + #define szElf64_Ehdr 0x40 #define szElf64_Phdr 0x38 #define e_phnum 56 @@ -44,54 +48,52 @@ sz_l_info= 12 sz_p_info= 12 OVERHEAD= 2048 -LINKAREA= 6*8 // (sp,pc,cr, xx,yy.zz) save area per calling convention +LINKAREA= 6*8 // (sp,cr,lr, tmp.xlc,tmp.ld,save.toc) save area per calling convention /* In: r31= &decompress; also 8+ (char *)&(#bytes which preceed &-8(r31) r28= &Elf64_auxv_t r27= actual page size r26= o_binfo + sp/ LINKAREA,regsav(r1-31),&eof_src,argc,argv,0,env,0,auxv,0,chars */ fold_begin: call L90 #include "arch/powerpc/64le/bxx.S" -/* The SysV convention for argument registers after execve is nice: - a0= argc - a1= argv - a2= envp - a3= auxvp - a4= fini - sp= ~0xf & (-2*4 + (void *)&argc) // 0(sp): old_sp, pc - Instead, Linux gives only - sp= &{argc,argv...,0,env...,0,auxv...,strings} // 16-byte aligned? - We must figure out the rest, particularly auxvp. -*/ zfind: ld t0,0(a6) // parameters are 16byte aligned addi a6,a6,8 cmpldi cr7,t0,0; bne+ cr7,zfind ret L90: - la sp,LINKAREA(sp) // trim save area used by decompressor mflr a5 // &ppcbxx: f_unfilter - ld a6,0(sp) // sp at execve + ld a6,LINKAREA(sp) // sp from regsav at execve call zfind // a6= &env - call zfind // a6= &Elf64_auxv - lwz a1,-8(r31) // #bytes which preceed -8(r31) + call zfind // a6= &Elf64_auxv; t0= 0 + la a7,LINKAREA+(32-1)*8(sp) // &reloc + std t0,0(a7) // reloc= 0 + la sp,-OVERHEAD(sp) // -LINKAREA + &Elf64_Ehdr temporary space + lwz a1,-2*4(r31) // sz_pack2 == #bytes which preceed -8(r31) rlwinm r30,a5,0,0,31-12 // r30= &this_page - mr a7,r30 // reloc addr - mr a4,r31 // &decompress: f_expand subf r29,a1,r31 // 8+ (char *)&our_Elf64_Ehdr - la a2,-OVERHEAD(sp) // &Elf64_Ehdr temporary space - addi r29,r29,-8 // &our_Elf64_Ehdr + mr a4,r31 // &decompress: f_expand + addi r29,r29,-2*4 // &our_Elf64_Ehdr sub a1,a1,r26 // total_size add a0,r29,r26 // &b_info - addi sp,sp,-(LINKAREA+OVERHEAD) - lwz a3,sz_unc+sz_p_info+sz_l_info(a0) // sz_elf_headers - call upx_main // Out: a0= entry - /* entry= upx_main(b_info *a0, total_size a1, Elf64_Ehdr *a2, sz_ehdr a3, - f_decomp a4, f_unf a5, Elf64_auxv_t *a6) -*/ + la a2,LINKAREA(sp) // &Elf64_Ehdr temporary space + lwz a3,sz_unc(a0) // sz_elf_headers +#if BIG_ENDIAN //{ + std a4,3*8(sp); la a4,3*8(sp) // use tmp.xlc + std a5,4*8(sp); la a5,4*8(sp) // use tmp.ld +#endif //} + call upx_main + // a0=entry= upx_main(b_info *a0, total_size a1, Elf64_Ehdr *a2, sz_ehdr a3, + // f_decomp a4, f_unf a5, Elf64_auxv_t *a6, void *a7=p_reloc) +#if BIG_ENDIAN //{ + ld r0,LINKAREA+OVERHEAD +(32-1)*8(sp) // reloc for ET_DYN + ld r2,8(r3); add r2,r2,r0 // toc + ld r3,0(r3); add r3,r3,r0 // .func +#endif //} mr r31,a0 // save &entry mr a0,r29 // &our_Elf64_Ehdr @@ -100,10 +102,11 @@ L90: mtlr r31 // entry address -// lmw r2,4+LINKAREA+OVERHEAD(sp) // restore registers r2 thru r31 32bits load /* Restore Save Area */ rest: +#if !BIG_ENDIAN //{ ld 2,2*8-8+LINKAREA+OVERHEAD(sp) +#endif //} ld 3,3*8-8+LINKAREA+OVERHEAD(sp) ld 4,4*8-8+LINKAREA+OVERHEAD(sp) ld 5,5*8-8+LINKAREA+OVERHEAD(sp) @@ -135,7 +138,9 @@ rest: ld 31,31*8-8+LINKAREA+OVERHEAD(sp) ld r1,LINKAREA+OVERHEAD(sp) // restore r1; deallocate space - mflr 12 // load ld.so.2 address + li r0,0 + mtcr r0 + mtctr r0 ret // enter /lib/ld.so.1 SYS_exit= 1 diff --git a/src/stub/src/powerpc64le-linux.elf-main.c b/src/stub/src/powerpc64le-linux.elf-main.c index 90b25544..ff8a4fb6 100644 --- a/src/stub/src/powerpc64le-linux.elf-main.c +++ b/src/stub/src/powerpc64le-linux.elf-main.c @@ -304,7 +304,7 @@ void *upx_main( f_expand *const f_decompress, f_unfilter *const f_unf, Elf64_auxv_t *const av, - Elf64_Addr reloc // IN OUT; value result for ET_DYN + Elf64_Addr *p_reloc // particularly for ET_DYN and -fpie ) { Elf64_Phdr const *phdr = (Elf64_Phdr const *)(1+ ehdr); @@ -329,13 +329,13 @@ void *upx_main( //auxv_up(av, AT_PHENT , ehdr->e_phentsize); /* this can never change */ //auxv_up(av, AT_PAGESZ, PAGE_SIZE); /* ld-linux.so.2 does not need this */ - entry = do_xmap(ehdr, &xi0, 0, av, f_decompress, f_unf, &reloc); // "rewind" + entry = do_xmap(ehdr, &xi0, 0, av, f_decompress, f_unf, p_reloc); // "rewind" auxv_up(av, AT_ENTRY , entry); { // Map PT_INTERP program interpreter int j; for (j=0; j < ehdr->e_phnum; ++phdr, ++j) if (PT_INTERP==phdr->p_type) { - char const *const iname = reloc + (char const *)phdr->p_vaddr; + char const *const iname = *p_reloc + (char const *)phdr->p_vaddr; int const fdi = open(iname, O_RDONLY, 0); if (0 > fdi) { err_exit(18); @@ -344,7 +344,7 @@ void *upx_main( ERR_LAB err_exit(19); } - entry = do_xmap(ehdr, 0, fdi, 0, 0, 0, 0); + entry = do_xmap(ehdr, 0, fdi, 0, 0, 0, p_reloc); close(fdi); } } diff --git a/src/stub/tmp/powerpc64le-linux.elf-entry.bin.dump b/src/stub/tmp/powerpc64le-linux.elf-entry.bin.dump index 38de68cc..bcdfd2f0 100644 --- a/src/stub/tmp/powerpc64le-linux.elf-entry.bin.dump +++ b/src/stub/tmp/powerpc64le-linux.elf-entry.bin.dump @@ -13,8 +13,8 @@ Idx Name Size VMA LMA File off Algn 8 LZMA_DEC30 00000028 0000000000000000 0000000000000000 00001c84 2**0 CONTENTS, READONLY 9 NRV_TAIL 0000001c 0000000000000000 0000000000000000 00001cac 2**0 CONTENTS, READONLY 10 CFLUSH 00000024 0000000000000000 0000000000000000 00001cc8 2**0 CONTENTS, READONLY - 11 ELFMAINY 00000030 0000000000000000 0000000000000000 00001cf0 2**4 CONTENTS, RELOC, READONLY - 12 ELFMAINZ 00000114 0000000000000000 0000000000000000 00001d20 2**0 CONTENTS, RELOC, READONLY + 11 ELFMAINY 00000022 0000000000000000 0000000000000000 00001cec 2**0 CONTENTS, RELOC, READONLY + 12 ELFMAINZ 00000110 0000000000000000 0000000000000000 00001d10 2**2 CONTENTS, RELOC, READONLY SYMBOL TABLE: 0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30 0000000000000000 l d NRV_TAIL 0000000000000000 NRV_TAIL @@ -59,4 +59,4 @@ OFFSET TYPE VALUE RELOCATION RECORDS FOR [ELFMAINZ]: OFFSET TYPE VALUE 0000000000000058 R_PPC64_REL14 ELFMAINY -0000000000000110 R_PPC64_ADDR32 O_BINFO +000000000000010c R_PPC64_ADDR32 O_BINFO diff --git a/src/stub/tmp/powerpc64le-linux.elf-fold.map b/src/stub/tmp/powerpc64le-linux.elf-fold.map index cfc72fe9..5fdd0de3 100644 --- a/src/stub/tmp/powerpc64le-linux.elf-fold.map +++ b/src/stub/tmp/powerpc64le-linux.elf-fold.map @@ -9,58 +9,58 @@ Linker script and memory map TARGET(elf64-powerpcle) 0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc) -.text 0x00000000001000bc 0x808 +.text 0x00000000001000bc 0x80c *(.text) - .text 0x00000000001000bc 0x1a4 tmp/powerpc64le-linux.elf-fold.o - 0x0000000000100214 mmap - 0x0000000000100228 exit - 0x0000000000100230 read - 0x0000000000100238 open - 0x0000000000100240 close - 0x0000000000100248 mprotect - 0x0000000000100250 munmap - 0x0000000000100258 brk - .text 0x0000000000100260 0x664 tmp/powerpc64le-linux.elf-main.o + .text 0x00000000001000bc 0x1ac tmp/powerpc64le-linux.elf-fold.o + 0x000000000010021c mmap + 0x0000000000100230 exit + 0x0000000000100238 read + 0x0000000000100240 open + 0x0000000000100248 close + 0x0000000000100250 mprotect + 0x0000000000100258 munmap + 0x0000000000100260 brk + .text 0x0000000000100268 0x660 tmp/powerpc64le-linux.elf-main.o *(.data) - .data 0x00000000001008c4 0x0 tmp/powerpc64le-linux.elf-fold.o - .data 0x00000000001008c4 0x0 tmp/powerpc64le-linux.elf-main.o + .data 0x00000000001008c8 0x0 tmp/powerpc64le-linux.elf-fold.o + .data 0x00000000001008c8 0x0 tmp/powerpc64le-linux.elf-main.o -.sfpr 0x00000000001008c4 0xa4 - .sfpr 0x00000000001008c4 0xa4 linker stubs - 0x00000000001008c4 _savegpr0_14 - 0x00000000001008f8 _savegpr0_27 - 0x00000000001008fc _savegpr0_28 - 0x0000000000100914 _restgpr0_14 - 0x0000000000100948 _restgpr0_27 - 0x000000000010094c _restgpr0_28 +.sfpr 0x00000000001008c8 0xa4 + .sfpr 0x00000000001008c8 0xa4 linker stubs + 0x00000000001008c8 _savegpr0_14 + 0x00000000001008f8 _savegpr0_26 + 0x0000000000100900 _savegpr0_28 + 0x0000000000100918 _restgpr0_14 + 0x0000000000100948 _restgpr0_26 + 0x0000000000100950 _restgpr0_28 -.glink 0x0000000000100968 0x0 - .glink 0x0000000000100968 0x0 linker stubs +.glink 0x0000000000100970 0x0 + .glink 0x0000000000100970 0x0 linker stubs -.eh_frame 0x0000000000100968 0x0 - .eh_frame 0x0000000000100968 0x0 linker stubs +.eh_frame 0x000000000010096c 0x0 + .eh_frame 0x000000000010096c 0x0 linker stubs -.rela.dyn 0x0000000000100968 0x0 - .rela.iplt 0x0000000000100968 0x0 linker stubs +.rela.dyn 0x0000000000100970 0x0 + .rela.iplt 0x0000000000100970 0x0 linker stubs .data LOAD tmp/powerpc64le-linux.elf-fold.o LOAD tmp/powerpc64le-linux.elf-main.o OUTPUT(tmp/powerpc64le-linux.elf-fold.bin elf64-powerpcle) -.branch_lt 0x0000000000100968 0x0 - .branch_lt 0x0000000000100968 0x0 linker stubs +.branch_lt 0x0000000000100970 0x0 + .branch_lt 0x0000000000100970 0x0 linker stubs -.toc 0x0000000000100968 0x0 - .toc 0x0000000000100968 0x0 tmp/powerpc64le-linux.elf-main.o +.toc 0x0000000000100970 0x0 + .toc 0x0000000000100970 0x0 tmp/powerpc64le-linux.elf-main.o -.opd 0x0000000000100968 0x58 - .opd 0x0000000000100968 0x58 tmp/powerpc64le-linux.elf-main.o - 0x00000000001009a8 upx_main +.opd 0x0000000000100970 0x58 + .opd 0x0000000000100970 0x58 tmp/powerpc64le-linux.elf-main.o + 0x00000000001009b0 upx_main -.iplt 0x00000000001009c0 0x0 - .iplt 0x00000000001009c0 0x0 linker stubs +.iplt 0x00000000001009c8 0x0 + .iplt 0x00000000001009c8 0x0 linker stubs -.bss 0x00000000001009c0 0x0 - .bss 0x00000000001009c0 0x0 tmp/powerpc64le-linux.elf-fold.o - .bss 0x00000000001009c0 0x0 tmp/powerpc64le-linux.elf-main.o +.bss 0x00000000001009c8 0x0 + .bss 0x00000000001009c8 0x0 tmp/powerpc64le-linux.elf-fold.o + .bss 0x00000000001009c8 0x0 tmp/powerpc64le-linux.elf-main.o