diff --git a/src/p_armpe.cpp b/src/p_armpe.cpp index cbfcfdfe..66b8f2ef 100644 --- a/src/p_armpe.cpp +++ b/src/p_armpe.cpp @@ -2508,16 +2508,20 @@ void PackArmPe::unpack(OutputFile *fo) // write decompressed file if (fo) { + unsigned ic; + for (ic = 0; ic < objs && osection[ic].rawdataptr == 0; ic++) + ; + ibuf.dealloc(); - ibuf.alloc(osection[0].rawdataptr); + ibuf.alloc(osection[ic].rawdataptr); ibuf.clear(); infoHeader("[Writing uncompressed file]"); // write loader + compressed file fo->write(&oh,sizeof(oh)); fo->write(osection,objs * sizeof(pe_section_t)); - fo->write(ibuf,osection[0].rawdataptr - fo->getBytesWritten()); - for(unsigned ic = 0; ic < objs; ic++) + fo->write(ibuf,osection[ic].rawdataptr - fo->getBytesWritten()); + for (ic = 0; ic < objs; ic++) if (osection[ic].rawdataptr) fo->write(obuf + osection[ic].vaddr - rvamin,ALIGN_UP(osection[ic].size,oh.filealign)); copyOverlay(fo, overlay, &obuf); diff --git a/src/p_w32pe.cpp b/src/p_w32pe.cpp index e86a7491..73157be3 100644 --- a/src/p_w32pe.cpp +++ b/src/p_w32pe.cpp @@ -2600,16 +2600,20 @@ void PackW32Pe::unpack(OutputFile *fo) // write decompressed file if (fo) { + unsigned ic; + for (ic = 0; ic < objs && osection[ic].rawdataptr == 0; ic++) + ; + ibuf.dealloc(); - ibuf.alloc(osection[0].rawdataptr); + ibuf.alloc(osection[ic].rawdataptr); ibuf.clear(); infoHeader("[Writing uncompressed file]"); // write loader + compressed file fo->write(&oh,sizeof(oh)); fo->write(osection,objs * sizeof(pe_section_t)); - fo->write(ibuf,osection[0].rawdataptr - fo->getBytesWritten()); - for(unsigned ic = 0; ic < objs; ic++) + fo->write(ibuf,osection[ic].rawdataptr - fo->getBytesWritten()); + for (ic = 0; ic < objs; ic++) if (osection[ic].rawdataptr) fo->write(obuf + osection[ic].vaddr - rvamin,ALIGN_UP(osection[ic].size,oh.filealign)); copyOverlay(fo, overlay, &obuf); diff --git a/src/stub/fold_elf32arm.S b/src/stub/fold_elf32arm.S index fb01ef21..c628fedc 100644 --- a/src/stub/fold_elf32arm.S +++ b/src/stub/fold_elf32arm.S @@ -87,7 +87,8 @@ f_unfilter: @ (char *ptr, uint len, uint cto, uint fid) cto .req r2 @ unused fid .req r3 - tmp .req fid @ disjoint lifetimes + t1 .req r2 + t2 .req r3 and fid,fid,#0xff cmp fid,#0x50 @ last use of fid @@ -98,17 +99,17 @@ f_unfilter: @ (char *ptr, uint len, uint cto, uint fid) moveq pc,lr @ no-op if either len or ptr is 0 top_unf: - subs len,len,#1 @ condition code holds until tst_unf - ldr r3,[ptr,len,lsl #2] - and tmp,r3,#0x0f<<24 - cmp tmp, #0x0b<<24 - bne tst_unf - and tmp,r3,#0xff<<24 - sub r3,r3,len @ convert to word-relative - bic r3,r3, #0xff<<24 - orr r3,r3,tmp - str r3,[ptr,len,lsl #2] + sub len,len,#1 + ldr t1,[ptr,len,lsl #2] + and t2,t1,#0x0f<<24 + cmp t2, #0x0b<<24; bne tst_unf @ not 'bl' subroutine call + and t2,t1,#0xff<<24 @ all the non-displacement bits + sub t1,t1,len @ convert to word-relative displacement + bic t1,t1,#0xff<<24 @ restrict to displacement field + orr t1,t1,t2 @ re-combine + str t1,[ptr,len,lsl #2] tst_unf: + cmp len,#0 bne top_unf mov pc,lr diff --git a/src/stub/fold_elf32arm.h b/src/stub/fold_elf32arm.h index dd2423a3..d3810e8d 100644 --- a/src/stub/fold_elf32arm.h +++ b/src/stub/fold_elf32arm.h @@ -1,4 +1,4 @@ -/* fold_elf32arm.h -- created from fold_elf32arm.bin, 2076 (0x81c) bytes +/* fold_elf32arm.h -- created from fold_elf32arm.bin, 2088 (0x828) bytes This file is part of the UPX executable compressor. @@ -27,139 +27,140 @@ */ -#define LINUX_ELF32ARM_FOLD_SIZE 2076 -#define LINUX_ELF32ARM_FOLD_ADLER32 0x40fd5272 -#define LINUX_ELF32ARM_FOLD_CRC32 0x0e817a00 +#define LINUX_ELF32ARM_FOLD_SIZE 2088 +#define LINUX_ELF32ARM_FOLD_ADLER32 0x08175692 +#define LINUX_ELF32ARM_FOLD_CRC32 0x96d7f689 -unsigned char linux_elf32arm_fold[2076] = { +unsigned char linux_elf32arm_fold[2088] = { 127, 69, 76, 70, 1, 1, 1, 97, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 2, 0, 40, 0, 1, 0, 0, 0,128,128, 0, 0, 52, 0, 0, 0, /* 0x 10 */ 0, 0, 0, 0, 2, 0, 0, 0, 52, 0, 32, 0, 2, 0, 0, 0, /* 0x 20 */ 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, /* 0x 30 */ - 0,128, 0, 0, 28, 8, 0, 0, 28, 8, 0, 0, 5, 0, 0, 0, /* 0x 40 */ - 0,128, 0, 0, 1, 0, 0, 0, 28, 8, 0, 0, 28,136, 0, 0, /* 0x 50 */ - 28,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */ + 0,128, 0, 0, 40, 8, 0, 0, 40, 8, 0, 0, 5, 0, 0, 0, /* 0x 40 */ + 0,128, 0, 0, 1, 0, 0, 0, 40, 8, 0, 0, 40,136, 0, 0, /* 0x 50 */ + 40,136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, /* 0x 60 */ 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 12, 48,157,229, 3, 49,141,224, 20, 48,131,226, 4, 0,147,228, /* 0x 80 */ 0, 0, 80,227,252,255,255, 26, 3, 32,160,225, 8, 0,146,228, /* 0x 90 */ 0, 0, 80,227,252,255,255, 26, 8, 32,141,229, 10,220, 77,226, /* 0x a0 */ 9, 64,160,225, 4,144,154,229, 13,128,160,225, 0,112,154,229, /* 0x b0 */ 36, 96,143,226, 12,144,137,226, 0,176,160,227,248, 15, 45,233, /* 0x c0 */ - 15, 0,189,232,122, 1, 0,235, 0,224,160,225, 20,208,141,226, /* 0x d0 */ + 15, 0,189,232,125, 1, 0,235, 0,224,160,225, 20,208,141,226, /* 0x d0 */ 10,220,141,226, 7, 0,189,232, 4,240, 18,229,255, 48, 3,226, /* 0x e0 */ 80, 0, 83,227, 14,240,160, 17, 33, 17,176,225, 0, 0, 80, 19, /* 0x f0 */ - 14,240,160, 1, 1, 16, 81,226, 1, 49,144,231, 15, 52, 3,226, /* 0x 100 */ - 11, 4, 83,227, 4, 0, 0, 26,255, 52, 3,226, 1, 48, 67,224, /* 0x 110 */ -255, 52,195,227, 3, 48,131,225, 1, 49,128,231,244,255,255, 26, /* 0x 120 */ - 14,240,160,225, 1, 0,144,239, 3, 0,144,239, 14,240,160,225, /* 0x 130 */ - 5, 0,144,239, 14,240,160,225, 6, 0,144,239, 14,240,160,225, /* 0x 140 */ - 45, 0,144,239, 14,240,160,225, 91, 0,144,239, 14,240,160,225, /* 0x 150 */ -125, 0,144,239, 14,240,160,225, 4, 80, 45,229, 8, 80,157,229, /* 0x 160 */ - 4, 64, 45,229, 8, 64,157,229, 37, 86,160,225,192, 0,144,239, /* 0x 170 */ - 4, 64,157,228, 4, 80,157,228, 14,240,160,225, 4,224, 45,229, /* 0x 180 */ - 0, 48,144,229, 2, 0, 83,225, 2,192,160,225, 4,224,144,229, /* 0x 190 */ -127, 0,160, 51,226,255,255, 59, 1, 32, 66,226, 1, 0,114,227, /* 0x 1a0 */ - 4, 0, 0, 10, 1, 48,222,228, 1, 32, 66,226, 1, 48,193,228, /* 0x 1b0 */ - 1, 0,114,227,249,255,255,234, 4, 32,144,229, 0, 48,144,229, /* 0x 1c0 */ - 12, 32,130,224, 3, 48,108,224, 0, 48,128,229, 4, 32,128,229, /* 0x 1d0 */ - 4,240,157,228,240, 64, 45,233, 1, 64,160,225, 0, 16,145,229, /* 0x 1e0 */ - 20,208, 77,226, 0, 0, 81,227, 0, 80,160,225, 2,112,160,225, /* 0x 1f0 */ - 3, 96,160,225, 70, 0, 0, 10, 8, 16,141,226, 12, 32,160,227, /* 0x 200 */ - 5, 0,160,225,220,255,255,235, 8, 16,157,229, 0, 0, 81,227, /* 0x 210 */ - 12, 32,157,229, 6, 0, 0, 26,252, 48,159,229, 3, 0, 82,225, /* 0x 220 */ - 5, 0, 0, 26, 0, 48,149,229, 0, 0, 83,227, 56, 0, 0, 10, /* 0x 230 */ - 1, 0, 0,234, 0, 0, 82,227, 1, 0, 0, 26,127, 0,160,227, /* 0x 240 */ -183,255,255,235, 1, 0, 82,225,251,255,255,138, 0, 48,148,229, /* 0x 250 */ - 3, 0, 81,225,248,255,255,138, 1, 0, 82,225, 4, 48,148,229, /* 0x 260 */ - 33, 0, 0, 42, 16,192,221,229, 4, 0,149,229, 2, 16,160,225, /* 0x 270 */ - 0,192,141,229, 3, 32,160,225, 4, 48,141,226, 15,224,160,225, /* 0x 280 */ - 7,240,160,225, 0, 0, 80,227,235,255,255, 26, 10, 0,157,233, /* 0x 290 */ - 3, 0, 81,225,232,255,255, 26, 17, 32,221,229, 0, 0, 82,227, /* 0x 2a0 */ - 0, 0, 86, 19, 9, 0, 0, 10, 2, 12, 81,227, 2, 0, 0,138, /* 0x 2b0 */ - 0, 48,148,229, 1, 0, 83,225, 4, 0, 0, 26, 2, 48,160,225, /* 0x 2c0 */ - 4, 0,148,229, 18, 32,221,229, 15,224,160,225, 6,240,160,225, /* 0x 2d0 */ - 4, 48,149,229, 12, 16,157,229, 0, 32,149,229, 1, 48,131,224, /* 0x 2e0 */ - 2, 32, 97,224, 12, 0,133,232, 2, 0, 0,234, 3, 16,160,225, /* 0x 2f0 */ - 5, 0,160,225,160,255,255,235, 8, 16,157,229, 12, 0,148,232, /* 0x 300 */ - 2, 32, 97,224, 1, 48,131,224, 0, 0, 82,227, 12, 0,132,232, /* 0x 310 */ -183,255,255,234, 20,208,141,226,240,128,189,232, 85, 80, 88, 33, /* 0x 320 */ - 0, 0, 80,227, 14,240,160, 1, 1, 0, 16,227, 14,240,160, 17, /* 0x 330 */ - 0, 48,144,229, 1, 0, 83,225, 6, 0, 0, 10, 1, 0, 83,227, /* 0x 340 */ - 0, 48,160, 19, 1, 48,160, 3, 0, 0, 81,227, 0, 48,160, 3, /* 0x 350 */ - 0, 0, 83,227, 1, 0, 0, 10, 6, 0,128,232, 14,240,160,225, /* 0x 360 */ - 8, 0,128,226,241,255,255,234,240, 79, 45,233, 40,208, 77,226, /* 0x 370 */ - 1,144,160,225, 28,192,145,229, 2,176,160,225,176, 17,209,225, /* 0x 380 */ - 80, 32,157,229,188,226,217,225, 2, 0, 81,227, 12,112,137,224, /* 0x 390 */ - 24, 0,141,229, 20, 48,141,229, 16, 32,141,229, 50,128,160, 3, /* 0x 3a0 */ - 34,128,160, 19, 7, 16,160,225, 1,224, 94,226, 0, 96,224,227, /* 0x 3b0 */ - 0, 80,160,227, 12, 0, 0, 74, 0, 48,145,229, 1, 0, 83,227, /* 0x 3c0 */ - 6, 0, 0, 26, 8, 32,145,229, 20, 48,145,229, 2, 48,131,224, /* 0x 3d0 */ - 3, 0, 85,225, 3, 80,160, 49, 2, 0, 86,225, 2, 96,160, 33, /* 0x 3e0 */ - 1,224, 94,226, 32, 16,129,226,241,255,255,234,255,110,198,227, /* 0x 3f0 */ - 15, 96,198,227, 5, 48,102,224,255, 62,131,226, 15, 48,131,226, /* 0x 400 */ -255, 94,195,227, 0, 64,160,227, 15, 80,197,227, 8, 48,160,225, /* 0x 410 */ - 6, 0,160,225, 0,192,224,227, 5, 16,160,225, 4, 32,160,225, /* 0x 420 */ - 0,192,141,229, 4, 64,141,229, 74,255,255,235,188, 50,217,225, /* 0x 430 */ - 3, 0, 84,225, 5, 48,128,224, 12, 64,141,229, 36, 48,141,229, /* 0x 440 */ - 0, 96,102,224,133, 0, 0,170, 0, 48,151,229, 6, 0, 83,227, /* 0x 450 */ - 5, 0, 0, 26, 8, 32,151,229, 20, 0,157,229, 6, 32,130,224, /* 0x 460 */ - 3, 16,160,227,173,255,255,235,117, 0, 0,234, 1, 0, 83,227, /* 0x 470 */ -115, 0, 0, 26, 24, 48,151,229, 8, 16,151,229, 7, 48, 3,226, /* 0x 480 */ - 32, 34,159,229, 6, 16,129,224, 3, 49,160,225, 16, 0,151,229, /* 0x 490 */ - 50, 35,160,225, 1, 74,160,225, 20, 48,151,229, 0, 0, 91,227, /* 0x 4a0 */ - 4,192,151,229, 36, 74,160,225, 3, 48,129,224, 1, 80,100,224, /* 0x 4b0 */ - 24,224,157, 5, 7,128, 2,226, 4,160,128,224, 2, 32,160, 19, /* 0x 4c0 */ - 0, 32,160, 3, 8, 48,141,229, 0,224,224, 19, 28, 0,141,229, /* 0x 4d0 */ - 32, 16,141,229, 18, 48,160, 3, 50, 48,160, 19, 12,192,100,224, /* 0x 4e0 */ - 8, 32,130,225, 5, 0,160,225, 10, 16,160,225, 0,224,141,229, /* 0x 4f0 */ - 4,192,141,229, 23,255,255,235, 0, 0, 85,225, 62, 0, 0, 26, /* 0x 500 */ - 0, 0, 91,227, 6, 0, 0, 10, 16, 32,157,229, 40, 49,176,225, /* 0x 510 */ - 2, 48,160, 17, 28, 16,141,226, 11, 0,160,225, 24, 32,157,229, /* 0x 520 */ - 43,255,255,235, 0, 48,106,226, 3, 74,160,225, 2, 0, 24,227, /* 0x 530 */ - 36, 74,160,225, 7, 0, 0, 10, 0, 0, 84,227, 10, 16,133,224, /* 0x 540 */ - 4, 32,160,225, 3, 0, 0, 10, 0, 48,160,227, 1, 32, 82,226, /* 0x 550 */ - 1, 48,193,228,251,255,255, 26, 0, 0, 91,227, 40, 0, 0, 10, /* 0x 560 */ - 0, 48,151,229, 1, 0, 83,227, 29, 0, 0, 26, 24, 48,151,229, /* 0x 570 */ - 1, 0, 19,227, 26, 0, 0, 10, 16, 32,135,226, 12, 0,146,232, /* 0x 580 */ - 8, 16,151,229, 2, 0, 83,225, 1, 48,131,224, 6, 32,131,224, /* 0x 590 */ - 4, 0, 0, 26, 0, 48, 98,226, 3, 58,160,225, 35, 58,160,225, /* 0x 5a0 */ - 7, 0, 83,227, 6, 0, 0,138, 4, 32,151,229,134, 48,134,224, /* 0x 5b0 */ - 3, 49,134,224, 3, 49,129,224, 0, 0, 82,227, 8, 32,131,226, /* 0x 5c0 */ - 3, 0, 0, 26,224, 48,159,229, 0, 48,130,229,220, 48,159,229, /* 0x 5d0 */ - 4, 48,130,229, 0, 0, 82,227, 20, 0,157, 21, 0, 16,160, 19, /* 0x 5e0 */ - 78,255,255, 27, 5, 0,160,225, 10, 16,160,225, 8, 32,160,225, /* 0x 5f0 */ -214,254,255,235, 0, 0, 80,227, 1, 0, 0, 10,127, 0,160,227, /* 0x 600 */ -199,254,255,235, 4, 48,138,224, 3, 80,133,224, 8, 48,157,229, /* 0x 610 */ - 3, 0, 85,225, 10, 0, 0, 42, 0,192,224,227, 3, 16,101,224, /* 0x 620 */ - 0,192,141,229, 8, 32,160,225, 1,192,140,226, 5, 0,160,225, /* 0x 630 */ - 50, 48,160,227, 4,192,141,229,198,254,255,235, 0, 0, 85,225, /* 0x 640 */ -237,255,255, 26, 12, 32,157,229,188, 50,217,225, 1, 32,130,226, /* 0x 650 */ - 3, 0, 82,225, 32,112,135,226, 12, 32,141,229,120,255,255,234, /* 0x 660 */ - 0, 0, 91,227, 4, 0, 0, 26, 24, 0,157,229,177,254,255,235, /* 0x 670 */ - 0, 0, 80,227, 4, 0, 0, 10,223,255,255,234,176, 49,217,225, /* 0x 680 */ - 3, 0, 83,227, 36, 0,157, 21,172,254,255, 27, 76, 48,157,229, /* 0x 690 */ - 0, 0, 83,227, 0, 96,131, 21, 24, 0,153,229, 6, 0,128,224, /* 0x 6a0 */ - 40,208,141,226,240,143,189,232, 64, 98, 81,115, 91, 0,144,239, /* 0x 6b0 */ - 14,240,160,225,240, 71, 45,233, 12,208, 77,226, 44,192,141,226, /* 0x 6c0 */ - 52,112,141,226, 0, 80,160,225, 1, 96,160,225, 3,160,160,225, /* 0x 6d0 */ - 12, 16,160,225, 0, 48,160,227, 7, 0,160,225, 4,144,156,229, /* 0x 6e0 */ - 2,128,160,225, 52, 64,157,229,185,254,255,235, 56, 48,157,229, /* 0x 6f0 */ - 5, 0,160,225, 3, 48,100,224, 5, 16,160,227,188, 34,217,225, /* 0x 700 */ - 56, 48,141,229, 52, 96,141,229, 4,255,255,235, 52, 96,137,226, /* 0x 710 */ - 5, 0,160,225, 4, 16,160,227,186, 34,217,225,255,254,255,235, /* 0x 720 */ - 8, 48,150,229, 60, 32,157,229, 3, 32,130,224, 52, 32,130,226, /* 0x 730 */ - 5, 0,160,225, 3, 16,160,227,248,254,255,235, 8,192,141,226, /* 0x 740 */ - 7, 32,160,225, 9, 16,160,225, 5, 48,160,225, 8, 0,160,225, /* 0x 750 */ - 0,192,141,229, 4,160,141,229, 2,255,255,235, 0, 64,160,225, /* 0x 760 */ - 9, 16,160,227, 4, 32,160,225, 5, 0,160,225,235,254,255,235, /* 0x 770 */ -188, 18,217,225, 0, 32,160,227, 1, 0, 82,225, 31, 0, 0,170, /* 0x 780 */ - 0, 48,150,229, 3, 0, 83,227, 1, 32,130,226, 24, 0, 0, 26, /* 0x 790 */ - 8, 48,150,229, 8, 0,157,229, 0, 16,160,227, 0, 0,131,224, /* 0x 7a0 */ - 1, 32,160,225, 97,254,255,235, 0, 64, 80,226, 4, 0, 0,186, /* 0x 7b0 */ - 9, 16,160,225, 2, 44,160,227, 90,254,255,235, 2, 12, 80,227, /* 0x 7c0 */ - 1, 0, 0, 10,127, 0,160,227, 85,254,255,235, 0,192,160,227, /* 0x 7d0 */ - 4, 0,160,225, 12, 32,160,225, 9, 16,160,225, 12, 48,160,225, /* 0x 7e0 */ - 0,192,141,229, 4,192,141,229,222,254,255,235, 0, 64,160,225, /* 0x 7f0 */ - 2, 0, 0,234, 1, 0, 82,225, 32, 96,134,226,222,255,255,234, /* 0x 800 */ - 4, 0,160,225, 12,208,141,226,240,135,189,232 /* 0x 810 */ + 14,240,160, 1, 1, 16, 65,226, 1, 33,144,231, 15, 52, 2,226, /* 0x 100 */ + 11, 4, 83,227, 6, 0, 0, 26,255, 52, 2,226, 1, 32, 66,224, /* 0x 110 */ +255, 36,194,227, 3, 32,130,225, 1, 33,128,231, 1, 49,128,224, /* 0x 120 */ + 0, 0,160,225, 0, 0, 81,227,241,255,255, 26, 14,240,160,225, /* 0x 130 */ + 1, 0,144,239, 3, 0,144,239, 14,240,160,225, 5, 0,144,239, /* 0x 140 */ + 14,240,160,225, 6, 0,144,239, 14,240,160,225, 45, 0,144,239, /* 0x 150 */ + 14,240,160,225, 91, 0,144,239, 14,240,160,225,125, 0,144,239, /* 0x 160 */ + 14,240,160,225, 4, 80, 45,229, 8, 80,157,229, 4, 64, 45,229, /* 0x 170 */ + 8, 64,157,229, 37, 86,160,225,192, 0,144,239, 4, 64,157,228, /* 0x 180 */ + 4, 80,157,228, 14,240,160,225, 4,224, 45,229, 0, 48,144,229, /* 0x 190 */ + 2, 0, 83,225, 2,192,160,225, 4,224,144,229,127, 0,160, 51, /* 0x 1a0 */ +226,255,255, 59, 1, 32, 66,226, 1, 0,114,227, 4, 0, 0, 10, /* 0x 1b0 */ + 1, 48,222,228, 1, 32, 66,226, 1, 48,193,228, 1, 0,114,227, /* 0x 1c0 */ +249,255,255,234, 4, 32,144,229, 0, 48,144,229, 12, 32,130,224, /* 0x 1d0 */ + 3, 48,108,224, 0, 48,128,229, 4, 32,128,229, 4,240,157,228, /* 0x 1e0 */ +240, 64, 45,233, 1, 64,160,225, 0, 16,145,229, 20,208, 77,226, /* 0x 1f0 */ + 0, 0, 81,227, 0, 80,160,225, 2,112,160,225, 3, 96,160,225, /* 0x 200 */ + 70, 0, 0, 10, 8, 16,141,226, 12, 32,160,227, 5, 0,160,225, /* 0x 210 */ +220,255,255,235, 8, 16,157,229, 0, 0, 81,227, 12, 32,157,229, /* 0x 220 */ + 6, 0, 0, 26,252, 48,159,229, 3, 0, 82,225, 5, 0, 0, 26, /* 0x 230 */ + 0, 48,149,229, 0, 0, 83,227, 56, 0, 0, 10, 1, 0, 0,234, /* 0x 240 */ + 0, 0, 82,227, 1, 0, 0, 26,127, 0,160,227,183,255,255,235, /* 0x 250 */ + 1, 0, 82,225,251,255,255,138, 0, 48,148,229, 3, 0, 81,225, /* 0x 260 */ +248,255,255,138, 1, 0, 82,225, 4, 48,148,229, 33, 0, 0, 42, /* 0x 270 */ + 16,192,221,229, 4, 0,149,229, 2, 16,160,225, 0,192,141,229, /* 0x 280 */ + 3, 32,160,225, 4, 48,141,226, 15,224,160,225, 7,240,160,225, /* 0x 290 */ + 0, 0, 80,227,235,255,255, 26, 10, 0,157,233, 3, 0, 81,225, /* 0x 2a0 */ +232,255,255, 26, 17, 32,221,229, 0, 0, 82,227, 0, 0, 86, 19, /* 0x 2b0 */ + 9, 0, 0, 10, 2, 12, 81,227, 2, 0, 0,138, 0, 48,148,229, /* 0x 2c0 */ + 1, 0, 83,225, 4, 0, 0, 26, 2, 48,160,225, 4, 0,148,229, /* 0x 2d0 */ + 18, 32,221,229, 15,224,160,225, 6,240,160,225, 4, 48,149,229, /* 0x 2e0 */ + 12, 16,157,229, 0, 32,149,229, 1, 48,131,224, 2, 32, 97,224, /* 0x 2f0 */ + 12, 0,133,232, 2, 0, 0,234, 3, 16,160,225, 5, 0,160,225, /* 0x 300 */ +160,255,255,235, 8, 16,157,229, 12, 0,148,232, 2, 32, 97,224, /* 0x 310 */ + 1, 48,131,224, 0, 0, 82,227, 12, 0,132,232,183,255,255,234, /* 0x 320 */ + 20,208,141,226,240,128,189,232, 85, 80, 88, 33, 0, 0, 80,227, /* 0x 330 */ + 14,240,160, 1, 1, 0, 16,227, 14,240,160, 17, 0, 48,144,229, /* 0x 340 */ + 1, 0, 83,225, 6, 0, 0, 10, 1, 0, 83,227, 0, 48,160, 19, /* 0x 350 */ + 1, 48,160, 3, 0, 0, 81,227, 0, 48,160, 3, 0, 0, 83,227, /* 0x 360 */ + 1, 0, 0, 10, 6, 0,128,232, 14,240,160,225, 8, 0,128,226, /* 0x 370 */ +241,255,255,234,240, 79, 45,233, 40,208, 77,226, 1,144,160,225, /* 0x 380 */ + 28,192,145,229, 2,176,160,225,176, 17,209,225, 80, 32,157,229, /* 0x 390 */ +188,226,217,225, 2, 0, 81,227, 12,112,137,224, 24, 0,141,229, /* 0x 3a0 */ + 20, 48,141,229, 16, 32,141,229, 50,128,160, 3, 34,128,160, 19, /* 0x 3b0 */ + 7, 16,160,225, 1,224, 94,226, 0, 96,224,227, 0, 80,160,227, /* 0x 3c0 */ + 12, 0, 0, 74, 0, 48,145,229, 1, 0, 83,227, 6, 0, 0, 26, /* 0x 3d0 */ + 8, 32,145,229, 20, 48,145,229, 2, 48,131,224, 3, 0, 85,225, /* 0x 3e0 */ + 3, 80,160, 49, 2, 0, 86,225, 2, 96,160, 33, 1,224, 94,226, /* 0x 3f0 */ + 32, 16,129,226,241,255,255,234,255,110,198,227, 15, 96,198,227, /* 0x 400 */ + 5, 48,102,224,255, 62,131,226, 15, 48,131,226,255, 94,195,227, /* 0x 410 */ + 0, 64,160,227, 15, 80,197,227, 8, 48,160,225, 6, 0,160,225, /* 0x 420 */ + 0,192,224,227, 5, 16,160,225, 4, 32,160,225, 0,192,141,229, /* 0x 430 */ + 4, 64,141,229, 74,255,255,235,188, 50,217,225, 3, 0, 84,225, /* 0x 440 */ + 5, 48,128,224, 12, 64,141,229, 36, 48,141,229, 0, 96,102,224, /* 0x 450 */ +133, 0, 0,170, 0, 48,151,229, 6, 0, 83,227, 5, 0, 0, 26, /* 0x 460 */ + 8, 32,151,229, 20, 0,157,229, 6, 32,130,224, 3, 16,160,227, /* 0x 470 */ +173,255,255,235,117, 0, 0,234, 1, 0, 83,227,115, 0, 0, 26, /* 0x 480 */ + 24, 48,151,229, 8, 16,151,229, 7, 48, 3,226, 32, 34,159,229, /* 0x 490 */ + 6, 16,129,224, 3, 49,160,225, 16, 0,151,229, 50, 35,160,225, /* 0x 4a0 */ + 1, 74,160,225, 20, 48,151,229, 0, 0, 91,227, 4,192,151,229, /* 0x 4b0 */ + 36, 74,160,225, 3, 48,129,224, 1, 80,100,224, 24,224,157, 5, /* 0x 4c0 */ + 7,128, 2,226, 4,160,128,224, 2, 32,160, 19, 0, 32,160, 3, /* 0x 4d0 */ + 8, 48,141,229, 0,224,224, 19, 28, 0,141,229, 32, 16,141,229, /* 0x 4e0 */ + 18, 48,160, 3, 50, 48,160, 19, 12,192,100,224, 8, 32,130,225, /* 0x 4f0 */ + 5, 0,160,225, 10, 16,160,225, 0,224,141,229, 4,192,141,229, /* 0x 500 */ + 23,255,255,235, 0, 0, 85,225, 62, 0, 0, 26, 0, 0, 91,227, /* 0x 510 */ + 6, 0, 0, 10, 16, 32,157,229, 40, 49,176,225, 2, 48,160, 17, /* 0x 520 */ + 28, 16,141,226, 11, 0,160,225, 24, 32,157,229, 43,255,255,235, /* 0x 530 */ + 0, 48,106,226, 3, 74,160,225, 2, 0, 24,227, 36, 74,160,225, /* 0x 540 */ + 7, 0, 0, 10, 0, 0, 84,227, 10, 16,133,224, 4, 32,160,225, /* 0x 550 */ + 3, 0, 0, 10, 0, 48,160,227, 1, 32, 82,226, 1, 48,193,228, /* 0x 560 */ +251,255,255, 26, 0, 0, 91,227, 40, 0, 0, 10, 0, 48,151,229, /* 0x 570 */ + 1, 0, 83,227, 29, 0, 0, 26, 24, 48,151,229, 1, 0, 19,227, /* 0x 580 */ + 26, 0, 0, 10, 16, 32,135,226, 12, 0,146,232, 8, 16,151,229, /* 0x 590 */ + 2, 0, 83,225, 1, 48,131,224, 6, 32,131,224, 4, 0, 0, 26, /* 0x 5a0 */ + 0, 48, 98,226, 3, 58,160,225, 35, 58,160,225, 7, 0, 83,227, /* 0x 5b0 */ + 6, 0, 0,138, 4, 32,151,229,134, 48,134,224, 3, 49,134,224, /* 0x 5c0 */ + 3, 49,129,224, 0, 0, 82,227, 8, 32,131,226, 3, 0, 0, 26, /* 0x 5d0 */ +224, 48,159,229, 0, 48,130,229,220, 48,159,229, 4, 48,130,229, /* 0x 5e0 */ + 0, 0, 82,227, 20, 0,157, 21, 0, 16,160, 19, 78,255,255, 27, /* 0x 5f0 */ + 5, 0,160,225, 10, 16,160,225, 8, 32,160,225,214,254,255,235, /* 0x 600 */ + 0, 0, 80,227, 1, 0, 0, 10,127, 0,160,227,199,254,255,235, /* 0x 610 */ + 4, 48,138,224, 3, 80,133,224, 8, 48,157,229, 3, 0, 85,225, /* 0x 620 */ + 10, 0, 0, 42, 0,192,224,227, 3, 16,101,224, 0,192,141,229, /* 0x 630 */ + 8, 32,160,225, 1,192,140,226, 5, 0,160,225, 50, 48,160,227, /* 0x 640 */ + 4,192,141,229,198,254,255,235, 0, 0, 85,225,237,255,255, 26, /* 0x 650 */ + 12, 32,157,229,188, 50,217,225, 1, 32,130,226, 3, 0, 82,225, /* 0x 660 */ + 32,112,135,226, 12, 32,141,229,120,255,255,234, 0, 0, 91,227, /* 0x 670 */ + 4, 0, 0, 26, 24, 0,157,229,177,254,255,235, 0, 0, 80,227, /* 0x 680 */ + 4, 0, 0, 10,223,255,255,234,176, 49,217,225, 3, 0, 83,227, /* 0x 690 */ + 36, 0,157, 21,172,254,255, 27, 76, 48,157,229, 0, 0, 83,227, /* 0x 6a0 */ + 0, 96,131, 21, 24, 0,153,229, 6, 0,128,224, 40,208,141,226, /* 0x 6b0 */ +240,143,189,232, 64, 98, 81,115, 91, 0,144,239, 14,240,160,225, /* 0x 6c0 */ +240, 71, 45,233, 12,208, 77,226, 44,192,141,226, 52,112,141,226, /* 0x 6d0 */ + 0, 80,160,225, 1, 96,160,225, 3,160,160,225, 12, 16,160,225, /* 0x 6e0 */ + 0, 48,160,227, 7, 0,160,225, 4,144,156,229, 2,128,160,225, /* 0x 6f0 */ + 52, 64,157,229,185,254,255,235, 56, 48,157,229, 5, 0,160,225, /* 0x 700 */ + 3, 48,100,224, 5, 16,160,227,188, 34,217,225, 56, 48,141,229, /* 0x 710 */ + 52, 96,141,229, 4,255,255,235, 52, 96,137,226, 5, 0,160,225, /* 0x 720 */ + 4, 16,160,227,186, 34,217,225,255,254,255,235, 8, 48,150,229, /* 0x 730 */ + 60, 32,157,229, 3, 32,130,224, 52, 32,130,226, 5, 0,160,225, /* 0x 740 */ + 3, 16,160,227,248,254,255,235, 8,192,141,226, 7, 32,160,225, /* 0x 750 */ + 9, 16,160,225, 5, 48,160,225, 8, 0,160,225, 0,192,141,229, /* 0x 760 */ + 4,160,141,229, 2,255,255,235, 0, 64,160,225, 9, 16,160,227, /* 0x 770 */ + 4, 32,160,225, 5, 0,160,225,235,254,255,235,188, 18,217,225, /* 0x 780 */ + 0, 32,160,227, 1, 0, 82,225, 31, 0, 0,170, 0, 48,150,229, /* 0x 790 */ + 3, 0, 83,227, 1, 32,130,226, 24, 0, 0, 26, 8, 48,150,229, /* 0x 7a0 */ + 8, 0,157,229, 0, 16,160,227, 0, 0,131,224, 1, 32,160,225, /* 0x 7b0 */ + 97,254,255,235, 0, 64, 80,226, 4, 0, 0,186, 9, 16,160,225, /* 0x 7c0 */ + 2, 44,160,227, 90,254,255,235, 2, 12, 80,227, 1, 0, 0, 10, /* 0x 7d0 */ +127, 0,160,227, 85,254,255,235, 0,192,160,227, 4, 0,160,225, /* 0x 7e0 */ + 12, 32,160,225, 9, 16,160,225, 12, 48,160,225, 0,192,141,229, /* 0x 7f0 */ + 4,192,141,229,222,254,255,235, 0, 64,160,225, 2, 0, 0,234, /* 0x 800 */ + 1, 0, 82,225, 32, 96,134,226,222,255,255,234, 4, 0,160,225, /* 0x 810 */ + 12,208,141,226,240,135,189,232 /* 0x 820 */ };