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
This commit is contained in:
John Reiser
2017-04-11 19:15:43 -07:00
parent 40b506d2e0
commit 4e05f087f9
29 changed files with 1944 additions and 478 deletions
+4
View File
@@ -416,6 +416,10 @@ private:
#define UPX_F_LINUX_ELF32_MIPSEB 137 #define UPX_F_LINUX_ELF32_MIPSEB 137
#define UPX_F_DYLIB_PPC32 138 #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 // compression methods
#define M_ALL (-1) #define M_ALL (-1)
+34
View File
@@ -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, void ElfLinkerPpc64le::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
const char *type) { const char *type) {
if (!strcmp(type, "R_PPC64_ADDR64")) {
set_le64(location, get_le64(location) + value);
return;
}
if (!strcmp(type, "R_PPC64_ADDR32")) { if (!strcmp(type, "R_PPC64_ADDR32")) {
set_le32(location, get_le32(location) + value); set_le32(location, get_le32(location) + value);
return; return;
@@ -834,6 +838,36 @@ void ElfLinkerPpc64le::relocate1(const Relocation *rel, upx_byte *location, upx_
super::relocate1(rel, location, value, type); 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, void ElfLinkerX86::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
const char *type) { const char *type) {
if (strncmp(type, "R_386_", 6)) if (strncmp(type, "R_386_", 6))
+11
View File
@@ -246,6 +246,17 @@ protected:
const char *type); 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 { class ElfLinkerX86 : public ElfLinker {
typedef ElfLinker super; typedef ElfLinker super;
+272 -9
View File
@@ -527,7 +527,11 @@ PackLinuxElf::addStubEntrySections(Filter const *)
: NULL), NULL); : NULL), NULL);
if (hasLoaderSection("CFLUSH")) if (hasLoaderSection("CFLUSH"))
addLoader("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")) { if (hasLoaderSection("ELFMAINZu")) {
addLoader(/*(all_pages ? "LUNMP000" : "LUNMP001"),*/ "ELFMAINZu", NULL); addLoader(/*(all_pages ? "LUNMP000" : "LUNMP001"),*/ "ELFMAINZu", NULL);
} }
@@ -697,6 +701,15 @@ PackLinuxElf64ppcle::getFilters() const
return filters; return filters;
} }
int const *
PackLinuxElf64ppc::getFilters() const
{
static const int filters[] = {
0xd0,
FT_END };
return filters;
}
int const * int const *
PackLinuxElf64amd::getFilters() const PackLinuxElf64amd::getFilters() const
{ {
@@ -758,9 +771,23 @@ void PackLinuxElf32::updateLoader(OutputFile * /*fo*/)
void PackLinuxElf64::updateLoader(OutputFile * /*fo*/) void PackLinuxElf64::updateLoader(OutputFile * /*fo*/)
{ {
set_te64(&elfout.ehdr.e_entry, sz_pack2 + upx_uint64_t const vbase = get_te64(&elfout.phdr[0].p_vaddr);
linker->getSymbolOffset("_start") + unsigned start = linker->getSymbolOffset("_start");
get_te64(&elfout.phdr[0].p_vaddr));
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) PackLinuxElf32ppc::PackLinuxElf32ppc(InputFile *f)
@@ -790,15 +817,33 @@ PackLinuxElf64ppcle::PackLinuxElf64ppcle(InputFile *f)
ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX; ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX;
} }
PackLinuxElf64ppc::PackLinuxElf64ppc(InputFile *f)
: super(f), lg2_page(16), page_size(1u<<lg2_page)
{
e_machine = Elf64_Ehdr::EM_PPC64;
ei_class = Elf64_Ehdr::ELFCLASS64;
ei_data = Elf64_Ehdr::ELFDATA2MSB;
ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX;
}
PackLinuxElf64ppcle::~PackLinuxElf64ppcle() PackLinuxElf64ppcle::~PackLinuxElf64ppcle()
{ {
} }
PackLinuxElf64ppc::~PackLinuxElf64ppc()
{
}
Linker* PackLinuxElf64ppcle::newLinker() const Linker* PackLinuxElf64ppcle::newLinker() const
{ {
return new ElfLinkerPpc64le; return new ElfLinkerPpc64le;
} }
Linker* PackLinuxElf64ppc::newLinker() const
{
return new ElfLinkerPpc64;
}
PackLinuxElf64amd::PackLinuxElf64amd(InputFile *f) PackLinuxElf64amd::PackLinuxElf64amd(InputFile *f)
: super(f) : super(f)
{ {
@@ -1336,6 +1381,19 @@ PackLinuxElf64ppcle::buildLoader(const Filter *ft)
stub_powerpc64le_linux_elf_fold, sizeof(stub_powerpc64le_linux_elf_fold), ft); stub_powerpc64le_linux_elf_fold, sizeof(stub_powerpc64le_linux_elf_fold), ft);
} }
static const
#include "stub/powerpc64-linux.elf-entry.h"
static const
#include "stub/powerpc64-linux.elf-fold.h"
void
PackLinuxElf64ppc::buildLoader(const Filter *ft)
{
buildLinuxLoader(
stub_powerpc64_linux_elf_entry, sizeof(stub_powerpc64_linux_elf_entry),
stub_powerpc64_linux_elf_fold, sizeof(stub_powerpc64_linux_elf_fold), ft);
}
static const static const
#include "stub/amd64-linux.elf-entry.h" #include "stub/amd64-linux.elf-entry.h"
static const static const
@@ -1874,6 +1932,204 @@ proceed: ;
return true; return true;
} }
bool
PackLinuxElf64ppc::canPack()
{
union {
unsigned char buf[sizeof(Elf64_Ehdr) + 14*sizeof(Elf64_Phdr)];
//struct { Elf64_Ehdr ehdr; Elf64_Phdr phdr; } e;
} u;
COMPILE_TIME_ASSERT(sizeof(u) <= 1024)
fi->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 <ps.m@gmx.net> 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 bool
PackLinuxElf64amd::canPack() PackLinuxElf64amd::canPack()
{ {
@@ -2586,7 +2842,7 @@ PackLinuxElf64::generateElfHdr(
h3->ehdr.e_ident[Elf32_Ehdr::EI_OSABI] = ei_osabi; h3->ehdr.e_ident[Elf32_Ehdr::EI_OSABI] = ei_osabi;
unsigned phnum_o = get_te16(&h2->ehdr.e_phnum); 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; h2->ehdr.e_shoff = 0;
assert(get_te16(&h2->ehdr.e_ehsize) == sizeof(Elf64_Ehdr)); assert(get_te16(&h2->ehdr.e_ehsize) == sizeof(Elf64_Ehdr));
assert(get_te16(&h2->ehdr.e_phentsize) == sizeof(Elf64_Phdr)); 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. // anyway by phdr[0].p_align and constant offset from phdr[0].p_vaddr.
// However, somebody might complain because (.p_vaddr - .p_offset) // However, somebody might complain because (.p_vaddr - .p_offset)
// is divisible only by phdr[1].p_align, and not by phdr[0].p_align. // is divisible only by phdr[1].p_align, and not by phdr[0].p_align.
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_align, 0x1000);
if ( ~page_mask == 0xffff ) /* 64K specific case */ }
set_te64(&h2->phdr[1].p_offset, /*~page_mask*/ 0xffff & brkb); set_te64(&h2->phdr[1].p_offset, (-1+ get_te64(&h2->phdr[1].p_align)) & brkb);
else
set_te64(&h2->phdr[1].p_offset, /*~page_mask*/ 0xfff & brkb);
set_te64(&h2->phdr[1].p_vaddr, brkb); set_te64(&h2->phdr[1].p_vaddr, brkb);
set_te64(&h2->phdr[1].p_paddr, 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) ); 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*/) void PackLinuxElf64::pack1(OutputFile *fo, Filter & /*ft*/)
{ {
fi->seek(0, SEEK_SET); fi->seek(0, SEEK_SET);
+32
View File
@@ -372,6 +372,18 @@ protected:
} }
}; };
class PackLinuxElf64Be : public PackLinuxElf64
{
typedef PackLinuxElf64 super;
protected:
PackLinuxElf64Be(InputFile *f) : super(f) {
lg2_page=16;
page_size=1u<<lg2_page;
bele = &N_BELE_RTP::be_policy;
PackLinuxElf64help1(f);
}
};
/************************************************************************* /*************************************************************************
// linux/elf64amd // linux/elf64amd
@@ -460,6 +472,26 @@ protected:
}; };
class PackLinuxElf64ppc : public PackLinuxElf64Be
{
typedef PackLinuxElf64Be super;
public:
PackLinuxElf64ppc(InputFile *f);
virtual ~PackLinuxElf64ppc();
virtual int getFormat() const { return UPX_F_LINUX_ELFPPC64; }
virtual const char *getName() const { return "linux/ppc64"; }
virtual const char *getFullName(const options_t *) const { return "powerpc64-linux.elf"; }
virtual const int *getFilters() const;
protected:
unsigned lg2_page; // log2(PAGE_SIZE)
unsigned page_size; // 1u<<lg2_page
virtual bool canPack();
virtual void pack1(OutputFile *, Filter &); // generate executable header
virtual void buildLoader(const Filter *);
virtual Linker* newLinker() const;
};
/************************************************************************* /*************************************************************************
// linux/elf386 // linux/elf386
**************************************************************************/ **************************************************************************/
+1
View File
@@ -194,6 +194,7 @@ Packer *PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
D(PackLinuxElf32armBe); D(PackLinuxElf32armBe);
D(PackLinuxElf64arm); D(PackLinuxElf64arm);
D(PackLinuxElf32ppc); D(PackLinuxElf32ppc);
D(PackLinuxElf64ppc);
D(PackLinuxElf64ppcle); D(PackLinuxElf64ppcle);
D(PackLinuxElf32mipsel); D(PackLinuxElf32mipsel);
D(PackLinuxElf32mipseb); D(PackLinuxElf32mipseb);
+92
View File
@@ -135,6 +135,13 @@ STUBS += powerpc64le-linux.elf-entry.h
STUBS += powerpc64le-linux.elf-fold.h STUBS += powerpc64le-linux.elf-fold.h
STUBS += powerpc64le-linux.kernel.vmlinux-head.h STUBS += powerpc64le-linux.kernel.vmlinux-head.h
STUBS += powerpc64le-linux.kernel.vmlinux.h STUBS += powerpc64le-linux.kernel.vmlinux.h
#STUBS += powerpc64-darwin.dylib-entry.h
#STUBS += powerpc64-darwin.macho-entry.h
#STUBS += powerpc64-darwin.macho-fold.h
STUBS += powerpc64-linux.elf-entry.h
STUBS += powerpc64-linux.elf-fold.h
#STUBS += powerpc64-linux.kernel.vmlinux-head.h
#STUBS += powerpc64-linux.kernel.vmlinux.h
endif endif
@@ -1367,6 +1374,15 @@ powerpc64le-darwin.dylib-entry.h : $(srcdir)/src/$$T.S
$(call tc,bin2h) tmp/$T.bin $@ $(call tc,bin2h) tmp/$T.bin $@
powerpc64-darwin.dylib%.h : tc_list = powerpc64-linux.elf default
powerpc64-darwin.dylib%.h : tc_bfdname = elf64-powerpc
powerpc64-darwin.dylib-entry.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c $< -o tmp/$T.bin
$(call tc,f-embed_objinfo,tmp/$T.bin)
$(call tc,bin2h) tmp/$T.bin $@
# /*********************************************************************** # /***********************************************************************
# // powerpc64le-darwin.macho # // powerpc64le-darwin.macho
# ************************************************************************/ # ************************************************************************/
@@ -1400,6 +1416,34 @@ tmp/powerpc64le-darwin.macho-main.o : $(srcdir)/src/$$T.c
$(call tc,f-objstrip,$@) $(call tc,f-objstrip,$@)
powerpc64-darwin.macho%.h : tc_list = powerpc64-darwin.macho powerpc64-linux.elf default
powerpc64-darwin.macho%.h : tc_bfdname = elf64-powerpcbe
tc.powerpc64-darwin.macho.ld = multiarch-ld-2.27 -b $(tc_bfdname)
powerpc64-darwin.macho-entry.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c $< -o tmp/$T.bin
$(call tc,f-embed_objinfo,tmp/$T.bin)
$(call tc,bin2h) tmp/$T.bin $@
powerpc64-darwin.macho-fold.h : tmp/$$T.o tmp/powerpc64-darwin.macho-main.o
$(call tc,ld) --no-warn-mismatch --strip-all --oformat binary -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
chmod a-x tmp/$T.bin
$(call tc,bin2h) tmp/$T.bin $@
tmp/powerpc64-darwin.macho-fold.o : $(srcdir)/src/$$T.S
$(call tc,gcc) -c $< -o $@
$(call tc,f-objstrip,$@)
# Omit -Os because it references _savegpr0_28 and _restgpr0_28 (and *_16 and *_27)
# only 3 times, so sharing the code of those routines saves almost nothing
# (and we would have to write them ourselves.)
# Besides, PowerPC has 31.5 registers (r0 cannot index), which is plenty.
tmp/powerpc64-darwin.macho-main.o : $(srcdir)/src/$$T.c
$(call tc,gcc) -c -O $< -o $@
$(call tc,f-objstrip,$@)
# /*********************************************************************** # /***********************************************************************
# // powerpc64le-linux.elf # // powerpc64le-linux.elf
# ************************************************************************/ # ************************************************************************/
@@ -1435,6 +1479,38 @@ tmp/powerpc64le-linux.elf-main.o : $(srcdir)/src/$$T.c
$(call tc,f-objstrip,$@) $(call tc,f-objstrip,$@)
powerpc64-linux.elf%.h : tc_list = powerpc64-linux.elf default
powerpc64-linux.elf%.h : tc_bfdname = elf64-powerpc
tc.powerpc64-linux.elf.gcc = powerpc64-linux-gcc-4.9.2 -m64 -mbig-endian -nostdinc -MMD -MT $@
tc.powerpc64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables -fno-stack-protector
tc.powerpc64-linux.elf.gcc += -mno-longcall
tc.powerpc64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
tc.powerpc64-linux.elf.ld = powerpc64-linux-ld-2.25 -b $(tc_bfdname)
tc.powerpc64-linux.elf.objcopy = multiarch-objcopy-2.27 -F $(tc_bfdname)
tc.powerpc64-linux.elf.objdump = multiarch-objdump-2.27 -b $(tc_bfdname)
powerpc64-linux.elf-entry.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c $< -o tmp/$T.bin
$(call tc,f-embed_objinfo,tmp/$T.bin)
$(call tc,bin2h) tmp/$T.bin $@
powerpc64-linux.elf-fold.h : tmp/$$T.o tmp/powerpc64-linux.elf-main.o $(srcdir)/src/$$T.lds
$(call tc,ld) --strip-all -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
$(call tc,f-objstrip,tmp/$T.bin)
$(call tc,sstrip) tmp/$T.bin
$(call tc,bin2h) tmp/$T.bin $@
tmp/powerpc64-linux.elf-fold.o : $(srcdir)/src/$$T.S
$(call tc,gcc) -c $< -o $@
$(call tc,f-objstrip,$@)
tmp/powerpc64-linux.elf-main.o : $(srcdir)/src/$$T.c
$(call tc,gcc) -c -Os $< -o $@
$(call tc,f-objstrip,$@)
# /*********************************************************************** # /***********************************************************************
# // powerpc64le-linux.kernel.vmlinux # // powerpc64le-linux.kernel.vmlinux
# // powerpc64le-linux.kernel.vmlinux-head # // powerpc64le-linux.kernel.vmlinux-head
@@ -1456,6 +1532,22 @@ powerpc64le-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
$(call tc,bin2h) tmp/$T.bin $@ $(call tc,bin2h) tmp/$T.bin $@
powerpc64-linux.kernel.vmlinu%.h : tc_list = powerpc64-linux.kernel default
powerpc64-linux.kernel.vmlinu%.h : tc_bfdname = elf64-powerpc
tc.powerpc64-linux.kernel.gcc = $(tc.powerpc64-linux.elf.gcc)
powerpc64-linux.kernel.vmlinu%.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
$(call tc,f-embed_objinfo,tmp/$T.bin)
$(call tc,bin2h-c) tmp/$T.bin $@
powerpc64-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
$(call tc,objcopy) --output-target binary --only-section .text tmp/$T.o tmp/$T.bin
$(call tc,bin2h) tmp/$T.bin $@
# /*********************************************************************** # /***********************************************************************
# // dependencies # // dependencies
# ************************************************************************/ # ************************************************************************/
+3 -3
View File
@@ -32,8 +32,8 @@
#define STUB_POWERPC_LINUX_ELF_ENTRY_SIZE 9042 #define STUB_POWERPC_LINUX_ELF_ENTRY_SIZE 9042
#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0xd7d532bf #define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0x038832c3
#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0x933cb3e1 #define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0x2a7eb489
unsigned char stub_powerpc_linux_elf_entry[9042] = { unsigned char stub_powerpc_linux_elf_entry[9042] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -426,7 +426,7 @@ unsigned char stub_powerpc_linux_elf_entry[9042] = {
/* 0x1830 */ 255,221,124,124, 27,120,128, 67, 0, 0,128,131, 0, 4, 56, 99, /* 0x1830 */ 255,221,124,124, 27,120,128, 67, 0, 0,128,131, 0, 4, 56, 99,
/* 0x1840 */ 0, 8, 44, 2, 0, 6, 65,130, 0, 16, 44, 2, 0, 0, 64,130, /* 0x1840 */ 0, 8, 44, 2, 0, 6, 65,130, 0, 16, 44, 2, 0, 0, 64,130,
/* 0x1850 */ 255,232, 56,128, 16, 0,124,155, 35,120, 57, 0, 0, 0, 56,224, /* 0x1850 */ 255,232, 56,128, 16, 0,124,155, 35,120, 57, 0, 0, 0, 56,224,
/* 0x1860 */ 255,255, 56,192, 0, 34, 56,160, 0, 3,128,126, 0, 8, 56, 99, /* 0x1860 */ 255,255, 56,192, 0, 34, 56,160, 0, 7,128,126, 0, 8, 56, 99,
/* 0x1870 */ 0, 12, 56, 68,255,255,124, 99,242, 20,124, 99, 18, 20,124, 66, /* 0x1870 */ 0, 12, 56, 68,255,255,124, 99,242, 20,124, 99, 18, 20,124, 66,
/* 0x1880 */ 24, 56,124, 98, 24, 80, 56, 0, 0, 90,124,110, 27,120, 68, 0, /* 0x1880 */ 24, 56,124, 98, 24, 80, 56, 0, 0, 90,124,110, 27,120, 68, 0,
/* 0x1890 */ 0, 2,124, 14, 24, 64, 64,130, 0, 0,127,233, 3,166,128, 30, /* 0x1890 */ 0, 2,124, 14, 24, 64, 64,130, 0, 0,127,233, 3,166,128, 30,
+750
View File
@@ -0,0 +1,750 @@
/* powerpc64-linux.elf-entry.h
created from powerpc64-linux.elf-entry.bin, 11372 (0x2c6c) 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
<markus@oberhumer.com> <ezerotven+github@gmail.com>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#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
};
+198
View File
@@ -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
<markus@oberhumer.com> <ezerotven+github@gmail.com>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#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
};
+232 -233
View File
@@ -1,5 +1,5 @@
/* powerpc64le-linux.elf-entry.h /* 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. 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_SIZE 10998
#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_ADLER32 0xf1704a2d #define STUB_POWERPC64LE_LINUX_ELF_ENTRY_ADLER32 0x82284965
#define STUB_POWERPC64LE_LINUX_ELF_ENTRY_CRC32 0x7f036a10 #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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 0x1ce0 */ 172, 4, 0,124, 44, 1, 0, 76, 32, 0,128, 78, 1, 0, 0, 72,
/* 0x1cf0 */ 1, 0, 0, 72, 80, 82, 79, 84, 95, 69, 88, 69, 67,124, 80, 82, /* 0x1cf0 */ 80, 82, 79, 84, 95, 69, 88, 69, 67,124, 80, 82, 79, 84, 95, 87,
/* 0x1d00 */ 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105,108,101,100, 46, /* 0x1d00 */ 82, 73, 84, 69, 32,102, 97,105,108,101,100, 46, 10, 0, 0, 0,
/* 0x1d10 */ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d10 */ 30, 0,160, 56,166, 2,136,124, 2, 0, 96, 56, 4, 0, 0, 56,
/* 0x1d20 */ 44, 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 */ 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 */ 166, 2,200,127, 0, 0, 94,131, 0, 0, 0, 57,255,255,224, 56, /* 0x1d40 */ 1, 0,128, 60,255,255,224, 56, 20,242, 99,124, 50, 0,192, 56,
/* 0x1d50 */ 8, 0,126,128, 50, 0,192, 56, 7, 0,160, 56, 1, 0,128, 60, /* 0x1d50 */ 15, 0, 99, 56, 7, 0,160, 56, 20, 34, 99,124, 90, 0, 0, 56,
/* 0x1d60 */ 20,242, 99,124, 90, 0, 0, 56, 15, 0, 99, 56, 20, 34, 99,124, /* 0x1d60 */ 30, 0, 99, 84, 2, 0, 0, 68, 0, 0,195, 65,166, 3,233,127,
/* 0x1d70 */ 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 */ 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 */ 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 */ 208,255, 33, 56, 32, 4,128, 78, 8, 0,128,124, 1,255, 33,248, /* 0x1da0 */ 16, 0, 97,248, 24, 0,129,248, 32, 0,161,248, 40, 0,193,248,
/* 0x1db0 */ 8, 0, 65,248, 16, 0, 97,248, 24, 0,129,248, 32, 0,161,248, /* 0x1db0 */ 48, 0,225,248, 56, 0, 1,249, 64, 0, 33,249, 72, 0, 65,249,
/* 0x1dc0 */ 40, 0,193,248, 48, 0,225,248, 56, 0, 1,249, 64, 0, 33,249, /* 0x1dc0 */ 80, 0, 97,249, 88, 0,129,249, 96, 0,161,249,104, 0,193,249,
/* 0x1dd0 */ 72, 0, 65,249, 80, 0, 97,249, 88, 0,129,249, 96, 0,161,249, /* 0x1dd0 */ 112, 0,225,249,120, 0, 1,250,128, 0, 33,250,136, 0, 65,250,
/* 0x1de0 */ 104, 0,193,249,112, 0,225,249,120, 0, 1,250,128, 0, 33,250, /* 0x1de0 */ 144, 0, 97,250,152, 0,129,250,160, 0,161,250,168, 0,193,250,
/* 0x1df0 */ 136, 0, 65,250,144, 0, 97,250,152, 0,129,250,160, 0,161,250, /* 0x1df0 */ 176, 0,225,250,184, 0, 1,251,192, 0, 33,251,200, 0, 65,251,
/* 0x1e00 */ 168, 0,193,250,176, 0,225,250,184, 0, 1,251,192, 0, 33,251, /* 0x1e00 */ 208, 0, 97,251,216, 0,129,251,224, 0,161,251,232, 0,193,251,
/* 0x1e10 */ 200, 0, 65,251,208, 0, 97,251,216, 0,129,251,224, 0,161,251, /* 0x1e10 */ 240, 0,225,251,166, 2,232,127, 25,255,255, 75, 0, 0, 0, 0,
/* 0x1e20 */ 232, 0,193,251,240, 0,225,251,166, 2,232,127, 21,255,255, 75, /* 0x1e20 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 54,
/* 0x1e30 */ 0, 0, 0, 0,102,105,108,101, 32,102,111,114,109, 97,116, 32, /* 0x1e30 */ 52, 45,112,111,119,101,114,112, 99,108,101, 10, 10, 83,101, 99,
/* 0x1e40 */ 101,108,102, 54, 52, 45,112,111,119,101,114,112, 99,108,101, 10, /* 0x1e40 */ 116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32,
/* 0x1e50 */ 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, /* 0x1e50 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32,
/* 0x1e60 */ 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122, /* 0x1e60 */ 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1e70 */ 101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 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, 32, 32, 76, 77, 65, 32, 32, 32, 32, /* 0x1e80 */ 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32,
/* 0x1e90 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32, /* 0x1e90 */ 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48,
/* 0x1ea0 */ 111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, /* 0x1ea0 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48,
/* 0x1eb0 */ 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, /* 0x1eb0 */ 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ec0 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 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, 48, 48, 32, 32, 48, /* 0x1ed0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1ee0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ee0 */ 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x1ef0 */ 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, /* 0x1ef0 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69,
/* 0x1f00 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1f00 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72,
/* 0x1f10 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, /* 0x1f10 */ 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f20 */ 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1f20 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f30 */ 48, 48, 48, 48, 48, 32, 32, 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, 48, 48, 32, 32, 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 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1f50 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x1f60 */ 48, 52, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1f60 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82,
/* 0x1f70 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x1f70 */ 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48,
/* 0x1f80 */ 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1f80 */ 48, 49, 54, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f90 */ 48, 48, 48, 48, 48, 49, 54, 56, 32, 32, 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, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1fa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1fb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1fb0 */ 52, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1fc0 */ 48, 48, 48, 48, 52, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1fc0 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79,
/* 0x1fd0 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x1fd0 */ 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, 32,
/* 0x1fe0 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, /* 0x1fe0 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 52, 52, 32, 32,
/* 0x1ff0 */ 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, /* 0x1ff0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2000 */ 52, 52, 32, 32, 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, 48, 48, 32, 32, 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 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 97, 99, /* 0x2020 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x2030 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x2030 */ 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32,
/* 0x2040 */ 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x2040 */ 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2050 */ 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, /* 0x2050 */ 48, 48, 48, 48, 48, 49, 49, 56, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x2060 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 49, 56, 32, 32, 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, 48, 48, 32, 32, /* 0x2070 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x2080 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2080 */ 48, 48, 48, 50,102, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x2090 */ 32, 32, 48, 48, 48, 48, 48, 50,102, 48, 32, 32, 50, 42, 42, 48, /* 0x2090 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82,
/* 0x20a0 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x20a0 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, 65,
/* 0x20b0 */ 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, /* 0x20b0 */ 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x20c0 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, /* 0x20c0 */ 57, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20d0 */ 48, 48, 48, 48, 57, 52, 32, 32, 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, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x20e0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 48, 56,
/* 0x20f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x20f0 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
/* 0x2100 */ 48, 52, 48, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x2100 */ 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76,
/* 0x2110 */ 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x2110 */ 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48,
/* 0x2120 */ 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, /* 0x2120 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 98, 98, 56, 32, 32, 48, 48,
/* 0x2130 */ 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 98, 98, 56, /* 0x2130 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x2140 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2140 */ 48, 48, 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, /* 0x2150 */ 32, 32, 48, 48, 48, 48, 48, 52, 57, 99, 32, 32, 50, 42, 42, 48,
/* 0x2160 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 57, 99, 32, 32, /* 0x2160 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68,
/* 0x2170 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x2170 */ 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69,
/* 0x2180 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, /* 0x2180 */ 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 99, 51, 48, 32,
/* 0x2190 */ 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x2190 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21a0 */ 99, 51, 48, 32, 32, 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, 48, 48, 32, 32, 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 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 48, 53, /* 0x21c0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82,
/* 0x21d0 */ 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x21d0 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65,
/* 0x21e0 */ 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, /* 0x21e0 */ 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x21f0 */ 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, /* 0x21f0 */ 50, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2200 */ 48, 48, 48, 48, 50, 56, 32, 32, 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, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x2210 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 56, 52,
/* 0x2220 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x2220 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
/* 0x2230 */ 49, 99, 56, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x2230 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78,
/* 0x2240 */ 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x2240 */ 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48,
/* 0x2250 */ 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, /* 0x2250 */ 48, 48, 48, 49, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2260 */ 32, 48, 48, 48, 48, 48, 48, 49, 99, 32, 32, 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, 48, 48, 32, 32, 48, 48, 48, /* 0x2270 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49,
/* 0x2280 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2280 */ 99, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x2290 */ 48, 48, 48, 49, 99, 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x2290 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49,
/* 0x22a0 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x22a0 */ 48, 32, 67, 70, 76, 85, 83, 72, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x22b0 */ 89, 10, 32, 49, 48, 32, 67, 70, 76, 85, 83, 72, 32, 32, 32, 32, /* 0x22b0 */ 48, 48, 48, 48, 48, 48, 50, 52, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x22c0 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 52, 32, 32, 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, 48, 48, 32, 32, /* 0x22d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x22e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22e0 */ 48, 48, 49, 99, 99, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x22f0 */ 32, 32, 48, 48, 48, 48, 49, 99, 99, 56, 32, 32, 50, 42, 42, 48, /* 0x22f0 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89,
/* 0x2300 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x2300 */ 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32,
/* 0x2310 */ 79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x2310 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 50, 32, 32, 48, 48, 48,
/* 0x2320 */ 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 51, 48, 32, /* 0x2320 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x2330 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2330 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2340 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2340 */ 32, 48, 48, 48, 48, 49, 99,101, 99, 32, 32, 50, 42, 42, 48, 32,
/* 0x2350 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99,102, 48, 32, 32, 50, /* 0x2350 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67,
/* 0x2360 */ 42, 42, 52, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x2360 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, 32, 69,
/* 0x2370 */ 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x2370 */ 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48, 48,
/* 0x2380 */ 49, 50, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, /* 0x2380 */ 48, 48, 49, 49, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2390 */ 32, 48, 48, 48, 48, 48, 49, 49, 52, 32, 32, 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, 48, 48, 32, 32, 48, 48, 48, /* 0x23a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49,
/* 0x23b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x23b0 */ 100, 49, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69,
/* 0x23c0 */ 48, 48, 48, 49,100, 50, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x23c0 */ 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68,
/* 0x23d0 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x23d0 */ 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76,
/* 0x23e0 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, /* 0x23e0 */ 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x23f0 */ 84, 65, 66, 76, 69, 58, 10, 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 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2400 */ 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2410 */ 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, /* 0x2410 */ 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67,
/* 0x2420 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x2420 */ 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2430 */ 95, 68, 69, 67, 51, 48, 10, 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 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2440 */ 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2450 */ 78, 82, 86, 95, 84, 65, 73, 76, 9, 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, 32, 78, 82, 86, 95, 84, 65, /* 0x2460 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2470 */ 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2470 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x2480 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, /* 0x2480 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2490 */ 65, 73, 78, 89, 9, 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, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, /* 0x24a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
/* 0x24b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x24b0 */ 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48,
/* 0x24c0 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x24c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76,
/* 0x24d0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x24d0 */ 70, 77, 65, 73, 78, 90, 10, 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, /* 0x24e0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x24f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x24f0 */ 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x2500 */ 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, /* 0x2500 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73,
/* 0x2510 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, /* 0x2510 */ 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2520 */ 70, 77, 65, 73, 78, 88, 10, 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 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2530 */ 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2540 */ 78, 82, 86, 95, 72, 69, 65, 68, 9, 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, 32, 78, 82, 86, 95, 72, 69, /* 0x2550 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2560 */ 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2560 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48,
/* 0x2570 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, /* 0x2570 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78,
/* 0x2580 */ 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2580 */ 82, 86, 50, 69, 10, 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, /* 0x2590 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82,
/* 0x25a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x25a0 */ 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x25b0 */ 32, 32, 78, 82, 86, 50, 68, 9, 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, 32, 78, 82, 86, 50, 68, 10, 48, /* 0x25c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
/* 0x25d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x25d0 */ 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48,
/* 0x25e0 */ 108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, /* 0x25e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66,
/* 0x25f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, /* 0x25f0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2600 */ 82, 86, 50, 66, 10, 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 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, /* 0x2610 */ 76, 70, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2620 */ 77, 65, 95, 69, 76, 70, 48, 48, 9, 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 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, /* 0x2630 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2640 */ 76, 70, 48, 48, 10, 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 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, /* 0x2650 */ 69, 67, 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2660 */ 77, 65, 95, 68, 69, 67, 49, 48, 9, 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 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, /* 0x2670 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2680 */ 69, 67, 49, 48, 10, 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 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, /* 0x2690 */ 69, 67, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x26a0 */ 77, 65, 95, 68, 69, 67, 50, 48, 9, 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 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, /* 0x26b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x26c0 */ 69, 67, 50, 48, 10, 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 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 67, 70, /* 0x26d0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x26e0 */ 76, 85, 83, 72, 9, 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, 32, 67, 70, 76, 85, 83, 72, 10, 48, 48, 48, /* 0x26f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32,
/* 0x2700 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, /* 0x2700 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48,
/* 0x2710 */ 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, /* 0x2710 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97,
/* 0x2720 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2720 */ 114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2730 */ 95,115,116, 97,114,116, 10, 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 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2740 */ 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2750 */ 42, 85, 78, 68, 42, 9, 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 */ 48, 48, 48, 48, 48, 48, 32, 79, 95, 66, 73, 78, 70, 79, 10, 10, /* 0x2760 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0x2770 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2770 */ 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79,
/* 0x2780 */ 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x2780 */ 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2790 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 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, 32, 32, 84, 89, 80, 69, 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 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, /* 0x27b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 54, 52,
/* 0x27c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, /* 0x27c0 */ 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65,
/* 0x27d0 */ 80, 67, 54, 52, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 69, /* 0x27d0 */ 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x27e0 */ 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, /* 0x27e0 */ 48, 48, 48, 48, 56, 56, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x27f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 56, 56, 10, 10, 82, 69, 76, 79, /* 0x27f0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x2800 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, /* 0x2800 */ 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
/* 0x2810 */ 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, /* 0x2810 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
/* 0x2820 */ 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, /* 0x2820 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0x2830 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x2830 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100,
/* 0x2840 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2840 */ 52, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32,
/* 0x2850 */ 48, 48, 48,100, 52, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, /* 0x2850 */ 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69,
/* 0x2860 */ 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, /* 0x2860 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
/* 0x2870 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, /* 0x2870 */ 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70,
/* 0x2880 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, /* 0x2880 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84,
/* 0x2890 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2890 */ 89, 80, 69, 32, 32, 32, 32, 32, 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, /* 0x28a0 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x28b0 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, /* 0x28b0 */ 48, 48, 48, 48, 48, 99, 99, 32, 82, 95, 80, 80, 67, 54, 52, 95,
/* 0x28c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 99, 99, 32, 82, 95, 80, 80, /* 0x28c0 */ 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65,
/* 0x28d0 */ 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, /* 0x28d0 */ 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
/* 0x28e0 */ 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x28e0 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50,
/* 0x28f0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x28f0 */ 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32,
/* 0x2900 */ 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 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, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2910 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48,
/* 0x2920 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2920 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 98, 56, 32, 82, 95,
/* 0x2930 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 98, /* 0x2930 */ 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32,
/* 0x2940 */ 56, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, /* 0x2940 */ 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65,
/* 0x2950 */ 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, /* 0x2950 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82,
/* 0x2960 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x2960 */ 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79,
/* 0x2970 */ 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, /* 0x2970 */ 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2980 */ 93, 58, 10, 79, 70, 70, 83, 69, 84, 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, 32, 32, 84, 89, 80, 69, 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 */ 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, /* 0x29a0 */ 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67, 54, 52,
/* 0x29b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, /* 0x29b0 */ 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95,
/* 0x29c0 */ 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 76, /* 0x29c0 */ 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x29d0 */ 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, 48, /* 0x29d0 */ 48, 48, 48, 48, 48, 48, 50, 56, 10, 10, 82, 69, 76, 79, 67, 65,
/* 0x29e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 56, 10, 10, 82, 69, /* 0x29e0 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82,
/* 0x29f0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x29f0 */ 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70,
/* 0x2a00 */ 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, /* 0x2a00 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
/* 0x2a10 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2a10 */ 80, 69, 32, 32, 32, 32, 32, 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, /* 0x2a20 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2a30 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x2a30 */ 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82,
/* 0x2a40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, /* 0x2a40 */ 69, 76, 50, 52, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78,
/* 0x2a50 */ 54, 52, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 69, 76, 70, /* 0x2a50 */ 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69,
/* 0x2a60 */ 77, 65, 73, 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, /* 0x2a60 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65,
/* 0x2a70 */ 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, /* 0x2a70 */ 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32,
/* 0x2a80 */ 76, 70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 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, 32, 32, 84, 89, 80, 69, 32, /* 0x2a90 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48,
/* 0x2aa0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2aa0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 56, 32,
/* 0x2ab0 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2ab0 */ 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32,
/* 0x2ac0 */ 48, 53, 56, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, /* 0x2ac0 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48,
/* 0x2ad0 */ 52, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, /* 0x2ad0 */ 48, 48, 48, 48, 48, 48, 48, 48, 49, 48, 99, 32, 82, 95, 80, 80,
/* 0x2ae0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 48, 32, /* 0x2ae0 */ 67, 54, 52, 95, 65, 68, 68, 82, 51, 50, 32, 32, 32, 32, 79, 95,
/* 0x2af0 */ 82, 95, 80, 80, 67, 54, 52, 95, 65, 68, 68, 82, 51, 50, 32, 32, /* 0x2af0 */ 66, 73, 78, 70, 79, 10
/* 0x2b00 */ 32, 32, 79, 95, 66, 73, 78, 70, 79, 10
}; };
+139 -139
View File
@@ -1,5 +1,5 @@
/* powerpc64le-linux.elf-fold.h /* 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. 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_SIZE 2491
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0x8a02824e #define STUB_POWERPC64LE_LINUX_ELF_FOLD_ADLER32 0x110180cf
#define STUB_POWERPC64LE_LINUX_ELF_FOLD_CRC32 0xac1e6e2e #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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 0x0080 */ 112, 9, 0, 0, 0, 0, 0, 0,112, 9, 16, 0, 0, 0, 0, 0,
/* 0x0090 */ 104, 9, 16, 0, 0, 0, 0, 0, 75, 0, 0, 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 0x0130 */ 244,255,254, 64, 32, 0,128, 78,166, 2, 8,125, 48, 0, 33,233,
/* 0x0140 */ 0, 0, 33,233,225,255,255, 75,221,255,255, 75,248,255,159,128, /* 0x0140 */ 229,255,255, 75,225,255,255, 75, 40, 1, 65, 57, 0, 0, 74,248,
/* 0x0150 */ 38, 0, 30, 85,120,243,202,127,120,251,231,127, 80,248,164,127, /* 0x0150 */ 0,248, 33, 56,248,255,159,128, 38, 0, 30, 85, 80,248,164,127,
/* 0x0160 */ 0,248,161, 56,248,255,189, 59, 80, 32,154,124, 20,210,125,124, /* 0x0160 */ 120,251,231,127,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, /* 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,201, 0, 0, 72,166, 3,232,127, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 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, /* 0x0200 */ 24, 9,193,235, 32, 9,225,235, 48, 8, 33,232, 0, 0, 0, 56,
/* 0x0210 */ 32, 0,128, 78, 90, 0, 0, 56, 2, 0, 0, 68, 8, 0,227, 64, /* 0x0210 */ 32,241, 15,124,166, 3, 9,124, 32, 0,128, 78, 90, 0, 0, 56,
/* 0x0220 */ 255,255, 96, 56, 32, 0,128, 78, 1, 0, 0, 56,236,255,255, 75, /* 0x0220 */ 2, 0, 0, 68, 8, 0,227, 64,255,255, 96, 56, 32, 0,128, 78,
/* 0x0230 */ 3, 0, 0, 56,228,255,255, 75, 5, 0, 0, 56,220,255,255, 75, /* 0x0230 */ 1, 0, 0, 56,236,255,255, 75, 3, 0, 0, 56,228,255,255, 75,
/* 0x0240 */ 6, 0, 0, 56,212,255,255, 75,125, 0, 0, 56,204,255,255, 75, /* 0x0240 */ 5, 0, 0, 56,220,255,255, 75, 6, 0, 0, 56,212,255,255, 75,
/* 0x0250 */ 91, 0, 0, 56,196,255,255, 75, 45, 0, 0, 56,188,255,255, 75, /* 0x0250 */ 125, 0, 0, 56,204,255,255, 75, 91, 0, 0, 56,196,255,255, 75,
/* 0x0260 */ 0, 0, 35, 44, 32, 0,130, 77, 0, 0, 36, 47, 0, 0, 67,233, /* 0x0260 */ 45, 0, 0, 56,188,255,255, 75, 0, 0, 35, 44, 32, 0,130, 77,
/* 0x0270 */ 64, 32,170,127, 16, 0,158, 64, 0, 0,131,248, 8, 0,163,248, /* 0x0270 */ 0, 0, 36, 47, 0, 0, 67,233, 64, 32,170,127, 16, 0,158, 64,
/* 0x0280 */ 32, 0,128, 78, 1, 0,170, 43, 8, 0,158, 64,236,255,154, 64, /* 0x0280 */ 0, 0,131,248, 8, 0,163,248, 32, 0,128, 78, 1, 0,170, 43,
/* 0x0290 */ 16, 0, 99, 56,216,255,255, 75, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x0290 */ 8, 0,158, 64,236,255,154, 64, 16, 0, 99, 56,216,255,255, 75,
/* 0x02a0 */ 0, 0, 0, 0, 0, 0, 67,233, 8, 0, 3,233, 1, 0,229, 56, /* 0x02a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,233,
/* 0x02b0 */ 0, 0, 32, 57,166, 3,233,124, 64, 40,170,127, 28, 0,252, 64, /* 0x02b0 */ 8, 0, 3,233, 1, 0,229, 56, 0, 0, 32, 57,166, 3,233,124,
/* 0x02c0 */ 166, 2, 8,124,127, 0, 96, 56, 16, 0, 1,248,145,255, 33,248, /* 0x02c0 */ 64, 40,170,127, 28, 0,252, 64,166, 2, 8,124,127, 0, 96, 56,
/* 0x02d0 */ 89,255,255, 75, 0, 0, 0, 96, 20, 0, 64, 66,174, 72, 72,125, /* 0x02d0 */ 16, 0, 1,248,145,255, 33,248, 89,255,255, 75, 0, 0, 0, 96,
/* 0x02e0 */ 174, 73, 68,125, 1, 0, 41, 57,240,255,255, 75, 8, 0, 67,233, /* 0x02e0 */ 20, 0, 64, 66,174, 72, 72,125,174, 73, 68,125, 1, 0, 41, 57,
/* 0x02f0 */ 20, 74, 74,125, 8, 0, 67,249, 0, 0, 67,233, 80, 80, 41,125, /* 0x02f0 */ 240,255,255, 75, 8, 0, 67,233, 20, 74, 74,125, 8, 0, 67,249,
/* 0x0300 */ 0, 0, 35,249, 32, 0,128, 78, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x0300 */ 0, 0, 67,233, 80, 80, 41,125, 0, 0, 35,249, 32, 0,128, 78,
/* 0x0310 */ 128, 0, 0, 0, 38, 0,128,125,166, 2, 8,124, 8, 0,129,145, /* 0x0310 */ 0, 0, 0, 0, 0, 0, 0, 1,128, 0, 0, 0, 38, 0,128,125,
/* 0x0320 */ 221, 5, 0, 72, 81,255, 33,248,120, 27,126,124,120, 35,159,124, /* 0x0320 */ 166, 2, 8,124, 8, 0,129,145,217, 5, 0, 72, 81,255, 33,248,
/* 0x0330 */ 120, 43,189,124,120, 51,220,124, 0, 0, 38, 46, 0, 0, 63,233, /* 0x0330 */ 120, 27,126,124,120, 35,159,124,120, 43,189,124,120, 51,220,124,
/* 0x0340 */ 0, 0,169, 47, 64, 1,158, 65,120,243,195,127,112, 0,129, 56, /* 0x0340 */ 0, 0, 38, 46, 0, 0, 63,233, 0, 0,169, 47, 64, 1,158, 65,
/* 0x0350 */ 12, 0,160, 56, 81,255,255, 75,112, 0, 65,129,116, 0, 33,129, /* 0x0350 */ 120,243,195,127,112, 0,129, 56, 12, 0,160, 56, 81,255,255, 75,
/* 0x0360 */ 0, 0,170, 47, 32, 0,158, 64, 88, 33, 37,109, 85, 80,133, 47, /* 0x0360 */ 112, 0, 65,129,116, 0, 33,129, 0, 0,170, 47, 32, 0,158, 64,
/* 0x0370 */ 28, 0,158, 64, 0, 0, 62,233, 0, 0,169, 47, 8, 1,254, 65, /* 0x0370 */ 88, 33, 37,109, 85, 80,133, 47, 28, 0,158, 64, 0, 0, 62,233,
/* 0x0380 */ 12, 0, 0, 72, 33, 0, 41,121, 16, 0,226, 64,127, 0, 96, 56, /* 0x0380 */ 0, 0,169, 47, 8, 1,254, 65, 12, 0, 0, 72, 33, 0, 41,121,
/* 0x0390 */ 153,254,255, 75, 0, 0, 0, 96, 64, 80, 9,127,240,255,217, 65, /* 0x0390 */ 16, 0,226, 64,127, 0, 96, 56,153,254,255, 75, 0, 0, 0, 96,
/* 0x03a0 */ 0, 0, 31,233, 64, 64,170,127,228,255,221, 65, 8, 0,191,232, /* 0x03a0 */ 64, 80, 9,127,240,255,217, 65, 0, 0, 31,233, 64, 64,170,127,
/* 0x03b0 */ 164, 0,152, 64,120, 75, 36,125, 0, 0, 61,233, 8, 0,126,232, /* 0x03b0 */ 228,255,221, 65, 8, 0,191,232,164, 0,152, 64,120, 75, 36,125,
/* 0x03c0 */ 128, 0,193, 56,128, 0, 65,249, 40, 0, 65,248,120, 0,225,136, /* 0x03c0 */ 0, 0, 61,233, 8, 0,126,232,128, 0,193, 56,128, 0, 65,249,
/* 0x03d0 */ 16, 0,125,233,166, 3, 41,125, 8, 0, 93,232, 33, 4,128, 78, /* 0x03d0 */ 40, 0, 65,248,120, 0,225,136, 16, 0,125,233,166, 3, 41,125,
/* 0x03e0 */ 40, 0, 65,232, 0, 0,163, 47,164,255,222, 64,128, 0,129,232, /* 0x03e0 */ 8, 0, 93,232, 33, 4,128, 78, 40, 0, 65,232, 0, 0,163, 47,
/* 0x03f0 */ 112, 0, 33,129, 0, 72,164,127,148,255,222, 64,121, 0,193,136, /* 0x03f0 */ 164,255,222, 64,128, 0,129,232,112, 0, 33,129, 0, 72,164,127,
/* 0x0400 */ 0, 0,166, 47, 48, 0,158, 65, 44, 0,146, 65, 8, 0,127,232, /* 0x0400 */ 148,255,222, 64,121, 0,193,136, 0, 0,166, 47, 48, 0,158, 65,
/* 0x0410 */ 122, 0,161,136, 32, 0,132,120, 40, 0, 65,248, 0, 0, 60,233, /* 0x0410 */ 44, 0,146, 65, 8, 0,127,232,122, 0,161,136, 32, 0,132,120,
/* 0x0420 */ 16, 0,124,233,166, 3, 41,125, 8, 0, 92,232, 33, 4,128, 78, /* 0x0420 */ 40, 0, 65,248, 0, 0, 60,233, 16, 0,124,233,166, 3, 41,125,
/* 0x0430 */ 40, 0, 65,232,116, 0, 1,129, 8, 0, 94,233, 0, 0, 62,233, /* 0x0430 */ 8, 0, 92,232, 33, 4,128, 78, 40, 0, 65,232,116, 0, 1,129,
/* 0x0440 */ 20, 66, 74,125, 80, 72, 40,125, 8, 0, 94,249, 0, 0, 62,249, /* 0x0440 */ 8, 0, 94,233, 0, 0, 62,233, 20, 66, 74,125, 80, 72, 40,125,
/* 0x0450 */ 20, 0, 0, 72,120, 43,164,124,120,243,195,127,120, 75, 37,125, /* 0x0450 */ 8, 0, 94,249, 0, 0, 62,249, 20, 0, 0, 72,120, 43,164,124,
/* 0x0460 */ 69,254,255, 75,112, 0, 1,129, 8, 0, 95,233, 0, 0, 63,233, /* 0x0460 */ 120,243,195,127,120, 75, 37,125, 69,254,255, 75,112, 0, 1,129,
/* 0x0470 */ 20, 66, 74,125, 80, 72, 40,125, 8, 0, 95,249, 0, 0, 63,249, /* 0x0470 */ 8, 0, 95,233, 0, 0, 63,233, 20, 66, 74,125, 80, 72, 40,125,
/* 0x0480 */ 188,254,255, 75,176, 0, 33, 56, 8, 0,129,129, 32,129,144,125, /* 0x0480 */ 8, 0, 95,249, 0, 0, 63,249,188,254,255, 75,176, 0, 33, 56,
/* 0x0490 */ 188, 4, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3,128, 4, 0, 0, /* 0x0490 */ 8, 0,129,129, 32,129,144,125,184, 4, 0, 72, 0, 0, 0, 0,
/* 0x04a0 */ 166, 2, 8,124, 38, 0,128,125, 29, 4, 0, 72,120, 75, 58,125, /* 0x04a0 */ 0, 0, 0, 3,128, 4, 0, 0,166, 2, 8,124, 38, 0,128,125,
/* 0x04b0 */ 16, 0, 35,161, 32, 0,163,235,120, 51,215,124,120, 27,123,124, /* 0x04b0 */ 25, 4, 0, 72,120, 75, 58,125, 16, 0, 35,161, 32, 0,163,235,
/* 0x04c0 */ 120, 35,153,124, 3, 0,137, 47, 8, 0,129,145,241,254, 33,248, /* 0x04c0 */ 120, 51,215,124,120, 27,123,124,120, 35,153,124, 3, 0,137, 47,
/* 0x04d0 */ 120, 43,184,124,120, 59,246,124,120, 67, 21,125, 20,234,163,127, /* 0x04d0 */ 8, 0,129,145,241,254, 33,248,120, 43,184,124,120, 59,246,124,
/* 0x04e0 */ 16, 0,192, 56, 8, 0,158, 64, 0, 0,192, 56, 56, 0, 59,161, /* 0x04e0 */ 120, 67, 21,125, 20,234,163,127, 16, 0,192, 56, 8, 0,158, 64,
/* 0x04f0 */ 34, 8,198, 56,120,235,168,127, 0, 0, 64, 57,255,255,192, 59, /* 0x04f0 */ 0, 0,192, 56, 56, 0, 59,161, 34, 8,198, 56,120,235,168,127,
/* 0x0500 */ 1, 0, 41, 57,166, 3, 41,125, 60, 0, 64, 66, 0, 0, 40,129, /* 0x0500 */ 0, 0, 64, 57,255,255,192, 59, 1, 0, 41, 57,166, 3, 41,125,
/* 0x0510 */ 1, 0,137, 47, 40, 0,158, 64, 16, 0,232,232, 64, 56,190,127, /* 0x0510 */ 60, 0, 64, 66, 0, 0, 40,129, 1, 0,137, 47, 40, 0,158, 64,
/* 0x0520 */ 8, 0,157, 64,120, 59,254,124, 40, 0, 40,233, 20, 74, 39,125, /* 0x0520 */ 16, 0,232,232, 64, 56,190,127, 8, 0,157, 64,120, 59,254,124,
/* 0x0530 */ 64, 72,170,127, 8, 0,156, 64,120, 75, 42,125, 56, 0, 8, 57, /* 0x0530 */ 40, 0, 40,233, 20, 74, 39,125, 64, 72,170,127, 8, 0,156, 64,
/* 0x0540 */ 200,255,255, 75, 1, 0, 74, 61,228, 3,222,123,255,255, 74, 57, /* 0x0540 */ 120, 75, 42,125, 56, 0, 8, 57,200,255,255, 75, 1, 0, 74, 61,
/* 0x0550 */ 120,243,195,127, 80, 80,158,124, 0, 0,160, 56,228, 3,132,120, /* 0x0550 */ 228, 3,222,123,255,255, 74, 57,120,243,195,127, 80, 80,158,124,
/* 0x0560 */ 180, 7,198,124,255,255,224, 56, 0, 0, 0, 57,169,252,255, 75, /* 0x0560 */ 0, 0,160, 56,228, 3,132,120,180, 7,198,124,255,255,224, 56,
/* 0x0570 */ 0, 0, 0, 96, 81,115, 64, 62, 0, 0,128, 58, 0, 0, 57, 46, /* 0x0570 */ 0, 0, 0, 57,169,252,255, 75, 0, 0, 0, 96, 81,115, 64, 62,
/* 0x0580 */ 64, 98, 82, 98, 80, 24,222,127, 0, 0, 32, 58, 56, 0, 59,161, /* 0x0580 */ 0, 0,128, 58, 0, 0, 57, 46, 64, 98, 82, 98, 80, 24,222,127,
/* 0x0590 */ 0,160,137,127,128, 1,157, 64, 0, 0, 61,129, 36, 0,146, 65, /* 0x0590 */ 0, 0, 32, 58, 56, 0, 59,161, 0,160,137,127,128, 1,157, 64,
/* 0x05a0 */ 6, 0,137, 47, 28, 0,158, 64, 16, 0,189,232,120,187,227,126, /* 0x05a0 */ 0, 0, 61,129, 36, 0,146, 65, 6, 0,137, 47, 28, 0,158, 64,
/* 0x05b0 */ 3, 0,128, 56, 20, 42,190,124,169,252,255, 75, 72, 1, 0, 72, /* 0x05b0 */ 16, 0,189,232,120,187,227,126, 3, 0,128, 56, 20, 42,190,124,
/* 0x05c0 */ 1, 0,137, 47, 64, 1,158, 64, 4, 0,253,129, 16, 0,157,235, /* 0x05c0 */ 169,252,255, 75, 72, 1, 0, 72, 1, 0,137, 47, 64, 1,158, 64,
/* 0x05d0 */ 32, 0,253,235, 40, 0,125,234,250, 22,239, 85, 20,226,158,127, /* 0x05d0 */ 4, 0,253,129, 16, 0,157,235, 32, 0,253,235, 40, 0,125,234,
/* 0x05e0 */ 112, 0,225,251, 48,124, 79,126, 32, 4,137,123,120, 0,129,251, /* 0x05e0 */ 250, 22,239, 85, 20,226,158,127,112, 0,225,251, 48,124, 79,126,
/* 0x05f0 */ 20,154,124,126, 20,250,233,127,228, 3,156,123,126, 7,240, 85, /* 0x05f0 */ 32, 4,137,123,120, 0,129,251, 20,154,124,126, 20,250,233,127,
/* 0x0600 */ 12, 0,146, 64, 0, 0,160, 56, 8, 0, 0, 72, 2, 0,160, 56, /* 0x0600 */ 228, 3,156,123,126, 7,240, 85, 12, 0,146, 64, 0, 0,160, 56,
/* 0x0610 */ 120,131,165,124,180, 7,165,124, 16, 0,146, 64,120,195, 7,127, /* 0x0610 */ 8, 0, 0, 72, 2, 0,160, 56,120,131,165,124,180, 7,165,124,
/* 0x0620 */ 18, 0,192, 56, 12, 0, 0, 72, 50, 0,192, 56,255,255,224, 56, /* 0x0620 */ 16, 0,146, 64,120,195, 7,127, 18, 0,192, 56, 12, 0, 0, 72,
/* 0x0630 */ 8, 0, 29,233,120,227,131,127,120,251,228,127, 80, 64, 9,125, /* 0x0630 */ 50, 0,192, 56,255,255,224, 56, 8, 0, 29,233,120,227,131,127,
/* 0x0640 */ 213,251,255, 75, 0, 0, 0, 96, 0, 24,188,127, 16, 0,254, 65, /* 0x0640 */ 120,251,228,127, 80, 64, 9,125,213,251,255, 75, 0, 0, 0, 96,
/* 0x0650 */ 127, 0, 96, 56,213,251,255, 75, 0, 0, 0, 96, 24, 0,146, 65, /* 0x0650 */ 0, 24,188,127, 16, 0,254, 65,127, 0, 96, 56,213,251,255, 75,
/* 0x0660 */ 120,203, 35,127,112, 0,129, 56,120,179,197,126,120,171,166,126, /* 0x0660 */ 0, 0, 0, 96, 24, 0,146, 65,120,203, 35,127,112, 0,129, 56,
/* 0x0670 */ 165,252,255, 75,208, 0,223,125,227,255,233,121, 32, 4,206,121, /* 0x0670 */ 120,179,197,126,120,171,166,126,165,252,255, 75,208, 0,223,125,
/* 0x0680 */ 12, 0,130, 64, 44, 0,146, 64, 68, 0, 0, 72, 0, 0,174, 47, /* 0x0680 */ 227,255,233,121, 32, 4,206,121, 12, 0,130, 64, 44, 0,146, 64,
/* 0x0690 */ 244,255,158, 65,166, 3,201,125, 20,250, 92,125, 0, 0, 32, 57, /* 0x0690 */ 68, 0, 0, 72, 0, 0,174, 47,244,255,158, 65,166, 3,201,125,
/* 0x06a0 */ 174, 73, 42,126, 1, 0, 41, 57,248,255, 0, 66,216,255,255, 75, /* 0x06a0 */ 20,250, 92,125, 0, 0, 32, 57,174, 73, 42,126, 1, 0, 41, 57,
/* 0x06b0 */ 120,227,131,127,120,251,228,127,180, 7, 5,126,141,251,255, 75, /* 0x06b0 */ 248,255, 0, 66,216,255,255, 75,120,227,131,127,120,251,228,127,
/* 0x06c0 */ 0, 0, 0, 96, 0, 0,163, 47,136,255,222, 64, 20,250,238,127, /* 0x06c0 */ 180, 7, 5,126,141,251,255, 75, 0, 0, 0, 96, 0, 0,163, 47,
/* 0x06d0 */ 20,250,252,127, 64,152,191,127, 44, 0,156, 64,120,251,227,127, /* 0x06d0 */ 136,255,222, 64, 20,250,238,127, 20,250,252,127, 64,152,191,127,
/* 0x06e0 */ 80,152,159,124,180, 7, 5,126, 50, 0,192, 56,255,255,224, 56, /* 0x06e0 */ 44, 0,156, 64,120,251,227,127, 80,152,159,124,180, 7, 5,126,
/* 0x06f0 */ 0, 0, 0, 57, 33,251,255, 75, 0, 0, 0, 96, 0, 24,191,127, /* 0x06f0 */ 50, 0,192, 56,255,255,224, 56, 0, 0, 0, 57, 33,251,255, 75,
/* 0x0700 */ 80,255,222, 64, 1, 0,148, 58, 56, 0,189, 59,180, 7,148,126, /* 0x0700 */ 0, 0, 0, 96, 0, 24,191,127, 80,255,222, 64, 1, 0,148, 58,
/* 0x0710 */ 124,254,255, 75, 0, 0,186, 47, 8, 0,158, 65, 0, 0,218,251, /* 0x0710 */ 56, 0,189, 59,180, 7,148,126,124,254,255, 75, 0, 0,186, 47,
/* 0x0720 */ 16, 1, 33, 56, 24, 0,123,232, 20, 26,126,124, 8, 0,129,129, /* 0x0720 */ 8, 0,158, 65, 0, 0,218,251, 16, 1, 33, 56, 24, 0,123,232,
/* 0x0730 */ 32,129,144,125,224, 1, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3, /* 0x0730 */ 20, 26,126,124, 8, 0,129,129, 32,129,144,125,220, 1, 0, 72,
/* 0x0740 */ 128, 18, 0, 0,166, 2, 8,124, 0, 0,192, 56,173, 1, 0, 72, /* 0x0740 */ 0, 0, 0, 0, 0, 0, 0, 3,128, 18, 0, 0,166, 2, 8,124,
/* 0x0750 */ 33,255, 33,248,120, 43,191,124,120, 75, 62,125, 64, 0,165, 59, /* 0x0750 */ 0, 0,192, 56,165, 1, 0, 72, 33,255, 33,248,120, 43,191,124,
/* 0x0760 */ 0, 0, 35,129,152, 0, 97,248,144, 0,129,248,136, 0,161,248, /* 0x0760 */ 120, 75, 62,125, 64, 0,165, 59, 0, 0, 35,129,120, 83, 91,125,
/* 0x0770 */ 128, 0, 33,249,120, 59,229,124,112, 0,129,248,120, 0, 97,248, /* 0x0770 */ 152, 0, 97,248,144, 0,129,248,136, 0,161,248,128, 0, 33,249,
/* 0x0780 */ 224, 0,129, 59,144, 0, 97, 56,128, 0,129, 56,105, 0, 92,249, /* 0x0780 */ 120, 59,229,124,112, 0,129,248,120, 0, 97,248,160, 0,225,248,
/* 0x0790 */ 160, 0,225,248,168, 0, 1,249,125,251,255, 75, 80, 0,191,232, /* 0x0790 */ 168, 0, 1,249,144, 0, 97, 56,128, 0,129, 56,129,251,255, 75,
/* 0x07a0 */ 120,243,195,127, 3, 0,128, 56, 64, 0,165, 56,181,250,255, 75, /* 0x07a0 */ 80, 0,191,232,120,243,195,127, 3, 0,128, 56, 64, 0,165, 56,
/* 0x07b0 */ 56, 0,191,160,120,243,195,127, 5, 0,128, 56,165,250,255, 75, /* 0x07b0 */ 185,250,255, 75, 56, 0,191,160,120,243,195,127, 5, 0,128, 56,
/* 0x07c0 */ 24, 0,191,128,120,243,195,127, 9, 0,128, 56,149,250,255, 75, /* 0x07c0 */ 169,250,255, 75, 24, 0,191,128,120,243,195,127, 9, 0,128, 56,
/* 0x07d0 */ 160, 0,225,232,168, 0, 1,233,120,243,198,127,112, 0,129, 56, /* 0x07d0 */ 153,250,255, 75,160, 0,225,232,168, 0, 1,233,120,243,198,127,
/* 0x07e0 */ 0, 0,160, 56,120,251,227,127,120,227,137,127,181,252,255, 75, /* 0x07e0 */ 112, 0,129, 56, 0, 0,160, 56,120,219,105,127,120,251,227,127,
/* 0x07f0 */ 9, 0,128, 56,120, 27,124,124,120,243,195,127,120,227,133,127, /* 0x07f0 */ 185,252,255, 75, 9, 0,128, 56,120, 27,124,124,120,243,195,127,
/* 0x0800 */ 0, 0,192, 59, 93,250,255, 75, 56, 0, 63,161, 0,240,137,127, /* 0x0800 */ 120,227,133,127, 0, 0,192, 59, 97,250,255, 75, 56, 0, 31,161,
/* 0x0810 */ 156, 0,157, 64, 0, 0, 61,129, 3, 0,137, 47,128, 0,158, 64, /* 0x0810 */ 0,240,136,127,156, 0,157, 64, 0, 0, 61,129, 3, 0,137, 47,
/* 0x0820 */ 16, 0,125,232, 72, 1, 33,233, 0, 0,128, 56, 0, 0,160, 56, /* 0x0820 */ 128, 0,158, 64, 16, 0,125,232, 0, 0, 59,233, 0, 0,128, 56,
/* 0x0830 */ 20, 74, 99,124, 5,250,255, 75, 0, 0, 0, 96, 0, 0,131, 47, /* 0x0830 */ 0, 0,160, 56, 20, 74, 99,124, 9,250,255, 75, 0, 0, 0, 96,
/* 0x0840 */ 120, 27,123,124, 16, 0,252, 64,127, 0, 96, 56,221,249,255, 75, /* 0x0840 */ 0, 0,131, 47,120, 27,122,124, 16, 0,252, 64,127, 0, 96, 56,
/* 0x0850 */ 0, 0, 0, 96,120,251,228,127, 0, 4,160, 56,213,249,255, 75, /* 0x0850 */ 225,249,255, 75, 0, 0, 0, 96,120,251,228,127, 0, 4,160, 56,
/* 0x0860 */ 0, 0, 0, 96, 0, 4,163, 47,224,255,222, 64,120,251,227,127, /* 0x0860 */ 217,249,255, 75, 0, 0, 0, 96, 0, 4,163, 47,224,255,222, 64,
/* 0x0870 */ 0, 0,128, 56,120,219,101,127, 0, 0,192, 56, 0, 0,224, 56, /* 0x0870 */ 120,251,227,127, 0, 0,128, 56,120,211, 69,127, 0, 0,192, 56,
/* 0x0880 */ 0, 0, 0, 57, 0, 0, 32, 57, 25,252,255, 75,120, 27,124,124, /* 0x0880 */ 0, 0,224, 56, 0, 0, 0, 57,120,219,105,127, 29,252,255, 75,
/* 0x0890 */ 120,219, 99,127,173,249,255, 75, 0, 0, 0, 96, 1, 0,222, 59, /* 0x0890 */ 120, 27,124,124,120,211, 67,127,177,249,255, 75, 0, 0, 0, 96,
/* 0x08a0 */ 56, 0,189, 59,180, 7,222,127, 96,255,255, 75,224, 0, 33, 56, /* 0x08a0 */ 1, 0,222, 59, 56, 0,189, 59,180, 7,222,127, 96,255,255, 75,
/* 0x08b0 */ 120,227,131,127,148, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x08b0 */ 224, 0, 33, 56,120,227,131,127,144, 0, 0, 72, 0, 0, 0, 0,
/* 0x08c0 */ 128, 5, 0, 0,112,255,193,249,120,255,225,249,128,255, 1,250, /* 0x08c0 */ 0, 0, 0, 1,128, 6, 0, 0,112,255,193,249,120,255,225,249,
/* 0x08d0 */ 136,255, 33,250,144,255, 65,250,152,255, 97,250,160,255,129,250, /* 0x08d0 */ 128,255, 1,250,136,255, 33,250,144,255, 65,250,152,255, 97,250,
/* 0x08e0 */ 168,255,161,250,176,255,193,250,184,255,225,250,192,255, 1,251, /* 0x08e0 */ 160,255,129,250,168,255,161,250,176,255,193,250,184,255,225,250,
/* 0x08f0 */ 200,255, 33,251,208,255, 65,251,216,255, 97,251,224,255,129,251, /* 0x08f0 */ 192,255, 1,251,200,255, 33,251,208,255, 65,251,216,255, 97,251,
/* 0x0900 */ 232,255,161,251,240,255,193,251,248,255,225,251, 16, 0, 1,248, /* 0x0900 */ 224,255,129,251,232,255,161,251,240,255,193,251,248,255,225,251,
/* 0x0910 */ 32, 0,128, 78,112,255,193,233,120,255,225,233,128,255, 1,234, /* 0x0910 */ 16, 0, 1,248, 32, 0,128, 78,112,255,193,233,120,255,225,233,
/* 0x0920 */ 136,255, 33,234,144,255, 65,234,152,255, 97,234,160,255,129,234, /* 0x0920 */ 128,255, 1,234,136,255, 33,234,144,255, 65,234,152,255, 97,234,
/* 0x0930 */ 168,255,161,234,176,255,193,234,184,255,225,234,192,255, 1,235, /* 0x0930 */ 160,255,129,234,168,255,161,234,176,255,193,234,184,255,225,234,
/* 0x0940 */ 200,255, 33,235,208,255, 65,235,216,255, 97,235,224,255,129,235, /* 0x0940 */ 192,255, 1,235,200,255, 33,235,208,255, 65,235,216,255, 97,235,
/* 0x0950 */ 16, 0, 1,232,232,255,161,235,166, 3, 8,124,240,255,193,235, /* 0x0950 */ 224,255,129,235, 16, 0, 1,232,232,255,161,235,166, 3, 8,124,
/* 0x0960 */ 248,255,225,235, 32, 0,128, 78, 96, 2, 16, 0, 0, 0, 0, 0, /* 0x0960 */ 240,255,193,235,248,255,225,235, 32, 0,128, 78, 0, 0, 0, 0,
/* 0x0970 */ 104,137, 16, 0, 0, 0, 0, 0,164, 2, 16, 0, 0, 0, 0, 0, /* 0x0970 */ 104, 2, 16, 0, 0, 0, 0, 0,112,137, 16, 0, 0, 0, 0, 0,
/* 0x0980 */ 104,137, 16, 0, 0, 0, 0, 0, 20, 3, 16, 0, 0, 0, 0, 0, /* 0x0980 */ 172, 2, 16, 0, 0, 0, 0, 0,112,137, 16, 0, 0, 0, 0, 0,
/* 0x0990 */ 104,137, 16, 0, 0, 0, 0, 0,160, 4, 16, 0, 0, 0, 0, 0, /* 0x0990 */ 28, 3, 16, 0, 0, 0, 0, 0,112,137, 16, 0, 0, 0, 0, 0,
/* 0x09a0 */ 104,137, 16, 0, 0, 0, 0, 0, 68, 7, 16, 0, 0, 0, 0, 0, /* 0x09a0 */ 168, 4, 16, 0, 0, 0, 0, 0,112,137, 16, 0, 0, 0, 0, 0,
/* 0x09b0 */ 104,137, 16 /* 0x09b0 */ 76, 7, 16, 0, 0, 0, 0, 0,112,137, 16
}; };
+1 -1
View File
@@ -172,7 +172,7 @@ def do_file(fn):
# with PROGBITS sections. This happens on powerpc64le and arm64. # with PROGBITS sections. This happens on powerpc64le and arm64.
# The general solution probably requires a C++ program # The general solution probably requires a C++ program
# that combines "objcopy -R", "objdump -htr", and xstrip. # 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)) assert pos >= len(odata), ("unexpected strip_with_dump", pos, len(odata))
elif re.search(r"^arm64-", os.path.basename(fn)): elif re.search(r"^arm64-", os.path.basename(fn)):
assert pos >= len(odata), ("unexpected strip_with_dump", pos, len(odata)) assert pos >= len(odata), ("unexpected strip_with_dump", pos, len(odata))
+4 -1
View File
@@ -84,8 +84,11 @@ get1:
lbzu t0,4(src); rlwimi bits,t0,24, 0, 7 lbzu t0,4(src); rlwimi bits,t0,24, 0, 7
#else /*}{ pray for no unalignment trap or slowdown */ #else /*}{ pray for no unalignment trap or slowdown */
li bits,1 // compensate for 'lbzu' 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 lwzx bits,bits,src
#endif //}
addi src,src,4 addi src,src,4
#endif /*}*/ #endif /*}*/
+4 -1
View File
@@ -78,8 +78,11 @@ get32d:
lbzu t0,4(src); rlwimi bits,t0,24, 0, 7 lbzu t0,4(src); rlwimi bits,t0,24, 0, 7
#else /*}{ pray for no unalignment trap or slowdown */ #else /*}{ pray for no unalignment trap or slowdown */
li bits,1 // compensate for 'lbzu' 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 lwzx bits,bits,src
#endif //}
addi src,src,4 addi src,src,4
#endif /*}*/ #endif /*}*/
+4 -1
View File
@@ -78,8 +78,11 @@ get32:
lbzu t0,4(src); rlwimi bits,t0,24, 0, 7 lbzu t0,4(src); rlwimi bits,t0,24, 0, 7
#else /*}{ pray for no unalignment trap or slowdown */ #else /*}{ pray for no unalignment trap or slowdown */
li bits,1 // compensate for 'lbzu' 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 lwzx bits,bits,src
#endif //}
addi src,src,4 addi src,src,4
#endif /*}*/ #endif /*}*/
@@ -0,0 +1 @@
#include "powerpc64le-darwin.dylib-entry.S"
@@ -0,0 +1 @@
#include "powerpc64le-darwin.macho-entry.S"
@@ -0,0 +1 @@
#include "powerpc64le-darwin.macho-fold.S"
@@ -0,0 +1 @@
#include "powerpc64le-darwin.macho-main.c"
+2
View File
@@ -0,0 +1,2 @@
#define BIG_ENDIAN 1
#include "powerpc64le-linux.elf-entry.S"
+2
View File
@@ -0,0 +1,2 @@
#define BIG_ENDIAN 1
#include "powerpc64le-linux.elf-fold.S"
+48
View File
@@ -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
<markus@oberhumer.com> <ezerotven+github@gmail.com>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
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
}
+1
View File
@@ -0,0 +1 @@
#include "powerpc64le-linux.elf-main.c"
+26 -15
View File
@@ -77,6 +77,10 @@ SZ_DLINE=128 # size of data cache line in Apple G5
#define bits a6 #define bits a6
#define disp a7 #define disp a7
#ifndef BIG_ENDIAN
#define BIG_ENDIAN 0
#endif
section NRV2E section NRV2E
#include "arch/powerpc/64le/nrv2e_d.S" #include "arch/powerpc/64le/nrv2e_d.S"
@@ -129,11 +133,19 @@ msg_SELinux:
call L72 call L72
L70: L70:
.asciz "PROT_EXEC|PROT_WRITE failed.\n" .asciz "PROT_EXEC|PROT_WRITE failed.\n"
.align 4
L71: L71:
// IDENTSTR goes here // 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 section ELFMAINZ
.balign 4
L72: L72:
li a2,L71 - L70 // length li a2,L71 - L70 // length
mflr a1 // message text mflr a1 // message text
@@ -149,21 +161,19 @@ unfold:
lwz r26,0(r30) // O_BINFO lwz r26,0(r30) // O_BINFO
sz_obinfo= 4 sz_obinfo= 4
lwz a0,sz_obinfo + sz_cpr(r30) // sz_cpr(fold) (< 1 Page)
li a5,0 // off_t li a5,0 // off_t
lis a1,1 // PAGE_SIZE
li a4,-1 // fd; cater to *BSD for MAP_ANON 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 li a3,MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS
li a2,PROT_READ | PROT_WRITE | PROT_EXEC
// li a1,PAGE_SIZE
lis a1,1
add a0,a0,r30
li 0,__NR_mmap
// addi a0,a0,sz_b_info+PAGE_SIZE-1
addi a0,a0,sz_obinfo + sz_b_info-1 addi a0,a0,sz_obinfo + sz_b_info-1
add a0,a0,a1 li a2,PROT_READ | PROT_WRITE | PROT_EXEC
add a0,a0,a1 // across next page boundary
li 0,__NR_mmap
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) sc; bso- msg_SELinux // Branch if SummaryOverflow (failure)
0:
mtctr r31 mtctr r31
lwz r0,sz_obinfo + sz_unc(r30) // size uncompressed lwz r0,sz_obinfo + sz_unc(r30) // size uncompressed
lbz meth,sz_obinfo + b_method(r30) lbz meth,sz_obinfo + b_method(r30)
@@ -173,15 +183,16 @@ sz_obinfo= 4
mtlr a0 // &continuation mtlr a0 // &continuation
lwz lsrc,sz_obinfo + sz_cpr(r30) // size of compressed lwz lsrc,sz_obinfo + sz_cpr(r30) // size of compressed
addi src,r30,sz_obinfo + sz_b_info 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) 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 // mflr r0 # r0= return address
// stwu sp,-96(sp) # allocate local frame; chain to previous frame // 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) // 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) // 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 // lwz r0,100(sp) # r0= return address
// lmw r14,24(sp) # restore 18 regs r14,r15,...,r31 // lmw r14,24(sp) # restore 18 regs r14,r15,...,r31
// mtlr r0 # prepare for indirect jump // mtlr r0 # prepare for indirect jump
@@ -189,7 +200,7 @@ sz_obinfo= 4
// blr # goto return address // blr # goto return address
main: main:
teq r0,r0 // debugging //// teq r0,r0 // debugging
stdu r1,-32*8(sp) // allocate space (keeping 0 mod 16), save r1 stdu r1,-32*8(sp) // allocate space (keeping 0 mod 16), save r1
// stm r2,8(sp) // save registers r2 thru r31 - 32bits save // stm r2,8(sp) // save registers r2 thru r31 - 32bits save
std 2,2*8-8(sp) std 2,2*8-8(sp)
@@ -224,7 +235,7 @@ main:
std 31,31*8-8(sp) std 31,31*8-8(sp)
mflr r31 // &decompress mflr r31 // &decompress
call unfold call unfold
.long O_BINFO .long O_BINFO // .int4
/* { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...} */ /* { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...} */
/* vim:set ts=8 sw=8 et: */ /* vim:set ts=8 sw=8 et: */
+33 -28
View File
@@ -32,6 +32,10 @@
#include "arch/powerpc/64le/macros.S" #include "arch/powerpc/64le/macros.S"
#include "arch/powerpc/64le/ppc_regs.h" #include "arch/powerpc/64le/ppc_regs.h"
#ifndef BIG_ENDIAN
#define BIG_ENDIAN 0
#endif
#define szElf64_Ehdr 0x40 #define szElf64_Ehdr 0x40
#define szElf64_Phdr 0x38 #define szElf64_Phdr 0x38
#define e_phnum 56 #define e_phnum 56
@@ -44,54 +48,52 @@ sz_l_info= 12
sz_p_info= 12 sz_p_info= 12
OVERHEAD= 2048 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: /* In:
r31= &decompress; also 8+ (char *)&(#bytes which preceed &-8(r31) r31= &decompress; also 8+ (char *)&(#bytes which preceed &-8(r31)
r28= &Elf64_auxv_t r28= &Elf64_auxv_t
r27= actual page size r27= actual page size
r26= o_binfo r26= o_binfo
sp/ LINKAREA,regsav(r1-31),&eof_src,argc,argv,0,env,0,auxv,0,chars
*/ */
fold_begin: fold_begin:
call L90 call L90
#include "arch/powerpc/64le/bxx.S" #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: zfind:
ld t0,0(a6) // parameters are 16byte aligned ld t0,0(a6) // parameters are 16byte aligned
addi a6,a6,8 addi a6,a6,8
cmpldi cr7,t0,0; bne+ cr7,zfind cmpldi cr7,t0,0; bne+ cr7,zfind
ret ret
L90: L90:
la sp,LINKAREA(sp) // trim save area used by decompressor
mflr a5 // &ppcbxx: f_unfilter 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= &env
call zfind // a6= &Elf64_auxv call zfind // a6= &Elf64_auxv; t0= 0
lwz a1,-8(r31) // #bytes which preceed -8(r31) 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 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 subf r29,a1,r31 // 8+ (char *)&our_Elf64_Ehdr
la a2,-OVERHEAD(sp) // &Elf64_Ehdr temporary space mr a4,r31 // &decompress: f_expand
addi r29,r29,-8 // &our_Elf64_Ehdr addi r29,r29,-2*4 // &our_Elf64_Ehdr
sub a1,a1,r26 // total_size sub a1,a1,r26 // total_size
add a0,r29,r26 // &b_info add a0,r29,r26 // &b_info
addi sp,sp,-(LINKAREA+OVERHEAD) la a2,LINKAREA(sp) // &Elf64_Ehdr temporary space
lwz a3,sz_unc+sz_p_info+sz_l_info(a0) // sz_elf_headers lwz a3,sz_unc(a0) // sz_elf_headers
call upx_main // Out: a0= entry #if BIG_ENDIAN //{
/* entry= upx_main(b_info *a0, total_size a1, Elf64_Ehdr *a2, sz_ehdr a3, std a4,3*8(sp); la a4,3*8(sp) // use tmp.xlc
f_decomp a4, f_unf a5, Elf64_auxv_t *a6) 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 r31,a0 // save &entry
mr a0,r29 // &our_Elf64_Ehdr mr a0,r29 // &our_Elf64_Ehdr
@@ -100,10 +102,11 @@ L90:
mtlr r31 // entry address mtlr r31 // entry address
// lmw r2,4+LINKAREA+OVERHEAD(sp) // restore registers r2 thru r31 32bits load
/* Restore Save Area */ /* Restore Save Area */
rest: rest:
#if !BIG_ENDIAN //{
ld 2,2*8-8+LINKAREA+OVERHEAD(sp) ld 2,2*8-8+LINKAREA+OVERHEAD(sp)
#endif //}
ld 3,3*8-8+LINKAREA+OVERHEAD(sp) ld 3,3*8-8+LINKAREA+OVERHEAD(sp)
ld 4,4*8-8+LINKAREA+OVERHEAD(sp) ld 4,4*8-8+LINKAREA+OVERHEAD(sp)
ld 5,5*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 31,31*8-8+LINKAREA+OVERHEAD(sp)
ld r1,LINKAREA+OVERHEAD(sp) // restore r1; deallocate space 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 ret // enter /lib/ld.so.1
SYS_exit= 1 SYS_exit= 1
+4 -4
View File
@@ -304,7 +304,7 @@ void *upx_main(
f_expand *const f_decompress, f_expand *const f_decompress,
f_unfilter *const f_unf, f_unfilter *const f_unf,
Elf64_auxv_t *const av, 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); 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_PHENT , ehdr->e_phentsize); /* this can never change */
//auxv_up(av, AT_PAGESZ, PAGE_SIZE); /* ld-linux.so.2 does not need this */ //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); auxv_up(av, AT_ENTRY , entry);
{ // Map PT_INTERP program interpreter { // Map PT_INTERP program interpreter
int j; int j;
for (j=0; j < ehdr->e_phnum; ++phdr, ++j) if (PT_INTERP==phdr->p_type) { 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); int const fdi = open(iname, O_RDONLY, 0);
if (0 > fdi) { if (0 > fdi) {
err_exit(18); err_exit(18);
@@ -344,7 +344,7 @@ void *upx_main(
ERR_LAB ERR_LAB
err_exit(19); 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); close(fdi);
} }
} }
@@ -13,8 +13,8 @@ Idx Name Size VMA LMA File off Algn
8 LZMA_DEC30 00000028 0000000000000000 0000000000000000 00001c84 2**0 CONTENTS, READONLY 8 LZMA_DEC30 00000028 0000000000000000 0000000000000000 00001c84 2**0 CONTENTS, READONLY
9 NRV_TAIL 0000001c 0000000000000000 0000000000000000 00001cac 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 10 CFLUSH 00000024 0000000000000000 0000000000000000 00001cc8 2**0 CONTENTS, READONLY
11 ELFMAINY 00000030 0000000000000000 0000000000000000 00001cf0 2**4 CONTENTS, RELOC, READONLY 11 ELFMAINY 00000022 0000000000000000 0000000000000000 00001cec 2**0 CONTENTS, RELOC, READONLY
12 ELFMAINZ 00000114 0000000000000000 0000000000000000 00001d20 2**0 CONTENTS, RELOC, READONLY 12 ELFMAINZ 00000110 0000000000000000 0000000000000000 00001d10 2**2 CONTENTS, RELOC, READONLY
SYMBOL TABLE: SYMBOL TABLE:
0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30 0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30
0000000000000000 l d NRV_TAIL 0000000000000000 NRV_TAIL 0000000000000000 l d NRV_TAIL 0000000000000000 NRV_TAIL
@@ -59,4 +59,4 @@ OFFSET TYPE VALUE
RELOCATION RECORDS FOR [ELFMAINZ]: RELOCATION RECORDS FOR [ELFMAINZ]:
OFFSET TYPE VALUE OFFSET TYPE VALUE
0000000000000058 R_PPC64_REL14 ELFMAINY 0000000000000058 R_PPC64_REL14 ELFMAINY
0000000000000110 R_PPC64_ADDR32 O_BINFO 000000000000010c R_PPC64_ADDR32 O_BINFO
+39 -39
View File
@@ -9,58 +9,58 @@ Linker script and memory map
TARGET(elf64-powerpcle) TARGET(elf64-powerpcle)
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc) 0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
.text 0x00000000001000bc 0x808 .text 0x00000000001000bc 0x80c
*(.text) *(.text)
.text 0x00000000001000bc 0x1a4 tmp/powerpc64le-linux.elf-fold.o .text 0x00000000001000bc 0x1ac tmp/powerpc64le-linux.elf-fold.o
0x0000000000100214 mmap 0x000000000010021c mmap
0x0000000000100228 exit 0x0000000000100230 exit
0x0000000000100230 read 0x0000000000100238 read
0x0000000000100238 open 0x0000000000100240 open
0x0000000000100240 close 0x0000000000100248 close
0x0000000000100248 mprotect 0x0000000000100250 mprotect
0x0000000000100250 munmap 0x0000000000100258 munmap
0x0000000000100258 brk 0x0000000000100260 brk
.text 0x0000000000100260 0x664 tmp/powerpc64le-linux.elf-main.o .text 0x0000000000100268 0x660 tmp/powerpc64le-linux.elf-main.o
*(.data) *(.data)
.data 0x00000000001008c4 0x0 tmp/powerpc64le-linux.elf-fold.o .data 0x00000000001008c8 0x0 tmp/powerpc64le-linux.elf-fold.o
.data 0x00000000001008c4 0x0 tmp/powerpc64le-linux.elf-main.o .data 0x00000000001008c8 0x0 tmp/powerpc64le-linux.elf-main.o
.sfpr 0x00000000001008c4 0xa4 .sfpr 0x00000000001008c8 0xa4
.sfpr 0x00000000001008c4 0xa4 linker stubs .sfpr 0x00000000001008c8 0xa4 linker stubs
0x00000000001008c4 _savegpr0_14 0x00000000001008c8 _savegpr0_14
0x00000000001008f8 _savegpr0_27 0x00000000001008f8 _savegpr0_26
0x00000000001008fc _savegpr0_28 0x0000000000100900 _savegpr0_28
0x0000000000100914 _restgpr0_14 0x0000000000100918 _restgpr0_14
0x0000000000100948 _restgpr0_27 0x0000000000100948 _restgpr0_26
0x000000000010094c _restgpr0_28 0x0000000000100950 _restgpr0_28
.glink 0x0000000000100968 0x0 .glink 0x0000000000100970 0x0
.glink 0x0000000000100968 0x0 linker stubs .glink 0x0000000000100970 0x0 linker stubs
.eh_frame 0x0000000000100968 0x0 .eh_frame 0x000000000010096c 0x0
.eh_frame 0x0000000000100968 0x0 linker stubs .eh_frame 0x000000000010096c 0x0 linker stubs
.rela.dyn 0x0000000000100968 0x0 .rela.dyn 0x0000000000100970 0x0
.rela.iplt 0x0000000000100968 0x0 linker stubs .rela.iplt 0x0000000000100970 0x0 linker stubs
.data .data
LOAD tmp/powerpc64le-linux.elf-fold.o LOAD tmp/powerpc64le-linux.elf-fold.o
LOAD tmp/powerpc64le-linux.elf-main.o LOAD tmp/powerpc64le-linux.elf-main.o
OUTPUT(tmp/powerpc64le-linux.elf-fold.bin elf64-powerpcle) OUTPUT(tmp/powerpc64le-linux.elf-fold.bin elf64-powerpcle)
.branch_lt 0x0000000000100968 0x0 .branch_lt 0x0000000000100970 0x0
.branch_lt 0x0000000000100968 0x0 linker stubs .branch_lt 0x0000000000100970 0x0 linker stubs
.toc 0x0000000000100968 0x0 .toc 0x0000000000100970 0x0
.toc 0x0000000000100968 0x0 tmp/powerpc64le-linux.elf-main.o .toc 0x0000000000100970 0x0 tmp/powerpc64le-linux.elf-main.o
.opd 0x0000000000100968 0x58 .opd 0x0000000000100970 0x58
.opd 0x0000000000100968 0x58 tmp/powerpc64le-linux.elf-main.o .opd 0x0000000000100970 0x58 tmp/powerpc64le-linux.elf-main.o
0x00000000001009a8 upx_main 0x00000000001009b0 upx_main
.iplt 0x00000000001009c0 0x0 .iplt 0x00000000001009c8 0x0
.iplt 0x00000000001009c0 0x0 linker stubs .iplt 0x00000000001009c8 0x0 linker stubs
.bss 0x00000000001009c0 0x0 .bss 0x00000000001009c8 0x0
.bss 0x00000000001009c0 0x0 tmp/powerpc64le-linux.elf-fold.o .bss 0x00000000001009c8 0x0 tmp/powerpc64le-linux.elf-fold.o
.bss 0x00000000001009c0 0x0 tmp/powerpc64le-linux.elf-main.o .bss 0x00000000001009c8 0x0 tmp/powerpc64le-linux.elf-main.o