mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
arm64-linux compiles
modified: conf.h modified: linker.cpp modified: linker.h modified: p_elf_enum.h modified: p_lx_elf.cpp modified: p_lx_elf.h modified: packmast.cpp modified: stub/Makefile new file: stub/arm64-linux.shlib-init.h new file: stub/src/arm64-linux.shlib-init.S new file: stub/tmp/arm64-linux.elf-entry.bin.dump new file: stub/tmp/arm64-linux.elf-fold.map new file: stub/tmp/arm64-linux.shlib-init.bin.dump
This commit is contained in:
parent
4e8848eeca
commit
4089cc6e6f
|
@ -403,6 +403,8 @@ private:
|
|||
#define UPX_F_VMLINUX_PPC64LE 40
|
||||
#define UPX_F_DYLIB_PPC64LE 41
|
||||
|
||||
#define UPX_F_LINUX_ELF64_ARM 42
|
||||
|
||||
#define UPX_F_ATARI_TOS 129
|
||||
#define UPX_F_SOLARIS_SPARC 130 // NOT IMPLEMENTED
|
||||
#define UPX_F_MACH_PPC32 131
|
||||
|
|
|
@ -591,6 +591,27 @@ void ElfLinkerAMD64::relocate1(const Relocation *rel, upx_byte *location, upx_ui
|
|||
super::relocate1(rel, location, value, type);
|
||||
}
|
||||
|
||||
void ElfLinkerARM64::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
||||
const char *type) {
|
||||
if (strncmp(type, "R_AARCH64_", 10))
|
||||
return super::relocate1(rel, location, value, type);
|
||||
type += 10;
|
||||
|
||||
if (!strncmp(type, "PREL", 4)) {
|
||||
value -= rel->section->offset + rel->offset;
|
||||
type += 4;
|
||||
}
|
||||
|
||||
if (!strcmp(type, "16"))
|
||||
set_le16(location, get_le16(location) + value);
|
||||
else if (!strncmp(type, "32", 2)) // for "32" and "32S"
|
||||
set_le32(location, get_le32(location) + value);
|
||||
else if (!strcmp(type, "64"))
|
||||
set_le64(location, get_le64(location) + value);
|
||||
else
|
||||
super::relocate1(rel, location, value, type);
|
||||
}
|
||||
|
||||
void ElfLinkerArmBE::relocate1(const Relocation *rel, upx_byte *location, upx_uint64_t value,
|
||||
const char *type) {
|
||||
if (strcmp(type, "R_ARM_PC24") == 0) {
|
||||
|
|
|
@ -160,6 +160,15 @@ protected:
|
|||
const char *type);
|
||||
};
|
||||
|
||||
class ElfLinkerARM64 : public ElfLinker {
|
||||
typedef ElfLinker super;
|
||||
|
||||
protected:
|
||||
virtual void alignCode(unsigned len) { alignWithByte(len, 0x90); }
|
||||
virtual void relocate1(const Relocation *, upx_byte *location, upx_uint64_t value,
|
||||
const char *type);
|
||||
};
|
||||
|
||||
class ElfLinkerArmBE : public ElfLinker {
|
||||
typedef ElfLinker super;
|
||||
|
||||
|
|
|
@ -73,7 +73,8 @@
|
|||
EM_PPC = 20,
|
||||
EM_PPC64 = 21,
|
||||
EM_ARM = 40,
|
||||
EM_X86_64 = 62
|
||||
EM_X86_64 = 62,
|
||||
EM_AARCH64 = 183
|
||||
|
||||
};
|
||||
enum { // e_version
|
||||
|
|
328
src/p_lx_elf.cpp
328
src/p_lx_elf.cpp
|
@ -650,6 +650,11 @@ Linker* PackLinuxElf64amd::newLinker() const
|
|||
return new ElfLinkerAMD64;
|
||||
}
|
||||
|
||||
Linker* PackLinuxElf64arm::newLinker() const
|
||||
{
|
||||
return new ElfLinkerARM64;
|
||||
}
|
||||
|
||||
int const *
|
||||
PackLinuxElf::getCompressionMethods(int method, int level) const
|
||||
{
|
||||
|
@ -696,6 +701,15 @@ PackLinuxElf64amd::getFilters() const
|
|||
return filters;
|
||||
}
|
||||
|
||||
int const *
|
||||
PackLinuxElf64arm::getFilters() const
|
||||
{
|
||||
static const int filters[] = {
|
||||
0x4A,
|
||||
FT_END };
|
||||
return filters;
|
||||
}
|
||||
|
||||
void PackLinuxElf32::patchLoader()
|
||||
{
|
||||
}
|
||||
|
@ -788,10 +802,23 @@ PackLinuxElf64amd::PackLinuxElf64amd(InputFile *f)
|
|||
ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX;
|
||||
}
|
||||
|
||||
PackLinuxElf64arm::PackLinuxElf64arm(InputFile *f)
|
||||
: super(f)
|
||||
{
|
||||
e_machine = Elf64_Ehdr::EM_AARCH64;
|
||||
ei_class = Elf64_Ehdr::ELFCLASS64;
|
||||
ei_data = Elf64_Ehdr::ELFDATA2LSB;
|
||||
ei_osabi = Elf32_Ehdr::ELFOSABI_LINUX;
|
||||
}
|
||||
|
||||
PackLinuxElf64amd::~PackLinuxElf64amd()
|
||||
{
|
||||
}
|
||||
|
||||
PackLinuxElf64arm::~PackLinuxElf64arm()
|
||||
{
|
||||
}
|
||||
|
||||
static unsigned
|
||||
umax(unsigned a, unsigned b)
|
||||
{
|
||||
|
@ -1091,6 +1118,85 @@ PackLinuxElf64amd::defineSymbols(Filter const *)
|
|||
//linker->dumpSymbols(); // debug
|
||||
}
|
||||
|
||||
void
|
||||
PackLinuxElf64arm::defineSymbols(Filter const *)
|
||||
{
|
||||
unsigned const hlen = sz_elf_hdrs + sizeof(l_info) + sizeof(p_info);
|
||||
|
||||
// We want to know if compressed data, plus stub, plus a couple pages,
|
||||
// will fit below the uncompressed program in memory. But we don't
|
||||
// know the final total compressed size yet, so use the uncompressed
|
||||
// size (total over all PT_LOAD64) as an upper bound.
|
||||
unsigned len = 0;
|
||||
upx_uint64_t lo_va_user = ~0ull; // infinity
|
||||
for (int j= e_phnum; --j>=0; ) {
|
||||
if (PT_LOAD64 == get_te32(&phdri[j].p_type)) {
|
||||
len += (unsigned)get_te64(&phdri[j].p_filesz);
|
||||
upx_uint64_t const va = get_te64(&phdri[j].p_vaddr);
|
||||
if (va < lo_va_user) {
|
||||
lo_va_user = va;
|
||||
}
|
||||
}
|
||||
}
|
||||
lsize = /*getLoaderSize()*/ 64 * 1024; // XXX: upper bound; avoid circularity
|
||||
upx_uint64_t lo_va_stub = get_te64(&elfout.phdr[0].p_vaddr);
|
||||
upx_uint64_t adrc;
|
||||
upx_uint64_t adrm;
|
||||
upx_uint64_t adru;
|
||||
upx_uint64_t adrx;
|
||||
unsigned cntc;
|
||||
unsigned lenm;
|
||||
unsigned lenu;
|
||||
len += (7&-lsize) + lsize;
|
||||
is_big = (lo_va_user < (lo_va_stub + len + 2*page_size));
|
||||
if (is_big && ehdri.ET_EXEC==get_te16(&ehdri.e_type)) {
|
||||
set_te64( &elfout.ehdr.e_entry,
|
||||
get_te64(&elfout.ehdr.e_entry) + lo_va_user - lo_va_stub);
|
||||
set_te64(&elfout.phdr[0].p_vaddr, lo_va_user);
|
||||
set_te64(&elfout.phdr[0].p_paddr, lo_va_user);
|
||||
lo_va_stub = lo_va_user;
|
||||
adrc = lo_va_stub;
|
||||
adrm = getbrk(phdri, e_phnum);
|
||||
adru = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||
adrx = adru + hlen;
|
||||
lenm = page_size + len;
|
||||
lenu = page_size + len;
|
||||
cntc = len >> 3; // over-estimate; corrected at runtime
|
||||
}
|
||||
else {
|
||||
adrm = lo_va_stub + len;
|
||||
adrc = adrm;
|
||||
adru = lo_va_stub;
|
||||
adrx = lo_va_stub + hlen;
|
||||
lenm = page_size;
|
||||
lenu = page_size + len;
|
||||
cntc = 0;
|
||||
}
|
||||
adrm = page_mask & (~page_mask + adrm); // round up to page boundary
|
||||
adrc = page_mask & (~page_mask + adrc); // round up to page boundary
|
||||
|
||||
//linker->defineSymbol("ADRX", adrx); // compressed input for eXpansion
|
||||
ACC_UNUSED(adrx);
|
||||
|
||||
// For actual moving, we need the true count, which depends on sz_pack2
|
||||
// and is not yet known. So the runtime stub detects "no move"
|
||||
// if adrm==adrc, and otherwise uses actual sz_pack2 to compute cntc.
|
||||
//linker->defineSymbol("CNTC", cntc); // count for copy
|
||||
ACC_UNUSED(cntc);
|
||||
|
||||
linker->defineSymbol("LENU", lenu); // len for unmap
|
||||
linker->defineSymbol("ADRC", adrc); // addr for copy
|
||||
//linker->defineSymbol("ADRU", adru); // addr for unmap
|
||||
ACC_UNUSED(adru);
|
||||
#define EI_NIDENT 16 /* <elf.h> */
|
||||
linker->defineSymbol("JMPU", EI_NIDENT -4 + lo_va_user); // unmap trampoline
|
||||
#undef EI_NIDENT
|
||||
linker->defineSymbol("LENM", lenm); // len for map
|
||||
linker->defineSymbol("ADRM", adrm); // addr for map
|
||||
|
||||
//linker->dumpSymbols(); // debug
|
||||
}
|
||||
|
||||
static const
|
||||
#include "stub/i386-linux.elf-entry.h"
|
||||
static const
|
||||
|
@ -1339,6 +1445,28 @@ PackLinuxElf64amd::buildLoader(const Filter *ft)
|
|||
stub_amd64_linux_elf_fold, sizeof(stub_amd64_linux_elf_fold), ft);
|
||||
}
|
||||
|
||||
static const
|
||||
#include "stub/arm64-linux.elf-entry.h"
|
||||
static const
|
||||
#include "stub/arm64-linux.elf-fold.h"
|
||||
//static const
|
||||
//#include "stub/arm64-linux.shlib-init.h"
|
||||
|
||||
void
|
||||
PackLinuxElf64arm::buildLoader(const Filter *ft)
|
||||
{
|
||||
if (0!=xct_off) { // shared library
|
||||
abort(); // FIXME
|
||||
//buildLinuxLoader(
|
||||
// stub_arm64_linux_shlib_init, sizeof(stub_arm64_linux_shlib_init),
|
||||
// NULL, 0, ft );
|
||||
//return;
|
||||
}
|
||||
buildLinuxLoader(
|
||||
stub_arm64_linux_elf_entry, sizeof(stub_arm64_linux_elf_entry),
|
||||
stub_arm64_linux_elf_fold, sizeof(stub_arm64_linux_elf_fold), ft);
|
||||
}
|
||||
|
||||
Elf32_Shdr const *PackLinuxElf32::elf_find_section_name(
|
||||
char const *const name
|
||||
) const
|
||||
|
@ -1993,6 +2121,198 @@ proceed: ;
|
|||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
PackLinuxElf64arm::canPack()
|
||||
{
|
||||
union {
|
||||
unsigned char buf[sizeof(Elf64_Ehdr) + 14*sizeof(Elf64_Phdr)];
|
||||
//struct { Elf64_Ehdr ehdr; Elf64_Phdr phdr; } e;
|
||||
} u;
|
||||
COMPILE_TIME_ASSERT(sizeof(u) <= 1024)
|
||||
|
||||
fi->readx(u.buf, sizeof(u.buf));
|
||||
fi->seek(0, SEEK_SET);
|
||||
Elf64_Ehdr const *const ehdr = (Elf64_Ehdr *) u.buf;
|
||||
|
||||
// now check the ELF header
|
||||
if (checkEhdr(ehdr) != 0)
|
||||
return false;
|
||||
|
||||
// additional requirements for linux/elf386
|
||||
if (get_te16(&ehdr->e_ehsize) != sizeof(*ehdr)) {
|
||||
throwCantPack("invalid Ehdr e_ehsize; try '--force-execve'");
|
||||
return false;
|
||||
}
|
||||
if (e_phoff != sizeof(*ehdr)) {// Phdrs not contiguous with Ehdr
|
||||
throwCantPack("non-contiguous Ehdr/Phdr; try '--force-execve'");
|
||||
return false;
|
||||
}
|
||||
|
||||
// The first PT_LOAD64 must cover the beginning of the file (0==p_offset).
|
||||
Elf64_Phdr const *phdr = phdri;
|
||||
for (unsigned j=0; j < e_phnum; ++phdr, ++j) {
|
||||
if (j >= 14)
|
||||
return false;
|
||||
if (phdr->PT_LOAD64 == get_te32(&phdr->p_type)) {
|
||||
load_va = get_te64(&phdr->p_vaddr);
|
||||
upx_uint64_t file_offset = get_te64(&phdr->p_offset);
|
||||
if (~page_mask & file_offset) {
|
||||
if ((~page_mask & load_va) == file_offset) {
|
||||
throwCantPack("Go-language PT_LOAD: try hemfix.c, or try '--force-execve'");
|
||||
// Fixing it inside upx fails because packExtent() reads original file.
|
||||
}
|
||||
else {
|
||||
throwCantPack("invalid Phdr p_offset; try '--force-execve'");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
exetype = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// We want to compress position-independent executable (gcc -pie)
|
||||
// main programs, but compressing a shared library must be avoided
|
||||
// because the result is no longer usable. In theory, there is no way
|
||||
// to tell them apart: both are just ET_DYN. Also in theory,
|
||||
// neither the presence nor the absence of any particular symbol name
|
||||
// can be used to tell them apart; there are counterexamples.
|
||||
// However, we will use the following heuristic suggested by
|
||||
// Peter S. Mazinger <ps.m@gmx.net> September 2005:
|
||||
// If a ET_DYN has __libc_start_main as a global undefined symbol,
|
||||
// then the file is a position-independent executable main program
|
||||
// (that depends on libc.so.6) and is eligible to be compressed.
|
||||
// Otherwise (no __libc_start_main as global undefined): skip it.
|
||||
// Also allow __uClibc_main and __uClibc_start_main .
|
||||
|
||||
if (Elf32_Ehdr::ET_DYN==get_te16(&ehdr->e_type)) {
|
||||
// The DT_STRTAB has no designated length. Read the whole file.
|
||||
alloc_file_image(file_image, file_size);
|
||||
fi->seek(0, SEEK_SET);
|
||||
fi->readx(file_image, file_size);
|
||||
memcpy(&ehdri, ehdr, sizeof(Elf64_Ehdr));
|
||||
phdri= (Elf64_Phdr *)((size_t)e_phoff + file_image); // do not free() !!
|
||||
shdri= (Elf64_Shdr const *)((size_t)e_shoff + file_image); // do not free() !!
|
||||
|
||||
//sec_strndx = &shdri[ehdr->e_shstrndx];
|
||||
//shstrtab = (char const *)(sec_strndx->sh_offset + file_image);
|
||||
sec_dynsym = elf_find_section_type(Elf64_Shdr::SHT_DYNSYM);
|
||||
if (sec_dynsym)
|
||||
sec_dynstr = get_te64(&sec_dynsym->sh_link) + shdri;
|
||||
|
||||
int j= e_phnum;
|
||||
phdr= phdri;
|
||||
for (; --j>=0; ++phdr)
|
||||
if (Elf64_Phdr::PT_DYNAMIC==get_te32(&phdr->p_type)) {
|
||||
dynseg= (Elf64_Dyn const *)(get_te64(&phdr->p_offset) + file_image);
|
||||
break;
|
||||
}
|
||||
// elf_find_dynamic() returns 0 if 0==dynseg.
|
||||
dynstr= (char const *)elf_find_dynamic(Elf64_Dyn::DT_STRTAB);
|
||||
dynsym= (Elf64_Sym const *)elf_find_dynamic(Elf64_Dyn::DT_SYMTAB);
|
||||
|
||||
// Modified 2009-10-10 to detect a ProgramLinkageTable relocation
|
||||
// which references the symbol, because DT_GNU_HASH contains only
|
||||
// defined symbols, and there might be no DT_HASH.
|
||||
|
||||
Elf64_Rela const *
|
||||
rela= (Elf64_Rela const *)elf_find_dynamic(Elf64_Dyn::DT_RELA);
|
||||
Elf64_Rela const *
|
||||
jmprela= (Elf64_Rela const *)elf_find_dynamic(Elf64_Dyn::DT_JMPREL);
|
||||
for ( int sz = elf_unsigned_dynamic(Elf64_Dyn::DT_PLTRELSZ);
|
||||
0 < sz;
|
||||
(sz -= sizeof(Elf64_Rela)), ++jmprela
|
||||
) {
|
||||
unsigned const symnum = get_te64(&jmprela->r_info) >> 32;
|
||||
char const *const symnam = get_te32(&dynsym[symnum].st_name) + dynstr;
|
||||
if (0==strcmp(symnam, "__libc_start_main")
|
||||
|| 0==strcmp(symnam, "__uClibc_main")
|
||||
|| 0==strcmp(symnam, "__uClibc_start_main"))
|
||||
goto proceed;
|
||||
}
|
||||
|
||||
// 2016-10-09 DT_JMPREL is no more (binutils-2.26.1)?
|
||||
// Check the general case, too.
|
||||
for ( int sz = elf_unsigned_dynamic(Elf64_Dyn::DT_RELASZ);
|
||||
0 < sz;
|
||||
(sz -= sizeof(Elf64_Rela)), ++rela
|
||||
) {
|
||||
unsigned const symnum = get_te64(&rela->r_info) >> 32;
|
||||
char const *const symnam = get_te32(&dynsym[symnum].st_name) + dynstr;
|
||||
if (0==strcmp(symnam, "__libc_start_main")
|
||||
|| 0==strcmp(symnam, "__uClibc_main")
|
||||
|| 0==strcmp(symnam, "__uClibc_start_main"))
|
||||
goto proceed;
|
||||
}
|
||||
|
||||
// Heuristic HACK for shared libraries (compare Darwin (MacOS) Dylib.)
|
||||
// If there is an existing DT_INIT, and if everything that the dynamic
|
||||
// linker ld-linux needs to perform relocations before calling DT_INIT
|
||||
// resides below the first SHT_EXECINSTR Section in one PT_LOAD, then
|
||||
// compress from the first executable Section to the end of that PT_LOAD.
|
||||
// We must not alter anything that ld-linux might touch before it calls
|
||||
// the DT_INIT function.
|
||||
//
|
||||
// Obviously this hack requires that the linker script put pieces
|
||||
// into good positions when building the original shared library,
|
||||
// and also requires ld-linux to behave.
|
||||
|
||||
if (elf_find_dynamic(Elf64_Dyn::DT_INIT)) {
|
||||
if (elf_has_dynamic(Elf64_Dyn::DT_TEXTREL)) {
|
||||
throwCantPack("DT_TEXTREL found; re-compile with -fPIC");
|
||||
goto abandon;
|
||||
}
|
||||
Elf64_Shdr const *shdr = shdri;
|
||||
xct_va = ~0ull;
|
||||
for (j= e_shnum; --j>=0; ++shdr) {
|
||||
if (Elf64_Shdr::SHF_EXECINSTR & get_te32(&shdr->sh_flags)) {
|
||||
xct_va = umin64(xct_va, get_te64(&shdr->sh_addr));
|
||||
}
|
||||
}
|
||||
// Rely on 0==elf_unsigned_dynamic(tag) if no such tag.
|
||||
upx_uint64_t const va_gash = elf_unsigned_dynamic(Elf64_Dyn::DT_GNU_HASH);
|
||||
upx_uint64_t const va_hash = elf_unsigned_dynamic(Elf64_Dyn::DT_HASH);
|
||||
if (xct_va < va_gash || (0==va_gash && xct_va < va_hash)
|
||||
|| xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_STRTAB)
|
||||
|| xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_SYMTAB)
|
||||
|| xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_REL)
|
||||
|| xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_RELA)
|
||||
|| xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_JMPREL)
|
||||
|| xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_VERDEF)
|
||||
|| xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_VERSYM)
|
||||
|| xct_va < elf_unsigned_dynamic(Elf64_Dyn::DT_VERNEEDED) ) {
|
||||
throwCantPack("DT_ tag above stub");
|
||||
goto abandon;
|
||||
}
|
||||
for ((shdr= shdri), (j= e_shnum); --j>=0; ++shdr) {
|
||||
upx_uint64_t const sh_addr = get_te64(&shdr->sh_addr);
|
||||
if ( sh_addr==va_gash
|
||||
|| (sh_addr==va_hash && 0==va_gash) ) {
|
||||
shdr= &shdri[get_te32(&shdr->sh_link)]; // the associated SHT_SYMTAB
|
||||
hatch_off = (char *)&ehdri.e_ident[11] - (char *)&ehdri;
|
||||
break;
|
||||
}
|
||||
}
|
||||
ACC_UNUSED(shdr);
|
||||
xct_off = elf_get_offset_from_address(xct_va);
|
||||
goto proceed; // But proper packing depends on checking xct_va.
|
||||
}
|
||||
abandon:
|
||||
return false;
|
||||
proceed: ;
|
||||
}
|
||||
// XXX Theoretically the following test should be first,
|
||||
// but PackUnix::canPack() wants 0!=exetype ?
|
||||
if (!super::canPack())
|
||||
return false;
|
||||
assert(exetype == 1);
|
||||
|
||||
exetype = 0;
|
||||
|
||||
// set options
|
||||
opt->o_unix.blocksize = blocksize = file_size;
|
||||
return true;
|
||||
}
|
||||
|
||||
off_t
|
||||
PackLinuxElf32::getbrk(const Elf32_Phdr *phdr, int nph) const
|
||||
{
|
||||
|
@ -2663,6 +2983,14 @@ void PackLinuxElf64amd::pack1(OutputFile *fo, Filter &ft)
|
|||
generateElfHdr(fo, stub_amd64_linux_elf_fold, getbrk(phdri, e_phnum) );
|
||||
}
|
||||
|
||||
void PackLinuxElf64arm::pack1(OutputFile *fo, Filter &ft)
|
||||
{
|
||||
super::pack1(fo, ft);
|
||||
if (0!=xct_off) // shared library
|
||||
return;
|
||||
generateElfHdr(fo, stub_arm64_linux_elf_fold, getbrk(phdri, e_phnum) );
|
||||
}
|
||||
|
||||
// Determine length of gap between PT_LOAD phdr[k] and closest PT_LOAD
|
||||
// which follows in the file (or end-of-file). Optimize for common case
|
||||
// where the PT_LOAD are adjacent ascending by .p_offset. Assume no overlap.
|
||||
|
|
|
@ -387,6 +387,25 @@ protected:
|
|||
virtual void defineSymbols(Filter const *);
|
||||
};
|
||||
|
||||
class PackLinuxElf64arm : public PackLinuxElf64Le
|
||||
{
|
||||
typedef PackLinuxElf64Le super;
|
||||
public:
|
||||
PackLinuxElf64arm(InputFile *f);
|
||||
virtual ~PackLinuxElf64arm();
|
||||
virtual int getFormat() const { return UPX_F_LINUX_ELF64_ARM; }
|
||||
virtual const char *getName() const { return "linux/arm64"; }
|
||||
virtual const char *getFullName(const options_t *) const { return "arm64-linux.elf"; }
|
||||
virtual const int *getFilters() const;
|
||||
virtual bool canPack();
|
||||
protected:
|
||||
virtual void pack1(OutputFile *, Filter &); // generate executable header
|
||||
//virtual void pack3(OutputFile *, Filter &); // append loader
|
||||
virtual void buildLoader(const Filter *);
|
||||
virtual Linker* newLinker() const;
|
||||
virtual void defineSymbols(Filter const *);
|
||||
};
|
||||
|
||||
|
||||
/*************************************************************************
|
||||
// linux/elf32ppc
|
||||
|
|
|
@ -250,6 +250,9 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
|
|||
if ((p = func(new PackLinuxElf32armBe(f), user)) != NULL)
|
||||
return p;
|
||||
delete p; p = NULL;
|
||||
if ((p = func(new PackLinuxElf64arm(f), user)) != NULL)
|
||||
return p;
|
||||
delete p; p = NULL;
|
||||
if ((p = func(new PackLinuxElf32ppc(f), user)) != NULL)
|
||||
return p;
|
||||
delete p; p = NULL;
|
||||
|
|
|
@ -71,7 +71,6 @@ STUBS += arm.v5a-linux.kernel.vmlinux.h
|
|||
STUBS += arm.v5a-linux.kernel.vmlinuz-head.h
|
||||
STUBS += arm.v5a-linux.kernel.vmlinuz.h
|
||||
STUBS += arm.v5a-linux.shlib-init.h
|
||||
STUBS += arm.v5a-linux.shlib-init.h
|
||||
STUBS += arm.v5t-linux.shlib-init.h
|
||||
STUBS += armeb.v4a-linux.elf-entry.h
|
||||
STUBS += armeb.v4a-linux.elf-fold.h
|
||||
|
@ -79,6 +78,7 @@ STUBS += armeb.v5a-linux.kernel.vmlinux-head.h
|
|||
STUBS += armeb.v5a-linux.kernel.vmlinux.h
|
||||
STUBS += arm64-linux.elf-entry.h
|
||||
STUBS += arm64-linux.elf-fold.h
|
||||
STUBS += arm64-linux.shlib-init.h
|
||||
STUBS += arm64-darwin.macho-entry.h
|
||||
STUBS += arm64-darwin.macho-fold.h
|
||||
STUBS += i086-dos16.com.h
|
||||
|
@ -574,6 +574,20 @@ tmp/arm64-linux.elf-main.o : $(srcdir)/src/$$T.c $(srcdir)/src/arm64-linux.elf-m
|
|||
$(call tc,gcc) -c -Os $< -o $@
|
||||
$(call tc,f-objstrip,$@)
|
||||
|
||||
# /***********************************************************************
|
||||
# // arm64-linux.shlib arm64
|
||||
# ************************************************************************/
|
||||
|
||||
arm64-linux.shlib%.h : tc_list = arm64-linux.elf default
|
||||
arm64-linux.shlib%.h : tc_bfdname = elf64-littleaarch64
|
||||
tc.arm64-linux.shlib-init.objcopy = /usr/bin/aarch64-linux-gnu-objcopy -F elf64-littleaarch64
|
||||
tc.arm64-linux.shlib-init.objdump = /usr/bin/aarch64-linux-gnu-objdump
|
||||
|
||||
arm64-linux.shlib%.h : $(srcdir)/src/$$T.S
|
||||
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // arm.v5a-linux.shlib (arm.v5a)
|
||||
|
|
508
src/stub/arm64-linux.shlib-init.h
Normal file
508
src/stub/arm64-linux.shlib-init.h
Normal file
|
@ -0,0 +1,508 @@
|
|||
/* arm64-linux.shlib-init.h
|
||||
created from arm64-linux.shlib-init.bin, 7492 (0x1d44) bytes
|
||||
|
||||
This file is part of the UPX executable compressor.
|
||||
|
||||
Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
||||
Copyright (C) 1996-2017 Laszlo Molnar
|
||||
Copyright (C) 2000-2017 John F. Reiser
|
||||
All Rights Reserved.
|
||||
|
||||
UPX and the UCL library are free software; you can redistribute them
|
||||
and/or modify them under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING.
|
||||
If not, write to the Free Software Foundation, Inc.,
|
||||
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
<markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||
|
||||
John F. Reiser
|
||||
<jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
|
||||
#define STUB_ARM64_LINUX_SHLIB_INIT_SIZE 7492
|
||||
#define STUB_ARM64_LINUX_SHLIB_INIT_ADLER32 0x8af6b0e7
|
||||
#define STUB_ARM64_LINUX_SHLIB_INIT_CRC32 0xf085e16d
|
||||
|
||||
unsigned char stub_arm64_linux_shlib_init[7492] = {
|
||||
/* 0x0000 */ 127, 69, 76, 70, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0010 */ 1, 0,183, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0020 */ 0, 0, 0, 0, 0, 0, 0, 0,160, 21, 0, 0, 0, 0, 0, 0,
|
||||
/* 0x0030 */ 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 64, 0, 18, 0, 15, 0,
|
||||
/* 0x0040 */ 0, 0, 32,212,253,251,190,169,224, 11, 0,249,227, 19,190,169,
|
||||
/* 0x0050 */ 230, 31, 1,169,224,135,190,169,226, 11, 0,249,253, 3, 0,145,
|
||||
/* 0x0060 */ 0, 0, 0,148,226,143,190,169,254, 11, 0,249, 7, 64, 33,139,
|
||||
/* 0x0070 */ 5, 0,128, 18, 4, 0,176, 82, 25, 0, 0, 20,227, 19,193,168,
|
||||
/* 0x0080 */ 0, 0, 7,203, 66, 0, 3,203,130, 0, 0,185,228, 3, 0,170,
|
||||
/* 0x0090 */ 224, 3, 3,170, 97, 0, 2,139, 2, 0,128,210, 8, 0,176, 82,
|
||||
/* 0x00a0 */ 1, 0, 0,212,192, 3, 95,214,224, 3, 4,170,254,135, 64,248,
|
||||
/* 0x00b0 */ 192, 3, 95,214,132, 0, 4, 43, 68, 0, 0, 52,192, 3, 95,214,
|
||||
/* 0x00c0 */ 4, 20, 64, 56,132, 0, 4, 58,132, 32, 9, 83,132, 0, 4, 43,
|
||||
/* 0x00d0 */ 192, 3, 95,214, 3, 20, 64, 56, 67, 20, 0, 56,246,255,255,151,
|
||||
/* 0x00e0 */ 162,255,255, 84, 33, 0,128, 82, 4, 0, 0, 20, 33, 4, 0, 81,
|
||||
/* 0x00f0 */ 241,255,255,151, 33, 0, 1, 26,239,255,255,151, 33, 0, 1, 26,
|
||||
/* 0x0100 */ 237,255,255,151, 67,255,255, 84, 35, 12, 0,113, 1, 0,128, 82,
|
||||
/* 0x0110 */ 35, 1, 0, 84, 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,
|
||||
/* 0x0120 */ 229,250,255, 52,191, 0, 0,114,165,124, 1, 19,161, 1, 0, 84,
|
||||
/* 0x0130 */ 3, 0, 0, 20,224,255,255,151, 66, 1, 0, 84, 33, 0,128, 82,
|
||||
/* 0x0140 */ 221,255,255,151,226, 0, 0, 84,219,255,255,151, 33, 0, 1, 26,
|
||||
/* 0x0150 */ 217,255,255,151,163,255,255, 84, 33, 16, 0, 17, 4, 0, 0, 20,
|
||||
/* 0x0160 */ 213,255,255,151, 33, 0, 1, 26, 33, 8, 0, 17,191, 0, 20, 49,
|
||||
/* 0x0170 */ 33, 52,129, 26, 67,192, 33,139, 99,240, 95, 56, 67,200,101, 56,
|
||||
/* 0x0180 */ 67, 20, 0, 56, 33, 4, 0,113,161,255,255, 84,212,255,255, 23,
|
||||
/* 0x0190 */ 226,143,190,169,254, 11, 0,249, 7, 64, 33,139, 5, 0,128, 18,
|
||||
/* 0x01a0 */ 4, 0,176, 82, 25, 0, 0, 20,227, 19,193,168, 0, 0, 7,203,
|
||||
/* 0x01b0 */ 66, 0, 3,203,130, 0, 0,185,228, 3, 0,170,224, 3, 3,170,
|
||||
/* 0x01c0 */ 97, 0, 2,139, 2, 0,128, 82, 8, 0,176, 82, 1, 0, 0,212,
|
||||
/* 0x01d0 */ 192, 3, 95,214,224, 3, 4,170,254,135, 64,248,192, 3, 95,214,
|
||||
/* 0x01e0 */ 132, 0, 4, 43, 68, 0, 0, 52,192, 3, 95,214, 4, 20, 64, 56,
|
||||
/* 0x01f0 */ 132, 0, 4, 58,132, 32, 9, 83,132, 0, 4, 43,192, 3, 95,214,
|
||||
/* 0x0200 */ 3, 20, 64, 56, 67, 20, 0, 56,246,255,255,151,162,255,255, 84,
|
||||
/* 0x0210 */ 33, 0,128, 82, 4, 0, 0, 20, 33, 4, 0, 81,241,255,255,151,
|
||||
/* 0x0220 */ 33, 0, 1, 58,239,255,255,151, 33, 0, 1, 58,237,255,255,151,
|
||||
/* 0x0230 */ 67,255,255, 84, 35, 12, 0,113, 1, 0,128, 82, 35, 1, 0, 84,
|
||||
/* 0x0240 */ 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,229,250,255, 52,
|
||||
/* 0x0250 */ 163, 0, 1, 83,165,124, 1, 83, 99, 0, 3, 43, 2, 0, 0, 20,
|
||||
/* 0x0260 */ 224,255,255,151, 33, 0, 1, 58,222,255,255,151, 33, 0, 1, 58,
|
||||
/* 0x0270 */ 225, 0, 0, 84, 33, 0,128, 82,218,255,255,151, 33, 0, 1, 58,
|
||||
/* 0x0280 */ 216,255,255,151,163,255,255, 84, 33, 8, 0, 17, 33, 4, 0, 17,
|
||||
/* 0x0290 */ 191, 0, 20, 49, 33, 52,129, 26, 67, 0, 64, 57, 67,200,101, 56,
|
||||
/* 0x02a0 */ 67, 20, 0, 56, 33, 4, 0,113,161,255,255, 84,215,255,255, 23,
|
||||
/* 0x02b0 */ 1, 64, 33,139,225, 11,190,169,227,123, 1,169, 5, 0,128, 18,
|
||||
/* 0x02c0 */ 4, 0,176, 82, 33, 0, 0, 20,228, 11, 64,249,225,143,193,168,
|
||||
/* 0x02d0 */ 0, 0, 1,203, 66, 0, 3,203,130, 0, 0,185,228, 3, 0,170,
|
||||
/* 0x02e0 */ 224, 3, 3,170, 97, 0, 2,139, 2, 0,128, 82, 8, 0,176, 82,
|
||||
/* 0x02f0 */ 1, 0, 0,212,192, 3, 95,214,224, 3, 4,170,254,135, 64,248,
|
||||
/* 0x0300 */ 192, 3, 95,214,132, 0, 4, 43, 68, 0, 0, 52,192, 3, 95,214,
|
||||
/* 0x0310 */ 4, 20, 64, 56,132, 0, 4, 26,132, 32, 9, 83,132, 0, 4, 43,
|
||||
/* 0x0320 */ 192, 3, 95,214, 33, 0,128, 82,240, 3, 30,170,246,255,255,151,
|
||||
/* 0x0330 */ 33, 0, 1, 58,244,255,255,151,163,255,255, 84, 0, 2, 31,214,
|
||||
/* 0x0340 */ 3, 20, 64, 56, 67, 20, 0, 56,239,255,255,151,162,255,255, 84,
|
||||
/* 0x0350 */ 245,255,255,151, 35, 12, 0,113, 1, 0,128, 82,163, 0, 0, 84,
|
||||
/* 0x0360 */ 5, 20, 64, 56,165, 32, 3, 42,229, 3, 37, 42,229,250,255, 52,
|
||||
/* 0x0370 */ 229,255,255,151, 33, 0, 1, 58,227,255,255,151, 33, 0, 1, 58,
|
||||
/* 0x0380 */ 97, 0, 0, 84,232,255,255,151, 33, 8, 0, 17,191, 0, 52, 49,
|
||||
/* 0x0390 */ 33, 36,129, 26, 67,200,101, 56, 33, 4, 0,113, 67, 20, 0, 56,
|
||||
/* 0x03a0 */ 162,255,255, 84,233,255,255, 23,159, 56, 0,113, 1, 0, 0, 84,
|
||||
/* 0x03b0 */ 226, 15,190,169,253,123, 1,169, 7, 0, 64, 57, 8,192,128, 82,
|
||||
/* 0x03c0 */ 231,124, 3, 83, 8, 33,199, 26,231, 3, 0,145, 8, 1, 58, 17,
|
||||
/* 0x03d0 */ 255, 67, 40,203,104, 0, 64,185,230, 3, 3,170,229, 3, 8, 42,
|
||||
/* 0x03e0 */ 228, 3, 2,170,227, 51, 0,145, 8, 0,128,210,104,132, 0,248,
|
||||
/* 0x03f0 */ 127, 0, 7,235,195,255,255, 84,227, 51, 0,145, 34, 8, 0, 81,
|
||||
/* 0x0400 */ 225, 3, 0,170, 40, 20, 64, 56, 8, 9, 0, 18,232, 75, 0, 57,
|
||||
/* 0x0410 */ 40, 20, 64, 56, 0,125, 4, 83,224, 71, 0, 57, 8, 13, 0, 18,
|
||||
/* 0x0420 */ 232, 67, 0, 57,224, 67, 0,145, 13, 0, 0,148,255, 0, 0,145,
|
||||
/* 0x0430 */ 227, 3, 0, 42,224, 7,193,168, 33, 0, 64,249, 33, 0, 0,139,
|
||||
/* 0x0440 */ 2, 0,128, 82, 8, 0,176, 82, 1, 0, 0,212,192, 3, 95,214,
|
||||
/* 0x0450 */ 224, 3, 3,170,253,123,193,168,192, 3, 95,214,253,123,185,169,
|
||||
/* 0x0460 */ 8,128,128, 82,253, 3, 0,145,243, 83, 1,169,245, 91, 2,169,
|
||||
/* 0x0470 */ 247, 99, 3,169,249,107, 4,169, 19, 60, 64, 41, 14, 8, 64,185,
|
||||
/* 0x0480 */ 11, 8, 64,249,127, 0, 0,185,223, 0, 0,185, 7, 4, 64,185,
|
||||
/* 0x0490 */ 0, 96,128, 82,103, 2, 7, 11, 7, 32,199, 26, 32, 0,128, 82,
|
||||
/* 0x04a0 */ 231,216, 28, 49, 14, 32,206, 26, 0, 32,207, 26,206, 5, 0, 81,
|
||||
/* 0x04b0 */ 15, 4, 0, 81, 0, 0,128,210,160, 0, 0, 84,104,121, 32,120,
|
||||
/* 0x04c0 */ 0, 4, 0,145,255, 0, 0,107,168,255,255, 84, 34, 64, 34,139,
|
||||
/* 0x04d0 */ 27, 0,128, 82,162, 51, 0,249, 28, 0,128, 18, 32, 4, 0,145,
|
||||
/* 0x04e0 */ 42, 24, 0,145, 66, 4, 0,145, 31, 0, 2,235,232, 3, 0,170,
|
||||
/* 0x04f0 */ 32, 32, 0, 84,160, 55, 0,249, 0, 4, 0,145, 31, 0, 10,235,
|
||||
/* 0x0500 */ 7,224, 95, 56,251, 32, 27, 42, 1,255,255, 84,161, 27, 5,169,
|
||||
/* 0x0510 */ 233, 3, 4,170,249, 3, 3,170,165, 37, 0, 52, 55, 0,128, 82,
|
||||
/* 0x0520 */ 26, 1,128, 82,246, 3, 23, 42,245, 3, 23, 42,231, 3, 23, 42,
|
||||
/* 0x0530 */ 10, 0,128, 82, 13, 0,128, 82, 6, 0,128, 82, 84, 3, 19, 75,
|
||||
/* 0x0540 */ 204, 1, 6, 10, 72,109, 28, 83,178,131, 1,145, 0, 0,128, 82,
|
||||
/* 0x0550 */ 129,125, 64,147, 40,192, 40,139, 8,249,127,211, 97, 1, 8,139,
|
||||
/* 0x0560 */ 29, 1, 0,148, 0, 10, 0, 53,224, 1, 6, 10,168, 41,212, 26,
|
||||
/* 0x0570 */ 0, 32,211, 26, 95, 25, 0,113, 8, 0, 8, 11, 0,117, 30, 83,
|
||||
/* 0x0580 */ 8, 0, 8, 75, 8, 93,120,211, 8,217, 28,145,104, 5, 8,139,
|
||||
/* 0x0590 */ 141, 7, 0, 84,192, 0, 7, 75, 34, 0,128, 82, 44,105, 96, 56,
|
||||
/* 0x05a0 */ 4, 0, 0, 20,237, 1, 0, 53, 95,252, 3,113,236, 6, 0, 84,
|
||||
/* 0x05b0 */ 140,121, 31, 83,224, 3, 2, 42,141, 1, 24, 18,178,131, 1,145,
|
||||
/* 0x05c0 */ 161,125, 64,147, 33, 0, 4,145, 33,192, 34,139, 1, 5, 1,139,
|
||||
/* 0x05d0 */ 1, 1, 0,148,226, 3, 0, 42, 98,254, 7, 54,109,254,255, 53,
|
||||
/* 0x05e0 */ 95,252, 3,113, 44, 5, 0, 84, 1,197, 34,139,224, 3, 2, 42,
|
||||
/* 0x05f0 */ 178,131, 1,145,248, 0, 0,148, 31,252, 3,113,226, 3, 0, 42,
|
||||
/* 0x0600 */ 77,255,255, 84, 13, 28, 0, 83, 95, 13, 0,113, 45, 73, 38, 56,
|
||||
/* 0x0610 */ 198, 4, 0, 17, 12, 4, 0, 84, 10, 0,128, 82,191, 0, 6,107,
|
||||
/* 0x0620 */ 8,249,255, 84, 1,224,191, 18,159, 3, 1,107,200, 28, 0, 84,
|
||||
/* 0x0630 */ 162, 7, 70,169, 63, 0, 2,235,224, 21, 0, 84, 40, 4, 0,145,
|
||||
/* 0x0640 */ 168, 55, 0,249,156, 95, 24, 83, 32, 0, 64, 57, 27, 32, 27, 42,
|
||||
/* 0x0650 */ 160, 43, 64,249,243, 83, 65,169, 8, 1, 0,203,160, 47, 64,249,
|
||||
/* 0x0660 */ 40, 3, 0,185,245, 91, 66,169, 6, 0, 0,185, 0, 0,128, 82,
|
||||
/* 0x0670 */ 247, 99, 67,169,249,107, 68,169,253,123,199,168,192, 3, 95,214,
|
||||
/* 0x0680 */ 34, 0,128, 82,217,255,255, 23, 77, 28, 0, 83, 45, 73, 38, 56,
|
||||
/* 0x0690 */ 198, 4, 0, 17, 95, 37, 0,113, 76, 12, 0, 84, 74, 13, 0, 81,
|
||||
/* 0x06a0 */ 223,255,255, 23, 77,125, 64,147,178,131, 1,145,173, 1, 3,145,
|
||||
/* 0x06b0 */ 0, 0,128, 82,173,249,127,211, 97, 1, 13,139,198, 0, 0,148,
|
||||
/* 0x06c0 */ 64, 11, 0, 53, 96, 0,128, 82, 95, 25, 0,113,247, 3, 22, 42,
|
||||
/* 0x06d0 */ 10,192,159, 26,246, 3, 21, 42,120,145, 25,145,245, 3, 7, 42,
|
||||
/* 0x06e0 */ 178,131, 1,145,225, 3, 24,170, 0, 0,128, 82,186, 0, 0,148,
|
||||
/* 0x06f0 */ 96, 12, 0, 53,140,113, 29, 83,232, 0,128, 18,109, 0,128, 82,
|
||||
/* 0x0700 */ 140,125, 64,147,140, 9, 0,145, 12, 7, 12,139, 32, 0,128, 82,
|
||||
/* 0x0710 */ 178,131, 1,145,129, 69, 32,139,175, 0, 0,148,173, 5, 0,113,
|
||||
/* 0x0720 */ 129,255,255, 84, 95, 13, 0,113, 8, 0, 8, 11,236, 5, 0, 84,
|
||||
/* 0x0730 */ 103, 0,128, 82,204, 0,128, 82, 31, 1, 7,107, 32, 0,128, 82,
|
||||
/* 0x0740 */ 7,209,135, 26,231,100, 26, 83,231,124, 64,147,231,192, 6,145,
|
||||
/* 0x0750 */ 231,248,127,211,225, 68, 32,139,178,131, 1,145, 97, 1, 1,139,
|
||||
/* 0x0760 */ 157, 0, 0,148,140, 5, 0,113, 97,255,255, 84, 7, 0, 1, 81,
|
||||
/* 0x0770 */ 74, 29, 0, 17,255, 12, 0,113,236, 3, 7, 42, 45, 3, 0, 84,
|
||||
/* 0x0780 */ 255, 52, 0,113,224, 0, 0, 18,225,124, 1, 19, 7, 0, 31, 50,
|
||||
/* 0x0790 */ 12, 12, 0, 84, 45, 4, 0, 81, 0, 86,128,210,231, 32,205, 26,
|
||||
/* 0x07a0 */ 12,192, 44,203,140, 65, 39,139,108, 5, 12,139,140, 9, 0,209,
|
||||
/* 0x07b0 */ 32, 0,128, 82,248, 3, 0, 42,129,197, 32,139,178,131, 1,145,
|
||||
/* 0x07c0 */ 133, 0, 0,148, 3, 0, 0, 18,225, 0, 24, 42,127, 0, 31,107,
|
||||
/* 0x07d0 */ 39, 16,135, 26,173, 5, 0,113, 24,123, 31, 83,225,254,255, 84,
|
||||
/* 0x07e0 */ 231, 4, 0, 49, 0,242,255, 84,255, 0, 6,107, 0, 9, 0, 17,
|
||||
/* 0x07f0 */ 40, 8, 0, 84,225, 3, 6, 42,194, 0, 7, 75, 0, 4, 0, 81,
|
||||
/* 0x0800 */ 198, 4, 0, 17, 31, 0, 31,107,160, 16, 70,122, 45,105, 98, 56,
|
||||
/* 0x0810 */ 45, 73, 33, 56,225, 3, 6, 42, 8,255,255, 84,128,255,255, 23,
|
||||
/* 0x0820 */ 74, 25, 0, 81,126,255,255, 23,161, 97, 0,145,178,131, 1,145,
|
||||
/* 0x0830 */ 97, 1, 1,139, 0, 0,128, 82,103, 0, 0,148,128, 3, 0, 53,
|
||||
/* 0x0840 */ 1,129, 7,145,178,131, 1,145, 97, 1, 1,139, 98, 0, 0,148,
|
||||
/* 0x0850 */ 64, 9, 0, 53, 6, 5, 0, 52,192, 0, 7, 75, 95, 25, 0,113,
|
||||
/* 0x0860 */ 106, 1,128, 82, 45,105, 96, 56, 32, 1,128, 82, 45, 73, 38, 56,
|
||||
/* 0x0870 */ 74,193,128, 26,198, 4, 0, 17,105,255,255, 23,178,131, 1,145,
|
||||
/* 0x0880 */ 1, 11, 0,145, 0, 0,128, 82, 83, 0, 0,148,232, 3, 0, 42,
|
||||
/* 0x0890 */ 160, 2, 0, 53,128,113, 29, 83,109, 0,128, 82, 0,124, 64,147,
|
||||
/* 0x08a0 */ 0, 8, 2,145, 12, 7, 0,139,153,255,255, 23,161,193, 0,145,
|
||||
/* 0x08b0 */ 178,131, 1,145, 97, 1, 1,139, 0, 0,128, 82, 70, 0, 0,148,
|
||||
/* 0x08c0 */ 64, 6, 0, 53, 95, 25, 0,113,224, 3, 7, 42,106, 1,128, 82,
|
||||
/* 0x08d0 */ 231, 3, 21, 42, 74,193,154, 26,245, 3, 0, 42,120,161, 41,145,
|
||||
/* 0x08e0 */ 128,255,255, 23, 12, 19, 8,145,232, 29,128, 18, 13, 1,128, 82,
|
||||
/* 0x08f0 */ 135,255,255, 23,243, 83, 65,169,245, 91, 66,169,247, 99, 67,169,
|
||||
/* 0x0900 */ 249,107, 68,169, 32, 0,128, 82,253,123,199,168,192, 3, 95,214,
|
||||
/* 0x0910 */ 172, 51, 64,249, 33, 20, 0, 81, 3,224,191, 18,159, 3, 3,107,
|
||||
/* 0x0920 */ 231,120, 31, 83, 40, 1, 0, 84,162, 55, 64,249, 95, 0, 12,235,
|
||||
/* 0x0930 */ 68, 4, 0,145, 0,254,255, 84,164, 55, 0,249,156, 95, 24, 83,
|
||||
/* 0x0940 */ 64, 0, 64, 57, 27, 32, 27, 42,128,127, 1, 83, 31, 0, 27,107,
|
||||
/* 0x0950 */ 252, 3, 0, 42,104, 0, 0, 84,123, 3, 0, 75,231, 0, 0, 50,
|
||||
/* 0x0960 */ 33, 4, 0,113,193,253,255, 84,231,108, 28, 83,108, 17, 25,145,
|
||||
/* 0x0970 */ 141, 0,128, 82,143,255,255, 23,224, 3, 21, 42,245, 3, 7, 42,
|
||||
/* 0x0980 */ 231, 3, 0, 42,208,255,255, 23,161, 33, 1,145,178,131, 1,145,
|
||||
/* 0x0990 */ 97, 1, 1,139, 0, 0,128, 82, 15, 0, 0,148,160, 0, 0, 53,
|
||||
/* 0x09a0 */ 224, 3, 21, 42,245, 3, 22, 42,246, 3, 0, 42,198,255,255, 23,
|
||||
/* 0x09b0 */ 224, 3, 21, 42,245, 3, 23, 42,247, 3, 22, 42,246, 3, 0, 42,
|
||||
/* 0x09c0 */ 193,255,255, 23,168, 55, 64,249, 34,255,255, 23, 6, 0,128, 82,
|
||||
/* 0x09d0 */ 32,255,255, 23, 3,224,191, 18,159, 3, 3,107, 40, 1, 0, 84,
|
||||
/* 0x09e0 */ 68, 14, 64,169,127, 0, 4,235, 32, 3, 0, 84,100, 4, 0,145,
|
||||
/* 0x09f0 */ 68, 6, 0,249,156, 95, 24, 83, 98, 0, 64, 57, 91, 32, 27, 42,
|
||||
/* 0x0a00 */ 35, 0, 64,121,130,127, 11, 83, 66,124, 3, 27, 95, 0, 27,107,
|
||||
/* 0x0a10 */ 8, 1, 0, 84, 0,120, 31, 83, 99, 20, 67, 75,123, 3, 2, 75,
|
||||
/* 0x0a20 */ 156, 3, 2, 75, 35, 0, 0,121, 0, 4, 0, 17,192, 3, 95,214,
|
||||
/* 0x0a30 */ 4, 0,129, 82,252, 3, 2, 42,130, 0, 3, 75, 0,120, 31, 83,
|
||||
/* 0x0a40 */ 99, 20,130, 11, 35, 0, 0,121,192, 3, 95,214, 32, 0,128, 82,
|
||||
/* 0x0a50 */ 192, 3, 95,214,235,123,191,169,232,167,190,169,234, 11, 0,249,
|
||||
/* 0x0a60 */ 230, 31,191,169,227,147,190,169,229, 11, 0,249, 76, 0, 1,139,
|
||||
/* 0x0a70 */ 233, 43, 64,249,231, 47, 64,249,232, 3, 1,170,234, 0, 9,139,
|
||||
/* 0x0a80 */ 11, 16, 0,145, 6, 0, 64, 57, 5, 4, 64, 57, 4, 8, 64, 57,
|
||||
/* 0x0a90 */ 174, 0, 6, 11, 7, 0,128, 18,229, 32,197, 26,229, 3, 37, 42,
|
||||
/* 0x0aa0 */ 228, 32,196, 26,228, 3, 36, 42, 32, 0,128, 82,224, 15, 27,248,
|
||||
/* 0x0ab0 */ 224, 7, 0,185,224, 11, 0,185,224, 15, 0,185,228, 19, 0,185,
|
||||
/* 0x0ac0 */ 229, 23, 0,185,230, 27, 0,185,231, 31, 0,185,232, 19, 0,249,
|
||||
/* 0x0ad0 */ 233, 23, 0,249,234, 27, 0,249,235, 31, 0,249,236, 35, 0,249,
|
||||
/* 0x0ae0 */ 238, 39, 0,249, 6, 0,128, 82,230, 31, 0,185, 2, 96,128, 82,
|
||||
/* 0x0af0 */ 66, 32,206, 26, 66,216, 28, 17,225, 3, 11,170,224,131, 6, 50,
|
||||
/* 0x0b00 */ 0,128, 0,170, 32, 0,129,168, 66, 32, 0,113,204,255,255, 84,
|
||||
/* 0x0b10 */ 0, 21, 0,145,247, 0, 0,148, 31, 0, 8,235,193,255,255, 84,
|
||||
/* 0x0b20 */ 227, 23, 64,249,226, 19, 64,185, 36, 1, 3,203,128, 0, 2, 10,
|
||||
/* 0x0b30 */ 224, 59, 0,185, 0, 16, 6, 11, 97, 1, 0,145,241, 0, 0,148,
|
||||
/* 0x0b40 */ 65, 5, 0, 84,227, 23, 64,185,226, 27, 64,185, 99, 0, 4, 10,
|
||||
/* 0x0b50 */ 224,115, 64, 57, 99, 32,194, 26, 66, 32, 0, 81,226, 3, 2, 75,
|
||||
/* 0x0b60 */ 2, 36,194, 26, 99, 0, 2, 11,106,177, 57,145, 99, 4, 3, 11,
|
||||
/* 0x0b70 */ 32, 0,128, 82, 74, 37, 3,139,223, 28, 0,113,227, 1, 0, 84,
|
||||
/* 0x0b80 */ 225, 3, 64,185, 33, 1, 1,203, 37, 0, 64, 57,165,120, 31, 83,
|
||||
/* 0x0b90 */ 65, 1, 8,145,164, 0, 24, 18, 33, 4, 4,139,219, 0, 0,148,
|
||||
/* 0x0ba0 */ 3, 0, 0, 18,127, 32, 68,107,193, 0, 0, 84, 31, 0, 4,113,
|
||||
/* 0x0bb0 */ 227,254,255, 84, 5, 0, 0, 20,225, 3, 10,170,211, 0, 0,148,
|
||||
/* 0x0bc0 */ 31, 0, 4,113,163,255,255, 84,195, 0,128, 82, 98, 0,128, 82,
|
||||
/* 0x0bd0 */ 223, 40, 0,113, 67, 48,131, 26,223, 16, 0,113,195, 48,131, 26,
|
||||
/* 0x0be0 */ 198, 0, 3, 75, 36, 0, 0, 20, 97, 1, 6,145,196, 0, 0,148,
|
||||
/* 0x0bf0 */ 193, 1, 0, 84,227, 11, 64,185,226, 7, 64,185,225, 3, 64,185,
|
||||
/* 0x0c00 */ 227, 15, 0,185,226, 11, 0,185,225, 7, 0,185,223, 28, 0,113,
|
||||
/* 0x0c10 */ 102, 0,128, 82, 3, 0,128, 82,102, 48,134, 26,106,145, 1,145,
|
||||
/* 0x0c20 */ 74, 1, 24,145, 44, 0, 0, 20, 97, 97, 6,145,180, 0, 0,148,
|
||||
/* 0x0c30 */ 97, 2, 0, 84,227, 59, 64,185, 97,129, 7,145, 96, 16, 6, 11,
|
||||
/* 0x0c40 */ 176, 0, 0,148,193, 3, 0, 84,223, 28, 0,113,102, 1,128, 82,
|
||||
/* 0x0c50 */ 35, 1,128, 82,102, 48,134, 26,227, 43, 64,185,225, 3, 64,185,
|
||||
/* 0x0c60 */ 36, 1, 3, 75,159, 0, 1,107, 3, 19, 0, 84, 32, 1, 1,203,
|
||||
/* 0x0c70 */ 0, 0, 64, 57, 32, 21, 0, 56,127, 0, 0, 20, 97,193, 6,145,
|
||||
/* 0x0c80 */ 159, 0, 0,148,228, 7, 64,185, 64, 1, 0, 84, 97, 33, 7,145,
|
||||
/* 0x0c90 */ 155, 0, 0,148,228, 11, 64,185,128, 0, 0, 84,227, 11, 64,185,
|
||||
/* 0x0ca0 */ 228, 15, 64,185,227, 15, 0,185,227, 7, 64,185,227, 11, 0,185,
|
||||
/* 0x0cb0 */ 225, 3, 64,185,228, 3, 0,185,225, 7, 0,185,223, 28, 0,113,
|
||||
/* 0x0cc0 */ 102, 1,128, 82, 3, 1,128, 82,102, 48,134, 26,106,161, 1,145,
|
||||
/* 0x0cd0 */ 74, 1, 40,145, 65, 1, 0,145,139, 0, 0,148,225, 0, 0, 84,
|
||||
/* 0x0ce0 */ 227, 59, 64,185, 69, 17, 0,145, 2, 0,128, 82,165, 16, 3,139,
|
||||
/* 0x0cf0 */ 4, 1,128, 82, 13, 0, 0, 20, 65, 9, 0,145,130, 0, 0,148,
|
||||
/* 0x0d00 */ 225, 0, 0, 84,227, 59, 64,185, 69, 17, 4,145, 2, 1,128, 82,
|
||||
/* 0x0d10 */ 165, 16, 3,139, 4, 1,128, 82, 4, 0, 0, 20, 69, 17, 8,145,
|
||||
/* 0x0d20 */ 2, 2,128, 82, 4, 32,128, 82,226, 75, 0,185, 32, 0,128, 82,
|
||||
/* 0x0d30 */ 225, 3, 5,170,117, 0, 0,148, 3, 0, 4,107,163,255,255, 84,
|
||||
/* 0x0d40 */ 229, 75, 64,185,165, 0, 3, 11,229, 75, 0,185,225, 3, 64,185,
|
||||
/* 0x0d50 */ 223, 16, 0,113, 98, 7, 0, 84, 99, 0,128, 82,191, 0, 3,107,
|
||||
/* 0x0d60 */ 198, 28, 0, 17,101,128,133, 26,101, 29, 5,139,165,128, 13,145,
|
||||
/* 0x0d70 */ 32, 0,128, 82, 4, 8,128, 82,225, 3, 5,170, 99, 0, 0,148,
|
||||
/* 0x0d80 */ 3, 0, 4,107,163,255,255, 84,227, 59, 0,185,127, 16, 0,113,
|
||||
/* 0x0d90 */ 3, 5, 0, 84,100,124, 1, 83,132, 4, 0, 81, 97, 0, 0, 18,
|
||||
/* 0x0da0 */ 33, 0, 31, 50,127, 56, 0,113,226, 0, 0, 84, 33, 32,196, 26,
|
||||
/* 0x0db0 */ 106,121, 1,145, 35, 0, 3, 75, 74, 1, 20,145, 74, 5, 3,139,
|
||||
/* 0x0dc0 */ 13, 0, 0, 20,132, 16, 0, 81, 66, 0, 0,148,231,124, 1, 83,
|
||||
/* 0x0dd0 */ 131, 1, 7,107,108, 32,140, 26, 33, 0, 1, 26,132, 4, 0,113,
|
||||
/* 0x0de0 */ 65,255,255, 84,106, 17, 1,145, 74, 1, 24,145, 33,108, 28, 83,
|
||||
/* 0x0df0 */ 132, 0,128, 82,225, 3, 0,185, 37, 0,128, 82, 32, 0,128, 82,
|
||||
/* 0x0e00 */ 225, 3, 10,170, 65, 0, 0,148, 31, 0, 0,114,128, 0, 0, 84,
|
||||
/* 0x0e10 */ 225, 3, 64,185, 33, 0, 5, 42,225, 3, 0,185,165,120, 31, 83,
|
||||
/* 0x0e20 */ 132, 4, 0,113,225,254,255, 84,225, 3, 64,185, 2, 0, 0, 20,
|
||||
/* 0x0e30 */ 225, 59, 64,185, 33, 4, 0, 49,225, 3, 0,185,229, 75, 64,185,
|
||||
/* 0x0e40 */ 227, 23, 64,249,165, 8, 0, 17, 35, 1, 3,203, 63, 0, 3,235,
|
||||
/* 0x0e50 */ 200, 3, 0, 84,226, 27, 64,249, 32, 1, 1,203, 0, 0, 64, 57,
|
||||
/* 0x0e60 */ 32, 21, 0, 56, 63, 1, 2,235,226, 0, 0, 84,165, 4, 0,113,
|
||||
/* 0x0e70 */ 65,255,255, 84,224,115, 0, 57,226, 27, 64,249, 63, 1, 2,235,
|
||||
/* 0x0e80 */ 3,229,255, 84, 19, 0, 0,148, 0, 0,128, 82,226, 19, 64,249,
|
||||
/* 0x0e90 */ 3, 1, 2,203,226, 43, 64,249, 67, 0, 0,185,226, 23, 64,249,
|
||||
/* 0x0ea0 */ 35, 1, 2,203,226, 91, 64,249, 67, 0, 0,185,255,227, 1,145,
|
||||
/* 0x0eb0 */ 230, 31, 65,169,228, 23,194,168,234, 47, 65,169,232, 39,194,168,
|
||||
/* 0x0ec0 */ 254,135, 64,248,192, 3, 95,214, 32, 0,128, 82,240,255,255, 23,
|
||||
/* 0x0ed0 */ 3, 32,160, 82,255, 0, 3,107, 67, 0, 0, 84,192, 3, 95,214,
|
||||
/* 0x0ee0 */ 227, 35, 64,249,231, 92, 24, 83,127, 0, 8,235,233,254,255, 84,
|
||||
/* 0x0ef0 */ 3, 21, 64, 56,108, 32, 12, 42,192, 3, 95,214,224, 3, 6, 42,
|
||||
/* 0x0f00 */ 33, 4, 0,139, 0, 0,128, 82, 33, 4, 0,139, 3, 32,160, 82,
|
||||
/* 0x0f10 */ 255, 0, 3,107,226, 3, 30,170, 66, 0, 0, 84,241,255,255,151,
|
||||
/* 0x0f20 */ 35, 0, 64,121,254,124, 11, 83,126,124, 30, 27, 30, 0,129, 82,
|
||||
/* 0x0f30 */ 159, 1, 30,107,162, 0, 0, 84,222, 3, 3, 75,231, 3, 30, 42,
|
||||
/* 0x0f40 */ 99, 20, 94, 11, 4, 0, 0, 20,140, 1, 30, 75,231, 0, 30, 75,
|
||||
/* 0x0f50 */ 99, 20, 67, 75, 0, 0, 0, 58, 35, 0, 0,121, 64, 0, 31,214,
|
||||
/* 0x0f60 */ 194, 3,128, 82, 33, 1, 0, 16, 64, 0,128, 82, 8, 8,128, 82,
|
||||
/* 0x0f70 */ 1, 0, 0,212,192, 3, 95,214,224, 15,128, 82,168, 11,128, 82,
|
||||
/* 0x0f80 */ 1, 0, 0,212,192, 3, 95,214, 80, 82, 79, 84, 95, 69, 88, 69,
|
||||
/* 0x0f90 */ 67,124, 80, 82, 79, 84, 95, 87, 82, 73, 84, 69, 32,102, 97,105,
|
||||
/* 0x0fa0 */ 108,101,100, 46, 10, 0, 0, 0,226, 3, 30,170, 65,208, 0,209,
|
||||
/* 0x0fb0 */ 229, 3, 1,170, 36, 68, 64,184,165, 0, 4,203, 36, 68, 64,184,
|
||||
/* 0x0fc0 */ 164, 0, 4,139,164, 75, 0,185, 36, 68, 64,184,164, 0, 4,139,
|
||||
/* 0x0fd0 */ 228,207, 31,248, 36, 68, 64,184,160, 0, 4, 11, 1, 96, 0, 17,
|
||||
/* 0x0fe0 */ 255, 35, 0,209, 36, 4, 64,185, 33, 48, 0,145, 33, 0, 4,139,
|
||||
/* 0x0ff0 */ 36, 68, 64,184, 5, 44, 12, 83,165,124, 22, 83,132, 8, 5, 11,
|
||||
/* 0x1000 */ 228,207, 31,184, 0, 8, 5, 75,224,207, 31,184,132, 8, 5, 75,
|
||||
/* 0x1010 */ 0, 8, 5, 11,229,207, 31,184, 16, 0, 0,148, 99, 28, 0, 18,
|
||||
/* 0x1020 */ 127, 64, 1,113,129, 1, 0, 84, 33,252, 66,211, 65, 1, 0,180,
|
||||
/* 0x1030 */ 33, 4, 0,209, 2,120, 97,184, 67,120, 26, 83,127, 20, 0,113,
|
||||
/* 0x1040 */ 129, 0, 0, 84, 66, 0, 1, 75, 98, 20, 26, 83, 2,120, 33,184,
|
||||
/* 0x1050 */ 1,255,255,181,192, 3, 95,214,254,207, 31,248, 35, 20, 64, 57,
|
||||
/* 0x1060 */ 227,207, 31,248, 35, 24, 64, 57,227,207, 31,248,228,207, 31,248,
|
||||
/* 0x1070 */ 224,207, 31,248, 36, 68, 64,184,229, 3, 4, 42, 36, 68, 64,184,
|
||||
/* 0x1080 */ 228,207, 31,248,226,207, 31,248,163, 83, 1,209,227,207, 31,248,
|
||||
/* 0x1090 */ 224,207, 31,248,229,207, 31,248,225,207, 31,248, 35, 4, 64,146,
|
||||
/* 0x10a0 */ 165, 12, 0,145,165, 0, 3,139,163, 3, 93,184, 98, 8, 69,139,
|
||||
/* 0x10b0 */ 163,131, 89,184,121, 0, 0,148,163,131, 92,184,119, 0, 0,148,
|
||||
/* 0x10c0 */ 71, 0, 0,148, 4, 0,128,146, 67, 6,128,210, 98, 0,128,210,
|
||||
/* 0x10d0 */ 161,195, 93,248,160,131, 93,248,230, 3, 0,170,200, 27,128, 82,
|
||||
/* 0x10e0 */ 1, 0, 0,212,192, 3, 95,214, 31, 0, 6,235, 64, 0, 0, 84,
|
||||
/* 0x10f0 */ 0, 0, 32,212,165, 3, 93,184,161, 67, 95,248, 47, 0, 0,148,
|
||||
/* 0x1100 */ 226, 15, 65,169,224, 7,194,168,228,135, 64,248,128, 0, 63,214,
|
||||
/* 0x1110 */ 255, 35, 0,145, 11, 0, 0,148,232, 26,128, 82, 1, 0, 0,212,
|
||||
/* 0x1120 */ 192, 3, 95,214,226, 11, 64,249,224,135,193,168,230, 31, 65,169,
|
||||
/* 0x1130 */ 228, 23,194,168,225, 11, 64,249,253,251,193,168, 32, 0, 31,214,
|
||||
/* 0x1140 */ 164,195, 95,184,192, 7, 64,169,128, 4, 0,169,226, 15, 65,169,
|
||||
/* 0x1150 */ 224, 7,194,168,228, 51,193,168, 67, 0, 0,180,128, 0, 63,214,
|
||||
/* 0x1160 */ 224, 3, 64,249,225, 67, 64,248, 2, 0,128,210, 33, 0, 0,139,
|
||||
/* 0x1170 */ 33, 32, 0,145, 8, 0,176, 82, 1, 0, 0,212,192, 3, 95,214,
|
||||
/* 0x1180 */ 224, 7,193,168,162, 0,128,210, 72, 28,128, 82, 1, 0, 0,212,
|
||||
/* 0x1190 */ 192, 3, 95,214,254, 11, 64,249,224,135,193,168,192, 3, 31,214,
|
||||
/* 0x11a0 */ 37,192, 95,184,165, 92, 0, 18,165, 4, 0, 17, 35, 68, 64,184,
|
||||
/* 0x11b0 */ 165, 4, 0, 81, 3, 68, 0,184,191, 8, 0,114,129,255,255, 84,
|
||||
/* 0x11c0 */ 165,124, 3, 83,165, 0, 0, 52, 34, 12,193,168,165, 4, 0,113,
|
||||
/* 0x11d0 */ 2, 12,129,168,165,255,255, 53,192, 3, 95,214,254,207, 31,248,
|
||||
/* 0x11e0 */ 227, 3, 30,170, 45, 0, 0,148, 65,244,126,211, 4, 0,128,146,
|
||||
/* 0x11f0 */ 67, 4,128,210,226, 0,128,210,161,195, 31,248, 0, 0,128,210,
|
||||
/* 0x1200 */ 200, 27,128, 82, 1, 0, 0,212,192, 3, 95,214, 31, 4, 64,177,
|
||||
/* 0x1210 */ 67, 0, 0, 84, 0, 0, 32,212,160, 67, 31,248,161,131, 93,184,
|
||||
/* 0x1220 */ 165, 3, 93,184,229,255,255,151,161,131, 87,184,165,195, 87,184,
|
||||
/* 0x1230 */ 35, 4, 0, 18, 33, 0, 3, 75,165, 0, 3, 11, 99, 0, 0, 11,
|
||||
/* 0x1240 */ 163,131, 23,184,165, 28, 0, 17,165,124, 3, 83,219,255,255,151,
|
||||
/* 0x1250 */ 226, 3, 0,170,161,131, 89,248,160,131, 25,248,209,255,255,151,
|
||||
/* 0x1260 */ 161,131, 92,248,160,131, 28,248,206,255,255,151,225, 71, 64,248,
|
||||
/* 0x1270 */ 224,207, 31,248,203,255,255,151,225, 3, 0,170,224, 3, 2,170,
|
||||
/* 0x1280 */ 2, 0,128,210, 8, 0,176, 82, 1, 0, 0,212,192, 3, 95,214,
|
||||
/* 0x1290 */ 254, 71, 64,248,192, 3, 31,214, 99,192, 95,184, 99, 92, 0, 18,
|
||||
/* 0x12a0 */ 99, 4, 0, 17, 66, 0, 3,139,192, 3, 95,214,102,105,108,101,
|
||||
/* 0x12b0 */ 32,102,111,114,109, 97,116, 32,101,108,102, 54, 52, 45,108,105,
|
||||
/* 0x12c0 */ 116,116,108,101, 97, 97,114, 99,104, 54, 52, 10, 10, 83,101, 99,
|
||||
/* 0x12d0 */ 116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32,
|
||||
/* 0x12e0 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32,
|
||||
/* 0x12f0 */ 32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x1300 */ 32, 32, 32, 32, 32, 76, 77, 65, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x1310 */ 32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32,
|
||||
/* 0x1320 */ 32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48,
|
||||
/* 0x1330 */ 32, 69, 76, 70, 77, 65, 73, 78, 88, 32, 32, 32, 32, 32, 32, 48,
|
||||
/* 0x1340 */ 48, 48, 48, 48, 48, 50, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1350 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
|
||||
/* 0x1360 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
|
||||
/* 0x1370 */ 48, 48, 48, 52, 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78,
|
||||
/* 0x1380 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69,
|
||||
/* 0x1390 */ 65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 78, 82, 86, 95, 72,
|
||||
/* 0x13a0 */ 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x13b0 */ 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x13c0 */ 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x13d0 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 54, 52, 32,
|
||||
/* 0x13e0 */ 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44,
|
||||
/* 0x13f0 */ 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 50, 32, 78, 82,
|
||||
/* 0x1400 */ 86, 95, 84, 65, 73, 76, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48,
|
||||
/* 0x1410 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1420 */ 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1430 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1440 */ 54, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78,
|
||||
/* 0x1450 */ 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 51,
|
||||
/* 0x1460 */ 32, 78, 82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48,
|
||||
/* 0x1470 */ 48, 48, 48, 48, 49, 50, 99, 32, 32, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1480 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,
|
||||
/* 0x1490 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48,
|
||||
/* 0x14a0 */ 48, 48, 48, 54, 52, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78,
|
||||
/* 0x14b0 */ 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10,
|
||||
/* 0x14c0 */ 32, 32, 52, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x14d0 */ 32, 32, 48, 48, 48, 48, 48, 49, 50, 48, 32, 32, 48, 48, 48, 48,
|
||||
/* 0x14e0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
|
||||
/* 0x14f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
|
||||
/* 0x1500 */ 48, 48, 48, 48, 48, 49, 57, 48, 32, 32, 50, 42, 42, 50, 32, 32,
|
||||
/* 0x1510 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78,
|
||||
/* 0x1520 */ 76, 89, 10, 32, 32, 53, 32, 78, 82, 86, 50, 66, 32, 32, 32, 32,
|
||||
/* 0x1530 */ 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,102, 56, 32, 32, 48,
|
||||
/* 0x1540 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||
/* 0x1550 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1560 */ 48, 32, 32, 48, 48, 48, 48, 48, 50, 98, 48, 32, 32, 50, 42, 42,
|
||||
/* 0x1570 */ 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65,
|
||||
/* 0x1580 */ 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 76, 90, 77, 65, 95, 69,
|
||||
/* 0x1590 */ 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 98, 52,
|
||||
/* 0x15a0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x15b0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x15c0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 51, 97, 56, 32, 32,
|
||||
/* 0x15d0 */ 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32,
|
||||
/* 0x15e0 */ 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10,
|
||||
/* 0x15f0 */ 32, 32, 55, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 32, 32,
|
||||
/* 0x1600 */ 32, 32, 48, 48, 48, 48, 48, 53,102, 56, 32, 32, 48, 48, 48, 48,
|
||||
/* 0x1610 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48,
|
||||
/* 0x1620 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32,
|
||||
/* 0x1630 */ 48, 48, 48, 48, 48, 52, 53, 99, 32, 32, 50, 42, 42, 50, 32, 32,
|
||||
/* 0x1640 */ 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78,
|
||||
/* 0x1650 */ 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49,
|
||||
/* 0x1660 */ 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 53, 48, 99, 32, 32, 48,
|
||||
/* 0x1670 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||
/* 0x1680 */ 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1690 */ 48, 32, 32, 48, 48, 48, 48, 48, 97, 53, 52, 32, 32, 50, 42, 42,
|
||||
/* 0x16a0 */ 50, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65,
|
||||
/* 0x16b0 */ 68, 79, 78, 76, 89, 10, 32, 32, 57, 32, 76, 90, 77, 65, 95, 68,
|
||||
/* 0x16c0 */ 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x16d0 */ 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x16e0 */ 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x16f0 */ 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,102, 54, 48, 32, 32,
|
||||
/* 0x1700 */ 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32,
|
||||
/* 0x1710 */ 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 48, 32, 69, 76, 70,
|
||||
/* 0x1720 */ 77, 65, 73, 78, 89, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48,
|
||||
/* 0x1730 */ 48, 52, 54, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1740 */ 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1750 */ 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48,102, 54,
|
||||
/* 0x1760 */ 48, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84, 69, 78, 84,
|
||||
/* 0x1770 */ 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32,
|
||||
/* 0x1780 */ 69, 76, 70, 77, 65, 73, 78, 90, 32, 32, 32, 32, 32, 32, 48, 48,
|
||||
/* 0x1790 */ 48, 48, 48, 51, 48, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x17a0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x17b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48,
|
||||
/* 0x17c0 */ 48,102, 97, 56, 32, 32, 50, 42, 42, 50, 32, 32, 67, 79, 78, 84,
|
||||
/* 0x17d0 */ 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83,
|
||||
/* 0x17e0 */ 89, 77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48,
|
||||
/* 0x17f0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
|
||||
/* 0x1800 */ 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48,
|
||||
/* 0x1810 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1820 */ 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 10, 48, 48, 48,
|
||||
/* 0x1830 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
|
||||
/* 0x1840 */ 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 90, 9, 48,
|
||||
/* 0x1850 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||
/* 0x1860 */ 69, 76, 70, 77, 65, 73, 78, 90, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1870 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
|
||||
/* 0x1880 */ 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48, 48, 48,
|
||||
/* 0x1890 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 69, 76, 70, 77,
|
||||
/* 0x18a0 */ 65, 73, 78, 88, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x18b0 */ 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82,
|
||||
/* 0x18c0 */ 86, 95, 72, 69, 65, 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x18d0 */ 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 95, 72, 69, 65, 68,
|
||||
/* 0x18e0 */ 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x18f0 */ 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 95, 84, 65,
|
||||
/* 0x1900 */ 73, 76, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1910 */ 48, 48, 48, 32, 78, 82, 86, 95, 84, 65, 73, 76, 10, 48, 48, 48,
|
||||
/* 0x1920 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32,
|
||||
/* 0x1930 */ 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, 48, 48, 48,
|
||||
/* 0x1940 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86,
|
||||
/* 0x1950 */ 50, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1960 */ 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50,
|
||||
/* 0x1970 */ 68, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1980 */ 48, 48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1990 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100,
|
||||
/* 0x19a0 */ 32, 32, 78, 82, 86, 50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x19b0 */ 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 66, 10, 48,
|
||||
/* 0x19c0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||
/* 0x19d0 */ 108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70,
|
||||
/* 0x19e0 */ 48, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x19f0 */ 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 10, 48,
|
||||
/* 0x1a00 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||
/* 0x1a10 */ 108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67,
|
||||
/* 0x1a20 */ 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1a30 */ 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 10, 48,
|
||||
/* 0x1a40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||
/* 0x1a50 */ 108, 32, 32, 32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67,
|
||||
/* 0x1a60 */ 49, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1a70 */ 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 10, 48,
|
||||
/* 0x1a80 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,
|
||||
/* 0x1a90 */ 108, 32, 32, 32, 32,100, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89,
|
||||
/* 0x1aa0 */ 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1ab0 */ 48, 32, 69, 76, 70, 77, 65, 73, 78, 89, 10, 48, 48, 48, 48, 48,
|
||||
/* 0x1ac0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32,
|
||||
/* 0x1ad0 */ 32, 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 88, 9, 48, 48, 48,
|
||||
/* 0x1ae0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 95,115,
|
||||
/* 0x1af0 */ 116, 97,114,116, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1b00 */ 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 78, 82,
|
||||
/* 0x1b10 */ 86, 50, 69, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1b20 */ 48, 49, 50, 99, 32,117, 99,108, 95,110,114,118, 50,101, 95,100,
|
||||
/* 0x1b30 */ 101, 99,111,109,112,114,101,115,115, 95, 56, 10, 48, 48, 48, 48,
|
||||
/* 0x1b40 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32,
|
||||
/* 0x1b50 */ 32, 32, 32, 70, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48,
|
||||
/* 0x1b60 */ 48, 48, 48, 48, 48, 48, 48, 48, 49, 50, 48, 32,117, 99,108, 95,
|
||||
/* 0x1b70 */ 110,114,118, 50,100, 95,100,101, 99,111,109,112,114,101,115,115,
|
||||
/* 0x1b80 */ 95, 56, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1b90 */ 48, 48, 48, 32,103, 32, 32, 32, 32, 32, 70, 32, 78, 82, 86, 50,
|
||||
/* 0x1ba0 */ 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1bb0 */ 102, 56, 32,117, 99,108, 95,110,114,118, 50, 98, 95,100,101, 99,
|
||||
/* 0x1bc0 */ 111,109,112,114,101,115,115, 95, 56, 10, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1bd0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32,
|
||||
/* 0x1be0 */ 32, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48,
|
||||
/* 0x1bf0 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76,
|
||||
/* 0x1c00 */ 122,109, 97, 68,101, 99,111,100,101, 10, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1c10 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,103, 32, 32, 32, 32,
|
||||
/* 0x1c20 */ 32, 32, 32, 69, 76, 70, 77, 65, 73, 78, 89, 9, 48, 48, 48, 48,
|
||||
/* 0x1c30 */ 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 32,101,110,100,
|
||||
/* 0x1c40 */ 95,100,101, 99,111,109,112,114,101,115,115, 10, 10, 82, 69, 76,
|
||||
/* 0x1c50 */ 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32,
|
||||
/* 0x1c60 */ 70, 79, 82, 32, 91, 69, 76, 70, 77, 65, 73, 78, 88, 93, 58, 10,
|
||||
/* 0x1c70 */ 79, 70, 70, 83, 69, 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x1c80 */ 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
/* 0x1c90 */ 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1ca0 */ 48, 48, 48, 48, 48, 48, 48, 50, 48, 32, 82, 95, 65, 65, 82, 67,
|
||||
/* 0x1cb0 */ 72, 54, 52, 95, 67, 65, 76, 76, 50, 54, 32, 32, 69, 76, 70, 77,
|
||||
/* 0x1cc0 */ 65, 73, 78, 90, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78,
|
||||
/* 0x1cd0 */ 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 76, 90,
|
||||
/* 0x1ce0 */ 77, 65, 95, 69, 76, 70, 48, 48, 93, 58, 10, 79, 70, 70, 83, 69,
|
||||
/* 0x1cf0 */ 84, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 84, 89, 80, 69,
|
||||
/* 0x1d00 */ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65,
|
||||
/* 0x1d10 */ 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
|
||||
/* 0x1d20 */ 48, 48, 48, 52, 32, 82, 95, 65, 65, 82, 67, 72, 54, 52, 95, 67,
|
||||
/* 0x1d30 */ 79, 78, 68, 66, 82, 49, 57, 32, 32, 76, 90, 77, 65, 95, 68, 69,
|
||||
/* 0x1d40 */ 67, 51, 48, 10
|
||||
};
|
400
src/stub/src/arm64-linux.shlib-init.S
Normal file
400
src/stub/src/arm64-linux.shlib-init.S
Normal file
|
@ -0,0 +1,400 @@
|
|||
/* arm-linux.shlib-init.S -- Linux Elf shared library init & decompressor
|
||||
*
|
||||
* This file is part of the UPX executable compressor.
|
||||
*
|
||||
* Copyright (C) 1996-2017 Markus Franz Xaver Johannes Oberhumer
|
||||
* Copyright (C) 1996-2017 Laszlo Molnar
|
||||
* Copyright (C) 2000-2017 John F. Reiser
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* UPX and the UCL library are free software; you can redistribute them
|
||||
* and/or modify them under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING.
|
||||
* If not, write to the Free Software Foundation, Inc.,
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Markus F.X.J. Oberhumer Laszlo Molnar
|
||||
* <markus@oberhumer.com> <ezerotven+github@gmail.com>
|
||||
*
|
||||
* John F. Reiser
|
||||
* <jreiser@users.sourceforge.net>
|
||||
*/
|
||||
|
||||
#include "arch/arm/v8a/macros.S"
|
||||
|
||||
sz_Elf64_Ehdr = 16 + 2*2 + 4 + 3*8 + 4 + 6*2
|
||||
sz_Elf64_Phdr = 2*4 + 6*8
|
||||
|
||||
sz_b_info= 12
|
||||
sz_unc= 0
|
||||
sz_cpr= 4
|
||||
b_method= 8
|
||||
sz_l_info= 12
|
||||
sz_p_info= 12
|
||||
|
||||
PROT_READ= 1
|
||||
PROT_WRITE= 2
|
||||
PROT_EXEC= 4
|
||||
|
||||
MAP_PRIVATE= 2
|
||||
MAP_FIXED= 0x10
|
||||
MAP_ANONYMOUS= 0x20
|
||||
|
||||
PAGE_SHIFT= 12
|
||||
PAGE_MASK= (~0<<PAGE_SHIFT)
|
||||
PAGE_SIZE= -PAGE_MASK
|
||||
|
||||
__NR_exit = 93
|
||||
__NR_write = 64
|
||||
__NR_mmap64 = 0xde // 222
|
||||
__NR_munmap = 0xd7 // 215
|
||||
__NR_mprotect = 0xe2 // 226
|
||||
|
||||
__ARM_NR_cacheflush = (1<<31) // FIXME
|
||||
|
||||
#define arg1 x0
|
||||
#define arg2 x1
|
||||
#define arg3 x2
|
||||
#define arg4 x3
|
||||
#define arg5 x4
|
||||
|
||||
#define edi w0
|
||||
#define esi w1
|
||||
#define edx w2
|
||||
#define tmp w3
|
||||
#define eax w4
|
||||
#define ecx w5
|
||||
|
||||
#define rdi x0
|
||||
#define rsi x1
|
||||
#define rdx x2
|
||||
|
||||
#define rax x4
|
||||
#define rcx x5
|
||||
|
||||
#define lr x30
|
||||
#define fp x29
|
||||
|
||||
#define src x0
|
||||
#define len w1
|
||||
#define dst x2
|
||||
#define dstw w2
|
||||
#define tmp w3
|
||||
#define tmpx x3
|
||||
#define bits w4
|
||||
#define off w5
|
||||
|
||||
section ELFMAINX
|
||||
// .long offset(.) // detect relocation
|
||||
// .long offset(user DT_INIT)
|
||||
// .long offset(escape_hatch)
|
||||
// .long offset({p_info; b_info; compressed data})
|
||||
|
||||
_start: .globl _start
|
||||
brk #0 // for debugging
|
||||
PUSH3(x29,x30,x0)
|
||||
PUSH4(arg4,arg5,x6,x7)
|
||||
PUSH3(arg1,arg2,arg3)
|
||||
mov fp,sp
|
||||
o_uinit= (3+4+2)*8 // pc
|
||||
|
||||
bl main // push &f_decompress
|
||||
f_decompress:
|
||||
#define LINUX_ARM_CACHEFLUSH 1
|
||||
|
||||
section NRV_HEAD
|
||||
// empty
|
||||
section NRV_TAIL
|
||||
// empty
|
||||
|
||||
section NRV2E
|
||||
#include "arch/arm/v8a/nrv2e_d8.S"
|
||||
|
||||
section NRV2D
|
||||
#include "arch/arm/v8a/nrv2d_d8.S"
|
||||
|
||||
section NRV2B
|
||||
#include "arch/arm/v8a/nrv2b_d8.S"
|
||||
|
||||
#include "arch/arm/v8a/lzma_d.S"
|
||||
|
||||
section ELFMAINY
|
||||
end_decompress: .globl end_decompress
|
||||
|
||||
msg_SELinux:
|
||||
mov w2,#L71 - L70 // length
|
||||
adr x1,L70 // message text
|
||||
mov w0,#2 // fd stderr
|
||||
do_sys __NR_write
|
||||
die:
|
||||
mov w0,#127
|
||||
do_sys __NR_exit
|
||||
L70:
|
||||
.asciz "PROT_EXEC|PROT_WRITE failed.\n"
|
||||
L71:
|
||||
/* IDENTSTR goes here */
|
||||
|
||||
section ELFMAINZ
|
||||
.macro push reg
|
||||
str \reg,[sp,#-4]!
|
||||
.endm
|
||||
.macro pop reg
|
||||
ldr \reg,[sp],#4
|
||||
.endm
|
||||
|
||||
#define lodsl ldr eax,[rsi],#4
|
||||
#define lodslu lodsl
|
||||
|
||||
main:
|
||||
// 1. allocate temporary pages
|
||||
// 2. copy to temporary pages:
|
||||
// fragment of page below dst; compressed src;
|
||||
// decompress+unfilter; supervise
|
||||
// 3. mmap destination pages for decompressed data
|
||||
// 4. create escape hatch
|
||||
// 5. jump to temporary pages
|
||||
// 6. uncompress
|
||||
// 7. unfilter
|
||||
// 8. mprotect decompressed pages
|
||||
// 9 setup args for unmap of temp pages
|
||||
// 10. jump to escape hatch
|
||||
// 11. unmap temporary pages
|
||||
// 12. goto user DT_INIT
|
||||
|
||||
mov rdx,lr // &f_decompress
|
||||
|
||||
add rsi,rdx,# _start - f_decompress - 4*4
|
||||
mov rcx,rsi
|
||||
lodsl; sub rcx,rcx,rax; //str ecx,[fp,#o_reloc]
|
||||
lodsl; add rax,rcx,rax; str eax,[fp,#o_uinit] // reloc DT_INIT for step 12
|
||||
lodsl; add rax,rcx,rax; push rax // reloc &hatch for step 10
|
||||
o_hatch= -1*4
|
||||
lodsl; add edi,ecx,eax // &l_info; also destination for decompress
|
||||
add esi,edi,#sz_l_info + sz_p_info // &b_info
|
||||
|
||||
sub sp,sp,#2*4 // param space: munmap temp pages step 9
|
||||
p_unmap= -3*4
|
||||
|
||||
ldr eax,[rsi,#4]; add rsi,rsi,#3*4 // sz_cpr
|
||||
add rsi,rsi,rax // skip unpack helper block
|
||||
|
||||
lodslu // eax=dstlen
|
||||
lsl ecx,edi,# (32-PAGE_SHIFT)
|
||||
lsr ecx,ecx,#2+(32-PAGE_SHIFT) // ecx= w_fragment
|
||||
add eax,eax,ecx,lsl #2; push eax // params: mprotect restored pages step 8
|
||||
sub edi,edi,ecx,lsl #2; push edi
|
||||
p_mprot= -5*8
|
||||
sub eax,eax,ecx,lsl #2 // dstlen
|
||||
add edi,edi,ecx,lsl #2 // dst
|
||||
push ecx // w_fragment
|
||||
o_wfrag= -6*8
|
||||
|
||||
bl L610
|
||||
f_unfilter: // (char *ptr, uint len, uint cto, uint fid)
|
||||
ptr .req x0
|
||||
fid .req w3
|
||||
|
||||
#ifndef FILTER_ID /*{*/
|
||||
#define FILTER_ID 0x50 /* little-endian */
|
||||
#endif /*}*/
|
||||
and fid,fid,#0xff
|
||||
cmp fid,#FILTER_ID // last use of fid
|
||||
bne unfret
|
||||
lsr x1,x1,#2 // word count
|
||||
cbz x1,unfret
|
||||
top_unf:
|
||||
sub x1,x1,#1
|
||||
ldr w2,[ptr,x1,lsl #2]
|
||||
ubfx w3,w2,#26,#5
|
||||
cmp w3,#5; bne tst_unf // not unconditional branch
|
||||
sub w2,w2,w1 // word displ; hi 0b.00101 preserves bit 31
|
||||
ubfm w2,w3,#26,#5
|
||||
str w2,[ptr,x1,lsl #2]
|
||||
tst_unf:
|
||||
cbnz x1,top_unf
|
||||
unfret:
|
||||
ret
|
||||
|
||||
L610:
|
||||
push lr
|
||||
o_unflt= -7*8
|
||||
ldrb tmp,[rsi,#b_method-4+1]; push tmpx // ftid
|
||||
ldrb tmp,[rsi,#b_method-4+2]; push tmpx // cto8
|
||||
push rax // dstlen also for unfilter step 7
|
||||
push rdi // dst param for unfilter step 7
|
||||
p_unflt= -11*8
|
||||
|
||||
lodslu; mov ecx,eax // ecx= srclen
|
||||
lodslu; push rax // method,filter,cto,junk
|
||||
push rdx // &decompress
|
||||
o_uncpr= -13*8
|
||||
add tmpx,fp,#p_unflt+1*4; push tmpx // &dstlen
|
||||
push rdi // dst
|
||||
push rcx // srclen
|
||||
push rsi // src; arglist ready for decompress step 6
|
||||
p_uncpr= -17*8
|
||||
|
||||
and tmpx,rsi,#3 // length of prefix alignment
|
||||
add rcx,rcx,#3 // allow suffix alignment
|
||||
add rcx,rcx,tmpx // prefix increases byte length
|
||||
ldr tmp,[fp,#o_wfrag]; add rdx,tmpx,rcx,lsr #2 // w_srclen + w_frag
|
||||
ldr tmp,[fp,#o_uncpr]; bl wlen_subr
|
||||
ldr tmp,[fp,#o_unflt]; bl wlen_subr
|
||||
|
||||
bl L220
|
||||
supervise:
|
||||
// Allocate pages for result of decompressing.
|
||||
// These replace the compressed source and the following hole.
|
||||
mov arg5,#-1 // cater to *BSD for fd of MAP_ANON
|
||||
mov arg4,#MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED
|
||||
mov arg3,#PROT_READ|PROT_WRITE
|
||||
ldr arg2,[fp,#p_mprot+4] // dstlen
|
||||
ldr arg1,[fp,#p_mprot ] // dst
|
||||
mov x6,arg1 // required result
|
||||
do_sys __NR_mmap64; cmp x0,x6; beq 0f; brk #0; 0:
|
||||
|
||||
// Restore fragment of page below dst
|
||||
ldr ecx,[fp,#o_wfrag]
|
||||
//mov edi,r0 // NOP: edi==r0
|
||||
ldr rsi,[fp,#p_unmap]
|
||||
bl movsl
|
||||
|
||||
POP4(arg1,arg2,arg3,arg4)
|
||||
POP1(rax)
|
||||
blr rax // decompress
|
||||
add sp,sp,#8 // toss arg5
|
||||
|
||||
bl L620
|
||||
//hatch:
|
||||
do_sys __NR_munmap
|
||||
POP3(arg1,arg2,arg3)
|
||||
POP4(rax,rcx,x6,x7)
|
||||
POP3(fp,lr,x1)
|
||||
br x1
|
||||
|
||||
L620: // Implant escape hatch at end of .text
|
||||
ldr eax,[fp,#o_hatch]
|
||||
ldp arg1,arg2,[lr]
|
||||
stp arg1,arg2,[rax]
|
||||
|
||||
//p_unflt
|
||||
POP4(arg1,arg2,arg3,arg4)
|
||||
POP2(rax,x12) // x12= w_fragment [toss]
|
||||
cbz arg4,0f // 0==ftid ==> no filter
|
||||
blr rax // unfilter
|
||||
0:
|
||||
//p_mprot
|
||||
ldr arg1,[sp,#0*4] // lo(dst)
|
||||
ldr arg2,[sp,#1*4] // len
|
||||
mov arg3,#0
|
||||
add arg2,arg2,arg1 // hi(dst)
|
||||
add arg2,arg2,#2*4 // len(hatch)
|
||||
do_sys __ARM_NR_cacheflush
|
||||
|
||||
POP2(arg1,arg2)
|
||||
mov arg3,#PROT_READ|PROT_EXEC
|
||||
do_sys __NR_mprotect
|
||||
|
||||
//p_unmap
|
||||
#if defined(ARMEL_EABI4) //{
|
||||
// first part of do_sys7t __NR_munmap
|
||||
.if __NR_munmap <= 0xff
|
||||
mov r7,#__NR_munmap
|
||||
.else
|
||||
mov r7,#__NR_munmap>>16
|
||||
lsl r7,r7,#16
|
||||
add r7,r7,#__NR_munmap - ((__NR_munmap>>16)<<16)
|
||||
.endif
|
||||
#endif //}
|
||||
POP3(arg1,arg2,lr)
|
||||
br lr // togo hatch
|
||||
|
||||
movsl_subr:
|
||||
ldr ecx,[rsi,#-4] // 'bl <over>' instruction word
|
||||
bic ecx,ecx,#0xff<<24 // displacment field
|
||||
add ecx,ecx,#1 // displ omits one word
|
||||
// FALL THROUGH to the part of 'movsl' that trims to a multiple of 8 words.
|
||||
// 7/8 of the time this is faster; 1/8 of the time it's slower.
|
||||
9:
|
||||
ldr tmp,[rsi],#4; sub ecx,ecx,#1
|
||||
str tmp,[rdi],#4
|
||||
movsl: // rdi= 4-byte aligned dst; esi= 4-byte aligned src; ecx= word count
|
||||
tst ecx,#7; bne 9b // work ecx down to multiple of 8
|
||||
lsr ecx,ecx,#3; cbz ecx,9f
|
||||
7:
|
||||
ldp x2,x3,[rsi],#2*8; subs ecx,ecx,#1
|
||||
stp x2,x3,[rdi],#2*8; cbnz ecx,7b
|
||||
9:
|
||||
ret
|
||||
|
||||
L220:
|
||||
push lr // &supervise
|
||||
o_super= -18*8
|
||||
mov tmpx,lr; bl wlen_subr // wlen_supervise
|
||||
lsl arg2,rdx,#2 // convert to bytes
|
||||
|
||||
// Allocate pages to hold temporary copy.
|
||||
mov arg5,#-1 // cater to *BSD for fd of MAP_ANON
|
||||
mov arg4,#MAP_PRIVATE|MAP_ANONYMOUS
|
||||
mov arg3,#PROT_READ|PROT_WRITE|PROT_EXEC
|
||||
str arg2,[fp,#p_unmap+1*8] // length to unmap
|
||||
mov arg1,#0 // any addr
|
||||
do_sys __NR_mmap64; cmn x0,#4096; bcc 0f; brk #0; 0:
|
||||
str x0,[fp,#p_unmap+0*8] // address to unmap
|
||||
|
||||
ldr esi,[fp,#p_mprot]
|
||||
//mov edi,r0 // edi= dst NOP: edi==r0
|
||||
ldr ecx,[fp,#o_wfrag] // w_fragment
|
||||
bl movsl // copy the fragment
|
||||
|
||||
ldr esi,[fp,#p_uncpr+0*4] // src
|
||||
ldr ecx,[fp,#p_uncpr+1*4] // len
|
||||
and tmp,esi,#3 // length of prefix alignment
|
||||
sub esi,esi,tmp // down to word aligned
|
||||
add ecx,ecx,tmp // prefix increases byte length
|
||||
add tmp,tmp,edi // skip prefix at destination
|
||||
str tmp,[fp,#p_uncpr+0*4] // dst
|
||||
add ecx,ecx,#7 // round up to full words
|
||||
lsr ecx,ecx,#3
|
||||
bl movsl // copy all aligned words that contain compressed data
|
||||
|
||||
mov rdx,rdi // lo(dst) of copied code
|
||||
|
||||
ldr rsi,[fp,#o_uncpr]
|
||||
str rdi,[fp,#o_uncpr]
|
||||
bl movsl_subr // copy decompressor
|
||||
|
||||
ldr rsi,[fp,#o_unflt]
|
||||
str rdi,[fp,#o_unflt]
|
||||
bl movsl_subr // copy unfilter
|
||||
|
||||
pop rsi // &supervise
|
||||
push rdi // &copied
|
||||
bl movsl_subr // copy supervisor
|
||||
|
||||
mov arg2,rdi // hi(dst) of copied code
|
||||
mov arg1,rdx // lo(dst) of copied code
|
||||
mov arg3,#0
|
||||
do_sys __ARM_NR_cacheflush
|
||||
|
||||
pop lr; br lr // goto copied supervisor
|
||||
|
||||
wlen_subr: // edx+= nwords of inline subr at *tmp
|
||||
ldr tmp,[tmpx,#-4] // 'bl <over>' instruction word
|
||||
bic tmp,tmp,#0xff<<24 // displacment field
|
||||
add tmp,tmp,#1 // displ omits one word
|
||||
add rdx,rdx,tmpx
|
||||
ret
|
||||
|
||||
/*__XTHEENDX__*/
|
||||
|
||||
/* vim:set ts=8 sw=8 et: */
|
49
src/stub/tmp/arm64-linux.elf-entry.bin.dump
Normal file
49
src/stub/tmp/arm64-linux.elf-entry.bin.dump
Normal file
|
@ -0,0 +1,49 @@
|
|||
file format elf64-littleaarch64
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINX 00000040 0000000000000000 0000000000000000 00000040 2**2 CONTENTS, RELOC, READONLY
|
||||
1 LUNMP000 00000004 0000000000000000 0000000000000000 00000080 2**2 CONTENTS, READONLY
|
||||
2 LUNMP001 00000004 0000000000000000 0000000000000000 00000084 2**2 CONTENTS, READONLY
|
||||
3 ELFMAINXu 000000ac 0000000000000000 0000000000000000 00000088 2**2 CONTENTS, RELOC, READONLY
|
||||
4 NRV_HEAD 00000000 0000000000000000 0000000000000000 00000134 2**0 CONTENTS, READONLY
|
||||
5 NRV_TAIL 00000000 0000000000000000 0000000000000000 00000134 2**0 CONTENTS, READONLY
|
||||
6 NRV2E 00000128 0000000000000000 0000000000000000 00000134 2**2 CONTENTS, READONLY
|
||||
7 NRV2D 0000011c 0000000000000000 0000000000000000 0000025c 2**2 CONTENTS, READONLY
|
||||
8 NRV2B 000005a4 0000000000000000 0000000000000000 00000378 2**2 CONTENTS, READONLY
|
||||
9 ELFMAINY 00000046 0000000000000000 0000000000000000 0000091c 2**2 CONTENTS, READONLY
|
||||
10 ELFMAINZ 00000000 0000000000000000 0000000000000000 00000962 2**0 CONTENTS, READONLY
|
||||
SYMBOL TABLE:
|
||||
0000000000000000 l d ELFMAINY 0000000000000000 ELFMAINY
|
||||
0000000000000000 l d ELFMAINX 0000000000000000 ELFMAINX
|
||||
0000000000000000 l d LUNMP000 0000000000000000 LUNMP000
|
||||
0000000000000000 l d LUNMP001 0000000000000000 LUNMP001
|
||||
0000000000000000 l d ELFMAINXu 0000000000000000 ELFMAINXu
|
||||
0000000000000000 l d NRV_HEAD 0000000000000000 NRV_HEAD
|
||||
0000000000000000 l d NRV_TAIL 0000000000000000 NRV_TAIL
|
||||
0000000000000000 l d NRV2E 0000000000000000 NRV2E
|
||||
0000000000000000 l d NRV2D 0000000000000000 NRV2D
|
||||
0000000000000000 l d NRV2B 0000000000000000 NRV2B
|
||||
0000000000000000 l d ELFMAINZ 0000000000000000 ELFMAINZ
|
||||
0000000000000000 *UND* 0000000000000000 LENF
|
||||
0000000000000000 *UND* 0000000000000000 CPR0
|
||||
0000000000000000 *UND* 0000000000000000 MFLG
|
||||
0000000000000000 *UND* 0000000000000000 ADRM
|
||||
0000000000000014 g ELFMAINX 0000000000000000 _start
|
||||
0000000000000000 g F NRV2E 0000000000000128 ucl_nrv2e_decompress_8
|
||||
0000000000000000 g F NRV2D 000000000000011c ucl_nrv2d_decompress_8
|
||||
0000000000000000 g F NRV2B 00000000000000f0 ucl_nrv2b_decompress_8
|
||||
00000000000000f0 g NRV2B 0000000000000000 LzmaDecode
|
||||
0000000000000000 g ELFMAINY 0000000000000000 end_decompress
|
||||
0000000000000000 g ELFMAINZ 0000000000000000 cpr0
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000000000000 R_AARCH64_ABS32 LENF
|
||||
0000000000000004 R_AARCH64_ABS32 CPR0
|
||||
0000000000000008 R_AARCH64_ABS32 MFLG
|
||||
000000000000000c R_AARCH64_ABS64 ADRM
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINXu]:
|
||||
OFFSET TYPE VALUE
|
||||
000000000000002c R_AARCH64_CONDBR19 ELFMAINY
|
51
src/stub/tmp/arm64-linux.elf-fold.map
Normal file
51
src/stub/tmp/arm64-linux.elf-fold.map
Normal file
|
@ -0,0 +1,51 @@
|
|||
|
||||
Memory Configuration
|
||||
|
||||
Name Origin Length Attributes
|
||||
*default* 0x0000000000000000 0xffffffffffffffff
|
||||
|
||||
Linker script and memory map
|
||||
|
||||
0x00000000001000bc . = ((0x100000 + SIZEOF_HEADERS) + 0xc)
|
||||
|
||||
.text 0x00000000001000bc 0x8a4
|
||||
*(.text)
|
||||
.text 0x00000000001000bc 0x2fc tmp/arm64-linux.elf-fold.o
|
||||
0x00000000001002b4 my_bkpt
|
||||
0x00000000001002bc exit
|
||||
0x00000000001002c8 read
|
||||
0x00000000001002d8 write
|
||||
0x00000000001002e8 open
|
||||
0x00000000001002f8 close
|
||||
0x0000000000100308 unlink
|
||||
0x0000000000100318 getpid
|
||||
0x0000000000100328 brk
|
||||
0x0000000000100338 readlink
|
||||
0x0000000000100348 munmap
|
||||
0x0000000000100358 mprotect
|
||||
0x0000000000100368 __clear_cache
|
||||
0x0000000000100380 mmap
|
||||
0x00000000001003a0 mmap_privanon
|
||||
.text 0x00000000001003b8 0x5a8 tmp/arm64-linux.elf-main.o
|
||||
0x000000000010080c upx_main
|
||||
*(.data)
|
||||
.data 0x0000000000100960 0x0 tmp/arm64-linux.elf-fold.o
|
||||
.data 0x0000000000100960 0x0 tmp/arm64-linux.elf-main.o
|
||||
|
||||
.iplt 0x0000000000100960 0x0
|
||||
.iplt 0x0000000000100960 0x0 tmp/arm64-linux.elf-fold.o
|
||||
|
||||
.rela.dyn 0x0000000000100960 0x0
|
||||
.rela.iplt 0x0000000000100960 0x0 tmp/arm64-linux.elf-fold.o
|
||||
|
||||
.data
|
||||
LOAD tmp/arm64-linux.elf-fold.o
|
||||
LOAD tmp/arm64-linux.elf-main.o
|
||||
OUTPUT(tmp/arm64-linux.elf-fold.bin elf64-littleaarch64)
|
||||
|
||||
.igot.plt 0x0000000000100960 0x0
|
||||
.igot.plt 0x0000000000100960 0x0 tmp/arm64-linux.elf-fold.o
|
||||
|
||||
.bss 0x0000000000100960 0x0
|
||||
.bss 0x0000000000100960 0x0 tmp/arm64-linux.elf-fold.o
|
||||
.bss 0x0000000000100960 0x0 tmp/arm64-linux.elf-main.o
|
43
src/stub/tmp/arm64-linux.shlib-init.bin.dump
Normal file
43
src/stub/tmp/arm64-linux.shlib-init.bin.dump
Normal file
|
@ -0,0 +1,43 @@
|
|||
file format elf64-littleaarch64
|
||||
|
||||
Sections:
|
||||
Idx Name Size VMA LMA File off Algn Flags
|
||||
0 ELFMAINX 00000024 0000000000000000 0000000000000000 00000040 2**2 CONTENTS, RELOC, READONLY
|
||||
1 NRV_HEAD 00000000 0000000000000000 0000000000000000 00000064 2**0 CONTENTS, READONLY
|
||||
2 NRV_TAIL 00000000 0000000000000000 0000000000000000 00000064 2**0 CONTENTS, READONLY
|
||||
3 NRV2E 0000012c 0000000000000000 0000000000000000 00000064 2**2 CONTENTS, READONLY
|
||||
4 NRV2D 00000120 0000000000000000 0000000000000000 00000190 2**2 CONTENTS, READONLY
|
||||
5 NRV2B 000000f8 0000000000000000 0000000000000000 000002b0 2**2 CONTENTS, READONLY
|
||||
6 LZMA_ELF00 000000b4 0000000000000000 0000000000000000 000003a8 2**2 CONTENTS, RELOC, READONLY
|
||||
7 LZMA_DEC20 000005f8 0000000000000000 0000000000000000 0000045c 2**2 CONTENTS, READONLY
|
||||
8 LZMA_DEC10 0000050c 0000000000000000 0000000000000000 00000a54 2**2 CONTENTS, READONLY
|
||||
9 LZMA_DEC30 00000000 0000000000000000 0000000000000000 00000f60 2**0 CONTENTS, READONLY
|
||||
10 ELFMAINY 00000046 0000000000000000 0000000000000000 00000f60 2**2 CONTENTS, READONLY
|
||||
11 ELFMAINZ 00000304 0000000000000000 0000000000000000 00000fa8 2**2 CONTENTS, READONLY
|
||||
SYMBOL TABLE:
|
||||
0000000000000000 l d LZMA_DEC30 0000000000000000 LZMA_DEC30
|
||||
0000000000000000 l d ELFMAINZ 0000000000000000 ELFMAINZ
|
||||
0000000000000000 l d ELFMAINX 0000000000000000 ELFMAINX
|
||||
0000000000000000 l d NRV_HEAD 0000000000000000 NRV_HEAD
|
||||
0000000000000000 l d NRV_TAIL 0000000000000000 NRV_TAIL
|
||||
0000000000000000 l d NRV2E 0000000000000000 NRV2E
|
||||
0000000000000000 l d NRV2D 0000000000000000 NRV2D
|
||||
0000000000000000 l d NRV2B 0000000000000000 NRV2B
|
||||
0000000000000000 l d LZMA_ELF00 0000000000000000 LZMA_ELF00
|
||||
0000000000000000 l d LZMA_DEC20 0000000000000000 LZMA_DEC20
|
||||
0000000000000000 l d LZMA_DEC10 0000000000000000 LZMA_DEC10
|
||||
0000000000000000 l d ELFMAINY 0000000000000000 ELFMAINY
|
||||
0000000000000000 g ELFMAINX 0000000000000000 _start
|
||||
0000000000000000 g F NRV2E 000000000000012c ucl_nrv2e_decompress_8
|
||||
0000000000000000 g F NRV2D 0000000000000120 ucl_nrv2d_decompress_8
|
||||
0000000000000000 g F NRV2B 00000000000000f8 ucl_nrv2b_decompress_8
|
||||
0000000000000000 g LZMA_DEC10 0000000000000000 LzmaDecode
|
||||
0000000000000000 g ELFMAINY 0000000000000000 end_decompress
|
||||
|
||||
RELOCATION RECORDS FOR [ELFMAINX]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000000000020 R_AARCH64_CALL26 ELFMAINZ
|
||||
|
||||
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||
OFFSET TYPE VALUE
|
||||
0000000000000004 R_AARCH64_CONDBR19 LZMA_DEC30
|
Loading…
Reference in New Issue
Block a user