merge
This commit is contained in:
commit
d076a6724f
2
.hgtags
2
.hgtags
@ -9,3 +9,5 @@ b0353253b0b3d062eb5adb50d4b665a96620da45 RELEASE_195
|
||||
c2e0cd4d621b047f254f2def42132a03683ff52c RELEASE_192
|
||||
eb1ce56dce7dd1835964362470610925963b9043 RELEASE_110
|
||||
ed96891ef795bceec6b7ff3ca1ca7764431bfb39 RELEASE_191
|
||||
8afead5e7182950592970330c218913fecfbe390 jfr-2006-07-12
|
||||
72fe9925b247073cd8342d8bff07adc47b72173f main-2006-07-12
|
||||
|
||||
@ -71,6 +71,7 @@ struct DefaultLinker::Section
|
||||
int istart;
|
||||
int ostart;
|
||||
int len;
|
||||
unsigned char align;
|
||||
DefaultLinker::Label name;
|
||||
};
|
||||
|
||||
@ -196,13 +197,14 @@ int DefaultLinker::addSection(const char *sname)
|
||||
}
|
||||
|
||||
|
||||
void DefaultLinker::addSection(const char *sname, const void *sdata, int slen)
|
||||
void DefaultLinker::addSection(const char *sname, const void *sdata, int slen, int align)
|
||||
{
|
||||
assert(!frozen);
|
||||
// add a new section - can be used for adding stuff like ident or header
|
||||
sections[nsections].name.set(sname);
|
||||
sections[nsections].istart = ilen;
|
||||
sections[nsections].len = slen;
|
||||
sections[nsections].align = align;
|
||||
sections[nsections++].ostart = olen;
|
||||
assert(nsections < NSECTIONS);
|
||||
memcpy(iloader+ilen, sdata, slen);
|
||||
@ -314,10 +316,10 @@ int SimpleLinker::addSection(const char *sname)
|
||||
}
|
||||
|
||||
|
||||
void SimpleLinker::addSection(const char *sname, const void *sdata, int slen)
|
||||
void SimpleLinker::addSection(const char *sname, const void *sdata, int slen, int align)
|
||||
{
|
||||
assert(!frozen);
|
||||
UNUSED(sname); UNUSED(sdata); UNUSED(slen);
|
||||
UNUSED(sname); UNUSED(sdata); UNUSED(slen); UNUSED(align);
|
||||
assert(0);
|
||||
}
|
||||
|
||||
@ -350,8 +352,8 @@ unsigned char *SimpleLinker::getLoader(int *llen)
|
||||
//
|
||||
**************************************************************************/
|
||||
|
||||
ElfLinker::Section::Section(const char *n, const void *i, unsigned s) :
|
||||
name(strdup(n)), output(NULL), size(s), offset(0), next(NULL)
|
||||
ElfLinker::Section::Section(const char *n, const void *i, unsigned s, unsigned a) :
|
||||
name(strdup(n)), output(NULL), size(s), offset(0), align(a), next(NULL)
|
||||
{
|
||||
assert(name);
|
||||
input = malloc(s + 1);
|
||||
@ -388,24 +390,24 @@ void ElfLinker::preprocessSections(char *start, const char *end)
|
||||
while (start < end)
|
||||
{
|
||||
char name[1024];
|
||||
unsigned offset, size;
|
||||
unsigned offset, size, align;
|
||||
|
||||
char *nextl = strchr(start, '\n');
|
||||
assert(nextl != NULL);
|
||||
|
||||
if (sscanf(start, "%*d %1023s %x %*d %*d %x",
|
||||
name, &size, &offset) == 3)
|
||||
if (sscanf(start, "%*d %1023s %x %*d %*d %x 2**%d",
|
||||
name, &size, &offset, &align) == 4)
|
||||
{
|
||||
char *n = strstr(start, name);
|
||||
n[strlen(name)] = 0;
|
||||
addSection(n, input + offset, size);
|
||||
addSection(n, input + offset, size, align);
|
||||
|
||||
//printf("section %s preprocessed\n", n);
|
||||
}
|
||||
start = nextl + 1;
|
||||
}
|
||||
addSection("*ABS*", NULL, 0);
|
||||
addSection("*UND*", NULL, 0);
|
||||
addSection("*ABS*", NULL, 0, 0);
|
||||
addSection("*UND*", NULL, 0, 0);
|
||||
}
|
||||
|
||||
void ElfLinker::preprocessSymbols(char *start, const char *end)
|
||||
@ -464,8 +466,17 @@ void ElfLinker::preprocessRelocations(char *start, const char *end)
|
||||
unsigned add = 0;
|
||||
if (char *p = strstr(symbol, "+0x"))
|
||||
{
|
||||
*p = 0;
|
||||
sscanf(p + 3, "%x", &add);
|
||||
// Beware: sscanf("0xfffffffffffffffc", "%x", &add) ==> -1 == add
|
||||
// because conversion stops after 32 bits for a non-long.
|
||||
// Also, glibc-2.3.5 has a bug: even using "%lx" still gives -1 instead of -4.
|
||||
long addend;
|
||||
*p = 0; // terminate the symbol name
|
||||
p+=3;
|
||||
if ('f'==p[0] && 0==strncmp(p, "ffffffff", 8)) {
|
||||
p+=8; // workaround a bug in glibc-2.3.5
|
||||
}
|
||||
sscanf(p, "%lx", &addend);
|
||||
add = (unsigned)addend;
|
||||
}
|
||||
|
||||
addRelocation(section->name, offset, t, symbol, add);
|
||||
@ -605,6 +616,15 @@ int ElfLinker::addSection(const char *sname)
|
||||
else
|
||||
{
|
||||
Section *section = findSection(sect);
|
||||
if (section->align) {
|
||||
unsigned const v = ~0u << section->align;
|
||||
assert(tail);
|
||||
if (unsigned const l = ~v & -(tail->offset + tail->size)) {
|
||||
align(l);
|
||||
tail->size += l;
|
||||
outputlen += l;
|
||||
}
|
||||
}
|
||||
memcpy(output + outputlen, section->input, section->size);
|
||||
section->output = output + outputlen;
|
||||
outputlen += section->size;
|
||||
@ -625,13 +645,13 @@ int ElfLinker::addSection(const char *sname)
|
||||
return outputlen;
|
||||
}
|
||||
|
||||
void ElfLinker::addSection(const char *sname, const void *sdata, int slen)
|
||||
void ElfLinker::addSection(const char *sname, const void *sdata, int slen, int align)
|
||||
{
|
||||
assert(!frozen);
|
||||
sections = static_cast<Section **>(realloc(sections, (nsections + 1)
|
||||
* sizeof(Section *)));
|
||||
assert(sections);
|
||||
sections[nsections++] = new Section(sname, sdata, slen);
|
||||
sections[nsections++] = new Section(sname, sdata, slen, align);
|
||||
}
|
||||
|
||||
void ElfLinker::freeze()
|
||||
@ -814,12 +834,25 @@ void ElfLinkerPpc32::relocate1(Relocation *rel, upx_byte *location,
|
||||
|
||||
// FIXME: more relocs
|
||||
|
||||
if (strcmp(type, "8") == 0)
|
||||
*location += value;
|
||||
else if (strcmp(type, "16") == 0)
|
||||
set_le16(location, get_le16(location) + value);
|
||||
else if (strcmp(type, "32") == 0)
|
||||
set_le32(location, get_le32(location) + value);
|
||||
// Note that original (*location).displ is ignored.
|
||||
if (strcmp(type, "24") == 0) {
|
||||
if (3& value) {
|
||||
printf("unaligned word diplacement");
|
||||
abort();
|
||||
}
|
||||
// FIXME: displacment overflow?
|
||||
set_be32(location, (0xfc000003 & get_be32(location)) +
|
||||
(0x03fffffc & value));
|
||||
}
|
||||
else if (strcmp(type, "14") == 0) {
|
||||
if (3& value) {
|
||||
printf("unaligned word diplacement");
|
||||
abort();
|
||||
}
|
||||
// FIXME: displacment overflow?
|
||||
set_be32(location, (0xffff0003 & get_be32(location)) +
|
||||
(0x0000fffc & value));
|
||||
}
|
||||
else
|
||||
super::relocate1(rel, location, value, type);
|
||||
}
|
||||
|
||||
11
src/linker.h
11
src/linker.h
@ -49,7 +49,7 @@ public:
|
||||
virtual void init(const void *pdata, int plen, int pinfo) = 0;
|
||||
virtual void setLoaderAlignOffset(int phase) = 0;
|
||||
virtual int addSection(const char *sname) = 0;
|
||||
virtual void addSection(const char *sname, const void *sdata, int slen) = 0;
|
||||
virtual void addSection(const char *sname, const void *sdata, int slen, int align) = 0;
|
||||
virtual void freeze() = 0;
|
||||
virtual int getSection(const char *sname, int *slen=NULL) = 0;
|
||||
virtual unsigned char *getLoader(int *llen=NULL) = 0;
|
||||
@ -83,7 +83,7 @@ public:
|
||||
virtual void init(const void *pdata, int plen, int pinfo);
|
||||
virtual void setLoaderAlignOffset(int phase);
|
||||
virtual int addSection(const char *sname);
|
||||
virtual void addSection(const char *sname, const void *sdata, int slen);
|
||||
virtual void addSection(const char *sname, const void *sdata, int slen, int align);
|
||||
virtual void freeze();
|
||||
virtual int getSection(const char *sname, int *slen=NULL);
|
||||
virtual unsigned char *getLoader(int *llen=NULL);
|
||||
@ -130,7 +130,7 @@ public:
|
||||
virtual void init(const void *pdata, int plen, int pinfo);
|
||||
virtual void setLoaderAlignOffset(int phase);
|
||||
virtual int addSection(const char *sname);
|
||||
virtual void addSection(const char *sname, const void *sdata, int slen);
|
||||
virtual void addSection(const char *sname, const void *sdata, int slen, int align);
|
||||
virtual void freeze();
|
||||
virtual int getSection(const char *sname, int *slen=NULL);
|
||||
virtual unsigned char *getLoader(int *llen=NULL);
|
||||
@ -199,7 +199,7 @@ protected:
|
||||
virtual void init(const void *pdata, int plen, int);
|
||||
virtual void setLoaderAlignOffset(int phase);
|
||||
virtual int addSection(const char *sname);
|
||||
virtual void addSection(const char *sname, const void *sdata, int slen);
|
||||
virtual void addSection(const char *sname, const void *sdata, int slen, int align);
|
||||
virtual void freeze();
|
||||
virtual int getSection(const char *sname, int *slen=NULL);
|
||||
virtual upx_byte *getLoader(int *llen=NULL);
|
||||
@ -225,9 +225,10 @@ struct ElfLinker::Section : private nocopy
|
||||
upx_byte *output;
|
||||
unsigned size;
|
||||
unsigned offset;
|
||||
unsigned char align; // log2
|
||||
Section *next;
|
||||
|
||||
Section(const char *n, const void *i, unsigned s);
|
||||
Section(const char *n, const void *i, unsigned s, unsigned a=0);
|
||||
~Section();
|
||||
};
|
||||
|
||||
|
||||
361
src/p_lx_elf.cpp
361
src/p_lx_elf.cpp
@ -160,16 +160,44 @@ Linker *PackLinuxElf::newLinker() const
|
||||
return new ElfLinker;
|
||||
}
|
||||
|
||||
void
|
||||
PackLinuxElf::addStubEntrySections(
|
||||
upx_byte const *const proto,
|
||||
unsigned const szproto
|
||||
)
|
||||
void PackLinuxElf::pack3(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
unsigned disp;
|
||||
unsigned const zero = 0;
|
||||
unsigned len = fo->getBytesWritten();
|
||||
fo->write(&zero, 3& -len); // ALIGN_UP
|
||||
len += (3& -len);
|
||||
set_native32(&disp, len); // FIXME? -(sz_elf_hdrs+sizeof(l_info)+sizeof(p_info))
|
||||
fo->write(&disp, sizeof(disp));
|
||||
sz_pack2 = 4+ len;
|
||||
|
||||
super::pack3(fo, ft);
|
||||
}
|
||||
|
||||
void PackLinuxElf32::pack3(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
super::pack3(fo, ft);
|
||||
set_native32(&elfout.phdr[0].p_filesz, sz_pack2);
|
||||
}
|
||||
|
||||
void PackLinuxElf64::pack3(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
super::pack3(fo, ft);
|
||||
set_native64(&elfout.phdr[0].p_filesz, sz_pack2);
|
||||
}
|
||||
|
||||
void
|
||||
PackLinuxElf::addStubEntrySections(Filter const *)
|
||||
{
|
||||
linker->addSection("ELFMAINX", proto, szproto);
|
||||
addLoader("ELFMAINX", NULL);
|
||||
}
|
||||
|
||||
void
|
||||
PackLinuxElf::addLinkerSymbols(Filter const *)
|
||||
{
|
||||
// empty
|
||||
}
|
||||
|
||||
PackLinuxElf32::PackLinuxElf32(InputFile *f)
|
||||
: super(f), phdri(NULL),
|
||||
dynseg(NULL), hashtab(NULL), dynsym(NULL)
|
||||
@ -196,6 +224,19 @@ Linker* PackLinuxElf64amd::newLinker() const
|
||||
return new ElfLinkerAMD64;
|
||||
}
|
||||
|
||||
void PackLinuxElf64amd::addStubEntrySections(Filter const *)
|
||||
{
|
||||
addLoader("ELFMAINX", NULL);
|
||||
//addLoader(getDecompressorSections(), NULL);
|
||||
addLoader(
|
||||
( M_IS_NRV2E(ph.method) ? "NRV_COMMON,NRV2E"
|
||||
: M_IS_NRV2D(ph.method) ? "NRV_COMMON,NRV2D"
|
||||
: M_IS_NRV2B(ph.method) ? "NRV_COMMON,NRV2B"
|
||||
: M_IS_LZMA(ph.method) ? "LZMA_ELF00,LZMA_DEC20,LZMA_DEC30"
|
||||
: NULL), NULL);
|
||||
addLoader("ELFMAINY,IDENTSTR,ELFMAINZ,FOLDEXEC", NULL);
|
||||
}
|
||||
|
||||
int const *
|
||||
PackLinuxElf::getCompressionMethods(int method, int level) const
|
||||
{
|
||||
@ -207,12 +248,18 @@ int const *
|
||||
PackLinuxElf32ppc::getCompressionMethods(int method, int level) const
|
||||
{
|
||||
// No real dependency on LE32.
|
||||
static const int m_nrv2e[] = { M_NRV2E_LE32, -1 };
|
||||
static const int m_nrv2b[] = { M_NRV2B_LE32, -1 };
|
||||
static const int m_nrv2b[] = { M_NRV2B_LE32, M_NRV2E_LE32, M_LZMA, -1 };
|
||||
static const int m_nrv2e[] = { M_NRV2E_LE32, M_NRV2B_LE32, M_LZMA, -1 };
|
||||
static const int m_lzma[] = { M_LZMA,-1 };
|
||||
|
||||
/*return Packer::getDefaultCompressionMethods_le32(method, level);*/
|
||||
// 2005-04-23 FIXME: stub/l_lx_elfppc32.S hardwires ppc_d_nrv2e.S
|
||||
UNUSED(method); UNUSED(level); UNUSED(m_nrv2b);
|
||||
if (M_IS_NRV2B(method))
|
||||
return m_nrv2b;
|
||||
if (M_IS_NRV2E(method))
|
||||
return m_nrv2e;
|
||||
if (M_IS_LZMA(method))
|
||||
return m_lzma;
|
||||
if (1==level)
|
||||
return m_nrv2b;
|
||||
return m_nrv2e;
|
||||
}
|
||||
|
||||
@ -295,7 +342,7 @@ PackLinuxElf32ppc::PackLinuxElf32ppc(InputFile *f)
|
||||
e_machine = Elf32_Ehdr::EM_PPC;
|
||||
ei_class = Elf32_Ehdr::ELFCLASS32;
|
||||
ei_data = Elf32_Ehdr::ELFDATA2MSB;
|
||||
ei_osabi = Elf32_Ehdr::ELFOSABI_NONE;
|
||||
ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX;
|
||||
}
|
||||
|
||||
PackLinuxElf32ppc::~PackLinuxElf32ppc()
|
||||
@ -313,7 +360,7 @@ PackLinuxElf64amd::PackLinuxElf64amd(InputFile *f)
|
||||
e_machine = Elf64_Ehdr::EM_X86_64;
|
||||
ei_class = Elf64_Ehdr::ELFCLASS64;
|
||||
ei_data = Elf64_Ehdr::ELFDATA2LSB;
|
||||
ei_osabi = Elf32_Ehdr::ELFOSABI_NONE;
|
||||
ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX;
|
||||
}
|
||||
|
||||
PackLinuxElf64amd::~PackLinuxElf64amd()
|
||||
@ -329,65 +376,8 @@ umax(unsigned a, unsigned b)
|
||||
return a;
|
||||
}
|
||||
|
||||
int
|
||||
PackLinuxElf32x86::buildLinuxLoader(
|
||||
upx_byte const *const proto,
|
||||
unsigned const szproto,
|
||||
upx_byte const *const fold,
|
||||
unsigned const szfold,
|
||||
Filter const *ft
|
||||
)
|
||||
void PackLinuxElf32x86::addStubEntrySections(Filter const *ft)
|
||||
{
|
||||
initLoader(proto, szproto);
|
||||
|
||||
struct b_info h; memset(&h, 0, sizeof(h));
|
||||
unsigned fold_hdrlen = 0;
|
||||
if (0 < szfold) {
|
||||
cprElfHdr1 const *const hf = (cprElfHdr1 const *)fold;
|
||||
fold_hdrlen = sizeof(hf->ehdr) +
|
||||
get_native16(&hf->ehdr.e_phentsize) * get_native16(&hf->ehdr.e_phnum) +
|
||||
sizeof(l_info);
|
||||
if (0 == get_le32(fold_hdrlen + fold)) {
|
||||
// inconsistent SIZEOF_HEADERS in *.lds (ld, binutils)
|
||||
fold_hdrlen = umax(0x80, fold_hdrlen);
|
||||
}
|
||||
h.sz_unc = (szfold < fold_hdrlen) ? 0 : (szfold - fold_hdrlen);
|
||||
h.b_method = (unsigned char) ph.method; // FIXME: endian trouble
|
||||
h.b_ftid = (unsigned char) ph.filter;
|
||||
h.b_cto8 = (unsigned char) ph.filter_cto;
|
||||
}
|
||||
unsigned char const *const uncLoader = fold_hdrlen + fold;
|
||||
|
||||
h.sz_cpr = MemBuffer::getSizeForCompression(h.sz_unc);
|
||||
unsigned char *const cprLoader = new unsigned char[sizeof(h) + h.sz_cpr];
|
||||
if (0 < szfold) {
|
||||
int r = upx_compress(uncLoader, h.sz_unc, sizeof(h) + cprLoader, &h.sz_cpr,
|
||||
NULL, ph.method, 10, NULL, NULL );
|
||||
if (r != UPX_E_OK || h.sz_cpr >= h.sz_unc)
|
||||
throwInternalError("loader compression failed");
|
||||
#if 0 //{ debugging only
|
||||
if (M_LZMA==ph.method) {
|
||||
ucl_uint tmp_len = h.sz_unc; // LZMA uses this as EOF
|
||||
unsigned char *tmp = new unsigned char[tmp_len];
|
||||
memset(tmp, 0, tmp_len);
|
||||
r = upx_decompress(sizeof(h) + cprLoader, h.sz_cpr, tmp, &tmp_len, h.b_method, NULL);
|
||||
printf("\n%d %d: %d %d %d\n", h.b_method, r, h.sz_cpr, h.sz_unc, tmp_len);
|
||||
for (unsigned j=0; j < h.sz_unc; ++j) if (tmp[j]!=uncLoader[j]) {
|
||||
printf("%d: %x %x\n", j, tmp[j], uncLoader[j]);
|
||||
}
|
||||
delete[] tmp;
|
||||
}
|
||||
#endif //}
|
||||
}
|
||||
unsigned const sz_cpr = h.sz_cpr;
|
||||
set_native32(&h.sz_cpr, h.sz_cpr);
|
||||
set_native32(&h.sz_unc, h.sz_unc);
|
||||
memcpy(cprLoader, &h, sizeof(h));
|
||||
|
||||
// This adds the definition to the "library", to be used later.
|
||||
linker->addSection("FOLDEXEC", cprLoader, sizeof(h) + sz_cpr);
|
||||
// FIXME: memory leak delete [] cprLoader;
|
||||
|
||||
int const n_mru = ft->n_mru; // FIXME: belongs to filter? packerf?
|
||||
|
||||
// Here is a quick summary of the format of the output file:
|
||||
@ -406,6 +396,7 @@ PackLinuxElf32x86::buildLinuxLoader(
|
||||
sizeof(p_info) +
|
||||
// compressed data
|
||||
b_len + ph.c_len );
|
||||
|
||||
// entry to stub
|
||||
addLoader("LEXEC000", NULL);
|
||||
|
||||
@ -462,20 +453,16 @@ PackLinuxElf32x86::buildLinuxLoader(
|
||||
addLoader("IDENTSTR", NULL);
|
||||
addLoader("LEXEC020", NULL);
|
||||
addLoader("FOLDEXEC", NULL);
|
||||
}
|
||||
|
||||
freezeLoader();
|
||||
void PackLinuxElf32x86::addLinkerSymbols(Filter const *ft)
|
||||
{
|
||||
upx_byte *ptr_cto = getLoader();
|
||||
int sz_cto = getLoaderSize();
|
||||
if (0x20==(ft->id & 0xF0) || 0x30==(ft->id & 0xF0)) { // push byte '?' ; cto8
|
||||
patch_le16(ptr_cto, sz_cto, "\x6a?", 0x6a + (ft->cto << 8));
|
||||
checkPatch(NULL, 0, 0, 0); // reset
|
||||
}
|
||||
// PackHeader and overlay_offset at the end of the output file,
|
||||
// after the compressed data.
|
||||
|
||||
unsigned const lsize = getLoaderSize();
|
||||
linker->relocate();
|
||||
return lsize;
|
||||
}
|
||||
|
||||
int
|
||||
@ -484,16 +471,10 @@ PackLinuxElf32::buildLinuxLoader(
|
||||
unsigned const szproto,
|
||||
upx_byte const *const fold,
|
||||
unsigned const szfold,
|
||||
Filter const */*ft*/
|
||||
Filter const *ft
|
||||
)
|
||||
{
|
||||
{
|
||||
int const MAX_LOADER_LEN = 8000;
|
||||
int *const eof_empty = new int[MAX_LOADER_LEN/sizeof(int)];
|
||||
eof_empty[0] = -1;
|
||||
initLoader(eof_empty, MAX_LOADER_LEN, 0, 0);
|
||||
delete[] eof_empty;
|
||||
}
|
||||
initLoader(proto, szproto);
|
||||
|
||||
struct b_info h; memset(&h, 0, sizeof(h));
|
||||
unsigned fold_hdrlen = 0;
|
||||
@ -516,6 +497,19 @@ PackLinuxElf32::buildLinuxLoader(
|
||||
NULL, ph.method, 10, NULL, NULL );
|
||||
if (r != UPX_E_OK || h.sz_cpr >= h.sz_unc)
|
||||
throwInternalError("loader compression failed");
|
||||
#if 0 //{ debugging only
|
||||
if (M_LZMA==ph.method) {
|
||||
ucl_uint tmp_len = h.sz_unc; // LZMA uses this as EOF
|
||||
unsigned char *tmp = new unsigned char[tmp_len];
|
||||
memset(tmp, 0, tmp_len);
|
||||
r = upx_decompress(sizeof(h) + cprLoader, h.sz_cpr, tmp, &tmp_len, h.b_method, NULL);
|
||||
printf("\n%d %d: %d %d %d\n", h.b_method, r, h.sz_cpr, h.sz_unc, tmp_len);
|
||||
for (unsigned j=0; j < h.sz_unc; ++j) if (tmp[j]!=uncLoader[j]) {
|
||||
printf("%d: %x %x\n", j, tmp[j], uncLoader[j]);
|
||||
}
|
||||
delete[] tmp;
|
||||
}
|
||||
#endif //}
|
||||
}
|
||||
unsigned const sz_cpr = h.sz_cpr;
|
||||
set_native32(&h.sz_cpr, h.sz_cpr);
|
||||
@ -523,16 +517,13 @@ PackLinuxElf32::buildLinuxLoader(
|
||||
memcpy(cprLoader, &h, sizeof(h));
|
||||
|
||||
// This adds the definition to the "library", to be used later.
|
||||
linker->addSection("FOLDEXEC", cprLoader, sizeof(h) + sz_cpr);
|
||||
linker->addSection("FOLDEXEC", cprLoader, sizeof(h) + sz_cpr, 0);
|
||||
delete [] cprLoader;
|
||||
|
||||
//int const GAP = 128; // must match stub/l_mac_ppc.S
|
||||
//segcmdo.vmsize += sz_unc - sz_cpr + GAP + 64;
|
||||
addStubEntrySections(ft);
|
||||
|
||||
addStubEntrySections(proto, szproto);
|
||||
|
||||
addLoader("FOLDEXEC", NULL);
|
||||
freezeLoader();
|
||||
addLinkerSymbols(ft);
|
||||
linker->relocate();
|
||||
return getLoaderSize();
|
||||
}
|
||||
@ -543,16 +534,10 @@ PackLinuxElf64::buildLinuxLoader(
|
||||
unsigned const szproto,
|
||||
upx_byte const *const fold,
|
||||
unsigned const szfold,
|
||||
Filter const */*ft*/
|
||||
Filter const *ft
|
||||
)
|
||||
{
|
||||
{
|
||||
int const MAX_LOADER_LEN = 8000;
|
||||
int *const eof_empty = new int[MAX_LOADER_LEN/sizeof(int)];
|
||||
eof_empty[0] = -1;
|
||||
initLoader(eof_empty, MAX_LOADER_LEN, 0, 0);
|
||||
delete[] eof_empty;
|
||||
}
|
||||
initLoader(proto, szproto);
|
||||
|
||||
struct b_info h; memset(&h, 0, sizeof(h));
|
||||
unsigned fold_hdrlen = 0;
|
||||
@ -582,17 +567,78 @@ PackLinuxElf64::buildLinuxLoader(
|
||||
memcpy(cprLoader, &h, sizeof(h));
|
||||
|
||||
// This adds the definition to the "library", to be used later.
|
||||
linker->addSection("FOLDEXEC", cprLoader, sizeof(h) + sz_cpr);
|
||||
linker->addSection("FOLDEXEC", cprLoader, sizeof(h) + sz_cpr, 0);
|
||||
delete [] cprLoader;
|
||||
|
||||
addStubEntrySections(proto, szproto);
|
||||
addStubEntrySections(ft);
|
||||
|
||||
addLoader("FOLDEXEC", NULL);
|
||||
freezeLoader();
|
||||
addLinkerSymbols(ft);
|
||||
linker->relocate();
|
||||
return getLoaderSize();
|
||||
}
|
||||
|
||||
void
|
||||
PackLinuxElf64amd::addLinkerSymbols(Filter const *)
|
||||
{
|
||||
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
|
||||
unsigned len = sz_pack2;
|
||||
|
||||
#define PAGE_MASK (~0u<<12)
|
||||
#define PAGE_SIZE (-PAGE_MASK)
|
||||
lsize = /*getLoaderSize()*/ 64 * 1024; // upper bound; avoid circularity
|
||||
acc_uint64l_t const lo_va_user = 0x400000; // XXX
|
||||
acc_uint64l_t lo_va_stub = elfout.phdr[0].p_vaddr;
|
||||
acc_uint64l_t adrc;
|
||||
acc_uint64l_t adrm;
|
||||
acc_uint64l_t adru;
|
||||
acc_uint64l_t 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_native64( &elfout.ehdr.e_entry,
|
||||
get_native64(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
|
||||
set_native64(&elfout.phdr[0].p_vaddr, lo_va_user);
|
||||
set_native64(&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;
|
||||
}
|
||||
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
|
||||
|
||||
//avoid circularity linker->defineSymbol("LENX", sz_pack2 - hlen);
|
||||
linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
|
||||
|
||||
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
|
||||
linker->defineSymbol("JMPU", 12 + lo_va_user); // trampoline for unmap
|
||||
linker->defineSymbol("LENM", lenm); // len for map
|
||||
linker->defineSymbol("ADRM", adrm); // addr for map
|
||||
#undef PAGE_SIZE
|
||||
#undef PAGE_MASK
|
||||
|
||||
}
|
||||
|
||||
static const
|
||||
#include "stub/i386-linux.elf-entry.h"
|
||||
static const
|
||||
@ -771,6 +817,26 @@ PackLinuxElf32ppc::buildLoader(const Filter *ft)
|
||||
linux_elfppc32_fold, sizeof(linux_elfppc32_fold), ft );
|
||||
}
|
||||
|
||||
void
|
||||
PackLinuxElf32ppc::addStubEntrySections(Filter const *)
|
||||
{
|
||||
addLoader("ELFMAINX", NULL);
|
||||
//addLoader(getDecompressorSections(), NULL);
|
||||
addLoader(
|
||||
( M_IS_NRV2E(ph.method) ? "NRV_COMMON,NRV2E"
|
||||
: M_IS_NRV2D(ph.method) ? "NRV_COMMON,NRV2D"
|
||||
: M_IS_NRV2B(ph.method) ? "NRV_COMMON,NRV2B"
|
||||
: M_IS_LZMA(ph.method) ? "LZMA_ELF00,LZMA_DEC20,LZMA_DEC30"
|
||||
: NULL), NULL);
|
||||
addLoader("ELFMAINY,IDENTSTR,ELFMAINZ,FOLDEXEC", NULL);
|
||||
}
|
||||
|
||||
void
|
||||
PackLinuxElf32ppc::addLinkerSymbols(Filter const *)
|
||||
{
|
||||
// empty
|
||||
}
|
||||
|
||||
static const
|
||||
#include "stub/amd64-linux.elf-entry.h"
|
||||
static const
|
||||
@ -1344,7 +1410,6 @@ void PackLinuxElf32::pack2(OutputFile *fo, Filter &ft)
|
||||
|
||||
if ((off_t)total_in != file_size)
|
||||
throwEOFException();
|
||||
set_native32(&elfout.phdr[0].p_filesz, fo->getBytesWritten());
|
||||
}
|
||||
|
||||
// Determine length of gap between PT_LOAD phdr[k] and closest PT_LOAD
|
||||
@ -1446,89 +1511,6 @@ void PackLinuxElf64::pack2(OutputFile *fo, Filter &ft)
|
||||
|
||||
if ((off_t)total_in != file_size)
|
||||
throwEOFException();
|
||||
set_native64(&elfout.phdr[0].p_filesz, fo->getBytesWritten());
|
||||
}
|
||||
|
||||
void PackLinuxElf32::pack3(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
unsigned disp;
|
||||
unsigned const zero = 0;
|
||||
unsigned len = fo->getBytesWritten();
|
||||
fo->write(&zero, 3& -len); // align to 0 mod 4
|
||||
len += (3& -len);
|
||||
set_native32(&disp, len); // FIXME? -(sz_elf_hdrs+sizeof(l_info)+sizeof(p_info))
|
||||
fo->write(&disp, sizeof(disp));
|
||||
|
||||
super::pack3(fo, ft);
|
||||
}
|
||||
|
||||
void PackLinuxElf64amd::pack3(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
char zero[8];
|
||||
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
|
||||
unsigned const len0 = fo->getBytesWritten();
|
||||
unsigned len = len0;
|
||||
unsigned const frag = 7 & -len; // align to 0 mod 8
|
||||
memset(zero, 0, sizeof(zero));
|
||||
fo->write(&zero, frag);
|
||||
len += frag;
|
||||
|
||||
#define PAGE_MASK (~0u<<12)
|
||||
#define PAGE_SIZE (-PAGE_MASK)
|
||||
upx_byte *const p = getLoader();
|
||||
lsize = getLoaderSize();
|
||||
acc_uint64l_t const lo_va_user = 0x400000; // XXX
|
||||
acc_uint64l_t lo_va_stub = elfout.phdr[0].p_vaddr;
|
||||
acc_uint64l_t adrc;
|
||||
acc_uint64l_t adrm;
|
||||
acc_uint64l_t adru;
|
||||
acc_uint64l_t 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_native64( &elfout.ehdr.e_entry,
|
||||
get_native64(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
|
||||
set_native64(&elfout.phdr[0].p_vaddr, lo_va_user);
|
||||
set_native64(&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;
|
||||
}
|
||||
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
|
||||
|
||||
// patch in order of descending address
|
||||
patch_le32(p,lsize,"LENX", len0 - hlen);
|
||||
patch_le32(p,lsize,"ADRX", adrx); // compressed input for eXpansion
|
||||
|
||||
patch_le32(p,lsize,"CNTC", cntc); // count for copy
|
||||
patch_le32(p,lsize,"LENU", lenu); // len for unmap
|
||||
patch_le32(p,lsize,"ADRC", adrc); // addr for copy
|
||||
patch_le32(p,lsize,"ADRU", adru); // addr for unmap
|
||||
patch_le32(p,lsize,"JMPU", 12 + lo_va_user); // trampoline for unmap
|
||||
patch_le32(p,lsize,"LENM", lenm); // len for map
|
||||
patch_le32(p,lsize,"ADRM", adrm); // addr for map
|
||||
#undef PAGE_SIZE
|
||||
#undef PAGE_MASK
|
||||
|
||||
super::pack3(fo, ft);
|
||||
}
|
||||
|
||||
#include "bele.h"
|
||||
@ -1703,11 +1685,6 @@ void PackLinuxElf32armBe::pack3(OutputFile *fo, Filter &ft)
|
||||
ARM_pack3(fo, ft, true);
|
||||
}
|
||||
|
||||
void PackLinuxElf::pack4(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
super::pack4(fo, ft);
|
||||
}
|
||||
|
||||
void PackLinuxElf32::pack4(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
overlay_offset = sz_elf_hdrs + sizeof(linfo);
|
||||
|
||||
@ -51,8 +51,8 @@ protected:
|
||||
|
||||
virtual void pack1(OutputFile *, Filter &) = 0; // generate executable header
|
||||
virtual void pack2(OutputFile *, Filter &) = 0; // append compressed data
|
||||
//virtual void pack3(OutputFile *, Filter &) = 0; // append loader
|
||||
virtual void pack4(OutputFile *, Filter &) = 0; // append pack header
|
||||
virtual void pack3(OutputFile *, Filter &) = 0; // append loader
|
||||
//virtual void pack4(OutputFile *, Filter &) = 0; // append pack header
|
||||
|
||||
virtual Linker* newLinker() const;
|
||||
virtual void generateElfHdr(
|
||||
@ -60,7 +60,8 @@ protected:
|
||||
void const *proto,
|
||||
unsigned const brka
|
||||
) = 0;
|
||||
virtual void addStubEntrySections(upx_byte const *, unsigned);
|
||||
virtual void addLinkerSymbols(Filter const *);
|
||||
virtual void addStubEntrySections(Filter const *);
|
||||
virtual void unpack(OutputFile *fo) = 0;
|
||||
|
||||
protected:
|
||||
@ -69,6 +70,7 @@ protected:
|
||||
|
||||
unsigned sz_phdrs; // sizeof Phdr[]
|
||||
unsigned sz_elf_hdrs; // all Elf headers
|
||||
unsigned sz_pack2; // after pack2(), before loader
|
||||
|
||||
unsigned short e_machine;
|
||||
unsigned char ei_class;
|
||||
@ -176,7 +178,7 @@ protected:
|
||||
|
||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||
virtual void pack2(OutputFile *, Filter &); // append compressed data
|
||||
//virtual void pack3(OutputFile *, Filter &); // append loader
|
||||
virtual void pack3(OutputFile *, Filter &); // append loader
|
||||
virtual void pack4(OutputFile *, Filter &); // append pack header
|
||||
virtual void unpack(OutputFile *fo);
|
||||
|
||||
@ -284,10 +286,12 @@ public:
|
||||
virtual bool canPack();
|
||||
protected:
|
||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||
virtual void pack3(OutputFile *, Filter &); // append loader
|
||||
//virtual void pack3(OutputFile *, Filter &); // append loader
|
||||
virtual const int *getCompressionMethods(int method, int level) const;
|
||||
virtual int buildLoader(const Filter *);
|
||||
virtual void addStubEntrySections(Filter const *);
|
||||
virtual Linker* newLinker() const;
|
||||
virtual void addLinkerSymbols(Filter const *);
|
||||
};
|
||||
|
||||
/*************************************************************************
|
||||
@ -307,7 +311,9 @@ protected:
|
||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||
virtual const int *getCompressionMethods(int method, int level) const;
|
||||
virtual int buildLoader(const Filter *);
|
||||
virtual void addStubEntrySections(Filter const *);
|
||||
virtual Linker* newLinker() const;
|
||||
virtual void addLinkerSymbols(Filter const *);
|
||||
};
|
||||
|
||||
/*************************************************************************
|
||||
@ -330,14 +336,9 @@ protected:
|
||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||
|
||||
virtual int buildLoader(const Filter *);
|
||||
virtual void addStubEntrySections(Filter const *);
|
||||
virtual Linker* newLinker() const;
|
||||
virtual int buildLinuxLoader(
|
||||
upx_byte const *const proto, // assembly-only sections
|
||||
unsigned const szproto,
|
||||
upx_byte const *const fold, // linked assembly + C section
|
||||
unsigned const szfold,
|
||||
Filter const *ft
|
||||
);
|
||||
virtual void addLinkerSymbols(Filter const *);
|
||||
};
|
||||
|
||||
class PackBSDElf32x86 : public PackLinuxElf32x86
|
||||
@ -378,8 +379,8 @@ public:
|
||||
PackOpenBSDElf32x86(InputFile *f);
|
||||
virtual ~PackOpenBSDElf32x86();
|
||||
|
||||
virtual int buildLoader(const Filter *ft);
|
||||
protected:
|
||||
virtual int buildLoader(const Filter *ft);
|
||||
virtual void generateElfHdr(
|
||||
OutputFile *,
|
||||
void const *proto,
|
||||
|
||||
@ -280,7 +280,7 @@ PackLinuxI386::buildLinuxLoader(
|
||||
}
|
||||
// This adds the definition to the "library", to be used later.
|
||||
// NOTE: the stub is NOT compressed! The savings is not worth it.
|
||||
linker->addSection("FOLDEXEC", fold + fold_hdrlen, szfold - fold_hdrlen);
|
||||
linker->addSection("FOLDEXEC", fold + fold_hdrlen, szfold - fold_hdrlen, 0);
|
||||
|
||||
n_mru = ft->n_mru;
|
||||
|
||||
|
||||
@ -148,7 +148,7 @@ void PackLinuxElf32x86interp::pack3(OutputFile *fo, Filter &/*ft*/)
|
||||
elfout.phdr[0].p_paddr = elfout.phdr[0].p_vaddr = base - sz;
|
||||
if (opt->o_unix.make_ptinterp) {
|
||||
initLoader(linux_i386pti_loader, sizeof(linux_i386pti_loader));
|
||||
linker->addSection("FOLDEXEC", linux_i386pti_fold, sizeof(linux_i386pti_fold));
|
||||
linker->addSection("FOLDEXEC", linux_i386pti_fold, sizeof(linux_i386pti_fold), 0);
|
||||
|
||||
addLoader("LXPTI000", NULL);
|
||||
|
||||
|
||||
@ -98,13 +98,13 @@ PackMachPPC32::buildMachLoader(
|
||||
memcpy(cprLoader, &h, sizeof(h));
|
||||
|
||||
// This adds the definition to the "library", to be used later.
|
||||
linker->addSection("FOLDEXEC", cprLoader, sizeof(h) + h.sz_cpr);
|
||||
linker->addSection("FOLDEXEC", cprLoader, sizeof(h) + h.sz_cpr, 0);
|
||||
delete [] cprLoader;
|
||||
|
||||
int const GAP = 128; // must match stub/l_mac_ppc.S
|
||||
segcmdo.vmsize += h.sz_unc - h.sz_cpr + GAP + 64;
|
||||
|
||||
linker->addSection("MACOS000", proto, szproto);
|
||||
linker->addSection("MACOS000", proto, szproto, 0);
|
||||
|
||||
addLoader("MACOS000", NULL);
|
||||
addLoader("FOLDEXEC", NULL);
|
||||
|
||||
@ -1069,7 +1069,7 @@ void Packer::initLoader(const void *pdata, int plen, int pinfo, int small)
|
||||
|
||||
unsigned size;
|
||||
char const * const ident = getIdentstr(&size, small);
|
||||
linker->addSection("IDENTSTR", ident, size);
|
||||
linker->addSection("IDENTSTR", ident, size, 0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -349,10 +349,10 @@ i386-bsd.elf-fold.h : tmp/$$T.o tmp/i386-bsd.elf-main.o $(srcdir)/src/$$T.lds
|
||||
$(call tc,bin2h) --ident=bsd_i386elf_fold tmp/$T.bin $@
|
||||
|
||||
tmp/i386-bsd.elf-fold.o : $(srcdir)/src/$$T.asm
|
||||
$(call tc,nasm) -f elf -l $@.lst $< -o $@
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
|
||||
$(call tc,objstrip) $@
|
||||
|
||||
tmp/i386-bsd.elf-main.o : $(srcdir)/src/$$T.c
|
||||
tmp/i386-bsd.elf-main.o : $(srcdir)/src/$$T.c
|
||||
$(call tc,gcc) -c $< -o $@
|
||||
$(call tc,objstrip) $@
|
||||
|
||||
@ -384,7 +384,7 @@ i386-openbsd.elf-fold.h : tmp/$$T.o tmp/i386-openbsd.elf-main.o $(srcdir)/src/i3
|
||||
$(call tc,bin2h) --ident=openbsd_i386elf_fold tmp/$T.bin $@
|
||||
|
||||
tmp/i386-openbsd.elf-fold.o : $(srcdir)/src/$$T.asm
|
||||
$(call tc,nasm) -f elf -l $@.lst $< -o $@
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
|
||||
$(call tc,objstrip) $@
|
||||
|
||||
tmp/i386-openbsd.elf-main.o : $(srcdir)/src/$$T.c
|
||||
@ -478,7 +478,7 @@ i386-linux.elf-fold.h : tmp/$$T.o tmp/i386-linux.elf-main.o $(srcdir)/src/$$T.ld
|
||||
$(call tc,bin2h) --ident=linux_i386elf_fold tmp/$T.bin $@
|
||||
|
||||
tmp/i386-linux.elf-fold.o : $(srcdir)/src/$$T.asm
|
||||
$(call tc,nasm) -f elf -l $@.lst $< -o $@
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
|
||||
$(call tc,objstrip) $@
|
||||
|
||||
tmp/i386-linux.elf-main.o : $(srcdir)/src/$$T.c
|
||||
@ -493,9 +493,11 @@ tmp/i386-linux.elf-main.o : $(srcdir)/src/$$T.c
|
||||
# note: tc_list settings are inherited from i386-linux.elf
|
||||
|
||||
i386-linux.elf.execve-entry.h : $(srcdir)/src/$$T.asm
|
||||
$(call tc,pp-nasm) --MMD=$@ $< -o tmp/$T.tmp1
|
||||
$(call tc,app-nasm) tmp/$T.tmp1 tmp/$T.tmp2
|
||||
$(call tc,nasm) -f bin -l tmp/$T.bin.lst tmp/$T.tmp2 -o tmp/$T.bin
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||
$(call tc,m-objcopy) --strip-unneeded tmp/$T.bin
|
||||
$(call tc,m-objcopy) -R .text -R .data -R .bss tmp/$T.bin
|
||||
$(call tc,m-objcopy) -R .note -R .comment tmp/$T.bin
|
||||
$(call tc,m-objdump) -trwh tmp/$T.bin >> tmp/$T.bin
|
||||
$(call tc,bin2h) --ident=linux_i386exec_loader tmp/$T.bin $@
|
||||
|
||||
i386-linux.elf.execve-fold.h : tmp/$$T.o tmp/i386-linux.elf.execve-main.o tmp/i386-linux.elf.execve-upx_itoa.o $(srcdir)/src/$$T.lds
|
||||
@ -506,7 +508,7 @@ i386-linux.elf.execve-fold.h : tmp/$$T.o tmp/i386-linux.elf.execve-main.o tmp/i3
|
||||
$(call tc,bin2h) --ident=linux_i386exec_fold tmp/$T.bin $@
|
||||
|
||||
tmp/i386-linux.elf.execve-fold.o : $(srcdir)/src/$$T.asm
|
||||
$(call tc,nasm) -f elf -l $@.lst $< -o $@
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
|
||||
$(call tc,objstrip) $@
|
||||
|
||||
tmp/i386-linux.elf.execve-main.o : $(srcdir)/src/$$T.c
|
||||
@ -525,9 +527,11 @@ tmp/i386-linux.elf.execve-upx_itoa.o: $(srcdir)/src/$$T.asm
|
||||
# note: tc_list settings are inherited from i386-linux.elf
|
||||
|
||||
i386-linux.elf.interp-entry.h : $(srcdir)/src/$$T.asm
|
||||
$(call tc,pp-nasm) --MMD=$@ $< -o tmp/$T.tmp1
|
||||
$(call tc,app-nasm) tmp/$T.tmp1 tmp/$T.tmp2
|
||||
$(call tc,nasm) -f bin -l tmp/$T.bin.lst tmp/$T.tmp2 -o tmp/$T.bin
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||
$(call tc,m-objcopy) --strip-unneeded tmp/$T.bin
|
||||
$(call tc,m-objcopy) -R .text -R .data -R .bss tmp/$T.bin
|
||||
$(call tc,m-objcopy) -R .note -R .comment tmp/$T.bin
|
||||
$(call tc,m-objdump) -trwh tmp/$T.bin >> tmp/$T.bin
|
||||
$(call tc,bin2h) --ident=linux_i386pti_loader tmp/$T.bin $@
|
||||
|
||||
i386-linux.elf.interp-fold.h : tmp/$$T.o tmp/i386-linux.elf.interp-main.o $(srcdir)/src/$$T.lds
|
||||
@ -538,7 +542,7 @@ i386-linux.elf.interp-fold.h : tmp/$$T.o tmp/i386-linux.elf.interp-main.o $(srcd
|
||||
$(call tc,bin2h) --ident=linux_i386pti_fold tmp/$T.bin $@
|
||||
|
||||
tmp/i386-linux.elf.interp-fold.o : $(srcdir)/src/$$T.asm
|
||||
$(call tc,nasm) -f elf -l $@.lst $< -o $@
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
|
||||
$(call tc,objstrip) $@
|
||||
|
||||
tmp/i386-linux.elf.interp-main.o : $(srcdir)/src/$$T.c
|
||||
@ -553,9 +557,11 @@ tmp/i386-linux.elf.interp-main.o : $(srcdir)/src/$$T.c
|
||||
# note: tc_list settings are inherited from i386-linux.elf
|
||||
|
||||
i386-linux.elf.shell-entry.h : $(srcdir)/src/$$T.asm
|
||||
$(call tc,pp-nasm) --MMD=$@ $< -o tmp/$T.tmp1
|
||||
$(call tc,app-nasm) tmp/$T.tmp1 tmp/$T.tmp2
|
||||
$(call tc,nasm) -f bin -l tmp/$T.bin.lst tmp/$T.tmp2 -o tmp/$T.bin
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||
$(call tc,m-objcopy) --strip-unneeded tmp/$T.bin
|
||||
$(call tc,m-objcopy) -R .text -R .data -R .bss tmp/$T.bin
|
||||
$(call tc,m-objcopy) -R .note -R .comment tmp/$T.bin
|
||||
$(call tc,m-objdump) -trwh tmp/$T.bin >> tmp/$T.bin
|
||||
$(call tc,bin2h) --ident=linux_i386sh_loader tmp/$T.bin $@
|
||||
|
||||
i386-linux.elf.shell-fold.h : tmp/$$T.o tmp/i386-linux.elf.shell-main.o $(srcdir)/src/$$T.lds
|
||||
@ -566,7 +572,7 @@ i386-linux.elf.shell-fold.h : tmp/$$T.o tmp/i386-linux.elf.shell-main.o $(srcdir
|
||||
$(call tc,bin2h) --ident=linux_i386sh_fold tmp/$T.bin $@
|
||||
|
||||
tmp/i386-linux.elf.shell-fold.o : $(srcdir)/src/$$T.asm
|
||||
$(call tc,nasm) -f elf -l $@.lst $< -o $@
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
|
||||
$(call tc,objstrip) $@
|
||||
|
||||
tmp/i386-linux.elf.shell-main.o : $(srcdir)/src/$$T.c
|
||||
@ -680,9 +686,11 @@ tc.powerpc-linux.elf.objdump = $(call tc,m-objdump)
|
||||
tc.powerpc-linux.elf.objstrip = $(call tc,objcopy) -R .comment -R .note
|
||||
|
||||
powerpc-linux.elf-entry.h : $(srcdir)/src/$$T.S
|
||||
$(call tc,gcc) -c $< -o tmp/$T.o
|
||||
$(call tc,objstrip) tmp/$T.o
|
||||
$(call tc,ld) --oformat binary tmp/$T.o -o tmp/$T.bin
|
||||
$(call tc,gcc) -c $< -o tmp/$T.bin
|
||||
$(call tc,m-objcopy) --strip-unneeded tmp/$T.bin
|
||||
$(call tc,m-objcopy) -R .text -R .data -R .bss tmp/$T.bin
|
||||
$(call tc,m-objcopy) -R .note -R .comment tmp/$T.bin
|
||||
$(call tc,m-objdump) -trwh tmp/$T.bin >> tmp/$T.bin
|
||||
$(call tc,bin2h) --ident=linux_elfppc32_loader tmp/$T.bin $@
|
||||
|
||||
powerpc-linux.elf-fold.h : tmp/$$T.o tmp/powerpc-linux.elf-main.o $(srcdir)/src/$$T.lds
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/* amd64-linux.elf-entry.h -- created from amd64-linux.elf-entry.bin, 3066 (0xbfa) bytes
|
||||
/* amd64-linux.elf-entry.h -- created from amd64-linux.elf-entry.bin, 11892 (0x2e74) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -27,201 +27,753 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_ELF64AMD_LOADER_SIZE 3066
|
||||
#define LINUX_ELF64AMD_LOADER_ADLER32 0x7a3e6996
|
||||
#define LINUX_ELF64AMD_LOADER_CRC32 0x5bbfae22
|
||||
#define LINUX_ELF64AMD_LOADER_SIZE 11892
|
||||
#define LINUX_ELF64AMD_LOADER_ADLER32 0x4635c9f5
|
||||
#define LINUX_ELF64AMD_LOADER_CRC32 0x440aaf64
|
||||
|
||||
unsigned char linux_elf64amd_loader[3066] = {
|
||||
unsigned char linux_elf64amd_loader[11892] = {
|
||||
127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||
1, 0, 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 40, 3, 0, 0, 0, 0, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 6, 0, 3, 0, /* 0x 30 */
|
||||
232,178, 2, 0, 0, 85, 83, 81, 82, 72, 1,254, 86, 72,137,254, /* 0x 40 */
|
||||
72,137,215, 49,219, 49,201, 72,131,205,255,232,129, 1, 0, 0, /* 0x 50 */
|
||||
1,219,116, 2,243,195,139, 30, 72,131,238,252, 17,219,138, 22, /* 0x 60 */
|
||||
243,195, 72,141, 4, 47,131,249, 5,138, 16,118, 33, 72,131,253, /* 0x 70 */
|
||||
252,119, 27,131,233, 4,139, 16, 72,131,192, 4,131,233, 4,137, /* 0x 80 */
|
||||
23, 72,141,127, 4,115,239,131,193, 4,138, 16,116, 16, 72,255, /* 0x 90 */
|
||||
192,136, 23,131,233, 1,138, 16, 72,141,127, 1,117,240,243,195, /* 0x a0 */
|
||||
72,255,198,136, 23, 72,255,199,138, 22, 1,219,117, 10,139, 30, /* 0x b0 */
|
||||
72,131,238,252, 17,219,138, 22,114,230,141, 65, 1,235, 7,255, /* 0x c0 */
|
||||
200, 65,255,211, 17,192, 65,255,211, 17,192, 1,219,117, 10,139, /* 0x d0 */
|
||||
30, 72,131,238,252, 17,219,138, 22,115,228,131,232, 3,114, 29, /* 0x e0 */
|
||||
193,224, 8, 15,182,210, 9,208, 72,255,198,131,240,255, 15,132, /* 0x f0 */
|
||||
244, 0, 0, 0,209,248, 72, 99,232,114, 56,235, 14, 1,219,117, /* 0x 100 */
|
||||
8,139, 30, 72,131,238,252, 17,219,114, 40,255,193, 1,219,117, /* 0x 110 */
|
||||
8,139, 30, 72,131,238,252, 17,219,114, 24, 65,255,211, 17,201, /* 0x 120 */
|
||||
1,219,117, 8,139, 30, 72,131,238,252, 17,219,115,237,131,193, /* 0x 130 */
|
||||
2,235, 5, 65,255,211, 17,201, 72,129,253, 0,251,255,255,131, /* 0x 140 */
|
||||
209, 2,232, 27,255,255,255,233, 92,255,255,255, 0, 0, 0, 0, /* 0x 150 */
|
||||
72,255,198,136, 23, 72,255,199,138, 22, 1,219,117, 10,139, 30, /* 0x 160 */
|
||||
72,131,238,252, 17,219,138, 22,114,230,141, 65, 1, 65,255,211, /* 0x 170 */
|
||||
17,192, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22, /* 0x 180 */
|
||||
115,235,131,232, 3,114, 19,193,224, 8, 15,182,210, 9,208, 72, /* 0x 190 */
|
||||
255,198,131,240,255,116, 81, 72, 99,232,141, 65, 1, 65,255,211, /* 0x 1a0 */
|
||||
17,201, 65,255,211, 17,201,117, 24,137,193,131,192, 2, 65,255, /* 0x 1b0 */
|
||||
211, 17,201, 1,219,117, 8,139, 30, 72,131,238,252, 17,219,115, /* 0x 1c0 */
|
||||
237, 72,129,253, 0,243,255,255, 17,193,232,147,254,255,255,235, /* 0x 1d0 */
|
||||
135,252, 65, 91, 65,131,248, 8, 15,132,202,254,255,255, 65,131, /* 0x 1e0 */
|
||||
248, 2, 15,132,112,255,255,255, 89, 72,137,240, 72, 41,200, 90, /* 0x 1f0 */
|
||||
72, 41,215, 89,137, 57, 91, 93,195, 10, 36, 73,100, 58, 32, 85, /* 0x 200 */
|
||||
80, 88, 32, 40, 67, 41, 32, 49, 57, 57, 54, 45, 50, 48, 48, 54, /* 0x 210 */
|
||||
32,116,104,101, 32, 85, 80, 88, 32, 84,101, 97,109, 46, 32, 65, /* 0x 220 */
|
||||
108,108, 32, 82,105,103,104,116,115, 32, 82,101,115,101,114,118, /* 0x 230 */
|
||||
101,100, 46, 32,104,116,116,112, 58, 47, 47,117,112,120, 46,115, /* 0x 240 */
|
||||
102, 46,110,101,116, 32, 36, 10, 0,104, 30, 0, 0, 0, 90,232, /* 0x 250 */
|
||||
30, 0, 0, 0, 80, 82, 79, 84, 95, 69, 88, 69, 67,124, 80, 82, /* 0x 260 */
|
||||
79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105,108,101,100, 46, /* 0x 270 */
|
||||
10, 0, 94,106, 2, 95,106, 1, 88, 15, 5,106,127, 95,106, 60, /* 0x 280 */
|
||||
88, 15, 5, 91,191, 0, 0, 0, 0,106, 7, 90,190, 0, 0, 0, /* 0x 290 */
|
||||
0,106, 50, 65, 90, 69, 41,192,106, 9, 88, 15, 5, 57,199,117, /* 0x 2a0 */
|
||||
168,104, 0, 0, 0, 0,104, 0, 0, 0, 0,190, 0, 0, 0, 0, /* 0x 2b0 */
|
||||
104, 0, 0, 0, 0,185, 0, 0, 0, 0,104, 0, 0, 0, 0,104, /* 0x 2c0 */
|
||||
0, 0, 0, 0,137,250, 41,242, 1,213, 1,211,252,243, 72,165, /* 0x 2d0 */
|
||||
151,137,222, 80,146,173, 80, 72,137,225,173,151,173, 68, 15,182, /* 0x 2e0 */
|
||||
192,135,254,255,213, 89,195, 93,232,150,255,255,255, 0, 46,115, /* 0x 2f0 */
|
||||
121,109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115, /* 0x 300 */
|
||||
104,115,116,114,116, 97, 98, 0, 46,114,101,108, 97, 76, 69, 88, /* 0x 310 */
|
||||
69, 67, 48, 48, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 320 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 330 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 340 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 350 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, /* 0x 360 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 370 */
|
||||
64, 0, 0, 0, 0, 0, 0, 0,189, 2, 0, 0, 0, 0, 0, 0, /* 0x 380 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x 390 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, /* 0x 3a0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 3b0 */
|
||||
0, 6, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, /* 0x 3c0 */
|
||||
4, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x 3d0 */
|
||||
24, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, /* 0x 3e0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 3f0 */
|
||||
253, 2, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, /* 0x 400 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 410 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, /* 0x 420 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 430 */
|
||||
168, 4, 0, 0, 0, 0, 0, 0, 32, 1, 0, 0, 0, 0, 0, 0, /* 0x 440 */
|
||||
5, 0, 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x 450 */
|
||||
24, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, /* 0x 460 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 470 */
|
||||
200, 5, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, /* 0x 480 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x 490 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4a0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4b0 */
|
||||
0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4c0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 16, 0, 1, 0, /* 0x 4d0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4e0 */
|
||||
8, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 4f0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 16, 0, 0, 0, /* 0x 500 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 510 */
|
||||
18, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 520 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 16, 0, 0, 0, /* 0x 530 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 540 */
|
||||
28, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 550 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 16, 0, 0, 0, /* 0x 560 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 570 */
|
||||
38, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 580 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 16, 0, 0, 0, /* 0x 590 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 5a0 */
|
||||
48, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 5b0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 95,115,116, 97,114,116, 0, /* 0x 5c0 */
|
||||
65, 68, 82, 77, 0, 76, 69, 78, 77, 0, 74, 77, 80, 85, 0, 65, /* 0x 5d0 */
|
||||
68, 82, 85, 0, 65, 68, 82, 67, 0, 76, 69, 78, 85, 0, 67, 78, /* 0x 5e0 */
|
||||
84, 67, 0, 65, 68, 82, 88, 0, 76, 69, 78, 88, 0, 0, 0, 0, /* 0x 5f0 */
|
||||
85, 2, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 3, 0, 0, 0, /* 0x 600 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 93, 2, 0, 0, 0, 0, 0, 0, /* 0x 610 */
|
||||
10, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 620 */
|
||||
114, 2, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 5, 0, 0, 0, /* 0x 630 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,119, 2, 0, 0, 0, 0, 0, 0, /* 0x 640 */
|
||||
10, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 650 */
|
||||
124, 2, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 7, 0, 0, 0, /* 0x 660 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,129, 2, 0, 0, 0, 0, 0, 0, /* 0x 670 */
|
||||
10, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 680 */
|
||||
134, 2, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 9, 0, 0, 0, /* 0x 690 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,139, 2, 0, 0, 0, 0, 0, 0, /* 0x 6a0 */
|
||||
10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 6b0 */
|
||||
144, 2, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, /* 0x 6c0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 10,116,109,112, 47, 97,109,100, /* 0x 6d0 */
|
||||
54, 52, 45,108,105,110,117,120, 46,101,108,102, 45,101,110,116, /* 0x 6e0 */
|
||||
114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32,102,105,108,101, /* 0x 6f0 */
|
||||
32,102,111,114,109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, /* 0x 700 */
|
||||
54, 45, 54, 52, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, /* 0x 710 */
|
||||
73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x 720 */
|
||||
32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, /* 0x 730 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, /* 0x 740 */
|
||||
65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x 750 */
|
||||
70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, /* 0x 760 */
|
||||
70,108, 97,103,115, 10, 32, 32, 48, 32, 76, 69, 88, 69, 67, 48, /* 0x 770 */
|
||||
48, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 50, 98,100, /* 0x 780 */
|
||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 790 */
|
||||
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 7a0 */
|
||||
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, /* 0x 7b0 */
|
||||
50, 42, 42, 51, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x 7c0 */
|
||||
82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x 7d0 */
|
||||
83, 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, /* 0x 7e0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, /* 0x 7f0 */
|
||||
32, 32, 32, 32,100, 32, 32, 76, 69, 88, 69, 67, 48, 48, 48, 9, /* 0x 800 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 810 */
|
||||
32, 76, 69, 88, 69, 67, 48, 48, 48, 10, 48, 48, 48, 48, 48, 48, /* 0x 820 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, /* 0x 830 */
|
||||
32, 32, 32, 76, 69, 88, 69, 67, 48, 48, 48, 9, 48, 48, 48, 48, /* 0x 840 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, /* 0x 850 */
|
||||
97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 860 */
|
||||
48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, /* 0x 870 */
|
||||
68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 880 */
|
||||
48, 48, 48, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x 890 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x 8a0 */
|
||||
32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 8b0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, 77, 10, 48, 48, /* 0x 8c0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x 8d0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, /* 0x 8e0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 74, 77, /* 0x 8f0 */
|
||||
80, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 900 */
|
||||
48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, /* 0x 910 */
|
||||
42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 920 */
|
||||
48, 48, 32, 65, 68, 82, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 930 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x 940 */
|
||||
32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 950 */
|
||||
48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 67, 10, 48, 48, 48, /* 0x 960 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, /* 0x 970 */
|
||||
32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, /* 0x 980 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, /* 0x 990 */
|
||||
85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 9a0 */
|
||||
48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, /* 0x 9b0 */
|
||||
9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 9c0 */
|
||||
48, 32, 67, 78, 84, 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 9d0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x 9e0 */
|
||||
42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x 9f0 */
|
||||
48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 88, 10, 48, 48, 48, 48, /* 0x a00 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, /* 0x a10 */
|
||||
32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, /* 0x a20 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, 88, /* 0x a30 */
|
||||
10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x a40 */
|
||||
67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 69, 88, 69, 67, /* 0x a50 */
|
||||
48, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, /* 0x a60 */
|
||||
32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x a70 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, /* 0x a80 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 53, 53, /* 0x a90 */
|
||||
32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, /* 0x aa0 */
|
||||
32, 32, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x ab0 */
|
||||
48, 48, 48, 48, 48, 50, 53,100, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x ac0 */
|
||||
52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 77, 10, /* 0x ad0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 55, 50, /* 0x ae0 */
|
||||
32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, /* 0x af0 */
|
||||
32, 32, 32, 74, 77, 80, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x b00 */
|
||||
48, 48, 48, 48, 48, 50, 55, 55, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x b10 */
|
||||
52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 85, 10, /* 0x b20 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 55, 99, /* 0x b30 */
|
||||
32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, /* 0x b40 */
|
||||
32, 32, 32, 65, 68, 82, 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x b50 */
|
||||
48, 48, 48, 48, 48, 50, 56, 49, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x b60 */
|
||||
52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, 78, 85, 10, /* 0x b70 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 56, 54, /* 0x b80 */
|
||||
32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, /* 0x b90 */
|
||||
32, 32, 32, 67, 78, 84, 67, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x ba0 */
|
||||
48, 48, 48, 48, 48, 50, 56, 98, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x bb0 */
|
||||
52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, 82, 88, 10, /* 0x bc0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 50, 57, 48, /* 0x bd0 */
|
||||
32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, /* 0x be0 */
|
||||
32, 32, 32, 76, 69, 78, 88, 10, 10, 10 /* 0x bf0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,216, 23, 0, 0, 0, 0, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 20, 0, 17, 0, /* 0x 30 */
|
||||
232, 0, 0, 0, 0, 85, 83, 81, 82, 72, 1,254, 86, 0, 0, 0, /* 0x 40 */
|
||||
72,137,254, 72,137,215, 49,219, 49,201, 72,131,205,255,232, 85, /* 0x 50 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1,219,116, 2,243,195,139, 30, /* 0x 60 */
|
||||
72,131,238,252, 17,219,138, 22,243,195, 72,141, 4, 47,131,249, /* 0x 70 */
|
||||
5,138, 16,118, 33, 72,131,253,252,119, 27,131,233, 4,139, 16, /* 0x 80 */
|
||||
72,131,192, 4,131,233, 4,137, 23, 72,141,127, 4,115,239,131, /* 0x 90 */
|
||||
193, 4,138, 16,116, 16, 72,255,192,136, 23,131,233, 1,138, 16, /* 0x a0 */
|
||||
72,141,127, 1,117,240,243,195,252, 65, 91, 0, 0, 0, 0, 0, /* 0x b0 */
|
||||
65,128,248, 8,116, 18,233,177, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x c0 */
|
||||
72,255,198,136, 23, 72,255,199,138, 22, 1,219,117, 10,139, 30, /* 0x d0 */
|
||||
72,131,238,252, 17,219,138, 22,114,230,141, 65, 1,235, 7,255, /* 0x e0 */
|
||||
200, 65,255,211, 17,192, 65,255,211, 17,192, 1,219,117, 10,139, /* 0x f0 */
|
||||
30, 72,131,238,252, 17,219,138, 22,115,228,131,232, 3,114, 29, /* 0x 100 */
|
||||
193,224, 8, 15,182,210, 9,208, 72,255,198,131,240,255, 15,132, /* 0x 110 */
|
||||
0, 0, 0, 0,209,248, 72, 99,232,114, 56,235, 14, 1,219,117, /* 0x 120 */
|
||||
8,139, 30, 72,131,238,252, 17,219,114, 40,255,193, 1,219,117, /* 0x 130 */
|
||||
8,139, 30, 72,131,238,252, 17,219,114, 24, 65,255,211, 17,201, /* 0x 140 */
|
||||
1,219,117, 8,139, 30, 72,131,238,252, 17,219,115,237,131,193, /* 0x 150 */
|
||||
2,235, 5, 65,255,211, 17,201, 72,129,253, 0,251,255,255,131, /* 0x 160 */
|
||||
209, 2,232, 0, 0, 0, 0,233, 92,255,255,255, 0, 0, 0, 0, /* 0x 170 */
|
||||
65,128,248, 2,116, 18,233,138, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 180 */
|
||||
72,255,198,136, 23, 72,255,199,138, 22, 1,219,117, 10,139, 30, /* 0x 190 */
|
||||
72,131,238,252, 17,219,138, 22,114,230,141, 65, 1, 65,255,211, /* 0x 1a0 */
|
||||
17,192, 1,219,117, 10,139, 30, 72,131,238,252, 17,219,138, 22, /* 0x 1b0 */
|
||||
115,235,131,232, 3,114, 23,193,224, 8, 15,182,210, 9,208, 72, /* 0x 1c0 */
|
||||
255,198,131,240,255, 15,132, 0, 0, 0, 0, 72, 99,232,141, 65, /* 0x 1d0 */
|
||||
1, 65,255,211, 17,201, 65,255,211, 17,201,117, 24,137,193,131, /* 0x 1e0 */
|
||||
192, 2, 65,255,211, 17,201, 1,219,117, 8,139, 30, 72,131,238, /* 0x 1f0 */
|
||||
252, 17,219,115,237, 72,129,253, 0,243,255,255, 17,193,232, 0, /* 0x 200 */
|
||||
0, 0, 0,235,131, 65,128,248, 14, 15,133, 0, 0, 0, 0, 85, /* 0x 210 */
|
||||
72,137,229, 68,139, 9, 73,137,208, 72,137,242, 72,141,119, 2, /* 0x 220 */
|
||||
86,138, 7,255,202,136,193, 36, 7,192,233, 3, 72,199,195, 0, /* 0x 230 */
|
||||
253,255,255, 72,211,227,136,193, 72,141,156, 92,136,241,255,255, /* 0x 240 */
|
||||
72,131,227,192,106, 0, 72, 57,220,117,249, 83, 72,141,123, 8, /* 0x 250 */
|
||||
138, 78,255,255,202,136, 71, 2,136,200,192,233, 4,136, 79, 1, /* 0x 260 */
|
||||
36, 15,136, 7, 72,141, 79,252, 80, 65, 87, 72,141, 71, 4, 69, /* 0x 270 */
|
||||
49,255, 65, 86, 65,190, 1, 0, 0, 0, 65, 85, 69, 49,237, 65, /* 0x 280 */
|
||||
84, 85, 83, 72,137, 76, 36,240, 72,137, 68, 36,216,184, 1, 0, /* 0x 290 */
|
||||
0, 0, 72,137,116, 36,248, 76,137, 68, 36,232,137,195, 68,137, /* 0x 2a0 */
|
||||
76, 36,228, 15,182, 79, 2,211,227,137,217, 72,139, 92, 36, 56, /* 0x 2b0 */
|
||||
255,201,137, 76, 36,212, 15,182, 79, 1,211,224, 72,139, 76, 36, /* 0x 2c0 */
|
||||
240,255,200,137, 68, 36,208, 15,182, 7,199, 1, 0, 0, 0, 0, /* 0x 2d0 */
|
||||
199, 68, 36,200, 0, 0, 0, 0,199, 68, 36,196, 1, 0, 0, 0, /* 0x 2e0 */
|
||||
199, 68, 36,192, 1, 0, 0, 0,199, 68, 36,188, 1, 0, 0, 0, /* 0x 2f0 */
|
||||
199, 3, 0, 0, 0, 0,137, 68, 36,204, 15,182, 79, 1, 1,193, /* 0x 300 */
|
||||
184, 0, 3, 0, 0,211,224, 49,201,141,184, 54, 7, 0, 0, 65, /* 0x 310 */
|
||||
57,255,115, 19, 72,139, 92, 36,216,137,200,255,193, 57,249,102, /* 0x 320 */
|
||||
199, 4, 67, 0, 4,235,235, 72,139,124, 36,248,137,208, 69, 49, /* 0x 330 */
|
||||
210, 65,131,203,255, 49,210, 73,137,252, 73, 1,196, 76, 57,231, /* 0x 340 */
|
||||
15,132,239, 8, 0, 0, 15,182, 7, 65,193,226, 8,255,194, 72, /* 0x 350 */
|
||||
255,199, 65, 9,194,131,250, 4,126,227, 68, 59,124, 36,228, 15, /* 0x 360 */
|
||||
131,218, 8, 0, 0,139, 68, 36,212, 72, 99, 92, 36,200, 72,139, /* 0x 370 */
|
||||
84, 36,216, 68, 33,248,137, 68, 36,184, 72, 99,108, 36,184, 72, /* 0x 380 */
|
||||
137,216, 72,193,224, 4, 72, 1,232, 65,129,251,255,255,255, 0, /* 0x 390 */
|
||||
76,141, 12, 66,119, 26, 76, 57,231, 15,132,150, 8, 0, 0, 15, /* 0x 3a0 */
|
||||
182, 7, 65,193,226, 8, 65,193,227, 8, 72,255,199, 65, 9,194, /* 0x 3b0 */
|
||||
65, 15,183, 17, 68,137,216,193,232, 11, 15,183,202, 15,175,193, /* 0x 3c0 */
|
||||
65, 57,194, 15,131,197, 1, 0, 0, 65,137,195,184, 0, 8, 0, /* 0x 3d0 */
|
||||
0, 72,139, 92, 36,216, 41,200, 15,182, 76, 36,204,190, 1, 0, /* 0x 3e0 */
|
||||
0, 0,193,248, 5,141, 4, 2, 65, 15,182,213,102, 65,137, 1, /* 0x 3f0 */
|
||||
139, 68, 36,208, 68, 33,248,211,224,185, 8, 0, 0, 0, 43, 76, /* 0x 400 */
|
||||
36,204,211,250, 1,208,105,192, 0, 3, 0, 0,131,124, 36,200, /* 0x 410 */
|
||||
6,137,192, 76,141,140, 67,108, 14, 0, 0, 15,142,184, 0, 0, /* 0x 420 */
|
||||
0, 72,139, 84, 36,232, 68,137,248, 68, 41,240, 15,182, 44, 2, /* 0x 430 */
|
||||
1,237, 72, 99,214,137,235,129,227, 0, 1, 0, 0, 65,129,251, /* 0x 440 */
|
||||
255,255,255, 0, 72, 99,195, 73,141, 4, 65, 76,141, 4, 80,119, /* 0x 450 */
|
||||
26, 76, 57,231, 15,132,219, 7, 0, 0, 15,182, 7, 65,193,226, /* 0x 460 */
|
||||
8, 65,193,227, 8, 72,255,199, 65, 9,194, 65, 15,183,144, 0, /* 0x 470 */
|
||||
2, 0, 0, 68,137,216,193,232, 11, 15,183,202, 15,175,193, 65, /* 0x 480 */
|
||||
57,194,115, 32, 65,137,195,184, 0, 8, 0, 0, 1,246, 41,200, /* 0x 490 */
|
||||
193,248, 5,133,219,141, 4, 2,102, 65,137,128, 0, 2, 0, 0, /* 0x 4a0 */
|
||||
116, 33,235, 45, 65, 41,195, 65, 41,194,137,208,102,193,232, 5, /* 0x 4b0 */
|
||||
141,116, 54, 1,102, 41,194,133,219,102, 65,137,144, 0, 2, 0, /* 0x 4c0 */
|
||||
0,116, 14,129,254,255, 0, 0, 0, 15,142, 97,255,255,255,235, /* 0x 4d0 */
|
||||
120,129,254,255, 0, 0, 0,127,112, 72, 99,198, 65,129,251,255, /* 0x 4e0 */
|
||||
255,255, 0, 77,141, 4, 65,119, 26, 76, 57,231, 15,132, 67, 7, /* 0x 4f0 */
|
||||
0, 0, 15,182, 7, 65,193,226, 8, 65,193,227, 8, 72,255,199, /* 0x 500 */
|
||||
65, 9,194, 65, 15,183, 16, 68,137,216,193,232, 11, 15,183,202, /* 0x 510 */
|
||||
15,175,193, 65, 57,194,115, 24, 65,137,195,184, 0, 8, 0, 0, /* 0x 520 */
|
||||
1,246, 41,200,193,248, 5,141, 4, 2,102, 65,137, 0,235,161, /* 0x 530 */
|
||||
65, 41,195, 65, 41,194,137,208,102,193,232, 5,141,116, 54, 1, /* 0x 540 */
|
||||
102, 41,194,102, 65,137, 16,235,136, 72,139, 76, 36,232, 68,137, /* 0x 550 */
|
||||
248, 65,255,199, 65,137,245, 64,136, 52, 1,131,124, 36,200, 3, /* 0x 560 */
|
||||
127, 13,199, 68, 36,200, 0, 0, 0, 0,233,166, 6, 0, 0,139, /* 0x 570 */
|
||||
84, 36,200,139, 68, 36,200,131,234, 3,131,232, 6,131,124, 36, /* 0x 580 */
|
||||
200, 9, 15, 79,208,137, 84, 36,200,233,135, 6, 0, 0, 65, 41, /* 0x 590 */
|
||||
195, 65, 41,194,137,208,102,193,232, 5,102, 41,194, 72,139, 68, /* 0x 5a0 */
|
||||
36,216, 65,129,251,255,255,255, 0,102, 65,137, 17, 72,141, 52, /* 0x 5b0 */
|
||||
88,119, 26, 76, 57,231, 15,132,121, 6, 0, 0, 15,182, 7, 65, /* 0x 5c0 */
|
||||
193,226, 8, 65,193,227, 8, 72,255,199, 65, 9,194, 15,183,150, /* 0x 5d0 */
|
||||
128, 1, 0, 0, 68,137,216,193,232, 11, 15,183,202, 15,175,193, /* 0x 5e0 */
|
||||
65, 57,194,115, 78, 65,137,195,184, 0, 8, 0, 0, 76,139, 76, /* 0x 5f0 */
|
||||
36,216, 41,200,139, 76, 36,196, 68,137,116, 36,196,193,248, 5, /* 0x 600 */
|
||||
141, 4, 2,139, 84, 36,192,137, 76, 36,192,102,137,134,128, 1, /* 0x 610 */
|
||||
0, 0, 49,192,131,124, 36,200, 6,137, 84, 36,188, 15,159,192, /* 0x 620 */
|
||||
73,129,193,100, 6, 0, 0,141, 4, 64,137, 68, 36,200,233, 84, /* 0x 630 */
|
||||
2, 0, 0, 65, 41,195, 65, 41,194,137,208,102,193,232, 5,102, /* 0x 640 */
|
||||
41,194, 65,129,251,255,255,255, 0,102,137,150,128, 1, 0, 0, /* 0x 650 */
|
||||
119, 26, 76, 57,231, 15,132,218, 5, 0, 0, 15,182, 7, 65,193, /* 0x 660 */
|
||||
226, 8, 65,193,227, 8, 72,255,199, 65, 9,194, 15,183,150,152, /* 0x 670 */
|
||||
1, 0, 0, 68,137,216,193,232, 11, 15,183,202, 15,175,193, 65, /* 0x 680 */
|
||||
57,194, 15,131,208, 0, 0, 0, 65,184, 0, 8, 0, 0, 65,137, /* 0x 690 */
|
||||
195, 72,193,227, 5, 68,137,192, 41,200,193,248, 5,141, 4, 2, /* 0x 6a0 */
|
||||
102,137,134,152, 1, 0, 0, 72,139, 68, 36,216, 72, 1,216, 65, /* 0x 6b0 */
|
||||
129,251,255,255,255, 0, 72,141, 52,104,119, 26, 76, 57,231, 15, /* 0x 6c0 */
|
||||
132,112, 5, 0, 0, 15,182, 7, 65,193,226, 8, 65,193,227, 8, /* 0x 6d0 */
|
||||
72,255,199, 65, 9,194, 15,183,150,224, 1, 0, 0, 68,137,216, /* 0x 6e0 */
|
||||
193,232, 11, 15,183,202, 15,175,193, 65, 57,194,115, 79, 65, 41, /* 0x 6f0 */
|
||||
200, 65,137,195, 65,193,248, 5, 69,133,255, 66,141, 4, 2,102, /* 0x 700 */
|
||||
137,134,224, 1, 0, 0, 15,132, 41, 5, 0, 0, 49,192,131,124, /* 0x 710 */
|
||||
36,200, 6, 72,139, 92, 36,232, 15,159,192,141, 68, 0, 9,137, /* 0x 720 */
|
||||
68, 36,200, 68,137,248, 68, 41,240, 68, 15,182, 44, 3, 68,137, /* 0x 730 */
|
||||
248, 65,255,199, 68,136, 44, 3,233,216, 4, 0, 0, 65, 41,195, /* 0x 740 */
|
||||
65, 41,194,137,208,102,193,232, 5,102, 41,194,102,137,150,224, /* 0x 750 */
|
||||
1, 0, 0,233, 17, 1, 0, 0, 65, 41,195, 65, 41,194,137,208, /* 0x 760 */
|
||||
102,193,232, 5,102, 41,194, 65,129,251,255,255,255, 0,102,137, /* 0x 770 */
|
||||
150,152, 1, 0, 0,119, 26, 76, 57,231, 15,132,181, 4, 0, 0, /* 0x 780 */
|
||||
15,182, 7, 65,193,226, 8, 65,193,227, 8, 72,255,199, 65, 9, /* 0x 790 */
|
||||
194, 15,183,150,176, 1, 0, 0, 68,137,216,193,232, 11, 15,183, /* 0x 7a0 */
|
||||
202, 15,175,193, 65, 57,194,115, 32, 65,137,195,184, 0, 8, 0, /* 0x 7b0 */
|
||||
0, 41,200,193,248, 5,141, 4, 2,102,137,134,176, 1, 0, 0, /* 0x 7c0 */
|
||||
139, 68, 36,196,233,152, 0, 0, 0, 65, 41,195, 65, 41,194,137, /* 0x 7d0 */
|
||||
208,102,193,232, 5,102, 41,194, 65,129,251,255,255,255, 0,102, /* 0x 7e0 */
|
||||
137,150,176, 1, 0, 0,119, 26, 76, 57,231, 15,132, 68, 4, 0, /* 0x 7f0 */
|
||||
0, 15,182, 7, 65,193,226, 8, 65,193,227, 8, 72,255,199, 65, /* 0x 800 */
|
||||
9,194, 15,183,150,200, 1, 0, 0, 68,137,216,193,232, 11, 15, /* 0x 810 */
|
||||
183,202, 15,175,193, 65, 57,194,115, 29, 65,137,195,184, 0, 8, /* 0x 820 */
|
||||
0, 0, 41,200,193,248, 5,141, 4, 2,102,137,134,200, 1, 0, /* 0x 830 */
|
||||
0,139, 68, 36,192,235, 34, 65, 41,195, 65, 41,194,137,208,102, /* 0x 840 */
|
||||
193,232, 5,102, 41,194,139, 68, 36,188,102,137,150,200, 1, 0, /* 0x 850 */
|
||||
0,139, 84, 36,192,137, 84, 36,188,139, 76, 36,196,137, 76, 36, /* 0x 860 */
|
||||
192, 68,137,116, 36,196, 65,137,198, 49,192,131,124, 36,200, 6, /* 0x 870 */
|
||||
76,139, 76, 36,216, 15,159,192, 73,129,193,104, 10, 0, 0,141, /* 0x 880 */
|
||||
68, 64, 8,137, 68, 36,200, 65,129,251,255,255,255, 0,119, 26, /* 0x 890 */
|
||||
76, 57,231, 15,132,156, 3, 0, 0, 15,182, 7, 65,193,226, 8, /* 0x 8a0 */
|
||||
65,193,227, 8, 72,255,199, 65, 9,194, 65, 15,183, 17, 68,137, /* 0x 8b0 */
|
||||
216,193,232, 11, 15,183,202, 15,175,193, 65, 57,194,115, 39, 65, /* 0x 8c0 */
|
||||
137,195,184, 0, 8, 0, 0, 69, 49,237, 41,200,193,248, 5,141, /* 0x 8d0 */
|
||||
4, 2,102, 65,137, 1, 72, 99, 68, 36,184, 72,193,224, 4, 77, /* 0x 8e0 */
|
||||
141, 68, 1, 4,235,120, 65, 41,195, 65, 41,194,137,208,102,193, /* 0x 8f0 */
|
||||
232, 5,102, 41,194, 65,129,251,255,255,255, 0,102, 65,137, 17, /* 0x 900 */
|
||||
119, 26, 76, 57,231, 15,132, 42, 3, 0, 0, 15,182, 7, 65,193, /* 0x 910 */
|
||||
226, 8, 65,193,227, 8, 72,255,199, 65, 9,194, 65, 15,183, 81, /* 0x 920 */
|
||||
2, 68,137,216,193,232, 11, 15,183,202, 15,175,193, 65, 57,194, /* 0x 930 */
|
||||
115, 52, 65,137,195,184, 0, 8, 0, 0, 65,189, 8, 0, 0, 0, /* 0x 940 */
|
||||
41,200,193,248, 5,141, 4, 2,102, 65,137, 65, 2, 72, 99, 68, /* 0x 950 */
|
||||
36,184, 72,193,224, 4, 77,141,132, 1, 4, 1, 0, 0, 65,185, /* 0x 960 */
|
||||
3, 0, 0, 0,235, 39, 65, 41,195, 65, 41,194,137,208,102,193, /* 0x 970 */
|
||||
232, 5, 77,141,129, 4, 2, 0, 0, 65,189, 16, 0, 0, 0,102, /* 0x 980 */
|
||||
41,194,102, 65,137, 81, 2, 65,185, 8, 0, 0, 0, 68,137,203, /* 0x 990 */
|
||||
189, 1, 0, 0, 0, 72, 99,197, 65,129,251,255,255,255, 0, 73, /* 0x 9a0 */
|
||||
141, 52, 64,119, 26, 76, 57,231, 15,132,135, 2, 0, 0, 15,182, /* 0x 9b0 */
|
||||
7, 65,193,226, 8, 65,193,227, 8, 72,255,199, 65, 9,194, 15, /* 0x 9c0 */
|
||||
183, 14, 68,137,216,193,232, 11, 15,183,209, 15,175,194, 65, 57, /* 0x 9d0 */
|
||||
194,115, 23, 65,137,195,184, 0, 8, 0, 0, 1,237, 41,208,193, /* 0x 9e0 */
|
||||
248, 5,141, 4, 1,102,137, 6,235, 22, 65, 41,195, 65, 41,194, /* 0x 9f0 */
|
||||
137,200,102,193,232, 5,141,108, 45, 1,102, 41,193,102,137, 14, /* 0x a00 */
|
||||
255,203,117,145,184, 1, 0, 0, 0, 68,137,201,211,224, 41,197, /* 0x a10 */
|
||||
68, 1,237,131,124, 36,200, 3, 15,143,194, 1, 0, 0,131, 68, /* 0x a20 */
|
||||
36,200, 7,184, 3, 0, 0, 0,131,253, 4, 15, 76,197, 72,139, /* 0x a30 */
|
||||
92, 36,216, 65,184, 1, 0, 0, 0, 72,152, 72,193,224, 7, 76, /* 0x a40 */
|
||||
141,140, 3, 96, 3, 0, 0,187, 6, 0, 0, 0, 73, 99,192, 65, /* 0x a50 */
|
||||
129,251,255,255,255, 0, 73,141, 52, 65,119, 26, 76, 57,231, 15, /* 0x a60 */
|
||||
132,208, 1, 0, 0, 15,182, 7, 65,193,226, 8, 65,193,227, 8, /* 0x a70 */
|
||||
72,255,199, 65, 9,194, 15,183, 22, 68,137,216,193,232, 11, 15, /* 0x a80 */
|
||||
183,202, 15,175,193, 65, 57,194,115, 24, 65,137,195,184, 0, 8, /* 0x a90 */
|
||||
0, 0, 69, 1,192, 41,200,193,248, 5,141, 4, 2,102,137, 6, /* 0x aa0 */
|
||||
235, 23, 65, 41,195, 65, 41,194,137,208,102,193,232, 5, 71,141, /* 0x ab0 */
|
||||
68, 0, 1,102, 41,194,102,137, 22,255,203,117,143, 65,131,232, /* 0x ac0 */
|
||||
64, 65,131,248, 3, 69,137,198, 15,142, 13, 1, 0, 0, 65,131, /* 0x ad0 */
|
||||
230, 1, 68,137,192,209,248, 65,131,206, 2, 65,131,248, 13,141, /* 0x ae0 */
|
||||
112,255,127, 35,137,241, 72,139, 92, 36,216, 73, 99,192, 65,211, /* 0x af0 */
|
||||
230, 72, 1,192, 68,137,242, 72,141, 20, 83, 72, 41,194, 76,141, /* 0x b00 */
|
||||
138, 94, 5, 0, 0,235, 81,141,112,251, 65,129,251,255,255,255, /* 0x b10 */
|
||||
0,119, 26, 76, 57,231, 15,132, 25, 1, 0, 0, 15,182, 7, 65, /* 0x b20 */
|
||||
193,226, 8, 65,193,227, 8, 72,255,199, 65, 9,194, 65,209,235, /* 0x b30 */
|
||||
69, 1,246, 69, 57,218,114, 7, 69, 41,218, 65,131,206, 1,255, /* 0x b40 */
|
||||
206,117,199, 76,139, 76, 36,216, 65,193,230, 4,190, 4, 0, 0, /* 0x b50 */
|
||||
0, 73,129,193, 68, 6, 0, 0, 65,189, 1, 0, 0, 0,187, 1, /* 0x b60 */
|
||||
0, 0, 0, 72, 99,195, 65,129,251,255,255,255, 0, 77,141, 4, /* 0x b70 */
|
||||
65,119, 26, 76, 57,231, 15,132,185, 0, 0, 0, 15,182, 7, 65, /* 0x b80 */
|
||||
193,226, 8, 65,193,227, 8, 72,255,199, 65, 9,194, 65, 15,183, /* 0x b90 */
|
||||
16, 68,137,216,193,232, 11, 15,183,202, 15,175,193, 65, 57,194, /* 0x ba0 */
|
||||
115, 24, 65,137,195,184, 0, 8, 0, 0, 1,219, 41,200,193,248, /* 0x bb0 */
|
||||
5,141, 4, 2,102, 65,137, 0,235, 26, 65, 41,195, 65, 41,194, /* 0x bc0 */
|
||||
137,208,102,193,232, 5,141, 92, 27, 1, 69, 9,238,102, 41,194, /* 0x bd0 */
|
||||
102, 65,137, 16, 69, 1,237,255,206,117,136, 65,255,198,116, 64, /* 0x be0 */
|
||||
131,197, 2, 69, 57,254,119, 77, 72,139, 84, 36,232, 68,137,248, /* 0x bf0 */
|
||||
68, 41,240, 68, 15,182, 44, 2, 68,137,248, 65,255,199,255,205, /* 0x c00 */
|
||||
68,136, 44, 2, 15,149,194, 49,192, 68, 59,124, 36,228, 15,146, /* 0x c10 */
|
||||
192,133,194,117,211, 68, 59,124, 36,228, 15,130, 69,247,255,255, /* 0x c20 */
|
||||
65,129,251,255,255,255, 0,119, 22, 76, 57,231,184, 1, 0, 0, /* 0x c30 */
|
||||
0,116, 35,235, 7,184, 1, 0, 0, 0,235, 26, 72,255,199,137, /* 0x c40 */
|
||||
248, 43, 68, 36,248, 72,139, 76, 36,240, 72,139, 92, 36, 56,137, /* 0x c50 */
|
||||
1, 68,137, 59, 49,192, 91, 93, 65, 92, 65, 93, 65, 94, 65, 95, /* 0x c60 */
|
||||
65, 87, 72,141, 71, 4, 69, 49,255, 65, 86, 65,190, 1, 0, 0, /* 0x c70 */
|
||||
0, 65, 85, 69, 49,237, 65, 84, 85, 83, 72,137, 76, 36,240, 72, /* 0x c80 */
|
||||
137, 68, 36,216,184, 1, 0, 0, 0, 72,137,116, 36,248, 76,137, /* 0x c90 */
|
||||
68, 36,232,137,195, 68,137, 76, 36,228, 15,182, 79, 2,211,227, /* 0x ca0 */
|
||||
137,217, 72,139, 92, 36, 56,255,201,137, 76, 36,212, 15,182, 79, /* 0x cb0 */
|
||||
1,211,224, 72,139, 76, 36,240,255,200,137, 68, 36,208, 15,182, /* 0x cc0 */
|
||||
7,199, 1, 0, 0, 0, 0,199, 68, 36,200, 0, 0, 0, 0,199, /* 0x cd0 */
|
||||
68, 36,196, 1, 0, 0, 0,199, 68, 36,192, 1, 0, 0, 0,199, /* 0x ce0 */
|
||||
68, 36,188, 1, 0, 0, 0,199, 3, 0, 0, 0, 0,137, 68, 36, /* 0x cf0 */
|
||||
204, 15,182, 79, 1, 1,193,184, 0, 3, 0, 0,211,224, 49,201, /* 0x d00 */
|
||||
141,184, 54, 7, 0, 0, 65, 57,255,115, 19, 72,139, 92, 36,216, /* 0x d10 */
|
||||
137,200,255,193, 57,249,102,199, 4, 67, 0, 4,235,235, 72,139, /* 0x d20 */
|
||||
124, 36,248,137,208, 69, 49,210, 65,131,203,255, 49,210, 73,137, /* 0x d30 */
|
||||
252, 73, 1,196, 76, 57,231, 15,132,239, 8, 0, 0, 15,182, 7, /* 0x d40 */
|
||||
65,193,226, 8,255,194, 72,255,199, 65, 9,194,131,250, 4,126, /* 0x d50 */
|
||||
227, 68, 59,124, 36,228, 15,131,218, 8, 0, 0,139, 68, 36,212, /* 0x d60 */
|
||||
72, 99, 92, 36,200, 72,139, 84, 36,216, 68, 33,248,137, 68, 36, /* 0x d70 */
|
||||
184, 72, 99,108, 36,184, 72,137,216, 72,193,224, 4, 72, 1,232, /* 0x d80 */
|
||||
65,129,251,255,255,255, 0, 76,141, 12, 66,119, 26, 76, 57,231, /* 0x d90 */
|
||||
15,132,150, 8, 0, 0, 15,182, 7, 65,193,226, 8, 65,193,227, /* 0x da0 */
|
||||
8, 72,255,199, 65, 9,194, 65, 15,183, 17, 68,137,216,193,232, /* 0x db0 */
|
||||
11, 15,183,202, 15,175,193, 65, 57,194, 15,131,197, 1, 0, 0, /* 0x dc0 */
|
||||
65,137,195,184, 0, 8, 0, 0, 72,139, 92, 36,216, 41,200, 15, /* 0x dd0 */
|
||||
182, 76, 36,204,190, 1, 0, 0, 0,193,248, 5,141, 4, 2, 65, /* 0x de0 */
|
||||
15,182,213,102, 65,137, 1,139, 68, 36,208, 68, 33,248,211,224, /* 0x df0 */
|
||||
185, 8, 0, 0, 0, 43, 76, 36,204,211,250, 1,208,105,192, 0, /* 0x e00 */
|
||||
3, 0, 0,131,124, 36,200, 6,137,192, 76,141,140, 67,108, 14, /* 0x e10 */
|
||||
0, 0, 15,142,184, 0, 0, 0, 72,139, 84, 36,232, 68,137,248, /* 0x e20 */
|
||||
68, 41,240, 15,182, 44, 2, 1,237, 72, 99,214,137,235,129,227, /* 0x e30 */
|
||||
0, 1, 0, 0, 65,129,251,255,255,255, 0, 72, 99,195, 73,141, /* 0x e40 */
|
||||
4, 65, 76,141, 4, 80,119, 26, 76, 57,231, 15,132,219, 7, 0, /* 0x e50 */
|
||||
0, 15,182, 7, 65,193,226, 8, 65,193,227, 8, 72,255,199, 65, /* 0x e60 */
|
||||
9,194, 65, 15,183,144, 0, 2, 0, 0, 68,137,216,193,232, 11, /* 0x e70 */
|
||||
15,183,202, 15,175,193, 65, 57,194,115, 32, 65,137,195,184, 0, /* 0x e80 */
|
||||
8, 0, 0, 1,246, 41,200,193,248, 5,133,219,141, 4, 2,102, /* 0x e90 */
|
||||
65,137,128, 0, 2, 0, 0,116, 33,235, 45, 65, 41,195, 65, 41, /* 0x ea0 */
|
||||
194,137,208,102,193,232, 5,141,116, 54, 1,102, 41,194,133,219, /* 0x eb0 */
|
||||
102, 65,137,144, 0, 2, 0, 0,116, 14,129,254,255, 0, 0, 0, /* 0x ec0 */
|
||||
15,142, 97,255,255,255,235,120,129,254,255, 0, 0, 0,127,112, /* 0x ed0 */
|
||||
72, 99,198, 65,129,251,255,255,255, 0, 77,141, 4, 65,119, 26, /* 0x ee0 */
|
||||
76, 57,231, 15,132, 67, 7, 0, 0, 15,182, 7, 65,193,226, 8, /* 0x ef0 */
|
||||
65,193,227, 8, 72,255,199, 65, 9,194, 65, 15,183, 16, 68,137, /* 0x f00 */
|
||||
216,193,232, 11, 15,183,202, 15,175,193, 65, 57,194,115, 24, 65, /* 0x f10 */
|
||||
137,195,184, 0, 8, 0, 0, 1,246, 41,200,193,248, 5,141, 4, /* 0x f20 */
|
||||
2,102, 65,137, 0,235,161, 65, 41,195, 65, 41,194,137,208,102, /* 0x f30 */
|
||||
193,232, 5,141,116, 54, 1,102, 41,194,102, 65,137, 16,235,136, /* 0x f40 */
|
||||
72,139, 76, 36,232, 68,137,248, 65,255,199, 65,137,245, 64,136, /* 0x f50 */
|
||||
52, 1,131,124, 36,200, 3,127, 13,199, 68, 36,200, 0, 0, 0, /* 0x f60 */
|
||||
0,233,166, 6, 0, 0,139, 84, 36,200,139, 68, 36,200,131,234, /* 0x f70 */
|
||||
3,131,232, 6,131,124, 36,200, 9, 15, 79,208,137, 84, 36,200, /* 0x f80 */
|
||||
233,135, 6, 0, 0, 65, 41,195, 65, 41,194,137,208,102,193,232, /* 0x f90 */
|
||||
5,102, 41,194, 72,139, 68, 36,216, 65,129,251,255,255,255, 0, /* 0x fa0 */
|
||||
102, 65,137, 17, 72,141, 52, 88,119, 26, 76, 57,231, 15,132,121, /* 0x fb0 */
|
||||
6, 0, 0, 15,182, 7, 65,193,226, 8, 65,193,227, 8, 72,255, /* 0x fc0 */
|
||||
199, 65, 9,194, 15,183,150,128, 1, 0, 0, 68,137,216,193,232, /* 0x fd0 */
|
||||
11, 15,183,202, 15,175,193, 65, 57,194,115, 78, 65,137,195,184, /* 0x fe0 */
|
||||
0, 8, 0, 0, 76,139, 76, 36,216, 41,200,139, 76, 36,196, 68, /* 0x ff0 */
|
||||
137,116, 36,196,193,248, 5,141, 4, 2,139, 84, 36,192,137, 76, /* 0x1000 */
|
||||
36,192,102,137,134,128, 1, 0, 0, 49,192,131,124, 36,200, 6, /* 0x1010 */
|
||||
137, 84, 36,188, 15,159,192, 73,129,193,100, 6, 0, 0,141, 4, /* 0x1020 */
|
||||
64,137, 68, 36,200,233, 84, 2, 0, 0, 65, 41,195, 65, 41,194, /* 0x1030 */
|
||||
137,208,102,193,232, 5,102, 41,194, 65,129,251,255,255,255, 0, /* 0x1040 */
|
||||
102,137,150,128, 1, 0, 0,119, 26, 76, 57,231, 15,132,218, 5, /* 0x1050 */
|
||||
0, 0, 15,182, 7, 65,193,226, 8, 65,193,227, 8, 72,255,199, /* 0x1060 */
|
||||
65, 9,194, 15,183,150,152, 1, 0, 0, 68,137,216,193,232, 11, /* 0x1070 */
|
||||
15,183,202, 15,175,193, 65, 57,194, 15,131,208, 0, 0, 0, 65, /* 0x1080 */
|
||||
184, 0, 8, 0, 0, 65,137,195, 72,193,227, 5, 68,137,192, 41, /* 0x1090 */
|
||||
200,193,248, 5,141, 4, 2,102,137,134,152, 1, 0, 0, 72,139, /* 0x10a0 */
|
||||
68, 36,216, 72, 1,216, 65,129,251,255,255,255, 0, 72,141, 52, /* 0x10b0 */
|
||||
104,119, 26, 76, 57,231, 15,132,112, 5, 0, 0, 15,182, 7, 65, /* 0x10c0 */
|
||||
193,226, 8, 65,193,227, 8, 72,255,199, 65, 9,194, 15,183,150, /* 0x10d0 */
|
||||
224, 1, 0, 0, 68,137,216,193,232, 11, 15,183,202, 15,175,193, /* 0x10e0 */
|
||||
65, 57,194,115, 79, 65, 41,200, 65,137,195, 65,193,248, 5, 69, /* 0x10f0 */
|
||||
133,255, 66,141, 4, 2,102,137,134,224, 1, 0, 0, 15,132, 41, /* 0x1100 */
|
||||
5, 0, 0, 49,192,131,124, 36,200, 6, 72,139, 92, 36,232, 15, /* 0x1110 */
|
||||
159,192,141, 68, 0, 9,137, 68, 36,200, 68,137,248, 68, 41,240, /* 0x1120 */
|
||||
68, 15,182, 44, 3, 68,137,248, 65,255,199, 68,136, 44, 3,233, /* 0x1130 */
|
||||
216, 4, 0, 0, 65, 41,195, 65, 41,194,137,208,102,193,232, 5, /* 0x1140 */
|
||||
102, 41,194,102,137,150,224, 1, 0, 0,233, 17, 1, 0, 0, 65, /* 0x1150 */
|
||||
41,195, 65, 41,194,137,208,102,193,232, 5,102, 41,194, 65,129, /* 0x1160 */
|
||||
251,255,255,255, 0,102,137,150,152, 1, 0, 0,119, 26, 76, 57, /* 0x1170 */
|
||||
231, 15,132,181, 4, 0, 0, 15,182, 7, 65,193,226, 8, 65,193, /* 0x1180 */
|
||||
227, 8, 72,255,199, 65, 9,194, 15,183,150,176, 1, 0, 0, 68, /* 0x1190 */
|
||||
137,216,193,232, 11, 15,183,202, 15,175,193, 65, 57,194,115, 32, /* 0x11a0 */
|
||||
65,137,195,184, 0, 8, 0, 0, 41,200,193,248, 5,141, 4, 2, /* 0x11b0 */
|
||||
102,137,134,176, 1, 0, 0,139, 68, 36,196,233,152, 0, 0, 0, /* 0x11c0 */
|
||||
65, 41,195, 65, 41,194,137,208,102,193,232, 5,102, 41,194, 65, /* 0x11d0 */
|
||||
129,251,255,255,255, 0,102,137,150,176, 1, 0, 0,119, 26, 76, /* 0x11e0 */
|
||||
57,231, 15,132, 68, 4, 0, 0, 15,182, 7, 65,193,226, 8, 65, /* 0x11f0 */
|
||||
193,227, 8, 72,255,199, 65, 9,194, 15,183,150,200, 1, 0, 0, /* 0x1200 */
|
||||
68,137,216,193,232, 11, 15,183,202, 15,175,193, 65, 57,194,115, /* 0x1210 */
|
||||
29, 65,137,195,184, 0, 8, 0, 0, 41,200,193,248, 5,141, 4, /* 0x1220 */
|
||||
2,102,137,134,200, 1, 0, 0,139, 68, 36,192,235, 34, 65, 41, /* 0x1230 */
|
||||
195, 65, 41,194,137,208,102,193,232, 5,102, 41,194,139, 68, 36, /* 0x1240 */
|
||||
188,102,137,150,200, 1, 0, 0,139, 84, 36,192,137, 84, 36,188, /* 0x1250 */
|
||||
139, 76, 36,196,137, 76, 36,192, 68,137,116, 36,196, 65,137,198, /* 0x1260 */
|
||||
49,192,131,124, 36,200, 6, 76,139, 76, 36,216, 15,159,192, 73, /* 0x1270 */
|
||||
129,193,104, 10, 0, 0,141, 68, 64, 8,137, 68, 36,200, 65,129, /* 0x1280 */
|
||||
251,255,255,255, 0,119, 26, 76, 57,231, 15,132,156, 3, 0, 0, /* 0x1290 */
|
||||
15,182, 7, 65,193,226, 8, 65,193,227, 8, 72,255,199, 65, 9, /* 0x12a0 */
|
||||
194, 65, 15,183, 17, 68,137,216,193,232, 11, 15,183,202, 15,175, /* 0x12b0 */
|
||||
193, 65, 57,194,115, 39, 65,137,195,184, 0, 8, 0, 0, 69, 49, /* 0x12c0 */
|
||||
237, 41,200,193,248, 5,141, 4, 2,102, 65,137, 1, 72, 99, 68, /* 0x12d0 */
|
||||
36,184, 72,193,224, 4, 77,141, 68, 1, 4,235,120, 65, 41,195, /* 0x12e0 */
|
||||
65, 41,194,137,208,102,193,232, 5,102, 41,194, 65,129,251,255, /* 0x12f0 */
|
||||
255,255, 0,102, 65,137, 17,119, 26, 76, 57,231, 15,132, 42, 3, /* 0x1300 */
|
||||
0, 0, 15,182, 7, 65,193,226, 8, 65,193,227, 8, 72,255,199, /* 0x1310 */
|
||||
65, 9,194, 65, 15,183, 81, 2, 68,137,216,193,232, 11, 15,183, /* 0x1320 */
|
||||
202, 15,175,193, 65, 57,194,115, 52, 65,137,195,184, 0, 8, 0, /* 0x1330 */
|
||||
0, 65,189, 8, 0, 0, 0, 41,200,193,248, 5,141, 4, 2,102, /* 0x1340 */
|
||||
65,137, 65, 2, 72, 99, 68, 36,184, 72,193,224, 4, 77,141,132, /* 0x1350 */
|
||||
1, 4, 1, 0, 0, 65,185, 3, 0, 0, 0,235, 39, 65, 41,195, /* 0x1360 */
|
||||
65, 41,194,137,208,102,193,232, 5, 77,141,129, 4, 2, 0, 0, /* 0x1370 */
|
||||
65,189, 16, 0, 0, 0,102, 41,194,102, 65,137, 81, 2, 65,185, /* 0x1380 */
|
||||
8, 0, 0, 0, 68,137,203,189, 1, 0, 0, 0, 72, 99,197, 65, /* 0x1390 */
|
||||
129,251,255,255,255, 0, 73,141, 52, 64,119, 26, 76, 57,231, 15, /* 0x13a0 */
|
||||
132,135, 2, 0, 0, 15,182, 7, 65,193,226, 8, 65,193,227, 8, /* 0x13b0 */
|
||||
72,255,199, 65, 9,194, 15,183, 14, 68,137,216,193,232, 11, 15, /* 0x13c0 */
|
||||
183,209, 15,175,194, 65, 57,194,115, 23, 65,137,195,184, 0, 8, /* 0x13d0 */
|
||||
0, 0, 1,237, 41,208,193,248, 5,141, 4, 1,102,137, 6,235, /* 0x13e0 */
|
||||
22, 65, 41,195, 65, 41,194,137,200,102,193,232, 5,141,108, 45, /* 0x13f0 */
|
||||
1,102, 41,193,102,137, 14,255,203,117,145,184, 1, 0, 0, 0, /* 0x1400 */
|
||||
68,137,201,211,224, 41,197, 68, 1,237,131,124, 36,200, 3, 15, /* 0x1410 */
|
||||
143,194, 1, 0, 0,131, 68, 36,200, 7,184, 3, 0, 0, 0,131, /* 0x1420 */
|
||||
253, 4, 15, 76,197, 72,139, 92, 36,216, 65,184, 1, 0, 0, 0, /* 0x1430 */
|
||||
72,152, 72,193,224, 7, 76,141,140, 3, 96, 3, 0, 0,187, 6, /* 0x1440 */
|
||||
0, 0, 0, 73, 99,192, 65,129,251,255,255,255, 0, 73,141, 52, /* 0x1450 */
|
||||
65,119, 26, 76, 57,231, 15,132,208, 1, 0, 0, 15,182, 7, 65, /* 0x1460 */
|
||||
193,226, 8, 65,193,227, 8, 72,255,199, 65, 9,194, 15,183, 22, /* 0x1470 */
|
||||
68,137,216,193,232, 11, 15,183,202, 15,175,193, 65, 57,194,115, /* 0x1480 */
|
||||
24, 65,137,195,184, 0, 8, 0, 0, 69, 1,192, 41,200,193,248, /* 0x1490 */
|
||||
5,141, 4, 2,102,137, 6,235, 23, 65, 41,195, 65, 41,194,137, /* 0x14a0 */
|
||||
208,102,193,232, 5, 71,141, 68, 0, 1,102, 41,194,102,137, 22, /* 0x14b0 */
|
||||
255,203,117,143, 65,131,232, 64, 65,131,248, 3, 69,137,198, 15, /* 0x14c0 */
|
||||
142, 13, 1, 0, 0, 65,131,230, 1, 68,137,192,209,248, 65,131, /* 0x14d0 */
|
||||
206, 2, 65,131,248, 13,141,112,255,127, 35,137,241, 72,139, 92, /* 0x14e0 */
|
||||
36,216, 73, 99,192, 65,211,230, 72, 1,192, 68,137,242, 72,141, /* 0x14f0 */
|
||||
20, 83, 72, 41,194, 76,141,138, 94, 5, 0, 0,235, 81,141,112, /* 0x1500 */
|
||||
251, 65,129,251,255,255,255, 0,119, 26, 76, 57,231, 15,132, 25, /* 0x1510 */
|
||||
1, 0, 0, 15,182, 7, 65,193,226, 8, 65,193,227, 8, 72,255, /* 0x1520 */
|
||||
199, 65, 9,194, 65,209,235, 69, 1,246, 69, 57,218,114, 7, 69, /* 0x1530 */
|
||||
41,218, 65,131,206, 1,255,206,117,199, 76,139, 76, 36,216, 65, /* 0x1540 */
|
||||
193,230, 4,190, 4, 0, 0, 0, 73,129,193, 68, 6, 0, 0, 65, /* 0x1550 */
|
||||
189, 1, 0, 0, 0,187, 1, 0, 0, 0, 72, 99,195, 65,129,251, /* 0x1560 */
|
||||
255,255,255, 0, 77,141, 4, 65,119, 26, 76, 57,231, 15,132,185, /* 0x1570 */
|
||||
0, 0, 0, 15,182, 7, 65,193,226, 8, 65,193,227, 8, 72,255, /* 0x1580 */
|
||||
199, 65, 9,194, 65, 15,183, 16, 68,137,216,193,232, 11, 15,183, /* 0x1590 */
|
||||
202, 15,175,193, 65, 57,194,115, 24, 65,137,195,184, 0, 8, 0, /* 0x15a0 */
|
||||
0, 1,219, 41,200,193,248, 5,141, 4, 2,102, 65,137, 0,235, /* 0x15b0 */
|
||||
26, 65, 41,195, 65, 41,194,137,208,102,193,232, 5,141, 92, 27, /* 0x15c0 */
|
||||
1, 69, 9,238,102, 41,194,102, 65,137, 16, 69, 1,237,255,206, /* 0x15d0 */
|
||||
117,136, 65,255,198,116, 64,131,197, 2, 69, 57,254,119, 77, 72, /* 0x15e0 */
|
||||
139, 84, 36,232, 68,137,248, 68, 41,240, 68, 15,182, 44, 2, 68, /* 0x15f0 */
|
||||
137,248, 65,255,199,255,205, 68,136, 44, 2, 15,149,194, 49,192, /* 0x1600 */
|
||||
68, 59,124, 36,228, 15,146,192,133,194,117,211, 68, 59,124, 36, /* 0x1610 */
|
||||
228, 15,130, 69,247,255,255, 65,129,251,255,255,255, 0,119, 22, /* 0x1620 */
|
||||
76, 57,231,184, 1, 0, 0, 0,116, 35,235, 7,184, 1, 0, 0, /* 0x1630 */
|
||||
0,235, 26, 72,255,199,137,248, 43, 68, 36,248, 72,139, 76, 36, /* 0x1640 */
|
||||
240, 72,139, 92, 36, 56,137, 1, 68,137, 59, 49,192, 91, 93, 65, /* 0x1650 */
|
||||
92, 65, 93, 65, 94, 65, 95, 72,139,117,248, 72,139,125, 16,139, /* 0x1660 */
|
||||
75, 4, 72, 1,206,139, 19, 72, 1,215,201, 89, 72,137,240, 72, /* 0x1670 */
|
||||
41,200, 90, 72, 41,215, 89,137, 57, 91, 93,195,104, 30, 0, 0, /* 0x1680 */
|
||||
0, 90,232, 0, 0, 0, 0, 80, 82, 79, 84, 95, 69, 88, 69, 67, /* 0x1690 */
|
||||
124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105,108, /* 0x16a0 */
|
||||
101,100, 46, 10, 0, 94,106, 2, 95,106, 1, 88, 15, 5,106,127, /* 0x16b0 */
|
||||
95,106, 60, 88, 15, 5, 91,191, 0, 0, 0, 0,106, 7, 90,190, /* 0x16c0 */
|
||||
0, 0, 0, 0,106, 50, 65, 90, 69, 41,192,106, 9, 88, 15, 5, /* 0x16d0 */
|
||||
57,199, 15,133, 0, 0, 0, 0,104, 0, 0, 0, 0,104, 0, 0, /* 0x16e0 */
|
||||
0, 0,190, 0, 0, 0, 0,104, 0, 0, 0, 0,185, 0, 0, 0, /* 0x16f0 */
|
||||
0,104, 0, 0, 0, 0, 65, 87,137,250, 41,242, 1,213, 1,211, /* 0x1700 */
|
||||
252,243, 72,165,151,137,222, 80,146,173, 80, 72,137,225,173,151, /* 0x1710 */
|
||||
173, 68, 15,182,192,135,254,255,213, 89,195, 93, 68,139,125,247, /* 0x1720 */
|
||||
65,129,239,200, 0, 0, 0,232,138,255,255,255, 0, 46,115,121, /* 0x1730 */
|
||||
109,116, 97, 98, 0, 46,115,116,114,116, 97, 98, 0, 46,115,104, /* 0x1740 */
|
||||
115,116,114,116, 97, 98, 0, 46,114,101,108, 97, 69, 76, 70, 77, /* 0x1750 */
|
||||
65, 73, 78, 88, 0, 78, 82, 86, 95, 67, 79, 77, 77, 79, 78, 0, /* 0x1760 */
|
||||
46,114,101,108, 97, 78, 82, 86, 50, 69, 0, 46,114,101,108, 97, /* 0x1770 */
|
||||
78, 82, 86, 50, 66, 0, 46,114,101,108, 97, 76, 90, 77, 65, 95, /* 0x1780 */
|
||||
69, 76, 70, 48, 48, 0, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, /* 0x1790 */
|
||||
0, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 0, 76, 90, 77, 65, /* 0x17a0 */
|
||||
95, 68, 69, 67, 51, 48, 0, 46,114,101,108, 97, 69, 76, 70, 77, /* 0x17b0 */
|
||||
65, 73, 78, 89, 0, 46,114,101,108, 97, 69, 76, 70, 77, 65, 73, /* 0x17c0 */
|
||||
78, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x17d0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x17e0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x17f0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1800 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, /* 0x1810 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1820 */
|
||||
64, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, /* 0x1830 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1840 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, /* 0x1850 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1860 */
|
||||
232, 30, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1870 */
|
||||
18, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1880 */
|
||||
24, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, /* 0x1890 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18a0 */
|
||||
80, 0, 0, 0, 0, 0, 0, 0,107, 0, 0, 0, 0, 0, 0, 0, /* 0x18b0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x18c0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 1, 0, 0, 0, /* 0x18d0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18e0 */
|
||||
192, 0, 0, 0, 0, 0, 0, 0,188, 0, 0, 0, 0, 0, 0, 0, /* 0x18f0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1900 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, 0, 0, 0, /* 0x1910 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1920 */
|
||||
0, 31, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x1930 */
|
||||
18, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1940 */
|
||||
24, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 1, 0, 0, 0, /* 0x1950 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1960 */
|
||||
128, 1, 0, 0, 0, 0, 0, 0,149, 0, 0, 0, 0, 0, 0, 0, /* 0x1970 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1980 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 4, 0, 0, 0, /* 0x1990 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x19a0 */
|
||||
48, 31, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x19b0 */
|
||||
18, 0, 0, 0, 6, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x19c0 */
|
||||
24, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 1, 0, 0, 0, /* 0x19d0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x19e0 */
|
||||
21, 2, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, /* 0x19f0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1a00 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 4, 0, 0, 0, /* 0x1a10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a20 */
|
||||
96, 31, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1a30 */
|
||||
18, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1a40 */
|
||||
24, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 1, 0, 0, 0, /* 0x1a50 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a60 */
|
||||
121, 2, 0, 0, 0, 0, 0, 0,247, 9, 0, 0, 0, 0, 0, 0, /* 0x1a70 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1a80 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,101, 0, 0, 0, 1, 0, 0, 0, /* 0x1a90 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1aa0 */
|
||||
112, 12, 0, 0, 0, 0, 0, 0,247, 9, 0, 0, 0, 0, 0, 0, /* 0x1ab0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1ac0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,112, 0, 0, 0, 1, 0, 0, 0, /* 0x1ad0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ae0 */
|
||||
103, 22, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, /* 0x1af0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1b00 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 1, 0, 0, 0, /* 0x1b10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b20 */
|
||||
123, 22, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, /* 0x1b30 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1b40 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,123, 0, 0, 0, 4, 0, 0, 0, /* 0x1b50 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1b60 */
|
||||
120, 31, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1b70 */
|
||||
18, 0, 0, 0, 13, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1b80 */
|
||||
24, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 1, 0, 0, 0, /* 0x1b90 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ba0 */
|
||||
181, 22, 0, 0, 0, 0, 0, 0,135, 0, 0, 0, 0, 0, 0, 0, /* 0x1bb0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1bc0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0,137, 0, 0, 0, 4, 0, 0, 0, /* 0x1bd0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1be0 */
|
||||
144, 31, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, /* 0x1bf0 */
|
||||
18, 0, 0, 0, 15, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1c00 */
|
||||
24, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 3, 0, 0, 0, /* 0x1c10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c20 */
|
||||
60, 23, 0, 0, 0, 0, 0, 0,151, 0, 0, 0, 0, 0, 0, 0, /* 0x1c30 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1c40 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, /* 0x1c50 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1c60 */
|
||||
216, 28, 0, 0, 0, 0, 0, 0,224, 1, 0, 0, 0, 0, 0, 0, /* 0x1c70 */
|
||||
19, 0, 0, 0, 11, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, /* 0x1c80 */
|
||||
24, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 3, 0, 0, 0, /* 0x1c90 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ca0 */
|
||||
184, 30, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, /* 0x1cb0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1cc0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1cd0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ce0 */
|
||||
0, 0, 0, 0, 3, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1cf0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 12, 0, /* 0x1d00 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d10 */
|
||||
0, 0, 0, 0, 3, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d20 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 15, 0, /* 0x1d30 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d40 */
|
||||
0, 0, 0, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d50 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 0, /* 0x1d60 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d70 */
|
||||
0, 0, 0, 0, 3, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1d80 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 8, 0, /* 0x1d90 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1da0 */
|
||||
0, 0, 0, 0, 3, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1db0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 11, 0, /* 0x1dc0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1dd0 */
|
||||
1, 0, 0, 0, 16, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1de0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 16, 0, 0, 0, /* 0x1df0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e00 */
|
||||
13, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 16, 0, 0, 0, /* 0x1e20 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e30 */
|
||||
23, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e40 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 16, 0, 0, 0, /* 0x1e50 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e60 */
|
||||
33, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e70 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 16, 0, 0, 0, /* 0x1e80 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1e90 */
|
||||
43, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ea0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 95,115,116, 97,114,116, 0, /* 0x1eb0 */
|
||||
65, 68, 82, 77, 0, 76, 69, 78, 77, 0, 74, 77, 80, 85, 0, 65, /* 0x1ec0 */
|
||||
68, 82, 85, 0, 65, 68, 82, 67, 0, 76, 69, 78, 85, 0, 67, 78, /* 0x1ed0 */
|
||||
84, 67, 0, 65, 68, 82, 88, 0, 1, 0, 0, 0, 0, 0, 0, 0, /* 0x1ee0 */
|
||||
2, 0, 0, 0, 4, 0, 0, 0,114, 0, 0, 0, 0, 0, 0, 0, /* 0x1ef0 */
|
||||
179, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, /* 0x1f00 */
|
||||
38, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, /* 0x1f10 */
|
||||
2, 0, 0, 0, 3, 0, 0, 0,252,255,255,255,255,255,255,255, /* 0x1f20 */
|
||||
143, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, /* 0x1f30 */
|
||||
38, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, /* 0x1f40 */
|
||||
2, 0, 0, 0, 3, 0, 0, 0,252,255,255,255,255,255,255,255, /* 0x1f50 */
|
||||
6, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, /* 0x1f60 */
|
||||
16, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, /* 0x1f70 */
|
||||
2, 0, 0, 0, 4, 0, 0, 0,252,255,255,255,255,255,255,255, /* 0x1f80 */
|
||||
19, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 12, 0, 0, 0, /* 0x1f90 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, /* 0x1fa0 */
|
||||
10, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1fb0 */
|
||||
52, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, /* 0x1fc0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, /* 0x1fd0 */
|
||||
10, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1fe0 */
|
||||
62, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 16, 0, 0, 0, /* 0x1ff0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, /* 0x2000 */
|
||||
10, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x2010 */
|
||||
72, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 18, 0, 0, 0, /* 0x2020 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, /* 0x2030 */
|
||||
10, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x2040 */
|
||||
47, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, /* 0x2050 */
|
||||
13, 0, 0, 0, 0, 0, 0, 0, 10,116,109,112, 47, 97,109,100, /* 0x2060 */
|
||||
54, 52, 45,108,105,110,117,120, 46,101,108,102, 45,101,110,116, /* 0x2070 */
|
||||
114,121, 46, 98,105,110, 58, 32, 32, 32, 32, 32,102,105,108,101, /* 0x2080 */
|
||||
32,102,111,114,109, 97,116, 32,101,108,102, 54, 52, 45,120, 56, /* 0x2090 */
|
||||
54, 45, 54, 52, 10, 10, 83,101, 99,116,105,111,110,115, 58, 10, /* 0x20a0 */
|
||||
73,100,120, 32, 78, 97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x20b0 */
|
||||
32, 32, 83,105,122,101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, /* 0x20c0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 76, 77, /* 0x20d0 */
|
||||
65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x20e0 */
|
||||
70,105,108,101, 32,111,102,102, 32, 32, 65,108,103,110, 32, 32, /* 0x20f0 */
|
||||
70,108, 97,103,115, 10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, /* 0x2100 */
|
||||
78, 88, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,100, /* 0x2110 */
|
||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2120 */
|
||||
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2130 */
|
||||
48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 52, 48, 32, 32, /* 0x2140 */
|
||||
50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, /* 0x2150 */
|
||||
82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, /* 0x2160 */
|
||||
32, 32, 49, 32, 78, 82, 86, 95, 67, 79, 77, 77, 79, 78, 32, 32, /* 0x2170 */
|
||||
32, 32, 48, 48, 48, 48, 48, 48, 54, 98, 32, 32, 48, 48, 48, 48, /* 0x2180 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x2190 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x21a0 */
|
||||
48, 48, 48, 48, 48, 48, 53, 48, 32, 32, 50, 42, 42, 51, 32, 32, /* 0x21b0 */
|
||||
67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, /* 0x21c0 */
|
||||
76, 89, 10, 32, 32, 50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, /* 0x21d0 */
|
||||
32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 98, 99, 32, 32, 48, /* 0x21e0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x21f0 */
|
||||
32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2200 */
|
||||
48, 32, 32, 48, 48, 48, 48, 48, 48, 99, 48, 32, 32, 50, 42, 42, /* 0x2210 */
|
||||
51, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, /* 0x2220 */
|
||||
79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, /* 0x2230 */
|
||||
32, 78, 82, 86, 50, 66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, /* 0x2240 */
|
||||
48, 48, 48, 48, 48, 57, 53, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x2250 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x2260 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x2270 */
|
||||
48, 48, 49, 56, 48, 32, 32, 50, 42, 42, 51, 32, 32, 67, 79, 78, /* 0x2280 */
|
||||
84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x2290 */
|
||||
65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 76, 90, 77, 65, 95, /* 0x22a0 */
|
||||
69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 54, /* 0x22b0 */
|
||||
52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22c0 */
|
||||
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x22d0 */
|
||||
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 50, 49, 53, 32, /* 0x22e0 */
|
||||
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x22f0 */
|
||||
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x2300 */
|
||||
10, 32, 32, 53, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, /* 0x2310 */
|
||||
32, 32, 32, 48, 48, 48, 48, 48, 57,102, 55, 32, 32, 48, 48, 48, /* 0x2320 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x2330 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2340 */
|
||||
32, 48, 48, 48, 48, 48, 50, 55, 57, 32, 32, 50, 42, 42, 48, 32, /* 0x2350 */
|
||||
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x2360 */
|
||||
78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x2370 */
|
||||
50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57,102, 55, 32, 32, /* 0x2380 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2390 */
|
||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x23a0 */
|
||||
48, 48, 32, 32, 48, 48, 48, 48, 48, 99, 55, 48, 32, 32, 50, 42, /* 0x23b0 */
|
||||
42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x23c0 */
|
||||
65, 68, 79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, /* 0x23d0 */
|
||||
68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 49, /* 0x23e0 */
|
||||
52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x23f0 */
|
||||
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2400 */
|
||||
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 54, 54, 55, 32, /* 0x2410 */
|
||||
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x2420 */
|
||||
32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 69, 76, /* 0x2430 */
|
||||
70, 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, /* 0x2440 */
|
||||
48, 48, 51, 97, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2450 */
|
||||
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2460 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 54, /* 0x2470 */
|
||||
55, 98, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, /* 0x2480 */
|
||||
84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, /* 0x2490 */
|
||||
78, 76, 89, 10, 32, 32, 57, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x24a0 */
|
||||
32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 55, 32, 32, /* 0x24b0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x24c0 */
|
||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x24d0 */
|
||||
48, 48, 32, 32, 48, 48, 48, 48, 49, 54, 98, 53, 32, 32, 50, 42, /* 0x24e0 */
|
||||
42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x24f0 */
|
||||
76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, /* 0x2500 */
|
||||
77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, /* 0x2510 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2520 */
|
||||
32, 32,100, 32, 32, 78, 82, 86, 95, 67, 79, 77, 77, 79, 78, 9, /* 0x2530 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2540 */
|
||||
32, 78, 82, 86, 95, 67, 79, 77, 77, 79, 78, 10, 48, 48, 48, 48, /* 0x2550 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2560 */
|
||||
32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, /* 0x2570 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2580 */
|
||||
32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, /* 0x2590 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x25a0 */
|
||||
32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, /* 0x25b0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, /* 0x25c0 */
|
||||
76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x25d0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x25e0 */
|
||||
32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, 48, 48, 48, /* 0x25f0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, /* 0x2600 */
|
||||
73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2610 */
|
||||
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, /* 0x2620 */
|
||||
77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2630 */
|
||||
48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, /* 0x2640 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2650 */
|
||||
32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, /* 0x2660 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2670 */
|
||||
78, 82, 86, 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2680 */
|
||||
48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, /* 0x2690 */
|
||||
82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x26a0 */
|
||||
48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, /* 0x26b0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x26c0 */
|
||||
32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, /* 0x26d0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x26e0 */
|
||||
32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, /* 0x26f0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2700 */
|
||||
32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, /* 0x2710 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2720 */
|
||||
32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, /* 0x2730 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x2740 */
|
||||
32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, /* 0x2750 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2760 */
|
||||
32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, /* 0x2770 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, /* 0x2780 */
|
||||
32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, /* 0x2790 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95, /* 0x27a0 */
|
||||
115,116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x27b0 */
|
||||
48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x27c0 */
|
||||
85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x27d0 */
|
||||
48, 48, 48, 48, 48, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, /* 0x27e0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, /* 0x27f0 */
|
||||
32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, /* 0x2800 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 69, 78, 77, 10, /* 0x2810 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2820 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, /* 0x2830 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2840 */
|
||||
74, 77, 80, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2850 */
|
||||
48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, /* 0x2860 */
|
||||
78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2870 */
|
||||
48, 48, 48, 48, 32, 65, 68, 82, 85, 10, 48, 48, 48, 48, 48, 48, /* 0x2880 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, /* 0x2890 */
|
||||
32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x28a0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 67, 10, 48, /* 0x28b0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x28c0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, /* 0x28d0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, /* 0x28e0 */
|
||||
69, 78, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x28f0 */
|
||||
48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, /* 0x2900 */
|
||||
68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2910 */
|
||||
48, 48, 48, 32, 67, 78, 84, 67, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2920 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, /* 0x2930 */
|
||||
32, 32, 42, 85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2940 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 32, 65, 68, 82, 88, 10, 10, 10, /* 0x2950 */
|
||||
82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2960 */
|
||||
68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x2970 */
|
||||
93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, /* 0x2980 */
|
||||
32, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2990 */
|
||||
32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, /* 0x29a0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 32, 82, 95, /* 0x29b0 */
|
||||
88, 56, 54, 95, 54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, /* 0x29c0 */
|
||||
69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, 48, 48, 48, /* 0x29d0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 50, 10, 10, 10, 82, 69, /* 0x29e0 */
|
||||
76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x29f0 */
|
||||
32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, /* 0x2a00 */
|
||||
70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, /* 0x2a10 */
|
||||
89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2a20 */
|
||||
32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a30 */
|
||||
48, 48, 48, 48, 48, 48, 98, 51, 32, 82, 95, 88, 56, 54, 95, 54, /* 0x2a40 */
|
||||
52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 67, /* 0x2a50 */
|
||||
79, 77, 77, 79, 78, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2a60 */
|
||||
48, 48, 48, 48, 48, 48, 50, 54, 10, 48, 48, 48, 48, 48, 48, 48, /* 0x2a70 */
|
||||
48, 48, 48, 48, 48, 48, 48, 54, 48, 32, 82, 95, 88, 56, 54, 95, /* 0x2a80 */
|
||||
54, 52, 95, 80, 67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, /* 0x2a90 */
|
||||
65, 73, 78, 89, 43, 48,120,102,102,102,102,102,102,102,102,102, /* 0x2aa0 */
|
||||
102,102,102,102,102,102, 99, 10, 10, 10, 82, 69, 76, 79, 67, 65, /* 0x2ab0 */
|
||||
84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, /* 0x2ac0 */
|
||||
32, 91, 78, 82, 86, 50, 66, 93, 58, 10, 79, 70, 70, 83, 69, 84, /* 0x2ad0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, /* 0x2ae0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, /* 0x2af0 */
|
||||
85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2b00 */
|
||||
48, 48, 56,102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, /* 0x2b10 */
|
||||
51, 50, 32, 32, 32, 32, 32, 78, 82, 86, 95, 67, 79, 77, 77, 79, /* 0x2b20 */
|
||||
78, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2b30 */
|
||||
48, 48, 50, 54, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2b40 */
|
||||
48, 48, 48, 53, 55, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, /* 0x2b50 */
|
||||
67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2b60 */
|
||||
43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102, /* 0x2b70 */
|
||||
102,102, 99, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x2b80 */
|
||||
32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90, /* 0x2b90 */
|
||||
77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x2ba0 */
|
||||
84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, /* 0x2bb0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x2bc0 */
|
||||
76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2bd0 */
|
||||
48, 48, 48, 48, 54, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, /* 0x2be0 */
|
||||
67, 51, 50, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x2bf0 */
|
||||
51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2c00 */
|
||||
48, 48, 48, 49, 48, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, /* 0x2c10 */
|
||||
79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, /* 0x2c20 */
|
||||
69, 76, 70, 77, 65, 73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x2c30 */
|
||||
84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, /* 0x2c40 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x2c50 */
|
||||
76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2c60 */
|
||||
48, 48, 48, 49, 56, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, /* 0x2c70 */
|
||||
67, 51, 50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, /* 0x2c80 */
|
||||
43, 48,120,102,102,102,102,102,102,102,102,102,102,102,102,102, /* 0x2c90 */
|
||||
102,102, 99, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x2ca0 */
|
||||
32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, /* 0x2cb0 */
|
||||
70, 77, 65, 73, 78, 90, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x2cc0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x2cd0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2ce0 */
|
||||
69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2cf0 */
|
||||
48, 49, 51, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, /* 0x2d00 */
|
||||
32, 32, 32, 32, 32, 32, 65, 68, 82, 77, 10, 48, 48, 48, 48, 48, /* 0x2d10 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 98, 32, 82, 95, 88, 56, /* 0x2d20 */
|
||||
54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, /* 0x2d30 */
|
||||
78, 77, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2d40 */
|
||||
48, 51, 52, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, /* 0x2d50 */
|
||||
32, 32, 32, 32, 32, 32, 74, 77, 80, 85, 10, 48, 48, 48, 48, 48, /* 0x2d60 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 51, 57, 32, 82, 95, 88, 56, /* 0x2d70 */
|
||||
54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, /* 0x2d80 */
|
||||
82, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2d90 */
|
||||
48, 51,101, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, /* 0x2da0 */
|
||||
32, 32, 32, 32, 32, 32, 65, 68, 82, 67, 10, 48, 48, 48, 48, 48, /* 0x2db0 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 52, 51, 32, 82, 95, 88, 56, /* 0x2dc0 */
|
||||
54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 76, 69, /* 0x2dd0 */
|
||||
78, 85, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2de0 */
|
||||
48, 52, 56, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 51, 50, 32, /* 0x2df0 */
|
||||
32, 32, 32, 32, 32, 32, 67, 78, 84, 67, 10, 48, 48, 48, 48, 48, /* 0x2e00 */
|
||||
48, 48, 48, 48, 48, 48, 48, 48, 48, 52,100, 32, 82, 95, 88, 56, /* 0x2e10 */
|
||||
54, 95, 54, 52, 95, 51, 50, 32, 32, 32, 32, 32, 32, 32, 65, 68, /* 0x2e20 */
|
||||
82, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2e30 */
|
||||
48, 50,102, 32, 82, 95, 88, 56, 54, 95, 54, 52, 95, 80, 67, 51, /* 0x2e40 */
|
||||
50, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 43, 48, /* 0x2e50 */
|
||||
120, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2e60 */
|
||||
100, 10, 10, 10 /* 0x2e70 */
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
/* i386-linux.elf.interp-fold.h -- created from i386-linux.elf.interp-fold.bin, 1531 (0x5fb) bytes
|
||||
/* i386-linux.elf.interp-fold.h -- created from i386-linux.elf.interp-fold.bin, 1519 (0x5ef) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -27,105 +27,104 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_I386PTI_FOLD_SIZE 1531
|
||||
#define LINUX_I386PTI_FOLD_ADLER32 0x54fe990e
|
||||
#define LINUX_I386PTI_FOLD_CRC32 0xa290f522
|
||||
#define LINUX_I386PTI_FOLD_SIZE 1519
|
||||
#define LINUX_I386PTI_FOLD_ADLER32 0xe82498de
|
||||
#define LINUX_I386PTI_FOLD_CRC32 0xd7e223de
|
||||
|
||||
unsigned char linux_i386pti_fold[1531] = {
|
||||
unsigned char linux_i386pti_fold[1519] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
||||
2, 0, 3, 0, 1, 0, 0, 0,128, 0, 1, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||
2, 0, 3, 0, 1, 0, 0, 0,116, 0, 1, 0, 52, 0, 0, 0, /* 0x 10 */
|
||||
0, 0, 0, 0, 0, 0, 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, 1, 0, /* 0x 30 */
|
||||
0, 0, 1, 0,251, 5, 0, 0,252, 5, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 1, 0, 0, 0,251, 5, 0, 0, 0, 0, 0, 0, /* 0x 50 */
|
||||
0, 0, 1, 0,239, 5, 0, 0,240, 5, 0, 0, 5, 0, 0, 0, /* 0x 40 */
|
||||
0, 16, 0, 0, 1, 0, 0, 0,239, 5, 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 */
|
||||
93, 89, 88,141,124,132, 4, 80, 41,192,175,117,253,175,137,254, /* 0x 80 */
|
||||
139, 6,131,248, 3,116, 8,131,198, 8,131,248, 0,117,241,139, /* 0x 90 */
|
||||
94, 4, 83,129,236, 0, 10, 0, 0,137,226, 81,141, 67, 88,139, /* 0x a0 */
|
||||
115, 24, 41,198,139, 24,139, 72, 4,131,193, 12, 96,232, 62, 4, /* 0x b0 */
|
||||
0, 0,129,196, 36, 10, 0, 0, 91, 80,139, 75, 20,139, 91, 8, /* 0x c0 */
|
||||
184, 91, 0, 0, 0,205,128, 41,192, 41,201, 41,210, 41,219, 41, /* 0x d0 */
|
||||
237, 41,246, 41,255,195, 83,141, 92, 36, 8,106, 90, 88,205,128, /* 0x e0 */
|
||||
91,195, 0, 0, 87, 86,137,206, 83,137,195, 57, 8,139,120, 4, /* 0x f0 */
|
||||
115, 10,106,127, 91,106, 1, 88,205,128,235,254,133,201,116, 8, /* 0x 100 */
|
||||
138, 7, 71,136, 2, 66,226,248, 1,115, 4, 41, 51, 91, 94, 95, /* 0x 110 */
|
||||
195, 85,137,229, 87, 86,137,198, 83,137,211,131,236, 20,139,125, /* 0x 120 */
|
||||
12,131, 58, 0, 15,132,185, 0, 0, 0,141, 85,228,185, 12, 0, /* 0x 130 */
|
||||
0, 0,137,240,232,171,255,255,255,139, 69,228,139, 77,232,133, /* 0x 140 */
|
||||
192,117, 19,129,249, 85, 80, 88, 33,117, 15,131, 62, 0, 15,132, /* 0x 150 */
|
||||
143, 0, 0, 0,235, 4,133,201,117, 10,106,127, 91,106, 1, 88, /* 0x 160 */
|
||||
205,128,235,254, 57,193,119,242, 59, 3,119,238, 57,193,115, 86, /* 0x 170 */
|
||||
137, 69,224, 15,182, 69,236, 80,255, 85, 8, 90,141, 85,224,255, /* 0x 180 */
|
||||
117,236, 82,255,115, 4,255,117,232,255,118, 4,255, 16,131,196, /* 0x 190 */
|
||||
20,133,192,117,197,139, 69,228, 57, 69,224,117,189,138, 69,237, /* 0x 1a0 */
|
||||
132,192,116, 24, 15,182,192, 80,255,215, 15,182, 85,238,137, 20, /* 0x 1b0 */
|
||||
36,255,117,224,255,115, 4,255, 16,131,196, 12,139, 69,232, 1, /* 0x 1c0 */
|
||||
70, 4, 41, 6,235, 10,139, 83, 4,137,240,232, 20,255,255,255, /* 0x 1d0 */
|
||||
139, 85,228,139, 3, 1, 83, 4, 41,208,133,192,137, 3,233, 65, /* 0x 1e0 */
|
||||
255,255,255,141,101,244, 91, 94, 95,201,195,133,210,137,209,116, /* 0x 1f0 */
|
||||
6,198, 0, 0, 64,226,250,195,133,192, 83,137,211,116, 29,168, /* 0x 200 */
|
||||
1,117, 25,139, 16, 57,218,116, 7, 74,117, 11,133,219,116, 7, /* 0x 210 */
|
||||
137, 24,137, 72, 4,235, 5,131,192, 8,235,231, 91,195, 85,137, /* 0x 220 */
|
||||
229, 87, 86, 83,131,236, 84,137, 69,228,139, 69, 8,137, 85,224, /* 0x 230 */
|
||||
139, 77, 16,137, 69,220, 3, 64, 28,139, 93,220,137, 77,212,139, /* 0x 240 */
|
||||
85, 12,137, 69,208, 49,192,102,131,123, 16, 3,137, 85,216, 15, /* 0x 250 */
|
||||
183, 75, 44,139, 85,208, 15,149,192,131,206,255,193,224, 4,131, /* 0x 260 */
|
||||
192, 34, 49,219,137, 69,184,137,200, 49,255, 72,120, 31,131, 58, /* 0x 270 */
|
||||
1,117, 21,139, 66, 8, 57,240,115, 5,137,198,139,122, 16, 3, /* 0x 280 */
|
||||
66, 20, 57,195,115, 2,137,195,131,194, 32,226,225,137,240,129, /* 0x 290 */
|
||||
230, 0,240,255,255,106, 0, 41,243,106, 0, 37,255, 15, 0, 0, /* 0x 2a0 */
|
||||
137,117,188,141,179,255, 15, 0, 0,255,117,184,129,230, 0,240, /* 0x 2b0 */
|
||||
255,255,106, 7, 86,255,117,188,141,188, 7,255, 15, 0, 0,232, /* 0x 2c0 */
|
||||
18,254,255,255,129,231, 0,240,255,255,137,194,137,195, 1,242, /* 0x 2d0 */
|
||||
41,254,131,196, 24,137, 69,172,137, 85,240, 1,251,137,241,106, /* 0x 2e0 */
|
||||
91, 88,205,128,139, 69,220,199, 69,196, 0, 0, 0, 0,139, 93, /* 0x 2f0 */
|
||||
172, 43, 93,188,102,131,120, 44, 0,137, 93,204, 15,132,180, 1, /* 0x 300 */
|
||||
0, 0,139, 85,208,139, 2,131,248, 6,117, 24,139, 77,204, 3, /* 0x 310 */
|
||||
74, 8,186, 3, 0, 0, 0,139, 69,212,232,217,254,255,255,233, /* 0x 320 */
|
||||
123, 1, 0, 0, 72, 15,133,116, 1, 0, 0,139, 93,208,199, 69, /* 0x 330 */
|
||||
192, 64, 98, 81,115,139, 75, 24,139, 67, 8,131,225, 7,139, 83, /* 0x 340 */
|
||||
16,193,225, 2,137, 69,236,211,109,192,137,193, 3, 75, 20,137, /* 0x 350 */
|
||||
195,129,227,255, 15, 0, 0,137, 85,232,141, 60, 26,139, 85,204, /* 0x 360 */
|
||||
41,216,131,101,192, 7, 1,209,141, 52, 16,137, 77,176,139, 77, /* 0x 370 */
|
||||
208,139, 65, 4, 41,216,131,125,216, 1, 80,255,117,228, 25,192, /* 0x 380 */
|
||||
131,224,224,131,192, 50,131,125,216, 0, 80,137,248,106, 3,116, /* 0x 390 */
|
||||
3,141, 71, 3, 80, 86,232, 59,253,255,255,131,196, 24, 57,198, /* 0x 3a0 */
|
||||
15,133,170, 0, 0, 0,131,125,216, 0,116, 19,255,117,224,255, /* 0x 3b0 */
|
||||
117,228,139, 69,216,141, 85,232,232, 84,253,255,255, 89, 88,137, /* 0x 3c0 */
|
||||
218,137,251,137,240,247,219,232, 31,254,255,255,129,227,255, 15, /* 0x 3d0 */
|
||||
0, 0,141, 4, 62,137,218,137, 93,180,232, 12,254,255,255,131, /* 0x 3e0 */
|
||||
125,216, 0,116, 91,139, 69,208,131, 56, 1,117, 83,246, 64, 24, /* 0x 3f0 */
|
||||
1,116, 77,139, 93,208,137,194,139, 64, 20, 59, 67, 16,139, 82, /* 0x 400 */
|
||||
8,141, 12, 16,117, 14,137,200,247,216, 37,255, 15, 0, 0,131, /* 0x 410 */
|
||||
248, 3,119, 12,139, 69,208,141, 74, 12,131,120, 4, 0,117, 15, /* 0x 420 */
|
||||
139, 1, 61,205,128, 97,195,116, 6,199, 1,205,128, 97,195,133, /* 0x 430 */
|
||||
201,116, 13,139, 69,212, 49,210,131,224,254,232,184,253,255,255, /* 0x 440 */
|
||||
137,243,137,249,139, 85,192,106,125, 88,205,128,133,192,116, 10, /* 0x 450 */
|
||||
106,127, 91,106, 1, 88,205,128,235,254,139, 85,180,141, 4, 23, /* 0x 460 */
|
||||
141, 28, 6, 59, 93,176,115, 30,106, 0,106, 0,106, 50,255,117, /* 0x 470 */
|
||||
192, 41, 93,176,255,117,176, 83,232, 89,252,255,255,131,196, 24, /* 0x 480 */
|
||||
57,195,116, 27,235,202,131,125,216, 0,116, 19,141, 79, 3,129, /* 0x 490 */
|
||||
225,255, 15, 0, 0,131,249, 3,119, 5,106, 91, 88,205,128,139, /* 0x 4a0 */
|
||||
77,220,255, 69,196, 15,183, 65, 44,131, 69,208, 32, 57, 69,196, /* 0x 4b0 */
|
||||
15,140, 76,254,255,255,131,125,216, 0,117, 14,139, 93,228,106, /* 0x 4c0 */
|
||||
6, 88,205,128,133,192,116, 20,235,134,139, 69,220,102,131,120, /* 0x 4d0 */
|
||||
16, 3,116, 8,139, 93,240,106, 45, 88,205,128,139, 85,220,139, /* 0x 4e0 */
|
||||
82, 24, 1, 85,204,139, 69,204,141,101,244, 91, 94, 95,201,195, /* 0x 4f0 */
|
||||
85,137,229, 87, 86, 83,131,236, 16,141, 85, 24,139,125, 20,255, /* 0x 500 */
|
||||
117, 40,141, 71, 52,139, 93, 8,255,117, 16,137, 69,240,139,117, /* 0x 510 */
|
||||
32,141, 69, 32,232,248,251,255,255,139, 85,240,139, 69, 12,139, /* 0x 520 */
|
||||
74, 8,186, 3, 0, 0, 0,137, 69, 32,137,216,131,193, 52, 41, /* 0x 530 */
|
||||
117, 36,232,193,252,255,255, 15,183, 79, 42,137,216,186, 4, 0, /* 0x 540 */
|
||||
0, 0,232,177,252,255,255, 15,183, 79, 44,137,216,186, 5, 0, /* 0x 550 */
|
||||
0, 0,232,161,252,255,255,139, 79, 24,137,216,186, 9, 0, 0, /* 0x 560 */
|
||||
0,232,146,252,255,255,141, 69, 32, 83,139, 85, 40, 80,139, 69, /* 0x 570 */
|
||||
16, 87,232,167,252,255,255,102,139, 79, 44,131,196, 20, 49,210, /* 0x 580 */
|
||||
102,133,201,137,195,116, 90,139, 69,240,131, 56, 3,117, 70, 49, /* 0x 590 */
|
||||
201,139, 88, 8,137,202,106, 5, 88,205,128,133,192,137,198,120, /* 0x 5a0 */
|
||||
21,186, 0, 2, 0, 0,137,195,137,249,106, 3, 88,205,128, 61, /* 0x 5b0 */
|
||||
0, 2, 0, 0,116, 10,106,127, 91,106, 1, 88,205,128,235,254, /* 0x 5c0 */
|
||||
106, 0, 49,210,106, 0,137,240, 87,232, 80,252,255,255,131,196, /* 0x 5d0 */
|
||||
12,137,195,235, 12, 66, 15,183,193,131, 69,240, 32, 57,194,124, /* 0x 5e0 */
|
||||
166,141,101,244,137,216, 91, 94, 95,201,195 /* 0x 5f0 */
|
||||
0, 16, 0, 0, 93, 89, 88,141,124,132, 4, 80, 41,192,175,117, /* 0x 70 */
|
||||
253,175,137,254,139, 6,131,248, 3,116, 8,131,198, 8,131,248, /* 0x 80 */
|
||||
0,117,241,139, 94, 4, 83,129,236, 0, 10, 0, 0,137,226, 81, /* 0x 90 */
|
||||
141, 67, 88,139,115, 24, 41,198,139, 24,139, 72, 4,131,193, 12, /* 0x a0 */
|
||||
96,232, 62, 4, 0, 0,129,196, 36, 10, 0, 0, 91, 80,139, 75, /* 0x b0 */
|
||||
20,139, 91, 8,184, 91, 0, 0, 0,205,128, 41,192, 41,201, 41, /* 0x c0 */
|
||||
210, 41,219, 41,237, 41,246, 41,255,195, 83,141, 92, 36, 8,106, /* 0x d0 */
|
||||
90, 88,205,128, 91,195, 0, 0, 87, 86,137,206, 83,137,195, 57, /* 0x e0 */
|
||||
8,139,120, 4,115, 10,106,127, 91,106, 1, 88,205,128,235,254, /* 0x f0 */
|
||||
133,201,116, 8,138, 7, 71,136, 2, 66,226,248, 1,115, 4, 41, /* 0x 100 */
|
||||
51, 91, 94, 95,195, 85,137,229, 87, 86,137,198, 83,137,211,131, /* 0x 110 */
|
||||
236, 20,139,125, 12,131, 58, 0, 15,132,185, 0, 0, 0,141, 85, /* 0x 120 */
|
||||
228,185, 12, 0, 0, 0,137,240,232,171,255,255,255,139, 69,228, /* 0x 130 */
|
||||
139, 77,232,133,192,117, 19,129,249, 85, 80, 88, 33,117, 15,131, /* 0x 140 */
|
||||
62, 0, 15,132,143, 0, 0, 0,235, 4,133,201,117, 10,106,127, /* 0x 150 */
|
||||
91,106, 1, 88,205,128,235,254, 57,193,119,242, 59, 3,119,238, /* 0x 160 */
|
||||
57,193,115, 86,137, 69,224, 15,182, 69,236, 80,255, 85, 8, 90, /* 0x 170 */
|
||||
141, 85,224,255,117,236, 82,255,115, 4,255,117,232,255,118, 4, /* 0x 180 */
|
||||
255, 16,131,196, 20,133,192,117,197,139, 69,228, 57, 69,224,117, /* 0x 190 */
|
||||
189,138, 69,237,132,192,116, 24, 15,182,192, 80,255,215, 15,182, /* 0x 1a0 */
|
||||
85,238,137, 20, 36,255,117,224,255,115, 4,255, 16,131,196, 12, /* 0x 1b0 */
|
||||
139, 69,232, 1, 70, 4, 41, 6,235, 10,139, 83, 4,137,240,232, /* 0x 1c0 */
|
||||
20,255,255,255,139, 85,228,139, 3, 1, 83, 4, 41,208,133,192, /* 0x 1d0 */
|
||||
137, 3,233, 65,255,255,255,141,101,244, 91, 94, 95,201,195,133, /* 0x 1e0 */
|
||||
210,137,209,116, 6,198, 0, 0, 64,226,250,195,133,192, 83,137, /* 0x 1f0 */
|
||||
211,116, 29,168, 1,117, 25,139, 16, 57,218,116, 7, 74,117, 11, /* 0x 200 */
|
||||
133,219,116, 7,137, 24,137, 72, 4,235, 5,131,192, 8,235,231, /* 0x 210 */
|
||||
91,195, 85,137,229, 87, 86, 83,131,236, 84,137, 69,228,139, 69, /* 0x 220 */
|
||||
8,137, 85,224,139, 77, 16,137, 69,220, 3, 64, 28,139, 93,220, /* 0x 230 */
|
||||
137, 77,212,139, 85, 12,137, 69,208, 49,192,102,131,123, 16, 3, /* 0x 240 */
|
||||
137, 85,216, 15,183, 75, 44,139, 85,208, 15,149,192,131,206,255, /* 0x 250 */
|
||||
193,224, 4,131,192, 34, 49,219,137, 69,184,137,200, 49,255, 72, /* 0x 260 */
|
||||
120, 31,131, 58, 1,117, 21,139, 66, 8, 57,240,115, 5,137,198, /* 0x 270 */
|
||||
139,122, 16, 3, 66, 20, 57,195,115, 2,137,195,131,194, 32,226, /* 0x 280 */
|
||||
225,137,240,129,230, 0,240,255,255,106, 0, 41,243,106, 0, 37, /* 0x 290 */
|
||||
255, 15, 0, 0,137,117,188,141,179,255, 15, 0, 0,255,117,184, /* 0x 2a0 */
|
||||
129,230, 0,240,255,255,106, 7, 86,255,117,188,141,188, 7,255, /* 0x 2b0 */
|
||||
15, 0, 0,232, 18,254,255,255,129,231, 0,240,255,255,137,194, /* 0x 2c0 */
|
||||
137,195, 1,242, 41,254,131,196, 24,137, 69,172,137, 85,240, 1, /* 0x 2d0 */
|
||||
251,137,241,106, 91, 88,205,128,139, 69,220,199, 69,196, 0, 0, /* 0x 2e0 */
|
||||
0, 0,139, 93,172, 43, 93,188,102,131,120, 44, 0,137, 93,204, /* 0x 2f0 */
|
||||
15,132,180, 1, 0, 0,139, 85,208,139, 2,131,248, 6,117, 24, /* 0x 300 */
|
||||
139, 77,204, 3, 74, 8,186, 3, 0, 0, 0,139, 69,212,232,217, /* 0x 310 */
|
||||
254,255,255,233,123, 1, 0, 0, 72, 15,133,116, 1, 0, 0,139, /* 0x 320 */
|
||||
93,208,199, 69,192, 64, 98, 81,115,139, 75, 24,139, 67, 8,131, /* 0x 330 */
|
||||
225, 7,139, 83, 16,193,225, 2,137, 69,236,211,109,192,137,193, /* 0x 340 */
|
||||
3, 75, 20,137,195,129,227,255, 15, 0, 0,137, 85,232,141, 60, /* 0x 350 */
|
||||
26,139, 85,204, 41,216,131,101,192, 7, 1,209,141, 52, 16,137, /* 0x 360 */
|
||||
77,176,139, 77,208,139, 65, 4, 41,216,131,125,216, 1, 80,255, /* 0x 370 */
|
||||
117,228, 25,192,131,224,224,131,192, 50,131,125,216, 0, 80,137, /* 0x 380 */
|
||||
248,106, 3,116, 3,141, 71, 3, 80, 86,232, 59,253,255,255,131, /* 0x 390 */
|
||||
196, 24, 57,198, 15,133,170, 0, 0, 0,131,125,216, 0,116, 19, /* 0x 3a0 */
|
||||
255,117,224,255,117,228,139, 69,216,141, 85,232,232, 84,253,255, /* 0x 3b0 */
|
||||
255, 89, 88,137,218,137,251,137,240,247,219,232, 31,254,255,255, /* 0x 3c0 */
|
||||
129,227,255, 15, 0, 0,141, 4, 62,137,218,137, 93,180,232, 12, /* 0x 3d0 */
|
||||
254,255,255,131,125,216, 0,116, 91,139, 69,208,131, 56, 1,117, /* 0x 3e0 */
|
||||
83,246, 64, 24, 1,116, 77,139, 93,208,137,194,139, 64, 20, 59, /* 0x 3f0 */
|
||||
67, 16,139, 82, 8,141, 12, 16,117, 14,137,200,247,216, 37,255, /* 0x 400 */
|
||||
15, 0, 0,131,248, 3,119, 12,139, 69,208,141, 74, 12,131,120, /* 0x 410 */
|
||||
4, 0,117, 15,139, 1, 61,205,128, 97,195,116, 6,199, 1,205, /* 0x 420 */
|
||||
128, 97,195,133,201,116, 13,139, 69,212, 49,210,131,224,254,232, /* 0x 430 */
|
||||
184,253,255,255,137,243,137,249,139, 85,192,106,125, 88,205,128, /* 0x 440 */
|
||||
133,192,116, 10,106,127, 91,106, 1, 88,205,128,235,254,139, 85, /* 0x 450 */
|
||||
180,141, 4, 23,141, 28, 6, 59, 93,176,115, 30,106, 0,106, 0, /* 0x 460 */
|
||||
106, 50,255,117,192, 41, 93,176,255,117,176, 83,232, 89,252,255, /* 0x 470 */
|
||||
255,131,196, 24, 57,195,116, 27,235,202,131,125,216, 0,116, 19, /* 0x 480 */
|
||||
141, 79, 3,129,225,255, 15, 0, 0,131,249, 3,119, 5,106, 91, /* 0x 490 */
|
||||
88,205,128,139, 77,220,255, 69,196, 15,183, 65, 44,131, 69,208, /* 0x 4a0 */
|
||||
32, 57, 69,196, 15,140, 76,254,255,255,131,125,216, 0,117, 14, /* 0x 4b0 */
|
||||
139, 93,228,106, 6, 88,205,128,133,192,116, 20,235,134,139, 69, /* 0x 4c0 */
|
||||
220,102,131,120, 16, 3,116, 8,139, 93,240,106, 45, 88,205,128, /* 0x 4d0 */
|
||||
139, 85,220,139, 82, 24, 1, 85,204,139, 69,204,141,101,244, 91, /* 0x 4e0 */
|
||||
94, 95,201,195, 85,137,229, 87, 86, 83,131,236, 16,141, 85, 24, /* 0x 4f0 */
|
||||
139,125, 20,255,117, 40,141, 71, 52,139, 93, 8,255,117, 16,137, /* 0x 500 */
|
||||
69,240,139,117, 32,141, 69, 32,232,248,251,255,255,139, 85,240, /* 0x 510 */
|
||||
139, 69, 12,139, 74, 8,186, 3, 0, 0, 0,137, 69, 32,137,216, /* 0x 520 */
|
||||
131,193, 52, 41,117, 36,232,193,252,255,255, 15,183, 79, 42,137, /* 0x 530 */
|
||||
216,186, 4, 0, 0, 0,232,177,252,255,255, 15,183, 79, 44,137, /* 0x 540 */
|
||||
216,186, 5, 0, 0, 0,232,161,252,255,255,139, 79, 24,137,216, /* 0x 550 */
|
||||
186, 9, 0, 0, 0,232,146,252,255,255,141, 69, 32, 83,139, 85, /* 0x 560 */
|
||||
40, 80,139, 69, 16, 87,232,167,252,255,255,102,139, 79, 44,131, /* 0x 570 */
|
||||
196, 20, 49,210,102,133,201,137,195,116, 90,139, 69,240,131, 56, /* 0x 580 */
|
||||
3,117, 70, 49,201,139, 88, 8,137,202,106, 5, 88,205,128,133, /* 0x 590 */
|
||||
192,137,198,120, 21,186, 0, 2, 0, 0,137,195,137,249,106, 3, /* 0x 5a0 */
|
||||
88,205,128, 61, 0, 2, 0, 0,116, 10,106,127, 91,106, 1, 88, /* 0x 5b0 */
|
||||
205,128,235,254,106, 0, 49,210,106, 0,137,240, 87,232, 80,252, /* 0x 5c0 */
|
||||
255,255,131,196, 12,137,195,235, 12, 66, 15,183,193,131, 69,240, /* 0x 5d0 */
|
||||
32, 57,194,124,166,141,101,244,137,216, 91, 94, 95,201,195 /* 0x 5e0 */
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -28,8 +28,8 @@
|
||||
|
||||
|
||||
#define LINUX_I386SH_FOLD_SIZE 1194
|
||||
#define LINUX_I386SH_FOLD_ADLER32 0x63b3f90a
|
||||
#define LINUX_I386SH_FOLD_CRC32 0xe2bc019d
|
||||
#define LINUX_I386SH_FOLD_ADLER32 0xbb9cf7de
|
||||
#define LINUX_I386SH_FOLD_CRC32 0xd5a101a8
|
||||
|
||||
unsigned char linux_i386sh_fold[1194] = {
|
||||
127, 69, 76, 70, 1, 1, 1, 0, 76,105,110,117,120, 0, 0, 0, /* 0x 0 */
|
||||
@ -42,8 +42,8 @@ unsigned char linux_i386sh_fold[1194] = {
|
||||
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||
137,230,129,236, 80, 1, 0, 0,137,231,173,171,133,192,117,250, /* 0x 80 */
|
||||
173,171,133,192,117,250, 87, 64,106, 82, 89,243,171, 72,171,171, /* 0x 90 */
|
||||
95,173,133,192,145,173,116, 15,131,249, 42,115,244,137, 76,207, /* 0x a0 */
|
||||
248,137, 68,207,252,235,234,129,236, 0, 10, 0, 0,147,139, 10, /* 0x b0 */
|
||||
95,173,133,192,145,173,116, 15,131,249, 42,115,244,137, 76, 57, /* 0x a0 */
|
||||
248,137, 68, 57,252,235,234,129,236, 0, 10, 0, 0,147,139, 10, /* 0x b0 */
|
||||
139, 90, 4,137,198, 96,232,123, 2, 0, 0, 89, 80, 97,129,196, /* 0x c0 */
|
||||
0, 10, 0, 0, 89, 90, 82, 65, 86,131,238, 3,102,199, 6, 45, /* 0x d0 */
|
||||
99, 65, 86, 65, 82, 81, 87,141,188, 36, 0,245,255,255, 96,137, /* 0x e0 */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
||||
/* powerpc-linux.elf-entry.h -- created from powerpc-linux.elf-entry.bin, 604 (0x25c) bytes
|
||||
/* powerpc-linux.elf-entry.h -- created from powerpc-linux.elf-entry.bin, 9316 (0x2464) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -27,47 +27,592 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_ELFPPC32_LOADER_SIZE 604
|
||||
#define LINUX_ELFPPC32_LOADER_ADLER32 0x0a8bbdb5
|
||||
#define LINUX_ELFPPC32_LOADER_CRC32 0xcfe347e7
|
||||
#define LINUX_ELFPPC32_LOADER_SIZE 9316
|
||||
#define LINUX_ELFPPC32_LOADER_ADLER32 0xf98c7322
|
||||
#define LINUX_ELFPPC32_LOADER_CRC32 0xfe9cda55
|
||||
|
||||
unsigned char linux_elfppc32_loader[604] = {
|
||||
72, 0, 2, 77,124, 0, 41,236,144,166, 0, 0,124,132, 26, 20, /* 0x 0 */
|
||||
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 10 */
|
||||
57, 64,255,255,125,168, 2,166, 72, 0, 1, 12, 57, 32, 0, 1, /* 0x 20 */
|
||||
125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, /* 0x 30 */
|
||||
97, 41, 0, 1, 78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1, /* 0x 40 */
|
||||
124, 9, 0, 64,125, 41, 74, 20, 65,162,255,213, 65,129,255,236, /* 0x 50 */
|
||||
56,224, 0, 1, 72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, /* 0x 60 */
|
||||
65,162,255,189,124,231, 57, 20,125, 41, 72, 21, 65,162,255,177, /* 0x 70 */
|
||||
124,231, 57, 20,124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161, /* 0x 80 */
|
||||
65,160,255,216, 57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, /* 0x 90 */
|
||||
65,128, 0, 32,140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, /* 0x a0 */
|
||||
65,130, 0,148,112, 66, 0, 1, 65,162, 0, 80, 72, 0, 0, 20, /* 0x b0 */
|
||||
124, 9, 0, 64,125, 41, 74, 20, 65,162,255,101, 65,161, 0, 60, /* 0x c0 */
|
||||
57, 0, 0, 1,124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 81, /* 0x d0 */
|
||||
65,161, 0, 40,125, 41, 72, 21, 65,162,255, 69,125, 8, 65, 20, /* 0x e0 */
|
||||
124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 53, 65,160,255,232, /* 0x f0 */
|
||||
57, 8, 0, 2, 72, 0, 0, 16,125, 41, 72, 21, 65,162,255, 33, /* 0x 100 */
|
||||
125, 8, 65, 20, 32,234,250,255, 57, 8, 0, 2,125, 8, 1,148, /* 0x 110 */
|
||||
124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, /* 0x 120 */
|
||||
66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, /* 0x 130 */
|
||||
75,255,255, 16,128, 6, 0, 0,125,168, 3,166, 56,165, 0, 1, /* 0x 140 */
|
||||
56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80,144,166, 0, 0, /* 0x 150 */
|
||||
78,128, 0, 32, 10, 36, 73,100, 58, 32, 85, 80, 88, 32, 40, 67, /* 0x 160 */
|
||||
41, 32, 49, 57, 57, 54, 45, 50, 48, 48, 54, 32,116,104,101, 32, /* 0x 170 */
|
||||
85, 80, 88, 32, 84,101, 97,109, 46, 32, 65,108,108, 32, 82,105, /* 0x 180 */
|
||||
103,104,116,115, 32, 82,101,115,101,114,118,101,100, 46, 32,104, /* 0x 190 */
|
||||
116,116,112, 58, 47, 47,117,112,120, 46,115,102, 46,110,101,116, /* 0x 1a0 */
|
||||
32, 36, 10, 0, 72, 0, 0, 37, 80, 82, 79, 84, 95, 69, 88, 69, /* 0x 1b0 */
|
||||
67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105, /* 0x 1c0 */
|
||||
108,101,100, 46, 10, 0, 0, 0, 56,160, 0, 32,124,136, 2,166, /* 0x 1d0 */
|
||||
56, 96, 0, 2, 56, 0, 0, 4, 68, 0, 0, 2, 56, 96, 0,127, /* 0x 1e0 */
|
||||
56, 0, 0, 1, 68, 0, 0, 2,127,200, 2,166, 57, 0, 0, 0, /* 0x 1f0 */
|
||||
56,224,255,255,128,126, 0, 4, 56,192, 0, 50, 56,160, 0, 7, /* 0x 200 */
|
||||
56,128, 16, 0,124, 99,242, 20, 56, 0, 0, 90, 56, 99, 16, 11, /* 0x 210 */
|
||||
84, 99, 0, 38, 68, 0, 0, 2, 65,163,255,140,127,233, 3,166, /* 0x 220 */
|
||||
136,254, 0, 8, 56,193, 0,124,124,101, 27,120,124,104, 3,166, /* 0x 230 */
|
||||
128,158, 0, 4, 56,126, 0, 12, 78,128, 4, 32,148, 33,255,128, /* 0x 240 */
|
||||
188, 65, 0, 4,127,232, 2,166, 75,255,255,161 /* 0x 250 */
|
||||
unsigned char linux_elfppc32_loader[9316] = {
|
||||
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||
0, 1, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 10 */
|
||||
0, 0, 23,160, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */
|
||||
0, 20, 0, 17, 72, 0, 0,125,124, 0, 41,236,125,168, 2,166, /* 0x 30 */
|
||||
40, 7, 0, 8, 64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, /* 0x 40 */
|
||||
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 50 */
|
||||
57, 64,255,255, 72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 60 */
|
||||
56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1, /* 0x 70 */
|
||||
78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64, /* 0x 80 */
|
||||
125, 41, 74, 20, 65,162,255,213, 65,129,255,236, 56,224, 0, 1, /* 0x 90 */
|
||||
72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,162,255,189, /* 0x a0 */
|
||||
124,231, 57, 20,125, 41, 72, 21, 65,162,255,177,124,231, 57, 20, /* 0x b0 */
|
||||
124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161, 65,160,255,216, /* 0x c0 */
|
||||
57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,128, 0, 32, /* 0x d0 */
|
||||
140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,130, 0, 0, /* 0x e0 */
|
||||
112, 66, 0, 1, 65,162, 0, 80, 72, 0, 0, 20,124, 9, 0, 64, /* 0x f0 */
|
||||
125, 41, 74, 20, 65,162,255,101, 65,161, 0, 60, 57, 0, 0, 1, /* 0x 100 */
|
||||
124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 81, 65,161, 0, 40, /* 0x 110 */
|
||||
125, 41, 72, 21, 65,162,255, 69,125, 8, 65, 20,124, 9, 0, 64, /* 0x 120 */
|
||||
125, 41, 74, 20, 65,162,255, 53, 65,160,255,232, 57, 8, 0, 2, /* 0x 130 */
|
||||
72, 0, 0, 16,125, 41, 72, 21, 65,162,255, 33,125, 8, 65, 20, /* 0x 140 */
|
||||
32,234,250,255, 57, 8, 0, 2,125, 8, 1,148,124,234, 42, 20, /* 0x 150 */
|
||||
125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, /* 0x 160 */
|
||||
56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, 75,255,255, 16, /* 0x 170 */
|
||||
124, 0, 41,236,125,168, 2,166, 40, 7, 0, 2, 64,130, 0,228, /* 0x 180 */
|
||||
144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0, 61, 32,128, 0, /* 0x 190 */
|
||||
56, 99,255,255, 56,165,255,255, 57, 64,255,255, 72, 0, 0,180, /* 0x 1a0 */
|
||||
124, 9, 0, 64,125, 41, 72, 20, 76,162, 0, 32, 57, 32, 0, 1, /* 0x 1b0 */
|
||||
125, 41, 28, 44, 56, 99, 0, 4,124, 9, 0, 64,125, 41, 73, 20, /* 0x 1c0 */
|
||||
78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1, 75,255,255,213, /* 0x 1d0 */
|
||||
65,129,255,244, 56,224, 0, 1, 75,255,255,201,124,231, 57, 21, /* 0x 1e0 */
|
||||
75,255,255,193, 65,160,255,244, 52,231,255,253, 57, 0, 0, 0, /* 0x 1f0 */
|
||||
65,128, 0, 20,140, 67, 0, 1, 84,231, 64, 46,124,234, 16,249, /* 0x 200 */
|
||||
65,130, 0, 0, 75,255,255,157,125, 8, 65, 21, 75,255,255,149, /* 0x 210 */
|
||||
125, 8, 65, 21, 56,224, 0, 1, 64,130, 0, 28, 56,224, 0, 3, /* 0x 220 */
|
||||
57, 0, 0, 1, 75,255,255,125,125, 8, 65, 21, 75,255,255,117, /* 0x 230 */
|
||||
65,160,255,244, 32, 74,242,255,125, 8, 57, 20,124,234, 42, 20, /* 0x 240 */
|
||||
125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, /* 0x 250 */
|
||||
56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, 75,255,255,112, /* 0x 260 */
|
||||
124,128, 0, 8, 40, 7, 0, 14, 64,130, 0, 12,124, 8, 2,166, /* 0x 270 */
|
||||
129, 6, 0, 0,124,167, 43,120, 56,164,255,254, 56,131, 0, 2, /* 0x 280 */
|
||||
144, 1, 0, 4,136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, /* 0x 290 */
|
||||
56, 96,250, 0,124, 99, 88, 48, 56, 99,241,128,124, 38, 11,120, /* 0x 2a0 */
|
||||
124, 33, 26, 20, 84, 33, 0, 52,124,195, 51,120, 56, 0, 0, 0, /* 0x 2b0 */
|
||||
148, 3,255,252,124, 1, 24, 64, 65,128,255,248,144,193, 0, 0, /* 0x 2c0 */
|
||||
136, 4,255,255, 57, 33, 0, 8, 56,193, 0, 12, 56, 97, 0, 16, /* 0x 2d0 */
|
||||
84, 11,225, 62, 84, 0, 7, 62,152, 67, 0, 2,153, 99, 0, 1, /* 0x 2e0 */
|
||||
152, 3, 0, 0,124, 8, 2,166,148, 33,255,160,189,193, 0, 24, /* 0x 2f0 */
|
||||
144, 1, 0,100, 59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1, /* 0x 300 */
|
||||
138, 67, 0, 0,147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1, /* 0x 310 */
|
||||
125, 40, 3,166,124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48, /* 0x 320 */
|
||||
56, 9, 7, 54,127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48, /* 0x 330 */
|
||||
125, 41, 80, 48, 57, 41,255,255, 57,107,255,255,145, 33, 0, 8, /* 0x 340 */
|
||||
124,206, 51,120,124,147, 35,120,124,245, 59,120,125, 20, 67,120, /* 0x 350 */
|
||||
145, 97, 0, 12, 59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0, /* 0x 360 */
|
||||
59, 64, 0, 1, 58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1, /* 0x 370 */
|
||||
57, 32, 0, 0, 64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0, /* 0x 380 */
|
||||
85, 32, 8, 60,125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244, /* 0x 390 */
|
||||
127,179, 42, 20,126,108,155,120, 56,160, 0, 0, 57, 0,255,255, /* 0x 3a0 */
|
||||
57, 96, 0, 0,127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4, /* 0x 3b0 */
|
||||
84,169, 64, 46, 65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1, /* 0x 3c0 */
|
||||
125, 37, 3,120, 64,153,255,224,127,153,160, 64, 64,156, 8,100, /* 0x 3d0 */
|
||||
62,192, 0,255, 98,214,255,255,128, 1, 0, 8,127,136,176, 64, /* 0x 3e0 */
|
||||
127, 35, 0, 56, 86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60, /* 0x 3f0 */
|
||||
65,157, 0, 32,127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0, /* 0x 400 */
|
||||
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x 410 */
|
||||
124,230,194, 46, 85, 0,170,254,125, 64, 57,214,127,133, 80, 64, /* 0x 420 */
|
||||
64,156, 1,172,128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56, /* 0x 430 */
|
||||
32, 18, 0, 8,127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, /* 0x 440 */
|
||||
29, 41, 6, 0, 32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20, /* 0x 450 */
|
||||
125, 56, 74, 20,124, 6,195, 46,125, 72, 83,120, 56,201, 14,108, /* 0x 460 */
|
||||
56, 96, 0, 1, 64,157, 0,180,124, 26,200, 80, 63, 96, 0,255, /* 0x 470 */
|
||||
127,245, 0,174, 99,123,255,255, 87,255, 8, 60, 87,252, 5,238, /* 0x 480 */
|
||||
127,136,216, 64, 87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20, /* 0x 490 */
|
||||
127, 12,232, 0, 84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24, /* 0x 4a0 */
|
||||
65,154, 7,176,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x 4b0 */
|
||||
125, 37, 3,120,161,103, 2, 0, 85, 0,170,254,125, 64, 89,214, /* 0x 4c0 */
|
||||
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x 4d0 */
|
||||
124, 11, 2, 20, 47, 28, 0, 0,125,105, 88, 80,124,131, 35,120, /* 0x 4e0 */
|
||||
125, 10, 64, 80, 64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120, /* 0x 4f0 */
|
||||
65,186, 0, 24, 72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80, /* 0x 500 */
|
||||
56,100, 0, 1, 65,154, 0, 12, 47,131, 0,255, 64,157,255,108, /* 0x 510 */
|
||||
47,131, 0,255, 65,157, 0,132, 63,224, 0,255, 99,255,255,255, /* 0x 520 */
|
||||
127,136,248, 64, 84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46, /* 0x 530 */
|
||||
124,227, 59,120, 65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0, /* 0x 540 */
|
||||
85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, /* 0x 550 */
|
||||
85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64, /* 0x 560 */
|
||||
124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80, /* 0x 570 */
|
||||
125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, /* 0x 580 */
|
||||
72, 0, 0, 16,124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1, /* 0x 590 */
|
||||
47,131, 0,255, 64,157,255,140, 47,151, 0, 3, 84,127, 6, 62, /* 0x 5a0 */
|
||||
127,249,169,174, 59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0, /* 0x 5b0 */
|
||||
72, 0, 6,120, 47,151, 0, 9, 65,157, 0, 12, 58,247,255,253, /* 0x 5c0 */
|
||||
72, 0, 6,104, 58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80, /* 0x 5d0 */
|
||||
127,136,176, 64, 84,224,217,126,124, 0, 56, 80, 86,233, 8, 60, /* 0x 5e0 */
|
||||
124, 6,195, 46,124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32, /* 0x 5f0 */
|
||||
127,140,232, 0, 65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46, /* 0x 600 */
|
||||
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128, /* 0x 610 */
|
||||
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64, /* 0x 620 */
|
||||
32, 11, 8, 0, 47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20, /* 0x 630 */
|
||||
176, 7, 1,128,126, 15,131,120,125, 72, 83,120,126, 48,139,120, /* 0x 640 */
|
||||
56, 0, 0, 0,127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3, /* 0x 650 */
|
||||
124, 23, 3,120, 56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80, /* 0x 660 */
|
||||
127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x 670 */
|
||||
176, 7, 1,128, 65,157, 0, 32,127,140,232, 0, 65,158, 5,212, /* 0x 680 */
|
||||
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x 690 */
|
||||
57,140, 0, 1,161,103, 1,152, 85, 0,170,254,125, 64, 89,214, /* 0x 6a0 */
|
||||
127,133, 80, 64, 64,156, 0,188, 32, 11, 8, 0,127,138,176, 64, /* 0x 6b0 */
|
||||
124, 0, 46,112, 86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20, /* 0x 6c0 */
|
||||
84,107, 8, 60,176, 7, 1,152,125, 72, 83,120,124,233, 90, 20, /* 0x 6d0 */
|
||||
65,157, 0, 32,127,140,232, 0, 65,158, 5,120,137, 44, 0, 0, /* 0x 6e0 */
|
||||
84,160, 64, 46,124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1, /* 0x 6f0 */
|
||||
161,103, 1,224, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x 700 */
|
||||
64,156, 0, 72, 32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112, /* 0x 710 */
|
||||
124, 11, 2, 20,176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52, /* 0x 720 */
|
||||
47,151, 0, 6, 57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11, /* 0x 730 */
|
||||
124, 26,200, 80,127,245, 0,174,125, 55, 75,120,127,249,169,174, /* 0x 740 */
|
||||
59, 57, 0, 1, 72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80, /* 0x 750 */
|
||||
124,170, 40, 80,125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252, /* 0x 760 */
|
||||
125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80, /* 0x 770 */
|
||||
124,170, 40, 80,176, 7, 1,152, 65,157, 0, 32,127,140,232, 0, /* 0x 780 */
|
||||
65,158, 4,208,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x 790 */
|
||||
85, 8, 64, 46, 57,140, 0, 1,161,103, 1,176, 85, 0,170,254, /* 0x 7a0 */
|
||||
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0, /* 0x 7b0 */
|
||||
124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,126, 41,139,120, /* 0x 7c0 */
|
||||
176, 7, 1,176, 72, 0, 0,140,125, 10, 64, 80,127,136,176, 64, /* 0x 7d0 */
|
||||
85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176, /* 0x 7e0 */
|
||||
65,157, 0, 32,127,140,232, 0, 65,158, 4,104,137, 44, 0, 0, /* 0x 7f0 */
|
||||
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x 800 */
|
||||
161,103, 1,200, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x 810 */
|
||||
64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20, /* 0x 820 */
|
||||
125, 72, 83,120,126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32, /* 0x 830 */
|
||||
85, 96,217,126,124, 0, 88, 80,125,233,123,120,176, 7, 1,200, /* 0x 840 */
|
||||
124,170, 40, 80,125, 10, 64, 80,126, 15,131,120,126, 48,139,120, /* 0x 850 */
|
||||
127, 81,211,120,125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8, /* 0x 860 */
|
||||
64,157, 0, 8, 56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104, /* 0x 870 */
|
||||
127,136,176, 64, 65,157, 0, 32,127,140,232, 0, 65,158, 3,212, /* 0x 880 */
|
||||
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x 890 */
|
||||
57,140, 0, 1,161,102, 0, 0, 85, 0,170,254,125, 64, 89,214, /* 0x 8a0 */
|
||||
127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54, /* 0x 8b0 */
|
||||
125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, /* 0x 8c0 */
|
||||
56,137, 0, 4, 59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0, /* 0x 8d0 */
|
||||
72, 0, 0,156,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126, /* 0x 8e0 */
|
||||
124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32, /* 0x 8f0 */
|
||||
127,140,232, 0, 65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46, /* 0x 900 */
|
||||
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2, /* 0x 910 */
|
||||
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, /* 0x 920 */
|
||||
32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112, /* 0x 930 */
|
||||
124, 11, 2, 20,125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8, /* 0x 940 */
|
||||
59, 96, 0, 3,176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126, /* 0x 950 */
|
||||
124, 0, 88, 80,124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80, /* 0x 960 */
|
||||
56,134, 2, 4, 59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166, /* 0x 970 */
|
||||
63,224, 0,255, 99,255,255,255, 56, 96, 0, 1,127,136,248, 64, /* 0x 980 */
|
||||
84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, /* 0x 990 */
|
||||
65,157, 0, 24, 65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46, /* 0x 9a0 */
|
||||
57,140, 0, 1,125, 37, 3,120,125,100, 58, 46, 85, 0,170,254, /* 0x 9b0 */
|
||||
125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, /* 0x 9c0 */
|
||||
85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, /* 0x 9d0 */
|
||||
64,156, 0, 16,125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16, /* 0x 9e0 */
|
||||
124,170, 40, 80, 56,103, 0, 1,125,100, 59, 46, 66, 0,255,144, /* 0x 9f0 */
|
||||
56, 0, 0, 1, 47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80, /* 0x a00 */
|
||||
124, 99,226, 20, 65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7, /* 0x a10 */
|
||||
124,105, 27,120, 64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48, /* 0x a20 */
|
||||
125, 56, 74, 20, 56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, /* 0x a30 */
|
||||
63,224, 0,255, 99,255,255,255, 56,128, 0, 1,127,136,248, 64, /* 0x a40 */
|
||||
84,135, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,228, 59,120, /* 0x a50 */
|
||||
65,157, 0, 24, 65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46, /* 0x a60 */
|
||||
57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254, /* 0x a70 */
|
||||
125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, /* 0x a80 */
|
||||
85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, /* 0x a90 */
|
||||
64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16, /* 0x aa0 */
|
||||
124,170, 40, 80, 56,135, 0, 1,125,102, 59, 46, 66, 0,255,144, /* 0x ab0 */
|
||||
56,132,255,192, 47,132, 0, 3,124,154, 35,120, 64,157, 1, 40, /* 0x ac0 */
|
||||
47,132, 0, 13,124,137, 14,112, 84,128, 7,254, 57,105,255,255, /* 0x ad0 */
|
||||
96, 26, 0, 2,125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48, /* 0x ae0 */
|
||||
87, 73, 8, 60,125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80, /* 0x af0 */
|
||||
56,201, 5, 94, 72, 0, 0,100, 57, 41,255,251,125, 41, 3,166, /* 0x b00 */
|
||||
61, 96, 0,255, 97,107,255,255,127,136, 88, 64,127, 12,232, 0, /* 0x b10 */
|
||||
84,169, 64, 46, 87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52, /* 0x b20 */
|
||||
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x b30 */
|
||||
85, 8,248,126,127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80, /* 0x b40 */
|
||||
99, 90, 0, 1, 66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166, /* 0x b50 */
|
||||
87, 90, 32, 54, 56,216, 6, 68, 60,128, 0,255, 96,132,255,255, /* 0x b60 */
|
||||
59,128, 0, 1, 59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60, /* 0x b70 */
|
||||
127, 12,232, 0, 84,169, 64, 46,124,255, 59,120, 65,157, 0, 24, /* 0x b80 */
|
||||
65,154, 0,208,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x b90 */
|
||||
125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x ba0 */
|
||||
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x bb0 */
|
||||
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x bc0 */
|
||||
125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80, /* 0x bd0 */
|
||||
59,231, 0, 1,125,102, 59, 46,127, 90,227,120, 87,156, 8, 60, /* 0x be0 */
|
||||
66, 0,255,136, 55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64, /* 0x bf0 */
|
||||
56, 99, 0, 2, 65,157, 0, 92,124, 26,200, 80,127,245, 0,174, /* 0x c00 */
|
||||
56, 99,255,255,127,249,169,174, 59, 57, 0, 1, 49, 99,255,255, /* 0x c10 */
|
||||
125, 43, 25, 16,124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208, /* 0x c20 */
|
||||
125, 43, 0, 57, 64,130,255,212,127,153,160, 64, 65,156,247,172, /* 0x c30 */
|
||||
60, 0, 0,255, 96, 0,255,255,127,136, 0, 64, 65,157, 0, 32, /* 0x c40 */
|
||||
127,140,232, 0, 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, /* 0x c50 */
|
||||
56, 96, 0, 1, 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166, /* 0x c60 */
|
||||
124, 19, 96, 80,144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0, /* 0x c70 */
|
||||
128, 1, 0,100,185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96, /* 0x c80 */
|
||||
124, 8, 2,166,148, 33,255,160,189,193, 0, 24,144, 1, 0,100, /* 0x c90 */
|
||||
59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0, /* 0x ca0 */
|
||||
147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166, /* 0x cb0 */
|
||||
124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54, /* 0x cc0 */
|
||||
127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48, /* 0x cd0 */
|
||||
57, 41,255,255, 57,107,255,255,145, 33, 0, 8,124,206, 51,120, /* 0x ce0 */
|
||||
124,147, 35,120,124,245, 59,120,125, 20, 67,120,145, 97, 0, 12, /* 0x cf0 */
|
||||
59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1, /* 0x d00 */
|
||||
58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0, /* 0x d10 */
|
||||
64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60, /* 0x d20 */
|
||||
125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20, /* 0x d30 */
|
||||
126,108,155,120, 56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0, /* 0x d40 */
|
||||
127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46, /* 0x d50 */
|
||||
65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120, /* 0x d60 */
|
||||
64,153,255,224,127,153,160, 64, 64,156, 8,100, 62,192, 0,255, /* 0x d70 */
|
||||
98,214,255,255,128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56, /* 0x d80 */
|
||||
86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32, /* 0x d90 */
|
||||
127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46, /* 0x da0 */
|
||||
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46, /* 0x db0 */
|
||||
85, 0,170,254,125, 64, 57,214,127,133, 80, 64, 64,156, 1,172, /* 0x dc0 */
|
||||
128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8, /* 0x dd0 */
|
||||
127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0, /* 0x de0 */
|
||||
32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20, /* 0x df0 */
|
||||
124, 6,195, 46,125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1, /* 0x e00 */
|
||||
64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,127,245, 0,174, /* 0x e10 */
|
||||
99,123,255,255, 87,255, 8, 60, 87,252, 5,238,127,136,216, 64, /* 0x e20 */
|
||||
87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0, /* 0x e30 */
|
||||
84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176, /* 0x e40 */
|
||||
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x e50 */
|
||||
161,103, 2, 0, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x e60 */
|
||||
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x e70 */
|
||||
47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,125, 10, 64, 80, /* 0x e80 */
|
||||
64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24, /* 0x e90 */
|
||||
72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1, /* 0x ea0 */
|
||||
65,154, 0, 12, 47,131, 0,255, 64,157,255,108, 47,131, 0,255, /* 0x eb0 */
|
||||
65,157, 0,132, 63,224, 0,255, 99,255,255,255,127,136,248, 64, /* 0x ec0 */
|
||||
84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, /* 0x ed0 */
|
||||
65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46, /* 0x ee0 */
|
||||
57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254, /* 0x ef0 */
|
||||
125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, /* 0x f00 */
|
||||
85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, /* 0x f10 */
|
||||
64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16, /* 0x f20 */
|
||||
124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255, /* 0x f30 */
|
||||
64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,127,249,169,174, /* 0x f40 */
|
||||
59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120, /* 0x f50 */
|
||||
47,151, 0, 9, 65,157, 0, 12, 58,247,255,253, 72, 0, 6,104, /* 0x f60 */
|
||||
58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64, /* 0x f70 */
|
||||
84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46, /* 0x f80 */
|
||||
124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,127,140,232, 0, /* 0x f90 */
|
||||
65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x fa0 */
|
||||
85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128, 85, 0,170,254, /* 0x fb0 */
|
||||
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0, /* 0x fc0 */
|
||||
47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128, /* 0x fd0 */
|
||||
126, 15,131,120,125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0, /* 0x fe0 */
|
||||
127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120, /* 0x ff0 */
|
||||
56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64, /* 0x1000 */
|
||||
85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128, /* 0x1010 */
|
||||
65,157, 0, 32,127,140,232, 0, 65,158, 5,212,137, 44, 0, 0, /* 0x1020 */
|
||||
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x1030 */
|
||||
161,103, 1,152, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x1040 */
|
||||
64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,124, 0, 46,112, /* 0x1050 */
|
||||
86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60, /* 0x1060 */
|
||||
176, 7, 1,152,125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32, /* 0x1070 */
|
||||
127,140,232, 0, 65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46, /* 0x1080 */
|
||||
124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224, /* 0x1090 */
|
||||
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72, /* 0x10a0 */
|
||||
32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20, /* 0x10b0 */
|
||||
176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6, /* 0x10c0 */
|
||||
57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80, /* 0x10d0 */
|
||||
127,245, 0,174,125, 55, 75,120,127,249,169,174, 59, 57, 0, 1, /* 0x10e0 */
|
||||
72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x10f0 */
|
||||
125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80, /* 0x1100 */
|
||||
127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x1110 */
|
||||
176, 7, 1,152, 65,157, 0, 32,127,140,232, 0, 65,158, 4,208, /* 0x1120 */
|
||||
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x1130 */
|
||||
57,140, 0, 1,161,103, 1,176, 85, 0,170,254,125, 64, 89,214, /* 0x1140 */
|
||||
127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112, /* 0x1150 */
|
||||
124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,176, 7, 1,176, /* 0x1160 */
|
||||
72, 0, 0,140,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126, /* 0x1170 */
|
||||
124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32, /* 0x1180 */
|
||||
127,140,232, 0, 65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46, /* 0x1190 */
|
||||
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200, /* 0x11a0 */
|
||||
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, /* 0x11b0 */
|
||||
32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, /* 0x11c0 */
|
||||
126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126, /* 0x11d0 */
|
||||
124, 0, 88, 80,125,233,123,120,176, 7, 1,200,124,170, 40, 80, /* 0x11e0 */
|
||||
125, 10, 64, 80,126, 15,131,120,126, 48,139,120,127, 81,211,120, /* 0x11f0 */
|
||||
125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8, /* 0x1200 */
|
||||
56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,127,136,176, 64, /* 0x1210 */
|
||||
65,157, 0, 32,127,140,232, 0, 65,158, 3,212,137, 44, 0, 0, /* 0x1220 */
|
||||
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x1230 */
|
||||
161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x1240 */
|
||||
64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20, /* 0x1250 */
|
||||
124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4, /* 0x1260 */
|
||||
59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156, /* 0x1270 */
|
||||
125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80, /* 0x1280 */
|
||||
124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0, /* 0x1290 */
|
||||
65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x12a0 */
|
||||
85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2, 85, 0,170,254, /* 0x12b0 */
|
||||
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, /* 0x12c0 */
|
||||
84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20, /* 0x12d0 */
|
||||
125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3, /* 0x12e0 */
|
||||
176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80, /* 0x12f0 */
|
||||
124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4, /* 0x1300 */
|
||||
59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166, 63,224, 0,255, /* 0x1310 */
|
||||
99,255,255,255, 56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60, /* 0x1320 */
|
||||
127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, /* 0x1330 */
|
||||
65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x1340 */
|
||||
125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x1350 */
|
||||
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x1360 */
|
||||
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x1370 */
|
||||
125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80, /* 0x1380 */
|
||||
56,103, 0, 1,125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1, /* 0x1390 */
|
||||
47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20, /* 0x13a0 */
|
||||
65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,124,105, 27,120, /* 0x13b0 */
|
||||
64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20, /* 0x13c0 */
|
||||
56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255, /* 0x13d0 */
|
||||
99,255,255,255, 56,128, 0, 1,127,136,248, 64, 84,135, 8, 60, /* 0x13e0 */
|
||||
127, 12,232, 0, 84,169, 64, 46,124,228, 59,120, 65,157, 0, 24, /* 0x13f0 */
|
||||
65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x1400 */
|
||||
125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x1410 */
|
||||
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x1420 */
|
||||
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x1430 */
|
||||
125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80, /* 0x1440 */
|
||||
56,135, 0, 1,125,102, 59, 46, 66, 0,255,144, 56,132,255,192, /* 0x1450 */
|
||||
47,132, 0, 3,124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13, /* 0x1460 */
|
||||
124,137, 14,112, 84,128, 7,254, 57,105,255,255, 96, 26, 0, 2, /* 0x1470 */
|
||||
125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60, /* 0x1480 */
|
||||
125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94, /* 0x1490 */
|
||||
72, 0, 0,100, 57, 41,255,251,125, 41, 3,166, 61, 96, 0,255, /* 0x14a0 */
|
||||
97,107,255,255,127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46, /* 0x14b0 */
|
||||
87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0, /* 0x14c0 */
|
||||
85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, 85, 8,248,126, /* 0x14d0 */
|
||||
127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1, /* 0x14e0 */
|
||||
66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54, /* 0x14f0 */
|
||||
56,216, 6, 68, 60,128, 0,255, 96,132,255,255, 59,128, 0, 1, /* 0x1500 */
|
||||
59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0, /* 0x1510 */
|
||||
84,169, 64, 46,124,255, 59,120, 65,157, 0, 24, 65,154, 0,208, /* 0x1520 */
|
||||
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x1530 */
|
||||
125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x1540 */
|
||||
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x1550 */
|
||||
125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120, /* 0x1560 */
|
||||
124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1, /* 0x1570 */
|
||||
125,102, 59, 46,127, 90,227,120, 87,156, 8, 60, 66, 0,255,136, /* 0x1580 */
|
||||
55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2, /* 0x1590 */
|
||||
65,157, 0, 92,124, 26,200, 80,127,245, 0,174, 56, 99,255,255, /* 0x15a0 */
|
||||
127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16, /* 0x15b0 */
|
||||
124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57, /* 0x15c0 */
|
||||
64,130,255,212,127,153,160, 64, 65,156,247,172, 60, 0, 0,255, /* 0x15d0 */
|
||||
96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,127,140,232, 0, /* 0x15e0 */
|
||||
56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, /* 0x15f0 */
|
||||
72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80, /* 0x1600 */
|
||||
144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100, /* 0x1610 */
|
||||
185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0, /* 0x1620 */
|
||||
128, 1, 0, 4,124, 8, 3,166,128, 6, 0, 0,125,168, 3,166, /* 0x1630 */
|
||||
56,165, 0, 1, 56, 99, 0, 1,124,160, 40, 80,124,100, 24, 80, /* 0x1640 */
|
||||
144,166, 0, 0, 78,128, 0, 32, 72, 0, 0, 1, 80, 82, 79, 84, /* 0x1650 */
|
||||
95, 69, 88, 69, 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, /* 0x1660 */
|
||||
32,102, 97,105,108,101,100, 46, 10, 0, 0, 0, 56,160, 0, 30, /* 0x1670 */
|
||||
124,136, 2,166, 56, 96, 0, 2, 56, 0, 0, 4, 68, 0, 0, 2, /* 0x1680 */
|
||||
56, 96, 0,127, 56, 0, 0, 1, 68, 0, 0, 2,127,200, 2,166, /* 0x1690 */
|
||||
57, 0, 0, 0, 56,224,255,255,128,126, 0, 4, 56,192, 0, 50, /* 0x16a0 */
|
||||
56,160, 0, 7, 56,128, 16, 0,124, 99,242, 20, 56, 0, 0, 90, /* 0x16b0 */
|
||||
56, 99, 16, 11, 84, 99, 0, 38, 68, 0, 0, 2, 65,131, 0, 32, /* 0x16c0 */
|
||||
127,233, 3,166,128, 30, 0, 0,136,254, 0, 8, 56,193, 0,124, /* 0x16d0 */
|
||||
144, 1, 0,124,124,101, 27,120,124,104, 3,166,128,158, 0, 4, /* 0x16e0 */
|
||||
56,126, 0, 12, 78,128, 4, 32,148, 33,255,128,188, 65, 0, 4, /* 0x16f0 */
|
||||
127,232, 2,166, 75,255,255,153, 0, 46,115,121,109,116, 97, 98, /* 0x1700 */
|
||||
0, 46,115,116,114,116, 97, 98, 0, 46,115,104,115,116,114,116, /* 0x1710 */
|
||||
97, 98, 0, 46,114,101,108, 97, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x1720 */
|
||||
0, 78, 82, 86, 95, 67, 79, 77, 77, 79, 78, 0, 46,114,101,108, /* 0x1730 */
|
||||
97, 78, 82, 86, 50, 69, 0, 46,114,101,108, 97, 78, 82, 86, 50, /* 0x1740 */
|
||||
66, 0, 46,114,101,108, 97, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x1750 */
|
||||
48, 0, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 0, 76, 90, 77, /* 0x1760 */
|
||||
65, 95, 68, 69, 67, 50, 48, 0, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1770 */
|
||||
51, 48, 0, 46,114,101,108, 97, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x1780 */
|
||||
0, 46,114,101,108, 97, 69, 76, 70, 77, 65, 73, 78, 90, 0, 0, /* 0x1790 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x17a0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x17b0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, /* 0x17c0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, /* 0x17d0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x17e0 */
|
||||
0, 0, 0, 27, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x17f0 */
|
||||
0, 0, 27,136, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 1, /* 0x1800 */
|
||||
0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 41, 0, 0, 0, 1, /* 0x1810 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, /* 0x1820 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x1830 */
|
||||
0, 0, 0, 57, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1840 */
|
||||
0, 0, 0, 56, 0, 0, 1, 72, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1850 */
|
||||
0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 4, /* 0x1860 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,148, 0, 0, 0, 12, /* 0x1870 */
|
||||
0, 0, 0, 18, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 12, /* 0x1880 */
|
||||
0, 0, 0, 68, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1890 */
|
||||
0, 0, 1,128, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18a0 */
|
||||
0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 4, /* 0x18b0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,160, 0, 0, 0, 12, /* 0x18c0 */
|
||||
0, 0, 0, 18, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 12, /* 0x18d0 */
|
||||
0, 0, 0, 79, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18e0 */
|
||||
0, 0, 2,112, 0, 0, 0,132, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x18f0 */
|
||||
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 4, /* 0x1900 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,172, 0, 0, 0, 12, /* 0x1910 */
|
||||
0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 4, 0, 0, 0, 12, /* 0x1920 */
|
||||
0, 0, 0, 90, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1930 */
|
||||
0, 0, 2,244, 0, 0, 9,156, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1940 */
|
||||
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,101, 0, 0, 0, 1, /* 0x1950 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,144, 0, 0, 9,156, /* 0x1960 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x1970 */
|
||||
0, 0, 0,112, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1980 */
|
||||
0, 0, 22, 44, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1990 */
|
||||
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 1, /* 0x19a0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 56, 0, 0, 0, 68, /* 0x19b0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x19c0 */
|
||||
0, 0, 0,123, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x19d0 */
|
||||
0, 0, 27,184, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 13, /* 0x19e0 */
|
||||
0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0,142, 0, 0, 0, 1, /* 0x19f0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22,124, 0, 0, 0,140, /* 0x1a00 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x1a10 */
|
||||
0, 0, 0,137, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a20 */
|
||||
0, 0, 27,196, 0, 0, 0, 12, 0, 0, 0, 18, 0, 0, 0, 15, /* 0x1a30 */
|
||||
0, 0, 0, 4, 0, 0, 0, 12, 0, 0, 0, 17, 0, 0, 0, 3, /* 0x1a40 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 8, 0, 0, 0,151, /* 0x1a50 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x1a60 */
|
||||
0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1a70 */
|
||||
0, 0, 26,192, 0, 0, 0,192, 0, 0, 0, 19, 0, 0, 0, 11, /* 0x1a80 */
|
||||
0, 0, 0, 4, 0, 0, 0, 16, 0, 0, 0, 9, 0, 0, 0, 3, /* 0x1a90 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27,128, 0, 0, 0, 8, /* 0x1aa0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x1ab0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x1ac0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 12, /* 0x1ad0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 13, /* 0x1ae0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 15, /* 0x1af0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, /* 0x1b00 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 3, /* 0x1b10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 4, /* 0x1b20 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 6, /* 0x1b30 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 8, /* 0x1b40 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 10, /* 0x1b50 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 11, /* 0x1b60 */
|
||||
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 1, /* 0x1b70 */
|
||||
0, 95,115,116, 97,114,116, 0, 0, 0, 0, 0, 0, 0, 3, 10, /* 0x1b80 */
|
||||
0, 0, 0,124, 0, 0, 0,180, 0, 0, 2, 11, 0, 0, 0, 0, /* 0x1b90 */
|
||||
0, 0, 0,144, 0, 0, 2, 11, 0, 0, 0, 0, 0, 0, 0, 8, /* 0x1ba0 */
|
||||
0, 0, 1, 11, 0, 0, 0, 12, 0, 0, 0, 32, 0, 0, 3, 10, /* 0x1bb0 */
|
||||
0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 2, 11, 0, 0, 0, 32, /* 0x1bc0 */
|
||||
10,116,109,112, 47,112,111,119,101,114,112, 99, 45,108,105,110, /* 0x1bd0 */
|
||||
117,120, 46,101,108,102, 45,101,110,116,114,121, 46, 98,105,110, /* 0x1be0 */
|
||||
58, 32, 32, 32, 32, 32,102,105,108,101, 32,102,111,114,109, 97, /* 0x1bf0 */
|
||||
116, 32,101,108,102, 51, 50, 45,112,111,119,101,114,112, 99, 10, /* 0x1c00 */
|
||||
10, 83,101, 99,116,105,111,110,115, 58, 10, 73,100,120, 32, 78, /* 0x1c10 */
|
||||
97,109,101, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122, /* 0x1c20 */
|
||||
101, 32, 32, 32, 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, /* 0x1c30 */
|
||||
32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32, /* 0x1c40 */
|
||||
111,102,102, 32, 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, /* 0x1c50 */
|
||||
10, 32, 32, 48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, /* 0x1c60 */
|
||||
32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 52, 32, 32, 48, 48, 48, /* 0x1c70 */
|
||||
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1c80 */
|
||||
32, 48, 48, 48, 48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 50, 32, /* 0x1c90 */
|
||||
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1ca0 */
|
||||
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, /* 0x1cb0 */
|
||||
82, 86, 95, 67, 79, 77, 77, 79, 78, 32, 32, 32, 32, 48, 48, 48, /* 0x1cc0 */
|
||||
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1cd0 */
|
||||
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1ce0 */
|
||||
48, 51, 56, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, /* 0x1cf0 */
|
||||
78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, /* 0x1d00 */
|
||||
50, 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x1d10 */
|
||||
48, 48, 48, 48, 48, 49, 52, 56, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1d20 */
|
||||
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1d30 */
|
||||
48, 48, 48, 48, 51, 56, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, /* 0x1d40 */
|
||||
78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, /* 0x1d50 */
|
||||
69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51, 32, 78, 82, 86, 50, /* 0x1d60 */
|
||||
66, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1d70 */
|
||||
102, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1d80 */
|
||||
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 49, 56, 48, /* 0x1d90 */
|
||||
32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1da0 */
|
||||
44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1db0 */
|
||||
89, 10, 32, 32, 52, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, /* 0x1dc0 */
|
||||
32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 56, 52, 32, 32, 48, 48, /* 0x1dd0 */
|
||||
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1de0 */
|
||||
32, 32, 48, 48, 48, 48, 48, 50, 55, 48, 32, 32, 50, 42, 42, 48, /* 0x1df0 */
|
||||
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, /* 0x1e00 */
|
||||
67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 53, 32, /* 0x1e10 */
|
||||
76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 32, 32, 32, 32, 48, 48, /* 0x1e20 */
|
||||
48, 48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e30 */
|
||||
32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, /* 0x1e40 */
|
||||
48, 50,102, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, /* 0x1e50 */
|
||||
69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1e60 */
|
||||
32, 54, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32, 32, /* 0x1e70 */
|
||||
32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, 48, 48, 48, /* 0x1e80 */
|
||||
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1e90 */
|
||||
48, 48, 48, 48, 99, 57, 48, 32, 32, 50, 42, 42, 48, 32, 32, 67, /* 0x1ea0 */
|
||||
79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1eb0 */
|
||||
89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, /* 0x1ec0 */
|
||||
32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 99, 32, 32, 48, 48, /* 0x1ed0 */
|
||||
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1ee0 */
|
||||
32, 32, 48, 48, 48, 48, 49, 54, 50, 99, 32, 32, 50, 42, 42, 48, /* 0x1ef0 */
|
||||
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1f00 */
|
||||
79, 78, 76, 89, 10, 32, 32, 56, 32, 69, 76, 70, 77, 65, 73, 78, /* 0x1f10 */
|
||||
89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 52, 52, 32, /* 0x1f20 */
|
||||
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1f30 */
|
||||
48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 54, 51, 56, 32, 32, 50, /* 0x1f40 */
|
||||
42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1f50 */
|
||||
69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, /* 0x1f60 */
|
||||
32, 57, 32, 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, /* 0x1f70 */
|
||||
32, 48, 48, 48, 48, 48, 48, 56, 99, 32, 32, 48, 48, 48, 48, 48, /* 0x1f80 */
|
||||
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, /* 0x1f90 */
|
||||
48, 48, 48, 49, 54, 55, 99, 32, 32, 50, 42, 42, 50, 32, 32, 67, /* 0x1fa0 */
|
||||
79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, /* 0x1fb0 */
|
||||
82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, 77, 66, 79, 76, 32, /* 0x1fc0 */
|
||||
84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1fd0 */
|
||||
108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x1fe0 */
|
||||
51, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x1ff0 */
|
||||
95, 68, 69, 67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2000 */
|
||||
108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, /* 0x2010 */
|
||||
9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, /* 0x2020 */
|
||||
78, 89, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, /* 0x2030 */
|
||||
32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48, 48, 48, /* 0x2040 */
|
||||
48, 48, 48, 48, 48, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, /* 0x2050 */
|
||||
48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, /* 0x2060 */
|
||||
69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x2070 */
|
||||
48, 32, 69, 76, 70, 77, 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, /* 0x2080 */
|
||||
48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, /* 0x2090 */
|
||||
67, 79, 77, 77, 79, 78, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x20a0 */
|
||||
78, 82, 86, 95, 67, 79, 77, 77, 79, 78, 10, 48, 48, 48, 48, 48, /* 0x20b0 */
|
||||
48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, /* 0x20c0 */
|
||||
69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, /* 0x20d0 */
|
||||
10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, /* 0x20e0 */
|
||||
32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x20f0 */
|
||||
32, 78, 82, 86, 50, 66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2100 */
|
||||
108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, /* 0x2110 */
|
||||
48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x2120 */
|
||||
95, 69, 76, 70, 48, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2130 */
|
||||
108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x2140 */
|
||||
49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x2150 */
|
||||
95, 68, 69, 67, 49, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2160 */
|
||||
108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, /* 0x2170 */
|
||||
50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, /* 0x2180 */
|
||||
95, 68, 69, 67, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x2190 */
|
||||
103, 32, 32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, /* 0x21a0 */
|
||||
9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,116, 97,114,116, /* 0x21b0 */
|
||||
10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x21c0 */
|
||||
67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, /* 0x21d0 */
|
||||
73, 78, 88, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x21e0 */
|
||||
89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x21f0 */
|
||||
32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x2200 */
|
||||
32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, /* 0x2210 */
|
||||
32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 43, 48,120, 48, 48, /* 0x2220 */
|
||||
48, 48, 48, 48, 55, 99, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x2230 */
|
||||
73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2240 */
|
||||
91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, /* 0x2250 */
|
||||
32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2260 */
|
||||
32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, /* 0x2270 */
|
||||
48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, /* 0x2280 */
|
||||
32, 32, 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 10, /* 0x2290 */
|
||||
10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x22a0 */
|
||||
82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, /* 0x22b0 */
|
||||
10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x22c0 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x22d0 */
|
||||
69, 32, 10, 48, 48, 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, /* 0x22e0 */
|
||||
67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, /* 0x22f0 */
|
||||
70, 77, 65, 73, 78, 89, 10, 10, 10, 82, 69, 76, 79, 67, 65, 84, /* 0x2300 */
|
||||
73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, /* 0x2310 */
|
||||
91, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, /* 0x2320 */
|
||||
70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, /* 0x2330 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 32, 10, /* 0x2340 */
|
||||
48, 48, 48, 48, 48, 48, 48, 56, 32, 82, 95, 80, 80, 67, 95, 82, /* 0x2350 */
|
||||
69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 76, 90, 77, 65, 95, /* 0x2360 */
|
||||
68, 69, 67, 51, 48, 43, 48,120, 48, 48, 48, 48, 48, 48, 48, 99, /* 0x2370 */
|
||||
10, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, /* 0x2380 */
|
||||
67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, /* 0x2390 */
|
||||
73, 78, 89, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x23a0 */
|
||||
89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x23b0 */
|
||||
32, 86, 65, 76, 85, 69, 32, 10, 48, 48, 48, 48, 48, 48, 50, 48, /* 0x23c0 */
|
||||
32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, /* 0x23d0 */
|
||||
32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 10, 10, 10, 82, 69, /* 0x23e0 */
|
||||
76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, /* 0x23f0 */
|
||||
32, 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 90, 93, 58, /* 0x2400 */
|
||||
10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x2410 */
|
||||
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2420 */
|
||||
69, 32, 10, 48, 48, 48, 48, 48, 48, 53, 48, 32, 82, 95, 80, 80, /* 0x2430 */
|
||||
67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32, 69, 76, /* 0x2440 */
|
||||
70, 77, 65, 73, 78, 89, 43, 48,120, 48, 48, 48, 48, 48, 48, 50, /* 0x2450 */
|
||||
48, 10, 10, 10 /* 0x2460 */
|
||||
};
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
/* powerpc-linux.elf-fold.h -- created from powerpc-linux.elf-fold.bin, 1936 (0x790) bytes
|
||||
/* powerpc-linux.elf-fold.h -- created from powerpc-linux.elf-fold.bin, 1944 (0x798) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
@ -27,17 +27,17 @@
|
||||
*/
|
||||
|
||||
|
||||
#define LINUX_ELFPPC32_FOLD_SIZE 1936
|
||||
#define LINUX_ELFPPC32_FOLD_ADLER32 0x1a2f7017
|
||||
#define LINUX_ELFPPC32_FOLD_CRC32 0xf69d4404
|
||||
#define LINUX_ELFPPC32_FOLD_SIZE 1944
|
||||
#define LINUX_ELFPPC32_FOLD_ADLER32 0x727175e2
|
||||
#define LINUX_ELFPPC32_FOLD_CRC32 0xe344893c
|
||||
|
||||
unsigned char linux_elfppc32_fold[1936] = {
|
||||
unsigned char linux_elfppc32_fold[1944] = {
|
||||
127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */
|
||||
0, 2, 0, 20, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52, /* 0x 10 */
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, /* 0x 20 */
|
||||
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0, /* 0x 30 */
|
||||
0, 16, 0, 0, 0, 0, 7,144, 0, 0, 7,144, 0, 0, 0, 5, /* 0x 40 */
|
||||
0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,144, 0, 0, 0, 0, /* 0x 50 */
|
||||
0, 16, 0, 0, 0, 0, 7,152, 0, 0, 7,152, 0, 0, 0, 5, /* 0x 40 */
|
||||
0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,152, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */
|
||||
72, 0, 0,125, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 80 */
|
||||
@ -49,108 +49,109 @@ unsigned char linux_elfppc32_fold[1936] = {
|
||||
66, 0,255,240, 78,128, 0, 32,128, 73, 0, 0, 57, 41, 0, 4, /* 0x e0 */
|
||||
47,130, 0, 0, 64,158,255,244, 78,128, 0, 32,125, 8, 2,166, /* 0x f0 */
|
||||
129, 33, 0, 0, 75,255,255,229, 75,255,255,225,128,159,255,248, /* 0x 100 */
|
||||
85, 30, 0, 38, 56,161,248, 0,127,231,251,120,124,100,248, 80, /* 0x 110 */
|
||||
56, 33,247,240, 84,125, 0, 38,128,195, 0, 24, 72, 0, 5, 13, /* 0x 120 */
|
||||
124,127, 27,120,127,163,235,120,124,157,240, 80, 72, 0, 0, 81, /* 0x 130 */
|
||||
127,232, 3,166,184, 65, 8, 20,128, 33, 8, 16, 78,128, 0, 32, /* 0x 140 */
|
||||
56, 0, 0, 90, 68, 0, 0, 2, 64,163, 0, 8, 56, 96,255,255, /* 0x 150 */
|
||||
78,128, 0, 32, 56, 0, 0, 1, 75,255,255,236, 56, 0, 0, 3, /* 0x 160 */
|
||||
75,255,255,228, 56, 0, 0, 5, 75,255,255,220, 56, 0, 0, 6, /* 0x 170 */
|
||||
75,255,255,212, 56, 0, 0,125, 75,255,255,204, 56, 0, 0, 91, /* 0x 180 */
|
||||
75,255,255,196, 56, 0, 0, 45, 75,255,255,188,124, 8, 2,166, /* 0x 190 */
|
||||
148, 33,255,240,144, 1, 0, 20,128, 3, 0, 0,129, 35, 0, 4, /* 0x 1a0 */
|
||||
127,128, 40, 64, 64,188, 0, 12, 56, 96, 0,127, 75,255,255,169, /* 0x 1b0 */
|
||||
47,133, 0, 0, 65,158, 0, 28,124,169, 3,166,136, 9, 0, 0, /* 0x 1c0 */
|
||||
57, 41, 0, 1,152, 4, 0, 0, 56,132, 0, 1, 66, 0,255,240, /* 0x 1d0 */
|
||||
128, 3, 0, 0,129, 35, 0, 4,124, 5, 0, 80,144, 3, 0, 0, /* 0x 1e0 */
|
||||
128, 1, 0, 20,125, 41, 42, 20,124, 8, 3,166, 56, 33, 0, 16, /* 0x 1f0 */
|
||||
145, 35, 0, 4, 78,128, 0, 32,124, 8, 2,166,148, 33,255,192, /* 0x 200 */
|
||||
144, 1, 0, 68,128, 4, 0, 0,191,129, 0, 48, 47,128, 0, 0, /* 0x 210 */
|
||||
124,159, 35,120,124,126, 27,120,124,188, 43,120,124,221, 51,120, /* 0x 220 */
|
||||
65,158, 1, 36, 56,160, 0, 12,127,195,243,120, 56,129, 0, 16, /* 0x 230 */
|
||||
75,255,255, 93,129, 33, 0, 16,128,161, 0, 20, 47,137, 0, 0, /* 0x 240 */
|
||||
64,190, 0, 36, 60, 0, 33, 88, 96, 0, 80, 85,127,133, 0, 0, /* 0x 250 */
|
||||
64,190, 0, 28,128, 30, 0, 0, 47,128, 0, 0, 65,190, 0,232, /* 0x 260 */
|
||||
72, 0, 0, 12, 47,133, 0, 0, 64,190, 0, 12, 56, 96, 0,127, /* 0x 270 */
|
||||
75,255,254,229,127, 5, 72, 64, 65,185,255,244,128, 31, 0, 0, /* 0x 280 */
|
||||
127,137, 0, 64, 65,189,255,232,128, 31, 0, 4, 64,152, 0,136, /* 0x 290 */
|
||||
124,164, 43,120,128,126, 0, 4,124, 5, 3,120, 56,193, 0, 32, /* 0x 2a0 */
|
||||
128,225, 0, 24,145, 33, 0, 32,127,136, 3,166, 78,128, 0, 33, /* 0x 2b0 */
|
||||
47,131, 0, 0, 64,190,255,184,128,129, 0, 32,128, 1, 0, 16, /* 0x 2c0 */
|
||||
127,132, 0, 0, 64,190,255,168,136,193, 0, 25, 49, 61,255,255, /* 0x 2d0 */
|
||||
124, 9,233, 16,125, 38, 0,208, 85, 41, 15,254,125, 43, 0, 57, /* 0x 2e0 */
|
||||
65,162, 0, 20,128,127, 0, 4,136,161, 0, 26,127,168, 3,166, /* 0x 2f0 */
|
||||
78,128, 0, 33,128, 30, 0, 4,129, 97, 0, 20,129, 62, 0, 0, /* 0x 300 */
|
||||
124, 0, 90, 20,125, 43, 72, 80,144, 30, 0, 4,145, 62, 0, 0, /* 0x 310 */
|
||||
72, 0, 0, 16,124, 4, 3,120,127,195,243,120, 75,255,254,113, /* 0x 320 */
|
||||
129, 97, 0, 16,129, 63, 0, 0,128, 31, 0, 4,125, 43, 72, 80, /* 0x 330 */
|
||||
47,137, 0, 0,124, 0, 90, 20,144, 31, 0, 4,145, 63, 0, 0, /* 0x 340 */
|
||||
75,255,254,224,128, 1, 0, 68,187,129, 0, 48,124, 8, 3,166, /* 0x 350 */
|
||||
56, 33, 0, 64, 78,128, 0, 32, 44, 3, 0, 0, 77,130, 0, 32, /* 0x 360 */
|
||||
48, 4,255,255,125, 96, 33, 16,128, 3, 0, 0,127,128, 32, 0, /* 0x 370 */
|
||||
104, 9, 0, 1, 33, 73, 0, 0,125, 42, 73, 20,125, 42, 88, 57, /* 0x 380 */
|
||||
65,158, 0, 8, 65,162, 0, 16,144,163, 0, 4,144,131, 0, 0, /* 0x 390 */
|
||||
78,128, 0, 32, 56, 99, 0, 8, 75,255,255,208,124, 8, 2,166, /* 0x 3a0 */
|
||||
148, 33,255,160,144, 1, 0,100,160, 3, 0, 16,161, 67, 0, 44, /* 0x 3b0 */
|
||||
125,128, 0, 38,129, 35, 0, 28,104, 0, 0, 3, 53, 74,255,255, /* 0x 3c0 */
|
||||
124, 0, 0,208,190, 65, 0, 40,127,163, 74, 20,124,121, 27,120, /* 0x 3d0 */
|
||||
84, 3, 46,246,145,129, 0, 36,124,151, 35,120,124,178, 43,120, /* 0x 3e0 */
|
||||
124,211, 51,120,124,244, 59,120,125, 21, 67,120, 56, 99, 8, 34, /* 0x 3f0 */
|
||||
127,171,235,120, 59,224,255,255, 59,192, 0, 0, 65,128, 0, 68, /* 0x 400 */
|
||||
57, 74, 0, 1,125, 73, 3,166,128, 11, 0, 0, 47,128, 0, 1, /* 0x 410 */
|
||||
64,190, 0, 40,129, 43, 0, 8,127,137,248, 64, 64,156, 0, 8, /* 0x 420 */
|
||||
125, 63, 75,120,128, 11, 0, 20,124, 0, 74, 20,127,158, 0, 64, /* 0x 430 */
|
||||
64,156, 0, 8,124, 30, 3,120, 57,107, 0, 32, 66, 0,255,204, /* 0x 440 */
|
||||
87,255, 0, 38,125, 63,240, 80, 57, 41, 15,255, 85, 62, 0, 38, /* 0x 450 */
|
||||
124,102, 27,120,127,196,243,120,127,227,251,120, 56,160, 0, 0, /* 0x 460 */
|
||||
56,224,255,255, 57, 0, 0, 0, 75,255,252,217,160, 25, 0, 44, /* 0x 470 */
|
||||
58,192, 0, 0,127,150, 0, 0,124, 3,242, 20,144, 1, 0, 8, /* 0x 480 */
|
||||
127, 31, 24, 80, 64,156, 1,128, 46, 23, 0, 0, 65,146, 0, 40, /* 0x 490 */
|
||||
128, 29, 0, 0, 47,128, 0, 6, 64,190, 0, 28,128,189, 0, 8, /* 0x 4a0 */
|
||||
126, 99,155,120,124,165,194, 20, 56,128, 0, 3, 75,255,254,173, /* 0x 4b0 */
|
||||
72, 0, 1, 64,128, 29, 0, 0, 47,128, 0, 1, 64,190, 1, 52, /* 0x 4c0 */
|
||||
128, 29, 0, 24,129, 93, 0, 8, 61, 32,115, 81, 84, 0, 22,250, /* 0x 4d0 */
|
||||
97, 41, 98, 64,129,125, 0, 20,125, 41, 4, 48, 85, 94, 5, 62, /* 0x 4e0 */
|
||||
48, 23,255,255,124,160,185, 16,128, 29, 0, 16, 85, 58, 7,126, /* 0x 4f0 */
|
||||
127,106, 90, 20, 84,165, 8, 60,127,254, 80, 80,144, 1, 0, 16, /* 0x 500 */
|
||||
145, 65, 0, 20,127,128,242, 20,127,255,194, 20,127,123,194, 20, /* 0x 510 */
|
||||
124,165,211,120, 65,146, 0, 12, 56,192, 0, 50, 72, 0, 0, 8, /* 0x 520 */
|
||||
56,192, 0, 18, 64,146, 0, 12,126, 71,147,120, 72, 0, 0, 8, /* 0x 530 */
|
||||
56,224,255,255,129, 29, 0, 4,127,227,251,120,125, 30, 64, 80, /* 0x 540 */
|
||||
127,132,227,120, 75,255,251,253,127,159, 24, 0, 64,158, 0,104, /* 0x 550 */
|
||||
65,178, 0, 24,126,227,187,120, 56,129, 0, 16,126,133,163,120, /* 0x 560 */
|
||||
126,166,171,120, 75,255,252,149,115, 64, 0, 2,124, 28, 0,208, /* 0x 570 */
|
||||
84, 30, 5, 62, 65,130, 0, 36, 47,158, 0, 0,125, 63,226, 20, /* 0x 580 */
|
||||
65,158, 0, 24,127,201, 3,166, 56, 0, 0, 0,152, 9, 0, 0, /* 0x 590 */
|
||||
57, 41, 0, 1, 66, 0,255,248, 65,178, 0, 36,127,227,251,120, /* 0x 5a0 */
|
||||
127,132,227,120,127, 69,211,120, 75,255,251,205, 47,131, 0, 0, /* 0x 5b0 */
|
||||
65,190, 0, 12, 56, 96, 0,127, 75,255,251,157,124, 28,242, 20, /* 0x 5c0 */
|
||||
127,255, 2, 20,127,159,216, 64, 64,188, 0, 40,124,159,216, 80, /* 0x 5d0 */
|
||||
127, 69,211,120,127,227,251,120, 56,192, 0, 50, 56,224,255,255, /* 0x 5e0 */
|
||||
57, 0, 0, 0, 75,255,251, 93,127,159, 24, 0, 64,190,255,200, /* 0x 5f0 */
|
||||
160, 25, 0, 44, 58,214, 0, 1,127,150, 0, 0, 59,189, 0, 32, /* 0x 600 */
|
||||
75,255,254,132,128,121, 0, 24,128, 1, 0,100,129,129, 0, 36, /* 0x 610 */
|
||||
124, 99,194, 20,124, 8, 3,166,186, 65, 0, 40,125,128,129, 32, /* 0x 620 */
|
||||
56, 33, 0, 96, 78,128, 0, 32,124, 8, 2,166,148, 33,255,192, /* 0x 630 */
|
||||
144, 1, 0, 68, 56,132,255,232, 56, 3, 0, 24,144, 1, 0, 12, /* 0x 640 */
|
||||
144,129, 0, 8,128, 3, 0, 24,191, 97, 0, 44,129, 97, 0, 8, /* 0x 650 */
|
||||
124,191, 43,120,129,129, 0, 12,124,229, 59,120, 56,192, 0, 0, /* 0x 660 */
|
||||
56, 97, 0, 8, 56,129, 0, 16, 59,223, 0, 52,125, 61, 75,120, /* 0x 670 */
|
||||
124,251, 59,120,144, 1, 0, 16,125, 28, 67,120,145, 97, 0, 24, /* 0x 680 */
|
||||
145,129, 0, 28,147,225, 0, 20, 75,255,251,113,128,190, 0, 8, /* 0x 690 */
|
||||
127,163,235,120, 56,165, 0, 52, 56,128, 0, 3, 75,255,252,189, /* 0x 6a0 */
|
||||
160,191, 0, 44,127,163,235,120, 56,128, 0, 5, 75,255,252,173, /* 0x 6b0 */
|
||||
128,191, 0, 24,127,163,235,120, 56,128, 0, 9, 75,255,252,157, /* 0x 6c0 */
|
||||
127,103,219,120,127,136,227,120,127,227,251,120,127,166,235,120, /* 0x 6d0 */
|
||||
56,129, 0, 24, 56,160, 0, 0, 75,255,252,197,160, 31, 0, 44, /* 0x 6e0 */
|
||||
124,124, 27,120, 59, 96, 0, 0,127,155, 0, 0, 64,156, 0,124, /* 0x 6f0 */
|
||||
128, 30, 0, 0, 59,123, 0, 1, 47,128, 0, 3, 56,128, 0, 0, /* 0x 700 */
|
||||
56,160, 0, 0, 64,190, 0, 88,128,126, 0, 8, 75,255,250, 89, /* 0x 710 */
|
||||
124,125, 27,121,127,228,251,120, 56,160, 2, 0, 65,128, 0, 40, /* 0x 720 */
|
||||
75,255,250, 61, 47,131, 2, 0, 56,128, 0, 0,127,227,251,120, /* 0x 730 */
|
||||
127,165,235,120, 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, /* 0x 740 */
|
||||
65,190, 0, 12, 56, 96, 0,127, 75,255,250, 13, 75,255,252, 81, /* 0x 750 */
|
||||
124,124, 27,120,127,163,235,120, 75,255,250, 21,160, 31, 0, 44, /* 0x 760 */
|
||||
59,222, 0, 32, 75,255,255,132,128, 1, 0, 68,127,131,227,120, /* 0x 770 */
|
||||
124, 8, 3,166,187, 97, 0, 44, 56, 33, 0, 64, 78,128, 0, 32 /* 0x 780 */
|
||||
85, 30, 0, 38,127,231,251,120,127,164,248, 80, 56,161,248, 0, /* 0x 110 */
|
||||
59,189,255,248, 56,132,255,140, 56,125, 0,116, 56, 33,247,240, /* 0x 120 */
|
||||
128,195, 0, 24, 72, 0, 5, 13,124,127, 27,120,127,163,235,120, /* 0x 130 */
|
||||
124,157,240, 80, 72, 0, 0, 81,127,232, 3,166,184, 65, 8, 20, /* 0x 140 */
|
||||
128, 33, 8, 16, 78,128, 0, 32, 56, 0, 0, 90, 68, 0, 0, 2, /* 0x 150 */
|
||||
64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, /* 0x 160 */
|
||||
75,255,255,236, 56, 0, 0, 3, 75,255,255,228, 56, 0, 0, 5, /* 0x 170 */
|
||||
75,255,255,220, 56, 0, 0, 6, 75,255,255,212, 56, 0, 0,125, /* 0x 180 */
|
||||
75,255,255,204, 56, 0, 0, 91, 75,255,255,196, 56, 0, 0, 45, /* 0x 190 */
|
||||
75,255,255,188,124, 8, 2,166,148, 33,255,240,144, 1, 0, 20, /* 0x 1a0 */
|
||||
128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, 64,188, 0, 12, /* 0x 1b0 */
|
||||
56, 96, 0,127, 75,255,255,169, 47,133, 0, 0, 65,158, 0, 28, /* 0x 1c0 */
|
||||
124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1,152, 4, 0, 0, /* 0x 1d0 */
|
||||
56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0,129, 35, 0, 4, /* 0x 1e0 */
|
||||
124, 5, 0, 80,144, 3, 0, 0,128, 1, 0, 20,125, 41, 42, 20, /* 0x 1f0 */
|
||||
124, 8, 3,166, 56, 33, 0, 16,145, 35, 0, 4, 78,128, 0, 32, /* 0x 200 */
|
||||
124, 8, 2,166,148, 33,255,192,144, 1, 0, 68,128, 4, 0, 0, /* 0x 210 */
|
||||
191,129, 0, 48, 47,128, 0, 0,124,159, 35,120,124,126, 27,120, /* 0x 220 */
|
||||
124,188, 43,120,124,221, 51,120, 65,158, 1, 36, 56,160, 0, 12, /* 0x 230 */
|
||||
127,195,243,120, 56,129, 0, 16, 75,255,255, 93,129, 33, 0, 16, /* 0x 240 */
|
||||
128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, 60, 0, 33, 88, /* 0x 250 */
|
||||
96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28,128, 30, 0, 0, /* 0x 260 */
|
||||
47,128, 0, 0, 65,190, 0,232, 72, 0, 0, 12, 47,133, 0, 0, /* 0x 270 */
|
||||
64,190, 0, 12, 56, 96, 0,127, 75,255,254,229,127, 5, 72, 64, /* 0x 280 */
|
||||
65,185,255,244,128, 31, 0, 0,127,137, 0, 64, 65,189,255,232, /* 0x 290 */
|
||||
128, 31, 0, 4, 64,152, 0,136,124,164, 43,120,128,126, 0, 4, /* 0x 2a0 */
|
||||
124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24,145, 33, 0, 32, /* 0x 2b0 */
|
||||
127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0, 64,190,255,184, /* 0x 2c0 */
|
||||
128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0, 64,190,255,168, /* 0x 2d0 */
|
||||
136,193, 0, 25, 49, 61,255,255,124, 9,233, 16,125, 38, 0,208, /* 0x 2e0 */
|
||||
85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4, /* 0x 2f0 */
|
||||
136,161, 0, 26,127,168, 3,166, 78,128, 0, 33,128, 30, 0, 4, /* 0x 300 */
|
||||
129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80, /* 0x 310 */
|
||||
144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120, /* 0x 320 */
|
||||
127,195,243,120, 75,255,254,113,129, 97, 0, 16,129, 63, 0, 0, /* 0x 330 */
|
||||
128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20, /* 0x 340 */
|
||||
144, 31, 0, 4,145, 63, 0, 0, 75,255,254,224,128, 1, 0, 68, /* 0x 350 */
|
||||
187,129, 0, 48,124, 8, 3,166, 56, 33, 0, 64, 78,128, 0, 32, /* 0x 360 */
|
||||
44, 3, 0, 0, 77,130, 0, 32, 48, 4,255,255,125, 96, 33, 16, /* 0x 370 */
|
||||
128, 3, 0, 0,127,128, 32, 0,104, 9, 0, 1, 33, 73, 0, 0, /* 0x 380 */
|
||||
125, 42, 73, 20,125, 42, 88, 57, 65,158, 0, 8, 65,162, 0, 16, /* 0x 390 */
|
||||
144,163, 0, 4,144,131, 0, 0, 78,128, 0, 32, 56, 99, 0, 8, /* 0x 3a0 */
|
||||
75,255,255,208,124, 8, 2,166,148, 33,255,160,144, 1, 0,100, /* 0x 3b0 */
|
||||
160, 3, 0, 16,161, 67, 0, 44,125,128, 0, 38,129, 35, 0, 28, /* 0x 3c0 */
|
||||
104, 0, 0, 3, 53, 74,255,255,124, 0, 0,208,190, 65, 0, 40, /* 0x 3d0 */
|
||||
127,163, 74, 20,124,121, 27,120, 84, 3, 46,246,145,129, 0, 36, /* 0x 3e0 */
|
||||
124,151, 35,120,124,178, 43,120,124,211, 51,120,124,244, 59,120, /* 0x 3f0 */
|
||||
125, 21, 67,120, 56, 99, 8, 34,127,171,235,120, 59,224,255,255, /* 0x 400 */
|
||||
59,192, 0, 0, 65,128, 0, 68, 57, 74, 0, 1,125, 73, 3,166, /* 0x 410 */
|
||||
128, 11, 0, 0, 47,128, 0, 1, 64,190, 0, 40,129, 43, 0, 8, /* 0x 420 */
|
||||
127,137,248, 64, 64,156, 0, 8,125, 63, 75,120,128, 11, 0, 20, /* 0x 430 */
|
||||
124, 0, 74, 20,127,158, 0, 64, 64,156, 0, 8,124, 30, 3,120, /* 0x 440 */
|
||||
57,107, 0, 32, 66, 0,255,204, 87,255, 0, 38,125, 63,240, 80, /* 0x 450 */
|
||||
57, 41, 15,255, 85, 62, 0, 38,124,102, 27,120,127,196,243,120, /* 0x 460 */
|
||||
127,227,251,120, 56,160, 0, 0, 56,224,255,255, 57, 0, 0, 0, /* 0x 470 */
|
||||
75,255,252,217,160, 25, 0, 44, 58,192, 0, 0,127,150, 0, 0, /* 0x 480 */
|
||||
124, 3,242, 20,144, 1, 0, 8,127, 31, 24, 80, 64,156, 1,128, /* 0x 490 */
|
||||
46, 23, 0, 0, 65,146, 0, 40,128, 29, 0, 0, 47,128, 0, 6, /* 0x 4a0 */
|
||||
64,190, 0, 28,128,189, 0, 8,126, 99,155,120,124,165,194, 20, /* 0x 4b0 */
|
||||
56,128, 0, 3, 75,255,254,173, 72, 0, 1, 64,128, 29, 0, 0, /* 0x 4c0 */
|
||||
47,128, 0, 1, 64,190, 1, 52,128, 29, 0, 24,129, 93, 0, 8, /* 0x 4d0 */
|
||||
61, 32,115, 81, 84, 0, 22,250, 97, 41, 98, 64,129,125, 0, 20, /* 0x 4e0 */
|
||||
125, 41, 4, 48, 85, 94, 5, 62, 48, 23,255,255,124,160,185, 16, /* 0x 4f0 */
|
||||
128, 29, 0, 16, 85, 58, 7,126,127,106, 90, 20, 84,165, 8, 60, /* 0x 500 */
|
||||
127,254, 80, 80,144, 1, 0, 16,145, 65, 0, 20,127,128,242, 20, /* 0x 510 */
|
||||
127,255,194, 20,127,123,194, 20,124,165,211,120, 65,146, 0, 12, /* 0x 520 */
|
||||
56,192, 0, 50, 72, 0, 0, 8, 56,192, 0, 18, 64,146, 0, 12, /* 0x 530 */
|
||||
126, 71,147,120, 72, 0, 0, 8, 56,224,255,255,129, 29, 0, 4, /* 0x 540 */
|
||||
127,227,251,120,125, 30, 64, 80,127,132,227,120, 75,255,251,253, /* 0x 550 */
|
||||
127,159, 24, 0, 64,158, 0,104, 65,178, 0, 24,126,227,187,120, /* 0x 560 */
|
||||
56,129, 0, 16,126,133,163,120,126,166,171,120, 75,255,252,149, /* 0x 570 */
|
||||
115, 64, 0, 2,124, 28, 0,208, 84, 30, 5, 62, 65,130, 0, 36, /* 0x 580 */
|
||||
47,158, 0, 0,125, 63,226, 20, 65,158, 0, 24,127,201, 3,166, /* 0x 590 */
|
||||
56, 0, 0, 0,152, 9, 0, 0, 57, 41, 0, 1, 66, 0,255,248, /* 0x 5a0 */
|
||||
65,178, 0, 36,127,227,251,120,127,132,227,120,127, 69,211,120, /* 0x 5b0 */
|
||||
75,255,251,205, 47,131, 0, 0, 65,190, 0, 12, 56, 96, 0,127, /* 0x 5c0 */
|
||||
75,255,251,157,124, 28,242, 20,127,255, 2, 20,127,159,216, 64, /* 0x 5d0 */
|
||||
64,188, 0, 40,124,159,216, 80,127, 69,211,120,127,227,251,120, /* 0x 5e0 */
|
||||
56,192, 0, 50, 56,224,255,255, 57, 0, 0, 0, 75,255,251, 93, /* 0x 5f0 */
|
||||
127,159, 24, 0, 64,190,255,200,160, 25, 0, 44, 58,214, 0, 1, /* 0x 600 */
|
||||
127,150, 0, 0, 59,189, 0, 32, 75,255,254,132,128,121, 0, 24, /* 0x 610 */
|
||||
128, 1, 0,100,129,129, 0, 36,124, 99,194, 20,124, 8, 3,166, /* 0x 620 */
|
||||
186, 65, 0, 40,125,128,129, 32, 56, 33, 0, 96, 78,128, 0, 32, /* 0x 630 */
|
||||
124, 8, 2,166,148, 33,255,192,144, 1, 0, 68, 56,132,255,232, /* 0x 640 */
|
||||
56, 3, 0, 24,144, 1, 0, 12,144,129, 0, 8,128, 3, 0, 24, /* 0x 650 */
|
||||
191, 97, 0, 44,129, 97, 0, 8,124,191, 43,120,129,129, 0, 12, /* 0x 660 */
|
||||
124,229, 59,120, 56,192, 0, 0, 56, 97, 0, 8, 56,129, 0, 16, /* 0x 670 */
|
||||
59,223, 0, 52,125, 61, 75,120,124,251, 59,120,144, 1, 0, 16, /* 0x 680 */
|
||||
125, 28, 67,120,145, 97, 0, 24,145,129, 0, 28,147,225, 0, 20, /* 0x 690 */
|
||||
75,255,251,113,128,190, 0, 8,127,163,235,120, 56,165, 0, 52, /* 0x 6a0 */
|
||||
56,128, 0, 3, 75,255,252,189,160,191, 0, 44,127,163,235,120, /* 0x 6b0 */
|
||||
56,128, 0, 5, 75,255,252,173,128,191, 0, 24,127,163,235,120, /* 0x 6c0 */
|
||||
56,128, 0, 9, 75,255,252,157,127,103,219,120,127,136,227,120, /* 0x 6d0 */
|
||||
127,227,251,120,127,166,235,120, 56,129, 0, 24, 56,160, 0, 0, /* 0x 6e0 */
|
||||
75,255,252,197,160, 31, 0, 44,124,124, 27,120, 59, 96, 0, 0, /* 0x 6f0 */
|
||||
127,155, 0, 0, 64,156, 0,124,128, 30, 0, 0, 59,123, 0, 1, /* 0x 700 */
|
||||
47,128, 0, 3, 56,128, 0, 0, 56,160, 0, 0, 64,190, 0, 88, /* 0x 710 */
|
||||
128,126, 0, 8, 75,255,250, 89,124,125, 27,121,127,228,251,120, /* 0x 720 */
|
||||
56,160, 2, 0, 65,128, 0, 40, 75,255,250, 61, 47,131, 2, 0, /* 0x 730 */
|
||||
56,128, 0, 0,127,227,251,120,127,165,235,120, 56,192, 0, 0, /* 0x 740 */
|
||||
56,224, 0, 0, 57, 0, 0, 0, 65,190, 0, 12, 56, 96, 0,127, /* 0x 750 */
|
||||
75,255,250, 13, 75,255,252, 81,124,124, 27,120,127,163,235,120, /* 0x 760 */
|
||||
75,255,250, 21,160, 31, 0, 44, 59,222, 0, 32, 75,255,255,132, /* 0x 770 */
|
||||
128, 1, 0, 68,127,131,227,120,124, 8, 3,166,187, 97, 0, 44, /* 0x 780 */
|
||||
56, 33, 0, 64, 78,128, 0, 32 /* 0x 790 */
|
||||
};
|
||||
|
||||
@ -32,6 +32,10 @@
|
||||
//#include "arch/i386/macros2.ash"
|
||||
|
||||
#include "arch/amd64/regs.h"
|
||||
#define section .section
|
||||
|
||||
sz_Ehdr= 64
|
||||
sz_Phdr= 56
|
||||
|
||||
sz_l_info= 12
|
||||
l_lsize= 8
|
||||
@ -61,9 +65,10 @@ M_NRV2B_LE32=2 // ../conf.h
|
||||
M_NRV2E_LE32=8
|
||||
|
||||
|
||||
.section LEXEC000
|
||||
section ELFMAINX
|
||||
_start: .globl _start
|
||||
call main // push &decompress
|
||||
ret_main:
|
||||
|
||||
/* Returns 0 on success; non-zero on failure. */
|
||||
decompress: // (uchar const *src, size_t lsrc, uchar *dst, u32 &ldst, uint method)
|
||||
@ -74,6 +79,14 @@ decompress: // (uchar const *src, size_t lsrc, uchar *dst, u32 &ldst, uint meth
|
||||
#define dst %arg3
|
||||
#define ldst %arg4 /* Out: actually a reference: &len_dst */
|
||||
#define meth %arg5l
|
||||
#define methb %arg5b
|
||||
|
||||
push %rbp; push %rbx // C callable
|
||||
push ldst
|
||||
push dst
|
||||
addq src,lsrc; push lsrc // &input_eof
|
||||
|
||||
section NRV_COMMON
|
||||
|
||||
/* Working registers */
|
||||
#define off %eax /* XXX: 2GB */
|
||||
@ -82,11 +95,6 @@ decompress: // (uchar const *src, size_t lsrc, uchar *dst, u32 &ldst, uint meth
|
||||
#define bits %ebx
|
||||
#define disp %rbp
|
||||
|
||||
push %rbp; push %rbx // C callable
|
||||
push ldst
|
||||
push dst
|
||||
addq src,lsrc; push lsrc // &input_eof
|
||||
|
||||
movq src,%rsi // hardware src for movsb, lodsb
|
||||
movq dst,%rdi // hardware dst for movsb
|
||||
xor bits,bits // empty; force refill
|
||||
@ -154,14 +162,19 @@ copy1:
|
||||
copy0:
|
||||
rep; ret
|
||||
|
||||
#include "arch/amd64/nrv2e_d.S"
|
||||
#include "arch/amd64/nrv2b_d.S"
|
||||
|
||||
setup:
|
||||
cld
|
||||
pop %r11 // addq $ getbit - ra_setup,%r11 # &getbit
|
||||
cmpl $ M_NRV2E_LE32,meth; je top_n2e
|
||||
cmpl $ M_NRV2B_LE32,meth; je top_n2b
|
||||
|
||||
section NRV2E
|
||||
#include "arch/amd64/nrv2e_d.S"
|
||||
|
||||
section NRV2B
|
||||
#include "arch/amd64/nrv2b_d.S"
|
||||
|
||||
#include "arch/amd64/lzma_d.S"
|
||||
|
||||
section ELFMAINY
|
||||
eof:
|
||||
pop %rcx // &input_eof
|
||||
movq %rsi,%rax; subq %rcx,%rax // src -= eof; // return 0: good; else: bad
|
||||
@ -170,20 +183,20 @@ eof:
|
||||
pop %rbx; pop %rbp
|
||||
ret
|
||||
|
||||
/* Temporary until we get the buildLoader stuff working ... */
|
||||
.ascii "\n$Id: UPX (C) 1996-2006 the UPX Team. "
|
||||
.asciz "All Rights Reserved. http://upx.sf.net $\n"
|
||||
|
||||
/* These from /usr/include/asm-x86_64/unistd.h */
|
||||
__NR_write = 1
|
||||
__NR_exit = 60
|
||||
|
||||
msg_SELinux:
|
||||
push $ L71 - L70; pop %arg3 // length
|
||||
call L71
|
||||
call L72
|
||||
L70:
|
||||
.asciz "PROT_EXEC|PROT_WRITE failed.\n"
|
||||
L71:
|
||||
// IDENTSTR goes here
|
||||
|
||||
section ELFMAINZ
|
||||
L72:
|
||||
pop %arg2 // message text
|
||||
push $2; pop %arg1 // fd stderr
|
||||
push $ __NR_write; pop %rax
|
||||
@ -232,7 +245,7 @@ unfold:
|
||||
push $ LENU // for unmap in fold
|
||||
movl $ CNTC,%ecx
|
||||
push $ ADRX //# for upx_main
|
||||
push $ LENX // for upx_main
|
||||
push %r15 // LENX for upx_main
|
||||
|
||||
/* Move and relocate if compressed overlaps uncompressed.
|
||||
Move by 0 when total compressed executable is < 3MB.
|
||||
@ -251,7 +264,7 @@ unfold:
|
||||
push %rax // ret_addr after decompression
|
||||
xchgl %eax,%arg3l // %arg3= dst for unfolding XXX: 4GB
|
||||
lodsl; push %rax // allocate slot on stack
|
||||
movq %rsp,%arg4 // &len_dst ==> &do_not_care
|
||||
movq %rsp,%arg4 // &len_dst ==> used by lzma for EOF
|
||||
lodsl; xchgl %eax,%arg1l // sz_cpr XXX: 4GB
|
||||
lodsl; movzbl %al,%arg5l // b_method
|
||||
xchg %arg1l,%arg2l // XXX: 4GB
|
||||
@ -260,14 +273,16 @@ unfold:
|
||||
ret
|
||||
|
||||
main:
|
||||
// int3 # uncomment for debugging
|
||||
//// int3 # uncomment for debugging
|
||||
pop %rbp // &decompress
|
||||
movl -4-(ret_main - _start)(%rbp),%r15d // length which precedes stub
|
||||
subl $ sz_Ehdr + 2*sz_Phdr + sz_l_info + sz_p_info,%r15d
|
||||
call unfold // push &b_info
|
||||
/* { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...} */
|
||||
// { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...}
|
||||
|
||||
/*__XTHEENDX__*/
|
||||
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
||||
*/
|
||||
|
||||
|
||||
109
src/stub/src/arch/amd64/lzma_d.S
Normal file
109
src/stub/src/arch/amd64/lzma_d.S
Normal file
@ -0,0 +1,109 @@
|
||||
/*
|
||||
; lzma_d.S -- 64-bit assembly
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
;
|
||||
; Copyright (C) 2006-2006 Markus Franz Xaver Johannes Oberhumer
|
||||
; All Rights Reserved.
|
||||
;
|
||||
; UPX and the UCL library are free software; you can redistribute them
|
||||
; and/or modify them under the terms of the GNU General Public License as
|
||||
; published by the Free Software Foundation; either version 2 of
|
||||
; the License, or (at your option) any later version.
|
||||
;
|
||||
; This program is distributed in the hope that it will be useful,
|
||||
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
; GNU General Public License for more details.
|
||||
;
|
||||
; You should have received a copy of the GNU General Public License
|
||||
; along with this program; see the file COPYING.
|
||||
; If not, write to the Free Software Foundation, Inc.,
|
||||
; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
;
|
||||
; Markus F.X.J. Oberhumer
|
||||
; <markus@oberhumer.com>
|
||||
; http://www.oberhumer.com/opensource/upx/
|
||||
;
|
||||
*/
|
||||
|
||||
#define section .section
|
||||
|
||||
section LZMA_ELF00
|
||||
//decompress: // (uchar const *src, size_t lsrc, uchar *dst, u32 &ldst, uint method)
|
||||
/* Arguments according to calling convention */
|
||||
#define src %arg1 /* %rdi */
|
||||
#define lsrc %arg2 /* %rsi */
|
||||
#define dst %arg3 /* %rdx */
|
||||
#define ldst %arg4 /* %rcx */ /* Out: actually a reference: &len_dst */
|
||||
#define meth %arg5l /* %r8 */
|
||||
#define methb %arg5b
|
||||
|
||||
// ELFMAINX has already done this for us:
|
||||
// pushq %rbp; push %rbx // C callable
|
||||
// pushq ldst
|
||||
// pushq dst
|
||||
// addq src,lsrc; push lsrc // &input_eof
|
||||
|
||||
#define M_LZMA 14
|
||||
cmpb $ M_LZMA,methb; jne not_lzma
|
||||
|
||||
pushq %rbp; movq %rsp,%rbp // we use alloca
|
||||
|
||||
//LzmaDecode( // from lzmaSDK/C/7zip/Compress/LZMA_C/LzmaDecode.h
|
||||
// %arg1= &CLzmaDecoderState,
|
||||
// %arg2= in, %arg3l= inSize, %arg4= &inSizeProcessed,
|
||||
// %arg5= out, %arg6l= outSize, arg7@ 8+%esp/ &outSizeProcessed
|
||||
//)
|
||||
movl (ldst),%arg6l // &outSize XXX: 4GB
|
||||
movq dst,%arg5 // outp
|
||||
movq lsrc,%arg3 // inSize
|
||||
leaq 2(src),%arg2; pushq %arg2 // in; save @-8(%rbp) for size calc at eof
|
||||
|
||||
movb (src),%al; decl %arg3l // first byte, replaces LzmaDecodeProperties()
|
||||
movb %al,%cl // cl= ((lit_context_bits + lit_pos_bits)<<3) | pos_bits
|
||||
andb $7,%al // al= pos_bits
|
||||
shrb $3,%cl // cl= lit_context_bits + lit_pos_bits
|
||||
|
||||
#define LZMA_BASE_SIZE 1846
|
||||
#define LZMA_LIT_SIZE 768
|
||||
#define szSizeT 4
|
||||
|
||||
movq $-LZMA_LIT_SIZE,%rbx
|
||||
shlq %cl,%rbx; movb %al,%cl // %cl= pos_bits
|
||||
// alloca{inSizeProcessed, outSizeProcessed, *_bits, CLzmaDecoderState}
|
||||
leaq -(2*szSizeT +4) - 2*LZMA_BASE_SIZE(%rsp,%rbx,2), %rbx
|
||||
andq $~0<<6,%rbx // 64-byte align
|
||||
1:
|
||||
pushq $0 // clera CLzmaDecoderState on stack
|
||||
cmpq %rbx,%rsp
|
||||
jne 1b
|
||||
|
||||
|
||||
pushq %rbx // &outSizeProcessed [arg7]
|
||||
leaq 2*szSizeT(%rbx),%arg1 // &CLzmaDecoderState
|
||||
movb -1(%arg2),%cl; decl %arg3l // second byte, replaces LzmaDecodeProperties()
|
||||
movb %al,2(%arg1) // store pos_bits
|
||||
movb %cl,%al // al= (lit_pos_bits<<4) | lit_context_bits
|
||||
shrb $4,%cl; movb %cl,1(%arg1) // store lit_pos_bits
|
||||
andb $0xf,%al; movb %al, (%arg1) // store lit_context_bits
|
||||
leaq -szSizeT(%arg1),%arg4 // &inSizeProcessed
|
||||
|
||||
pushq %rax // return address slot (dummy CALL)
|
||||
|
||||
section LZMA_DEC10
|
||||
#include "lzma_d_cs.S"
|
||||
|
||||
section LZMA_DEC20
|
||||
#include "lzma_d_cf.S"
|
||||
|
||||
section LZMA_DEC30
|
||||
movq -1*8(%rbp),%rsi // src [after header]
|
||||
movq 2*8(%rbp),%rdi // dst
|
||||
movl szSizeT(%rbx),%ecx; addq %rcx,%rsi // inSizeProcessed
|
||||
movl (%rbx),%edx; addq %rdx,%rdi // outSizeProcessed
|
||||
leave // movl %ebp,%rsp; popq %rbp
|
||||
not_lzma:
|
||||
|
||||
// vi:ts=8:et
|
||||
|
||||
@ -29,6 +29,7 @@
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
cmpb $ M_NRV2B_LE32,methb; je top_n2b; jmp not_n2b
|
||||
.p2align 3
|
||||
lit_n2b:
|
||||
incq %rsi; movb %dl,(%rdi)
|
||||
@ -62,6 +63,7 @@ gotlen_n2b:
|
||||
bot_n2b: # In: 0==len
|
||||
jmp top_n2b
|
||||
|
||||
not_n2b:
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
||||
|
||||
@ -29,6 +29,7 @@
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
cmpb $ M_NRV2E_LE32,methb; je top_n2e; jmp not_n2e
|
||||
.p2align 3
|
||||
lit_n2e:
|
||||
incq %rsi; movb %dl,(%rdi)
|
||||
@ -75,6 +76,8 @@ gotlen_n2e:
|
||||
bot_n2e: # In: 0==len
|
||||
jmp top_n2e
|
||||
|
||||
not_n2e:
|
||||
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
||||
|
||||
@ -11,5 +11,6 @@
|
||||
#define sys4l r10d
|
||||
#define arg5 r8
|
||||
#define arg5l r8d
|
||||
#define arg5b r8b
|
||||
#define arg6 r9
|
||||
#define arg6l r9d
|
||||
|
||||
158
src/stub/src/arch/i386/lzma_d_2.ash
Normal file
158
src/stub/src/arch/i386/lzma_d_2.ash
Normal file
@ -0,0 +1,158 @@
|
||||
/*
|
||||
; lzma_d.ash -- 32-bit assembly
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
;
|
||||
; Copyright (C) 2006-2006 Markus Franz Xaver Johannes Oberhumer
|
||||
; All Rights Reserved.
|
||||
;
|
||||
; UPX and the UCL library are free software; you can redistribute them
|
||||
; and/or modify them under the terms of the GNU General Public License as
|
||||
; published by the Free Software Foundation; either version 2 of
|
||||
; the License, or (at your option) any later version.
|
||||
;
|
||||
; This program is distributed in the hope that it will be useful,
|
||||
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
; GNU General Public License for more details.
|
||||
;
|
||||
; You should have received a copy of the GNU General Public License
|
||||
; along with this program; see the file COPYING.
|
||||
; If not, write to the Free Software Foundation, Inc.,
|
||||
; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
;
|
||||
; Markus F.X.J. Oberhumer
|
||||
; <markus@oberhumer.com>
|
||||
; http://www.oberhumer.com/opensource/upx/
|
||||
;
|
||||
|
||||
|
||||
; ------------- DECOMPRESSION -------------
|
||||
|
||||
; Input:
|
||||
; esi - source
|
||||
; edi - dest
|
||||
; cld
|
||||
|
||||
; Output:
|
||||
; eax - 0
|
||||
; ecx - 0
|
||||
*/
|
||||
|
||||
// CPU 386
|
||||
|
||||
//
|
||||
// init
|
||||
section LZMA_DEC00
|
||||
|
||||
// ebx = alloca('UPXa');
|
||||
|
||||
mov ebp, esp // save stack
|
||||
|
||||
lea ebx, [esp + UPXa]
|
||||
xor eax, eax
|
||||
.clearstack1:
|
||||
push eax
|
||||
cmp esp, ebx
|
||||
jnz .clearstack1
|
||||
|
||||
|
||||
inc esi // skip 2 bytes for properties
|
||||
inc esi
|
||||
|
||||
push ebx // &outSizeProcessed
|
||||
push UPXb // outSize
|
||||
push edi // out
|
||||
add ebx, 4
|
||||
push ebx // &inSizeProcessed
|
||||
push UPXc // inSize
|
||||
push esi // in
|
||||
add ebx, 4
|
||||
push ebx // &CLzmaDecoderState
|
||||
push eax // dummy for call
|
||||
|
||||
// hardwired LzmaDecodeProperties()
|
||||
mov dword ptr [ebx], offset UPXd // lc, lp, pb, dummy
|
||||
|
||||
|
||||
section LZMA_ELF00
|
||||
|
||||
#define LZMA_BASE_SIZE 1846
|
||||
#define LZMA_LIT_SIZE 768
|
||||
|
||||
#ifndef O_OUTS // ELF defines them, others do not care
|
||||
#define O_OUTS 0
|
||||
#define O_INS 0
|
||||
#endif
|
||||
|
||||
mov ebp, esp // save stack
|
||||
mov edx,[O_INS + ebp] // inSize
|
||||
|
||||
lodsb // first byte, replaces LzmaDecodeProperties()
|
||||
dec edx
|
||||
mov cl,al // cl= ((lit_context_bits + lit_pos_bits)<<3) | pos_bits
|
||||
and al,7 // al= pos_bits
|
||||
shr cl,3 // cl= lit_context_bits + lit_pos_bits
|
||||
|
||||
mov ebx, -LZMA_LIT_SIZE
|
||||
shl ebx,cl
|
||||
// inSizeProcessed, outSizeProcessed, *_bits, CLzmaDecoderState
|
||||
lea ebx,[0 -(2*4 +4) - 2*LZMA_BASE_SIZE + 2*ebx + esp]
|
||||
and ebx, (~0<<5) // 32-byte align
|
||||
.elf_clearstack1:
|
||||
push 0
|
||||
cmp esp,ebx
|
||||
jne .elf_clearstack1
|
||||
|
||||
push ebx // &outSizeProcessed
|
||||
add ebx, 4
|
||||
mov ecx,[O_OUTS + ebp] // &outSize
|
||||
push dword [ecx] // outSize
|
||||
push edi // out
|
||||
push ebx // &inSizeProcessed
|
||||
add ebx, 4
|
||||
|
||||
mov [2+ ebx],al // store pos_bits
|
||||
lodsb // second byte, replaces LzmaDecodeProperties()
|
||||
dec edx
|
||||
mov cl,al // cl= (lit_pos_bits<<4) | lit_context_bits
|
||||
and al,0xf
|
||||
mov [ ebx],al // store lit_context_bits
|
||||
shr cl,4
|
||||
mov [1+ ebx],cl // store lit_pos_bits
|
||||
|
||||
push edx // inSize -2
|
||||
push esi // in
|
||||
push ebx // &CLzmaDecoderState
|
||||
push eax // return address slot (dummy CALL)
|
||||
|
||||
|
||||
|
||||
section LZMA_DEC10
|
||||
#include "lzma_d_cs_2.ash"
|
||||
|
||||
section LZMA_DEC20
|
||||
#include "lzma_d_cf_2.ash"
|
||||
|
||||
|
||||
//
|
||||
// cleanup
|
||||
section LZMA_DEC30
|
||||
|
||||
add esi, [ebx - 4] // inSizeProcessed
|
||||
add edi, [ebx - 8] // outSizeProcessed
|
||||
xor eax, eax
|
||||
|
||||
lea ecx, [esp - 256]
|
||||
mov esp, ebp // restore stack
|
||||
.clearstack2:
|
||||
push eax
|
||||
cmp esp, ecx
|
||||
jnz .clearstack2
|
||||
|
||||
mov esp, ebp // restore stack
|
||||
xor ecx, ecx
|
||||
|
||||
|
||||
// vi:ts=8:et
|
||||
|
||||
169
src/stub/src/arch/i386/lzma_d_cf_2.ash
Normal file
169
src/stub/src/arch/i386/lzma_d_cf_2.ash
Normal file
@ -0,0 +1,169 @@
|
||||
db 85, 87, 86, 83,131,236,124,139,148, 36,144, 0, 0, 0,199, 68 // 0x0000
|
||||
db 36,116, 0, 0, 0, 0,198, 68, 36,115, 0,139,172, 36,156, 0 // 0x0010
|
||||
db 0, 0,141, 66, 4,137, 68, 36,120,184, 1, 0, 0, 0, 15,182 // 0x0020
|
||||
db 74, 2,137,195,211,227,137,217, 73,137, 76, 36,108, 15,182, 74 // 0x0030
|
||||
db 1,211,224, 72,137, 68, 36,104,139,132, 36,168, 0, 0, 0, 15 // 0x0040
|
||||
db 182, 50,199, 69, 0, 0, 0, 0, 0,199, 68, 36, 96, 0, 0, 0 // 0x0050
|
||||
db 0,199, 0, 0, 0, 0, 0,184, 0, 3, 0, 0,137,116, 36,100 // 0x0060
|
||||
db 199, 68, 36, 92, 1, 0, 0, 0,199, 68, 36, 88, 1, 0, 0, 0 // 0x0070
|
||||
db 199, 68, 36, 84, 1, 0, 0, 0,199, 68, 36, 80, 1, 0, 0, 0 // 0x0080
|
||||
db 15,182, 74, 1, 1,241,211,224,141,136, 54, 7, 0, 0, 57, 76 // 0x0090
|
||||
db 36,116,115, 14,139, 68, 36,120,102,199, 0, 0, 4,131,192, 2 // 0x00a0
|
||||
db 226,246,139,156, 36,148, 0, 0, 0, 49,255,199, 68, 36, 72,255 // 0x00b0
|
||||
db 255,255,255,137,218, 3,148, 36,152, 0, 0, 0,137, 84, 36, 76 // 0x00c0
|
||||
db 49,210, 59, 92, 36, 76, 15,132,124, 9, 0, 0, 15,182, 3,193 // 0x00d0
|
||||
db 231, 8, 66, 67, 9,199,131,250, 4,126,231,139,140, 36,164, 0 // 0x00e0
|
||||
db 0, 0, 57, 76, 36,116, 15,131,100, 9, 0, 0,139,116, 36,116 // 0x00f0
|
||||
db 35,116, 36,108,139, 68, 36, 96,139, 84, 36,120,193,224, 4,137 // 0x0100
|
||||
db 116, 36, 68, 1,240,129,124, 36, 72,255,255,255, 0,141, 44, 66 // 0x0110
|
||||
db 119, 24, 59, 92, 36, 76, 15,132, 44, 9, 0, 0,193,100, 36, 72 // 0x0120
|
||||
db 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139 // 0x0130
|
||||
db 85, 0,193,232, 11, 15,183,202, 15,175,193, 57,199, 15,131,221 // 0x0140
|
||||
db 1, 0, 0,137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,138, 76 // 0x0150
|
||||
db 36,100,193,248, 5,190, 1, 0, 0, 0,141, 4, 2, 15,182, 84 // 0x0160
|
||||
db 36,115,102,137, 69, 0,139, 68, 36,116, 35, 68, 36,104,139,108 // 0x0170
|
||||
db 36,120,211,224,185, 8, 0, 0, 0, 43, 76, 36,100,211,250, 1 // 0x0180
|
||||
db 208,105,192, 0, 6, 0, 0,131,124, 36, 96, 6,141,132, 5,108 // 0x0190
|
||||
db 14, 0, 0,137, 68, 36, 20, 15,142,202, 0, 0, 0,139, 68, 36 // 0x01a0
|
||||
db 116, 43, 68, 36, 92,139,148, 36,160, 0, 0, 0, 15,182, 4, 2 // 0x01b0
|
||||
db 137, 68, 36, 64,209,100, 36, 64,139, 76, 36, 64,141, 20, 54,139 // 0x01c0
|
||||
db 108, 36, 20,129,225, 0, 1, 0, 0,129,124, 36, 72,255,255,255 // 0x01d0
|
||||
db 0,141, 68, 77, 0,137, 76, 36, 60,141, 44, 16,119, 24, 59, 92 // 0x01e0
|
||||
db 36, 76, 15,132, 96, 8, 0, 0,193,100, 36, 72, 8, 15,182, 3 // 0x01f0
|
||||
db 193,231, 8, 67, 9,199,139, 68, 36, 72,102,139,141, 0, 2, 0 // 0x0200
|
||||
db 0,193,232, 11, 15,183,241, 15,175,198, 57,199,115, 35,137, 68 // 0x0210
|
||||
db 36, 72,184, 0, 8, 0, 0, 41,240,137,214,193,248, 5,131,124 // 0x0220
|
||||
db 36, 60, 0,141, 4, 1,102,137,133, 0, 2, 0, 0,116, 34,235 // 0x0230
|
||||
db 46, 41, 68, 36, 72, 41,199,137,200,141,114, 1,102,193,232, 5 // 0x0240
|
||||
db 102, 41,193,131,124, 36, 60, 0,102,137,141, 0, 2, 0, 0,116 // 0x0250
|
||||
db 14,129,254,255, 0, 0, 0, 15,142, 87,255,255,255,235,121,129 // 0x0260
|
||||
db 254,255, 0, 0, 0,127,113,141, 20, 54,139,108, 36, 20, 1,213 // 0x0270
|
||||
db 129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15,132 // 0x0280
|
||||
db 196, 7, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67 // 0x0290
|
||||
db 9,199,139, 68, 36, 72,102,139, 77, 0,193,232, 11, 15,183,241 // 0x02a0
|
||||
db 15,175,198, 57,199,115, 25,137, 68, 36, 72,184, 0, 8, 0, 0 // 0x02b0
|
||||
db 41,240,137,214,193,248, 5,141, 4, 1,102,137, 69, 0,235,159 // 0x02c0
|
||||
db 41, 68, 36, 72, 41,199,137,200,141,114, 1,102,193,232, 5,102 // 0x02d0
|
||||
db 41,193,102,137, 77, 0,235,135,139, 84, 36,116,137,240,139,140 // 0x02e0
|
||||
db 36,160, 0, 0, 0,136, 68, 36,115,136, 4, 10, 66,131,124, 36 // 0x02f0
|
||||
db 96, 3,137, 84, 36,116,127, 13,199, 68, 36, 96, 0, 0, 0, 0 // 0x0300
|
||||
db 233, 27, 7, 0, 0,131,124, 36, 96, 9,127, 10,131,108, 36, 96 // 0x0310
|
||||
db 3,233, 10, 7, 0, 0,131,108, 36, 96, 6,233, 0, 7, 0, 0 // 0x0320
|
||||
db 139, 76, 36, 72, 41,199,139,116, 36, 96, 41,193,137,208,102,193 // 0x0330
|
||||
db 232, 5,102, 41,194,129,249,255,255,255, 0,102,137, 85, 0,139 // 0x0340
|
||||
db 108, 36,120,141,116,117, 0,137,116, 36, 56,119, 22, 59, 92, 36 // 0x0350
|
||||
db 76, 15,132,241, 6, 0, 0, 15,182, 3,193,231, 8,193,225, 8 // 0x0360
|
||||
db 67, 9,199,139,108, 36, 56,137,200,193,232, 11,102,139,149,128 // 0x0370
|
||||
db 1, 0, 0, 15,183,234, 15,175,197, 57,199,115, 82,137,198,184 // 0x0380
|
||||
db 0, 8, 0, 0, 41,232,139,108, 36, 88,193,248, 5,139, 76, 36 // 0x0390
|
||||
db 84,141, 4, 2,139, 84, 36, 56,137, 76, 36, 80,139, 76, 36,120 // 0x03a0
|
||||
db 102,137,130,128, 1, 0, 0,139, 68, 36, 92,137,108, 36, 84,137 // 0x03b0
|
||||
db 68, 36, 88, 49,192,131,124, 36, 96, 6, 15,159,192,129,193,100 // 0x03c0
|
||||
db 6, 0, 0,141, 4, 64,137, 68, 36, 96,233,116, 2, 0, 0,137 // 0x03d0
|
||||
db 206, 41,199, 41,198,137,208,102,193,232, 5,139, 76, 36, 56,102 // 0x03e0
|
||||
db 41,194,129,254,255,255,255, 0,102,137,145,128, 1, 0, 0,119 // 0x03f0
|
||||
db 22, 59, 92, 36, 76, 15,132, 77, 6, 0, 0, 15,182, 3,193,231 // 0x0400
|
||||
db 8,193,230, 8, 67, 9,199,139,108, 36, 56,137,242,193,234, 11 // 0x0410
|
||||
db 102,139,141,152, 1, 0, 0, 15,183,193, 15,175,208, 57,215, 15 // 0x0420
|
||||
db 131,227, 0, 0, 0,189, 0, 8, 0, 0,137,214, 41,197,199, 68 // 0x0430
|
||||
db 36, 52, 0, 8, 0, 0,137,232,193,248, 5,141, 4, 1,139, 76 // 0x0440
|
||||
db 36, 56,102,137,129,152, 1, 0, 0,139, 68, 36, 96,139, 76, 36 // 0x0450
|
||||
db 68,193,224, 5, 3, 68, 36,120,129,250,255,255,255, 0,141, 44 // 0x0460
|
||||
db 72,119, 22, 59, 92, 36, 76, 15,132,219, 5, 0, 0, 15,182, 3 // 0x0470
|
||||
db 193,231, 8,193,230, 8, 67, 9,199,102,139,149,224, 1, 0, 0 // 0x0480
|
||||
db 137,240,193,232, 11, 15,183,202, 15,175,193, 57,199,115, 96, 41 // 0x0490
|
||||
db 76, 36, 52,193,124, 36, 52, 5,139,116, 36, 52,137, 68, 36, 72 // 0x04a0
|
||||
db 131,124, 36,116, 0,141, 4, 50,102,137,133,224, 1, 0, 0, 15 // 0x04b0
|
||||
db 132,147, 5, 0, 0, 49,192,131,124, 36, 96, 6,139,172, 36,160 // 0x04c0
|
||||
db 0, 0, 0,139, 84, 36,116, 15,159,192,141, 68, 0, 9,137, 68 // 0x04d0
|
||||
db 36, 96,139, 68, 36,116, 43, 68, 36, 92,138, 68, 5, 0,136, 68 // 0x04e0
|
||||
db 36,115,136, 4, 42, 66,137, 84, 36,116,233, 49, 5, 0, 0, 41 // 0x04f0
|
||||
db 198, 41,199,137,208,102,193,232, 5,102, 41,194,102,137,149,224 // 0x0500
|
||||
db 1, 0, 0,233, 31, 1, 0, 0,137,200, 41,214,102,193,232, 5 // 0x0510
|
||||
db 139,108, 36, 56,102, 41,193, 41,215,129,254,255,255,255, 0,102 // 0x0520
|
||||
db 137,141,152, 1, 0, 0,119, 22, 59, 92, 36, 76, 15,132, 22, 5 // 0x0530
|
||||
db 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9,199,139, 76 // 0x0540
|
||||
db 36, 56,137,240,193,232, 11,102,139,145,176, 1, 0, 0, 15,183 // 0x0550
|
||||
db 202, 15,175,193, 57,199,115, 35,137,198,184, 0, 8, 0, 0, 41 // 0x0560
|
||||
db 200,139,108, 36, 56,193,248, 5,141, 4, 2,102,137,133,176, 1 // 0x0570
|
||||
db 0, 0,139, 68, 36, 88,233,160, 0, 0, 0,137,241, 41,199, 41 // 0x0580
|
||||
db 193,137,208,102,193,232, 5,102, 41,194,139, 68, 36, 56,129,249 // 0x0590
|
||||
db 255,255,255, 0,102,137,144,176, 1, 0, 0,119, 22, 59, 92, 36 // 0x05a0
|
||||
db 76, 15,132,161, 4, 0, 0, 15,182, 3,193,231, 8,193,225, 8 // 0x05b0
|
||||
db 67, 9,199,139,116, 36, 56,137,200,193,232, 11,102,139,150,200 // 0x05c0
|
||||
db 1, 0, 0, 15,183,234, 15,175,197, 57,199,115, 32,137,198,184 // 0x05d0
|
||||
db 0, 8, 0, 0, 41,232,139,108, 36, 56,193,248, 5,141, 4, 2 // 0x05e0
|
||||
db 102,137,133,200, 1, 0, 0,139, 68, 36, 84,235, 38,137,206, 41 // 0x05f0
|
||||
db 199, 41,198,137,208,102,193,232, 5,102, 41,194,139, 68, 36, 56 // 0x0600
|
||||
db 102,137,144,200, 1, 0, 0,139, 84, 36, 84,139, 68, 36, 80,137 // 0x0610
|
||||
db 84, 36, 80,139, 76, 36, 88,137, 76, 36, 84,139,108, 36, 92,137 // 0x0620
|
||||
db 68, 36, 92,137,108, 36, 88, 49,192,131,124, 36, 96, 6,139, 76 // 0x0630
|
||||
db 36,120, 15,159,192,129,193,104, 10, 0, 0,141, 68, 64, 8,137 // 0x0640
|
||||
db 68, 36, 96,129,254,255,255,255, 0,119, 22, 59, 92, 36, 76, 15 // 0x0650
|
||||
db 132,243, 3, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9 // 0x0660
|
||||
db 199,102,139, 17,137,240,193,232, 11, 15,183,234, 15,175,197, 57 // 0x0670
|
||||
db 199,115, 47,137, 68, 36, 72,184, 0, 8, 0, 0, 41,232,193,100 // 0x0680
|
||||
db 36, 68, 4,193,248, 5,199, 68, 36, 44, 0, 0, 0, 0,141, 4 // 0x0690
|
||||
db 2,102,137, 1,139, 68, 36, 68,141, 76, 1, 4,137, 76, 36, 16 // 0x06a0
|
||||
db 235,114, 41,198, 41,199,137,208,102,193,232, 5,102, 41,194,129 // 0x06b0
|
||||
db 254,255,255,255, 0,102,137, 17,119, 22, 59, 92, 36, 76, 15,132 // 0x06c0
|
||||
db 132, 3, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9,199 // 0x06d0
|
||||
db 102,139, 81, 2,137,240,193,232, 11, 15,183,234, 15,175,197, 57 // 0x06e0
|
||||
db 199,115, 59,137, 68, 36, 72,184, 0, 8, 0, 0, 41,232,193,100 // 0x06f0
|
||||
db 36, 68, 4,193,248, 5,199, 68, 36, 44, 8, 0, 0, 0,141, 4 // 0x0700
|
||||
db 2,139, 84, 36, 68,102,137, 65, 2,141,140, 17, 4, 1, 0, 0 // 0x0710
|
||||
db 137, 76, 36, 16,199, 68, 36, 48, 3, 0, 0, 0,235, 47, 41,198 // 0x0720
|
||||
db 41,199,137,208,137,116, 36, 72,102,193,232, 5,199, 68, 36, 44 // 0x0730
|
||||
db 16, 0, 0, 0,102, 41,194,199, 68, 36, 48, 8, 0, 0, 0,102 // 0x0740
|
||||
db 137, 81, 2,129,193, 4, 2, 0, 0,137, 76, 36, 16,139, 76, 36 // 0x0750
|
||||
db 48,186, 1, 0, 0, 0,137, 76, 36, 40,141, 44, 18,139,116, 36 // 0x0760
|
||||
db 16, 1,238,129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36 // 0x0770
|
||||
db 76, 15,132,209, 2, 0, 0,193,100, 36, 72, 8, 15,182, 3,193 // 0x0780
|
||||
db 231, 8, 67, 9,199,139, 68, 36, 72,102,139, 22,193,232, 11, 15 // 0x0790
|
||||
db 183,202, 15,175,193, 57,199,115, 24,137, 68, 36, 72,184, 0, 8 // 0x07a0
|
||||
db 0, 0, 41,200,193,248, 5,141, 4, 2,137,234,102,137, 6,235 // 0x07b0
|
||||
db 21, 41, 68, 36, 72, 41,199,137,208,102,193,232, 5,102, 41,194 // 0x07c0
|
||||
db 102,137, 22,141, 85, 1,139,116, 36, 40, 78,137,116, 36, 40,117 // 0x07d0
|
||||
db 137,138, 76, 36, 48,184, 1, 0, 0, 0,211,224, 41,194, 3, 84 // 0x07e0
|
||||
db 36, 44,131,124, 36, 96, 3,137, 84, 36, 12, 15,143,231, 1, 0 // 0x07f0
|
||||
db 0,131, 68, 36, 96, 7,131,250, 3,137,208,126, 5,184, 3, 0 // 0x0800
|
||||
db 0, 0,139,116, 36,120,193,224, 7,199, 68, 36, 36, 6, 0, 0 // 0x0810
|
||||
db 0,141,132, 6, 96, 3, 0, 0,137, 68, 36, 8,184, 1, 0, 0 // 0x0820
|
||||
db 0,141, 44, 0,139,116, 36, 8, 1,238,129,124, 36, 72,255,255 // 0x0830
|
||||
db 255, 0,119, 24, 59, 92, 36, 76, 15,132, 10, 2, 0, 0,193,100 // 0x0840
|
||||
db 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72 // 0x0850
|
||||
db 102,139, 22,193,232, 11, 15,183,202, 15,175,193, 57,199,115, 24 // 0x0860
|
||||
db 137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,193,248, 5,141, 4 // 0x0870
|
||||
db 2,102,137, 6,137,232,235, 21, 41, 68, 36, 72, 41,199,137,208 // 0x0880
|
||||
db 102,193,232, 5,102, 41,194,141, 69, 1,102,137, 22,139,108, 36 // 0x0890
|
||||
db 36, 77,137,108, 36, 36,117,137,141, 80,192,131,250, 3,137, 20 // 0x08a0
|
||||
db 36, 15,142, 39, 1, 0, 0,137,208,137,214,209,248,131,230, 1 // 0x08b0
|
||||
db 141, 72,255,131,206, 2,131,250, 13,137, 76, 36, 32,127, 28,139 // 0x08c0
|
||||
db 108, 36,120,211,230, 1,210,137, 52, 36,141, 68,117, 0, 41,208 // 0x08d0
|
||||
db 5, 94, 5, 0, 0,137, 68, 36, 4,235, 86,141, 80,251,129,124 // 0x08e0
|
||||
db 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15,132, 86, 1 // 0x08f0
|
||||
db 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199 // 0x0900
|
||||
db 209,108, 36, 72, 1,246, 59,124, 36, 72,114, 7, 43,124, 36, 72 // 0x0910
|
||||
db 131,206, 1, 74,117,200,139, 68, 36,120,193,230, 4,137, 52, 36 // 0x0920
|
||||
db 5, 68, 6, 0, 0,199, 68, 36, 32, 4, 0, 0, 0,137, 68, 36 // 0x0930
|
||||
db 4,199, 68, 36, 28, 1, 0, 0, 0,184, 1, 0, 0, 0,139,108 // 0x0940
|
||||
db 36, 4, 1,192,137, 68, 36, 24, 1,197,129,124, 36, 72,255,255 // 0x0950
|
||||
db 255, 0,119, 24, 59, 92, 36, 76, 15,132,234, 0, 0, 0,193,100 // 0x0960
|
||||
db 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72 // 0x0970
|
||||
db 102,139, 85, 0,193,232, 11, 15,183,242, 15,175,198, 57,199,115 // 0x0980
|
||||
db 27,137, 68, 36, 72,184, 0, 8, 0, 0, 41,240,193,248, 5,141 // 0x0990
|
||||
db 4, 2,102,137, 69, 0,139, 68, 36, 24,235, 31, 41, 68, 36, 72 // 0x09a0
|
||||
db 41,199,137,208,102,193,232, 5,102, 41,194,139, 68, 36, 24,102 // 0x09b0
|
||||
db 137, 85, 0,139, 84, 36, 28, 64, 9, 20, 36,139, 76, 36, 32,209 // 0x09c0
|
||||
db 100, 36, 28, 73,137, 76, 36, 32, 15,133,112,255,255,255,139, 52 // 0x09d0
|
||||
db 36, 70,137,116, 36, 92,116, 89,139, 76, 36, 12,139,108, 36,116 // 0x09e0
|
||||
db 131,193, 2, 57,108, 36, 92,119, 95,139,132, 36,160, 0, 0, 0 // 0x09f0
|
||||
db 137,234, 43, 68, 36, 92, 3,148, 36,160, 0, 0, 0,141, 52, 40 // 0x0a00
|
||||
db 138, 6, 70,136, 68, 36,115,136, 2, 66,255, 68, 36,116, 73,116 // 0x0a10
|
||||
db 15,139,172, 36,164, 0, 0, 0, 57,108, 36,116,114,226,235, 17 // 0x0a20
|
||||
db 139,132, 36,164, 0, 0, 0, 57, 68, 36,116, 15,130,187,246,255 // 0x0a30
|
||||
db 255,129,124, 36, 72,255,255,255, 0,119, 21, 59, 92, 36, 76,184 // 0x0a40
|
||||
db 1, 0, 0, 0,116, 41,235, 7,184, 1, 0, 0, 0,235, 32, 67 // 0x0a50
|
||||
db 43,156, 36,148, 0, 0, 0, 49,192,139,148, 36,156, 0, 0, 0 // 0x0a60
|
||||
db 139, 76, 36,116,137, 26,139,156, 36,168, 0, 0, 0,137, 11,131 // 0x0a70
|
||||
db 196,124, 91, 94, 95, 93 // 0x0a80
|
||||
169
src/stub/src/arch/i386/lzma_d_cs_2.ash
Normal file
169
src/stub/src/arch/i386/lzma_d_cs_2.ash
Normal file
@ -0,0 +1,169 @@
|
||||
db 85, 87, 86, 83,131,236,124,139,148, 36,144, 0, 0, 0,199, 68 // 0x0000
|
||||
db 36,116, 0, 0, 0, 0,198, 68, 36,115, 0,139,172, 36,156, 0 // 0x0010
|
||||
db 0, 0,141, 66, 4,137, 68, 36,120,184, 1, 0, 0, 0, 15,182 // 0x0020
|
||||
db 74, 2,137,195,211,227,137,217, 73,137, 76, 36,108, 15,182, 74 // 0x0030
|
||||
db 1,211,224, 72,137, 68, 36,104,139,132, 36,168, 0, 0, 0, 15 // 0x0040
|
||||
db 182, 50,199, 69, 0, 0, 0, 0, 0,199, 68, 36, 96, 0, 0, 0 // 0x0050
|
||||
db 0,199, 0, 0, 0, 0, 0,184, 0, 3, 0, 0,137,116, 36,100 // 0x0060
|
||||
db 199, 68, 36, 92, 1, 0, 0, 0,199, 68, 36, 88, 1, 0, 0, 0 // 0x0070
|
||||
db 199, 68, 36, 84, 1, 0, 0, 0,199, 68, 36, 80, 1, 0, 0, 0 // 0x0080
|
||||
db 15,182, 74, 1, 1,241,211,224,141,136, 54, 7, 0, 0, 57, 76 // 0x0090
|
||||
db 36,116,115, 14,139, 68, 36,120,102,199, 0, 0, 4,131,192, 2 // 0x00a0
|
||||
db 226,246,139,156, 36,148, 0, 0, 0, 49,255,199, 68, 36, 72,255 // 0x00b0
|
||||
db 255,255,255,137,218, 3,148, 36,152, 0, 0, 0,137, 84, 36, 76 // 0x00c0
|
||||
db 49,210, 59, 92, 36, 76, 15,132,124, 9, 0, 0, 15,182, 3,193 // 0x00d0
|
||||
db 231, 8, 66, 67, 9,199,131,250, 4,126,231,139,140, 36,164, 0 // 0x00e0
|
||||
db 0, 0, 57, 76, 36,116, 15,131,100, 9, 0, 0,139,116, 36,116 // 0x00f0
|
||||
db 35,116, 36,108,139, 68, 36, 96,139, 84, 36,120,193,224, 4,137 // 0x0100
|
||||
db 116, 36, 68, 1,240,129,124, 36, 72,255,255,255, 0,141, 44, 66 // 0x0110
|
||||
db 119, 24, 59, 92, 36, 76, 15,132, 44, 9, 0, 0,193,100, 36, 72 // 0x0120
|
||||
db 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72,102,139 // 0x0130
|
||||
db 85, 0,193,232, 11, 15,183,202, 15,175,193, 57,199, 15,131,221 // 0x0140
|
||||
db 1, 0, 0,137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,138, 76 // 0x0150
|
||||
db 36,100,193,248, 5,190, 1, 0, 0, 0,141, 4, 2, 15,182, 84 // 0x0160
|
||||
db 36,115,102,137, 69, 0,139, 68, 36,116, 35, 68, 36,104,139,108 // 0x0170
|
||||
db 36,120,211,224,185, 8, 0, 0, 0, 43, 76, 36,100,211,250, 1 // 0x0180
|
||||
db 208,105,192, 0, 6, 0, 0,131,124, 36, 96, 6,141,132, 5,108 // 0x0190
|
||||
db 14, 0, 0,137, 68, 36, 20, 15,142,202, 0, 0, 0,139, 68, 36 // 0x01a0
|
||||
db 116, 43, 68, 36, 92,139,148, 36,160, 0, 0, 0, 15,182, 4, 2 // 0x01b0
|
||||
db 137, 68, 36, 64,209,100, 36, 64,139, 76, 36, 64,141, 20, 54,139 // 0x01c0
|
||||
db 108, 36, 20,129,225, 0, 1, 0, 0,129,124, 36, 72,255,255,255 // 0x01d0
|
||||
db 0,141, 68, 77, 0,137, 76, 36, 60,141, 44, 16,119, 24, 59, 92 // 0x01e0
|
||||
db 36, 76, 15,132, 96, 8, 0, 0,193,100, 36, 72, 8, 15,182, 3 // 0x01f0
|
||||
db 193,231, 8, 67, 9,199,139, 68, 36, 72,102,139,141, 0, 2, 0 // 0x0200
|
||||
db 0,193,232, 11, 15,183,241, 15,175,198, 57,199,115, 35,137, 68 // 0x0210
|
||||
db 36, 72,184, 0, 8, 0, 0, 41,240,137,214,193,248, 5,131,124 // 0x0220
|
||||
db 36, 60, 0,141, 4, 1,102,137,133, 0, 2, 0, 0,116, 34,235 // 0x0230
|
||||
db 46, 41, 68, 36, 72, 41,199,137,200,141,114, 1,102,193,232, 5 // 0x0240
|
||||
db 102, 41,193,131,124, 36, 60, 0,102,137,141, 0, 2, 0, 0,116 // 0x0250
|
||||
db 14,129,254,255, 0, 0, 0, 15,142, 87,255,255,255,235,121,129 // 0x0260
|
||||
db 254,255, 0, 0, 0,127,113,141, 20, 54,139,108, 36, 20, 1,213 // 0x0270
|
||||
db 129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15,132 // 0x0280
|
||||
db 196, 7, 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67 // 0x0290
|
||||
db 9,199,139, 68, 36, 72,102,139, 77, 0,193,232, 11, 15,183,241 // 0x02a0
|
||||
db 15,175,198, 57,199,115, 25,137, 68, 36, 72,184, 0, 8, 0, 0 // 0x02b0
|
||||
db 41,240,137,214,193,248, 5,141, 4, 1,102,137, 69, 0,235,159 // 0x02c0
|
||||
db 41, 68, 36, 72, 41,199,137,200,141,114, 1,102,193,232, 5,102 // 0x02d0
|
||||
db 41,193,102,137, 77, 0,235,135,139, 84, 36,116,137,240,139,140 // 0x02e0
|
||||
db 36,160, 0, 0, 0,136, 68, 36,115,136, 4, 10, 66,131,124, 36 // 0x02f0
|
||||
db 96, 3,137, 84, 36,116,127, 13,199, 68, 36, 96, 0, 0, 0, 0 // 0x0300
|
||||
db 233, 27, 7, 0, 0,131,124, 36, 96, 9,127, 10,131,108, 36, 96 // 0x0310
|
||||
db 3,233, 10, 7, 0, 0,131,108, 36, 96, 6,233, 0, 7, 0, 0 // 0x0320
|
||||
db 139, 76, 36, 72, 41,199,139,116, 36, 96, 41,193,137,208,102,193 // 0x0330
|
||||
db 232, 5,102, 41,194,129,249,255,255,255, 0,102,137, 85, 0,139 // 0x0340
|
||||
db 108, 36,120,141,116,117, 0,137,116, 36, 56,119, 22, 59, 92, 36 // 0x0350
|
||||
db 76, 15,132,241, 6, 0, 0, 15,182, 3,193,231, 8,193,225, 8 // 0x0360
|
||||
db 67, 9,199,139,108, 36, 56,137,200,193,232, 11,102,139,149,128 // 0x0370
|
||||
db 1, 0, 0, 15,183,234, 15,175,197, 57,199,115, 82,137,198,184 // 0x0380
|
||||
db 0, 8, 0, 0, 41,232,139,108, 36, 88,193,248, 5,139, 76, 36 // 0x0390
|
||||
db 84,141, 4, 2,139, 84, 36, 56,137, 76, 36, 80,139, 76, 36,120 // 0x03a0
|
||||
db 102,137,130,128, 1, 0, 0,139, 68, 36, 92,137,108, 36, 84,137 // 0x03b0
|
||||
db 68, 36, 88, 49,192,131,124, 36, 96, 6, 15,159,192,129,193,100 // 0x03c0
|
||||
db 6, 0, 0,141, 4, 64,137, 68, 36, 96,233,116, 2, 0, 0,137 // 0x03d0
|
||||
db 206, 41,199, 41,198,137,208,102,193,232, 5,139, 76, 36, 56,102 // 0x03e0
|
||||
db 41,194,129,254,255,255,255, 0,102,137,145,128, 1, 0, 0,119 // 0x03f0
|
||||
db 22, 59, 92, 36, 76, 15,132, 77, 6, 0, 0, 15,182, 3,193,231 // 0x0400
|
||||
db 8,193,230, 8, 67, 9,199,139,108, 36, 56,137,242,193,234, 11 // 0x0410
|
||||
db 102,139,141,152, 1, 0, 0, 15,183,193, 15,175,208, 57,215, 15 // 0x0420
|
||||
db 131,227, 0, 0, 0,189, 0, 8, 0, 0,137,214, 41,197,199, 68 // 0x0430
|
||||
db 36, 52, 0, 8, 0, 0,137,232,193,248, 5,141, 4, 1,139, 76 // 0x0440
|
||||
db 36, 56,102,137,129,152, 1, 0, 0,139, 68, 36, 96,139, 76, 36 // 0x0450
|
||||
db 68,193,224, 5, 3, 68, 36,120,129,250,255,255,255, 0,141, 44 // 0x0460
|
||||
db 72,119, 22, 59, 92, 36, 76, 15,132,219, 5, 0, 0, 15,182, 3 // 0x0470
|
||||
db 193,231, 8,193,230, 8, 67, 9,199,102,139,149,224, 1, 0, 0 // 0x0480
|
||||
db 137,240,193,232, 11, 15,183,202, 15,175,193, 57,199,115, 96, 41 // 0x0490
|
||||
db 76, 36, 52,193,124, 36, 52, 5,139,116, 36, 52,137, 68, 36, 72 // 0x04a0
|
||||
db 131,124, 36,116, 0,141, 4, 50,102,137,133,224, 1, 0, 0, 15 // 0x04b0
|
||||
db 132,147, 5, 0, 0, 49,192,131,124, 36, 96, 6,139,172, 36,160 // 0x04c0
|
||||
db 0, 0, 0,139, 84, 36,116, 15,159,192,141, 68, 0, 9,137, 68 // 0x04d0
|
||||
db 36, 96,139, 68, 36,116, 43, 68, 36, 92,138, 68, 5, 0,136, 68 // 0x04e0
|
||||
db 36,115,136, 4, 42, 66,137, 84, 36,116,233, 49, 5, 0, 0, 41 // 0x04f0
|
||||
db 198, 41,199,137,208,102,193,232, 5,102, 41,194,102,137,149,224 // 0x0500
|
||||
db 1, 0, 0,233, 31, 1, 0, 0,137,200, 41,214,102,193,232, 5 // 0x0510
|
||||
db 139,108, 36, 56,102, 41,193, 41,215,129,254,255,255,255, 0,102 // 0x0520
|
||||
db 137,141,152, 1, 0, 0,119, 22, 59, 92, 36, 76, 15,132, 22, 5 // 0x0530
|
||||
db 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9,199,139, 76 // 0x0540
|
||||
db 36, 56,137,240,193,232, 11,102,139,145,176, 1, 0, 0, 15,183 // 0x0550
|
||||
db 202, 15,175,193, 57,199,115, 35,137,198,184, 0, 8, 0, 0, 41 // 0x0560
|
||||
db 200,139,108, 36, 56,193,248, 5,141, 4, 2,102,137,133,176, 1 // 0x0570
|
||||
db 0, 0,139, 68, 36, 88,233,160, 0, 0, 0,137,241, 41,199, 41 // 0x0580
|
||||
db 193,137,208,102,193,232, 5,102, 41,194,139, 68, 36, 56,129,249 // 0x0590
|
||||
db 255,255,255, 0,102,137,144,176, 1, 0, 0,119, 22, 59, 92, 36 // 0x05a0
|
||||
db 76, 15,132,161, 4, 0, 0, 15,182, 3,193,231, 8,193,225, 8 // 0x05b0
|
||||
db 67, 9,199,139,116, 36, 56,137,200,193,232, 11,102,139,150,200 // 0x05c0
|
||||
db 1, 0, 0, 15,183,234, 15,175,197, 57,199,115, 32,137,198,184 // 0x05d0
|
||||
db 0, 8, 0, 0, 41,232,139,108, 36, 56,193,248, 5,141, 4, 2 // 0x05e0
|
||||
db 102,137,133,200, 1, 0, 0,139, 68, 36, 84,235, 38,137,206, 41 // 0x05f0
|
||||
db 199, 41,198,137,208,102,193,232, 5,102, 41,194,139, 68, 36, 56 // 0x0600
|
||||
db 102,137,144,200, 1, 0, 0,139, 84, 36, 84,139, 68, 36, 80,137 // 0x0610
|
||||
db 84, 36, 80,139, 76, 36, 88,137, 76, 36, 84,139,108, 36, 92,137 // 0x0620
|
||||
db 68, 36, 92,137,108, 36, 88, 49,192,131,124, 36, 96, 6,139, 76 // 0x0630
|
||||
db 36,120, 15,159,192,129,193,104, 10, 0, 0,141, 68, 64, 8,137 // 0x0640
|
||||
db 68, 36, 96,129,254,255,255,255, 0,119, 22, 59, 92, 36, 76, 15 // 0x0650
|
||||
db 132,243, 3, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9 // 0x0660
|
||||
db 199,102,139, 17,137,240,193,232, 11, 15,183,234, 15,175,197, 57 // 0x0670
|
||||
db 199,115, 47,137, 68, 36, 72,184, 0, 8, 0, 0, 41,232,193,100 // 0x0680
|
||||
db 36, 68, 4,193,248, 5,199, 68, 36, 44, 0, 0, 0, 0,141, 4 // 0x0690
|
||||
db 2,102,137, 1,139, 68, 36, 68,141, 76, 1, 4,137, 76, 36, 16 // 0x06a0
|
||||
db 235,114, 41,198, 41,199,137,208,102,193,232, 5,102, 41,194,129 // 0x06b0
|
||||
db 254,255,255,255, 0,102,137, 17,119, 22, 59, 92, 36, 76, 15,132 // 0x06c0
|
||||
db 132, 3, 0, 0, 15,182, 3,193,231, 8,193,230, 8, 67, 9,199 // 0x06d0
|
||||
db 102,139, 81, 2,137,240,193,232, 11, 15,183,234, 15,175,197, 57 // 0x06e0
|
||||
db 199,115, 59,137, 68, 36, 72,184, 0, 8, 0, 0, 41,232,193,100 // 0x06f0
|
||||
db 36, 68, 4,193,248, 5,199, 68, 36, 44, 8, 0, 0, 0,141, 4 // 0x0700
|
||||
db 2,139, 84, 36, 68,102,137, 65, 2,141,140, 17, 4, 1, 0, 0 // 0x0710
|
||||
db 137, 76, 36, 16,199, 68, 36, 48, 3, 0, 0, 0,235, 47, 41,198 // 0x0720
|
||||
db 41,199,137,208,137,116, 36, 72,102,193,232, 5,199, 68, 36, 44 // 0x0730
|
||||
db 16, 0, 0, 0,102, 41,194,199, 68, 36, 48, 8, 0, 0, 0,102 // 0x0740
|
||||
db 137, 81, 2,129,193, 4, 2, 0, 0,137, 76, 36, 16,139, 76, 36 // 0x0750
|
||||
db 48,186, 1, 0, 0, 0,137, 76, 36, 40,141, 44, 18,139,116, 36 // 0x0760
|
||||
db 16, 1,238,129,124, 36, 72,255,255,255, 0,119, 24, 59, 92, 36 // 0x0770
|
||||
db 76, 15,132,209, 2, 0, 0,193,100, 36, 72, 8, 15,182, 3,193 // 0x0780
|
||||
db 231, 8, 67, 9,199,139, 68, 36, 72,102,139, 22,193,232, 11, 15 // 0x0790
|
||||
db 183,202, 15,175,193, 57,199,115, 24,137, 68, 36, 72,184, 0, 8 // 0x07a0
|
||||
db 0, 0, 41,200,193,248, 5,141, 4, 2,137,234,102,137, 6,235 // 0x07b0
|
||||
db 21, 41, 68, 36, 72, 41,199,137,208,102,193,232, 5,102, 41,194 // 0x07c0
|
||||
db 102,137, 22,141, 85, 1,139,116, 36, 40, 78,137,116, 36, 40,117 // 0x07d0
|
||||
db 137,138, 76, 36, 48,184, 1, 0, 0, 0,211,224, 41,194, 3, 84 // 0x07e0
|
||||
db 36, 44,131,124, 36, 96, 3,137, 84, 36, 12, 15,143,231, 1, 0 // 0x07f0
|
||||
db 0,131, 68, 36, 96, 7,131,250, 3,137,208,126, 5,184, 3, 0 // 0x0800
|
||||
db 0, 0,139,116, 36,120,193,224, 7,199, 68, 36, 36, 6, 0, 0 // 0x0810
|
||||
db 0,141,132, 6, 96, 3, 0, 0,137, 68, 36, 8,184, 1, 0, 0 // 0x0820
|
||||
db 0,141, 44, 0,139,116, 36, 8, 1,238,129,124, 36, 72,255,255 // 0x0830
|
||||
db 255, 0,119, 24, 59, 92, 36, 76, 15,132, 10, 2, 0, 0,193,100 // 0x0840
|
||||
db 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72 // 0x0850
|
||||
db 102,139, 22,193,232, 11, 15,183,202, 15,175,193, 57,199,115, 24 // 0x0860
|
||||
db 137, 68, 36, 72,184, 0, 8, 0, 0, 41,200,193,248, 5,141, 4 // 0x0870
|
||||
db 2,102,137, 6,137,232,235, 21, 41, 68, 36, 72, 41,199,137,208 // 0x0880
|
||||
db 102,193,232, 5,102, 41,194,141, 69, 1,102,137, 22,139,108, 36 // 0x0890
|
||||
db 36, 77,137,108, 36, 36,117,137,141, 80,192,131,250, 3,137, 20 // 0x08a0
|
||||
db 36, 15,142, 39, 1, 0, 0,137,208,137,214,209,248,131,230, 1 // 0x08b0
|
||||
db 141, 72,255,131,206, 2,131,250, 13,137, 76, 36, 32,127, 28,139 // 0x08c0
|
||||
db 108, 36,120,211,230, 1,210,137, 52, 36,141, 68,117, 0, 41,208 // 0x08d0
|
||||
db 5, 94, 5, 0, 0,137, 68, 36, 4,235, 86,141, 80,251,129,124 // 0x08e0
|
||||
db 36, 72,255,255,255, 0,119, 24, 59, 92, 36, 76, 15,132, 86, 1 // 0x08f0
|
||||
db 0, 0,193,100, 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199 // 0x0900
|
||||
db 209,108, 36, 72, 1,246, 59,124, 36, 72,114, 7, 43,124, 36, 72 // 0x0910
|
||||
db 131,206, 1, 74,117,200,139, 68, 36,120,193,230, 4,137, 52, 36 // 0x0920
|
||||
db 5, 68, 6, 0, 0,199, 68, 36, 32, 4, 0, 0, 0,137, 68, 36 // 0x0930
|
||||
db 4,199, 68, 36, 28, 1, 0, 0, 0,184, 1, 0, 0, 0,139,108 // 0x0940
|
||||
db 36, 4, 1,192,137, 68, 36, 24, 1,197,129,124, 36, 72,255,255 // 0x0950
|
||||
db 255, 0,119, 24, 59, 92, 36, 76, 15,132,234, 0, 0, 0,193,100 // 0x0960
|
||||
db 36, 72, 8, 15,182, 3,193,231, 8, 67, 9,199,139, 68, 36, 72 // 0x0970
|
||||
db 102,139, 85, 0,193,232, 11, 15,183,242, 15,175,198, 57,199,115 // 0x0980
|
||||
db 27,137, 68, 36, 72,184, 0, 8, 0, 0, 41,240,193,248, 5,141 // 0x0990
|
||||
db 4, 2,102,137, 69, 0,139, 68, 36, 24,235, 31, 41, 68, 36, 72 // 0x09a0
|
||||
db 41,199,137,208,102,193,232, 5,102, 41,194,139, 68, 36, 24,102 // 0x09b0
|
||||
db 137, 85, 0,139, 84, 36, 28, 64, 9, 20, 36,139, 76, 36, 32,209 // 0x09c0
|
||||
db 100, 36, 28, 73,137, 76, 36, 32, 15,133,112,255,255,255,139, 52 // 0x09d0
|
||||
db 36, 70,137,116, 36, 92,116, 89,139, 76, 36, 12,139,108, 36,116 // 0x09e0
|
||||
db 131,193, 2, 57,108, 36, 92,119, 95,139,132, 36,160, 0, 0, 0 // 0x09f0
|
||||
db 137,234, 43, 68, 36, 92, 3,148, 36,160, 0, 0, 0,141, 52, 40 // 0x0a00
|
||||
db 138, 6, 70,136, 68, 36,115,136, 2, 66,255, 68, 36,116, 73,116 // 0x0a10
|
||||
db 15,139,172, 36,164, 0, 0, 0, 57,108, 36,116,114,226,235, 17 // 0x0a20
|
||||
db 139,132, 36,164, 0, 0, 0, 57, 68, 36,116, 15,130,187,246,255 // 0x0a30
|
||||
db 255,129,124, 36, 72,255,255,255, 0,119, 21, 59, 92, 36, 76,184 // 0x0a40
|
||||
db 1, 0, 0, 0,116, 41,235, 7,184, 1, 0, 0, 0,235, 32, 67 // 0x0a50
|
||||
db 43,156, 36,148, 0, 0, 0, 49,192,139,148, 36,156, 0, 0, 0 // 0x0a60
|
||||
db 139, 76, 36,116,137, 26,139,156, 36,168, 0, 0, 0,137, 11,131 // 0x0a70
|
||||
db 196,124, 91, 94, 95, 93 // 0x0a80
|
||||
@ -40,22 +40,21 @@
|
||||
; ecx - 0
|
||||
*/
|
||||
|
||||
|
||||
// CPU 386
|
||||
|
||||
|
||||
.macro getbit_n2b one
|
||||
.ifc \one, 1
|
||||
add ebx, ebx
|
||||
jnz 1f
|
||||
.endif
|
||||
mov ebx, [esi]
|
||||
sub esi, -4
|
||||
sub esi, byte -4
|
||||
adc ebx, ebx
|
||||
1:
|
||||
1:
|
||||
.endm
|
||||
|
||||
#undef getbit
|
||||
#define getbit getbit_n2b
|
||||
#define getbit getbit_n2b
|
||||
|
||||
|
||||
section N2BSMA10
|
||||
@ -64,7 +63,7 @@ decompr_literals_n2b:
|
||||
movsb
|
||||
section N2BFAS10
|
||||
jmps dcl1_n2b
|
||||
.balign 8
|
||||
.balign 8
|
||||
section N2BFAS11
|
||||
decompr_literalb_n2b:
|
||||
mov al, [esi]
|
||||
@ -81,14 +80,14 @@ dcl1_n2b:
|
||||
getbit 32
|
||||
dcl2_n2b:
|
||||
section N2BSMA20
|
||||
jcs decompr_literals_n2b
|
||||
jc decompr_literals_n2b
|
||||
xor eax, eax
|
||||
inc eax
|
||||
section N2BFAS20
|
||||
#ifndef UPX102
|
||||
mov al, [edi] // force data cache allocate (PentiumPlain or MMX)
|
||||
#endif
|
||||
jcs decompr_literalb_n2b
|
||||
#ifndef UPX102
|
||||
mov al, [edi] // force data cache allocate (PentiumPlain or MMX)
|
||||
#endif
|
||||
jc decompr_literalb_n2b
|
||||
mov eax, 1
|
||||
section N2BDEC20
|
||||
loop1_n2b:
|
||||
@ -96,23 +95,23 @@ loop1_n2b:
|
||||
adc eax, eax
|
||||
section N2BSMA30
|
||||
getbit 1
|
||||
jncs loop1_n2b
|
||||
jnc loop1_n2b
|
||||
section N2BFAS30
|
||||
add ebx, ebx
|
||||
jncs loop1_n2b
|
||||
jnzs loopend1_n2b
|
||||
jnc loop1_n2b
|
||||
jnz loopend1_n2b
|
||||
getbit 32
|
||||
jncs loop1_n2b
|
||||
jnc loop1_n2b
|
||||
loopend1_n2b:
|
||||
section N2BDEC30
|
||||
xor ecx, ecx
|
||||
sub eax, 3
|
||||
jcs decompr_ebpeax_n2b
|
||||
jb decompr_ebpeax_n2b
|
||||
shl eax, 8
|
||||
mov al, [esi]
|
||||
inc esi
|
||||
xor eax, -1
|
||||
jzs decompr_end_n2b
|
||||
jz decompr_end_n2b
|
||||
mov ebp, eax
|
||||
decompr_ebpeax_n2b:
|
||||
getbit 1
|
||||
@ -126,13 +125,13 @@ loop2_n2b:
|
||||
adc ecx, ecx
|
||||
section N2BSMA40
|
||||
getbit 1
|
||||
jncs loop2_n2b
|
||||
jnc loop2_n2b
|
||||
section N2BFAS40
|
||||
add ebx, ebx
|
||||
jnc loop2_n2b
|
||||
jnz loopend2_n2b
|
||||
getbit 32
|
||||
jncs loop2_n2b
|
||||
jnc loop2_n2b
|
||||
loopend2_n2b:
|
||||
section N2BDUMM1
|
||||
section N2BSMA50
|
||||
@ -145,44 +144,44 @@ decompr_got_mlen_n2b:
|
||||
cmp ebp, -0xd00
|
||||
adc ecx, 1
|
||||
section N2BSMA60
|
||||
#ifndef UPX102
|
||||
#ifndef UPX102
|
||||
push esi
|
||||
#else
|
||||
#else
|
||||
mov edx, esi
|
||||
#endif
|
||||
#endif
|
||||
lea esi, [edi+ebp]
|
||||
rep
|
||||
movsb
|
||||
#ifndef UPX102
|
||||
#ifndef UPX102
|
||||
pop esi
|
||||
#else
|
||||
#else
|
||||
mov esi, edx
|
||||
#endif
|
||||
#endif
|
||||
jmp decompr_loop_n2b
|
||||
section N2BFAS60
|
||||
lea edx, [edi+ebp]
|
||||
cmp ebp, -4
|
||||
#ifndef UPX102
|
||||
mov al, [edi+ecx] // force data cache allocate (PentiumPlain or MMX)
|
||||
#endif
|
||||
jbes decompr_copy4_n2b
|
||||
#ifndef UPX102
|
||||
mov al, [edi+ecx] // force data cache allocate (PentiumPlain or MMX)
|
||||
#endif
|
||||
jbe decompr_copy4_n2b
|
||||
loop3_n2b:
|
||||
mov al, [edx]
|
||||
inc edx
|
||||
mov [edi], al
|
||||
inc edi
|
||||
dec ecx
|
||||
jnzs loop3_n2b
|
||||
jnz loop3_n2b
|
||||
jmp decompr_loop_n2b
|
||||
section N2BFAS61
|
||||
.balign 4
|
||||
.balign 4
|
||||
decompr_copy4_n2b:
|
||||
mov eax, [edx]
|
||||
add edx, 4
|
||||
mov [edi], eax
|
||||
add edi, 4
|
||||
sub ecx, 4
|
||||
jas decompr_copy4_n2b
|
||||
ja decompr_copy4_n2b
|
||||
add edi, ecx
|
||||
jmp decompr_loop_n2b
|
||||
section N2BDEC60
|
||||
|
||||
@ -40,12 +40,11 @@
|
||||
; ecx - 0
|
||||
*/
|
||||
|
||||
|
||||
// CPU 386
|
||||
|
||||
|
||||
.macro getbit_n2d one
|
||||
.ifc \one, 1
|
||||
.ifc \one, 1
|
||||
add ebx, ebx
|
||||
jnz 1f
|
||||
.endif
|
||||
@ -54,6 +53,7 @@
|
||||
adc ebx, ebx
|
||||
1:
|
||||
.endm
|
||||
|
||||
#undef getbit
|
||||
#define getbit getbit_n2d
|
||||
|
||||
@ -85,9 +85,9 @@ section N2DSMA20
|
||||
xor eax, eax
|
||||
inc eax
|
||||
section N2DFAS20
|
||||
#ifndef UPX102
|
||||
mov al, [edi] // force data cache allocate (PentiumPlain or MMX)
|
||||
#endif
|
||||
#ifndef UPX102
|
||||
mov al, [edi] // force data cache allocate (PentiumPlain or MMX)
|
||||
#endif
|
||||
jc decompr_literalb_n2d
|
||||
mov eax, 1
|
||||
section N2DDEC20
|
||||
@ -118,7 +118,7 @@ loopend1_n2d:
|
||||
inc esi
|
||||
xor eax, -1
|
||||
jz decompr_end_n2d
|
||||
sar eax, 1 // shift low-bit into carry
|
||||
sar eax, 1 // shift low-bit into carry
|
||||
mov ebp, eax
|
||||
jmps decompr_ebpeax_n2d
|
||||
decompr_prev_dist_n2d:
|
||||
@ -153,26 +153,26 @@ decompr_got_mlen_n2d:
|
||||
cmp ebp, -0x500
|
||||
adc ecx, 1
|
||||
section N2DSMA60
|
||||
#ifndef UPX102
|
||||
#ifndef UPX102
|
||||
push esi
|
||||
#else
|
||||
#else
|
||||
mov edx, esi
|
||||
#endif
|
||||
#endif
|
||||
lea esi, [edi+ebp]
|
||||
rep
|
||||
movsb
|
||||
#ifndef UPX102
|
||||
#ifndef UPX102
|
||||
pop esi
|
||||
#else
|
||||
#else
|
||||
mov esi, edx
|
||||
#endif
|
||||
#endif
|
||||
jmp decompr_loop_n2d
|
||||
section N2DFAS60
|
||||
lea edx, [edi+ebp]
|
||||
cmp ebp, -4
|
||||
#ifndef UPX102
|
||||
mov al, [edi+ecx] // force data cache allocate (PentiumPlain or MMX)
|
||||
#endif
|
||||
#ifndef UPX102
|
||||
mov al, [edi+ecx] // force data cache allocate (PentiumPlain or MMX)
|
||||
#endif
|
||||
jbe decompr_copy4_n2d
|
||||
loop3_n2d:
|
||||
mov al, [edx]
|
||||
|
||||
@ -37,7 +37,7 @@ lzma_d_c%.S : lzma_d_c.c
|
||||
$(call tc,gcc) $(PP_FLAGS) -c $< -o tmp/$T.o
|
||||
$(call tc,objstrip) tmp/$T.o
|
||||
$(call tc,objcopy) -O binary --only-section .text.LzmaDecode tmp/$T.o tmp/$T.bin
|
||||
head -c-0 tmp/$T.bin > tmp/$T.out
|
||||
head -c-4 tmp/$T.bin > tmp/$T.out
|
||||
$(call tc,objdump) -b binary -m powerpc -D tmp/$T.out > tmp/$T.out.lst
|
||||
$(call tc,bin2h) --mode=gas tmp/$T.out $@
|
||||
|
||||
|
||||
@ -24,7 +24,7 @@
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#include "regs.h"
|
||||
#include "ppc_regs.h"
|
||||
|
||||
ppcbxx: # (*f_unf)(xo->buf, out_len, h.b_cto8, h.b_ftid);
|
||||
#define W_CTO 4 /* must match filteri/ppcbxx.h */
|
||||
|
||||
114
src/stub/src/arch/powerpc/32/lzma_d.S
Normal file
114
src/stub/src/arch/powerpc/32/lzma_d.S
Normal file
@ -0,0 +1,114 @@
|
||||
/*
|
||||
; lzma_d.S -- 64-bit PowerPC assembly
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
;
|
||||
; Copyright (C) 2006-2006 Markus Franz Xaver Johannes Oberhumer
|
||||
; All Rights Reserved.
|
||||
;
|
||||
; UPX and the UCL library are free software; you can redistribute them
|
||||
; and/or modify them under the terms of the GNU General Public License as
|
||||
; published by the Free Software Foundation; either version 2 of
|
||||
; the License, or (at your option) any later version.
|
||||
;
|
||||
; This program is distributed in the hope that it will be useful,
|
||||
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
; GNU General Public License for more details.
|
||||
;
|
||||
; You should have received a copy of the GNU General Public License
|
||||
; along with this program; see the file COPYING.
|
||||
; If not, write to the Free Software Foundation, Inc.,
|
||||
; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
;
|
||||
; Markus F.X.J. Oberhumer
|
||||
; <markus@oberhumer.com>
|
||||
; http://www.oberhumer.com/opensource/upx/
|
||||
;
|
||||
*/
|
||||
|
||||
#include "ppc_regs.h"
|
||||
|
||||
#define section .section
|
||||
|
||||
section LZMA_ELF00
|
||||
//decompress: // (uchar const *src, size_t lsrc, uchar *dst, u32 &ldst, uint method)
|
||||
/* Arguments according to calling convention */
|
||||
#define src a0
|
||||
#define lsrc a1
|
||||
#define dst a2
|
||||
#define ldst a3 /* Out: actually a reference: &len_dst */
|
||||
#define meth a4
|
||||
|
||||
// ELFMAINX has already done this for us:
|
||||
// pushq %rbp; push %rbx // C callable
|
||||
// pushq ldst
|
||||
// pushq dst
|
||||
// addq src,lsrc; push lsrc // &input_eof
|
||||
|
||||
#define M_LZMA 14
|
||||
teq r0,r0 // debugging
|
||||
cmpli cr0,meth,M_LZMA
|
||||
bne cr0,not_lzma
|
||||
mflr r0
|
||||
|
||||
//LzmaDecode( // from lzmaSDK/C/7zip/Compress/LZMA_C/LzmaDecode.h
|
||||
// a0= &CLzmaDecoderState,
|
||||
// a1= inp, a2= inSize, a3= &inSizeProcessed,
|
||||
// a4= outp, a5= outSize, a6= &outSizeProcessed
|
||||
//)
|
||||
lwz a5,0(ldst) // outSize
|
||||
mr a4,dst // outp
|
||||
|
||||
addi a2,lsrc,-2 // inSize
|
||||
la a1,2(src) // inp
|
||||
|
||||
stw r0,4(sp) // ret.addr
|
||||
lbz r0,0(src) // first byte, replaces LzmaDecodeProperties()
|
||||
rlwinm t1,r0,32-3,3,31 // t1= (r0>>3)==(lit_context-bits + lit_pos_bits)
|
||||
rlwinm t0,r0,0,32-3,31 // t0= (7& t0)==pos_bits
|
||||
|
||||
#define LZMA_BASE_SIZE 1846
|
||||
#define LZMA_LIT_SIZE 768
|
||||
#define szSizeT 4
|
||||
|
||||
li a0,-2*LZMA_LIT_SIZE
|
||||
slw a0,a0,t1 // -2*LZMA_LIT_SIZE << (lit_context_bits + lit_pos_bits)
|
||||
addi a0,a0,-2*4 -(2*szSizeT +4) - 2*LZMA_BASE_SIZE
|
||||
// alloca{sp,ra, inSizeProcessed, outSizeProcessed, *_bits, CLzmaDecoderState}
|
||||
mr a3,sp
|
||||
add sp,sp,a0
|
||||
rlwinm sp,sp,0,0,32-6 // (1<<6) byte align
|
||||
|
||||
mr a0,a3 // old sp
|
||||
li r0,0
|
||||
1:
|
||||
stwu r0,-4(a0) // clear CLZmaDecoderState on stack
|
||||
cmpl cr0,sp,a0 // compare logical ==> compare unsigned
|
||||
blt cr0,1b
|
||||
stw a3,0(sp) // frame chain
|
||||
|
||||
lbz r0,-1(a1) // second byte, replaces LzmaDecodeProperties()
|
||||
la a6,2*4 (sp) // &outSizeProcessed
|
||||
la a3,2*4+1*szSizeT(sp) // &inSizeProcessed
|
||||
la a0,2*4+2*szSizeT(sp) // &CLzmaDecoderState
|
||||
rlwinm t1,r0,32-4,4,31 // t1= (r0>>4)==lit_pos_bits
|
||||
rlwinm r0,r0,0,32-4,31 // r0= (0xf& r0)==lit_context_bits
|
||||
stb t0,2(a0) // pos_bits
|
||||
stb t1,1(a0) // lit_pos_bits
|
||||
stb r0,0(a0) // lit_context_bits
|
||||
|
||||
section LZMA_DEC10
|
||||
#include "lzma_d_cs.S"
|
||||
|
||||
section LZMA_DEC20
|
||||
#include "lzma_d_cf.S"
|
||||
|
||||
section LZMA_DEC30
|
||||
lwz sp,0(sp) // old sp
|
||||
lwz r0,4(sp) // ret.addr
|
||||
mtlr r0
|
||||
not_lzma:
|
||||
|
||||
// vi:ts=8:et
|
||||
|
||||
@ -151,4 +151,4 @@
|
||||
.byte 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1 /* 0x0960 */
|
||||
.byte 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80 /* 0x0970 */
|
||||
.byte 144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100 /* 0x0980 */
|
||||
.byte 185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96, 78,128, 0, 32 /* 0x0990 */
|
||||
.byte 185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96 /* 0x0990 */
|
||||
|
||||
@ -151,4 +151,4 @@
|
||||
.byte 56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1 /* 0x0960 */
|
||||
.byte 72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80 /* 0x0970 */
|
||||
.byte 144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100 /* 0x0980 */
|
||||
.byte 185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96, 78,128, 0, 32 /* 0x0990 */
|
||||
.byte 185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96 /* 0x0990 */
|
||||
|
||||
@ -29,41 +29,27 @@
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#include "ppc_regs.h"
|
||||
#define M_NRV2B_LE32 2
|
||||
dcbtst 0,dst // prime dcache for store
|
||||
mflr t3 // return address
|
||||
|
||||
SZ_DLINE=128 # size of data cache line in Apple G5
|
||||
cmpli cr0,meth,M_NRV2B_LE32
|
||||
bne cr0,not_nrv2b
|
||||
|
||||
/* Returns 0 on success; non-zero on failure. */
|
||||
decompress: # (uchar const *src, size_t lsrc, uchar *dst, size_t &ldst, uint method)
|
||||
stw dst,0(ldst) // original dst
|
||||
add lsrc,lsrc,src // input eof
|
||||
|
||||
/* PowerPC has no 'cmplis': compare logical [unsigned] immediate shifted [by 16] */
|
||||
#define hibit r0 /* holds 0x80000000 during decompress */
|
||||
|
||||
#define src a0
|
||||
#define lsrc a1
|
||||
#define dst a2
|
||||
#define ldst a3 /* Out: actually a reference: &len_dst */
|
||||
#define meth a4
|
||||
|
||||
#define off a4
|
||||
#define len a5
|
||||
#define bits a6
|
||||
#define disp a7
|
||||
|
||||
dcbtst 0,dst # prime dcache for store
|
||||
|
||||
stw dst,0(ldst) # original dst
|
||||
add lsrc,lsrc,src # input eof
|
||||
|
||||
lis hibit,0x8000 # 0x80000000 for detecting next bit
|
||||
lis bits,0x8000 # prepare for first load
|
||||
addi src,src,-1 # prepare for 'lbzu'
|
||||
addi dst,dst,-1 # prepare for 'stbu'
|
||||
li disp,-1 # initial displacement
|
||||
|
||||
mflr t3 # return address
|
||||
lis hibit,0x8000 // 0x80000000 for detecting next bit
|
||||
lis bits,0x8000 // prepare for first load
|
||||
addi src,src,-1 // prepare for 'lbzu'
|
||||
addi dst,dst,-1 // prepare for 'stbu'
|
||||
li disp,-1 // initial displacement
|
||||
b bot_n2b
|
||||
|
||||
#undef jnextb0y
|
||||
#undef jnextb0n
|
||||
#undef jnextb1y
|
||||
#undef jnextb1n
|
||||
/* jump on next bit, with branch prediction: y==>likely; n==>unlikely
|
||||
cr0 is set by the cmpl ["compare logical"==>unsigned]:
|
||||
lt next bit is 0
|
||||
@ -75,66 +61,67 @@ decompress: # (uchar const *src, size_t lsrc, uchar *dst, size_t &ldst, uint me
|
||||
#define jnextb1y call get1; bgt+ cr0,
|
||||
#define jnextb1n call get1; bgt- cr0,
|
||||
|
||||
#undef getnextb
|
||||
/* rotate next bit into bottom bit of reg; set cr0 based on entire result reg */
|
||||
#define getnextb(reg) call get1; adde. reg,reg,reg
|
||||
|
||||
get1:
|
||||
cmpl cr0,bits,hibit # cr0 for jnextb
|
||||
addc bits,bits,bits # CArry for getnextb
|
||||
bnelr+ cr0 # return if reload not needed; likely 31/32
|
||||
cmpl cr0,bits,hibit // cr0 for jnextb
|
||||
addc bits,bits,bits // CArry for getnextb
|
||||
bnelr+ cr0 // return if reload not needed; likely 31/32
|
||||
|
||||
/* CArry has been set from adding 0x80000000 to itself; preserve for 'adde' */
|
||||
# fetch 4 bytes unaligned and LITTLE ENDIAN
|
||||
// fetch 4 bytes unaligned and LITTLE ENDIAN
|
||||
#if 0 /*{ clean; but 4 instr larger, and 3 cycles longer */
|
||||
lbz bits,1(src) # lo8
|
||||
lbz bits,1(src) // lo8
|
||||
lbz t0,2(src); rlwimi bits,t0, 8,16,23
|
||||
lbz t0,3(src); rlwimi bits,t0,16, 8,15
|
||||
lbzu t0,4(src); rlwimi bits,t0,24, 0, 7
|
||||
#else /*}{ pray for no unalignment trap or slowdown */
|
||||
li bits,1 # compensate for 'lbzu'
|
||||
lwbrx bits,bits,src # bits= fetch_le32(bits+src)
|
||||
li bits,1 // compensate for 'lbzu'
|
||||
lwbrx bits,bits,src // bits= fetch_le32(bits+src)
|
||||
addi src,src,4
|
||||
#endif /*}*/
|
||||
|
||||
cmpl cr0,bits,hibit # cr0 for jnextb
|
||||
adde bits,bits,bits # CArry for getnextb; set lo bit from CarryIn
|
||||
cmpl cr0,bits,hibit // cr0 for jnextb
|
||||
adde bits,bits,bits // CArry for getnextb; set lo bit from CarryIn
|
||||
ret
|
||||
|
||||
lit_n2b:
|
||||
#define tmp len
|
||||
lbzu tmp,1(src) # tmp= *++src;
|
||||
stbu tmp,1(dst) # *++dst= tmp;
|
||||
lbzu tmp,1(src) // tmp= *++src;
|
||||
stbu tmp,1(dst) // *++dst= tmp;
|
||||
#undef tmp
|
||||
top_n2b:
|
||||
jnextb1y lit_n2b
|
||||
li off,1 # "the msb"
|
||||
li off,1 // "the msb"
|
||||
offmore_n2b:
|
||||
getnextb(off)
|
||||
jnextb0n offmore_n2b
|
||||
|
||||
addic. off,off,-3 # CArry set [and ignored], but no 'addi.'
|
||||
addic. off,off,-3 // CArry set [and ignored], but no 'addi.'
|
||||
li len,0
|
||||
blt- offprev_n2b
|
||||
lbzu t0,1(src)
|
||||
rlwinm off,off,8,0,31-8 # off<<=8;
|
||||
nor. disp,off,t0 # disp = -(1+ (off|t0));
|
||||
beq- eof_n2b
|
||||
rlwinm off,off,8,0,31-8 // off<<=8;
|
||||
nor. disp,off,t0 // disp = -(1+ (off|t0));
|
||||
beq- eof_nrv
|
||||
|
||||
offprev_n2b: # In: 0==len
|
||||
getnextb(len); getnextb(len) # two bits; cr0 set on result
|
||||
li off,1; bne- gotlen_n2b # raw 1,2,3 ==> 2,3,4
|
||||
li off,3 # raw 2.. ==> 5..
|
||||
li len,1 # "the msb"
|
||||
offprev_n2b: // In: 0==len
|
||||
getnextb(len); getnextb(len) // two bits; cr0 set on result
|
||||
li off,1; bne- gotlen_n2b // raw 1,2,3 ==> 2,3,4
|
||||
li off,3 // raw 2.. ==> 5..
|
||||
li len,1 // "the msb"
|
||||
lenmore_n2b:
|
||||
getnextb(len)
|
||||
jnextb0n lenmore_n2b
|
||||
gotlen_n2b:
|
||||
subfic t0,disp,(~0)+(-0xd00) # want CArry only
|
||||
adde len,len,off # len += off + (disp < -0xd00);
|
||||
subfic t0,disp,(~0)+(-0xd00) // want CArry only
|
||||
adde len,len,off // len += off + (disp < -0xd00);
|
||||
|
||||
copy:
|
||||
#define back off
|
||||
add back,disp,dst # point back to match in dst
|
||||
add back,disp,dst // point back to match in dst
|
||||
mtctr len
|
||||
short_n2b:
|
||||
#define tmp len
|
||||
@ -151,21 +138,10 @@ short_n2b:
|
||||
*/
|
||||
bot_n2b:
|
||||
li back,2*SZ_DLINE
|
||||
dcbtst back,dst # 2 lines ahead [-1 for stbu]
|
||||
dcbt back,src # jump start auto prefetch at page boundary
|
||||
dcbtst back,dst // 2 lines ahead [-1 for stbu]
|
||||
dcbt back,src // jump start auto prefetch at page boundary
|
||||
/* Auto prefetch for Read quits at page boundary; needs 2 misses to restart. */
|
||||
#undef back
|
||||
b top_n2b
|
||||
|
||||
eof_n2b:
|
||||
#define tmp r0 /* hibit is dead */
|
||||
lwz tmp,0(ldst) # original dst
|
||||
mtlr t3 # return address
|
||||
addi dst,dst,1 # uncorrect for 'stbu'
|
||||
addi src,src,1 # uncorrect for 'lbzu'
|
||||
subf dst,tmp,dst # dst -= tmp; // dst length
|
||||
#undef tmp
|
||||
subf a0,lsrc,src # src -= eof; // return 0: good; else: bad
|
||||
stw dst,0(ldst)
|
||||
ret
|
||||
|
||||
not_nrv2b:
|
||||
|
||||
@ -29,41 +29,27 @@
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#include "regs.h"
|
||||
#define M_NRV2E_LE32 8
|
||||
dcbtst 0,dst // prime dcache for store
|
||||
mflr t3 // return address
|
||||
|
||||
SZ_DLINE=128 # size of data cache line in Apple G5
|
||||
cmpli cr0,meth,M_NRV2E_LE32
|
||||
bne cr0,not_nrv2e
|
||||
|
||||
/* Returns 0 on success; non-zero on failure. */
|
||||
decompress: # (uchar const *src, size_t lsrc, uchar *dst, size_t &ldst, uint method)
|
||||
stw dst,0(ldst) // original dst
|
||||
add lsrc,lsrc,src // input eof
|
||||
|
||||
/* PowerPC has no 'cmplis': compare logical [unsigned] immediate shifted [by 16] */
|
||||
#define hibit r0 /* holds 0x80000000 during decompress */
|
||||
|
||||
#define src a0
|
||||
#define lsrc a1
|
||||
#define dst a2
|
||||
#define ldst a3 /* Out: actually a reference: &len_dst */
|
||||
#define meth a4
|
||||
|
||||
#define off a4
|
||||
#define len a5
|
||||
#define bits a6
|
||||
#define disp a7
|
||||
|
||||
dcbtst 0,dst # prime dcache for store
|
||||
|
||||
stw dst,0(ldst) # original dst
|
||||
add lsrc,lsrc,src # input eof
|
||||
|
||||
lis hibit,0x8000 # 0x80000000 for detecting next bit
|
||||
lis bits,0x8000 # prepare for first load
|
||||
addi src,src,-1 # prepare for 'lbzu'
|
||||
addi dst,dst,-1 # prepare for 'stbu'
|
||||
li disp,-1 # initial displacement
|
||||
|
||||
mflr t3 # return address
|
||||
lis hibit,0x8000 // 0x80000000 for detecting next bit
|
||||
lis bits,0x8000 // prepare for first load
|
||||
addi src,src,-1 // prepare for 'lbzu'
|
||||
addi dst,dst,-1 // prepare for 'stbu'
|
||||
li disp,-1 // initial displacement
|
||||
b bot_n2e
|
||||
|
||||
#undef jnextb0y
|
||||
#undef jnextb0n
|
||||
#undef jnextb1y
|
||||
#undef jnextb1n
|
||||
/* jump on next bit, with branch prediction: y==>likely; n==>unlikely
|
||||
cr0 is set by the cmpl ["compare logical"==>unsigned]:
|
||||
lt next bit is 0
|
||||
@ -77,31 +63,32 @@ decompress: # (uchar const *src, size_t lsrc, uchar *dst, size_t &ldst, uint me
|
||||
#define jnextb1y cmpl 0,bits,hibit; add bits,bits,bits; beql- get32; bgt+
|
||||
#define jnextb1n cmpl 0,bits,hibit; add bits,bits,bits; beql- get32; bgt-
|
||||
|
||||
#undef getnextb
|
||||
/* rotate next bit into bottom bit of reg */
|
||||
#define getnextb(reg) addc. bits,bits,bits; beql- get32; adde reg,reg,reg
|
||||
|
||||
get32:
|
||||
# fetch 4 bytes unaligned and LITTLE ENDIAN
|
||||
// fetch 4 bytes unaligned and LITTLE ENDIAN
|
||||
#if 0 /*{ clean; but 4 instr larger, and 3 cycles longer */
|
||||
lbz bits,1(src) # lo8
|
||||
lbz bits,1(src) // lo8
|
||||
lbz t0,2(src); rlwimi bits,t0, 8,16,23
|
||||
lbz t0,3(src); rlwimi bits,t0,16, 8,15
|
||||
lbzu t0,4(src); rlwimi bits,t0,24, 0, 7
|
||||
#else /*}{ pray for no unalignment trap or slowdown */
|
||||
li bits,1 # compensate for 'lbzu'
|
||||
lwbrx bits,bits,src # bits= fetch_le32(bits+src)
|
||||
li bits,1 // compensate for 'lbzu'
|
||||
lwbrx bits,bits,src // bits= fetch_le32(bits+src)
|
||||
addi src,src,4
|
||||
#endif /*}*/
|
||||
|
||||
cmpl 0,bits,hibit # cr0 for jnextb
|
||||
addc bits,bits,bits # CArry for getnextb
|
||||
ori bits,bits,1 # the flag bit
|
||||
cmpl 0,bits,hibit // cr0 for jnextb
|
||||
addc bits,bits,bits // CArry for getnextb
|
||||
ori bits,bits,1 // the flag bit
|
||||
ret
|
||||
|
||||
lit_n2e:
|
||||
#define tmp len
|
||||
lbzu tmp,1(src) # tmp= *++src;
|
||||
stbu tmp,1(dst) # *++dst= tmp;
|
||||
lbzu tmp,1(src) // tmp= *++src;
|
||||
stbu tmp,1(dst) // *++dst= tmp;
|
||||
#undef tmp
|
||||
top_n2e:
|
||||
jnextb1y lit_n2e
|
||||
@ -116,21 +103,21 @@ getoff_n2e:
|
||||
jnextb0n off_n2e
|
||||
|
||||
li len,0
|
||||
addic. off,off,-3 # CArry set [and ignored], but no 'addi.'
|
||||
rlwinm off,off,8,0,31-8 # off<<=8;
|
||||
addic. off,off,-3 // CArry set [and ignored], but no 'addi.'
|
||||
rlwinm off,off,8,0,31-8 // off<<=8;
|
||||
blt- offprev_n2e
|
||||
lbzu t0,1(src)
|
||||
nor. disp,off,t0 # disp = -(1+ (off|t0));
|
||||
srawi disp,disp,1 # shift off low bit (sets CArry; ignored)
|
||||
beq- eof_n2e
|
||||
andi. t0,t0,1 # complement of low bit of unshifted disp
|
||||
beq+ lenlast_n2e # low bit was 1
|
||||
b lenmore_n2e # low bit was 0
|
||||
nor. disp,off,t0 // disp = -(1+ (off|t0));
|
||||
srawi disp,disp,1 // shift off low bit (sets CArry; ignored)
|
||||
beq- eof_nrv
|
||||
andi. t0,t0,1 // complement of low bit of unshifted disp
|
||||
beq+ lenlast_n2e // low bit was 1
|
||||
b lenmore_n2e // low bit was 0
|
||||
|
||||
offprev_n2e:
|
||||
jnextb1y lenlast_n2e
|
||||
lenmore_n2e:
|
||||
li len,1 # 1: "the msb"
|
||||
li len,1 // 1: "the msb"
|
||||
jnextb1y lenlast_n2e
|
||||
len_n2e:
|
||||
getnextb(len)
|
||||
@ -139,16 +126,16 @@ len_n2e:
|
||||
b gotlen_n2e
|
||||
|
||||
lenlast_n2e:
|
||||
getnextb(len) # 0,1,2,3
|
||||
getnextb(len) // 0,1,2,3
|
||||
gotlen_n2e:
|
||||
#define tmp off
|
||||
subfic tmp,disp,(~0)+(-0x500) # want CArry only
|
||||
subfic tmp,disp,(~0)+(-0x500) // want CArry only
|
||||
#undef tmp
|
||||
addi len,len,2
|
||||
addze len,len # len += (disp < -0x500);
|
||||
addze len,len // len += (disp < -0x500);
|
||||
|
||||
#define back off
|
||||
add back,disp,dst # point back to match in dst
|
||||
add back,disp,dst // point back to match in dst
|
||||
mtctr len
|
||||
short_n2e:
|
||||
#define tmp len
|
||||
@ -164,21 +151,10 @@ bot_n2e:
|
||||
pace the dcbtst optimally; but that takes 7 or 8 instructions of space.
|
||||
*/
|
||||
li back,2*SZ_DLINE
|
||||
dcbtst back,dst # 2 lines ahead [-1 for stbu]
|
||||
dcbt back,src # jump start auto prefetch at page boundary
|
||||
dcbtst back,dst // 2 lines ahead [-1 for stbu]
|
||||
dcbt back,src // jump start auto prefetch at page boundary
|
||||
/* Auto prefetch for Read quits at page boundary; needs 2 misses to restart. */
|
||||
b top_n2e
|
||||
#undef back
|
||||
|
||||
eof_n2e:
|
||||
#define tmp r0 /* hibit is dead */
|
||||
lwz tmp,0(ldst) # original dst
|
||||
mtlr t3 # return address
|
||||
addi dst,dst,1 # uncorrect for 'stbu'
|
||||
addi src,src,1 # uncorrect for 'lbzu'
|
||||
subf dst,tmp,dst # dst -= tmp; // dst length
|
||||
#undef tmp
|
||||
subf a0,lsrc,src # src -= eof; // return 0: good; else: bad
|
||||
stw dst,0(ldst)
|
||||
ret
|
||||
|
||||
not_nrv2e:
|
||||
|
||||
46
src/stub/src/arch/powerpc/32/ppc_regs.h
Normal file
46
src/stub/src/arch/powerpc/32/ppc_regs.h
Normal file
@ -0,0 +1,46 @@
|
||||
#ifndef __PPC_REGS__ /*{*/
|
||||
#define __PPC_REGS__
|
||||
|
||||
#define r0 0
|
||||
#define r1 1
|
||||
#define r2 2
|
||||
|
||||
#define r29 29
|
||||
#define r30 30
|
||||
#define r31 31
|
||||
|
||||
/* Stack pointer */
|
||||
#define sp 1
|
||||
|
||||
/* Subroutine arguments; not saved by callee */
|
||||
#define a0 3
|
||||
#define a1 4
|
||||
#define a2 5
|
||||
#define a3 6
|
||||
#define a4 7
|
||||
#define a5 8
|
||||
#define a6 9
|
||||
#define a7 10
|
||||
|
||||
/* Scratch (temporary) registers; not saved by callee */
|
||||
#define t0 2
|
||||
#define t1 11
|
||||
#define t2 12
|
||||
#define t3 13
|
||||
|
||||
/* branch and link */
|
||||
#define call bl
|
||||
|
||||
/* branch to link register */
|
||||
#define ret blr
|
||||
|
||||
/* move register */
|
||||
#define movr mr
|
||||
|
||||
#endif /*} __PPC_REGS__ */
|
||||
|
||||
|
||||
/*
|
||||
vi:ts=4:et:nowrap
|
||||
*/
|
||||
|
||||
@ -30,11 +30,11 @@
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
// CPU 386
|
||||
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
// CPU 386
|
||||
|
||||
/*************************************************************************
|
||||
// program entry point
|
||||
@ -65,11 +65,11 @@ _start: .globl _start
|
||||
call main // push address of decompress subroutine
|
||||
decompress:
|
||||
|
||||
; /*************************************************************************
|
||||
; // C callable decompressor
|
||||
; **************************************************************************/
|
||||
// /*************************************************************************
|
||||
// // C callable decompressor
|
||||
// **************************************************************************/
|
||||
|
||||
; /* Offsets to parameters, allowing for {push + pusha + call} */
|
||||
// /* Offsets to parameters, allowing for {push + pusha + call} */
|
||||
#define O_INP (4+ 8*4 +1*4)
|
||||
#define O_INS (4+ 8*4 +2*4)
|
||||
#define O_OUTP (4+ 8*4 +3*4)
|
||||
@ -93,12 +93,13 @@ section LEXEC010
|
||||
mov edi, OUTP
|
||||
|
||||
or ebp, -1
|
||||
//// align 8
|
||||
// align 8
|
||||
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
//#include "arch/i386/lzma_d.ash" // FIXME
|
||||
#define db .byte
|
||||
#include "arch/i386/lzma_d_2.ash"
|
||||
cjt32 0
|
||||
|
||||
section LEXEC015
|
||||
@ -148,11 +149,13 @@ section LEXEC020
|
||||
#define __NR_write 4
|
||||
#define __NR_exit 1
|
||||
|
||||
#define pushsbli .byte 0x6a, /* push sign-extended byte to long immediate */
|
||||
|
||||
fail_mmap:
|
||||
push L71 - L70
|
||||
pushsbli L71 - L70
|
||||
call L71
|
||||
L70:
|
||||
.ascii "PROT_EXEC|PROT_WRITE failed\n"
|
||||
.ascii "PROT_EXEC|PROT_WRITE failed.\n"
|
||||
L71:
|
||||
push 2 // fd stderr
|
||||
push eax // fake ret.addr
|
||||
@ -179,7 +182,7 @@ unfold:
|
||||
// So first PT_LOAD must be PF_R|PF_X only, and .p_memsz==.p_filesz.
|
||||
// So we must round up here, instead of pre-rounding .p_memsz.
|
||||
add eax, [p_memsz + szElf32_Ehdr + eax] // address after .text
|
||||
add eax, PAGE_SIZE -1
|
||||
add eax, PAGE_SIZE -1
|
||||
and eax, 0-PAGE_SIZE
|
||||
|
||||
push eax // destination for 'ret'
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
/*
|
||||
; i386-bsd.elf-fold.asm -- linkage to C code to process Elf binary
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
@ -26,256 +27,246 @@
|
||||
; John F. Reiser
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
// CPU 386
|
||||
|
||||
BITS 32
|
||||
SECTION .text
|
||||
CPU 386
|
||||
#define PAGE_SIZE ( 1<<12)
|
||||
#define szElf32_Ehdr 0x34
|
||||
#define szElf32_Phdr 8*4
|
||||
#define e_type 16
|
||||
#define e_entry (16 + 2*2 + 4)
|
||||
#define p_memsz 5*4
|
||||
#define szb_info 12
|
||||
#define szl_info 12
|
||||
#define szp_info 12
|
||||
#define a_type 0
|
||||
#define a_val 4
|
||||
#define sz_auxv 8
|
||||
|
||||
%define PAGE_SIZE ( 1<<12)
|
||||
%define szElf32_Ehdr 0x34
|
||||
%define szElf32_Phdr 8*4
|
||||
%define e_type 16
|
||||
%define e_entry (16 + 2*2 + 4)
|
||||
%define p_memsz 5*4
|
||||
%define szb_info 12
|
||||
%define szl_info 12
|
||||
%define szp_info 12
|
||||
%define a_type 0
|
||||
%define a_val 4
|
||||
%define sz_auxv 8
|
||||
#define __NR_munmap 73
|
||||
|
||||
%define __NR_munmap 73
|
||||
// control just falls through, after this part and compiled C code
|
||||
// are uncompressed.
|
||||
|
||||
;; control just falls through, after this part and compiled C code
|
||||
;; are uncompressed.
|
||||
fold_begin: // enter: %ebx= &Elf32_Ehdr of this program
|
||||
// patchLoader will modify to be
|
||||
// dword sz_uncompressed, sz_compressed
|
||||
// byte compressed_data...
|
||||
|
||||
fold_begin: ; enter: %ebx= &Elf32_Ehdr of this program
|
||||
; patchLoader will modify to be
|
||||
; dword sz_uncompressed, sz_compressed
|
||||
; byte compressed_data...
|
||||
// ld-linux.so.2 depends on AT_PHDR and AT_ENTRY, for instance.
|
||||
// Move argc,argv,envp down to make room for Elf_auxv table.
|
||||
// Linux kernel 2.4.2 and earlier give only AT_HWCAP and AT_PLATFORM
|
||||
// because we have no PT_INTERP. Linux kernel 2.4.5 (and later?)
|
||||
// give not quite everything. It is simpler and smaller code for us
|
||||
// to generate a "complete" table where Elf_auxv[k -1].a_type = k.
|
||||
// On second thought, that wastes a lot of stack space (the entire kernel
|
||||
// auxv, plus those slots that remain empty anyway). So try for minimal
|
||||
// space on stack, without too much code, by doing it serially.
|
||||
|
||||
; ld-linux.so.2 depends on AT_PHDR and AT_ENTRY, for instance.
|
||||
; Move argc,argv,envp down to make room for Elf_auxv table.
|
||||
; Linux kernel 2.4.2 and earlier give only AT_HWCAP and AT_PLATFORM
|
||||
; because we have no PT_INTERP. Linux kernel 2.4.5 (and later?)
|
||||
; give not quite everything. It is simpler and smaller code for us
|
||||
; to generate a "complete" table where Elf_auxv[k -1].a_type = k.
|
||||
; On second thought, that wastes a lot of stack space (the entire kernel
|
||||
; auxv, plus those slots that remain empty anyway). So try for minimal
|
||||
; space on stack, without too much code, by doing it serially.
|
||||
#define AT_NULL 0
|
||||
#define AT_IGNORE 1
|
||||
#define AT_PHDR 3
|
||||
#define AT_PHENT 4
|
||||
#define AT_PHNUM 5
|
||||
#define AT_PAGESZ 6
|
||||
#define AT_BASE 7
|
||||
#define AT_ENTRY 9
|
||||
|
||||
%define AT_NULL 0
|
||||
%define AT_IGNORE 1
|
||||
%define AT_PHDR 3
|
||||
%define AT_PHENT 4
|
||||
%define AT_PHNUM 5
|
||||
%define AT_PAGESZ 6
|
||||
%define AT_BASE 7
|
||||
%define AT_ENTRY 9
|
||||
|
||||
%define ET_DYN 3
|
||||
#define ET_DYN 3
|
||||
|
||||
sub ecx, ecx
|
||||
mov edx, (1<<AT_PHDR) | (1<<AT_PHENT) | (1<<AT_PHNUM) | (1<<AT_PAGESZ) | (1<<AT_BASE) | (1<<AT_ENTRY)
|
||||
mov esi, esp
|
||||
mov edi, esp
|
||||
call do_auxv ; clear bits in edx according to existing auxv slots
|
||||
call do_auxv // clear bits in edx according to existing auxv slots
|
||||
|
||||
mov esi, esp
|
||||
L50:
|
||||
shr edx, 1 ; Carry = bottom bit
|
||||
sbb eax, eax ; -1 or 0
|
||||
sub ecx, eax ; count of 1 bits that remained in edx
|
||||
lea esp, [esp + sz_auxv * eax] ; allocate one auxv slot, if needed
|
||||
shr edx, 1 // Carry = bottom bit
|
||||
sbb eax, eax // -1 or 0
|
||||
sub ecx, eax // count of 1 bits that remained in edx
|
||||
lea esp, [esp + sz_auxv * eax] // allocate one auxv slot, if needed
|
||||
test edx,edx
|
||||
jne L50
|
||||
|
||||
mov edi, esp
|
||||
call do_auxv ; move; fill new auxv slots with AT_IGNORE
|
||||
call do_auxv // move; fill new auxv slots with AT_IGNORE
|
||||
|
||||
%define OVERHEAD 2048
|
||||
%define MAX_ELF_HDR 512
|
||||
#define OVERHEAD 2048
|
||||
#define MAX_ELF_HDR 512
|
||||
|
||||
sub esp, dword MAX_ELF_HDR + OVERHEAD ; alloca
|
||||
push ebx ; start of unmap region (&Elf32_Ehdr of this stub)
|
||||
sub esp, MAX_ELF_HDR + OVERHEAD // alloca
|
||||
push ebx // start of unmap region (&Elf32_Ehdr of this stub)
|
||||
|
||||
; Cannot pre-round .p_memsz because kernel requires PF_W to setup .bss,
|
||||
; but strict SELinux (or PaX, grsecurity) prohibits PF_W with PF_X.
|
||||
mov edx, [p_memsz + szElf32_Ehdr + ebx] ; phdr[0].p_memsz
|
||||
lea edx, [-1 + 2*PAGE_SIZE + edx + ebx] ; 1 page for round, 1 for unfold
|
||||
and edx, -PAGE_SIZE
|
||||
// Cannot pre-round .p_memsz because kernel requires PF_W to setup .bss,
|
||||
// but strict SELinux (or PaX, grsecurity) prohibits PF_W with PF_X.
|
||||
mov edx, [p_memsz + szElf32_Ehdr + ebx] // phdr[0].p_memsz
|
||||
lea edx, [-1 + 2*PAGE_SIZE + edx + ebx] // 1 page for round, 1 for unfold
|
||||
and edx, 0-PAGE_SIZE
|
||||
|
||||
push edx ; end of unmap region
|
||||
sub eax, eax ; 0
|
||||
cmp word [e_type + ebx], byte ET_DYN
|
||||
push edx // end of unmap region
|
||||
sub eax, eax // 0
|
||||
cmp word ptr [e_type + ebx], ET_DYN
|
||||
jne L53
|
||||
xchg eax, edx ; dynbase for ET_DYN; assumes mmap(0, ...) is placed after us!
|
||||
xchg eax, edx // dynbase for ET_DYN; assumes mmap(0, ...) is placed after us!
|
||||
L53:
|
||||
push eax ; dynbase
|
||||
push eax // dynbase
|
||||
|
||||
mov esi, [e_entry + ebx] ; end of compressed data
|
||||
lea eax, [szElf32_Ehdr + 2*szElf32_Phdr + szl_info + szp_info + ebx] ; 1st &b_info
|
||||
sub esi, eax ; length of compressed data
|
||||
mov ebx, [ eax] ; length of uncompressed ELF headers
|
||||
mov ecx, [4+ eax] ; length of compressed ELF headers
|
||||
add ecx, byte szb_info
|
||||
lea edx, [3*4 + esp] ; &tmp
|
||||
pusha ; (AT_table, sz_cpr, f_expand, &tmp_ehdr, {sz_unc, &tmp}, {sz_cpr, &b1st_info} )
|
||||
inc edi ; swap with above 'pusha' to inhibit auxv_up for PT_INTERP
|
||||
EXTERN upx_main
|
||||
call upx_main ; returns entry address
|
||||
add esp, byte (8 +1)*4 ; remove 8 params from pusha, also dynbase
|
||||
pop ecx ; end of unmap region
|
||||
pop ebx ; start of unmap region (&Elf32_Ehdr of this stub)
|
||||
add esp, dword MAX_ELF_HDR + OVERHEAD ; un-alloca
|
||||
mov esi, [e_entry + ebx] // end of compressed data
|
||||
lea eax, [szElf32_Ehdr + 2*szElf32_Phdr + szl_info + szp_info + ebx] // 1st &b_info
|
||||
sub esi, eax // length of compressed data
|
||||
mov ebx, [ eax] // length of uncompressed ELF headers
|
||||
mov ecx, [4+ eax] // length of compressed ELF headers
|
||||
add ecx, szb_info
|
||||
lea edx, [3*4 + esp] // &tmp
|
||||
pusha // (AT_table, sz_cpr, f_expand, &tmp_ehdr, {sz_unc, &tmp}, {sz_cpr, &b1st_info} )
|
||||
inc edi // swap with above 'pusha' to inhibit auxv_up for PT_INTERP
|
||||
.extern upx_main
|
||||
call upx_main // returns entry address
|
||||
add esp, (8 +1)*4 // remove 8 params from pusha, also dynbase
|
||||
pop ecx // end of unmap region
|
||||
pop ebx // start of unmap region (&Elf32_Ehdr of this stub)
|
||||
add esp, MAX_ELF_HDR + OVERHEAD // un-alloca
|
||||
|
||||
push eax ; save entry address as ret.addr
|
||||
push byte 0 ; 'leave' uses this to clear ebp
|
||||
mov ebp,esp ; frame
|
||||
push eax // save entry address as ret.addr
|
||||
push 0 // 'leave' uses this to clear ebp
|
||||
mov ebp,esp // frame
|
||||
|
||||
sub ecx, ebx
|
||||
sub eax,eax ; 0, also AT_NULL
|
||||
push ecx ; length to unmap
|
||||
push ebx ; start of unmap region (&Elf32_Ehdr of this stub)
|
||||
push eax ; fake ret.addr
|
||||
sub eax,eax // 0, also AT_NULL
|
||||
push ecx // length to unmap
|
||||
push ebx // start of unmap region (&Elf32_Ehdr of this stub)
|
||||
push eax // fake ret.addr
|
||||
|
||||
dec edi ; auxv table
|
||||
db 0x3c ; "cmpb al, byte ..." like "jmp 1+L60" but 1 byte shorter
|
||||
dec edi // auxv table
|
||||
.byte 0x3c // "cmpb al, ..." like "jmp 1+L60" but 1 byte shorter
|
||||
L60:
|
||||
scasd ; a_un.a_val etc.
|
||||
scasd ; a_type
|
||||
jne L60 ; not AT_NULL
|
||||
; edi now points at [AT_NULL]a_un.a_ptr which contains result of make_hatch()
|
||||
push dword [edi] ; &escape hatch
|
||||
scasd // a_un.a_val etc.
|
||||
scasd // a_type
|
||||
jne L60 // not AT_NULL
|
||||
// edi now points at [AT_NULL]a_un.a_ptr which contains result of make_hatch()
|
||||
push dword ptr [edi] // &escape hatch
|
||||
|
||||
xor edi,edi
|
||||
xor esi,esi
|
||||
xor edx,edx
|
||||
xor ecx,ecx
|
||||
xor ebx,ebx
|
||||
mov al, __NR_munmap ; eax was 0 from L60
|
||||
ret ; goto escape hatch: int 0x80; leave; ret
|
||||
mov al, __NR_munmap // eax was 0 from L60
|
||||
ret // goto escape hatch: int 0x80; leave; ret
|
||||
|
||||
; called twice:
|
||||
; 1st with esi==edi, ecx=0, edx= bitmap of slots needed: just update edx.
|
||||
; 2nd with esi!=edi, ecx= slot_count: move, then append AT_IGNORE slots
|
||||
; entry: esi= src = &argc; edi= dst; ecx= # slots wanted; edx= bits wanted
|
||||
; exit: edi= &auxtab; edx= bits still needed
|
||||
// called twice:
|
||||
// 1st with esi==edi, ecx=0, edx= bitmap of slots needed: just update edx.
|
||||
// 2nd with esi!=edi, ecx= slot_count: move, then append AT_IGNORE slots
|
||||
// entry: esi= src = &argc; edi= dst; ecx= # slots wanted; edx= bits wanted
|
||||
// exit: edi= &auxtab; edx= bits still needed
|
||||
do_auxv:
|
||||
; cld
|
||||
// cld
|
||||
|
||||
L10: ; move argc+argv
|
||||
L10: // move argc+argv
|
||||
lodsd
|
||||
stosd
|
||||
test eax,eax
|
||||
jne L10
|
||||
|
||||
L20: ; move envp
|
||||
L20: // move envp
|
||||
lodsd
|
||||
stosd
|
||||
test eax,eax
|
||||
jne L20
|
||||
|
||||
push edi ; return value
|
||||
L30: ; process auxv
|
||||
lodsd ; a_type
|
||||
push edi // return value
|
||||
L30: // process auxv
|
||||
lodsd // a_type
|
||||
stosd
|
||||
cmp eax, byte 32
|
||||
jae L32 ; prevent aliasing by 'btr' when 32<=a_type
|
||||
btr edx, eax ; no longer need a slot of type eax [Carry only]
|
||||
cmp eax, 32
|
||||
jae L32 // prevent aliasing by 'btr' when 32<=a_type
|
||||
btr edx, eax // no longer need a slot of type eax [Carry only]
|
||||
L32:
|
||||
test eax, eax ; AT_NULL ?
|
||||
test eax, eax // AT_NULL ?
|
||||
lodsd
|
||||
stosd
|
||||
jnz L30 ; a_type != AT_NULL
|
||||
jnz L30 // a_type != AT_NULL
|
||||
|
||||
sub edi, byte 8 ; backup to AT_NULL
|
||||
add ecx, ecx ; two words per auxv
|
||||
inc eax ; convert 0 to AT_IGNORE
|
||||
rep stosd ; allocate and fill
|
||||
dec eax ; convert AT_IGNORE to AT_NULL
|
||||
stosd ; re-terminate with AT_NULL
|
||||
sub edi, 8 // backup to AT_NULL
|
||||
add ecx, ecx // two words per auxv
|
||||
inc eax // convert 0 to AT_IGNORE
|
||||
rep stosd // allocate and fill
|
||||
dec eax // convert AT_IGNORE to AT_NULL
|
||||
stosd // re-terminate with AT_NULL
|
||||
stosd
|
||||
|
||||
pop edi ; &auxtab
|
||||
pop edi // &auxtab
|
||||
ret
|
||||
|
||||
%define __NR_mmap 197
|
||||
%define __NR_syscall 198
|
||||
#define __NR_mmap 197
|
||||
#define __NR_syscall 198
|
||||
|
||||
global mmap
|
||||
mmap:
|
||||
mmap: .globl mmap
|
||||
push ebp
|
||||
mov ebp,esp
|
||||
xor eax,eax ; 0
|
||||
push eax ; convert to 64-bit
|
||||
push dword [7*4+ebp] ; offset
|
||||
push eax ; pad
|
||||
push dword [6*4+ebp] ; fd
|
||||
push dword [5*4+ebp] ; flags
|
||||
push dword [4*4+ebp] ; prot
|
||||
push dword [3*4+ebp] ; len
|
||||
push dword [2*4+ebp] ; addr
|
||||
push eax ; current thread
|
||||
xor eax,eax // 0
|
||||
push eax // convert to 64-bit
|
||||
push dword ptr [7*4+ebp] // offset
|
||||
push eax // pad
|
||||
push dword ptr [6*4+ebp] // fd
|
||||
push dword ptr [5*4+ebp] // flags
|
||||
push dword ptr [4*4+ebp] // prot
|
||||
push dword ptr [3*4+ebp] // len
|
||||
push dword ptr [2*4+ebp] // addr
|
||||
push eax // current thread
|
||||
mov al,__NR_mmap
|
||||
push eax
|
||||
push eax ; fake ret.addr
|
||||
push eax // fake ret.addr
|
||||
mov al,__NR_syscall
|
||||
int 0x80
|
||||
leave
|
||||
ret
|
||||
|
||||
global brk
|
||||
brk:
|
||||
brk: .globl brk
|
||||
ret
|
||||
|
||||
%define __NR_exit 1
|
||||
%define __NR_read 3
|
||||
%define __NR_write 4
|
||||
%define __NR_open 5
|
||||
%define __NR_close 6
|
||||
%define __NR_munmap 73
|
||||
%define __NR_mprotect 74
|
||||
#define __NR_exit 1
|
||||
#define __NR_read 3
|
||||
#define __NR_write 4
|
||||
#define __NR_open 5
|
||||
#define __NR_close 6
|
||||
#define __NR_munmap 73
|
||||
#define __NR_mprotect 74
|
||||
|
||||
global exit
|
||||
exit:
|
||||
exit: .globl exit
|
||||
mov al,__NR_exit
|
||||
nf_sysgo:
|
||||
movzx eax,al
|
||||
int 0x80
|
||||
ret
|
||||
|
||||
global read
|
||||
read:
|
||||
read: .globl read
|
||||
mov al,__NR_read
|
||||
jmp nf_sysgo
|
||||
|
||||
global write
|
||||
write:
|
||||
write: .globl write
|
||||
mov al,__NR_write
|
||||
jmp nf_sysgo
|
||||
|
||||
global open
|
||||
open:
|
||||
open: .globl open
|
||||
mov al,__NR_open
|
||||
jmp nf_sysgo
|
||||
|
||||
global close
|
||||
close:
|
||||
close: .globl close
|
||||
mov al,__NR_close
|
||||
jmp nf_sysgo
|
||||
|
||||
|
||||
global munmap
|
||||
munmap:
|
||||
munmap: .globl munmap
|
||||
mov al,__NR_munmap
|
||||
jmp nf_sysgo
|
||||
|
||||
global mprotect
|
||||
mprotect:
|
||||
mprotect: .globl mprotect
|
||||
mov al,__NR_mprotect
|
||||
jmp nf_sysgo
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
// vi:ts=8:et:nowrap
|
||||
|
||||
|
||||
@ -63,10 +63,11 @@ section LZMA_INIT_STACK
|
||||
; =============
|
||||
*/
|
||||
|
||||
//include "arch/i386/nrv2b_d32.ash"
|
||||
//#include "arch/i386/nrv2d_d32.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
//#include "arch/i386/lzma_d.ash"
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
#define db .byte
|
||||
#include "arch/i386/lzma_d_2.ash"
|
||||
|
||||
section LZMA_DONE_STACK
|
||||
mov ss, [eax] // eax is always 0 here
|
||||
|
||||
@ -66,10 +66,10 @@ decompressor:
|
||||
// ============= DECOMPRESSION
|
||||
// =============
|
||||
|
||||
//#include "arch/i386/nrv2b_d32.ash"
|
||||
//#include "arch/i386/nrv2d_d32.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
//#include "arch/i386/lzma_d.ash"
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
#include "arch/i386/lzma_d_2.ash"
|
||||
|
||||
section TMTMAIN5
|
||||
pop ebp
|
||||
|
||||
@ -71,10 +71,10 @@ decompressor:
|
||||
// ============= DECOMPRESSION
|
||||
// =============
|
||||
|
||||
//#include "arch/i386/nrv2b_d32.ash"
|
||||
//#include "arch/i386/nrv2d_d32.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
//#include "arch/i386/lzma_d.ash"
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
#include "arch/i386/lzma_d_2.ash"
|
||||
|
||||
// =============
|
||||
|
||||
|
||||
@ -30,17 +30,20 @@
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
#include "arch/i386/macros2.ash"
|
||||
// CPU 386
|
||||
|
||||
; /*************************************************************************
|
||||
; // program entry point
|
||||
; // see glibc/sysdeps/i386/elf/start.S
|
||||
; **************************************************************************/
|
||||
#define jmps jmp short
|
||||
#define jmpn jmp near
|
||||
|
||||
/*************************************************************************
|
||||
// program entry point
|
||||
// see glibc/sysdeps/i386/elf/start.S
|
||||
**************************************************************************/
|
||||
|
||||
.globl _start
|
||||
section LEXEC000
|
||||
_start:
|
||||
_start: .globl _start
|
||||
//// int3
|
||||
/*
|
||||
;; How to debug this code: Uncomment the 'int3' breakpoint instruction above.
|
||||
@ -63,11 +66,11 @@ _start:
|
||||
call main // push address of decompress subroutine
|
||||
decompress:
|
||||
|
||||
//
|
||||
// C callable decompressor
|
||||
//
|
||||
// /*************************************************************************
|
||||
// // C callable decompressor
|
||||
// **************************************************************************/
|
||||
|
||||
/* Offsets to parameters, allowing for {push + pusha + call} */
|
||||
// /* Offsets to parameters, allowing for {push + pusha + call} */
|
||||
#define O_INP (4+ 8*4 +1*4)
|
||||
#define O_INS (4+ 8*4 +2*4)
|
||||
#define O_OUTP (4+ 8*4 +3*4)
|
||||
@ -84,19 +87,20 @@ section LEXEC009
|
||||
//; empty section for commonality with l_lx_exec86.asm
|
||||
section LEXEC010
|
||||
pusha
|
||||
push /*byte*/ '?' // cto8 (sign extension does not matter)
|
||||
push '?' // cto8 (sign extension does not matter)
|
||||
// cld
|
||||
|
||||
mov esi, INP
|
||||
mov edi, OUTP
|
||||
|
||||
or ebp, byte -1
|
||||
// align 8
|
||||
//;; align 8
|
||||
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
//#include "arch/i386/lzma_d_2.ash"
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
#define db .byte
|
||||
#include "arch/i386/lzma_d_2.ash"
|
||||
cjt32 0
|
||||
|
||||
section LEXEC015
|
||||
@ -145,22 +149,24 @@ section LEXEC020
|
||||
#define __NR_write 4
|
||||
#define __NR_exit 1
|
||||
|
||||
#define pushsbli .byte 0x6a, /* push sign-extended byte to long immediate*/
|
||||
|
||||
msg_SELinux:
|
||||
push /*byte*/ L71 - L70
|
||||
pushsbli L71 - L70
|
||||
pop edx // length
|
||||
call L71
|
||||
L70:
|
||||
.ascii "PROT_EXEC|PROT_WRITE failed.\n"
|
||||
L71:
|
||||
pop ecx // message text
|
||||
push /*byte*/ 2 // fd stderr
|
||||
push 2 // fd stderr
|
||||
pop ebx
|
||||
push /*byte*/ __NR_write
|
||||
push __NR_write
|
||||
pop eax
|
||||
int 0x80
|
||||
die:
|
||||
mov bl, /*byte*/ 127 // only low 7 bits matter!
|
||||
push /*byte*/ __NR_exit
|
||||
mov bl, 127 // only low 7 bits matter!
|
||||
push __NR_exit
|
||||
pop eax // write to stderr could fail, leaving eax as -EBADF etc.
|
||||
int 0x80
|
||||
|
||||
@ -177,7 +183,7 @@ unfold:
|
||||
// So first PT_LOAD must be PF_R|PF_X only, and .p_memsz==.p_filesz.
|
||||
// So we must round up here, instead of pre-rounding .p_memsz.
|
||||
add eax, [p_memsz + szElf32_Ehdr + eax] // address after .text
|
||||
add eax, PAGE_SIZE -1
|
||||
add eax, PAGE_SIZE -1
|
||||
and eax, 0-PAGE_SIZE
|
||||
|
||||
push eax // destination for 'ret'
|
||||
@ -186,14 +192,14 @@ unfold:
|
||||
xor ecx, ecx // %ecx= 0
|
||||
// MAP_ANONYMOUS ==>offset is ignored, so do not push!
|
||||
// push ecx ; offset
|
||||
push /*byte*/ -1 // *BSD demands -1==fd for mmap(,,,MAP_ANON,,)
|
||||
push /*byte*/ MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS
|
||||
push -1 // *BSD demands -1==fd for mmap(,,,MAP_ANON,,)
|
||||
push MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS
|
||||
mov ch, PAGE_SIZE >> 8 // %ecx= PAGE_SIZE
|
||||
push /*byte*/ PROT_READ | PROT_WRITE | PROT_EXEC
|
||||
push PROT_READ | PROT_WRITE | PROT_EXEC
|
||||
push ecx // length
|
||||
push eax // destination
|
||||
mov ebx, esp // address of parameter vector for __NR_mmap
|
||||
push /*byte*/ __NR_mmap
|
||||
push __NR_mmap
|
||||
pop eax
|
||||
int 0x80 // changes only %eax; %edx is live
|
||||
test eax,eax
|
||||
@ -214,7 +220,7 @@ unfold:
|
||||
mov [4*3 + esp],eax
|
||||
push esi // &compressed_data
|
||||
call ebp // decompress(&src, srclen, &dst, &dstlen, b_info.misc)
|
||||
add esp, /*byte*/ (5+1 + 6-1)*4 // (5+1) args to decompress, (6-1) args to mmap
|
||||
add esp, 0+(5+1 + 6-1)*4 // (5+1) args to decompress, (6-1) args to mmap
|
||||
ret // &destination
|
||||
main:
|
||||
pop ebp // &decompress
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
/*
|
||||
; fold_elf86.asm -- linkage to C code to process Elf binary
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
@ -26,118 +27,118 @@
|
||||
; John F. Reiser
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
|
||||
BITS 32
|
||||
SECTION .text
|
||||
CPU 386
|
||||
// CPU 386
|
||||
|
||||
%define PAGE_SIZE ( 1<<12)
|
||||
%define szElf32_Ehdr 0x34
|
||||
%define szElf32_Phdr 8*4
|
||||
%define e_type 16
|
||||
%define e_entry (16 + 2*2 + 4)
|
||||
%define p_memsz 5*4
|
||||
%define szb_info 12
|
||||
%define szl_info 12
|
||||
%define szp_info 12
|
||||
%define a_type 0
|
||||
%define a_val 4
|
||||
%define sz_auxv 8
|
||||
#define PAGE_SIZE ( 1<<12)
|
||||
#define szElf32_Ehdr 0x34
|
||||
#define szElf32_Phdr 8*4
|
||||
#define e_type 16
|
||||
#define e_entry (16 + 2*2 + 4)
|
||||
#define p_memsz 5*4
|
||||
#define szb_info 12
|
||||
#define szl_info 12
|
||||
#define szp_info 12
|
||||
#define a_type 0
|
||||
#define a_val 4
|
||||
#define sz_auxv 8
|
||||
|
||||
%define __NR_munmap 91
|
||||
#define __NR_munmap 91
|
||||
|
||||
;; control just falls through, after this part and compiled C code
|
||||
;; are uncompressed.
|
||||
// control just falls through, after this part and compiled C code
|
||||
// are uncompressed.
|
||||
|
||||
fold_begin: ; enter: %ebx= &Elf32_Ehdr of this program
|
||||
; patchLoader will modify to be
|
||||
; dword sz_uncompressed, sz_compressed
|
||||
; byte compressed_data...
|
||||
fold_begin: // enter: %ebx= &Elf32_Ehdr of this program
|
||||
// patchLoader will modify to be
|
||||
// dword sz_uncompressed, sz_compressed
|
||||
// byte compressed_data...
|
||||
|
||||
; ld-linux.so.2 depends on AT_PHDR and AT_ENTRY, for instance.
|
||||
; Move argc,argv,envp down to make room for Elf_auxv table.
|
||||
; Linux kernel 2.4.2 and earlier give only AT_HWCAP and AT_PLATFORM
|
||||
; because we have no PT_INTERP. Linux kernel 2.4.5 (and later?)
|
||||
; give not quite everything. It is simpler and smaller code for us
|
||||
; to generate a "complete" table where Elf_auxv[k -1].a_type = k.
|
||||
; On second thought, that wastes a lot of stack space (the entire kernel
|
||||
; auxv, plus those slots that remain empty anyway). So try for minimal
|
||||
; space on stack, without too much code, by doing it serially.
|
||||
// ld-linux.so.2 depends on AT_PHDR and AT_ENTRY, for instance.
|
||||
// Move argc,argv,envp down to make room for Elf_auxv table.
|
||||
// Linux kernel 2.4.2 and earlier give only AT_HWCAP and AT_PLATFORM
|
||||
// because we have no PT_INTERP. Linux kernel 2.4.5 (and later?)
|
||||
// give not quite everything. It is simpler and smaller code for us
|
||||
// to generate a "complete" table where Elf_auxv[k -1].a_type = k.
|
||||
// On second thought, that wastes a lot of stack space (the entire kernel
|
||||
// auxv, plus those slots that remain empty anyway). So try for minimal
|
||||
// space on stack, without too much code, by doing it serially.
|
||||
|
||||
%define AT_NULL 0
|
||||
%define AT_IGNORE 1
|
||||
%define AT_PHDR 3
|
||||
%define AT_PHENT 4
|
||||
%define AT_PHNUM 5
|
||||
%define AT_PAGESZ 6
|
||||
%define AT_ENTRY 9
|
||||
#define AT_NULL 0
|
||||
#define AT_IGNORE 1
|
||||
#define AT_PHDR 3
|
||||
#define AT_PHENT 4
|
||||
#define AT_PHNUM 5
|
||||
#define AT_PAGESZ 6
|
||||
#define AT_ENTRY 9
|
||||
|
||||
%define ET_DYN 3
|
||||
#define ET_DYN 3
|
||||
|
||||
sub ecx, ecx
|
||||
mov edx, (1<<AT_PHDR) | (1<<AT_PHENT) | (1<<AT_PHNUM) | (1<<AT_PAGESZ) | (1<<AT_ENTRY)
|
||||
mov esi, esp
|
||||
mov edi, esp
|
||||
call do_auxv ; clear bits in edx according to existing auxv slots
|
||||
call do_auxv // clear bits in edx according to existing auxv slots
|
||||
|
||||
mov esi, esp
|
||||
L50:
|
||||
shr edx, 1 ; Carry = bottom bit
|
||||
sbb eax, eax ; -1 or 0
|
||||
sub ecx, eax ; count of 1 bits that remained in edx
|
||||
lea esp, [esp + sz_auxv * eax] ; allocate one auxv slot, if needed
|
||||
shr edx, 1 // Carry = bottom bit
|
||||
sbb eax, eax // -1 or 0
|
||||
sub ecx, eax // count of 1 bits that remained in edx
|
||||
lea esp, [esp + sz_auxv * eax] // allocate one auxv slot, if needed
|
||||
test edx,edx
|
||||
jne L50
|
||||
|
||||
mov edi, esp
|
||||
call do_auxv ; move; fill new auxv slots with AT_IGNORE
|
||||
call do_auxv // move; fill new auxv slots with AT_IGNORE
|
||||
|
||||
%define OVERHEAD 2048
|
||||
%define MAX_ELF_HDR 512
|
||||
#define OVERHEAD 2048
|
||||
#define MAX_ELF_HDR 512
|
||||
|
||||
sub esp, dword MAX_ELF_HDR + OVERHEAD ; alloca
|
||||
push ebx ; start of unmap region (&Elf32_Ehdr of this stub)
|
||||
sub esp, MAX_ELF_HDR + OVERHEAD // alloca
|
||||
push ebx // start of unmap region (&Elf32_Ehdr of this stub)
|
||||
|
||||
; Cannot pre-round .p_memsz because kernel requires PF_W to setup .bss,
|
||||
; but strict SELinux (or PaX, grsecurity) prohibits PF_W with PF_X.
|
||||
mov edx, [p_memsz + szElf32_Ehdr + ebx] ; phdr[0].p_memsz
|
||||
lea edx, [-1 + 2*PAGE_SIZE + edx + ebx] ; 1 page for round, 1 for unfold
|
||||
and edx, -PAGE_SIZE
|
||||
// Cannot pre-round .p_memsz because kernel requires PF_W to setup .bss,
|
||||
// but strict SELinux (or PaX, grsecurity) prohibits PF_W with PF_X.
|
||||
mov edx, [p_memsz + szElf32_Ehdr + ebx] // phdr[0].p_memsz
|
||||
lea edx, [-1 + 2*PAGE_SIZE + edx + ebx] // 1 page for round, 1 for unfold
|
||||
and edx, 0-PAGE_SIZE
|
||||
|
||||
push edx ; end of unmap region
|
||||
sub eax, eax ; 0
|
||||
cmp word [e_type + ebx], byte ET_DYN
|
||||
push edx // end of unmap region
|
||||
sub eax, eax // 0
|
||||
cmp word ptr [e_type + ebx], ET_DYN
|
||||
jne L53
|
||||
xchg eax, edx ; dynbase for ET_DYN; assumes mmap(0, ...) is placed after us!
|
||||
xchg eax, edx // dynbase for ET_DYN; assumes mmap(0, ...) is placed after us!
|
||||
L53:
|
||||
push eax ; dynbase
|
||||
push eax // dynbase
|
||||
|
||||
mov esi, [e_entry + ebx] ; end of compressed data
|
||||
lea eax, [szElf32_Ehdr + 2*szElf32_Phdr + szl_info + szp_info + ebx] ; 1st &b_info
|
||||
sub esi, eax ; length of compressed data
|
||||
mov ebx, [ eax] ; length of uncompressed ELF headers
|
||||
mov ecx, [4+ eax] ; length of compressed ELF headers
|
||||
add ecx, byte szb_info
|
||||
lea edx, [3*4 + esp] ; &tmp
|
||||
pusha ; (AT_table, sz_cpr, f_expand, &tmp_ehdr, {sz_unc, &tmp}, {sz_cpr, &b1st_info} )
|
||||
inc edi ; swap with above 'pusha' to inhibit auxv_up for PT_INTERP
|
||||
EXTERN upx_main
|
||||
call upx_main ; returns entry address
|
||||
add esp, byte (8 +1)*4 ; remove 8 params from pusha, also dynbase
|
||||
pop ecx ; end of unmap region
|
||||
pop ebx ; start of unmap region (&Elf32_Ehdr of this stub)
|
||||
add esp, dword MAX_ELF_HDR + OVERHEAD ; un-alloca
|
||||
push eax ; save entry address
|
||||
mov esi, [e_entry + ebx] // end of compressed data
|
||||
lea eax, [szElf32_Ehdr + 2*szElf32_Phdr + szl_info + szp_info + ebx] // 1st &b_info
|
||||
sub esi, eax // length of compressed data
|
||||
mov ebx, [ eax] // length of uncompressed ELF headers
|
||||
mov ecx, [4+ eax] // length of compressed ELF headers
|
||||
add ecx, szb_info
|
||||
lea edx, [3*4 + esp] // &tmp
|
||||
pusha // (AT_table, sz_cpr, f_expand, &tmp_ehdr, {sz_unc, &tmp}, {sz_cpr, &b1st_info} )
|
||||
inc edi // swap with above 'pusha' to inhibit auxv_up for PT_INTERP
|
||||
.extern upx_main
|
||||
call upx_main // returns entry address
|
||||
add esp, (8 +1)*4 // remove 8 params from pusha, also dynbase
|
||||
pop ecx // end of unmap region
|
||||
pop ebx // start of unmap region (&Elf32_Ehdr of this stub)
|
||||
add esp, MAX_ELF_HDR + OVERHEAD // un-alloca
|
||||
push eax // save entry address
|
||||
|
||||
dec edi ; auxv table
|
||||
sub eax,eax ; 0, also AT_NULL
|
||||
db 0x3c ; "cmpb al, byte ..." like "jmp 1+L60" but 1 byte shorter
|
||||
dec edi // auxv table
|
||||
sub eax,eax // 0, also AT_NULL
|
||||
.byte 0x3c // "cmpb al, byte ..." like "jmp 1+L60" but 1 byte shorter
|
||||
L60:
|
||||
scasd ; a_un.a_val etc.
|
||||
scasd ; a_type
|
||||
jne L60 ; not AT_NULL
|
||||
; edi now points at [AT_NULL]a_un.a_ptr which contains result of make_hatch()
|
||||
scasd // a_un.a_val etc.
|
||||
scasd // a_type
|
||||
jne L60 // not AT_NULL
|
||||
// edi now points at [AT_NULL]a_un.a_ptr which contains result of make_hatch()
|
||||
|
||||
push eax
|
||||
push eax
|
||||
@ -146,67 +147,66 @@ L60:
|
||||
push eax
|
||||
push eax
|
||||
push eax
|
||||
push eax ; 32 bytes of zeroes now on stack, ready for 'popa'
|
||||
push eax // 32 bytes of zeroes now on stack, ready for 'popa'
|
||||
|
||||
sub ecx, ebx ; length to unmap
|
||||
mov al, __NR_munmap ; eax was 0 from L60
|
||||
jmp [edi] ; unmap ourselves via escape hatch, then goto entry
|
||||
sub ecx, ebx // length to unmap
|
||||
mov al, __NR_munmap // eax was 0 from L60
|
||||
jmp [edi] // unmap ourselves via escape hatch, then goto entry
|
||||
|
||||
; called twice:
|
||||
; 1st with esi==edi, ecx=0, edx= bitmap of slots needed: just update edx.
|
||||
; 2nd with esi!=edi, ecx= slot_count: move, then append AT_IGNORE slots
|
||||
; entry: esi= src = &argc; edi= dst; ecx= # slots wanted; edx= bits wanted
|
||||
; exit: edi= &auxtab; edx= bits still needed
|
||||
// called twice:
|
||||
// 1st with esi==edi, ecx=0, edx= bitmap of slots needed: just update edx.
|
||||
// 2nd with esi!=edi, ecx= slot_count: move, then append AT_IGNORE slots
|
||||
// entry: esi= src = &argc; edi= dst; ecx= # slots wanted; edx= bits wanted
|
||||
// exit: edi= &auxtab; edx= bits still needed
|
||||
do_auxv:
|
||||
; cld
|
||||
// cld
|
||||
|
||||
L10: ; move argc+argv
|
||||
L10: // move argc+argv
|
||||
lodsd
|
||||
stosd
|
||||
test eax,eax
|
||||
jne L10
|
||||
|
||||
L20: ; move envp
|
||||
L20: // move envp
|
||||
lodsd
|
||||
stosd
|
||||
test eax,eax
|
||||
jne L20
|
||||
|
||||
push edi ; return value
|
||||
L30: ; process auxv
|
||||
lodsd ; a_type
|
||||
push edi // return value
|
||||
L30: // process auxv
|
||||
lodsd // a_type
|
||||
stosd
|
||||
cmp eax, byte 32
|
||||
jae L32 ; prevent aliasing by 'btr' when 32<=a_type
|
||||
btr edx, eax ; no longer need a slot of type eax [Carry only]
|
||||
cmp eax, 32
|
||||
jae L32 // prevent aliasing by 'btr' when 32<=a_type
|
||||
btr edx, eax // no longer need a slot of type eax [Carry only]
|
||||
L32:
|
||||
test eax, eax ; AT_NULL ?
|
||||
test eax, eax // AT_NULL ?
|
||||
lodsd
|
||||
stosd
|
||||
jnz L30 ; a_type != AT_NULL
|
||||
jnz L30 // a_type != AT_NULL
|
||||
|
||||
sub edi, byte 8 ; backup to AT_NULL
|
||||
add ecx, ecx ; two words per auxv
|
||||
inc eax ; convert 0 to AT_IGNORE
|
||||
rep stosd ; allocate and fill
|
||||
dec eax ; convert AT_IGNORE to AT_NULL
|
||||
stosd ; re-terminate with AT_NULL
|
||||
sub edi, 8 // backup to AT_NULL
|
||||
add ecx, ecx // two words per auxv
|
||||
inc eax // convert 0 to AT_IGNORE
|
||||
rep stosd // allocate and fill
|
||||
dec eax // convert AT_IGNORE to AT_NULL
|
||||
stosd // re-terminate with AT_NULL
|
||||
stosd
|
||||
|
||||
pop edi ; &auxtab
|
||||
pop edi // &auxtab
|
||||
ret
|
||||
|
||||
%define __NR_mmap 90
|
||||
#define __NR_mmap 90
|
||||
|
||||
global mmap
|
||||
mmap:
|
||||
mmap: .globl mmap
|
||||
push ebx
|
||||
lea ebx, [2*4 + esp]
|
||||
push byte __NR_mmap
|
||||
push __NR_mmap
|
||||
pop eax
|
||||
int 0x80
|
||||
pop ebx
|
||||
ret
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
// vi:ts=8:et:nowrap
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
/*
|
||||
; l_lx_exec86.asm -- Linux program entry point & decompressor (kernel exec)
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
@ -28,24 +29,23 @@
|
||||
; John F. Reiser
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
// CPU 386
|
||||
|
||||
BITS 32
|
||||
SECTION .text
|
||||
CPU 386
|
||||
#define jmps jmp short
|
||||
#define jmpn jmp near
|
||||
|
||||
%define jmps jmp short
|
||||
%define jmpn jmp near
|
||||
/*************************************************************************
|
||||
// program entry point
|
||||
// see glibc/sysdeps/i386/elf/start.S
|
||||
**************************************************************************/
|
||||
|
||||
; /*************************************************************************
|
||||
; // program entry point
|
||||
; // see glibc/sysdeps/i386/elf/start.S
|
||||
; **************************************************************************/
|
||||
|
||||
GLOBAL _start
|
||||
;__LEXEC000__
|
||||
_start:
|
||||
;;;; int3
|
||||
section LEXEC000
|
||||
_start: .globl _start
|
||||
//// int3
|
||||
/*
|
||||
;; How to debug this code: Uncomment the 'int3' breakpoint instruction above.
|
||||
;; Build the stubs and upx. Compress a testcase, such as a copy of /bin/date.
|
||||
;; Invoke gdb, and give a 'run' command. Define a single-step macro such as
|
||||
@ -62,106 +62,104 @@ _start:
|
||||
;; end
|
||||
;; Step through the code; remember that <Enter> repeats the previous command.
|
||||
;;
|
||||
*/
|
||||
|
||||
%if 0
|
||||
; personality(PER_LINUX)
|
||||
mov eax, 136 ; syscall_personality
|
||||
xor ebx, ebx ; PER_LINUX
|
||||
#if 0
|
||||
// personality(PER_LINUX)
|
||||
mov eax, 136 // syscall_personality
|
||||
xor ebx, ebx // PER_LINUX
|
||||
int 0x80
|
||||
%endif
|
||||
#endif
|
||||
|
||||
call main ; push address of decompress subroutine
|
||||
call main // push address of decompress subroutine
|
||||
decompress:
|
||||
|
||||
; /*************************************************************************
|
||||
; // C callable decompressor
|
||||
; **************************************************************************/
|
||||
// /*************************************************************************
|
||||
// // C callable decompressor
|
||||
// **************************************************************************/
|
||||
|
||||
; /* Offsets to parameters, allowing for {push + pusha + call} */
|
||||
%define O_INP (4+ 8*4 +1*4)
|
||||
%define O_INS (4+ 8*4 +2*4)
|
||||
%define O_OUTP (4+ 8*4 +3*4)
|
||||
%define O_OUTS (4+ 8*4 +4*4)
|
||||
%define O_PARAM (4+ 8*4 +5*4)
|
||||
// /* Offsets to parameters, allowing for {push + pusha + call} */
|
||||
#define O_INP (4+ 8*4 +1*4)
|
||||
#define O_INS (4+ 8*4 +2*4)
|
||||
#define O_OUTP (4+ 8*4 +3*4)
|
||||
#define O_OUTS (4+ 8*4 +4*4)
|
||||
#define O_PARAM (4+ 8*4 +5*4)
|
||||
|
||||
%define INP dword [esp+O_INP]
|
||||
%define INS dword [esp+O_INS]
|
||||
%define OUTP dword [esp+O_OUTP]
|
||||
%define OUTS dword [esp+O_OUTS]
|
||||
%define PARM dword [esp+O_PARAM]
|
||||
#define INP dword [esp+O_INP]
|
||||
#define INS dword [esp+O_INS]
|
||||
#define OUTP dword [esp+O_OUTP]
|
||||
#define OUTS dword [esp+O_OUTS]
|
||||
#define PARM dword [esp+O_PARAM]
|
||||
|
||||
;__LEXEC009__
|
||||
mov eax, 'NMRU' ; free slot in following 'pusha'
|
||||
;__LEXEC010__
|
||||
section LEXEC009
|
||||
mov eax, offset NMRU // free slot in following 'pusha'
|
||||
section LEXEC010
|
||||
pusha
|
||||
push byte '?' ; cto8 (sign extension does not matter)
|
||||
; cld
|
||||
push '?' // cto8 (sign extension does not matter)
|
||||
// cld
|
||||
|
||||
mov esi, INP
|
||||
mov edi, OUTP
|
||||
|
||||
or ebp, byte -1
|
||||
;;; align 8
|
||||
// align 8
|
||||
|
||||
%include "arch/i386/nrv2b_d32.ash"
|
||||
%include "arch/i386/nrv2d_d32.ash"
|
||||
%include "arch/i386/nrv2e_d32.ash"
|
||||
%include "arch/i386/lzma_d.ash"
|
||||
%include "arch/i386/macros.ash"
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
#define db .byte
|
||||
#include "arch/i386/lzma_d_2.ash"
|
||||
#include "arch/i386/macros2.ash"
|
||||
cjt32 0
|
||||
|
||||
;__LEXEC015__
|
||||
; eax is 0 from decompressor code
|
||||
;xor eax, eax ; return code
|
||||
section LEXEC015
|
||||
// eax is 0 from decompressor code
|
||||
//xor eax, eax ; return code
|
||||
|
||||
; check compressed size
|
||||
// check compressed size
|
||||
mov edx, INP
|
||||
add edx, INS
|
||||
cmp edx, esi
|
||||
jz .ok
|
||||
dec eax
|
||||
.ok:
|
||||
xchg [8*4 + esp], eax ; store success/failure, fetch NMRU
|
||||
xchg [8*4 + esp], eax // store success/failure, fetch NMRU
|
||||
|
||||
; write back the uncompressed size, and prepare for unfilter
|
||||
// write back the uncompressed size, and prepare for unfilter
|
||||
mov edx, OUTS
|
||||
mov ecx, edi
|
||||
mov edi, OUTP
|
||||
sub ecx, edi ; ecx= uncompressed size
|
||||
sub ecx, edi // ecx= uncompressed size
|
||||
mov [edx], ecx
|
||||
|
||||
pop edx ; cto8
|
||||
pop edx // cto8
|
||||
|
||||
;__LEXEC110__ Jcc and/or possible n_mru
|
||||
push edi ; addvalue
|
||||
push byte 0x0f
|
||||
section LEXEC110 // Jcc and/or possible n_mru
|
||||
push edi // addvalue
|
||||
push 0x0f
|
||||
pop ebx
|
||||
mov bh, dl ; ebx= 0,,cto8,0x0F
|
||||
mov bh, dl // ebx= 0,,cto8,0x0F
|
||||
|
||||
;__LEXEC100__ 0!=n_mru
|
||||
xchg eax, ebx ; eax= ct08_0f; ebx= n_mru {or n_mru1}
|
||||
section LEXEC100 // 0!=n_mru
|
||||
xchg eax, ebx // eax= ct08_0f; ebx= n_mru {or n_mru1}
|
||||
|
||||
;;LEXEC016 bug in APP: jmp and target must be in same .asx
|
||||
;; jmpn lxunf0 ; logically belongs here
|
||||
section LEXEC016 // bug in APP: jmp and target must be in same .asx
|
||||
//; jmpn lxunf0 ; logically belongs here
|
||||
|
||||
ctojr32
|
||||
ckt32 edi, dl
|
||||
;__LEXEC017__
|
||||
section LEXEC017
|
||||
popa
|
||||
ret
|
||||
|
||||
;__LEXEC020__
|
||||
section LEXEC020
|
||||
|
||||
main:
|
||||
pop ebp ; &decompress
|
||||
mov ebx, 0x401000 ; &Elf32_Ehdr of this program
|
||||
;; fall into fold_begin
|
||||
pop ebp // &decompress
|
||||
mov ebx, 0x401000 // &Elf32_Ehdr of this program
|
||||
//; fall into fold_begin
|
||||
|
||||
eof:
|
||||
; __XTHEENDX__
|
||||
section .data
|
||||
dd -1
|
||||
dw eof
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
// vi:ts=8:et:nowrap
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
/*
|
||||
; fold_exec86.asm -- linkage to C code to process Elf binary
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
@ -26,47 +27,45 @@
|
||||
; John F. Reiser
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
// CPU 386
|
||||
|
||||
BITS 32
|
||||
SECTION .text
|
||||
CPU 386
|
||||
// control just falls through, after this part and compiled C code
|
||||
// are uncompressed.
|
||||
|
||||
;; control just falls through, after this part and compiled C code
|
||||
;; are uncompressed.
|
||||
#define szElf32_Ehdr 0x34
|
||||
#define szElf32_Phdr 8*4
|
||||
#define e_entry (16 + 2*2 + 4)
|
||||
#define p_vaddr 2*4
|
||||
#define p_memsz 5*4
|
||||
#define szl_info 12
|
||||
#define szp_info 12
|
||||
|
||||
%define szElf32_Ehdr 0x34
|
||||
%define szElf32_Phdr 8*4
|
||||
%define e_entry (16 + 2*2 + 4)
|
||||
%define p_vaddr 2*4
|
||||
%define p_memsz 5*4
|
||||
%define szl_info 12
|
||||
%define szp_info 12
|
||||
fold_begin: // enter: %ebx= &Elf32_Ehdr of this program
|
||||
|
||||
fold_begin: ; enter: %ebx= &Elf32_Ehdr of this program
|
||||
|
||||
pop eax ; Pop the argument count
|
||||
mov ecx, esp ; argv starts just at the current stack top
|
||||
lea edx, [esp+eax*4+4] ; envp = &argv[argc + 1]
|
||||
pop eax // Pop the argument count
|
||||
mov ecx, esp // argv starts just at the current stack top
|
||||
lea edx, [esp+eax*4+4] // envp = &argv[argc + 1]
|
||||
mov edi, [ebx + e_entry]
|
||||
lea esi, [ebx + szElf32_Ehdr + 2*szElf32_Phdr + szl_info]
|
||||
sub edi, esi ; length
|
||||
lea ebx, [2 + ebp] ; f_unfilter, maybe
|
||||
pusha ; (cprLen, cprSrc, f_decpr, xx, f_unf, envp, argv, argc)
|
||||
EXTERN upx_main
|
||||
call upx_main ; Call the UPX main function
|
||||
hlt ; Crash if somehow upx_main does return
|
||||
sub edi, esi // length
|
||||
lea ebx, [2 + ebp] // f_unfilter, maybe
|
||||
pusha // (cprLen, cprSrc, f_decpr, xx, f_unf, envp, argv, argc)
|
||||
.extern upx_main
|
||||
call upx_main // Call the UPX main function
|
||||
hlt // Crash if somehow upx_main does return
|
||||
|
||||
%define __NR_mmap 90
|
||||
#define __NR_mmap 90
|
||||
|
||||
global mmap
|
||||
mmap:
|
||||
mmap: .globl mmap
|
||||
push ebx
|
||||
lea ebx, [2*4 + esp]
|
||||
push byte __NR_mmap
|
||||
push __NR_mmap
|
||||
pop eax
|
||||
int 0x80
|
||||
pop ebx
|
||||
ret
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
// vi:ts=8:et:nowrap
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
/*
|
||||
; l_lx_pti86.asm -- Linux separate ELF PT_INTERP
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
@ -28,24 +29,20 @@
|
||||
; John F. Reiser
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
// CPU 386
|
||||
|
||||
BITS 32
|
||||
SECTION .text
|
||||
CPU 386
|
||||
/*************************************************************************
|
||||
// program entry point
|
||||
// see glibc/sysdeps/i386/elf/start.S
|
||||
**************************************************************************/
|
||||
|
||||
%define jmps jmp short
|
||||
%define jmpn jmp near
|
||||
|
||||
; /*************************************************************************
|
||||
; // program entry point
|
||||
; // see glibc/sysdeps/i386/elf/start.S
|
||||
; **************************************************************************/
|
||||
|
||||
GLOBAL _start
|
||||
;__LXPTI000__
|
||||
_start:
|
||||
;;;; int3
|
||||
section LXPTI000
|
||||
_start: .globl _start
|
||||
//// int3
|
||||
/*
|
||||
;; How to debug this code: Uncomment the 'int3' breakpoint instruction above.
|
||||
;; Build the stubs and upx. Compress a testcase, such as a copy of /bin/date.
|
||||
;; Invoke gdb, and give a 'run' command. Define a single-step macro such as
|
||||
@ -62,12 +59,13 @@ _start:
|
||||
;; end
|
||||
;; Step through the code; remember that <Enter> repeats the previous command.
|
||||
;;
|
||||
call L200 ; push address of get_funf
|
||||
*/
|
||||
call L200 // push address of get_funf
|
||||
get_funf:
|
||||
cmp eax, byte 0x46
|
||||
cmp eax, 0x46
|
||||
mov ecx, unf46
|
||||
je L110
|
||||
cmp eax, byte 0x49
|
||||
cmp eax, 0x49
|
||||
mov ecx, unf49
|
||||
je L110
|
||||
L120:
|
||||
@ -77,66 +75,67 @@ L110:
|
||||
none:
|
||||
ret
|
||||
|
||||
%define M_NRV2B_LE32 2
|
||||
%define M_NRV2D_LE32 5
|
||||
%define M_NRV2E_LE32 8
|
||||
%define M_CL1B_LE32 11
|
||||
%define M_LZMA 14
|
||||
#define M_NRV2B_LE32 2
|
||||
#define M_NRV2D_LE32 5
|
||||
#define M_NRV2E_LE32 8
|
||||
#define M_CL1B_LE32 11
|
||||
#define M_LZMA 14
|
||||
|
||||
L200:
|
||||
call L300 ; push address of get_fexp
|
||||
call L300 // push address of get_fexp
|
||||
get_fexp:
|
||||
cmp eax, byte M_NRV2B_LE32
|
||||
cmp eax, M_NRV2B_LE32
|
||||
mov ecx, nrv2b
|
||||
je L110
|
||||
cmp eax, byte M_NRV2D_LE32
|
||||
cmp eax, M_NRV2D_LE32
|
||||
mov ecx, nrv2d
|
||||
je L110
|
||||
cmp eax, byte M_NRV2E_LE32
|
||||
cmp eax, M_NRV2E_LE32
|
||||
mov ecx, nrv2e
|
||||
je L110
|
||||
cmp eax, byte M_CL1B_LE32
|
||||
cmp eax, M_CL1B_LE32
|
||||
mov ecx, cl1b
|
||||
je L110
|
||||
jmpn L120
|
||||
jmp L120
|
||||
|
||||
; /*************************************************************************
|
||||
; // C callable decompressor
|
||||
; **************************************************************************/
|
||||
;__LXPTI040__
|
||||
/*************************************************************************
|
||||
// C callable decompressor
|
||||
**************************************************************************/
|
||||
section LXPTI040
|
||||
nrv2b:
|
||||
;__LXPTI041__
|
||||
section LXPTI041
|
||||
nrv2d:
|
||||
;__LXPTI042__
|
||||
section LXPTI042
|
||||
nrv2e:
|
||||
;__LXPTI043__
|
||||
section LXPTI043
|
||||
cl1b:
|
||||
|
||||
%define INP dword [esp+8*4+1*4]
|
||||
%define INS dword [esp+8*4+2*4]
|
||||
%define OUTP dword [esp+8*4+3*4]
|
||||
%define OUTS dword [esp+8*4+4*4]
|
||||
#define INP dword [esp+8*4+1*4]
|
||||
#define INS dword [esp+8*4+2*4]
|
||||
#define OUTP dword [esp+8*4+3*4]
|
||||
#define OUTS dword [esp+8*4+4*4]
|
||||
|
||||
;__LXPTI050__
|
||||
section LXPTI050
|
||||
pusha
|
||||
; cld
|
||||
or ebp, byte -1
|
||||
// cld
|
||||
or ebp, -1
|
||||
mov esi, INP
|
||||
mov edi, OUTP
|
||||
;;; align 8
|
||||
// align 8
|
||||
|
||||
%include "arch/i386/nrv2b_d32.ash"
|
||||
%include "arch/i386/nrv2d_d32.ash"
|
||||
%include "arch/i386/nrv2e_d32.ash"
|
||||
%include "arch/i386/cl1_d32.ash"
|
||||
%include "arch/i386/lzma_d.ash"
|
||||
;__LXPTI090__
|
||||
jmpn exp_done
|
||||
;__LXPTI091__
|
||||
; eax is 0 from decompressor code
|
||||
;xor eax, eax ; return code
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
#include "arch/i386/cl1_d32_2.ash"
|
||||
#define db .byte
|
||||
#include "arch/i386/lzma_d_2.ash"
|
||||
section LXPTI090
|
||||
jmp exp_done
|
||||
section LXPTI091
|
||||
// eax is 0 from decompressor code
|
||||
//xor eax, eax ; return code
|
||||
exp_done:
|
||||
; check compressed size
|
||||
// check compressed size
|
||||
mov edx, INP
|
||||
add edx, INS
|
||||
cmp esi, edx
|
||||
@ -144,7 +143,7 @@ exp_done:
|
||||
dec eax
|
||||
.ok:
|
||||
|
||||
; write back the uncompressed size
|
||||
// write back the uncompressed size
|
||||
sub edi, OUTP
|
||||
mov edx, OUTS
|
||||
mov [edx], edi
|
||||
@ -153,18 +152,17 @@ exp_done:
|
||||
popa
|
||||
ret
|
||||
|
||||
%include "arch/i386/macros.ash"
|
||||
cjt32 0
|
||||
ctojr32
|
||||
|
||||
;__LXPTI140__
|
||||
section LXPTI140
|
||||
unf46:
|
||||
;__LXPTI141__
|
||||
section LXPTI141
|
||||
unf49:
|
||||
|
||||
%define CTO8 dword [esp+8*4+3*4]
|
||||
#define CTO8 dword ptr [esp+8*4+3*4]
|
||||
|
||||
;__LXPTI150__
|
||||
section LXPTI150
|
||||
pusha
|
||||
mov edi,INP
|
||||
mov ecx,INS
|
||||
@ -172,18 +170,14 @@ unf49:
|
||||
|
||||
ckt32 edi, dl
|
||||
|
||||
;__LXPTI160__
|
||||
section LXPTI160
|
||||
popa
|
||||
ret
|
||||
|
||||
;__LXPTI200__
|
||||
section LXPTI200
|
||||
L300:
|
||||
|
||||
eof:
|
||||
; __XTHEENDX__
|
||||
section .data
|
||||
dd -1
|
||||
dw eof
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
// vi:ts=8:et:nowrap
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
/*
|
||||
; fold_pti86.asm -- linkage to C code to act as ELF PT_INTERP
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
@ -26,85 +27,84 @@
|
||||
; John F. Reiser
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
// CPU 386
|
||||
|
||||
|
||||
BITS 32
|
||||
SECTION .text
|
||||
CPU 386
|
||||
#define PAGE_SIZE ( 1<<12)
|
||||
|
||||
#define AT_NULL 0
|
||||
#define AT_PHDR 3
|
||||
|
||||
%define PAGE_SIZE ( 1<<12)
|
||||
#define szElf32_Ehdr 0x34
|
||||
#define szElf32_Phdr 8*4
|
||||
#define e_entry (16 + 2*2 + 4)
|
||||
#define p_vaddr 2*4
|
||||
#define p_memsz 5*4
|
||||
#define szb_info 12
|
||||
#define szl_info 12
|
||||
#define szp_info 12
|
||||
#define a_type 0
|
||||
#define a_val 4
|
||||
#define sz_auxv 8
|
||||
|
||||
%define AT_NULL 0
|
||||
%define AT_PHDR 3
|
||||
#define MAP_FIXED 0x10
|
||||
#define MAP_PRIVATE 0x02
|
||||
#define MAP_ANONYMOUS 0x20
|
||||
#define PROT_READ 1
|
||||
#define PROT_WRITE 2
|
||||
#define PROT_EXEC 4
|
||||
#define __NR_mmap 90
|
||||
#define __NR_munmap 91
|
||||
|
||||
%define szElf32_Ehdr 0x34
|
||||
%define szElf32_Phdr 8*4
|
||||
%define e_entry (16 + 2*2 + 4)
|
||||
%define p_vaddr 2*4
|
||||
%define p_memsz 5*4
|
||||
%define szb_info 12
|
||||
%define szl_info 12
|
||||
%define szp_info 12
|
||||
%define a_type 0
|
||||
%define a_val 4
|
||||
%define sz_auxv 8
|
||||
#define OVERHEAD 2048
|
||||
#define MAX_ELF_HDR 512
|
||||
|
||||
%define MAP_FIXED 0x10
|
||||
%define MAP_PRIVATE 0x02
|
||||
%define MAP_ANONYMOUS 0x20
|
||||
%define PROT_READ 1
|
||||
%define PROT_WRITE 2
|
||||
%define PROT_EXEC 4
|
||||
%define __NR_mmap 90
|
||||
%define __NR_munmap 91
|
||||
pop ebp // get_fexp
|
||||
pop ecx // get_funf
|
||||
pop eax // argc
|
||||
lea edi, [4+ 4*eax + esp] // &environ
|
||||
push eax // argc
|
||||
|
||||
%define OVERHEAD 2048
|
||||
%define MAX_ELF_HDR 512
|
||||
|
||||
pop ebp ; get_fexp
|
||||
pop ecx ; get_funf
|
||||
pop eax ; argc
|
||||
lea edi, [4+ 4*eax + esp] ; &environ
|
||||
push eax ; argc
|
||||
|
||||
sub eax,eax ; 0
|
||||
sub eax,eax // 0
|
||||
L310:
|
||||
scasd
|
||||
jne L310
|
||||
scasd ; edi= &Elf32_auxv_t
|
||||
scasd // edi= &Elf32_auxv_t
|
||||
|
||||
mov esi,edi
|
||||
L320:
|
||||
mov eax,[esi] ; a_type
|
||||
cmp eax, byte AT_PHDR
|
||||
mov eax,[esi] // a_type
|
||||
cmp eax, AT_PHDR
|
||||
je L330
|
||||
add esi, byte sz_auxv
|
||||
cmp eax, byte AT_NULL
|
||||
add esi, sz_auxv
|
||||
cmp eax, AT_NULL
|
||||
jne L320
|
||||
L330:
|
||||
mov ebx,[a_val + esi]
|
||||
push ebx ; save &Elf32_Phdr of compressed data
|
||||
push ebx // save &Elf32_Phdr of compressed data
|
||||
|
||||
sub esp, dword MAX_ELF_HDR + OVERHEAD ; working storage
|
||||
sub esp, MAX_ELF_HDR + OVERHEAD // working storage
|
||||
mov edx, esp
|
||||
push ecx ; get_funf 9th param to pti_main
|
||||
lea eax, [2*szElf32_Phdr + szl_info + szp_info + ebx] ; 1st &b_info
|
||||
mov esi, [e_entry + ebx] ; beyond compressed data
|
||||
sub esi, eax ; length of compressed data
|
||||
mov ebx, [ eax] ; length of uncompressed ELF headers
|
||||
mov ecx, [4+ eax] ; length of compressed ELF headers
|
||||
add ecx, byte szb_info
|
||||
pusha ; (AT_table, sz_cpr, get_fexp, &tmp_ehdr, {sz_unc, &tmp}, {sz_cpr, &b1st_info} )
|
||||
EXTERN pti_main
|
||||
call pti_main ; returns entry address
|
||||
add esp, dword 9*4 + MAX_ELF_HDR + OVERHEAD ; remove 9 params, temp space
|
||||
pop ebx ; &Elf32_Phdr
|
||||
push eax ; save entry address
|
||||
push ecx // get_funf 9th param to pti_main
|
||||
lea eax, [2*szElf32_Phdr + szl_info + szp_info + ebx] // 1st &b_info
|
||||
mov esi, [e_entry + ebx] // beyond compressed data
|
||||
sub esi, eax // length of compressed data
|
||||
mov ebx, [ eax] // length of uncompressed ELF headers
|
||||
mov ecx, [4+ eax] // length of compressed ELF headers
|
||||
add ecx, szb_info
|
||||
pusha // (AT_table, sz_cpr, get_fexp, &tmp_ehdr, {sz_unc, &tmp}, {sz_cpr, &b1st_info} )
|
||||
.extern pti_main
|
||||
call pti_main // returns entry address
|
||||
add esp, 9*4 + MAX_ELF_HDR + OVERHEAD // remove 9 params, temp space
|
||||
pop ebx // &Elf32_Phdr
|
||||
push eax // save entry address
|
||||
mov ecx,[p_memsz + ebx]
|
||||
mov ebx,[p_vaddr + ebx]
|
||||
mov eax,__NR_munmap
|
||||
int 0x80 ; unmap compressed data
|
||||
int 0x80 // unmap compressed data
|
||||
|
||||
sub eax,eax
|
||||
sub ecx,ecx
|
||||
@ -113,19 +113,18 @@ EXTERN pti_main
|
||||
sub ebp,ebp
|
||||
sub esi,esi
|
||||
sub edi,edi
|
||||
ret ; goto entry point
|
||||
ret // goto entry point
|
||||
|
||||
%define __NR_mmap 90
|
||||
#define __NR_mmap 90
|
||||
|
||||
global mmap
|
||||
mmap:
|
||||
mmap: .globl mmap
|
||||
push ebx
|
||||
lea ebx, [2*4 + esp]
|
||||
push byte __NR_mmap
|
||||
push __NR_mmap
|
||||
pop eax
|
||||
int 0x80
|
||||
pop ebx
|
||||
ret
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
// vi:ts=8:et:nowrap
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
/*
|
||||
; l_lx_sh86.asm -- Linux program entry point & decompressor (shell script)
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
@ -28,21 +29,21 @@
|
||||
; John F. Reiser
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
|
||||
BITS 32
|
||||
SECTION .text
|
||||
CPU 386
|
||||
// CPU 386
|
||||
|
||||
; /*************************************************************************
|
||||
; // program entry point
|
||||
; // see glibc/sysdeps/i386/elf/start.S
|
||||
; **************************************************************************/
|
||||
/*************************************************************************
|
||||
// program entry point
|
||||
// see glibc/sysdeps/i386/elf/start.S
|
||||
**************************************************************************/
|
||||
|
||||
GLOBAL _start
|
||||
;__LEXEC000__
|
||||
_start:
|
||||
;;;; int3
|
||||
section LEXEC000
|
||||
_start: .globl _start
|
||||
//// int3
|
||||
/*
|
||||
;; How to debug this code: Uncomment the 'int3' breakpoint instruction above.
|
||||
;; Build the stubs and upx. Compress a testcase, such as a copy of /bin/date.
|
||||
;; Invoke gdb, and give a 'run' command. Define a single-step macro such as
|
||||
@ -59,42 +60,43 @@ _start:
|
||||
;; end
|
||||
;; Step through the code; remember that <Enter> repeats the previous command.
|
||||
;;
|
||||
*/
|
||||
|
||||
call main ; push address of decompress subroutine
|
||||
call main // push address of decompress subroutine
|
||||
decompress:
|
||||
|
||||
; /*************************************************************************
|
||||
; // C callable decompressor
|
||||
; **************************************************************************/
|
||||
/*************************************************************************
|
||||
// C callable decompressor
|
||||
**************************************************************************/
|
||||
|
||||
%define INP dword [esp+8*4+4]
|
||||
%define INS dword [esp+8*4+8]
|
||||
%define OUTP dword [esp+8*4+12]
|
||||
%define OUTS dword [esp+8*4+16]
|
||||
#define INP dword [esp+8*4+4]
|
||||
#define INS dword [esp+8*4+8]
|
||||
#define OUTP dword [esp+8*4+12]
|
||||
#define OUTS dword [esp+8*4+16]
|
||||
|
||||
;__LEXEC010__
|
||||
section LEXEC010
|
||||
pusha
|
||||
; cld
|
||||
|
||||
mov esi, INP
|
||||
mov edi, OUTP
|
||||
|
||||
or ebp, byte -1
|
||||
;;; align 8
|
||||
or ebp, -1
|
||||
// .balign 8
|
||||
|
||||
%include "arch/i386/nrv2b_d32.ash"
|
||||
%include "arch/i386/nrv2d_d32.ash"
|
||||
%include "arch/i386/nrv2e_d32.ash"
|
||||
%include "arch/i386/cl1_d32.ash"
|
||||
%include "arch/i386/lzma_d.ash"
|
||||
%include "arch/i386/macros.ash"
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
#include "arch/i386/cl1_d32_2.ash"
|
||||
#define db .byte
|
||||
#include "arch/i386/lzma_d_2.ash"
|
||||
cjt32 0
|
||||
|
||||
;__LEXEC015__
|
||||
; eax is 0 from decompressor code
|
||||
;xor eax, eax ; return code
|
||||
section LEXEC015
|
||||
// eax is 0 from decompressor code
|
||||
//xor eax, eax ; return code
|
||||
|
||||
; check compressed size
|
||||
// check compressed size
|
||||
mov edx, INP
|
||||
add edx, INS
|
||||
cmp esi, edx
|
||||
@ -102,65 +104,61 @@ decompress:
|
||||
dec eax
|
||||
.ok:
|
||||
|
||||
; write back the uncompressed size
|
||||
// write back the uncompressed size
|
||||
sub edi, OUTP
|
||||
mov edx, OUTS
|
||||
mov [edx], edi
|
||||
|
||||
mov [7*4 + esp], eax
|
||||
;__LEXEC017__
|
||||
section LEXEC017
|
||||
popa
|
||||
ret
|
||||
|
||||
;__LEXEC020__
|
||||
section LEXEC020
|
||||
|
||||
%define PAGE_SIZE ( 1<<12)
|
||||
#define PAGE_SIZE ( 1<<12)
|
||||
|
||||
%define MAP_FIXED 0x10
|
||||
%define MAP_PRIVATE 0x02
|
||||
%define MAP_ANONYMOUS 0x20
|
||||
%define PROT_READ 1
|
||||
%define PROT_WRITE 2
|
||||
%define PROT_EXEC 4
|
||||
%define __NR_mmap 90
|
||||
#define MAP_FIXED 0x10
|
||||
#define MAP_PRIVATE 0x02
|
||||
#define MAP_ANONYMOUS 0x20
|
||||
#define PROT_READ 1
|
||||
#define PROT_WRITE 2
|
||||
#define PROT_EXEC 4
|
||||
#define __NR_mmap 90
|
||||
|
||||
%define szElf32_Ehdr 0x34
|
||||
%define szElf32_Phdr 8*4
|
||||
%define e_entry (16 + 2*2 + 4)
|
||||
%define p_memsz 5*4
|
||||
%define szl_info 12
|
||||
%define szp_info 12
|
||||
%define p_filesize 4
|
||||
#define szElf32_Ehdr 0x34
|
||||
#define szElf32_Phdr 8*4
|
||||
#define e_entry (16 + 2*2 + 4)
|
||||
#define p_memsz 5*4
|
||||
#define szl_info 12
|
||||
#define szp_info 12
|
||||
#define p_filesize 4
|
||||
|
||||
; Decompress the rest of this loader, and jump to it
|
||||
// Decompress the rest of this loader, and jump to it
|
||||
main:
|
||||
pop ebp ; &decompress
|
||||
mov eax,0x1400000 ; &Elf32_Ehdr of this stub
|
||||
lea edx,[0x80 + szp_info + eax] ; &cprScript
|
||||
add eax,[p_memsz + szElf32_Ehdr + eax] ; after .text
|
||||
pop ebp // &decompress
|
||||
mov eax,0x1400000 // &Elf32_Ehdr of this stub
|
||||
lea edx,[0x80 + szp_info + eax] // &cprScript
|
||||
add eax,[p_memsz + szElf32_Ehdr + eax] // after .text
|
||||
add eax,PAGE_SIZE -1
|
||||
and eax, -PAGE_SIZE ; round up to next page
|
||||
and eax, 0-PAGE_SIZE // round up to next page
|
||||
|
||||
push byte 0
|
||||
push byte -1
|
||||
push byte MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS
|
||||
push byte PROT_READ | PROT_WRITE
|
||||
push dword [edx] ; sz_unc length
|
||||
push eax ; address
|
||||
push 0
|
||||
push -1
|
||||
push MAP_FIXED | MAP_PRIVATE | MAP_ANONYMOUS
|
||||
push PROT_READ | PROT_WRITE
|
||||
push dword ptr [edx] // sz_unc length
|
||||
push eax // address
|
||||
mov ebx,esp
|
||||
push byte __NR_mmap
|
||||
push __NR_mmap
|
||||
pop eax
|
||||
int 0x80
|
||||
add esp, byte 6*4 ; remove arguments
|
||||
add esp, 6*4 // remove arguments
|
||||
|
||||
lea ebx,[3+ eax] ; space for "-c"
|
||||
; fall into fold [not compressed!]
|
||||
lea ebx,[3+ eax] // space for "-c"
|
||||
// fall into fold [not compressed!]
|
||||
|
||||
eof:
|
||||
; __XTHEENDX__
|
||||
section .data
|
||||
dd -1
|
||||
dw eof
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
// vi:ts=8:et:nowrap
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
/*
|
||||
; fold_sh86.asm -- Linux program entry point & decompressor (shell script)
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
@ -28,151 +29,150 @@
|
||||
; John F. Reiser
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
|
||||
BITS 32
|
||||
SECTION .text
|
||||
CPU 386
|
||||
// CPU 386
|
||||
|
||||
%define PAGE_SIZE ( 1<<12)
|
||||
%define szElf32_Ehdr 0x34
|
||||
%define szElf32_Phdr 8*4
|
||||
%define e_entry (16 + 2*2 + 4)
|
||||
%define szl_info 12
|
||||
%define szp_info 12
|
||||
%define a_type 0
|
||||
%define a_val 4
|
||||
%define sz_auxv 8
|
||||
#define PAGE_SIZE ( 1<<12)
|
||||
#define szElf32_Ehdr 0x34
|
||||
#define szElf32_Phdr 8*4
|
||||
#define e_entry (16 + 2*2 + 4)
|
||||
#define szl_info 12
|
||||
#define szp_info 12
|
||||
#define a_type 0
|
||||
#define a_val 4
|
||||
#define sz_auxv 8
|
||||
|
||||
fold_begin: ; In: %ebx= uncDst; edx= &b_info cprSrc; ebp = &decompress
|
||||
fold_begin: // In: %ebx= uncDst; edx= &b_info cprSrc; ebp = &decompress
|
||||
|
||||
; Move argc,argv,envp down to make room for complete Elf_auxv table.
|
||||
; Linux kernel 2.4.2 and earlier give only AT_HWCAP and AT_PLATFORM
|
||||
; because we have no PT_INTERP. Linux kernel 2.4.5 (and later?)
|
||||
; give not quite everything. It is simpler and smaller code for us
|
||||
; to generate a "complete" table where Elf_auxv[k -1].a_type = k.
|
||||
; ld-linux.so.2 depends on AT_PHDR and AT_ENTRY, for instance
|
||||
// Move argc,argv,envp down to make room for complete Elf_auxv table.
|
||||
// Linux kernel 2.4.2 and earlier give only AT_HWCAP and AT_PLATFORM
|
||||
// because we have no PT_INTERP. Linux kernel 2.4.5 (and later?)
|
||||
// give not quite everything. It is simpler and smaller code for us
|
||||
// to generate a "complete" table where Elf_auxv[k -1].a_type = k.
|
||||
// ld-linux.so.2 depends on AT_PHDR and AT_ENTRY, for instance
|
||||
|
||||
%define AT_NULL 0
|
||||
%define AT_IGNORE 1
|
||||
%define AT_PHDR 3
|
||||
%define AT_NUMBER (5+ 37)
|
||||
; 2002-11-09 glibc-2.2.90 AT_IGNOREPPC==22 plus 5 for future growth
|
||||
; 2006-05-15 glibc-2.4-4 AT_L3_CACHESHAPE==37
|
||||
#define AT_NULL 0
|
||||
#define AT_IGNORE 1
|
||||
#define AT_PHDR 3
|
||||
#define AT_NUMBER (5+ 37)
|
||||
// 2002-11-09 glibc-2.2.90 AT_IGNOREPPC==22 plus 5 for future growth
|
||||
// 2006-05-15 glibc-2.4-4 AT_L3_CACHESHAPE==37
|
||||
|
||||
mov esi, esp
|
||||
sub esp, sz_auxv * AT_NUMBER ; more than 128 bytes
|
||||
sub esp, sz_auxv * AT_NUMBER // more than 128 bytes
|
||||
mov edi, esp
|
||||
do_auxv: ; entry: %esi=src = &argc; %edi=dst. exit: %edi= &AT_NULL
|
||||
; cld
|
||||
do_auxv: // entry: %esi=src = &argc; %edi=dst. exit: %edi= &AT_NULL
|
||||
// cld
|
||||
|
||||
L10: ; move argc+argv
|
||||
L10: // move argc+argv
|
||||
lodsd
|
||||
stosd
|
||||
test eax,eax
|
||||
jne L10
|
||||
|
||||
L20: ; move envp
|
||||
L20: // move envp
|
||||
lodsd
|
||||
stosd
|
||||
test eax,eax
|
||||
jne L20
|
||||
|
||||
; complete Elf_auxv table full of AT_IGNORE
|
||||
push edi ; save base of resulting table
|
||||
inc eax ; convert 0 to AT_IGNORE
|
||||
push byte 2 * (AT_NUMBER -1) ; less than 128
|
||||
// complete Elf_auxv table full of AT_IGNORE
|
||||
push edi // save base of resulting table
|
||||
inc eax // convert 0 to AT_IGNORE
|
||||
push 2 * (AT_NUMBER -1) // less than 128
|
||||
pop ecx
|
||||
rep stosd
|
||||
dec eax ; convert AT_IGNORE into AT_NULL
|
||||
stosd ; terminate Elf_auxv
|
||||
dec eax // convert AT_IGNORE into AT_NULL
|
||||
stosd // terminate Elf_auxv
|
||||
stosd
|
||||
pop edi ; base of resulting table
|
||||
pop edi // base of resulting table
|
||||
|
||||
L30: ; distribute existing Elf32_auxv into new table
|
||||
L30: // distribute existing Elf32_auxv into new table
|
||||
lodsd
|
||||
test eax,eax ; AT_NULL ?
|
||||
xchg eax,ecx ; edx is busy, do not use
|
||||
test eax,eax // AT_NULL ?
|
||||
xchg eax,ecx // edx is busy, do not use
|
||||
lodsd
|
||||
je L40
|
||||
cmp ecx, byte AT_NUMBER
|
||||
cmp ecx, AT_NUMBER
|
||||
jae L30
|
||||
mov [a_type + sz_auxv*(ecx -1) + edi], ecx
|
||||
mov [a_val + sz_auxv*(ecx -1) + edi], eax
|
||||
jmp L30
|
||||
L40:
|
||||
|
||||
%define OVERHEAD 2048
|
||||
%define MAX_ELF_HDR 512
|
||||
#define OVERHEAD 2048
|
||||
#define MAX_ELF_HDR 512
|
||||
|
||||
sub esp, dword MAX_ELF_HDR + OVERHEAD
|
||||
sub esp, MAX_ELF_HDR + OVERHEAD
|
||||
|
||||
xchg eax, ebx ; eax= uncDst
|
||||
mov ecx, [ edx] ; sz_unc
|
||||
mov ebx, [4+ edx] ; sz_cpr
|
||||
mov esi, eax ; extra copy of uncDst
|
||||
pusha ; (AT_table,uncDst,f_decpr,&ehdr,{sz_cpr,cprSrc},{sz_unc,uncDst})
|
||||
EXTERN upx_main
|
||||
call upx_main ; entry = upx_main(...)
|
||||
pop ecx ; junk
|
||||
push eax ; save entry address
|
||||
popa ; edi= entry address; esi= uncDst
|
||||
add esp, dword MAX_ELF_HDR + OVERHEAD ; remove temp space
|
||||
xchg eax, ebx // eax= uncDst
|
||||
mov ecx, [ edx] // sz_unc
|
||||
mov ebx, [4+ edx] // sz_cpr
|
||||
mov esi, eax // extra copy of uncDst
|
||||
pusha // (AT_table,uncDst,f_decpr,&ehdr,{sz_cpr,cprSrc},{sz_unc,uncDst})
|
||||
.extern upx_main
|
||||
call upx_main // entry = upx_main(...)
|
||||
pop ecx // junk
|
||||
push eax // save entry address
|
||||
popa // edi= entry address; esi= uncDst
|
||||
add esp, MAX_ELF_HDR + OVERHEAD // remove temp space
|
||||
|
||||
pop ecx ; argc
|
||||
pop edx ; $0 filename, to become argv[0]
|
||||
push edx ; restore $0 filename
|
||||
pop ecx // argc
|
||||
pop edx // $0 filename, to become argv[0]
|
||||
push edx // restore $0 filename
|
||||
|
||||
inc ecx
|
||||
push esi ; &uncompressed shell script
|
||||
sub esi, byte 3
|
||||
push esi // &uncompressed shell script
|
||||
sub esi, 3
|
||||
|
||||
mov [esi], word 0x632d ; "-c"
|
||||
mov word ptr [esi], 0x632d // "-c"
|
||||
inc ecx
|
||||
push esi ; &"-c"
|
||||
push esi // &"-c"
|
||||
|
||||
inc ecx
|
||||
push edx ; argv[0] is duplicate of $0
|
||||
push edx // argv[0] is duplicate of $0
|
||||
|
||||
push ecx ; new argc
|
||||
push edi ; save entry address
|
||||
push ecx // new argc
|
||||
push edi // save entry address
|
||||
|
||||
; _dl_start and company (ld-linux.so.2) assumes that it has virgin stack,
|
||||
; and does not initialize all its stack local variables to zero.
|
||||
; Ulrich Drepper (drepper@cyngus.com) has refused to fix the bugs.
|
||||
; See GNU wwwgnats libc/1165 .
|
||||
// _dl_start and company (ld-linux.so.2) assumes that it has virgin stack,
|
||||
// and does not initialize all its stack local variables to zero.
|
||||
// Ulrich Drepper (drepper@cyngus.com) has refused to fix the bugs.
|
||||
// See GNU wwwgnats libc/1165 .
|
||||
|
||||
%define N_STKCLR (0x100 + MAX_ELF_HDR + OVERHEAD)/4
|
||||
#define N_STKCLR (0x100 + MAX_ELF_HDR + OVERHEAD)/4
|
||||
lea edi, [esp - 4*N_STKCLR]
|
||||
pusha ; values will be zeroed
|
||||
mov ebx,esp ; save
|
||||
mov esp,edi ; Linux does not grow stack below esp
|
||||
pusha // values will be zeroed
|
||||
mov ebx,esp // save
|
||||
mov esp,edi // Linux does not grow stack below esp
|
||||
mov ecx, N_STKCLR
|
||||
xor eax,eax
|
||||
rep stosd
|
||||
mov esp,ebx ; restore
|
||||
mov esp,ebx // restore
|
||||
|
||||
; Because the decompressed shell script occupies low memory anyway,
|
||||
; there isn't much payback to unmapping the compressed script and
|
||||
; ourselves the stub. We would need a place to put the escape hatch
|
||||
; "int $0x80; popa; ret", and some kernels do not allow execution
|
||||
; on the stack. So, we would have to dirty a page of the shell
|
||||
; or of /lib/ld-linux.so. It's simpler just to omit the unmapping.
|
||||
// Because the decompressed shell script occupies low memory anyway,
|
||||
// there isn't much payback to unmapping the compressed script and
|
||||
// ourselves the stub. We would need a place to put the escape hatch
|
||||
// "int $0x80; popa; ret", and some kernels do not allow execution
|
||||
// on the stack. So, we would have to dirty a page of the shell
|
||||
// or of /lib/ld-linux.so. It's simpler just to omit the unmapping.
|
||||
popa
|
||||
ret
|
||||
|
||||
%define __NR_mmap 90
|
||||
#define __NR_mmap 90
|
||||
|
||||
global mmap
|
||||
mmap:
|
||||
mmap: .globl mmap
|
||||
push ebx
|
||||
lea ebx, [2*4 + esp]
|
||||
push byte __NR_mmap
|
||||
push __NR_mmap
|
||||
pop eax
|
||||
int 0x80
|
||||
pop ebx
|
||||
ret
|
||||
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
// vi:ts=8:et:nowrap
|
||||
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
; <jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#include "arch/i386/macros2.ash"
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
/*
|
||||
; =============
|
||||
@ -67,11 +67,11 @@ section LXMOVEUP
|
||||
// ============= DECOMPRESSION
|
||||
// =============
|
||||
|
||||
//#include "arch/i386/nrv2b_d32.ash"
|
||||
//#include "arch/i386/nrv2d_d32.ash"
|
||||
//#include "arch/i386/nrv2e_d32.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
//#include "arch/i386/lzma_d.ash"
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
#define db .byte
|
||||
#include "arch/i386/lzma_d_2.ash"
|
||||
|
||||
// =============
|
||||
// ============= UNFILTER
|
||||
@ -135,6 +135,6 @@ move_up:
|
||||
or ebp, -1 // decompressor assumption
|
||||
jmp eax // enter moved decompressor
|
||||
|
||||
#include "include/header2.ash"
|
||||
#include "include/header2.ash"
|
||||
|
||||
// vi:ts=8:et:nowrap
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
*/
|
||||
|
||||
|
||||
#include "arch/i386/macros2.ash"
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
// =============
|
||||
// ============= ENTRY POINT
|
||||
@ -124,11 +124,11 @@ section LZCUTPOI
|
||||
// ============= DECOMPRESSION
|
||||
// =============
|
||||
|
||||
//#include "arch/i386/nrv2b_d32.ash"
|
||||
//#include "arch/i386/nrv2d_d32.ash"
|
||||
//#include "arch/i386/nrv2e_d32.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
//#include "arch/i386/lzma_d.ash"
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
#define db .byte
|
||||
#include "arch/i386/lzma_d_2.ash"
|
||||
|
||||
// =============
|
||||
// ============= UNFILTER
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
/*
|
||||
; i386-openbsd.elf-fold.asm -- linkage to C code to process Elf binary
|
||||
;
|
||||
; This file is part of the UPX executable compressor.
|
||||
@ -26,262 +27,249 @@
|
||||
; John F. Reiser
|
||||
; <jreiser@users.sourceforge.net>
|
||||
;
|
||||
*/
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
#define PAGE_SIZE ( 1<<12)
|
||||
#define szElf32_Ehdr 0x34
|
||||
#define szElf32_Phdr 8*4
|
||||
#define e_type 16
|
||||
#define e_entry (16 + 2*2 + 4)
|
||||
#define p_memsz 5*4
|
||||
#define sznote 0x18
|
||||
#define szb_info 12
|
||||
#define szl_info 12
|
||||
#define szp_info 12
|
||||
#define a_type 0
|
||||
#define a_val 4
|
||||
#define sz_auxv 8
|
||||
|
||||
BITS 32
|
||||
SECTION .text
|
||||
CPU 386
|
||||
#define __NR_munmap 73
|
||||
|
||||
%define PAGE_SIZE ( 1<<12)
|
||||
%define szElf32_Ehdr 0x34
|
||||
%define szElf32_Phdr 8*4
|
||||
%define e_type 16
|
||||
%define e_entry (16 + 2*2 + 4)
|
||||
%define p_memsz 5*4
|
||||
%define sznote 0x18
|
||||
%define szb_info 12
|
||||
%define szl_info 12
|
||||
%define szp_info 12
|
||||
%define a_type 0
|
||||
%define a_val 4
|
||||
%define sz_auxv 8
|
||||
// control just falls through, after this part and compiled C code
|
||||
// are uncompressed.
|
||||
|
||||
%define __NR_munmap 73
|
||||
fold_begin: // enter: %ebx= &Elf32_Ehdr of this program
|
||||
// patchLoader will modify to be
|
||||
// dword sz_uncompressed, sz_compressed
|
||||
// byte compressed_data...
|
||||
|
||||
;; control just falls through, after this part and compiled C code
|
||||
;; are uncompressed.
|
||||
// ld-linux.so.2 depends on AT_PHDR and AT_ENTRY, for instance.
|
||||
// Move argc,argv,envp down to make room for Elf_auxv table.
|
||||
// Linux kernel 2.4.2 and earlier give only AT_HWCAP and AT_PLATFORM
|
||||
// because we have no PT_INTERP. Linux kernel 2.4.5 (and later?)
|
||||
// give not quite everything. It is simpler and smaller code for us
|
||||
// to generate a "complete" table where Elf_auxv[k -1].a_type = k.
|
||||
// On second thought, that wastes a lot of stack space (the entire kernel
|
||||
// auxv, plus those slots that remain empty anyway). So try for minimal
|
||||
// space on stack, without too much code, by doing it serially.
|
||||
|
||||
fold_begin: ; enter: %ebx= &Elf32_Ehdr of this program
|
||||
; patchLoader will modify to be
|
||||
; dword sz_uncompressed, sz_compressed
|
||||
; byte compressed_data...
|
||||
#define AT_NULL 0
|
||||
#define AT_IGNORE 1
|
||||
#define AT_PHDR 3
|
||||
#define AT_PHENT 4
|
||||
#define AT_PHNUM 5
|
||||
#define AT_PAGESZ 6
|
||||
#define AT_BASE 7
|
||||
#define AT_ENTRY 9
|
||||
|
||||
; ld-linux.so.2 depends on AT_PHDR and AT_ENTRY, for instance.
|
||||
; Move argc,argv,envp down to make room for Elf_auxv table.
|
||||
; Linux kernel 2.4.2 and earlier give only AT_HWCAP and AT_PLATFORM
|
||||
; because we have no PT_INTERP. Linux kernel 2.4.5 (and later?)
|
||||
; give not quite everything. It is simpler and smaller code for us
|
||||
; to generate a "complete" table where Elf_auxv[k -1].a_type = k.
|
||||
; On second thought, that wastes a lot of stack space (the entire kernel
|
||||
; auxv, plus those slots that remain empty anyway). So try for minimal
|
||||
; space on stack, without too much code, by doing it serially.
|
||||
|
||||
%define AT_NULL 0
|
||||
%define AT_IGNORE 1
|
||||
%define AT_PHDR 3
|
||||
%define AT_PHENT 4
|
||||
%define AT_PHNUM 5
|
||||
%define AT_PAGESZ 6
|
||||
%define AT_BASE 7
|
||||
%define AT_ENTRY 9
|
||||
|
||||
%define ET_DYN 3
|
||||
#define ET_DYN 3
|
||||
|
||||
sub ecx, ecx
|
||||
mov edx, (1<<AT_PHDR) | (1<<AT_PHENT) | (1<<AT_PHNUM) | (1<<AT_PAGESZ) | (1<<AT_BASE) | (1<<AT_ENTRY)
|
||||
mov esi, esp
|
||||
mov edi, esp
|
||||
call do_auxv ; clear bits in edx according to existing auxv slots
|
||||
call do_auxv // clear bits in edx according to existing auxv slots
|
||||
|
||||
mov esi, esp
|
||||
L50:
|
||||
shr edx, 1 ; Carry = bottom bit
|
||||
sbb eax, eax ; -1 or 0
|
||||
sub ecx, eax ; count of 1 bits that remained in edx
|
||||
lea esp, [esp + sz_auxv * eax] ; allocate one auxv slot, if needed
|
||||
shr edx, 1 // Carry = bottom bit
|
||||
sbb eax, eax // -1 or 0
|
||||
sub ecx, eax // count of 1 bits that remained in edx
|
||||
lea esp, [esp + sz_auxv * eax] // allocate one auxv slot, if needed
|
||||
test edx,edx
|
||||
jne L50
|
||||
|
||||
mov edi, esp
|
||||
call do_auxv ; move; fill new auxv slots with AT_IGNORE
|
||||
call do_auxv // move; fill new auxv slots with AT_IGNORE
|
||||
|
||||
%define OVERHEAD 2048
|
||||
%define MAX_ELF_HDR 512
|
||||
#define OVERHEAD 2048
|
||||
#define MAX_ELF_HDR 512
|
||||
|
||||
sub esp, dword MAX_ELF_HDR + OVERHEAD ; alloca
|
||||
push ebx ; start of unmap region (&Elf32_Ehdr of this stub)
|
||||
sub esp, MAX_ELF_HDR + OVERHEAD // alloca
|
||||
push ebx // start of unmap region (&Elf32_Ehdr of this stub)
|
||||
|
||||
; Cannot pre-round .p_memsz because kernel requires PF_W to setup .bss,
|
||||
; but strict SELinux (or PaX, grsecurity) prohibits PF_W with PF_X.
|
||||
mov edx, [p_memsz + szElf32_Ehdr + ebx] ; phdr[0].p_memsz
|
||||
lea edx, [-1 + 2*PAGE_SIZE + edx + ebx] ; 1 page for round, 1 for unfold
|
||||
and edx, -PAGE_SIZE
|
||||
// Cannot pre-round .p_memsz because kernel requires PF_W to setup .bss,
|
||||
// but strict SELinux (or PaX, grsecurity) prohibits PF_W with PF_X.
|
||||
mov edx, [p_memsz + szElf32_Ehdr + ebx] // phdr[0].p_memsz
|
||||
lea edx, [-1 + 2*PAGE_SIZE + edx + ebx] // 1 page for round, 1 for unfold
|
||||
and edx, 0-PAGE_SIZE
|
||||
|
||||
push edx ; end of unmap region
|
||||
sub eax, eax ; 0
|
||||
cmp word [e_type + ebx], byte ET_DYN
|
||||
push edx // end of unmap region
|
||||
sub eax, eax // 0
|
||||
cmp word ptr [e_type + ebx], ET_DYN
|
||||
jne L53
|
||||
xchg eax, edx ; dynbase for ET_DYN; assumes mmap(0, ...) is placed after us!
|
||||
xchg eax, edx // dynbase for ET_DYN; assumes mmap(0, ...) is placed after us!
|
||||
L53:
|
||||
push eax ; dynbase
|
||||
push eax // dynbase
|
||||
|
||||
mov esi, [e_entry + ebx] ; end of compressed data
|
||||
lea eax, [szElf32_Ehdr + 3*szElf32_Phdr + sznote + szl_info + szp_info + ebx] ; 1st &b_info
|
||||
sub esi, eax ; length of compressed data
|
||||
mov ebx, [ eax] ; length of uncompressed ELF headers
|
||||
mov ecx, [4+ eax] ; length of compressed ELF headers
|
||||
add ecx, byte szb_info
|
||||
lea edx, [3*4 + esp] ; &tmp
|
||||
pusha ; (AT_table, sz_cpr, f_expand, &tmp_ehdr, {sz_unc, &tmp}, {sz_cpr, &b1st_info} )
|
||||
inc edi ; swap with above 'pusha' to inhibit auxv_up for PT_INTERP
|
||||
EXTERN upx_main
|
||||
call upx_main ; returns entry address
|
||||
add esp, byte (8 +1)*4 ; remove 8 params from pusha, also dynbase
|
||||
pop ecx ; end of unmap region
|
||||
pop ebx ; start of unmap region (&Elf32_Ehdr of this stub)
|
||||
add esp, dword MAX_ELF_HDR + OVERHEAD ; un-alloca
|
||||
mov esi, [e_entry + ebx] // end of compressed data
|
||||
lea eax, [szElf32_Ehdr + 3*szElf32_Phdr + sznote + szl_info + szp_info + ebx] // 1st &b_info
|
||||
sub esi, eax // length of compressed data
|
||||
mov ebx, [ eax] // length of uncompressed ELF headers
|
||||
mov ecx, [4+ eax] // length of compressed ELF headers
|
||||
add ecx, szb_info
|
||||
lea edx, [3*4 + esp] // &tmp
|
||||
pusha // (AT_table, sz_cpr, f_expand, &tmp_ehdr, {sz_unc, &tmp}, {sz_cpr, &b1st_info} )
|
||||
inc edi // swap with above 'pusha' to inhibit auxv_up for PT_INTERP
|
||||
.extern upx_main
|
||||
call upx_main // returns entry address
|
||||
add esp, (8 +1)*4 // remove 8 params from pusha, also dynbase
|
||||
pop ecx // end of unmap region
|
||||
pop ebx // start of unmap region (&Elf32_Ehdr of this stub)
|
||||
add esp, MAX_ELF_HDR + OVERHEAD // un-alloca
|
||||
|
||||
push eax ; save entry address as ret.addr
|
||||
push byte 0 ; 'leave' uses this to clear ebp
|
||||
mov ebp,esp ; frame
|
||||
push eax // save entry address as ret.addr
|
||||
push 0 // 'leave' uses this to clear ebp
|
||||
mov ebp,esp // frame
|
||||
|
||||
sub ecx, ebx
|
||||
sub eax,eax ; 0, also AT_NULL
|
||||
push ecx ; length to unmap
|
||||
push ebx ; start of unmap region (&Elf32_Ehdr of this stub)
|
||||
push eax ; fake ret.addr
|
||||
sub eax,eax // 0, also AT_NULL
|
||||
push ecx // length to unmap
|
||||
push ebx // start of unmap region (&Elf32_Ehdr of this stub)
|
||||
push eax // fake ret.addr
|
||||
|
||||
dec edi ; auxv table
|
||||
db 0x3c ; "cmpb al, byte ..." like "jmp 1+L60" but 1 byte shorter
|
||||
dec edi // auxv table
|
||||
.byte 0x3c // "cmpb al, ..." like "jmp 1+L60" but 1 byte shorter
|
||||
L60:
|
||||
scasd ; a_un.a_val etc.
|
||||
scasd ; a_type
|
||||
jne L60 ; not AT_NULL
|
||||
; edi now points at [AT_NULL]a_un.a_ptr which contains result of make_hatch()
|
||||
push dword [edi] ; &escape hatch
|
||||
scasd // a_un.a_val etc.
|
||||
scasd // a_type
|
||||
jne L60 // not AT_NULL
|
||||
// edi now points at [AT_NULL]a_un.a_ptr which contains result of make_hatch()
|
||||
push dword ptr [edi] // &escape hatch
|
||||
|
||||
xor edi,edi
|
||||
xor esi,esi
|
||||
xor edx,edx
|
||||
xor ecx,ecx
|
||||
xor ebx,ebx
|
||||
mov al, __NR_munmap ; eax was 0 from L60
|
||||
ret ; goto escape hatch: int 0x80; leave; ret
|
||||
mov al, __NR_munmap // eax was 0 from L60
|
||||
ret // goto escape hatch: int 0x80; leave; ret
|
||||
|
||||
; called twice:
|
||||
; 1st with esi==edi, ecx=0, edx= bitmap of slots needed: just update edx.
|
||||
; 2nd with esi!=edi, ecx= slot_count: move, then append AT_IGNORE slots
|
||||
; entry: esi= src = &argc; edi= dst; ecx= # slots wanted; edx= bits wanted
|
||||
; exit: edi= &auxtab; edx= bits still needed
|
||||
// called twice:
|
||||
// 1st with esi==edi, ecx=0, edx= bitmap of slots needed: just update edx.
|
||||
// 2nd with esi!=edi, ecx= slot_count: move, then append AT_IGNORE slots
|
||||
// entry: esi= src = &argc; edi= dst; ecx= # slots wanted; edx= bits wanted
|
||||
// exit: edi= &auxtab; edx= bits still needed
|
||||
do_auxv:
|
||||
; cld
|
||||
// cld
|
||||
|
||||
L10: ; move argc+argv
|
||||
L10: // move argc+argv
|
||||
lodsd
|
||||
stosd
|
||||
test eax,eax
|
||||
jne L10
|
||||
|
||||
L20: ; move envp
|
||||
L20: // move envp
|
||||
lodsd
|
||||
stosd
|
||||
test eax,eax
|
||||
jne L20
|
||||
|
||||
push edi ; return value
|
||||
L30: ; process auxv
|
||||
lodsd ; a_type
|
||||
push edi // return value
|
||||
L30: // process auxv
|
||||
lodsd // a_type
|
||||
stosd
|
||||
cmp eax, byte 32
|
||||
jae L32 ; prevent aliasing by 'btr' when 32<=a_type
|
||||
btr edx, eax ; no longer need a slot of type eax [Carry only]
|
||||
cmp eax, 32
|
||||
jae L32 // prevent aliasing by 'btr' when 32<=a_type
|
||||
btr edx, eax // no longer need a slot of type eax [Carry only]
|
||||
L32:
|
||||
test eax, eax ; AT_NULL ?
|
||||
test eax, eax // AT_NULL ?
|
||||
lodsd
|
||||
stosd
|
||||
jnz L30 ; a_type != AT_NULL
|
||||
jnz L30 // a_type != AT_NULL
|
||||
|
||||
sub edi, byte 8 ; backup to AT_NULL
|
||||
add ecx, ecx ; two words per auxv
|
||||
inc eax ; convert 0 to AT_IGNORE
|
||||
rep stosd ; allocate and fill
|
||||
dec eax ; convert AT_IGNORE to AT_NULL
|
||||
stosd ; re-terminate with AT_NULL
|
||||
sub edi, 8 // backup to AT_NULL
|
||||
add ecx, ecx // two words per auxv
|
||||
inc eax // convert 0 to AT_IGNORE
|
||||
rep stosd // allocate and fill
|
||||
dec eax // convert AT_IGNORE to AT_NULL
|
||||
stosd // re-terminate with AT_NULL
|
||||
stosd
|
||||
|
||||
pop edi ; &auxtab
|
||||
pop edi // &auxtab
|
||||
ret
|
||||
|
||||
%define __NR_mmap 197
|
||||
%define __NR_syscall 198
|
||||
#define __NR_mmap 197
|
||||
#define __NR_syscall 198
|
||||
|
||||
global mmap
|
||||
mmap:
|
||||
mmap: .globl mmap
|
||||
push ebp
|
||||
mov ebp,esp
|
||||
xor eax,eax ; 0
|
||||
push eax ; convert to 64-bit
|
||||
push dword [7*4+ebp] ; offset
|
||||
push eax ; pad
|
||||
push dword [6*4+ebp] ; fd
|
||||
push dword [5*4+ebp] ; flags
|
||||
push dword [4*4+ebp] ; prot
|
||||
push dword [3*4+ebp] ; len
|
||||
push dword [2*4+ebp] ; addr
|
||||
push eax ; current thread
|
||||
xor eax,eax // 0
|
||||
push eax // convert to 64-bit
|
||||
push dword ptr [7*4+ebp] // offset
|
||||
push eax // pad
|
||||
push dword ptr [6*4+ebp] // fd
|
||||
push dword ptr [5*4+ebp] // flags
|
||||
push dword ptr [4*4+ebp] // prot
|
||||
push dword ptr [3*4+ebp] // len
|
||||
push dword ptr [2*4+ebp] // addr
|
||||
push eax // current thread
|
||||
mov al,__NR_mmap
|
||||
push eax
|
||||
push eax ; fake ret.addr
|
||||
push eax // fake ret.addr
|
||||
mov al,__NR_syscall
|
||||
int 0x80
|
||||
leave
|
||||
ret
|
||||
|
||||
global brk
|
||||
brk:
|
||||
brk: .globl brk
|
||||
ret
|
||||
|
||||
global bkpt
|
||||
bkpt:
|
||||
bkpt: .globl bkpt
|
||||
int3
|
||||
ret
|
||||
|
||||
%define __NR_exit 1
|
||||
%define __NR_read 3
|
||||
%define __NR_write 4
|
||||
%define __NR_open 5
|
||||
%define __NR_close 6
|
||||
%define __NR_munmap 73
|
||||
%define __NR_mprotect 74
|
||||
#define __NR_exit 1
|
||||
#define __NR_read 3
|
||||
#define __NR_write 4
|
||||
#define __NR_open 5
|
||||
#define __NR_close 6
|
||||
#define __NR_munmap 73
|
||||
#define __NR_mprotect 74
|
||||
|
||||
global exit
|
||||
exit:
|
||||
exit: .globl exit
|
||||
mov al,__NR_exit
|
||||
nf_sysgo:
|
||||
movzx eax,al
|
||||
int 0x80
|
||||
ret
|
||||
|
||||
global read
|
||||
read:
|
||||
read: .globl read
|
||||
mov al,__NR_read
|
||||
jmp nf_sysgo
|
||||
|
||||
global write
|
||||
write:
|
||||
write: .globl write
|
||||
mov al,__NR_write
|
||||
jmp nf_sysgo
|
||||
|
||||
global open
|
||||
open:
|
||||
open: .globl open
|
||||
mov al,__NR_open
|
||||
jmp nf_sysgo
|
||||
|
||||
global close
|
||||
close:
|
||||
close: .globl close
|
||||
mov al,__NR_close
|
||||
jmp nf_sysgo
|
||||
|
||||
|
||||
global munmap
|
||||
munmap:
|
||||
munmap: .globl munmap
|
||||
mov al,__NR_munmap
|
||||
jmp nf_sysgo
|
||||
|
||||
global mprotect
|
||||
mprotect:
|
||||
mprotect: .globl mprotect
|
||||
mov al,__NR_mprotect
|
||||
jmp nf_sysgo
|
||||
|
||||
; vi:ts=8:et:nowrap
|
||||
// vi:ts=8:et:nowrap
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
*/
|
||||
|
||||
#define UPX102 1
|
||||
#include "arch/i386/macros2.ash"
|
||||
#include "arch/i386/macros2.ash"
|
||||
|
||||
CPU 386
|
||||
|
||||
@ -57,11 +57,11 @@ section PEMAIN02
|
||||
// ============= DECOMPRESSION
|
||||
// =============
|
||||
|
||||
//#include "arch/i386/nrv2b_d32.ash"
|
||||
//#include "arch/i386/nrv2d_d32.ash"
|
||||
//#include "arch/i386/nrv2e_d32.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
//#include "arch/i386/lzma_d.ash"
|
||||
#include "arch/i386/nrv2b_d32_2.ash"
|
||||
#include "arch/i386/nrv2d_d32_2.ash"
|
||||
#include "arch/i386/nrv2e_d32_2.ash"
|
||||
#define db .byte
|
||||
#include "arch/i386/lzma_d_2.ash"
|
||||
|
||||
// =============
|
||||
section PEMAIN10
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
* John F. Reiser
|
||||
* <jreiser@users.sourceforge.net>
|
||||
*/
|
||||
#include "arch/powerpc/32/regs.h"
|
||||
#include "arch/powerpc/32/ppc_regs.h"
|
||||
|
||||
sz_b_info= 12
|
||||
sz_unc= 0
|
||||
|
||||
@ -29,12 +29,8 @@
|
||||
* <jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#include "arch/powerpc/32/regs.h"
|
||||
|
||||
/*__MACOS000__*/
|
||||
_start: .globl _start
|
||||
call main # must be exactly 1 instruction; link_register= &decompress
|
||||
#include "arch/powerpc/32/nrv2e_d.S"
|
||||
#include "arch/powerpc/32/ppc_regs.h"
|
||||
#define section .section
|
||||
|
||||
sz_b_info= 12
|
||||
sz_unc= 0
|
||||
@ -49,29 +45,77 @@ MAP_PRIVATE= 2
|
||||
MAP_FIXED= 0x10
|
||||
MAP_ANONYMOUS= 0x20
|
||||
|
||||
__NR_mmap= 90
|
||||
|
||||
PAGE_SHIFT= 12
|
||||
PAGE_SIZE = -(~0<<PAGE_SHIFT)
|
||||
|
||||
/* Temporary until we get the buildLoader stuff working ... */
|
||||
.ascii "\n$Id: UPX (C) 1996-2006 the UPX Team. "
|
||||
.asciz "All Rights Reserved. http://upx.sf.net $\n"
|
||||
.p2align 2 # (1<<2)
|
||||
|
||||
/* /usr/include/asm-ppc/unistd.h */
|
||||
__NR_write = 4
|
||||
__NR_exit = 1
|
||||
__NR_mmap = 90
|
||||
|
||||
section ELFMAINX
|
||||
.balign 4
|
||||
_start: .globl _start
|
||||
call main // must be exactly 1 instruction; link_register= &decompress
|
||||
|
||||
/* Returns 0 on success; non-zero on failure. */
|
||||
decompress: // (uchar const *src, size_t lsrc, uchar *dst, size_t &ldst, uint method)
|
||||
|
||||
section NRV_COMMON
|
||||
.balign 4
|
||||
SZ_DLINE=128 # size of data cache line in Apple G5
|
||||
|
||||
/* PowerPC has no 'cmplis': compare logical [unsigned] immediate shifted [by 16] */
|
||||
#define hibit r0 /* holds 0x80000000 during decompress */
|
||||
|
||||
#define src a0
|
||||
#define lsrc a1
|
||||
#define dst a2
|
||||
#define ldst a3 /* Out: actually a reference: &len_dst */
|
||||
#define meth a4
|
||||
|
||||
#define off a4
|
||||
#define len a5
|
||||
#define bits a6
|
||||
#define disp a7
|
||||
|
||||
section NRV2E
|
||||
.balign 4
|
||||
#include "arch/powerpc/32/nrv2e_d.S"
|
||||
|
||||
section NRV2B
|
||||
.balign 4
|
||||
#include "arch/powerpc/32/nrv2b_d.S"
|
||||
|
||||
#include "arch/powerpc/32/lzma_d.S"
|
||||
|
||||
section ELFMAINY
|
||||
.balign 4
|
||||
eof_nrv:
|
||||
#define tmp r0 /* hibit is dead */
|
||||
lwz tmp,0(ldst) // original dst
|
||||
mtlr t3 // return address
|
||||
addi dst,dst,1 // uncorrect for 'stbu'
|
||||
addi src,src,1 // uncorrect for 'lbzu'
|
||||
subf dst,tmp,dst // dst -= tmp; // dst length
|
||||
#undef tmp
|
||||
subf a0,lsrc,src // src -= eof; // return 0: good; else: bad
|
||||
stw dst,0(ldst)
|
||||
ret
|
||||
|
||||
msg_SELinux:
|
||||
call L71
|
||||
call L72
|
||||
L70:
|
||||
.asciz "PROT_EXEC|PROT_WRITE failed.\n"
|
||||
.p2align 2 # (1<<2)
|
||||
L71:
|
||||
li a2,L71 - L70 # length
|
||||
mflr a1 # message text
|
||||
li a0,2 # fd stderr
|
||||
// IDENTSTR goes here
|
||||
|
||||
section ELFMAINZ
|
||||
.balign 4
|
||||
L72:
|
||||
li a2,L71 - L70 // length
|
||||
mflr a1 // message text
|
||||
li a0,2 // fd stderr
|
||||
li 0,__NR_write; sc
|
||||
die:
|
||||
li a0,127
|
||||
@ -79,10 +123,10 @@ die:
|
||||
|
||||
/* Decompress the rest of this loader, and jump to it. */
|
||||
unfold:
|
||||
mflr r30 # &{ b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...}
|
||||
mflr r30 // &{ b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...}
|
||||
|
||||
li a5,0 # off_t
|
||||
li a4,-1 # fd; cater to *BSD for MAP_ANON
|
||||
li a5,0 // off_t
|
||||
li a4,-1 // fd; cater to *BSD for MAP_ANON
|
||||
lwz a0,sz_cpr(r30)
|
||||
li a3,MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS
|
||||
li a2,PROT_READ | PROT_WRITE | PROT_EXEC
|
||||
@ -90,28 +134,28 @@ unfold:
|
||||
add a0,a0,r30
|
||||
li 0,__NR_mmap
|
||||
addi a0,a0,sz_b_info+PAGE_SIZE-1
|
||||
rlwinm a0,a0,0,0,31-PAGE_SHIFT # next page boundary after fold
|
||||
sc; bso- msg_SELinux # Branch if SummaryOverflow (failure)
|
||||
rlwinm a0,a0,0,0,31-PAGE_SHIFT // next page boundary after fold
|
||||
sc; bso- msg_SELinux // Branch if SummaryOverflow (failure)
|
||||
0:
|
||||
mtctr r31
|
||||
lwz r0,sz_unc(r30)
|
||||
lbz meth,b_method(r30)
|
||||
la ldst,31*4(sp) # &do_not_care
|
||||
la ldst,31*4(sp) // &slot on stack
|
||||
stw r0,31*4(sp) // lzma uses for EOF
|
||||
mr dst,a0
|
||||
mtlr a0 # &continuation
|
||||
mtlr a0 // &continuation
|
||||
lwz lsrc,sz_cpr(r30)
|
||||
addi src,r30,sz_b_info
|
||||
bctr # goto decomrpess; return to link register (mmap'ed page)
|
||||
bctr // goto decomrpess; return to link register (mmap'ed page)
|
||||
|
||||
main:
|
||||
stwu r1,-32*4(sp) # allocate space (keeping 0 mod 16), save r1
|
||||
stmw r2,4(sp) # save registers r2 thru r31
|
||||
mflr r31 # &decompress
|
||||
//// teq r0,r0 // debugging
|
||||
stwu r1,-32*4(sp) // allocate space (keeping 0 mod 16), save r1
|
||||
stmw r2,4(sp) // save registers r2 thru r31
|
||||
mflr r31 // &decompress
|
||||
call unfold
|
||||
/* { b_info={sz_unc, sz_cpr, {4 char}}, folded_loader...} */
|
||||
|
||||
eof:
|
||||
/*__XTHEENDX__*/
|
||||
|
||||
/*
|
||||
vi:ts=8:et:nowrap
|
||||
*/
|
||||
|
||||
@ -1,4 +1,7 @@
|
||||
#include "arch/powerpc/32/regs.h"
|
||||
#include "arch/powerpc/32/ppc_regs.h"
|
||||
|
||||
#define szElf32_Ehdr 0x34
|
||||
#define szElf32_Phdr 0x20
|
||||
|
||||
sz_b_info= 12
|
||||
sz_unc= 0
|
||||
@ -8,9 +11,9 @@ sz_l_info= 12
|
||||
sz_p_info= 12
|
||||
|
||||
OVERHEAD= 2048
|
||||
LINKAREA= 4*4 # SysV C linkage area: (sp, lr); but 16-byte align
|
||||
LINKAREA= 4*4 // SysV C linkage area: (sp, lr); but 16-byte align
|
||||
/* In:
|
||||
r31= &decompress; also 8+ (char *)&(offset to {l_info; p_info; b_info})
|
||||
r31= &decompress; also 8+ (char *)&(#bytes which preceed &-8(r31)
|
||||
*/
|
||||
fold_begin:
|
||||
call L90
|
||||
@ -22,9 +25,9 @@ fold_begin:
|
||||
a2= envp
|
||||
a3= auxvp
|
||||
a4= fini
|
||||
sp= ~0xf & (-2*4 + (void *)&argc) # 0(sp): old_sp, pc
|
||||
sp= ~0xf & (-2*4 + (void *)&argc) // 0(sp): old_sp, pc
|
||||
Instead, Linux gives only
|
||||
sp= &{argc,argv...,0,env...,0,auxv...,strings} # 16-byte aligned?
|
||||
sp= &{argc,argv...,0,env...,0,auxv...,strings} // 16-byte aligned?
|
||||
We must figure out the rest, particularly auxvp.
|
||||
*/
|
||||
zfind:
|
||||
@ -32,32 +35,34 @@ zfind:
|
||||
cmpi cr7,t0,0; bne+ cr7,zfind
|
||||
ret
|
||||
L90:
|
||||
mflr a5 # &ppcbxx: f_unfilter
|
||||
lwz a6,0(sp) # sp at execve
|
||||
call zfind # a6= &env
|
||||
call zfind # a6= &Elf32_auxv
|
||||
lwz a1,-8(r31) # total size = offset to {l_info; p_info; b_info}
|
||||
rlwinm r30,a5,0,0,31-12 # r30= &this_page
|
||||
la a2,-OVERHEAD(sp) # &Elf32_Ehdr temporary space
|
||||
mr a4,r31 # &decompress: f_expand
|
||||
subf a0,a1,r31 # &l_info
|
||||
mflr a5 // &ppcbxx: f_unfilter
|
||||
lwz a6,0(sp) // sp at execve
|
||||
call zfind // a6= &env
|
||||
call zfind // a6= &Elf32_auxv
|
||||
lwz a1,-8(r31) // #bytes which preceed -8(r31)
|
||||
rlwinm r30,a5,0,0,31-12 // r30= &this_page
|
||||
mr a4,r31 // &decompress: f_expand
|
||||
subf r29,a1,r31 // 8+ (char *)&our_Elf32_Ehdr
|
||||
la a2,-OVERHEAD(sp) // &Elf32_Ehdr temporary space
|
||||
addi r29,r29,-8 // &our_Elf32_Ehdr
|
||||
addi a1,a1,-(szElf32_Ehdr + 2*szElf32_Phdr)
|
||||
addi a0,r29,(szElf32_Ehdr + 2*szElf32_Phdr) // &{l_info; p_info; b_info}
|
||||
addi sp,sp,-(LINKAREA+OVERHEAD)
|
||||
rlwinm r29,a0,0,0,31-12 # r29= &our_Elf32_Ehdr
|
||||
lwz a3,sz_unc+sz_p_info+sz_l_info(a0) # sz_elf_headers
|
||||
call upx_main # Out: a0= entry
|
||||
/* entry= upx_main(l_info *a0, total_size a1, Elf32_Ehdr *a2, sz_ehdr a3,
|
||||
lwz a3,sz_unc+sz_p_info+sz_l_info(a0) // sz_elf_headers
|
||||
call upx_main // Out: a0= entry
|
||||
/* entry= upx_main(l_info *a0, total_size a1, Elf32_Ehdr *a2, sz_ehdr a3,
|
||||
f_decomp a4, f_unf a5, Elf32_auxv_t *a6)
|
||||
*/
|
||||
mr r31,a0 # save &entry
|
||||
mr r31,a0 // save &entry
|
||||
|
||||
mr a0,r29 # &our_Elf32_Ehdr
|
||||
subf a1,r29,r30 # size
|
||||
call munmap # unmap compressed program; /proc/self/exe disappears
|
||||
mr a0,r29 // &our_Elf32_Ehdr
|
||||
subf a1,r29,r30 // size
|
||||
call munmap // unmap compressed program; /proc/self/exe disappears
|
||||
|
||||
mtlr r31 # entry address
|
||||
lmw r2,4+LINKAREA+OVERHEAD(sp) # restore registers r2 thru r31
|
||||
lwz r1, LINKAREA+OVERHEAD(sp) # restore r1; deallocate space
|
||||
ret # enter /lib/ld.so.1
|
||||
mtlr r31 // entry address
|
||||
lmw r2,4+LINKAREA+OVERHEAD(sp) // restore registers r2 thru r31
|
||||
lwz r1, LINKAREA+OVERHEAD(sp) // restore r1; deallocate space
|
||||
ret // enter /lib/ld.so.1
|
||||
|
||||
SYS_exit= 1
|
||||
SYS_fork= 2
|
||||
@ -75,8 +80,8 @@ mmap: .globl mmap
|
||||
li 0,SYS_mmap
|
||||
sysgo:
|
||||
sc
|
||||
bns+ no_fail # 'bns': branch if No Summary[Overflow]
|
||||
li a0,-1 # failure; IGNORE errno
|
||||
bns+ no_fail // 'bns': branch if No Summary[Overflow]
|
||||
li a0,-1 // failure; IGNORE errno
|
||||
no_fail:
|
||||
ret
|
||||
|
||||
|
||||
@ -139,8 +139,8 @@ ERR_LAB
|
||||
|
||||
if (h.sz_cpr < h.sz_unc) { // Decompress block
|
||||
nrv_uint out_len = h.sz_unc; // EOF for lzma
|
||||
int const j = (*f_decompress)(xi->buf, h.sz_cpr, xo->buf, &out_len,
|
||||
*(int *)(void *)&h.b_method);
|
||||
int const j = (*f_decompress)(xi->buf, h.sz_cpr,
|
||||
xo->buf, &out_len, h.b_method);
|
||||
if (j != 0 || out_len != (nrv_uint)h.sz_unc)
|
||||
err_exit(7);
|
||||
if (h.b_ftid!=0 && f_unf) { // have filter
|
||||
|
||||
Loading…
Reference in New Issue
Block a user