merge
This commit is contained in:
+54
-21
@@ -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);
|
||||
}
|
||||
|
||||
+6
-5
@@ -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();
|
||||
};
|
||||
|
||||
|
||||
+169
-192
@@ -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);
|
||||
|
||||
+14
-13
@@ -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,
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
|
||||
+2
-2
@@ -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);
|
||||
|
||||
+1
-1
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+27
-19
@@ -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
|
||||
|
||||
+747
-195
@@ -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 */
|
||||
};
|
||||
|
||||
+3303
-2863
File diff suppressed because it is too large
Load Diff
+2154
-898
File diff suppressed because it is too large
Load Diff
+2214
-958
File diff suppressed because it is too large
Load Diff
+2261
-1005
File diff suppressed because it is too large
Load Diff
+3328
-2888
File diff suppressed because it is too large
Load Diff
+3382
-686
File diff suppressed because it is too large
Load Diff
+4068
-765
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 */
|
||||
};
|
||||
|
||||
+2654
-631
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 */
|
||||
|
||||
+2213
-957
File diff suppressed because it is too large
Load Diff
+2303
-1047
File diff suppressed because it is too large
Load Diff
+2713
-1457
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 */
|
||||
};
|
||||
|
||||
+112
-111
@@ -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
|
||||
*/
|
||||
*/
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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 */
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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'
|
||||
|
||||
+145
-154
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user