mirror of
https://github.com/upx/upx
synced 2025-10-05 19:20:23 +08:00
new format UPX_F_VMLINUX_PPC32 Linux kernel for PowerPC (32-bit)
This commit is contained in:
parent
530e6d9196
commit
f347458c53
|
@ -466,6 +466,7 @@ private:
|
||||||
#define UPX_F_LINUX_ELF32_ARMEB 133
|
#define UPX_F_LINUX_ELF32_ARMEB 133
|
||||||
#define UPX_F_MACH_FAT 134
|
#define UPX_F_MACH_FAT 134
|
||||||
#define UPX_F_VMLINUX_ARMEB 135
|
#define UPX_F_VMLINUX_ARMEB 135
|
||||||
|
#define UPX_F_VMLINUX_PPC32 136
|
||||||
|
|
||||||
|
|
||||||
// compression methods
|
// compression methods
|
||||||
|
|
|
@ -106,7 +106,7 @@ static int F(Filter *f)
|
||||||
f->noncalls = noncalls;
|
f->noncalls = noncalls;
|
||||||
f->lastcall = lastcall;
|
f->lastcall = lastcall;
|
||||||
|
|
||||||
#if 0
|
#if 1
|
||||||
printf("\ncalls=%d noncalls=%d text_size=%x calltrickoffset=%x\n",
|
printf("\ncalls=%d noncalls=%d text_size=%x calltrickoffset=%x\n",
|
||||||
calls,noncalls,size,cto8);
|
calls,noncalls,size,cto8);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -801,6 +801,12 @@ void ElfLinkerPpc32::relocate1(const Relocation *rel, upx_byte *location,
|
||||||
return super::relocate1(rel, location, value, type);
|
return super::relocate1(rel, location, value, type);
|
||||||
type += 6;
|
type += 6;
|
||||||
|
|
||||||
|
if (strcmp(type, "ADDR32") == 0)
|
||||||
|
{
|
||||||
|
set_be32(location, get_be32(location) + value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (strncmp(type, "REL", 3) == 0)
|
if (strncmp(type, "REL", 3) == 0)
|
||||||
{
|
{
|
||||||
value -= rel->section->offset + rel->offset;
|
value -= rel->section->offset + rel->offset;
|
||||||
|
|
175
src/p_vmlinx.cpp
175
src/p_vmlinx.cpp
|
@ -46,6 +46,8 @@ static const
|
||||||
#include "stub/arm-linux.kernel.vmlinux.h"
|
#include "stub/arm-linux.kernel.vmlinux.h"
|
||||||
static const
|
static const
|
||||||
#include "stub/armeb-linux.kernel.vmlinux.h"
|
#include "stub/armeb-linux.kernel.vmlinux.h"
|
||||||
|
static const
|
||||||
|
#include "stub/powerpc-linux.kernel.vmlinux.h"
|
||||||
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
@ -203,6 +205,7 @@ bool PackVmlinuxBase<T>::canPack()
|
||||||
return 0 < n_ptload;
|
return 0 < n_ptload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "p_elf.h"
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
||||||
|
@ -267,13 +270,79 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
||||||
upx_compress_config_t cconf; cconf.reset();
|
upx_compress_config_t cconf; cconf.reset();
|
||||||
// limit stack size needed for runtime decompression
|
// limit stack size needed for runtime decompression
|
||||||
cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28KB stack
|
cconf.conf_lzma.max_num_probs = 1846 + (768 << 4); // ushort: ~28KB stack
|
||||||
compressWithFilters(&ft, 512, &cconf, getStrategy(ft));
|
|
||||||
|
unsigned ppc32_extra = 0;
|
||||||
|
if (Ehdr::EM_PPC==my_e_machine) {
|
||||||
|
// output layout:
|
||||||
|
// .long UPX_MAGIC_LE32
|
||||||
|
// .long L20 - L10
|
||||||
|
// L10:
|
||||||
|
// b_info for Ehdr; compressed Ehdr; .balign 4 // one block only
|
||||||
|
// b_info for LOAD; compressed LOAD; .balign 4 // possibly many blocks
|
||||||
|
// // This allows per-block filters!
|
||||||
|
// L20:
|
||||||
|
// b f_decompress
|
||||||
|
// +4: f_unfilter(char *buf, unsigned len, unsigned cto8, unsigned ftid)
|
||||||
|
// // Code for multiple filters can "daisy chain" on ftid.
|
||||||
|
// f_decompress(char const *src, unsigned src_len,
|
||||||
|
// char *dst, unsigned *dst_len, int method)
|
||||||
|
unsigned tmp;
|
||||||
|
tmp = UPX_MAGIC_LE32; fo->write(&tmp, sizeof(tmp)); fo_off += sizeof(tmp);
|
||||||
|
tmp = 0; fo->write(&tmp, sizeof(tmp)); fo_off += sizeof(tmp);
|
||||||
|
ppc32_extra += 2*sizeof(tmp);
|
||||||
|
unsigned const len_unc = sizeof(ehdri) + sizeof(Phdr) * ehdri.e_phnum;
|
||||||
|
MemBuffer unc_hdr(len_unc);
|
||||||
|
MemBuffer cpr_hdr; cpr_hdr.allocForCompression(len_unc);
|
||||||
|
memcpy(&unc_hdr[0], &ehdri, sizeof(ehdri));
|
||||||
|
memcpy(&unc_hdr[sizeof(ehdri)], phdri, sizeof(Phdr) * ehdri.e_phnum);
|
||||||
|
unsigned len_cpr = 0;
|
||||||
|
int const r = upx_compress(unc_hdr, len_unc, cpr_hdr, &len_cpr,
|
||||||
|
NULL, ph.method, 10, NULL, NULL );
|
||||||
|
if (UPX_E_OK!=r || len_unc<=len_cpr) // FIXME: allow no compression
|
||||||
|
throwInternalError("Ehdr compression failed");
|
||||||
|
|
||||||
|
struct b_info { // 12-byte header before each compressed block
|
||||||
|
unsigned sz_unc; // uncompressed_size
|
||||||
|
unsigned sz_cpr; // compressed_size
|
||||||
|
unsigned char b_method; // compression algorithm
|
||||||
|
unsigned char b_ftid; // filter id
|
||||||
|
unsigned char b_cto8; // filter parameter
|
||||||
|
unsigned char b_unused; // FIXME: !=0 for partial-block unfilter
|
||||||
|
// unsigned f_offset, f_len; // only if partial-block unfilter
|
||||||
|
}
|
||||||
|
__attribute_packed;
|
||||||
|
|
||||||
|
struct b_info hdr_info;
|
||||||
|
set_be32(&hdr_info.sz_unc, len_unc);
|
||||||
|
set_be32(&hdr_info.sz_cpr, len_cpr);
|
||||||
|
hdr_info.b_method = ph.method;
|
||||||
|
hdr_info.b_ftid = 0;
|
||||||
|
hdr_info.b_cto8 = 0;
|
||||||
|
hdr_info.b_unused = 0;
|
||||||
|
fo->write(&hdr_info, sizeof(hdr_info)); fo_off += sizeof(hdr_info);
|
||||||
|
unsigned const frag = (3& -len_cpr);
|
||||||
|
ppc32_extra += sizeof(hdr_info) + len_cpr + frag;
|
||||||
|
fo_off += len_cpr + frag;
|
||||||
|
fo->write(cpr_hdr, len_cpr + frag);
|
||||||
|
compressWithFilters(&ft, 512, &cconf, getStrategy(ft));
|
||||||
|
set_be32(&hdr_info.sz_unc, ph.u_len);
|
||||||
|
set_be32(&hdr_info.sz_cpr, ph.c_len);
|
||||||
|
hdr_info.b_ftid = ft.id;
|
||||||
|
hdr_info.b_cto8 = ft.cto;
|
||||||
|
fo->write(&hdr_info, sizeof(hdr_info)); fo_off += sizeof(hdr_info);
|
||||||
|
ppc32_extra += sizeof(hdr_info);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
compressWithFilters(&ft, 512, &cconf, getStrategy(ft));
|
||||||
|
}
|
||||||
unsigned const txt_c_len = ph.c_len;
|
unsigned const txt_c_len = ph.c_len;
|
||||||
|
|
||||||
const unsigned lsize = getLoaderSize();
|
const unsigned lsize = getLoaderSize();
|
||||||
|
|
||||||
defineDecompressorSymbols();
|
defineDecompressorSymbols();
|
||||||
defineFilterSymbols(&ft);
|
if (ft.id!=0) {
|
||||||
|
defineFilterSymbols(&ft);
|
||||||
|
}
|
||||||
relocateLoader();
|
relocateLoader();
|
||||||
|
|
||||||
MemBuffer loader(lsize);
|
MemBuffer loader(lsize);
|
||||||
|
@ -287,13 +356,13 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
||||||
shdro[1].sh_name = ptr_diff(p, shstrtab);
|
shdro[1].sh_name = ptr_diff(p, shstrtab);
|
||||||
shdro[1].sh_type = Shdr::SHT_PROGBITS;
|
shdro[1].sh_type = Shdr::SHT_PROGBITS;
|
||||||
shdro[1].sh_flags = Shdr::SHF_ALLOC | Shdr::SHF_EXECINSTR;
|
shdro[1].sh_flags = Shdr::SHF_ALLOC | Shdr::SHF_EXECINSTR;
|
||||||
shdro[1].sh_offset = fo_off;
|
shdro[1].sh_offset = fo_off - ppc32_extra;
|
||||||
shdro[1].sh_size = txt_c_len + lsize; // plus more ...
|
shdro[1].sh_size = ppc32_extra + txt_c_len + lsize; // plus more ...
|
||||||
shdro[1].sh_addralign = 1; // default
|
shdro[1].sh_addralign = 1; // default
|
||||||
|
|
||||||
fo_off += write_vmlinux_head(fo, &shdro[1]);
|
fo_off += write_vmlinux_head(fo, &shdro[1]);
|
||||||
fo->write(obuf, txt_c_len); fo_off += txt_c_len;
|
fo->write(obuf, txt_c_len); fo_off += txt_c_len;
|
||||||
unsigned const a = (shdro[1].sh_addralign -1) & (0u-txt_c_len);
|
unsigned const a = (shdro[1].sh_addralign -1) & (0u-(ppc32_extra + txt_c_len));
|
||||||
if (0!=a) { // align
|
if (0!=a) { // align
|
||||||
fo_off += a;
|
fo_off += a;
|
||||||
shdro[1].sh_size += a;
|
shdro[1].sh_size += a;
|
||||||
|
@ -361,7 +430,7 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
||||||
shdro[5].sh_name = ptr_diff(p, shstrtab);
|
shdro[5].sh_name = ptr_diff(p, shstrtab);
|
||||||
shdro[5].sh_type = Shdr::SHT_SYMTAB;
|
shdro[5].sh_type = Shdr::SHT_SYMTAB;
|
||||||
shdro[5].sh_offset = fo_off;
|
shdro[5].sh_offset = fo_off;
|
||||||
shdro[5].sh_size = 5*sizeof(Sym);
|
shdro[5].sh_size = ((Ehdr::EM_PPC==my_e_machine) + 5)*sizeof(Sym);
|
||||||
//shdro[5].sh_flags = Shdr::SHF_INFO_LINK;
|
//shdro[5].sh_flags = Shdr::SHF_INFO_LINK;
|
||||||
shdro[5].sh_link = 6; // to .strtab for symbols
|
shdro[5].sh_link = 6; // to .strtab for symbols
|
||||||
shdro[5].sh_info = 1+3; // number of non-global symbols [binutils/bfd/elf.c]
|
shdro[5].sh_info = 1+3; // number of non-global symbols [binutils/bfd/elf.c]
|
||||||
|
@ -388,26 +457,40 @@ void PackVmlinuxBase<T>::pack(OutputFile *fo)
|
||||||
Sym unc_ker;
|
Sym unc_ker;
|
||||||
unc_ker.st_name = 1; // 1 byte into strtab
|
unc_ker.st_name = 1; // 1 byte into strtab
|
||||||
unc_ker.st_value = 0;
|
unc_ker.st_value = 0;
|
||||||
unc_ker.st_size = txt_c_len;
|
unc_ker.st_size = ppc32_extra + txt_c_len;
|
||||||
unc_ker.st_info = unc_ker.make_st_info(Sym::STB_GLOBAL, Sym::STT_FUNC);
|
unc_ker.st_info = unc_ker.make_st_info(Sym::STB_GLOBAL, Sym::STT_FUNC);
|
||||||
unc_ker.st_other = Sym::STV_DEFAULT;
|
unc_ker.st_other = Sym::STV_DEFAULT;
|
||||||
unc_ker.st_shndx = 1; // .text
|
unc_ker.st_shndx = 1; // .text
|
||||||
fo->write(&unc_ker, sizeof(unc_ker)); fo_off += sizeof(unc_ker);
|
fo->write(&unc_ker, sizeof(unc_ker)); fo_off += sizeof(unc_ker);
|
||||||
|
|
||||||
unsigned const lablen = strlen(my_boot_label);
|
unsigned const lablen = strlen(my_boot_label);
|
||||||
|
if (Ehdr::EM_PPC==my_e_machine) {
|
||||||
|
unc_ker.st_name += 1+ lablen;
|
||||||
|
unc_ker.st_value = unc_ker.st_size;
|
||||||
|
unc_ker.st_size = 0;
|
||||||
|
fo->write(&unc_ker, sizeof(unc_ker)); fo_off += sizeof(unc_ker);
|
||||||
|
}
|
||||||
while (0!=*p++) ;
|
while (0!=*p++) ;
|
||||||
shdro[6].sh_name = ptr_diff(p, shstrtab);
|
shdro[6].sh_name = ptr_diff(p, shstrtab);
|
||||||
shdro[6].sh_type = Shdr::SHT_STRTAB;
|
shdro[6].sh_type = Shdr::SHT_STRTAB;
|
||||||
shdro[6].sh_offset = fo_off;
|
shdro[6].sh_offset = fo_off;
|
||||||
shdro[6].sh_size = 2+ lablen; // '\0' before and after
|
shdro[6].sh_size = 2+ lablen + (Ehdr::EM_PPC==my_e_machine)*(1+ 12); // '\0' before and after
|
||||||
shdro[6].sh_addralign = 1;
|
shdro[6].sh_addralign = 1;
|
||||||
fo->seek(1, SEEK_CUR); // the '\0' before
|
fo->seek(1, SEEK_CUR); // the '\0' before
|
||||||
fo->write(my_boot_label, 1+ lablen); // include the '\0' terminator
|
fo->write(my_boot_label, 1+ lablen); // include the '\0' terminator
|
||||||
|
if (Ehdr::EM_PPC==my_e_machine) {
|
||||||
|
fo->write("_vmlinux_end", 1+ 12); fo_off += 1+ 12;
|
||||||
|
}
|
||||||
fo_off += 2+ lablen;
|
fo_off += 2+ lablen;
|
||||||
|
|
||||||
fo->seek(0, SEEK_SET);
|
fo->seek(0, SEEK_SET);
|
||||||
fo->write(&ehdro, sizeof(ehdro));
|
fo->write(&ehdro, sizeof(ehdro));
|
||||||
fo->write(&shdro, sizeof(shdro));
|
fo->write(&shdro, sizeof(shdro));
|
||||||
|
if (Ehdr::EM_PPC==my_e_machine) {
|
||||||
|
fo->seek(sizeof(unsigned), SEEK_CUR);
|
||||||
|
set_be32(&ppc32_extra, ppc32_extra - 2*sizeof(unsigned) + txt_c_len);
|
||||||
|
fo->write(&ppc32_extra, sizeof(ppc32_extra));
|
||||||
|
}
|
||||||
|
|
||||||
if (!checkFinalCompressionRatio(fo))
|
if (!checkFinalCompressionRatio(fo))
|
||||||
throwNotCompressible();
|
throwNotCompressible();
|
||||||
|
@ -559,6 +642,12 @@ const int *PackVmlinuxARMEB::getCompressionMethods(int method, int level) const
|
||||||
return Packer::getDefaultCompressionMethods_8(method, level);
|
return Packer::getDefaultCompressionMethods_8(method, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int *PackVmlinuxPPC32::getCompressionMethods(int method, int level) const
|
||||||
|
{
|
||||||
|
// No real dependency on LE32.
|
||||||
|
return Packer::getDefaultCompressionMethods_le32(method, level);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const int *PackVmlinuxARMEL::getFilters() const
|
const int *PackVmlinuxARMEL::getFilters() const
|
||||||
{
|
{
|
||||||
|
@ -572,6 +661,12 @@ const int *PackVmlinuxARMEB::getFilters() const
|
||||||
return f51;
|
return f51;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const int *PackVmlinuxPPC32::getFilters() const
|
||||||
|
{
|
||||||
|
static const int fd0[] = { 0xd0, FT_END };
|
||||||
|
return fd0;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Examples as of 2004-07-16 [readelf --segments vmlinux # before fiddling]:
|
// Examples as of 2004-07-16 [readelf --segments vmlinux # before fiddling]:
|
||||||
//
|
//
|
||||||
|
@ -669,6 +764,11 @@ bool PackVmlinuxARMEB::is_valid_e_entry(Addr e_entry)
|
||||||
return 0xc0008000==e_entry;
|
return 0xc0008000==e_entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PackVmlinuxPPC32::is_valid_e_entry(Addr e_entry)
|
||||||
|
{
|
||||||
|
return 0xc0000000==e_entry;
|
||||||
|
}
|
||||||
|
|
||||||
Linker* PackVmlinuxARMEL::newLinker() const
|
Linker* PackVmlinuxARMEL::newLinker() const
|
||||||
{
|
{
|
||||||
return new ElfLinkerArmLE;
|
return new ElfLinkerArmLE;
|
||||||
|
@ -679,6 +779,11 @@ Linker* PackVmlinuxARMEB::newLinker() const
|
||||||
return new ElfLinkerArmBE;
|
return new ElfLinkerArmBE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Linker* PackVmlinuxPPC32::newLinker() const
|
||||||
|
{
|
||||||
|
return new ElfLinkerPpc32;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void PackVmlinuxARMEL::buildLoader(const Filter *ft)
|
void PackVmlinuxARMEL::buildLoader(const Filter *ft)
|
||||||
|
@ -725,6 +830,28 @@ void PackVmlinuxARMEB::buildLoader(const Filter *ft)
|
||||||
addLoader("IDENTSTR,UPX1HEAD", NULL);
|
addLoader("IDENTSTR,UPX1HEAD", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackVmlinuxPPC32::buildLoader(const Filter *ft)
|
||||||
|
{
|
||||||
|
// prepare loader
|
||||||
|
initLoader(stub_powerpc_linux_kernel_vmlinux, sizeof(stub_powerpc_linux_kernel_vmlinux));
|
||||||
|
addLoader("LINUX000", NULL);
|
||||||
|
if (ft->id) {
|
||||||
|
assert(ft->calls > 0);
|
||||||
|
addLoader("LINUX010", NULL);
|
||||||
|
}
|
||||||
|
addLoader("LINUX020", NULL);
|
||||||
|
if (ft->id) {
|
||||||
|
addFilter32(ft->id);
|
||||||
|
}
|
||||||
|
addLoader("LINUX030", NULL);
|
||||||
|
if (ph.method == M_NRV2E_8) addLoader("NRV2E", NULL);
|
||||||
|
else if (ph.method == M_NRV2B_8) addLoader("NRV2B", NULL);
|
||||||
|
else if (ph.method == M_NRV2D_8) addLoader("NRV2D", NULL);
|
||||||
|
else if (M_IS_LZMA(ph.method)) addLoader("LZMA_ELF00,LZMA_DEC10,LZMA_DEC30", NULL);
|
||||||
|
else throwBadLoader();
|
||||||
|
addLoader("IDENTSTR,UPX1HEAD", NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static const
|
static const
|
||||||
#include "stub/i386-linux.kernel.vmlinux-head.h"
|
#include "stub/i386-linux.kernel.vmlinux-head.h"
|
||||||
|
@ -734,6 +861,8 @@ static const
|
||||||
#include "stub/arm-linux.kernel.vmlinux-head.h"
|
#include "stub/arm-linux.kernel.vmlinux-head.h"
|
||||||
static const
|
static const
|
||||||
#include "stub/armeb-linux.kernel.vmlinux-head.h"
|
#include "stub/armeb-linux.kernel.vmlinux-head.h"
|
||||||
|
static const
|
||||||
|
#include "stub/powerpc-linux.kernel.vmlinux-head.h"
|
||||||
|
|
||||||
unsigned PackVmlinuxI386::write_vmlinux_head(
|
unsigned PackVmlinuxI386::write_vmlinux_head(
|
||||||
OutputFile *const fo,
|
OutputFile *const fo,
|
||||||
|
@ -783,6 +912,14 @@ void PackVmlinuxARMEB::defineDecompressorSymbols()
|
||||||
linker->defineSymbol("METHOD", ph.method);
|
linker->defineSymbol("METHOD", ph.method);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackVmlinuxPPC32::defineDecompressorSymbols()
|
||||||
|
{
|
||||||
|
super::defineDecompressorSymbols();
|
||||||
|
// linker->defineSymbol( "COMPRESSED_LENGTH", ph.c_len);
|
||||||
|
// linker->defineSymbol("UNCOMPRESSED_LENGTH", ph.u_len);
|
||||||
|
// linker->defineSymbol("METHOD", ph.method);
|
||||||
|
}
|
||||||
|
|
||||||
void PackVmlinuxI386::defineDecompressorSymbols()
|
void PackVmlinuxI386::defineDecompressorSymbols()
|
||||||
{
|
{
|
||||||
super::defineDecompressorSymbols();
|
super::defineDecompressorSymbols();
|
||||||
|
@ -844,6 +981,14 @@ unsigned PackVmlinuxARMEB::write_vmlinux_head(
|
||||||
return sizeof(stub_armeb_linux_kernel_vmlinux_head);
|
return sizeof(stub_armeb_linux_kernel_vmlinux_head);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned PackVmlinuxPPC32::write_vmlinux_head(
|
||||||
|
OutputFile * /*const fo*/,
|
||||||
|
Shdr * /*const stxt*/
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool PackVmlinuxARMEL::has_valid_vmlinux_head()
|
bool PackVmlinuxARMEL::has_valid_vmlinux_head()
|
||||||
{
|
{
|
||||||
|
@ -873,6 +1018,20 @@ bool PackVmlinuxARMEB::has_valid_vmlinux_head()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PackVmlinuxPPC32::has_valid_vmlinux_head()
|
||||||
|
{
|
||||||
|
U32 buf[2];
|
||||||
|
fi->seek(p_text->sh_offset + sizeof(stub_powerpc_linux_kernel_vmlinux_head) -8, SEEK_SET);
|
||||||
|
fi->readx(buf, sizeof(buf));
|
||||||
|
//unsigned const word0 = buf[0];
|
||||||
|
unsigned const word1 = buf[1];
|
||||||
|
if (0xeb==(word1>>24)
|
||||||
|
&& (0x00ffffff& word1)==(0u - 1 + ((3+ ph.c_len)>>2))) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
bool PackVmlinuxI386::has_valid_vmlinux_head()
|
bool PackVmlinuxI386::has_valid_vmlinux_head()
|
||||||
{
|
{
|
||||||
unsigned char buf[5];
|
unsigned char buf[5];
|
||||||
|
|
|
@ -167,6 +167,30 @@ protected:
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class PackVmlinuxPPC32 : public PackVmlinuxBase<ElfClass_BE32>
|
||||||
|
{
|
||||||
|
typedef PackVmlinuxBase<ElfClass_BE32> super;
|
||||||
|
public:
|
||||||
|
PackVmlinuxPPC32(InputFile *f) : super(f, Ehdr::EM_PPC,
|
||||||
|
Ehdr::ELFCLASS32, Ehdr::ELFDATA2MSB, "_vmlinux_start") { }
|
||||||
|
virtual int getFormat() const { return UPX_F_VMLINUX_PPC32; }
|
||||||
|
virtual const char *getName() const { return "vmlinux/ppc32"; }
|
||||||
|
virtual const char *getFullName(const options_t *) const { return "ppc32-linux.kernel.vmlinux"; }
|
||||||
|
virtual const int *getCompressionMethods(int method, int level) const;
|
||||||
|
virtual const int *getFilters() const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void buildLoader(const Filter *ft);
|
||||||
|
virtual void defineDecompressorSymbols();
|
||||||
|
virtual Linker* newLinker() const;
|
||||||
|
virtual bool is_valid_e_entry(Addr);
|
||||||
|
virtual bool has_valid_vmlinux_head();
|
||||||
|
virtual unsigned write_vmlinux_head(
|
||||||
|
OutputFile *const fo,
|
||||||
|
Shdr *const stxt
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
class PackVmlinuxAMD64 : public PackVmlinuxBase<ElfClass_LE64>
|
class PackVmlinuxAMD64 : public PackVmlinuxBase<ElfClass_LE64>
|
||||||
{
|
{
|
||||||
|
|
|
@ -214,6 +214,7 @@ const char *Packer::getDecompressorSections() const
|
||||||
|| UPX_F_BSD_ELF_i386 ==ph.format
|
|| UPX_F_BSD_ELF_i386 ==ph.format
|
||||||
|| UPX_F_VMLINUX_ARMEL ==ph.format
|
|| UPX_F_VMLINUX_ARMEL ==ph.format
|
||||||
|| UPX_F_VMLINUX_ARMEB ==ph.format
|
|| UPX_F_VMLINUX_ARMEB ==ph.format
|
||||||
|
|| UPX_F_VMLINUX_PPC32 ==ph.format
|
||||||
|| UPX_F_MACH_PPC32 ==ph.format
|
|| UPX_F_MACH_PPC32 ==ph.format
|
||||||
|| UPX_F_MACH_i386 ==ph.format
|
|| UPX_F_MACH_i386 ==ph.format
|
||||||
) {
|
) {
|
||||||
|
@ -251,6 +252,7 @@ void Packer::defineDecompressorSymbols()
|
||||||
|| UPX_F_BSD_ELF_i386 ==ph.format
|
|| UPX_F_BSD_ELF_i386 ==ph.format
|
||||||
|| UPX_F_VMLINUX_ARMEL ==ph.format
|
|| UPX_F_VMLINUX_ARMEL ==ph.format
|
||||||
|| UPX_F_VMLINUX_ARMEB ==ph.format
|
|| UPX_F_VMLINUX_ARMEB ==ph.format
|
||||||
|
|| UPX_F_VMLINUX_PPC32 ==ph.format
|
||||||
|| UPX_F_MACH_PPC32 ==ph.format
|
|| UPX_F_MACH_PPC32 ==ph.format
|
||||||
|| UPX_F_MACH_i386 ==ph.format
|
|| UPX_F_MACH_i386 ==ph.format
|
||||||
) {
|
) {
|
||||||
|
|
|
@ -196,6 +196,8 @@ Packer* PackMaster::visitAllPackers(visit_func_t func, InputFile *f, const optio
|
||||||
return p;
|
return p;
|
||||||
if ((p = func(new PackVmlinuxARMEB(f), user)) != NULL)
|
if ((p = func(new PackVmlinuxARMEB(f), user)) != NULL)
|
||||||
return p;
|
return p;
|
||||||
|
if ((p = func(new PackVmlinuxPPC32(f), user)) != NULL)
|
||||||
|
return p;
|
||||||
if ((p = func(new PackVmlinuxAMD64(f), user)) != NULL)
|
if ((p = func(new PackVmlinuxAMD64(f), user)) != NULL)
|
||||||
return p;
|
return p;
|
||||||
if ((p = func(new PackVmlinuxI386(f), user)) != NULL)
|
if ((p = func(new PackVmlinuxI386(f), user)) != NULL)
|
||||||
|
|
|
@ -92,6 +92,8 @@ STUBS += powerpc-darwin.macho-entry.h
|
||||||
STUBS += powerpc-darwin.macho-fold.h
|
STUBS += powerpc-darwin.macho-fold.h
|
||||||
STUBS += powerpc-linux.elf-entry.h
|
STUBS += powerpc-linux.elf-entry.h
|
||||||
STUBS += powerpc-linux.elf-fold.h
|
STUBS += powerpc-linux.elf-fold.h
|
||||||
|
STUBS += powerpc-linux.kernel.vmlinux.h
|
||||||
|
STUBS += powerpc-linux.kernel.vmlinux-head.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -883,6 +885,25 @@ tmp/powerpc-linux.elf-main.o : $(srcdir)/src/$$T.c
|
||||||
$(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
$(call tc,objdump) -dr $(tc_objdump_disasm_options) $@ | $(RTRIM) > $@.disasm
|
||||||
|
|
||||||
|
|
||||||
|
# /***********************************************************************
|
||||||
|
# // powerpc-linux.kernel.vmlinux
|
||||||
|
# ************************************************************************/
|
||||||
|
powerpc-linux.kernel.vmlinu%.h : tc_list = powerpc-linux.kernel default
|
||||||
|
powerpc-linux.kernel.vmlinu%.h : tc_bfdname = elf32-powerpc
|
||||||
|
|
||||||
|
tc.powerpc-linux.kernel.gcc = $(tc.powerpc-linux.elf.gcc)
|
||||||
|
|
||||||
|
powerpc-linux.kernel.vmlinu%.h : $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.bin
|
||||||
|
$(call tc,f-embed_objinfo,tmp/$T.bin)
|
||||||
|
$(call tc,bin2h-c) tmp/$T.bin $@
|
||||||
|
|
||||||
|
powerpc-linux.kernel.vmlinux-head.h : $(srcdir)/src/$$T.S
|
||||||
|
$(call tc,gcc) -c -x assembler-with-cpp $< -o tmp/$T.o
|
||||||
|
$(call tc,objcopy) --output-target binary --only-section .text tmp/$T.o tmp/$T.bin
|
||||||
|
$(call tc,bin2h) tmp/$T.bin $@
|
||||||
|
|
||||||
|
|
||||||
# /***********************************************************************
|
# /***********************************************************************
|
||||||
# // dependencies
|
# // dependencies
|
||||||
# ************************************************************************/
|
# ************************************************************************/
|
||||||
|
|
37
src/stub/powerpc-linux.kernel.vmlinux-head.h
Normal file
37
src/stub/powerpc-linux.kernel.vmlinux-head.h
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
/* powerpc-linux.kernel.vmlinux-head.h
|
||||||
|
created from powerpc-linux.kernel.vmlinux-head.bin, 8 (0x8) bytes
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
Copyright (C) 1996-2007 Laszlo Molnar
|
||||||
|
Copyright (C) 2000-2007 John F. Reiser
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
and/or modify them under the terms of the GNU General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of
|
||||||
|
the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; see the file COPYING.
|
||||||
|
If not, write to the Free Software Foundation, Inc.,
|
||||||
|
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||||
|
<mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_HEAD_SIZE 8
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_HEAD_ADLER32 0x0ec30259
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_HEAD_CRC32 0xbb153f5c
|
||||||
|
|
||||||
|
unsigned char stub_powerpc_linux_kernel_vmlinux_head[8] = {
|
||||||
|
127,232, 2,166, 72, 0, 0, 1 /* 0x 0 */
|
||||||
|
};
|
588
src/stub/powerpc-linux.kernel.vmlinux.h
Normal file
588
src/stub/powerpc-linux.kernel.vmlinux.h
Normal file
|
@ -0,0 +1,588 @@
|
||||||
|
/* powerpc-linux.kernel.vmlinux.h
|
||||||
|
created from powerpc-linux.kernel.vmlinux.bin, 8823 (0x2277) bytes
|
||||||
|
|
||||||
|
This file is part of the UPX executable compressor.
|
||||||
|
|
||||||
|
Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
Copyright (C) 1996-2007 Laszlo Molnar
|
||||||
|
Copyright (C) 2000-2007 John F. Reiser
|
||||||
|
All Rights Reserved.
|
||||||
|
|
||||||
|
UPX and the UCL library are free software; you can redistribute them
|
||||||
|
and/or modify them under the terms of the GNU General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of
|
||||||
|
the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; see the file COPYING.
|
||||||
|
If not, write to the Free Software Foundation, Inc.,
|
||||||
|
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
|
||||||
|
Markus F.X.J. Oberhumer Laszlo Molnar
|
||||||
|
<mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_SIZE 8823
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_ADLER32 0x5634e727
|
||||||
|
#define STUB_POWERPC_LINUX_KERNEL_VMLINUX_CRC32 0x26b45933
|
||||||
|
|
||||||
|
unsigned char stub_powerpc_linux_kernel_vmlinux[8823] = {
|
||||||
|
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, 24,164, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 40, /* 0x 20 */
|
||||||
|
0, 23, 0, 20, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, /* 0x 30 */
|
||||||
|
0, 0, 0, 0, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 40 */
|
||||||
|
77,130, 0, 32, 60, 0, 0, 16,124, 4, 0, 64, 65,128, 0, 8, /* 0x 50 */
|
||||||
|
124, 4, 3,120, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252, /* 0x 60 */
|
||||||
|
124,137, 3,166, 72, 0, 0, 28, 84, 75, 2,186,125, 99, 88, 80, /* 0x 70 */
|
||||||
|
125,107, 58, 20, 81, 98, 1,186,144, 67, 0, 0, 78, 64, 0, 32, /* 0x 80 */
|
||||||
|
132, 67, 0, 4, 84, 75, 85,190,124, 11, 40, 64, 65,162,255,220, /* 0x 90 */
|
||||||
|
66, 0,255,240, 78,128, 0, 32,124, 0, 41,236,125,168, 2,166, /* 0x a0 */
|
||||||
|
40, 7, 0, 2, 64,130, 0,228,144,166, 0, 0,124,132, 26, 20, /* 0x b0 */
|
||||||
|
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x c0 */
|
||||||
|
57, 64,255,255, 72, 0, 0,180,124, 9, 0, 64,125, 41, 72, 20, /* 0x d0 */
|
||||||
|
76,162, 0, 32, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4, /* 0x e0 */
|
||||||
|
124, 9, 0, 64,125, 41, 73, 20, 78,128, 0, 32,141, 3, 0, 1, /* 0x f0 */
|
||||||
|
157, 5, 0, 1, 75,255,255,213, 65,129,255,244, 56,224, 0, 1, /* 0x 100 */
|
||||||
|
75,255,255,201,124,231, 57, 21, 75,255,255,193, 65,160,255,244, /* 0x 110 */
|
||||||
|
52,231,255,253, 57, 0, 0, 0, 65,128, 0, 20,140, 67, 0, 1, /* 0x 120 */
|
||||||
|
84,231, 64, 46,124,234, 16,249, 65,130, 0, 0, 75,255,255,157, /* 0x 130 */
|
||||||
|
125, 8, 65, 21, 75,255,255,149,125, 8, 65, 21, 56,224, 0, 1, /* 0x 140 */
|
||||||
|
64,130, 0, 28, 56,224, 0, 3, 57, 0, 0, 1, 75,255,255,125, /* 0x 150 */
|
||||||
|
125, 8, 65, 21, 75,255,255,117, 65,160,255,244, 32, 74,242,255, /* 0x 160 */
|
||||||
|
125, 8, 57, 20,124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1, /* 0x 170 */
|
||||||
|
157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0,124, 7, 41,236, /* 0x 180 */
|
||||||
|
124, 7, 26, 44, 75,255,255,112,124, 0, 41,236,125,168, 2,166, /* 0x 190 */
|
||||||
|
40, 7, 0, 5, 64,130, 1, 32,144,166, 0, 0,124,132, 26, 20, /* 0x 1a0 */
|
||||||
|
60, 0,128, 0, 61, 32,128, 0, 56, 99,255,255, 56,165,255,255, /* 0x 1b0 */
|
||||||
|
57, 64,255,255, 72, 0, 0,240, 57, 32, 0, 1,125, 41, 28, 44, /* 0x 1c0 */
|
||||||
|
56, 99, 0, 4,124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1, /* 0x 1d0 */
|
||||||
|
78,128, 0, 32,141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64, /* 0x 1e0 */
|
||||||
|
125, 41, 74, 20, 65,162,255,213, 65,129,255,236, 56,224, 0, 1, /* 0x 1f0 */
|
||||||
|
72, 0, 0, 20, 56,231,255,255,125, 41, 72, 21, 65,162,255,189, /* 0x 200 */
|
||||||
|
124,231, 57, 21,125, 41, 72, 21, 65,162,255,177,124,231, 57, 21, /* 0x 210 */
|
||||||
|
124, 9, 0, 64,125, 41, 74, 20, 65,162,255,161, 65,160,255,216, /* 0x 220 */
|
||||||
|
57, 0, 0, 0, 52,231,255,253, 84,231, 64, 46, 65,128, 0, 24, /* 0x 230 */
|
||||||
|
140, 67, 0, 1,124,234, 16,249,125, 74, 14,112, 65,130, 0, 0, /* 0x 240 */
|
||||||
|
72, 0, 0, 12,125, 41, 72, 21, 65,162,255,113,125, 8, 65, 21, /* 0x 250 */
|
||||||
|
125, 41, 72, 21, 65,162,255,101,125, 8, 65, 21, 64,130, 0, 40, /* 0x 260 */
|
||||||
|
57, 0, 0, 1,125, 41, 72, 21, 65,162,255, 81,125, 8, 65, 21, /* 0x 270 */
|
||||||
|
124, 9, 0, 64,125, 41, 74, 20, 65,162,255, 65, 65,160,255,232, /* 0x 280 */
|
||||||
|
57, 8, 0, 2, 32,234,250,255, 57, 8, 0, 1,125, 8, 1,148, /* 0x 290 */
|
||||||
|
124,234, 42, 20,125, 9, 3,166,141, 7, 0, 1,157, 5, 0, 1, /* 0x 2a0 */
|
||||||
|
66, 0,255,248, 56,224, 1, 0,124, 7, 41,236,124, 7, 26, 44, /* 0x 2b0 */
|
||||||
|
75,255,255, 44,124, 0, 41,236,125,168, 2,166, 40, 7, 0, 8, /* 0x 2c0 */
|
||||||
|
64,130, 1, 60,144,166, 0, 0,124,132, 26, 20, 60, 0,128, 0, /* 0x 2d0 */
|
||||||
|
61, 32,128, 0, 56, 99,255,255, 56,165,255,255, 57, 64,255,255, /* 0x 2e0 */
|
||||||
|
72, 0, 1, 12, 57, 32, 0, 1,125, 41, 28, 44, 56, 99, 0, 4, /* 0x 2f0 */
|
||||||
|
124, 9, 0, 64,125, 41, 72, 20, 97, 41, 0, 1, 78,128, 0, 32, /* 0x 300 */
|
||||||
|
141, 3, 0, 1,157, 5, 0, 1,124, 9, 0, 64,125, 41, 74, 20, /* 0x 310 */
|
||||||
|
65,162,255,213, 65,129,255,236, 56,224, 0, 1, 72, 0, 0, 20, /* 0x 320 */
|
||||||
|
56,231,255,255,125, 41, 72, 21, 65,162,255,189,124,231, 57, 20, /* 0x 330 */
|
||||||
|
125, 41, 72, 21, 65,162,255,177,124,231, 57, 20,124, 9, 0, 64, /* 0x 340 */
|
||||||
|
125, 41, 74, 20, 65,162,255,161, 65,160,255,216, 57, 0, 0, 0, /* 0x 350 */
|
||||||
|
52,231,255,253, 84,231, 64, 46, 65,128, 0, 32,140, 67, 0, 1, /* 0x 360 */
|
||||||
|
124,234, 16,249,125, 74, 14,112, 65,130, 0, 0,112, 66, 0, 1, /* 0x 370 */
|
||||||
|
65,162, 0, 80, 72, 0, 0, 20,124, 9, 0, 64,125, 41, 74, 20, /* 0x 380 */
|
||||||
|
65,162,255,101, 65,161, 0, 60, 57, 0, 0, 1,124, 9, 0, 64, /* 0x 390 */
|
||||||
|
125, 41, 74, 20, 65,162,255, 81, 65,161, 0, 40,125, 41, 72, 21, /* 0x 3a0 */
|
||||||
|
65,162,255, 69,125, 8, 65, 20,124, 9, 0, 64,125, 41, 74, 20, /* 0x 3b0 */
|
||||||
|
65,162,255, 53, 65,160,255,232, 57, 8, 0, 2, 72, 0, 0, 16, /* 0x 3c0 */
|
||||||
|
125, 41, 72, 21, 65,162,255, 33,125, 8, 65, 20, 32,234,250,255, /* 0x 3d0 */
|
||||||
|
57, 8, 0, 2,125, 8, 1,148,124,234, 42, 20,125, 9, 3,166, /* 0x 3e0 */
|
||||||
|
141, 7, 0, 1,157, 5, 0, 1, 66, 0,255,248, 56,224, 1, 0, /* 0x 3f0 */
|
||||||
|
124, 7, 41,236,124, 7, 26, 44, 75,255,255, 16, 40, 7, 0, 14, /* 0x 400 */
|
||||||
|
64,130, 0, 16,124, 8, 2,166,124,201, 51,120,129, 6, 0, 0, /* 0x 410 */
|
||||||
|
124,167, 43,120, 56,164,255,254, 56,131, 0, 2,144, 1, 0, 4, /* 0x 420 */
|
||||||
|
136, 3, 0, 0, 84, 11,232,254, 84, 2, 7,126, 56, 96,250, 0, /* 0x 430 */
|
||||||
|
124, 99, 88, 48, 56, 99,241,132,124, 38, 11,120,124, 33, 26, 20, /* 0x 440 */
|
||||||
|
84, 33, 0, 52, 56, 0, 0, 0,124,195, 51,120,144, 9, 0, 0, /* 0x 450 */
|
||||||
|
148, 3,255,252,124, 1, 24, 64, 65,128,255,248,144,193, 0, 0, /* 0x 460 */
|
||||||
|
136, 4,255,255, 56,193, 0, 8, 56, 97, 0, 12, 84, 11,225, 62, /* 0x 470 */
|
||||||
|
84, 0, 7, 62,152, 67, 0, 2,153, 99, 0, 1,152, 3, 0, 0, /* 0x 480 */
|
||||||
|
124, 8, 2,166,148, 33,255,160,189,193, 0, 24,144, 1, 0,100, /* 0x 490 */
|
||||||
|
59, 32, 0, 0,137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0, /* 0x 4a0 */
|
||||||
|
147, 38, 0, 0,147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166, /* 0x 4b0 */
|
||||||
|
124, 18, 2, 20, 57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54, /* 0x 4c0 */
|
||||||
|
127,153, 0, 64, 57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48, /* 0x 4d0 */
|
||||||
|
57, 41,255,255, 57,107,255,255,145, 33, 0, 8,124,206, 51,120, /* 0x 4e0 */
|
||||||
|
124,147, 35,120,124,245, 59,120,125, 20, 67,120,145, 97, 0, 12, /* 0x 4f0 */
|
||||||
|
59, 3, 0, 4, 59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1, /* 0x 500 */
|
||||||
|
58, 32, 0, 1, 58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0, /* 0x 510 */
|
||||||
|
64,156, 0, 28,124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60, /* 0x 520 */
|
||||||
|
125,120, 3, 46, 57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20, /* 0x 530 */
|
||||||
|
126,108,155,120, 56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0, /* 0x 540 */
|
||||||
|
127,140,232, 0, 57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46, /* 0x 550 */
|
||||||
|
65,158, 8,156,136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120, /* 0x 560 */
|
||||||
|
64,153,255,224,127,153,160, 64, 64,156, 8,100, 62,192, 0,255, /* 0x 570 */
|
||||||
|
98,214,255,255,128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56, /* 0x 580 */
|
||||||
|
86,224, 32, 54,124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32, /* 0x 590 */
|
||||||
|
127,140,232, 0, 65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46, /* 0x 5a0 */
|
||||||
|
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46, /* 0x 5b0 */
|
||||||
|
85, 0,170,254,125, 64, 57,214,127,133, 80, 64, 64,156, 1,172, /* 0x 5c0 */
|
||||||
|
128, 1, 0, 12, 47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8, /* 0x 5d0 */
|
||||||
|
127,224, 6, 48,125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0, /* 0x 5e0 */
|
||||||
|
32, 7, 8, 0,124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20, /* 0x 5f0 */
|
||||||
|
124, 6,195, 46,125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1, /* 0x 600 */
|
||||||
|
64,157, 0,180,124, 26,200, 80, 63, 96, 0,255,127,245, 0,174, /* 0x 610 */
|
||||||
|
99,123,255,255, 87,255, 8, 60, 87,252, 5,238,127,136,216, 64, /* 0x 620 */
|
||||||
|
87,128, 8, 60, 84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0, /* 0x 630 */
|
||||||
|
84,169, 64, 46,124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176, /* 0x 640 */
|
||||||
|
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x 650 */
|
||||||
|
161,103, 2, 0, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x 660 */
|
||||||
|
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x 670 */
|
||||||
|
47, 28, 0, 0,125,105, 88, 80,124,131, 35,120,125, 10, 64, 80, /* 0x 680 */
|
||||||
|
64,156, 0, 20,176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24, /* 0x 690 */
|
||||||
|
72, 0, 0, 28,177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1, /* 0x 6a0 */
|
||||||
|
65,154, 0, 12, 47,131, 0,255, 64,157,255,108, 47,131, 0,255, /* 0x 6b0 */
|
||||||
|
65,157, 0,132, 63,224, 0,255, 99,255,255,255,127,136,248, 64, /* 0x 6c0 */
|
||||||
|
84,103, 8, 60,127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, /* 0x 6d0 */
|
||||||
|
65,157, 0, 24, 65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46, /* 0x 6e0 */
|
||||||
|
57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, 85, 0,170,254, /* 0x 6f0 */
|
||||||
|
125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, /* 0x 700 */
|
||||||
|
85,105,217,126,124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, /* 0x 710 */
|
||||||
|
64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16, /* 0x 720 */
|
||||||
|
124,170, 40, 80,125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255, /* 0x 730 */
|
||||||
|
64,157,255,140, 47,151, 0, 3, 84,127, 6, 62,127,249,169,174, /* 0x 740 */
|
||||||
|
59, 57, 0, 1, 65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120, /* 0x 750 */
|
||||||
|
47,151, 0, 9, 65,157, 0, 12, 58,247,255,253, 72, 0, 6,104, /* 0x 760 */
|
||||||
|
58,247,255,250, 72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64, /* 0x 770 */
|
||||||
|
84,224,217,126,124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46, /* 0x 780 */
|
||||||
|
124,170, 40, 80,124,248, 74, 20, 65,157, 0, 32,127,140,232, 0, /* 0x 790 */
|
||||||
|
65,158, 6, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x 7a0 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,161,103, 1,128, 85, 0,170,254, /* 0x 7b0 */
|
||||||
|
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0, /* 0x 7c0 */
|
||||||
|
47,151, 0, 6,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128, /* 0x 7d0 */
|
||||||
|
126, 15,131,120,125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0, /* 0x 7e0 */
|
||||||
|
127, 81,211,120, 64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120, /* 0x 7f0 */
|
||||||
|
56,216, 6,100, 72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64, /* 0x 800 */
|
||||||
|
85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128, /* 0x 810 */
|
||||||
|
65,157, 0, 32,127,140,232, 0, 65,158, 5,212,137, 44, 0, 0, /* 0x 820 */
|
||||||
|
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x 830 */
|
||||||
|
161,103, 1,152, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x 840 */
|
||||||
|
64,156, 0,188, 32, 11, 8, 0,127,138,176, 64,124, 0, 46,112, /* 0x 850 */
|
||||||
|
86,233, 40, 52,124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60, /* 0x 860 */
|
||||||
|
176, 7, 1,152,125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32, /* 0x 870 */
|
||||||
|
127,140,232, 0, 65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46, /* 0x 880 */
|
||||||
|
124, 5, 75,120, 85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224, /* 0x 890 */
|
||||||
|
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72, /* 0x 8a0 */
|
||||||
|
32, 11, 8, 0, 47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20, /* 0x 8b0 */
|
||||||
|
176, 7, 1,224,125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6, /* 0x 8c0 */
|
||||||
|
57, 32, 0, 9, 64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80, /* 0x 8d0 */
|
||||||
|
127,245, 0,174,125, 55, 75,120,127,249,169,174, 59, 57, 0, 1, /* 0x 8e0 */
|
||||||
|
72, 0, 4,228, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x 8f0 */
|
||||||
|
125, 10, 64, 80,176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80, /* 0x 900 */
|
||||||
|
127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x 910 */
|
||||||
|
176, 7, 1,152, 65,157, 0, 32,127,140,232, 0, 65,158, 4,208, /* 0x 920 */
|
||||||
|
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x 930 */
|
||||||
|
57,140, 0, 1,161,103, 1,176, 85, 0,170,254,125, 64, 89,214, /* 0x 940 */
|
||||||
|
127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112, /* 0x 950 */
|
||||||
|
124, 11, 2, 20,125, 72, 83,120,126, 41,139,120,176, 7, 1,176, /* 0x 960 */
|
||||||
|
72, 0, 0,140,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126, /* 0x 970 */
|
||||||
|
124, 0, 88, 80,124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32, /* 0x 980 */
|
||||||
|
127,140,232, 0, 65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46, /* 0x 990 */
|
||||||
|
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200, /* 0x 9a0 */
|
||||||
|
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, /* 0x 9b0 */
|
||||||
|
32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, /* 0x 9c0 */
|
||||||
|
126, 9,131,120,176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126, /* 0x 9d0 */
|
||||||
|
124, 0, 88, 80,125,233,123,120,176, 7, 1,200,124,170, 40, 80, /* 0x 9e0 */
|
||||||
|
125, 10, 64, 80,126, 15,131,120,126, 48,139,120,127, 81,211,120, /* 0x 9f0 */
|
||||||
|
125, 58, 75,120, 47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8, /* 0x a00 */
|
||||||
|
56, 0, 0, 11,124, 23, 3,120, 56,216, 10,104,127,136,176, 64, /* 0x a10 */
|
||||||
|
65,157, 0, 32,127,140,232, 0, 65,158, 3,212,137, 44, 0, 0, /* 0x a20 */
|
||||||
|
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x a30 */
|
||||||
|
161,102, 0, 0, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x a40 */
|
||||||
|
64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20, /* 0x a50 */
|
||||||
|
124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4, /* 0x a60 */
|
||||||
|
59,128, 0, 0, 59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156, /* 0x a70 */
|
||||||
|
125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80, /* 0x a80 */
|
||||||
|
124,170, 40, 80,176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0, /* 0x a90 */
|
||||||
|
65,158, 3, 92,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x aa0 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 2, 85, 0,170,254, /* 0x ab0 */
|
||||||
|
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, /* 0x ac0 */
|
||||||
|
84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20, /* 0x ad0 */
|
||||||
|
125, 72, 83,120, 56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3, /* 0x ae0 */
|
||||||
|
176, 6, 0, 2, 72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80, /* 0x af0 */
|
||||||
|
124,170, 40, 80,176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4, /* 0x b00 */
|
||||||
|
59,128, 0, 16, 59, 96, 0, 8,127,105, 3,166, 63,224, 0,255, /* 0x b10 */
|
||||||
|
99,255,255,255, 56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60, /* 0x b20 */
|
||||||
|
127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, /* 0x b30 */
|
||||||
|
65,154, 2,188,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x b40 */
|
||||||
|
125, 37, 3,120,125,100, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x b50 */
|
||||||
|
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x b60 */
|
||||||
|
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x b70 */
|
||||||
|
125, 72, 83,120,124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80, /* 0x b80 */
|
||||||
|
56,103, 0, 1,125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1, /* 0x b90 */
|
||||||
|
47,151, 0, 3,124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20, /* 0x ba0 */
|
||||||
|
65,157, 1,232, 47,131, 0, 3, 58,247, 0, 7,124,105, 27,120, /* 0x bb0 */
|
||||||
|
64,157, 0, 8, 57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20, /* 0x bc0 */
|
||||||
|
56,201, 3, 96, 57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255, /* 0x bd0 */
|
||||||
|
99,255,255,255, 56,128, 0, 1,127,136,248, 64, 84,135, 8, 60, /* 0x be0 */
|
||||||
|
127, 12,232, 0, 84,169, 64, 46,124,228, 59,120, 65,157, 0, 24, /* 0x bf0 */
|
||||||
|
65,154, 1,252,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x c00 */
|
||||||
|
125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x c10 */
|
||||||
|
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x c20 */
|
||||||
|
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x c30 */
|
||||||
|
125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80, /* 0x c40 */
|
||||||
|
56,135, 0, 1,125,102, 59, 46, 66, 0,255,144, 56,132,255,192, /* 0x c50 */
|
||||||
|
47,132, 0, 3,124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13, /* 0x c60 */
|
||||||
|
124,137, 14,112, 84,128, 7,254, 57,105,255,255, 96, 26, 0, 2, /* 0x c70 */
|
||||||
|
125,105, 3,166, 65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60, /* 0x c80 */
|
||||||
|
125, 56, 74, 20, 84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94, /* 0x c90 */
|
||||||
|
72, 0, 0,100, 57, 41,255,251,125, 41, 3,166, 61, 96, 0,255, /* 0x ca0 */
|
||||||
|
97,107,255,255,127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46, /* 0x cb0 */
|
||||||
|
87, 90, 8, 60, 65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0, /* 0x cc0 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, 85, 8,248,126, /* 0x cd0 */
|
||||||
|
127,133, 64, 64, 65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1, /* 0x ce0 */
|
||||||
|
66, 0,255,196, 56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54, /* 0x cf0 */
|
||||||
|
56,216, 6, 68, 60,128, 0,255, 96,132,255,255, 59,128, 0, 1, /* 0x d00 */
|
||||||
|
59,224, 0, 1,127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0, /* 0x d10 */
|
||||||
|
84,169, 64, 46,124,255, 59,120, 65,157, 0, 24, 65,154, 0,208, /* 0x d20 */
|
||||||
|
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x d30 */
|
||||||
|
125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x d40 */
|
||||||
|
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x d50 */
|
||||||
|
125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120, /* 0x d60 */
|
||||||
|
124, 6, 59, 46, 72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1, /* 0x d70 */
|
||||||
|
125,102, 59, 46,127, 90,227,120, 87,156, 8, 60, 66, 0,255,136, /* 0x d80 */
|
||||||
|
55, 90, 0, 1, 65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2, /* 0x d90 */
|
||||||
|
65,157, 0, 92,124, 26,200, 80,127,245, 0,174, 56, 99,255,255, /* 0x da0 */
|
||||||
|
127,249,169,174, 59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16, /* 0x db0 */
|
||||||
|
124, 20,200, 16,124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57, /* 0x dc0 */
|
||||||
|
64,130,255,212,127,153,160, 64, 65,156,247,172, 60, 0, 0,255, /* 0x dd0 */
|
||||||
|
96, 0,255,255,127,136, 0, 64, 65,157, 0, 32,127,140,232, 0, /* 0x de0 */
|
||||||
|
56, 96, 0, 1, 65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, /* 0x df0 */
|
||||||
|
72, 0, 0, 28, 57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80, /* 0x e00 */
|
||||||
|
144, 14, 0, 0, 56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100, /* 0x e10 */
|
||||||
|
185,193, 0, 24,124, 8, 3,166, 56, 33, 0, 96,124, 8, 2,166, /* 0x e20 */
|
||||||
|
148, 33,255,160,189,193, 0, 24,144, 1, 0,100, 59, 32, 0, 0, /* 0x e30 */
|
||||||
|
137, 67, 0, 2,137, 99, 0, 1,138, 67, 0, 0,147, 38, 0, 0, /* 0x e40 */
|
||||||
|
147, 41, 0, 0,136, 3, 0, 1,125, 40, 3,166,124, 18, 2, 20, /* 0x e50 */
|
||||||
|
57, 32, 3, 0,125, 41, 0, 48, 56, 9, 7, 54,127,153, 0, 64, /* 0x e60 */
|
||||||
|
57, 32, 0, 1,125, 43, 88, 48,125, 41, 80, 48, 57, 41,255,255, /* 0x e70 */
|
||||||
|
57,107,255,255,145, 33, 0, 8,124,206, 51,120,124,147, 35,120, /* 0x e80 */
|
||||||
|
124,245, 59,120,125, 20, 67,120,145, 97, 0, 12, 59, 3, 0, 4, /* 0x e90 */
|
||||||
|
59,224, 0, 0, 58,224, 0, 0, 59, 64, 0, 1, 58, 32, 0, 1, /* 0x ea0 */
|
||||||
|
58, 0, 0, 1, 57,224, 0, 1, 57, 32, 0, 0, 64,156, 0, 28, /* 0x eb0 */
|
||||||
|
124, 9, 3,166, 57, 96, 4, 0, 85, 32, 8, 60,125,120, 3, 46, /* 0x ec0 */
|
||||||
|
57, 41, 0, 1, 66, 0,255,244,127,179, 42, 20,126,108,155,120, /* 0x ed0 */
|
||||||
|
56,160, 0, 0, 57, 0,255,255, 57, 96, 0, 0,127,140,232, 0, /* 0x ee0 */
|
||||||
|
57,107, 0, 1, 47, 11, 0, 4, 84,169, 64, 46, 65,158, 8,156, /* 0x ef0 */
|
||||||
|
136, 12, 0, 0, 57,140, 0, 1,125, 37, 3,120, 64,153,255,224, /* 0x f00 */
|
||||||
|
127,153,160, 64, 64,156, 8,100, 62,192, 0,255, 98,214,255,255, /* 0x f10 */
|
||||||
|
128, 1, 0, 8,127,136,176, 64,127, 35, 0, 56, 86,224, 32, 54, /* 0x f20 */
|
||||||
|
124, 0, 26, 20, 84, 6, 8, 60, 65,157, 0, 32,127,140,232, 0, /* 0x f30 */
|
||||||
|
65,158, 8, 88,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x f40 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,124,230,194, 46, 85, 0,170,254, /* 0x f50 */
|
||||||
|
125, 64, 57,214,127,133, 80, 64, 64,156, 1,172,128, 1, 0, 12, /* 0x f60 */
|
||||||
|
47,151, 0, 6,127, 41, 0, 56, 32, 18, 0, 8,127,224, 6, 48, /* 0x f70 */
|
||||||
|
125, 41,144, 48,125, 41, 2, 20, 29, 41, 6, 0, 32, 7, 8, 0, /* 0x f80 */
|
||||||
|
124, 0, 46,112,124, 7, 2, 20,125, 56, 74, 20,124, 6,195, 46, /* 0x f90 */
|
||||||
|
125, 72, 83,120, 56,201, 14,108, 56, 96, 0, 1, 64,157, 0,180, /* 0x fa0 */
|
||||||
|
124, 26,200, 80, 63, 96, 0,255,127,245, 0,174, 99,123,255,255, /* 0x fb0 */
|
||||||
|
87,255, 8, 60, 87,252, 5,238,127,136,216, 64, 87,128, 8, 60, /* 0x fc0 */
|
||||||
|
84,100, 8, 60,124, 6, 2, 20,127, 12,232, 0, 84,169, 64, 46, /* 0x fd0 */
|
||||||
|
124,224, 34, 20, 65,157, 0, 24, 65,154, 7,176,136, 12, 0, 0, /* 0x fe0 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,161,103, 2, 0, /* 0x ff0 */
|
||||||
|
85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64, /* 0x1000 */
|
||||||
|
124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, 47, 28, 0, 0, /* 0x1010 */
|
||||||
|
125,105, 88, 80,124,131, 35,120,125, 10, 64, 80, 64,156, 0, 20, /* 0x1020 */
|
||||||
|
176, 7, 2, 0,125, 72, 83,120, 65,186, 0, 24, 72, 0, 0, 28, /* 0x1030 */
|
||||||
|
177,103, 2, 0,124,170, 40, 80, 56,100, 0, 1, 65,154, 0, 12, /* 0x1040 */
|
||||||
|
47,131, 0,255, 64,157,255,108, 47,131, 0,255, 65,157, 0,132, /* 0x1050 */
|
||||||
|
63,224, 0,255, 99,255,255,255,127,136,248, 64, 84,103, 8, 60, /* 0x1060 */
|
||||||
|
127, 12,232, 0, 84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, /* 0x1070 */
|
||||||
|
65,154, 7, 24,136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1, /* 0x1080 */
|
||||||
|
125, 37, 3,120,125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, /* 0x1090 */
|
||||||
|
32, 11, 8, 0,127,133, 80, 64,124, 0, 46,112, 85,105,217,126, /* 0x10a0 */
|
||||||
|
124, 11, 2, 20,125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16, /* 0x10b0 */
|
||||||
|
125, 72, 83,120,124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80, /* 0x10c0 */
|
||||||
|
125,102, 59, 46, 56,103, 0, 1, 47,131, 0,255, 64,157,255,140, /* 0x10d0 */
|
||||||
|
47,151, 0, 3, 84,127, 6, 62,127,249,169,174, 59, 57, 0, 1, /* 0x10e0 */
|
||||||
|
65,157, 0, 12, 58,224, 0, 0, 72, 0, 6,120, 47,151, 0, 9, /* 0x10f0 */
|
||||||
|
65,157, 0, 12, 58,247,255,253, 72, 0, 6,104, 58,247,255,250, /* 0x1100 */
|
||||||
|
72, 0, 6, 96,125, 10, 64, 80,127,136,176, 64, 84,224,217,126, /* 0x1110 */
|
||||||
|
124, 0, 56, 80, 86,233, 8, 60,124, 6,195, 46,124,170, 40, 80, /* 0x1120 */
|
||||||
|
124,248, 74, 20, 65,157, 0, 32,127,140,232, 0, 65,158, 6, 92, /* 0x1130 */
|
||||||
|
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x1140 */
|
||||||
|
57,140, 0, 1,161,103, 1,128, 85, 0,170,254,125, 64, 89,214, /* 0x1150 */
|
||||||
|
127,133, 80, 64, 64,156, 0, 64, 32, 11, 8, 0, 47,151, 0, 6, /* 0x1160 */
|
||||||
|
124, 0, 46,112,124, 11, 2, 20,176, 7, 1,128,126, 15,131,120, /* 0x1170 */
|
||||||
|
125, 72, 83,120,126, 48,139,120, 56, 0, 0, 0,127, 81,211,120, /* 0x1180 */
|
||||||
|
64,157, 0, 8, 56, 0, 0, 3,124, 23, 3,120, 56,216, 6,100, /* 0x1190 */
|
||||||
|
72, 0, 2, 24,125, 10, 64, 80,127,136,176, 64, 85, 96,217,126, /* 0x11a0 */
|
||||||
|
124, 0, 88, 80,124,170, 40, 80,176, 7, 1,128, 65,157, 0, 32, /* 0x11b0 */
|
||||||
|
127,140,232, 0, 65,158, 5,212,137, 44, 0, 0, 84,160, 64, 46, /* 0x11c0 */
|
||||||
|
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,103, 1,152, /* 0x11d0 */
|
||||||
|
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0,188, /* 0x11e0 */
|
||||||
|
32, 11, 8, 0,127,138,176, 64,124, 0, 46,112, 86,233, 40, 52, /* 0x11f0 */
|
||||||
|
124, 11, 2, 20,125, 56, 74, 20, 84,107, 8, 60,176, 7, 1,152, /* 0x1200 */
|
||||||
|
125, 72, 83,120,124,233, 90, 20, 65,157, 0, 32,127,140,232, 0, /* 0x1210 */
|
||||||
|
65,158, 5,120,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x1220 */
|
||||||
|
85, 72, 64, 46, 57,140, 0, 1,161,103, 1,224, 85, 0,170,254, /* 0x1230 */
|
||||||
|
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 72, 32, 11, 8, 0, /* 0x1240 */
|
||||||
|
47,153, 0, 0,124, 0, 46,112,124, 11, 2, 20,176, 7, 1,224, /* 0x1250 */
|
||||||
|
125, 72, 83,120, 65,158, 5, 52, 47,151, 0, 6, 57, 32, 0, 9, /* 0x1260 */
|
||||||
|
64,157, 0, 8, 57, 32, 0, 11,124, 26,200, 80,127,245, 0,174, /* 0x1270 */
|
||||||
|
125, 55, 75,120,127,249,169,174, 59, 57, 0, 1, 72, 0, 4,228, /* 0x1280 */
|
||||||
|
85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,125, 10, 64, 80, /* 0x1290 */
|
||||||
|
176, 7, 1,224, 72, 0, 0,252,125, 10, 64, 80,127,136,176, 64, /* 0x12a0 */
|
||||||
|
85, 96,217,126,124, 0, 88, 80,124,170, 40, 80,176, 7, 1,152, /* 0x12b0 */
|
||||||
|
65,157, 0, 32,127,140,232, 0, 65,158, 4,208,137, 44, 0, 0, /* 0x12c0 */
|
||||||
|
84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1, /* 0x12d0 */
|
||||||
|
161,103, 1,176, 85, 0,170,254,125, 64, 89,214,127,133, 80, 64, /* 0x12e0 */
|
||||||
|
64,156, 0, 32, 32, 11, 8, 0,124, 0, 46,112,124, 11, 2, 20, /* 0x12f0 */
|
||||||
|
125, 72, 83,120,126, 41,139,120,176, 7, 1,176, 72, 0, 0,140, /* 0x1300 */
|
||||||
|
125, 10, 64, 80,127,136,176, 64, 85, 96,217,126,124, 0, 88, 80, /* 0x1310 */
|
||||||
|
124,170, 40, 80,176, 7, 1,176, 65,157, 0, 32,127,140,232, 0, /* 0x1320 */
|
||||||
|
65,158, 4,104,137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, /* 0x1330 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,161,103, 1,200, 85, 0,170,254, /* 0x1340 */
|
||||||
|
125, 64, 89,214,127,133, 80, 64, 64,156, 0, 32, 32, 11, 8, 0, /* 0x1350 */
|
||||||
|
124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120,126, 9,131,120, /* 0x1360 */
|
||||||
|
176, 7, 1,200, 72, 0, 0, 32, 85, 96,217,126,124, 0, 88, 80, /* 0x1370 */
|
||||||
|
125,233,123,120,176, 7, 1,200,124,170, 40, 80,125, 10, 64, 80, /* 0x1380 */
|
||||||
|
126, 15,131,120,126, 48,139,120,127, 81,211,120,125, 58, 75,120, /* 0x1390 */
|
||||||
|
47,151, 0, 6, 56, 0, 0, 8, 64,157, 0, 8, 56, 0, 0, 11, /* 0x13a0 */
|
||||||
|
124, 23, 3,120, 56,216, 10,104,127,136,176, 64, 65,157, 0, 32, /* 0x13b0 */
|
||||||
|
127,140,232, 0, 65,158, 3,212,137, 44, 0, 0, 84,160, 64, 46, /* 0x13c0 */
|
||||||
|
124, 5, 75,120, 85, 8, 64, 46, 57,140, 0, 1,161,102, 0, 0, /* 0x13d0 */
|
||||||
|
85, 0,170,254,125, 64, 89,214,127,133, 80, 64, 64,156, 0, 48, /* 0x13e0 */
|
||||||
|
32, 11, 8, 0, 84,105, 32, 54,125, 38, 74, 20,124, 0, 46,112, /* 0x13f0 */
|
||||||
|
124, 11, 2, 20,125, 72, 83,120, 56,137, 0, 4, 59,128, 0, 0, /* 0x1400 */
|
||||||
|
59, 96, 0, 3,176, 6, 0, 0, 72, 0, 0,156,125, 10, 64, 80, /* 0x1410 */
|
||||||
|
127,136,176, 64, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x1420 */
|
||||||
|
176, 6, 0, 0, 65,157, 0, 32,127,140,232, 0, 65,158, 3, 92, /* 0x1430 */
|
||||||
|
137, 44, 0, 0, 84,160, 64, 46,124, 5, 75,120, 85, 8, 64, 46, /* 0x1440 */
|
||||||
|
57,140, 0, 1,161,102, 0, 2, 85, 0,170,254,125, 64, 89,214, /* 0x1450 */
|
||||||
|
127,133, 80, 64, 64,156, 0, 48, 32, 11, 8, 0, 84,105, 32, 54, /* 0x1460 */
|
||||||
|
125, 38, 74, 20,124, 0, 46,112,124, 11, 2, 20,125, 72, 83,120, /* 0x1470 */
|
||||||
|
56,137, 1, 4, 59,128, 0, 8, 59, 96, 0, 3,176, 6, 0, 2, /* 0x1480 */
|
||||||
|
72, 0, 0, 36, 85, 96,217,126,124, 0, 88, 80,124,170, 40, 80, /* 0x1490 */
|
||||||
|
176, 6, 0, 2,125, 10, 64, 80, 56,134, 2, 4, 59,128, 0, 16, /* 0x14a0 */
|
||||||
|
59, 96, 0, 8,127,105, 3,166, 63,224, 0,255, 99,255,255,255, /* 0x14b0 */
|
||||||
|
56, 96, 0, 1,127,136,248, 64, 84,103, 8, 60,127, 12,232, 0, /* 0x14c0 */
|
||||||
|
84,169, 64, 46,124,227, 59,120, 65,157, 0, 24, 65,154, 2,188, /* 0x14d0 */
|
||||||
|
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x14e0 */
|
||||||
|
125,100, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x14f0 */
|
||||||
|
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x1500 */
|
||||||
|
125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120, /* 0x1510 */
|
||||||
|
124, 4, 59, 46, 72, 0, 0, 16,124,170, 40, 80, 56,103, 0, 1, /* 0x1520 */
|
||||||
|
125,100, 59, 46, 66, 0,255,144, 56, 0, 0, 1, 47,151, 0, 3, /* 0x1530 */
|
||||||
|
124, 0,216, 48,124, 96, 24, 80,124, 99,226, 20, 65,157, 1,232, /* 0x1540 */
|
||||||
|
47,131, 0, 3, 58,247, 0, 7,124,105, 27,120, 64,157, 0, 8, /* 0x1550 */
|
||||||
|
57, 32, 0, 3, 85, 41, 56, 48,125, 56, 74, 20, 56,201, 3, 96, /* 0x1560 */
|
||||||
|
57, 32, 0, 6,125, 41, 3,166, 63,224, 0,255, 99,255,255,255, /* 0x1570 */
|
||||||
|
56,128, 0, 1,127,136,248, 64, 84,135, 8, 60,127, 12,232, 0, /* 0x1580 */
|
||||||
|
84,169, 64, 46,124,228, 59,120, 65,157, 0, 24, 65,154, 1,252, /* 0x1590 */
|
||||||
|
136, 12, 0, 0, 85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120, /* 0x15a0 */
|
||||||
|
125,102, 58, 46, 85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0, /* 0x15b0 */
|
||||||
|
127,133, 80, 64,124, 0, 46,112, 85,105,217,126,124, 11, 2, 20, /* 0x15c0 */
|
||||||
|
125, 10, 64, 80,125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120, /* 0x15d0 */
|
||||||
|
124, 6, 59, 46, 72, 0, 0, 16,124,170, 40, 80, 56,135, 0, 1, /* 0x15e0 */
|
||||||
|
125,102, 59, 46, 66, 0,255,144, 56,132,255,192, 47,132, 0, 3, /* 0x15f0 */
|
||||||
|
124,154, 35,120, 64,157, 1, 40, 47,132, 0, 13,124,137, 14,112, /* 0x1600 */
|
||||||
|
84,128, 7,254, 57,105,255,255, 96, 26, 0, 2,125,105, 3,166, /* 0x1610 */
|
||||||
|
65,157, 0, 32,127, 90, 88, 48, 87, 73, 8, 60,125, 56, 74, 20, /* 0x1620 */
|
||||||
|
84,128, 8, 60,125, 32, 72, 80, 56,201, 5, 94, 72, 0, 0,100, /* 0x1630 */
|
||||||
|
57, 41,255,251,125, 41, 3,166, 61, 96, 0,255, 97,107,255,255, /* 0x1640 */
|
||||||
|
127,136, 88, 64,127, 12,232, 0, 84,169, 64, 46, 87, 90, 8, 60, /* 0x1650 */
|
||||||
|
65,157, 0, 24, 65,154, 1, 52,136, 12, 0, 0, 85, 8, 64, 46, /* 0x1660 */
|
||||||
|
57,140, 0, 1,125, 37, 3,120, 85, 8,248,126,127,133, 64, 64, /* 0x1670 */
|
||||||
|
65,156, 0, 12,124,168, 40, 80, 99, 90, 0, 1, 66, 0,255,196, /* 0x1680 */
|
||||||
|
56, 0, 0, 4,124, 9, 3,166, 87, 90, 32, 54, 56,216, 6, 68, /* 0x1690 */
|
||||||
|
60,128, 0,255, 96,132,255,255, 59,128, 0, 1, 59,224, 0, 1, /* 0x16a0 */
|
||||||
|
127,136, 32, 64, 87,231, 8, 60,127, 12,232, 0, 84,169, 64, 46, /* 0x16b0 */
|
||||||
|
124,255, 59,120, 65,157, 0, 24, 65,154, 0,208,136, 12, 0, 0, /* 0x16c0 */
|
||||||
|
85, 8, 64, 46, 57,140, 0, 1,125, 37, 3,120,125,102, 58, 46, /* 0x16d0 */
|
||||||
|
85, 0,170,254,125, 64, 89,214, 32, 11, 8, 0,127,133, 80, 64, /* 0x16e0 */
|
||||||
|
124, 0, 46,112, 85,105,217,126,124, 11, 2, 20,125, 10, 64, 80, /* 0x16f0 */
|
||||||
|
125,105, 88, 80, 64,156, 0, 16,125, 72, 83,120,124, 6, 59, 46, /* 0x1700 */
|
||||||
|
72, 0, 0, 20,124,170, 40, 80, 59,231, 0, 1,125,102, 59, 46, /* 0x1710 */
|
||||||
|
127, 90,227,120, 87,156, 8, 60, 66, 0,255,136, 55, 90, 0, 1, /* 0x1720 */
|
||||||
|
65,130, 0, 72,127,154,200, 64, 56, 99, 0, 2, 65,157, 0, 92, /* 0x1730 */
|
||||||
|
124, 26,200, 80,127,245, 0,174, 56, 99,255,255,127,249,169,174, /* 0x1740 */
|
||||||
|
59, 57, 0, 1, 49, 99,255,255,125, 43, 25, 16,124, 20,200, 16, /* 0x1750 */
|
||||||
|
124, 0, 1, 16,124, 0, 0,208,125, 43, 0, 57, 64,130,255,212, /* 0x1760 */
|
||||||
|
127,153,160, 64, 65,156,247,172, 60, 0, 0,255, 96, 0,255,255, /* 0x1770 */
|
||||||
|
127,136, 0, 64, 65,157, 0, 32,127,140,232, 0, 56, 96, 0, 1, /* 0x1780 */
|
||||||
|
65,158, 0, 40, 72, 0, 0, 12, 56, 96, 0, 1, 72, 0, 0, 28, /* 0x1790 */
|
||||||
|
57,140, 0, 1,125, 40, 2,166,124, 19, 96, 80,144, 14, 0, 0, /* 0x17a0 */
|
||||||
|
56, 96, 0, 0,147, 41, 0, 0,128, 1, 0,100,185,193, 0, 24, /* 0x17b0 */
|
||||||
|
124, 8, 3,166, 56, 33, 0, 96,128, 33, 0, 0,128, 1, 0, 4, /* 0x17c0 */
|
||||||
|
124, 8, 3,166, 78,128, 0, 32, 85, 80, 88, 33,161,216,208,213, /* 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, 45,116,109,112, 47,112,111,119,101, /* 0x17f0 */
|
||||||
|
114,112, 99, 45,108,105,110,117,120, 46,107,101,114,110,101,108, /* 0x1800 */
|
||||||
|
46,118,109,108,105,110,117,120, 46, 98,105,110, 58, 32, 32, 32, /* 0x1810 */
|
||||||
|
32, 32,102,105,108,101, 32,102,111,114,109, 97,116, 32,101,108, /* 0x1820 */
|
||||||
|
102, 51, 50, 45,112,111,119,101,114,112, 99, 10, 10, 83,101, 99, /* 0x1830 */
|
||||||
|
116,105,111,110,115, 58, 10, 73,100,120, 32, 78, 97,109,101, 32, /* 0x1840 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 83,105,122,101, 32, 32, 32, /* 0x1850 */
|
||||||
|
32, 32, 32, 86, 77, 65, 32, 32, 32, 32, 32, 32, 32, 76, 77, 65, /* 0x1860 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 70,105,108,101, 32,111,102,102, 32, /* 0x1870 */
|
||||||
|
32, 65,108,103,110, 32, 32, 70,108, 97,103,115, 10, 32, 32, 48, /* 0x1880 */
|
||||||
|
32, 76, 73, 78, 85, 88, 48, 48, 48, 32, 32, 32, 32, 32, 32, 48, /* 0x1890 */
|
||||||
|
48, 48, 48, 48, 48, 48, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x18a0 */
|
||||||
|
48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x18b0 */
|
||||||
|
48, 48, 48, 51, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, /* 0x18c0 */
|
||||||
|
84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, /* 0x18d0 */
|
||||||
|
65, 68, 79, 78, 76, 89, 10, 32, 32, 49, 32, 76, 73, 78, 85, 88, /* 0x18e0 */
|
||||||
|
48, 49, 48, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, /* 0x18f0 */
|
||||||
|
56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1900 */
|
||||||
|
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 51, 99, 32, /* 0x1910 */
|
||||||
|
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1920 */
|
||||||
|
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1930 */
|
||||||
|
10, 32, 32, 50, 32, 76, 73, 78, 85, 88, 48, 50, 48, 32, 32, 32, /* 0x1940 */
|
||||||
|
32, 32, 32, 48, 48, 48, 48, 48, 48, 54, 52, 32, 32, 48, 48, 48, /* 0x1950 */
|
||||||
|
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1960 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 52, 52, 32, 32, 50, 42, 42, 48, 32, /* 0x1970 */
|
||||||
|
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, 79, /* 0x1980 */
|
||||||
|
78, 76, 89, 10, 32, 32, 51, 32, 76, 73, 78, 85, 88, 48, 51, 48, /* 0x1990 */
|
||||||
|
32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, /* 0x19a0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x19b0 */
|
||||||
|
48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 97, 56, 32, 32, 50, 42, /* 0x19c0 */
|
||||||
|
42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, /* 0x19d0 */
|
||||||
|
65, 68, 79, 78, 76, 89, 10, 32, 32, 52, 32, 78, 82, 86, 50, 66, /* 0x19e0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48,102, /* 0x19f0 */
|
||||||
|
48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, /* 0x1a00 */
|
||||||
|
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 97, 56, 32, /* 0x1a10 */
|
||||||
|
32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, /* 0x1a20 */
|
||||||
|
32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, /* 0x1a30 */
|
||||||
|
10, 32, 32, 53, 32, 78, 82, 86, 50, 68, 32, 32, 32, 32, 32, 32, /* 0x1a40 */
|
||||||
|
32, 32, 32, 48, 48, 48, 48, 48, 49, 50, 99, 32, 32, 48, 48, 48, /* 0x1a50 */
|
||||||
|
48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1a60 */
|
||||||
|
32, 48, 48, 48, 48, 48, 49, 57, 56, 32, 32, 50, 42, 42, 48, 32, /* 0x1a70 */
|
||||||
|
32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 76, 79, 67, /* 0x1a80 */
|
||||||
|
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 54, 32, 78, /* 0x1a90 */
|
||||||
|
82, 86, 50, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1aa0 */
|
||||||
|
48, 48, 49, 52, 56, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1ab0 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1ac0 */
|
||||||
|
50, 99, 52, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1ad0 */
|
||||||
|
78, 84, 83, 44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, /* 0x1ae0 */
|
||||||
|
79, 78, 76, 89, 10, 32, 32, 55, 32, 76, 90, 77, 65, 32, 32, 32, /* 0x1af0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1b00 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1b10 */
|
||||||
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 48, 99, 32, 32, 50, /* 0x1b20 */
|
||||||
|
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1b30 */
|
||||||
|
69, 65, 68, 79, 78, 76, 89, 10, 32, 32, 56, 32, 76, 90, 77, 65, /* 0x1b40 */
|
||||||
|
95, 69, 76, 70, 48, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1b50 */
|
||||||
|
56, 52, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1b60 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 52, 48, 99, /* 0x1b70 */
|
||||||
|
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1b80 */
|
||||||
|
44, 32, 82, 69, 76, 79, 67, 44, 32, 82, 69, 65, 68, 79, 78, 76, /* 0x1b90 */
|
||||||
|
89, 10, 32, 32, 57, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, /* 0x1ba0 */
|
||||||
|
32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, 32, 48, 48, /* 0x1bb0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1bc0 */
|
||||||
|
32, 32, 48, 48, 48, 48, 48, 52, 57, 48, 32, 32, 50, 42, 42, 48, /* 0x1bd0 */
|
||||||
|
32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, 69, 65, 68, /* 0x1be0 */
|
||||||
|
79, 78, 76, 89, 10, 32, 49, 48, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1bf0 */
|
||||||
|
67, 50, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 57, 57, 99, 32, /* 0x1c00 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 48, /* 0x1c10 */
|
||||||
|
48, 48, 48, 32, 32, 48, 48, 48, 48, 48,101, 50, 99, 32, 32, 50, /* 0x1c20 */
|
||||||
|
42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, 44, 32, 82, /* 0x1c30 */
|
||||||
|
69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 49, 32, 76, 90, 77, 65, /* 0x1c40 */
|
||||||
|
95, 68, 69, 67, 51, 48, 32, 32, 32, 32, 48, 48, 48, 48, 48, 48, /* 0x1c50 */
|
||||||
|
49, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, /* 0x1c60 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, 55, 99, 56, /* 0x1c70 */
|
||||||
|
32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, 78, 84, 83, /* 0x1c80 */
|
||||||
|
44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 32, 49, 50, 32, 85, /* 0x1c90 */
|
||||||
|
80, 88, 49, 72, 69, 65, 68, 32, 32, 32, 32, 32, 32, 48, 48, 48, /* 0x1ca0 */
|
||||||
|
48, 48, 48, 50, 48, 32, 32, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1cb0 */
|
||||||
|
32, 48, 48, 48, 48, 48, 48, 48, 48, 32, 32, 48, 48, 48, 48, 49, /* 0x1cc0 */
|
||||||
|
55,100, 56, 32, 32, 50, 42, 42, 48, 32, 32, 67, 79, 78, 84, 69, /* 0x1cd0 */
|
||||||
|
78, 84, 83, 44, 32, 82, 69, 65, 68, 79, 78, 76, 89, 10, 83, 89, /* 0x1ce0 */
|
||||||
|
77, 66, 79, 76, 32, 84, 65, 66, 76, 69, 58, 10, 48, 48, 48, 48, /* 0x1cf0 */
|
||||||
|
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, 73, 78, /* 0x1d00 */
|
||||||
|
85, 88, 48, 50, 48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, /* 0x1d10 */
|
||||||
|
73, 78, 85, 88, 48, 50, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1d20 */
|
||||||
|
32,108, 32, 32, 32, 32,100, 32, 32, 76, 73, 78, 85, 88, 48, 51, /* 0x1d30 */
|
||||||
|
48, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 73, 78, 85, 88, /* 0x1d40 */
|
||||||
|
48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1d50 */
|
||||||
|
32, 32,100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 9, /* 0x1d60 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, /* 0x1d70 */
|
||||||
|
67, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, /* 0x1d80 */
|
||||||
|
32, 32,100, 32, 32, 76, 73, 78, 85, 88, 48, 48, 48, 9, 48, 48, /* 0x1d90 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 76, 73, 78, 85, 88, 48, 48, 48, 10, /* 0x1da0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, /* 0x1db0 */
|
||||||
|
32, 76, 73, 78, 85, 88, 48, 49, 48, 9, 48, 48, 48, 48, 48, 48, /* 0x1dc0 */
|
||||||
|
48, 48, 32, 76, 73, 78, 85, 88, 48, 49, 48, 10, 48, 48, 48, 48, /* 0x1dd0 */
|
||||||
|
48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, /* 0x1de0 */
|
||||||
|
50, 66, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, /* 0x1df0 */
|
||||||
|
66, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e00 */
|
||||||
|
100, 32, 32, 78, 82, 86, 50, 68, 9, 48, 48, 48, 48, 48, 48, 48, /* 0x1e10 */
|
||||||
|
48, 32, 78, 82, 86, 50, 68, 10, 48, 48, 48, 48, 48, 48, 48, 48, /* 0x1e20 */
|
||||||
|
32,108, 32, 32, 32, 32,100, 32, 32, 78, 82, 86, 50, 69, 9, 48, /* 0x1e30 */
|
||||||
|
48, 48, 48, 48, 48, 48, 48, 32, 78, 82, 86, 50, 69, 10, 48, 48, /* 0x1e40 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32,100, 32, 32, 76, /* 0x1e50 */
|
||||||
|
90, 77, 65, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32, 76, 90, 77, /* 0x1e60 */
|
||||||
|
65, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1e70 */
|
||||||
|
100, 32, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, 48, 9, 48, 48, /* 0x1e80 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 69, 76, 70, 48, /* 0x1e90 */
|
||||||
|
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1ea0 */
|
||||||
|
100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, 48, 9, 48, 48, /* 0x1eb0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 49, /* 0x1ec0 */
|
||||||
|
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1ed0 */
|
||||||
|
100, 32, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, 48, 9, 48, 48, /* 0x1ee0 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 76, 90, 77, 65, 95, 68, 69, 67, 50, /* 0x1ef0 */
|
||||||
|
48, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32,108, 32, 32, 32, 32, /* 0x1f00 */
|
||||||
|
100, 32, 32, 85, 80, 88, 49, 72, 69, 65, 68, 9, 48, 48, 48, 48, /* 0x1f10 */
|
||||||
|
48, 48, 48, 48, 32, 85, 80, 88, 49, 72, 69, 65, 68, 10, 48, 48, /* 0x1f20 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, /* 0x1f30 */
|
||||||
|
85, 78, 68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,102,105, /* 0x1f40 */
|
||||||
|
108,116,101,114, 95,108,101,110,103,116,104, 10, 48, 48, 48, 48, /* 0x1f50 */
|
||||||
|
48, 48, 48, 48, 32, 32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, /* 0x1f60 */
|
||||||
|
68, 42, 9, 48, 48, 48, 48, 48, 48, 48, 48, 32,102,105,108,116, /* 0x1f70 */
|
||||||
|
101,114, 95, 99,116,111, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, /* 0x1f80 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 42, 85, 78, 68, 42, 9, 48, 48, /* 0x1f90 */
|
||||||
|
48, 48, 48, 48, 48, 48, 32,101,111,102, 95,110,114,118, 10, 10, /* 0x1fa0 */
|
||||||
|
82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x1fb0 */
|
||||||
|
68, 83, 32, 70, 79, 82, 32, 91, 76, 73, 78, 85, 88, 48, 48, 48, /* 0x1fc0 */
|
||||||
|
93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, /* 0x1fd0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, /* 0x1fe0 */
|
||||||
|
76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, /* 0x1ff0 */
|
||||||
|
80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, 32, 32, 32, 76, /* 0x2000 */
|
||||||
|
73, 78, 85, 88, 48, 51, 48, 10, 48, 48, 48, 48, 48, 48, 48, 52, /* 0x2010 */
|
||||||
|
32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 50, 52, 32, 32, 32, 32, /* 0x2020 */
|
||||||
|
32, 32, 32, 76, 73, 78, 85, 88, 48, 50, 48, 10, 10, 82, 69, 76, /* 0x2030 */
|
||||||
|
79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, /* 0x2040 */
|
||||||
|
70, 79, 82, 32, 91, 76, 73, 78, 85, 88, 48, 49, 48, 93, 58, 10, /* 0x2050 */
|
||||||
|
79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, /* 0x2060 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, /* 0x2070 */
|
||||||
|
10, 48, 48, 48, 48, 48, 48, 48, 48, 32, 82, 95, 80, 80, 67, 95, /* 0x2080 */
|
||||||
|
65, 68, 68, 82, 51, 50, 32, 32, 32, 32, 32, 32,102,105,108,116, /* 0x2090 */
|
||||||
|
101,114, 95,108,101,110,103,116,104, 10, 48, 48, 48, 48, 48, 48, /* 0x20a0 */
|
||||||
|
48, 52, 32, 82, 95, 80, 80, 67, 95, 65, 68, 68, 82, 51, 50, 32, /* 0x20b0 */
|
||||||
|
32, 32, 32, 32, 32,102,105,108,116,101,114, 95, 99,116,111, 10, /* 0x20c0 */
|
||||||
|
10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, /* 0x20d0 */
|
||||||
|
82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, 86, 50, 66, 93, 58, /* 0x20e0 */
|
||||||
|
10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, 80, 69, 32, 32, /* 0x20f0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 86, 65, 76, 85, /* 0x2100 */
|
||||||
|
69, 10, 48, 48, 48, 48, 48, 48, 57, 48, 32, 82, 95, 80, 80, 67, /* 0x2110 */
|
||||||
|
95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, 32,101,111,102, /* 0x2120 */
|
||||||
|
95,110,114,118, 10, 10, 82, 69, 76, 79, 67, 65, 84, 73, 79, 78, /* 0x2130 */
|
||||||
|
32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, 82, 32, 91, 78, 82, /* 0x2140 */
|
||||||
|
86, 50, 68, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, /* 0x2150 */
|
||||||
|
89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2160 */
|
||||||
|
32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 98, 52, 32, /* 0x2170 */
|
||||||
|
82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, /* 0x2180 */
|
||||||
|
32, 32,101,111,102, 95,110,114,118, 10, 10, 82, 69, 76, 79, 67, /* 0x2190 */
|
||||||
|
65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, 68, 83, 32, 70, 79, /* 0x21a0 */
|
||||||
|
82, 32, 91, 78, 82, 86, 50, 69, 93, 58, 10, 79, 70, 70, 83, 69, /* 0x21b0 */
|
||||||
|
84, 32, 32, 32, 84, 89, 80, 69, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x21c0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 86, 65, 76, 85, 69, 10, 48, 48, 48, 48, /* 0x21d0 */
|
||||||
|
48, 48, 98, 52, 32, 82, 95, 80, 80, 67, 95, 82, 69, 76, 49, 52, /* 0x21e0 */
|
||||||
|
32, 32, 32, 32, 32, 32, 32,101,111,102, 95,110,114,118, 10, 10, /* 0x21f0 */
|
||||||
|
82, 69, 76, 79, 67, 65, 84, 73, 79, 78, 32, 82, 69, 67, 79, 82, /* 0x2200 */
|
||||||
|
68, 83, 32, 70, 79, 82, 32, 91, 76, 90, 77, 65, 95, 69, 76, 70, /* 0x2210 */
|
||||||
|
48, 48, 93, 58, 10, 79, 70, 70, 83, 69, 84, 32, 32, 32, 84, 89, /* 0x2220 */
|
||||||
|
80, 69, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, /* 0x2230 */
|
||||||
|
86, 65, 76, 85, 69, 10, 48, 48, 48, 48, 48, 48, 48, 52, 32, 82, /* 0x2240 */
|
||||||
|
95, 80, 80, 67, 95, 82, 69, 76, 49, 52, 32, 32, 32, 32, 32, 32, /* 0x2250 */
|
||||||
|
32, 76, 90, 77, 65, 95, 68, 69, 67, 51, 48, 43, 48,120, 48, 48, /* 0x2260 */
|
||||||
|
48, 48, 48, 48, 49, 48, 10 /* 0x2270 */
|
||||||
|
};
|
|
@ -62,3 +62,8 @@ L20:
|
||||||
bdnz+ L20 # if (0!=--ctr) goto L20; // likely
|
bdnz+ L20 # if (0!=--ctr) goto L20; // likely
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
#undef ptr0
|
||||||
|
#undef ftid
|
||||||
|
#undef cto8
|
||||||
|
#undef len
|
||||||
|
#undef ptr
|
||||||
|
|
31
src/stub/src/powerpc-linux.kernel.vmlinux-head.S
Normal file
31
src/stub/src/powerpc-linux.kernel.vmlinux-head.S
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/*
|
||||||
|
; powerpc-linux.kernel.vmlinux-head.S -- set up stack for vmlinux/powerpc format
|
||||||
|
;
|
||||||
|
; This file is part of the UPX executable compressor.
|
||||||
|
;
|
||||||
|
; Copyright (C) 2007 John Reiser
|
||||||
|
; All Rights Reserved.
|
||||||
|
;
|
||||||
|
; UPX and the UCL library are free software; you can redistribute them
|
||||||
|
; and/or modify them under the terms of the GNU General Public License as
|
||||||
|
; published by the Free Software Foundation; either version 2 of
|
||||||
|
; the License, or (at your option) any later version.
|
||||||
|
;
|
||||||
|
; This program is distributed in the hope that it will be useful,
|
||||||
|
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
; GNU General Public License for more details.
|
||||||
|
;
|
||||||
|
; You should have received a copy of the GNU General Public License
|
||||||
|
; along with this program; see the file COPYING.
|
||||||
|
; If not, write to the Free Software Foundation, Inc.,
|
||||||
|
; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
;
|
||||||
|
; John Reiser
|
||||||
|
; <jreiser@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
mflr 31
|
||||||
|
bl LINUX000
|
||||||
|
|
||||||
|
// vi:ts=8:et:nowrap
|
113
src/stub/src/powerpc-linux.kernel.vmlinux.S
Normal file
113
src/stub/src/powerpc-linux.kernel.vmlinux.S
Normal file
|
@ -0,0 +1,113 @@
|
||||||
|
/*
|
||||||
|
; powerpc-linux.kernel.vmlinux.S -- loader & decompressor for the vmlinux/powerpc format
|
||||||
|
;
|
||||||
|
; This file is part of the UPX executable compressor.
|
||||||
|
;
|
||||||
|
; Copyright (C) 1996-2007 Markus Franz Xaver Johannes Oberhumer
|
||||||
|
; Copyright (C) 1996-2007 Laszlo Molnar
|
||||||
|
; Copyright (C) 2004-2007 John Reiser
|
||||||
|
; All Rights Reserved.
|
||||||
|
;
|
||||||
|
; UPX and the UCL library are free software; you can redistribute them
|
||||||
|
; and/or modify them under the terms of the GNU General Public License as
|
||||||
|
; published by the Free Software Foundation; either version 2 of
|
||||||
|
; the License, or (at your option) any later version.
|
||||||
|
;
|
||||||
|
; This program is distributed in the hope that it will be useful,
|
||||||
|
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
; GNU General Public License for more details.
|
||||||
|
;
|
||||||
|
; You should have received a copy of the GNU General Public License
|
||||||
|
; along with this program; see the file COPYING.
|
||||||
|
; If not, write to the Free Software Foundation, Inc.,
|
||||||
|
; 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
|
;
|
||||||
|
; Markus F.X.J. Oberhumer Laszlo Molnar
|
||||||
|
; <mfx@users.sourceforge.net> <ml1050@users.sourceforge.net>
|
||||||
|
;
|
||||||
|
; John Reiser
|
||||||
|
; <jreiser@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "arch/powerpc/32/macros.S"
|
||||||
|
#include "arch/powerpc/32/regs.h"
|
||||||
|
|
||||||
|
// offsets in struct b_info
|
||||||
|
sz_unc = 0
|
||||||
|
sz_cpr = 4
|
||||||
|
b_method = 8
|
||||||
|
b_ftid = 9
|
||||||
|
b_cto8 = 10
|
||||||
|
sz_b_info = 12
|
||||||
|
|
||||||
|
// ========== ENTRY POINT
|
||||||
|
|
||||||
|
section LINUX000 // adjust parameters; call decompressor
|
||||||
|
b uncompress
|
||||||
|
b unfilter
|
||||||
|
|
||||||
|
section LINUX010 // call unfilter
|
||||||
|
.long filter_length
|
||||||
|
.long filter_cto
|
||||||
|
|
||||||
|
section LINUX020 // adjust return value
|
||||||
|
|
||||||
|
// ========== UNFILTER
|
||||||
|
|
||||||
|
unfilter:
|
||||||
|
//section ctok32.00
|
||||||
|
#include "arch/powerpc/32/bxx.S"
|
||||||
|
|
||||||
|
// ========== DECOMPRESSION
|
||||||
|
|
||||||
|
section LINUX030 // decompressor
|
||||||
|
uncompress:
|
||||||
|
|
||||||
|
SZ_DLINE=128 # size of data cache line in Apple G5
|
||||||
|
|
||||||
|
/* register assingments for NRV algorithms */
|
||||||
|
#define hibit r0 /* holds 0x80000000 during decompress */
|
||||||
|
|
||||||
|
#define src a0
|
||||||
|
#define lsrc a1
|
||||||
|
#define dst a2
|
||||||
|
#define ldst a3 /* Out: actually a reference: &len_dst */
|
||||||
|
#define meth a4
|
||||||
|
|
||||||
|
#define off a4
|
||||||
|
#define len a5
|
||||||
|
#define bits a6
|
||||||
|
#define disp a7
|
||||||
|
|
||||||
|
|
||||||
|
section NRV2B
|
||||||
|
#include "arch/powerpc/32/nrv2b_d.S"
|
||||||
|
|
||||||
|
section NRV2D
|
||||||
|
#include "arch/powerpc/32/nrv2d_d.S"
|
||||||
|
|
||||||
|
section NRV2E
|
||||||
|
#include "arch/powerpc/32/nrv2e_d.S"
|
||||||
|
|
||||||
|
#undef hibit
|
||||||
|
|
||||||
|
#undef src
|
||||||
|
#undef lsrc
|
||||||
|
#undef dst
|
||||||
|
#undef ldst
|
||||||
|
#undef meth
|
||||||
|
|
||||||
|
#undef off
|
||||||
|
#undef len
|
||||||
|
#undef bits
|
||||||
|
#undef disp
|
||||||
|
|
||||||
|
section LZMA
|
||||||
|
#include "arch/powerpc/32/lzma_d.S"
|
||||||
|
|
||||||
|
// ========== IDENT
|
||||||
|
|
||||||
|
#include "include/header.S"
|
||||||
|
|
||||||
|
// vi:ts=8:et:nowrap
|
60
src/stub/tmp/powerpc-linux.kernel.vmlinux.bin.dump
Normal file
60
src/stub/tmp/powerpc-linux.kernel.vmlinux.bin.dump
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
tmp/powerpc-linux.kernel.vmlinux.bin: file format elf32-powerpc
|
||||||
|
|
||||||
|
Sections:
|
||||||
|
Idx Name Size VMA LMA File off Algn Flags
|
||||||
|
0 LINUX000 00000008 00000000 00000000 00000034 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
1 LINUX010 00000008 00000000 00000000 0000003c 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
2 LINUX020 00000064 00000000 00000000 00000044 2**0 CONTENTS, READONLY
|
||||||
|
3 LINUX030 00000000 00000000 00000000 000000a8 2**0 CONTENTS, READONLY
|
||||||
|
4 NRV2B 000000f0 00000000 00000000 000000a8 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
5 NRV2D 0000012c 00000000 00000000 00000198 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
6 NRV2E 00000148 00000000 00000000 000002c4 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
7 LZMA 00000000 00000000 00000000 0000040c 2**0 CONTENTS, READONLY
|
||||||
|
8 LZMA_ELF00 00000084 00000000 00000000 0000040c 2**0 CONTENTS, RELOC, READONLY
|
||||||
|
9 LZMA_DEC10 0000099c 00000000 00000000 00000490 2**0 CONTENTS, READONLY
|
||||||
|
10 LZMA_DEC20 0000099c 00000000 00000000 00000e2c 2**0 CONTENTS, READONLY
|
||||||
|
11 LZMA_DEC30 00000010 00000000 00000000 000017c8 2**0 CONTENTS, READONLY
|
||||||
|
12 UPX1HEAD 00000020 00000000 00000000 000017d8 2**0 CONTENTS, READONLY
|
||||||
|
SYMBOL TABLE:
|
||||||
|
00000000 l d LINUX020 00000000 LINUX020
|
||||||
|
00000000 l d LINUX030 00000000 LINUX030
|
||||||
|
00000000 l d LZMA_DEC30 00000000 LZMA_DEC30
|
||||||
|
00000000 l d LINUX000 00000000 LINUX000
|
||||||
|
00000000 l d LINUX010 00000000 LINUX010
|
||||||
|
00000000 l d NRV2B 00000000 NRV2B
|
||||||
|
00000000 l d NRV2D 00000000 NRV2D
|
||||||
|
00000000 l d NRV2E 00000000 NRV2E
|
||||||
|
00000000 l d LZMA 00000000 LZMA
|
||||||
|
00000000 l d LZMA_ELF00 00000000 LZMA_ELF00
|
||||||
|
00000000 l d LZMA_DEC10 00000000 LZMA_DEC10
|
||||||
|
00000000 l d LZMA_DEC20 00000000 LZMA_DEC20
|
||||||
|
00000000 l d UPX1HEAD 00000000 UPX1HEAD
|
||||||
|
00000000 *UND* 00000000 filter_length
|
||||||
|
00000000 *UND* 00000000 filter_cto
|
||||||
|
00000000 *UND* 00000000 eof_nrv
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [LINUX000]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000000 R_PPC_REL24 LINUX030
|
||||||
|
00000004 R_PPC_REL24 LINUX020
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [LINUX010]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000000 R_PPC_ADDR32 filter_length
|
||||||
|
00000004 R_PPC_ADDR32 filter_cto
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [NRV2B]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000090 R_PPC_REL14 eof_nrv
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [NRV2D]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
000000b4 R_PPC_REL14 eof_nrv
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [NRV2E]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
000000b4 R_PPC_REL14 eof_nrv
|
||||||
|
|
||||||
|
RELOCATION RECORDS FOR [LZMA_ELF00]:
|
||||||
|
OFFSET TYPE VALUE
|
||||||
|
00000004 R_PPC_REL14 LZMA_DEC30+0x00000010
|
Loading…
Reference in New Issue
Block a user