mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
new format UPX_F_LINUX_ELF32_MIPSEL [work in progress]
This commit is contained in:
parent
c3363712d9
commit
573009eeb6
|
@ -456,6 +456,7 @@ private:
|
|||
#define UPX_F_VMLINUX_AMD64 27
|
||||
#define UPX_F_VMLINUX_ARMEL 28
|
||||
#define UPX_F_MACH_i386 29
|
||||
#define UPX_F_LINUX_ELF32_MIPSEL 30
|
||||
|
||||
#define UPX_F_PLAIN_TEXT 127
|
||||
|
||||
|
|
|
@ -68,10 +68,13 @@
|
|||
};
|
||||
enum { // e_machine
|
||||
EM_386 = 3,
|
||||
EM_MIPS = 8,
|
||||
EM_MIPS_RS3_LE = 10, /* MIPS R3000 little-endian */
|
||||
EM_PPC = 20,
|
||||
EM_PPC64 = 21,
|
||||
EM_ARM = 40,
|
||||
EM_X86_64 = 62
|
||||
|
||||
};
|
||||
enum { // e_version
|
||||
EV_CURRENT = 1
|
||||
|
|
229
src/p_lx_elf.cpp
229
src/p_lx_elf.cpp
|
@ -141,6 +141,7 @@ PackLinuxElf64::checkEhdr(Elf64_Ehdr const *ehdr) const
|
|||
PackLinuxElf::PackLinuxElf(InputFile *f)
|
||||
: super(f), file_image(NULL), dynstr(NULL),
|
||||
sz_phdrs(0), sz_elf_hdrs(0), sz_pack2(0),
|
||||
lg2_page(12), page_size(1u<<lg2_page),
|
||||
e_machine(0), ei_class(0), ei_data(0), ei_osabi(0), osabi_note(NULL)
|
||||
{
|
||||
}
|
||||
|
@ -201,7 +202,7 @@ void PackLinuxElf::defineSymbols(Filter const *)
|
|||
}
|
||||
|
||||
PackLinuxElf32::PackLinuxElf32(InputFile *f)
|
||||
: super(f), phdri(NULL),
|
||||
: super(f), phdri(NULL), page_mask(~0u<<lg2_page),
|
||||
dynseg(NULL), hashtab(NULL), dynsym(NULL)
|
||||
{
|
||||
}
|
||||
|
@ -212,7 +213,7 @@ PackLinuxElf32::~PackLinuxElf32()
|
|||
}
|
||||
|
||||
PackLinuxElf64::PackLinuxElf64(InputFile *f)
|
||||
: super(f), phdri(NULL)
|
||||
: super(f), phdri(NULL), page_mask(~0ull<<lg2_page)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -245,6 +246,12 @@ PackLinuxElf32armBe::getCompressionMethods(int method, int level) const
|
|||
return Packer::getDefaultCompressionMethods_8(method, level);
|
||||
}
|
||||
|
||||
int const *
|
||||
PackLinuxElf32mipsel::getCompressionMethods(int method, int level) const
|
||||
{
|
||||
return Packer::getDefaultCompressionMethods_le32(method, level);
|
||||
}
|
||||
|
||||
int const *
|
||||
PackLinuxElf32ppc::getFilters() const
|
||||
{
|
||||
|
@ -288,6 +295,11 @@ void PackLinuxElf32armBe::updateLoader(OutputFile *fo)
|
|||
ARM_updateLoader(fo);
|
||||
}
|
||||
|
||||
void PackLinuxElf32mipsel::updateLoader(OutputFile *fo)
|
||||
{
|
||||
ARM_updateLoader(fo); // not ARM specific; (no 32-bit immediates)
|
||||
}
|
||||
|
||||
void PackLinuxElf32::updateLoader(OutputFile *fo)
|
||||
{
|
||||
set_native32(&elfout.ehdr.e_entry, fo->getBytesWritten() +
|
||||
|
@ -560,8 +572,6 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
|
|||
}
|
||||
}
|
||||
}
|
||||
#define PAGE_MASK (~0u<<12)
|
||||
#define PAGE_SIZE (-PAGE_MASK)
|
||||
lsize = /*getLoaderSize()*/ 64 * 1024; // upper bound; avoid circularity
|
||||
acc_uint64l_t lo_va_stub = get_native64(&elfout.phdr[0].p_vaddr);
|
||||
acc_uint64l_t adrc;
|
||||
|
@ -572,7 +582,7 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
|
|||
unsigned lenm;
|
||||
unsigned lenu;
|
||||
len += (7&-lsize) + lsize;
|
||||
bool const is_big = (lo_va_user < (lo_va_stub + len + 2*PAGE_SIZE));
|
||||
bool const is_big = (lo_va_user < (lo_va_stub + len + 2*page_size));
|
||||
if (is_big) {
|
||||
set_native64( &elfout.ehdr.e_entry,
|
||||
get_native64(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
|
||||
|
@ -581,10 +591,10 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
|
|||
lo_va_stub = lo_va_user;
|
||||
adrc = lo_va_stub;
|
||||
adrm = getbrk(phdri, get_native16(&ehdri.e_phnum));
|
||||
adru = PAGE_MASK & (~PAGE_MASK + adrm); // round up to page boundary
|
||||
adru = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||
adrx = adru + hlen;
|
||||
lenm = PAGE_SIZE + len;
|
||||
lenu = PAGE_SIZE + len;
|
||||
lenm = page_size + len;
|
||||
lenu = page_size + len;
|
||||
cntc = len >> 3; // over-estimate; corrected at runtime
|
||||
}
|
||||
else {
|
||||
|
@ -592,12 +602,12 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
|
|||
adrc = adrm;
|
||||
adru = lo_va_stub;
|
||||
adrx = lo_va_stub + hlen;
|
||||
lenm = PAGE_SIZE;
|
||||
lenu = PAGE_SIZE + len;
|
||||
lenm = page_size;
|
||||
lenu = page_size + len;
|
||||
cntc = 0;
|
||||
}
|
||||
adrm = PAGE_MASK & (~PAGE_MASK + adrm); // round up to page boundary
|
||||
adrc = PAGE_MASK & (~PAGE_MASK + adrc); // round up to page boundary
|
||||
adrm = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||
adrc = page_mask & (~page_mask + adrc); // round up to page boundary
|
||||
|
||||
linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
|
||||
|
||||
|
@ -614,8 +624,6 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
|
|||
#undef EI_NIDENT
|
||||
linker->defineSymbol("LENM", lenm); // len for map
|
||||
linker->defineSymbol("ADRM", adrm); // addr for map
|
||||
#undef PAGE_SIZE
|
||||
#undef PAGE_MASK
|
||||
|
||||
//linker->dumpSymbols(); // debug
|
||||
}
|
||||
|
@ -734,6 +742,19 @@ PackLinuxElf32armLe::buildLoader(Filter const *ft)
|
|||
stub_arm_linux_elf_fold, sizeof(stub_arm_linux_elf_fold), ft);
|
||||
}
|
||||
|
||||
static const
|
||||
#include "stub/mipsel.r3000-linux.elf-entry.h"
|
||||
static const
|
||||
#include "stub/mipsel.r3000-linux.elf-fold.h"
|
||||
|
||||
void
|
||||
PackLinuxElf32mipsel::buildLoader(Filter const *ft)
|
||||
{
|
||||
buildLinuxLoader(
|
||||
stub_mipsel_r3000_linux_elf_entry, sizeof(stub_mipsel_r3000_linux_elf_entry),
|
||||
stub_mipsel_r3000_linux_elf_fold, sizeof(stub_mipsel_r3000_linux_elf_fold), ft);
|
||||
}
|
||||
|
||||
static const
|
||||
#include "stub/powerpc-linux.elf-entry.h"
|
||||
static const
|
||||
|
@ -993,6 +1014,10 @@ PackLinuxElf32::generateElfHdr(
|
|||
cprElfHdr3 *const h3 = (cprElfHdr3 *)&elfout;
|
||||
memcpy(h3, proto, sizeof(*h3)); // reads beyond, but OK
|
||||
h3->ehdr.e_ident[Elf32_Ehdr::EI_OSABI] = ei_osabi;
|
||||
if (Elf32_Ehdr::EM_MIPS==e_machine) { // MIPS R3000 FIXME
|
||||
h3->ehdr.e_ident[Elf32_Ehdr::EI_OSABI] = Elf32_Ehdr::ELFOSABI_NONE;
|
||||
h3->ehdr.e_flags = ehdri.e_flags;
|
||||
}
|
||||
|
||||
assert(get_native32(&h2->ehdr.e_phoff) == sizeof(Elf32_Ehdr));
|
||||
h2->ehdr.e_shoff = 0;
|
||||
|
@ -1006,19 +1031,33 @@ PackLinuxElf32::generateElfHdr(
|
|||
set_native32(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize;
|
||||
h2->phdr[0].p_memsz = h2->phdr[0].p_filesz;
|
||||
|
||||
unsigned const e_phnum = get_native16(&ehdri.e_phnum);
|
||||
Elf32_Phdr const *phdr = phdri;
|
||||
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
|
||||
if (phdr->PT_LOAD32 == get_native32(&phdr->p_type)) {
|
||||
unsigned x = phdr->p_align >> lg2_page;
|
||||
while (x>>=1) {
|
||||
++lg2_page;
|
||||
}
|
||||
}
|
||||
}
|
||||
page_size = 1u<<lg2_page;
|
||||
page_mask = ~0u<<lg2_page;
|
||||
for (unsigned j=0; j < 3; ++j) {
|
||||
set_native32(&h3->phdr[j].p_align, page_size);
|
||||
}
|
||||
|
||||
// Info for OS kernel to set the brk()
|
||||
if (brka) {
|
||||
#define PAGE_MASK (~0u<<12)
|
||||
// linux-2.6.14 binfmt_elf.c: SIGKILL if (0==.p_memsz) on a page boundary
|
||||
unsigned const brkb = brka | ((0==(~PAGE_MASK & brka)) ? 0x20 : 0);
|
||||
unsigned const brkb = brka | ((0==(~page_mask & brka)) ? 0x20 : 0);
|
||||
set_native32(&h2->phdr[1].p_type, PT_LOAD32); // be sure
|
||||
set_native32(&h2->phdr[1].p_offset, ~PAGE_MASK & brkb);
|
||||
set_native32(&h2->phdr[1].p_offset, ~page_mask & brkb);
|
||||
set_native32(&h2->phdr[1].p_vaddr, brkb);
|
||||
set_native32(&h2->phdr[1].p_paddr, brkb);
|
||||
h2->phdr[1].p_filesz = 0;
|
||||
h2->phdr[1].p_memsz = 0;
|
||||
set_native32(&h2->phdr[1].p_flags, Elf32_Phdr::PF_R | Elf32_Phdr::PF_W);
|
||||
#undef PAGE_MASK
|
||||
}
|
||||
if (ph.format==getFormat()) {
|
||||
assert(2==get_native16(&h2->ehdr.e_phnum));
|
||||
|
@ -1057,16 +1096,14 @@ PackOpenBSDElf32x86::generateElfHdr(
|
|||
set_native32(&h3->phdr[0].p_filesz, sizeof(*h3)+sizeof(elfnote)); // + identsize;
|
||||
h3->phdr[0].p_memsz = h3->phdr[0].p_filesz;
|
||||
|
||||
#define PAGE_MASK (~0u<<12)
|
||||
unsigned const brkb = brka | ((0==(~PAGE_MASK & brka)) ? 0x20 : 0);
|
||||
unsigned const brkb = brka | ((0==(~page_mask & brka)) ? 0x20 : 0);
|
||||
set_native32(&h3->phdr[1].p_type, PT_LOAD32); // be sure
|
||||
set_native32(&h3->phdr[1].p_offset, ~PAGE_MASK & brkb);
|
||||
set_native32(&h3->phdr[1].p_offset, ~page_mask & brkb);
|
||||
set_native32(&h3->phdr[1].p_vaddr, brkb);
|
||||
set_native32(&h3->phdr[1].p_paddr, brkb);
|
||||
h3->phdr[1].p_filesz = 0;
|
||||
h3->phdr[1].p_memsz = 0;
|
||||
set_native32(&h3->phdr[1].p_flags, Elf32_Phdr::PF_R | Elf32_Phdr::PF_W);
|
||||
#undef PAGE_MASK
|
||||
|
||||
set_native32(&h3->phdr[2].p_type, Elf32_Phdr::PT_NOTE);
|
||||
set_native32(&h3->phdr[2].p_offset, note_offset);
|
||||
|
@ -1118,19 +1155,33 @@ PackLinuxElf64::generateElfHdr(
|
|||
set_native64(&h2->phdr[0].p_filesz, sizeof(*h2)); // + identsize;
|
||||
h2->phdr[0].p_memsz = h2->phdr[0].p_filesz;
|
||||
|
||||
unsigned const e_phnum = get_native16(&ehdri.e_phnum);
|
||||
Elf64_Phdr const *phdr = phdri;
|
||||
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
|
||||
if (phdr->PT_LOAD64 == get_native64(&phdr->p_type)) {
|
||||
unsigned x = phdr->p_align >> lg2_page;
|
||||
while (x>>=1) {
|
||||
++lg2_page;
|
||||
}
|
||||
}
|
||||
}
|
||||
page_size = 1u <<lg2_page;
|
||||
page_mask = ~0ull<<lg2_page;
|
||||
for (unsigned j=0; j < 3; ++j) {
|
||||
set_native64(&h3->phdr[j].p_align, page_size);
|
||||
}
|
||||
|
||||
// Info for OS kernel to set the brk()
|
||||
if (brka) {
|
||||
#define PAGE_MASK (~0ul<<12)
|
||||
// linux-2.6.14 binfmt_elf.c: SIGKILL if (0==.p_memsz) on a page boundary
|
||||
unsigned const brkb = brka | ((0==(~PAGE_MASK & brka)) ? 0x20 : 0);
|
||||
unsigned const brkb = brka | ((0==(~page_mask & brka)) ? 0x20 : 0);
|
||||
set_native32(&h2->phdr[1].p_type, PT_LOAD32); // be sure
|
||||
set_native64(&h2->phdr[1].p_offset, ~PAGE_MASK & brkb);
|
||||
set_native64(&h2->phdr[1].p_offset, ~page_mask & brkb);
|
||||
set_native64(&h2->phdr[1].p_vaddr, brkb);
|
||||
set_native64(&h2->phdr[1].p_paddr, brkb);
|
||||
h2->phdr[1].p_filesz = 0;
|
||||
h2->phdr[1].p_memsz = 0;
|
||||
set_native32(&h2->phdr[1].p_flags, Elf64_Phdr::PF_R | Elf64_Phdr::PF_W);
|
||||
#undef PAGE_MASK
|
||||
}
|
||||
if (ph.format==getFormat()) {
|
||||
assert(2==get_native16(&h2->ehdr.e_phnum));
|
||||
|
@ -1187,6 +1238,14 @@ void PackLinuxElf32armBe::pack1(OutputFile *fo, Filter &ft)
|
|||
generateElfHdr(fo, &h3, getbrk(phdri, get_native16(&ehdri.e_phnum)) );
|
||||
}
|
||||
|
||||
void PackLinuxElf32mipsel::pack1(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
super::pack1(fo, ft);
|
||||
cprElfHdr3 h3;
|
||||
memcpy(&h3, stub_mipsel_r3000_linux_elf_fold, sizeof(Elf32_Ehdr) + 2*sizeof(Elf32_Phdr));
|
||||
generateElfHdr(fo, &h3, getbrk(phdri, get_native16(&ehdri.e_phnum)) );
|
||||
}
|
||||
|
||||
void PackLinuxElf32ppc::pack1(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
super::pack1(fo, ft);
|
||||
|
@ -1443,12 +1502,17 @@ PackLinuxElf32armLe::getFilters() const
|
|||
return ARM_getFilters(false);
|
||||
}
|
||||
|
||||
const int *
|
||||
PackLinuxElf32mipsel::getFilters() const
|
||||
{
|
||||
static const int f_none[] = { FT_END };
|
||||
return f_none;
|
||||
}
|
||||
|
||||
void PackLinuxElf32::ARM_defineSymbols(Filter const * /*ft*/)
|
||||
{
|
||||
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
|
||||
|
||||
#define PAGE_MASK (~0u<<12)
|
||||
#define PAGE_SIZE (-PAGE_MASK)
|
||||
lsize = /*getLoaderSize()*/ 4 * 1024; // upper bound; avoid circularity
|
||||
unsigned const lo_va_user = 0x8000; // XXX
|
||||
unsigned lo_va_stub = get_native32(&elfout.phdr[0].p_vaddr);
|
||||
|
@ -1465,17 +1529,15 @@ void PackLinuxElf32::ARM_defineSymbols(Filter const * /*ft*/)
|
|||
lo_va_stub = lo_va_user;
|
||||
adrc = lo_va_stub;
|
||||
adrm = getbrk(phdri, get_native16(&ehdri.e_phnum));
|
||||
adrx = hlen + (PAGE_MASK & (~PAGE_MASK + adrm)); // round up to page boundary
|
||||
adrx = hlen + (page_mask & (~page_mask + adrm)); // round up to page boundary
|
||||
}
|
||||
adrm = PAGE_MASK & (~PAGE_MASK + adrm); // round up to page boundary
|
||||
adrc = PAGE_MASK & (~PAGE_MASK + adrc); // round up to page boundary
|
||||
adrm = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||
adrc = page_mask & (~page_mask + adrc); // round up to page boundary
|
||||
|
||||
linker->defineSymbol("CPR0", 4+ linker->getSymbolOffset("cpr0"));
|
||||
linker->defineSymbol("LENF", 4+ linker->getSymbolOffset("end_decompress"));
|
||||
|
||||
linker->defineSymbol("ADRM", adrm); // addr for map
|
||||
#undef PAGE_SIZE
|
||||
#undef PAGE_MASK
|
||||
}
|
||||
|
||||
void PackLinuxElf32armLe::defineSymbols(Filter const *ft)
|
||||
|
@ -1488,6 +1550,82 @@ void PackLinuxElf32armBe::defineSymbols(Filter const *ft)
|
|||
ARM_defineSymbols(ft);
|
||||
}
|
||||
|
||||
void PackLinuxElf32mipsel::defineSymbols(Filter const * /*ft*/)
|
||||
{
|
||||
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
|
||||
|
||||
// We want to know if compressed data, plus stub, plus a couple pages,
|
||||
// will fit below the uncompressed program in memory. But we don't
|
||||
// know the final total compressed size yet, so use the uncompressed
|
||||
// size (total over all PT_LOAD32) as an upper bound.
|
||||
unsigned len = 0;
|
||||
unsigned lo_va_user = ~0u; // infinity
|
||||
for (int j= get_native16(&ehdri.e_phnum); --j>=0; ) {
|
||||
if (PT_LOAD32 == get_native32(&phdri[j].p_type)) {
|
||||
len += (unsigned)get_native32(&phdri[j].p_filesz);
|
||||
unsigned const va = get_native32(&phdri[j].p_vaddr);
|
||||
if (va < lo_va_user) {
|
||||
lo_va_user = va;
|
||||
}
|
||||
}
|
||||
}
|
||||
lsize = /*getLoaderSize()*/ 64 * 1024; // upper bound; avoid circularity
|
||||
unsigned lo_va_stub = get_native64(&elfout.phdr[0].p_vaddr);
|
||||
unsigned adrc;
|
||||
unsigned adrm;
|
||||
unsigned adru;
|
||||
unsigned adrx;
|
||||
unsigned cntc;
|
||||
unsigned lenm;
|
||||
unsigned lenu;
|
||||
len += (7&-lsize) + lsize;
|
||||
bool const is_big = (lo_va_user < (lo_va_stub + len + 2*page_size));
|
||||
if (is_big) {
|
||||
set_native32( &elfout.ehdr.e_entry,
|
||||
get_native32(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
|
||||
set_native32(&elfout.phdr[0].p_vaddr, lo_va_user);
|
||||
set_native32(&elfout.phdr[0].p_paddr, lo_va_user);
|
||||
lo_va_stub = lo_va_user;
|
||||
adrc = lo_va_stub;
|
||||
adrm = getbrk(phdri, get_native16(&ehdri.e_phnum));
|
||||
adru = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||
adrx = adru + hlen;
|
||||
lenm = page_size + len;
|
||||
lenu = page_size + len;
|
||||
cntc = len >> 3; // over-estimate; corrected at runtime
|
||||
}
|
||||
else {
|
||||
adrm = lo_va_stub + len;
|
||||
adrc = adrm;
|
||||
adru = lo_va_stub;
|
||||
adrx = lo_va_stub + hlen;
|
||||
lenm = page_size;
|
||||
lenu = page_size + len;
|
||||
cntc = 0;
|
||||
}
|
||||
adrm = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||
adrc = page_mask & (~page_mask + adrc); // round up to page boundary
|
||||
|
||||
linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
|
||||
linker->defineSymbol("LENX", 0x2345); // FIXME
|
||||
|
||||
// For actual moving, we need the true count, which depends on sz_pack2
|
||||
// and is not yet known. So the runtime stub detects "no move"
|
||||
// if adrm==adrc, and otherwise uses actual sz_pack2 to compute cntc.
|
||||
//linker->defineSymbol("CNTC", cntc); // count for copy
|
||||
|
||||
linker->defineSymbol("LENU", lenu); // len for unmap
|
||||
linker->defineSymbol("ADRC", adrc); // addr for copy
|
||||
linker->defineSymbol("ADRU", adru); // addr for unmap
|
||||
#define EI_NIDENT 16 /* <elf.h> */
|
||||
linker->defineSymbol("JMPU", EI_NIDENT -4 + lo_va_user); // unmap trampoline
|
||||
#undef EI_NIDENT
|
||||
linker->defineSymbol("LENM", lenm); // len for map
|
||||
linker->defineSymbol("ADRM", adrm); // addr for map
|
||||
|
||||
//linker->dumpSymbols(); // debug
|
||||
}
|
||||
|
||||
void PackLinuxElf32::pack4(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
overlay_offset = sz_elf_hdrs + sizeof(linfo);
|
||||
|
@ -1502,10 +1640,8 @@ void PackLinuxElf32::pack4(OutputFile *fo, Filter &ft)
|
|||
// tries to make .bss, which requires PF_W.
|
||||
// But strict SELinux (or PaX, grSecurity) disallows PF_W with PF_X.
|
||||
#if 0 /*{*/
|
||||
#define PAGE_MASK (~0u<<12)
|
||||
// pre-calculate for benefit of runtime disappearing act via munmap()
|
||||
set_native32(&elfout.phdr[0].p_memsz, PAGE_MASK & (~PAGE_MASK + len));
|
||||
#undef PAGE_MASK
|
||||
set_native32(&elfout.phdr[0].p_memsz, page_mask & (~page_mask + len));
|
||||
#else /*}{*/
|
||||
set_native32(&elfout.phdr[0].p_memsz, len);
|
||||
#endif /*}*/
|
||||
|
@ -1552,10 +1688,8 @@ void PackLinuxElf64::pack4(OutputFile *fo, Filter &ft)
|
|||
// tries to make .bss, which requires PF_W.
|
||||
// But strict SELinux (or PaX, grSecurity) disallows PF_W with PF_X.
|
||||
#if 0 /*{*/
|
||||
#define PAGE_MASK (~0u<<12)
|
||||
// pre-calculate for benefit of runtime disappearing act via munmap()
|
||||
set_native64(&elfout.phdr[0].p_memsz, PAGE_MASK & (~PAGE_MASK + len));
|
||||
#undef PAGE_MASK
|
||||
set_native64(&elfout.phdr[0].p_memsz, page_mask & (~page_mask + len));
|
||||
#else /*}{*/
|
||||
set_native64(&elfout.phdr[0].p_memsz, len);
|
||||
#endif /*}*/
|
||||
|
@ -1873,11 +2007,28 @@ PackLinuxElf32armLe::~PackLinuxElf32armLe()
|
|||
{
|
||||
}
|
||||
|
||||
PackLinuxElf32mipsel::PackLinuxElf32mipsel(InputFile *f) : super(f)
|
||||
{
|
||||
e_machine = Elf32_Ehdr::EM_MIPS;
|
||||
ei_class = Elf32_Ehdr::ELFCLASS32;
|
||||
ei_data = Elf32_Ehdr::ELFDATA2LSB;
|
||||
ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX;
|
||||
}
|
||||
|
||||
PackLinuxElf32mipsel::~PackLinuxElf32mipsel()
|
||||
{
|
||||
}
|
||||
|
||||
Linker* PackLinuxElf32armLe::newLinker() const
|
||||
{
|
||||
return new ElfLinkerArmLE();
|
||||
}
|
||||
|
||||
Linker* PackLinuxElf32mipsel::newLinker() const
|
||||
{
|
||||
return new ElfLinkerMipsLE();
|
||||
}
|
||||
|
||||
PackLinuxElf32armBe::PackLinuxElf32armBe(InputFile *f) : super(f)
|
||||
{
|
||||
e_machine = Elf32_Ehdr::EM_ARM;
|
||||
|
|
|
@ -70,6 +70,8 @@ protected:
|
|||
unsigned sz_phdrs; // sizeof Phdr[]
|
||||
unsigned sz_elf_hdrs; // all Elf headers
|
||||
unsigned sz_pack2; // after pack2(), before loader
|
||||
unsigned lg2_page; // log2(PAGE_SIZE)
|
||||
unsigned page_size; // 1u<<lg2_page
|
||||
|
||||
unsigned short e_machine;
|
||||
unsigned char ei_class;
|
||||
|
@ -126,6 +128,7 @@ protected:
|
|||
protected:
|
||||
Elf32_Ehdr ehdri; // from input file
|
||||
Elf32_Phdr *phdri; // for input file
|
||||
unsigned page_mask; // AND clears the offset-within-page
|
||||
|
||||
Elf32_Dyn const *dynseg; // from PT_DYNAMIC
|
||||
unsigned int const *hashtab; // from DT_HASH
|
||||
|
@ -211,6 +214,7 @@ protected:
|
|||
protected:
|
||||
Elf64_Ehdr ehdri; // from input file
|
||||
Elf64_Phdr *phdri; // for input file
|
||||
acc_uint64l_t page_mask; // AND clears the offset-within-page
|
||||
|
||||
struct cprElfHdr1 {
|
||||
Elf64_Ehdr ehdr;
|
||||
|
@ -450,6 +454,26 @@ protected:
|
|||
virtual void defineSymbols(Filter const *);
|
||||
};
|
||||
|
||||
class PackLinuxElf32mipsel : public PackLinuxElf32Le
|
||||
{
|
||||
typedef PackLinuxElf32Le super;
|
||||
public:
|
||||
PackLinuxElf32mipsel(InputFile *f);
|
||||
virtual ~PackLinuxElf32mipsel();
|
||||
virtual int getFormat() const { return UPX_F_LINUX_ELF32_MIPSEL; }
|
||||
virtual const char *getName() const { return "linux/mipsel"; }
|
||||
virtual const char *getFullName(const options_t *) const { return "mipsel-linux.elf"; }
|
||||
virtual const int *getFilters() const;
|
||||
|
||||
protected:
|
||||
virtual const int *getCompressionMethods(int method, int level) const;
|
||||
virtual Linker* newLinker() const;
|
||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||
virtual void buildLoader(const Filter *);
|
||||
virtual void updateLoader(OutputFile *);
|
||||
virtual void defineSymbols(Filter const *);
|
||||
};
|
||||
|
||||
#endif /*} already included */
|
||||
|
||||
|
||||
|
|
|
@ -337,9 +337,11 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
|||
f_len = shdr->sh_size;
|
||||
++shdr;
|
||||
for (int j= -2+ ehdri.e_shnum; --j>=0; ++shdr) {
|
||||
unsigned prev_end = shdr[-1].sh_size + shdr[-1].sh_offset;
|
||||
prev_end += ~(-shdr[0].sh_addralign) & -prev_end; // align_up
|
||||
if ((Shdr::SHF_ALLOC & shdr->sh_flags)
|
||||
&& (Shdr::SHF_EXECINSTR & shdr->sh_flags)
|
||||
&& shdr[0].sh_offset==(shdr[-1].sh_size + shdr[-1].sh_offset)) {
|
||||
&& shdr[0].sh_offset==prev_end) {
|
||||
f_len += shdr->sh_size;
|
||||
}
|
||||
else {
|
||||
|
@ -347,7 +349,7 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
|||
}
|
||||
}
|
||||
}
|
||||
else { // ft.buf_len already specified, or shdr[1] not instructions
|
||||
else { // ft.buf_len already specified, or Shdr[1] not instructions
|
||||
f_ptr = ibuf;
|
||||
f_len = ph.u_len;
|
||||
}
|
||||
|
|
|
@ -243,6 +243,8 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
|
|||
return p;
|
||||
if ((p = func(new PackLinuxElf32ppc(f), user)) != NULL)
|
||||
return p;
|
||||
if ((p = func(new PackLinuxElf32mipsel(f), user)) != NULL)
|
||||
return p;
|
||||
if ((p = func(new PackLinuxI386sh(f), user)) != NULL)
|
||||
return p;
|
||||
}
|
||||
|
|
|
@ -88,6 +88,8 @@ STUBS += i386-linux.kernel.vmlinuz.h
|
|||
STUBS += i386-win32.pe.h
|
||||
STUBS += m68k-atari.tos.h
|
||||
STUBS += mipsel.r3000-ps1.h
|
||||
STUBS += mipsel.r3000-linux.elf-entry.h
|
||||
STUBS += mipsel.r3000-linux.elf-fold.h
|
||||
STUBS += powerpc-darwin.macho-entry.h
|
||||
STUBS += powerpc-darwin.macho-fold.h
|
||||
STUBS += powerpc-linux.elf-entry.h
|
||||
|
@ -825,6 +827,42 @@ endif
|
|||
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // mipsel.r3000-linux.elf
|
||||
# ************************************************************************/
|
||||
|
||||
mipsel.r3000-linux.elf%.h : tc_list = mipsel.r3000-ps1 default
|
||||
mipsel.r3000-linux.elf%.h : tc_bfdname = elf32-littlemips
|
||||
|
||||
mipsel.r3000-linux.elf-entry.h : $(srcdir)/src/$$T.S
|
||||
ifeq (1,1)
|
||||
# info: we really need as-2.17 here
|
||||
$(call tc,pp-as) -DPS1 $< -o - | $(RTRIM) > tmp/$T.i
|
||||
$(call tc,as) tmp/$T.i -o tmp/$T.bin
|
||||
$(call tc,gpp_mkdep) --mode=c --MMD=$@ $< --MF=tmp/$T.d
|
||||
else
|
||||
# info: as-2.16.1 as used by gcc-4.1.1 does _not_ work
|
||||
$(call tc,gcc) -c -DPS1 -Wa,-O,-mno-pdr $< -o tmp/$T.bin
|
||||
endif
|
||||
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||
|
||||
mipsel.r3000-linux.elf-fold.h : tmp/$$T.o tmp/mipsel.r3000-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/mipsel.r3000-linux.elf-fold.o : $(srcdir)/src/$$T.S
|
||||
$(call tc,gcc) -c $< -o $@
|
||||
$(call tc,f-objstrip,$@)
|
||||
|
||||
tmp/mipsel.r3000-linux.elf-main.o : $(srcdir)/src/$$T.c
|
||||
$(call tc,gcc) -c -Os $< -o $@
|
||||
$(call tc,f-objstrip,$@)
|
||||
$(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // powerpc-darwin.macho
|
||||
# ************************************************************************/
|
||||
|
|
675
src/stub/mipsel.r3000-linux.elf-entry.h
Normal file
675
src/stub/mipsel.r3000-linux.elf-entry.h
Normal file
|
@ -0,0 +1,675 @@
|
|||
/* mipsel.r3000-linux.elf-entry.h
|
||||
created from mipsel.r3000-linux.elf-entry.bin, 10216 (0x27e8) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2007 Laszlo Molnar
|
||||
Copyright (C) 2000-2007 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
|
||||
<mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
|
||||
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_SIZE 10216
|
||||
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_ADLER32 0x3e427e50
|
||||
#define STUB_MIPSEL_R3000_LINUX_ELF_ENTRY_CRC32 0xc169b462
|
||||
|
||||
unsigned char stub_mipsel_r3000_linux_elf_entry[10216] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||
1, 0, 8, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
|
||||
232, 29, 0, 0, 1, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, 0, /* 0x 20 */
|
||||
20, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 30 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 40 */
|
||||
0, 0, 0, 0, 44, 0, 17, 4, 0, 0,247, 39, 0,128, 13, 60, /* 0x 50 */
|
||||
33, 72,160, 1, 1, 0, 11, 36,194,119, 9, 0, 7, 0,169, 21, /* 0x 60 */
|
||||
64, 72, 9, 0, 0, 0,169,152, 3, 0,169,136, 4, 0,165, 36, /* 0x 70 */
|
||||
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 1, 0, 15, 36, /* 0x 80 */
|
||||
5, 0,192, 17, 0, 0,174,144, 1, 0,165, 36, 0, 0, 14,161, /* 0x 90 */
|
||||
241,255, 0, 16, 1, 0, 8, 37,194,119, 9, 0, 7, 0,169, 21, /* 0x a0 */
|
||||
64, 72, 9, 0, 0, 0,169,152, 3, 0,169,136, 4, 0,165, 36, /* 0x b0 */
|
||||
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 64,120, 15, 0, /* 0x c0 */
|
||||
33,120,238, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x d0 */
|
||||
0, 0,169,152, 3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, /* 0x e0 */
|
||||
64, 72, 9, 0, 1, 0, 41, 37, 13, 0,192, 21,254,255,238, 37, /* 0x f0 */
|
||||
33,120,238, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 100 */
|
||||
0, 0,169,152, 3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, /* 0x 110 */
|
||||
64, 72, 9, 0, 1, 0, 41, 37,223,255, 0, 16, 33,120,238, 1, /* 0x 120 */
|
||||
13, 0,192, 21,253,255,239, 37,194,119, 9, 0, 7, 0,169, 21, /* 0x 130 */
|
||||
64, 72, 9, 0, 0, 0,169,152, 3, 0,169,136, 4, 0,165, 36, /* 0x 140 */
|
||||
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 33,120, 96, 1, /* 0x 150 */
|
||||
11, 0, 0, 16, 1, 0,204, 49, 0, 0,174,144, 0,122, 15, 0, /* 0x 160 */
|
||||
33,120,238, 1, 1, 0,238, 37,255,255,192, 17, 1, 0,165, 36, /* 0x 170 */
|
||||
66,120, 15, 0, 1, 0,239, 37, 33, 88,224, 1, 1, 0,204, 49, /* 0x 180 */
|
||||
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, /* 0x 190 */
|
||||
3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 1a0 */
|
||||
1, 0, 41, 37, 35, 0,128, 21,254,255,204, 37, 12, 0,192, 17, /* 0x 1b0 */
|
||||
1, 0, 12, 36,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 1c0 */
|
||||
0, 0,169,152, 3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, /* 0x 1d0 */
|
||||
64, 72, 9, 0, 1, 0, 41, 37, 22, 0, 0, 16, 33, 96,192, 1, /* 0x 1e0 */
|
||||
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, /* 0x 1f0 */
|
||||
3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 200 */
|
||||
1, 0, 41, 37, 64, 96, 12, 0, 33, 96,142, 1,194,119, 9, 0, /* 0x 210 */
|
||||
7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, 3, 0,169,136, /* 0x 220 */
|
||||
4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 230 */
|
||||
235,255,192, 17, 1, 5,238, 45, 5, 0,140, 37, 35, 96,142, 1, /* 0x 240 */
|
||||
35,120, 15, 1, 0, 0,238,145,255,255,140, 37, 1, 0,239, 37, /* 0x 250 */
|
||||
1, 0, 8, 37,251,255,128, 21,255,255, 14,161,127,255, 0, 16, /* 0x 260 */
|
||||
194,119, 9, 0, 0,128, 13, 60, 33, 72,160, 1, 1, 0, 11, 36, /* 0x 270 */
|
||||
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, /* 0x 280 */
|
||||
3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 290 */
|
||||
1, 0, 41, 37, 1, 0, 15, 36, 5, 0,192, 17, 0, 0,174,144, /* 0x 2a0 */
|
||||
1, 0,165, 36, 0, 0, 14,161,241,255, 0, 16, 1, 0, 8, 37, /* 0x 2b0 */
|
||||
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, /* 0x 2c0 */
|
||||
3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 2d0 */
|
||||
1, 0, 41, 37, 64,120, 15, 0, 33,120,238, 1,194,119, 9, 0, /* 0x 2e0 */
|
||||
7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, 3, 0,169,136, /* 0x 2f0 */
|
||||
4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 300 */
|
||||
13, 0,192, 21,254,255,238, 37, 33,120,207, 1,194,119, 9, 0, /* 0x 310 */
|
||||
7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, 3, 0,169,136, /* 0x 320 */
|
||||
4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 330 */
|
||||
223,255, 0, 16, 33,120,238, 1, 13, 0,192, 21,253,255,239, 37, /* 0x 340 */
|
||||
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, /* 0x 350 */
|
||||
3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 360 */
|
||||
1, 0, 41, 37, 33,120, 96, 1, 11, 0, 0, 16, 1, 0,204, 49, /* 0x 370 */
|
||||
0, 0,174,144, 0,122, 15, 0, 33,120,238, 1, 1, 0,238, 37, /* 0x 380 */
|
||||
255,255,192, 17, 1, 0,165, 36, 66,120, 15, 0, 1, 0,239, 37, /* 0x 390 */
|
||||
33, 88,224, 1, 1, 0,204, 49,194,119, 9, 0, 7, 0,169, 21, /* 0x 3a0 */
|
||||
64, 72, 9, 0, 0, 0,169,152, 3, 0,169,136, 4, 0,165, 36, /* 0x 3b0 */
|
||||
194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, 64, 96, 12, 0, /* 0x 3c0 */
|
||||
33, 96,142, 1, 23, 0,128, 21,254,255,140, 37, 1, 0, 12, 36, /* 0x 3d0 */
|
||||
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, /* 0x 3e0 */
|
||||
3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 3f0 */
|
||||
1, 0, 41, 37, 64, 96, 12, 0, 33, 96,142, 1,194,119, 9, 0, /* 0x 400 */
|
||||
7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, 3, 0,169,136, /* 0x 410 */
|
||||
4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 420 */
|
||||
235,255,192, 17, 1, 5,238, 45, 4, 0,140, 37, 35, 96,142, 1, /* 0x 430 */
|
||||
35,120, 15, 1, 0, 0,238,145,255,255,140, 37, 1, 0,239, 37, /* 0x 440 */
|
||||
1, 0, 8, 37,251,255,128, 21,255,255, 14,161,137,255, 0, 16, /* 0x 450 */
|
||||
194,119, 9, 0, 0,128, 13, 60, 33, 72,160, 1, 1, 0, 11, 36, /* 0x 460 */
|
||||
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, /* 0x 470 */
|
||||
3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 480 */
|
||||
1, 0, 41, 37, 1, 0, 15, 36, 5, 0,192, 17, 0, 0,174,144, /* 0x 490 */
|
||||
1, 0,165, 36, 0, 0, 14,161,241,255, 0, 16, 1, 0, 8, 37, /* 0x 4a0 */
|
||||
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, /* 0x 4b0 */
|
||||
3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 4c0 */
|
||||
1, 0, 41, 37, 64,120, 15, 0, 33,120,238, 1,194,119, 9, 0, /* 0x 4d0 */
|
||||
7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, 3, 0,169,136, /* 0x 4e0 */
|
||||
4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 4f0 */
|
||||
235,255,192, 17, 2, 0, 14, 36, 3, 0,238, 21,253,255,239, 37, /* 0x 500 */
|
||||
8, 0, 0, 16, 33,120, 96, 1, 0, 0,174,144, 0,122, 15, 0, /* 0x 510 */
|
||||
33,120,238, 1, 1, 0,239, 37,255,255,224, 17, 1, 0,165, 36, /* 0x 520 */
|
||||
33, 88,224, 1,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 530 */
|
||||
0, 0,169,152, 3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, /* 0x 540 */
|
||||
64, 72, 9, 0, 1, 0, 41, 37, 33, 96,192, 1,194,119, 9, 0, /* 0x 550 */
|
||||
7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, 3, 0,169,136, /* 0x 560 */
|
||||
4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, 1, 0, 41, 37, /* 0x 570 */
|
||||
64, 96, 12, 0, 33, 96,142, 1, 23, 0,128, 21,254,255,140, 37, /* 0x 580 */
|
||||
1, 0, 12, 36,194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, /* 0x 590 */
|
||||
0, 0,169,152, 3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, /* 0x 5a0 */
|
||||
64, 72, 9, 0, 1, 0, 41, 37, 64, 96, 12, 0, 33, 96,142, 1, /* 0x 5b0 */
|
||||
194,119, 9, 0, 7, 0,169, 21, 64, 72, 9, 0, 0, 0,169,152, /* 0x 5c0 */
|
||||
3, 0,169,136, 4, 0,165, 36,194,119, 9, 0, 64, 72, 9, 0, /* 0x 5d0 */
|
||||
1, 0, 41, 37,235,255,192, 17, 1, 13,238, 45, 4, 0,140, 37, /* 0x 5e0 */
|
||||
35, 96,142, 1, 35,120, 15, 1, 0, 0,238,145,255,255,140, 37, /* 0x 5f0 */
|
||||
1, 0,239, 37, 1, 0, 8, 37,251,255,128, 21,255,255, 14,161, /* 0x 600 */
|
||||
152,255, 0, 16,194,119, 9, 0, 0, 0,136,144, 1, 0,137,144, /* 0x 610 */
|
||||
7, 0, 2, 49,194, 64, 8, 0, 0,250, 1, 36, 4, 8, 1, 1, /* 0x 620 */
|
||||
96,241, 33, 36, 33,232,161, 3, 44, 0,161,175, 32, 0,161, 39, /* 0x 630 */
|
||||
24, 0,161,175, 20, 0,167,175, 16, 0,166,175, 28, 0,167, 39, /* 0x 640 */
|
||||
33, 48,160, 0, 2, 0,133, 36, 48, 0,164, 39, 2, 0,130,160, /* 0x 650 */
|
||||
15, 0, 33, 49, 0, 0,129,160, 2, 73, 9, 0, 1, 0,137,160, /* 0x 660 */
|
||||
9,248,224, 2, 44, 0,161,143, 40, 0,166,143, 32, 0,167,143, /* 0x 670 */
|
||||
35,232,161, 3,200,255,189, 39, 52, 0,183,175, 48, 0,182,175, /* 0x 680 */
|
||||
44, 0,181,175, 40, 0,180,175, 36, 0,179,175, 32, 0,178,175, /* 0x 690 */
|
||||
28, 0,177,175, 24, 0,176,175, 33,168,160, 0, 12, 0,167,175, /* 0x 6a0 */
|
||||
33,152, 0, 1, 16, 0,169,175, 20, 0,170,175, 4, 0,144, 36, /* 0x 6b0 */
|
||||
2, 0,130,144, 1, 0, 3, 36, 4, 16, 67, 0,255,255, 66, 36, /* 0x 6c0 */
|
||||
8, 0,162,175, 1, 0,130,144, 0, 0, 0, 0, 4, 16, 67, 0, /* 0x 6d0 */
|
||||
255,255, 66, 36, 4, 0,162,175, 0, 0,150,144, 0, 0,224,172, /* 0x 6e0 */
|
||||
0, 0, 64,173, 1, 0,132,144, 0, 0, 0, 0, 33, 32,196, 2, /* 0x 6f0 */
|
||||
0, 3, 2, 36, 4, 32,130, 0, 54, 7,132, 36, 33, 16, 0, 2, /* 0x 700 */
|
||||
4, 0, 0, 16, 33, 88, 0, 0, 0, 4, 3, 36,254,255, 67,164, /* 0x 710 */
|
||||
1, 0,107, 37,252,255,100, 21, 2, 0, 66, 36, 33, 56,166, 2, /* 0x 720 */
|
||||
33,104,160, 2, 33,192, 0, 0, 33, 32, 0, 0, 35, 16,245, 0, /* 0x 730 */
|
||||
123, 2,130, 16, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x 740 */
|
||||
37,192, 98, 0, 1, 0,132, 36, 5, 0, 2, 36,247,255,130, 20, /* 0x 750 */
|
||||
1, 0,173, 37, 33, 80, 0, 0, 33,112, 0, 0, 33,144, 0, 0, /* 0x 760 */
|
||||
1, 0, 17, 36, 1, 0, 20, 36, 1, 0, 23, 36, 0, 0,183,175, /* 0x 770 */
|
||||
87, 2, 0, 16,255,255, 15, 36,255,255, 70, 52, 43, 16,207, 0, /* 0x 780 */
|
||||
8, 0, 64, 20, 0, 0, 0, 0,101, 2,167, 17, 0,122, 15, 0, /* 0x 790 */
|
||||
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x 7a0 */
|
||||
1, 0,173, 37, 8, 0,163,143, 0, 0, 0, 0, 36, 40, 67, 1, /* 0x 7b0 */
|
||||
0,201, 18, 0, 33, 16,185, 0, 64, 16, 2, 0, 33, 88, 2, 2, /* 0x 7c0 */
|
||||
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 96, 0, 0, /* 0x 7d0 */
|
||||
43, 16, 12, 3,125, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x 7e0 */
|
||||
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 4, 0,163,143, /* 0x 7f0 */
|
||||
0, 0, 0, 0, 36, 16, 67, 1, 4, 24,194, 2, 8, 0, 2, 36, /* 0x 800 */
|
||||
35, 16, 86, 0, 7, 16, 78, 0, 33, 16, 98, 0, 64, 26, 2, 0, /* 0x 810 */
|
||||
192, 18, 2, 0, 35, 16, 67, 0, 33, 16, 2, 2,108, 14, 70, 36, /* 0x 820 */
|
||||
7, 0, 66, 42, 3, 0, 64, 16, 33,120,128, 1, 85, 0, 0, 16, /* 0x 830 */
|
||||
1, 0, 5, 36, 35, 16, 81, 1, 33, 16, 98, 2, 0, 0, 89,144, /* 0x 840 */
|
||||
1, 0, 5, 36,255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, /* 0x 850 */
|
||||
8, 0, 64, 20, 0, 0, 0, 0, 49, 2,167, 17, 0,122, 15, 0, /* 0x 860 */
|
||||
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x 870 */
|
||||
1, 0,173, 37, 64,200, 25, 0, 0, 1, 44, 51, 64, 16, 12, 0, /* 0x 880 */
|
||||
33, 16,194, 0, 64,112, 5, 0, 33, 88, 78, 0, 0, 2, 99,149, /* 0x 890 */
|
||||
194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x 8a0 */
|
||||
9, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x 8b0 */
|
||||
33, 16, 98, 0, 0, 2, 98,165, 41, 0,128, 21, 33, 40,192, 1, /* 0x 8c0 */
|
||||
9, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x 8d0 */
|
||||
66, 17, 3, 0, 35, 16, 98, 0, 0, 2, 98,165, 1, 0,162, 36, /* 0x 8e0 */
|
||||
40, 0,128, 17, 33, 40,162, 0, 0, 1,162, 40, 37, 0, 64, 16, /* 0x 8f0 */
|
||||
255, 0, 2, 60,213,255, 0, 16,255,255, 66, 52,255,255, 66, 52, /* 0x 900 */
|
||||
43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 5, 0, 4, 2,167, 17, /* 0x 910 */
|
||||
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x 920 */
|
||||
37,192, 98, 0, 1, 0,173, 37, 64, 96, 5, 0, 33, 88,204, 0, /* 0x 930 */
|
||||
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x 940 */
|
||||
43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x 950 */
|
||||
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 33, 40,128, 1, /* 0x 960 */
|
||||
8, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x 970 */
|
||||
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 1, 0,162, 36, /* 0x 980 */
|
||||
33, 40,162, 0, 0, 1,162, 40,220,255, 64, 20,255, 0, 2, 60, /* 0x 990 */
|
||||
255, 0,174, 48, 33, 16,106, 2, 0, 0, 78,160, 4, 0, 66, 42, /* 0x 9a0 */
|
||||
3, 0, 64, 16, 1, 0, 67, 37,200, 1, 0, 16, 33,144, 0, 0, /* 0x 9b0 */
|
||||
10, 0, 66, 42, 3, 0, 64, 16, 0, 0, 0, 0,195, 1, 0, 16, /* 0x 9c0 */
|
||||
253,255, 82, 38,193, 1, 0, 16,250,255, 82, 38, 35, 32,236, 1, /* 0x 9d0 */
|
||||
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 43, 16,196, 0, /* 0x 9e0 */
|
||||
8, 0, 64, 20, 35,192, 12, 3,205, 1,167, 17, 0, 34, 4, 0, /* 0x 9f0 */
|
||||
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x a00 */
|
||||
1, 0,173, 37, 64, 16, 18, 0, 33,112, 2, 2,128, 1,195,149, /* 0x a10 */
|
||||
194, 18, 4, 0, 24, 0, 67, 0, 18, 96, 0, 0, 43, 16, 12, 3, /* 0x a20 */
|
||||
15, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x a30 */
|
||||
33, 16, 98, 0,128, 1,194,165, 7, 0, 66, 42, 2, 0, 64, 20, /* 0x a40 */
|
||||
33,144, 0, 0, 3, 0, 18, 36,100, 6, 14, 38, 0, 0,183,175, /* 0x a50 */
|
||||
33,184,128, 2, 33,160, 32, 2,144, 0, 0, 16, 33, 88,128, 1, /* 0x a60 */
|
||||
35, 88,140, 0, 66, 17, 3, 0, 35, 16, 98, 0,128, 1,194,165, /* 0x a70 */
|
||||
43, 16,203, 0, 8, 0, 64, 20, 35,192, 12, 3,168, 1,167, 17, /* 0x a80 */
|
||||
0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x a90 */
|
||||
37,192, 98, 0, 1, 0,173, 37,152, 1,195,149,194, 18, 11, 0, /* 0x aa0 */
|
||||
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 50, 0, 64, 16, /* 0x ab0 */
|
||||
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x ac0 */
|
||||
152, 1,194,165, 0, 1, 2, 60, 43, 16,130, 0, 8, 0, 64, 16, /* 0x ad0 */
|
||||
33, 88,128, 0,146, 1,167, 17, 0, 90, 4, 0, 0, 26, 24, 0, /* 0x ae0 */
|
||||
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x af0 */
|
||||
64, 16, 25, 0, 33, 24, 2, 2, 64, 16, 5, 0, 33, 32, 98, 0, /* 0x b00 */
|
||||
224, 1,131,148,194, 18, 11, 0, 24, 0, 67, 0, 18, 96, 0, 0, /* 0x b10 */
|
||||
43, 16, 12, 3, 18, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x b20 */
|
||||
67, 17, 2, 0, 33, 16, 98, 0,125, 1, 64, 17,224, 1,130,164, /* 0x b30 */
|
||||
7, 0, 66, 42, 2, 0, 64, 20, 9, 0, 18, 36, 11, 0, 18, 36, /* 0x b40 */
|
||||
35, 16, 81, 1, 33, 16, 98, 2, 0, 0, 78,144, 33, 16,106, 2, /* 0x b50 */
|
||||
0, 0, 78,160, 1, 0, 67, 37, 92, 1, 0, 16, 33,120,128, 1, /* 0x b60 */
|
||||
35, 88,108, 1, 35,192, 12, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x b70 */
|
||||
69, 0, 0, 16,224, 1,130,164, 35, 88,100, 1, 66, 17, 3, 0, /* 0x b80 */
|
||||
35, 16, 98, 0,152, 1,194,165, 43, 16,203, 0, 8, 0, 64, 20, /* 0x b90 */
|
||||
35,192, 4, 3, 98, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, /* 0x ba0 */
|
||||
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x bb0 */
|
||||
176, 1,195,149,194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x bc0 */
|
||||
43, 16, 4, 3, 7, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x bd0 */
|
||||
67, 17, 2, 0, 33, 16, 98, 0,176, 1,194,165, 28, 0, 0, 16, /* 0x be0 */
|
||||
33, 16,128, 2, 35, 88,100, 1, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x bf0 */
|
||||
176, 1,194,165, 43, 16,203, 0, 8, 0, 64, 20, 35,192, 4, 3, /* 0x c00 */
|
||||
71, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x c10 */
|
||||
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37,200, 1,195,149, /* 0x c20 */
|
||||
194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x c30 */
|
||||
11, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x c40 */
|
||||
33, 16, 98, 0,200, 1,194,165, 33, 16,224, 2, 33,184,128, 2, /* 0x c50 */
|
||||
33,160, 32, 2, 33,136, 64, 0, 11, 0, 0, 16, 33, 88,128, 0, /* 0x c60 */
|
||||
35, 88,100, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x c70 */
|
||||
200, 1,194,165, 0, 0,162,143, 0, 0,183,175, 33,184,128, 2, /* 0x c80 */
|
||||
33,160, 32, 2, 33,136, 64, 0, 7, 0, 66, 42, 2, 0, 64, 20, /* 0x c90 */
|
||||
8, 0, 18, 36, 11, 0, 18, 36,104, 10, 14, 38,255, 0, 2, 60, /* 0x ca0 */
|
||||
255,255, 76, 52, 43, 16,139, 1, 8, 0, 64, 20, 0, 0, 0, 0, /* 0x cb0 */
|
||||
27, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x cc0 */
|
||||
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 0, 0,195,149, /* 0x cd0 */
|
||||
194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x ce0 */
|
||||
12, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x cf0 */
|
||||
33, 16, 98, 0, 0, 0,194,165, 0, 17, 5, 0, 33, 16,194, 1, /* 0x d00 */
|
||||
4, 0, 69, 36, 33,120,128, 0, 3, 0, 8, 36, 41, 0, 0, 16, /* 0x d10 */
|
||||
33, 48, 0, 0, 35, 88,100, 1, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x d20 */
|
||||
0, 0,194,165, 43, 16,139, 1, 8, 0, 64, 20, 35,192, 4, 3, /* 0x d30 */
|
||||
251, 0,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x d40 */
|
||||
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 2, 0,195,149, /* 0x d50 */
|
||||
194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x d60 */
|
||||
12, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x d70 */
|
||||
33, 16, 98, 0, 2, 0,194,165, 0, 17, 5, 0, 33, 16,194, 1, /* 0x d80 */
|
||||
4, 1, 69, 36, 33,120,128, 0, 3, 0, 8, 36, 9, 0, 0, 16, /* 0x d90 */
|
||||
8, 0, 6, 36, 35,120,100, 1, 35,192, 4, 3, 66, 17, 3, 0, /* 0x da0 */
|
||||
35, 16, 98, 0, 2, 0,194,165, 4, 2,197, 37, 8, 0, 8, 36, /* 0x db0 */
|
||||
16, 0, 6, 36, 33,112, 0, 1, 1, 0, 25, 36,255, 0, 2, 60, /* 0x dc0 */
|
||||
255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 25, 0, /* 0x dd0 */
|
||||
211, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x de0 */
|
||||
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 64, 96, 25, 0, /* 0x df0 */
|
||||
33, 88,172, 0, 0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, /* 0x e00 */
|
||||
18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, /* 0x e10 */
|
||||
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, /* 0x e20 */
|
||||
33,200,128, 1, 8, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, /* 0x e30 */
|
||||
35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, /* 0x e40 */
|
||||
1, 0, 34, 39, 33,200, 34, 3,255,255,206, 37,220,255,192, 21, /* 0x e50 */
|
||||
255, 0, 2, 60, 1, 0, 2, 36, 4, 16, 2, 1, 35, 16, 34, 3, /* 0x e60 */
|
||||
33, 72, 70, 0, 4, 0, 66, 42,134, 0, 64, 16, 4, 0, 34, 41, /* 0x e70 */
|
||||
2, 0, 64, 20, 33, 24, 32, 1, 3, 0, 3, 36,192, 17, 3, 0, /* 0x e80 */
|
||||
33, 16, 2, 2, 96, 3, 70, 36, 1, 0, 14, 36, 6, 0, 25, 36, /* 0x e90 */
|
||||
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, /* 0x ea0 */
|
||||
64, 96, 14, 0,158, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x eb0 */
|
||||
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x ec0 */
|
||||
64, 96, 14, 0, 33, 88,204, 0, 0, 0, 99,149,194, 18, 15, 0, /* 0x ed0 */
|
||||
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, /* 0x ee0 */
|
||||
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x ef0 */
|
||||
0, 0, 98,165, 33,112,128, 1, 8, 0, 0, 16, 33,120,128, 0, /* 0x f00 */
|
||||
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x f10 */
|
||||
0, 0, 98,165, 1, 0,194, 37, 33,112,194, 1,255,255, 57, 39, /* 0x f20 */
|
||||
220,255, 32, 23,255, 0, 2, 60,192,255,195, 37, 4, 0, 98, 40, /* 0x f30 */
|
||||
80, 0, 64, 20, 33,112, 96, 0, 67, 32, 3, 0, 1, 0, 98, 48, /* 0x f40 */
|
||||
2, 0, 75, 52, 14, 0, 98, 40, 8, 0, 64, 16,255,255,153, 36, /* 0x f50 */
|
||||
4,112, 43, 3, 64, 16, 14, 0, 33, 32, 2, 2, 64, 16, 3, 0, /* 0x f60 */
|
||||
35, 16,130, 0, 26, 0, 0, 16, 94, 5, 72, 36,251,255,132, 36, /* 0x f70 */
|
||||
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 8, 0, 64, 20, /* 0x f80 */
|
||||
0, 0, 0, 0,102, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x f90 */
|
||||
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x fa0 */
|
||||
66,120, 15, 0, 43, 16, 15, 3, 3, 0, 64, 20, 64, 88, 11, 0, /* 0x fb0 */
|
||||
35,192, 15, 3, 1, 0,107, 53,255,255,132, 36,237,255,128, 20, /* 0x fc0 */
|
||||
255, 0, 2, 60, 68, 6, 8, 38, 0,113, 11, 0, 4, 0, 25, 36, /* 0x fd0 */
|
||||
1, 0, 6, 36, 1, 0, 5, 36,255, 0, 2, 60,255,255, 66, 52, /* 0x fe0 */
|
||||
43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 5, 0, 76, 0,167, 17, /* 0x ff0 */
|
||||
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1000 */
|
||||
37,192, 98, 0, 1, 0,173, 37, 64, 96, 5, 0, 33, 88, 12, 1, /* 0x1010 */
|
||||
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x1020 */
|
||||
43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x1030 */
|
||||
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 33, 40,128, 1, /* 0x1040 */
|
||||
9, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x1050 */
|
||||
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 1, 0,162, 36, /* 0x1060 */
|
||||
33, 40,162, 0, 37,112,198, 1,255,255, 57, 39,218,255, 32, 23, /* 0x1070 */
|
||||
64, 48, 6, 0, 1, 0,209, 37, 26, 0, 32, 18,255, 0, 2, 60, /* 0x1080 */
|
||||
7, 0, 82, 38, 43, 16, 81, 1, 38, 0, 64, 20, 1, 0, 2, 36, /* 0x1090 */
|
||||
35, 16, 81, 1, 33, 88, 98, 2, 33, 32,106, 2, 33, 24, 64, 1, /* 0x10a0 */
|
||||
0, 0,110,145, 1, 0, 99, 36, 33, 16, 73, 1, 2, 0, 66, 36, /* 0x10b0 */
|
||||
6, 0, 98, 16, 0, 0,142,160, 1, 0,107, 37, 16, 0,162,143, /* 0x10c0 */
|
||||
0, 0, 0, 0,246,255, 98, 20, 1, 0,132, 36, 33, 80, 96, 0, /* 0x10d0 */
|
||||
16, 0,163,143, 0, 0, 0, 0, 43, 16, 67, 1,166,253, 64, 20, /* 0x10e0 */
|
||||
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 4, 0, 64, 20, /* 0x10f0 */
|
||||
35, 40,181, 1, 10, 0,167, 17, 1, 0,173, 37, 35, 40,181, 1, /* 0x1100 */
|
||||
12, 0,162,143, 0, 0, 0, 0, 0, 0, 69,172, 20, 0,163,143, /* 0x1110 */
|
||||
0, 0, 0, 0, 0, 0,106,172, 2, 0, 0, 16, 33, 16, 0, 0, /* 0x1120 */
|
||||
1, 0, 2, 36, 52, 0,183,143, 48, 0,182,143, 44, 0,181,143, /* 0x1130 */
|
||||
40, 0,180,143, 36, 0,179,143, 32, 0,178,143, 28, 0,177,143, /* 0x1140 */
|
||||
24, 0,176,143, 8, 0,224, 3, 56, 0,189, 39,200,255,189, 39, /* 0x1150 */
|
||||
52, 0,183,175, 48, 0,182,175, 44, 0,181,175, 40, 0,180,175, /* 0x1160 */
|
||||
36, 0,179,175, 32, 0,178,175, 28, 0,177,175, 24, 0,176,175, /* 0x1170 */
|
||||
33,168,160, 0, 12, 0,167,175, 33,152, 0, 1, 16, 0,169,175, /* 0x1180 */
|
||||
20, 0,170,175, 4, 0,144, 36, 2, 0,130,144, 1, 0, 3, 36, /* 0x1190 */
|
||||
4, 16, 67, 0,255,255, 66, 36, 8, 0,162,175, 1, 0,130,144, /* 0x11a0 */
|
||||
0, 0, 0, 0, 4, 16, 67, 0,255,255, 66, 36, 4, 0,162,175, /* 0x11b0 */
|
||||
0, 0,150,144, 0, 0,224,172, 0, 0, 64,173, 1, 0,132,144, /* 0x11c0 */
|
||||
0, 0, 0, 0, 33, 32,196, 2, 0, 3, 2, 36, 4, 32,130, 0, /* 0x11d0 */
|
||||
54, 7,132, 36, 33, 16, 0, 2, 4, 0, 0, 16, 33, 88, 0, 0, /* 0x11e0 */
|
||||
0, 4, 3, 36,254,255, 67,164, 1, 0,107, 37,252,255,100, 21, /* 0x11f0 */
|
||||
2, 0, 66, 36, 33, 56,166, 2, 33,104,160, 2, 33,192, 0, 0, /* 0x1200 */
|
||||
33, 32, 0, 0, 35, 16,245, 0,123, 2,130, 16, 0, 26, 24, 0, /* 0x1210 */
|
||||
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,132, 36, /* 0x1220 */
|
||||
5, 0, 2, 36,247,255,130, 20, 1, 0,173, 37, 33, 80, 0, 0, /* 0x1230 */
|
||||
33,112, 0, 0, 33,144, 0, 0, 1, 0, 17, 36, 1, 0, 20, 36, /* 0x1240 */
|
||||
1, 0, 23, 36, 0, 0,183,175, 87, 2, 0, 16,255,255, 15, 36, /* 0x1250 */
|
||||
255,255, 70, 52, 43, 16,207, 0, 8, 0, 64, 20, 0, 0, 0, 0, /* 0x1260 */
|
||||
101, 2,167, 17, 0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x1270 */
|
||||
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 8, 0,163,143, /* 0x1280 */
|
||||
0, 0, 0, 0, 36, 40, 67, 1, 0,201, 18, 0, 33, 16,185, 0, /* 0x1290 */
|
||||
64, 16, 2, 0, 33, 88, 2, 2, 0, 0, 99,149,194, 18, 15, 0, /* 0x12a0 */
|
||||
24, 0, 67, 0, 18, 96, 0, 0, 43, 16, 12, 3,125, 0, 64, 16, /* 0x12b0 */
|
||||
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x12c0 */
|
||||
0, 0, 98,165, 4, 0,163,143, 0, 0, 0, 0, 36, 16, 67, 1, /* 0x12d0 */
|
||||
4, 24,194, 2, 8, 0, 2, 36, 35, 16, 86, 0, 7, 16, 78, 0, /* 0x12e0 */
|
||||
33, 16, 98, 0, 64, 26, 2, 0,192, 18, 2, 0, 35, 16, 67, 0, /* 0x12f0 */
|
||||
33, 16, 2, 2,108, 14, 70, 36, 7, 0, 66, 42, 3, 0, 64, 16, /* 0x1300 */
|
||||
33,120,128, 1, 85, 0, 0, 16, 1, 0, 5, 36, 35, 16, 81, 1, /* 0x1310 */
|
||||
33, 16, 98, 2, 0, 0, 89,144, 1, 0, 5, 36,255, 0, 2, 60, /* 0x1320 */
|
||||
255,255, 66, 52, 43, 16, 79, 0, 8, 0, 64, 20, 0, 0, 0, 0, /* 0x1330 */
|
||||
49, 2,167, 17, 0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x1340 */
|
||||
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 64,200, 25, 0, /* 0x1350 */
|
||||
0, 1, 44, 51, 64, 16, 12, 0, 33, 16,194, 0, 64,112, 5, 0, /* 0x1360 */
|
||||
33, 88, 78, 0, 0, 2, 99,149,194, 18, 15, 0, 24, 0, 67, 0, /* 0x1370 */
|
||||
18, 32, 0, 0, 43, 16, 4, 3, 9, 0, 64, 16, 0, 8, 2, 36, /* 0x1380 */
|
||||
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 0, 2, 98,165, /* 0x1390 */
|
||||
41, 0,128, 21, 33, 40,192, 1, 9, 0, 0, 16, 33,120,128, 0, /* 0x13a0 */
|
||||
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x13b0 */
|
||||
0, 2, 98,165, 1, 0,162, 36, 40, 0,128, 17, 33, 40,162, 0, /* 0x13c0 */
|
||||
0, 1,162, 40, 37, 0, 64, 16,255, 0, 2, 60,213,255, 0, 16, /* 0x13d0 */
|
||||
255,255, 66, 52,255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, /* 0x13e0 */
|
||||
64, 96, 5, 0, 4, 2,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x13f0 */
|
||||
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x1400 */
|
||||
64, 96, 5, 0, 33, 88,204, 0, 0, 0, 99,149,194, 18, 15, 0, /* 0x1410 */
|
||||
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, /* 0x1420 */
|
||||
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x1430 */
|
||||
0, 0, 98,165, 33, 40,128, 1, 8, 0, 0, 16, 33,120,128, 0, /* 0x1440 */
|
||||
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1450 */
|
||||
0, 0, 98,165, 1, 0,162, 36, 33, 40,162, 0, 0, 1,162, 40, /* 0x1460 */
|
||||
220,255, 64, 20,255, 0, 2, 60,255, 0,174, 48, 33, 16,106, 2, /* 0x1470 */
|
||||
0, 0, 78,160, 4, 0, 66, 42, 3, 0, 64, 16, 1, 0, 67, 37, /* 0x1480 */
|
||||
200, 1, 0, 16, 33,144, 0, 0, 10, 0, 66, 42, 3, 0, 64, 16, /* 0x1490 */
|
||||
0, 0, 0, 0,195, 1, 0, 16,253,255, 82, 38,193, 1, 0, 16, /* 0x14a0 */
|
||||
250,255, 82, 38, 35, 32,236, 1, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x14b0 */
|
||||
0, 0, 98,165, 43, 16,196, 0, 8, 0, 64, 20, 35,192, 12, 3, /* 0x14c0 */
|
||||
205, 1,167, 17, 0, 34, 4, 0, 0, 26, 24, 0, 0, 0,162,145, /* 0x14d0 */
|
||||
0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, 64, 16, 18, 0, /* 0x14e0 */
|
||||
33,112, 2, 2,128, 1,195,149,194, 18, 4, 0, 24, 0, 67, 0, /* 0x14f0 */
|
||||
18, 96, 0, 0, 43, 16, 12, 3, 15, 0, 64, 16, 0, 8, 2, 36, /* 0x1500 */
|
||||
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0,128, 1,194,165, /* 0x1510 */
|
||||
7, 0, 66, 42, 2, 0, 64, 20, 33,144, 0, 0, 3, 0, 18, 36, /* 0x1520 */
|
||||
100, 6, 14, 38, 0, 0,183,175, 33,184,128, 2, 33,160, 32, 2, /* 0x1530 */
|
||||
144, 0, 0, 16, 33, 88,128, 1, 35, 88,140, 0, 66, 17, 3, 0, /* 0x1540 */
|
||||
35, 16, 98, 0,128, 1,194,165, 43, 16,203, 0, 8, 0, 64, 20, /* 0x1550 */
|
||||
35,192, 12, 3,168, 1,167, 17, 0, 90, 11, 0, 0, 26, 24, 0, /* 0x1560 */
|
||||
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x1570 */
|
||||
152, 1,195,149,194, 18, 11, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x1580 */
|
||||
43, 16, 4, 3, 50, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x1590 */
|
||||
67, 17, 2, 0, 33, 16, 98, 0,152, 1,194,165, 0, 1, 2, 60, /* 0x15a0 */
|
||||
43, 16,130, 0, 8, 0, 64, 16, 33, 88,128, 0,146, 1,167, 17, /* 0x15b0 */
|
||||
0, 90, 4, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x15c0 */
|
||||
37,192, 98, 0, 1, 0,173, 37, 64, 16, 25, 0, 33, 24, 2, 2, /* 0x15d0 */
|
||||
64, 16, 5, 0, 33, 32, 98, 0,224, 1,131,148,194, 18, 11, 0, /* 0x15e0 */
|
||||
24, 0, 67, 0, 18, 96, 0, 0, 43, 16, 12, 3, 18, 0, 64, 16, /* 0x15f0 */
|
||||
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x1600 */
|
||||
125, 1, 64, 17,224, 1,130,164, 7, 0, 66, 42, 2, 0, 64, 20, /* 0x1610 */
|
||||
9, 0, 18, 36, 11, 0, 18, 36, 35, 16, 81, 1, 33, 16, 98, 2, /* 0x1620 */
|
||||
0, 0, 78,144, 33, 16,106, 2, 0, 0, 78,160, 1, 0, 67, 37, /* 0x1630 */
|
||||
92, 1, 0, 16, 33,120,128, 1, 35, 88,108, 1, 35,192, 12, 3, /* 0x1640 */
|
||||
66, 17, 3, 0, 35, 16, 98, 0, 69, 0, 0, 16,224, 1,130,164, /* 0x1650 */
|
||||
35, 88,100, 1, 66, 17, 3, 0, 35, 16, 98, 0,152, 1,194,165, /* 0x1660 */
|
||||
43, 16,203, 0, 8, 0, 64, 20, 35,192, 4, 3, 98, 1,167, 17, /* 0x1670 */
|
||||
0, 90, 11, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1680 */
|
||||
37,192, 98, 0, 1, 0,173, 37,176, 1,195,149,194, 18, 11, 0, /* 0x1690 */
|
||||
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 7, 0, 64, 16, /* 0x16a0 */
|
||||
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x16b0 */
|
||||
176, 1,194,165, 28, 0, 0, 16, 33, 16,128, 2, 35, 88,100, 1, /* 0x16c0 */
|
||||
66, 17, 3, 0, 35, 16, 98, 0,176, 1,194,165, 43, 16,203, 0, /* 0x16d0 */
|
||||
8, 0, 64, 20, 35,192, 4, 3, 71, 1,167, 17, 0, 90, 11, 0, /* 0x16e0 */
|
||||
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x16f0 */
|
||||
1, 0,173, 37,200, 1,195,149,194, 18, 11, 0, 24, 0, 67, 0, /* 0x1700 */
|
||||
18, 32, 0, 0, 43, 16, 4, 3, 11, 0, 64, 16, 0, 8, 2, 36, /* 0x1710 */
|
||||
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0,200, 1,194,165, /* 0x1720 */
|
||||
33, 16,224, 2, 33,184,128, 2, 33,160, 32, 2, 33,136, 64, 0, /* 0x1730 */
|
||||
11, 0, 0, 16, 33, 88,128, 0, 35, 88,100, 1, 35,192, 4, 3, /* 0x1740 */
|
||||
66, 17, 3, 0, 35, 16, 98, 0,200, 1,194,165, 0, 0,162,143, /* 0x1750 */
|
||||
0, 0,183,175, 33,184,128, 2, 33,160, 32, 2, 33,136, 64, 0, /* 0x1760 */
|
||||
7, 0, 66, 42, 2, 0, 64, 20, 8, 0, 18, 36, 11, 0, 18, 36, /* 0x1770 */
|
||||
104, 10, 14, 38,255, 0, 2, 60,255,255, 76, 52, 43, 16,139, 1, /* 0x1780 */
|
||||
8, 0, 64, 20, 0, 0, 0, 0, 27, 1,167, 17, 0, 90, 11, 0, /* 0x1790 */
|
||||
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x17a0 */
|
||||
1, 0,173, 37, 0, 0,195,149,194, 18, 11, 0, 24, 0, 67, 0, /* 0x17b0 */
|
||||
18, 32, 0, 0, 43, 16, 4, 3, 12, 0, 64, 16, 0, 8, 2, 36, /* 0x17c0 */
|
||||
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 0, 0,194,165, /* 0x17d0 */
|
||||
0, 17, 5, 0, 33, 16,194, 1, 4, 0, 69, 36, 33,120,128, 0, /* 0x17e0 */
|
||||
3, 0, 8, 36, 41, 0, 0, 16, 33, 48, 0, 0, 35, 88,100, 1, /* 0x17f0 */
|
||||
66, 17, 3, 0, 35, 16, 98, 0, 0, 0,194,165, 43, 16,139, 1, /* 0x1800 */
|
||||
8, 0, 64, 20, 35,192, 4, 3,251, 0,167, 17, 0, 90, 11, 0, /* 0x1810 */
|
||||
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x1820 */
|
||||
1, 0,173, 37, 2, 0,195,149,194, 18, 11, 0, 24, 0, 67, 0, /* 0x1830 */
|
||||
18, 32, 0, 0, 43, 16, 4, 3, 12, 0, 64, 16, 0, 8, 2, 36, /* 0x1840 */
|
||||
35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, 2, 0,194,165, /* 0x1850 */
|
||||
0, 17, 5, 0, 33, 16,194, 1, 4, 1, 69, 36, 33,120,128, 0, /* 0x1860 */
|
||||
3, 0, 8, 36, 9, 0, 0, 16, 8, 0, 6, 36, 35,120,100, 1, /* 0x1870 */
|
||||
35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, 2, 0,194,165, /* 0x1880 */
|
||||
4, 2,197, 37, 8, 0, 8, 36, 16, 0, 6, 36, 33,112, 0, 1, /* 0x1890 */
|
||||
1, 0, 25, 36,255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, /* 0x18a0 */
|
||||
9, 0, 64, 20, 64, 96, 25, 0,211, 0,167, 17, 0,122, 15, 0, /* 0x18b0 */
|
||||
0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, /* 0x18c0 */
|
||||
1, 0,173, 37, 64, 96, 25, 0, 33, 88,172, 0, 0, 0, 99,149, /* 0x18d0 */
|
||||
194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, /* 0x18e0 */
|
||||
8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, /* 0x18f0 */
|
||||
33, 16, 98, 0, 0, 0, 98,165, 33,200,128, 1, 8, 0, 0, 16, /* 0x1900 */
|
||||
33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, /* 0x1910 */
|
||||
35, 16, 98, 0, 0, 0, 98,165, 1, 0, 34, 39, 33,200, 34, 3, /* 0x1920 */
|
||||
255,255,206, 37,220,255,192, 21,255, 0, 2, 60, 1, 0, 2, 36, /* 0x1930 */
|
||||
4, 16, 2, 1, 35, 16, 34, 3, 33, 72, 70, 0, 4, 0, 66, 42, /* 0x1940 */
|
||||
134, 0, 64, 16, 4, 0, 34, 41, 2, 0, 64, 20, 33, 24, 32, 1, /* 0x1950 */
|
||||
3, 0, 3, 36,192, 17, 3, 0, 33, 16, 2, 2, 96, 3, 70, 36, /* 0x1960 */
|
||||
1, 0, 14, 36, 6, 0, 25, 36,255, 0, 2, 60,255,255, 66, 52, /* 0x1970 */
|
||||
43, 16, 79, 0, 9, 0, 64, 20, 64, 96, 14, 0,158, 0,167, 17, /* 0x1980 */
|
||||
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1990 */
|
||||
37,192, 98, 0, 1, 0,173, 37, 64, 96, 14, 0, 33, 88,204, 0, /* 0x19a0 */
|
||||
0, 0, 99,149,194, 18, 15, 0, 24, 0, 67, 0, 18, 32, 0, 0, /* 0x19b0 */
|
||||
43, 16, 4, 3, 8, 0, 64, 16, 0, 8, 2, 36, 35, 16, 67, 0, /* 0x19c0 */
|
||||
67, 17, 2, 0, 33, 16, 98, 0, 0, 0, 98,165, 33,112,128, 1, /* 0x19d0 */
|
||||
8, 0, 0, 16, 33,120,128, 0, 35,120,228, 1, 35,192, 4, 3, /* 0x19e0 */
|
||||
66, 17, 3, 0, 35, 16, 98, 0, 0, 0, 98,165, 1, 0,194, 37, /* 0x19f0 */
|
||||
33,112,194, 1,255,255, 57, 39,220,255, 32, 23,255, 0, 2, 60, /* 0x1a00 */
|
||||
192,255,195, 37, 4, 0, 98, 40, 80, 0, 64, 20, 33,112, 96, 0, /* 0x1a10 */
|
||||
67, 32, 3, 0, 1, 0, 98, 48, 2, 0, 75, 52, 14, 0, 98, 40, /* 0x1a20 */
|
||||
8, 0, 64, 16,255,255,153, 36, 4,112, 43, 3, 64, 16, 14, 0, /* 0x1a30 */
|
||||
33, 32, 2, 2, 64, 16, 3, 0, 35, 16,130, 0, 26, 0, 0, 16, /* 0x1a40 */
|
||||
94, 5, 72, 36,251,255,132, 36,255, 0, 2, 60,255,255, 66, 52, /* 0x1a50 */
|
||||
43, 16, 79, 0, 8, 0, 64, 20, 0, 0, 0, 0,102, 0,167, 17, /* 0x1a60 */
|
||||
0,122, 15, 0, 0, 26, 24, 0, 0, 0,162,145, 0, 0, 0, 0, /* 0x1a70 */
|
||||
37,192, 98, 0, 1, 0,173, 37, 66,120, 15, 0, 43, 16, 15, 3, /* 0x1a80 */
|
||||
3, 0, 64, 20, 64, 88, 11, 0, 35,192, 15, 3, 1, 0,107, 53, /* 0x1a90 */
|
||||
255,255,132, 36,237,255,128, 20,255, 0, 2, 60, 68, 6, 8, 38, /* 0x1aa0 */
|
||||
0,113, 11, 0, 4, 0, 25, 36, 1, 0, 6, 36, 1, 0, 5, 36, /* 0x1ab0 */
|
||||
255, 0, 2, 60,255,255, 66, 52, 43, 16, 79, 0, 9, 0, 64, 20, /* 0x1ac0 */
|
||||
64, 96, 5, 0, 76, 0,167, 17, 0,122, 15, 0, 0, 26, 24, 0, /* 0x1ad0 */
|
||||
0, 0,162,145, 0, 0, 0, 0, 37,192, 98, 0, 1, 0,173, 37, /* 0x1ae0 */
|
||||
64, 96, 5, 0, 33, 88, 12, 1, 0, 0, 99,149,194, 18, 15, 0, /* 0x1af0 */
|
||||
24, 0, 67, 0, 18, 32, 0, 0, 43, 16, 4, 3, 8, 0, 64, 16, /* 0x1b00 */
|
||||
0, 8, 2, 36, 35, 16, 67, 0, 67, 17, 2, 0, 33, 16, 98, 0, /* 0x1b10 */
|
||||
0, 0, 98,165, 33, 40,128, 1, 9, 0, 0, 16, 33,120,128, 0, /* 0x1b20 */
|
||||
35,120,228, 1, 35,192, 4, 3, 66, 17, 3, 0, 35, 16, 98, 0, /* 0x1b30 */
|
||||
0, 0, 98,165, 1, 0,162, 36, 33, 40,162, 0, 37,112,198, 1, /* 0x1b40 */
|
||||
255,255, 57, 39,218,255, 32, 23, 64, 48, 6, 0, 1, 0,209, 37, /* 0x1b50 */
|
||||
26, 0, 32, 18,255, 0, 2, 60, 7, 0, 82, 38, 43, 16, 81, 1, /* 0x1b60 */
|
||||
38, 0, 64, 20, 1, 0, 2, 36, 35, 16, 81, 1, 33, 88, 98, 2, /* 0x1b70 */
|
||||
33, 32,106, 2, 33, 24, 64, 1, 0, 0,110,145, 1, 0, 99, 36, /* 0x1b80 */
|
||||
33, 16, 73, 1, 2, 0, 66, 36, 6, 0, 98, 16, 0, 0,142,160, /* 0x1b90 */
|
||||
1, 0,107, 37, 16, 0,162,143, 0, 0, 0, 0,246,255, 98, 20, /* 0x1ba0 */
|
||||
1, 0,132, 36, 33, 80, 96, 0, 16, 0,163,143, 0, 0, 0, 0, /* 0x1bb0 */
|
||||
43, 16, 67, 1,166,253, 64, 20,255, 0, 2, 60,255,255, 66, 52, /* 0x1bc0 */
|
||||
43, 16, 79, 0, 4, 0, 64, 20, 35, 40,181, 1, 10, 0,167, 17, /* 0x1bd0 */
|
||||
1, 0,173, 37, 35, 40,181, 1, 12, 0,162,143, 0, 0, 0, 0, /* 0x1be0 */
|
||||
0, 0, 69,172, 20, 0,163,143, 0, 0, 0, 0, 0, 0,106,172, /* 0x1bf0 */
|
||||
2, 0, 0, 16, 33, 16, 0, 0, 1, 0, 2, 36, 52, 0,183,143, /* 0x1c00 */
|
||||
48, 0,182,143, 44, 0,181,143, 40, 0,180,143, 36, 0,179,143, /* 0x1c10 */
|
||||
32, 0,178,143, 28, 0,177,143, 24, 0,176,143, 8, 0,224, 3, /* 0x1c20 */
|
||||
56, 0,189, 39, 13, 0, 0, 0, 0, 0,168,143, 4, 0,189, 39, /* 0x1c30 */
|
||||
34, 16, 72, 0, 0, 0,168,143, 4, 0,189, 39, 34,128, 8, 2, /* 0x1c40 */
|
||||
0, 0,168,143, 4, 0,189, 39, 0, 0, 16,173, 0, 0,168,143, /* 0x1c50 */
|
||||
4, 0,189, 39, 8, 0, 0, 1, 0, 0, 0, 0, 30, 0, 6, 36, /* 0x1c60 */
|
||||
255,255, 17, 4, 33, 40,224, 3, 80, 82, 79, 84, 95, 69, 88, 69, /* 0x1c70 */
|
||||
67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105, /* 0x1c80 */
|
||||
108,101,100, 46, 10, 0, 2, 0, 4, 36, 4, 0, 2, 36, 12, 0, /* 0x1c90 */
|
||||
0, 0,127, 0, 4, 36, 1, 0, 2, 36, 12, 0, 0, 0,160,255, /* 0x1ca0 */
|
||||
181, 38,216,255,230,142,224,255,189, 39,220,255,231,142, 7, 0, /* 0x1cb0 */
|
||||
8, 36, 16, 0,168,175, 18, 16, 8, 36, 20, 0,168,175, 0, 0, /* 0x1cc0 */
|
||||
5, 36, 24, 0,160,175,197, 0, 4, 36,198, 0, 2, 36, 12, 0, /* 0x1cd0 */
|
||||
0, 0, 33, 32, 64, 0,232,255,229,142,224,255,244,142,228,255, /* 0x1ce0 */
|
||||
243,142,236,255,242,142,240,255,241,142, 11, 0,133, 16, 35, 64, /* 0x1cf0 */
|
||||
133, 0, 33,184,232, 2, 33, 48,160, 2, 0, 0,168,140, 8, 0, /* 0x1d00 */
|
||||
132, 36, 4, 0,169,140,248,255,198, 36,248,255,136,172, 8, 0, /* 0x1d10 */
|
||||
165, 36,249,255,192, 28,252,255,137,172, 0, 0,200,142, 33, 56, /* 0x1d20 */
|
||||
160, 3, 0, 0,168,175, 33, 48, 64, 0, 4, 0,197,142, 33, 32, /* 0x1d30 */
|
||||
192, 2, 8, 0,224, 2, 33,248,192, 0,212,255,245,142,215,255, /* 0x1d40 */
|
||||
17, 4, 33,176,224, 3,116,109,112, 47,109,105,112,115,101,108, /* 0x1d50 */
|
||||
46,114, 51, 48, 48, 48, 45,108,105,110,117,120, 46,101,108,102, /* 0x1d60 */
|
||||
45,101,110,116,114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32, /* 0x1d70 */
|
||||
102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108,102, 51, /* 0x1d80 */
|
||||
50, 45,108,105,116,116,108,101,109,105,112,115, 10, 10, 83,101, /* 0x1d90 */
|
||||
99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, /* 0x1da0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, /* 0x1db0 */
|
||||
32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, /* 0x1dc0 */
|
||||
65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, /* 0x1dd0 */
|
||||
32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, /* 0x1de0 */
|
||||
48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, /* 0x1df0 */
|
||||
48, 48, 48, 48, 48, 48, 50, 56, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1e00 */
|
||||
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1e10 */
|
||||
48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, /* 0x1e20 */
|
||||
78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x1e30 */
|
||||
69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 50, /* 0x1e40 */
|
||||
69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 50, /* 0x1e50 */
|
||||
49, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1e60 */
|
||||
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 53, 99, /* 0x1e70 */
|
||||
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1e80 */
|
||||
44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1e90 */
|
||||
89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, /* 0x1ea0 */
|
||||
32, 32, 32, 32, 48, 48, 48, 48, 48, 49,102, 48, 32, 32, 48, 48, /* 0x1eb0 */
|
||||
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ec0 */
|
||||
32, 32, 48, 48, 48, 48, 48, 50, 55, 52, 32, 32, 50, 42, 42, 48, /* 0x1ed0 */
|
||||
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x1ee0 */
|
||||
67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, /* 0x1ef0 */
|
||||
78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, /* 0x1f00 */
|
||||
48, 48, 48, 49, 98, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1f10 */
|
||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1f20 */
|
||||
48, 52, 54, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1f30 */
|
||||
69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, /* 0x1f40 */
|
||||
68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 76, 90, 77, 65, 95, 69, /* 0x1f50 */
|
||||
76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 54, 99, /* 0x1f60 */
|
||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1f70 */
|
||||
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 54, 49, 56, 32, 32, /* 0x1f80 */
|
||||
50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x1f90 */
|
||||
82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, 76, 90, 77, /* 0x1fa0 */
|
||||
65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, /* 0x1fb0 */
|
||||
97,100, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1fc0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 54, 56, /* 0x1fd0 */
|
||||
52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, /* 0x1fe0 */
|
||||
83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, /* 0x1ff0 */
|
||||
76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, 32, 48, 48, /* 0x2000 */
|
||||
48, 48, 48, 97,100, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2010 */
|
||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x2020 */
|
||||
49, 49, 53, 99, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x2030 */
|
||||
69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x2040 */
|
||||
32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 32, 32, 32, /* 0x2050 */
|
||||
32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, 48, 48, /* 0x2060 */
|
||||
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2070 */
|
||||
48, 48, 48, 49, 99, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x2080 */
|
||||
79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x2090 */
|
||||
89, 10, 32, 32, 56, 32, 78, 82, 86, 95, 84, 65, 73, 76, 32, 32, /* 0x20a0 */
|
||||
32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x20b0 */
|
||||
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20c0 */
|
||||
32, 32, 48, 48, 48, 48, 49, 99, 51, 56, 32, 32, 50, 42, 42, 48, /* 0x20d0 */
|
||||
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x20e0 */
|
||||
79, 78, 76, 89, 10, 32, 32, 57, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x20f0 */
|
||||
89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 53,101, 32, /* 0x2100 */
|
||||
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x2110 */
|
||||
48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 99, 51, 56, 32, 32, 50, /* 0x2120 */
|
||||
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x2130 */
|
||||
69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x2140 */
|
||||
49, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, /* 0x2150 */
|
||||
32, 48, 48, 48, 48, 48, 48, 99, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x2160 */
|
||||
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2170 */
|
||||
48, 48, 48, 49, 99, 57, 54, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x2180 */
|
||||
79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x2190 */
|
||||
89, 10, 83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, /* 0x21a0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x21b0 */
|
||||
32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48, 48, 48, /* 0x21c0 */
|
||||
48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, /* 0x21d0 */
|
||||
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, /* 0x21e0 */
|
||||
77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, /* 0x21f0 */
|
||||
76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2200 */
|
||||
32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x2210 */
|
||||
88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, /* 0x2220 */
|
||||
73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2230 */
|
||||
32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48, 48, /* 0x2240 */
|
||||
48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, /* 0x2250 */
|
||||
48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 68, /* 0x2260 */
|
||||
9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 68, 10, /* 0x2270 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x2280 */
|
||||
32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2290 */
|
||||
78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x22a0 */
|
||||
32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x22b0 */
|
||||
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x22c0 */
|
||||
69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x22d0 */
|
||||
32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x22e0 */
|
||||
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x22f0 */
|
||||
68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x2300 */
|
||||
32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, /* 0x2310 */
|
||||
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x2320 */
|
||||
68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x2330 */
|
||||
32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, /* 0x2340 */
|
||||
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, /* 0x2350 */
|
||||
68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x2360 */
|
||||
32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65, 73, 76, 9, /* 0x2370 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, /* 0x2380 */
|
||||
76, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, /* 0x2390 */
|
||||
32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x23a0 */
|
||||
48, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x23b0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, /* 0x23c0 */
|
||||
48, 48, 48, 48, 48, 48, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, /* 0x23d0 */
|
||||
48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, /* 0x23e0 */
|
||||
68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 74, 77, 80, 85, /* 0x23f0 */
|
||||
10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x2400 */
|
||||
32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2410 */
|
||||
32, 65, 68, 82, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x2420 */
|
||||
32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, /* 0x2430 */
|
||||
48, 48, 48, 48, 48, 32, 65, 68, 82, 67, 10, 48, 48, 48, 48, 48, /* 0x2440 */
|
||||
48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, /* 0x2450 */
|
||||
42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, 85, 10, /* 0x2460 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2470 */
|
||||
32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2480 */
|
||||
65, 68, 82, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x2490 */
|
||||
32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x24a0 */
|
||||
48, 48, 48, 48, 32, 76, 69, 78, 88, 10, 48, 48, 48, 48, 48, 48, /* 0x24b0 */
|
||||
50, 48, 32,103, 32, 32, 32, 32, 32, 79, 32, 69, 76, 70, 77, 65, /* 0x24c0 */
|
||||
73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, /* 0x24d0 */
|
||||
97,114,116, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, /* 0x24e0 */
|
||||
82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, /* 0x24f0 */
|
||||
77, 65, 73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, /* 0x2500 */
|
||||
32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2510 */
|
||||
32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2520 */
|
||||
48, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, 32, 32, 32, 32, 32, /* 0x2530 */
|
||||
32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2540 */
|
||||
52, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, 32, 32, 32, 32, 32, /* 0x2550 */
|
||||
32, 32, 32, 32, 76, 69, 78, 77, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2560 */
|
||||
56, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, 32, 32, 32, 32, 32, /* 0x2570 */
|
||||
32, 32, 32, 32, 74, 77, 80, 85, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2580 */
|
||||
99, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, 32, 32, 32, 32, 32, /* 0x2590 */
|
||||
32, 32, 32, 32, 65, 68, 82, 85, 10, 48, 48, 48, 48, 48, 48, 49, /* 0x25a0 */
|
||||
48, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, 32, 32, 32, 32, 32, /* 0x25b0 */
|
||||
32, 32, 32, 32, 65, 68, 82, 67, 10, 48, 48, 48, 48, 48, 48, 49, /* 0x25c0 */
|
||||
52, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, 32, 32, 32, 32, 32, /* 0x25d0 */
|
||||
32, 32, 32, 32, 76, 69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 49, /* 0x25e0 */
|
||||
56, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, 32, 32, 32, 32, 32, /* 0x25f0 */
|
||||
32, 32, 32, 32, 65, 68, 82, 88, 10, 48, 48, 48, 48, 48, 48, 49, /* 0x2600 */
|
||||
99, 32, 82, 95, 77, 73, 80, 83, 95, 51, 50, 32, 32, 32, 32, 32, /* 0x2610 */
|
||||
32, 32, 32, 32, 76, 69, 78, 88, 10, 48, 48, 48, 48, 48, 48, 50, /* 0x2620 */
|
||||
48, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, /* 0x2630 */
|
||||
32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 10, 82, 69, /* 0x2640 */
|
||||
76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x2650 */
|
||||
32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, /* 0x2660 */
|
||||
70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x2670 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, /* 0x2680 */
|
||||
48, 48, 48, 48, 49, 49, 99, 32, 82, 95, 77, 73, 80, 83, 95, 80, /* 0x2690 */
|
||||
67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, /* 0x26a0 */
|
||||
78, 89, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, /* 0x26b0 */
|
||||
69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, /* 0x26c0 */
|
||||
68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, /* 0x26d0 */
|
||||
69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, /* 0x26e0 */
|
||||
65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 49, 49, 99, 32, 82, 95, /* 0x26f0 */
|
||||
77, 73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, /* 0x2700 */
|
||||
69, 76, 70, 77, 65, 73, 78, 89, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x2710 */
|
||||
84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x2720 */
|
||||
32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x2730 */
|
||||
32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2740 */
|
||||
32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, /* 0x2750 */
|
||||
48, 99, 52, 32, 82, 95, 77, 73, 80, 83, 95, 80, 67, 49, 54, 32, /* 0x2760 */
|
||||
32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 10, /* 0x2770 */
|
||||
82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2780 */
|
||||
68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2790 */
|
||||
93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x27a0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x27b0 */
|
||||
76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 51, 56, 32, 82, 95, 77, /* 0x27c0 */
|
||||
73, 80, 83, 95, 80, 67, 49, 54, 32, 32, 32, 32, 32, 32, 32, 69, /* 0x27d0 */
|
||||
76, 70, 77, 65, 73, 78, 90, 10 /* 0x27e0 */
|
||||
};
|
161
src/stub/mipsel.r3000-linux.elf-fold.h
Normal file
161
src/stub/mipsel.r3000-linux.elf-fold.h
Normal file
|
@ -0,0 +1,161 @@
|
|||
/* mipsel.r3000-linux.elf-fold.h
|
||||
created from mipsel.r3000-linux.elf-fold.bin, 1996 (0x7cc) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2007 Laszlo Molnar
|
||||
Copyright (C) 2000-2007 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
|
||||
<mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
|
||||
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_SIZE 1996
|
||||
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_ADLER32 0x2a4992e0
|
||||
#define STUB_MIPSEL_R3000_LINUX_ELF_FOLD_CRC32 0x96679e92
|
||||
|
||||
unsigned char stub_mipsel_r3000_linux_elf_fold[1996] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||
2, 0, 8, 0, 1, 0, 0, 0,128, 0, 16, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||
0, 0, 0, 0, 1, 48, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, /* 0x 30 */
|
||||
0, 0, 16, 0,204, 7, 0, 0,208, 7, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 1, 0, 0, 0,204, 7, 0, 0, 0, 0, 0, 0, /* 0x 50 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 60 */
|
||||
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||
13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, /* 0x 80 */
|
||||
13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, /* 0x 90 */
|
||||
13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x a0 */
|
||||
14, 0,128, 16, 1, 0, 3, 36, 0, 0,130,140, 0, 0, 0, 0, /* 0x b0 */
|
||||
5, 0, 69, 16, 0, 0, 0, 0, 6, 0, 67, 20, 0, 0, 0, 0, /* 0x c0 */
|
||||
4, 0,160, 16, 0, 0, 0, 0, 4, 0,134,172, 8, 0,224, 3, /* 0x d0 */
|
||||
0, 0,133,172, 46, 0, 4, 8, 8, 0,132, 36, 8, 0,224, 3, /* 0x e0 */
|
||||
0, 0, 0, 0,248,255,189, 39, 0, 0,191,175, 0, 0,130,140, /* 0x f0 */
|
||||
4, 0,135,140, 43, 16, 70, 0, 7, 0, 64, 16, 33, 24,192, 0, /* 0x 100 */
|
||||
40, 0, 4, 12,127, 0, 4, 36, 0, 0,226,144, 1, 0,231, 36, /* 0x 110 */
|
||||
0, 0,162,160, 1, 0,165, 36,255,255, 99, 36,255,255, 2, 36, /* 0x 120 */
|
||||
249,255, 98, 20, 0, 0, 0, 0, 4, 0,131,140, 0, 0,130,140, /* 0x 130 */
|
||||
33, 24,102, 0, 35, 16, 70, 0, 0, 0,130,172, 4, 0,131,172, /* 0x 140 */
|
||||
0, 0,191,143, 0, 0, 0, 0, 8, 0,224, 3, 8, 0,189, 39, /* 0x 150 */
|
||||
216,255,189, 39, 28, 0,179,175, 24, 0,178,175, 20, 0,177,175, /* 0x 160 */
|
||||
16, 0,176,175, 33,136,128, 0, 33,128,160, 0, 33,152,192, 0, /* 0x 170 */
|
||||
33,144,224, 0,176, 0, 4, 8, 32, 0,191,175, 33, 32, 32, 2, /* 0x 180 */
|
||||
61, 0, 4, 12, 4, 0,165, 39, 4, 0,163,143, 8, 0,166,143, /* 0x 190 */
|
||||
10, 0, 96, 20, 88, 33, 2, 60, 85, 80, 66, 52, 9, 0,194, 20, /* 0x 1a0 */
|
||||
0, 0, 0, 0, 0, 0, 34,142, 0, 0, 0, 0, 5, 0, 64, 20, /* 0x 1b0 */
|
||||
0, 0, 0, 0,180, 0, 4, 8, 0, 0, 0, 0, 3, 0,192, 20, /* 0x 1c0 */
|
||||
43, 16,102, 0, 40, 0, 4, 12,127, 0, 4, 36,253,255, 64, 20, /* 0x 1d0 */
|
||||
0, 0, 0, 0, 0, 0, 2,142, 0, 0, 0, 0, 43, 16, 67, 0, /* 0x 1e0 */
|
||||
248,255, 64, 20, 43, 16,195, 0, 4, 0, 7,142, 39, 0, 64, 16, /* 0x 1f0 */
|
||||
33, 40,224, 0, 4, 0, 36,142, 12, 0,168,143, 33, 40,192, 0, /* 0x 200 */
|
||||
0, 0,163,175, 33, 48,224, 0, 9,248, 96, 2, 33, 56,160, 3, /* 0x 210 */
|
||||
236,255, 64, 20, 0, 0, 0, 0, 0, 0,165,143, 4, 0,162,143, /* 0x 220 */
|
||||
0, 0, 0, 0,231,255,162, 20, 0, 0, 0, 0, 13, 0,167,147, /* 0x 230 */
|
||||
0, 0, 0, 0, 13, 0,224, 16, 0, 0, 0, 0, 11, 0, 64, 18, /* 0x 240 */
|
||||
1, 2,162, 44, 5, 0, 64, 16, 0, 0, 0, 0, 0, 0, 2,142, /* 0x 250 */
|
||||
0, 0, 0, 0, 5, 0, 69, 20, 0, 0, 0, 0, 4, 0, 4,142, /* 0x 260 */
|
||||
14, 0,166,147, 9,248, 64, 2, 0, 0, 0, 0, 8, 0,162,143, /* 0x 270 */
|
||||
4, 0, 35,142, 0, 0, 36,142, 33, 24, 98, 0, 35, 32,130, 0, /* 0x 280 */
|
||||
4, 0, 35,174,169, 0, 4, 8, 0, 0, 36,174, 61, 0, 4, 12, /* 0x 290 */
|
||||
33, 32, 32, 2, 4, 0,162,143, 4, 0, 3,142, 0, 0, 4,142, /* 0x 2a0 */
|
||||
33, 24, 98, 0, 35, 32,130, 0, 4, 0, 3,174, 0, 0, 4,174, /* 0x 2b0 */
|
||||
0, 0, 2,142, 0, 0, 0, 0,176,255, 64, 20, 12, 0, 6, 36, /* 0x 2c0 */
|
||||
32, 0,191,143, 28, 0,179,143, 24, 0,178,143, 20, 0,177,143, /* 0x 2d0 */
|
||||
16, 0,176,143, 8, 0,224, 3, 40, 0,189, 39,176,255,189, 39, /* 0x 2e0 */
|
||||
72, 0,190,175, 64, 0,182,175, 44, 0,177,175, 40, 0,176,175, /* 0x 2f0 */
|
||||
76, 0,191,175, 68, 0,183,175, 60, 0,181,175, 56, 0,180,175, /* 0x 300 */
|
||||
52, 0,179,175, 48, 0,178,175, 16, 0,162,148, 28, 0,163,140, /* 0x 310 */
|
||||
33,176,160, 0, 2, 0, 66, 56, 44, 0,165,148, 33,136,195, 2, /* 0x 320 */
|
||||
1, 0, 66, 44, 24, 0,164,175, 33,240,192, 0, 28, 0,167,175, /* 0x 330 */
|
||||
32, 0,168,175, 0, 57, 2, 0,255,255,165, 36, 33, 32, 32, 2, /* 0x 340 */
|
||||
255,255, 16, 36, 33, 48, 0, 0, 1, 0, 8, 36,236, 0, 4, 8, /* 0x 350 */
|
||||
36, 0,169,175, 0, 0,130,140, 0, 0, 0, 0, 14, 0, 72, 20, /* 0x 360 */
|
||||
0, 0, 0, 0, 8, 0,131,140, 0, 0, 0, 0, 43, 16,112, 0, /* 0x 370 */
|
||||
2, 0, 64, 16, 0, 0, 0, 0, 33,128, 96, 0, 20, 0,130,140, /* 0x 380 */
|
||||
0, 0, 0, 0, 33, 24, 98, 0, 43, 16,195, 0, 2, 0, 64, 16, /* 0x 390 */
|
||||
0, 0, 0, 0, 33, 48, 96, 0, 32, 0,132, 36,255,255,165, 36, /* 0x 3a0 */
|
||||
236,255,161, 4,255,255, 3, 52,255,255, 4, 60, 36,128, 4, 2, /* 0x 3b0 */
|
||||
35, 16,208, 0, 33, 16, 67, 0, 36, 16, 68, 0, 34, 0,231, 36, /* 0x 3c0 */
|
||||
33, 32, 0, 2, 33, 40, 64, 0, 33, 48, 0, 0,255,255, 8, 36, /* 0x 3d0 */
|
||||
33, 72, 0, 0, 36, 0, 4, 12, 8, 0,162,175, 35,184, 80, 0, /* 0x 3e0 */
|
||||
12, 0,162,175, 90, 1, 4, 8, 16, 0,160,175, 0, 0, 35,142, /* 0x 3f0 */
|
||||
0, 0, 0, 0, 8, 0, 98, 20, 1, 0, 2, 36, 8, 0, 38,142, /* 0x 400 */
|
||||
28, 0,164,143, 33, 48,230, 2, 44, 0, 4, 12, 3, 0, 5, 36, /* 0x 410 */
|
||||
86, 1, 4, 8, 0, 0, 0, 0, 75, 0, 98, 20, 0, 0, 0, 0, /* 0x 420 */
|
||||
8, 0, 34,142, 24, 0, 35,142, 33,168,226, 2, 81,115, 2, 60, /* 0x 430 */
|
||||
128, 24, 3, 0, 64, 98, 66, 52, 6, 16, 98, 0, 16, 0, 42,142, /* 0x 440 */
|
||||
7, 0, 82, 48, 20, 0, 34,142,255,255,163, 50, 20, 0,162,175, /* 0x 450 */
|
||||
33,152, 67, 1, 93, 0,192, 19, 35,160,163, 2, 2, 0, 70, 54, /* 0x 460 */
|
||||
255,255, 8, 36, 50, 0, 7, 36, 4, 0, 41,142, 33, 32,128, 2, /* 0x 470 */
|
||||
35, 72, 35, 1, 33, 40, 96, 2, 0, 0,170,175, 36, 0, 4, 12, /* 0x 480 */
|
||||
4, 0,181,175, 31, 0,130, 22, 0, 0, 0, 0, 11, 0,192, 19, /* 0x 490 */
|
||||
4, 0, 66, 50, 4, 0, 64, 16, 0, 0, 0, 0, 36, 0,167,143, /* 0x 4a0 */
|
||||
47, 1, 4, 8, 0, 0, 0, 0, 33, 56, 0, 0, 24, 0,166,143, /* 0x 4b0 */
|
||||
33, 32,192, 3, 88, 0, 4, 12, 33, 40,160, 3, 35, 16, 19, 0, /* 0x 4c0 */
|
||||
2, 0, 67, 50, 8, 0, 96, 16,255,255, 80, 48, 6, 0, 0, 18, /* 0x 4d0 */
|
||||
33, 24,147, 2, 33, 16, 0, 2,255,255, 66, 36, 0, 0, 96,160, /* 0x 4e0 */
|
||||
253,255, 64, 20, 1, 0, 99, 36, 8, 0,192, 19, 33, 32,128, 2, /* 0x 4f0 */
|
||||
33, 40, 96, 2, 34, 0, 4, 12, 33, 48, 64, 2, 3, 0, 64, 16, /* 0x 500 */
|
||||
0, 0, 0, 0, 40, 0, 4, 12,127, 0, 4, 36, 20, 0,163,143, /* 0x 510 */
|
||||
33, 16,112, 2, 33, 40,163, 2, 33,128,130, 2, 43, 16, 5, 2, /* 0x 520 */
|
||||
9, 0, 64, 16, 35, 40,176, 0, 33, 48, 64, 2, 33, 32, 0, 2, /* 0x 530 */
|
||||
50, 0, 7, 36,255,255, 8, 36, 36, 0, 4, 12, 33, 72, 0, 0, /* 0x 540 */
|
||||
240,255, 2, 22, 0, 0, 0, 0, 16, 0,162,143, 32, 0, 49, 38, /* 0x 550 */
|
||||
1, 0, 66, 36, 16, 0,162,175, 44, 0,194,150, 16, 0,163,143, /* 0x 560 */
|
||||
0, 0, 0, 0, 42, 16, 98, 0,160,255, 64, 20, 6, 0, 2, 36, /* 0x 570 */
|
||||
8, 0,192, 23, 3, 0, 2, 36, 24, 0,164,143, 39, 0, 4, 12, /* 0x 580 */
|
||||
0, 0, 0, 0,223,255, 64, 20, 0, 0, 0, 0,113, 1, 4, 8, /* 0x 590 */
|
||||
0, 0, 0, 0, 16, 0,195,150, 0, 0, 0, 0, 5, 0, 98, 16, /* 0x 5a0 */
|
||||
0, 0, 0, 0, 12, 0,162,143, 8, 0,163,143, 35, 0, 4, 12, /* 0x 5b0 */
|
||||
33, 32, 67, 0, 32, 0,162,143, 0, 0, 0, 0, 7, 0, 64, 16, /* 0x 5c0 */
|
||||
0, 0, 0, 0,123, 1, 4, 8, 0, 0, 87,172, 24, 0,168,143, /* 0x 5d0 */
|
||||
33, 48, 64, 2, 30, 1, 4, 8, 18, 0, 7, 36, 24, 0,194,142, /* 0x 5e0 */
|
||||
76, 0,191,143, 33, 16,226, 2, 72, 0,190,143, 68, 0,183,143, /* 0x 5f0 */
|
||||
64, 0,182,143, 60, 0,181,143, 56, 0,180,143, 52, 0,179,143, /* 0x 600 */
|
||||
48, 0,178,143, 44, 0,177,143, 40, 0,176,143, 8, 0,224, 3, /* 0x 610 */
|
||||
80, 0,189, 39,192,255,189, 39, 60, 0,191,175, 52, 0,181,175, /* 0x 620 */
|
||||
48, 0,180,175, 44, 0,179,175, 40, 0,178,175, 32, 0,176,175, /* 0x 630 */
|
||||
56, 0,182,175, 36, 0,177,175, 4, 0, 22,141, 0, 0, 49,141, /* 0x 640 */
|
||||
0, 0, 3,141, 4, 0, 34,141, 4, 0,180, 39, 33,128,128, 0, /* 0x 650 */
|
||||
33,144,160, 0, 33,168,224, 0, 33, 32,128, 2, 33, 56, 0, 0, /* 0x 660 */
|
||||
12, 0,165, 39, 24, 0,170,175, 12, 0,163,175, 33,152,192, 0, /* 0x 670 */
|
||||
8, 0,162,175, 4, 0,177,175, 88, 0, 4, 12, 16, 0,182,175, /* 0x 680 */
|
||||
8, 0,162,143, 44, 0,198,150, 35, 16, 81, 0, 5, 0, 5, 36, /* 0x 690 */
|
||||
33, 32, 0, 2, 8, 0,162,175, 44, 0, 4, 12, 4, 0,178,175, /* 0x 6a0 */
|
||||
42, 0,198,150, 33, 32, 0, 2, 44, 0, 4, 12, 4, 0, 5, 36, /* 0x 6b0 */
|
||||
52, 0,210, 38, 24, 0,166,143, 8, 0, 66,142, 52, 0,198, 36, /* 0x 6c0 */
|
||||
33, 48,194, 0, 33, 32, 0, 2, 44, 0, 4, 12, 3, 0, 5, 36, /* 0x 6d0 */
|
||||
33, 32, 96, 2, 33, 40,192, 2, 33, 48,128, 2, 33, 56, 0, 2, /* 0x 6e0 */
|
||||
33, 64,160, 3,187, 0, 4, 12, 33, 72,160, 2, 33, 48, 64, 0, /* 0x 6f0 */
|
||||
33, 32, 0, 2, 9, 0, 5, 36, 44, 0, 4, 12, 33,136, 64, 0, /* 0x 700 */
|
||||
44, 0,197,150,229, 1, 4, 8, 33, 32, 0, 0, 0, 0, 67,142, /* 0x 710 */
|
||||
0, 0, 0, 0, 26, 0, 98, 20, 1, 0,132, 36, 8, 0, 66,142, /* 0x 720 */
|
||||
0, 0,164,143, 33, 40, 0, 0, 33, 32, 68, 0, 38, 0, 4, 12, /* 0x 730 */
|
||||
33, 48, 0, 0, 8, 0, 64, 4, 33,128, 64, 0, 33, 32, 64, 0, /* 0x 740 */
|
||||
33, 40,192, 2, 37, 0, 4, 12, 0, 2, 6, 36, 0, 2, 3, 36, /* 0x 750 */
|
||||
3, 0, 67, 16, 33, 48, 0, 0, 40, 0, 4, 12,127, 0, 4, 36, /* 0x 760 */
|
||||
33, 32, 0, 2, 33, 40,192, 2, 33, 56, 0, 0, 33, 64, 0, 0, /* 0x 770 */
|
||||
187, 0, 4, 12, 33, 72, 0, 0,232, 1, 4, 8, 33,136, 64, 0, /* 0x 780 */
|
||||
32, 0, 82, 38, 42, 16,133, 0,224,255, 64, 20, 3, 0, 2, 36, /* 0x 790 */
|
||||
33, 16, 32, 2, 60, 0,191,143, 56, 0,182,143, 52, 0,181,143, /* 0x 7a0 */
|
||||
48, 0,180,143, 44, 0,179,143, 40, 0,178,143, 36, 0,177,143, /* 0x 7b0 */
|
||||
32, 0,176,143, 8, 0,224, 3, 64, 0,189, 39 /* 0x 7c0 */
|
||||
};
|
|
@ -30,41 +30,11 @@
|
|||
<jreiser@users.sourceforge.net> <jssg@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
section lzma.init
|
||||
li tmp,%lo(lzma_stack_adjust-lzma_args_sz)
|
||||
addu sp,tmp
|
||||
/*
|
||||
move var,sp
|
||||
1:
|
||||
sw zero,0(var)
|
||||
addiu tmp,4
|
||||
bnez tmp,1b
|
||||
addiu var,4
|
||||
*/
|
||||
addiu src,2
|
||||
la inSize,lzma_c_len
|
||||
la outSize,lzma_u_len
|
||||
|
||||
addu poutSizeProcessed,sp,outSizeProcessed
|
||||
addiu pinSizeprocessed,sp,inSizeProcessed
|
||||
|
||||
la tmp,lzma_properties
|
||||
sw dst,dst_save(sp)
|
||||
addiu CLzmaDecoderState,sp,lzma_args_sz
|
||||
bal decompressor
|
||||
sw tmp,0(CLzmaDecoderState)
|
||||
lw dst,dst_save(sp)
|
||||
lw outSize,outSizeProcessed(sp)
|
||||
li tmp,%lo(lzma_stack_adjust-lzma_args_sz)
|
||||
addu dst,outSize
|
||||
subu sp,tmp
|
||||
|
||||
section LZMA_DEC10
|
||||
#include "lzma_d_cs.S"
|
||||
|
||||
section LZMA_DEC20
|
||||
#include "lzma_d_cf.S"
|
||||
|
||||
|
||||
// vi:ts=8:et
|
||||
|
||||
|
|
|
@ -96,6 +96,9 @@ struct timespec {
|
|||
#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
|
||||
|
|
286
src/stub/src/mipsel.r3000-linux.elf-entry.S
Normal file
286
src/stub/src/mipsel.r3000-linux.elf-entry.S
Normal file
|
@ -0,0 +1,286 @@
|
|||
/* mipsel-linux.elf-entry.S -- Linux program entry point & decompressor (Elf binary)
|
||||
*
|
||||
* This file is part of the UPX executable compressor.
|
||||
*
|
||||
* Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||
* Copyright (C) 1996-2007 Laszlo Molnar
|
||||
* Copyright (C) 2000-2007 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
|
||||
* <mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
*
|
||||
* John F. Reiser
|
||||
* <jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#include "arch/mips/mipsel.r3000/macros.ash"
|
||||
#include "arch/mips/mipsel.r3000/bits.ash"
|
||||
|
||||
.set mips1
|
||||
.set noreorder
|
||||
.set noat
|
||||
.altmacro
|
||||
|
||||
sz_Ehdr= 52
|
||||
sz_Phdr= 32
|
||||
|
||||
sz_l_info= 12
|
||||
l_lsize= 8
|
||||
|
||||
sz_p_info= 12
|
||||
|
||||
sz_b_info= 12
|
||||
sz_unc= 0
|
||||
sz_cpr= 4
|
||||
b_method= 8
|
||||
b_ftid= 9
|
||||
b_cto8= 10
|
||||
b_unused=11
|
||||
|
||||
PROT_READ= 1
|
||||
PROT_WRITE= 2
|
||||
PROT_EXEC= 4
|
||||
|
||||
MAP_PRIVATE= 2
|
||||
MAP_FIXED= 0x10
|
||||
MAP_ANONYMOUS= 0x1000
|
||||
|
||||
PAGE_SHIFT= 12
|
||||
PAGE_MASK= (~0<<PAGE_SHIFT)
|
||||
PAGE_SIZE= -PAGE_MASK
|
||||
|
||||
M_NRV2B_LE32=2 // ../conf.h
|
||||
M_NRV2D_LE32=5
|
||||
M_NRV2E_LE32=8
|
||||
|
||||
//BAL=0x04110000
|
||||
|
||||
section ELFMAINX
|
||||
sz_pack2 = . - 4
|
||||
adrm: .long ADRM
|
||||
lenm: .long LENM
|
||||
jmpu: .long JMPU
|
||||
adru: .long ADRU
|
||||
adrc: .long ADRC
|
||||
lenu: .long LENU
|
||||
adrx: .long ADRX
|
||||
lenx: .long LENX
|
||||
_start: .globl _start
|
||||
bal main
|
||||
addiu s7,ra, decompressor - 0f // s7= &decompress
|
||||
0:
|
||||
|
||||
/* Returns 0 on success; non-zero on failure. */
|
||||
decompressor: // (uchar const *src, size_t lsrc, uchar *dst, u32 &ldst, uint method)
|
||||
|
||||
#include "arch/mips/mipsel.r3000/nrv2e_d.ash"
|
||||
section NRV2E
|
||||
nrv2e eof
|
||||
|
||||
#include "arch/mips/mipsel.r3000/nrv2d_d.ash"
|
||||
section NRV2D
|
||||
nrv2d eof
|
||||
|
||||
#include "arch/mips/mipsel.r3000/nrv2b_d.ash"
|
||||
section NRV2B
|
||||
nrv2b eof
|
||||
|
||||
section LZMA_ELF00 # (a0=lxsrc, a1=lxsrclen, a2=lxdst, a3= &lxdstlen)
|
||||
#define lxsrc a0
|
||||
#define lxsrclen a1
|
||||
#define lxdst a2
|
||||
#define lxdstlen a3
|
||||
|
||||
/* LzmaDecode(a0=CLzmaDecoderState *,
|
||||
a1=src, a2=srclen, a3=*psrcdone,
|
||||
dst, dstlen, *pdstdone);
|
||||
struct CLzmaDecoderState {
|
||||
uchar lit_context_bits;
|
||||
uchar lit_pos_bits;
|
||||
uchar pos_bits;
|
||||
uchar unused;
|
||||
struct CProb[LZMA_BASE_SIZE + (LZMA_LIT_SIZE<<n)];
|
||||
};
|
||||
*/
|
||||
|
||||
LZMA_BASE_NUM = 1846
|
||||
LZMA_LIT_NUM = 768
|
||||
|
||||
lxlzma_szframe = 12*4
|
||||
lxlzma_oldsp = 11*4
|
||||
lxlzma_origdst = 10*4
|
||||
lxlzma_origsrc = 9*4
|
||||
lxlzma_dstdone = 8*4
|
||||
lxlzma_srcdone = 7*4
|
||||
lxlzma_pdstdone = 6*4
|
||||
lxlzma_dstlen = 5*4
|
||||
lxlzma_dst = 4*4
|
||||
|
||||
lbu t0,0(lxsrc) # ((lit_context_bits + lit_pos_bits)<<3) | pos_bits
|
||||
lbu t1,1(lxsrc) # (lit_pos_bits<<4) | lit_context_bits
|
||||
andi v0,t0,7 # pos_bits
|
||||
srl t0,t0,3 # (lit_context_bits + lit_pos_bits)
|
||||
li tmp,-2*LZMA_LIT_NUM
|
||||
sllv tmp,tmp,t0
|
||||
addiu tmp,tmp,-4 - 2*LZMA_BASE_NUM - lxlzma_szframe
|
||||
addu sp,sp,tmp
|
||||
sw tmp, lxlzma_oldsp(sp) # dynamic frame size
|
||||
addiu tmp,sp,lxlzma_dstdone
|
||||
sw tmp, lxlzma_pdstdone(sp)
|
||||
sw lxdstlen,lxlzma_dstlen(sp)
|
||||
sw lxdst, lxlzma_dst(sp)
|
||||
addiu a3,sp,lxlzma_srcdone
|
||||
move a2,lxsrclen
|
||||
addiu a1,lxsrc,2
|
||||
addiu a0,sp,lxlzma_szframe # &CLzamDecoderState
|
||||
sb v0,2(a0) # pos_bits
|
||||
andi tmp,t1,0xf
|
||||
sb tmp,0(a0) # lit_context_bits
|
||||
srl t1,t1,4
|
||||
sb t1,1(a0) # lit_pos_bits
|
||||
jalr s7
|
||||
|
||||
lw tmp, lxlzma_oldsp(sp)
|
||||
lw lxdst, lxlzma_origdst(sp)
|
||||
lw lxdstlen,lxlzma_dstdone(sp)
|
||||
subu sp,tmp
|
||||
|
||||
#include "arch/mips/mipsel.r3000/lzma_d.S"
|
||||
|
||||
section LZMA_DEC30
|
||||
break // FIXME
|
||||
|
||||
section NRV_TAIL
|
||||
// empty
|
||||
|
||||
.macro pop reg
|
||||
lw \reg,0(sp)
|
||||
addiu sp,sp,4
|
||||
.endm
|
||||
|
||||
section ELFMAINY
|
||||
eof:
|
||||
pop t0; sub v0,v0,t0 // src -= eof; // return 0: good; else: bad
|
||||
pop t0; sub s0,s0,t0 // dst -= original_dst
|
||||
pop t0; sw s0,(t0) // actual length used t0 dst
|
||||
pop t0; jr t0; nop
|
||||
|
||||
/* These from /usr/include/sys/syscall.h */
|
||||
SYS_write = 4
|
||||
SYS_exit = 1
|
||||
SYS_mmap = 197
|
||||
SYS___syscall= 198
|
||||
|
||||
msg_SELinux:
|
||||
addiu a2,zero,L71 - L70 // length
|
||||
bal L72
|
||||
move a1,ra
|
||||
L70:
|
||||
.asciz "PROT_EXEC|PROT_WRITE failed.\n"
|
||||
L71:
|
||||
// IDENTSTR goes here
|
||||
|
||||
section ELFMAINZ
|
||||
L72:
|
||||
li a0,2 // fd stderr
|
||||
li v0,SYS_write
|
||||
syscall
|
||||
die:
|
||||
li a0,127
|
||||
li v0,SYS_exit
|
||||
syscall
|
||||
|
||||
/* Decompress the rest of this loader, and jump to it.
|
||||
Map a page to hold the decompressed bytes. Logically this could
|
||||
be done by setting .p_memsz for our first PT_LOAD. But as of 2005-11-09,
|
||||
linux 2.6.14 only does ".bss expansion" on the PT_LOAD that describes the
|
||||
highest address. [I regard this as a bug, and it makes the kernel's
|
||||
fs/binfmt_elf.c complicated, buggy, and insecure.] For us, that is the 2nd
|
||||
PT_LOAD, which is the only way that linux allows to set the brk() for the
|
||||
uncompressed program. [This is a significant kernel misfeature.]
|
||||
*/
|
||||
unfold: // s7= &decompress; s6= &b_info(fold); s5= sz_pack2
|
||||
// compute s5= &decompressor - &b_info(user)
|
||||
addiu s5,s5,(decompressor - sz_pack2) - (sz_Ehdr + 2*sz_Phdr + sz_l_info + sz_p_info)
|
||||
|
||||
/* Get some pages. If small, then get 1 page located just after the end
|
||||
of the first PT_LOAD of the compressed program. This will still be below
|
||||
all of the uncompressed program. If large (>=3MB uncompressed), then enough
|
||||
to duplicate the entire compressed PT_LOAD, plus 1 page, located just after
|
||||
the brk() of the _un_compressed program. The address and length are pre-
|
||||
calculated by PackLinuxElf64amd::defineSymbols().
|
||||
*/
|
||||
#define a0_mmap a2
|
||||
#define a1_mmap a3
|
||||
#define a2_mmap 0x10
|
||||
#define a3_mmap 0x14
|
||||
#define a4_mmap 0x18
|
||||
#define a5_mmap 0x1c
|
||||
#define sp_frame 0x20
|
||||
|
||||
lw a0_mmap,adrm - decompressor(s7)
|
||||
addiu sp,sp,-sp_frame
|
||||
lw a1_mmap,lenm - decompressor(s7)
|
||||
li t0, PROT_READ | PROT_WRITE | PROT_EXEC
|
||||
sw t0,a2_mmap(sp)
|
||||
li t0, MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS
|
||||
sw t0,a3_mmap(sp)
|
||||
li a1,0
|
||||
sw zero,a4_mmap(sp) //; sw zero,a5_mmap(sp) // MAP_ANON ==> ignore offset
|
||||
li a0,SYS_mmap
|
||||
li v0,SYS___syscall
|
||||
syscall // FIXME: check for error
|
||||
move a0,v0 // &new page(s)
|
||||
|
||||
lw a1,adrc - decompressor(s7)
|
||||
lw s4,jmpu - decompressor(s7) // for unmap in fold
|
||||
lw s3,adru - decompressor(s7) // for unmap in fold
|
||||
lw s2,lenu - decompressor(s7) // for unmap in fold
|
||||
lw s1,adrx - decompressor(s7) // for upx_main
|
||||
|
||||
beq a0,a1,L80 // no copy
|
||||
subu t0,a0,a1 // (ADRM - ADRC) == relocation amount
|
||||
addu s7,s7,t0 // update &decompress
|
||||
move a2,s5 // length
|
||||
move_up: // memcpy(dst=a0, src=a1, len=round_up(a2, 8))
|
||||
lw t0, 0(a1); addiu a0,a0, 8
|
||||
lw t1, 4(a1); addiu a2,a2,-8
|
||||
sw t0,-8(a0); addiu a1,a1, 8
|
||||
bgtz a2,move_up
|
||||
sw t1,-4(a0)
|
||||
L80:
|
||||
// Decompress the folded part of this stub, then execute it.
|
||||
lw t0,sz_unc(s6); move a3,sp; sw t0,0(sp) // &dst_len
|
||||
move a2,v0 // &dst
|
||||
lw a1,sz_cpr(s6) // src_len
|
||||
move a0,s6 // &b_info(fold)
|
||||
jr s7 // decompress(src, srclen, dst, &dstlen /*, method*/)
|
||||
move ra,a2 // return to decompressed code
|
||||
main:
|
||||
lw s5,sz_pack2 - decompressor(s7) // length before stub
|
||||
bal unfold
|
||||
move s6,ra
|
||||
// { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...}
|
||||
|
||||
/*__XTHEENDX__*/
|
||||
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
||||
|
162
src/stub/src/mipsel.r3000-linux.elf-fold.S
Normal file
162
src/stub/src/mipsel.r3000-linux.elf-fold.S
Normal file
|
@ -0,0 +1,162 @@
|
|||
/* mipsel-linux.elf-fold.S -- linkage to C code to process Elf binary
|
||||
*
|
||||
* This file is part of the UPX executable compressor.
|
||||
*
|
||||
* Copyright (C) 2000-2007 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
|
||||
* <mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
*
|
||||
* John F. Reiser
|
||||
* <jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#include "arch/mips/mipsel.r3000/macros.ash"
|
||||
#include "arch/mips/mipsel.r3000/bits.ash"
|
||||
|
||||
PAGE_SHIFT= 12
|
||||
PAGE_MASK= 0xffffffffffffffff<<PAGE_SHIFT
|
||||
|
||||
sz_b_info= 12
|
||||
sz_unc= 0
|
||||
sz_cpr= 4
|
||||
|
||||
sz_l_info= 12
|
||||
sz_p_info= 12
|
||||
|
||||
OVERHEAD=2048
|
||||
MAX_ELF_HDR=1024
|
||||
|
||||
SYS_read= 3
|
||||
SYS_open= 5
|
||||
SYS_close= 6
|
||||
|
||||
SYS___syscall= 198
|
||||
SYS_mmap= 197
|
||||
SYS_mprotect= 74
|
||||
SYS_munmap= 73
|
||||
|
||||
SYS_exit= 1
|
||||
SYS_readlink= 58
|
||||
|
||||
break
|
||||
#if 0 /*{*/
|
||||
/* In:
|
||||
cld
|
||||
%rbp= &decompress
|
||||
%rsp= &{LENX,ADRX,LENU,ADRU,JMPU,argc,argv...,0,env...,0,auxv...,0...,strings}
|
||||
*/
|
||||
fold_begin:
|
||||
call L90 # push &L90a
|
||||
L90a:
|
||||
.asciz "/proc/self/exe"
|
||||
L90b:
|
||||
#include "arch/amd64/bxx.S"
|
||||
L90:
|
||||
pop %arg6 # L90a; later, &amdbxx: f_unfilter
|
||||
movq %rsp,%rsi
|
||||
leaq -8 -4 -4 -4096(%rsi),%rdi # 8:ptr, 4:" =", 4:align, 4096:buffer
|
||||
movq %rdi,%rsp
|
||||
0:
|
||||
cmpq $0,(%rsi); movsq; jne 0b # move past argv
|
||||
movq %rdi,%arg3 # remember &new_env[0]
|
||||
stosq # space for new_env[0]
|
||||
0:
|
||||
cmpq $0,(%rsi); movsq; jne 0b # move past env
|
||||
pushq %rdi # &Elf64_auxv
|
||||
0:
|
||||
cmpq $0,(%rsi); movsq; movsq; jne 0b # move past auxv
|
||||
|
||||
movq %rdi,(%arg3) # new_env[0]
|
||||
movl $('='<<24)|(' '<<16)|(' '<<8)|(' '<<0),%eax # " ="
|
||||
stosl
|
||||
movl $4096,%arg3l # buflen
|
||||
movq %rdi,%arg2 # buffer
|
||||
movq %arg6,%arg1 # "/proc/self/exe"
|
||||
push $ SYS_readlink; pop %rax
|
||||
syscall; testl %eax,%eax; js 0f; movb $0,(%arg2,%rax)
|
||||
0:
|
||||
addq $ L90b - L90a,%arg6 # &amdbxx: f_unfilter
|
||||
pop %arg4 # &Elf64_auxv
|
||||
pop %arg2 # LENX
|
||||
pop %arg1 # ADRX
|
||||
|
||||
subq $ OVERHEAD,%rsp
|
||||
movq %rsp,%arg3 # &ELf64_Ehdr temporary space
|
||||
movq %rbp,%arg5 # &decompress: f_expand
|
||||
call upx_main # Out: %rax= entry
|
||||
/* entry= upx_main(b_info *arg1, total_size arg2, Elf64_Ehdr *arg3,
|
||||
Elf32_Auxv_t *arg4, f_decompr arg5, f_unfilter arg6 )
|
||||
*/
|
||||
addq $OVERHEAD,%rsp
|
||||
pop %arg2 # LENU
|
||||
pop %arg1 # ADRU
|
||||
pop %rcx # JMPU
|
||||
push %rax # &entry
|
||||
push $ SYS_munmap; pop %rax
|
||||
jmp *%rcx # goto: syscall; ret
|
||||
|
||||
munmap: .globl munmap
|
||||
movb $ SYS_munmap,%al; jmp sysgo
|
||||
mprotect: .globl mprotect
|
||||
movb $ SYS_mprotect,%al; jmp sysgo
|
||||
brk: .globl brk
|
||||
movb $ SYS_brk,%al; jmp sysgo
|
||||
|
||||
mmap: .globl mmap
|
||||
movb $ SYS_mmap,%al
|
||||
sysarg4:
|
||||
movq %arg4,%sys4
|
||||
sysgo: # NOTE: kernel demands 4th arg in %sys4, NOT %arg4
|
||||
movzbl %al,%eax
|
||||
syscall
|
||||
cmpq $ PAGE_MASK,%rax; jc no_fail
|
||||
orq $~0,%rax # failure; IGNORE errno
|
||||
no_fail:
|
||||
ret
|
||||
|
||||
read: .globl read
|
||||
movb $ SYS_read,%al; jmp sysgo
|
||||
open: .globl open
|
||||
movb $ SYS_open,%al; jmp sysgo
|
||||
close: .globl close
|
||||
movb $ SYS_close,%al; jmp sysgo
|
||||
|
||||
exit: .globl exit
|
||||
movb $ SYS_exit,%al; jmp sysgo
|
||||
#endif /*}*/
|
||||
|
||||
munmap: .globl munmap
|
||||
break
|
||||
mprotect: .globl mprotect
|
||||
break
|
||||
brk: .globl brk
|
||||
break
|
||||
mmap: .globl mmap
|
||||
break
|
||||
read: .globl read
|
||||
break
|
||||
open: .globl open
|
||||
break
|
||||
close: .globl close
|
||||
break
|
||||
exit: .globl exit
|
||||
break
|
||||
|
||||
# vi:ts=8:et:nowrap
|
48
src/stub/src/mipsel.r3000-linux.elf-fold.lds
Normal file
48
src/stub/src/mipsel.r3000-linux.elf-fold.lds
Normal file
|
@ -0,0 +1,48 @@
|
|||
/* mipsel.r3000-linux.elf-fold.lds --
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 2000-2007 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
|
||||
<mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
|
||||
OUTPUT_FORMAT("elf32-littlemips", "elf32-bigmips", "elf32-littlemips")
|
||||
OUTPUT_ARCH(mips)
|
||||
/*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
|
||||
}
|
2
src/stub/src/mipsel.r3000-linux.elf-main.c
Normal file
2
src/stub/src/mipsel.r3000-linux.elf-main.c
Normal file
|
@ -0,0 +1,2 @@
|
|||
#include "i386-linux.elf-main.c"
|
||||
|
|
@ -333,6 +333,35 @@ decomp_done:
|
|||
section decompressor.start
|
||||
decompressor:
|
||||
|
||||
section lzma.init
|
||||
li tmp,%lo(lzma_stack_adjust-lzma_args_sz)
|
||||
addu sp,tmp
|
||||
/*
|
||||
move var,sp
|
||||
1:
|
||||
sw zero,0(var)
|
||||
addiu tmp,4
|
||||
bnez tmp,1b
|
||||
addiu var,4
|
||||
*/
|
||||
addiu src,2
|
||||
la inSize,lzma_c_len
|
||||
la outSize,lzma_u_len
|
||||
|
||||
addu poutSizeProcessed,sp,outSizeProcessed
|
||||
addiu pinSizeprocessed,sp,inSizeProcessed
|
||||
|
||||
la tmp,lzma_properties
|
||||
sw dst,dst_save(sp)
|
||||
addiu CLzmaDecoderState,sp,lzma_args_sz
|
||||
bal decompressor
|
||||
sw tmp,0(CLzmaDecoderState)
|
||||
lw dst,dst_save(sp)
|
||||
lw outSize,outSizeProcessed(sp)
|
||||
li tmp,%lo(lzma_stack_adjust-lzma_args_sz)
|
||||
addu dst,outSize
|
||||
subu sp,tmp
|
||||
|
||||
#include "arch/mips/mipsel.r3000/lzma_d.S"
|
||||
|
||||
#include "include/header.S"
|
||||
|
|
64
src/stub/tmp/mipsel.r3000-linux.elf-entry.bin.dump
Normal file
64
src/stub/tmp/mipsel.r3000-linux.elf-entry.bin.dump
Normal file
|
@ -0,0 +1,64 @@
|
|||
tmp/mipsel.r3000-linux.elf-entry.bin: file format elf32-littlemips
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINX 00000028 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
|
||||
1 NRV2E 00000218 00000000 00000000 0000005c 2**0 CONTENTS, RELOC, READONLY
|
||||
2 NRV2D 000001f0 00000000 00000000 00000274 2**0 CONTENTS, RELOC, READONLY
|
||||
3 NRV2B 000001b4 00000000 00000000 00000464 2**0 CONTENTS, RELOC, READONLY
|
||||
4 LZMA_ELF00 0000006c 00000000 00000000 00000618 2**0 CONTENTS, READONLY
|
||||
5 LZMA_DEC10 00000ad8 00000000 00000000 00000684 2**0 CONTENTS, READONLY
|
||||
6 LZMA_DEC20 00000ad8 00000000 00000000 0000115c 2**0 CONTENTS, READONLY
|
||||
7 LZMA_DEC30 00000004 00000000 00000000 00001c34 2**0 CONTENTS, READONLY
|
||||
8 NRV_TAIL 00000000 00000000 00000000 00001c38 2**0 CONTENTS, READONLY
|
||||
9 ELFMAINY 0000005e 00000000 00000000 00001c38 2**0 CONTENTS, RELOC, READONLY
|
||||
10 ELFMAINZ 000000c0 00000000 00000000 00001c96 2**0 CONTENTS, READONLY
|
||||
SYMBOL TABLE:
|
||||
00000000 l d ELFMAINY 00000000 ELFMAINY
|
||||
00000000 l d ELFMAINZ 00000000 ELFMAINZ
|
||||
00000000 l d ELFMAINX 00000000 ELFMAINX
|
||||
00000000 l d NRV2E 00000000 NRV2E
|
||||
00000000 l d NRV2D 00000000 NRV2D
|
||||
00000000 l d NRV2B 00000000 NRV2B
|
||||
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||
00000000 l d NRV_TAIL 00000000 NRV_TAIL
|
||||
00000000 *UND* 00000000 ADRM
|
||||
00000000 *UND* 00000000 LENM
|
||||
00000000 *UND* 00000000 JMPU
|
||||
00000000 *UND* 00000000 ADRU
|
||||
00000000 *UND* 00000000 ADRC
|
||||
00000000 *UND* 00000000 LENU
|
||||
00000000 *UND* 00000000 ADRX
|
||||
00000000 *UND* 00000000 LENX
|
||||
00000020 g O ELFMAINX 00000000 _start
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
00000000 R_MIPS_32 ADRM
|
||||
00000004 R_MIPS_32 LENM
|
||||
00000008 R_MIPS_32 JMPU
|
||||
0000000c R_MIPS_32 ADRU
|
||||
00000010 R_MIPS_32 ADRC
|
||||
00000014 R_MIPS_32 LENU
|
||||
00000018 R_MIPS_32 ADRX
|
||||
0000001c R_MIPS_32 LENX
|
||||
00000020 R_MIPS_PC16 ELFMAINZ
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2E]:
|
||||
OFFSET TYPE VALUE
|
||||
0000011c R_MIPS_PC16 ELFMAINY
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2D]:
|
||||
OFFSET TYPE VALUE
|
||||
0000011c R_MIPS_PC16 ELFMAINY
|
||||
|
||||
RELOCATION RECORDS FOR [NRV2B]:
|
||||
OFFSET TYPE VALUE
|
||||
000000c4 R_MIPS_PC16 ELFMAINY
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINY]:
|
||||
OFFSET TYPE VALUE
|
||||
00000038 R_MIPS_PC16 ELFMAINZ
|
Loading…
Reference in New Issue
Block a user