changeset: 2451:4e2a6c33d5fb

tag: ppc64le
user: Thierry Fauck <tfauck@free.fr>
date: Wed Jun 22 08:25:13 2016 -0400
summary: Add support for ppc64le statically linked binaries
This commit is contained in:
John Reiser 2016-07-26 17:00:25 -07:00
parent fa522c0ffc
commit 01a0c8672d
56 changed files with 7474 additions and 482 deletions

View File

@ -10,6 +10,7 @@
# dependencies on the default values of builtin variables,
# then we cannot use builtin variables at all.
MAKEFLAGS += -rR
DEBUG=1
.SUFFIXES:
export SHELL = /bin/sh

View File

@ -519,6 +519,11 @@ private:
#define UPX_F_LINUX_ELF32_MIPSEB 137
#define UPX_F_DYLIB_PPC32 138
#define UPX_F_MACH_PPC64LE 140
#define UPX_F_LINUX_ELFPPC64LE 141
#define UPX_F_VMLINUX_PPC64LE 142
#define UPX_F_DYLIB_PPC64LE 143
// compression methods
#define M_ALL (-1)

View File

@ -182,7 +182,7 @@ void ElfLinker::init(const void *pdata_v, int plen)
input = new upx_byte[inputlen + 1];
memcpy(input, pdata, inputlen);
}
input[inputlen] = 0; // NUL terminate
input[2 * inputlen] = 0; // NUL terminate
output = new upx_byte[inputlen];
outputlen = 0;
@ -884,6 +884,49 @@ void ElfLinkerPpc32::relocate1(const Relocation *rel, upx_byte *location,
super::relocate1(rel, location, value, type);
}
void ElfLinkerPpc64le::relocate1(const Relocation *rel, upx_byte *location,
upx_uint64_t value, const char *type)
{
if (strncmp(type, "R_PPC64_REL", 11))
return super::relocate1(rel, location, value, type);
type += 11;
bool range_check = false;
if (strncmp(type, "PC", 2) == 0)
{
type += 2;
range_check = true;
}
/* value will hold relative displacement */
value -= rel->section->offset + rel->offset;
if (strcmp(type, "8") == 0)
{
#if (ACC_CC_PGI)
int displ = * (signed char *) location + (int) value; // CBUG
#else
int displ = (signed char) *location + (int) value;
#endif
if (range_check && (displ < -128 || displ > 127))
internal_error("target out of range (%d) in reloc %s:%x\n",
displ, rel->section->name, rel->offset);
*location += value;
}
else if (strncmp(type, "14", 2) == 0) // for "32" and "32S"
set_le16(location, get_le16(location) + value);
else if (strcmp(type, "16") == 0)
set_le16(location, get_le16(location) + value);
else if (strncmp(type, "24", 2) == 0) // for "32" and "32S"
set_le24(location, get_le24(location) + value);
else if (strncmp(type, "32", 2) == 0) // for "32" and "32S"
set_le32(location, get_le32(location) + value);
else if (strcmp(type, "64") == 0)
set_le64(location, get_le64(location) + value);
else
super::relocate1(rel, location, value, type);
}
void ElfLinkerX86::relocate1(const Relocation *rel, upx_byte *location,
upx_uint64_t value, const char *type)

View File

@ -241,6 +241,14 @@ protected:
upx_uint64_t value, const char *type);
};
class ElfLinkerPpc64le : public ElfLinker
{
typedef ElfLinker super;
protected:
virtual void relocate1(const Relocation *, upx_byte *location,
upx_uint64_t value, const char *type);
};
class ElfLinkerX86 : public ElfLinker
{

View File

@ -904,6 +904,9 @@
#elif defined(__IAR_SYSTEMS_ICC__) && defined(__ICC430__)
# define ACC_ARCH_MSP430 1
# define ACC_INFO_ARCH "msp430"
#elif defined(__powerpc64__) || defined(__powerpc64le)
# define ACC_ARCH_POWERPC64 1
# define ACC_INFO_ARCH "powerpc64"
#elif defined(__powerpc__) || defined(__powerpc) || defined(__ppc__) || defined(__PPC__) || defined(_M_PPC) || defined(_ARCH_PPC) || defined(_ARCH_PWR)
# define ACC_ARCH_POWERPC 1
# define ACC_INFO_ARCH "powerpc"

View File

@ -666,6 +666,15 @@ PackLinuxElf32ppc::getFilters() const
return filters;
}
int const *
PackLinuxElf64ppcle::getFilters() const
{
static const int filters[] = {
0xd0,
FT_END };
return filters;
}
int const *
PackLinuxElf64amd::getFilters() const
{
@ -740,6 +749,24 @@ Linker* PackLinuxElf32ppc::newLinker() const
return new ElfLinkerPpc32;
}
PackLinuxElf64ppcle::PackLinuxElf64ppcle(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::ELFDATA2LSB;
ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX;
}
PackLinuxElf64ppcle::~PackLinuxElf64ppcle()
{
}
Linker* PackLinuxElf64ppcle::newLinker() const
{
return new ElfLinkerPpc64le;
}
PackLinuxElf64amd::PackLinuxElf64amd(InputFile *f)
: super(f)
{
@ -1264,6 +1291,19 @@ PackLinuxElf32ppc::buildLoader(const Filter *ft)
stub_powerpc_linux_elf_fold, sizeof(stub_powerpc_linux_elf_fold), ft);
}
static const
#include "stub/ppc64le-linux.elf-entry.h"
static const
#include "stub/ppc64le-linux.elf-fold.h"
void
PackLinuxElf64ppcle::buildLoader(const Filter *ft)
{
buildLinuxLoader(
stub_ppc64le_linux_elf_entry, sizeof(stub_ppc64le_linux_elf_entry),
stub_ppc64le_linux_elf_fold, sizeof(stub_ppc64le_linux_elf_fold), ft);
}
static const
#include "stub/amd64-linux.elf-entry.h"
static const
@ -1554,6 +1594,182 @@ proceed: ;
return true;
}
bool
PackLinuxElf64ppcle::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;
if (phdr->PT_LOAD64 == get_te32(&phdr->p_type)) {
load_va = get_te64(&phdr->p_vaddr);
upx_uint64_t file_offset = get_te64(&phdr->p_offset);
if (~page_mask & file_offset) {
if ((~page_mask & load_va) == file_offset) {
throwCantPack("Go-language PT_LOAD: try hemfix.c, or try '--force-execve'");
// Fixing it inside upx fails because packExtent() reads original file.
}
else {
throwCantPack("invalid Phdr p_offset; try '--force-execve'");
}
return false;
}
exetype = 1;
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_STRTAB has no designated length. Read the whole file.
file_image = new char[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 *
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"))
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;
}
}
xct_off = elf_get_offset_from_address(xct_va);
goto proceed; // But proper packing depends on checking xct_va.
}
abandon:
return false;
proceed: ;
}
// XXX Theoretically the following test should be first,
// but PackUnix::canPack() wants 0!=exetype ?
if (!super::canPack())
return false;
assert(exetype == 1);
exetype = 0;
// set options
opt->o_unix.blocksize = blocksize = file_size;
return true;
}
bool
PackLinuxElf64amd::canPack()
{
@ -1622,7 +1838,7 @@ PackLinuxElf64amd::canPack()
file_image = new char[file_size];
fi->seek(0, SEEK_SET);
fi->readx(file_image, file_size);
memcpy(&ehdri, ehdr, sizeof(Elf32_Ehdr));
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() !!
@ -1630,13 +1846,13 @@ PackLinuxElf64amd::canPack()
//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;
sec_dynstr = get_te64(&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);
dynseg= (Elf64_Dyn const *)(get_te64(&phdr->p_offset) + file_image);
break;
}
// elf_find_dynamic() returns 0 if 0==dynseg.
@ -2254,6 +2470,14 @@ void PackLinuxElf32ppc::pack1(OutputFile *fo, Filter &ft)
generateElfHdr(fo, stub_powerpc_linux_elf_fold, getbrk(phdri, e_phnum) );
}
void PackLinuxElf64ppcle::pack1(OutputFile *fo, Filter &ft)
{
super::pack1(fo, ft);
if (0!=xct_off) // shared library
return;
generateElfHdr(fo, stub_ppc64le_linux_elf_fold, getbrk(phdri, e_phnum) );
}
void PackLinuxElf64::pack1(OutputFile *fo, Filter & /*ft*/)
{
fi->seek(0, SEEK_SET);
@ -2642,7 +2866,7 @@ int PackLinuxElf32::ARM_is_QNX(void)
unsigned const sz_interp = get_te32(&phdr->p_filesz);
unsigned const pos_interp = get_te32(&phdr->p_offset);
if (sz_interp <= sizeof(interp)
&& (sz_interp + pos_interp) <= file_size) {
&& (sz_interp + pos_interp) <= (unsigned)file_size) {
fi->seek(pos_interp, SEEK_SET);
fi->readx(interp, sz_interp);
for (int k = sz_interp - 5; k>=0; --k) {
@ -3037,7 +3261,7 @@ void PackLinuxElf64::unpack(OutputFile *fo)
fi->readx(&bhdr, szb_info);
ph.u_len = get_te32(&bhdr.sz_unc);
ph.c_len = get_te32(&bhdr.sz_cpr);
if (ph.c_len > file_size || ph.c_len == 0 || ph.u_len == 0
if (ph.c_len > (unsigned)file_size || ph.c_len == 0 || ph.u_len == 0
|| ph.u_len > sizeof(u))
throwCantUnpack("b_info corrupted");
@ -3566,7 +3790,7 @@ void PackLinuxElf32::unpack(OutputFile *fo)
fi->readx(&bhdr, szb_info);
ph.u_len = get_te32(&bhdr.sz_unc);
ph.c_len = get_te32(&bhdr.sz_cpr);
if (ph.c_len > file_size || ph.c_len == 0 || ph.u_len == 0
if (ph.c_len > (unsigned)file_size || ph.c_len == 0 || ph.u_len == 0
|| ph.u_len > sizeof(u))
throwCantUnpack("b_info corrupted");
ph.filter_cto = bhdr.b_cto8;

View File

@ -355,6 +355,8 @@ class PackLinuxElf64Le : public PackLinuxElf64
typedef PackLinuxElf64 super;
protected:
PackLinuxElf64Le(InputFile *f) : super(f) {
lg2_page=16;
page_size=1u<<lg2_page;
bele = &N_BELE_RTP::le_policy;
PackLinuxElf64help1(f);
}
@ -405,6 +407,29 @@ protected:
virtual Linker* newLinker() const;
};
/*************************************************************************
// linux/elf64ppcle
**************************************************************************/
class PackLinuxElf64ppcle : public PackLinuxElf64Le
{
typedef PackLinuxElf64Le super;
public:
PackLinuxElf64ppcle(InputFile *f);
virtual ~PackLinuxElf64ppcle();
virtual int getFormat() const { return UPX_F_LINUX_ELFPPC64LE; }
virtual const char *getName() const { return "ElfPPC64LE"; }
virtual const char *getFullName(const options_t *) const { return "ppc64le-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

View File

@ -123,6 +123,10 @@ PackDylibPPC32::PackDylibPPC32(InputFile *f) : super(f)
{
my_filetype = Mach_header::MH_DYLIB;
}
PackDylibPPC64LE::PackDylibPPC64LE(InputFile *f) : super(f)
{
my_filetype = Mach_header::MH_DYLIB;
}
template <class T>
const int *PackMachBase<T>::getCompressionMethods(int method, int level) const
@ -147,12 +151,23 @@ PackMachPPC32::PackMachPPC32(InputFile *f) : super(f, Mach_header::CPU_TYPE_POWE
sizeof(Mach_ppc_thread_state)>>2, sizeof(threado))
{ }
PackMachPPC64LE::PackMachPPC64LE(InputFile *f) : super(f, Mach_header::CPU_TYPE_POWERPC64LE,
Mach_header::MH_EXECUTE, Mach_thread_command::PPC_THREAD_STATE64,
sizeof(Mach_ppcle_thread_state64)>>2, sizeof(threado))
{ }
const int *PackMachPPC32::getFilters() const
{
static const int filters[] = { 0xd0, FT_END };
return filters;
}
const int *PackMachPPC64LE::getFilters() const
{
static const int filters[] = { 0xd0, FT_END };
return filters;
}
PackMachI386::PackMachI386(InputFile *f) : super(f, Mach_header::CPU_TYPE_I386,
Mach_header::MH_EXECUTE, (unsigned)Mach_thread_command::x86_THREAD_STATE32,
sizeof(Mach_i386_thread_state)>>2, sizeof(threado))
@ -202,6 +217,11 @@ Linker *PackMachPPC32::newLinker() const
return new ElfLinkerPpc32;
}
Linker *PackMachPPC64LE::newLinker() const
{
return new ElfLinkerPpc64le;
}
Linker *PackMachI386::newLinker() const
{
return new ElfLinkerX86;
@ -408,6 +428,19 @@ PackMachPPC32::buildLoader(const Filter *ft)
stub_powerpc_darwin_macho_fold, sizeof(stub_powerpc_darwin_macho_fold), ft );
}
static const
#include "stub/ppc64le-darwin.macho-entry.h"
static const
#include "stub/ppc64le-darwin.macho-fold.h"
void
PackMachPPC64LE::buildLoader(const Filter *ft)
{
buildMachLoader(
stub_ppc64le_darwin_macho_entry, sizeof(stub_ppc64le_darwin_macho_entry),
stub_ppc64le_darwin_macho_fold, sizeof(stub_ppc64le_darwin_macho_fold), ft );
}
void
PackMachI386::buildLoader(const Filter *ft)
{
@ -464,6 +497,16 @@ PackDylibPPC32::buildLoader(const Filter *ft)
0, 0, ft );
}
static const
#include "stub/ppc64le-darwin.dylib-entry.h"
void
PackDylibPPC64LE::buildLoader(const Filter *ft)
{
buildMachLoader(
stub_ppc64le_darwin_dylib_entry, sizeof(stub_ppc64le_darwin_dylib_entry),
0, 0, ft );
}
template <class T>
void PackMachBase<T>::patchLoader() { }
@ -519,7 +562,7 @@ PackMachBase<T>::compare_segment_command(void const *const aa, void const *const
#undef PAGE_MASK64
#undef PAGE_SIZE64
#define PAGE_MASK64 (~(upx_uint64_t)0<<12)
#define PAGE_MASK64 (~(upx_uint64_t)0<<16)
#define PAGE_SIZE64 ((upx_uint64_t)0-PAGE_MASK64)
// At 2013-02-03 part of the source for codesign was
@ -569,6 +612,54 @@ void PackMachPPC32::pack4(OutputFile *fo, Filter &ft) // append PackHeader
fo->rewrite(&linfo, sizeof(linfo));
}
void PackMachPPC64LE::pack4(OutputFile *fo, Filter &ft) // append PackHeader
{
// offset of p_info in compressed file
overlay_offset = sizeof(mhdro) + sizeof(segZERO)
+ sizeof(segXHDR) + sizeof(secXHDR)
+ sizeof(segTEXT) + sizeof(secTEXT)
+ sizeof(segLINK) + sizeof(threado) + sizeof(linfo);
if (my_filetype==Mach_header::MH_EXECUTE) {
overlay_offset += sizeof(uuid_cmd) + sizeof(linkitem);
}
super::pack4(fo, ft);
unsigned const t = fo->getBytesWritten();
segTEXT.filesize = t;
segTEXT.vmsize += t; // utilize GAP + NO_LAP + sz_unc - sz_cpr
secTEXT.offset = overlay_offset - sizeof(linfo);
secTEXT.addr = segTEXT.vmaddr + secTEXT.offset;
secTEXT.size = segTEXT.filesize - secTEXT.offset;
secXHDR.offset = overlay_offset - sizeof(linfo);
if (my_filetype==Mach_header::MH_EXECUTE) {
secXHDR.offset -= sizeof(uuid_cmd) + sizeof(linkitem);
}
secXHDR.addr += secXHDR.offset;
unsigned foff1 = (PAGE_MASK & (~PAGE_MASK + segTEXT.filesize));
if (foff1 < segTEXT.vmsize)
foff1 += PAGE_SIZE; // codesign disallows overhang
segLINK.fileoff = foff1;
segLINK.vmaddr = segTEXT.vmaddr + foff1;
fo->seek(foff1 - 1, SEEK_SET); fo->write("", 1);
fo->seek(sizeof(mhdro), SEEK_SET);
fo->rewrite(&segZERO, sizeof(segZERO));
fo->rewrite(&segXHDR, sizeof(segXHDR));
fo->rewrite(&secXHDR, sizeof(secXHDR));
fo->rewrite(&segTEXT, sizeof(segTEXT));
fo->rewrite(&secTEXT, sizeof(secTEXT));
fo->rewrite(&segLINK, sizeof(segLINK));
fo->rewrite(&threado, sizeof(threado));
if (my_filetype==Mach_header::MH_EXECUTE) {
fo->rewrite(&uuid_cmd, sizeof(uuid_cmd));
fo->rewrite(&linkitem, sizeof(linkitem));
}
fo->rewrite(&linfo, sizeof(linfo));
}
#undef PAGE_MASK64
#undef PAGE_SIZE64
#define PAGE_MASK64 (~(upx_uint64_t)0<<12)
#define PAGE_SIZE64 ((upx_uint64_t)0-PAGE_MASK64)
void PackMachI386::pack4(OutputFile *fo, Filter &ft) // append PackHeader
{
// offset of p_info in compressed file
@ -943,6 +1034,11 @@ void PackDylibPPC32::pack4(OutputFile *fo, Filter &ft) // append PackHeader
pack4dylib(fo, ft, threado.state.srr0);
}
void PackDylibPPC64LE::pack4(OutputFile *fo, Filter &ft) // append PackHeader
{
pack4dylib(fo, ft, threado.state64.srr0);
}
void PackMachPPC32::pack3(OutputFile *fo, Filter &ft) // append loader
{
TE32 disp;
@ -957,6 +1053,20 @@ void PackMachPPC32::pack3(OutputFile *fo, Filter &ft) // append loader
super::pack3(fo, ft);
}
void PackMachPPC64LE::pack3(OutputFile *fo, Filter &ft) // append loader
{
TE64 disp;
unsigned const zero = 0;
unsigned len = fo->getBytesWritten();
fo->write(&zero, 3& (0u-len));
len += (3& (0u-len)) + sizeof(disp);
disp = 4+ len - sz_mach_headers; // 4: sizeof(instruction)
fo->write(&disp, sizeof(disp));
threado.state64.srr0 = len + segTEXT.vmaddr; /* entry address */
super::pack3(fo, ft);
}
void PackMachI386::pack3(OutputFile *fo, Filter &ft) // append loader
{
TE32 disp;
@ -1085,6 +1195,28 @@ void PackDylibPPC32::pack3(OutputFile *fo, Filter &ft) // append loader
super::pack3(fo, ft);
sz_mach_headers = save_sz_mach_headers;
}
void PackDylibPPC64LE::pack3(OutputFile *fo, Filter &ft) // append loader
{
TE64 disp;
unsigned const zero = 0;
unsigned len = fo->getBytesWritten();
fo->write(&zero, 3& (0u-len));
len += (3& (0u-len)) + 4*sizeof(disp);
disp = prev_init_address;
fo->write(&disp, sizeof(disp)); // user .init_address
disp = sizeof(mhdro) + mhdro.sizeofcmds + sizeof(l_info) + sizeof(p_info);
fo->write(&disp, sizeof(disp)); // src offset(compressed __TEXT)
disp = len - disp - 3*sizeof(disp);
fo->write(&disp, sizeof(disp)); // length(compressed __TEXT)
unsigned const save_sz_mach_headers(sz_mach_headers);
sz_mach_headers = 0;
super::pack3(fo, ft);
sz_mach_headers = save_sz_mach_headers;
}
// Determine length of gap between PT_LOAD phdri[k] and closest PT_LOAD
// which follows in the file (or end-of-file). Optimize for common case
@ -1233,6 +1365,16 @@ void PackMachPPC32::pack1_setup_threado(OutputFile *const fo)
fo->write(&threado, sizeof(threado));
}
void PackMachPPC64LE::pack1_setup_threado(OutputFile *const fo)
{
threado.cmd = Mach_segment_command::LC_UNIXTHREAD;
threado.cmdsize = sizeof(threado);
threado.flavor = my_thread_flavor;
threado.count = my_thread_state_word_count;
memset(&threado.state64, 0, sizeof(threado.state64));
fo->write(&threado, sizeof(threado));
}
void PackMachI386::pack1_setup_threado(OutputFile *const fo)
{
threado.cmd = Mach_segment_command::LC_UNIXTHREAD;
@ -1411,7 +1553,7 @@ void PackMachBase<T>::unpack(OutputFile *fo)
fi->readx(&bhdr, sizeof(bhdr));
ph.u_len = get_te32(&bhdr.sz_unc);
ph.c_len = get_te32(&bhdr.sz_cpr);
if (file_size < ph.c_len || ph.c_len == 0 || ph.u_len == 0)
if ((unsigned)file_size < ph.c_len || ph.c_len == 0 || ph.u_len == 0)
throwCantUnpack("file header corrupted");
ph.method = bhdr.b_method;
ph.filter = bhdr.b_ftid;
@ -1434,7 +1576,7 @@ void PackMachBase<T>::unpack(OutputFile *fo)
memcpy(&msegcmd[j], ptr, umin(sizeof(Mach_segment_command),
((Mach_segment_command const *)ptr)->cmdsize));
ptr += (unsigned) ((Mach_segment_command const *)ptr)->cmdsize;
if ((ptr - (unsigned char const *)mhdr) > ph.u_len) {
if ((unsigned)(ptr - (unsigned char const *)mhdr) > ph.u_len) {
throwCantUnpack("cmdsize");
}
}
@ -1602,8 +1744,8 @@ unsigned PackMachFat::check_fat_head()
throwUnknownExecutableFormat("size", 0);
}
if (mask & offset
|| fi->st_size_orig() < (size + offset)
|| fi->st_size_orig() <= offset) { // redundant unless overflow
|| (unsigned)fi->st_size_orig() < size + offset
|| (unsigned)fi->st_size_orig() <= offset) { // redundant unless overflow
throwUnknownExecutableFormat("offset", 0);
}
}
@ -1695,6 +1837,25 @@ void PackMachFat::pack(OutputFile *fo)
packer.pack(fo);
}
} break;
case PackMachFat::CPU_TYPE_POWERPC64LE: {
typedef N_Mach::Mach_header<MachClass_LE64::MachITypes> Mach_header;
Mach_header hdr;
fi->readx(&hdr, sizeof(hdr));
if (hdr.filetype==Mach_header::MH_EXECUTE) {
PackMachPPC64LE packer(fi);
packer.initPackHeader();
packer.canPack();
packer.updatePackHeader();
packer.pack(fo);
}
else if (hdr.filetype==Mach_header::MH_DYLIB) {
PackDylibPPC64LE packer(fi);
packer.initPackHeader();
packer.canPack();
packer.updatePackHeader();
packer.pack(fo);
}
} break;
} // switch cputype
fat_head.arch[j].offset = base;
length = fo->unset_extent();
@ -1781,6 +1942,23 @@ void PackMachFat::unpack(OutputFile *fo)
packer.unpack(fo);
}
} break;
case PackMachFat::CPU_TYPE_POWERPC64LE: {
N_Mach::Mach_header<MachClass_LE64::MachITypes> hdr;
typedef N_Mach::Mach_header<MachClass_LE64::MachITypes> Mach_header;
fi->readx(&hdr, sizeof(hdr));
if (hdr.filetype==Mach_header::MH_EXECUTE) {
PackMachPPC64LE packer(fi);
packer.initPackHeader();
packer.canUnpack();
packer.unpack(fo);
}
else if (hdr.filetype==Mach_header::MH_DYLIB) {
PackDylibPPC64LE packer(fi);
packer.initPackHeader();
packer.canUnpack();
packer.unpack(fo);
}
} break;
} // switch cputype
fat_head.arch[j].offset = base;
length = (fo ? fo->unset_extent() : 0);
@ -1834,6 +2012,14 @@ bool PackMachFat::canPack()
return false;
}
} break;
case PackMachFat::CPU_TYPE_POWERPC64LE: {
PackMachPPC64LE packer(fi);
if (!packer.canPack()) {
PackDylibPPC64LE pack2r(fi);
if (!pack2r.canPack())
return false;
}
} break;
} // switch cputype
}
@ -1896,6 +2082,18 @@ int PackMachFat::canUnpack()
else
ph.format = packer.getFormat(); // FIXME: copy entire PackHeader
} break;
case PackMachFat::CPU_TYPE_POWERPC64LE: {
PackMachPPC64LE packer(fi);
if (!packer.canUnpack()) {
PackDylibPPC64LE pack2r(fi);
if (!pack2r.canUnpack())
return 0;
else
ph.format = pack2r.getFormat(); // FIXME: copy entire PackHeader
}
else
ph.format = packer.getFormat(); // FIXME: copy entire PackHeader
} break;
} // switch cputype
}
return 1;

View File

@ -371,6 +371,26 @@ __packed_struct(Mach_ppc_thread_state64)
Word vrsave; /* Vector Save Register */
__packed_struct_end()
template <class TMachITypes>
__packed_struct(Mach_ppcle_thread_state64)
typedef typename TMachITypes::Word Word;
typedef typename TMachITypes::Xword Xword;
Xword srr0; /* Instruction address register (PC; entry addr) */
Xword srr1; /* Machine state register (supervisor) */
Xword r0, r1, r2, r3, r4, r5, r6, r7;
Xword r8, r9,r10,r11,r12,r13,r14,r15;
Xword r16,r17,r18,r19,r20,r21,r22,r23;
Xword r24,r25,r26,r27,r28,r29,r30,r31;
Word cr; /* Condition register */ // FIXME: Xword?
Xword xer; /* User's integer exception register */
Xword lr; /* Link register */
Xword ctr; /* Count register */
Word vrsave; /* Vector Save Register */
__packed_struct_end()
template <class TMachITypes> __packed_struct(Mach_ARM64_thread_state)
typedef typename TMachITypes::Xword Xword;
typedef typename TMachITypes::Word Word;
@ -457,6 +477,7 @@ struct MachClass_64
typedef N_Mach::Mach_linkedit_data_command<MachITypes> Mach_linkedit_data_command;
typedef N_Mach::Mach_uuid_command<MachITypes> Mach_uuid_command;
typedef N_Mach64::Mach_ppcle_thread_state64<MachITypes> Mach_ppcle_thread_state64;
typedef N_Mach64::Mach_AMD64_thread_state<MachITypes> Mach_AMD64_thread_state;
typedef N_Mach64::Mach_ARM64_thread_state<MachITypes> Mach_ARM64_thread_state;
@ -537,6 +558,7 @@ typedef MachClass_LE64::Mach_linkedit_data_command MachLE64_linkedit_data_comm
typedef MachClass_LE64::Mach_uuid_command MachLE64_uuid_command;
typedef MachClass_BE32::Mach_ppc_thread_state Mach_ppc_thread_state;
typedef MachClass_LE64::Mach_ppcle_thread_state64 Mach_ppcle_thread_state64;
typedef MachClass_LE32::Mach_i386_thread_state Mach_i386_thread_state;
typedef MachClass_LE64::Mach_AMD64_thread_state Mach_AMD64_thread_state;
typedef MachClass_LE64::Mach_ARM64_thread_state Mach_ARM64_thread_state;
@ -700,6 +722,39 @@ protected:
Mach_thread_command threado;
};
class PackMachPPC64LE : public PackMachBase<MachClass_LE64>
{
typedef PackMachBase<MachClass_LE64> super;
public:
PackMachPPC64LE(InputFile *f);
virtual int getFormat() const { return UPX_F_MACH_PPC64LE; }
virtual const char *getName() const { return "Mach/ppc64LE"; }
virtual const char *getFullName(const options_t *) const { return "ppc64le-darwin.macho"; }
protected:
virtual const int *getFilters() const;
virtual void pack1_setup_threado(OutputFile *const fo);
virtual void pack3(OutputFile *, Filter &); // append loader
virtual void pack4(OutputFile *, Filter &); // append PackHeader
virtual Linker* newLinker() const;
virtual void buildLoader(const Filter *ft);
__packed_struct(Mach_thread_command)
LE32 cmd; /* LC_THREAD or LC_UNIXTHREAD */
LE32 cmdsize; /* total size of this command */
LE32 flavor;
LE32 count; /* sizeof(following_thread_state)/4 */
Mach_ppcle_thread_state64 state64;
#define WANT_MACH_THREAD_ENUM 1
#include "p_mach_enum.h"
__packed_struct_end()
Mach_thread_command threado;
};
class PackDylibPPC32 : public PackMachPPC32
{
typedef PackMachPPC32 super;
@ -716,6 +771,22 @@ protected:
virtual void buildLoader(const Filter *ft);
};
class PackDylibPPC64LE : public PackMachPPC64LE
{
typedef PackMachPPC64LE super;
public:
PackDylibPPC64LE(InputFile *f);
virtual int getFormat() const { return UPX_F_DYLIB_PPC64LE; }
virtual const char *getName() const { return "Dylib/ppc64LE"; }
virtual const char *getFullName(const options_t *) const { return "ppc64le-darwin.dylib"; }
protected:
virtual void pack3(OutputFile *, Filter &); // append loader
virtual void pack4(OutputFile *, Filter &); // append PackHeader
virtual void buildLoader(const Filter *ft);
};
class PackMachI386 : public PackMachBase<MachClass_LE32>
{
typedef PackMachBase<MachClass_LE32> super;

View File

@ -43,7 +43,8 @@
CPU_TYPE_X86_64 = 0x01000007,
CPU_TYPE_ARM = 12,
CPU_TYPE_POWERPC = 0x00000012,
CPU_TYPE_POWERPC64 = 0x01000012
CPU_TYPE_POWERPC64 = 0x01000012,
CPU_TYPE_POWERPC64LE = 0x01000021
};
enum { // cpusubtype
CPU_SUBTYPE_ARM_ALL = 0,

View File

@ -792,6 +792,12 @@ const int *PackVmlinuxPPC32::getCompressionMethods(int method, int level) const
return Packer::getDefaultCompressionMethods_le32(method, level);
}
const int *PackVmlinuxPPC64LE::getCompressionMethods(int method, int level) const
{
// No real dependency on LE32.
return Packer::getDefaultCompressionMethods_le32(method, level);
}
const int *PackVmlinuxARMEL::getFilters() const
{
@ -811,6 +817,12 @@ const int *PackVmlinuxPPC32::getFilters() const
return fd0;
}
const int *PackVmlinuxPPC64LE::getFilters() const
{
static const int fd0[] = { 0xd0, FT_END };
return fd0;
}
//
// Examples as of 2004-07-16 [readelf --segments vmlinux # before fiddling]:
//
@ -913,6 +925,11 @@ bool PackVmlinuxPPC32::is_valid_e_entry(Addr e_entry)
return 0xc0000000==e_entry;
}
bool PackVmlinuxPPC64LE::is_valid_e_entry(Addr e_entry)
{
return 0xc0000000==e_entry;
}
Linker* PackVmlinuxARMEL::newLinker() const
{
return new ElfLinkerArmLE;
@ -928,6 +945,10 @@ Linker* PackVmlinuxPPC32::newLinker() const
return new ElfLinkerPpc32;
}
Linker* PackVmlinuxPPC64LE::newLinker() const
{
return new ElfLinkerPpc64le;
}
void PackVmlinuxARMEL::buildLoader(const Filter *ft)
@ -999,6 +1020,33 @@ void PackVmlinuxPPC32::buildLoader(const Filter *ft)
addLoader("IDENTSTR,UPX1HEAD", NULL);
}
static const
#include "stub/ppc64le-linux.kernel.vmlinux.h"
void PackVmlinuxPPC64LE::buildLoader(const Filter *ft)
{
// prepare loader
initLoader(stub_ppc64le_linux_kernel_vmlinux, sizeof(stub_ppc64le_linux_kernel_vmlinux));
addLoader("LINUX000", NULL);
if (ft->id) {
assert(ft->calls > 0);
addLoader("LINUX010", NULL);
}
addLoader("LINUX020", NULL);
if (ft->id) {
addFilter32(ft->id);
}
addLoader("LINUX030", NULL);
if (ph.method == M_NRV2E_LE32) addLoader("NRV2E,NRV_TAIL", NULL);
else if (ph.method == M_NRV2B_LE32) addLoader("NRV2B,NRV_TAIL", NULL);
else if (ph.method == M_NRV2D_LE32) addLoader("NRV2D,NRV_TAIL", NULL);
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", NULL);
else throwBadLoader();
if (hasLoaderSection("CFLUSH"))
addLoader("CFLUSH");
addLoader("IDENTSTR,UPX1HEAD", NULL);
}
static const
#include "stub/i386-linux.kernel.vmlinux-head.h"
@ -1067,6 +1115,14 @@ void PackVmlinuxPPC32::defineDecompressorSymbols()
// linker->defineSymbol("METHOD", ph.method);
}
void PackVmlinuxPPC64LE::defineDecompressorSymbols()
{
super::defineDecompressorSymbols();
// linker->defineSymbol( "COMPRESSED_LENGTH", ph.c_len);
// linker->defineSymbol("UNCOMPRESSED_LENGTH", ph.u_len);
// linker->defineSymbol("METHOD", ph.method);
}
void PackVmlinuxI386::defineDecompressorSymbols()
{
super::defineDecompressorSymbols();
@ -1136,6 +1192,14 @@ unsigned PackVmlinuxPPC32::write_vmlinux_head(
return 0;
}
unsigned PackVmlinuxPPC64LE::write_vmlinux_head(
OutputFile * /*const fo*/,
Shdr * /*const stxt*/
)
{
return 0;
}
bool PackVmlinuxARMEL::has_valid_vmlinux_head()
{
@ -1179,6 +1243,21 @@ bool PackVmlinuxPPC32::has_valid_vmlinux_head()
return false;
}
#include "stub/ppc64le-linux.kernel.vmlinux-head.h"
bool PackVmlinuxPPC64LE::has_valid_vmlinux_head()
{
TE64 buf[2];
fi->seek(p_text->sh_offset + sizeof(stub_ppc64le_linux_kernel_vmlinux_head) -8, SEEK_SET);
fi->readx(buf, sizeof(buf));
//unsigned const word0 = buf[0];
unsigned const word1 = buf[1];
if (0xeb==(word1>>24)
&& (0x00ffffff& word1)==(0u - 1 + ((3+ ph.c_len)>>2))) {
return true;
}
return false;
}
bool PackVmlinuxI386::has_valid_vmlinux_head()
{
unsigned char buf[5];

View File

@ -191,6 +191,30 @@ protected:
);
};
class PackVmlinuxPPC64LE : public PackVmlinuxBase<ElfClass_LE64>
{
typedef PackVmlinuxBase<ElfClass_LE64> super;
public:
PackVmlinuxPPC64LE(InputFile *f) : super(f, Ehdr::EM_PPC64,
Ehdr::ELFCLASS64, Ehdr::ELFDATA2LSB, "_vmlinux_start") { }
virtual int getFormat() const { return UPX_F_VMLINUX_PPC64LE; }
virtual const char *getName() const { return "ppc64LE"; }
virtual const char *getFullName(const options_t *) const { return "ppc64le-linux.kernel.vmlinux"; }
virtual const int *getCompressionMethods(int method, int level) const;
virtual const int *getFilters() const;
protected:
virtual void buildLoader(const Filter *ft);
virtual void defineDecompressorSymbols();
virtual Linker* newLinker() const;
virtual bool is_valid_e_entry(Addr);
virtual bool has_valid_vmlinux_head();
virtual unsigned write_vmlinux_head(
OutputFile *const fo,
Shdr *const stxt
);
};
class PackVmlinuxAMD64 : public PackVmlinuxBase<ElfClass_LE64>
{

View File

@ -66,7 +66,7 @@ void Packer::assertPacker() const
assert(getFormat() <= 255);
assert(getVersion() >= 11);
assert(getVersion() <= 14);
assert(strlen(getName()) <= 13);
assert(strlen(getName()) <= 15);
// info: 32 is limit for show_all_packers() in help.cpp
assert(strlen(getFullName(opt)) <= 28);
assert(strlen(getFullName(NULL)) <= 28);

View File

@ -210,13 +210,16 @@ const char *Packer::getDecompressorSections() const
|| UPX_F_LINUX_ELF64_AMD ==ph.format
|| UPX_F_LINUX_ELF32_ARMEL==ph.format
|| UPX_F_LINUX_ELFPPC32 ==ph.format
|| UPX_F_LINUX_ELFPPC64LE ==ph.format
|| UPX_F_LINUX_ELF32_ARMEB==ph.format
|| UPX_F_BSD_ELF_i386 ==ph.format
|| UPX_F_VMLINUZ_ARMEL ==ph.format
|| UPX_F_VMLINUX_ARMEL ==ph.format
|| UPX_F_VMLINUX_ARMEB ==ph.format
|| UPX_F_VMLINUX_PPC32 ==ph.format
|| UPX_F_VMLINUX_PPC64LE ==ph.format
|| UPX_F_MACH_PPC32 ==ph.format
|| UPX_F_MACH_PPC64LE ==ph.format
|| UPX_F_MACH_i386 ==ph.format
|| UPX_F_DYLIB_i386 ==ph.format
) {
@ -250,13 +253,16 @@ void Packer::defineDecompressorSymbols()
|| UPX_F_LINUX_ELF64_AMD ==ph.format
|| UPX_F_LINUX_ELF32_ARMEL==ph.format
|| UPX_F_LINUX_ELFPPC32 ==ph.format
|| UPX_F_LINUX_ELFPPC64LE ==ph.format
|| UPX_F_LINUX_ELF32_ARMEB==ph.format
|| UPX_F_BSD_ELF_i386 ==ph.format
|| UPX_F_VMLINUZ_ARMEL ==ph.format
|| UPX_F_VMLINUX_ARMEL ==ph.format
|| UPX_F_VMLINUX_ARMEB ==ph.format
|| UPX_F_VMLINUX_PPC32 ==ph.format
|| UPX_F_VMLINUX_PPC64LE ==ph.format
|| UPX_F_MACH_PPC32 ==ph.format
|| UPX_F_MACH_PPC64LE ==ph.format
|| UPX_F_MACH_i386 ==ph.format
|| UPX_F_DYLIB_i386 ==ph.format
) {

View File

@ -213,6 +213,9 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
if ((p = func(new PackVmlinuxPPC32(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackVmlinuxPPC64LE(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackVmlinuxAMD64(f), user)) != NULL)
return p;
delete p; p = NULL;
@ -276,6 +279,9 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
if ((p = func(new PackLinuxElf32ppc(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackLinuxElf64ppcle(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackLinuxElf32mipsel(f), user)) != NULL)
return p;
delete p; p = NULL;
@ -317,6 +323,9 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
if ((p = func(new PackMachPPC32(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackMachPPC64LE(f), user)) != NULL)
return p;
delete p; p = NULL;
if ((p = func(new PackMachI386(f), user)) != NULL)
return p;
delete p; p = NULL;

View File

@ -48,72 +48,72 @@ endif
# ************************************************************************/
ifndef STUBS
STUBS += amd64-darwin.dylib-entry.h
STUBS += amd64-darwin.macho-entry.h
STUBS += amd64-darwin.macho-fold.h
STUBS += amd64-linux.elf-entry.h
STUBS += amd64-linux.elf-fold.h
STUBS += amd64-linux.kernel.vmlinux-head.h
STUBS += amd64-linux.kernel.vmlinux.h
STUBS += amd64-linux.shlib-init.h
STUBS += amd64-win64.pep.h
STUBS += arm-darwin.macho-entry.h
STUBS += arm-darwin.macho-fold.h
STUBS += arm64-darwin.macho-entry.h
STUBS += arm64-darwin.macho-fold.h
STUBS += arm-linux.elf-entry.h
STUBS += arm-linux.elf-fold.h
STUBS += arm-linux.kernel.vmlinux-head.h
STUBS += arm-linux.kernel.vmlinux.h
STUBS += arm-linux.shlib-init.h
STUBS += arm.v4a-wince.pe.h
STUBS += arm.v4t-wince.pe.h
STUBS += armeb-linux.elf-entry.h
STUBS += armeb-linux.elf-fold.h
STUBS += armeb-linux.kernel.vmlinux-head.h
STUBS += armeb-linux.kernel.vmlinux.h
STUBS += armel-eabi-linux.elf-entry.h
STUBS += armel-eabi-linux.elf-fold.h
STUBS += armel-eabi-linux.shlib-init.h
STUBS += armel-linux.kernel.vmlinuz-head.h
STUBS += armel-linux.kernel.vmlinuz.h
STUBS += i086-dos16.com.h
STUBS += i086-dos16.exe.h
STUBS += i086-dos16.sys.h
STUBS += i386-bsd.elf-entry.h
STUBS += i386-bsd.elf-fold.h
STUBS += i386-bsd.elf.execve-entry.h
STUBS += i386-bsd.elf.execve-fold.h
STUBS += i386-darwin.dylib-entry.h
# STUBS += i386-darwin.dylib-fold.h
STUBS += i386-darwin.macho-entry.h
STUBS += i386-darwin.macho-fold.h
STUBS += i386-dos32.djgpp2-stubify.h
STUBS += i386-dos32.djgpp2.h
STUBS += i386-dos32.tmt.h
STUBS += i386-dos32.watcom.le.h
STUBS += i386-linux.elf-entry.h
STUBS += i386-linux.elf-fold.h
STUBS += i386-linux.elf.execve-entry.h
STUBS += i386-linux.elf.execve-fold.h
STUBS += i386-linux.elf.interp-entry.h
STUBS += i386-linux.elf.interp-fold.h
STUBS += i386-linux.elf.shell-entry.h
STUBS += i386-linux.elf.shell-fold.h
STUBS += i386-linux.kernel.vmlinux-head.h
STUBS += i386-linux.kernel.vmlinux.h
STUBS += i386-linux.kernel.vmlinuz.h
STUBS += i386-linux.shlib-init.h
STUBS += i386-netbsd.elf-entry.h
STUBS += i386-netbsd.elf-fold.h
STUBS += i386-openbsd.elf-fold.h
STUBS += i386-win32.pe.h
STUBS += m68k-atari.tos.h
STUBS += mips.r3000-linux.elf-entry.h
STUBS += mips.r3000-linux.elf-fold.h
STUBS += mipsel.r3000-linux.elf-entry.h
STUBS += mipsel.r3000-linux.elf-fold.h
STUBS += mipsel.r3000-ps1.h
#STUBS += amd64-darwin.dylib-entry.h
#STUBS += amd64-darwin.macho-entry.h
#STUBS += amd64-darwin.macho-fold.h
#STUBS += amd64-linux.elf-entry.h
#STUBS += amd64-linux.elf-fold.h
#STUBS += amd64-linux.kernel.vmlinux-head.h
#STUBS += amd64-linux.kernel.vmlinux.h
#STUBS += amd64-linux.shlib-init.h
#STUBS += amd64-win64.pep.h
#STUBS += arm-darwin.macho-entry.h
#STUBS += arm-darwin.macho-fold.h
#STUBS += arm64-darwin.macho-entry.h
#STUBS += arm64-darwin.macho-fold.h
#STUBS += arm-linux.elf-entry.h
#STUBS += arm-linux.elf-fold.h
#STUBS += arm-linux.kernel.vmlinux-head.h
#STUBS += arm-linux.kernel.vmlinux.h
#STUBS += arm-linux.shlib-init.h
#STUBS += arm.v4a-wince.pe.h
#STUBS += arm.v4t-wince.pe.h
#STUBS += armeb-linux.elf-entry.h
#STUBS += armeb-linux.elf-fold.h
#STUBS += armeb-linux.kernel.vmlinux-head.h
#STUBS += armeb-linux.kernel.vmlinux.h
#STUBS += armel-eabi-linux.elf-entry.h
#STUBS += armel-eabi-linux.elf-fold.h
#STUBS += armel-eabi-linux.shlib-init.h
#STUBS += armel-linux.kernel.vmlinuz-head.h
#STUBS += armel-linux.kernel.vmlinuz.h
#STUBS += i086-dos16.com.h
#STUBS += i086-dos16.exe.h
#STUBS += i086-dos16.sys.h
#STUBS += i386-bsd.elf-entry.h
#STUBS += i386-bsd.elf-fold.h
#STUBS += i386-bsd.elf.execve-entry.h
#STUBS += i386-bsd.elf.execve-fold.h
#STUBS += i386-darwin.dylib-entry.h
## STUBS += i386-darwin.dylib-fold.h
#STUBS += i386-darwin.macho-entry.h
#STUBS += i386-darwin.macho-fold.h
#STUBS += i386-dos32.djgpp2-stubify.h
#STUBS += i386-dos32.djgpp2.h
#STUBS += i386-dos32.tmt.h
#STUBS += i386-dos32.watcom.le.h
#STUBS += i386-linux.elf-entry.h
#STUBS += i386-linux.elf-fold.h
#STUBS += i386-linux.elf.execve-entry.h
#STUBS += i386-linux.elf.execve-fold.h
#STUBS += i386-linux.elf.interp-entry.h
#STUBS += i386-linux.elf.interp-fold.h
#STUBS += i386-linux.elf.shell-entry.h
#STUBS += i386-linux.elf.shell-fold.h
#STUBS += i386-linux.kernel.vmlinux-head.h
#STUBS += i386-linux.kernel.vmlinux.h
#STUBS += i386-linux.kernel.vmlinuz.h
#STUBS += i386-linux.shlib-init.h
#STUBS += i386-netbsd.elf-entry.h
#STUBS += i386-netbsd.elf-fold.h
#STUBS += i386-openbsd.elf-fold.h
#STUBS += i386-win32.pe.h
#STUBS += m68k-atari.tos.h
#STUBS += mips.r3000-linux.elf-entry.h
#STUBS += mips.r3000-linux.elf-fold.h
#STUBS += mipsel.r3000-linux.elf-entry.h
#STUBS += mipsel.r3000-linux.elf-fold.h
#STUBS += mipsel.r3000-ps1.h
STUBS += powerpc-darwin.dylib-entry.h
STUBS += powerpc-darwin.macho-entry.h
STUBS += powerpc-darwin.macho-fold.h
@ -121,7 +121,14 @@ STUBS += powerpc-linux.elf-entry.h
STUBS += powerpc-linux.elf-fold.h
STUBS += powerpc-linux.kernel.vmlinux-head.h
STUBS += powerpc-linux.kernel.vmlinux.h
STUBS += thumb-eabi-linux.shlib-init.h
STUBS += ppc64le-darwin.dylib-entry.h
#STUBS += ppc64le-darwin.macho-entry.h
#STUBS += ppc64le-darwin.macho-fold.h
STUBS += ppc64le-linux.elf-entry.h
STUBS += ppc64le-linux.elf-fold.h
STUBS += ppc64le-linux.kernel.vmlinux-head.h
STUBS += ppc64le-linux.kernel.vmlinux.h
#STUBS += thumb-eabi-linux.shlib-init.h
endif
@ -140,7 +147,7 @@ endif
all.targets ?= .upx-stubtools-stamp tmp/.tmp-stamp .all-stamp
all: $$(all.targets)
.upx-stubtools-stamp: $(MAKEFILE_LIST)
upx-stubtools-check-version 20130920
#upx-stubtools-check-version 20130920
@echo "timestamp" > $@
%/.tmp-stamp:
@mkdir -p $(dir $@)
@ -224,12 +231,12 @@ tc.default.sstrip = sstrip
tc.default.xstrip = $(PYTHON) $(top_srcdir)/src/stub/scripts/xstrip.py
# default multiarch-binutils
tc.default.m-ar = multiarch-ar-2.17
tc.default.m-ld = multiarch-ld-2.17 $(if $(tc_bfdname),-b $(tc_bfdname))
tc.default.m-nm = multiarch-nm-2.17 $(if $(tc_bfdname),--target=$(tc_bfdname))
tc.default.m-objcopy = multiarch-objcopy-2.17 $(if $(tc_bfdname),-F $(tc_bfdname))
tc.default.m-objdump = multiarch-objdump-2.17 $(if $(tc_bfdname),-b $(tc_bfdname)) $(if $(tc_bfdarch),-m $(tc_bfdarch))
tc.default.m-readelf = multiarch-readelf-2.17
tc.default.m-ar = ar
tc.default.m-ld = ld $(if $(tc_bfdname),-b $(tc_bfdname))
tc.default.m-nm = nm $(if $(tc_bfdname),--target=$(tc_bfdname))
tc.default.m-objcopy = objcopy $(if $(tc_bfdname),-F $(tc_bfdname))
tc.default.m-objdump = objdump $(if $(tc_bfdname),-b $(tc_bfdname)) $(if $(tc_bfdarch),-m $(tc_bfdarch))
tc.default.m-readelf = readelf
# default binutils
tc.default.ld = $(call tc,m-ld)
@ -315,7 +322,7 @@ tmp/amd64-darwin.macho-main.o : $(srcdir)/src/$$T.c
amd64-linux.elf%.h : tc_list = amd64-linux.elf default
amd64-linux.elf%.h : tc_bfdname = elf64-x86-64
tc.amd64-linux.elf.gcc = amd64-linux-gcc-3.4.4 -m64 -nostdinc -MMD -MT $@
tc.amd64-linux.elf.gcc = gcc -m64 -nostdinc -MMD -MT $@
tc.amd64-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
tc.amd64-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
@ -1210,12 +1217,13 @@ powerpc-darwin.macho%.h : tc_list = powerpc-linux.elf default
powerpc-darwin.macho%.h : tc_bfdname = elf32-powerpc
powerpc-darwin.macho-entry.h : $(srcdir)/src/$$T.S
$(call tc,gcc) -c $< -o tmp/$T.bin
$(call tc,gcc) -c $< -o tmp/$T.bin
$(call tc,f-embed_objinfo,tmp/$T.bin)
$(call tc,bin2h) tmp/$T.bin $@
powerpc-darwin.macho-fold.h : tmp/$$T.o tmp/powerpc-darwin.macho-main.o
$(call tc,ld) --no-warn-mismatch --strip-all --oformat binary -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin
$(call tc,ld) --no-warn-mismatch --strip-all --oformat binary -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin /usr/powerpc-linux-gnu/lib/libc.a /usr/lib/gcc-cross/powerpc-linux-gnu/4.8/libgcc.a
#/usr/lib/gcc-cross/powerpc-linux-gnu/4.8/libgcc.a
chmod a-x tmp/$T.bin
$(call tc,bin2h) tmp/$T.bin $@
@ -1249,8 +1257,8 @@ powerpc-darwin.dylib-entry.h : $(srcdir)/src/$$T.S
powerpc-linux.elf%.h : tc_list = powerpc-linux.elf default
powerpc-linux.elf%.h : tc_bfdname = elf32-powerpc
tc.powerpc-linux.elf.gcc = powerpc.405-linux-gcc-3.4.5 -m32 -mbig-endian -mcpu=405 -nostdinc -MMD -MT $@
tc.powerpc-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables
tc.powerpc-linux.elf.gcc = gcc -m32 -mbig-endian -mtune=powerpc -nostdinc -MMD -MT $@
tc.powerpc-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables -fno-stack-protector
tc.powerpc-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
powerpc-linux.elf-entry.h : $(srcdir)/src/$$T.S
@ -1259,7 +1267,8 @@ powerpc-linux.elf-entry.h : $(srcdir)/src/$$T.S
$(call tc,bin2h) tmp/$T.bin $@
powerpc-linux.elf-fold.h : tmp/$$T.o tmp/powerpc-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,ld) --strip-all -T $(srcdir)/src/$T.lds -Map tmp/$T.map $(filter %.o,$^) -o tmp/$T.bin /usr/powerpc-linux-gnu/lib/libc.a /usr/lib/gcc-cross/powerpc-linux-gnu/4.8/libgcc.a
#/usr/lib/gcc/powerpc-linux-gnu/5/libgcc.a /usr/lib/powerpc-linux-gnu/libc.a
$(call tc,f-objstrip,tmp/$T.bin)
$(call tc,sstrip) tmp/$T.bin
$(call tc,bin2h) tmp/$T.bin $@
@ -1293,6 +1302,98 @@ powerpc-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
$(call tc,objcopy) --output-target binary --only-section .text tmp/$T.o tmp/$T.bin
$(call tc,bin2h) tmp/$T.bin $@
# /***********************************************************************
# // ppc64le-darwin.macho
# ************************************************************************/
# info: we use the tc settings from ppc64le-linux.elf
ppc64le-darwin.macho%.h : tc_list = ppc64le-linux.elf default
ppc64le-darwin.macho%.h : tc_bfdname = elf64-powerpcle
ppc64le-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 $@
ppc64le-darwin.macho-fold.h : tmp/$$T.o tmp/ppc64le-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/ppc64le-darwin.macho-fold.o : $(srcdir)/src/$$T.S
$(call tc,gcc) -c $< -o $@
$(call tc,f-objstrip,$@)
tmp/ppc64le-darwin.macho-main.o : $(srcdir)/src/$$T.c
$(call tc,gcc) -c -Os $< -o $@
$(call tc,f-objstrip,$@)
# /***********************************************************************
# // ppc64le-darwin.dylib
# ************************************************************************/
# info: we use the tc settings from ppc64le-linux.elf
ppc64le-darwin.dylib%.h : tc_list = ppc64le-linux.elf default
ppc64le-darwin.dylib%.h : tc_bfdname = elf64-powerpcle
ppc64le-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 $@
# /***********************************************************************
# // ppc64le-linux.elf
# ************************************************************************/
ppc64le-linux.elf%.h : tc_list = ppc64le-linux.elf default
ppc64le-linux.elf%.h : tc_bfdname = elf64-powerpcle
tc.ppc64le-linux.elf.gcc = gcc -m64 -mlittle-endian -mcpu=power8 -nostdinc -MMD -MT $@
tc.ppc64le-linux.elf.gcc += -fno-exceptions -fno-asynchronous-unwind-tables -fno-stack-protector
tc.ppc64le-linux.elf.gcc += -Wall -W -Wcast-align -Wcast-qual -Wstrict-prototypes -Wwrite-strings -Werror
ppc64le-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 $@
ppc64le-linux.elf-fold.h : tmp/$$T.o tmp/ppc64le-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/ppc64le-linux.elf-fold.o : $(srcdir)/src/$$T.S
$(call tc,gcc) -c $< -o $@
$(call tc,f-objstrip,$@)
tmp/ppc64le-linux.elf-main.o : $(srcdir)/src/$$T.c
$(call tc,gcc) -c -Os $< -o $@
$(call tc,f-objstrip,$@)
# /***********************************************************************
# // ppc64le-linux.kernel.vmlinux
# // ppc64le-linux.kernel.vmlinux-head
# ************************************************************************/
ppc64le-linux.kernel.vmlinu%.h : tc_list = ppc64le-linux.kernel default
ppc64le-linux.kernel.vmlinu%.h : tc_bfdname = elf64-powerpcle
tc.ppc64le-linux.kernel.gcc = $(tc.ppc64le-linux.elf.gcc)
ppc64le-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 $@
ppc64le-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 $@
# /***********************************************************************
# // thumb-eabi-linux.shlib

View File

@ -32,8 +32,8 @@
#define STUB_AMD64_LINUX_ELF_ENTRY_SIZE 10420
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0xf5c24a13
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0xccd1eb0e
#define STUB_AMD64_LINUX_ELF_ENTRY_ADLER32 0x6d5e3cb7
#define STUB_AMD64_LINUX_ELF_ENTRY_CRC32 0x41203f95
unsigned char stub_amd64_linux_elf_entry[10420] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -618,8 +618,8 @@ unsigned char stub_amd64_linux_elf_entry[10420] = {
/* 0x2430 */ 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2440 */ 48, 48, 48, 53, 98, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80,
/* 0x2450 */ 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x2460 */ 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,
/* 0x2470 */ 102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x2460 */ 45, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2470 */ 48, 48, 52, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x2480 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86,
/* 0x2490 */ 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
/* 0x24a0 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
@ -630,8 +630,8 @@ unsigned char stub_amd64_linux_elf_entry[10420] = {
/* 0x24f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 49, 10, 48, 48, 48,
/* 0x2500 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 98, 32, 82, 95,
/* 0x2510 */ 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32,
/* 0x2520 */ 69, 76, 70, 77, 65, 73, 78, 89, 43, 48,120,102,102,102,102,102,
/* 0x2530 */ 102,102,102,102,102,102,102,102,102,102, 99, 10, 10, 82, 69, 76,
/* 0x2520 */ 69, 76, 70, 77, 65, 73, 78, 89, 45, 48,120, 48, 48, 48, 48, 48,
/* 0x2530 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 10, 10, 82, 69, 76,
/* 0x2540 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
/* 0x2550 */ 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70,
/* 0x2560 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
@ -643,8 +643,8 @@ unsigned char stub_amd64_linux_elf_entry[10420] = {
/* 0x25c0 */ 48, 48, 50, 49, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x25d0 */ 48, 48, 48, 53, 50, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80,
/* 0x25e0 */ 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x25f0 */ 43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102,
/* 0x2600 */ 102,102, 99, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x25f0 */ 45, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2600 */ 48, 48, 52, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x2610 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77,
/* 0x2620 */ 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84,
/* 0x2630 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32,
@ -660,8 +660,8 @@ unsigned char stub_amd64_linux_elf_entry[10420] = {
/* 0x26d0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0x26e0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49,
/* 0x26f0 */ 56, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32,
/* 0x2700 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,102,
/* 0x2710 */ 102,102,102,102,102,102,102,102,102,102,102,102,102,102, 99, 10,
/* 0x2700 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 45, 48,120, 48,
/* 0x2710 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 10,
/* 0x2720 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
/* 0x2730 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78,
/* 0x2740 */ 90,117, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,

View File

@ -32,69 +32,69 @@
#define STUB_POWERPC_DARWIN_DYLIB_ENTRY_SIZE 8985
#define STUB_POWERPC_DARWIN_DYLIB_ENTRY_ADLER32 0x992659f2
#define STUB_POWERPC_DARWIN_DYLIB_ENTRY_CRC32 0x3ceb5d64
#define STUB_POWERPC_DARWIN_DYLIB_ENTRY_ADLER32 0x079b624d
#define STUB_POWERPC_DARWIN_DYLIB_ENTRY_CRC32 0xa7ac72a3
unsigned char stub_powerpc_darwin_dylib_entry[8985] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 26,112, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40,
/* 0x0030 */ 0, 22, 0, 19,124, 72, 2,166, 72, 0, 2, 1,124, 0, 41,236,
/* 0x0020 */ 0, 0, 27,164, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40,
/* 0x0030 */ 0, 22, 0, 19,124, 72, 2,166, 72, 0, 0, 1,124, 0, 41,236,
/* 0x0040 */ 125,168, 2,166, 40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,
/* 0x0050 */ 124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255,
/* 0x0060 */ 56,165,255,255, 57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,
/* 0x0070 */ 125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20,
/* 0x0080 */ 97, 41, 0, 1, 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,
/* 0x0090 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255,213, 65,129,255,236,
/* 0x0090 */ 124, 9, 0, 64,125, 41, 74, 20, 65,194,255,213, 65,225,255,236,
/* 0x00a0 */ 56,224, 0, 1, 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21,
/* 0x00b0 */ 65,162,255,189,124,231, 57, 20,125, 41, 72, 21, 65,162,255,177,
/* 0x00c0 */ 124,231, 57, 20,124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161,
/* 0x00d0 */ 65,160,255,216, 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46,
/* 0x00e0 */ 65,128, 0, 32,140, 67, 0, 1,124,234, 16,249,125, 74, 14,112,
/* 0x00f0 */ 65,130, 0, 0,112, 66, 0, 1, 65,162, 0, 80, 72, 0, 0, 20,
/* 0x0100 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255,101, 65,161, 0, 60,
/* 0x0110 */ 57, 0, 0, 1,124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 81,
/* 0x0120 */ 65,161, 0, 40,125, 41, 72, 21, 65,162,255, 69,125, 8, 65, 20,
/* 0x0130 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 53, 65,160,255,232,
/* 0x0140 */ 57, 8, 0, 2, 72, 0, 0, 16,125, 41, 72, 21, 65,162,255, 33,
/* 0x00b0 */ 65,194,255,189,124,231, 57, 20,125, 41, 72, 21, 65,194,255,177,
/* 0x00c0 */ 124,231, 57, 20,124, 9, 0, 64,125, 41, 74, 20, 65,194,255,161,
/* 0x00d0 */ 65,192,255,216, 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46,
/* 0x00e0 */ 65,192, 0, 32,140, 67, 0, 1,124,234, 16,249,125, 74, 14,112,
/* 0x00f0 */ 65,194, 0, 0,112, 66, 0, 1, 65,226, 0, 80, 72, 0, 0, 20,
/* 0x0100 */ 124, 9, 0, 64,125, 41, 74, 20, 65,194,255,101, 65,225, 0, 60,
/* 0x0110 */ 57, 0, 0, 1,124, 9, 0, 64,125, 41, 74, 20, 65,194,255, 81,
/* 0x0120 */ 65,225, 0, 40,125, 41, 72, 21, 65,194,255, 69,125, 8, 65, 20,
/* 0x0130 */ 124, 9, 0, 64,125, 41, 74, 20, 65,194,255, 53, 65,192,255,232,
/* 0x0140 */ 57, 8, 0, 2, 72, 0, 0, 16,125, 41, 72, 21, 65,194,255, 33,
/* 0x0150 */ 125, 8, 65, 20, 32,234,250,255, 57, 8, 0, 2,125, 8, 1,148,
/* 0x0160 */ 124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1,
/* 0x0170 */ 66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44,
/* 0x0170 */ 67, 32,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44,
/* 0x0180 */ 75,255,255, 16,124, 0, 41,236,125,168, 2,166, 40, 7, 0, 5,
/* 0x0190 */ 64,130, 1, 32,144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0,
/* 0x01a0 */ 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, 57, 64,255,255,
/* 0x01b0 */ 72, 0, 0,240, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4,
/* 0x01c0 */ 124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1, 78,128, 0, 32,
/* 0x01d0 */ 141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64,125, 41, 74, 20,
/* 0x01e0 */ 65,162,255,213, 65,129,255,236, 56,224, 0, 1, 72, 0, 0, 20,
/* 0x01f0 */ 56,231,255,255,125, 41, 72, 21, 65,162,255,189,124,231, 57, 21,
/* 0x0200 */ 125, 41, 72, 21, 65,162,255,177,124,231, 57, 21,124, 9, 0, 64,
/* 0x0210 */ 125, 41, 74, 20, 65,162,255,161, 65,160,255,216, 57, 0, 0, 0,
/* 0x0220 */ 52,231,255,253, 84,231, 64, 46, 65,128, 0, 24,140, 67, 0, 1,
/* 0x0230 */ 124,234, 16,249,125, 74, 14,112, 65,130, 0, 0, 72, 0, 0, 12,
/* 0x0240 */ 125, 41, 72, 21, 65,162,255,113,125, 8, 65, 21,125, 41, 72, 21,
/* 0x0250 */ 65,162,255,101,125, 8, 65, 21, 64,130, 0, 40, 57, 0, 0, 1,
/* 0x0260 */ 125, 41, 72, 21, 65,162,255, 81,125, 8, 65, 21,124, 9, 0, 64,
/* 0x0270 */ 125, 41, 74, 20, 65,162,255, 65, 65,160,255,232, 57, 8, 0, 2,
/* 0x01e0 */ 65,194,255,213, 65,225,255,236, 56,224, 0, 1, 72, 0, 0, 20,
/* 0x01f0 */ 56,231,255,255,125, 41, 72, 21, 65,194,255,189,124,231, 57, 21,
/* 0x0200 */ 125, 41, 72, 21, 65,194,255,177,124,231, 57, 21,124, 9, 0, 64,
/* 0x0210 */ 125, 41, 74, 20, 65,194,255,161, 65,192,255,216, 57, 0, 0, 0,
/* 0x0220 */ 52,231,255,253, 84,231, 64, 46, 65,192, 0, 24,140, 67, 0, 1,
/* 0x0230 */ 124,234, 16,249,125, 74, 14,112, 65,194, 0, 0, 72, 0, 0, 12,
/* 0x0240 */ 125, 41, 72, 21, 65,194,255,113,125, 8, 65, 21,125, 41, 72, 21,
/* 0x0250 */ 65,194,255,101,125, 8, 65, 21, 64,130, 0, 40, 57, 0, 0, 1,
/* 0x0260 */ 125, 41, 72, 21, 65,194,255, 81,125, 8, 65, 21,124, 9, 0, 64,
/* 0x0270 */ 125, 41, 74, 20, 65,194,255, 65, 65,192,255,232, 57, 8, 0, 2,
/* 0x0280 */ 32,234,250,255, 57, 8, 0, 1,125, 8, 1,148,124,234, 42, 20,
/* 0x0290 */ 125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248,
/* 0x0290 */ 125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 67, 32,255,248,
/* 0x02a0 */ 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, 75,255,255, 44,
/* 0x02b0 */ 124, 0, 41,236,125,168, 2,166, 40, 7, 0, 2, 64,130, 0,228,
/* 0x02c0 */ 144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0,
/* 0x02d0 */ 56, 99,255,255, 56,165,255,255, 57, 64,255,255, 72, 0, 0,180,
/* 0x02e0 */ 124, 9, 0, 64,125, 41, 72, 20, 76,162, 0, 32, 57, 32, 0, 1,
/* 0x02e0 */ 124, 9, 0, 64,125, 41, 72, 20, 76,226, 0, 32, 57, 32, 0, 1,
/* 0x02f0 */ 125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64,125, 41, 73, 20,
/* 0x0300 */ 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1, 75,255,255,213,
/* 0x0310 */ 65,129,255,244, 56,224, 0, 1, 75,255,255,201,124,231, 57, 21,
/* 0x0320 */ 75,255,255,193, 65,160,255,244, 52,231,255,253, 57, 0, 0, 0,
/* 0x0330 */ 65,128, 0, 20,140, 67, 0, 1, 84,231, 64, 46,124,234, 16,249,
/* 0x0340 */ 65,130, 0, 0, 75,255,255,157,125, 8, 65, 21, 75,255,255,149,
/* 0x0350 */ 125, 8, 65, 21, 56,224, 0, 1, 64,130, 0, 28, 56,224, 0, 3,
/* 0x0310 */ 65,225,255,244, 56,224, 0, 1, 75,255,255,201,124,231, 57, 21,
/* 0x0320 */ 75,255,255,193, 65,192,255,244, 52,231,255,253, 57, 0, 0, 0,
/* 0x0330 */ 65,192, 0, 20,140, 67, 0, 1, 84,231, 64, 46,124,234, 16,249,
/* 0x0340 */ 65,194, 0, 0, 75,255,255,157,125, 8, 65, 21, 75,255,255,149,
/* 0x0350 */ 125, 8, 65, 21, 56,224, 0, 1, 64,194, 0, 28, 56,224, 0, 3,
/* 0x0360 */ 57, 0, 0, 1, 75,255,255,125,125, 8, 65, 21, 75,255,255,117,
/* 0x0370 */ 65,160,255,244, 32, 74,242,255,125, 8, 57, 20,124,234, 42, 20,
/* 0x0380 */ 125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248,
/* 0x0370 */ 65,192,255,244, 32, 74,242,255,125, 8, 57, 20,124,234, 42, 20,
/* 0x0380 */ 125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 67, 32,255,248,
/* 0x0390 */ 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, 75,255,255,112,
/* 0x03a0 */ 40, 7, 0, 14, 64,130, 0, 32,124, 8, 2,166,124,201, 51,120,
/* 0x03a0 */ 40, 7, 0, 14, 64,130, 0, 0,124, 8, 2,166,124,201, 51,120,
/* 0x03b0 */ 129, 6, 0, 0,124,167, 43,120, 56,164,255,254, 56,131, 0, 2,
/* 0x03c0 */ 144, 1, 0, 8,136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126,
/* 0x03d0 */ 56, 96,250, 0,124, 99, 88, 48, 56, 99,241,124,124, 38, 11,120,
@ -422,9 +422,9 @@ unsigned char stub_powerpc_darwin_dylib_entry[8985] = {
/* 0x17f0 */ 56,192, 16, 2, 56,224,255,255, 57, 0, 0, 0, 57, 32, 0, 0,
/* 0x1800 */ 56, 0, 0,197, 68, 0, 0, 2, 56, 96,255,255,124,124, 27,120,
/* 0x1810 */ 56,160, 1,136,124,169, 3,166,124,131,234, 20,124,117,250, 20,
/* 0x1820 */ 140, 3,255,255,156, 4,255,255, 66, 0,255,248,124,165,232, 80,
/* 0x1820 */ 140, 3,255,255,156, 4,255,255, 67, 32,255,248,124,165,232, 80,
/* 0x1830 */ 124,136, 3,166,124,169, 3,166, 78,128, 0, 32,140, 3,255,255,
/* 0x1840 */ 156, 4,255,255, 66, 0,255,248,131,223,255,232,127,227,248, 80,
/* 0x1840 */ 156, 4,255,255, 67, 32,255,248,131,223,255,232,127,227,248, 80,
/* 0x1850 */ 127,228,250, 20,127,222, 26, 20,128, 95,255,236,127, 68, 18, 20,
/* 0x1860 */ 127, 99, 18, 20, 59,123,255,232,128, 90, 0, 4, 59, 90, 0, 12,
/* 0x1870 */ 127, 90, 18, 20,127, 88,211,120,127,121,219,120, 56,122, 0, 0,
@ -438,16 +438,16 @@ unsigned char stub_powerpc_darwin_dylib_entry[8985] = {
/* 0x18f0 */ 68, 0, 0, 2, 56, 96,255,255,184, 65, 0, 0, 56, 33, 0,120,
/* 0x1900 */ 124, 72, 3,166, 78,128, 4, 32, 56, 64, 0, 6,124,104, 2,166,
/* 0x1910 */ 56, 99, 0, 24,124, 73, 3,166,132, 67,255,252,148, 89,255,252,
/* 0x1920 */ 66, 0,255,248,127, 40, 3,166,127,201, 3,166,127,131,227,120,
/* 0x1920 */ 67, 32,255,248,127, 40, 3,166,127,201, 3,166,127,131,227,120,
/* 0x1930 */ 127,164,235,120, 56, 0, 0, 73, 78,128, 0, 32,136, 67, 0, 3,
/* 0x1940 */ 137, 99, 0, 2, 81, 98, 68, 46,137, 99, 0, 1, 81, 98,130, 30,
/* 0x1950 */ 137, 99, 0, 0, 81, 98,192, 14,124, 67, 19,121, 78,128, 0, 32,
/* 0x1960 */ 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, 77,130, 0, 32,
/* 0x1960 */ 40, 6, 0,208, 76,194, 0, 32, 84,132,240,191, 77,194, 0, 32,
/* 0x1970 */ 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8,124, 4, 3,120,
/* 0x1980 */ 56,165, 1, 32,124,103, 27,120, 56, 99,255,252,124,137, 3,166,
/* 0x1990 */ 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80,125,107, 58, 20,
/* 0x19a0 */ 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32,132, 67, 0, 4,
/* 0x19b0 */ 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, 66, 0,255,240,
/* 0x19a0 */ 81, 98, 1,186,144, 67, 0, 0, 79, 64, 0, 32,132, 67, 0, 4,
/* 0x19b0 */ 84, 75, 85,190,124, 11, 40, 64, 65,194,255,220, 67, 32,255,240,
/* 0x19c0 */ 78,128, 0, 32, 75,255,254, 0,102,105,108,101, 32,102,111,114,
/* 0x19d0 */ 109, 97,116, 32,101,108,102, 51, 50, 45,112,111,119,101,114,112,
/* 0x19e0 */ 99, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120,

View File

@ -32,69 +32,69 @@
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_SIZE 8549
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_ADLER32 0x454db8d1
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_CRC32 0xbc96c9ce
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_ADLER32 0x5248bfe2
#define STUB_POWERPC_DARWIN_MACHO_ENTRY_CRC32 0xeed36188
unsigned char stub_powerpc_darwin_macho_entry[8549] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 24,188, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40,
/* 0x0030 */ 0, 22, 0, 19, 72, 0, 0, 73,124, 0, 41,236,125,168, 2,166,
/* 0x0020 */ 0, 0, 25,240, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40,
/* 0x0030 */ 0, 22, 0, 19, 72, 0, 0, 1,124, 0, 41,236,125,168, 2,166,
/* 0x0040 */ 40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20,
/* 0x0050 */ 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255,
/* 0x0060 */ 57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44,
/* 0x0070 */ 56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1,
/* 0x0080 */ 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64,
/* 0x0090 */ 125, 41, 74, 20, 65,162,255,213, 65,129,255,236, 56,224, 0, 1,
/* 0x00a0 */ 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,162,255,189,
/* 0x00b0 */ 124,231, 57, 20,125, 41, 72, 21, 65,162,255,177,124,231, 57, 20,
/* 0x00c0 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161, 65,160,255,216,
/* 0x00d0 */ 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,128, 0, 32,
/* 0x00e0 */ 140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,130, 0, 0,
/* 0x00f0 */ 112, 66, 0, 1, 65,162, 0, 80, 72, 0, 0, 20,124, 9, 0, 64,
/* 0x0100 */ 125, 41, 74, 20, 65,162,255,101, 65,161, 0, 60, 57, 0, 0, 1,
/* 0x0110 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 81, 65,161, 0, 40,
/* 0x0120 */ 125, 41, 72, 21, 65,162,255, 69,125, 8, 65, 20,124, 9, 0, 64,
/* 0x0130 */ 125, 41, 74, 20, 65,162,255, 53, 65,160,255,232, 57, 8, 0, 2,
/* 0x0140 */ 72, 0, 0, 16,125, 41, 72, 21, 65,162,255, 33,125, 8, 65, 20,
/* 0x0090 */ 125, 41, 74, 20, 65,194,255,213, 65,225,255,236, 56,224, 0, 1,
/* 0x00a0 */ 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,194,255,189,
/* 0x00b0 */ 124,231, 57, 20,125, 41, 72, 21, 65,194,255,177,124,231, 57, 20,
/* 0x00c0 */ 124, 9, 0, 64,125, 41, 74, 20, 65,194,255,161, 65,192,255,216,
/* 0x00d0 */ 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,192, 0, 32,
/* 0x00e0 */ 140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,194, 0, 0,
/* 0x00f0 */ 112, 66, 0, 1, 65,226, 0, 80, 72, 0, 0, 20,124, 9, 0, 64,
/* 0x0100 */ 125, 41, 74, 20, 65,194,255,101, 65,225, 0, 60, 57, 0, 0, 1,
/* 0x0110 */ 124, 9, 0, 64,125, 41, 74, 20, 65,194,255, 81, 65,225, 0, 40,
/* 0x0120 */ 125, 41, 72, 21, 65,194,255, 69,125, 8, 65, 20,124, 9, 0, 64,
/* 0x0130 */ 125, 41, 74, 20, 65,194,255, 53, 65,192,255,232, 57, 8, 0, 2,
/* 0x0140 */ 72, 0, 0, 16,125, 41, 72, 21, 65,194,255, 33,125, 8, 65, 20,
/* 0x0150 */ 32,234,250,255, 57, 8, 0, 2,125, 8, 1,148,124,234, 42, 20,
/* 0x0160 */ 125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248,
/* 0x0160 */ 125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 67, 32,255,248,
/* 0x0170 */ 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, 75,255,255, 16,
/* 0x0180 */ 124, 0, 41,236,125,168, 2,166, 40, 7, 0, 5, 64,130, 1, 32,
/* 0x0190 */ 144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0,
/* 0x01a0 */ 56, 99,255,255, 56,165,255,255, 57, 64,255,255, 72, 0, 0,240,
/* 0x01b0 */ 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64,
/* 0x01c0 */ 125, 41, 72, 20, 97, 41, 0, 1, 78,128, 0, 32,141, 3, 0, 1,
/* 0x01d0 */ 157, 5, 0, 1,124, 9, 0, 64,125, 41, 74, 20, 65,162,255,213,
/* 0x01e0 */ 65,129,255,236, 56,224, 0, 1, 72, 0, 0, 20, 56,231,255,255,
/* 0x01f0 */ 125, 41, 72, 21, 65,162,255,189,124,231, 57, 21,125, 41, 72, 21,
/* 0x0200 */ 65,162,255,177,124,231, 57, 21,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0210 */ 65,162,255,161, 65,160,255,216, 57, 0, 0, 0, 52,231,255,253,
/* 0x0220 */ 84,231, 64, 46, 65,128, 0, 24,140, 67, 0, 1,124,234, 16,249,
/* 0x0230 */ 125, 74, 14,112, 65,130, 0, 0, 72, 0, 0, 12,125, 41, 72, 21,
/* 0x0240 */ 65,162,255,113,125, 8, 65, 21,125, 41, 72, 21, 65,162,255,101,
/* 0x01d0 */ 157, 5, 0, 1,124, 9, 0, 64,125, 41, 74, 20, 65,194,255,213,
/* 0x01e0 */ 65,225,255,236, 56,224, 0, 1, 72, 0, 0, 20, 56,231,255,255,
/* 0x01f0 */ 125, 41, 72, 21, 65,194,255,189,124,231, 57, 21,125, 41, 72, 21,
/* 0x0200 */ 65,194,255,177,124,231, 57, 21,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0210 */ 65,194,255,161, 65,192,255,216, 57, 0, 0, 0, 52,231,255,253,
/* 0x0220 */ 84,231, 64, 46, 65,192, 0, 24,140, 67, 0, 1,124,234, 16,249,
/* 0x0230 */ 125, 74, 14,112, 65,194, 0, 0, 72, 0, 0, 12,125, 41, 72, 21,
/* 0x0240 */ 65,194,255,113,125, 8, 65, 21,125, 41, 72, 21, 65,194,255,101,
/* 0x0250 */ 125, 8, 65, 21, 64,130, 0, 40, 57, 0, 0, 1,125, 41, 72, 21,
/* 0x0260 */ 65,162,255, 81,125, 8, 65, 21,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0270 */ 65,162,255, 65, 65,160,255,232, 57, 8, 0, 2, 32,234,250,255,
/* 0x0260 */ 65,194,255, 81,125, 8, 65, 21,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0270 */ 65,194,255, 65, 65,192,255,232, 57, 8, 0, 2, 32,234,250,255,
/* 0x0280 */ 57, 8, 0, 1,125, 8, 1,148,124,234, 42, 20,125, 9, 3,166,
/* 0x0290 */ 141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,
/* 0x0290 */ 141, 7, 0, 1,157, 5, 0, 1, 67, 32,255,248, 56,224, 1, 0,
/* 0x02a0 */ 124, 7, 41,236,124, 7, 26, 44, 75,255,255, 44,124, 0, 41,236,
/* 0x02b0 */ 125,168, 2,166, 40, 7, 0, 2, 64,130, 0,228,144,166, 0, 0,
/* 0x02c0 */ 124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255,
/* 0x02d0 */ 56,165,255,255, 57, 64,255,255, 72, 0, 0,180,124, 9, 0, 64,
/* 0x02e0 */ 125, 41, 72, 20, 76,162, 0, 32, 57, 32, 0, 1,125, 41, 28, 44,
/* 0x02e0 */ 125, 41, 72, 20, 76,226, 0, 32, 57, 32, 0, 1,125, 41, 28, 44,
/* 0x02f0 */ 56, 99, 0, 4,124, 9, 0, 64,125, 41, 73, 20, 78,128, 0, 32,
/* 0x0300 */ 141, 3, 0, 1,157, 5, 0, 1, 75,255,255,213, 65,129,255,244,
/* 0x0300 */ 141, 3, 0, 1,157, 5, 0, 1, 75,255,255,213, 65,225,255,244,
/* 0x0310 */ 56,224, 0, 1, 75,255,255,201,124,231, 57, 21, 75,255,255,193,
/* 0x0320 */ 65,160,255,244, 52,231,255,253, 57, 0, 0, 0, 65,128, 0, 20,
/* 0x0330 */ 140, 67, 0, 1, 84,231, 64, 46,124,234, 16,249, 65,130, 0, 0,
/* 0x0320 */ 65,192,255,244, 52,231,255,253, 57, 0, 0, 0, 65,192, 0, 20,
/* 0x0330 */ 140, 67, 0, 1, 84,231, 64, 46,124,234, 16,249, 65,194, 0, 0,
/* 0x0340 */ 75,255,255,157,125, 8, 65, 21, 75,255,255,149,125, 8, 65, 21,
/* 0x0350 */ 56,224, 0, 1, 64,130, 0, 28, 56,224, 0, 3, 57, 0, 0, 1,
/* 0x0360 */ 75,255,255,125,125, 8, 65, 21, 75,255,255,117, 65,160,255,244,
/* 0x0350 */ 56,224, 0, 1, 64,194, 0, 28, 56,224, 0, 3, 57, 0, 0, 1,
/* 0x0360 */ 75,255,255,125,125, 8, 65, 21, 75,255,255,117, 65,192,255,244,
/* 0x0370 */ 32, 74,242,255,125, 8, 57, 20,124,234, 42, 20,125, 9, 3,166,
/* 0x0380 */ 141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,
/* 0x0380 */ 141, 7, 0, 1,157, 5, 0, 1, 67, 32,255,248, 56,224, 1, 0,
/* 0x0390 */ 124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14,
/* 0x03a0 */ 64,130, 0, 32,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0,
/* 0x03a0 */ 64,130, 0, 0,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0,
/* 0x03b0 */ 124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 8,
/* 0x03c0 */ 136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0,
/* 0x03d0 */ 124, 99, 88, 48, 56, 99,241,124,124, 38, 11,120,124, 33, 26, 20,
@ -418,7 +418,7 @@ unsigned char stub_powerpc_darwin_macho_entry[8549] = {
/* 0x17b0 */ 65,128,255,240,124, 0, 4,172, 76, 0, 1, 44, 78,128, 0, 32,
/* 0x17c0 */ 124, 72, 2,166,128,130, 0, 8,124,137, 3,166,128,194, 0, 4,
/* 0x17d0 */ 136,226, 0, 12,124,164, 18, 20, 56,165, 0, 16,124,102, 18, 20,
/* 0x17e0 */ 56, 99, 0,192,140, 5,255,255,156, 3,255,255, 66, 0,255,248,
/* 0x17e0 */ 56, 99, 0,192,140, 5,255,255,156, 3,255,255, 67, 32,255,248,
/* 0x17f0 */ 127,233, 3,166, 56,162, 0,128,144,193,255,252, 56,193,255,252,
/* 0x1800 */ 56, 33,255,232, 78,128, 4, 32,127,232, 2,166, 75,255,255,181,
/* 0x1810 */ 72, 0, 0,128,102,105,108,101, 32,102,111,114,109, 97,116, 32,

View File

@ -1,5 +1,5 @@
/* powerpc-darwin.macho-fold.h
created from powerpc-darwin.macho-fold.bin, 1664 (0x680) bytes
created from powerpc-darwin.macho-fold.bin, 1832 (0x728) bytes
This file is part of the UPX executable compressor.
@ -31,22 +31,22 @@
*/
#define STUB_POWERPC_DARWIN_MACHO_FOLD_SIZE 1664
#define STUB_POWERPC_DARWIN_MACHO_FOLD_ADLER32 0x2e3a279d
#define STUB_POWERPC_DARWIN_MACHO_FOLD_CRC32 0xf61322eb
#define STUB_POWERPC_DARWIN_MACHO_FOLD_SIZE 1832
#define STUB_POWERPC_DARWIN_MACHO_FOLD_ADLER32 0xef088ea2
#define STUB_POWERPC_DARWIN_MACHO_FOLD_CRC32 0xb12113dd
unsigned char stub_powerpc_darwin_macho_fold[1664] = {
/* 0x0000 */ 72, 0, 0,105, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191,
/* 0x0010 */ 77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8,
unsigned char stub_powerpc_darwin_macho_fold[1832] = {
/* 0x0000 */ 72, 0, 0,105, 40, 6, 0,208, 76,194, 0, 32, 84,132,240,191,
/* 0x0010 */ 77,194, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8,
/* 0x0020 */ 124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252,
/* 0x0030 */ 124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80,
/* 0x0040 */ 125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32,
/* 0x0050 */ 132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220,
/* 0x0060 */ 66, 0,255,240, 78,128, 0, 32, 56, 33, 0, 24, 57, 32, 0, 0,
/* 0x0040 */ 125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 79, 64, 0, 32,
/* 0x0050 */ 132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,194,255,220,
/* 0x0060 */ 67, 32,255,240, 78,128, 0, 32, 56, 33, 0, 24, 57, 32, 0, 0,
/* 0x0070 */ 149, 33,255,252,124, 41, 11,120,125, 8, 2,166,128,159,255,248,
/* 0x0080 */ 124,100,248, 80,128,195, 0, 24, 40, 6, 8, 0, 65,129, 0, 8,
/* 0x0090 */ 56,192, 8, 0,124, 61, 11,120,124, 38, 8, 80,124, 37, 11,120,
/* 0x00a0 */ 56, 33,255,232,127,231,251,120, 72, 0, 4, 61,127,161,235,120,
/* 0x00a0 */ 56, 33,255,232,127,231,251,120, 72, 0, 4, 45,127,161,235,120,
/* 0x00b0 */ 128, 67, 0, 0,124, 73, 3,166,128, 67, 0,136,124, 79,241, 32,
/* 0x00c0 */ 128, 67, 0,140,124, 65, 3,166,128, 67, 0,144,124, 72, 3,166,
/* 0x00d0 */ 184,131, 0, 24,128, 3, 0, 8,128, 67, 0, 16,128, 99, 0, 20,
@ -55,89 +55,100 @@ unsigned char stub_powerpc_darwin_macho_fold[1664] = {
/* 0x0100 */ 68, 0, 0, 2, 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1,
/* 0x0110 */ 75,255,255,240, 56, 0, 0, 3, 75,255,255,232, 56, 0, 0, 5,
/* 0x0120 */ 75,255,255,224, 56, 0, 0, 6, 75,255,255,216, 56, 0, 0, 74,
/* 0x0130 */ 75,255,255,208,124, 8, 2,166,148, 33,255,240,144, 1, 0, 20,
/* 0x0140 */ 128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, 64,188, 0, 12,
/* 0x0150 */ 56, 96, 0,127, 75,255,255,185, 47,133, 0, 0, 65,158, 0, 28,
/* 0x0160 */ 124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1,152, 4, 0, 0,
/* 0x0170 */ 56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0,129, 35, 0, 4,
/* 0x0180 */ 124, 5, 0, 80,144, 3, 0, 0,128, 1, 0, 20,125, 41, 42, 20,
/* 0x0190 */ 124, 8, 3,166, 56, 33, 0, 16,145, 35, 0, 4, 78,128, 0, 32,
/* 0x01a0 */ 124, 8, 2,166,148, 33,255,192,144, 1, 0, 68,128, 4, 0, 0,
/* 0x01b0 */ 191,129, 0, 48, 47,128, 0, 0,124,159, 35,120,124,126, 27,120,
/* 0x01c0 */ 124,188, 43,120,124,221, 51,120, 65,158, 1, 36, 56,160, 0, 12,
/* 0x01d0 */ 127,195,243,120, 56,129, 0, 16, 75,255,255, 93,129, 33, 0, 16,
/* 0x01e0 */ 128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, 60, 0, 33, 88,
/* 0x01f0 */ 96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28,128, 30, 0, 0,
/* 0x0200 */ 47,128, 0, 0, 65,190, 0,232, 72, 0, 0, 12, 47,133, 0, 0,
/* 0x0210 */ 64,190, 0, 12, 56, 96, 0,127, 75,255,254,245,127, 5, 72, 64,
/* 0x0220 */ 65,185,255,244,128, 31, 0, 0,127,137, 0, 64, 65,189,255,232,
/* 0x0230 */ 128, 31, 0, 4, 64,152, 0,136,124,164, 43,120,128,126, 0, 4,
/* 0x0240 */ 124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24,145, 33, 0, 32,
/* 0x0250 */ 127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0, 64,190,255,184,
/* 0x0260 */ 128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0, 64,190,255,168,
/* 0x0270 */ 136,193, 0, 25, 49, 61,255,255,124, 9,233, 16,125, 38, 0,208,
/* 0x0280 */ 85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4,
/* 0x0290 */ 136,161, 0, 26,127,168, 3,166, 78,128, 0, 33,128, 30, 0, 4,
/* 0x02a0 */ 129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80,
/* 0x02b0 */ 144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120,
/* 0x02c0 */ 127,195,243,120, 75,255,254,113,129, 97, 0, 16,129, 63, 0, 0,
/* 0x02d0 */ 128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20,
/* 0x02e0 */ 144, 31, 0, 4,145, 63, 0, 0, 75,255,254,224,128, 1, 0, 68,
/* 0x02f0 */ 187,129, 0, 48,124, 8, 3,166, 56, 33, 0, 64, 78,128, 0, 32,
/* 0x0300 */ 124, 8, 2,166,148, 33,255,176,144, 1, 0, 84,128, 3, 0, 16,
/* 0x0310 */ 190, 65, 0, 24, 58,224, 0, 0,125,128, 0, 38,127,151, 0, 64,
/* 0x0320 */ 145,129, 0, 20,124,122, 27,120,124,146, 35,120,124,187, 43,120,
/* 0x0330 */ 124,211, 51,120,124,244, 59,120,125, 21, 67,120,125, 54, 75,120,
/* 0x0340 */ 59,195, 0, 28, 59, 0, 0, 0, 64,156, 1,124,129, 62, 0, 0,
/* 0x0350 */ 47,137, 0, 1, 64,190, 1, 48,129, 62, 0, 24,129,126, 0, 36,
/* 0x0360 */ 85, 61, 5, 62,127,139,234, 20, 46, 28, 0, 0,128, 30, 0, 28,
/* 0x0370 */ 145, 97, 0, 8,127, 41, 2, 20,145, 33, 0, 12,127,253, 72, 80,
/* 0x0380 */ 65,146, 0, 76, 47,155, 0, 0, 64,190, 0, 16, 47,139, 0, 0,
/* 0x0390 */ 56,192, 0, 18, 64,158, 0, 8, 56,192, 16, 18, 47,139, 0, 0,
/* 0x03a0 */ 126,103,155,120, 64,158, 0, 8, 56,224,255,255,129, 30, 0, 32,
/* 0x03b0 */ 127,227,251,120,125, 8,146, 20,127,132,227,120, 56,160, 0, 3,
/* 0x03c0 */ 75,255,253, 53,127,159, 24, 0, 64,158, 0,124, 47,155, 0, 0,
/* 0x03d0 */ 65,158, 0, 52,128, 30, 0, 36, 47,128, 0, 0, 65,158, 0, 40,
/* 0x03e0 */ 128, 30, 0, 32, 47,128, 0, 0, 64,158, 0, 8,147,244, 0, 0,
/* 0x03f0 */ 127, 99,219,120, 56,129, 0, 8,126,165,171,120,126,198,179,120,
/* 0x0400 */ 75,255,253,161,124, 28, 0,208,112, 29, 15,255,125, 63,226, 20,
/* 0x0410 */ 65,130, 0, 24,127,169, 3,166, 56, 0, 0, 0,152, 9, 0, 0,
/* 0x0420 */ 57, 41, 0, 1, 66, 0,255,248, 65,178, 0, 36,128,190, 0, 44,
/* 0x0430 */ 127,227,251,120,127,132,227,120, 75,255,252,245, 47,131, 0, 0,
/* 0x0440 */ 65,190, 0, 12, 56, 96, 0,127, 75,255,252,197,124, 28,234, 20,
/* 0x0450 */ 127,255, 2, 20,127,159,200, 64, 64,188, 0, 84,128,190, 0, 44,
/* 0x0460 */ 124,159,200, 80,127,227,251,120, 56,192, 16, 18, 56,224,255,255,
/* 0x0470 */ 57, 0, 0, 0, 75,255,252,129,127,159, 24, 0, 65,190, 0, 48,
/* 0x0480 */ 75,255,255,196, 56, 9,255,252, 43,128, 0, 1, 65,157, 0, 32,
/* 0x0490 */ 128, 30, 0, 8, 47,128, 0, 1, 64,190, 0, 20,128, 30, 0, 12,
/* 0x04a0 */ 47,128, 0, 40, 64,190, 0, 8, 58,254, 0, 16,128, 26, 0, 16,
/* 0x04b0 */ 59, 24, 0, 1,127,152, 0, 64,128, 30, 0, 4,127,222, 2, 20,
/* 0x04c0 */ 75,255,254,136,128, 1, 0, 84,129,129, 0, 20,126,227,187,120,
/* 0x04d0 */ 124, 8, 3,166,186, 65, 0, 24,125,128,129, 32, 56, 33, 0, 80,
/* 0x04e0 */ 78,128, 0, 32,148, 33,255,192,144,129, 0, 8,124, 8, 2,166,
/* 0x04f0 */ 129, 97, 0, 8,144, 1, 0, 68, 57,107,255,232, 56, 3, 0, 24,
/* 0x0500 */ 145, 97, 0, 16,144, 1, 0, 20,191, 97, 0, 44,128, 3, 0, 24,
/* 0x0510 */ 129, 65, 0, 20,125, 60, 75,120,129, 33, 0, 16,124,191, 43,120,
/* 0x0520 */ 125, 27, 67,120,124,253, 59,120,124,229, 59,120, 56, 97, 0, 16,
/* 0x0530 */ 56,129, 0, 24,124,222, 51,120, 56,192, 0, 0,145, 65, 0, 36,
/* 0x0540 */ 144, 1, 0, 24,145, 33, 0, 32,147,225, 0, 28, 75,255,252, 85,
/* 0x0550 */ 127,105,219,120,127,135,227,120,127,227,251,120,127,168,235,120,
/* 0x0560 */ 56,128, 0, 0, 56,161, 0, 32, 56,192,255,255, 75,255,253,149,
/* 0x0570 */ 129, 95, 0, 16, 57, 96, 0, 0,127,139, 80, 64,124,124, 27,120,
/* 0x0580 */ 59, 96, 0, 0, 57, 63, 0, 28, 64,156, 0,224,128, 9, 0, 0,
/* 0x0590 */ 57,107, 0, 1, 47,128, 0, 14,127, 11, 80, 64, 64,190, 0,192,
/* 0x05a0 */ 128,105, 0, 8, 56,128, 0, 0,124,105, 26, 20, 56,160, 0, 0,
/* 0x05b0 */ 75,255,251,109,124,125, 27,121, 65,128, 0, 32,127,163,235,120,
/* 0x05c0 */ 127,228,251,120,127,197,243,120,127,102,219,120, 75,255,251, 25,
/* 0x05d0 */ 127,158, 24, 0, 65,190, 0, 20, 56, 96, 0,127, 75,255,251, 49,
/* 0x05e0 */ 131,105, 0, 8, 75,255,255,216,128, 31, 0, 0, 61, 32,202,254,
/* 0x05f0 */ 97, 41,186,190,127,128, 72, 0, 64,158, 0, 52,129, 95, 0, 4,
/* 0x0600 */ 57, 96, 0, 0,127,139, 80, 64, 57, 63, 0, 8, 64,156, 0, 32,
/* 0x0610 */ 128, 9, 0, 0, 57,107, 0, 1, 47,128, 0, 18,127, 11, 80, 64,
/* 0x0620 */ 65,190,255,192, 57, 41, 0, 20, 65,152,255,232,127,227,251,120,
/* 0x0630 */ 127,100,219,120, 56,160, 0, 0,127,166,235,120, 56,224, 0, 0,
/* 0x0640 */ 57, 0, 0, 0, 57, 32, 0, 0, 75,255,252,185,124,124, 27,120,
/* 0x0650 */ 127,163,235,120, 75,255,250,209, 72, 0, 0, 16,128, 9, 0, 4,
/* 0x0660 */ 125, 41, 2, 20, 65,152,255, 40,128, 1, 0, 68,127,131,227,120,
/* 0x0670 */ 124, 8, 3,166,187, 97, 0, 44, 56, 33, 0, 64, 78,128, 0, 32
/* 0x0130 */ 75,255,255,208,129, 35, 0, 0,129, 67, 0, 4,127,137, 40, 64,
/* 0x0140 */ 65,220, 0, 20, 57, 5, 0, 1, 57, 32, 0, 0,125, 9, 3,166,
/* 0x0150 */ 72, 0, 0, 24,148, 33,255,240,124, 8, 2,166, 56, 96, 0,127,
/* 0x0160 */ 144, 1, 0, 20, 75,255,255,169, 66, 64, 0, 20,125, 10, 72,174,
/* 0x0170 */ 125, 4, 73,174, 57, 41, 0, 1, 75,255,255,240,129, 35, 0, 4,
/* 0x0180 */ 125, 41, 42, 20,145, 35, 0, 4,129, 35, 0, 0,124,165, 72, 80,
/* 0x0190 */ 144,163, 0, 0, 78,128, 0, 32,148, 33,255,192,125,128, 0, 38,
/* 0x01a0 */ 124, 8, 2,166,145,129, 0, 44, 46, 6, 0, 0,144, 1, 0, 68,
/* 0x01b0 */ 191,129, 0, 48,124,126, 27,120,124,159, 35,120,124,189, 43,120,
/* 0x01c0 */ 124,220, 51,120,129, 63, 0, 0, 47,137, 0, 0, 65,222, 1, 16,
/* 0x01d0 */ 56,160, 0, 12, 56,129, 0, 8,127,195,243,120, 75,255,255, 89,
/* 0x01e0 */ 129, 65, 0, 8,129, 33, 0, 12, 47,138, 0, 0, 64,254, 0, 32,
/* 0x01f0 */ 109, 36, 33, 88, 47,132, 80, 85, 64,158, 0, 28,129, 62, 0, 0,
/* 0x0200 */ 47,137, 0, 0, 65,254, 0,216, 72, 0, 0, 12, 47,137, 0, 0,
/* 0x0210 */ 64,254, 0, 12, 56, 96, 0,127, 75,255,254,245,126,138, 72, 64,
/* 0x0220 */ 65,212,255,244,129, 31, 0, 0,127,138, 64, 64, 65,221,255,232,
/* 0x0230 */ 128,159, 0, 4, 64,213, 0,124,124,133, 35,120,145, 65, 0, 20,
/* 0x0240 */ 56,193, 0, 20,127,169, 3,166,136,225, 0, 16,125, 36, 75,120,
/* 0x0250 */ 128,126, 0, 4, 78,128, 4, 33, 47,131, 0, 0, 64,222,255,184,
/* 0x0260 */ 128,129, 0, 8,129, 33, 0, 20,127,132, 72, 0, 64,222,255,168,
/* 0x0270 */ 136,193, 0, 17, 47,134, 0, 0, 65,222, 0, 24, 65,210, 0, 20,
/* 0x0280 */ 136,161, 0, 18,127,137, 3,166,128,127, 0, 4, 78,128, 4, 33,
/* 0x0290 */ 129, 33, 0, 12,129, 94, 0, 4,125, 74, 74, 20,145, 94, 0, 4,
/* 0x02a0 */ 129, 94, 0, 0,125, 41, 80, 80,145, 62, 0, 0, 72, 0, 0, 16,
/* 0x02b0 */ 125, 37, 75,120,127,195,243,120, 75,255,254,125,129, 33, 0, 8,
/* 0x02c0 */ 129, 95, 0, 4,125, 74, 74, 20,145, 95, 0, 4,129, 95, 0, 0,
/* 0x02d0 */ 125, 41, 80, 80,145, 63, 0, 0, 75,255,254,236,129,129, 0, 44,
/* 0x02e0 */ 57, 97, 0, 64,125,144,129, 32, 72, 0, 3,164,148, 33,255,144,
/* 0x02f0 */ 125,128, 0, 38,124, 8, 2,166,145,129, 0, 44, 46, 5, 0, 0,
/* 0x0300 */ 144, 1, 0,116,190, 1, 0, 48,124,122, 27,120,124,152, 35,120,
/* 0x0310 */ 124,217, 51,120,124,246, 59,120,125, 21, 67,120,125, 52, 75,120,
/* 0x0320 */ 59,227, 0, 28, 59,128, 0, 0, 59, 96, 0, 0,124,183, 43,120,
/* 0x0330 */ 58, 96, 0, 0,129, 58, 0, 16,127,156, 72, 64, 64,220, 1,132,
/* 0x0340 */ 129, 63, 0, 0, 43,137, 0, 1, 64,254, 1, 52,131,191, 0, 24,
/* 0x0350 */ 130, 95, 0, 28,129, 63, 0, 36, 87,177, 0, 38,147,161, 0, 12,
/* 0x0360 */ 126, 93,146, 20, 87,189, 5, 62,126, 29, 74, 20,145, 33, 0, 8,
/* 0x0370 */ 45,144, 0, 0, 65,206, 1, 64, 47,137, 0, 0, 64,242, 0, 20,
/* 0x0380 */ 65,222, 0, 32,127, 39,203,120, 56,192, 0, 18, 72, 0, 0, 28,
/* 0x0390 */ 65,222, 0, 16,127, 39,203,120, 56,192, 16, 18, 72, 0, 0, 12,
/* 0x03a0 */ 56,192, 16, 18, 56,224,255,255,129, 31, 0, 32, 56,160, 0, 3,
/* 0x03b0 */ 126, 4,131,120,126, 35,139,120,125, 24, 66, 20, 75,255,253, 57,
/* 0x03c0 */ 127,145, 24, 0, 65,254, 0, 12, 56, 96, 0,127, 75,255,253, 65,
/* 0x03d0 */ 65,210, 0, 52,129, 63, 0, 36, 47,137, 0, 0, 65,222, 0, 40,
/* 0x03e0 */ 129, 63, 0, 32, 47,137, 0, 0, 64,222, 0, 8,146, 54, 0, 0,
/* 0x03f0 */ 126,134,163,120,126,165,171,120, 56,129, 0, 8,126,227,187,120,
/* 0x0400 */ 75,255,253,153,127,176, 0,208,115,189, 15,255, 65,194, 0, 28,
/* 0x0410 */ 127,169, 3,166,125, 81,130, 20, 57, 32, 0, 0,126,106, 73,174,
/* 0x0420 */ 57, 41, 0, 1, 66, 0,255,248, 65,238, 0, 28,128,191, 0, 44,
/* 0x0430 */ 126, 4,131,120,126, 35,139,120, 75,255,252,245, 47,131, 0, 0,
/* 0x0440 */ 64,222,255,136,127,176,234, 20,127,209,234, 20,127,146,240, 64,
/* 0x0450 */ 64,253, 0, 84,128,191, 0, 44, 57, 0, 0, 0, 56,224,255,255,
/* 0x0460 */ 56,192, 16, 18,124,158,144, 80,127,195,243,120, 75,255,252,137,
/* 0x0470 */ 127,158, 24, 0, 65,254, 0, 48, 75,255,255, 80, 57, 41,255,252,
/* 0x0480 */ 43,137, 0, 1, 65,253, 0, 32,129, 63, 0, 8, 47,137, 0, 1,
/* 0x0490 */ 64,254, 0, 20,129, 63, 0, 12, 47,137, 0, 40, 64,254, 0, 8,
/* 0x04a0 */ 59,127, 0, 16,129, 63, 0, 4, 59,156, 0, 1,127,255, 74, 20,
/* 0x04b0 */ 75,255,254,132, 64,242,255, 32, 59,160, 0, 0, 75,255,255,136,
/* 0x04c0 */ 129,129, 0, 44, 57, 97, 0,112,127, 99,219,120,125,129,129, 32,
/* 0x04d0 */ 72, 0, 1,140,148, 33,255,176,124, 8, 2,166,144,129, 0, 40,
/* 0x04e0 */ 56,129, 0, 16,191, 97, 0, 60,125, 61, 75,120, 57, 35, 0, 24,
/* 0x04f0 */ 145, 33, 0, 28,124,191, 43,120,124,254, 59,120,129, 33, 0, 40,
/* 0x0500 */ 125, 27, 67,120,124,220, 51,120,144, 1, 0, 84, 56,192, 0, 0,
/* 0x0510 */ 57, 41,255,232,129, 65, 0, 28,145, 33, 0, 24,129, 35, 0, 24,
/* 0x0520 */ 56, 97, 0, 24,144,161, 0, 20,124,229, 59,120,145, 33, 0, 16,
/* 0x0530 */ 129, 33, 0, 24,145, 65, 0, 12,145, 33, 0, 8, 75,255,252, 93,
/* 0x0540 */ 127,105,219,120,127,167,235,120,127,200,243,120, 56,192,255,255,
/* 0x0550 */ 56,161, 0, 8, 56,128, 0, 0,127,227,251,120, 75,255,253,145,
/* 0x0560 */ 129, 95, 0, 16, 57, 63, 0, 28,124,125, 27,120, 57, 74, 0, 1,
/* 0x0570 */ 125, 73, 3,166, 66, 64, 0,212,129, 73, 0, 0, 47,138, 0, 14,
/* 0x0580 */ 64,254, 0,188,128,105, 0, 8, 56,160, 0, 0, 56,128, 0, 0,
/* 0x0590 */ 124,105, 26, 20, 75,255,251,137,124,126, 27,121, 65,192, 0, 96,
/* 0x05a0 */ 63, 96,202,254, 59,160, 0, 0, 99,123,186,190, 72, 0, 0, 52,
/* 0x05b0 */ 129, 63, 0, 0,127,137,216, 0, 64,222, 0, 84,129, 63, 0, 4,
/* 0x05c0 */ 57, 95, 0, 8, 57, 41, 0, 1,125, 41, 3,166, 66, 64, 0, 64,
/* 0x05d0 */ 129, 42, 0, 0, 47,137, 0, 18, 64,254, 0, 44,131,170, 0, 8,
/* 0x05e0 */ 127,166,235,120,127,133,227,120,127,228,251,120,127,195,243,120,
/* 0x05f0 */ 75,255,250,245,127,131,224, 0, 65,254,255,184, 56, 96, 0,127,
/* 0x0600 */ 75,255,251, 13, 57, 74, 0, 20, 75,255,255,196,127,164,235,120,
/* 0x0610 */ 57, 32, 0, 0, 57, 0, 0, 0, 56,224, 0, 0,127,198,243,120,
/* 0x0620 */ 56,160, 0, 0,127,227,251,120, 75,255,252,197,124,125, 27,120,
/* 0x0630 */ 127,195,243,120, 75,255,250,241, 72, 0, 0, 16,129, 73, 0, 4,
/* 0x0640 */ 125, 41, 82, 20, 75,255,255, 48, 57, 97, 0, 80,127,163,235,120,
/* 0x0650 */ 72, 0, 0, 56,129,203,255,184,129,235,255,188,130, 11,255,192,
/* 0x0660 */ 130, 43,255,196,130, 75,255,200,130,107,255,204,130,139,255,208,
/* 0x0670 */ 130,171,255,212,130,203,255,216,130,235,255,220,131, 11,255,224,
/* 0x0680 */ 131, 43,255,228,131, 75,255,232,131,107,255,236,131,139,255,240,
/* 0x0690 */ 131,171,255,244,131,203,255,248,128, 11, 0, 4,131,235,255,252,
/* 0x06a0 */ 124, 8, 3,166,125, 97, 91,120, 78,128, 0, 32, 0, 0, 0, 60,
/* 0x06b0 */ 0, 0, 0, 0, 1,122, 82, 0, 4,124, 65, 1, 27, 12, 1, 0,
/* 0x06c0 */ 13, 11, 17, 65,127,142, 18,143, 17,144, 16,145, 15,146, 14,147,
/* 0x06d0 */ 13,148, 12,149, 11,150, 10,151, 9,152, 8,153, 7,154, 6,155,
/* 0x06e0 */ 5,156, 4,157, 3,158, 2,159, 1, 0, 0, 0, 0, 0, 0, 56,
/* 0x06f0 */ 0, 0, 0, 68,255,255,255, 96, 0, 0, 0, 88, 0, 65,206, 65,
/* 0x0700 */ 207, 65,208, 65,209, 65,210, 65,211, 65,212, 65,213, 65,214, 65,
/* 0x0710 */ 215, 65,216, 65,217, 65,218, 65,219, 65,220, 65,221, 65,222, 66,
/* 0x0720 */ 223, 65, 6, 65, 65, 13, 1, 0
};

View File

@ -32,69 +32,69 @@
#define STUB_POWERPC_LINUX_ELF_ENTRY_SIZE 8867
#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0x771bfcd3
#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0x9654df78
#define STUB_POWERPC_LINUX_ELF_ENTRY_ADLER32 0x3a7703f2
#define STUB_POWERPC_LINUX_ELF_ENTRY_CRC32 0x7ce00241
unsigned char stub_powerpc_linux_elf_entry[8867] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 25, 36, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40,
/* 0x0030 */ 0, 24, 0, 21, 72, 0, 0,129,124, 0, 41,236,125,168, 2,166,
/* 0x0020 */ 0, 0, 26,112, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40,
/* 0x0030 */ 0, 24, 0, 21, 72, 0, 0, 1,124, 0, 41,236,125,168, 2,166,
/* 0x0040 */ 40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20,
/* 0x0050 */ 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255,
/* 0x0060 */ 57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44,
/* 0x0070 */ 56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1,
/* 0x0080 */ 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64,
/* 0x0090 */ 125, 41, 74, 20, 65,162,255,213, 65,129,255,236, 56,224, 0, 1,
/* 0x00a0 */ 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,162,255,189,
/* 0x00b0 */ 124,231, 57, 20,125, 41, 72, 21, 65,162,255,177,124,231, 57, 20,
/* 0x00c0 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161, 65,160,255,216,
/* 0x00d0 */ 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,128, 0, 32,
/* 0x00e0 */ 140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,130, 0, 0,
/* 0x00f0 */ 112, 66, 0, 1, 65,162, 0, 80, 72, 0, 0, 20,124, 9, 0, 64,
/* 0x0100 */ 125, 41, 74, 20, 65,162,255,101, 65,161, 0, 60, 57, 0, 0, 1,
/* 0x0110 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 81, 65,161, 0, 40,
/* 0x0120 */ 125, 41, 72, 21, 65,162,255, 69,125, 8, 65, 20,124, 9, 0, 64,
/* 0x0130 */ 125, 41, 74, 20, 65,162,255, 53, 65,160,255,232, 57, 8, 0, 2,
/* 0x0140 */ 72, 0, 0, 16,125, 41, 72, 21, 65,162,255, 33,125, 8, 65, 20,
/* 0x0090 */ 125, 41, 74, 20, 65,194,255,213, 65,225,255,236, 56,224, 0, 1,
/* 0x00a0 */ 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,194,255,189,
/* 0x00b0 */ 124,231, 57, 20,125, 41, 72, 21, 65,194,255,177,124,231, 57, 20,
/* 0x00c0 */ 124, 9, 0, 64,125, 41, 74, 20, 65,194,255,161, 65,192,255,216,
/* 0x00d0 */ 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,192, 0, 32,
/* 0x00e0 */ 140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,194, 0, 0,
/* 0x00f0 */ 112, 66, 0, 1, 65,226, 0, 80, 72, 0, 0, 20,124, 9, 0, 64,
/* 0x0100 */ 125, 41, 74, 20, 65,194,255,101, 65,225, 0, 60, 57, 0, 0, 1,
/* 0x0110 */ 124, 9, 0, 64,125, 41, 74, 20, 65,194,255, 81, 65,225, 0, 40,
/* 0x0120 */ 125, 41, 72, 21, 65,194,255, 69,125, 8, 65, 20,124, 9, 0, 64,
/* 0x0130 */ 125, 41, 74, 20, 65,194,255, 53, 65,192,255,232, 57, 8, 0, 2,
/* 0x0140 */ 72, 0, 0, 16,125, 41, 72, 21, 65,194,255, 33,125, 8, 65, 20,
/* 0x0150 */ 32,234,250,255, 57, 8, 0, 2,125, 8, 1,148,124,234, 42, 20,
/* 0x0160 */ 125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248,
/* 0x0160 */ 125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 67, 32,255,248,
/* 0x0170 */ 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, 75,255,255, 16,
/* 0x0180 */ 124, 0, 41,236,125,168, 2,166, 40, 7, 0, 5, 64,130, 1, 32,
/* 0x0190 */ 144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0,
/* 0x01a0 */ 56, 99,255,255, 56,165,255,255, 57, 64,255,255, 72, 0, 0,240,
/* 0x01b0 */ 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64,
/* 0x01c0 */ 125, 41, 72, 20, 97, 41, 0, 1, 78,128, 0, 32,141, 3, 0, 1,
/* 0x01d0 */ 157, 5, 0, 1,124, 9, 0, 64,125, 41, 74, 20, 65,162,255,213,
/* 0x01e0 */ 65,129,255,236, 56,224, 0, 1, 72, 0, 0, 20, 56,231,255,255,
/* 0x01f0 */ 125, 41, 72, 21, 65,162,255,189,124,231, 57, 21,125, 41, 72, 21,
/* 0x0200 */ 65,162,255,177,124,231, 57, 21,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0210 */ 65,162,255,161, 65,160,255,216, 57, 0, 0, 0, 52,231,255,253,
/* 0x0220 */ 84,231, 64, 46, 65,128, 0, 24,140, 67, 0, 1,124,234, 16,249,
/* 0x0230 */ 125, 74, 14,112, 65,130, 0, 0, 72, 0, 0, 12,125, 41, 72, 21,
/* 0x0240 */ 65,162,255,113,125, 8, 65, 21,125, 41, 72, 21, 65,162,255,101,
/* 0x01d0 */ 157, 5, 0, 1,124, 9, 0, 64,125, 41, 74, 20, 65,194,255,213,
/* 0x01e0 */ 65,225,255,236, 56,224, 0, 1, 72, 0, 0, 20, 56,231,255,255,
/* 0x01f0 */ 125, 41, 72, 21, 65,194,255,189,124,231, 57, 21,125, 41, 72, 21,
/* 0x0200 */ 65,194,255,177,124,231, 57, 21,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0210 */ 65,194,255,161, 65,192,255,216, 57, 0, 0, 0, 52,231,255,253,
/* 0x0220 */ 84,231, 64, 46, 65,192, 0, 24,140, 67, 0, 1,124,234, 16,249,
/* 0x0230 */ 125, 74, 14,112, 65,194, 0, 0, 72, 0, 0, 12,125, 41, 72, 21,
/* 0x0240 */ 65,194,255,113,125, 8, 65, 21,125, 41, 72, 21, 65,194,255,101,
/* 0x0250 */ 125, 8, 65, 21, 64,130, 0, 40, 57, 0, 0, 1,125, 41, 72, 21,
/* 0x0260 */ 65,162,255, 81,125, 8, 65, 21,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0270 */ 65,162,255, 65, 65,160,255,232, 57, 8, 0, 2, 32,234,250,255,
/* 0x0260 */ 65,194,255, 81,125, 8, 65, 21,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0270 */ 65,194,255, 65, 65,192,255,232, 57, 8, 0, 2, 32,234,250,255,
/* 0x0280 */ 57, 8, 0, 1,125, 8, 1,148,124,234, 42, 20,125, 9, 3,166,
/* 0x0290 */ 141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,
/* 0x0290 */ 141, 7, 0, 1,157, 5, 0, 1, 67, 32,255,248, 56,224, 1, 0,
/* 0x02a0 */ 124, 7, 41,236,124, 7, 26, 44, 75,255,255, 44,124, 0, 41,236,
/* 0x02b0 */ 125,168, 2,166, 40, 7, 0, 2, 64,130, 0,228,144,166, 0, 0,
/* 0x02c0 */ 124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255,
/* 0x02d0 */ 56,165,255,255, 57, 64,255,255, 72, 0, 0,180,124, 9, 0, 64,
/* 0x02e0 */ 125, 41, 72, 20, 76,162, 0, 32, 57, 32, 0, 1,125, 41, 28, 44,
/* 0x02e0 */ 125, 41, 72, 20, 76,226, 0, 32, 57, 32, 0, 1,125, 41, 28, 44,
/* 0x02f0 */ 56, 99, 0, 4,124, 9, 0, 64,125, 41, 73, 20, 78,128, 0, 32,
/* 0x0300 */ 141, 3, 0, 1,157, 5, 0, 1, 75,255,255,213, 65,129,255,244,
/* 0x0300 */ 141, 3, 0, 1,157, 5, 0, 1, 75,255,255,213, 65,225,255,244,
/* 0x0310 */ 56,224, 0, 1, 75,255,255,201,124,231, 57, 21, 75,255,255,193,
/* 0x0320 */ 65,160,255,244, 52,231,255,253, 57, 0, 0, 0, 65,128, 0, 20,
/* 0x0330 */ 140, 67, 0, 1, 84,231, 64, 46,124,234, 16,249, 65,130, 0, 0,
/* 0x0320 */ 65,192,255,244, 52,231,255,253, 57, 0, 0, 0, 65,192, 0, 20,
/* 0x0330 */ 140, 67, 0, 1, 84,231, 64, 46,124,234, 16,249, 65,194, 0, 0,
/* 0x0340 */ 75,255,255,157,125, 8, 65, 21, 75,255,255,149,125, 8, 65, 21,
/* 0x0350 */ 56,224, 0, 1, 64,130, 0, 28, 56,224, 0, 3, 57, 0, 0, 1,
/* 0x0360 */ 75,255,255,125,125, 8, 65, 21, 75,255,255,117, 65,160,255,244,
/* 0x0350 */ 56,224, 0, 1, 64,194, 0, 28, 56,224, 0, 3, 57, 0, 0, 1,
/* 0x0360 */ 75,255,255,125,125, 8, 65, 21, 75,255,255,117, 65,192,255,244,
/* 0x0370 */ 32, 74,242,255,125, 8, 57, 20,124,234, 42, 20,125, 9, 3,166,
/* 0x0380 */ 141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,
/* 0x0380 */ 141, 7, 0, 1,157, 5, 0, 1, 67, 32,255,248, 56,224, 1, 0,
/* 0x0390 */ 124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, 40, 7, 0, 14,
/* 0x03a0 */ 64,130, 0, 32,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0,
/* 0x03a0 */ 64,130, 0, 0,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0,
/* 0x03b0 */ 124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 8,
/* 0x03c0 */ 136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0,
/* 0x03d0 */ 124, 99, 88, 48, 56, 99,241,124,124, 38, 11,120,124, 33, 26, 20,
@ -423,7 +423,7 @@ unsigned char stub_powerpc_linux_elf_entry[8867] = {
/* 0x1800 */ 0, 2,127,200, 2,166, 57, 0, 0, 0, 56,224,255,255,128,126,
/* 0x1810 */ 0, 4, 56,192, 0, 50, 56,160, 0, 7, 56,128, 16, 0,124, 99,
/* 0x1820 */ 242, 20, 56, 0, 0, 90, 56, 99, 16, 11, 84, 99, 0, 38, 68, 0,
/* 0x1830 */ 0, 2, 65,131, 0, 0,127,233, 3,166,128, 30, 0, 0,136,254,
/* 0x1830 */ 0, 2, 65,195, 0, 0,127,233, 3,166,128, 30, 0, 0,136,254,
/* 0x1840 */ 0, 8, 56,193, 0,124,144, 1, 0,124,124,101, 27,120,124,104,
/* 0x1850 */ 3,166,128,158, 0, 4, 56,126, 0, 12, 56, 33,255,232, 78,128,
/* 0x1860 */ 4, 32,148, 33,255,128,188, 65, 0, 4,127,232, 2,166, 75,255,

View File

@ -1,5 +1,5 @@
/* powerpc-linux.elf-fold.h
created from powerpc-linux.elf-fold.bin, 1948 (0x79c) bytes
created from powerpc-linux.elf-fold.bin, 2095 (0x82f) bytes
This file is part of the UPX executable compressor.
@ -31,131 +31,140 @@
*/
#define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 1948
#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0x5d84765f
#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0x99711a49
#define STUB_POWERPC_LINUX_ELF_FOLD_SIZE 2095
#define STUB_POWERPC_LINUX_ELF_FOLD_ADLER32 0x5e78d9b5
#define STUB_POWERPC_LINUX_ELF_FOLD_CRC32 0xa9d9520d
unsigned char stub_powerpc_linux_elf_fold[1948] = {
unsigned char stub_powerpc_linux_elf_fold[2095] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 2, 0, 20, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 40,
/* 0x0030 */ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0,
/* 0x0040 */ 0, 16, 0, 0, 0, 0, 7,156, 0, 0, 7,156, 0, 0, 0, 5,
/* 0x0050 */ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,156, 0, 0, 0, 0,
/* 0x0040 */ 0, 16, 0, 0, 0, 0, 8, 47, 0, 0, 8, 48, 0, 0, 0, 5,
/* 0x0050 */ 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 8, 47, 0, 0, 0, 0,
/* 0x0060 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 72, 0, 0,125, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191,
/* 0x0090 */ 77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8,
/* 0x0080 */ 72, 0, 0,125, 40, 6, 0,208, 76,194, 0, 32, 84,132,240,191,
/* 0x0090 */ 77,194, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8,
/* 0x00a0 */ 124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252,
/* 0x00b0 */ 124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80,
/* 0x00c0 */ 125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32,
/* 0x00d0 */ 132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220,
/* 0x00e0 */ 66, 0,255,240, 78,128, 0, 32,128, 73, 0, 0, 57, 41, 0, 4,
/* 0x00f0 */ 47,130, 0, 0, 64,158,255,244, 78,128, 0, 32, 56, 33, 0, 24,
/* 0x00c0 */ 125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 79, 64, 0, 32,
/* 0x00d0 */ 132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,194,255,220,
/* 0x00e0 */ 67, 32,255,240, 78,128, 0, 32,128, 73, 0, 0, 57, 41, 0, 4,
/* 0x00f0 */ 47,130, 0, 0, 64,254,255,244, 78,128, 0, 32, 56, 33, 0, 24,
/* 0x0100 */ 125, 8, 2,166,129, 33, 0, 0, 75,255,255,225, 75,255,255,221,
/* 0x0110 */ 128,159,255,248, 85, 30, 0, 38,127,231,251,120,127,164,248, 80,
/* 0x0120 */ 56,161,248, 0, 59,189,255,248, 56,132,255,140, 56,125, 0,116,
/* 0x0130 */ 56, 33,247,232,128,195, 0, 24, 72, 0, 5, 13,124,127, 27,120,
/* 0x0130 */ 56, 33,247,232,128,195, 0, 24, 72, 0, 4,221,124,127, 27,120,
/* 0x0140 */ 127,163,235,120,124,157,240, 80, 72, 0, 0, 81,127,232, 3,166,
/* 0x0150 */ 184, 65, 8, 28,128, 33, 8, 24, 78,128, 0, 32, 56, 0, 0, 90,
/* 0x0160 */ 68, 0, 0, 2, 64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32,
/* 0x0160 */ 68, 0, 0, 2, 64,227, 0, 8, 56, 96,255,255, 78,128, 0, 32,
/* 0x0170 */ 56, 0, 0, 1, 75,255,255,236, 56, 0, 0, 3, 75,255,255,228,
/* 0x0180 */ 56, 0, 0, 5, 75,255,255,220, 56, 0, 0, 6, 75,255,255,212,
/* 0x0190 */ 56, 0, 0,125, 75,255,255,204, 56, 0, 0, 91, 75,255,255,196,
/* 0x01a0 */ 56, 0, 0, 45, 75,255,255,188,124, 8, 2,166,148, 33,255,240,
/* 0x01b0 */ 144, 1, 0, 20,128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64,
/* 0x01c0 */ 64,188, 0, 12, 56, 96, 0,127, 75,255,255,169, 47,133, 0, 0,
/* 0x01d0 */ 65,158, 0, 28,124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1,
/* 0x01e0 */ 152, 4, 0, 0, 56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0,
/* 0x01f0 */ 129, 35, 0, 4,124, 5, 0, 80,144, 3, 0, 0,128, 1, 0, 20,
/* 0x0200 */ 125, 41, 42, 20,124, 8, 3,166, 56, 33, 0, 16,145, 35, 0, 4,
/* 0x0210 */ 78,128, 0, 32,124, 8, 2,166,148, 33,255,192,144, 1, 0, 68,
/* 0x0220 */ 128, 4, 0, 0,191,129, 0, 48, 47,128, 0, 0,124,159, 35,120,
/* 0x0230 */ 124,126, 27,120,124,188, 43,120,124,221, 51,120, 65,158, 1, 36,
/* 0x0240 */ 56,160, 0, 12,127,195,243,120, 56,129, 0, 16, 75,255,255, 93,
/* 0x0250 */ 129, 33, 0, 16,128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36,
/* 0x0260 */ 60, 0, 33, 88, 96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28,
/* 0x0270 */ 128, 30, 0, 0, 47,128, 0, 0, 65,190, 0,232, 72, 0, 0, 12,
/* 0x0280 */ 47,133, 0, 0, 64,190, 0, 12, 56, 96, 0,127, 75,255,254,229,
/* 0x0290 */ 127, 5, 72, 64, 65,185,255,244,128, 31, 0, 0,127,137, 0, 64,
/* 0x02a0 */ 65,189,255,232,128, 31, 0, 4, 64,152, 0,136,124,164, 43,120,
/* 0x02b0 */ 128,126, 0, 4,124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24,
/* 0x02c0 */ 145, 33, 0, 32,127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0,
/* 0x02d0 */ 64,190,255,184,128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0,
/* 0x02e0 */ 64,190,255,168,136,193, 0, 25, 49, 61,255,255,124, 9,233, 16,
/* 0x02f0 */ 125, 38, 0,208, 85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20,
/* 0x0300 */ 128,127, 0, 4,136,161, 0, 26,127,168, 3,166, 78,128, 0, 33,
/* 0x0310 */ 128, 30, 0, 4,129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20,
/* 0x0320 */ 125, 43, 72, 80,144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16,
/* 0x0330 */ 124, 4, 3,120,127,195,243,120, 75,255,254,113,129, 97, 0, 16,
/* 0x0340 */ 129, 63, 0, 0,128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0,
/* 0x0350 */ 124, 0, 90, 20,144, 31, 0, 4,145, 63, 0, 0, 75,255,254,224,
/* 0x0360 */ 128, 1, 0, 68,187,129, 0, 48,124, 8, 3,166, 56, 33, 0, 64,
/* 0x0370 */ 78,128, 0, 32, 44, 3, 0, 0, 77,130, 0, 32, 48, 4,255,255,
/* 0x0380 */ 125, 96, 33, 16,128, 3, 0, 0,127,128, 32, 0,104, 9, 0, 1,
/* 0x0390 */ 33, 73, 0, 0,125, 42, 73, 20,125, 42, 88, 57, 65,158, 0, 8,
/* 0x03a0 */ 65,162, 0, 16,144,163, 0, 4,144,131, 0, 0, 78,128, 0, 32,
/* 0x03b0 */ 56, 99, 0, 8, 75,255,255,208,124, 8, 2,166,148, 33,255,160,
/* 0x03c0 */ 144, 1, 0,100,160, 3, 0, 16,161, 67, 0, 44,125,128, 0, 38,
/* 0x03d0 */ 129, 35, 0, 28,104, 0, 0, 3, 53, 74,255,255,124, 0, 0,208,
/* 0x03e0 */ 190, 65, 0, 40,127,163, 74, 20,124,121, 27,120, 84, 3, 46,246,
/* 0x03f0 */ 145,129, 0, 36,124,151, 35,120,124,178, 43,120,124,211, 51,120,
/* 0x0400 */ 124,244, 59,120,125, 21, 67,120, 56, 99, 8, 34,127,171,235,120,
/* 0x0410 */ 59,224,255,255, 59,192, 0, 0, 65,128, 0, 68, 57, 74, 0, 1,
/* 0x0420 */ 125, 73, 3,166,128, 11, 0, 0, 47,128, 0, 1, 64,190, 0, 40,
/* 0x0430 */ 129, 43, 0, 8,127,137,248, 64, 64,156, 0, 8,125, 63, 75,120,
/* 0x0440 */ 128, 11, 0, 20,124, 0, 74, 20,127,158, 0, 64, 64,156, 0, 8,
/* 0x0450 */ 124, 30, 3,120, 57,107, 0, 32, 66, 0,255,204, 87,255, 0, 38,
/* 0x0460 */ 125, 63,240, 80, 57, 41, 15,255, 85, 62, 0, 38,124,102, 27,120,
/* 0x0470 */ 127,196,243,120,127,227,251,120, 56,160, 0, 0, 56,224,255,255,
/* 0x0480 */ 57, 0, 0, 0, 75,255,252,217,160, 25, 0, 44, 58,192, 0, 0,
/* 0x0490 */ 127,150, 0, 0,124, 3,242, 20,144, 1, 0, 8,127, 31, 24, 80,
/* 0x04a0 */ 64,156, 1,128, 46, 23, 0, 0, 65,146, 0, 40,128, 29, 0, 0,
/* 0x04b0 */ 47,128, 0, 6, 64,190, 0, 28,128,189, 0, 8,126, 99,155,120,
/* 0x04c0 */ 124,165,194, 20, 56,128, 0, 3, 75,255,254,173, 72, 0, 1, 64,
/* 0x04d0 */ 128, 29, 0, 0, 47,128, 0, 1, 64,190, 1, 52,128, 29, 0, 24,
/* 0x04e0 */ 129, 93, 0, 8, 61, 32,115, 81, 84, 0, 22,250, 97, 41, 98, 64,
/* 0x04f0 */ 129,125, 0, 20,125, 41, 4, 48, 85, 94, 5, 62, 48, 23,255,255,
/* 0x0500 */ 124,160,185, 16,128, 29, 0, 16, 85, 58, 7,126,127,106, 90, 20,
/* 0x0510 */ 84,165, 8, 60,127,254, 80, 80,144, 1, 0, 16,145, 65, 0, 20,
/* 0x0520 */ 127,128,242, 20,127,255,194, 20,127,123,194, 20,124,165,211,120,
/* 0x0530 */ 65,146, 0, 12, 56,192, 0, 50, 72, 0, 0, 8, 56,192, 0, 18,
/* 0x0540 */ 64,146, 0, 12,126, 71,147,120, 72, 0, 0, 8, 56,224,255,255,
/* 0x0550 */ 129, 29, 0, 4,127,227,251,120,125, 30, 64, 80,127,132,227,120,
/* 0x0560 */ 75,255,251,253,127,159, 24, 0, 64,158, 0,104, 65,178, 0, 24,
/* 0x0570 */ 126,227,187,120, 56,129, 0, 16,126,133,163,120,126,166,171,120,
/* 0x0580 */ 75,255,252,149,115, 64, 0, 2,124, 28, 0,208, 84, 30, 5, 62,
/* 0x0590 */ 65,130, 0, 36, 47,158, 0, 0,125, 63,226, 20, 65,158, 0, 24,
/* 0x05a0 */ 127,201, 3,166, 56, 0, 0, 0,152, 9, 0, 0, 57, 41, 0, 1,
/* 0x05b0 */ 66, 0,255,248, 65,178, 0, 36,127,227,251,120,127,132,227,120,
/* 0x05c0 */ 127, 69,211,120, 75,255,251,205, 47,131, 0, 0, 65,190, 0, 12,
/* 0x05d0 */ 56, 96, 0,127, 75,255,251,157,124, 28,242, 20,127,255, 2, 20,
/* 0x05e0 */ 127,159,216, 64, 64,188, 0, 40,124,159,216, 80,127, 69,211,120,
/* 0x05f0 */ 127,227,251,120, 56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0,
/* 0x0600 */ 75,255,251, 93,127,159, 24, 0, 64,190,255,200,160, 25, 0, 44,
/* 0x0610 */ 58,214, 0, 1,127,150, 0, 0, 59,189, 0, 32, 75,255,254,132,
/* 0x0620 */ 128,121, 0, 24,128, 1, 0,100,129,129, 0, 36,124, 99,194, 20,
/* 0x0630 */ 124, 8, 3,166,186, 65, 0, 40,125,128,129, 32, 56, 33, 0, 96,
/* 0x0640 */ 78,128, 0, 32,124, 8, 2,166,148, 33,255,192,144, 1, 0, 68,
/* 0x0650 */ 56,132,255,232, 56, 3, 0, 24,144, 1, 0, 12,144,129, 0, 8,
/* 0x0660 */ 128, 3, 0, 24,191, 97, 0, 44,129, 97, 0, 8,124,191, 43,120,
/* 0x0670 */ 129,129, 0, 12,124,229, 59,120, 56,192, 0, 0, 56, 97, 0, 8,
/* 0x0680 */ 56,129, 0, 16, 59,223, 0, 52,125, 61, 75,120,124,251, 59,120,
/* 0x0690 */ 144, 1, 0, 16,125, 28, 67,120,145, 97, 0, 24,145,129, 0, 28,
/* 0x06a0 */ 147,225, 0, 20, 75,255,251,113,128,190, 0, 8,127,163,235,120,
/* 0x06b0 */ 56,165, 0, 52, 56,128, 0, 3, 75,255,252,189,160,191, 0, 44,
/* 0x06c0 */ 127,163,235,120, 56,128, 0, 5, 75,255,252,173,128,191, 0, 24,
/* 0x06d0 */ 127,163,235,120, 56,128, 0, 9, 75,255,252,157,127,103,219,120,
/* 0x06e0 */ 127,136,227,120,127,227,251,120,127,166,235,120, 56,129, 0, 24,
/* 0x06f0 */ 56,160, 0, 0, 75,255,252,197,160, 31, 0, 44,124,124, 27,120,
/* 0x0700 */ 59, 96, 0, 0,127,155, 0, 0, 64,156, 0,124,128, 30, 0, 0,
/* 0x0710 */ 59,123, 0, 1, 47,128, 0, 3, 56,128, 0, 0, 56,160, 0, 0,
/* 0x0720 */ 64,190, 0, 88,128,126, 0, 8, 75,255,250, 89,124,125, 27,121,
/* 0x0730 */ 127,228,251,120, 56,160, 2, 0, 65,128, 0, 40, 75,255,250, 61,
/* 0x0740 */ 47,131, 2, 0, 56,128, 0, 0,127,227,251,120,127,165,235,120,
/* 0x0750 */ 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, 65,190, 0, 12,
/* 0x0760 */ 56, 96, 0,127, 75,255,250, 13, 75,255,252, 81,124,124, 27,120,
/* 0x0770 */ 127,163,235,120, 75,255,250, 21,160, 31, 0, 44, 59,222, 0, 32,
/* 0x0780 */ 75,255,255,132,128, 1, 0, 68,127,131,227,120,124, 8, 3,166,
/* 0x0790 */ 187, 97, 0, 44, 56, 33, 0, 64, 78,128, 0, 32
/* 0x01a0 */ 56, 0, 0, 45, 75,255,255,188, 44, 3, 0, 0, 77,194, 0, 32,
/* 0x01b0 */ 46,132, 0, 0,129, 67, 0, 0,127,138, 32, 64, 64,254, 0, 16,
/* 0x01c0 */ 144,131, 0, 0,144,163, 0, 4, 78,128, 0, 32, 43,138, 0, 1,
/* 0x01d0 */ 64,254, 0, 8, 64,214,255,236, 56, 99, 0, 8, 75,255,255,216,
/* 0x01e0 */ 129, 35, 0, 0,129, 67, 0, 4,127,137, 40, 64, 65,220, 0, 20,
/* 0x01f0 */ 57, 5, 0, 1, 57, 32, 0, 0,125, 9, 3,166, 72, 0, 0, 24,
/* 0x0200 */ 148, 33,255,240,124, 8, 2,166, 56, 96, 0,127,144, 1, 0, 20,
/* 0x0210 */ 75,255,255, 97, 66, 64, 0, 20,125, 10, 72,174,125, 4, 73,174,
/* 0x0220 */ 57, 41, 0, 1, 75,255,255,240,129, 35, 0, 4,125, 41, 42, 20,
/* 0x0230 */ 145, 35, 0, 4,129, 35, 0, 0,124,165, 72, 80,144,163, 0, 0,
/* 0x0240 */ 78,128, 0, 32,148, 33,255,192,125,128, 0, 38,124, 8, 2,166,
/* 0x0250 */ 145,129, 0, 44, 46, 6, 0, 0,144, 1, 0, 68,191,129, 0, 48,
/* 0x0260 */ 124,126, 27,120,124,159, 35,120,124,189, 43,120,124,220, 51,120,
/* 0x0270 */ 129, 63, 0, 0, 47,137, 0, 0, 65,222, 1, 16, 56,160, 0, 12,
/* 0x0280 */ 56,129, 0, 8,127,195,243,120, 75,255,255, 89,129, 65, 0, 8,
/* 0x0290 */ 129, 33, 0, 12, 47,138, 0, 0, 64,254, 0, 32,109, 36, 33, 88,
/* 0x02a0 */ 47,132, 80, 85, 64,158, 0, 28,129, 62, 0, 0, 47,137, 0, 0,
/* 0x02b0 */ 65,254, 0,216, 72, 0, 0, 12, 47,137, 0, 0, 64,254, 0, 12,
/* 0x02c0 */ 56, 96, 0,127, 75,255,254,173,126,138, 72, 64, 65,212,255,244,
/* 0x02d0 */ 129, 31, 0, 0,127,138, 64, 64, 65,221,255,232,128,159, 0, 4,
/* 0x02e0 */ 64,213, 0,124,124,133, 35,120,145, 65, 0, 20, 56,193, 0, 20,
/* 0x02f0 */ 127,169, 3,166,136,225, 0, 16,125, 36, 75,120,128,126, 0, 4,
/* 0x0300 */ 78,128, 4, 33, 47,131, 0, 0, 64,222,255,184,128,129, 0, 8,
/* 0x0310 */ 129, 33, 0, 20,127,132, 72, 0, 64,222,255,168,136,193, 0, 17,
/* 0x0320 */ 47,134, 0, 0, 65,222, 0, 24, 65,210, 0, 20,136,161, 0, 18,
/* 0x0330 */ 127,137, 3,166,128,127, 0, 4, 78,128, 4, 33,129, 33, 0, 12,
/* 0x0340 */ 129, 94, 0, 4,125, 74, 74, 20,145, 94, 0, 4,129, 94, 0, 0,
/* 0x0350 */ 125, 41, 80, 80,145, 62, 0, 0, 72, 0, 0, 16,125, 37, 75,120,
/* 0x0360 */ 127,195,243,120, 75,255,254,125,129, 33, 0, 8,129, 95, 0, 4,
/* 0x0370 */ 125, 74, 74, 20,145, 95, 0, 4,129, 95, 0, 0,125, 41, 80, 80,
/* 0x0380 */ 145, 63, 0, 0, 75,255,254,236,129,129, 0, 44, 57, 97, 0, 64,
/* 0x0390 */ 125,144,129, 32, 72, 0, 4, 0,148, 33,255,144,124, 8, 2,166,
/* 0x03a0 */ 125,128, 0, 38,144, 1, 0,116,189,193, 0, 40,124,213, 51,120,
/* 0x03b0 */ 124,154, 35,120,145,129, 0, 36,124,124, 27,120,124,191, 43,120,
/* 0x03c0 */ 160,195, 0, 16,124,244, 59,120,125, 19, 67,120,129,227, 0, 28,
/* 0x03d0 */ 56,128, 0, 0, 59,160,255,255,104,198, 0, 3, 49, 38,255,255,
/* 0x03e0 */ 125,227,122, 20,124,201, 49, 16,161, 35, 0, 44,125,234,123,120,
/* 0x03f0 */ 84,198, 32, 54, 57, 41, 0, 1, 56,198, 8, 34,125, 41, 3,166,
/* 0x0400 */ 66, 64, 0, 60,129, 42, 0, 0, 47,137, 0, 1, 64,254, 0, 40,
/* 0x0410 */ 129, 10, 0, 8,127,157, 64, 64, 64,221, 0, 8,125, 29, 67,120,
/* 0x0420 */ 129, 42, 0, 20,125, 40, 74, 20,127,132, 72, 64, 64,220, 0, 8,
/* 0x0430 */ 125, 36, 75,120, 57, 74, 0, 32, 75,255,255,200, 87,189, 0, 38,
/* 0x0440 */ 56,132, 15,255,124,157, 32, 80, 46, 26, 0, 0,127,163,235,120,
/* 0x0450 */ 57, 0, 0, 0, 56,224,255,255, 56,160, 0, 0, 84,132, 0, 38,
/* 0x0460 */ 58,224,255,255, 75,255,252,249, 51, 58,255,255,127, 57,209, 16,
/* 0x0470 */ 127,189, 24, 80, 87, 57, 8, 60,147, 33, 0, 24, 64,242, 0, 8,
/* 0x0480 */ 127,247,251,120, 65,210, 0, 12, 58,192, 0, 50, 72, 0, 0, 8,
/* 0x0490 */ 58,192, 0, 18, 62, 64,115, 81, 59, 0, 0, 0, 98, 82, 98, 64,
/* 0x04a0 */ 58, 32, 0, 0,161, 60, 0, 44,127,152, 72, 0, 64,220, 1, 80,
/* 0x04b0 */ 129, 47, 0, 0, 65,210, 0, 36, 47,137, 0, 6, 64,254, 0, 28,
/* 0x04c0 */ 128,175, 0, 8, 56,128, 0, 3,126,163,171,120,124,189, 42, 20,
/* 0x04d0 */ 75,255,252,217, 72, 0, 1, 28, 47,137, 0, 1, 64,254, 1, 20,
/* 0x04e0 */ 131,111, 0, 20,126,231,187,120,126,198,179,120,129, 47, 0, 8,
/* 0x04f0 */ 129,207, 0, 24,127,125,218, 20,131,207, 0, 16, 85, 40, 5, 62,
/* 0x0500 */ 85, 42, 0, 38,145, 33, 0, 12,127,105,218, 20, 85,206, 22,250,
/* 0x0510 */ 129, 47, 0, 4,127,254, 66, 20,126, 78,116, 48,127, 42,234, 20,
/* 0x0520 */ 85,208, 7,126,147,193, 0, 8,125, 8, 72, 80,129, 33, 0, 24,
/* 0x0530 */ 127,228,251,120,127, 35,203,120,125, 37,131,120, 75,255,252, 33,
/* 0x0540 */ 127,153, 24, 0, 65,254, 0, 12, 56, 96, 0,127, 75,255,252, 37,
/* 0x0550 */ 65,210, 0, 24,126,102,155,120,126,133,163,120, 56,129, 0, 8,
/* 0x0560 */ 127, 67,211,120, 75,255,252,225,125, 63, 0,208, 85, 62, 5, 62,
/* 0x0570 */ 113,201, 0, 2, 64,194, 0, 12, 64,242, 0, 44, 72, 0, 0, 64,
/* 0x0580 */ 47,158, 0, 0, 65,222,255,244,127,201, 3,166,125, 25,250, 20,
/* 0x0590 */ 57, 32, 0, 0,126, 40, 73,174, 57, 41, 0, 1, 66, 0,255,248,
/* 0x05a0 */ 75,255,255,216,126, 5,131,120,127,228,251,120,127, 35,203,120,
/* 0x05b0 */ 75,255,251,225, 47,131, 0, 0, 64,222,255,144,127,223,242, 20,
/* 0x05c0 */ 127,249,242, 20,127,155,248, 64, 64,253, 0, 40, 57, 0, 0, 0,
/* 0x05d0 */ 56,224,255,255, 56,192, 0, 50,126, 5,131,120,124,159,216, 80,
/* 0x05e0 */ 127,227,251,120, 75,255,251,121,127,159, 24, 0, 64,222,255, 92,
/* 0x05f0 */ 57,239, 0, 32, 59, 24, 0, 1, 75,255,254,172,129,129, 0, 36,
/* 0x0600 */ 57, 97, 0,112,128,124, 0, 24,125,144,129, 32,124,125, 26, 20,
/* 0x0610 */ 72, 0, 1, 76,148, 33,255,176,124, 8, 2,166, 56,132,255,232,
/* 0x0620 */ 56,192, 0, 0,144, 1, 0, 84,191, 97, 0, 60,125, 61, 75,120,
/* 0x0630 */ 57, 35, 0, 24,145, 33, 0, 28,124,191, 43,120, 59,197, 0, 52,
/* 0x0640 */ 144,129, 0, 24, 56,129, 0, 16,129, 35, 0, 24, 56, 97, 0, 24,
/* 0x0650 */ 129, 65, 0, 28,145, 33, 0, 16,129, 33, 0, 24,144,161, 0, 20,
/* 0x0660 */ 124,229, 59,120,145, 33, 0, 8,145, 65, 0, 12,144,225, 0, 40,
/* 0x0670 */ 145, 1, 0, 44, 75,255,251,209,127,163,235,120, 56,128, 0, 3,
/* 0x0680 */ 128,191, 0, 60, 56,165, 0, 52, 75,255,251, 33,160,191, 0, 44,
/* 0x0690 */ 127,163,235,120, 56,128, 0, 5, 75,255,251, 17,128,191, 0, 24,
/* 0x06a0 */ 127,163,235,120, 56,128, 0, 9, 75,255,251, 1,129, 1, 0, 44,
/* 0x06b0 */ 127,166,235,120, 56,160, 0, 0,128,225, 0, 40, 56,129, 0, 8,
/* 0x06c0 */ 127,227,251,120, 59,160, 0, 0, 75,255,252,209,124,124, 27,120,
/* 0x06d0 */ 161, 63, 0, 44,127,157, 72, 0, 64,220, 0,120,129, 62, 0, 0,
/* 0x06e0 */ 47,137, 0, 3, 64,254, 0, 96,128,126, 0, 8, 56,160, 0, 0,
/* 0x06f0 */ 56,128, 0, 0, 75,255,250,141,124,123, 27,121, 64,224, 0, 12,
/* 0x0700 */ 56, 96, 0,127, 75,255,250,109, 56,160, 2, 0,127,228,251,120,
/* 0x0710 */ 75,255,250,105, 47,131, 2, 0, 64,222,255,232, 57, 0, 0, 0,
/* 0x0720 */ 56,224, 0, 0, 56,192, 0, 0,127,101,219,120, 56,128, 0, 0,
/* 0x0730 */ 127,227,251,120, 75,255,252,101,124,124, 27,120,127, 99,219,120,
/* 0x0740 */ 75,255,250, 73, 59,222, 0, 32, 59,189, 0, 1, 75,255,255,132,
/* 0x0750 */ 57, 97, 0, 80,127,131,227,120, 72, 0, 0, 56,129,203,255,184,
/* 0x0760 */ 129,235,255,188,130, 11,255,192,130, 43,255,196,130, 75,255,200,
/* 0x0770 */ 130,107,255,204,130,139,255,208,130,171,255,212,130,203,255,216,
/* 0x0780 */ 130,235,255,220,131, 11,255,224,131, 43,255,228,131, 75,255,232,
/* 0x0790 */ 131,107,255,236,131,139,255,240,131,171,255,244,131,203,255,248,
/* 0x07a0 */ 128, 11, 0, 4,131,235,255,252,124, 8, 3,166,125, 97, 91,120,
/* 0x07b0 */ 78,128, 0, 32, 0, 0, 0, 60, 0, 0, 0, 0, 1,122, 82, 0,
/* 0x07c0 */ 4,124, 65, 1, 27, 12, 1, 0, 13, 11, 17, 65,127,142, 18,143,
/* 0x07d0 */ 17,144, 16,145, 15,146, 14,147, 13,148, 12,149, 11,150, 10,151,
/* 0x07e0 */ 9,152, 8,153, 7,154, 6,155, 5,156, 4,157, 3,158, 2,159,
/* 0x07f0 */ 1, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 68,255,255,255, 96,
/* 0x0800 */ 0, 0, 0, 88, 0, 65,206, 65,207, 65,208, 65,209, 65,210, 65,
/* 0x0810 */ 211, 65,212, 65,213, 65,214, 65,215, 65,216, 65,217, 65,218, 65,
/* 0x0820 */ 219, 65,220, 65,221, 65,222, 66,223, 65, 6, 65, 65, 13, 1
};

View File

@ -32,80 +32,80 @@
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_SIZE 9082
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_ADLER32 0x1b691f11
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_CRC32 0x99104672
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_ADLER32 0xaf282773
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_CRC32 0x612d79a8
unsigned char stub_powerpc_linux_kernel_vmlinux[9082] = {
/* 0x0000 */ 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 25, 12, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40,
/* 0x0020 */ 0, 0, 26,168, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40,
/* 0x0030 */ 0, 25, 0, 22, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0,
/* 0x0040 */ 0, 0, 0, 0, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191,
/* 0x0050 */ 77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8,
/* 0x0040 */ 0, 0, 0, 0, 40, 6, 0,208, 76,194, 0, 32, 84,132,240,191,
/* 0x0050 */ 77,194, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8,
/* 0x0060 */ 124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252,
/* 0x0070 */ 124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80,
/* 0x0080 */ 125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32,
/* 0x0090 */ 132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220,
/* 0x00a0 */ 66, 0,255,240, 78,128, 0, 32,124, 0, 41,236,125,168, 2,166,
/* 0x0080 */ 125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 79, 64, 0, 32,
/* 0x0090 */ 132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,194,255,220,
/* 0x00a0 */ 67, 32,255,240, 78,128, 0, 32,124, 0, 41,236,125,168, 2,166,
/* 0x00b0 */ 40, 7, 0, 2, 64,130, 0,228,144,166, 0, 0,124,132, 26, 20,
/* 0x00c0 */ 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255,
/* 0x00d0 */ 57, 64,255,255, 72, 0, 0,180,124, 9, 0, 64,125, 41, 72, 20,
/* 0x00e0 */ 76,162, 0, 32, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4,
/* 0x00e0 */ 76,226, 0, 32, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4,
/* 0x00f0 */ 124, 9, 0, 64,125, 41, 73, 20, 78,128, 0, 32,141, 3, 0, 1,
/* 0x0100 */ 157, 5, 0, 1, 75,255,255,213, 65,129,255,244, 56,224, 0, 1,
/* 0x0110 */ 75,255,255,201,124,231, 57, 21, 75,255,255,193, 65,160,255,244,
/* 0x0120 */ 52,231,255,253, 57, 0, 0, 0, 65,128, 0, 20,140, 67, 0, 1,
/* 0x0130 */ 84,231, 64, 46,124,234, 16,249, 65,130, 0, 0, 75,255,255,157,
/* 0x0100 */ 157, 5, 0, 1, 75,255,255,213, 65,225,255,244, 56,224, 0, 1,
/* 0x0110 */ 75,255,255,201,124,231, 57, 21, 75,255,255,193, 65,192,255,244,
/* 0x0120 */ 52,231,255,253, 57, 0, 0, 0, 65,192, 0, 20,140, 67, 0, 1,
/* 0x0130 */ 84,231, 64, 46,124,234, 16,249, 65,194, 0, 0, 75,255,255,157,
/* 0x0140 */ 125, 8, 65, 21, 75,255,255,149,125, 8, 65, 21, 56,224, 0, 1,
/* 0x0150 */ 64,130, 0, 28, 56,224, 0, 3, 57, 0, 0, 1, 75,255,255,125,
/* 0x0160 */ 125, 8, 65, 21, 75,255,255,117, 65,160,255,244, 32, 74,242,255,
/* 0x0150 */ 64,194, 0, 28, 56,224, 0, 3, 57, 0, 0, 1, 75,255,255,125,
/* 0x0160 */ 125, 8, 65, 21, 75,255,255,117, 65,192,255,244, 32, 74,242,255,
/* 0x0170 */ 125, 8, 57, 20,124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1,
/* 0x0180 */ 157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,
/* 0x0180 */ 157, 5, 0, 1, 67, 32,255,248, 56,224, 1, 0,124, 7, 41,236,
/* 0x0190 */ 124, 7, 26, 44, 75,255,255,112,124, 0, 41,236,125,168, 2,166,
/* 0x01a0 */ 40, 7, 0, 5, 64,130, 1, 32,144,166, 0, 0,124,132, 26, 20,
/* 0x01b0 */ 60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255,
/* 0x01c0 */ 57, 64,255,255, 72, 0, 0,240, 57, 32, 0, 1,125, 41, 28, 44,
/* 0x01d0 */ 56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1,
/* 0x01e0 */ 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64,
/* 0x01f0 */ 125, 41, 74, 20, 65,162,255,213, 65,129,255,236, 56,224, 0, 1,
/* 0x0200 */ 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,162,255,189,
/* 0x0210 */ 124,231, 57, 21,125, 41, 72, 21, 65,162,255,177,124,231, 57, 21,
/* 0x0220 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161, 65,160,255,216,
/* 0x0230 */ 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,128, 0, 24,
/* 0x0240 */ 140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,130, 0, 0,
/* 0x0250 */ 72, 0, 0, 12,125, 41, 72, 21, 65,162,255,113,125, 8, 65, 21,
/* 0x0260 */ 125, 41, 72, 21, 65,162,255,101,125, 8, 65, 21, 64,130, 0, 40,
/* 0x0270 */ 57, 0, 0, 1,125, 41, 72, 21, 65,162,255, 81,125, 8, 65, 21,
/* 0x0280 */ 124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 65, 65,160,255,232,
/* 0x01f0 */ 125, 41, 74, 20, 65,194,255,213, 65,225,255,236, 56,224, 0, 1,
/* 0x0200 */ 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,194,255,189,
/* 0x0210 */ 124,231, 57, 21,125, 41, 72, 21, 65,194,255,177,124,231, 57, 21,
/* 0x0220 */ 124, 9, 0, 64,125, 41, 74, 20, 65,194,255,161, 65,192,255,216,
/* 0x0230 */ 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,192, 0, 24,
/* 0x0240 */ 140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,194, 0, 0,
/* 0x0250 */ 72, 0, 0, 12,125, 41, 72, 21, 65,194,255,113,125, 8, 65, 21,
/* 0x0260 */ 125, 41, 72, 21, 65,194,255,101,125, 8, 65, 21, 64,130, 0, 40,
/* 0x0270 */ 57, 0, 0, 1,125, 41, 72, 21, 65,194,255, 81,125, 8, 65, 21,
/* 0x0280 */ 124, 9, 0, 64,125, 41, 74, 20, 65,194,255, 65, 65,192,255,232,
/* 0x0290 */ 57, 8, 0, 2, 32,234,250,255, 57, 8, 0, 1,125, 8, 1,148,
/* 0x02a0 */ 124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1,
/* 0x02b0 */ 66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44,
/* 0x02b0 */ 67, 32,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44,
/* 0x02c0 */ 75,255,255, 44,124, 0, 41,236,125,168, 2,166, 40, 7, 0, 8,
/* 0x02d0 */ 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0,
/* 0x02e0 */ 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, 57, 64,255,255,
/* 0x02f0 */ 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4,
/* 0x0300 */ 124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1, 78,128, 0, 32,
/* 0x0310 */ 141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0320 */ 65,162,255,213, 65,129,255,236, 56,224, 0, 1, 72, 0, 0, 20,
/* 0x0330 */ 56,231,255,255,125, 41, 72, 21, 65,162,255,189,124,231, 57, 20,
/* 0x0340 */ 125, 41, 72, 21, 65,162,255,177,124,231, 57, 20,124, 9, 0, 64,
/* 0x0350 */ 125, 41, 74, 20, 65,162,255,161, 65,160,255,216, 57, 0, 0, 0,
/* 0x0360 */ 52,231,255,253, 84,231, 64, 46, 65,128, 0, 32,140, 67, 0, 1,
/* 0x0370 */ 124,234, 16,249,125, 74, 14,112, 65,130, 0, 0,112, 66, 0, 1,
/* 0x0380 */ 65,162, 0, 80, 72, 0, 0, 20,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0390 */ 65,162,255,101, 65,161, 0, 60, 57, 0, 0, 1,124, 9, 0, 64,
/* 0x03a0 */ 125, 41, 74, 20, 65,162,255, 81, 65,161, 0, 40,125, 41, 72, 21,
/* 0x03b0 */ 65,162,255, 69,125, 8, 65, 20,124, 9, 0, 64,125, 41, 74, 20,
/* 0x03c0 */ 65,162,255, 53, 65,160,255,232, 57, 8, 0, 2, 72, 0, 0, 16,
/* 0x03d0 */ 125, 41, 72, 21, 65,162,255, 33,125, 8, 65, 20, 32,234,250,255,
/* 0x0320 */ 65,194,255,213, 65,225,255,236, 56,224, 0, 1, 72, 0, 0, 20,
/* 0x0330 */ 56,231,255,255,125, 41, 72, 21, 65,194,255,189,124,231, 57, 20,
/* 0x0340 */ 125, 41, 72, 21, 65,194,255,177,124,231, 57, 20,124, 9, 0, 64,
/* 0x0350 */ 125, 41, 74, 20, 65,194,255,161, 65,192,255,216, 57, 0, 0, 0,
/* 0x0360 */ 52,231,255,253, 84,231, 64, 46, 65,192, 0, 32,140, 67, 0, 1,
/* 0x0370 */ 124,234, 16,249,125, 74, 14,112, 65,194, 0, 0,112, 66, 0, 1,
/* 0x0380 */ 65,226, 0, 80, 72, 0, 0, 20,124, 9, 0, 64,125, 41, 74, 20,
/* 0x0390 */ 65,194,255,101, 65,225, 0, 60, 57, 0, 0, 1,124, 9, 0, 64,
/* 0x03a0 */ 125, 41, 74, 20, 65,194,255, 81, 65,225, 0, 40,125, 41, 72, 21,
/* 0x03b0 */ 65,194,255, 69,125, 8, 65, 20,124, 9, 0, 64,125, 41, 74, 20,
/* 0x03c0 */ 65,194,255, 53, 65,192,255,232, 57, 8, 0, 2, 72, 0, 0, 16,
/* 0x03d0 */ 125, 41, 72, 21, 65,194,255, 33,125, 8, 65, 20, 32,234,250,255,
/* 0x03e0 */ 57, 8, 0, 2,125, 8, 1,148,124,234, 42, 20,125, 9, 3,166,
/* 0x03f0 */ 141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,
/* 0x03f0 */ 141, 7, 0, 1,157, 5, 0, 1, 67, 32,255,248, 56,224, 1, 0,
/* 0x0400 */ 124, 7, 41,236,124, 7, 26, 44, 75,255,255, 16,128,230, 0, 0,
/* 0x0410 */ 125,168, 3,166,124,100, 24, 80,124,135, 40, 80, 56, 99, 0, 1,
/* 0x0420 */ 56,132, 0, 1,144,134, 0, 0, 96,231, 0, 31,124, 0, 56,108,
/* 0x0430 */ 124, 7, 40, 64,124, 0, 63,172, 56,231, 0, 32, 65,128,255,240,
/* 0x0440 */ 124, 0, 4,172, 76, 0, 1, 44, 78,128, 0, 32, 40, 7, 0, 14,
/* 0x0450 */ 64,130, 0, 32,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0,
/* 0x0450 */ 64,130, 0, 0,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0,
/* 0x0460 */ 124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 8,
/* 0x0470 */ 136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0,
/* 0x0480 */ 124, 99, 88, 48, 56, 99,241,124,124, 38, 11,120,124, 33, 26, 20,

View File

@ -0,0 +1,655 @@
/* ppc64le-darwin.dylib-entry.h
created from ppc64le-darwin.dylib-entry.bin, 9851 (0x267b) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2015 Laszlo Molnar
Copyright (C) 2000-2015 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#define STUB_PPC64LE_DARWIN_DYLIB_ENTRY_SIZE 9851
#define STUB_PPC64LE_DARWIN_DYLIB_ENTRY_ADLER32 0x8aee5b0b
#define STUB_PPC64LE_DARWIN_DYLIB_ENTRY_CRC32 0x8c0151f0
unsigned char stub_ppc64le_darwin_dylib_entry[9851] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 1, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,152, 29, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 22, 0, 19, 0,
/* 0x0040 */ 166, 2, 72,124, 1, 0, 0, 72,236, 41, 0,124,166, 2,168,125,
/* 0x0050 */ 8, 0, 7, 40, 92, 1,130, 64, 0, 0,166,248, 20, 26,132,124,
/* 0x0060 */ 0,128, 0, 60,198, 7, 0,120, 0,128, 32, 61,198, 7, 41,121,
/* 0x0070 */ 255,255, 99, 56,255,255,165, 56,255,255, 64, 57, 36, 1, 0, 72,
/* 0x0080 */ 1, 0, 32, 57, 46, 24, 41,125, 4, 0, 99, 56,198, 7, 41,121,
/* 0x0090 */ 64, 0, 41,124, 20, 72, 41,125, 1, 0,128, 57,198, 7,140,121,
/* 0x00a0 */ 120, 99, 41,125, 32, 0,128, 78, 1, 0, 3,141, 1, 0, 5,157,
/* 0x00b0 */ 64, 0, 41,124, 20, 74, 41,125,201,255,194, 65,236,255,225, 65,
/* 0x00c0 */ 1, 0,224, 56, 20, 0, 0, 72,255,255,231, 56, 21, 72, 41,125,
/* 0x00d0 */ 177,255,194, 65, 20, 57,231,124, 21, 72, 41,125,165,255,194, 65,
/* 0x00e0 */ 20, 57,231,124, 64, 0, 41,124, 20, 74, 41,125,149,255,194, 65,
/* 0x00f0 */ 216,255,192, 65, 0, 0, 0, 57,253,255,231, 52, 46, 64,231, 84,
/* 0x0100 */ 255,255,128, 57,198, 7,140,121,120, 99,231,124, 32, 0,192, 65,
/* 0x0110 */ 1, 0, 67,140,249, 16,234,124,112, 14, 74,125, 0, 0,194, 65,
/* 0x0120 */ 1, 0, 66,112, 80, 0,226, 65, 20, 0, 0, 72, 64, 0, 41,124,
/* 0x0130 */ 20, 74, 41,125, 77,255,194, 65, 60, 0,225, 65, 1, 0, 0, 57,
/* 0x0140 */ 64, 0, 41,124, 20, 74, 41,125, 57,255,194, 65, 40, 0,225, 65,
/* 0x0150 */ 21, 72, 41,125, 45,255,194, 65, 20, 65, 8,125, 64, 0, 41,124,
/* 0x0160 */ 20, 74, 41,125, 29,255,194, 65,232,255,192, 65, 2, 0, 8, 57,
/* 0x0170 */ 16, 0, 0, 72, 21, 72, 41,125, 9,255,194, 65, 20, 65, 8,125,
/* 0x0180 */ 255,250,234, 32, 2, 0, 8, 57,148, 1, 8,125, 20, 42,234,124,
/* 0x0190 */ 166, 3, 9,125, 1, 0, 7,141, 1, 0, 5,157,248,255, 32, 67,
/* 0x01a0 */ 0, 1,224, 56,236, 41, 7,124, 44, 26, 7,124, 4,255,255, 75,
/* 0x01b0 */ 236, 41, 0,124,166, 2,168,125, 5, 0, 7, 40, 56, 1,130, 64,
/* 0x01c0 */ 0, 0,166,248, 20, 26,132,124, 0,128, 0, 60,198, 7, 0,120,
/* 0x01d0 */ 0,128, 32, 61,198, 7, 0,120,255,255, 99, 56,255,255,165, 56,
/* 0x01e0 */ 255,255, 64, 57, 0, 1, 0, 72, 1, 0, 32, 57, 46, 24, 41,125,
/* 0x01f0 */ 4, 0, 99, 56,198, 7, 41,121, 64, 0, 9,124, 20, 72, 41,125,
/* 0x0200 */ 1, 0, 41, 97, 32, 0,128, 78, 1, 0, 3,141, 1, 0, 5,157,
/* 0x0210 */ 64, 0, 41,124, 20, 74, 41,125,209,255,194, 65,236,255,225, 65,
/* 0x0220 */ 1, 0,224, 56, 20, 0, 0, 72,255,255,231, 56, 21, 72, 41,125,
/* 0x0230 */ 185,255,194, 65, 21, 57,231,124, 21, 72, 41,125,173,255,194, 65,
/* 0x0240 */ 21, 57,231,124, 64, 0, 41,124, 20, 74, 41,125,157,255,194, 65,
/* 0x0250 */ 216,255,192, 65, 0, 0, 0, 57,253,255,231, 52, 46, 64,231, 84,
/* 0x0260 */ 255,255,128, 57,198, 7,140,121,120, 99,231,124, 24, 0,192, 65,
/* 0x0270 */ 1, 0, 67,140,249, 16,234,124,112, 14, 74,125, 0, 0,194, 65,
/* 0x0280 */ 12, 0, 0, 72, 21, 72, 41,125, 97,255,194, 65, 21, 65, 8,125,
/* 0x0290 */ 21, 72, 41,125, 85,255,194, 65, 21, 65, 8,125, 40, 0,130, 64,
/* 0x02a0 */ 1, 0, 0, 57, 21, 72, 41,125, 65,255,194, 65, 21, 65, 8,125,
/* 0x02b0 */ 64, 0, 41,124, 20, 74, 41,125, 49,255,194, 65,232,255,192, 65,
/* 0x02c0 */ 2, 0, 8, 57,255,250,234, 32, 1, 0, 8, 57,148, 1, 8,125,
/* 0x02d0 */ 20, 42,234,124,166, 3, 9,125, 1, 0, 7,141, 1, 0, 5,157,
/* 0x02e0 */ 248,255, 32, 67, 0, 1,224, 56,236, 41, 7,124, 44, 26, 7,124,
/* 0x02f0 */ 32,255,255, 75,236, 41, 0,124,166, 2,168,125, 2, 0, 7, 40,
/* 0x0300 */ 252, 0,130, 64, 0, 0,166,248, 20, 26,132,124, 0,128, 0, 60,
/* 0x0310 */ 198, 7, 0,120, 0,128, 32, 61,198, 7, 0,120,255,255, 99, 56,
/* 0x0320 */ 255,255,165, 56,255,255, 64, 57,196, 0, 0, 72, 64, 0, 41,124,
/* 0x0330 */ 20, 72, 41,125, 32, 0,226, 76, 1, 0, 32, 57, 46, 24, 41,125,
/* 0x0340 */ 4, 0, 99, 56,198, 7, 41,121, 64, 0, 41,124, 20, 73, 41,125,
/* 0x0350 */ 32, 0,128, 78, 1, 0, 3,141, 1, 0, 5,157,209,255,255, 75,
/* 0x0360 */ 244,255,225, 65, 1, 0,224, 56,197,255,255, 75, 21, 57,231,124,
/* 0x0370 */ 189,255,255, 75,244,255,192, 65,253,255,231, 52, 0, 0, 0, 57,
/* 0x0380 */ 32, 0,192, 65, 1, 0, 67,140, 46, 64,231, 84,255,255,128, 57,
/* 0x0390 */ 198, 7,140,121,120, 99,231,124,249, 16,234,124, 0, 0,194, 65,
/* 0x03a0 */ 141,255,255, 75, 21, 65, 8,125,133,255,255, 75, 21, 65, 8,125,
/* 0x03b0 */ 1, 0,224, 56, 28, 0,194, 64, 3, 0,224, 56, 1, 0, 0, 57,
/* 0x03c0 */ 109,255,255, 75, 21, 65, 8,125,101,255,255, 75,244,255,192, 65,
/* 0x03d0 */ 255,242, 74, 32, 20, 57, 8,125, 20, 42,234,124,166, 3, 9,125,
/* 0x03e0 */ 1, 0, 7,141, 1, 0, 5,157,248,255, 32, 67, 0, 1,224, 56,
/* 0x03f0 */ 236, 41, 7,124, 44, 26, 7,124,100,255,255, 75, 14, 0, 7, 40,
/* 0x0400 */ 0, 0,130, 64,166, 2, 8,124,120, 51,201,124, 0, 0, 6,129,
/* 0x0410 */ 120, 43,167,124,254,255,164, 56, 2, 0,131, 56, 8, 0, 1,144,
/* 0x0420 */ 0, 0, 3,136,254,232, 11, 84,126, 7, 2, 84, 0,250, 96, 56,
/* 0x0430 */ 48, 88, 99,124,124,241, 99, 56,120, 11, 38,124, 20, 26, 33,124,
/* 0x0440 */ 52, 0, 33, 84, 0, 0, 0, 56,120, 51,195,124, 0, 0, 9,144,
/* 0x0450 */ 252,255, 3,148, 64, 24, 1,124,248,255,128, 65, 0, 0,193,144,
/* 0x0460 */ 255,255, 4,136, 8, 0,225,144, 16, 0,193, 56, 12, 0, 33,145,
/* 0x0470 */ 20, 0, 97, 56, 62,225, 11, 84, 62, 7, 0, 84, 2, 0, 67,152,
/* 0x0480 */ 1, 0, 99,153, 0, 0, 3,152,124, 8, 2,166,148, 33,255,160,
/* 0x0490 */ 189,193, 0, 24,144, 1, 0,100, 59, 32, 0, 0,137, 67, 0, 2,
/* 0x04a0 */ 137, 99, 0, 1,138, 67, 0, 0,147, 38, 0, 0,147, 41, 0, 0,
/* 0x04b0 */ 136, 3, 0, 1,125, 40, 3,166,124, 18, 2, 20, 57, 32, 3, 0,
/* 0x04c0 */ 125, 41, 0, 48, 56, 9, 7, 54,127,153, 0, 64, 57, 32, 0, 1,
/* 0x04d0 */ 125, 43, 88, 48,125, 41, 80, 48, 57, 41,255,255, 57,107,255,255,
/* 0x04e0 */ 145, 33, 0, 8,124,206, 51,120,124,147, 35,120,124,245, 59,120,
/* 0x04f0 */ 125, 20, 67,120,145, 97, 0, 12, 59, 3, 0, 4, 59,224, 0, 0,
/* 0x0500 */ 58,224, 0, 0, 59, 64, 0, 1, 58, 32, 0, 1, 58, 0, 0, 1,
/* 0x0510 */ 57,224, 0, 1, 57, 32, 0, 0, 64,156, 0, 28,124, 9, 3,166,
/* 0x0520 */ 57, 96, 4, 0, 85, 32, 8, 60,125,120, 3, 46, 57, 41, 0, 1,
/* 0x0530 */ 66, 0,255,244,127,179, 42, 20,126,108,155,120, 56,160, 0, 0,
/* 0x0540 */ 57, 0,255,255, 57, 96, 0, 0,127,140,232, 0, 57,107, 0, 1,
/* 0x0550 */ 47, 11, 0, 4, 84,169, 64, 46, 65,158, 8,156,136, 12, 0, 0,
/* 0x0560 */ 57,140, 0, 1,125, 37, 3,120, 64,153,255,224,127,153,160, 64,
/* 0x0570 */ 64,156, 8,100, 62,192, 0,255, 98,214,255,255,128, 1, 0, 8,
/* 0x0580 */ 127,136,176, 64,127, 35, 0, 56, 86,224, 32, 54,124, 0, 26, 20,
/* 0x0590 */ 84, 6, 8, 60, 65,157, 0, 32,127,140,232, 0, 65,158, 8, 88,
/* 0x05a0 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x05b0 */ 57,140, 0, 1,124,230,194, 46, 85, 0,170,254,125, 64, 57,214,
/* 0x05c0 */ 127,133, 80, 64, 64,156, 1,172,128, 1, 0, 12, 47,151, 0, 6,
/* 0x05d0 */ 127, 41, 0, 56, 32, 18, 0, 8,127,224, 6, 48,125, 41,144, 48,
/* 0x05e0 */ 125, 41, 2, 20, 29, 41, 6, 0, 32, 7, 8, 0,124, 0, 46,112,
/* 0x05f0 */ 124, 7, 2, 20,125, 56, 74, 20,124, 6,195, 46,125, 72, 83,120,
/* 0x0600 */ 56,201, 14,108, 56, 96, 0, 1, 64,157, 0,180,124, 26,200, 80,
/* 0x0610 */ 63, 96, 0,255,127,245, 0,174, 99,123,255,255, 87,255, 8, 60,
/* 0x0620 */ 87,252, 5,238,127,136,216, 64, 87,128, 8, 60, 84,100, 8, 60,
/* 0x0630 */ 124, 6, 2, 20,127, 12,232, 0, 84,169, 64, 46,124,224, 34, 20,
/* 0x0640 */ 65,157, 0, 24, 65,154, 7,176,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0650 */ 57,140, 0, 1,125, 37, 3,120,161,103, 2, 0, 85, 0,170,254,
/* 0x0660 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x0670 */ 85,105,217,126,124, 11, 2, 20, 47, 28, 0, 0,125,105, 88, 80,
/* 0x0680 */ 124,131, 35,120,125, 10, 64, 80, 64,156, 0, 20,176, 7, 2, 0,
/* 0x0690 */ 125, 72, 83,120, 65,186, 0, 24, 72, 0, 0, 28,177,103, 2, 0,
/* 0x06a0 */ 124,170, 40, 80, 56,100, 0, 1, 65,154, 0, 12, 47,131, 0,255,
/* 0x06b0 */ 64,157,255,108, 47,131, 0,255, 65,157, 0,132, 63,224, 0,255,
/* 0x06c0 */ 99,255,255,255,127,136,248, 64, 84,103, 8, 60,127, 12,232, 0,
/* 0x06d0 */ 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, 65,154, 7, 24,
/* 0x06e0 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x06f0 */ 125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,
/* 0x0700 */ 127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,
/* 0x0710 */ 125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,
/* 0x0720 */ 124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80,125,102, 59, 46,
/* 0x0730 */ 56,103, 0, 1, 47,131, 0,255, 64,157,255,140, 47,151, 0, 3,
/* 0x0740 */ 84,127, 6, 62,127,249,169,174, 59, 57, 0, 1, 65,157, 0, 12,
/* 0x0750 */ 58,224, 0, 0, 72, 0, 6,120, 47,151, 0, 9, 65,157, 0, 12,
/* 0x0760 */ 58,247,255,253, 72, 0, 6,104, 58,247,255,250, 72, 0, 6, 96,
/* 0x0770 */ 125, 10, 64, 80,127,136,176, 64, 84,224,217,126,124, 0, 56, 80,
/* 0x0780 */ 86,233, 8, 60,124, 6,195, 46,124,170, 40, 80,124,248, 74, 20,
/* 0x0790 */ 65,157, 0, 32,127,140,232, 0, 65,158, 6, 92,137, 44, 0, 0,
/* 0x07a0 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x07b0 */ 161,103, 1,128, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x07c0 */ 64,156, 0, 64, 32, 11, 8, 0, 47,151, 0, 6,124, 0, 46,112,
/* 0x07d0 */ 124, 11, 2, 20,176, 7, 1,128,126, 15,131,120,125, 72, 83,120,
/* 0x07e0 */ 126, 48,139,120, 56, 0, 0, 0,127, 81,211,120, 64,157, 0, 8,
/* 0x07f0 */ 56, 0, 0, 3,124, 23, 3,120, 56,216, 6,100, 72, 0, 2, 24,
/* 0x0800 */ 125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,
/* 0x0810 */ 124,170, 40, 80,176, 7, 1,128, 65,157, 0, 32,127,140,232, 0,
/* 0x0820 */ 65,158, 5,212,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x0830 */ 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,152, 85, 0,170,254,
/* 0x0840 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0,188, 32, 11, 8, 0,
/* 0x0850 */ 127,138,176, 64,124, 0, 46,112, 86,233, 40, 52,124, 11, 2, 20,
/* 0x0860 */ 125, 56, 74, 20, 84,107, 8, 60,176, 7, 1,152,125, 72, 83,120,
/* 0x0870 */ 124,233, 90, 20, 65,157, 0, 32,127,140,232, 0, 65,158, 5,120,
/* 0x0880 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 72, 64, 46,
/* 0x0890 */ 57,140, 0, 1,161,103, 1,224, 85, 0,170,254,125, 64, 89,214,
/* 0x08a0 */ 127,133, 80, 64, 64,156, 0, 72, 32, 11, 8, 0, 47,153, 0, 0,
/* 0x08b0 */ 124, 0, 46,112,124, 11, 2, 20,176, 7, 1,224,125, 72, 83,120,
/* 0x08c0 */ 65,158, 5, 52, 47,151, 0, 6, 57, 32, 0, 9, 64,157, 0, 8,
/* 0x08d0 */ 57, 32, 0, 11,124, 26,200, 80,127,245, 0,174,125, 55, 75,120,
/* 0x08e0 */ 127,249,169,174, 59, 57, 0, 1, 72, 0, 4,228, 85, 96,217,126,
/* 0x08f0 */ 124, 0, 88, 80,124,170, 40, 80,125, 10, 64, 80,176, 7, 1,224,
/* 0x0900 */ 72, 0, 0,252,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,
/* 0x0910 */ 124, 0, 88, 80,124,170, 40, 80,176, 7, 1,152, 65,157, 0, 32,
/* 0x0920 */ 127,140,232, 0, 65,158, 4,208,137, 44, 0, 0, 84,160, 64, 46,
/* 0x0930 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,176,
/* 0x0940 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32,
/* 0x0950 */ 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,
/* 0x0960 */ 126, 41,139,120,176, 7, 1,176, 72, 0, 0,140,125, 10, 64, 80,
/* 0x0970 */ 127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,
/* 0x0980 */ 176, 7, 1,176, 65,157, 0, 32,127,140,232, 0, 65,158, 4,104,
/* 0x0990 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x09a0 */ 57,140, 0, 1,161,103, 1,200, 85, 0,170,254,125, 64, 89,214,
/* 0x09b0 */ 127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,
/* 0x09c0 */ 124, 11, 2, 20,125, 72, 83,120,126, 9,131,120,176, 7, 1,200,
/* 0x09d0 */ 72, 0, 0, 32, 85, 96,217,126,124, 0, 88, 80,125,233,123,120,
/* 0x09e0 */ 176, 7, 1,200,124,170, 40, 80,125, 10, 64, 80,126, 15,131,120,
/* 0x09f0 */ 126, 48,139,120,127, 81,211,120,125, 58, 75,120, 47,151, 0, 6,
/* 0x0a00 */ 56, 0, 0, 8, 64,157, 0, 8, 56, 0, 0, 11,124, 23, 3,120,
/* 0x0a10 */ 56,216, 10,104,127,136,176, 64, 65,157, 0, 32,127,140,232, 0,
/* 0x0a20 */ 65,158, 3,212,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x0a30 */ 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 0, 85, 0,170,254,
/* 0x0a40 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0,
/* 0x0a50 */ 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,
/* 0x0a60 */ 125, 72, 83,120, 56,137, 0, 4, 59,128, 0, 0, 59, 96, 0, 3,
/* 0x0a70 */ 176, 6, 0, 0, 72, 0, 0,156,125, 10, 64, 80,127,136,176, 64,
/* 0x0a80 */ 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 0,
/* 0x0a90 */ 65,157, 0, 32,127,140,232, 0, 65,158, 3, 92,137, 44, 0, 0,
/* 0x0aa0 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0ab0 */ 161,102, 0, 2, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x0ac0 */ 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,
/* 0x0ad0 */ 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 1, 4,
/* 0x0ae0 */ 59,128, 0, 8, 59, 96, 0, 3,176, 6, 0, 2, 72, 0, 0, 36,
/* 0x0af0 */ 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 2,
/* 0x0b00 */ 125, 10, 64, 80, 56,134, 2, 4, 59,128, 0, 16, 59, 96, 0, 8,
/* 0x0b10 */ 127,105, 3,166, 63,224, 0,255, 99,255,255,255, 56, 96, 0, 1,
/* 0x0b20 */ 127,136,248, 64, 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,
/* 0x0b30 */ 124,227, 59,120, 65,157, 0, 24, 65,154, 2,188,136, 12, 0, 0,
/* 0x0b40 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,100, 58, 46,
/* 0x0b50 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,
/* 0x0b60 */ 124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,
/* 0x0b70 */ 125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,124, 4, 59, 46,
/* 0x0b80 */ 72, 0, 0, 16,124,170, 40, 80, 56,103, 0, 1,125,100, 59, 46,
/* 0x0b90 */ 66, 0,255,144, 56, 0, 0, 1, 47,151, 0, 3,124, 0,216, 48,
/* 0x0ba0 */ 124, 96, 24, 80,124, 99,226, 20, 65,157, 1,232, 47,131, 0, 3,
/* 0x0bb0 */ 58,247, 0, 7,124,105, 27,120, 64,157, 0, 8, 57, 32, 0, 3,
/* 0x0bc0 */ 85, 41, 56, 48,125, 56, 74, 20, 56,201, 3, 96, 57, 32, 0, 6,
/* 0x0bd0 */ 125, 41, 3,166, 63,224, 0,255, 99,255,255,255, 56,128, 0, 1,
/* 0x0be0 */ 127,136,248, 64, 84,135, 8, 60,127, 12,232, 0, 84,169, 64, 46,
/* 0x0bf0 */ 124,228, 59,120, 65,157, 0, 24, 65,154, 1,252,136, 12, 0, 0,
/* 0x0c00 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46,
/* 0x0c10 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,
/* 0x0c20 */ 124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,
/* 0x0c30 */ 125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46,
/* 0x0c40 */ 72, 0, 0, 16,124,170, 40, 80, 56,135, 0, 1,125,102, 59, 46,
/* 0x0c50 */ 66, 0,255,144, 56,132,255,192, 47,132, 0, 3,124,154, 35,120,
/* 0x0c60 */ 64,157, 1, 40, 47,132, 0, 13,124,137, 14,112, 84,128, 7,254,
/* 0x0c70 */ 57,105,255,255, 96, 26, 0, 2,125,105, 3,166, 65,157, 0, 32,
/* 0x0c80 */ 127, 90, 88, 48, 87, 73, 8, 60,125, 56, 74, 20, 84,128, 8, 60,
/* 0x0c90 */ 125, 32, 72, 80, 56,201, 5, 94, 72, 0, 0,100, 57, 41,255,251,
/* 0x0ca0 */ 125, 41, 3,166, 61, 96, 0,255, 97,107,255,255,127,136, 88, 64,
/* 0x0cb0 */ 127, 12,232, 0, 84,169, 64, 46, 87, 90, 8, 60, 65,157, 0, 24,
/* 0x0cc0 */ 65,154, 1, 52,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0cd0 */ 125, 37, 3,120, 85, 8,248,126,127,133, 64, 64, 65,156, 0, 12,
/* 0x0ce0 */ 124,168, 40, 80, 99, 90, 0, 1, 66, 0,255,196, 56, 0, 0, 4,
/* 0x0cf0 */ 124, 9, 3,166, 87, 90, 32, 54, 56,216, 6, 68, 60,128, 0,255,
/* 0x0d00 */ 96,132,255,255, 59,128, 0, 1, 59,224, 0, 1,127,136, 32, 64,
/* 0x0d10 */ 87,231, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,255, 59,120,
/* 0x0d20 */ 65,157, 0, 24, 65,154, 0,208,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0d30 */ 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,
/* 0x0d40 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x0d50 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x0d60 */ 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 20,
/* 0x0d70 */ 124,170, 40, 80, 59,231, 0, 1,125,102, 59, 46,127, 90,227,120,
/* 0x0d80 */ 87,156, 8, 60, 66, 0,255,136, 55, 90, 0, 1, 65,130, 0, 72,
/* 0x0d90 */ 127,154,200, 64, 56, 99, 0, 2, 65,157, 0, 92,124, 26,200, 80,
/* 0x0da0 */ 127,245, 0,174, 56, 99,255,255,127,249,169,174, 59, 57, 0, 1,
/* 0x0db0 */ 49, 99,255,255,125, 43, 25, 16,124, 20,200, 16,124, 0, 1, 16,
/* 0x0dc0 */ 124, 0, 0,208,125, 43, 0, 57, 64,130,255,212,127,153,160, 64,
/* 0x0dd0 */ 65,156,247,172, 60, 0, 0,255, 96, 0,255,255,127,136, 0, 64,
/* 0x0de0 */ 65,157, 0, 32,127,140,232, 0, 56, 96, 0, 1, 65,158, 0, 40,
/* 0x0df0 */ 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, 57,140, 0, 1,
/* 0x0e00 */ 125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, 56, 96, 0, 0,
/* 0x0e10 */ 147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24,124, 8, 3,166,
/* 0x0e20 */ 56, 33, 0, 96,124, 8, 2,166,148, 33,255,160,189,193, 0, 24,
/* 0x0e30 */ 144, 1, 0,100, 59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,
/* 0x0e40 */ 138, 67, 0, 0,147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,
/* 0x0e50 */ 125, 40, 3,166,124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48,
/* 0x0e60 */ 56, 9, 7, 54,127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,
/* 0x0e70 */ 125, 41, 80, 48, 57, 41,255,255, 57,107,255,255,145, 33, 0, 8,
/* 0x0e80 */ 124,206, 51,120,124,147, 35,120,124,245, 59,120,125, 20, 67,120,
/* 0x0e90 */ 145, 97, 0, 12, 59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0,
/* 0x0ea0 */ 59, 64, 0, 1, 58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1,
/* 0x0eb0 */ 57, 32, 0, 0, 64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0,
/* 0x0ec0 */ 85, 32, 8, 60,125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,
/* 0x0ed0 */ 127,179, 42, 20,126,108,155,120, 56,160, 0, 0, 57, 0,255,255,
/* 0x0ee0 */ 57, 96, 0, 0,127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4,
/* 0x0ef0 */ 84,169, 64, 46, 65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,
/* 0x0f00 */ 125, 37, 3,120, 64,153,255,224,127,153,160, 64, 64,156, 8,100,
/* 0x0f10 */ 62,192, 0,255, 98,214,255,255,128, 1, 0, 8,127,136,176, 64,
/* 0x0f20 */ 127, 35, 0, 56, 86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60,
/* 0x0f30 */ 65,157, 0, 32,127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0,
/* 0x0f40 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0f50 */ 124,230,194, 46, 85, 0,170,254,125, 64, 57,214,127,133, 80, 64,
/* 0x0f60 */ 64,156, 1,172,128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56,
/* 0x0f70 */ 32, 18, 0, 8,127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20,
/* 0x0f80 */ 29, 41, 6, 0, 32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,
/* 0x0f90 */ 125, 56, 74, 20,124, 6,195, 46,125, 72, 83,120, 56,201, 14,108,
/* 0x0fa0 */ 56, 96, 0, 1, 64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,
/* 0x0fb0 */ 127,245, 0,174, 99,123,255,255, 87,255, 8, 60, 87,252, 5,238,
/* 0x0fc0 */ 127,136,216, 64, 87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,
/* 0x0fd0 */ 127, 12,232, 0, 84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24,
/* 0x0fe0 */ 65,154, 7,176,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0ff0 */ 125, 37, 3,120,161,103, 2, 0, 85, 0,170,254,125, 64, 89,214,
/* 0x1000 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x1010 */ 124, 11, 2, 20, 47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,
/* 0x1020 */ 125, 10, 64, 80, 64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120,
/* 0x1030 */ 65,186, 0, 24, 72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80,
/* 0x1040 */ 56,100, 0, 1, 65,154, 0, 12, 47,131, 0,255, 64,157,255,108,
/* 0x1050 */ 47,131, 0,255, 65,157, 0,132, 63,224, 0,255, 99,255,255,255,
/* 0x1060 */ 127,136,248, 64, 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,
/* 0x1070 */ 124,227, 59,120, 65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0,
/* 0x1080 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46,
/* 0x1090 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,
/* 0x10a0 */ 124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,
/* 0x10b0 */ 125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46,
/* 0x10c0 */ 72, 0, 0, 16,124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1,
/* 0x10d0 */ 47,131, 0,255, 64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,
/* 0x10e0 */ 127,249,169,174, 59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0,
/* 0x10f0 */ 72, 0, 6,120, 47,151, 0, 9, 65,157, 0, 12, 58,247,255,253,
/* 0x1100 */ 72, 0, 6,104, 58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,
/* 0x1110 */ 127,136,176, 64, 84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,
/* 0x1120 */ 124, 6,195, 46,124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,
/* 0x1130 */ 127,140,232, 0, 65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,
/* 0x1140 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128,
/* 0x1150 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64,
/* 0x1160 */ 32, 11, 8, 0, 47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,
/* 0x1170 */ 176, 7, 1,128,126, 15,131,120,125, 72, 83,120,126, 48,139,120,
/* 0x1180 */ 56, 0, 0, 0,127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,
/* 0x1190 */ 124, 23, 3,120, 56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,
/* 0x11a0 */ 127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,
/* 0x11b0 */ 176, 7, 1,128, 65,157, 0, 32,127,140,232, 0, 65,158, 5,212,
/* 0x11c0 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x11d0 */ 57,140, 0, 1,161,103, 1,152, 85, 0,170,254,125, 64, 89,214,
/* 0x11e0 */ 127,133, 80, 64, 64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,
/* 0x11f0 */ 124, 0, 46,112, 86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20,
/* 0x1200 */ 84,107, 8, 60,176, 7, 1,152,125, 72, 83,120,124,233, 90, 20,
/* 0x1210 */ 65,157, 0, 32,127,140,232, 0, 65,158, 5,120,137, 44, 0, 0,
/* 0x1220 */ 84,160, 64, 46,124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,
/* 0x1230 */ 161,103, 1,224, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x1240 */ 64,156, 0, 72, 32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,
/* 0x1250 */ 124, 11, 2, 20,176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52,
/* 0x1260 */ 47,151, 0, 6, 57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,
/* 0x1270 */ 124, 26,200, 80,127,245, 0,174,125, 55, 75,120,127,249,169,174,
/* 0x1280 */ 59, 57, 0, 1, 72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,
/* 0x1290 */ 124,170, 40, 80,125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,
/* 0x12a0 */ 125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,
/* 0x12b0 */ 124,170, 40, 80,176, 7, 1,152, 65,157, 0, 32,127,140,232, 0,
/* 0x12c0 */ 65,158, 4,208,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x12d0 */ 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,176, 85, 0,170,254,
/* 0x12e0 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,
/* 0x12f0 */ 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,
/* 0x1300 */ 176, 7, 1,176, 72, 0, 0,140,125, 10, 64, 80,127,136,176, 64,
/* 0x1310 */ 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176,
/* 0x1320 */ 65,157, 0, 32,127,140,232, 0, 65,158, 4,104,137, 44, 0, 0,
/* 0x1330 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x1340 */ 161,103, 1,200, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x1350 */ 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,
/* 0x1360 */ 125, 72, 83,120,126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32,
/* 0x1370 */ 85, 96,217,126,124, 0, 88, 80,125,233,123,120,176, 7, 1,200,
/* 0x1380 */ 124,170, 40, 80,125, 10, 64, 80,126, 15,131,120,126, 48,139,120,
/* 0x1390 */ 127, 81,211,120,125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8,
/* 0x13a0 */ 64,157, 0, 8, 56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,
/* 0x13b0 */ 127,136,176, 64, 65,157, 0, 32,127,140,232, 0, 65,158, 3,212,
/* 0x13c0 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x13d0 */ 57,140, 0, 1,161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,
/* 0x13e0 */ 127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,
/* 0x13f0 */ 125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,
/* 0x1400 */ 56,137, 0, 4, 59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0,
/* 0x1410 */ 72, 0, 0,156,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,
/* 0x1420 */ 124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,
/* 0x1430 */ 127,140,232, 0, 65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,
/* 0x1440 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2,
/* 0x1450 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48,
/* 0x1460 */ 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,
/* 0x1470 */ 124, 11, 2, 20,125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8,
/* 0x1480 */ 59, 96, 0, 3,176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,
/* 0x1490 */ 124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80,
/* 0x14a0 */ 56,134, 2, 4, 59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166,
/* 0x14b0 */ 63,224, 0,255, 99,255,255,255, 56, 96, 0, 1,127,136,248, 64,
/* 0x14c0 */ 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120,
/* 0x14d0 */ 65,157, 0, 24, 65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x14e0 */ 57,140, 0, 1,125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,
/* 0x14f0 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x1500 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x1510 */ 64,156, 0, 16,125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,
/* 0x1520 */ 124,170, 40, 80, 56,103, 0, 1,125,100, 59, 46, 66, 0,255,144,
/* 0x1530 */ 56, 0, 0, 1, 47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,
/* 0x1540 */ 124, 99,226, 20, 65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,
/* 0x1550 */ 124,105, 27,120, 64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,
/* 0x1560 */ 125, 56, 74, 20, 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166,
/* 0x1570 */ 63,224, 0,255, 99,255,255,255, 56,128, 0, 1,127,136,248, 64,
/* 0x1580 */ 84,135, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,228, 59,120,
/* 0x1590 */ 65,157, 0, 24, 65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x15a0 */ 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,
/* 0x15b0 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x15c0 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x15d0 */ 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,
/* 0x15e0 */ 124,170, 40, 80, 56,135, 0, 1,125,102, 59, 46, 66, 0,255,144,
/* 0x15f0 */ 56,132,255,192, 47,132, 0, 3,124,154, 35,120, 64,157, 1, 40,
/* 0x1600 */ 47,132, 0, 13,124,137, 14,112, 84,128, 7,254, 57,105,255,255,
/* 0x1610 */ 96, 26, 0, 2,125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48,
/* 0x1620 */ 87, 73, 8, 60,125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80,
/* 0x1630 */ 56,201, 5, 94, 72, 0, 0,100, 57, 41,255,251,125, 41, 3,166,
/* 0x1640 */ 61, 96, 0,255, 97,107,255,255,127,136, 88, 64,127, 12,232, 0,
/* 0x1650 */ 84,169, 64, 46, 87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,
/* 0x1660 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x1670 */ 85, 8,248,126,127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80,
/* 0x1680 */ 99, 90, 0, 1, 66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166,
/* 0x1690 */ 87, 90, 32, 54, 56,216, 6, 68, 60,128, 0,255, 96,132,255,255,
/* 0x16a0 */ 59,128, 0, 1, 59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,
/* 0x16b0 */ 127, 12,232, 0, 84,169, 64, 46,124,255, 59,120, 65,157, 0, 24,
/* 0x16c0 */ 65,154, 0,208,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x16d0 */ 125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x16e0 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x16f0 */ 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,
/* 0x1700 */ 125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80,
/* 0x1710 */ 59,231, 0, 1,125,102, 59, 46,127, 90,227,120, 87,156, 8, 60,
/* 0x1720 */ 66, 0,255,136, 55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64,
/* 0x1730 */ 56, 99, 0, 2, 65,157, 0, 92,124, 26,200, 80,127,245, 0,174,
/* 0x1740 */ 56, 99,255,255,127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,
/* 0x1750 */ 125, 43, 25, 16,124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,
/* 0x1760 */ 125, 43, 0, 57, 64,130,255,212,127,153,160, 64, 65,156,247,172,
/* 0x1770 */ 60, 0, 0,255, 96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,
/* 0x1780 */ 127,140,232, 0, 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12,
/* 0x1790 */ 56, 96, 0, 1, 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,
/* 0x17a0 */ 124, 19, 96, 80,144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,
/* 0x17b0 */ 128, 1, 0,100,185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96,
/* 0x17c0 */ 12, 0,161,128, 8, 0,225,128, 0, 0,165,128, 0, 0, 33,128,
/* 0x17d0 */ 20, 58,165,124, 8, 0, 1,128,255,255,165, 56,166, 3, 8,124,
/* 0x17e0 */ 0, 0,230,232,166, 3,168,125, 80, 24,100,124, 80, 40,135,124,
/* 0x17f0 */ 1, 0, 99, 56, 1, 0,132, 56, 0, 0,134,248, 31, 0,231, 96,
/* 0x1800 */ 108, 56, 0,124, 64, 40, 7,124,172, 63, 0,124, 32, 0,231, 56,
/* 0x1810 */ 240,255,128, 65,172, 4, 0,124, 44, 1, 0, 76, 32, 0,128, 78,
/* 0x1820 */ 17,255, 65,248, 8, 0, 97,248, 16, 0,129,248, 24, 0,161,248,
/* 0x1830 */ 32, 0,193,248, 40, 0,225,248, 48, 0, 1,249, 56, 0, 33,249,
/* 0x1840 */ 64, 0, 65,249, 72, 0, 97,249, 80, 0,129,249, 88, 0,161,249,
/* 0x1850 */ 96, 0,193,249,104, 0,225,249,112, 0, 1,250,120, 0, 33,250,
/* 0x1860 */ 128, 0, 65,250,136, 0, 97,250,144, 0,129,250,152, 0,161,250,
/* 0x1870 */ 160, 0,193,250,168, 0,225,250,176, 0, 1,251,184, 0, 33,251,
/* 0x1880 */ 192, 0, 65,251,200, 0, 97,251,208, 0,129,251,216, 0,161,251,
/* 0x1890 */ 224, 0,193,251,232, 0,225,251,166, 2,232,127,252,255,191,130,
/* 0x18a0 */ 244,255,191,131,186, 1,181, 86, 20,170,189,127,252,255,181, 58,
/* 0x18b0 */ 0, 0, 96, 56,120,235,164,127, 3, 0,160, 56, 2, 16,192, 56,
/* 0x18c0 */ 255,255,224, 56, 0, 0, 0, 57, 0, 0, 32, 57,197, 0, 0, 56,
/* 0x18d0 */ 2, 0, 0, 68,255,255, 96, 56,120, 27,124,124,252, 1,160, 56,
/* 0x18e0 */ 166, 3,169,124, 20,234,131,124, 20,250,117,124,255,255, 3,140,
/* 0x18f0 */ 255,255, 4,156,248,255, 32, 67, 80,232,165,124,166, 3,136,124,
/* 0x1900 */ 166, 3,169,124, 32, 0,128, 78,255,255, 3,140,255,255, 4,156,
/* 0x1910 */ 248,255, 32, 67,232,255,223,131, 80,248,227,127, 20,250,228,127,
/* 0x1920 */ 20, 26,222,127,236,255, 95,128, 20, 18, 68,127, 20, 18, 99,127,
/* 0x1930 */ 232,255,123, 59, 4, 0, 90,128, 12, 0, 90, 59, 20, 18, 90,127,
/* 0x1940 */ 120,211, 88,127,120,219,121,127, 0, 0,122, 56, 49, 1, 0, 72,
/* 0x1950 */ 104, 0,130, 65, 20, 26,123,127,120, 27,119,124, 4, 0,122, 56,
/* 0x1960 */ 29, 1, 0, 72, 20, 26, 90,127,120, 27,118,124, 12, 0, 90, 59,
/* 0x1970 */ 249,255,225,250,166, 3,232,127, 12, 0,120, 56,120,179,196,126,
/* 0x1980 */ 120,203, 37,127,120, 11, 38,124, 8, 0,248,136,208,255, 33, 56,
/* 0x1990 */ 33, 0,128, 78, 56, 0, 33, 56, 9, 0,216,136, 0, 0, 6, 40,
/* 0x19a0 */ 160,255,130, 65, 10, 0,184,136, 0, 0,152,232,120,203, 35,127,
/* 0x19b0 */ 241, 0, 0, 72,140,255,255, 75,145, 0, 0, 72, 2, 0, 0, 68,
/* 0x19c0 */ 255,255, 96, 56, 0, 0, 65,232, 8, 0, 97,232, 16, 0,129,232,
/* 0x19d0 */ 24, 0,161,232, 32, 0,193,232, 40, 0,225,232, 48, 0, 1,233,
/* 0x19e0 */ 56, 0, 33,233, 64, 0, 65,233, 72, 0, 97,233, 80, 0,129,233,
/* 0x19f0 */ 88, 0,161,233, 96, 0,193,233,104, 0,225,233,112, 0, 1,234,
/* 0x1a00 */ 120, 0, 33,234,128, 0, 65,234,136, 0, 97,234,144, 0,129,234,
/* 0x1a10 */ 152, 0,161,234,160, 0,193,234,168, 0,225,234,176, 0, 1,235,
/* 0x1a20 */ 184, 0, 33,235,192, 0, 65,235,200, 0, 97,235,208, 0,129,235,
/* 0x1a30 */ 216, 0,161,235,224, 0,193,235,232, 0,225,235,240, 0, 33, 56,
/* 0x1a40 */ 166, 3, 72,124, 32, 4,128, 78, 35, 0, 64, 56,166, 2,104,124,
/* 0x1a50 */ 140, 0, 99, 56,166, 3, 73,124,252,255, 67,132,252,255, 89,148,
/* 0x1a60 */ 248,255, 32, 67,166, 3, 40,127,166, 3,201,127,120,227,131,127,
/* 0x1a70 */ 120,235,164,127, 73, 0, 0, 56, 32, 0,128, 78, 3, 0, 67,136,
/* 0x1a80 */ 2, 0, 99,137, 46, 68, 98, 81, 1, 0, 99,137, 30,130, 98, 81,
/* 0x1a90 */ 0, 0, 99,137, 14,192, 98, 81,121, 19, 67,124, 32, 0,128, 78,
/* 0x1aa0 */ 208, 0, 6, 40, 32, 0,194, 76,191,240,132, 84, 32, 0,194, 77,
/* 0x1ab0 */ 16, 0, 0, 60, 64, 0, 4,124, 8, 0,128, 65,120, 3, 4,124,
/* 0x1ac0 */ 32, 1,165, 56,120, 27,103,124,252,255, 99, 56,166, 3,137,124,
/* 0x1ad0 */ 28, 0, 0, 72,186, 2, 75, 84, 80, 88, 99,125, 20, 58,107,125,
/* 0x1ae0 */ 186, 1, 98, 81, 0, 0, 67,144, 32, 0, 64, 79, 4, 0, 67,132,
/* 0x1af0 */ 190, 85, 75, 84, 64, 40, 11,124,220,255,194, 65,240,255, 32, 67,
/* 0x1b00 */ 32, 0,128, 78, 28,253,255, 75,102,105,108,101, 32,102,111,114,
/* 0x1b10 */ 109, 97,116, 32,101,108,102, 54, 52, 45,112,111,119,101,114,112,
/* 0x1b20 */ 99,108,101, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,
/* 0x1b30 */ 100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1b40 */ 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32,
/* 0x1b50 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65,
/* 0x1b60 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,
/* 0x1b70 */ 105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,
/* 0x1b80 */ 108, 97,103,115, 10, 32, 32, 48, 32, 77, 65, 67, 79, 83, 48, 48,
/* 0x1b90 */ 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, 32,
/* 0x1ba0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bb0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bc0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, 50,
/* 0x1bd0 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82,
/* 0x1be0 */ 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32,
/* 0x1bf0 */ 32, 49, 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32,
/* 0x1c00 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1c10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1c20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1c30 */ 48, 48, 48, 48, 48, 52, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67,
/* 0x1c40 */ 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76,
/* 0x1c50 */ 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32,
/* 0x1c60 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 54, 56, 32, 32, 48, 48,
/* 0x1c70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x1c80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c90 */ 32, 32, 48, 48, 48, 48, 48, 48, 52, 56, 32, 32, 50, 42, 42, 48,
/* 0x1ca0 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79,
/* 0x1cb0 */ 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32,
/* 0x1cc0 */ 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48,
/* 0x1cd0 */ 48, 48, 48, 49, 52, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ce0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1cf0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x1d00 */ 48, 49, 98, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84,
/* 0x1d10 */ 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65,
/* 0x1d20 */ 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32,
/* 0x1d30 */ 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 48, 56,
/* 0x1d40 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d50 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d60 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50,102, 52, 32, 32,
/* 0x1d70 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32,
/* 0x1d80 */ 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10,
/* 0x1d90 */ 32, 32, 53, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32,
/* 0x1da0 */ 32, 32, 48, 48, 48, 48, 48, 48, 56, 99, 32, 32, 48, 48, 48, 48,
/* 0x1db0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1dc0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x1dd0 */ 48, 48, 48, 48, 48, 51,102, 99, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x1de0 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44,
/* 0x1df0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90,
/* 0x1e00 */ 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48,
/* 0x1e10 */ 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e20 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e30 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52,
/* 0x1e40 */ 56, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1e50 */ 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55,
/* 0x1e60 */ 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48,
/* 0x1e70 */ 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1e90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1ea0 */ 48, 48,101, 50, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x1eb0 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10,
/* 0x1ec0 */ 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32,
/* 0x1ed0 */ 32, 32, 48, 48, 48, 48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48,
/* 0x1ee0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1ef0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x1f00 */ 48, 48, 48, 48, 49, 55, 99, 48, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x1f10 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78,
/* 0x1f20 */ 76, 89, 10, 32, 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32,
/* 0x1f30 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 99, 32, 32, 48,
/* 0x1f40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1f50 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f60 */ 48, 32, 32, 48, 48, 48, 48, 49, 55,101, 48, 32, 32, 50, 42, 42,
/* 0x1f70 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65,
/* 0x1f80 */ 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 67, 70, 76, 85, 83, 72,
/* 0x1f90 */ 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 52,
/* 0x1fa0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1fb0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1fc0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55,102, 99, 32, 32,
/* 0x1fd0 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32,
/* 0x1fe0 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70,
/* 0x1ff0 */ 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48,
/* 0x2000 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2010 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2020 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 56, 50,
/* 0x2030 */ 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84,
/* 0x2040 */ 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, 32,
/* 0x2050 */ 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48,
/* 0x2060 */ 48, 48, 48, 50,101, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2070 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x2080 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x2090 */ 49, 56, 50, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84,
/* 0x20a0 */ 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83,
/* 0x20b0 */ 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48,
/* 0x20c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x20d0 */ 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48,
/* 0x20e0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20f0 */ 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48,
/* 0x2100 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x2110 */ 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48,
/* 0x2120 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2130 */ 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x2140 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
/* 0x2150 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48,
/* 0x2160 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77,
/* 0x2170 */ 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2180 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 77, 65,
/* 0x2190 */ 67, 79, 83, 48, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21a0 */ 48, 48, 48, 48, 48, 48, 48, 32, 77, 65, 67, 79, 83, 48, 48, 48,
/* 0x21b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21c0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 72, 69,
/* 0x21d0 */ 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21e0 */ 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68, 10, 48, 48, 48,
/* 0x21f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x2200 */ 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48,
/* 0x2210 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86,
/* 0x2220 */ 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2230 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50,
/* 0x2240 */ 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2250 */ 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x2260 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
/* 0x2270 */ 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2280 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48,
/* 0x2290 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x22a0 */ 108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70,
/* 0x22b0 */ 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x22c0 */ 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48,
/* 0x22d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x22e0 */ 108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67,
/* 0x22f0 */ 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2300 */ 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48,
/* 0x2310 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2320 */ 108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67,
/* 0x2330 */ 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2340 */ 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48,
/* 0x2350 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2360 */ 108, 32, 32, 32, 32,100, 32, 32, 67, 70, 76, 85, 83, 72, 9, 48,
/* 0x2370 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2380 */ 67, 70, 76, 85, 83, 72, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2390 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x23a0 */ 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x23b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73,
/* 0x23c0 */ 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x23d0 */ 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 32, 32, 77, 65, 67, 79,
/* 0x23e0 */ 83, 48, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x23f0 */ 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, 10, 10, 82, 69,
/* 0x2400 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
/* 0x2410 */ 32, 70, 79, 82, 32, 91, 77, 65, 67, 79, 83, 48, 48, 48, 93, 58,
/* 0x2420 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2430 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2440 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
/* 0x2450 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67,
/* 0x2460 */ 54, 52, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 69, 76, 70,
/* 0x2470 */ 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2480 */ 48, 48, 48, 48, 48, 50,101, 52, 10, 10, 82, 69, 76, 79, 67, 65,
/* 0x2490 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82,
/* 0x24a0 */ 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84,
/* 0x24b0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32,
/* 0x24c0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76,
/* 0x24d0 */ 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x24e0 */ 48,100, 52, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49,
/* 0x24f0 */ 52, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10,
/* 0x2500 */ 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82,
/* 0x2510 */ 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10,
/* 0x2520 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2530 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2540 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x2550 */ 48, 48, 48, 48, 48, 48, 48, 99, 99, 32, 82, 95, 80, 80, 67, 54,
/* 0x2560 */ 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, 86, 95,
/* 0x2570 */ 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
/* 0x2580 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82,
/* 0x2590 */ 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32,
/* 0x25a0 */ 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32,
/* 0x25b0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48,
/* 0x25c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 97, 56, 32,
/* 0x25d0 */ 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32,
/* 0x25e0 */ 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79,
/* 0x25f0 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0x2600 */ 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58,
/* 0x2610 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2620 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2630 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
/* 0x2640 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67,
/* 0x2650 */ 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 76, 90, 77,
/* 0x2660 */ 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48,
/* 0x2670 */ 48, 48, 48, 48, 48, 48, 48, 48, 50, 48, 10
};

View File

@ -0,0 +1,614 @@
/* ppc64le-darwin.macho-entry.h
created from ppc64le-darwin.macho-entry.bin, 9187 (0x23e3) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2015 Laszlo Molnar
Copyright (C) 2000-2015 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#define STUB_PPC64LE_DARWIN_MACHO_ENTRY_SIZE 9187
#define STUB_PPC64LE_DARWIN_MACHO_ENTRY_ADLER32 0xc60149d6
#define STUB_PPC64LE_DARWIN_MACHO_ENTRY_CRC32 0x76bf1a09
unsigned char stub_ppc64le_darwin_macho_entry[9187] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 1, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 22, 0, 19, 0,
/* 0x0040 */ 1, 0, 0, 72,236, 41, 0,124,166, 2,168,125, 8, 0, 7, 40,
/* 0x0050 */ 92, 1,130, 64, 0, 0,166,248, 20, 26,132,124, 0,128, 0, 60,
/* 0x0060 */ 198, 7, 0,120, 0,128, 32, 61,198, 7, 41,121,255,255, 99, 56,
/* 0x0070 */ 255,255,165, 56,255,255, 64, 57, 36, 1, 0, 72, 1, 0, 32, 57,
/* 0x0080 */ 46, 24, 41,125, 4, 0, 99, 56,198, 7, 41,121, 64, 0, 41,124,
/* 0x0090 */ 20, 72, 41,125, 1, 0,128, 57,198, 7,140,121,120, 99, 41,125,
/* 0x00a0 */ 32, 0,128, 78, 1, 0, 3,141, 1, 0, 5,157, 64, 0, 41,124,
/* 0x00b0 */ 20, 74, 41,125,201,255,194, 65,236,255,225, 65, 1, 0,224, 56,
/* 0x00c0 */ 20, 0, 0, 72,255,255,231, 56, 21, 72, 41,125,177,255,194, 65,
/* 0x00d0 */ 20, 57,231,124, 21, 72, 41,125,165,255,194, 65, 20, 57,231,124,
/* 0x00e0 */ 64, 0, 41,124, 20, 74, 41,125,149,255,194, 65,216,255,192, 65,
/* 0x00f0 */ 0, 0, 0, 57,253,255,231, 52, 46, 64,231, 84,255,255,128, 57,
/* 0x0100 */ 198, 7,140,121,120, 99,231,124, 32, 0,192, 65, 1, 0, 67,140,
/* 0x0110 */ 249, 16,234,124,112, 14, 74,125, 0, 0,194, 65, 1, 0, 66,112,
/* 0x0120 */ 80, 0,226, 65, 20, 0, 0, 72, 64, 0, 41,124, 20, 74, 41,125,
/* 0x0130 */ 77,255,194, 65, 60, 0,225, 65, 1, 0, 0, 57, 64, 0, 41,124,
/* 0x0140 */ 20, 74, 41,125, 57,255,194, 65, 40, 0,225, 65, 21, 72, 41,125,
/* 0x0150 */ 45,255,194, 65, 20, 65, 8,125, 64, 0, 41,124, 20, 74, 41,125,
/* 0x0160 */ 29,255,194, 65,232,255,192, 65, 2, 0, 8, 57, 16, 0, 0, 72,
/* 0x0170 */ 21, 72, 41,125, 9,255,194, 65, 20, 65, 8,125,255,250,234, 32,
/* 0x0180 */ 2, 0, 8, 57,148, 1, 8,125, 20, 42,234,124,166, 3, 9,125,
/* 0x0190 */ 1, 0, 7,141, 1, 0, 5,157,248,255, 32, 67, 0, 1,224, 56,
/* 0x01a0 */ 236, 41, 7,124, 44, 26, 7,124, 4,255,255, 75,236, 41, 0,124,
/* 0x01b0 */ 166, 2,168,125, 5, 0, 7, 40, 56, 1,130, 64, 0, 0,166,248,
/* 0x01c0 */ 20, 26,132,124, 0,128, 0, 60,198, 7, 0,120, 0,128, 32, 61,
/* 0x01d0 */ 198, 7, 0,120,255,255, 99, 56,255,255,165, 56,255,255, 64, 57,
/* 0x01e0 */ 0, 1, 0, 72, 1, 0, 32, 57, 46, 24, 41,125, 4, 0, 99, 56,
/* 0x01f0 */ 198, 7, 41,121, 64, 0, 9,124, 20, 72, 41,125, 1, 0, 41, 97,
/* 0x0200 */ 32, 0,128, 78, 1, 0, 3,141, 1, 0, 5,157, 64, 0, 41,124,
/* 0x0210 */ 20, 74, 41,125,209,255,194, 65,236,255,225, 65, 1, 0,224, 56,
/* 0x0220 */ 20, 0, 0, 72,255,255,231, 56, 21, 72, 41,125,185,255,194, 65,
/* 0x0230 */ 21, 57,231,124, 21, 72, 41,125,173,255,194, 65, 21, 57,231,124,
/* 0x0240 */ 64, 0, 41,124, 20, 74, 41,125,157,255,194, 65,216,255,192, 65,
/* 0x0250 */ 0, 0, 0, 57,253,255,231, 52, 46, 64,231, 84,255,255,128, 57,
/* 0x0260 */ 198, 7,140,121,120, 99,231,124, 24, 0,192, 65, 1, 0, 67,140,
/* 0x0270 */ 249, 16,234,124,112, 14, 74,125, 0, 0,194, 65, 12, 0, 0, 72,
/* 0x0280 */ 21, 72, 41,125, 97,255,194, 65, 21, 65, 8,125, 21, 72, 41,125,
/* 0x0290 */ 85,255,194, 65, 21, 65, 8,125, 40, 0,130, 64, 1, 0, 0, 57,
/* 0x02a0 */ 21, 72, 41,125, 65,255,194, 65, 21, 65, 8,125, 64, 0, 41,124,
/* 0x02b0 */ 20, 74, 41,125, 49,255,194, 65,232,255,192, 65, 2, 0, 8, 57,
/* 0x02c0 */ 255,250,234, 32, 1, 0, 8, 57,148, 1, 8,125, 20, 42,234,124,
/* 0x02d0 */ 166, 3, 9,125, 1, 0, 7,141, 1, 0, 5,157,248,255, 32, 67,
/* 0x02e0 */ 0, 1,224, 56,236, 41, 7,124, 44, 26, 7,124, 32,255,255, 75,
/* 0x02f0 */ 236, 41, 0,124,166, 2,168,125, 2, 0, 7, 40,252, 0,130, 64,
/* 0x0300 */ 0, 0,166,248, 20, 26,132,124, 0,128, 0, 60,198, 7, 0,120,
/* 0x0310 */ 0,128, 32, 61,198, 7, 0,120,255,255, 99, 56,255,255,165, 56,
/* 0x0320 */ 255,255, 64, 57,196, 0, 0, 72, 64, 0, 41,124, 20, 72, 41,125,
/* 0x0330 */ 32, 0,226, 76, 1, 0, 32, 57, 46, 24, 41,125, 4, 0, 99, 56,
/* 0x0340 */ 198, 7, 41,121, 64, 0, 41,124, 20, 73, 41,125, 32, 0,128, 78,
/* 0x0350 */ 1, 0, 3,141, 1, 0, 5,157,209,255,255, 75,244,255,225, 65,
/* 0x0360 */ 1, 0,224, 56,197,255,255, 75, 21, 57,231,124,189,255,255, 75,
/* 0x0370 */ 244,255,192, 65,253,255,231, 52, 0, 0, 0, 57, 32, 0,192, 65,
/* 0x0380 */ 1, 0, 67,140, 46, 64,231, 84,255,255,128, 57,198, 7,140,121,
/* 0x0390 */ 120, 99,231,124,249, 16,234,124, 0, 0,194, 65,141,255,255, 75,
/* 0x03a0 */ 21, 65, 8,125,133,255,255, 75, 21, 65, 8,125, 1, 0,224, 56,
/* 0x03b0 */ 28, 0,194, 64, 3, 0,224, 56, 1, 0, 0, 57,109,255,255, 75,
/* 0x03c0 */ 21, 65, 8,125,101,255,255, 75,244,255,192, 65,255,242, 74, 32,
/* 0x03d0 */ 20, 57, 8,125, 20, 42,234,124,166, 3, 9,125, 1, 0, 7,141,
/* 0x03e0 */ 1, 0, 5,157,248,255, 32, 67, 0, 1,224, 56,236, 41, 7,124,
/* 0x03f0 */ 44, 26, 7,124,100,255,255, 75, 14, 0, 7, 40, 0, 0,130, 64,
/* 0x0400 */ 166, 2, 8,124,120, 51,201,124, 0, 0, 6,129,120, 43,167,124,
/* 0x0410 */ 254,255,164, 56, 2, 0,131, 56, 8, 0, 1,144, 0, 0, 3,136,
/* 0x0420 */ 254,232, 11, 84,126, 7, 2, 84, 0,250, 96, 56, 48, 88, 99,124,
/* 0x0430 */ 124,241, 99, 56,120, 11, 38,124, 20, 26, 33,124, 52, 0, 33, 84,
/* 0x0440 */ 0, 0, 0, 56,120, 51,195,124, 0, 0, 9,144,252,255, 3,148,
/* 0x0450 */ 64, 24, 1,124,248,255,128, 65, 0, 0,193,144,255,255, 4,136,
/* 0x0460 */ 8, 0,225,144, 16, 0,193, 56, 12, 0, 33,145, 20, 0, 97, 56,
/* 0x0470 */ 62,225, 11, 84, 62, 7, 0, 84, 2, 0, 67,152, 1, 0, 99,153,
/* 0x0480 */ 0, 0, 3,152,124, 8, 2,166,148, 33,255,160,189,193, 0, 24,
/* 0x0490 */ 144, 1, 0,100, 59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,
/* 0x04a0 */ 138, 67, 0, 0,147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,
/* 0x04b0 */ 125, 40, 3,166,124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48,
/* 0x04c0 */ 56, 9, 7, 54,127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,
/* 0x04d0 */ 125, 41, 80, 48, 57, 41,255,255, 57,107,255,255,145, 33, 0, 8,
/* 0x04e0 */ 124,206, 51,120,124,147, 35,120,124,245, 59,120,125, 20, 67,120,
/* 0x04f0 */ 145, 97, 0, 12, 59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0,
/* 0x0500 */ 59, 64, 0, 1, 58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1,
/* 0x0510 */ 57, 32, 0, 0, 64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0,
/* 0x0520 */ 85, 32, 8, 60,125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,
/* 0x0530 */ 127,179, 42, 20,126,108,155,120, 56,160, 0, 0, 57, 0,255,255,
/* 0x0540 */ 57, 96, 0, 0,127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4,
/* 0x0550 */ 84,169, 64, 46, 65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,
/* 0x0560 */ 125, 37, 3,120, 64,153,255,224,127,153,160, 64, 64,156, 8,100,
/* 0x0570 */ 62,192, 0,255, 98,214,255,255,128, 1, 0, 8,127,136,176, 64,
/* 0x0580 */ 127, 35, 0, 56, 86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60,
/* 0x0590 */ 65,157, 0, 32,127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0,
/* 0x05a0 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x05b0 */ 124,230,194, 46, 85, 0,170,254,125, 64, 57,214,127,133, 80, 64,
/* 0x05c0 */ 64,156, 1,172,128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56,
/* 0x05d0 */ 32, 18, 0, 8,127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20,
/* 0x05e0 */ 29, 41, 6, 0, 32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,
/* 0x05f0 */ 125, 56, 74, 20,124, 6,195, 46,125, 72, 83,120, 56,201, 14,108,
/* 0x0600 */ 56, 96, 0, 1, 64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,
/* 0x0610 */ 127,245, 0,174, 99,123,255,255, 87,255, 8, 60, 87,252, 5,238,
/* 0x0620 */ 127,136,216, 64, 87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,
/* 0x0630 */ 127, 12,232, 0, 84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24,
/* 0x0640 */ 65,154, 7,176,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0650 */ 125, 37, 3,120,161,103, 2, 0, 85, 0,170,254,125, 64, 89,214,
/* 0x0660 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x0670 */ 124, 11, 2, 20, 47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,
/* 0x0680 */ 125, 10, 64, 80, 64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120,
/* 0x0690 */ 65,186, 0, 24, 72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80,
/* 0x06a0 */ 56,100, 0, 1, 65,154, 0, 12, 47,131, 0,255, 64,157,255,108,
/* 0x06b0 */ 47,131, 0,255, 65,157, 0,132, 63,224, 0,255, 99,255,255,255,
/* 0x06c0 */ 127,136,248, 64, 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,
/* 0x06d0 */ 124,227, 59,120, 65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0,
/* 0x06e0 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46,
/* 0x06f0 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,
/* 0x0700 */ 124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,
/* 0x0710 */ 125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46,
/* 0x0720 */ 72, 0, 0, 16,124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1,
/* 0x0730 */ 47,131, 0,255, 64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,
/* 0x0740 */ 127,249,169,174, 59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0,
/* 0x0750 */ 72, 0, 6,120, 47,151, 0, 9, 65,157, 0, 12, 58,247,255,253,
/* 0x0760 */ 72, 0, 6,104, 58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,
/* 0x0770 */ 127,136,176, 64, 84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,
/* 0x0780 */ 124, 6,195, 46,124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,
/* 0x0790 */ 127,140,232, 0, 65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,
/* 0x07a0 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128,
/* 0x07b0 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64,
/* 0x07c0 */ 32, 11, 8, 0, 47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,
/* 0x07d0 */ 176, 7, 1,128,126, 15,131,120,125, 72, 83,120,126, 48,139,120,
/* 0x07e0 */ 56, 0, 0, 0,127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,
/* 0x07f0 */ 124, 23, 3,120, 56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,
/* 0x0800 */ 127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,
/* 0x0810 */ 176, 7, 1,128, 65,157, 0, 32,127,140,232, 0, 65,158, 5,212,
/* 0x0820 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x0830 */ 57,140, 0, 1,161,103, 1,152, 85, 0,170,254,125, 64, 89,214,
/* 0x0840 */ 127,133, 80, 64, 64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,
/* 0x0850 */ 124, 0, 46,112, 86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20,
/* 0x0860 */ 84,107, 8, 60,176, 7, 1,152,125, 72, 83,120,124,233, 90, 20,
/* 0x0870 */ 65,157, 0, 32,127,140,232, 0, 65,158, 5,120,137, 44, 0, 0,
/* 0x0880 */ 84,160, 64, 46,124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,
/* 0x0890 */ 161,103, 1,224, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x08a0 */ 64,156, 0, 72, 32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,
/* 0x08b0 */ 124, 11, 2, 20,176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52,
/* 0x08c0 */ 47,151, 0, 6, 57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,
/* 0x08d0 */ 124, 26,200, 80,127,245, 0,174,125, 55, 75,120,127,249,169,174,
/* 0x08e0 */ 59, 57, 0, 1, 72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,
/* 0x08f0 */ 124,170, 40, 80,125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,
/* 0x0900 */ 125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,
/* 0x0910 */ 124,170, 40, 80,176, 7, 1,152, 65,157, 0, 32,127,140,232, 0,
/* 0x0920 */ 65,158, 4,208,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x0930 */ 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,176, 85, 0,170,254,
/* 0x0940 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,
/* 0x0950 */ 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,
/* 0x0960 */ 176, 7, 1,176, 72, 0, 0,140,125, 10, 64, 80,127,136,176, 64,
/* 0x0970 */ 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176,
/* 0x0980 */ 65,157, 0, 32,127,140,232, 0, 65,158, 4,104,137, 44, 0, 0,
/* 0x0990 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x09a0 */ 161,103, 1,200, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x09b0 */ 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,
/* 0x09c0 */ 125, 72, 83,120,126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32,
/* 0x09d0 */ 85, 96,217,126,124, 0, 88, 80,125,233,123,120,176, 7, 1,200,
/* 0x09e0 */ 124,170, 40, 80,125, 10, 64, 80,126, 15,131,120,126, 48,139,120,
/* 0x09f0 */ 127, 81,211,120,125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8,
/* 0x0a00 */ 64,157, 0, 8, 56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,
/* 0x0a10 */ 127,136,176, 64, 65,157, 0, 32,127,140,232, 0, 65,158, 3,212,
/* 0x0a20 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x0a30 */ 57,140, 0, 1,161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,
/* 0x0a40 */ 127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,
/* 0x0a50 */ 125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,
/* 0x0a60 */ 56,137, 0, 4, 59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0,
/* 0x0a70 */ 72, 0, 0,156,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,
/* 0x0a80 */ 124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,
/* 0x0a90 */ 127,140,232, 0, 65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,
/* 0x0aa0 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2,
/* 0x0ab0 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48,
/* 0x0ac0 */ 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,
/* 0x0ad0 */ 124, 11, 2, 20,125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8,
/* 0x0ae0 */ 59, 96, 0, 3,176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,
/* 0x0af0 */ 124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80,
/* 0x0b00 */ 56,134, 2, 4, 59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166,
/* 0x0b10 */ 63,224, 0,255, 99,255,255,255, 56, 96, 0, 1,127,136,248, 64,
/* 0x0b20 */ 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120,
/* 0x0b30 */ 65,157, 0, 24, 65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0b40 */ 57,140, 0, 1,125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,
/* 0x0b50 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x0b60 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x0b70 */ 64,156, 0, 16,125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,
/* 0x0b80 */ 124,170, 40, 80, 56,103, 0, 1,125,100, 59, 46, 66, 0,255,144,
/* 0x0b90 */ 56, 0, 0, 1, 47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,
/* 0x0ba0 */ 124, 99,226, 20, 65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,
/* 0x0bb0 */ 124,105, 27,120, 64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,
/* 0x0bc0 */ 125, 56, 74, 20, 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166,
/* 0x0bd0 */ 63,224, 0,255, 99,255,255,255, 56,128, 0, 1,127,136,248, 64,
/* 0x0be0 */ 84,135, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,228, 59,120,
/* 0x0bf0 */ 65,157, 0, 24, 65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0c00 */ 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,
/* 0x0c10 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x0c20 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x0c30 */ 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,
/* 0x0c40 */ 124,170, 40, 80, 56,135, 0, 1,125,102, 59, 46, 66, 0,255,144,
/* 0x0c50 */ 56,132,255,192, 47,132, 0, 3,124,154, 35,120, 64,157, 1, 40,
/* 0x0c60 */ 47,132, 0, 13,124,137, 14,112, 84,128, 7,254, 57,105,255,255,
/* 0x0c70 */ 96, 26, 0, 2,125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48,
/* 0x0c80 */ 87, 73, 8, 60,125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80,
/* 0x0c90 */ 56,201, 5, 94, 72, 0, 0,100, 57, 41,255,251,125, 41, 3,166,
/* 0x0ca0 */ 61, 96, 0,255, 97,107,255,255,127,136, 88, 64,127, 12,232, 0,
/* 0x0cb0 */ 84,169, 64, 46, 87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,
/* 0x0cc0 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x0cd0 */ 85, 8,248,126,127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80,
/* 0x0ce0 */ 99, 90, 0, 1, 66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166,
/* 0x0cf0 */ 87, 90, 32, 54, 56,216, 6, 68, 60,128, 0,255, 96,132,255,255,
/* 0x0d00 */ 59,128, 0, 1, 59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,
/* 0x0d10 */ 127, 12,232, 0, 84,169, 64, 46,124,255, 59,120, 65,157, 0, 24,
/* 0x0d20 */ 65,154, 0,208,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0d30 */ 125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x0d40 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x0d50 */ 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,
/* 0x0d60 */ 125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80,
/* 0x0d70 */ 59,231, 0, 1,125,102, 59, 46,127, 90,227,120, 87,156, 8, 60,
/* 0x0d80 */ 66, 0,255,136, 55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64,
/* 0x0d90 */ 56, 99, 0, 2, 65,157, 0, 92,124, 26,200, 80,127,245, 0,174,
/* 0x0da0 */ 56, 99,255,255,127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,
/* 0x0db0 */ 125, 43, 25, 16,124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,
/* 0x0dc0 */ 125, 43, 0, 57, 64,130,255,212,127,153,160, 64, 65,156,247,172,
/* 0x0dd0 */ 60, 0, 0,255, 96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,
/* 0x0de0 */ 127,140,232, 0, 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12,
/* 0x0df0 */ 56, 96, 0, 1, 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,
/* 0x0e00 */ 124, 19, 96, 80,144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,
/* 0x0e10 */ 128, 1, 0,100,185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96,
/* 0x0e20 */ 124, 8, 2,166,148, 33,255,160,189,193, 0, 24,144, 1, 0,100,
/* 0x0e30 */ 59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0,
/* 0x0e40 */ 147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166,
/* 0x0e50 */ 124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54,
/* 0x0e60 */ 127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48,
/* 0x0e70 */ 57, 41,255,255, 57,107,255,255,145, 33, 0, 8,124,206, 51,120,
/* 0x0e80 */ 124,147, 35,120,124,245, 59,120,125, 20, 67,120,145, 97, 0, 12,
/* 0x0e90 */ 59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1,
/* 0x0ea0 */ 58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0,
/* 0x0eb0 */ 64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60,
/* 0x0ec0 */ 125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20,
/* 0x0ed0 */ 126,108,155,120, 56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0,
/* 0x0ee0 */ 127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46,
/* 0x0ef0 */ 65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120,
/* 0x0f00 */ 64,153,255,224,127,153,160, 64, 64,156, 8,100, 62,192, 0,255,
/* 0x0f10 */ 98,214,255,255,128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56,
/* 0x0f20 */ 86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32,
/* 0x0f30 */ 127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46,
/* 0x0f40 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46,
/* 0x0f50 */ 85, 0,170,254,125, 64, 57,214,127,133, 80, 64, 64,156, 1,172,
/* 0x0f60 */ 128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8,
/* 0x0f70 */ 127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0,
/* 0x0f80 */ 32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20,
/* 0x0f90 */ 124, 6,195, 46,125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1,
/* 0x0fa0 */ 64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,127,245, 0,174,
/* 0x0fb0 */ 99,123,255,255, 87,255, 8, 60, 87,252, 5,238,127,136,216, 64,
/* 0x0fc0 */ 87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0,
/* 0x0fd0 */ 84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176,
/* 0x0fe0 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x0ff0 */ 161,103, 2, 0, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,
/* 0x1000 */ 127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,
/* 0x1010 */ 47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,125, 10, 64, 80,
/* 0x1020 */ 64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24,
/* 0x1030 */ 72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1,
/* 0x1040 */ 65,154, 0, 12, 47,131, 0,255, 64,157,255,108, 47,131, 0,255,
/* 0x1050 */ 65,157, 0,132, 63,224, 0,255, 99,255,255,255,127,136,248, 64,
/* 0x1060 */ 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120,
/* 0x1070 */ 65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x1080 */ 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,
/* 0x1090 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x10a0 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x10b0 */ 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,
/* 0x10c0 */ 124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255,
/* 0x10d0 */ 64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,127,249,169,174,
/* 0x10e0 */ 59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120,
/* 0x10f0 */ 47,151, 0, 9, 65,157, 0, 12, 58,247,255,253, 72, 0, 6,104,
/* 0x1100 */ 58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64,
/* 0x1110 */ 84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46,
/* 0x1120 */ 124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,127,140,232, 0,
/* 0x1130 */ 65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x1140 */ 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128, 85, 0,170,254,
/* 0x1150 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0,
/* 0x1160 */ 47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128,
/* 0x1170 */ 126, 15,131,120,125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0,
/* 0x1180 */ 127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120,
/* 0x1190 */ 56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64,
/* 0x11a0 */ 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128,
/* 0x11b0 */ 65,157, 0, 32,127,140,232, 0, 65,158, 5,212,137, 44, 0, 0,
/* 0x11c0 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x11d0 */ 161,103, 1,152, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x11e0 */ 64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,124, 0, 46,112,
/* 0x11f0 */ 86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60,
/* 0x1200 */ 176, 7, 1,152,125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32,
/* 0x1210 */ 127,140,232, 0, 65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46,
/* 0x1220 */ 124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224,
/* 0x1230 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72,
/* 0x1240 */ 32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20,
/* 0x1250 */ 176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6,
/* 0x1260 */ 57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80,
/* 0x1270 */ 127,245, 0,174,125, 55, 75,120,127,249,169,174, 59, 57, 0, 1,
/* 0x1280 */ 72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,
/* 0x1290 */ 125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80,
/* 0x12a0 */ 127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,
/* 0x12b0 */ 176, 7, 1,152, 65,157, 0, 32,127,140,232, 0, 65,158, 4,208,
/* 0x12c0 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x12d0 */ 57,140, 0, 1,161,103, 1,176, 85, 0,170,254,125, 64, 89,214,
/* 0x12e0 */ 127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,
/* 0x12f0 */ 124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,176, 7, 1,176,
/* 0x1300 */ 72, 0, 0,140,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,
/* 0x1310 */ 124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32,
/* 0x1320 */ 127,140,232, 0, 65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46,
/* 0x1330 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200,
/* 0x1340 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32,
/* 0x1350 */ 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,
/* 0x1360 */ 126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126,
/* 0x1370 */ 124, 0, 88, 80,125,233,123,120,176, 7, 1,200,124,170, 40, 80,
/* 0x1380 */ 125, 10, 64, 80,126, 15,131,120,126, 48,139,120,127, 81,211,120,
/* 0x1390 */ 125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8,
/* 0x13a0 */ 56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,127,136,176, 64,
/* 0x13b0 */ 65,157, 0, 32,127,140,232, 0, 65,158, 3,212,137, 44, 0, 0,
/* 0x13c0 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x13d0 */ 161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x13e0 */ 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,
/* 0x13f0 */ 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4,
/* 0x1400 */ 59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156,
/* 0x1410 */ 125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,
/* 0x1420 */ 124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0,
/* 0x1430 */ 65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x1440 */ 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2, 85, 0,170,254,
/* 0x1450 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0,
/* 0x1460 */ 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,
/* 0x1470 */ 125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3,
/* 0x1480 */ 176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80,
/* 0x1490 */ 124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4,
/* 0x14a0 */ 59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166, 63,224, 0,255,
/* 0x14b0 */ 99,255,255,255, 56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60,
/* 0x14c0 */ 127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24,
/* 0x14d0 */ 65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x14e0 */ 125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x14f0 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x1500 */ 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,
/* 0x1510 */ 125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80,
/* 0x1520 */ 56,103, 0, 1,125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1,
/* 0x1530 */ 47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20,
/* 0x1540 */ 65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,124,105, 27,120,
/* 0x1550 */ 64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20,
/* 0x1560 */ 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255,
/* 0x1570 */ 99,255,255,255, 56,128, 0, 1,127,136,248, 64, 84,135, 8, 60,
/* 0x1580 */ 127, 12,232, 0, 84,169, 64, 46,124,228, 59,120, 65,157, 0, 24,
/* 0x1590 */ 65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x15a0 */ 125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x15b0 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x15c0 */ 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,
/* 0x15d0 */ 125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80,
/* 0x15e0 */ 56,135, 0, 1,125,102, 59, 46, 66, 0,255,144, 56,132,255,192,
/* 0x15f0 */ 47,132, 0, 3,124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13,
/* 0x1600 */ 124,137, 14,112, 84,128, 7,254, 57,105,255,255, 96, 26, 0, 2,
/* 0x1610 */ 125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60,
/* 0x1620 */ 125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94,
/* 0x1630 */ 72, 0, 0,100, 57, 41,255,251,125, 41, 3,166, 61, 96, 0,255,
/* 0x1640 */ 97,107,255,255,127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46,
/* 0x1650 */ 87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0,
/* 0x1660 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, 85, 8,248,126,
/* 0x1670 */ 127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1,
/* 0x1680 */ 66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54,
/* 0x1690 */ 56,216, 6, 68, 60,128, 0,255, 96,132,255,255, 59,128, 0, 1,
/* 0x16a0 */ 59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0,
/* 0x16b0 */ 84,169, 64, 46,124,255, 59,120, 65,157, 0, 24, 65,154, 0,208,
/* 0x16c0 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x16d0 */ 125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,
/* 0x16e0 */ 127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,
/* 0x16f0 */ 125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,
/* 0x1700 */ 124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1,
/* 0x1710 */ 125,102, 59, 46,127, 90,227,120, 87,156, 8, 60, 66, 0,255,136,
/* 0x1720 */ 55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2,
/* 0x1730 */ 65,157, 0, 92,124, 26,200, 80,127,245, 0,174, 56, 99,255,255,
/* 0x1740 */ 127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16,
/* 0x1750 */ 124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57,
/* 0x1760 */ 64,130,255,212,127,153,160, 64, 65,156,247,172, 60, 0, 0,255,
/* 0x1770 */ 96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,127,140,232, 0,
/* 0x1780 */ 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1,
/* 0x1790 */ 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,
/* 0x17a0 */ 144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,
/* 0x17b0 */ 185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96, 12, 0,161,128,
/* 0x17c0 */ 8, 0,225,128, 0, 0,165,128, 0, 0, 33,128, 20, 58,165,124,
/* 0x17d0 */ 8, 0, 1,128,255,255,165, 56,166, 3, 8,124, 0, 0,230,232,
/* 0x17e0 */ 166, 3,168,125, 80, 24,100,124, 80, 40,135,124, 1, 0, 99, 56,
/* 0x17f0 */ 1, 0,132, 56, 0, 0,134,248, 31, 0,231, 96,108, 56, 0,124,
/* 0x1800 */ 64, 40, 7,124,172, 63, 0,124, 32, 0,231, 56,240,255,128, 65,
/* 0x1810 */ 172, 4, 0,124, 44, 1, 0, 76, 32, 0,128, 78,166, 2, 72,124,
/* 0x1820 */ 8, 0,130,128,166, 3,137,124, 4, 0,194,128, 12, 0,226,136,
/* 0x1830 */ 20, 18,164,124, 16, 0,165, 56, 20, 18,102,124,192, 0, 99, 56,
/* 0x1840 */ 255,255, 5,140,255,255, 3,156,248,255, 32, 67,166, 3,233,127,
/* 0x1850 */ 128, 0,162, 56,248,255,193,248,248,255,193, 56,208,255, 33, 56,
/* 0x1860 */ 32, 4,128, 78,166, 2,232,127,181,255,255, 75,128, 0, 0, 72,
/* 0x1870 */ 102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 54,
/* 0x1880 */ 52, 45,112,111,119,101,114,112, 99,108,101, 10, 10, 83,101, 99,
/* 0x1890 */ 116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32,
/* 0x18a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32,
/* 0x18b0 */ 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x18c0 */ 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x18d0 */ 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32,
/* 0x18e0 */ 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48,
/* 0x18f0 */ 32, 77, 65, 67, 79, 83, 48, 48, 48, 32, 32, 32, 32, 32, 32, 48,
/* 0x1900 */ 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1910 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1920 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1930 */ 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x1940 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69,
/* 0x1950 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72,
/* 0x1960 */ 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1970 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1980 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1990 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 52, 32,
/* 0x19a0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x19b0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82,
/* 0x19c0 */ 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48,
/* 0x19d0 */ 48, 49, 54, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19e0 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1a00 */ 52, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1a10 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79,
/* 0x1a20 */ 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, 68, 32, 32, 32,
/* 0x1a30 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 52, 52, 32, 32,
/* 0x1a40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a50 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a60 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 97, 99, 32, 32, 50, 42,
/* 0x1a70 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x1a80 */ 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32,
/* 0x1a90 */ 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1aa0 */ 48, 48, 48, 48, 48, 49, 48, 56, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1ab0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x1ac0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1ad0 */ 48, 48, 48, 50,102, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x1ae0 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82,
/* 0x1af0 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, 65,
/* 0x1b00 */ 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1b10 */ 56, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b20 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b30 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51,102, 56,
/* 0x1b40 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
/* 0x1b50 */ 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76,
/* 0x1b60 */ 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48,
/* 0x1b70 */ 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48,
/* 0x1b80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x1b90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ba0 */ 32, 32, 48, 48, 48, 48, 48, 52, 56, 52, 32, 32, 50, 42, 42, 48,
/* 0x1bb0 */ 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68,
/* 0x1bc0 */ 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69,
/* 0x1bd0 */ 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32,
/* 0x1be0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bf0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c00 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,101, 50, 48, 32, 32, 50,
/* 0x1c10 */ 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82,
/* 0x1c20 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65,
/* 0x1c30 */ 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1c40 */ 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c50 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c60 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 98, 99,
/* 0x1c70 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
/* 0x1c80 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 78,
/* 0x1c90 */ 82, 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48,
/* 0x1ca0 */ 48, 48, 48, 49, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1cb0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1cc0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49,
/* 0x1cd0 */ 55,100, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x1ce0 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49,
/* 0x1cf0 */ 48, 32, 67, 70, 76, 85, 83, 72, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1d00 */ 48, 48, 48, 48, 48, 48, 50, 52, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1d10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x1d20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1d30 */ 48, 48, 49, 55,102, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x1d40 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89,
/* 0x1d50 */ 10, 32, 49, 49, 32, 69, 76, 70, 77, 65, 73, 78, 89, 32, 32, 32,
/* 0x1d60 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1d70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1d80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1d90 */ 32, 48, 48, 48, 48, 49, 56, 49, 99, 32, 32, 50, 42, 42, 48, 32,
/* 0x1da0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79,
/* 0x1db0 */ 78, 76, 89, 10, 32, 49, 50, 32, 69, 76, 70, 77, 65, 73, 78, 90,
/* 0x1dc0 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 53, 52, 32, 32,
/* 0x1dd0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1de0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1df0 */ 48, 48, 32, 32, 48, 48, 48, 48, 49, 56, 49, 99, 32, 32, 50, 42,
/* 0x1e00 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x1e10 */ 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65,
/* 0x1e20 */ 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e30 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90,
/* 0x1e40 */ 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68,
/* 0x1e60 */ 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e70 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82,
/* 0x1e80 */ 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e90 */ 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76,
/* 0x1ea0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1eb0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73,
/* 0x1ec0 */ 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ed0 */ 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48,
/* 0x1ee0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x1ef0 */ 32, 32, 32,100, 32, 32, 77, 65, 67, 79, 83, 48, 48, 48, 9, 48,
/* 0x1f00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1f10 */ 77, 65, 67, 79, 83, 48, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
/* 0x1f30 */ 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48,
/* 0x1f40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95,
/* 0x1f50 */ 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f60 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82,
/* 0x1f70 */ 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f80 */ 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48,
/* 0x1f90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
/* 0x1fa0 */ 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48,
/* 0x1fb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68,
/* 0x1fc0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1fd0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9,
/* 0x1fe0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ff0 */ 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2000 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x2010 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48,
/* 0x2020 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65,
/* 0x2030 */ 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2040 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x2050 */ 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48,
/* 0x2060 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65,
/* 0x2070 */ 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2080 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x2090 */ 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48,
/* 0x20a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65,
/* 0x20b0 */ 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20c0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x20d0 */ 67, 70, 76, 85, 83, 72, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20e0 */ 48, 48, 48, 48, 48, 48, 48, 32, 67, 70, 76, 85, 83, 72, 10, 48,
/* 0x20f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2100 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x2110 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2120 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48,
/* 0x2130 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32,
/* 0x2140 */ 32, 32, 32, 32, 77, 65, 67, 79, 83, 48, 48, 48, 9, 48, 48, 48,
/* 0x2150 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,
/* 0x2160 */ 116, 97,114,116, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
/* 0x2170 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 77, 65,
/* 0x2180 */ 67, 79, 83, 48, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
/* 0x2190 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32,
/* 0x21a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85,
/* 0x21b0 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21c0 */ 48, 48, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 50, 52,
/* 0x21d0 */ 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120,
/* 0x21e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 56,
/* 0x21f0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
/* 0x2200 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93,
/* 0x2210 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2220 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2230 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48,
/* 0x2240 */ 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 52, 32, 82, 95, 80, 80,
/* 0x2250 */ 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 78, 82,
/* 0x2260 */ 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x2270 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x2280 */ 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32,
/* 0x2290 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32,
/* 0x22a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69,
/* 0x22b0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 99,
/* 0x22c0 */ 99, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32,
/* 0x22d0 */ 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69,
/* 0x22e0 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
/* 0x22f0 */ 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70,
/* 0x2300 */ 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84,
/* 0x2310 */ 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2320 */ 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2330 */ 48, 48, 48, 48, 48, 97, 56, 32, 82, 95, 80, 80, 67, 54, 52, 95,
/* 0x2340 */ 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65,
/* 0x2350 */ 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82,
/* 0x2360 */ 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65,
/* 0x2370 */ 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32,
/* 0x2380 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32,
/* 0x2390 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85,
/* 0x23a0 */ 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x23b0 */ 48, 52, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52,
/* 0x23c0 */ 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43,
/* 0x23d0 */ 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x23e0 */ 50, 48, 10
};

View File

@ -0,0 +1,143 @@
/* ppc64le-darwin.macho-fold.h
created from ppc64le-darwin.macho-fold.bin, 1664 (0x680) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2013 Laszlo Molnar
Copyright (C) 2000-2013 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#define STUB_PPC64LE_DARWIN_MACHO_FOLD_SIZE 1664
#define STUB_PPC64LE_DARWIN_MACHO_FOLD_ADLER32 0x2e3a279d
#define STUB_PPC64LE_DARWIN_MACHO_FOLD_CRC32 0xf61322eb
unsigned char stub_ppc64le_darwin_macho_fold[1664] = {
/* 0x0000 */ 72, 0, 0,105, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191,
/* 0x0010 */ 77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8,
/* 0x0020 */ 124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252,
/* 0x0030 */ 124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80,
/* 0x0040 */ 125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32,
/* 0x0050 */ 132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220,
/* 0x0060 */ 66, 0,255,240, 78,128, 0, 32, 56, 33, 0, 24, 57, 32, 0, 0,
/* 0x0070 */ 149, 33,255,252,124, 41, 11,120,125, 8, 2,166,128,159,255,248,
/* 0x0080 */ 124,100,248, 80,128,195, 0, 24, 40, 6, 8, 0, 65,129, 0, 8,
/* 0x0090 */ 56,192, 8, 0,124, 61, 11,120,124, 38, 8, 80,124, 37, 11,120,
/* 0x00a0 */ 56, 33,255,232,127,231,251,120, 72, 0, 4, 61,127,161,235,120,
/* 0x00b0 */ 128, 67, 0, 0,124, 73, 3,166,128, 67, 0,136,124, 79,241, 32,
/* 0x00c0 */ 128, 67, 0,140,124, 65, 3,166,128, 67, 0,144,124, 72, 3,166,
/* 0x00d0 */ 184,131, 0, 24,128, 3, 0, 8,128, 67, 0, 16,128, 99, 0, 20,
/* 0x00e0 */ 78,128, 4, 32,124,199, 51,120, 56,192, 0, 0, 56, 0, 0,153,
/* 0x00f0 */ 72, 0, 0, 16,125, 9, 67,120, 57, 0, 0, 0, 56, 0, 0,197,
/* 0x0100 */ 68, 0, 0, 2, 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1,
/* 0x0110 */ 75,255,255,240, 56, 0, 0, 3, 75,255,255,232, 56, 0, 0, 5,
/* 0x0120 */ 75,255,255,224, 56, 0, 0, 6, 75,255,255,216, 56, 0, 0, 74,
/* 0x0130 */ 75,255,255,208,124, 8, 2,166,148, 33,255,240,144, 1, 0, 20,
/* 0x0140 */ 128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, 64,188, 0, 12,
/* 0x0150 */ 56, 96, 0,127, 75,255,255,185, 47,133, 0, 0, 65,158, 0, 28,
/* 0x0160 */ 124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1,152, 4, 0, 0,
/* 0x0170 */ 56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0,129, 35, 0, 4,
/* 0x0180 */ 124, 5, 0, 80,144, 3, 0, 0,128, 1, 0, 20,125, 41, 42, 20,
/* 0x0190 */ 124, 8, 3,166, 56, 33, 0, 16,145, 35, 0, 4, 78,128, 0, 32,
/* 0x01a0 */ 124, 8, 2,166,148, 33,255,192,144, 1, 0, 68,128, 4, 0, 0,
/* 0x01b0 */ 191,129, 0, 48, 47,128, 0, 0,124,159, 35,120,124,126, 27,120,
/* 0x01c0 */ 124,188, 43,120,124,221, 51,120, 65,158, 1, 36, 56,160, 0, 12,
/* 0x01d0 */ 127,195,243,120, 56,129, 0, 16, 75,255,255, 93,129, 33, 0, 16,
/* 0x01e0 */ 128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, 60, 0, 33, 88,
/* 0x01f0 */ 96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28,128, 30, 0, 0,
/* 0x0200 */ 47,128, 0, 0, 65,190, 0,232, 72, 0, 0, 12, 47,133, 0, 0,
/* 0x0210 */ 64,190, 0, 12, 56, 96, 0,127, 75,255,254,245,127, 5, 72, 64,
/* 0x0220 */ 65,185,255,244,128, 31, 0, 0,127,137, 0, 64, 65,189,255,232,
/* 0x0230 */ 128, 31, 0, 4, 64,152, 0,136,124,164, 43,120,128,126, 0, 4,
/* 0x0240 */ 124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24,145, 33, 0, 32,
/* 0x0250 */ 127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0, 64,190,255,184,
/* 0x0260 */ 128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0, 64,190,255,168,
/* 0x0270 */ 136,193, 0, 25, 49, 61,255,255,124, 9,233, 16,125, 38, 0,208,
/* 0x0280 */ 85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4,
/* 0x0290 */ 136,161, 0, 26,127,168, 3,166, 78,128, 0, 33,128, 30, 0, 4,
/* 0x02a0 */ 129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80,
/* 0x02b0 */ 144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120,
/* 0x02c0 */ 127,195,243,120, 75,255,254,113,129, 97, 0, 16,129, 63, 0, 0,
/* 0x02d0 */ 128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20,
/* 0x02e0 */ 144, 31, 0, 4,145, 63, 0, 0, 75,255,254,224,128, 1, 0, 68,
/* 0x02f0 */ 187,129, 0, 48,124, 8, 3,166, 56, 33, 0, 64, 78,128, 0, 32,
/* 0x0300 */ 124, 8, 2,166,148, 33,255,176,144, 1, 0, 84,128, 3, 0, 16,
/* 0x0310 */ 190, 65, 0, 24, 58,224, 0, 0,125,128, 0, 38,127,151, 0, 64,
/* 0x0320 */ 145,129, 0, 20,124,122, 27,120,124,146, 35,120,124,187, 43,120,
/* 0x0330 */ 124,211, 51,120,124,244, 59,120,125, 21, 67,120,125, 54, 75,120,
/* 0x0340 */ 59,195, 0, 28, 59, 0, 0, 0, 64,156, 1,124,129, 62, 0, 0,
/* 0x0350 */ 47,137, 0, 1, 64,190, 1, 48,129, 62, 0, 24,129,126, 0, 36,
/* 0x0360 */ 85, 61, 5, 62,127,139,234, 20, 46, 28, 0, 0,128, 30, 0, 28,
/* 0x0370 */ 145, 97, 0, 8,127, 41, 2, 20,145, 33, 0, 12,127,253, 72, 80,
/* 0x0380 */ 65,146, 0, 76, 47,155, 0, 0, 64,190, 0, 16, 47,139, 0, 0,
/* 0x0390 */ 56,192, 0, 18, 64,158, 0, 8, 56,192, 16, 18, 47,139, 0, 0,
/* 0x03a0 */ 126,103,155,120, 64,158, 0, 8, 56,224,255,255,129, 30, 0, 32,
/* 0x03b0 */ 127,227,251,120,125, 8,146, 20,127,132,227,120, 56,160, 0, 3,
/* 0x03c0 */ 75,255,253, 53,127,159, 24, 0, 64,158, 0,124, 47,155, 0, 0,
/* 0x03d0 */ 65,158, 0, 52,128, 30, 0, 36, 47,128, 0, 0, 65,158, 0, 40,
/* 0x03e0 */ 128, 30, 0, 32, 47,128, 0, 0, 64,158, 0, 8,147,244, 0, 0,
/* 0x03f0 */ 127, 99,219,120, 56,129, 0, 8,126,165,171,120,126,198,179,120,
/* 0x0400 */ 75,255,253,161,124, 28, 0,208,112, 29, 15,255,125, 63,226, 20,
/* 0x0410 */ 65,130, 0, 24,127,169, 3,166, 56, 0, 0, 0,152, 9, 0, 0,
/* 0x0420 */ 57, 41, 0, 1, 66, 0,255,248, 65,178, 0, 36,128,190, 0, 44,
/* 0x0430 */ 127,227,251,120,127,132,227,120, 75,255,252,245, 47,131, 0, 0,
/* 0x0440 */ 65,190, 0, 12, 56, 96, 0,127, 75,255,252,197,124, 28,234, 20,
/* 0x0450 */ 127,255, 2, 20,127,159,200, 64, 64,188, 0, 84,128,190, 0, 44,
/* 0x0460 */ 124,159,200, 80,127,227,251,120, 56,192, 16, 18, 56,224,255,255,
/* 0x0470 */ 57, 0, 0, 0, 75,255,252,129,127,159, 24, 0, 65,190, 0, 48,
/* 0x0480 */ 75,255,255,196, 56, 9,255,252, 43,128, 0, 1, 65,157, 0, 32,
/* 0x0490 */ 128, 30, 0, 8, 47,128, 0, 1, 64,190, 0, 20,128, 30, 0, 12,
/* 0x04a0 */ 47,128, 0, 40, 64,190, 0, 8, 58,254, 0, 16,128, 26, 0, 16,
/* 0x04b0 */ 59, 24, 0, 1,127,152, 0, 64,128, 30, 0, 4,127,222, 2, 20,
/* 0x04c0 */ 75,255,254,136,128, 1, 0, 84,129,129, 0, 20,126,227,187,120,
/* 0x04d0 */ 124, 8, 3,166,186, 65, 0, 24,125,128,129, 32, 56, 33, 0, 80,
/* 0x04e0 */ 78,128, 0, 32,148, 33,255,192,144,129, 0, 8,124, 8, 2,166,
/* 0x04f0 */ 129, 97, 0, 8,144, 1, 0, 68, 57,107,255,232, 56, 3, 0, 24,
/* 0x0500 */ 145, 97, 0, 16,144, 1, 0, 20,191, 97, 0, 44,128, 3, 0, 24,
/* 0x0510 */ 129, 65, 0, 20,125, 60, 75,120,129, 33, 0, 16,124,191, 43,120,
/* 0x0520 */ 125, 27, 67,120,124,253, 59,120,124,229, 59,120, 56, 97, 0, 16,
/* 0x0530 */ 56,129, 0, 24,124,222, 51,120, 56,192, 0, 0,145, 65, 0, 36,
/* 0x0540 */ 144, 1, 0, 24,145, 33, 0, 32,147,225, 0, 28, 75,255,252, 85,
/* 0x0550 */ 127,105,219,120,127,135,227,120,127,227,251,120,127,168,235,120,
/* 0x0560 */ 56,128, 0, 0, 56,161, 0, 32, 56,192,255,255, 75,255,253,149,
/* 0x0570 */ 129, 95, 0, 16, 57, 96, 0, 0,127,139, 80, 64,124,124, 27,120,
/* 0x0580 */ 59, 96, 0, 0, 57, 63, 0, 28, 64,156, 0,224,128, 9, 0, 0,
/* 0x0590 */ 57,107, 0, 1, 47,128, 0, 14,127, 11, 80, 64, 64,190, 0,192,
/* 0x05a0 */ 128,105, 0, 8, 56,128, 0, 0,124,105, 26, 20, 56,160, 0, 0,
/* 0x05b0 */ 75,255,251,109,124,125, 27,121, 65,128, 0, 32,127,163,235,120,
/* 0x05c0 */ 127,228,251,120,127,197,243,120,127,102,219,120, 75,255,251, 25,
/* 0x05d0 */ 127,158, 24, 0, 65,190, 0, 20, 56, 96, 0,127, 75,255,251, 49,
/* 0x05e0 */ 131,105, 0, 8, 75,255,255,216,128, 31, 0, 0, 61, 32,202,254,
/* 0x05f0 */ 97, 41,186,190,127,128, 72, 0, 64,158, 0, 52,129, 95, 0, 4,
/* 0x0600 */ 57, 96, 0, 0,127,139, 80, 64, 57, 63, 0, 8, 64,156, 0, 32,
/* 0x0610 */ 128, 9, 0, 0, 57,107, 0, 1, 47,128, 0, 18,127, 11, 80, 64,
/* 0x0620 */ 65,190,255,192, 57, 41, 0, 20, 65,152,255,232,127,227,251,120,
/* 0x0630 */ 127,100,219,120, 56,160, 0, 0,127,166,235,120, 56,224, 0, 0,
/* 0x0640 */ 57, 0, 0, 0, 57, 32, 0, 0, 75,255,252,185,124,124, 27,120,
/* 0x0650 */ 127,163,235,120, 75,255,250,209, 72, 0, 0, 16,128, 9, 0, 4,
/* 0x0660 */ 125, 41, 2, 20, 65,152,255, 40,128, 1, 0, 68,127,131,227,120,
/* 0x0670 */ 124, 8, 3,166,187, 97, 0, 44, 56, 33, 0, 64, 78,128, 0, 32
};

View File

@ -0,0 +1,643 @@
/* ppc64le-linux.elf-entry.h
created from ppc64le-linux.elf-entry.bin, 9657 (0x25b9) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2015 Laszlo Molnar
Copyright (C) 2000-2015 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#define STUB_PPC64LE_LINUX_ELF_ENTRY_SIZE 9657
#define STUB_PPC64LE_LINUX_ELF_ENTRY_ADLER32 0x09e5cde7
#define STUB_PPC64LE_LINUX_ELF_ENTRY_CRC32 0x69edffe5
unsigned char stub_ppc64le_linux_elf_entry[9657] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 1, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 16, 28, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 24, 0, 21, 0,
/* 0x0040 */ 1, 0, 0, 72,236, 41, 0,124,166, 2,168,125, 8, 0, 7, 40,
/* 0x0050 */ 92, 1,130, 64, 0, 0,166,248, 20, 26,132,124, 0,128, 0, 60,
/* 0x0060 */ 198, 7, 0,120, 0,128, 32, 61,198, 7, 41,121,255,255, 99, 56,
/* 0x0070 */ 255,255,165, 56,255,255, 64, 57, 36, 1, 0, 72, 1, 0, 32, 57,
/* 0x0080 */ 46, 24, 41,125, 4, 0, 99, 56,198, 7, 41,121, 64, 0, 41,124,
/* 0x0090 */ 20, 72, 41,125, 1, 0,128, 57,198, 7,140,121,120, 99, 41,125,
/* 0x00a0 */ 32, 0,128, 78, 1, 0, 3,141, 1, 0, 5,157, 64, 0, 41,124,
/* 0x00b0 */ 20, 74, 41,125,201,255,194, 65,236,255,225, 65, 1, 0,224, 56,
/* 0x00c0 */ 20, 0, 0, 72,255,255,231, 56, 21, 72, 41,125,177,255,194, 65,
/* 0x00d0 */ 20, 57,231,124, 21, 72, 41,125,165,255,194, 65, 20, 57,231,124,
/* 0x00e0 */ 64, 0, 41,124, 20, 74, 41,125,149,255,194, 65,216,255,192, 65,
/* 0x00f0 */ 0, 0, 0, 57,253,255,231, 52, 46, 64,231, 84,255,255,128, 57,
/* 0x0100 */ 198, 7,140,121,120, 99,231,124, 32, 0,192, 65, 1, 0, 67,140,
/* 0x0110 */ 249, 16,234,124,112, 14, 74,125, 0, 0,194, 65, 1, 0, 66,112,
/* 0x0120 */ 80, 0,226, 65, 20, 0, 0, 72, 64, 0, 41,124, 20, 74, 41,125,
/* 0x0130 */ 77,255,194, 65, 60, 0,225, 65, 1, 0, 0, 57, 64, 0, 41,124,
/* 0x0140 */ 20, 74, 41,125, 57,255,194, 65, 40, 0,225, 65, 21, 72, 41,125,
/* 0x0150 */ 45,255,194, 65, 20, 65, 8,125, 64, 0, 41,124, 20, 74, 41,125,
/* 0x0160 */ 29,255,194, 65,232,255,192, 65, 2, 0, 8, 57, 16, 0, 0, 72,
/* 0x0170 */ 21, 72, 41,125, 9,255,194, 65, 20, 65, 8,125,255,250,234, 32,
/* 0x0180 */ 2, 0, 8, 57,148, 1, 8,125, 20, 42,234,124,166, 3, 9,125,
/* 0x0190 */ 1, 0, 7,141, 1, 0, 5,157,248,255, 32, 67, 0, 1,224, 56,
/* 0x01a0 */ 236, 41, 7,124, 44, 26, 7,124, 4,255,255, 75,236, 41, 0,124,
/* 0x01b0 */ 166, 2,168,125, 5, 0, 7, 40, 56, 1,130, 64, 0, 0,166,248,
/* 0x01c0 */ 20, 26,132,124, 0,128, 0, 60,198, 7, 0,120, 0,128, 32, 61,
/* 0x01d0 */ 198, 7, 0,120,255,255, 99, 56,255,255,165, 56,255,255, 64, 57,
/* 0x01e0 */ 0, 1, 0, 72, 1, 0, 32, 57, 46, 24, 41,125, 4, 0, 99, 56,
/* 0x01f0 */ 198, 7, 41,121, 64, 0, 9,124, 20, 72, 41,125, 1, 0, 41, 97,
/* 0x0200 */ 32, 0,128, 78, 1, 0, 3,141, 1, 0, 5,157, 64, 0, 41,124,
/* 0x0210 */ 20, 74, 41,125,209,255,194, 65,236,255,225, 65, 1, 0,224, 56,
/* 0x0220 */ 20, 0, 0, 72,255,255,231, 56, 21, 72, 41,125,185,255,194, 65,
/* 0x0230 */ 21, 57,231,124, 21, 72, 41,125,173,255,194, 65, 21, 57,231,124,
/* 0x0240 */ 64, 0, 41,124, 20, 74, 41,125,157,255,194, 65,216,255,192, 65,
/* 0x0250 */ 0, 0, 0, 57,253,255,231, 52, 46, 64,231, 84,255,255,128, 57,
/* 0x0260 */ 198, 7,140,121,120, 99,231,124, 24, 0,192, 65, 1, 0, 67,140,
/* 0x0270 */ 249, 16,234,124,112, 14, 74,125, 0, 0,194, 65, 12, 0, 0, 72,
/* 0x0280 */ 21, 72, 41,125, 97,255,194, 65, 21, 65, 8,125, 21, 72, 41,125,
/* 0x0290 */ 85,255,194, 65, 21, 65, 8,125, 40, 0,130, 64, 1, 0, 0, 57,
/* 0x02a0 */ 21, 72, 41,125, 65,255,194, 65, 21, 65, 8,125, 64, 0, 41,124,
/* 0x02b0 */ 20, 74, 41,125, 49,255,194, 65,232,255,192, 65, 2, 0, 8, 57,
/* 0x02c0 */ 255,250,234, 32, 1, 0, 8, 57,148, 1, 8,125, 20, 42,234,124,
/* 0x02d0 */ 166, 3, 9,125, 1, 0, 7,141, 1, 0, 5,157,248,255, 32, 67,
/* 0x02e0 */ 0, 1,224, 56,236, 41, 7,124, 44, 26, 7,124, 32,255,255, 75,
/* 0x02f0 */ 236, 41, 0,124,166, 2,168,125, 2, 0, 7, 40,252, 0,130, 64,
/* 0x0300 */ 0, 0,166,248, 20, 26,132,124, 0,128, 0, 60,198, 7, 0,120,
/* 0x0310 */ 0,128, 32, 61,198, 7, 0,120,255,255, 99, 56,255,255,165, 56,
/* 0x0320 */ 255,255, 64, 57,196, 0, 0, 72, 64, 0, 41,124, 20, 72, 41,125,
/* 0x0330 */ 32, 0,226, 76, 1, 0, 32, 57, 46, 24, 41,125, 4, 0, 99, 56,
/* 0x0340 */ 198, 7, 41,121, 64, 0, 41,124, 20, 73, 41,125, 32, 0,128, 78,
/* 0x0350 */ 1, 0, 3,141, 1, 0, 5,157,209,255,255, 75,244,255,225, 65,
/* 0x0360 */ 1, 0,224, 56,197,255,255, 75, 21, 57,231,124,189,255,255, 75,
/* 0x0370 */ 244,255,192, 65,253,255,231, 52, 0, 0, 0, 57, 32, 0,192, 65,
/* 0x0380 */ 1, 0, 67,140, 46, 64,231, 84,255,255,128, 57,198, 7,140,121,
/* 0x0390 */ 120, 99,231,124,249, 16,234,124, 0, 0,194, 65,141,255,255, 75,
/* 0x03a0 */ 21, 65, 8,125,133,255,255, 75, 21, 65, 8,125, 1, 0,224, 56,
/* 0x03b0 */ 28, 0,194, 64, 3, 0,224, 56, 1, 0, 0, 57,109,255,255, 75,
/* 0x03c0 */ 21, 65, 8,125,101,255,255, 75,244,255,192, 65,255,242, 74, 32,
/* 0x03d0 */ 20, 57, 8,125, 20, 42,234,124,166, 3, 9,125, 1, 0, 7,141,
/* 0x03e0 */ 1, 0, 5,157,248,255, 32, 67, 0, 1,224, 56,236, 41, 7,124,
/* 0x03f0 */ 44, 26, 7,124,100,255,255, 75, 14, 0, 7, 40, 0, 0,130, 64,
/* 0x0400 */ 166, 2, 8,124,120, 51,201,124, 0, 0, 6,129,120, 43,167,124,
/* 0x0410 */ 254,255,164, 56, 2, 0,131, 56, 8, 0, 1,144, 0, 0, 3,136,
/* 0x0420 */ 254,232, 11, 84,126, 7, 2, 84, 0,250, 96, 56, 48, 88, 99,124,
/* 0x0430 */ 124,241, 99, 56,120, 11, 38,124, 20, 26, 33,124, 52, 0, 33, 84,
/* 0x0440 */ 0, 0, 0, 56,120, 51,195,124, 0, 0, 9,144,252,255, 3,148,
/* 0x0450 */ 64, 24, 1,124,248,255,128, 65, 0, 0,193,144,255,255, 4,136,
/* 0x0460 */ 8, 0,225,144, 16, 0,193, 56, 12, 0, 33,145, 20, 0, 97, 56,
/* 0x0470 */ 62,225, 11, 84, 62, 7, 0, 84, 2, 0, 67,152, 1, 0, 99,153,
/* 0x0480 */ 0, 0, 3,152,124, 8, 2,166,148, 33,255,160,189,193, 0, 24,
/* 0x0490 */ 144, 1, 0,100, 59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,
/* 0x04a0 */ 138, 67, 0, 0,147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,
/* 0x04b0 */ 125, 40, 3,166,124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48,
/* 0x04c0 */ 56, 9, 7, 54,127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,
/* 0x04d0 */ 125, 41, 80, 48, 57, 41,255,255, 57,107,255,255,145, 33, 0, 8,
/* 0x04e0 */ 124,206, 51,120,124,147, 35,120,124,245, 59,120,125, 20, 67,120,
/* 0x04f0 */ 145, 97, 0, 12, 59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0,
/* 0x0500 */ 59, 64, 0, 1, 58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1,
/* 0x0510 */ 57, 32, 0, 0, 64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0,
/* 0x0520 */ 85, 32, 8, 60,125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,
/* 0x0530 */ 127,179, 42, 20,126,108,155,120, 56,160, 0, 0, 57, 0,255,255,
/* 0x0540 */ 57, 96, 0, 0,127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4,
/* 0x0550 */ 84,169, 64, 46, 65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,
/* 0x0560 */ 125, 37, 3,120, 64,153,255,224,127,153,160, 64, 64,156, 8,100,
/* 0x0570 */ 62,192, 0,255, 98,214,255,255,128, 1, 0, 8,127,136,176, 64,
/* 0x0580 */ 127, 35, 0, 56, 86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60,
/* 0x0590 */ 65,157, 0, 32,127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0,
/* 0x05a0 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x05b0 */ 124,230,194, 46, 85, 0,170,254,125, 64, 57,214,127,133, 80, 64,
/* 0x05c0 */ 64,156, 1,172,128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56,
/* 0x05d0 */ 32, 18, 0, 8,127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20,
/* 0x05e0 */ 29, 41, 6, 0, 32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,
/* 0x05f0 */ 125, 56, 74, 20,124, 6,195, 46,125, 72, 83,120, 56,201, 14,108,
/* 0x0600 */ 56, 96, 0, 1, 64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,
/* 0x0610 */ 127,245, 0,174, 99,123,255,255, 87,255, 8, 60, 87,252, 5,238,
/* 0x0620 */ 127,136,216, 64, 87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,
/* 0x0630 */ 127, 12,232, 0, 84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24,
/* 0x0640 */ 65,154, 7,176,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0650 */ 125, 37, 3,120,161,103, 2, 0, 85, 0,170,254,125, 64, 89,214,
/* 0x0660 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x0670 */ 124, 11, 2, 20, 47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,
/* 0x0680 */ 125, 10, 64, 80, 64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120,
/* 0x0690 */ 65,186, 0, 24, 72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80,
/* 0x06a0 */ 56,100, 0, 1, 65,154, 0, 12, 47,131, 0,255, 64,157,255,108,
/* 0x06b0 */ 47,131, 0,255, 65,157, 0,132, 63,224, 0,255, 99,255,255,255,
/* 0x06c0 */ 127,136,248, 64, 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,
/* 0x06d0 */ 124,227, 59,120, 65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0,
/* 0x06e0 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46,
/* 0x06f0 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,
/* 0x0700 */ 124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,
/* 0x0710 */ 125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46,
/* 0x0720 */ 72, 0, 0, 16,124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1,
/* 0x0730 */ 47,131, 0,255, 64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,
/* 0x0740 */ 127,249,169,174, 59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0,
/* 0x0750 */ 72, 0, 6,120, 47,151, 0, 9, 65,157, 0, 12, 58,247,255,253,
/* 0x0760 */ 72, 0, 6,104, 58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,
/* 0x0770 */ 127,136,176, 64, 84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,
/* 0x0780 */ 124, 6,195, 46,124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,
/* 0x0790 */ 127,140,232, 0, 65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,
/* 0x07a0 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128,
/* 0x07b0 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64,
/* 0x07c0 */ 32, 11, 8, 0, 47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,
/* 0x07d0 */ 176, 7, 1,128,126, 15,131,120,125, 72, 83,120,126, 48,139,120,
/* 0x07e0 */ 56, 0, 0, 0,127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,
/* 0x07f0 */ 124, 23, 3,120, 56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,
/* 0x0800 */ 127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,
/* 0x0810 */ 176, 7, 1,128, 65,157, 0, 32,127,140,232, 0, 65,158, 5,212,
/* 0x0820 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x0830 */ 57,140, 0, 1,161,103, 1,152, 85, 0,170,254,125, 64, 89,214,
/* 0x0840 */ 127,133, 80, 64, 64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,
/* 0x0850 */ 124, 0, 46,112, 86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20,
/* 0x0860 */ 84,107, 8, 60,176, 7, 1,152,125, 72, 83,120,124,233, 90, 20,
/* 0x0870 */ 65,157, 0, 32,127,140,232, 0, 65,158, 5,120,137, 44, 0, 0,
/* 0x0880 */ 84,160, 64, 46,124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,
/* 0x0890 */ 161,103, 1,224, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x08a0 */ 64,156, 0, 72, 32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,
/* 0x08b0 */ 124, 11, 2, 20,176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52,
/* 0x08c0 */ 47,151, 0, 6, 57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,
/* 0x08d0 */ 124, 26,200, 80,127,245, 0,174,125, 55, 75,120,127,249,169,174,
/* 0x08e0 */ 59, 57, 0, 1, 72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,
/* 0x08f0 */ 124,170, 40, 80,125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,
/* 0x0900 */ 125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,
/* 0x0910 */ 124,170, 40, 80,176, 7, 1,152, 65,157, 0, 32,127,140,232, 0,
/* 0x0920 */ 65,158, 4,208,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x0930 */ 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,176, 85, 0,170,254,
/* 0x0940 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,
/* 0x0950 */ 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,
/* 0x0960 */ 176, 7, 1,176, 72, 0, 0,140,125, 10, 64, 80,127,136,176, 64,
/* 0x0970 */ 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176,
/* 0x0980 */ 65,157, 0, 32,127,140,232, 0, 65,158, 4,104,137, 44, 0, 0,
/* 0x0990 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x09a0 */ 161,103, 1,200, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x09b0 */ 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,
/* 0x09c0 */ 125, 72, 83,120,126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32,
/* 0x09d0 */ 85, 96,217,126,124, 0, 88, 80,125,233,123,120,176, 7, 1,200,
/* 0x09e0 */ 124,170, 40, 80,125, 10, 64, 80,126, 15,131,120,126, 48,139,120,
/* 0x09f0 */ 127, 81,211,120,125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8,
/* 0x0a00 */ 64,157, 0, 8, 56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,
/* 0x0a10 */ 127,136,176, 64, 65,157, 0, 32,127,140,232, 0, 65,158, 3,212,
/* 0x0a20 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x0a30 */ 57,140, 0, 1,161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,
/* 0x0a40 */ 127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,
/* 0x0a50 */ 125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,
/* 0x0a60 */ 56,137, 0, 4, 59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0,
/* 0x0a70 */ 72, 0, 0,156,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,
/* 0x0a80 */ 124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,
/* 0x0a90 */ 127,140,232, 0, 65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,
/* 0x0aa0 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2,
/* 0x0ab0 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48,
/* 0x0ac0 */ 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,
/* 0x0ad0 */ 124, 11, 2, 20,125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8,
/* 0x0ae0 */ 59, 96, 0, 3,176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,
/* 0x0af0 */ 124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80,
/* 0x0b00 */ 56,134, 2, 4, 59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166,
/* 0x0b10 */ 63,224, 0,255, 99,255,255,255, 56, 96, 0, 1,127,136,248, 64,
/* 0x0b20 */ 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120,
/* 0x0b30 */ 65,157, 0, 24, 65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0b40 */ 57,140, 0, 1,125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,
/* 0x0b50 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x0b60 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x0b70 */ 64,156, 0, 16,125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,
/* 0x0b80 */ 124,170, 40, 80, 56,103, 0, 1,125,100, 59, 46, 66, 0,255,144,
/* 0x0b90 */ 56, 0, 0, 1, 47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,
/* 0x0ba0 */ 124, 99,226, 20, 65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,
/* 0x0bb0 */ 124,105, 27,120, 64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,
/* 0x0bc0 */ 125, 56, 74, 20, 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166,
/* 0x0bd0 */ 63,224, 0,255, 99,255,255,255, 56,128, 0, 1,127,136,248, 64,
/* 0x0be0 */ 84,135, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,228, 59,120,
/* 0x0bf0 */ 65,157, 0, 24, 65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0c00 */ 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,
/* 0x0c10 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x0c20 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x0c30 */ 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,
/* 0x0c40 */ 124,170, 40, 80, 56,135, 0, 1,125,102, 59, 46, 66, 0,255,144,
/* 0x0c50 */ 56,132,255,192, 47,132, 0, 3,124,154, 35,120, 64,157, 1, 40,
/* 0x0c60 */ 47,132, 0, 13,124,137, 14,112, 84,128, 7,254, 57,105,255,255,
/* 0x0c70 */ 96, 26, 0, 2,125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48,
/* 0x0c80 */ 87, 73, 8, 60,125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80,
/* 0x0c90 */ 56,201, 5, 94, 72, 0, 0,100, 57, 41,255,251,125, 41, 3,166,
/* 0x0ca0 */ 61, 96, 0,255, 97,107,255,255,127,136, 88, 64,127, 12,232, 0,
/* 0x0cb0 */ 84,169, 64, 46, 87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,
/* 0x0cc0 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x0cd0 */ 85, 8,248,126,127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80,
/* 0x0ce0 */ 99, 90, 0, 1, 66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166,
/* 0x0cf0 */ 87, 90, 32, 54, 56,216, 6, 68, 60,128, 0,255, 96,132,255,255,
/* 0x0d00 */ 59,128, 0, 1, 59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,
/* 0x0d10 */ 127, 12,232, 0, 84,169, 64, 46,124,255, 59,120, 65,157, 0, 24,
/* 0x0d20 */ 65,154, 0,208,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0d30 */ 125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x0d40 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x0d50 */ 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,
/* 0x0d60 */ 125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80,
/* 0x0d70 */ 59,231, 0, 1,125,102, 59, 46,127, 90,227,120, 87,156, 8, 60,
/* 0x0d80 */ 66, 0,255,136, 55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64,
/* 0x0d90 */ 56, 99, 0, 2, 65,157, 0, 92,124, 26,200, 80,127,245, 0,174,
/* 0x0da0 */ 56, 99,255,255,127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,
/* 0x0db0 */ 125, 43, 25, 16,124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,
/* 0x0dc0 */ 125, 43, 0, 57, 64,130,255,212,127,153,160, 64, 65,156,247,172,
/* 0x0dd0 */ 60, 0, 0,255, 96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,
/* 0x0de0 */ 127,140,232, 0, 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12,
/* 0x0df0 */ 56, 96, 0, 1, 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,
/* 0x0e00 */ 124, 19, 96, 80,144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,
/* 0x0e10 */ 128, 1, 0,100,185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96,
/* 0x0e20 */ 124, 8, 2,166,148, 33,255,160,189,193, 0, 24,144, 1, 0,100,
/* 0x0e30 */ 59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0,
/* 0x0e40 */ 147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166,
/* 0x0e50 */ 124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54,
/* 0x0e60 */ 127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48,
/* 0x0e70 */ 57, 41,255,255, 57,107,255,255,145, 33, 0, 8,124,206, 51,120,
/* 0x0e80 */ 124,147, 35,120,124,245, 59,120,125, 20, 67,120,145, 97, 0, 12,
/* 0x0e90 */ 59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1,
/* 0x0ea0 */ 58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0,
/* 0x0eb0 */ 64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60,
/* 0x0ec0 */ 125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20,
/* 0x0ed0 */ 126,108,155,120, 56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0,
/* 0x0ee0 */ 127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46,
/* 0x0ef0 */ 65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120,
/* 0x0f00 */ 64,153,255,224,127,153,160, 64, 64,156, 8,100, 62,192, 0,255,
/* 0x0f10 */ 98,214,255,255,128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56,
/* 0x0f20 */ 86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32,
/* 0x0f30 */ 127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46,
/* 0x0f40 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46,
/* 0x0f50 */ 85, 0,170,254,125, 64, 57,214,127,133, 80, 64, 64,156, 1,172,
/* 0x0f60 */ 128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8,
/* 0x0f70 */ 127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0,
/* 0x0f80 */ 32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20,
/* 0x0f90 */ 124, 6,195, 46,125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1,
/* 0x0fa0 */ 64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,127,245, 0,174,
/* 0x0fb0 */ 99,123,255,255, 87,255, 8, 60, 87,252, 5,238,127,136,216, 64,
/* 0x0fc0 */ 87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0,
/* 0x0fd0 */ 84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176,
/* 0x0fe0 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x0ff0 */ 161,103, 2, 0, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,
/* 0x1000 */ 127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,
/* 0x1010 */ 47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,125, 10, 64, 80,
/* 0x1020 */ 64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24,
/* 0x1030 */ 72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1,
/* 0x1040 */ 65,154, 0, 12, 47,131, 0,255, 64,157,255,108, 47,131, 0,255,
/* 0x1050 */ 65,157, 0,132, 63,224, 0,255, 99,255,255,255,127,136,248, 64,
/* 0x1060 */ 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120,
/* 0x1070 */ 65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x1080 */ 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,
/* 0x1090 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x10a0 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x10b0 */ 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,
/* 0x10c0 */ 124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255,
/* 0x10d0 */ 64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,127,249,169,174,
/* 0x10e0 */ 59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120,
/* 0x10f0 */ 47,151, 0, 9, 65,157, 0, 12, 58,247,255,253, 72, 0, 6,104,
/* 0x1100 */ 58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64,
/* 0x1110 */ 84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46,
/* 0x1120 */ 124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,127,140,232, 0,
/* 0x1130 */ 65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x1140 */ 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128, 85, 0,170,254,
/* 0x1150 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0,
/* 0x1160 */ 47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128,
/* 0x1170 */ 126, 15,131,120,125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0,
/* 0x1180 */ 127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120,
/* 0x1190 */ 56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64,
/* 0x11a0 */ 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128,
/* 0x11b0 */ 65,157, 0, 32,127,140,232, 0, 65,158, 5,212,137, 44, 0, 0,
/* 0x11c0 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x11d0 */ 161,103, 1,152, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x11e0 */ 64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,124, 0, 46,112,
/* 0x11f0 */ 86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60,
/* 0x1200 */ 176, 7, 1,152,125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32,
/* 0x1210 */ 127,140,232, 0, 65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46,
/* 0x1220 */ 124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224,
/* 0x1230 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72,
/* 0x1240 */ 32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20,
/* 0x1250 */ 176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6,
/* 0x1260 */ 57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80,
/* 0x1270 */ 127,245, 0,174,125, 55, 75,120,127,249,169,174, 59, 57, 0, 1,
/* 0x1280 */ 72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,
/* 0x1290 */ 125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80,
/* 0x12a0 */ 127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,
/* 0x12b0 */ 176, 7, 1,152, 65,157, 0, 32,127,140,232, 0, 65,158, 4,208,
/* 0x12c0 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x12d0 */ 57,140, 0, 1,161,103, 1,176, 85, 0,170,254,125, 64, 89,214,
/* 0x12e0 */ 127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,
/* 0x12f0 */ 124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,176, 7, 1,176,
/* 0x1300 */ 72, 0, 0,140,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,
/* 0x1310 */ 124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32,
/* 0x1320 */ 127,140,232, 0, 65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46,
/* 0x1330 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200,
/* 0x1340 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32,
/* 0x1350 */ 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,
/* 0x1360 */ 126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126,
/* 0x1370 */ 124, 0, 88, 80,125,233,123,120,176, 7, 1,200,124,170, 40, 80,
/* 0x1380 */ 125, 10, 64, 80,126, 15,131,120,126, 48,139,120,127, 81,211,120,
/* 0x1390 */ 125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8,
/* 0x13a0 */ 56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,127,136,176, 64,
/* 0x13b0 */ 65,157, 0, 32,127,140,232, 0, 65,158, 3,212,137, 44, 0, 0,
/* 0x13c0 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x13d0 */ 161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x13e0 */ 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,
/* 0x13f0 */ 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4,
/* 0x1400 */ 59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156,
/* 0x1410 */ 125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,
/* 0x1420 */ 124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0,
/* 0x1430 */ 65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x1440 */ 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2, 85, 0,170,254,
/* 0x1450 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0,
/* 0x1460 */ 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,
/* 0x1470 */ 125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3,
/* 0x1480 */ 176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80,
/* 0x1490 */ 124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4,
/* 0x14a0 */ 59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166, 63,224, 0,255,
/* 0x14b0 */ 99,255,255,255, 56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60,
/* 0x14c0 */ 127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24,
/* 0x14d0 */ 65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x14e0 */ 125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x14f0 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x1500 */ 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,
/* 0x1510 */ 125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80,
/* 0x1520 */ 56,103, 0, 1,125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1,
/* 0x1530 */ 47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20,
/* 0x1540 */ 65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,124,105, 27,120,
/* 0x1550 */ 64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20,
/* 0x1560 */ 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255,
/* 0x1570 */ 99,255,255,255, 56,128, 0, 1,127,136,248, 64, 84,135, 8, 60,
/* 0x1580 */ 127, 12,232, 0, 84,169, 64, 46,124,228, 59,120, 65,157, 0, 24,
/* 0x1590 */ 65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x15a0 */ 125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x15b0 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x15c0 */ 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,
/* 0x15d0 */ 125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80,
/* 0x15e0 */ 56,135, 0, 1,125,102, 59, 46, 66, 0,255,144, 56,132,255,192,
/* 0x15f0 */ 47,132, 0, 3,124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13,
/* 0x1600 */ 124,137, 14,112, 84,128, 7,254, 57,105,255,255, 96, 26, 0, 2,
/* 0x1610 */ 125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60,
/* 0x1620 */ 125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94,
/* 0x1630 */ 72, 0, 0,100, 57, 41,255,251,125, 41, 3,166, 61, 96, 0,255,
/* 0x1640 */ 97,107,255,255,127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46,
/* 0x1650 */ 87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0,
/* 0x1660 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, 85, 8,248,126,
/* 0x1670 */ 127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1,
/* 0x1680 */ 66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54,
/* 0x1690 */ 56,216, 6, 68, 60,128, 0,255, 96,132,255,255, 59,128, 0, 1,
/* 0x16a0 */ 59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0,
/* 0x16b0 */ 84,169, 64, 46,124,255, 59,120, 65,157, 0, 24, 65,154, 0,208,
/* 0x16c0 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x16d0 */ 125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,
/* 0x16e0 */ 127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,
/* 0x16f0 */ 125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,
/* 0x1700 */ 124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1,
/* 0x1710 */ 125,102, 59, 46,127, 90,227,120, 87,156, 8, 60, 66, 0,255,136,
/* 0x1720 */ 55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2,
/* 0x1730 */ 65,157, 0, 92,124, 26,200, 80,127,245, 0,174, 56, 99,255,255,
/* 0x1740 */ 127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16,
/* 0x1750 */ 124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57,
/* 0x1760 */ 64,130,255,212,127,153,160, 64, 65,156,247,172, 60, 0, 0,255,
/* 0x1770 */ 96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,127,140,232, 0,
/* 0x1780 */ 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1,
/* 0x1790 */ 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,
/* 0x17a0 */ 144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,
/* 0x17b0 */ 185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96, 12, 0,161,128,
/* 0x17c0 */ 8, 0,225,128, 0, 0,165,128, 0, 0, 33,128, 20, 58,165,124,
/* 0x17d0 */ 8, 0, 1,128,255,255,165, 56,166, 3, 8,124, 0, 0,230,232,
/* 0x17e0 */ 166, 3,168,125, 80, 24,100,124, 80, 40,135,124, 1, 0, 99, 56,
/* 0x17f0 */ 1, 0,132, 56, 0, 0,134,248, 31, 0,231, 96,108, 56, 0,124,
/* 0x1800 */ 64, 40, 7,124,172, 63, 0,124, 32, 0,231, 56,240,255,128, 65,
/* 0x1810 */ 172, 4, 0,124, 44, 1, 0, 76, 32, 0,128, 78, 1, 0, 0, 72,
/* 0x1820 */ 80, 82, 79, 84, 95, 69, 88, 69, 67,124, 80, 82, 79, 84, 95, 87,
/* 0x1830 */ 82, 73, 84, 69, 32,102, 97,105,108,101,100, 46, 10, 0, 30, 0,
/* 0x1840 */ 160, 56,166, 2,136,124, 2, 0, 96, 56, 4, 0, 0, 56, 2, 0,
/* 0x1850 */ 0, 68,127, 0, 96, 56, 1, 0, 0, 56, 2, 0, 0, 68,166, 2,
/* 0x1860 */ 200,127, 0, 0, 0, 57,255,255,224, 56, 4, 0,126,128, 50, 0,
/* 0x1870 */ 192, 56, 7, 0,160, 56, 1, 0,128, 60, 20,242, 99,124, 90, 0,
/* 0x1880 */ 0, 56, 11, 0, 99, 56, 20, 34, 99,124, 30, 0, 99, 84, 2, 0,
/* 0x1890 */ 0, 68, 0, 0,195, 65,166, 3,233,127, 0, 0, 30,128, 8, 0,
/* 0x18a0 */ 254,136,248, 0,193, 56,248, 0, 1,248,120, 27,101,124,166, 3,
/* 0x18b0 */ 104,124, 4, 0,158,128, 12, 0,126, 56,208,255, 33, 56, 32, 4,
/* 0x18c0 */ 128, 78, 1,255, 33,248, 8, 0, 65,248, 16, 0, 97,248, 24, 0,
/* 0x18d0 */ 129,248, 32, 0,161,248, 40, 0,193,248, 48, 0,225,248, 56, 0,
/* 0x18e0 */ 1,249, 64, 0, 33,249, 72, 0, 65,249, 80, 0, 97,249, 88, 0,
/* 0x18f0 */ 129,249, 96, 0,161,249,104, 0,193,249,112, 0,225,249,120, 0,
/* 0x1900 */ 1,250,128, 0, 33,250,136, 0, 65,250,144, 0, 97,250,152, 0,
/* 0x1910 */ 129,250,160, 0,161,250,168, 0,193,250,176, 0,225,250,184, 0,
/* 0x1920 */ 1,251,192, 0, 33,251,200, 0, 65,251,208, 0, 97,251,216, 0,
/* 0x1930 */ 129,251,224, 0,161,251,232, 0,193,251,240, 0,225,251,166, 2,
/* 0x1940 */ 232,127, 29,255,255, 75,102,105,108,101, 32,102,111,114,109, 97,
/* 0x1950 */ 116, 32,101,108,102, 54, 52, 45,112,111,119,101,114,112, 99,108,
/* 0x1960 */ 101, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120,
/* 0x1970 */ 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,
/* 0x1980 */ 105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32,
/* 0x1990 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, 32, 32,
/* 0x19a0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 70,105,108,
/* 0x19b0 */ 101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,
/* 0x19c0 */ 103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32,
/* 0x19d0 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48,
/* 0x19e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x19f0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a00 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, 50, 42, 42,
/* 0x1a10 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76,
/* 0x1a20 */ 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49,
/* 0x1a30 */ 32, 78, 82, 86, 95, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48,
/* 0x1a40 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1a60 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1a70 */ 48, 48, 48, 52, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x1a80 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10,
/* 0x1a90 */ 32, 32, 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32,
/* 0x1aa0 */ 32, 32, 48, 48, 48, 48, 48, 49, 54, 56, 32, 32, 48, 48, 48, 48,
/* 0x1ab0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1ac0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x1ad0 */ 48, 48, 48, 48, 48, 48, 52, 52, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x1ae0 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44,
/* 0x1af0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82,
/* 0x1b00 */ 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48,
/* 0x1b10 */ 48, 49, 52, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b20 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b30 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49,
/* 0x1b40 */ 97, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1b50 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79,
/* 0x1b60 */ 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32,
/* 0x1b70 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 48, 56, 32, 32,
/* 0x1b80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b90 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ba0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 50,102, 48, 32, 32, 50, 42,
/* 0x1bb0 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x1bc0 */ 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32,
/* 0x1bd0 */ 53, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32,
/* 0x1be0 */ 48, 48, 48, 48, 48, 48, 56, 99, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1bf0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x1c00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1c10 */ 48, 48, 48, 51,102, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x1c20 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82,
/* 0x1c30 */ 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65,
/* 0x1c40 */ 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57,
/* 0x1c50 */ 57, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c60 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c70 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 56, 52,
/* 0x1c80 */ 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83,
/* 0x1c90 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76,
/* 0x1ca0 */ 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48,
/* 0x1cb0 */ 48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1cc0 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1cd0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1ce0 */ 101, 50, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69,
/* 0x1cf0 */ 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32,
/* 0x1d00 */ 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32,
/* 0x1d10 */ 48, 48, 48, 48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48,
/* 0x1d20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x1d30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1d40 */ 48, 48, 49, 55, 98, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79,
/* 0x1d50 */ 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89,
/* 0x1d60 */ 10, 32, 32, 57, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32,
/* 0x1d70 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 99, 32, 32, 48, 48, 48,
/* 0x1d80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1d90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1da0 */ 32, 48, 48, 48, 48, 49, 55,100, 99, 32, 32, 50, 42, 42, 48, 32,
/* 0x1db0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79,
/* 0x1dc0 */ 78, 76, 89, 10, 32, 49, 48, 32, 67, 70, 76, 85, 83, 72, 32, 32,
/* 0x1dd0 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 52, 32, 32,
/* 0x1de0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1df0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e00 */ 48, 48, 32, 32, 48, 48, 48, 48, 49, 55,102, 56, 32, 32, 50, 42,
/* 0x1e10 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x1e20 */ 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 69, 76, 70, 77, 65,
/* 0x1e30 */ 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50,
/* 0x1e40 */ 50, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e50 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e60 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 56, 49, 99, 32,
/* 0x1e70 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x1e80 */ 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89,
/* 0x1e90 */ 10, 32, 49, 50, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32,
/* 0x1ea0 */ 32, 32, 32, 48, 48, 48, 48, 48, 49, 48, 56, 32, 32, 48, 48, 48,
/* 0x1eb0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1ec0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1ed0 */ 32, 48, 48, 48, 48, 49, 56, 51,101, 32, 32, 50, 42, 42, 48, 32,
/* 0x1ee0 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67,
/* 0x1ef0 */ 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79,
/* 0x1f00 */ 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
/* 0x1f20 */ 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, 48, 48, 48,
/* 0x1f30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90,
/* 0x1f40 */ 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
/* 0x1f60 */ 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48,
/* 0x1f70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95,
/* 0x1f80 */ 84, 65, 73, 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f90 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76,
/* 0x1fa0 */ 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1fb0 */ 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89,
/* 0x1fc0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1fd0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73,
/* 0x1fe0 */ 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ff0 */ 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48,
/* 0x2000 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
/* 0x2010 */ 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48,
/* 0x2020 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2030 */ 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48,
/* 0x2040 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
/* 0x2050 */ 32, 32, 78, 82, 86, 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48,
/* 0x2060 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95,
/* 0x2070 */ 72, 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2080 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82,
/* 0x2090 */ 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20a0 */ 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48,
/* 0x20b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32,
/* 0x20c0 */ 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48,
/* 0x20d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68,
/* 0x20e0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20f0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 66, 9,
/* 0x2100 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2110 */ 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2120 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x2130 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48, 48,
/* 0x2140 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65,
/* 0x2150 */ 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2160 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x2170 */ 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48, 48,
/* 0x2180 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65,
/* 0x2190 */ 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21a0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x21b0 */ 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48, 48,
/* 0x21c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65,
/* 0x21d0 */ 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21e0 */ 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32,
/* 0x21f0 */ 67, 70, 76, 85, 83, 72, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2200 */ 48, 48, 48, 48, 48, 48, 48, 32, 67, 70, 76, 85, 83, 72, 10, 48,
/* 0x2210 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2220 */ 103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88,
/* 0x2230 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2240 */ 48, 32, 95,115,116, 97,114,116, 10, 10, 82, 69, 76, 79, 67, 65,
/* 0x2250 */ 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82,
/* 0x2260 */ 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70,
/* 0x2270 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
/* 0x2280 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2290 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x22a0 */ 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82,
/* 0x22b0 */ 69, 76, 50, 52, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78,
/* 0x22c0 */ 90, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x22d0 */ 48, 48, 56, 52, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
/* 0x22e0 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82,
/* 0x22f0 */ 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32,
/* 0x2300 */ 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32,
/* 0x2310 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48,
/* 0x2320 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,100, 52, 32,
/* 0x2330 */ 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32,
/* 0x2340 */ 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79,
/* 0x2350 */ 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70,
/* 0x2360 */ 79, 82, 32, 91, 78, 82, 86, 50, 68, 93, 58, 10, 79, 70, 70, 83,
/* 0x2370 */ 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80,
/* 0x2380 */ 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86,
/* 0x2390 */ 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x23a0 */ 48, 48, 48, 99, 99, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69,
/* 0x23b0 */ 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76,
/* 0x23c0 */ 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67,
/* 0x23d0 */ 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93,
/* 0x23e0 */ 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x23f0 */ 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2400 */ 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48,
/* 0x2410 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 97, 56, 32, 82, 95, 80, 80,
/* 0x2420 */ 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 78, 82,
/* 0x2430 */ 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x2440 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x2450 */ 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70,
/* 0x2460 */ 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89,
/* 0x2470 */ 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2480 */ 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2490 */ 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82,
/* 0x24a0 */ 69, 76, 49, 52, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69,
/* 0x24b0 */ 67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x24c0 */ 48, 48, 48, 48, 50, 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73,
/* 0x24d0 */ 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91,
/* 0x24e0 */ 69, 76, 70, 77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69,
/* 0x24f0 */ 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69,
/* 0x2500 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65,
/* 0x2510 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2520 */ 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76,
/* 0x2530 */ 50, 52, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10,
/* 0x2540 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
/* 0x2550 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78,
/* 0x2560 */ 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32,
/* 0x2570 */ 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32,
/* 0x2580 */ 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48,
/* 0x2590 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 53, 52, 32, 82, 95,
/* 0x25a0 */ 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32,
/* 0x25b0 */ 69, 76, 70, 77, 65, 73, 78, 89, 10
};

View File

@ -0,0 +1,187 @@
/* ppc64le-linux.elf-fold.h
created from ppc64le-linux.elf-fold.bin, 2368 (0x940) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2015 Laszlo Molnar
Copyright (C) 2000-2015 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#define STUB_PPC64LE_LINUX_ELF_FOLD_SIZE 2368
#define STUB_PPC64LE_LINUX_ELF_FOLD_ADLER32 0x7c475e87
#define STUB_PPC64LE_LINUX_ELF_FOLD_CRC32 0x2db86fe3
unsigned char stub_ppc64le_linux_elf_fold[2368] = {
/* 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,188, 0, 16, 0, 0, 0, 0, 0,
/* 0x0020 */ 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 2, 0, 0, 0, 64, 0, 56, 0, 2, 0, 64, 0, 0, 0, 0, 0,
/* 0x0040 */ 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0050 */ 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
/* 0x0060 */ 64, 9, 0, 0, 0, 0, 0, 0, 64, 9, 0, 0, 0, 0, 0, 0,
/* 0x0070 */ 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
/* 0x0080 */ 64, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0090 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x00a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
/* 0x00b0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 0, 0, 72,
/* 0x00c0 */ 208, 0, 6, 40, 32, 0,194, 76,191,240,132, 84, 32, 0,194, 77,
/* 0x00d0 */ 16, 0, 0, 60, 64, 0, 4,124, 8, 0,128, 65,120, 3, 4,124,
/* 0x00e0 */ 32, 1,165, 56,120, 27,103,124,252,255, 99, 56,166, 3,137,124,
/* 0x00f0 */ 28, 0, 0, 72,186, 2, 75, 84, 80, 88, 99,125, 20, 58,107,125,
/* 0x0100 */ 186, 1, 98, 81, 0, 0, 67,144, 32, 0, 64, 79, 4, 0, 67,132,
/* 0x0110 */ 190, 85, 75, 84, 64, 40, 11,124,220,255,194, 65,240,255, 32, 67,
/* 0x0120 */ 32, 0,128, 78, 0, 0, 73,232, 8, 0, 41, 57, 0, 0,130, 47,
/* 0x0130 */ 244,255,254, 64, 32, 0,128, 78, 48, 0, 33, 56,166, 2, 8,125,
/* 0x0140 */ 0, 0, 33,233,225,255,255, 75,221,255,255, 75,248,255,159,128,
/* 0x0150 */ 38, 0, 30, 85,120,251,231,127, 80,248,164,127, 0,248,161, 56,
/* 0x0160 */ 248,255,189, 59, 80,255,132, 56,176, 0,125, 56,208,247, 33, 56,
/* 0x0170 */ 24, 0,195,128,181, 5, 0, 72,120, 27,127,124,120,235,163,127,
/* 0x0180 */ 80,240,157,124,197, 0, 0, 72,166, 3,232,127, 56, 8, 65,232,
/* 0x0190 */ 64, 8, 97,232, 72, 8,129,232, 80, 8,161,232, 88, 8,193,232,
/* 0x01a0 */ 96, 8,225,232,104, 8, 1,233,112, 8, 33,233,120, 8, 65,233,
/* 0x01b0 */ 128, 8, 97,233,136, 8,129,233,144, 8,161,233,152, 8,193,233,
/* 0x01c0 */ 160, 8,225,233,168, 8, 1,234,176, 8, 33,234,184, 8, 65,234,
/* 0x01d0 */ 192, 8, 97,234,200, 8,129,234,208, 8,161,234,216, 8,193,234,
/* 0x01e0 */ 224, 8,225,234,232, 8, 1,235,240, 8, 33,235,248, 8, 65,235,
/* 0x01f0 */ 0, 9, 97,235, 8, 9,129,235, 16, 9,161,235, 24, 9,193,235,
/* 0x0200 */ 32, 9,225,235, 48, 8, 33,232, 32, 0,128, 78, 90, 0, 0, 56,
/* 0x0210 */ 2, 0, 0, 68, 8, 0,227, 64,255,255, 96, 56, 32, 0,128, 78,
/* 0x0220 */ 1, 0, 0, 56,236,255,255, 75, 3, 0, 0, 56,228,255,255, 75,
/* 0x0230 */ 5, 0, 0, 56,220,255,255, 75, 6, 0, 0, 56,212,255,255, 75,
/* 0x0240 */ 125, 0, 0, 56,204,255,255, 75, 91, 0, 0, 56,196,255,255, 75,
/* 0x0250 */ 45, 0, 0, 56,188,255,255, 75, 0, 0, 35, 44, 32, 0,130, 77,
/* 0x0260 */ 0, 0,164, 46, 0, 0, 67,233, 64, 32,170,127, 16, 0,158, 64,
/* 0x0270 */ 0, 0,131,248, 8, 0,163,248, 32, 0,128, 78, 1, 0,170, 43,
/* 0x0280 */ 8, 0,158, 64,236,255,150, 64, 16, 0, 99, 56,216,255,255, 75,
/* 0x0290 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 64, 60,
/* 0x02a0 */ 0,128, 66, 56, 0, 0, 35,233, 8, 0, 67,233, 64, 40,169,127,
/* 0x02b0 */ 20, 0,220, 65, 1, 0, 5, 57, 0, 0, 32, 57,166, 3, 9,125,
/* 0x02c0 */ 28, 0, 0, 72,166, 2, 8,124,127, 0, 96, 56, 16, 0, 1,248,
/* 0x02d0 */ 225,255, 33,248, 77,255,255, 75, 0, 0, 0, 96, 20, 0, 64, 66,
/* 0x02e0 */ 174, 72, 10,125,174, 73, 4,125, 1, 0, 41, 57,240,255,255, 75,
/* 0x02f0 */ 8, 0, 35,233, 20, 42, 41,125, 8, 0, 35,249, 0, 0, 35,233,
/* 0x0300 */ 80, 72,165,124, 0, 0,163,248, 32, 0,128, 78, 0, 0, 0, 0,
/* 0x0310 */ 0, 0, 0, 1,128, 0, 0, 0, 17, 0, 64, 60, 0,128, 66, 56,
/* 0x0320 */ 38,128,144,125,166, 2, 8,124, 8, 0,129,145, 0, 0, 38, 46,
/* 0x0330 */ 169, 5, 0, 72,177,255, 33,248,120, 27,126,124,120, 35,159,124,
/* 0x0340 */ 120, 43,189,124,120, 51,220,124, 0, 0, 63,233, 0, 0,169, 47,
/* 0x0350 */ 44, 1,158, 65, 12, 0,160, 56, 32, 0,129, 56,120,243,195,127,
/* 0x0360 */ 69,255,255, 75, 32, 0, 65,129, 36, 0, 33,129, 0, 0,170, 47,
/* 0x0370 */ 32, 0,158, 64, 88, 33, 42,109, 85, 80,138, 47, 28, 0,158, 64,
/* 0x0380 */ 0, 0, 62,233, 0, 0,169, 47,244, 0,254, 65, 12, 0, 0, 72,
/* 0x0390 */ 0, 0,169, 47, 16, 0,254, 64,127, 0, 96, 56,133,254,255, 75,
/* 0x03a0 */ 0, 0, 0, 96, 64, 72,138,126,240,255,212, 65, 0, 0, 31,233,
/* 0x03b0 */ 64, 64,170,127,228,255,221, 65, 8, 0,159,232,148, 0,149, 64,
/* 0x03c0 */ 166, 3,169,127,120, 35,133,124, 44, 0, 65,145, 40, 0,225,136,
/* 0x03d0 */ 8, 0,126,232, 44, 0,193, 56,120, 75, 36,125, 24, 0, 65,248,
/* 0x03e0 */ 120,235,172,127, 33, 4,128, 78, 24, 0, 65,232, 0, 0,163, 47,
/* 0x03f0 */ 168,255,222, 64, 32, 0,129,128, 44, 0, 33,129, 0, 32,137,127,
/* 0x0400 */ 152,255,222, 64, 41, 0,193,136, 0, 0,166, 47, 36, 0,158, 65,
/* 0x0410 */ 32, 0,146, 65,166, 3,137,127, 8, 0,127,232, 42, 0,161,136,
/* 0x0420 */ 24, 0, 65,248,120,227,140,127, 33, 4,128, 78, 24, 0, 65,232,
/* 0x0430 */ 36, 0, 33,129, 8, 0, 94,233, 20, 74, 74,125, 8, 0, 94,249,
/* 0x0440 */ 0, 0, 94,233, 80, 80, 41,125, 0, 0, 62,249, 16, 0, 0, 72,
/* 0x0450 */ 120, 75, 37,125,120,243,195,127, 77,254,255, 75, 32, 0, 33,129,
/* 0x0460 */ 8, 0, 95,233, 20, 74, 74,125, 8, 0, 95,249, 0, 0, 95,233,
/* 0x0470 */ 80, 80, 41,125, 0, 0, 63,249,208,254,255, 75, 80, 0, 33, 56,
/* 0x0480 */ 8, 0,129,129, 32,129,144,125,156, 4, 0, 72, 0, 0, 0, 0,
/* 0x0490 */ 0, 0, 0, 3,128, 4, 0, 0, 17, 0, 64, 60, 0,128, 66, 56,
/* 0x04a0 */ 166, 2, 8,124, 56, 0, 35,161, 38,128,144,125, 1, 0, 41, 57,
/* 0x04b0 */ 166, 3, 41,125, 8, 0,129,145,237, 3, 0, 72,120, 51,217,124,
/* 0x04c0 */ 16, 0,195,160, 32, 0,195,235, 65,255, 33,248,120, 35,154,124,
/* 0x04d0 */ 120, 27,123,124,120, 43,189,124,120, 59,248,124,120, 67, 23,125,
/* 0x04e0 */ 3, 0,198,104, 20,242,195,127, 52, 0,198,124,120,243,202,127,
/* 0x04f0 */ 0, 0,128, 56,255,255,224, 59,126,217,198, 84, 1, 0,198,104,
/* 0x0500 */ 228, 38,198,120, 34, 8,198, 56, 60, 0, 64, 66, 0, 0, 42,129,
/* 0x0510 */ 1, 0,137, 47, 40, 0,158, 64, 16, 0, 10,233, 64, 64,191,127,
/* 0x0520 */ 8, 0,157, 64,120, 67, 31,125, 40, 0, 42,233, 20, 74, 40,125,
/* 0x0530 */ 64, 72,164,127, 8, 0,156, 64,120, 75, 36,125, 56, 0, 74, 57,
/* 0x0540 */ 200,255,255, 75, 1, 0,132, 60,228, 3,255,123,255,255,132, 56,
/* 0x0550 */ 120,251,227,127, 80, 32,159,124, 0, 0, 0, 57,255,255,224, 56,
/* 0x0560 */ 180, 7,198,124, 0, 0,160, 56,228, 3,132,120, 0, 0, 58, 46,
/* 0x0570 */ 157,252,255, 75, 0, 0, 0, 96,255,255,186, 50,255,255, 96, 58,
/* 0x0580 */ 16,209,181,126, 60, 8,181, 86, 80, 24,255,127, 32, 0,181,122,
/* 0x0590 */ 8, 0,146, 64,120,235,179,127,180, 7,115,126, 12, 0,146, 65,
/* 0x05a0 */ 50, 0, 64, 58, 8, 0, 0, 72, 18, 0, 64, 58, 81,115, 32, 62,
/* 0x05b0 */ 180, 7, 82,126, 0, 0,128, 58, 64, 98, 49, 98, 56, 0, 59,161,
/* 0x05c0 */ 0,160,137,127, 56, 1,157, 64, 0, 0, 62,129, 40, 0,146, 65,
/* 0x05d0 */ 6, 0,137, 47, 32, 0,158, 64, 16, 0,190,232, 3, 0,128, 56,
/* 0x05e0 */ 120,203, 35,127, 20,250,165,124, 32, 0,165,120,109,252,255, 75,
/* 0x05f0 */ 252, 0, 0, 72, 1, 0,137, 47,244, 0,158, 64, 4, 0,222,130,
/* 0x0600 */ 16, 0, 62,233, 32, 0,158,235, 40, 0, 30,234,120,155,103,126,
/* 0x0610 */ 120,147, 70,126, 8, 0, 30,233,250, 22,214, 86, 32, 4, 42,121,
/* 0x0620 */ 32, 0,129,251, 40, 0, 33,249, 48,180, 54,126,228, 3, 47,121,
/* 0x0630 */ 96, 7,214,122, 20, 82,188,127, 20,250,239,125,120,179,165,126,
/* 0x0640 */ 20,130, 31,126, 80, 64, 10,125,180, 7,165,124,120,235,164,127,
/* 0x0650 */ 120,123,227,125, 20,130, 9,126,181,251,255, 75, 0, 0, 0, 96,
/* 0x0660 */ 0, 24,175,127, 16, 0,254, 65,127, 0, 96, 56,181,251,255, 75,
/* 0x0670 */ 0, 0, 0, 96, 24, 0,146, 65,120,187,230,126,120,195, 5,127,
/* 0x0680 */ 32, 0,129, 56,120,211, 67,127,153,252,255, 75,208, 0,125,124,
/* 0x0690 */ 32, 4,124,120, 32, 0,146, 65,180, 7,197,126,120,235,164,127,
/* 0x06a0 */ 120,123,227,125,157,251,255, 75, 0, 0, 0, 96, 0, 0,163, 47,
/* 0x06b0 */ 184,255,222, 64, 20,226,157,127, 20,226,175,127, 64,232,176,127,
/* 0x06c0 */ 44, 0,157, 64, 0, 0, 0, 57,255,255,224, 56, 50, 0,192, 56,
/* 0x06d0 */ 180, 7,197,126, 80,128,157,124,120,235,163,127, 49,251,255, 75,
/* 0x06e0 */ 0, 0, 0, 96, 0, 24,189,127,128,255,222, 64, 1, 0,148, 58,
/* 0x06f0 */ 56, 0,222, 59,180, 7,148,126,196,254,255, 75,192, 0, 33, 56,
/* 0x0700 */ 24, 0,123,232, 8, 0,129,129, 20, 26,127,124, 32,129,144,125,
/* 0x0710 */ 224, 1, 0, 72, 0, 0, 0, 0, 0, 0, 0, 3,128, 17, 0, 0,
/* 0x0720 */ 17, 0, 64, 60, 0,128, 66, 56,166, 2, 8,124,232,255,132, 56,
/* 0x0730 */ 0, 0,192, 56,161, 1, 0, 72,113,255, 33,248,120, 75, 62,125,
/* 0x0740 */ 24, 0, 35, 57,120, 43,191,124, 64, 0,165, 59, 72, 0, 33,249,
/* 0x0750 */ 64, 0,129,248, 48, 0,129, 56, 24, 0, 35,129, 56, 0,161,248,
/* 0x0760 */ 64, 0, 97, 56,120, 59,229,124, 80, 0,225,248, 88, 0, 1,249,
/* 0x0770 */ 48, 0, 33,249, 64, 0, 65,233, 72, 0, 97,233, 32, 0, 65,249,
/* 0x0780 */ 40, 0, 97,249,157,251,255, 75, 80, 0,191,232,120,243,195,127,
/* 0x0790 */ 3, 0,128, 56, 64, 0,165, 56, 32, 0,165,120,189,250,255, 75,
/* 0x07a0 */ 56, 0,191,160,120,243,195,127, 5, 0,128, 56,173,250,255, 75,
/* 0x07b0 */ 24, 0,191,128,120,243,195,127, 9, 0,128, 56,157,250,255, 75,
/* 0x07c0 */ 88, 0, 1,233, 80, 0,225,232,120,243,198,127, 0, 0,160, 56,
/* 0x07d0 */ 32, 0,129, 56,120,251,227,127,201,252,255, 75, 9, 0,128, 56,
/* 0x07e0 */ 32, 0,101,120,120, 27,124,124,120,243,195,127, 0, 0,192, 59,
/* 0x07f0 */ 105,250,255, 75, 56, 0, 63,161, 0,240,137,127,144, 0,157, 64,
/* 0x0800 */ 0, 0, 61,129, 3, 0,137, 47,116, 0,158, 64, 16, 0,125,232,
/* 0x0810 */ 0, 0,160, 56, 0, 0,128, 56, 25,250,255, 75, 0, 0, 0, 96,
/* 0x0820 */ 0, 0,131, 47,120, 27,123,124, 16, 0,252, 64,127, 0, 96, 56,
/* 0x0830 */ 241,249,255, 75, 0, 0, 0, 96, 0, 4,160, 56,120,251,228,127,
/* 0x0840 */ 233,249,255, 75, 0, 0, 0, 96, 0, 4,163, 47,224,255,222, 64,
/* 0x0850 */ 0, 0, 0, 57, 0, 0,224, 56, 0, 0,192, 56,120,219,101,127,
/* 0x0860 */ 0, 0,128, 56,120,251,227,127, 57,252,255, 75,120, 27,124,124,
/* 0x0870 */ 120,219, 99,127,197,249,255, 75, 0, 0, 0, 96, 1, 0,222, 59,
/* 0x0880 */ 56, 0,189, 59,180, 7,222,127,108,255,255, 75,144, 0, 33, 56,
/* 0x0890 */ 120,227,131,127,140, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1,
/* 0x08a0 */ 128, 5, 0, 0,120,255,225,249,128,255, 1,250,136,255, 33,250,
/* 0x08b0 */ 144,255, 65,250,152,255, 97,250,160,255,129,250,168,255,161,250,
/* 0x08c0 */ 176,255,193,250,184,255,225,250,192,255, 1,251,200,255, 33,251,
/* 0x08d0 */ 208,255, 65,251,216,255, 97,251,224,255,129,251,232,255,161,251,
/* 0x08e0 */ 240,255,193,251,248,255,225,251, 16, 0, 1,248, 32, 0,128, 78,
/* 0x08f0 */ 120,255,225,233,128,255, 1,234,136,255, 33,234,144,255, 65,234,
/* 0x0900 */ 152,255, 97,234,160,255,129,234,168,255,161,234,176,255,193,234,
/* 0x0910 */ 184,255,225,234,192,255, 1,235,200,255, 33,235,208,255, 65,235,
/* 0x0920 */ 216,255, 97,235,224,255,129,235, 16, 0, 1,232,232,255,161,235,
/* 0x0930 */ 166, 3, 8,124,240,255,193,235,248,255,225,235, 32, 0,128, 78
};

View File

@ -0,0 +1,40 @@
/* ppc64le-linux.kernel.vmlinux-head.h
created from ppc64le-linux.kernel.vmlinux-head.bin, 8 (0x8) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2015 Laszlo Molnar
Copyright (C) 2000-2015 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#define STUB_PPC64LE_LINUX_KERNEL_VMLINUX_HEAD_SIZE 8
#define STUB_PPC64LE_LINUX_KERNEL_VMLINUX_HEAD_ADLER32 0x0d7d0259
#define STUB_PPC64LE_LINUX_KERNEL_VMLINUX_HEAD_CRC32 0xdfb1607d
unsigned char stub_ppc64le_linux_kernel_vmlinux_head[8] = {
/* 0x0000 */ 166, 2,232,127, 1, 0, 0, 72
};

View File

@ -0,0 +1,653 @@
/* ppc64le-linux.kernel.vmlinux.h
created from ppc64le-linux.kernel.vmlinux.bin, 9824 (0x2660) bytes
This file is part of the UPX executable compressor.
Copyright (C) 1996-2015 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2015 Laszlo Molnar
Copyright (C) 2000-2015 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#define STUB_PPC64LE_LINUX_KERNEL_VMLINUX_SIZE 9824
#define STUB_PPC64LE_LINUX_KERNEL_VMLINUX_ADLER32 0xd50cc44b
#define STUB_PPC64LE_LINUX_KERNEL_VMLINUX_CRC32 0x5c4b88d2
unsigned char stub_ppc64le_linux_kernel_vmlinux[9824] = {
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0010 */ 1, 0, 21, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0,
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 25, 0, 22, 0,
/* 0x0040 */ 0, 0, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x0050 */ 208, 0, 6, 40, 32, 0,194, 76,191,240,132, 84, 32, 0,194, 77,
/* 0x0060 */ 16, 0, 0, 60, 64, 0, 4,124, 8, 0,128, 65,120, 3, 4,124,
/* 0x0070 */ 32, 1,165, 56,120, 27,103,124,252,255, 99, 56,166, 3,137,124,
/* 0x0080 */ 28, 0, 0, 72,186, 2, 75, 84, 80, 88, 99,125, 20, 58,107,125,
/* 0x0090 */ 186, 1, 98, 81, 0, 0, 67,144, 32, 0, 64, 79, 4, 0, 67,132,
/* 0x00a0 */ 190, 85, 75, 84, 64, 40, 11,124,220,255,194, 65,240,255, 32, 67,
/* 0x00b0 */ 32, 0,128, 78,236, 41, 0,124,166, 2,168,125, 2, 0, 7, 40,
/* 0x00c0 */ 252, 0,130, 64, 0, 0,166,248, 20, 26,132,124, 0,128, 0, 60,
/* 0x00d0 */ 198, 7, 0,120, 0,128, 32, 61,198, 7, 0,120,255,255, 99, 56,
/* 0x00e0 */ 255,255,165, 56,255,255, 64, 57,196, 0, 0, 72, 64, 0, 41,124,
/* 0x00f0 */ 20, 72, 41,125, 32, 0,226, 76, 1, 0, 32, 57, 46, 24, 41,125,
/* 0x0100 */ 4, 0, 99, 56,198, 7, 41,121, 64, 0, 41,124, 20, 73, 41,125,
/* 0x0110 */ 32, 0,128, 78, 1, 0, 3,141, 1, 0, 5,157,209,255,255, 75,
/* 0x0120 */ 244,255,225, 65, 1, 0,224, 56,197,255,255, 75, 21, 57,231,124,
/* 0x0130 */ 189,255,255, 75,244,255,192, 65,253,255,231, 52, 0, 0, 0, 57,
/* 0x0140 */ 32, 0,192, 65, 1, 0, 67,140, 46, 64,231, 84,255,255,128, 57,
/* 0x0150 */ 198, 7,140,121,120, 99,231,124,249, 16,234,124, 0, 0,194, 65,
/* 0x0160 */ 141,255,255, 75, 21, 65, 8,125,133,255,255, 75, 21, 65, 8,125,
/* 0x0170 */ 1, 0,224, 56, 28, 0,194, 64, 3, 0,224, 56, 1, 0, 0, 57,
/* 0x0180 */ 109,255,255, 75, 21, 65, 8,125,101,255,255, 75,244,255,192, 65,
/* 0x0190 */ 255,242, 74, 32, 20, 57, 8,125, 20, 42,234,124,166, 3, 9,125,
/* 0x01a0 */ 1, 0, 7,141, 1, 0, 5,157,248,255, 32, 67, 0, 1,224, 56,
/* 0x01b0 */ 236, 41, 7,124, 44, 26, 7,124,100,255,255, 75,236, 41, 0,124,
/* 0x01c0 */ 166, 2,168,125, 5, 0, 7, 40, 56, 1,130, 64, 0, 0,166,248,
/* 0x01d0 */ 20, 26,132,124, 0,128, 0, 60,198, 7, 0,120, 0,128, 32, 61,
/* 0x01e0 */ 198, 7, 0,120,255,255, 99, 56,255,255,165, 56,255,255, 64, 57,
/* 0x01f0 */ 0, 1, 0, 72, 1, 0, 32, 57, 46, 24, 41,125, 4, 0, 99, 56,
/* 0x0200 */ 198, 7, 41,121, 64, 0, 9,124, 20, 72, 41,125, 1, 0, 41, 97,
/* 0x0210 */ 32, 0,128, 78, 1, 0, 3,141, 1, 0, 5,157, 64, 0, 41,124,
/* 0x0220 */ 20, 74, 41,125,209,255,194, 65,236,255,225, 65, 1, 0,224, 56,
/* 0x0230 */ 20, 0, 0, 72,255,255,231, 56, 21, 72, 41,125,185,255,194, 65,
/* 0x0240 */ 21, 57,231,124, 21, 72, 41,125,173,255,194, 65, 21, 57,231,124,
/* 0x0250 */ 64, 0, 41,124, 20, 74, 41,125,157,255,194, 65,216,255,192, 65,
/* 0x0260 */ 0, 0, 0, 57,253,255,231, 52, 46, 64,231, 84,255,255,128, 57,
/* 0x0270 */ 198, 7,140,121,120, 99,231,124, 24, 0,192, 65, 1, 0, 67,140,
/* 0x0280 */ 249, 16,234,124,112, 14, 74,125, 0, 0,194, 65, 12, 0, 0, 72,
/* 0x0290 */ 21, 72, 41,125, 97,255,194, 65, 21, 65, 8,125, 21, 72, 41,125,
/* 0x02a0 */ 85,255,194, 65, 21, 65, 8,125, 40, 0,130, 64, 1, 0, 0, 57,
/* 0x02b0 */ 21, 72, 41,125, 65,255,194, 65, 21, 65, 8,125, 64, 0, 41,124,
/* 0x02c0 */ 20, 74, 41,125, 49,255,194, 65,232,255,192, 65, 2, 0, 8, 57,
/* 0x02d0 */ 255,250,234, 32, 1, 0, 8, 57,148, 1, 8,125, 20, 42,234,124,
/* 0x02e0 */ 166, 3, 9,125, 1, 0, 7,141, 1, 0, 5,157,248,255, 32, 67,
/* 0x02f0 */ 0, 1,224, 56,236, 41, 7,124, 44, 26, 7,124, 32,255,255, 75,
/* 0x0300 */ 236, 41, 0,124,166, 2,168,125, 8, 0, 7, 40, 92, 1,130, 64,
/* 0x0310 */ 0, 0,166,248, 20, 26,132,124, 0,128, 0, 60,198, 7, 0,120,
/* 0x0320 */ 0,128, 32, 61,198, 7, 41,121,255,255, 99, 56,255,255,165, 56,
/* 0x0330 */ 255,255, 64, 57, 36, 1, 0, 72, 1, 0, 32, 57, 46, 24, 41,125,
/* 0x0340 */ 4, 0, 99, 56,198, 7, 41,121, 64, 0, 41,124, 20, 72, 41,125,
/* 0x0350 */ 1, 0,128, 57,198, 7,140,121,120, 99, 41,125, 32, 0,128, 78,
/* 0x0360 */ 1, 0, 3,141, 1, 0, 5,157, 64, 0, 41,124, 20, 74, 41,125,
/* 0x0370 */ 201,255,194, 65,236,255,225, 65, 1, 0,224, 56, 20, 0, 0, 72,
/* 0x0380 */ 255,255,231, 56, 21, 72, 41,125,177,255,194, 65, 20, 57,231,124,
/* 0x0390 */ 21, 72, 41,125,165,255,194, 65, 20, 57,231,124, 64, 0, 41,124,
/* 0x03a0 */ 20, 74, 41,125,149,255,194, 65,216,255,192, 65, 0, 0, 0, 57,
/* 0x03b0 */ 253,255,231, 52, 46, 64,231, 84,255,255,128, 57,198, 7,140,121,
/* 0x03c0 */ 120, 99,231,124, 32, 0,192, 65, 1, 0, 67,140,249, 16,234,124,
/* 0x03d0 */ 112, 14, 74,125, 0, 0,194, 65, 1, 0, 66,112, 80, 0,226, 65,
/* 0x03e0 */ 20, 0, 0, 72, 64, 0, 41,124, 20, 74, 41,125, 77,255,194, 65,
/* 0x03f0 */ 60, 0,225, 65, 1, 0, 0, 57, 64, 0, 41,124, 20, 74, 41,125,
/* 0x0400 */ 57,255,194, 65, 40, 0,225, 65, 21, 72, 41,125, 45,255,194, 65,
/* 0x0410 */ 20, 65, 8,125, 64, 0, 41,124, 20, 74, 41,125, 29,255,194, 65,
/* 0x0420 */ 232,255,192, 65, 2, 0, 8, 57, 16, 0, 0, 72, 21, 72, 41,125,
/* 0x0430 */ 9,255,194, 65, 20, 65, 8,125,255,250,234, 32, 2, 0, 8, 57,
/* 0x0440 */ 148, 1, 8,125, 20, 42,234,124,166, 3, 9,125, 1, 0, 7,141,
/* 0x0450 */ 1, 0, 5,157,248,255, 32, 67, 0, 1,224, 56,236, 41, 7,124,
/* 0x0460 */ 44, 26, 7,124, 4,255,255, 75, 0, 0,230,232,166, 3,168,125,
/* 0x0470 */ 80, 24,100,124, 80, 40,135,124, 1, 0, 99, 56, 1, 0,132, 56,
/* 0x0480 */ 0, 0,134,248, 31, 0,231, 96,108, 56, 0,124, 64, 40, 7,124,
/* 0x0490 */ 172, 63, 0,124, 32, 0,231, 56,240,255,128, 65,172, 4, 0,124,
/* 0x04a0 */ 44, 1, 0, 76, 32, 0,128, 78, 14, 0, 7, 40, 0, 0,130, 64,
/* 0x04b0 */ 166, 2, 8,124,120, 51,201,124, 0, 0, 6,129,120, 43,167,124,
/* 0x04c0 */ 254,255,164, 56, 2, 0,131, 56, 8, 0, 1,144, 0, 0, 3,136,
/* 0x04d0 */ 254,232, 11, 84,126, 7, 2, 84, 0,250, 96, 56, 48, 88, 99,124,
/* 0x04e0 */ 124,241, 99, 56,120, 11, 38,124, 20, 26, 33,124, 52, 0, 33, 84,
/* 0x04f0 */ 0, 0, 0, 56,120, 51,195,124, 0, 0, 9,144,252,255, 3,148,
/* 0x0500 */ 64, 24, 1,124,248,255,128, 65, 0, 0,193,144,255,255, 4,136,
/* 0x0510 */ 8, 0,225,144, 16, 0,193, 56, 12, 0, 33,145, 20, 0, 97, 56,
/* 0x0520 */ 62,225, 11, 84, 62, 7, 0, 84, 2, 0, 67,152, 1, 0, 99,153,
/* 0x0530 */ 0, 0, 3,152,124, 8, 2,166,148, 33,255,160,189,193, 0, 24,
/* 0x0540 */ 144, 1, 0,100, 59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,
/* 0x0550 */ 138, 67, 0, 0,147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,
/* 0x0560 */ 125, 40, 3,166,124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48,
/* 0x0570 */ 56, 9, 7, 54,127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,
/* 0x0580 */ 125, 41, 80, 48, 57, 41,255,255, 57,107,255,255,145, 33, 0, 8,
/* 0x0590 */ 124,206, 51,120,124,147, 35,120,124,245, 59,120,125, 20, 67,120,
/* 0x05a0 */ 145, 97, 0, 12, 59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0,
/* 0x05b0 */ 59, 64, 0, 1, 58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1,
/* 0x05c0 */ 57, 32, 0, 0, 64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0,
/* 0x05d0 */ 85, 32, 8, 60,125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,
/* 0x05e0 */ 127,179, 42, 20,126,108,155,120, 56,160, 0, 0, 57, 0,255,255,
/* 0x05f0 */ 57, 96, 0, 0,127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4,
/* 0x0600 */ 84,169, 64, 46, 65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,
/* 0x0610 */ 125, 37, 3,120, 64,153,255,224,127,153,160, 64, 64,156, 8,100,
/* 0x0620 */ 62,192, 0,255, 98,214,255,255,128, 1, 0, 8,127,136,176, 64,
/* 0x0630 */ 127, 35, 0, 56, 86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60,
/* 0x0640 */ 65,157, 0, 32,127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0,
/* 0x0650 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0660 */ 124,230,194, 46, 85, 0,170,254,125, 64, 57,214,127,133, 80, 64,
/* 0x0670 */ 64,156, 1,172,128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56,
/* 0x0680 */ 32, 18, 0, 8,127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20,
/* 0x0690 */ 29, 41, 6, 0, 32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,
/* 0x06a0 */ 125, 56, 74, 20,124, 6,195, 46,125, 72, 83,120, 56,201, 14,108,
/* 0x06b0 */ 56, 96, 0, 1, 64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,
/* 0x06c0 */ 127,245, 0,174, 99,123,255,255, 87,255, 8, 60, 87,252, 5,238,
/* 0x06d0 */ 127,136,216, 64, 87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,
/* 0x06e0 */ 127, 12,232, 0, 84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24,
/* 0x06f0 */ 65,154, 7,176,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0700 */ 125, 37, 3,120,161,103, 2, 0, 85, 0,170,254,125, 64, 89,214,
/* 0x0710 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x0720 */ 124, 11, 2, 20, 47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,
/* 0x0730 */ 125, 10, 64, 80, 64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120,
/* 0x0740 */ 65,186, 0, 24, 72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80,
/* 0x0750 */ 56,100, 0, 1, 65,154, 0, 12, 47,131, 0,255, 64,157,255,108,
/* 0x0760 */ 47,131, 0,255, 65,157, 0,132, 63,224, 0,255, 99,255,255,255,
/* 0x0770 */ 127,136,248, 64, 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,
/* 0x0780 */ 124,227, 59,120, 65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0,
/* 0x0790 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46,
/* 0x07a0 */ 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,
/* 0x07b0 */ 124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,
/* 0x07c0 */ 125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46,
/* 0x07d0 */ 72, 0, 0, 16,124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1,
/* 0x07e0 */ 47,131, 0,255, 64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,
/* 0x07f0 */ 127,249,169,174, 59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0,
/* 0x0800 */ 72, 0, 6,120, 47,151, 0, 9, 65,157, 0, 12, 58,247,255,253,
/* 0x0810 */ 72, 0, 6,104, 58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,
/* 0x0820 */ 127,136,176, 64, 84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,
/* 0x0830 */ 124, 6,195, 46,124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,
/* 0x0840 */ 127,140,232, 0, 65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,
/* 0x0850 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128,
/* 0x0860 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64,
/* 0x0870 */ 32, 11, 8, 0, 47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,
/* 0x0880 */ 176, 7, 1,128,126, 15,131,120,125, 72, 83,120,126, 48,139,120,
/* 0x0890 */ 56, 0, 0, 0,127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,
/* 0x08a0 */ 124, 23, 3,120, 56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,
/* 0x08b0 */ 127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,
/* 0x08c0 */ 176, 7, 1,128, 65,157, 0, 32,127,140,232, 0, 65,158, 5,212,
/* 0x08d0 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x08e0 */ 57,140, 0, 1,161,103, 1,152, 85, 0,170,254,125, 64, 89,214,
/* 0x08f0 */ 127,133, 80, 64, 64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,
/* 0x0900 */ 124, 0, 46,112, 86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20,
/* 0x0910 */ 84,107, 8, 60,176, 7, 1,152,125, 72, 83,120,124,233, 90, 20,
/* 0x0920 */ 65,157, 0, 32,127,140,232, 0, 65,158, 5,120,137, 44, 0, 0,
/* 0x0930 */ 84,160, 64, 46,124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,
/* 0x0940 */ 161,103, 1,224, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x0950 */ 64,156, 0, 72, 32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,
/* 0x0960 */ 124, 11, 2, 20,176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52,
/* 0x0970 */ 47,151, 0, 6, 57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,
/* 0x0980 */ 124, 26,200, 80,127,245, 0,174,125, 55, 75,120,127,249,169,174,
/* 0x0990 */ 59, 57, 0, 1, 72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,
/* 0x09a0 */ 124,170, 40, 80,125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,
/* 0x09b0 */ 125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,
/* 0x09c0 */ 124,170, 40, 80,176, 7, 1,152, 65,157, 0, 32,127,140,232, 0,
/* 0x09d0 */ 65,158, 4,208,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x09e0 */ 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,176, 85, 0,170,254,
/* 0x09f0 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,
/* 0x0a00 */ 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,
/* 0x0a10 */ 176, 7, 1,176, 72, 0, 0,140,125, 10, 64, 80,127,136,176, 64,
/* 0x0a20 */ 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176,
/* 0x0a30 */ 65,157, 0, 32,127,140,232, 0, 65,158, 4,104,137, 44, 0, 0,
/* 0x0a40 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0a50 */ 161,103, 1,200, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x0a60 */ 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,
/* 0x0a70 */ 125, 72, 83,120,126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32,
/* 0x0a80 */ 85, 96,217,126,124, 0, 88, 80,125,233,123,120,176, 7, 1,200,
/* 0x0a90 */ 124,170, 40, 80,125, 10, 64, 80,126, 15,131,120,126, 48,139,120,
/* 0x0aa0 */ 127, 81,211,120,125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8,
/* 0x0ab0 */ 64,157, 0, 8, 56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,
/* 0x0ac0 */ 127,136,176, 64, 65,157, 0, 32,127,140,232, 0, 65,158, 3,212,
/* 0x0ad0 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x0ae0 */ 57,140, 0, 1,161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,
/* 0x0af0 */ 127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,
/* 0x0b00 */ 125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,
/* 0x0b10 */ 56,137, 0, 4, 59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0,
/* 0x0b20 */ 72, 0, 0,156,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,
/* 0x0b30 */ 124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,
/* 0x0b40 */ 127,140,232, 0, 65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,
/* 0x0b50 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2,
/* 0x0b60 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48,
/* 0x0b70 */ 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,
/* 0x0b80 */ 124, 11, 2, 20,125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8,
/* 0x0b90 */ 59, 96, 0, 3,176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,
/* 0x0ba0 */ 124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80,
/* 0x0bb0 */ 56,134, 2, 4, 59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166,
/* 0x0bc0 */ 63,224, 0,255, 99,255,255,255, 56, 96, 0, 1,127,136,248, 64,
/* 0x0bd0 */ 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120,
/* 0x0be0 */ 65,157, 0, 24, 65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0bf0 */ 57,140, 0, 1,125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,
/* 0x0c00 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x0c10 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x0c20 */ 64,156, 0, 16,125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,
/* 0x0c30 */ 124,170, 40, 80, 56,103, 0, 1,125,100, 59, 46, 66, 0,255,144,
/* 0x0c40 */ 56, 0, 0, 1, 47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,
/* 0x0c50 */ 124, 99,226, 20, 65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,
/* 0x0c60 */ 124,105, 27,120, 64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,
/* 0x0c70 */ 125, 56, 74, 20, 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166,
/* 0x0c80 */ 63,224, 0,255, 99,255,255,255, 56,128, 0, 1,127,136,248, 64,
/* 0x0c90 */ 84,135, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,228, 59,120,
/* 0x0ca0 */ 65,157, 0, 24, 65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x0cb0 */ 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,
/* 0x0cc0 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x0cd0 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x0ce0 */ 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,
/* 0x0cf0 */ 124,170, 40, 80, 56,135, 0, 1,125,102, 59, 46, 66, 0,255,144,
/* 0x0d00 */ 56,132,255,192, 47,132, 0, 3,124,154, 35,120, 64,157, 1, 40,
/* 0x0d10 */ 47,132, 0, 13,124,137, 14,112, 84,128, 7,254, 57,105,255,255,
/* 0x0d20 */ 96, 26, 0, 2,125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48,
/* 0x0d30 */ 87, 73, 8, 60,125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80,
/* 0x0d40 */ 56,201, 5, 94, 72, 0, 0,100, 57, 41,255,251,125, 41, 3,166,
/* 0x0d50 */ 61, 96, 0,255, 97,107,255,255,127,136, 88, 64,127, 12,232, 0,
/* 0x0d60 */ 84,169, 64, 46, 87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,
/* 0x0d70 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x0d80 */ 85, 8,248,126,127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80,
/* 0x0d90 */ 99, 90, 0, 1, 66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166,
/* 0x0da0 */ 87, 90, 32, 54, 56,216, 6, 68, 60,128, 0,255, 96,132,255,255,
/* 0x0db0 */ 59,128, 0, 1, 59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,
/* 0x0dc0 */ 127, 12,232, 0, 84,169, 64, 46,124,255, 59,120, 65,157, 0, 24,
/* 0x0dd0 */ 65,154, 0,208,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x0de0 */ 125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x0df0 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x0e00 */ 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,
/* 0x0e10 */ 125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80,
/* 0x0e20 */ 59,231, 0, 1,125,102, 59, 46,127, 90,227,120, 87,156, 8, 60,
/* 0x0e30 */ 66, 0,255,136, 55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64,
/* 0x0e40 */ 56, 99, 0, 2, 65,157, 0, 92,124, 26,200, 80,127,245, 0,174,
/* 0x0e50 */ 56, 99,255,255,127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,
/* 0x0e60 */ 125, 43, 25, 16,124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,
/* 0x0e70 */ 125, 43, 0, 57, 64,130,255,212,127,153,160, 64, 65,156,247,172,
/* 0x0e80 */ 60, 0, 0,255, 96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,
/* 0x0e90 */ 127,140,232, 0, 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12,
/* 0x0ea0 */ 56, 96, 0, 1, 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,
/* 0x0eb0 */ 124, 19, 96, 80,144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,
/* 0x0ec0 */ 128, 1, 0,100,185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96,
/* 0x0ed0 */ 124, 8, 2,166,148, 33,255,160,189,193, 0, 24,144, 1, 0,100,
/* 0x0ee0 */ 59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0,
/* 0x0ef0 */ 147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166,
/* 0x0f00 */ 124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54,
/* 0x0f10 */ 127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48,
/* 0x0f20 */ 57, 41,255,255, 57,107,255,255,145, 33, 0, 8,124,206, 51,120,
/* 0x0f30 */ 124,147, 35,120,124,245, 59,120,125, 20, 67,120,145, 97, 0, 12,
/* 0x0f40 */ 59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1,
/* 0x0f50 */ 58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0,
/* 0x0f60 */ 64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60,
/* 0x0f70 */ 125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20,
/* 0x0f80 */ 126,108,155,120, 56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0,
/* 0x0f90 */ 127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46,
/* 0x0fa0 */ 65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120,
/* 0x0fb0 */ 64,153,255,224,127,153,160, 64, 64,156, 8,100, 62,192, 0,255,
/* 0x0fc0 */ 98,214,255,255,128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56,
/* 0x0fd0 */ 86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32,
/* 0x0fe0 */ 127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46,
/* 0x0ff0 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46,
/* 0x1000 */ 85, 0,170,254,125, 64, 57,214,127,133, 80, 64, 64,156, 1,172,
/* 0x1010 */ 128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8,
/* 0x1020 */ 127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0,
/* 0x1030 */ 32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20,
/* 0x1040 */ 124, 6,195, 46,125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1,
/* 0x1050 */ 64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,127,245, 0,174,
/* 0x1060 */ 99,123,255,255, 87,255, 8, 60, 87,252, 5,238,127,136,216, 64,
/* 0x1070 */ 87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0,
/* 0x1080 */ 84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176,
/* 0x1090 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x10a0 */ 161,103, 2, 0, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,
/* 0x10b0 */ 127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,
/* 0x10c0 */ 47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,125, 10, 64, 80,
/* 0x10d0 */ 64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24,
/* 0x10e0 */ 72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1,
/* 0x10f0 */ 65,154, 0, 12, 47,131, 0,255, 64,157,255,108, 47,131, 0,255,
/* 0x1100 */ 65,157, 0,132, 63,224, 0,255, 99,255,255,255,127,136,248, 64,
/* 0x1110 */ 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120,
/* 0x1120 */ 65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46,
/* 0x1130 */ 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,
/* 0x1140 */ 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112,
/* 0x1150 */ 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80,
/* 0x1160 */ 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,
/* 0x1170 */ 124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255,
/* 0x1180 */ 64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,127,249,169,174,
/* 0x1190 */ 59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120,
/* 0x11a0 */ 47,151, 0, 9, 65,157, 0, 12, 58,247,255,253, 72, 0, 6,104,
/* 0x11b0 */ 58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64,
/* 0x11c0 */ 84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46,
/* 0x11d0 */ 124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,127,140,232, 0,
/* 0x11e0 */ 65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x11f0 */ 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128, 85, 0,170,254,
/* 0x1200 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0,
/* 0x1210 */ 47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128,
/* 0x1220 */ 126, 15,131,120,125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0,
/* 0x1230 */ 127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120,
/* 0x1240 */ 56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64,
/* 0x1250 */ 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128,
/* 0x1260 */ 65,157, 0, 32,127,140,232, 0, 65,158, 5,212,137, 44, 0, 0,
/* 0x1270 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x1280 */ 161,103, 1,152, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x1290 */ 64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,124, 0, 46,112,
/* 0x12a0 */ 86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60,
/* 0x12b0 */ 176, 7, 1,152,125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32,
/* 0x12c0 */ 127,140,232, 0, 65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46,
/* 0x12d0 */ 124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224,
/* 0x12e0 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72,
/* 0x12f0 */ 32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20,
/* 0x1300 */ 176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6,
/* 0x1310 */ 57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80,
/* 0x1320 */ 127,245, 0,174,125, 55, 75,120,127,249,169,174, 59, 57, 0, 1,
/* 0x1330 */ 72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,
/* 0x1340 */ 125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80,
/* 0x1350 */ 127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,
/* 0x1360 */ 176, 7, 1,152, 65,157, 0, 32,127,140,232, 0, 65,158, 4,208,
/* 0x1370 */ 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46,
/* 0x1380 */ 57,140, 0, 1,161,103, 1,176, 85, 0,170,254,125, 64, 89,214,
/* 0x1390 */ 127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,
/* 0x13a0 */ 124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,176, 7, 1,176,
/* 0x13b0 */ 72, 0, 0,140,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,
/* 0x13c0 */ 124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32,
/* 0x13d0 */ 127,140,232, 0, 65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46,
/* 0x13e0 */ 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200,
/* 0x13f0 */ 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32,
/* 0x1400 */ 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,
/* 0x1410 */ 126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126,
/* 0x1420 */ 124, 0, 88, 80,125,233,123,120,176, 7, 1,200,124,170, 40, 80,
/* 0x1430 */ 125, 10, 64, 80,126, 15,131,120,126, 48,139,120,127, 81,211,120,
/* 0x1440 */ 125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8,
/* 0x1450 */ 56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,127,136,176, 64,
/* 0x1460 */ 65,157, 0, 32,127,140,232, 0, 65,158, 3,212,137, 44, 0, 0,
/* 0x1470 */ 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x1480 */ 161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64,
/* 0x1490 */ 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,
/* 0x14a0 */ 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4,
/* 0x14b0 */ 59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156,
/* 0x14c0 */ 125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,
/* 0x14d0 */ 124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0,
/* 0x14e0 */ 65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120,
/* 0x14f0 */ 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2, 85, 0,170,254,
/* 0x1500 */ 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0,
/* 0x1510 */ 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,
/* 0x1520 */ 125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3,
/* 0x1530 */ 176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80,
/* 0x1540 */ 124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4,
/* 0x1550 */ 59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166, 63,224, 0,255,
/* 0x1560 */ 99,255,255,255, 56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60,
/* 0x1570 */ 127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24,
/* 0x1580 */ 65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x1590 */ 125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x15a0 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x15b0 */ 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,
/* 0x15c0 */ 125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80,
/* 0x15d0 */ 56,103, 0, 1,125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1,
/* 0x15e0 */ 47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20,
/* 0x15f0 */ 65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,124,105, 27,120,
/* 0x1600 */ 64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20,
/* 0x1610 */ 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255,
/* 0x1620 */ 99,255,255,255, 56,128, 0, 1,127,136,248, 64, 84,135, 8, 60,
/* 0x1630 */ 127, 12,232, 0, 84,169, 64, 46,124,228, 59,120, 65,157, 0, 24,
/* 0x1640 */ 65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,
/* 0x1650 */ 125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214,
/* 0x1660 */ 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126,
/* 0x1670 */ 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,
/* 0x1680 */ 125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80,
/* 0x1690 */ 56,135, 0, 1,125,102, 59, 46, 66, 0,255,144, 56,132,255,192,
/* 0x16a0 */ 47,132, 0, 3,124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13,
/* 0x16b0 */ 124,137, 14,112, 84,128, 7,254, 57,105,255,255, 96, 26, 0, 2,
/* 0x16c0 */ 125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60,
/* 0x16d0 */ 125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94,
/* 0x16e0 */ 72, 0, 0,100, 57, 41,255,251,125, 41, 3,166, 61, 96, 0,255,
/* 0x16f0 */ 97,107,255,255,127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46,
/* 0x1700 */ 87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0,
/* 0x1710 */ 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, 85, 8,248,126,
/* 0x1720 */ 127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1,
/* 0x1730 */ 66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54,
/* 0x1740 */ 56,216, 6, 68, 60,128, 0,255, 96,132,255,255, 59,128, 0, 1,
/* 0x1750 */ 59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0,
/* 0x1760 */ 84,169, 64, 46,124,255, 59,120, 65,157, 0, 24, 65,154, 0,208,
/* 0x1770 */ 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,
/* 0x1780 */ 125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,
/* 0x1790 */ 127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,
/* 0x17a0 */ 125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,
/* 0x17b0 */ 124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1,
/* 0x17c0 */ 125,102, 59, 46,127, 90,227,120, 87,156, 8, 60, 66, 0,255,136,
/* 0x17d0 */ 55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2,
/* 0x17e0 */ 65,157, 0, 92,124, 26,200, 80,127,245, 0,174, 56, 99,255,255,
/* 0x17f0 */ 127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16,
/* 0x1800 */ 124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57,
/* 0x1810 */ 64,130,255,212,127,153,160, 64, 65,156,247,172, 60, 0, 0,255,
/* 0x1820 */ 96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,127,140,232, 0,
/* 0x1830 */ 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1,
/* 0x1840 */ 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,
/* 0x1850 */ 144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,
/* 0x1860 */ 185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96, 12, 0,161,128,
/* 0x1870 */ 8, 0,225,128, 0, 0,165,128, 0, 0, 33,128, 20, 58,165,124,
/* 0x1880 */ 8, 0, 1,128,255,255,165, 56,166, 3, 8,124, 85, 80, 88, 33,
/* 0x1890 */ 161,216,208,213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
/* 0x18a0 */ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,102,105,108,101,
/* 0x18b0 */ 32,102,111,114,109, 97,116, 32,101,108,102, 54, 52, 45,112,111,
/* 0x18c0 */ 119,101,114,112, 99,108,101, 10, 10, 83,101, 99,116,105,111,110,
/* 0x18d0 */ 115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32,
/* 0x18e0 */ 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86,
/* 0x18f0 */ 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1900 */ 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x1910 */ 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,
/* 0x1920 */ 110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, 32, 76, 73, 78,
/* 0x1930 */ 85, 88, 48, 48, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48,
/* 0x1940 */ 48, 48, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1950 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1960 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52,
/* 0x1970 */ 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84,
/* 0x1980 */ 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78,
/* 0x1990 */ 76, 89, 10, 32, 32, 49, 32, 76, 73, 78, 85, 88, 48, 49, 48, 32,
/* 0x19a0 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 56, 32, 32, 48,
/* 0x19b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x19c0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x19d0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 56, 32, 32, 50, 42, 42,
/* 0x19e0 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76,
/* 0x19f0 */ 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50,
/* 0x1a00 */ 32, 76, 73, 78, 85, 88, 48, 50, 48, 32, 32, 32, 32, 32, 32, 48,
/* 0x1a10 */ 48, 48, 48, 48, 48, 54, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1a20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1a30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1a40 */ 48, 48, 48, 53, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x1a50 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10,
/* 0x1a60 */ 32, 32, 51, 32, 76, 73, 78, 85, 88, 48, 51, 48, 32, 32, 32, 32,
/* 0x1a70 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
/* 0x1a80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
/* 0x1a90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
/* 0x1aa0 */ 48, 48, 48, 48, 48, 48, 98, 52, 32, 32, 50, 42, 42, 48, 32, 32,
/* 0x1ab0 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78,
/* 0x1ac0 */ 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32,
/* 0x1ad0 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 48, 56, 32, 32, 48,
/* 0x1ae0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1af0 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b00 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 98, 52, 32, 32, 50, 42, 42,
/* 0x1b10 */ 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76,
/* 0x1b20 */ 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53,
/* 0x1b30 */ 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48,
/* 0x1b40 */ 48, 48, 48, 48, 49, 52, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1b50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1b60 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1b70 */ 48, 48, 49, 98, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x1b80 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69,
/* 0x1b90 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 78, 82, 86, 50, 69,
/* 0x1ba0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 49, 54,
/* 0x1bb0 */ 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bc0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1bd0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 48, 48, 32,
/* 0x1be0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x1bf0 */ 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89,
/* 0x1c00 */ 10, 32, 32, 55, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, 32,
/* 0x1c10 */ 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, 99, 32, 32, 48, 48, 48,
/* 0x1c20 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48,
/* 0x1c30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x1c40 */ 32, 48, 48, 48, 48, 48, 52, 54, 56, 32, 32, 50, 42, 42, 48, 32,
/* 0x1c50 */ 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79,
/* 0x1c60 */ 78, 76, 89, 10, 32, 32, 56, 32, 67, 70, 76, 85, 83, 72, 32, 32,
/* 0x1c70 */ 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 50, 52, 32, 32,
/* 0x1c80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1c90 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ca0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 56, 52, 32, 32, 50, 42,
/* 0x1cb0 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x1cc0 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 76, 90, 77, 65, 32,
/* 0x1cd0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ce0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1cf0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d00 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 97, 56, 32,
/* 0x1d10 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x1d20 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 76, 90,
/* 0x1d30 */ 77, 65, 95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48,
/* 0x1d40 */ 48, 48, 56, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d50 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1d60 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52,
/* 0x1d70 */ 97, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1d80 */ 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79,
/* 0x1d90 */ 78, 76, 89, 10, 32, 49, 49, 32, 76, 90, 77, 65, 95, 68, 69, 67,
/* 0x1da0 */ 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32,
/* 0x1db0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1dc0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1dd0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 53, 51, 52, 32, 32, 50, 42,
/* 0x1de0 */ 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69,
/* 0x1df0 */ 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, 32, 76, 90, 77, 65, 95,
/* 0x1e00 */ 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57,
/* 0x1e10 */ 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e20 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e30 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,101,100, 48, 32,
/* 0x1e40 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
/* 0x1e50 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 51, 32, 76, 90,
/* 0x1e60 */ 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48,
/* 0x1e70 */ 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e80 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1e90 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 56,
/* 0x1ea0 */ 54, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
/* 0x1eb0 */ 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 52,
/* 0x1ec0 */ 32, 85, 80, 88, 49, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48,
/* 0x1ed0 */ 48, 48, 48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ee0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
/* 0x1ef0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
/* 0x1f00 */ 48, 49, 56, 56, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78,
/* 0x1f10 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10,
/* 0x1f20 */ 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48,
/* 0x1f30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x1f40 */ 32, 32, 32, 32,100, 32, 32, 76, 73, 78, 85, 88, 48, 50, 48, 9,
/* 0x1f50 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1f60 */ 32, 76, 73, 78, 85, 88, 48, 50, 48, 10, 48, 48, 48, 48, 48, 48,
/* 0x1f70 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x1f80 */ 100, 32, 32, 76, 73, 78, 85, 88, 48, 51, 48, 9, 48, 48, 48, 48,
/* 0x1f90 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 73, 78,
/* 0x1fa0 */ 85, 88, 48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1fb0 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78,
/* 0x1fc0 */ 82, 86, 95, 84, 65, 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1fd0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73,
/* 0x1fe0 */ 76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x1ff0 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95,
/* 0x2000 */ 68, 69, 67, 51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2010 */ 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51,
/* 0x2020 */ 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2030 */ 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 73, 78, 85, 88,
/* 0x2040 */ 48, 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2050 */ 48, 48, 48, 48, 32, 76, 73, 78, 85, 88, 48, 48, 48, 10, 48, 48,
/* 0x2060 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108,
/* 0x2070 */ 32, 32, 32, 32,100, 32, 32, 76, 73, 78, 85, 88, 48, 49, 48, 9,
/* 0x2080 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2090 */ 32, 76, 73, 78, 85, 88, 48, 49, 48, 10, 48, 48, 48, 48, 48, 48,
/* 0x20a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,
/* 0x20b0 */ 100, 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48,
/* 0x20c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10,
/* 0x20d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x20e0 */ 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, 9, 48,
/* 0x20f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2100 */ 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2110 */ 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78,
/* 0x2120 */ 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2130 */ 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48,
/* 0x2140 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32,
/* 0x2150 */ 32, 32,100, 32, 32, 67, 70, 76, 85, 83, 72, 9, 48, 48, 48, 48,
/* 0x2160 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 67, 70, 76,
/* 0x2170 */ 85, 83, 72, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2180 */ 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77,
/* 0x2190 */ 65, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21a0 */ 48, 48, 32, 76, 90, 77, 65, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x21c0 */ 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, 48, 48,
/* 0x21d0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77,
/* 0x21e0 */ 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x21f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x2200 */ 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, 48, 48,
/* 0x2210 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77,
/* 0x2220 */ 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2230 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x2240 */ 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, 48, 48,
/* 0x2250 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77,
/* 0x2260 */ 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2270 */ 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32,
/* 0x2280 */ 32, 85, 80, 88, 49, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48,
/* 0x2290 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 85, 80, 88, 49, 72,
/* 0x22a0 */ 69, 65, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x22b0 */ 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78,
/* 0x22c0 */ 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x22d0 */ 48, 48, 48, 32,102,105,108,116,101,114, 95,108,101,110,103,116,
/* 0x22e0 */ 104, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x22f0 */ 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42,
/* 0x2300 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x2310 */ 48, 32,102,105,108,116,101,114, 95, 99,116,111, 10, 10, 82, 69,
/* 0x2320 */ 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83,
/* 0x2330 */ 32, 70, 79, 82, 32, 91, 76, 73, 78, 85, 88, 48, 48, 48, 93, 58,
/* 0x2340 */ 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2350 */ 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x2360 */ 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48,
/* 0x2370 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67,
/* 0x2380 */ 54, 52, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 76, 73, 78,
/* 0x2390 */ 85, 88, 48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x23a0 */ 48, 48, 48, 48, 48, 52, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82,
/* 0x23b0 */ 69, 76, 50, 52, 32, 32, 32, 32, 32, 76, 73, 78, 85, 88, 48, 50,
/* 0x23c0 */ 48, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69,
/* 0x23d0 */ 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 73, 78, 85, 88,
/* 0x23e0 */ 48, 49, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32,
/* 0x23f0 */ 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32,
/* 0x2400 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48,
/* 0x2410 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
/* 0x2420 */ 82, 95, 80, 80, 67, 54, 52, 95, 65, 68, 68, 82, 51, 50, 32, 32,
/* 0x2430 */ 32, 32,102,105,108,116,101,114, 95,108,101,110,103,116,104, 10,
/* 0x2440 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52,
/* 0x2450 */ 32, 82, 95, 80, 80, 67, 54, 52, 95, 65, 68, 68, 82, 51, 50, 32,
/* 0x2460 */ 32, 32, 32,102,105,108,116,101,114, 95, 99,116,111, 10, 10, 82,
/* 0x2470 */ 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68,
/* 0x2480 */ 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79,
/* 0x2490 */ 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x24a0 */ 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
/* 0x24b0 */ 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x24c0 */ 48, 48, 48, 48, 48, 48, 97, 56, 32, 82, 95, 80, 80, 67, 54, 52,
/* 0x24d0 */ 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84,
/* 0x24e0 */ 65, 73, 76, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32,
/* 0x24f0 */ 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86,
/* 0x2500 */ 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32,
/* 0x2510 */ 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32,
/* 0x2520 */ 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48,
/* 0x2530 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 99, 99, 32, 82,
/* 0x2540 */ 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32,
/* 0x2550 */ 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 10, 82, 69, 76, 79, 67,
/* 0x2560 */ 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79,
/* 0x2570 */ 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69,
/* 0x2580 */ 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69,
/* 0x2590 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65,
/* 0x25a0 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
/* 0x25b0 */ 48, 48,100, 52, 32, 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76,
/* 0x25c0 */ 49, 52, 32, 32, 32, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10,
/* 0x25d0 */ 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79,
/* 0x25e0 */ 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76,
/* 0x25f0 */ 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32,
/* 0x2600 */ 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32,
/* 0x2610 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48,
/* 0x2620 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 32,
/* 0x2630 */ 82, 95, 80, 80, 67, 54, 52, 95, 82, 69, 76, 49, 52, 32, 32, 32,
/* 0x2640 */ 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48,
/* 0x2650 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 48, 10
};

View File

@ -173,10 +173,10 @@ def do_file(fn):
odata = None
pos = idata.find("\0.symtab\0.strtab\0.shstrtab\0")
if opts.with_dump:
eh, odata = strip_with_dump(opts.with_dump, eh, idata)
assert len(odata) == pos, "unexpected strip_with_dump"
eh, odata = strip_with_dump(opts.with_dump, eh, idata)
# assert len(odata) == pos, "unexpected strip_with_dump"
else:
if pos >= 0:
if pos >= 0:
odata = idata[:pos]
if eh and odata and not opts.dry_run:

View File

@ -0,0 +1,3 @@
# convenience Makefile
default %:
$(MAKE) -C ../../../.. $@

View File

@ -0,0 +1,55 @@
MAKEFLAGS += -rR
.SUFFIXES:
.SECONDEXPANSION:
ifndef top_srcdir
__dir_list = . .. ../.. ../../.. ../../../.. ../../../../..
__dir_list += ../../../../../.. ../../../../../../.. ../../../../../../../..
__dir_search = $(firstword $(foreach v,$1,$(if $(wildcard $v/$2),$v)) $3)
top_srcdir := $(call __dir_search,$(__dir_list),src/bele.h,NOT_FOUND)
endif
include $(wildcard $(top_srcdir)/Makevars.global ./Makevars.local)
vpath %.c $(top_srcdir)/src/stub/src/c
STUBS =
include $(top_srcdir)/src/stub/src/c/Makevars.lzma
ifneq ($(UPX_LZMA_VERSION),)
STUBS += lzma_d_cf.S lzma_d_cs.S
endif
default.targets = all
ifeq ($(strip $(STUBS)),)
STUBS = NO_STUBS
all.targets =
endif
include $(top_srcdir)/src/stub/Makefile
# /***********************************************************************
# // method-lzma
# ************************************************************************/
lzma_d_c%.S : tc_list = method-lzma ppc64le-linux.elf default
lzma_d_c%.S : tc_bfdname = elf64-ppc64le
c := tc.method-lzma.gcc
$c = $(tc.ppc64le-linux.elf.gcc)
$c += -mcpu=405 -fPIC
$c += -Os -fomit-frame-pointer
$c += -fno-unit-at-a-time
$c += -ffunction-sections
$c += -fwrapv
$c += -DWITH_LZMA=$(UPX_LZMA_VERSION)
$c += -I$(UPX_LZMADIR)
$c += -I$(top_srcdir)/src
lzma_d_c%.S : lzma_d_c.c
$(call tc,gcc) $(PP_FLAGS) -c $< -o tmp/$T.o
$(call tc,f-objstrip,tmp/$T.o)
$(call tc,objcopy) -O binary --only-section .text.LzmaDecode tmp/$T.o tmp/$T.bin
head -c-4 tmp/$T.bin > tmp/$T.out
$(call tc,objdump) -b binary -m ppc64le -D tmp/$T.out | $(RTRIM) > tmp/$T.out.disasm
$(call tc,bin2h) --mode=gas tmp/$T.out $@
lzma_d_cf.% : PP_FLAGS = -DFAST
lzma_d_cs.% : PP_FLAGS = -DSMALL

View File

@ -0,0 +1,69 @@
/* ppc_bxx.S -- PowerPC Branch Trick unfilter
This file is part of the UPX executable compressor.
Copyright (C) 2005-2013 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.
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#include "ppc_regs.h"
ppcbxx: # (*f_unf)(xo->buf, out_len, h.b_cto8, h.b_ftid);
#define W_CTO 4 /* must match filteri/ppcbxx.h */
#define ptr a0
#define len a1
#define cto8 a2
#define ftid a3
#define ptr0 a4
cmpli cr0,ftid,0xd0; bnelr- cr0 # if (0xd0!=ftid) return;
rlwinm. len,len,32-2,2,31; beqlr- cr0 # if (0==(len>>=2)) return;
lis r0,-(~0<<(32-16- (2+6+ W_CTO))) # limit in 32-bit words
cmpl cr0,len,r0
blt cr0,L5
mr len,r0
L5:
addi cto8,cto8,18<<W_CTO # cat(bxx_opcode, cto8)
movr ptr0,ptr # save base address
addi ptr,ptr,-4 # prepare for 'lwzu'
mtctr len # count of words
b L20
L10:
rlwinm t1,t0,0,6+W_CTO,31-2 # the displacement field in position
subf t1,ptr,t1 # raw distance
add t1,t1,ptr0 # relative to virtual address of base
rlwimi t0,t1,0,6 ,31-2 # unfiltered instruction
stw t0,0(ptr) # replace in memory
bdzlr- # if (0==--ctr) return; // extremely unlikely
L20:
lwzu t0,4(ptr) # t0= *++ptr;
rlwinm t1,t0,6+W_CTO,32-(6+W_CTO),31 # t1= top (6+W_CTO) bits of t0
cmpl cr0,t1,cto8; beq- cr0,L10 # unconditional branch marked with cto8; unlikely
bdnz+ L20 # if (0!=--ctr) goto L20; // likely
ret
#undef ptr0
#undef ftid
#undef cto8
#undef len
#undef ptr

View File

@ -0,0 +1,119 @@
/*
; lzma_d.S -- 32-bit PowerPC assembly
;
; This file is part of the UPX executable compressor.
;
; Copyright (C) 2006-2013 Markus Franz Xaver Johannes Oberhumer
; 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
; <markus@oberhumer.com>
; http://www.oberhumer.com/opensource/upx/
;
*/
#include "ppc_regs.h"
retaddr = 6*8 // (sp,cr,pc, xx,yy,zz) save area per calling convention
#define section .section
section LZMA_ELF00
//decompress: // (uchar const *src, size_t lsrc, uchar *dst, u32 &ldst, uint method)
/* Arguments according to calling convention */
#define src a0
#define lsrc a1
#define dst a2
#define ldst a3 /* Out: actually a reference: &len_dst */
#define meth a4
//// teq r0,r0 // debugging
#define M_LZMA 14
cmpli cr0,meth,M_LZMA
bne cr0,not_lzma
mflr r0
//LzmaDecode( // from lzmaSDK/C/7zip/Compress/LZMA_C/LzmaDecode.h
// a0= &CLzmaDecoderState,
// a1= inp, a2= inSize, a3= &inSizeProcessed,
// a4= outp, a5= outSize, a6= &outSizeProcessed
//)
mr a6,ldst // &outSizeProcessed
lwz a5,0(ldst) // outSize
mr a4,dst // outp
addi a2,lsrc,-2 // inSize
la a1,2(src) // inp
std r0,retaddr(sp) // save return address in caller's frame
lbz r0,0(src) // first byte, replaces LzmaDecodeProperties()
rlwinm t1,r0,32-3,3,31 // t1= (r0>>3)==(lit_context-bits + lit_pos_bits)
rlwinm t0,r0,0,32-3,31 // t0= (7& t0)==pos_bits
#define LZMA_BASE_SIZE 1846
#define LZMA_LIT_SIZE 768
#define szSizeT 4
li a0,-2*LZMA_LIT_SIZE
slw a0,a0,t1 // -2*LZMA_LIT_SIZE << (lit_context_bits + lit_pos_bits)
addi a0,a0,-4*4 -(szSizeT +4) - 2*LZMA_BASE_SIZE
// alloca{sp,ra,orig_dst,&outSizeProcessed, inSizeProcessed,*_bits, CLzmaDecoderState}
mr a3,sp
add sp,sp,a0
rlwinm sp,sp,0,0,32-6 // (1<<6) byte align
li r0,0
mr a0,a3 // old sp
stw r0,0(a6) // outSizeProcessed= 0;
1:
stwu r0,-4(a0) // clear CLZmaDecoderState on stack
cmpl cr0,sp,a0 // compare logical ==> compare unsigned
blt cr0,1b
stw a3,0(sp) // frame chain
lbz r0,-1(a1) // second byte, replaces LzmaDecodeProperties()
stw a4,2*4(sp) // outp
la a3,4*4 (sp) // &inSizeProcessed
stw a6,3*4(sp) // &outSizeProcessed
la a0,4*4+szSizeT(sp) // &CLzmaDecoderState
rlwinm t1,r0,32-4,4,31 // t1= (r0>>4)==lit_pos_bits
rlwinm r0,r0,0,32-4,31 // r0= (0xf& r0)==lit_context_bits
stb t0,2(a0) // pos_bits
stb t1,1(a0) // lit_pos_bits
stb r0,0(a0) // lit_context_bits
section LZMA_DEC10
#include "lzma_d_cs.S"
section LZMA_DEC20
#include "lzma_d_cf.S"
section LZMA_DEC30 // Out: a0= retval; a2= &hi stored; a4= &lo stored; lr= retaddr
lwz a2,3*4(sp) // &outSizeProcessed
lwz a4,2*4(sp) // &lowest byte stored
lwz a2,0(a2) // outSizeProcessed
lwz sp,0(sp) // old sp
add a2,a2,a4 // &next byte to store
lwz r0,retaddr(sp)
addi a2,a2,-1 // &highest byte stored
mtlr r0
not_lzma:
// vi:ts=8:et

View File

@ -0,0 +1,154 @@
/* 0x0000 */ .byte 124, 8, 2,166,148, 33,255,160,189,193, 0, 24,144, 1, 0,100
/* 0x0010 */ .byte 59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0
/* 0x0020 */ .byte 147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166
/* 0x0030 */ .byte 124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54
/* 0x0040 */ .byte 127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48
/* 0x0050 */ .byte 57, 41,255,255, 57,107,255,255,145, 33, 0, 8,124,206, 51,120
/* 0x0060 */ .byte 124,147, 35,120,124,245, 59,120,125, 20, 67,120,145, 97, 0, 12
/* 0x0070 */ .byte 59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1
/* 0x0080 */ .byte 58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0
/* 0x0090 */ .byte 64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60
/* 0x00a0 */ .byte 125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20
/* 0x00b0 */ .byte 126,108,155,120, 56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0
/* 0x00c0 */ .byte 127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46
/* 0x00d0 */ .byte 65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120
/* 0x00e0 */ .byte 64,153,255,224,127,153,160, 64, 64,156, 8,100, 62,192, 0,255
/* 0x00f0 */ .byte 98,214,255,255,128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56
/* 0x0100 */ .byte 86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32
/* 0x0110 */ .byte 127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46
/* 0x0120 */ .byte 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46
/* 0x0130 */ .byte 85, 0,170,254,125, 64, 57,214,127,133, 80, 64, 64,156, 1,172
/* 0x0140 */ .byte 128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8
/* 0x0150 */ .byte 127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0
/* 0x0160 */ .byte 32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20
/* 0x0170 */ .byte 124, 6,195, 46,125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1
/* 0x0180 */ .byte 64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,127,245, 0,174
/* 0x0190 */ .byte 99,123,255,255, 87,255, 8, 60, 87,252, 5,238,127,136,216, 64
/* 0x01a0 */ .byte 87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0
/* 0x01b0 */ .byte 84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176
/* 0x01c0 */ .byte 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120
/* 0x01d0 */ .byte 161,103, 2, 0, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0
/* 0x01e0 */ .byte 127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20
/* 0x01f0 */ .byte 47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,125, 10, 64, 80
/* 0x0200 */ .byte 64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24
/* 0x0210 */ .byte 72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1
/* 0x0220 */ .byte 65,154, 0, 12, 47,131, 0,255, 64,157,255,108, 47,131, 0,255
/* 0x0230 */ .byte 65,157, 0,132, 63,224, 0,255, 99,255,255,255,127,136,248, 64
/* 0x0240 */ .byte 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120
/* 0x0250 */ .byte 65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46
/* 0x0260 */ .byte 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254
/* 0x0270 */ .byte 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112
/* 0x0280 */ .byte 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80
/* 0x0290 */ .byte 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16
/* 0x02a0 */ .byte 124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255
/* 0x02b0 */ .byte 64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,127,249,169,174
/* 0x02c0 */ .byte 59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120
/* 0x02d0 */ .byte 47,151, 0, 9, 65,157, 0, 12, 58,247,255,253, 72, 0, 6,104
/* 0x02e0 */ .byte 58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64
/* 0x02f0 */ .byte 84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46
/* 0x0300 */ .byte 124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,127,140,232, 0
/* 0x0310 */ .byte 65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120
/* 0x0320 */ .byte 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128, 85, 0,170,254
/* 0x0330 */ .byte 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0
/* 0x0340 */ .byte 47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128
/* 0x0350 */ .byte 126, 15,131,120,125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0
/* 0x0360 */ .byte 127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120
/* 0x0370 */ .byte 56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64
/* 0x0380 */ .byte 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128
/* 0x0390 */ .byte 65,157, 0, 32,127,140,232, 0, 65,158, 5,212,137, 44, 0, 0
/* 0x03a0 */ .byte 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1
/* 0x03b0 */ .byte 161,103, 1,152, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64
/* 0x03c0 */ .byte 64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,124, 0, 46,112
/* 0x03d0 */ .byte 86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60
/* 0x03e0 */ .byte 176, 7, 1,152,125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32
/* 0x03f0 */ .byte 127,140,232, 0, 65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46
/* 0x0400 */ .byte 124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224
/* 0x0410 */ .byte 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72
/* 0x0420 */ .byte 32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20
/* 0x0430 */ .byte 176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6
/* 0x0440 */ .byte 57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80
/* 0x0450 */ .byte 127,245, 0,174,125, 55, 75,120,127,249,169,174, 59, 57, 0, 1
/* 0x0460 */ .byte 72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80
/* 0x0470 */ .byte 125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80
/* 0x0480 */ .byte 127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80
/* 0x0490 */ .byte 176, 7, 1,152, 65,157, 0, 32,127,140,232, 0, 65,158, 4,208
/* 0x04a0 */ .byte 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46
/* 0x04b0 */ .byte 57,140, 0, 1,161,103, 1,176, 85, 0,170,254,125, 64, 89,214
/* 0x04c0 */ .byte 127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112
/* 0x04d0 */ .byte 124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,176, 7, 1,176
/* 0x04e0 */ .byte 72, 0, 0,140,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126
/* 0x04f0 */ .byte 124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32
/* 0x0500 */ .byte 127,140,232, 0, 65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46
/* 0x0510 */ .byte 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200
/* 0x0520 */ .byte 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32
/* 0x0530 */ .byte 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120
/* 0x0540 */ .byte 126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126
/* 0x0550 */ .byte 124, 0, 88, 80,125,233,123,120,176, 7, 1,200,124,170, 40, 80
/* 0x0560 */ .byte 125, 10, 64, 80,126, 15,131,120,126, 48,139,120,127, 81,211,120
/* 0x0570 */ .byte 125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8
/* 0x0580 */ .byte 56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,127,136,176, 64
/* 0x0590 */ .byte 65,157, 0, 32,127,140,232, 0, 65,158, 3,212,137, 44, 0, 0
/* 0x05a0 */ .byte 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1
/* 0x05b0 */ .byte 161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64
/* 0x05c0 */ .byte 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20
/* 0x05d0 */ .byte 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4
/* 0x05e0 */ .byte 59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156
/* 0x05f0 */ .byte 125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80
/* 0x0600 */ .byte 124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0
/* 0x0610 */ .byte 65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120
/* 0x0620 */ .byte 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2, 85, 0,170,254
/* 0x0630 */ .byte 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0
/* 0x0640 */ .byte 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20
/* 0x0650 */ .byte 125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3
/* 0x0660 */ .byte 176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80
/* 0x0670 */ .byte 124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4
/* 0x0680 */ .byte 59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166, 63,224, 0,255
/* 0x0690 */ .byte 99,255,255,255, 56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60
/* 0x06a0 */ .byte 127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24
/* 0x06b0 */ .byte 65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1
/* 0x06c0 */ .byte 125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,125, 64, 89,214
/* 0x06d0 */ .byte 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126
/* 0x06e0 */ .byte 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16
/* 0x06f0 */ .byte 125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80
/* 0x0700 */ .byte 56,103, 0, 1,125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1
/* 0x0710 */ .byte 47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20
/* 0x0720 */ .byte 65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,124,105, 27,120
/* 0x0730 */ .byte 64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20
/* 0x0740 */ .byte 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255
/* 0x0750 */ .byte 99,255,255,255, 56,128, 0, 1,127,136,248, 64, 84,135, 8, 60
/* 0x0760 */ .byte 127, 12,232, 0, 84,169, 64, 46,124,228, 59,120, 65,157, 0, 24
/* 0x0770 */ .byte 65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1
/* 0x0780 */ .byte 125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214
/* 0x0790 */ .byte 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126
/* 0x07a0 */ .byte 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16
/* 0x07b0 */ .byte 125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80
/* 0x07c0 */ .byte 56,135, 0, 1,125,102, 59, 46, 66, 0,255,144, 56,132,255,192
/* 0x07d0 */ .byte 47,132, 0, 3,124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13
/* 0x07e0 */ .byte 124,137, 14,112, 84,128, 7,254, 57,105,255,255, 96, 26, 0, 2
/* 0x07f0 */ .byte 125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60
/* 0x0800 */ .byte 125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94
/* 0x0810 */ .byte 72, 0, 0,100, 57, 41,255,251,125, 41, 3,166, 61, 96, 0,255
/* 0x0820 */ .byte 97,107,255,255,127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46
/* 0x0830 */ .byte 87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0
/* 0x0840 */ .byte 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, 85, 8,248,126
/* 0x0850 */ .byte 127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1
/* 0x0860 */ .byte 66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54
/* 0x0870 */ .byte 56,216, 6, 68, 60,128, 0,255, 96,132,255,255, 59,128, 0, 1
/* 0x0880 */ .byte 59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0
/* 0x0890 */ .byte 84,169, 64, 46,124,255, 59,120, 65,157, 0, 24, 65,154, 0,208
/* 0x08a0 */ .byte 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120
/* 0x08b0 */ .byte 125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0
/* 0x08c0 */ .byte 127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20
/* 0x08d0 */ .byte 125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120
/* 0x08e0 */ .byte 124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1
/* 0x08f0 */ .byte 125,102, 59, 46,127, 90,227,120, 87,156, 8, 60, 66, 0,255,136
/* 0x0900 */ .byte 55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2
/* 0x0910 */ .byte 65,157, 0, 92,124, 26,200, 80,127,245, 0,174, 56, 99,255,255
/* 0x0920 */ .byte 127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16
/* 0x0930 */ .byte 124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57
/* 0x0940 */ .byte 64,130,255,212,127,153,160, 64, 65,156,247,172, 60, 0, 0,255
/* 0x0950 */ .byte 96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,127,140,232, 0
/* 0x0960 */ .byte 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1
/* 0x0970 */ .byte 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80
/* 0x0980 */ .byte 144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100
/* 0x0990 */ .byte 185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96

View File

@ -0,0 +1,154 @@
/* 0x0000 */ .byte 124, 8, 2,166,148, 33,255,160,189,193, 0, 24,144, 1, 0,100
/* 0x0010 */ .byte 59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0
/* 0x0020 */ .byte 147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166
/* 0x0030 */ .byte 124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54
/* 0x0040 */ .byte 127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48
/* 0x0050 */ .byte 57, 41,255,255, 57,107,255,255,145, 33, 0, 8,124,206, 51,120
/* 0x0060 */ .byte 124,147, 35,120,124,245, 59,120,125, 20, 67,120,145, 97, 0, 12
/* 0x0070 */ .byte 59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1
/* 0x0080 */ .byte 58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0
/* 0x0090 */ .byte 64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60
/* 0x00a0 */ .byte 125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20
/* 0x00b0 */ .byte 126,108,155,120, 56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0
/* 0x00c0 */ .byte 127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46
/* 0x00d0 */ .byte 65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120
/* 0x00e0 */ .byte 64,153,255,224,127,153,160, 64, 64,156, 8,100, 62,192, 0,255
/* 0x00f0 */ .byte 98,214,255,255,128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56
/* 0x0100 */ .byte 86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32
/* 0x0110 */ .byte 127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46
/* 0x0120 */ .byte 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46
/* 0x0130 */ .byte 85, 0,170,254,125, 64, 57,214,127,133, 80, 64, 64,156, 1,172
/* 0x0140 */ .byte 128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8
/* 0x0150 */ .byte 127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0
/* 0x0160 */ .byte 32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20
/* 0x0170 */ .byte 124, 6,195, 46,125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1
/* 0x0180 */ .byte 64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,127,245, 0,174
/* 0x0190 */ .byte 99,123,255,255, 87,255, 8, 60, 87,252, 5,238,127,136,216, 64
/* 0x01a0 */ .byte 87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0
/* 0x01b0 */ .byte 84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176
/* 0x01c0 */ .byte 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120
/* 0x01d0 */ .byte 161,103, 2, 0, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0
/* 0x01e0 */ .byte 127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20
/* 0x01f0 */ .byte 47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,125, 10, 64, 80
/* 0x0200 */ .byte 64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24
/* 0x0210 */ .byte 72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1
/* 0x0220 */ .byte 65,154, 0, 12, 47,131, 0,255, 64,157,255,108, 47,131, 0,255
/* 0x0230 */ .byte 65,157, 0,132, 63,224, 0,255, 99,255,255,255,127,136,248, 64
/* 0x0240 */ .byte 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120
/* 0x0250 */ .byte 65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46
/* 0x0260 */ .byte 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254
/* 0x0270 */ .byte 125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112
/* 0x0280 */ .byte 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80
/* 0x0290 */ .byte 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16
/* 0x02a0 */ .byte 124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255
/* 0x02b0 */ .byte 64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,127,249,169,174
/* 0x02c0 */ .byte 59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120
/* 0x02d0 */ .byte 47,151, 0, 9, 65,157, 0, 12, 58,247,255,253, 72, 0, 6,104
/* 0x02e0 */ .byte 58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64
/* 0x02f0 */ .byte 84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46
/* 0x0300 */ .byte 124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,127,140,232, 0
/* 0x0310 */ .byte 65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120
/* 0x0320 */ .byte 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128, 85, 0,170,254
/* 0x0330 */ .byte 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0
/* 0x0340 */ .byte 47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128
/* 0x0350 */ .byte 126, 15,131,120,125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0
/* 0x0360 */ .byte 127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120
/* 0x0370 */ .byte 56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64
/* 0x0380 */ .byte 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128
/* 0x0390 */ .byte 65,157, 0, 32,127,140,232, 0, 65,158, 5,212,137, 44, 0, 0
/* 0x03a0 */ .byte 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1
/* 0x03b0 */ .byte 161,103, 1,152, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64
/* 0x03c0 */ .byte 64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,124, 0, 46,112
/* 0x03d0 */ .byte 86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60
/* 0x03e0 */ .byte 176, 7, 1,152,125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32
/* 0x03f0 */ .byte 127,140,232, 0, 65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46
/* 0x0400 */ .byte 124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224
/* 0x0410 */ .byte 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72
/* 0x0420 */ .byte 32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20
/* 0x0430 */ .byte 176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6
/* 0x0440 */ .byte 57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80
/* 0x0450 */ .byte 127,245, 0,174,125, 55, 75,120,127,249,169,174, 59, 57, 0, 1
/* 0x0460 */ .byte 72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80
/* 0x0470 */ .byte 125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80
/* 0x0480 */ .byte 127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80
/* 0x0490 */ .byte 176, 7, 1,152, 65,157, 0, 32,127,140,232, 0, 65,158, 4,208
/* 0x04a0 */ .byte 137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46
/* 0x04b0 */ .byte 57,140, 0, 1,161,103, 1,176, 85, 0,170,254,125, 64, 89,214
/* 0x04c0 */ .byte 127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112
/* 0x04d0 */ .byte 124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,176, 7, 1,176
/* 0x04e0 */ .byte 72, 0, 0,140,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126
/* 0x04f0 */ .byte 124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32
/* 0x0500 */ .byte 127,140,232, 0, 65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46
/* 0x0510 */ .byte 124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200
/* 0x0520 */ .byte 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32
/* 0x0530 */ .byte 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120
/* 0x0540 */ .byte 126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126
/* 0x0550 */ .byte 124, 0, 88, 80,125,233,123,120,176, 7, 1,200,124,170, 40, 80
/* 0x0560 */ .byte 125, 10, 64, 80,126, 15,131,120,126, 48,139,120,127, 81,211,120
/* 0x0570 */ .byte 125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8
/* 0x0580 */ .byte 56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,127,136,176, 64
/* 0x0590 */ .byte 65,157, 0, 32,127,140,232, 0, 65,158, 3,212,137, 44, 0, 0
/* 0x05a0 */ .byte 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1
/* 0x05b0 */ .byte 161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64
/* 0x05c0 */ .byte 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20
/* 0x05d0 */ .byte 124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4
/* 0x05e0 */ .byte 59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156
/* 0x05f0 */ .byte 125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80
/* 0x0600 */ .byte 124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0
/* 0x0610 */ .byte 65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120
/* 0x0620 */ .byte 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2, 85, 0,170,254
/* 0x0630 */ .byte 125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0
/* 0x0640 */ .byte 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20
/* 0x0650 */ .byte 125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3
/* 0x0660 */ .byte 176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80
/* 0x0670 */ .byte 124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4
/* 0x0680 */ .byte 59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166, 63,224, 0,255
/* 0x0690 */ .byte 99,255,255,255, 56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60
/* 0x06a0 */ .byte 127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24
/* 0x06b0 */ .byte 65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1
/* 0x06c0 */ .byte 125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,125, 64, 89,214
/* 0x06d0 */ .byte 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126
/* 0x06e0 */ .byte 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16
/* 0x06f0 */ .byte 125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80
/* 0x0700 */ .byte 56,103, 0, 1,125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1
/* 0x0710 */ .byte 47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20
/* 0x0720 */ .byte 65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,124,105, 27,120
/* 0x0730 */ .byte 64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20
/* 0x0740 */ .byte 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255
/* 0x0750 */ .byte 99,255,255,255, 56,128, 0, 1,127,136,248, 64, 84,135, 8, 60
/* 0x0760 */ .byte 127, 12,232, 0, 84,169, 64, 46,124,228, 59,120, 65,157, 0, 24
/* 0x0770 */ .byte 65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1
/* 0x0780 */ .byte 125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214
/* 0x0790 */ .byte 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126
/* 0x07a0 */ .byte 124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16
/* 0x07b0 */ .byte 125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80
/* 0x07c0 */ .byte 56,135, 0, 1,125,102, 59, 46, 66, 0,255,144, 56,132,255,192
/* 0x07d0 */ .byte 47,132, 0, 3,124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13
/* 0x07e0 */ .byte 124,137, 14,112, 84,128, 7,254, 57,105,255,255, 96, 26, 0, 2
/* 0x07f0 */ .byte 125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60
/* 0x0800 */ .byte 125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94
/* 0x0810 */ .byte 72, 0, 0,100, 57, 41,255,251,125, 41, 3,166, 61, 96, 0,255
/* 0x0820 */ .byte 97,107,255,255,127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46
/* 0x0830 */ .byte 87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0
/* 0x0840 */ .byte 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, 85, 8,248,126
/* 0x0850 */ .byte 127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1
/* 0x0860 */ .byte 66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54
/* 0x0870 */ .byte 56,216, 6, 68, 60,128, 0,255, 96,132,255,255, 59,128, 0, 1
/* 0x0880 */ .byte 59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0
/* 0x0890 */ .byte 84,169, 64, 46,124,255, 59,120, 65,157, 0, 24, 65,154, 0,208
/* 0x08a0 */ .byte 136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120
/* 0x08b0 */ .byte 125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0
/* 0x08c0 */ .byte 127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20
/* 0x08d0 */ .byte 125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120
/* 0x08e0 */ .byte 124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1
/* 0x08f0 */ .byte 125,102, 59, 46,127, 90,227,120, 87,156, 8, 60, 66, 0,255,136
/* 0x0900 */ .byte 55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2
/* 0x0910 */ .byte 65,157, 0, 92,124, 26,200, 80,127,245, 0,174, 56, 99,255,255
/* 0x0920 */ .byte 127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16
/* 0x0930 */ .byte 124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57
/* 0x0940 */ .byte 64,130,255,212,127,153,160, 64, 65,156,247,172, 60, 0, 0,255
/* 0x0950 */ .byte 96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,127,140,232, 0
/* 0x0960 */ .byte 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1
/* 0x0970 */ .byte 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80
/* 0x0980 */ .byte 144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100
/* 0x0990 */ .byte 185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96

View File

@ -0,0 +1,36 @@
/*
; macros.S --
;
; This file is part of the UPX executable compressor.
;
; Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer
; Copyright (C) 1996-2013 Laszlo Molnar
; 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> <ml1050@users.sourceforge.net>
;
*/
//.altmacro
.macro section name
.section \name
.endm
// vi:ts=8:et:nowrap

View File

@ -0,0 +1,156 @@
/* ppc_d_nrv2b.S -- ppc64le decompressor for NRV2B
This file is part of the UPX executable compressor.
Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2013 Laszlo Molnar
Copyright (C) 2000-2013 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#define M_NRV2B_LE32 2
dcbtst 0,dst // prime dcache for store
mflr t3 // return address
cmpli cr0,meth,M_NRV2B_LE32
bne cr0,not_nrv2b
std dst,0(ldst) // original dst
add lsrc,lsrc,src // input eof
lis hibit,0x8000 // 0x80000000 for detecting next bit
rldicr hibit,hibit,32,31 // upper bits
lis bits,0x8000 // prepare for first load
rldicr hibit,hibit,32,31 // upper bits
addi src,src,-1 // prepare for 'lbzu'
addi dst,dst,-1 // prepare for 'stbu'
li disp,-1 // initial displacement
b bot_n2b
#undef jnextb0y
#undef jnextb0n
#undef jnextb1y
#undef jnextb1n
/* jump on next bit, with branch prediction: y==>likely; n==>unlikely
cr0 is set by the cmpl ["compare logical"==>unsigned]:
lt next bit is 0
gt next bit is 1
eq must load next 32 bits from memory
*/
#define jnextb0y call get1; blt+ cr0,
#define jnextb0n call get1; blt- cr0,
#define jnextb1y call get1; bgt+ cr0,
#define jnextb1n call get1; bgt- cr0,
#undef getnextb
/* rotate next bit into bottom bit of reg; set cr0 based on entire result reg */
#define getnextb(reg) call get1; adde. reg,reg,reg
get1:
cmpl cr0,1,bits,hibit // cr0 for jnextb
addc bits,bits,bits // CArry for getnextb
bnelr+ cr0 // return if reload not needed; likely 31/32
/* CArry has been set from adding 0x80000000 to itself; preserve for 'adde' */
// fetch 4 bytes unaligned and LITTLE ENDIAN
#if 0 /*{ clean; but 4 instr larger, and 3 cycles longer */
lbz bits,1(src) // lo8
lbz t0,2(src); rlwimi bits,t0, 8,16,23
lbz t0,3(src); rlwimi bits,t0,16, 8,15
lbzu t0,4(src); rlwimi bits,t0,24, 0, 7
#else /*}{ pray for no unalignment trap or slowdown */
li bits,1 // compensate for 'lbzu'
// lwbrx bits,bits,src // bits= fetch_le32(bits+src)
lwzx bits,bits,src
addi src,src,4
#endif /*}*/
rldicr bits,bits,32,31 // upper bits
cmpl cr0,1,bits,hibit // cr0 for jnextb
adde bits,bits,bits // CArry for getnextb; set lo bit from CarryIn
ret
lit_n2b:
#define tmp len
lbzu tmp,1(src) // tmp= *++src;
stbu tmp,1(dst) // *++dst= tmp;
#undef tmp
top_n2b:
jnextb1y lit_n2b
li off,1 // "the msb"
offmore_n2b:
getnextb(off)
jnextb0n offmore_n2b
addic. off,off,-3 // CArry set [and ignored], but no 'addi.'
li len,0
blt- offprev_n2b
lbzu t0,1(src)
rlwinm off,off,8,0,31-8 // off<<=8;
li t2,-1
rldicr t2,t2,32,31 // 0xffffffff00000000 mask
or off,off,t2 // simulate 32bits extended to 64 bits
nor. disp,off,t0 // disp = -(1+ (off|t0));
beq- eof_nrv
offprev_n2b: // In: 0==len
getnextb(len); getnextb(len) // two bits; cr0 set on result
li off,1; bne- gotlen_n2b // raw 1,2,3 ==> 2,3,4
li off,3 // raw 2.. ==> 5..
li len,1 // "the msb"
lenmore_n2b:
getnextb(len)
jnextb0n lenmore_n2b
gotlen_n2b:
subfic t0,disp,(~0)+(-0xd00) // want CArry only
adde len,len,off // len += off + (disp < -0xd00);
copy:
#define back off
add back,disp,dst // point back to match in dst
mtctr len
short_n2b:
#define tmp len
lbzu tmp,1(back)
stbu tmp,1(dst)
#undef tmp
bdnz+ short_n2b
/* This "prefetch for store" is simple, small, and effective. Matches
usually occur more frequently than once per 128 bytes, but G4 line size
is only 32 bytes anyway. Assume that an 'unnecessary' dcbtst costs only
about as much as a hit. The counter register is free at top_n2b, so we could
pace the dcbtst optimally; but that takes 7 or 8 instructions of space.
*/
bot_n2b:
li back,2*SZ_DLINE
dcbtst back,dst // 2 lines ahead [-1 for stbu]
dcbt back,src // jump start auto prefetch at page boundary
/* Auto prefetch for Read quits at page boundary; needs 2 misses to restart. */
#undef back
b top_n2b
not_nrv2b:
// vi:ts=8:et

View File

@ -0,0 +1,163 @@
/* nrv2d_d.S -- ppc64le decompressor for NRV2D
This file is part of the UPX executable compressor.
Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2013 Laszlo Molnar
Copyright (C) 2000-2013 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#define M_NRV2D_LE32 5
dcbtst 0,dst // prime dcache for store
mflr t3 // return address
cmpli cr0,meth,M_NRV2D_LE32
bne cr0,not_nrv2d
std dst,0(ldst) // original dst
add lsrc,lsrc,src // input eof
lis hibit,0x8000 // 0x80000000 for detecting next bit
rldicr hibit,hibit,32,31 // upper bits
lis bits,0x8000 // prepare for first load
rldicr hibit,hibit,32,31 // upper bits
addi src,src,-1 // prepare for 'lbzu'
addi dst,dst,-1 // prepare for 'stbu'
li disp,-1 // initial displacement
b bot_n2d
#undef jnextb0y
#undef jnextb0n
#undef jnextb1y
#undef jnextb1n
/* jump on next bit, with branch prediction: y==>likely; n==>unlikely
cr0 is set by the cmpl ["compare logical"==>unsigned]:
lt next bit is 0
gt next bit is 1
eq must load next 32 bits from memory
beql-: branch and link [call subroutine] if cr0 is eq, unlikely
*/
#define jnextb0y cmpl 0,1,bits,hibit; add bits,bits,bits; beql- get32d; blt+
#define jnextb0n cmpl 0,1,bits,hibit; add bits,bits,bits; beql- get32d; blt-
#define jnextb1y cmpl 0,1,bits,hibit; add bits,bits,bits; beql- get32d; bgt+
#define jnextb1n cmpl 0,1,bits,hibit; add bits,bits,bits; beql- get32d; bgt-
#undef getnextb
/* rotate next bit into bottom bit of reg, set CC on entire result */
#define getnextb(reg) addc. bits,bits,bits; beql- get32d; adde. reg,reg,reg
get32d:
// fetch 4 bytes unaligned and LITTLE ENDIAN
#if 0 /*{ clean; but 4 instr larger, and 3 cycles longer */
lbz bits,1(src) // lo8
lbz t0,2(src); rlwimi bits,t0, 8,16,23
lbz t0,3(src); rlwimi bits,t0,16, 8,15
lbzu t0,4(src); rlwimi bits,t0,24, 0, 7
#else /*}{ pray for no unalignment trap or slowdown */
li bits,1 // compensate for 'lbzu'
// lwbrx bits,bits,src // bits= fetch_le32(bits+src)
lwzx bits,bits,src
addi src,src,4
#endif /*}*/
rldicr bits,bits,32,31 // upper bits
cmpl 0,bits,hibit // cr0 for jnextb
addc bits,bits,bits // CArry for getnextb
ori bits,bits,1 // the flag bit
ret
lit_n2d:
#define tmp len
lbzu tmp,1(src) // tmp= *++src;
stbu tmp,1(dst) // *++dst= tmp;
#undef tmp
top_n2d:
jnextb1y lit_n2d
li off,1 // start ss12
b getoff_n2d
off_n2d:
addi off,off,-1
getnextb(off)
getoff_n2d:
getnextb(off)
jnextb0n off_n2d
li len,0
addic. off,off,-3 // CArry set [and ignored], but no 'addi.'
rlwinm off,off,8,0,31-8 // off<<=8;
li t2,-1
rldicr t2,t2,32,31 // 0xffffffff00000000 mask
or off,off,t2 // simulate 32bits extended to 64 bits
blt- offprev_n2d
lbzu t0,1(src)
nor. disp,off,t0 // disp = -(1+ (off|t0));
srawi disp,disp,1 // shift off low bit (sets CArry)
beq- eof_nrv // test the 'nor'
b len_n2d -4 // CHEAT [getnextb ends "adde. len,len,len"]: bit from srawi
offprev_n2d:
getnextb(len)
len_n2d:
getnextb(len); bne gotlen_n2d // need getnextb() to set Condition Register
li len,1 // begin ss11
lenmore_n2d:
getnextb(len)
jnextb0n lenmore_n2d
addi len,len,2 // 2.. ==> 4..
gotlen_n2d:
#define tmp off
subfic tmp,disp,(~0)+(-0x500) // want CArry only
#undef tmp
addi len,len,1
addze len,len // len += (disp < -0x500);
#define back off
add back,disp,dst // point back to match in dst
mtctr len
short_n2d:
#define tmp len
lbzu tmp,1(back)
stbu tmp,1(dst)
#undef tmp
bdnz+ short_n2d
bot_n2d:
/* This "prefetch for store" is simple, small, and effective. Matches
usually occur more frequently than once per 128 bytes, but G4 line size
is only 32 bytes anyway. Assume that an 'unnecessary' dcbtst costs only
about as much as a hit. The counter register is free at top_n2d, so we could
pace the dcbtst optimally; but that takes 7 or 8 instructions of space.
*/
li back,2*SZ_DLINE
dcbtst back,dst // 2 lines ahead [-1 for stbu]
dcbt back,src // jump start auto prefetch at page boundary
/* Auto prefetch for Read quits at page boundary; needs 2 misses to restart. */
b top_n2d
#undef back
not_nrv2d:
// vi:ts=8:et

View File

@ -0,0 +1,172 @@
/* ppc_d_nrv2e.S -- PowerPC decompressor for NRV2E
This file is part of the UPX executable compressor.
Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2013 Laszlo Molnar
Copyright (C) 2000-2013 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#define M_NRV2E_LE32 8
dcbtst 0,dst // prime dcache for store
mflr t3 // return address
cmpli cr0,meth,M_NRV2E_LE32
bne cr0,not_nrv2e
std dst,0(ldst) // original dst
add lsrc,lsrc,src // input eof
lis hibit,0x8000 // 0x80000000 for detecting next bit
rldicr hibit,hibit,32,31 // upper bits
lis bits,0x8000 // prepare for first load
rldicr bits,bits,32,31 // upper bits
addi src,src,-1 // prepare for 'lbzu'
addi dst,dst,-1 // prepare for 'stbu'
li disp,-1 // initial displacement
b bot_n2e
#undef jnextb0y
#undef jnextb0n
#undef jnextb1y
#undef jnextb1n
/* jump on next bit, with branch prediction: y==>likely; n==>unlikely
cr0 is set by the cmpl ["compare logical"==>unsigned]:
lt next bit is 0
gt next bit is 1
eq must load next 32 bits from memory
beql-: branch and link [call subroutine] if cr0 is eq, unlikely
*/
#define jnextb0y cmpl 0,1,bits,hibit; add bits,bits,bits; beql- get32; blt+
#define jnextb0n cmpl 0,1,bits,hibit; add bits,bits,bits; beql- get32; blt-
#define jnextb1y cmpl 0,1,bits,hibit; add bits,bits,bits; beql- get32; bgt+
#define jnextb1n cmpl 0,1,bits,hibit; add bits,bits,bits; beql- get32; bgt-
#undef getnextb
/* rotate next bit into bottom bit of reg */
#define getnextb(reg) addc. bits,bits,bits; beql- get32; adde reg,reg,reg
get32:
// fetch 4 bytes unaligned and LITTLE ENDIAN
#if 0 /*{ clean; but 4 instr larger, and 3 cycles longer */
lbz bits,1(src) // lo8
lbz t0,2(src); rlwimi bits,t0, 8,16,23
lbz t0,3(src); rlwimi bits,t0,16, 8,15
lbzu t0,4(src); rlwimi bits,t0,24, 0, 7
#else /*}{ pray for no unalignment trap or slowdown */
li bits,1 // compensate for 'lbzu'
// lwbrx bits,bits,src // bits= fetch_le32(bits+src) endianess
lwzx bits,bits,src
addi src,src,4
#endif /*}*/
rldicr bits,bits,32,31 // upper bits
cmpl 0,1,bits,hibit // cr0 for jnextb
addc bits,bits,bits // CArry for getnextb
// ori bits,bits,1 // the flag bit
li t2,1
rldicr t2,t2,32,31
or bits,bits,t2 // the flag bit
ret
lit_n2e:
#define tmp len
lbzu tmp,1(src) // tmp= *++src;
stbu tmp,1(dst) // *++dst= tmp;
#undef tmp
top_n2e:
jnextb1y lit_n2e
li off,1
b getoff_n2e
off_n2e:
addi off,off,-1
getnextb(off)
getoff_n2e:
getnextb(off)
jnextb0n off_n2e
li len,0
addic. off,off,-3 // CArry set [and ignored], but no 'addi.'
rlwinm off,off,8,0,31-8 // off<<=8;
li t2,-1
rldicr t2,t2,32,31 // 0xffffffff00000000 mask
or off,off,t2 // simulate 32bits extended to 64 bits
blt- offprev_n2e
lbzu t0,1(src)
nor. disp,off,t0 // disp = -(1+ (off|t0));
srawi disp,disp,1 // shift off low bit (sets CArry; ignored)
beq- eof_nrv
andi. t0,t0,1 // complement of low bit of unshifted disp
beq+ lenlast_n2e // low bit was 1
b lenmore_n2e // low bit was 0
offprev_n2e:
jnextb1y lenlast_n2e
lenmore_n2e:
li len,1 // 1: "the msb"
jnextb1y lenlast_n2e
len_n2e:
getnextb(len)
jnextb0n len_n2e
addi len,len,6-2-2
b gotlen_n2e
lenlast_n2e:
getnextb(len) // 0,1,2,3
gotlen_n2e:
#define tmp off
subfic tmp,disp,(~0)+(-0x500) // want CArry only
#undef tmp
addi len,len,2
addze len,len // len += (disp < -0x500);
#define back off
add back,disp,dst // point back to match in dst
mtctr len
short_n2e:
#define tmp len
lbzu tmp,1(back)
stbu tmp,1(dst)
#undef tmp
bdnz+ short_n2e
bot_n2e:
/* This "prefetch for store" is simple, small, and effective. Matches
usually occur more frequently than once per 128 bytes, but G4 line size
is only 32 bytes anyway. Assume that an 'unnecessary' dcbtst costs only
about as much as a hit. The counter register is free at top_n2e, so we could
pace the dcbtst optimally; but that takes 7 or 8 instructions of space.
*/
li back,2*SZ_DLINE
dcbtst back,dst // 2 lines ahead [-1 for stbu]
dcbt back,src // jump start auto prefetch at page boundary
/* Auto prefetch for Read quits at page boundary; needs 2 misses to restart. */
b top_n2e
#undef back
not_nrv2e:
// vi:ts=8:et

View File

@ -0,0 +1,46 @@
#ifndef __PPC_REGS__ /*{*/
#define __PPC_REGS__ 1
#define r0 0
#define r1 1
#define r2 2
#define r29 29
#define r30 30
#define r31 31
/* Stack pointer */
#define sp 1
/* Subroutine arguments; not saved by callee */
#define a0 3
#define a1 4
#define a2 5
#define a3 6
#define a4 7
#define a5 8
#define a6 9
#define a7 10
/* Scratch (temporary) registers; not saved by callee */
#define t0 2
#define t1 11
#define t2 12
#define t3 13
/* branch and link */
#define call bl
/* branch to link register */
#define ret blr
/* move register */
#define movr mr
#endif /*} __PPC_REGS__ */
/*
vi:ts=4:et:nowrap
*/

View File

@ -0,0 +1,3 @@
# convenience Makefile
default %:
$(MAKE) -C ../../.. $@

View File

@ -90,15 +90,15 @@ struct timespec {
// misc constants
#if defined(__amd64__) || defined(__powerpc64__)
#if defined(__mips__) || defined(__powerpc64__)
#define PAGE_MASK (~0ul<<16) // discards the offset, keeps the page
#define PAGE_SIZE ( 1ul<<16)
#elif defined(__amd64__)
#define PAGE_MASK (~0ul<<12) // discards the offset, keeps the page
#define PAGE_SIZE ( 1ul<<12)
#elif defined(__i386__) || defined(__powerpc__) || defined(__arm__)
#define PAGE_MASK (~0ul<<12) // discards the offset, keeps the page
#define PAGE_SIZE ( 1ul<<12)
#elif defined(__mips__)
#define PAGE_MASK (~0ul<<16) // discards the offset, keeps the page
#define PAGE_SIZE ( 1ul<<16)
#endif
#define SEEK_SET 0

View File

@ -159,12 +159,12 @@ ERR_LAB
if (h.sz_cpr < h.sz_unc) { // Decompress block
nrv_uint out_len = h.sz_unc; // EOF for lzma
int const j = (*f_decompress)(xi->buf, h.sz_cpr,
xo->buf, &out_len, h.b_method);
int const j = (*f_decompress)((unsigned char *)xi->buf, h.sz_cpr,
(unsigned char *)xo->buf, &out_len, h.b_method);
if (j != 0 || out_len != (nrv_uint)h.sz_unc)
err_exit(7);
if (h.b_ftid!=0 && f_unf) { // have filter
(*f_unf)(xo->buf, out_len, h.b_cto8, h.b_ftid);
(*f_unf)((unsigned char *)xo->buf, out_len, h.b_cto8, h.b_ftid);
}
xi->buf += h.sz_cpr;
xi->size -= h.sz_cpr;

View File

@ -138,12 +138,12 @@ ERR_LAB
if (h.sz_cpr < h.sz_unc) { // Decompress block
nrv_uint out_len = h.sz_unc; // EOF for lzma
int const j = (*f_decompress)(xi->buf, h.sz_cpr,
xo->buf, &out_len, h.b_method);
int const j = (*f_decompress)((unsigned char *)xi->buf, h.sz_cpr,
(unsigned char *)xo->buf, &out_len, h.b_method);
if (j != 0 || out_len != (nrv_uint)h.sz_unc)
err_exit(7);
if (h.b_ftid!=0 && f_unf) { // have filter
(*f_unf)(xo->buf, out_len, h.b_cto8, h.b_ftid);
(*f_unf)((unsigned char *)xo->buf, out_len, h.b_cto8, h.b_ftid);
}
xi->buf += h.sz_cpr;
xi->size -= h.sz_cpr;

View File

@ -0,0 +1,354 @@
/*
* ppc64le-darwin.dylib-entry.S -- program entry point & decompress (PowerPC32 dylib)
*
* This file is part of the UPX executable compressor.
*
* Copyright (C) 2005-2013 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.
*
* John F. Reiser
* <jreiser@users.sourceforge.net>
*
*/
#include "arch/ppc64le/64/macros.S"
#include "arch/ppc64le/64/ppc_regs.h"
/*************************************************************************
// We have been CALLed as a subroutine from dyld; C-language rules apply.
// -4*4+_start: .long offset(user_init_function)
// -3*4+_start: .long offset(b_info of compressed Mach_headers)
// -2*4+_start: .long length(compressed __TEXT)
// -1*4+_start: .long 8+ total_length # 8+ number of preceding bytes in file
**************************************************************************/
section MACOS000
_start: .globl _start
mflr r2
call main # must be exactly 1 instruction; link_register= &decompress
decompress:
section NRV_HEAD
SZ_DLINE=128 # size of data cache line in Apple G5
/* PowerPC has no 'cmplis': compare logical [unsigned] immediate shifted [by 16] */
#define hibit r0 /* holds 0x80000000 during decompress */
#define src a0
#define lsrc a1
#define dst a2
#define ldst a3 /* Out: actually a reference: &len_dst */
#define meth a4
#define off a4
#define len a5
#define bits a6
#define disp a7
section NRV2E
#include "arch/ppc64le/64/nrv2e_d.S"
section NRV2D
#include "arch/ppc64le/64/nrv2d_d.S"
section NRV2B
#include "arch/ppc64le/64/nrv2b_d.S"
#include "arch/ppc64le/64/lzma_d.S"
#undef off
#undef len
#undef bits
#undef disp
section NRV_TAIL
eof_nrv:
#define dst0 a4
#define tmp a1
ld dst0,0(ldst) // original dst
mtlr t3 // return address
subf a0,lsrc,src
subf tmp,dst0,dst // -1+ dst length
addi a0,a0,1 // return 0: good; else: bad [+1: correct for lbzu]
addi tmp,tmp,1 // dst length
std tmp,0(ldst)
#undef tmp
// CACHELINE=32 is the observed minimum line size of any cache.
// Some caches may have larger lines, but it is cumbersome to lookup
// {AT_DCACHEBSIZE, AT_ICACHEBSIZE, AT_UCACHEBSIZE: /usr/include/elf.h},
// then save the correct size in a variable {where to put it?}, or to modify
// the two instructions here. If a cache has larger lines, then we expect
// that the second dcbst (or icbi) on a the same line will be fast.
// If not, then too bad.
section CFLUSH // In: a2=dst= &highest stored byte; a4=dst0= &lowest stored byte
CACHELINE=32
ori dst0,dst0,-1+ CACHELINE // highest addr on cache line
cfl_nrv:
dcbst 0,dst0 // initiate store (modified) cacheline to memory
cmpl cr0,dst0,dst // did we cover the highest-addressed byte?
icbi 0,dst0 // discard instructions from cacheline
addi dst0,dst0,CACHELINE // highest addr on next line
blt cr0,cfl_nrv // not done yet
#undef dst0
sync // wait for all memory operations to finish
isync // discard prefetched instructions (if any)
cfl_ret:
ret
section ELFMAINY
// IDENTSTR goes here
section ELFMAINZ
sz_l_info= 12
sz_p_info= 12
sz_b_info= 12
sz_unc= 0
sz_cpr= 4
b_method= 8
b_ftid= 9
b_cto8= 10
// register numbers during entry
#define f_unc 31
#define f_uini 30
#define l_unm 29
#define a_unm 28
#define r_unc 27
#define r_cpr 26
#define s_unc 25
#define s_cpr 24
#define l_unc 23
#define l_cpr 22
#define t_h 21 /* temporary */
LINKAREA= 6*8 // (sp,pc,cr, xx,yy.zz) save area per calling convention
PROT_NONE =0x00
PROT_READ =0x01
PROT_WRITE =0x02
PROT_EXEC =0x04
MAP_SHARED =0x1
MAP_PRIVATE =0x2
MAP_ANON =0x1000
SYS_mmap =197
SYS_munmap= 73
SYS_mprotect= 74
main2:
//teq r0,r0 // debugging
stdu r2,-8*(1+ 32-a0)(sp) # retaddr
// stmw a0,4*1(sp)
std 3,3*8-8*2(sp)
std 4,4*8-8*2(sp)
std 5,5*8-8*2(sp)
std 6,6*8-8*2(sp)
std 7,7*8-8*2(sp)
std 8,8*8-8*2(sp)
std 9,9*8-8*2(sp)
std 10,10*8-8*2(sp)
std 11,11*8-8*2(sp)
std 12,12*8-8*2(sp)
std 13,13*8-8*2(sp)
std 14,14*8-8*2(sp)
std 15,15*8-8*2(sp)
std 16,16*8-8*2(sp)
std 17,17*8-8*2(sp)
std 18,18*8-8*2(sp)
std 19,19*8-8*2(sp)
std 20,20*8-8*2(sp)
std 21,21*8-8*2(sp)
std 22,22*8-8*2(sp)
std 23,23*8-8*2(sp)
std 24,24*8-8*2(sp)
std 25,25*8-8*2(sp)
std 26,26*8-8*2(sp)
std 27,27*8-8*2(sp)
std 28,28*8-8*2(sp)
std 29,29*8-8*2(sp)
std 30,30*8-8*2(sp)
std 31,31*8-8*2(sp)
mflr f_unc # f_unc= &decompress
lwz t_h, -4*1(f_unc) # "call main" at _start
lwz l_unm,-4*1+ _start - decompress(f_unc) # 4+ offset(_start)
rlwinm t_h,t_h,0,6,29 # 4+ main - decompress
add l_unm,l_unm,t_h # offset(main); ASSUMES (8+_start)==decompress
addi t_h,t_h,-4 # main - decompress
li a0,0 # addr
mr a1,l_unm # length for munmap
li a2,PROT_READ|PROT_WRITE
li a3,MAP_ANON|MAP_PRIVATE
li a4,-1
li a5,0 # hi32(offset)
li a6,0 # lo32(offset)
li 0,SYS_mmap
sc
li a0,-1 # failure
mr a_unm,a0 # address for munmap
li a2,main - movup2
mtctr a2
add a1,a0 ,l_unm # lwa(dst); new_page + offset(main)
add a0,t_h,f_unc # lwa(src); &main
movup1: # descending copy [moveup2, main)
lbzu r0,-1(a0)
stbu r0,-1(a1)
bdnz+ movup1
subf a2,a2,l_unm # offset(movup2)
mtlr a1 # &copied movup2
mtctr a2 # offset(movup2)
blr # goto the copied code
movup2: # descending copy [base, movup2)
lbzu r0,-1(a0)
stbu r0,-1(a1)
bdnz+ movup2
lwz f_uini,-4*4+ _start - decompress(f_unc) # offset(user_init_fn)
subf f_unc,a0,f_unc
add f_unc,a1,f_unc # relocated decompress
add f_uini,f_uini,a0
lwz t0,-4*3+ _start - decompress(f_unc) # offset(b_info)
add r_cpr,a1,t0 # &b_info
add r_unc,a0,t0 # &b_info
addi r_unc,r_unc,-sz_l_info -sz_p_info
// skip compressed Mach headers
lwz t0,sz_cpr(r_cpr)
addi r_cpr,r_cpr,sz_b_info
add r_cpr,r_cpr,t0
dy_uncpr:
mr s_cpr,r_cpr
mr s_unc,r_unc
addi a0,r_cpr,sz_unc
call get4; beq dy_done
add r_unc,r_unc,a0
mr l_unc,a0
addi a0,r_cpr,sz_cpr
call get4
add r_cpr,r_cpr,a0
mr l_cpr,a0
addi r_cpr,r_cpr,sz_b_info
stdu l_unc,-8(sp) # keep stack 8-byte aligned
mtlr f_unc
addi a0,s_cpr,sz_b_info # src
mr a1,l_cpr
mr a2,s_unc # dst
mr a3,sp # &l_dst
lbz a4,b_method(s_cpr)
la sp,-LINKAREA(sp)
blrl # uncompress
la sp,8+LINKAREA(sp)
// FIXME: check status
lbz a3,b_ftid(s_cpr)
cmpli cr0,a3,0
beq dy_uncpr
lbz a2,b_cto8(s_cpr)
ld a1,sz_unc(s_cpr)
mr a0,s_unc
bl unfilter
b dy_uncpr
dy_done:
bl dy_done2
dy_done1: # escape hatch
sc # munmap
li a0,~0 # failure
// lmw t0,0(sp)
ld 2,2*8-8*2(sp)
ld 3,3*8-8*2(sp)
ld 4,4*8-8*2(sp)
ld 5,5*8-8*2(sp)
ld 6,6*8-8*2(sp)
ld 7,7*8-8*2(sp)
ld 8,8*8-8*2(sp)
ld 9,9*8-8*2(sp)
ld 10,10*8-8*2(sp)
ld 11,11*8-8*2(sp)
ld 12,12*8-8*2(sp)
ld 13,13*8-8*2(sp)
ld 14,14*8-8*2(sp)
ld 15,15*8-8*2(sp)
ld 16,16*8-8*2(sp)
ld 17,17*8-8*2(sp)
ld 18,18*8-8*2(sp)
ld 19,19*8-8*2(sp)
ld 20,20*8-8*2(sp)
ld 21,21*8-8*2(sp)
ld 22,22*8-8*2(sp)
ld 23,23*8-8*2(sp)
ld 24,24*8-8*2(sp)
ld 25,25*8-8*2(sp)
ld 26,26*8-8*2(sp)
ld 27,27*8-8*2(sp)
ld 28,28*8-8*2(sp)
ld 29,29*8-8*2(sp)
ld 30,30*8-8*2(sp)
ld 31,31*8-8*2(sp)
addi sp,sp,8*(32-t0)
mtlr t0 # &continuation in dyld
bctr # goto user_init_function
dy_done2:
li t0,(dy_done2 - dy_done1)/4
mflr a0
la a0,dy_done2 - dy_done1(a0)
mtctr t0
dy_done3:
lwzu t0,-4(a0)
stwu t0,-4(s_unc)
bdnz+ dy_done3
mtlr s_unc
mtctr f_uini # user_init_function
mr a0,a_unm
mr a1,l_unm
li 0,SYS_munmap
blr # goto relocated dy_done1
get4:
lbz t0,3(a0)
lbz t1,2(a0)
rlwimi t0,t1, 8,16,23
lbz t1,1(a0)
rlwimi t0,t1,16, 8,15
lbz t1,0(a0)
rlwimi t0,t1,24, 0, 7
mr. a0,t0 # set condition codes
blr
unfilter:
#include "arch/ppc64le/64/bxx.S"
main:
b main2
dy_top:
len_top = dy_top - main
/*
vi:ts=8:et:nowrap
*/

View File

@ -0,0 +1,144 @@
/*
* ppc64le-darwin.macho-entry.S -- program entry point & decompressor (PowerPC32 Mach-o)
*
* This file is part of the UPX executable compressor.
*
* Copyright (C) 2005-2013 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.
*
* John F. Reiser
* <jreiser@users.sourceforge.net>
*
*/
#include "arch/ppc64le/64/macros.S"
#include "arch/ppc64le/64/ppc_regs.h"
section MACOS000
_start: .globl _start
call main # must be exactly 1 instruction; link_register= &decompress
section NRV_HEAD
SZ_DLINE=128 # size of data cache line in Apple G5
/* PowerPC has no 'cmplis': compare logical [unsigned] immediate shifted [by 16] */
#define hibit r0 /* holds 0x80000000 during decompress */
#define src a0
#define lsrc a1
#define dst a2
#define ldst a3 /* Out: actually a reference: &len_dst */
#define meth a4
#define off a4
#define len a5
#define bits a6
#define disp a7
section NRV2E
#include "arch/ppc64le/64/nrv2e_d.S"
section NRV2D
#include "arch/ppc64le/64/nrv2d_d.S"
section NRV2B
#include "arch/ppc64le/64/nrv2b_d.S"
#include "arch/ppc64le/64/lzma_d.S"
section NRV_TAIL
eof_nrv:
#define dst0 a4
#define tmp a1
ld dst0,0(ldst) // original dst
mtlr t3 // return address
subf a0,lsrc,src
subf tmp,dst0,dst // -1+ dst length
addi a0,a0,1 // return 0: good; else: bad [+1: correct for lbzu]
addi tmp,tmp,1 // dst length
std tmp,0(ldst)
#undef tmp
// CACHELINE=32 is the observed minimum line size of any cache.
// Some caches may have larger lines, but it is cumbersome to lookup
// {AT_DCACHEBSIZE, AT_ICACHEBSIZE, AT_UCACHEBSIZE: /usr/include/elf.h},
// then save the correct size in a variable {where to put it?}, or to modify
// the two instructions here. If a cache has larger lines, then we expect
// that the second dcbst (or icbi) on a the same line will be fast.
// If not, then too bad.
section CFLUSH // In: a2=dst= &highest stored byte; a4=dst0= &lowest stored byte
CACHELINE=32
ori dst0,dst0,-1+ CACHELINE // highest addr on cache line
cfl_nrv:
dcbst 0,dst0 // initiate store (modified) cacheline to memory
cmpl cr0,dst0,dst // did we cover the highest-addressed byte?
icbi 0,dst0 // discard instructions from cacheline
addi dst0,dst0,CACHELINE // highest addr on next line
blt cr0,cfl_nrv // not done yet
#undef dst0
sync // wait for all memory operations to finish
isync // discard prefetched instructions (if any)
cfl_ret:
ret
section ELFMAINY
// IDENTSTR goes here
section ELFMAINZ
sz_b_info= 12
sz_unc= 0
sz_cpr= 4
b_method= 8
/* Decompress the rest of this loader, and jump to it. */
unfold:
mflr t0 # -4+ &{ b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...}
lwz lsrc,4+sz_cpr(t0)
mtctr lsrc # length to copy (and decompress)
lwz ldst,4+sz_unc(t0)
lbz meth,4+b_method(t0)
add dst,lsrc,t0
addi dst,dst,4+sz_b_info
add src,ldst,t0
addi src,src,GAP+64 # defend against prefetch and overlap
movup: # descending copy moves folded_loader to higher address
lbzu r0,-1(dst)
stbu r0,-1(src)
bdnz+ movup # typical count is about 0x4cb(1227) bytes
mtctr r31 # &decompress
addi dst,t0,GAP # &unfolded result
std ldst,-8(sp) # LZMA needs for EOF
la ldst,-8(sp) # &sz_result
la sp,-6*8(sp) // (sp,cr,pc, xx,yy,zz) save area per calling convention
bctr # call decompress: branch to counter register, return to link register
main:
//// teq r0,r0 // debugging
mflr r31 # r31= &decompress
call unfold
L100: GAP= 128 # > farthest_prefetch; must match ../p_mach.cpp
b GAP+L100 # 'isync' has trouble on Macintosh G4?
/* { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...} */
/*
vi:ts=8:et:nowrap
*/

View File

@ -0,0 +1,136 @@
/* powerpc-darwin.macho-fold.S -- linkage to C code to process Mach-o binary
*
* This file is part of the UPX executable compressor.
*
* Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer
* Copyright (C) 1996-2013 Laszlo Molnar
* Copyright (C) 2000-2013 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> <ml1050@users.sourceforge.net>
*
* John F. Reiser
* <jreiser@users.sourceforge.net>
*/
#include "arch/powerpc/32/macros.S"
#include "arch/powerpc/32/ppc_regs.h"
retaddr = 2*4 // (sp,cr,pc, xx,yy,zz) save area per calling convention
sz_b_info= 12
sz_unc= 0
sz_cpr= 4
sz_l_info= 12
sz_p_info= 12
/* Mach_ppc_thread_state */
srr0 = 0*4
srr1 = 1*4
reg0 = 2*4
reg_cr = 34*4
reg_xer = 35*4
reg_lr = 36*4
reg_ctr = 37*4
reg_mq = 38*4
reg_vrsave = 39*4
_start: .globl _start # ignored, but silence "cannot find entry symbol _start" from ld
/* In:
r31= &decompress; also 8+ (char *)&(offset to {l_info; p_info; b_info})
*/
fold_begin:
call L90
#include "arch/powerpc/32/bxx.S"
L90:
la sp,6*4(sp) // trim save area used by decompressor
li a6,0
stwu a6,-4(sp) # _push_ default value for dyld
movr a6,sp # &mhdrp
mflr a5 # &ppcbxx: f_unfilter
lwz a1,-8(r31) # offset to {l_info; p_info; b_info}
subf a0,a1,r31 # &l_info
lwz a3,sz_unc+sz_p_info+sz_l_info(a0) # sz_mach_headers
cmpli 0,a3,2048; bgt L100; li a3,2048 # at least 2 KiB for /usr/lib/dyld
L100:
movr r29,sp # remember for restoring later
subf sp,a3,sp # alloca
movr a2,sp # &temp char[sz_mach_headers]
addi sp,sp,-4*6 # linkage area assumed by C code (sp,cr,lr, xx,yy,zz)
movr a4,r31 # f_decompress
call upx_main # Out: a0= &Mach_ppc_thread_state of dyld
movr sp,r29 # restore stack pointer
lwz t0, srr0(a0); mtctr t0 # entry address
/* Next 3 lines probably are not needed, but ... */
lwz t0, reg_cr(a0); mtcr t0 # condition code
lwz t0,reg_xer(a0); mtxer t0 # extended error reg (CArry, etc.)
lwz t0, reg_lr(a0); mtlr t0 # link register
lmw 4,4*4+reg0(3) # reg 4 thru 31
lwz 0,0*4+reg0(3)
lwz 2,2*4+reg0(3)
lwz 3,3*4+reg0(3)
bctr # goto dyld
SYS_exit =1
SYS_fork =2
SYS_read =3
SYS_write =4
SYS_open =5
SYS_close =6
SYS_pread =153
SYS_mmap =197
SYS_mprotect= 74
/* SYS_mmap takes a 64-bit off_t, but gcc-3.4.1-20040827 passes long long
in wrong registers. So change C interface to use size_t (32-bits) instead
of off_t (64 bits), and convert here.
*/
pread: .globl pread
movr a4,a3; li a3,0 # zero extend 4th arg size_t to off_t
li 0,SYS_pread; b sysgo
mmap: .globl mmap
movr a6,a5; li a5,0 # zero extend 6th arg size_t to off_t
li 0,SYS_mmap
sysgo:
sc
li a0,-1 # failure return
ret
exit: .globl exit
li 0,SYS_exit; b sysgo
read: .globl read
li 0,SYS_read; b sysgo
open: .globl open
li 0,SYS_open; b sysgo
close: .globl close
li 0,SYS_close; b sysgo
mprotect: .globl mprotect
li 0,SYS_mprotect; b sysgo
/*
vi:ts=8:et:nowrap
*/

View File

@ -0,0 +1,460 @@
/* ppc64le-darwin.macho-main.c -- loader stub for Mach-o PowerPC64LE
This file is part of the UPX executable compressor.
Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2013 Laszlo Molnar
Copyright (C) 2000-2013 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#include "include/darwin.h"
/*************************************************************************
// configuration section
**************************************************************************/
// In order to make it much easier to move this code at runtime and execute
// it at an address different from it load address: there must be no
// static data, and no string constants.
/*************************************************************************
// "file" util
**************************************************************************/
typedef struct {
size_t size; // must be first to match size[0] uncompressed size
char *buf;
} Extent;
static void
xread(Extent *x, char *buf, size_t count)
{
char *p=x->buf, *q=buf;
size_t j;
if (x->size < count) {
exit(127);
}
for (j = count; 0!=j--; ++p, ++q) {
*q = *p;
}
x->buf += count;
x->size -= count;
}
/*************************************************************************
// util
**************************************************************************/
#if 1 //{ save space
#define ERR_LAB error: exit(127);
#define err_exit(a) goto error
#else //}{ save debugging time
#define ERR_LAB /*empty*/
static void
err_exit(int a)
{
(void)a; // debugging convenience
exit(127);
}
#endif //}
/*************************************************************************
// UPX & NRV stuff
**************************************************************************/
struct l_info { // 12-byte trailer for loader (after macho headers)
unsigned l_checksum;
unsigned l_magic; // UPX_MAGIC_LE32
unsigned short l_lsize;
unsigned char l_version;
unsigned char l_format;
};
struct p_info { // 12-byte packed program header
unsigned p_progid;
unsigned p_filesize;
unsigned p_blocksize;
};
struct b_info { // 12-byte header before each compressed block
unsigned sz_unc; // uncompressed_size
unsigned sz_cpr; // compressed_size
unsigned char b_method; // compression algorithm
unsigned char b_ftid; // filter id
unsigned char b_cto8; // filter parameter
unsigned char b_unused;
};
typedef void f_unfilter(
nrv_byte *, // also addvalue
nrv_uint,
unsigned cto8, // junk in high 24 bits
unsigned ftid
);
typedef int f_expand(
const nrv_byte *, nrv_uint,
nrv_byte *, nrv_uint *, unsigned );
static void
unpackExtent(
Extent *const xi, // input
Extent *const xo, // output
f_expand *const f_decompress,
f_unfilter *f_unf
)
{
while (xo->size) {
struct b_info h;
// Note: if h.sz_unc == h.sz_cpr then the block was not
// compressible and is stored in its uncompressed form.
// Read and check block sizes.
xread(xi, (char *)&h, sizeof(h));
if (h.sz_unc == 0) { // uncompressed size 0 -> EOF
if (h.sz_cpr != UPX_MAGIC_LE32) // h.sz_cpr must be h->magic
err_exit(2);
if (xi->size != 0) // all bytes must be written
err_exit(3);
break;
}
if (h.sz_cpr <= 0) {
err_exit(4);
ERR_LAB
}
if (h.sz_cpr > h.sz_unc
|| h.sz_unc > xo->size ) {
err_exit(5);
}
// Now we have:
// assert(h.sz_cpr <= h.sz_unc);
// assert(h.sz_unc > 0 && h.sz_unc <= blocksize);
// assert(h.sz_cpr > 0 && h.sz_cpr <= blocksize);
if (h.sz_cpr < h.sz_unc) { // Decompress block
nrv_uint out_len = h.sz_unc; // EOF for lzma
int const j = (*f_decompress)((const unsigned char *)xi->buf, h.sz_cpr,
(unsigned char *)xo->buf, &out_len, h.b_method);
if (j != 0 || out_len != (nrv_uint)h.sz_unc)
err_exit(7);
if (h.b_ftid!=0 && f_unf) { // have filter
(*f_unf)((unsigned char *)xo->buf, out_len, h.b_cto8, h.b_ftid);
}
xi->buf += h.sz_cpr;
xi->size -= h.sz_cpr;
}
else { // copy literal block
xread(xi, xo->buf, h.sz_cpr);
}
xo->buf += h.sz_unc;
xo->size -= h.sz_unc;
}
}
static void
upx_bzero(char *p, size_t len)
{
if (len) do {
*p++= 0;
} while (--len);
}
#define bzero upx_bzero
// The PF_* and PROT_* bits are {1,2,4}; the conversion table fits in 32 bits.
#define REP8(x) \
((x)|((x)<<4)|((x)<<8)|((x)<<12)|((x)<<16)|((x)<<20)|((x)<<24)|((x)<<28))
#define EXP8(y) \
((1&(y)) ? 0xf0f0f0f0 : (2&(y)) ? 0xff00ff00 : (4&(y)) ? 0xffff0000 : 0)
#define PF_TO_PROT(pf) \
((PROT_READ|PROT_WRITE|PROT_EXEC) & ( \
( (REP8(PROT_EXEC ) & EXP8(PF_X)) \
|(REP8(PROT_READ ) & EXP8(PF_R)) \
|(REP8(PROT_WRITE) & EXP8(PF_W)) \
) >> ((pf & (PF_R|PF_W|PF_X))<<2) ))
typedef struct {
unsigned magic;
unsigned nfat_arch;
} Fat_header;
typedef struct {
unsigned cputype;
unsigned cpusubtype;
unsigned offset;
unsigned size;
unsigned align; /* power of 2 */
} Fat_arch;
enum e8 {
FAT_MAGIC = 0xcafebabe
};
enum e9 {
CPU_TYPE_I386 = 7,
CPU_TYPE_POWERPC = 0x00000012,
CPU_TYPE_POWERPC64 = 0x01000012
};
typedef struct {
unsigned magic;
unsigned cputype;
unsigned cpysubtype;
unsigned filetype;
unsigned ncmds;
unsigned sizeofcmds;
unsigned flags;
} Mach_header;
enum e0 {
MH_MAGIC = 0xfeedface
};
enum e2 {
MH_EXECUTE = 2
};
enum e3 {
MH_NOUNDEFS = 1
};
typedef struct {
unsigned cmd;
unsigned cmdsize;
} Mach_load_command;
enum e4 {
LC_SEGMENT = 0x1,
LC_THREAD = 0x4,
LC_UNIXTHREAD = 0x5,
LC_LOAD_DYLINKER = 0xe
};
typedef struct {
unsigned cmd;
unsigned cmdsize;
char segname[16];
unsigned vmaddr;
unsigned vmsize;
unsigned fileoff;
unsigned filesize;
unsigned maxprot;
unsigned initprot;
unsigned nsects;
unsigned flags;
} Mach_segment_command;
enum e5 {
VM_PROT_READ = 1,
VM_PROT_WRITE = 2,
VM_PROT_EXECUTE = 4
};
typedef struct {
unsigned srr0; /* Instruction address register (PC; entry addr) */
unsigned srr1; /* Machine state register (supervisor) */
unsigned r0, r1, r2, r3, r4, r5, r6, r7;
unsigned r8, r9,r10,r11,r12,r13,r14,r15;
unsigned r16,r17,r18,r19,r20,r21,r22,r23;
unsigned r24,r25,r26,r27,r28,r29,r30,r31;
unsigned cr; /* Condition register */
unsigned xer; /* User's integer exception register */
unsigned lr; /* Link register */
unsigned ctr; /* Count register */
unsigned mq; /* MQ register (601 only) */
unsigned vrsave; /* Vector Save Register */
} Mach_ppcle_thread_state64;
typedef struct {
unsigned cmd; /* LC_THREAD or LC_UNIXTHREAD */
unsigned cmdsize; /* total size of this command */
unsigned flavor;
unsigned count; /* sizeof(following_thread_state)/4 */
Mach_ppcle_thread_state64 state;
} Mach_thread_command;
enum e6 {
PPC_THREAD_STATE = 1
};
enum e7 {
PPC_THREAD_STATE_COUNT = sizeof(Mach_ppcle_thread_state64)/4
};
typedef union {
unsigned long offset; /* from start of load command to string */
char *ptr;
} Mach_lc_str;
#define MAP_FIXED 0x10
#define MAP_PRIVATE 0x02
#define MAP_ANON 0x1000
#define PROT_READ 1
#define PROT_WRITE 2
#define PROT_EXEC 4
/* bug in crosstool/powerpc-750-linux-gnu/gcc-3.4.1-glibc-20040827:
unsigned long long off_t goes into registers (9,10) instead of (8,9).
Adjust in mmap(), pread(), and include/darwin.h .
*/
extern char *mmap(char *, size_t, unsigned, unsigned, int, off_t);
ssize_t pread(int, void *, size_t, off_t);
static Mach_ppcle_thread_state64 const *
do_xmap(
Mach_header const *const mhdr,
off_t const fat_offset,
Extent *const xi,
int const fdi,
Mach_header **mhdrpp,
f_expand *const f_decompress,
f_unfilter *const f_unf
)
{
Mach_segment_command const *sc = (Mach_segment_command const *)(1+ mhdr);
Mach_ppcle_thread_state64 const *entry = 0;
unsigned j;
for ( j=0; j < mhdr->ncmds; ++j,
(sc = (Mach_segment_command const *)(sc->cmdsize + (char const *)sc))
) if (LC_SEGMENT==sc->cmd) {
Extent xo;
size_t mlen = xo.size = sc->filesize;
char *addr = xo.buf = (char *)(long)sc->vmaddr;
char *haddr = sc->vmsize + addr;
size_t frag = (long)addr &~ PAGE_MASK;
addr -= frag;
mlen += frag;
if (0!=mlen && addr != mmap(addr, mlen, VM_PROT_READ | VM_PROT_WRITE,
MAP_FIXED | MAP_PRIVATE |
((xi || 0==sc->filesize) ? MAP_ANON : 0),
((0==sc->filesize) ? -1 : fdi), sc->fileoff + fat_offset) ) {
err_exit(8);
}
if (xi && 0!=sc->filesize) {
if (0==sc->fileoff /*&& 0!=mhdrpp*/) {
*mhdrpp = (Mach_header *)addr;
}
unpackExtent(xi, &xo, f_decompress, f_unf);
}
/*bzero(addr, frag);*/ // fragment at lo end
frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary
bzero(mlen+addr, frag); // fragment at hi end
if (0!=mlen && 0!=mprotect(addr, mlen, sc->initprot)) {
err_exit(10);
ERR_LAB
}
addr += mlen + frag; /* page boundary on hi end */
if (addr < haddr) { // need pages for .bss
if (addr != mmap(addr, haddr - addr, sc->initprot,
MAP_FIXED | MAP_PRIVATE | MAP_ANON, -1, 0 ) ) {
err_exit(9);
}
}
}
else if (LC_UNIXTHREAD==sc->cmd || LC_THREAD==sc->cmd) {
Mach_thread_command const *const thrc = (Mach_thread_command const *)sc;
if (PPC_THREAD_STATE ==thrc->flavor
&& PPC_THREAD_STATE_COUNT==thrc->count ) {
entry = &thrc->state;
}
}
return entry;
}
/*************************************************************************
// upx_main - called by our entry code
//
**************************************************************************/
Mach_ppcle_thread_state64 const *
upx_main(
struct l_info const *const li,
size_t volatile sz_compressed, // total length
Mach_header *const mhdr, // temp char[sz_mhdr] for decompressing
size_t const sz_mhdr,
f_expand *const f_decompress,
f_unfilter *const f_unf,
Mach_header **const mhdrpp // Out: *mhdrpp= &real Mach_header
)
{
Mach_ppcle_thread_state64 const *entry;
off_t fat_offset = 0;
Extent xi, xo, xi0;
xi.buf = CONST_CAST(char *, 1+ (struct p_info const *)(1+ li)); // &b_info
xi.size = sz_compressed - (sizeof(struct l_info) + sizeof(struct p_info));
xo.buf = (char *)mhdr;
xo.size = ((struct b_info const *)xi.buf)->sz_unc;
xi0 = xi;
// Uncompress Macho headers
unpackExtent(&xi, &xo, f_decompress, 0); // never filtered?
entry = do_xmap(mhdr, fat_offset, &xi0, -1, mhdrpp, f_decompress, f_unf);
{ // Map dyld dynamic loader
Mach_load_command const *lc = (Mach_load_command const *)(1+ mhdr);
unsigned j;
for (j=0; j < mhdr->ncmds; ++j,
(lc = (Mach_load_command const *)(lc->cmdsize + (char const *)lc))
) if (LC_LOAD_DYLINKER==lc->cmd) {
char const *const dyld_name = ((Mach_lc_str const *)(1+ lc))->offset +
(char const *)lc;
int const fdi = open(dyld_name, O_RDONLY, 0);
if (0 > fdi) {
err_exit(18);
}
fat:
if ((ssize_t)sz_mhdr!=pread(fdi, (void *)mhdr, sz_mhdr, fat_offset)) {
ERR_LAB
err_exit(19);
}
switch (mhdr->magic) {
case MH_MAGIC: break;
case FAT_MAGIC: {
// stupid Apple: waste code and a page fault on EVERY execve
Fat_header const *const fh = (Fat_header const *)mhdr;
Fat_arch const *fa = (Fat_arch const *)(1+ fh);
for (j= 0; j < fh->nfat_arch; ++j, ++fa) {
if (CPU_TYPE_POWERPC==fa->cputype) {
fat_offset= fa->offset;
goto fat;
}
}
} break;
} // switch
entry = do_xmap(mhdr, fat_offset, 0, fdi, 0, 0, 0);
close(fdi);
break;
}
}
return entry;
}
/*
vi:ts=4:et:nowrap
*/

View File

@ -0,0 +1,229 @@
/* ppc64le-linux.elf-entry.S -- Linux program entry point & decompressor (Elf binary)
*
* This file is part of the UPX executable compressor.
*
* Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer
* Copyright (C) 1996-2013 Laszlo Molnar
* Copyright (C) 2000-2013 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> <ml1050@users.sourceforge.net>
*
* John F. Reiser
* <jreiser@users.sourceforge.net>
*/
#include "arch/ppc64le/64/macros.S"
#include "arch/ppc64le/64/ppc_regs.h"
sz_b_info= 12
sz_unc= 0
sz_cpr= 4
b_method= 8
PROT_READ= 1
PROT_WRITE= 2
PROT_EXEC= 4
MAP_PRIVATE= 2
MAP_FIXED= 0x10
MAP_ANONYMOUS= 0x20
PAGE_SHIFT= 16
PAGE_SIZE = -(~0<<PAGE_SHIFT)
/* /usr/include/asm-ppc/unistd.h */
__NR_write = 4
__NR_exit = 1
__NR_mmap = 90
section ELFMAINX
_start: .globl _start
call main // must be exactly 1 instruction; link_register= &decompress
/* Returns 0 on success; non-zero on failure. */
decompress: // (uchar const *src, size_t lsrc, uchar *dst, size_t &ldst, uint method)
section NRV_HEAD
SZ_DLINE=128 # size of data cache line in Apple G5
/* PowerPC has no 'cmplis': compare logical [unsigned] immediate shifted [by 16] */
#define hibit r0 /* holds 0x80000000 during decompress */
#define src a0
#define lsrc a1
#define dst a2
#define ldst a3 /* Out: actually a reference: &len_dst */
#define meth a4
#define off a4
#define len a5
#define bits a6
#define disp a7
section NRV2E
#include "arch/ppc64le/64/nrv2e_d.S"
section NRV2D
#include "arch/ppc64le/64/nrv2d_d.S"
section NRV2B
#include "arch/ppc64le/64/nrv2b_d.S"
#include "arch/ppc64le/64/lzma_d.S"
section NRV_TAIL
eof_nrv:
#define dst0 a4
#define tmp a1
ld dst0,0(ldst) // original dst
mtlr t3 // return address
subf a0,lsrc,src
subf tmp,dst0,dst // -1+ dst length
addi a0,a0,1 // return 0: good; else: bad [+1: correct for lbzu]
addi tmp,tmp,1 // dst length
std tmp,0(ldst)
#undef tmp
// CACHELINE=32 is the observed minimum line size of any cache.
// Some caches may have larger lines, but it is cumbersome to lookup
// {AT_DCACHEBSIZE, AT_ICACHEBSIZE, AT_UCACHEBSIZE: /usr/include/elf.h},
// then save the correct size in a variable {where to put it?}, or to modify
// the two instructions here. If a cache has larger lines, then we expect
// that the second dcbst (or icbi) on a the same line will be fast.
// If not, then too bad.
section CFLUSH // In: a2=dst= &highest stored byte; a4=dst0= &lowest stored byte
CACHELINE=32
ori dst0,dst0,-1+ CACHELINE // highest addr on cache line
cfl_nrv:
dcbst 0,dst0 // initiate store (modified) cacheline to memory
cmpl cr0,dst0,dst // did we cover the highest-addressed byte?
icbi 0,dst0 // discard instructions from cacheline
addi dst0,dst0,CACHELINE // highest addr on next line
blt cr0,cfl_nrv // not done yet
#undef dst0
sync // wait for all memory operations to finish
isync // discard prefetched instructions (if any)
cfl_ret:
ret
section ELFMAINY
msg_SELinux:
call L72
L70:
.asciz "PROT_EXEC|PROT_WRITE failed.\n"
L71:
// IDENTSTR goes here
section ELFMAINZ
L72:
li a2,L71 - L70 // length
mflr a1 // message text
li a0,2 // fd stderr
li 0,__NR_write; sc
die:
li a0,127
li 0,__NR_exit; sc
/* Decompress the rest of this loader, and jump to it. */
unfold:
mflr r30 // &{ b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...}
li a5,0 // off_t
li a4,-1 // fd; cater to *BSD for MAP_ANON
lwz a0,sz_cpr(r30) // size < 1 Page
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_b_info-1
add a0,a0,a1
rlwinm a0,a0,0,0,31-PAGE_SHIFT // next page boundary after fold
sc; bso- msg_SELinux // Branch if SummaryOverflow (failure)
0:
mtctr r31
lwz r0,sz_unc(r30) // size uncompressed
lbz meth,b_method(r30)
la ldst,31*8(sp) // &slot on stack
std r0,31*8(sp) // lzma uses for EOF
mr dst,a0
mtlr a0 // &continuation
lwz lsrc,sz_cpr(r30) // size of compressed
addi src,r30,sz_b_info
la sp,-6*8(sp) // (sp,pc,cr, xx,yy,zz) save area per calling convention
bctr // goto decomrpess; return to link register (mmap'ed page)
// Example code at entrypoint of C-language subroutine:
// mflr r0 # r0= return address
// stwu sp,-96(sp) # allocate local frame; chain to previous frame
// stmw r14,24(sp) # save 18 regs r14,r15,...,r31; 4*18 == (96 - 24)
// stw r0,100(sp) # save return address into caller's frame (100 >= 96)
// Example code at exit:
// lwz r0,100(sp) # r0= return address
// lmw r14,24(sp) # restore 18 regs r14,r15,...,r31
// mtlr r0 # prepare for indirect jump
// addi sp,sp,96 # de-allocate local frame
// blr # goto return address
main:
//// teq r0,r0 // debugging
stdu r1,-32*8(sp) // allocate space (keeping 0 mod 16), save r1
// stm r2,8(sp) // save registers r2 thru r31 - 32bits save
std 2,2*8-8(sp)
std 3,3*8-8(sp)
std 4,4*8-8(sp)
std 5,5*8-8(sp)
std 6,6*8-8(sp)
std 7,7*8-8(sp)
std 8,8*8-8(sp)
std 9,9*8-8(sp)
std 10,10*8-8(sp)
std 11,11*8-8(sp)
std 12,12*8-8(sp)
std 13,13*8-8(sp)
std 14,14*8-8(sp)
std 15,15*8-8(sp)
std 16,16*8-8(sp)
std 17,17*8-8(sp)
std 18,18*8-8(sp)
std 19,19*8-8(sp)
std 20,20*8-8(sp)
std 21,21*8-8(sp)
std 22,22*8-8(sp)
std 23,23*8-8(sp)
std 24,24*8-8(sp)
std 25,25*8-8(sp)
std 26,26*8-8(sp)
std 27,27*8-8(sp)
std 28,28*8-8(sp)
std 29,29*8-8(sp)
std 30,30*8-8(sp)
std 31,31*8-8(sp)
mflr r31 // &decompress
call unfold
/* { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...} */
/*
vi:ts=8:et:nowrap
*/

View File

@ -0,0 +1,203 @@
/* ppc64le-linux.elf-fold.S -- linkage to C code to process ELF binary
*
* This file is part of the UPX executable compressor.
*
* Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer
* Copyright (C) 1996-2013 Laszlo Molnar
* Copyright (C) 2000-2013 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> <ml1050@users.sourceforge.net>
*
* John F. Reiser
* <jreiser@users.sourceforge.net>
*/
#include "arch/ppc64le/64/macros.S"
#include "arch/ppc64le/64/ppc_regs.h"
#define szElf64_Ehdr 0x40
#define szElf64_Phdr 0x38
sz_b_info= 12
sz_unc= 0
sz_cpr= 4
sz_l_info= 12
sz_p_info= 12
OVERHEAD= 2048
LINKAREA= 6*8 // (sp,pc,cr, xx,yy.zz) save area per calling convention
/* In:
r31= &decompress; also 8+ (char *)&(#bytes which preceed &-8(r31)
*/
fold_begin:
call L90
#include "arch/ppc64le/64/bxx.S"
/* The SysV convention for argument registers after execve is nice:
a0= argc
a1= argv
a2= envp
a3= auxvp
a4= fini
sp= ~0xf & (-2*4 + (void *)&argc) // 0(sp): old_sp, pc
Instead, Linux gives only
sp= &{argc,argv...,0,env...,0,auxv...,strings} // 16-byte aligned?
We must figure out the rest, particularly auxvp.
*/
zfind:
ld t0,0(a6) // parameters are 16byte aligned
addi a6,a6,8
cmpi cr7,t0,0; bne+ cr7,zfind
ret
L90:
la sp,LINKAREA(sp) // trim save area used by decompressor
mflr a5 // &ppcbxx: f_unfilter
ld a6,0(sp) // sp at execve
call zfind // a6= &env
call zfind // a6= &Elf64_auxv
lwz a1,-8(r31) // #bytes which preceed -8(r31)
rlwinm r30,a5,0,0,31-12 // r30= &this_page
mr a4,r31 // &decompress: f_expand
subf r29,a1,r31 // 8+ (char *)&our_Elf64_Ehdr
la a2,-OVERHEAD(sp) // &Elf64_Ehdr temporary space
addi r29,r29,-8 // &our_Elf64_Ehdr
addi a1,a1,-(szElf64_Ehdr + 2*szElf64_Phdr)
addi a0,r29,(szElf64_Ehdr + 2*szElf64_Phdr) // &{l_info; p_info; b_info}
addi sp,sp,-(LINKAREA+OVERHEAD)
lwz a3,sz_unc+sz_p_info+sz_l_info(a0) // sz_elf_headers
call upx_main // Out: a0= entry
/* entry= upx_main(l_info *a0, total_size a1, Elf64_Ehdr *a2, sz_ehdr a3,
f_decomp a4, f_unf a5, Elf64_auxv_t *a6)
*/
mr r31,a0 // save &entry
mr a0,r29 // &our_Elf64_Ehdr
subf a1,r29,r30 // size
call munmap // unmap compressed program; /proc/self/exe disappears
mtlr r31 // entry address
// lmw r2,4+LINKAREA+OVERHEAD(sp) // restore registers r2 thru r31 32bits load
ld 2,2*8-8+LINKAREA+OVERHEAD(sp)
ld 3,3*8-8+LINKAREA+OVERHEAD(sp)
ld 4,4*8-8+LINKAREA+OVERHEAD(sp)
ld 5,5*8-8+LINKAREA+OVERHEAD(sp)
ld 6,6*8-8+LINKAREA+OVERHEAD(sp)
ld 7,7*8-8+LINKAREA+OVERHEAD(sp)
ld 8,8*8-8+LINKAREA+OVERHEAD(sp)
ld 9,9*8-8+LINKAREA+OVERHEAD(sp)
ld 10,10*8-8+LINKAREA+OVERHEAD(sp)
ld 11,11*8-8+LINKAREA+OVERHEAD(sp)
ld 12,12*8-8+LINKAREA+OVERHEAD(sp)
ld 13,13*8-8+LINKAREA+OVERHEAD(sp)
ld 14,14*8-8+LINKAREA+OVERHEAD(sp)
ld 15,15*8-8+LINKAREA+OVERHEAD(sp)
ld 16,16*8-8+LINKAREA+OVERHEAD(sp)
ld 17,17*8-8+LINKAREA+OVERHEAD(sp)
ld 18,18*8-8+LINKAREA+OVERHEAD(sp)
ld 19,19*8-8+LINKAREA+OVERHEAD(sp)
ld 20,20*8-8+LINKAREA+OVERHEAD(sp)
ld 21,21*8-8+LINKAREA+OVERHEAD(sp)
ld 22,22*8-8+LINKAREA+OVERHEAD(sp)
ld 23,23*8-8+LINKAREA+OVERHEAD(sp)
ld 24,24*8-8+LINKAREA+OVERHEAD(sp)
ld 25,25*8-8+LINKAREA+OVERHEAD(sp)
ld 26,26*8-8+LINKAREA+OVERHEAD(sp)
ld 27,27*8-8+LINKAREA+OVERHEAD(sp)
ld 28,28*8-8+LINKAREA+OVERHEAD(sp)
ld 29,29*8-8+LINKAREA+OVERHEAD(sp)
ld 30,30*8-8+LINKAREA+OVERHEAD(sp)
ld 31,31*8-8+LINKAREA+OVERHEAD(sp)
ld r1,LINKAREA+OVERHEAD(sp) // restore r1; deallocate space
/*
ld 2,2*8-8(r1)
ld 3,3*8-8(r1)
ld 4,4*8-8(r1)
ld 5,5*8-8(r1)
ld 6,6*8-8(r1)
ld 7,7*8-8(r1)
ld 8,8*8-8(r1)
ld 9,9*8-8(r1)
ld 10,10*8-8(r1)
ld 11,11*8-8(r1)
ld 12,12*8-8(r1)
ld 13,13*8-8(r1)
ld 14,14*8-8(r1)
ld 15,15*8-8(r1)
ld 16,16*8-8(r1)
ld 17,17*8-8(r1)
ld 18,18*8-8(r1)
ld 19,19*8-8(r1)
ld 20,20*8-8(r1)
ld 21,21*8-8(r1)
ld 22,22*8-8(r1)
ld 23,23*8-8(r1)
ld 24,24*8-8(r1)
ld 25,25*8-8(r1)
ld 26,26*8-8(r1)
ld 27,27*8-8(r1)
ld 28,28*8-8(r1)
ld 29,29*8-8(r1)
ld 30,30*8-8(r1)
ld 31,31*8-8(r1)
*/
ret // enter /lib/ld.so.1
SYS_exit= 1
SYS_fork= 2
SYS_read= 3
SYS_write= 4
SYS_open= 5
SYS_close= 6
SYS_brk= 45
SYS_mmap= 90
SYS_munmap= 91
SYS_mprotect= 125
mmap: .globl mmap
li 0,SYS_mmap
sysgo:
sc
bns+ no_fail // 'bns': branch if No Summary[Overflow]
li a0,-1 // failure; IGNORE errno
no_fail:
ret
exit: .globl exit
li 0,SYS_exit; b sysgo
read: .globl read
li 0,SYS_read; b sysgo
open: .globl open
li 0,SYS_open; b sysgo
close: .globl close
li 0,SYS_close; b sysgo
mprotect: .globl mprotect
li 0,SYS_mprotect; b sysgo
munmap: .globl munmap
li 0,SYS_munmap; b sysgo
brk: .globl brk
li 0,SYS_brk; b sysgo
/*
vi:ts=8:et:nowrap
*/

View File

@ -0,0 +1,48 @@
/* ppc64le-linux.elf-fold.lds --
This file is part of the UPX executable compressor.
Copyright (C) 2000-2013 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
OUTPUT_FORMAT("elf64-powerpcle", "elf64-powerpcle", "elf64-powerpcle")
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
}

View File

@ -0,0 +1,355 @@
/* ppc64le-linux.elf-main.c -- stub loader for Linux ELF PowerPC64LE xecutable
This file is part of the UPX executable compressor.
Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer
Copyright (C) 1996-2013 Laszlo Molnar
Copyright (C) 2000-2013 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> <ml1050@users.sourceforge.net>
John F. Reiser
<jreiser@users.sourceforge.net>
*/
#include "include/linux.h"
/*************************************************************************
// configuration section
**************************************************************************/
// In order to make it much easier to move this code at runtime and execute
// it at an address different from it load address: there must be no
// static data, and no string constants.
#define MAX_ELF_HDR 1024 // Elf64_Ehdr + n*Elf64_Phdr must fit in this
/*************************************************************************
// "file" util
**************************************************************************/
typedef struct {
size_t size; // must be first to match size[0] uncompressed size
char *buf;
} Extent;
static void
xread(Extent *x, char *buf, size_t count)
{
char *p=x->buf, *q=buf;
size_t j;
if (x->size < count) {
exit(127);
}
for (j = count; 0!=j--; ++p, ++q) {
*q = *p;
}
x->buf += count;
x->size -= count;
}
/*************************************************************************
// util
**************************************************************************/
#if 1 //{ save space
#define ERR_LAB error: exit(127);
#define err_exit(a) goto error
#else //}{ save debugging time
#define ERR_LAB /*empty*/
static void
err_exit(int a)
{
(void)a; // debugging convenience
exit(127);
}
#endif //}
/*************************************************************************
// UPX & NRV stuff
**************************************************************************/
typedef void f_unfilter(
nrv_byte *, // also addvalue
nrv_uint,
unsigned cto8, // junk in high 24 bits
unsigned ftid
);
typedef int f_expand(
const nrv_byte *, nrv_uint,
nrv_byte *, nrv_uint *, unsigned );
static void
unpackExtent(
Extent *const xi, // input
Extent *const xo, // output
f_expand *const f_decompress,
f_unfilter *f_unf
)
{
while (xo->size) {
struct b_info h;
// Note: if h.sz_unc == h.sz_cpr then the block was not
// compressible and is stored in its uncompressed form.
// Read and check block sizes.
xread(xi, (char *)&h, sizeof(h));
if (h.sz_unc == 0) { // uncompressed size 0 -> EOF
if (h.sz_cpr != UPX_MAGIC_LE32) // h.sz_cpr must be h->magic
err_exit(2);
if (xi->size != 0) // all bytes must be written
err_exit(3);
break;
}
if (h.sz_cpr <= 0) {
err_exit(4);
ERR_LAB
}
if (h.sz_cpr > h.sz_unc
|| h.sz_unc > xo->size ) {
err_exit(5);
}
// Now we have:
// assert(h.sz_cpr <= h.sz_unc);
// assert(h.sz_unc > 0 && h.sz_unc <= blocksize);
// assert(h.sz_cpr > 0 && h.sz_cpr <= blocksize);
if (h.sz_cpr < h.sz_unc) { // Decompress block
nrv_uint out_len = h.sz_unc; // EOF for lzma
int const j = (*f_decompress)((const unsigned char *)xi->buf, h.sz_cpr,
(unsigned char *)xo->buf, &out_len, h.b_method);
if (j != 0 || out_len != (nrv_uint)h.sz_unc)
err_exit(7);
if (h.b_ftid!=0 && f_unf) { // have filter
(*f_unf)((unsigned char *)xo->buf, out_len, h.b_cto8, h.b_ftid);
}
xi->buf += h.sz_cpr;
xi->size -= h.sz_cpr;
}
else { // copy literal block
xread(xi, xo->buf, h.sz_cpr);
}
xo->buf += h.sz_unc;
xo->size -= h.sz_unc;
}
}
#if 0
static void
upx_bzero(char *p, size_t len)
{
if (len) do {
*p++= 0;
} while (--len);
}
#define bzero upx_bzero
#endif
static void
auxv_up(Elf64_auxv_t *av, unsigned type, unsigned const value)
{
if (av)
for (;; ++av) {
if (av->a_type==type || (av->a_type==AT_IGNORE && type!=AT_NULL)) {
av->a_type = type;
av->a_un.a_val = value;
return;
}
}
}
// The PF_* and PROT_* bits are {1,2,4}; the conversion table fits in 32 bits.
#define REP8(x) \
((x)|((x)<<4)|((x)<<8)|((x)<<12)|((x)<<16)|((x)<<20)|((x)<<24)|((x)<<28))
#define EXP8(y) \
((1&(y)) ? 0xf0f0f0f0 : (2&(y)) ? 0xff00ff00 : (4&(y)) ? 0xffff0000 : 0)
#define PF_TO_PROT(pf) \
((PROT_READ|PROT_WRITE|PROT_EXEC) & ( \
( (REP8(PROT_EXEC ) & EXP8(PF_X)) \
|(REP8(PROT_READ ) & EXP8(PF_R)) \
|(REP8(PROT_WRITE) & EXP8(PF_W)) \
) >> ((pf & (PF_R|PF_W|PF_X))<<2) ))
// Find convex hull of PT_LOAD (the minimal interval which covers all PT_LOAD),
// and mmap that much, to be sure that a kernel using exec-shield-randomize
// won't place the first piece in a way that leaves no room for the rest.
static unsigned long // returns relocation constant
xfind_pages(unsigned mflags, Elf64_Phdr const *phdr, int phnum,
char **const p_brk
)
{
size_t lo= ~0, hi= 0, szlo= 0;
char *addr;
mflags += MAP_PRIVATE | MAP_ANONYMOUS | MAP_DENYWRITE; // '+' can optimize better than '|'
for (; --phnum>=0; ++phdr) if (PT_LOAD==phdr->p_type) {
if (phdr->p_vaddr < lo) {
lo = phdr->p_vaddr;
szlo = phdr->p_filesz;
}
if (hi < (phdr->p_memsz + phdr->p_vaddr)) {
hi = phdr->p_memsz + phdr->p_vaddr;
}
}
szlo += ~PAGE_MASK & lo; // page fragment on lo edge
lo -= ~PAGE_MASK & lo; // round down to page boundary
hi = PAGE_MASK & (hi - lo - PAGE_MASK -1); // page length
szlo = PAGE_MASK & (szlo - PAGE_MASK -1); // page length
addr = mmap((void *)lo, hi, PROT_NONE, mflags, -1, 0);
*p_brk = hi + addr; // the logical value of brk(0)
//mprotect(szlo + addr, hi - szlo, PROT_NONE); // but keep the frames!
return (unsigned long)addr - lo;
}
static Elf64_Addr // entry address
do_xmap(
Elf64_Ehdr const *const ehdr,
Extent *const xi,
int const fdi,
Elf64_auxv_t *const av,
f_expand *const f_decompress,
f_unfilter *const f_unf
)
{
Elf64_Phdr const *phdr = (Elf64_Phdr const *) (ehdr->e_phoff +
(char const *)ehdr);
char *v_brk;
unsigned long const reloc = xfind_pages(
((ET_DYN!=ehdr->e_type) ? MAP_FIXED : 0), phdr, ehdr->e_phnum, &v_brk);
int j;
for (j=0; j < ehdr->e_phnum; ++phdr, ++j)
if (xi && PT_PHDR==phdr->p_type) {
auxv_up(av, AT_PHDR, phdr->p_vaddr + reloc);
} else
if (PT_LOAD==phdr->p_type) {
unsigned const prot = PF_TO_PROT(phdr->p_flags);
Extent xo;
size_t mlen = xo.size = phdr->p_filesz;
char *addr = xo.buf = (char *)phdr->p_vaddr;
char *haddr = phdr->p_memsz + addr;
size_t frag = (long)addr &~ PAGE_MASK;
mlen += frag;
addr -= frag;
addr += reloc;
haddr += reloc;
if (addr != mmap(addr, mlen, prot | (xi ? PROT_WRITE : 0),
MAP_FIXED | MAP_PRIVATE | (xi ? MAP_ANONYMOUS : 0),
(xi ? -1 : fdi), phdr->p_offset - frag) ) {
err_exit(8);
}
if (xi) {
unpackExtent(xi, &xo, f_decompress, f_unf);
}
// Linux does not fixup the low end, so neither do we.
//if (PROT_WRITE & prot) {
// bzero(addr, frag); // fragment at lo end
//}
frag = (-mlen) &~ PAGE_MASK; // distance to next page boundary
/* if (! (PROT_WRITE & prot)) {
bzero(mlen+addr, frag); // fragment at hi end
} */
if (xi) {
if (0!=mprotect(addr, mlen, prot)) {
err_exit(10);
ERR_LAB
}
}
addr += mlen + frag; /* page boundary on hi end */
if (addr < haddr) { // need pages for .bss
if (addr != mmap(addr, haddr - addr, prot,
MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS, -1, 0 ) ) {
err_exit(9);
}
}
}
return ehdr->e_entry + reloc;
}
/*************************************************************************
// upx_main - called by our entry code
**************************************************************************/
void *upx_main(
struct l_info const *const li,
size_t const sz_compressed, // total length
Elf64_Ehdr *const ehdr, // temp char[sz_ehdr] for decompressing
size_t const sz_ehdr,
f_expand *const f_decompress,
f_unfilter *const f_unf,
Elf64_auxv_t *const av
)
{
Elf64_Phdr const *phdr = (Elf64_Phdr const *)(1+ ehdr);
Elf64_Addr entry;
Extent xi, xo, xi0;
xi.buf = CONST_CAST(char *, 1+ (struct p_info const *)(1+ li)); // &b_info
xi.size = sz_compressed - (sizeof(struct l_info) + sizeof(struct p_info));
xo.buf = (char *)ehdr;
xo.size = ((struct b_info const *)xi.buf)->sz_unc;
xi0 = xi;
ACC_UNUSED(sz_ehdr);
// ehdr = Uncompress Ehdr and Phdrs
unpackExtent(&xi, &xo, f_decompress, 0); // never filtered?
// AT_PHDR.a_un.a_val is set again by do_xmap if PT_PHDR is present.
auxv_up(av, (unsigned ) AT_PHDR , (long )(1+(Elf64_Ehdr *)phdr->p_vaddr));
auxv_up(av, (unsigned ) AT_PHNUM , ehdr->e_phnum);
auxv_up(av, (unsigned ) AT_ENTRY , (unsigned ) ehdr->e_entry);
//auxv_up(av, AT_PHENT , ehdr->e_phentsize); /* this can never change */
//auxv_up(av, AT_PAGESZ, PAGE_SIZE); /* ld-linux.so.2 does not need this */
entry = do_xmap(ehdr, &xi0, 0, av, f_decompress, f_unf);
auxv_up(av, AT_ENTRY , entry);
{ // Map PT_INTERP program interpreter
int j;
for (j=0; j < ehdr->e_phnum; ++phdr, ++j) if (PT_INTERP==phdr->p_type) {
char const *const iname = (char const *)phdr->p_vaddr;
int const fdi = open(iname, O_RDONLY, 0);
if (0 > fdi) {
err_exit(18);
}
if (MAX_ELF_HDR!=read(fdi, (void *)ehdr, MAX_ELF_HDR)) {
ERR_LAB
err_exit(19);
}
entry = do_xmap(ehdr, 0, fdi, 0, 0, 0);
close(fdi);
}
}
return (void *)entry;
}
/*
vi:ts=4:et:nowrap
*/

View File

@ -0,0 +1,31 @@
/*
; ppc64le-linux.kernel.vmlinux-head.S -- set up stack for vmlinux/powerpc format
;
; This file is part of the UPX executable compressor.
;
; Copyright (C) 2007-2013 John 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.
;
; John Reiser
; <jreiser@users.sourceforge.net>
*/
mflr 31
bl LINUX000
// vi:ts=8:et:nowrap

View File

@ -0,0 +1,149 @@
/*
; ppc64le-linux.kernel.vmlinux.S -- loader & decompressor for the vmlinux/ppc64le format
;
; This file is part of the UPX executable compressor.
;
; Copyright (C) 1996-2013 Markus Franz Xaver Johannes Oberhumer
; Copyright (C) 1996-2013 Laszlo Molnar
; Copyright (C) 2004-2013 John 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> <ml1050@users.sourceforge.net>
;
; John Reiser
; <jreiser@users.sourceforge.net>
*/
#include "arch/ppc64le/64/macros.S"
#include "arch/ppc64le/64/ppc_regs.h"
// offsets in struct b_info
sz_unc = 0
sz_cpr = 4
b_method = 8
b_ftid = 9
b_cto8 = 10
sz_b_info = 12
// ========== ENTRY POINT
section LINUX000 // adjust parameters; call decompressor
b uncompress
b unfilter
section LINUX010 // call unfilter
.long filter_length
.long filter_cto
section LINUX020 // adjust return value
// ========== UNFILTER
unfilter:
//section ctok32.00
#include "arch/ppc64le/64/bxx.S"
// ========== DECOMPRESSION
section LINUX030 // decompressor
uncompress:
SZ_DLINE=128 # size of data cache line in Apple G5
/* register assingments for NRV algorithms */
#define hibit r0 /* holds 0x80000000 during decompress */
#define src a0
#define lsrc a1
#define dst a2
#define ldst a3 /* Out: actually a reference: &len_dst */
#define meth a4
#define off a4
#define len a5
#define bits a6
#define disp a7
section NRV2B
#include "arch/ppc64le/64/nrv2b_d.S"
section NRV2D
#include "arch/ppc64le/64/nrv2d_d.S"
section NRV2E
#include "arch/ppc64le/64/nrv2e_d.S"
section NRV_TAIL
eof_nrv:
#define dst0 a4
#define tmp a1
ld dst0,0(ldst) // original dst
mtlr t3 // return address
subf a0,lsrc,src
subf tmp,dst0,dst // -1+ dst length
addi a0,a0,1 // return 0: good; else: bad [+1: correct for lbzu]
addi tmp,tmp,1 // dst length
std tmp,0(ldst)
#undef tmp
// CACHELINE=32 is the observed minimum line size of any cache.
// Some caches may have larger lines, but it is cumbersome to lookup
// {AT_DCACHEBSIZE, AT_ICACHEBSIZE, AT_UCACHEBSIZE: /usr/include/elf.h},
// then save the correct size in a variable {where to put it?}, or to modify
// the two instructions here. If a cache has larger lines, then we expect
// that the second dcbst (or icbi) on a the same line will be fast.
// If not, then too bad.
section CFLUSH // In: a2=dst= &highest stored byte; a4=dst0= &lowest stored byte
CACHELINE=32
ori dst0,dst0,-1+ CACHELINE // highest addr on cache line
cfl_nrv:
dcbst 0,dst0 // initiate store (modified) cacheline to memory
cmpl cr0,dst0,dst // did we cover the highest-addressed byte?
icbi 0,dst0 // discard instructions from cacheline
addi dst0,dst0,CACHELINE // highest addr on next line
blt cr0,cfl_nrv // not done yet
#undef dst0
sync // wait for all memory operations to finish
isync // discard prefetched instructions (if any)
cfl_ret:
ret
#undef hibit
#undef src
#undef lsrc
#undef dst
#undef ldst
#undef meth
#undef off
#undef len
#undef bits
#undef disp
section LZMA
#include "arch/ppc64le/64/lzma_d.S"
// ========== IDENT
#include "include/header.S"
// vi:ts=8:et:nowrap