diff --git a/src/stub/fold_elfppc32.S b/src/stub/fold_elfppc32.S index 8cd0946f..0f41473b 100644 --- a/src/stub/fold_elfppc32.S +++ b/src/stub/fold_elfppc32.S @@ -8,7 +8,7 @@ sz_l_info= 12 sz_p_info= 12 OVERHEAD= 2048 -LINKAREA= 2*4 # SysV C linkage area: (sp, lr) +LINKAREA= 4*4 # SysV C linkage area: (sp, lr); but 16-byte align /* In: r31= &decompress; also 8+ (char *)&(offset to {l_info; p_info; b_info}) */ @@ -36,16 +36,25 @@ L90: lwz a6,0(sp) # sp at execve call zfind # a6= &env call zfind # a6= &Elf32_auxv - mr a4,r31 # &decompress: f_expand - la a2,-OVERHEAD(sp) # &Elf32_Ehdr temporary space lwz a1,-8(r31) # total size = offset to {l_info; p_info; b_info} + rlwinm r30,a5,0,0,31-12 # r30= &this_page + la a2,-OVERHEAD(sp) # &Elf32_Ehdr temporary space + mr a4,r31 # &decompress: f_expand subf a0,a1,r31 # &l_info - lwz a3,sz_unc+sz_p_info+sz_l_info(a0) # sz_elf_headers addi sp,sp,-(LINKAREA+OVERHEAD) + rlwinm r29,a0,0,0,31-12 # r29= &our_Elf32_Ehdr + lwz a3,sz_unc+sz_p_info+sz_l_info(a0) # sz_elf_headers call upx_main # Out: a0= entry -/* entry= upx_main(l_info *, total_size, Elf32_Ehdr *, sz_ehdr, f_decomp, f_unf, Elf32_auxv_t *) */ +/* entry= upx_main(l_info *a0, total_size a1, Elf32_Ehdr *a2, sz_ehdr a3, + f_decomp a4, f_unf a5, Elf32_auxv_t *a6) +*/ + mr r31,a0 # save &entry - mtlr a0 # entry address + mr a0,r29 # &our_Elf32_Ehdr + subf a1,r29,r30 # size + call munmap # unmap compressed program; /proc/self/exe disappears + + mtlr r31 # entry address lmw r2,4+LINKAREA+OVERHEAD(sp) # restore registers r2 thru r31 lwz r1, LINKAREA+OVERHEAD(sp) # restore r1; deallocate space ret # enter /lib/ld.so.1 diff --git a/src/stub/fold_elfppc32.h b/src/stub/fold_elfppc32.h index 32159e08..9e7ddfd1 100644 --- a/src/stub/fold_elfppc32.h +++ b/src/stub/fold_elfppc32.h @@ -1,4 +1,4 @@ -/* fold_elfppc32.h -- created from fold_elfppc32.bin, 2352 (0x930) bytes +/* fold_elfppc32.h -- created from fold_elfppc32.bin, 2380 (0x94c) bytes This file is part of the UPX executable compressor. @@ -26,17 +26,17 @@ */ -#define LINUX_ELFPPC32_FOLD_ADLER32 0xaa049a35 -#define LINUX_ELFPPC32_FOLD_CRC32 0x291d744a +#define LINUX_ELFPPC32_FOLD_ADLER32 0x2d22a589 +#define LINUX_ELFPPC32_FOLD_CRC32 0x8887794f -unsigned char linux_elfppc32_fold[2352] = { +unsigned char linux_elfppc32_fold[2380] = { 127, 69, 76, 70, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 0 */ 0, 2, 0, 20, 0, 0, 0, 1, 0, 16, 0,128, 0, 0, 0, 52, /* 0x 10 */ - 0, 0, 7,240, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 40, /* 0x 20 */ + 0, 0, 8, 12, 0, 0, 0, 0, 0, 52, 0, 32, 0, 2, 0, 40, /* 0x 20 */ 0, 8, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 16, 0, 0, /* 0x 30 */ - 0, 16, 0, 0, 0, 0, 7,160, 0, 0, 7,160, 0, 0, 0, 5, /* 0x 40 */ - 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,160, 0, 16, 7,160, /* 0x 50 */ - 0, 16, 7,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, /* 0x 60 */ + 0, 16, 0, 0, 0, 0, 7,188, 0, 0, 7,188, 0, 0, 0, 5, /* 0x 40 */ + 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 7,188, 0, 16, 7,188, /* 0x 50 */ + 0, 16, 7,188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, /* 0x 60 */ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 70 */ 72, 0, 0,113, 40, 6, 0,208, 76,130, 0, 32, 84,132,240,191, /* 0x 80 */ 77,130, 0, 32, 56,165, 1, 32,124,103, 27,120, 56, 99,255,252, /* 0x 90 */ @@ -46,135 +46,137 @@ unsigned char linux_elfppc32_fold[2352] = { 65,162,255,216, 66, 0,255,240, 78,128, 0, 32,128, 73, 0, 0, /* 0x d0 */ 57, 41, 0, 4, 47,130, 0, 0, 64,158,255,244, 78,128, 0, 32, /* 0x e0 */ 125, 8, 2,166,129, 33, 0, 0, 75,255,255,229, 75,255,255,225, /* 0x f0 */ -127,231,251,120, 56,161,248, 0,128,159,255,248,124,100,248, 80, /* 0x 100 */ -128,195, 0, 24, 56, 33,247,248, 72, 0, 5, 57,124,104, 3,166, /* 0x 110 */ -184, 65, 8, 12,128, 33, 8, 8, 78,128, 0, 32, 56, 0, 0, 90, /* 0x 120 */ - 68, 0, 0, 2, 64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32, /* 0x 130 */ - 56, 0, 0, 1, 75,255,255,236, 56, 0, 0, 3, 75,255,255,228, /* 0x 140 */ - 56, 0, 0, 5, 75,255,255,220, 56, 0, 0, 6, 75,255,255,212, /* 0x 150 */ - 56, 0, 0,125, 75,255,255,204, 56, 0, 0, 91, 75,255,255,196, /* 0x 160 */ - 56, 0, 0, 45, 75,255,255,188,124, 8, 2,166,148, 33,255,240, /* 0x 170 */ -144, 1, 0, 20,128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, /* 0x 180 */ - 64,188, 0, 12, 56, 96, 0,127, 75,255,255,169, 47,133, 0, 0, /* 0x 190 */ - 65,158, 0, 28,124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1, /* 0x 1a0 */ -152, 4, 0, 0, 56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0, /* 0x 1b0 */ -129, 35, 0, 4,124, 5, 0, 80,144, 3, 0, 0,125, 41, 42, 20, /* 0x 1c0 */ -128, 1, 0, 20, 56, 33, 0, 16,145, 35, 0, 4,124, 8, 3,166, /* 0x 1d0 */ - 78,128, 0, 32,124, 8, 2,166,148, 33,255,192,191,129, 0, 48, /* 0x 1e0 */ -124,159, 35,120,124,126, 27,120,124,188, 43,120,144, 1, 0, 68, /* 0x 1f0 */ -124,221, 51,120,128, 4, 0, 0, 47,128, 0, 0, 65,158, 1, 32, /* 0x 200 */ - 56,160, 0, 12,127,195,243,120, 56,129, 0, 16, 75,255,255, 93, /* 0x 210 */ -129, 33, 0, 16,128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, /* 0x 220 */ - 60, 0, 33, 88, 96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28, /* 0x 230 */ -128, 30, 0, 0, 47,128, 0, 0, 65,190, 0,228, 72, 0, 0, 12, /* 0x 240 */ - 47,133, 0, 0, 64,190, 0, 12, 56, 96, 0,127, 75,255,254,229, /* 0x 250 */ -127, 5, 72, 64, 65,185,255,244,128, 31, 0, 0,127,137, 0, 64, /* 0x 260 */ - 65,189,255,232,128, 31, 0, 4, 64,152, 0,132,124,164, 43,120, /* 0x 270 */ -128,126, 0, 4,124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24, /* 0x 280 */ -127,136, 3,166, 78,128, 0, 33, 47,131, 0, 0, 64,190,255,188, /* 0x 290 */ -128,129, 0, 32,128, 1, 0, 16,127,132, 0, 0, 64,190,255,172, /* 0x 2a0 */ -136,193, 0, 25, 49, 61,255,255,124, 9,233, 16,125, 38, 0,208, /* 0x 2b0 */ - 85, 41, 15,254,125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4, /* 0x 2c0 */ -127,168, 3,166,136,161, 0, 26, 78,128, 0, 33,128, 30, 0, 4, /* 0x 2d0 */ -129, 97, 0, 20,129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80, /* 0x 2e0 */ -144, 30, 0, 4,145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120, /* 0x 2f0 */ -127,195,243,120, 75,255,254,117,129, 97, 0, 16,129, 63, 0, 0, /* 0x 300 */ -128, 31, 0, 4,125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20, /* 0x 310 */ -144, 31, 0, 4,145, 63, 0, 0, 75,255,254,228,128, 1, 0, 68, /* 0x 320 */ -187,129, 0, 48, 56, 33, 0, 64,124, 8, 3,166, 78,128, 0, 32, /* 0x 330 */ -124,128, 35,121,124, 9, 3,166, 77,130, 0, 32, 56, 0, 0, 0, /* 0x 340 */ -152, 3, 0, 0, 56, 99, 0, 1, 66, 0,255,248, 78,128, 0, 32, /* 0x 350 */ - 44, 3, 0, 0, 77,130, 0, 32,112, 96, 0, 1, 76,130, 0, 32, /* 0x 360 */ - 49, 68,255,255,125,106, 33, 16,128, 3, 0, 0,127,128, 32, 0, /* 0x 370 */ -104, 9, 0, 1, 33, 73, 0, 0,125, 42, 73, 20,125, 42, 88, 57, /* 0x 380 */ - 65,158, 0, 8, 65,162, 0, 16,144,163, 0, 4,144,131, 0, 0, /* 0x 390 */ - 78,128, 0, 32, 56, 99, 0, 8, 75,255,255,208,124, 8, 2,166, /* 0x 3a0 */ -148, 33,255,160,125,128, 0, 38,190, 65, 0, 40,124,122, 27,120, /* 0x 3b0 */ -124,151, 35,120,144, 1, 0,100,124,178, 43,120,161, 67, 0, 44, /* 0x 3c0 */ -124,211, 51,120,160, 3, 0, 16,124,244, 59,120, 53, 74,255,255, /* 0x 3d0 */ -129, 35, 0, 28,104, 0, 0, 3,145,129, 0, 36,124, 0, 0,208, /* 0x 3e0 */ -127, 99, 74, 20, 84, 3, 46,246,125, 21, 67,120, 56, 99, 0, 34, /* 0x 3f0 */ -127,107,219,120, 59,128,255,255, 59,192, 0, 0, 59,224, 0, 0, /* 0x 400 */ - 65,128, 0, 72, 57, 74, 0, 1,125, 73, 3,166,128, 11, 0, 0, /* 0x 410 */ - 47,128, 0, 1, 64,190, 0, 44,129, 43, 0, 8,127,137,224, 64, /* 0x 420 */ - 64,156, 0, 12,131,235, 0, 16,125, 60, 75,120,128, 11, 0, 20, /* 0x 430 */ -124, 0, 74, 20,127,158, 0, 64, 64,156, 0, 8,124, 30, 3,120, /* 0x 440 */ - 57,107, 0, 32, 66, 0,255,200, 87,128, 5, 62, 87,156, 0, 38, /* 0x 450 */ -125, 60,240, 80,127,255, 2, 20, 57, 41, 15,255, 56, 31, 15,255, /* 0x 460 */ - 85, 62, 0, 38, 84, 31, 0, 38,124,102, 27,120,127,196,243,120, /* 0x 470 */ - 56,160, 0, 7, 56,224, 0, 0, 57, 0, 0, 0,127,131,227,120, /* 0x 480 */ - 75,255,252,157,124,159,240, 80,124, 3,242, 20,124,125, 27,120, /* 0x 490 */ -124, 99,250, 20,144, 1, 0, 8, 75,255,252,193,160, 26, 0, 44, /* 0x 4a0 */ - 58,192, 0, 0,127, 60,232, 80,127,150, 0, 0, 64,156, 1, 84, /* 0x 4b0 */ - 46, 23, 0, 0, 65,146, 0, 40,128, 27, 0, 0, 47,128, 0, 6, /* 0x 4c0 */ - 64,190, 0, 28,128,187, 0, 8,126, 99,155,120, 56,128, 0, 3, /* 0x 4d0 */ -124,165,202, 20, 75,255,254,125, 72, 0, 1, 20,128, 27, 0, 0, /* 0x 4e0 */ - 47,128, 0, 1, 64,190, 1, 8,129, 27, 0, 8, 60, 0,115, 81, /* 0x 4f0 */ -129, 59, 0, 24, 96, 0, 98, 64,129, 91, 0, 20, 85, 30, 5, 62, /* 0x 500 */ -129,123, 0, 16, 85, 41, 22,250,124, 0, 76, 48,127,136, 82, 20, /* 0x 510 */ -127,254, 64, 80, 84, 24, 7,126,145, 97, 0, 16,127,171,242, 20, /* 0x 520 */ -145, 1, 0, 20,127,255,202, 20,127,156,202, 20, 65,146, 0, 12, /* 0x 530 */ - 56,192, 0, 50, 72, 0, 0, 8, 56,192, 0, 18,129, 27, 0, 4, /* 0x 540 */ -127,227,251,120,127,164,235,120, 56,160, 0, 3,125, 30, 64, 80, /* 0x 550 */ -126, 71,147,120, 75,255,251,201,127,159, 24, 0, 64,158, 0, 84, /* 0x 560 */ - 65,178, 0, 24,126,227,187,120, 56,129, 0, 16,126,133,163,120, /* 0x 570 */ -126,166,171,120, 75,255,252, 97,127,196,243,120,127,227,251,120, /* 0x 580 */ - 75,255,253,177,124, 29, 0,208, 84, 30, 5, 62,124,127,234, 20, /* 0x 590 */ -127,196,243,120, 75,255,253,157,127,227,251,120,127,164,235,120, /* 0x 5a0 */ -127, 5,195,120, 75,255,251,173, 47,131, 0, 0, 65,190, 0, 12, /* 0x 5b0 */ - 56, 96, 0,127, 75,255,251,125,124, 29,242, 20,127,255, 2, 20, /* 0x 5c0 */ -127,159,224, 64, 64,188, 0, 40,124,159,224, 80,127, 5,195,120, /* 0x 5d0 */ -127,227,251,120, 56,192, 0, 50, 56,224, 0, 0, 57, 0, 0, 0, /* 0x 5e0 */ - 75,255,251, 61,127,159, 24, 0, 64,190,255,200,160, 26, 0, 44, /* 0x 5f0 */ - 58,214, 0, 1, 59,123, 0, 32,127,150, 0, 0, 75,255,254,176, /* 0x 600 */ - 47,151, 0, 0, 65,158, 0, 24,160, 26, 0, 16, 47,128, 0, 3, /* 0x 610 */ - 65,158, 0, 12,128, 97, 0, 8, 75,255,251, 73,128,122, 0, 24, /* 0x 620 */ -128, 1, 0,100,129,129, 0, 36,124, 99,202, 20,124, 8, 3,166, /* 0x 630 */ -186, 65, 0, 40,125,128,129, 32, 56, 33, 0, 96, 78,128, 0, 32, /* 0x 640 */ -124, 8, 2,166,148, 33,255,192, 56,132,255,232,191, 97, 0, 44, /* 0x 650 */ -144,129, 0, 8,124,191, 43,120,144, 1, 0, 68, 56, 3, 0, 24, /* 0x 660 */ -144, 1, 0, 12,124,229, 59,120,128, 3, 0, 24, 56,192, 0, 0, /* 0x 670 */ -200, 1, 0, 8, 56, 97, 0, 8, 56,129, 0, 16, 59,223, 0, 52, /* 0x 680 */ -125, 61, 75,120,124,251, 59,120,144, 1, 0, 16,125, 28, 67,120, /* 0x 690 */ -216, 1, 0, 24,147,225, 0, 20, 75,255,251, 61,128,190, 0, 8, /* 0x 6a0 */ -127,163,235,120, 56,128, 0, 3, 56,165, 0, 52, 75,255,252,165, /* 0x 6b0 */ -160,191, 0, 44,127,163,235,120, 56,128, 0, 5, 75,255,252,149, /* 0x 6c0 */ -128,191, 0, 24,127,163,235,120, 56,128, 0, 9, 75,255,252,133, /* 0x 6d0 */ -127,103,219,120,127,136,227,120,127,227,251,120,127,166,235,120, /* 0x 6e0 */ - 56,129, 0, 24, 56,160, 0, 0, 59, 96, 0, 0, 75,255,252,177, /* 0x 6f0 */ -160, 31, 0, 44,124,124, 27,120,127,155, 0, 0, 64,156, 0,124, /* 0x 700 */ -128, 30, 0, 0, 59,123, 0, 1, 56,128, 0, 0, 56,160, 0, 0, /* 0x 710 */ - 47,128, 0, 3, 64,190, 0, 88,128,126, 0, 8, 75,255,250, 37, /* 0x 720 */ -127,228,251,120,124,125, 27,121, 56,160, 2, 0, 65,128, 0, 40, /* 0x 730 */ - 75,255,250, 9, 56,128, 0, 0, 47,131, 2, 0,127,165,235,120, /* 0x 740 */ -127,227,251,120, 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, /* 0x 750 */ - 65,190, 0, 12, 56, 96, 0,127, 75,255,249,217, 75,255,252, 65, /* 0x 760 */ -124,124, 27,120,127,163,235,120, 75,255,249,225,160, 31, 0, 44, /* 0x 770 */ - 59,222, 0, 32, 75,255,255,132,128, 1, 0, 68,127,131,227,120, /* 0x 780 */ -187, 97, 0, 44, 56, 33, 0, 64,124, 8, 3,166, 78,128, 0, 32, /* 0x 790 */ - 0, 71, 67, 67, 58, 32, 40, 71, 78, 85, 41, 32, 51, 46, 52, 46, /* 0x 7a0 */ - 49, 0, 0, 46,115,104,115,116,114,116, 97, 98, 0, 46,116,101, /* 0x 7b0 */ -120,116, 0, 46, 98,115,115, 0, 46,115,100, 97,116, 97, 0, 46, /* 0x 7c0 */ -115,100, 97,116, 97, 50, 0, 46,110,111,116,101, 46, 71, 78, 85, /* 0x 7d0 */ - 45,115,116, 97, 99,107, 0, 46, 99,111,109,109,101,110,116, 0, /* 0x 7e0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 7f0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 800 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 1, /* 0x 810 */ - 0, 0, 0, 6, 0, 16, 0,128, 0, 0, 0,128, 0, 0, 7, 32, /* 0x 820 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x 830 */ - 0, 0, 0, 17, 0, 0, 0, 8, 0, 0, 0, 3, 0, 16, 7,160, /* 0x 840 */ - 0, 0, 7,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 850 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 1, /* 0x 860 */ - 0, 0, 0, 3, 0, 16, 7,160, 0, 0, 7,160, 0, 0, 0, 0, /* 0x 870 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, /* 0x 880 */ - 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0, 2, 0, 16, 7,160, /* 0x 890 */ - 0, 0, 7,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 8a0 */ - 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 1, /* 0x 8b0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,160, 0, 0, 0, 0, /* 0x 8c0 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x 8d0 */ - 0, 0, 0, 53, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 8e0 */ - 0, 0, 7,160, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 8f0 */ - 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, /* 0x 900 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,178, 0, 0, 0, 62, /* 0x 910 */ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 /* 0x 920 */ +128,159,255,248, 85, 30, 0, 38, 56,161,248, 0,127,231,251,120, /* 0x 100 */ +124,100,248, 80, 56, 33,247,248, 84,125, 0, 38,128,195, 0, 24, /* 0x 110 */ + 72, 0, 5, 77,127,224, 0, 8,124,127, 27,120,127,163,235,120, /* 0x 120 */ +124,157,240, 80, 72, 0, 0, 81,127,232, 3,166,184, 65, 8, 12, /* 0x 130 */ +128, 33, 8, 8, 78,128, 0, 32, 56, 0, 0, 90, 68, 0, 0, 2, /* 0x 140 */ + 64,163, 0, 8, 56, 96,255,255, 78,128, 0, 32, 56, 0, 0, 1, /* 0x 150 */ + 75,255,255,236, 56, 0, 0, 3, 75,255,255,228, 56, 0, 0, 5, /* 0x 160 */ + 75,255,255,220, 56, 0, 0, 6, 75,255,255,212, 56, 0, 0,125, /* 0x 170 */ + 75,255,255,204, 56, 0, 0, 91, 75,255,255,196, 56, 0, 0, 45, /* 0x 180 */ + 75,255,255,188,124, 8, 2,166,148, 33,255,240,144, 1, 0, 20, /* 0x 190 */ +128, 3, 0, 0,129, 35, 0, 4,127,128, 40, 64, 64,188, 0, 12, /* 0x 1a0 */ + 56, 96, 0,127, 75,255,255,169, 47,133, 0, 0, 65,158, 0, 28, /* 0x 1b0 */ +124,169, 3,166,136, 9, 0, 0, 57, 41, 0, 1,152, 4, 0, 0, /* 0x 1c0 */ + 56,132, 0, 1, 66, 0,255,240,128, 3, 0, 0,129, 35, 0, 4, /* 0x 1d0 */ +124, 5, 0, 80,144, 3, 0, 0,125, 41, 42, 20,128, 1, 0, 20, /* 0x 1e0 */ + 56, 33, 0, 16,145, 35, 0, 4,124, 8, 3,166, 78,128, 0, 32, /* 0x 1f0 */ +124, 8, 2,166,148, 33,255,192,191,129, 0, 48,124,159, 35,120, /* 0x 200 */ +124,126, 27,120,124,188, 43,120,144, 1, 0, 68,124,221, 51,120, /* 0x 210 */ +128, 4, 0, 0, 47,128, 0, 0, 65,158, 1, 32, 56,160, 0, 12, /* 0x 220 */ +127,195,243,120, 56,129, 0, 16, 75,255,255, 93,129, 33, 0, 16, /* 0x 230 */ +128,161, 0, 20, 47,137, 0, 0, 64,190, 0, 36, 60, 0, 33, 88, /* 0x 240 */ + 96, 0, 80, 85,127,133, 0, 0, 64,190, 0, 28,128, 30, 0, 0, /* 0x 250 */ + 47,128, 0, 0, 65,190, 0,228, 72, 0, 0, 12, 47,133, 0, 0, /* 0x 260 */ + 64,190, 0, 12, 56, 96, 0,127, 75,255,254,229,127, 5, 72, 64, /* 0x 270 */ + 65,185,255,244,128, 31, 0, 0,127,137, 0, 64, 65,189,255,232, /* 0x 280 */ +128, 31, 0, 4, 64,152, 0,132,124,164, 43,120,128,126, 0, 4, /* 0x 290 */ +124, 5, 3,120, 56,193, 0, 32,136,225, 0, 24,127,136, 3,166, /* 0x 2a0 */ + 78,128, 0, 33, 47,131, 0, 0, 64,190,255,188,128,129, 0, 32, /* 0x 2b0 */ +128, 1, 0, 16,127,132, 0, 0, 64,190,255,172,136,193, 0, 25, /* 0x 2c0 */ + 49, 61,255,255,124, 9,233, 16,125, 38, 0,208, 85, 41, 15,254, /* 0x 2d0 */ +125, 43, 0, 57, 65,162, 0, 20,128,127, 0, 4,127,168, 3,166, /* 0x 2e0 */ +136,161, 0, 26, 78,128, 0, 33,128, 30, 0, 4,129, 97, 0, 20, /* 0x 2f0 */ +129, 62, 0, 0,124, 0, 90, 20,125, 43, 72, 80,144, 30, 0, 4, /* 0x 300 */ +145, 62, 0, 0, 72, 0, 0, 16,124, 4, 3,120,127,195,243,120, /* 0x 310 */ + 75,255,254,117,129, 97, 0, 16,129, 63, 0, 0,128, 31, 0, 4, /* 0x 320 */ +125, 43, 72, 80, 47,137, 0, 0,124, 0, 90, 20,144, 31, 0, 4, /* 0x 330 */ +145, 63, 0, 0, 75,255,254,228,128, 1, 0, 68,187,129, 0, 48, /* 0x 340 */ + 56, 33, 0, 64,124, 8, 3,166, 78,128, 0, 32,124,128, 35,121, /* 0x 350 */ +124, 9, 3,166, 77,130, 0, 32, 56, 0, 0, 0,152, 3, 0, 0, /* 0x 360 */ + 56, 99, 0, 1, 66, 0,255,248, 78,128, 0, 32, 44, 3, 0, 0, /* 0x 370 */ + 77,130, 0, 32,112, 96, 0, 1, 76,130, 0, 32, 49, 68,255,255, /* 0x 380 */ +125,106, 33, 16,128, 3, 0, 0,127,128, 32, 0,104, 9, 0, 1, /* 0x 390 */ + 33, 73, 0, 0,125, 42, 73, 20,125, 42, 88, 57, 65,158, 0, 8, /* 0x 3a0 */ + 65,162, 0, 16,144,163, 0, 4,144,131, 0, 0, 78,128, 0, 32, /* 0x 3b0 */ + 56, 99, 0, 8, 75,255,255,208,124, 8, 2,166,148, 33,255,160, /* 0x 3c0 */ +125,128, 0, 38,190, 65, 0, 40,124,122, 27,120,124,151, 35,120, /* 0x 3d0 */ +144, 1, 0,100,124,178, 43,120,161, 67, 0, 44,124,211, 51,120, /* 0x 3e0 */ +160, 3, 0, 16,124,244, 59,120, 53, 74,255,255,129, 35, 0, 28, /* 0x 3f0 */ +104, 0, 0, 3,145,129, 0, 36,124, 0, 0,208,127, 99, 74, 20, /* 0x 400 */ + 84, 3, 46,246,125, 21, 67,120, 56, 99, 0, 34,127,107,219,120, /* 0x 410 */ + 59,128,255,255, 59,192, 0, 0, 59,224, 0, 0, 65,128, 0, 72, /* 0x 420 */ + 57, 74, 0, 1,125, 73, 3,166,128, 11, 0, 0, 47,128, 0, 1, /* 0x 430 */ + 64,190, 0, 44,129, 43, 0, 8,127,137,224, 64, 64,156, 0, 12, /* 0x 440 */ +131,235, 0, 16,125, 60, 75,120,128, 11, 0, 20,124, 0, 74, 20, /* 0x 450 */ +127,158, 0, 64, 64,156, 0, 8,124, 30, 3,120, 57,107, 0, 32, /* 0x 460 */ + 66, 0,255,200, 87,128, 5, 62, 87,156, 0, 38,125, 60,240, 80, /* 0x 470 */ +127,255, 2, 20, 57, 41, 15,255, 56, 31, 15,255, 85, 62, 0, 38, /* 0x 480 */ + 84, 31, 0, 38,124,102, 27,120,127,196,243,120, 56,160, 0, 7, /* 0x 490 */ + 56,224, 0, 0, 57, 0, 0, 0,127,131,227,120, 75,255,252,157, /* 0x 4a0 */ +124,159,240, 80,124, 3,242, 20,124,125, 27,120,124, 99,250, 20, /* 0x 4b0 */ +144, 1, 0, 8, 75,255,252,193,160, 26, 0, 44, 58,192, 0, 0, /* 0x 4c0 */ +127, 60,232, 80,127,150, 0, 0, 64,156, 1, 84, 46, 23, 0, 0, /* 0x 4d0 */ + 65,146, 0, 40,128, 27, 0, 0, 47,128, 0, 6, 64,190, 0, 28, /* 0x 4e0 */ +128,187, 0, 8,126, 99,155,120, 56,128, 0, 3,124,165,202, 20, /* 0x 4f0 */ + 75,255,254,125, 72, 0, 1, 20,128, 27, 0, 0, 47,128, 0, 1, /* 0x 500 */ + 64,190, 1, 8,129, 27, 0, 8, 60, 0,115, 81,129, 59, 0, 24, /* 0x 510 */ + 96, 0, 98, 64,129, 91, 0, 20, 85, 30, 5, 62,129,123, 0, 16, /* 0x 520 */ + 85, 41, 22,250,124, 0, 76, 48,127,136, 82, 20,127,254, 64, 80, /* 0x 530 */ + 84, 24, 7,126,145, 97, 0, 16,127,171,242, 20,145, 1, 0, 20, /* 0x 540 */ +127,255,202, 20,127,156,202, 20, 65,146, 0, 12, 56,192, 0, 50, /* 0x 550 */ + 72, 0, 0, 8, 56,192, 0, 18,129, 27, 0, 4,127,227,251,120, /* 0x 560 */ +127,164,235,120, 56,160, 0, 3,125, 30, 64, 80,126, 71,147,120, /* 0x 570 */ + 75,255,251,201,127,159, 24, 0, 64,158, 0, 84, 65,178, 0, 24, /* 0x 580 */ +126,227,187,120, 56,129, 0, 16,126,133,163,120,126,166,171,120, /* 0x 590 */ + 75,255,252, 97,127,196,243,120,127,227,251,120, 75,255,253,177, /* 0x 5a0 */ +124, 29, 0,208, 84, 30, 5, 62,124,127,234, 20,127,196,243,120, /* 0x 5b0 */ + 75,255,253,157,127,227,251,120,127,164,235,120,127, 5,195,120, /* 0x 5c0 */ + 75,255,251,173, 47,131, 0, 0, 65,190, 0, 12, 56, 96, 0,127, /* 0x 5d0 */ + 75,255,251,125,124, 29,242, 20,127,255, 2, 20,127,159,224, 64, /* 0x 5e0 */ + 64,188, 0, 40,124,159,224, 80,127, 5,195,120,127,227,251,120, /* 0x 5f0 */ + 56,192, 0, 50, 56,224, 0, 0, 57, 0, 0, 0, 75,255,251, 61, /* 0x 600 */ +127,159, 24, 0, 64,190,255,200,160, 26, 0, 44, 58,214, 0, 1, /* 0x 610 */ + 59,123, 0, 32,127,150, 0, 0, 75,255,254,176, 47,151, 0, 0, /* 0x 620 */ + 65,158, 0, 24,160, 26, 0, 16, 47,128, 0, 3, 65,158, 0, 12, /* 0x 630 */ +128, 97, 0, 8, 75,255,251, 73,128,122, 0, 24,128, 1, 0,100, /* 0x 640 */ +129,129, 0, 36,124, 99,202, 20,124, 8, 3,166,186, 65, 0, 40, /* 0x 650 */ +125,128,129, 32, 56, 33, 0, 96, 78,128, 0, 32,124, 8, 2,166, /* 0x 660 */ +148, 33,255,192, 56,132,255,232,191, 97, 0, 44,144,129, 0, 8, /* 0x 670 */ +124,191, 43,120,144, 1, 0, 68, 56, 3, 0, 24,144, 1, 0, 12, /* 0x 680 */ +124,229, 59,120,128, 3, 0, 24, 56,192, 0, 0,200, 1, 0, 8, /* 0x 690 */ + 56, 97, 0, 8, 56,129, 0, 16, 59,223, 0, 52,125, 61, 75,120, /* 0x 6a0 */ +124,251, 59,120,144, 1, 0, 16,125, 28, 67,120,216, 1, 0, 24, /* 0x 6b0 */ +147,225, 0, 20, 75,255,251, 61,128,190, 0, 8,127,163,235,120, /* 0x 6c0 */ + 56,128, 0, 3, 56,165, 0, 52, 75,255,252,165,160,191, 0, 44, /* 0x 6d0 */ +127,163,235,120, 56,128, 0, 5, 75,255,252,149,128,191, 0, 24, /* 0x 6e0 */ +127,163,235,120, 56,128, 0, 9, 75,255,252,133,127,103,219,120, /* 0x 6f0 */ +127,136,227,120,127,227,251,120,127,166,235,120, 56,129, 0, 24, /* 0x 700 */ + 56,160, 0, 0, 59, 96, 0, 0, 75,255,252,177,160, 31, 0, 44, /* 0x 710 */ +124,124, 27,120,127,155, 0, 0, 64,156, 0,124,128, 30, 0, 0, /* 0x 720 */ + 59,123, 0, 1, 56,128, 0, 0, 56,160, 0, 0, 47,128, 0, 3, /* 0x 730 */ + 64,190, 0, 88,128,126, 0, 8, 75,255,250, 37,127,228,251,120, /* 0x 740 */ +124,125, 27,121, 56,160, 2, 0, 65,128, 0, 40, 75,255,250, 9, /* 0x 750 */ + 56,128, 0, 0, 47,131, 2, 0,127,165,235,120,127,227,251,120, /* 0x 760 */ + 56,192, 0, 0, 56,224, 0, 0, 57, 0, 0, 0, 65,190, 0, 12, /* 0x 770 */ + 56, 96, 0,127, 75,255,249,217, 75,255,252, 65,124,124, 27,120, /* 0x 780 */ +127,163,235,120, 75,255,249,225,160, 31, 0, 44, 59,222, 0, 32, /* 0x 790 */ + 75,255,255,132,128, 1, 0, 68,127,131,227,120,187, 97, 0, 44, /* 0x 7a0 */ + 56, 33, 0, 64,124, 8, 3,166, 78,128, 0, 32, 0, 71, 67, 67, /* 0x 7b0 */ + 58, 32, 40, 71, 78, 85, 41, 32, 51, 46, 52, 46, 49, 0, 0, 46, /* 0x 7c0 */ +115,104,115,116,114,116, 97, 98, 0, 46,116,101,120,116, 0, 46, /* 0x 7d0 */ + 98,115,115, 0, 46,115,100, 97,116, 97, 0, 46,115,100, 97,116, /* 0x 7e0 */ + 97, 50, 0, 46,110,111,116,101, 46, 71, 78, 85, 45,115,116, 97, /* 0x 7f0 */ + 99,107, 0, 46, 99,111,109,109,101,110,116, 0, 0, 0, 0, 0, /* 0x 800 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 810 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 820 */ + 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 1, 0, 0, 0, 6, /* 0x 830 */ + 0, 16, 0,128, 0, 0, 0,128, 0, 0, 7, 60, 0, 0, 0, 0, /* 0x 840 */ + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 17, /* 0x 850 */ + 0, 0, 0, 8, 0, 0, 0, 3, 0, 16, 7,188, 0, 0, 7,188, /* 0x 860 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x 870 */ + 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 1, 0, 0, 0, 3, /* 0x 880 */ + 0, 16, 7,188, 0, 0, 7,188, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 890 */ + 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 29, /* 0x 8a0 */ + 0, 0, 0, 1, 0, 0, 0, 2, 0, 16, 7,188, 0, 0, 7,188, /* 0x 8b0 */ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, /* 0x 8c0 */ + 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 1, 0, 0, 0, 0, /* 0x 8d0 */ + 0, 0, 0, 0, 0, 0, 7,188, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x 8e0 */ + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 53, /* 0x 8f0 */ + 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,188, /* 0x 900 */ + 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, /* 0x 910 */ + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, /* 0x 920 */ + 0, 0, 0, 0, 0, 0, 7,206, 0, 0, 0, 62, 0, 0, 0, 0, /* 0x 930 */ + 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 /* 0x 940 */ };