lzma for arm/pe v4a works

This commit is contained in:
László Molnár 2006-07-22 17:30:09 +02:00
parent 436532bed7
commit 1dcee2ffa2
7 changed files with 2979 additions and 1462 deletions

View File

@ -1691,7 +1691,7 @@ int PackArmPe::buildLoader(const Filter *ft)
else if (ph.method == M_NRV2D_8)
addLoader(".ucl_nrv2d_decompress_8", NULL);
else if (M_IS_LZMA(ph.method))
addLoader("LZMA_DECODE", "LZMA_DEC10", NULL);
addLoader("LZMA_DECODE", ".text.LzmaDecode", NULL);
}
else
{

File diff suppressed because it is too large Load Diff

View File

@ -34,12 +34,7 @@ tc.arm-lzma.gcc += -I$(UPX_LZMADIR)
tc.arm-lzma.gcc += -I$(top_srcdir)/src
lzma_d_c%.S : lzma_d_c.c
$(call tc,gcc) $(PP_FLAGS) -c $< -o tmp/$T.o
$(call tc,objstrip) tmp/$T.o
$(call tc,objcopy) -O binary --only-section .text.LzmaDecode tmp/$T.o tmp/$T.bin
head -c-0 tmp/$T.bin > tmp/$T.out
$(call tc,objdump) -b binary -m armv4 -D tmp/$T.out > tmp/$T.out.lst
$(call tc,bin2h) --mode=gas tmp/$T.out $@
$(call tc,gcc) $(PP_FLAGS) -S $< -o $@
lzma_d_cf.% : PP_FLAGS = -DFAST
lzma_d_cs.% : PP_FLAGS = -DSMALL

View File

@ -1,163 +1,758 @@
.byte 240, 75, 45,233, 64,208, 77,226, 56, 48,141,229, 0, 48,160,227 /* 0x0000 */
.byte 48, 48,141,229, 0,192,208,229, 1, 64,208,229, 2,224,208,229 /* 0x0010 */
.byte 36,192,141,229, 56,192,157,229, 0, 48,140,229,104,192,157,229 /* 0x0020 */
.byte 0, 48,140,229, 36, 48,157,229, 1,192,208,229, 12,192,131,224 /* 0x0030 */
.byte 3, 60,160,227, 19, 60,160,225,115,206,131,226, 1, 48,160,227 /* 0x0040 */
.byte 19,238,160,225, 1,224, 78,226, 28, 48,141,229, 19, 52,160,225 /* 0x0050 */
.byte 44,224,141,229, 0, 64,160,227, 1,224,160,227, 1, 48, 67,226 /* 0x0060 */
.byte 4, 0,128,226, 6,192,140,226, 40, 48,141,229, 52, 0,141,229 /* 0x0070 */
.byte 32, 64,141,229, 24,224,141,229, 20,224,141,229, 16,224,141,229 /* 0x0080 */
.byte 60, 16,141,229, 12, 0, 84,225, 4, 16,160,225, 45, 0, 0, 42 /* 0x0090 */
.byte 129, 48,160,225, 52, 0,157,229, 1, 16,129,226, 1,235,160,227 /* 0x00a0 */
.byte 12, 0, 81,225,176,224,131,225, 37, 0, 0,234, 60, 0,157,229 /* 0x00b0 */
.byte 0,128,160,227, 2, 32,128,224, 12, 32,141,229, 0,112,160,225 /* 0x00c0 */
.byte 0,224,224,227, 8, 32,160,225, 12, 16,157,229, 1, 0, 87,225 /* 0x00d0 */
.byte 1, 32,130,226,125, 2, 0, 10, 1, 48,215,228, 4, 0, 82,227 /* 0x00e0 */
.byte 8,132,131,225, 52, 0, 0,218, 48, 32,157,229,100, 48,157,229 /* 0x00f0 */
.byte 3, 0, 82,225,119, 2, 0, 42, 44, 0,141,226, 1, 16,144,232 /* 0x0100 */
.byte 32, 16,157,229, 0,176, 12,224,255,148,224,227, 1, 50,139,224 /* 0x0110 */
.byte 9, 0, 94,225,131, 80,160,225, 79, 0, 0,138, 12, 32,157,229 /* 0x0120 */
.byte 2, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, 14,228,160,225 /* 0x0130 */
.byte 8,132,131,225, 52, 48,157,229,179, 16,149,225, 1, 40,160,225 /* 0x0140 */
.byte 174, 53,160,225, 34, 8,160,225,144, 3, 12,224, 12, 0, 88,225 /* 0x0150 */
.byte 202, 0, 0, 42, 36,224,157,229, 8, 48,110,226, 84, 51,160,225 /* 0x0160 */
.byte 40,224,157,229, 48, 64,157,229, 14, 32, 4,224, 36, 64,157,229 /* 0x0170 */
.byte 52,224,157,229, 18, 52,131,224,131, 48,131,224, 2, 43, 96,226 /* 0x0180 */
.byte 32, 0,157,229,131, 52,142,224,194, 34,129,224,230, 78,131,226 /* 0x0190 */
.byte 6, 0, 80,227,190, 32,133,225, 12, 64,132,226, 12,224,160,225 /* 0x01a0 */
.byte 1,176,160,227,157, 0, 0,218, 48, 16,157,229, 28, 32,157,229 /* 0x01b0 */
.byte 96,192,157,229, 1, 48, 98,224, 3, 48,220,231, 8, 48,141,229 /* 0x01c0 */
.byte 8, 0,157,229,128, 0,160,225, 1,108, 0,226,139,144,160,225 /* 0x01d0 */
.byte 134, 48,132,224, 9, 48,131,224, 1, 4, 94,227, 8, 0,141,229 /* 0x01e0 */
.byte 2, 92,131,226,130, 0, 0, 42, 12, 16,157,229, 1, 0, 87,225 /* 0x01f0 */
.byte 14,228,160,225,125, 2, 0, 10, 1, 48,215,228, 8,132,131,225 /* 0x0200 */
.byte 176, 32,213,225, 2, 24,160,225, 33, 56,160,225,174, 5,160,225 /* 0x0210 */
.byte 147, 0, 12,224, 2, 59, 99,226, 12, 0, 88,225,195, 50,130,224 /* 0x0220 */
.byte 9,176,160,225,161, 42, 66,224,146, 0, 0, 42, 0, 0, 86,227 /* 0x0230 */
.byte 176, 48,197,225, 12,224,160,225,152, 0, 0, 10,155, 0, 0,234 /* 0x0240 */
.byte 0, 0, 86,227,176, 32,197,225, 8,128,108,224, 1,176,137,226 /* 0x0250 */
.byte 14,224,108,224,155, 0, 0, 10,255, 0, 91,227,114, 0, 0,218 /* 0x0260 */
.byte 183, 0, 0,234,255, 0, 91,227,183, 0, 0,202,139, 80,160,225 /* 0x0270 */
.byte 1, 4, 94,227, 5,176,160,225,167, 0, 0, 42, 12, 32,157,229 /* 0x0280 */
.byte 2, 0, 87,225, 14,228,160,225,125, 2, 0, 10, 1, 48,215,228 /* 0x0290 */
.byte 8,132,131,225,181, 32,148,225, 2, 8,160,225,174, 21,160,225 /* 0x02a0 */
.byte 32, 56,160,225,147, 1, 12,224, 2, 59, 99,226, 12, 0, 88,225 /* 0x02b0 */
.byte 195, 50,130,224, 14,224,108,224,160, 42, 66,224, 12,224,160, 49 /* 0x02c0 */
.byte 8,128,108, 32, 1,176,133, 34,181, 48,132, 49,181, 32,132, 33 /* 0x02d0 */
.byte 155, 0, 0,234, 32, 48,157,229, 48,192,157,229, 96, 0,157,229 /* 0x02e0 */
.byte 3, 0, 83,227,255, 64, 11,226, 0, 64,204,231, 0, 16,160,211 /* 0x02f0 */
.byte 1,192,140,226, 48,192,141,229, 32, 16,141,213,115, 2, 0,218 /* 0x0300 */
.byte 32, 32,157,229, 9, 0, 82,227, 32, 48,157,197, 3, 32, 66,210 /* 0x0310 */
.byte 6, 48, 67,194, 32, 32,141,213, 32, 48,141,197,115, 2, 0,234 /* 0x0320 */
.byte 52, 64,157,229, 32, 0,157,229, 14,224,108,224,162, 58, 65,224 /* 0x0330 */
.byte 128, 96,132,224, 9, 0, 94,225,180, 48,133,225, 8,128,108,224 /* 0x0340 */
.byte 6, 77,134,226,218, 0, 0,138, 12, 16,157,229, 1, 0, 87,225 /* 0x0350 */
.byte 125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, 8,132,131,225 /* 0x0360 */
.byte 176, 32,212,225, 2, 8,160,225,174, 53,160,225, 32, 24,160,225 /* 0x0370 */
.byte 145, 3, 12,224, 12, 0, 88,225,244, 0, 0, 42, 2, 59, 97,226 /* 0x0380 */
.byte 195, 50,130,224,176, 48,196,225, 52, 32,157,229, 32, 48,157,229 /* 0x0390 */
.byte 20,224,157,229, 6, 0, 83,227, 24, 0,157,229,102, 78,130,226 /* 0x03a0 */
.byte 28, 16,157,229, 3, 48,160,195, 0, 48,160,211, 16,224,141,229 /* 0x03b0 */
.byte 4, 64,132,226, 12,224,160,225, 32, 48,141,229, 20, 0,141,229 /* 0x03c0 */
.byte 24, 16,141,229,128, 1, 0,234, 14,224,108,224,160, 58, 66,224 /* 0x03d0 */
.byte 9, 0, 94,225,176, 48,196,225, 8,128,108,224,102, 79,134,226 /* 0x03e0 */
.byte 1, 1, 0,138, 12, 32,157,229, 2, 0, 87,225,125, 2, 0, 10 /* 0x03f0 */
.byte 1, 48,215,228, 14,228,160,225, 8,132,131,225,176, 16,212,225 /* 0x0400 */
.byte 1, 8,160,225,174, 53,160,225, 32, 40,160,225,146, 3, 12,224 /* 0x0410 */
.byte 12, 0, 88,225, 56, 1, 0, 42, 12,224,160,225, 32, 0,157,229 /* 0x0420 */
.byte 52,192,157,229, 2, 59, 98,226,128, 34,140,224,195, 50,129,224 /* 0x0430 */
.byte 139, 32,130,224, 9, 0, 94,225,176, 48,196,225, 30, 78,130,226 /* 0x0440 */
.byte 25, 1, 0,138, 12, 16,157,229, 1, 0, 87,225,125, 2, 0, 10 /* 0x0450 */
.byte 1, 48,215,228, 14,228,160,225, 8,132,131,225,176, 32,212,225 /* 0x0460 */
.byte 2, 8,160,225,174, 53,160,225, 32, 24,160,225,145, 3, 12,224 /* 0x0470 */
.byte 12, 0, 88,225,160, 58, 66, 32, 8,128,108, 32, 14,224,108, 32 /* 0x0480 */
.byte 176, 48,196, 33,120, 1, 0, 42, 2, 59, 97,226,195, 50,130,224 /* 0x0490 */
.byte 48, 32,157,229, 0, 0, 82,227,176, 48,196,225, 12,224,160,225 /* 0x04a0 */
.byte 125, 2, 0, 10, 28, 64,157,229, 32, 0,157,229, 96,192,157,229 /* 0x04b0 */
.byte 2, 48,100,224, 3, 64,220,231, 6, 0, 80,227, 11, 0,160,195 /* 0x04c0 */
.byte 9, 0,160,211, 32, 0,141,229, 12, 64,194,231, 1, 32,130,226 /* 0x04d0 */
.byte 48, 32,141,229,115, 2, 0,234, 14,224,108,224,160, 58, 65,224 /* 0x04e0 */
.byte 9, 0, 94,225,176, 48,196,225, 8,128,108,224, 27, 78,134,226 /* 0x04f0 */
.byte 69, 1, 0,138, 12, 16,157,229, 1, 0, 87,225,125, 2, 0, 10 /* 0x0500 */
.byte 1, 48,215,228, 14,228,160,225, 8,132,131,225,176, 32,212,225 /* 0x0510 */
.byte 2, 8,160,225,174, 53,160,225, 32, 24,160,225,145, 3, 12,224 /* 0x0520 */
.byte 12, 0, 88,225, 82, 1, 0, 42, 2, 59, 97,226,195, 50,130,224 /* 0x0530 */
.byte 24, 32,157,229, 12,224,160,225,176, 48,196,225,117, 1, 0,234 /* 0x0540 */
.byte 14,224,108,224,160, 58, 66,224, 9, 0, 94,225,176, 48,196,225 /* 0x0550 */
.byte 8,128,108,224,114, 79,134,226, 95, 1, 0,138, 12, 32,157,229 /* 0x0560 */
.byte 2, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, 14,228,160,225 /* 0x0570 */
.byte 8,132,131,225,176, 32,212,225, 2, 8,160,225,174, 53,160,225 /* 0x0580 */
.byte 32, 24,160,225,145, 3, 12,224, 12, 0, 88,225,108, 1, 0, 42 /* 0x0590 */
.byte 2, 59, 97,226,195, 50,130,224, 20, 32,157,229, 12,224,160,225 /* 0x05a0 */
.byte 176, 48,196,225,115, 1, 0,234,160, 58, 66,224,176, 48,196,225 /* 0x05b0 */
.byte 16, 32,141,226, 12, 0,146,232, 16, 48,141,229, 8,128,108,224 /* 0x05c0 */
.byte 14,224,108,224, 24, 64,157,229, 20, 64,141,229, 28,192,157,229 /* 0x05d0 */
.byte 28, 32,141,229, 24,192,141,229, 32, 16,157,229, 52, 0,157,229 /* 0x05e0 */
.byte 6, 0, 81,227, 11, 16,160,195, 8, 16,160,211,166, 78,128,226 /* 0x05f0 */
.byte 32, 16,141,229, 8, 64,132,226,255, 84,224,227, 5, 0, 94,225 /* 0x0600 */
.byte 137, 1, 0,138, 12, 32,157,229, 2, 0, 87,225,125, 2, 0, 10 /* 0x0610 */
.byte 1, 48,215,228, 14,228,160,225, 8,132,131,225,176, 16,212,225 /* 0x0620 */
.byte 1, 40,160,225,174, 53,160,225, 34, 8,160,225,144, 3, 12,224 /* 0x0630 */
.byte 12, 0, 88,225,154, 1, 0, 42, 11, 34,132,224, 2, 59, 96,226 /* 0x0640 */
.byte 195, 50,129,224, 12,224,160,225, 4, 80,130,226, 3,192,160,227 /* 0x0650 */
.byte 0,144,160,227, 4,192,141,229,176, 48,196,225,191, 1, 0,234 /* 0x0660 */
.byte 14,224,108,224,162, 58, 65,224, 5, 0, 94,225, 8,128,108,224 /* 0x0670 */
.byte 176, 48,196,225,166, 1, 0,138, 12, 0,157,229, 0, 0, 87,225 /* 0x0680 */
.byte 125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, 8,132,131,225 /* 0x0690 */
.byte 178, 16,212,225, 1, 40,160,225,174, 53,160,225, 34, 8,160,225 /* 0x06a0 */
.byte 144, 3, 12,224, 12, 0, 88,225,183, 1, 0, 42, 11, 34,132,224 /* 0x06b0 */
.byte 2, 59, 96,226,195, 50,129,224, 12,224,160,225, 3, 16,160,227 /* 0x06c0 */
.byte 65, 95,130,226, 8,144,160,227, 4, 16,141,229,178, 48,196,225 /* 0x06d0 */
.byte 191, 1, 0,234,162, 58, 65,224, 8, 32,160,227,178, 48,196,225 /* 0x06e0 */
.byte 4, 32,141,229, 8,128,108,224, 14,224,108,224,129, 95,132,226 /* 0x06f0 */
.byte 16,144,160,227, 4, 96,157,229, 1,176,160,227,139, 64,160,225 /* 0x0700 */
.byte 1, 4, 94,227, 4,176,160,225,203, 1, 0, 42, 12, 48,157,229 /* 0x0710 */
.byte 3, 0, 87,225, 14,228,160,225,125, 2, 0, 10, 1, 48,215,228 /* 0x0720 */
.byte 8,132,131,225,180, 32,149,225, 2, 8,160,225,174, 21,160,225 /* 0x0730 */
.byte 32, 56,160,225,147, 1, 12,224, 2, 59, 99,226, 12, 0, 88,225 /* 0x0740 */
.byte 195, 50,130,224,160, 42, 66,224, 14,224,108,224,180, 48,133, 49 /* 0x0750 */
.byte 12,224,160, 49, 8,128,108, 32, 1,176,132, 34,180, 32,133, 33 /* 0x0760 */
.byte 1, 96, 86,226,193, 1, 0, 26, 4, 64,157,229, 32,192,157,229 /* 0x0770 */
.byte 1, 32,160,227, 18,180, 75,224, 3, 0, 92,227, 9,176,139,224 /* 0x0780 */
.byte 92, 2, 0,202, 52, 0,157,229, 3, 0, 91,227, 11, 48,160,177 /* 0x0790 */
.byte 3, 48,160,163, 7,192,140,226,131, 51,128,224, 32,192,141,229 /* 0x07a0 */
.byte 54, 78,131,226, 2, 96,160,225, 6,144,160,227,134, 80,160,225 /* 0x07b0 */
.byte 1, 4, 94,227, 5, 96,160,225,247, 1, 0, 42, 12, 16,157,229 /* 0x07c0 */
.byte 1, 0, 87,225, 14,228,160,225,125, 2, 0, 10, 1, 48,215,228 /* 0x07d0 */
.byte 8,132,131,225,181, 32,148,225, 2, 8,160,225,174, 21,160,225 /* 0x07e0 */
.byte 32, 56,160,225,147, 1, 12,224, 2, 59, 99,226, 12, 0, 88,225 /* 0x07f0 */
.byte 195, 50,130,224,160, 42, 66,224, 14,224,108,224,181, 48,132, 49 /* 0x0800 */
.byte 12,224,160, 49, 8,128,108, 32, 1, 96,133, 34,181, 32,132, 33 /* 0x0810 */
.byte 1,144, 89,226,237, 1, 0, 26, 64, 96, 70,226, 3, 0, 86,227 /* 0x0820 */
.byte 28, 96,141,213, 88, 2, 0,218, 1, 48, 6,226,198, 32,160,225 /* 0x0830 */
.byte 13, 0, 86,227, 2, 48,131,227, 1, 80, 66,226, 28, 48,141,229 /* 0x0840 */
.byte 5, 80, 66,194, 28, 2, 0,202, 52, 32,157,229, 19, 53,160,225 /* 0x0850 */
.byte 28, 48,141,229,131, 48,130,224,134, 48, 67,224, 85, 78,131,226 /* 0x0860 */
.byte 14, 64,132,226, 53, 2, 0,234, 1, 4, 94,227, 36, 2, 0, 42 /* 0x0870 */
.byte 12, 48,157,229, 3, 0, 87,225,125, 2, 0, 10, 1, 48,215,228 /* 0x0880 */
.byte 14,228,160,225, 8,132,131,225, 28, 64,157,229,174,224,160,225 /* 0x0890 */
.byte 14, 0, 88,225,132, 64,160,225, 28, 64,141,229, 1, 64,132, 35 /* 0x08a0 */
.byte 8,128,110, 32, 28, 64,141, 37, 1, 80, 85,226, 28, 2, 0, 26 /* 0x08b0 */
.byte 28, 0,157,229, 52,192,157,229, 0, 2,160,225, 25, 77,140,226 /* 0x08c0 */
.byte 28, 0,141,229, 4, 64,132,226, 4, 80,160,227, 1,144,160,227 /* 0x08d0 */
.byte 0,144,141,229, 0, 16,157,229, 1, 4, 94,227,129, 96,160,225 /* 0x08e0 */
.byte 0, 96,141,229, 66, 2, 0, 42, 12, 32,157,229, 2, 0, 87,225 /* 0x08f0 */
.byte 14,228,160,225,125, 2, 0, 10, 1, 48,215,228, 8,132,131,225 /* 0x0900 */
.byte 182, 32,148,225, 2, 8,160,225,174, 21,160,225, 32, 56,160,225 /* 0x0910 */
.byte 147, 1, 12,224, 12, 0, 88,225, 14,224,108,224, 8,128,108, 32 /* 0x0920 */
.byte 28,192,157, 37, 2, 59, 99,226,195, 50,130,224, 9,192,140, 33 /* 0x0930 */
.byte 1, 48,134, 34,160, 42, 66,224, 12,224,160, 49,182, 48,132, 49 /* 0x0940 */
.byte 0, 48,141, 37,182, 32,132, 33, 28,192,141, 37, 1, 80, 85,226 /* 0x0950 */
.byte 137,144,160,225, 55, 2, 0, 26, 28, 0,157,229, 1, 0,144,226 /* 0x0960 */
.byte 28, 0,141,229,119, 2, 0, 10, 28, 16,157,229, 48, 32,157,229 /* 0x0970 */
.byte 2, 0, 81,225, 2,176,139,226,125, 2, 0,138, 48, 64,157,229 /* 0x0980 */
.byte 28,192,157,229, 96, 0,157,229, 4, 48,108,224, 3, 64,208,231 /* 0x0990 */
.byte 48, 16,157,229, 0, 64,193,231, 1,176, 91,226,100, 32,157,229 /* 0x09a0 */
.byte 0, 48,160, 3, 1, 48,160, 19, 1, 16,129,226, 2, 0, 81,225 /* 0x09b0 */
.byte 0, 48,160, 35, 1, 48, 3, 50, 0, 0, 83,227, 48, 16,141,229 /* 0x09c0 */
.byte 97, 2, 0, 26, 48, 48,157,229,100,192,157,229, 12, 0, 83,225 /* 0x09d0 */
.byte 63, 0, 0,234, 1, 4, 94,227,127, 2, 0, 42, 12,224,157,229 /* 0x09e0 */
.byte 14, 0, 87,225, 1,112,135, 18,127, 2, 0, 26, 1, 0,160,227 /* 0x09f0 */
.byte 135, 2, 0,234, 60, 0,157,229, 56, 16,157,229, 7, 48, 96,224 /* 0x0a00 */
.byte 0, 48,129,229,104, 32,157,229, 48, 48,157,229, 0, 48,130,229 /* 0x0a10 */
.byte 0, 0,160,227, 64,208,141,226,240,139,189,232 /* 0x0a20 */
.file "lzma_d_c.c"
.section .text.LzmaDecodeProperties,"ax",%progbits
.align 2
.global LzmaDecodeProperties
.type LzmaDecodeProperties, %function
LzmaDecodeProperties:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
cmp r2, #4
@ lr needed for prologue
ble .L18
ldrb r1, [r1, #0] @ zero_extendqisi2
cmp r1, #224
bls .L3
.L18:
mov r0, #1
mov pc, lr
.L3:
mov r3, #0
cmp r1, #44
str r3, [r0, #8]
bls .L13
mov r2, r3
.L7:
sub r3, r1, #45
and r1, r3, #255
cmp r1, #44
add r2, r2, #1
bhi .L7
str r2, [r0, #8]
.L13:
mov r3, #0
cmp r1, #8
str r3, [r0, #4]
bls .L15
mov r2, r3
.L11:
sub r3, r1, #9
and r1, r3, #255
cmp r1, #8
add r2, r2, #1
bhi .L11
str r2, [r0, #4]
.L15:
str r1, [r0, #0]
mov r0, #0
mov pc, lr
.size LzmaDecodeProperties, .-LzmaDecodeProperties
.section .text.LzmaDecode,"ax",%progbits
.align 2
.global LzmaDecode
.type LzmaDecode, %function
LzmaDecode:
@ args = 12, pretend = 0, frame = 64
@ frame_needed = 0, uses_anonymous_args = 0
stmfd sp!, {r4, r5, r6, r7, r8, r9, fp, lr}
sub sp, sp, #64
str r3, [sp, #56]
mov r3, #0
str r3, [sp, #48]
ldrb ip, [r0, #0] @ zero_extendqisi2
ldrb r4, [r0, #1] @ zero_extendqisi2
ldrb lr, [r0, #2] @ zero_extendqisi2
str ip, [sp, #36]
ldr ip, [sp, #56]
str r3, [ip, #0]
ldr ip, [sp, #104]
str r3, [ip, #0]
ldr r3, [sp, #36]
ldrb ip, [r0, #1] @ zero_extendqisi2
add ip, r3, ip
mov r3, #768
mov r3, r3, asl ip
add ip, r3, #1840
mov r3, #1
mov lr, r3, asl lr
sub lr, lr, #1
str r3, [sp, #28]
mov r3, r3, asl r4
str lr, [sp, #44]
mov r4, #0
mov lr, #1
sub r3, r3, #1
add r0, r0, #4
add ip, ip, #6
str r3, [sp, #40]
str r0, [sp, #52]
str r4, [sp, #32]
str lr, [sp, #24]
str lr, [sp, #20]
str lr, [sp, #16]
str r1, [sp, #60]
cmp r4, ip
mov r1, r4
.L157:
bcs .L132
mov r3, r1, asl #1
ldr r0, [sp, #52]
add r1, r1, #1
mov lr, #1024 @ movhi
cmp r1, ip
strh lr, [r3, r0] @ movhi
b .L157
.L132:
ldr r0, [sp, #60]
mov r8, #0
add r2, r0, r2
str r2, [sp, #12]
mov r7, r0
mvn lr, #0
mov r2, r8
.L28:
ldr r1, [sp, #12]
cmp r7, r1
add r2, r2, #1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
cmp r2, #4
orr r8, r3, r8, asl #8
ble .L28
ldr r2, [sp, #48]
ldr r3, [sp, #100]
cmp r2, r3
.L158:
bcs .L30
add r0, sp, #44
ldmia r0, {r0, ip} @ phole ldm
ldr r1, [sp, #32]
and fp, ip, r0
mvn r9, #-16777216
add r3, fp, r1, asl #4
cmp lr, r9
mov r5, r3, asl #1
bhi .L31
ldr r2, [sp, #12]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L31:
ldr r3, [sp, #52]
ldrh r1, [r5, r3]
mov r2, r1, asl #16
mov r3, lr, lsr #11
mov r0, r2, lsr #16
mul ip, r0, r3
cmp r8, ip
bcs .L33
ldr lr, [sp, #36]
rsb r3, lr, #8
mov r3, r4, asr r3
ldr lr, [sp, #40]
ldr r4, [sp, #48]
and r2, r4, lr
ldr r4, [sp, #36]
ldr lr, [sp, #52]
add r3, r3, r2, asl r4
add r3, r3, r3, asl #1
rsb r2, r0, #2048
ldr r0, [sp, #32]
add r3, lr, r3, asl #9
add r2, r1, r2, asr #5
add r4, r3, #3680
cmp r0, #6
strh r2, [r5, lr] @ movhi
add r4, r4, #12
mov lr, ip
mov fp, #1
ble .L50
ldr r1, [sp, #48]
ldr r2, [sp, #28]
ldr ip, [sp, #96]
rsb r3, r2, r1
ldrb r3, [ip, r3] @ zero_extendqisi2
str r3, [sp, #8]
.L35:
ldr r0, [sp, #8]
mov r0, r0, asl #1
and r6, r0, #256
mov r9, fp, asl #1
add r3, r4, r6, asl #1
add r3, r3, r9
cmp lr, #16777216
str r0, [sp, #8]
add r5, r3, #512
bcs .L38
ldr r1, [sp, #12]
cmp r7, r1
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
orr r8, r3, r8, asl #8
.L38:
ldrh r2, [r5, #0]
mov r1, r2, asl #16
mov r3, r1, lsr #16
mov r0, lr, lsr #11
mul ip, r3, r0
rsb r3, r3, #2048
cmp r8, ip
add r3, r2, r3, asr #5
mov fp, r9
sub r2, r2, r1, lsr #21
bcs .L40
cmp r6, #0
strh r3, [r5, #0] @ movhi
mov lr, ip
beq .L37
b .L34
.L40:
cmp r6, #0
strh r2, [r5, #0] @ movhi
rsb r8, ip, r8
add fp, r9, #1
rsb lr, ip, lr
beq .L34
.L37:
cmp fp, #255
ble .L35
b .L137
.L34:
cmp fp, #255
bgt .L137
.L50:
mov r5, fp, asl #1
cmp lr, #16777216
mov fp, r5
bcs .L46
ldr r2, [sp, #12]
cmp r7, r2
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
orr r8, r3, r8, asl #8
.L46:
ldrh r2, [r4, r5]
mov r0, r2, asl #16
mov r1, lr, lsr #11
mov r3, r0, lsr #16
mul ip, r3, r1
rsb r3, r3, #2048
cmp r8, ip
add r3, r2, r3, asr #5
rsb lr, ip, lr
sub r2, r2, r0, lsr #21
movcc lr, ip
rsbcs r8, ip, r8
addcs fp, r5, #1
strcch r3, [r4, r5] @ movhi
strcsh r2, [r4, r5] @ movhi
b .L34
.L137:
ldr r3, [sp, #32]
ldr ip, [sp, #48]
ldr r0, [sp, #96]
cmp r3, #3
and r4, fp, #255
strb r4, [ip, r0]
movle r1, #0
add ip, ip, #1
str ip, [sp, #48]
strle r1, [sp, #32]
ble .L29
ldr r2, [sp, #32]
cmp r2, #9
ldrgt r3, [sp, #32]
suble r2, r2, #3
subgt r3, r3, #6
strle r2, [sp, #32]
strgt r3, [sp, #32]
b .L29
.L33:
ldr r4, [sp, #52]
ldr r0, [sp, #32]
rsb lr, ip, lr
sub r3, r1, r2, lsr #21
add r6, r4, r0, asl #1
cmp lr, r9
strh r3, [r5, r4] @ movhi
rsb r8, ip, r8
add r4, r6, #384
bhi .L56
ldr r1, [sp, #12]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L56:
ldrh r2, [r4, #0]
mov r0, r2, asl #16
mov r3, lr, lsr #11
mov r1, r0, lsr #16
mul ip, r1, r3
cmp r8, ip
bcs .L58
rsb r3, r1, #2048
add r3, r2, r3, asr #5
strh r3, [r4, #0] @ movhi
ldr r2, [sp, #52]
ldr r3, [sp, #32]
ldr lr, [sp, #20]
cmp r3, #6
ldr r0, [sp, #24]
add r4, r2, #1632
ldr r1, [sp, #28]
movgt r3, #3
movle r3, #0
str lr, [sp, #16]
add r4, r4, #4
mov lr, ip
str r3, [sp, #32]
str r0, [sp, #20]
str r1, [sp, #24]
b .L61
.L58:
rsb lr, ip, lr
sub r3, r2, r0, lsr #21
cmp lr, r9
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #408
bhi .L62
ldr r2, [sp, #12]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L62:
ldrh r1, [r4, #0]
mov r0, r1, asl #16
mov r3, lr, lsr #11
mov r2, r0, lsr #16
mul ip, r2, r3
cmp r8, ip
bcs .L64
mov lr, ip
ldr r0, [sp, #32]
ldr ip, [sp, #52]
rsb r3, r2, #2048
add r2, ip, r0, asl #5
add r3, r1, r3, asr #5
add r2, r2, fp, asl #1
cmp lr, r9
strh r3, [r4, #0] @ movhi
add r4, r2, #480
bhi .L65
ldr r1, [sp, #12]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L65:
ldrh r2, [r4, #0]
mov r0, r2, asl #16
mov r3, lr, lsr #11
mov r1, r0, lsr #16
mul ip, r1, r3
cmp r8, ip
subcs r3, r2, r0, lsr #21
rsbcs r8, ip, r8
rsbcs lr, ip, lr
strcsh r3, [r4, #0] @ movhi
bcs .L72
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #48]
cmp r2, #0
strh r3, [r4, #0] @ movhi
mov lr, ip
beq .L155
ldr r4, [sp, #28]
ldr r0, [sp, #32]
ldr ip, [sp, #96]
rsb r3, r4, r2
ldrb r4, [ip, r3] @ zero_extendqisi2
cmp r0, #6
movgt r0, #11
movle r0, #9
str r0, [sp, #32]
strb r4, [r2, ip]
add r2, r2, #1
str r2, [sp, #48]
b .L29
.L64:
rsb lr, ip, lr
sub r3, r1, r0, lsr #21
cmp lr, r9
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #432
bhi .L73
ldr r1, [sp, #12]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L73:
ldrh r2, [r4, #0]
mov r0, r2, asl #16
mov r3, lr, lsr #11
mov r1, r0, lsr #16
mul ip, r1, r3
cmp r8, ip
bcs .L75
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #24]
mov lr, ip
strh r3, [r4, #0] @ movhi
b .L76
.L75:
rsb lr, ip, lr
sub r3, r2, r0, lsr #21
cmp lr, r9
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #456
bhi .L77
ldr r2, [sp, #12]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L77:
ldrh r2, [r4, #0]
mov r0, r2, asl #16
mov r3, lr, lsr #11
mov r1, r0, lsr #16
mul ip, r1, r3
cmp r8, ip
bcs .L79
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #20]
mov lr, ip
strh r3, [r4, #0] @ movhi
b .L80
.L79:
sub r3, r2, r0, lsr #21
strh r3, [r4, #0] @ movhi
add r2, sp, #16
ldmia r2, {r2, r3} @ phole ldm
str r3, [sp, #16]
rsb r8, ip, r8
rsb lr, ip, lr
.L80:
ldr r4, [sp, #24]
str r4, [sp, #20]
.L76:
ldr ip, [sp, #28]
str r2, [sp, #28]
str ip, [sp, #24]
.L72:
ldr r1, [sp, #32]
ldr r0, [sp, #52]
cmp r1, #6
movgt r1, #11
movle r1, #8
add r4, r0, #2656
str r1, [sp, #32]
add r4, r4, #8
.L61:
mvn r5, #-16777216
cmp lr, r5
bhi .L83
ldr r2, [sp, #12]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L83:
ldrh r1, [r4, #0]
mov r2, r1, asl #16
mov r3, lr, lsr #11
mov r0, r2, lsr #16
mul ip, r0, r3
cmp r8, ip
bcs .L85
add r2, r4, fp, asl #4
rsb r3, r0, #2048
add r3, r1, r3, asr #5
mov lr, ip
add r5, r2, #4
mov ip, #3
mov r9, #0
str ip, [sp, #4]
strh r3, [r4, #0] @ movhi
b .L86
.L85:
rsb lr, ip, lr
sub r3, r1, r2, lsr #21
cmp lr, r5
rsb r8, ip, r8
strh r3, [r4, #0] @ movhi
bhi .L87
ldr r0, [sp, #12]
cmp r7, r0
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L87:
ldrh r1, [r4, #2]
mov r2, r1, asl #16
mov r3, lr, lsr #11
mov r0, r2, lsr #16
mul ip, r0, r3
cmp r8, ip
bcs .L89
add r2, r4, fp, asl #4
rsb r3, r0, #2048
add r3, r1, r3, asr #5
mov lr, ip
mov r1, #3
add r5, r2, #260
mov r9, #8
str r1, [sp, #4]
strh r3, [r4, #2] @ movhi
b .L86
.L89:
sub r3, r1, r2, lsr #21
mov r2, #8
strh r3, [r4, #2] @ movhi
str r2, [sp, #4]
rsb r8, ip, r8
rsb lr, ip, lr
add r5, r4, #516
mov r9, #16
.L86:
ldr r6, [sp, #4]
mov fp, #1
.L91:
mov r4, fp, asl #1
cmp lr, #16777216
mov fp, r4
bcs .L94
ldr r3, [sp, #12]
cmp r7, r3
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
orr r8, r3, r8, asl #8
.L94:
ldrh r2, [r5, r4]
mov r0, r2, asl #16
mov r1, lr, lsr #11
mov r3, r0, lsr #16
mul ip, r3, r1
rsb r3, r3, #2048
cmp r8, ip
add r3, r2, r3, asr #5
sub r2, r2, r0, lsr #21
rsb lr, ip, lr
strcch r3, [r5, r4] @ movhi
movcc lr, ip
rsbcs r8, ip, r8
addcs fp, r4, #1
strcsh r2, [r5, r4] @ movhi
subs r6, r6, #1
bne .L91
ldr r4, [sp, #4]
ldr ip, [sp, #32]
mov r2, #1
sub fp, fp, r2, asl r4
cmp ip, #3
add fp, fp, r9
bgt .L98
ldr r0, [sp, #52]
cmp fp, #3
movlt r3, fp
movge r3, #3
add ip, ip, #7
add r3, r0, r3, asl #7
str ip, [sp, #32]
add r4, r3, #864
mov r6, r2
mov r9, #6
.L99:
mov r5, r6, asl #1
cmp lr, #16777216
mov r6, r5
bcs .L102
ldr r1, [sp, #12]
cmp r7, r1
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
orr r8, r3, r8, asl #8
.L102:
ldrh r2, [r4, r5]
mov r0, r2, asl #16
mov r1, lr, lsr #11
mov r3, r0, lsr #16
mul ip, r3, r1
rsb r3, r3, #2048
cmp r8, ip
add r3, r2, r3, asr #5
sub r2, r2, r0, lsr #21
rsb lr, ip, lr
strcch r3, [r4, r5] @ movhi
movcc lr, ip
rsbcs r8, ip, r8
addcs r6, r5, #1
strcsh r2, [r4, r5] @ movhi
subs r9, r9, #1
bne .L99
sub r6, r6, #64
cmp r6, #3
strle r6, [sp, #28]
ble .L122
and r3, r6, #1
mov r2, r6, asr #1
cmp r6, #13
orr r3, r3, #2
sub r5, r2, #1
str r3, [sp, #28]
subgt r5, r2, #5
bgt .L109
ldr r2, [sp, #52]
mov r3, r3, asl r5
str r3, [sp, #28]
add r3, r2, r3, asl #1
sub r3, r3, r6, asl #1
add r4, r3, #1360
add r4, r4, #14
b .L108
.L109:
cmp lr, #16777216
bcs .L112
ldr r3, [sp, #12]
cmp r7, r3
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L112:
ldr r4, [sp, #28]
mov lr, lr, lsr #1
cmp r8, lr
mov r4, r4, asl #1
str r4, [sp, #28]
orrcs r4, r4, #1
rsbcs r8, lr, r8
strcs r4, [sp, #28]
subs r5, r5, #1
bne .L109
ldr r0, [sp, #28]
ldr ip, [sp, #52]
mov r0, r0, asl #4
add r4, ip, #1600
str r0, [sp, #28]
add r4, r4, #4
mov r5, #4
.L108:
mov r9, #1
str r9, [sp, #0]
.L115:
ldr r1, [sp, #0]
cmp lr, #16777216
mov r6, r1, asl #1
str r6, [sp, #0]
bcs .L118
ldr r2, [sp, #12]
cmp r7, r2
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
orr r8, r3, r8, asl #8
.L118:
ldrh r2, [r4, r6]
mov r0, r2, asl #16
mov r1, lr, lsr #11
mov r3, r0, lsr #16
mul ip, r3, r1
cmp r8, ip
rsb lr, ip, lr
rsbcs r8, ip, r8
ldrcs ip, [sp, #28]
rsb r3, r3, #2048
add r3, r2, r3, asr #5
orrcs ip, ip, r9
addcs r3, r6, #1
sub r2, r2, r0, lsr #21
movcc lr, ip
strcch r3, [r4, r6] @ movhi
strcs r3, [sp, #0]
strcsh r2, [r4, r6] @ movhi
strcs ip, [sp, #28]
subs r5, r5, #1
mov r9, r9, asl #1
bne .L115
.L122:
ldr r0, [sp, #28]
adds r0, r0, #1
str r0, [sp, #28]
beq .L30
.L98:
ldr r1, [sp, #28]
ldr r2, [sp, #48]
cmp r1, r2
add fp, fp, #2
bhi .L155
.L125:
ldr r4, [sp, #48]
ldr ip, [sp, #28]
ldr r0, [sp, #96]
rsb r3, ip, r4
ldrb r4, [r0, r3] @ zero_extendqisi2
ldr r1, [sp, #48]
strb r4, [r1, r0]
subs fp, fp, #1
ldr r2, [sp, #100]
moveq r3, #0
movne r3, #1
add r1, r1, #1
cmp r1, r2
movcs r3, #0
andcc r3, r3, #1
cmp r3, #0
str r1, [sp, #48]
bne .L125
.L29:
ldr r3, [sp, #48]
ldr ip, [sp, #100]
cmp r3, ip
b .L158
.L30:
cmp lr, #16777216
bcs .L129
ldr lr, [sp, #12]
cmp r7, lr
addne r7, r7, #1
bne .L129
.L155:
mov r0, #1
b .L19
.L129:
ldr r0, [sp, #60]
ldr r1, [sp, #56]
rsb r3, r0, r7
str r3, [r1, #0]
ldr r2, [sp, #104]
ldr r3, [sp, #48]
str r3, [r2, #0]
mov r0, #0
.L19:
add sp, sp, #64
ldmfd sp!, {r4, r5, r6, r7, r8, r9, fp, pc}
.size LzmaDecode, .-LzmaDecode
.ident "GCC: (GNU) 3.4.5"

View File

@ -1,163 +1,758 @@
.byte 240, 75, 45,233, 64,208, 77,226, 56, 48,141,229, 0, 48,160,227 /* 0x0000 */
.byte 48, 48,141,229, 0,192,208,229, 1, 64,208,229, 2,224,208,229 /* 0x0010 */
.byte 36,192,141,229, 56,192,157,229, 0, 48,140,229,104,192,157,229 /* 0x0020 */
.byte 0, 48,140,229, 36, 48,157,229, 1,192,208,229, 12,192,131,224 /* 0x0030 */
.byte 3, 60,160,227, 19, 60,160,225,115,206,131,226, 1, 48,160,227 /* 0x0040 */
.byte 19,238,160,225, 1,224, 78,226, 28, 48,141,229, 19, 52,160,225 /* 0x0050 */
.byte 44,224,141,229, 0, 64,160,227, 1,224,160,227, 1, 48, 67,226 /* 0x0060 */
.byte 4, 0,128,226, 6,192,140,226, 40, 48,141,229, 52, 0,141,229 /* 0x0070 */
.byte 32, 64,141,229, 24,224,141,229, 20,224,141,229, 16,224,141,229 /* 0x0080 */
.byte 60, 16,141,229, 12, 0, 84,225, 4, 16,160,225, 45, 0, 0, 42 /* 0x0090 */
.byte 129, 48,160,225, 52, 0,157,229, 1, 16,129,226, 1,235,160,227 /* 0x00a0 */
.byte 12, 0, 81,225,176,224,131,225, 37, 0, 0,234, 60, 0,157,229 /* 0x00b0 */
.byte 0,128,160,227, 2, 32,128,224, 12, 32,141,229, 0,112,160,225 /* 0x00c0 */
.byte 0,224,224,227, 8, 32,160,225, 12, 16,157,229, 1, 0, 87,225 /* 0x00d0 */
.byte 1, 32,130,226,125, 2, 0, 10, 1, 48,215,228, 4, 0, 82,227 /* 0x00e0 */
.byte 8,132,131,225, 52, 0, 0,218, 48, 32,157,229,100, 48,157,229 /* 0x00f0 */
.byte 3, 0, 82,225,119, 2, 0, 42, 44, 0,141,226, 1, 16,144,232 /* 0x0100 */
.byte 32, 16,157,229, 0,176, 12,224,255,148,224,227, 1, 50,139,224 /* 0x0110 */
.byte 9, 0, 94,225,131, 80,160,225, 79, 0, 0,138, 12, 32,157,229 /* 0x0120 */
.byte 2, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, 14,228,160,225 /* 0x0130 */
.byte 8,132,131,225, 52, 48,157,229,179, 16,149,225, 1, 40,160,225 /* 0x0140 */
.byte 174, 53,160,225, 34, 8,160,225,144, 3, 12,224, 12, 0, 88,225 /* 0x0150 */
.byte 202, 0, 0, 42, 36,224,157,229, 8, 48,110,226, 84, 51,160,225 /* 0x0160 */
.byte 40,224,157,229, 48, 64,157,229, 14, 32, 4,224, 36, 64,157,229 /* 0x0170 */
.byte 52,224,157,229, 18, 52,131,224,131, 48,131,224, 2, 43, 96,226 /* 0x0180 */
.byte 32, 0,157,229,131, 52,142,224,194, 34,129,224,230, 78,131,226 /* 0x0190 */
.byte 6, 0, 80,227,190, 32,133,225, 12, 64,132,226, 12,224,160,225 /* 0x01a0 */
.byte 1,176,160,227,157, 0, 0,218, 48, 16,157,229, 28, 32,157,229 /* 0x01b0 */
.byte 96,192,157,229, 1, 48, 98,224, 3, 48,220,231, 8, 48,141,229 /* 0x01c0 */
.byte 8, 0,157,229,128, 0,160,225, 1,108, 0,226,139,144,160,225 /* 0x01d0 */
.byte 134, 48,132,224, 9, 48,131,224, 1, 4, 94,227, 8, 0,141,229 /* 0x01e0 */
.byte 2, 92,131,226,130, 0, 0, 42, 12, 16,157,229, 1, 0, 87,225 /* 0x01f0 */
.byte 14,228,160,225,125, 2, 0, 10, 1, 48,215,228, 8,132,131,225 /* 0x0200 */
.byte 176, 32,213,225, 2, 24,160,225, 33, 56,160,225,174, 5,160,225 /* 0x0210 */
.byte 147, 0, 12,224, 2, 59, 99,226, 12, 0, 88,225,195, 50,130,224 /* 0x0220 */
.byte 9,176,160,225,161, 42, 66,224,146, 0, 0, 42, 0, 0, 86,227 /* 0x0230 */
.byte 176, 48,197,225, 12,224,160,225,152, 0, 0, 10,155, 0, 0,234 /* 0x0240 */
.byte 0, 0, 86,227,176, 32,197,225, 8,128,108,224, 1,176,137,226 /* 0x0250 */
.byte 14,224,108,224,155, 0, 0, 10,255, 0, 91,227,114, 0, 0,218 /* 0x0260 */
.byte 183, 0, 0,234,255, 0, 91,227,183, 0, 0,202,139, 80,160,225 /* 0x0270 */
.byte 1, 4, 94,227, 5,176,160,225,167, 0, 0, 42, 12, 32,157,229 /* 0x0280 */
.byte 2, 0, 87,225, 14,228,160,225,125, 2, 0, 10, 1, 48,215,228 /* 0x0290 */
.byte 8,132,131,225,181, 32,148,225, 2, 8,160,225,174, 21,160,225 /* 0x02a0 */
.byte 32, 56,160,225,147, 1, 12,224, 2, 59, 99,226, 12, 0, 88,225 /* 0x02b0 */
.byte 195, 50,130,224, 14,224,108,224,160, 42, 66,224, 12,224,160, 49 /* 0x02c0 */
.byte 8,128,108, 32, 1,176,133, 34,181, 48,132, 49,181, 32,132, 33 /* 0x02d0 */
.byte 155, 0, 0,234, 32, 48,157,229, 48,192,157,229, 96, 0,157,229 /* 0x02e0 */
.byte 3, 0, 83,227,255, 64, 11,226, 0, 64,204,231, 0, 16,160,211 /* 0x02f0 */
.byte 1,192,140,226, 48,192,141,229, 32, 16,141,213,115, 2, 0,218 /* 0x0300 */
.byte 32, 32,157,229, 9, 0, 82,227, 32, 48,157,197, 3, 32, 66,210 /* 0x0310 */
.byte 6, 48, 67,194, 32, 32,141,213, 32, 48,141,197,115, 2, 0,234 /* 0x0320 */
.byte 52, 64,157,229, 32, 0,157,229, 14,224,108,224,162, 58, 65,224 /* 0x0330 */
.byte 128, 96,132,224, 9, 0, 94,225,180, 48,133,225, 8,128,108,224 /* 0x0340 */
.byte 6, 77,134,226,218, 0, 0,138, 12, 16,157,229, 1, 0, 87,225 /* 0x0350 */
.byte 125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, 8,132,131,225 /* 0x0360 */
.byte 176, 32,212,225, 2, 8,160,225,174, 53,160,225, 32, 24,160,225 /* 0x0370 */
.byte 145, 3, 12,224, 12, 0, 88,225,244, 0, 0, 42, 2, 59, 97,226 /* 0x0380 */
.byte 195, 50,130,224,176, 48,196,225, 52, 32,157,229, 32, 48,157,229 /* 0x0390 */
.byte 20,224,157,229, 6, 0, 83,227, 24, 0,157,229,102, 78,130,226 /* 0x03a0 */
.byte 28, 16,157,229, 3, 48,160,195, 0, 48,160,211, 16,224,141,229 /* 0x03b0 */
.byte 4, 64,132,226, 12,224,160,225, 32, 48,141,229, 20, 0,141,229 /* 0x03c0 */
.byte 24, 16,141,229,128, 1, 0,234, 14,224,108,224,160, 58, 66,224 /* 0x03d0 */
.byte 9, 0, 94,225,176, 48,196,225, 8,128,108,224,102, 79,134,226 /* 0x03e0 */
.byte 1, 1, 0,138, 12, 32,157,229, 2, 0, 87,225,125, 2, 0, 10 /* 0x03f0 */
.byte 1, 48,215,228, 14,228,160,225, 8,132,131,225,176, 16,212,225 /* 0x0400 */
.byte 1, 8,160,225,174, 53,160,225, 32, 40,160,225,146, 3, 12,224 /* 0x0410 */
.byte 12, 0, 88,225, 56, 1, 0, 42, 12,224,160,225, 32, 0,157,229 /* 0x0420 */
.byte 52,192,157,229, 2, 59, 98,226,128, 34,140,224,195, 50,129,224 /* 0x0430 */
.byte 139, 32,130,224, 9, 0, 94,225,176, 48,196,225, 30, 78,130,226 /* 0x0440 */
.byte 25, 1, 0,138, 12, 16,157,229, 1, 0, 87,225,125, 2, 0, 10 /* 0x0450 */
.byte 1, 48,215,228, 14,228,160,225, 8,132,131,225,176, 32,212,225 /* 0x0460 */
.byte 2, 8,160,225,174, 53,160,225, 32, 24,160,225,145, 3, 12,224 /* 0x0470 */
.byte 12, 0, 88,225,160, 58, 66, 32, 8,128,108, 32, 14,224,108, 32 /* 0x0480 */
.byte 176, 48,196, 33,120, 1, 0, 42, 2, 59, 97,226,195, 50,130,224 /* 0x0490 */
.byte 48, 32,157,229, 0, 0, 82,227,176, 48,196,225, 12,224,160,225 /* 0x04a0 */
.byte 125, 2, 0, 10, 28, 64,157,229, 32, 0,157,229, 96,192,157,229 /* 0x04b0 */
.byte 2, 48,100,224, 3, 64,220,231, 6, 0, 80,227, 11, 0,160,195 /* 0x04c0 */
.byte 9, 0,160,211, 32, 0,141,229, 12, 64,194,231, 1, 32,130,226 /* 0x04d0 */
.byte 48, 32,141,229,115, 2, 0,234, 14,224,108,224,160, 58, 65,224 /* 0x04e0 */
.byte 9, 0, 94,225,176, 48,196,225, 8,128,108,224, 27, 78,134,226 /* 0x04f0 */
.byte 69, 1, 0,138, 12, 16,157,229, 1, 0, 87,225,125, 2, 0, 10 /* 0x0500 */
.byte 1, 48,215,228, 14,228,160,225, 8,132,131,225,176, 32,212,225 /* 0x0510 */
.byte 2, 8,160,225,174, 53,160,225, 32, 24,160,225,145, 3, 12,224 /* 0x0520 */
.byte 12, 0, 88,225, 82, 1, 0, 42, 2, 59, 97,226,195, 50,130,224 /* 0x0530 */
.byte 24, 32,157,229, 12,224,160,225,176, 48,196,225,117, 1, 0,234 /* 0x0540 */
.byte 14,224,108,224,160, 58, 66,224, 9, 0, 94,225,176, 48,196,225 /* 0x0550 */
.byte 8,128,108,224,114, 79,134,226, 95, 1, 0,138, 12, 32,157,229 /* 0x0560 */
.byte 2, 0, 87,225,125, 2, 0, 10, 1, 48,215,228, 14,228,160,225 /* 0x0570 */
.byte 8,132,131,225,176, 32,212,225, 2, 8,160,225,174, 53,160,225 /* 0x0580 */
.byte 32, 24,160,225,145, 3, 12,224, 12, 0, 88,225,108, 1, 0, 42 /* 0x0590 */
.byte 2, 59, 97,226,195, 50,130,224, 20, 32,157,229, 12,224,160,225 /* 0x05a0 */
.byte 176, 48,196,225,115, 1, 0,234,160, 58, 66,224,176, 48,196,225 /* 0x05b0 */
.byte 16, 32,141,226, 12, 0,146,232, 16, 48,141,229, 8,128,108,224 /* 0x05c0 */
.byte 14,224,108,224, 24, 64,157,229, 20, 64,141,229, 28,192,157,229 /* 0x05d0 */
.byte 28, 32,141,229, 24,192,141,229, 32, 16,157,229, 52, 0,157,229 /* 0x05e0 */
.byte 6, 0, 81,227, 11, 16,160,195, 8, 16,160,211,166, 78,128,226 /* 0x05f0 */
.byte 32, 16,141,229, 8, 64,132,226,255, 84,224,227, 5, 0, 94,225 /* 0x0600 */
.byte 137, 1, 0,138, 12, 32,157,229, 2, 0, 87,225,125, 2, 0, 10 /* 0x0610 */
.byte 1, 48,215,228, 14,228,160,225, 8,132,131,225,176, 16,212,225 /* 0x0620 */
.byte 1, 40,160,225,174, 53,160,225, 34, 8,160,225,144, 3, 12,224 /* 0x0630 */
.byte 12, 0, 88,225,154, 1, 0, 42, 11, 34,132,224, 2, 59, 96,226 /* 0x0640 */
.byte 195, 50,129,224, 12,224,160,225, 4, 80,130,226, 3,192,160,227 /* 0x0650 */
.byte 0,144,160,227, 4,192,141,229,176, 48,196,225,191, 1, 0,234 /* 0x0660 */
.byte 14,224,108,224,162, 58, 65,224, 5, 0, 94,225, 8,128,108,224 /* 0x0670 */
.byte 176, 48,196,225,166, 1, 0,138, 12, 0,157,229, 0, 0, 87,225 /* 0x0680 */
.byte 125, 2, 0, 10, 1, 48,215,228, 14,228,160,225, 8,132,131,225 /* 0x0690 */
.byte 178, 16,212,225, 1, 40,160,225,174, 53,160,225, 34, 8,160,225 /* 0x06a0 */
.byte 144, 3, 12,224, 12, 0, 88,225,183, 1, 0, 42, 11, 34,132,224 /* 0x06b0 */
.byte 2, 59, 96,226,195, 50,129,224, 12,224,160,225, 3, 16,160,227 /* 0x06c0 */
.byte 65, 95,130,226, 8,144,160,227, 4, 16,141,229,178, 48,196,225 /* 0x06d0 */
.byte 191, 1, 0,234,162, 58, 65,224, 8, 32,160,227,178, 48,196,225 /* 0x06e0 */
.byte 4, 32,141,229, 8,128,108,224, 14,224,108,224,129, 95,132,226 /* 0x06f0 */
.byte 16,144,160,227, 4, 96,157,229, 1,176,160,227,139, 64,160,225 /* 0x0700 */
.byte 1, 4, 94,227, 4,176,160,225,203, 1, 0, 42, 12, 48,157,229 /* 0x0710 */
.byte 3, 0, 87,225, 14,228,160,225,125, 2, 0, 10, 1, 48,215,228 /* 0x0720 */
.byte 8,132,131,225,180, 32,149,225, 2, 8,160,225,174, 21,160,225 /* 0x0730 */
.byte 32, 56,160,225,147, 1, 12,224, 2, 59, 99,226, 12, 0, 88,225 /* 0x0740 */
.byte 195, 50,130,224,160, 42, 66,224, 14,224,108,224,180, 48,133, 49 /* 0x0750 */
.byte 12,224,160, 49, 8,128,108, 32, 1,176,132, 34,180, 32,133, 33 /* 0x0760 */
.byte 1, 96, 86,226,193, 1, 0, 26, 4, 64,157,229, 32,192,157,229 /* 0x0770 */
.byte 1, 32,160,227, 18,180, 75,224, 3, 0, 92,227, 9,176,139,224 /* 0x0780 */
.byte 92, 2, 0,202, 52, 0,157,229, 3, 0, 91,227, 11, 48,160,177 /* 0x0790 */
.byte 3, 48,160,163, 7,192,140,226,131, 51,128,224, 32,192,141,229 /* 0x07a0 */
.byte 54, 78,131,226, 2, 96,160,225, 6,144,160,227,134, 80,160,225 /* 0x07b0 */
.byte 1, 4, 94,227, 5, 96,160,225,247, 1, 0, 42, 12, 16,157,229 /* 0x07c0 */
.byte 1, 0, 87,225, 14,228,160,225,125, 2, 0, 10, 1, 48,215,228 /* 0x07d0 */
.byte 8,132,131,225,181, 32,148,225, 2, 8,160,225,174, 21,160,225 /* 0x07e0 */
.byte 32, 56,160,225,147, 1, 12,224, 2, 59, 99,226, 12, 0, 88,225 /* 0x07f0 */
.byte 195, 50,130,224,160, 42, 66,224, 14,224,108,224,181, 48,132, 49 /* 0x0800 */
.byte 12,224,160, 49, 8,128,108, 32, 1, 96,133, 34,181, 32,132, 33 /* 0x0810 */
.byte 1,144, 89,226,237, 1, 0, 26, 64, 96, 70,226, 3, 0, 86,227 /* 0x0820 */
.byte 28, 96,141,213, 88, 2, 0,218, 1, 48, 6,226,198, 32,160,225 /* 0x0830 */
.byte 13, 0, 86,227, 2, 48,131,227, 1, 80, 66,226, 28, 48,141,229 /* 0x0840 */
.byte 5, 80, 66,194, 28, 2, 0,202, 52, 32,157,229, 19, 53,160,225 /* 0x0850 */
.byte 28, 48,141,229,131, 48,130,224,134, 48, 67,224, 85, 78,131,226 /* 0x0860 */
.byte 14, 64,132,226, 53, 2, 0,234, 1, 4, 94,227, 36, 2, 0, 42 /* 0x0870 */
.byte 12, 48,157,229, 3, 0, 87,225,125, 2, 0, 10, 1, 48,215,228 /* 0x0880 */
.byte 14,228,160,225, 8,132,131,225, 28, 64,157,229,174,224,160,225 /* 0x0890 */
.byte 14, 0, 88,225,132, 64,160,225, 28, 64,141,229, 1, 64,132, 35 /* 0x08a0 */
.byte 8,128,110, 32, 28, 64,141, 37, 1, 80, 85,226, 28, 2, 0, 26 /* 0x08b0 */
.byte 28, 0,157,229, 52,192,157,229, 0, 2,160,225, 25, 77,140,226 /* 0x08c0 */
.byte 28, 0,141,229, 4, 64,132,226, 4, 80,160,227, 1,144,160,227 /* 0x08d0 */
.byte 0,144,141,229, 0, 16,157,229, 1, 4, 94,227,129, 96,160,225 /* 0x08e0 */
.byte 0, 96,141,229, 66, 2, 0, 42, 12, 32,157,229, 2, 0, 87,225 /* 0x08f0 */
.byte 14,228,160,225,125, 2, 0, 10, 1, 48,215,228, 8,132,131,225 /* 0x0900 */
.byte 182, 32,148,225, 2, 8,160,225,174, 21,160,225, 32, 56,160,225 /* 0x0910 */
.byte 147, 1, 12,224, 12, 0, 88,225, 14,224,108,224, 8,128,108, 32 /* 0x0920 */
.byte 28,192,157, 37, 2, 59, 99,226,195, 50,130,224, 9,192,140, 33 /* 0x0930 */
.byte 1, 48,134, 34,160, 42, 66,224, 12,224,160, 49,182, 48,132, 49 /* 0x0940 */
.byte 0, 48,141, 37,182, 32,132, 33, 28,192,141, 37, 1, 80, 85,226 /* 0x0950 */
.byte 137,144,160,225, 55, 2, 0, 26, 28, 0,157,229, 1, 0,144,226 /* 0x0960 */
.byte 28, 0,141,229,119, 2, 0, 10, 28, 16,157,229, 48, 32,157,229 /* 0x0970 */
.byte 2, 0, 81,225, 2,176,139,226,125, 2, 0,138, 48, 64,157,229 /* 0x0980 */
.byte 28,192,157,229, 96, 0,157,229, 4, 48,108,224, 3, 64,208,231 /* 0x0990 */
.byte 48, 16,157,229, 0, 64,193,231, 1,176, 91,226,100, 32,157,229 /* 0x09a0 */
.byte 0, 48,160, 3, 1, 48,160, 19, 1, 16,129,226, 2, 0, 81,225 /* 0x09b0 */
.byte 0, 48,160, 35, 1, 48, 3, 50, 0, 0, 83,227, 48, 16,141,229 /* 0x09c0 */
.byte 97, 2, 0, 26, 48, 48,157,229,100,192,157,229, 12, 0, 83,225 /* 0x09d0 */
.byte 63, 0, 0,234, 1, 4, 94,227,127, 2, 0, 42, 12,224,157,229 /* 0x09e0 */
.byte 14, 0, 87,225, 1,112,135, 18,127, 2, 0, 26, 1, 0,160,227 /* 0x09f0 */
.byte 135, 2, 0,234, 60, 0,157,229, 56, 16,157,229, 7, 48, 96,224 /* 0x0a00 */
.byte 0, 48,129,229,104, 32,157,229, 48, 48,157,229, 0, 48,130,229 /* 0x0a10 */
.byte 0, 0,160,227, 64,208,141,226,240,139,189,232 /* 0x0a20 */
.file "lzma_d_c.c"
.section .text.LzmaDecodeProperties,"ax",%progbits
.align 2
.global LzmaDecodeProperties
.type LzmaDecodeProperties, %function
LzmaDecodeProperties:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
cmp r2, #4
@ lr needed for prologue
ble .L18
ldrb r1, [r1, #0] @ zero_extendqisi2
cmp r1, #224
bls .L3
.L18:
mov r0, #1
mov pc, lr
.L3:
mov r3, #0
cmp r1, #44
str r3, [r0, #8]
bls .L13
mov r2, r3
.L7:
sub r3, r1, #45
and r1, r3, #255
cmp r1, #44
add r2, r2, #1
bhi .L7
str r2, [r0, #8]
.L13:
mov r3, #0
cmp r1, #8
str r3, [r0, #4]
bls .L15
mov r2, r3
.L11:
sub r3, r1, #9
and r1, r3, #255
cmp r1, #8
add r2, r2, #1
bhi .L11
str r2, [r0, #4]
.L15:
str r1, [r0, #0]
mov r0, #0
mov pc, lr
.size LzmaDecodeProperties, .-LzmaDecodeProperties
.section .text.LzmaDecode,"ax",%progbits
.align 2
.global LzmaDecode
.type LzmaDecode, %function
LzmaDecode:
@ args = 12, pretend = 0, frame = 64
@ frame_needed = 0, uses_anonymous_args = 0
stmfd sp!, {r4, r5, r6, r7, r8, r9, fp, lr}
sub sp, sp, #64
str r3, [sp, #56]
mov r3, #0
str r3, [sp, #48]
ldrb ip, [r0, #0] @ zero_extendqisi2
ldrb r4, [r0, #1] @ zero_extendqisi2
ldrb lr, [r0, #2] @ zero_extendqisi2
str ip, [sp, #36]
ldr ip, [sp, #56]
str r3, [ip, #0]
ldr ip, [sp, #104]
str r3, [ip, #0]
ldr r3, [sp, #36]
ldrb ip, [r0, #1] @ zero_extendqisi2
add ip, r3, ip
mov r3, #768
mov r3, r3, asl ip
add ip, r3, #1840
mov r3, #1
mov lr, r3, asl lr
sub lr, lr, #1
str r3, [sp, #28]
mov r3, r3, asl r4
str lr, [sp, #44]
mov r4, #0
mov lr, #1
sub r3, r3, #1
add r0, r0, #4
add ip, ip, #6
str r3, [sp, #40]
str r0, [sp, #52]
str r4, [sp, #32]
str lr, [sp, #24]
str lr, [sp, #20]
str lr, [sp, #16]
str r1, [sp, #60]
cmp r4, ip
mov r1, r4
.L157:
bcs .L132
mov r3, r1, asl #1
ldr r0, [sp, #52]
add r1, r1, #1
mov lr, #1024 @ movhi
cmp r1, ip
strh lr, [r3, r0] @ movhi
b .L157
.L132:
ldr r0, [sp, #60]
mov r8, #0
add r2, r0, r2
str r2, [sp, #12]
mov r7, r0
mvn lr, #0
mov r2, r8
.L28:
ldr r1, [sp, #12]
cmp r7, r1
add r2, r2, #1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
cmp r2, #4
orr r8, r3, r8, asl #8
ble .L28
ldr r2, [sp, #48]
ldr r3, [sp, #100]
cmp r2, r3
.L158:
bcs .L30
add r0, sp, #44
ldmia r0, {r0, ip} @ phole ldm
ldr r1, [sp, #32]
and fp, ip, r0
mvn r9, #-16777216
add r3, fp, r1, asl #4
cmp lr, r9
mov r5, r3, asl #1
bhi .L31
ldr r2, [sp, #12]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L31:
ldr r3, [sp, #52]
ldrh r1, [r5, r3]
mov r2, r1, asl #16
mov r3, lr, lsr #11
mov r0, r2, lsr #16
mul ip, r0, r3
cmp r8, ip
bcs .L33
ldr lr, [sp, #36]
rsb r3, lr, #8
mov r3, r4, asr r3
ldr lr, [sp, #40]
ldr r4, [sp, #48]
and r2, r4, lr
ldr r4, [sp, #36]
ldr lr, [sp, #52]
add r3, r3, r2, asl r4
add r3, r3, r3, asl #1
rsb r2, r0, #2048
ldr r0, [sp, #32]
add r3, lr, r3, asl #9
add r2, r1, r2, asr #5
add r4, r3, #3680
cmp r0, #6
strh r2, [r5, lr] @ movhi
add r4, r4, #12
mov lr, ip
mov fp, #1
ble .L50
ldr r1, [sp, #48]
ldr r2, [sp, #28]
ldr ip, [sp, #96]
rsb r3, r2, r1
ldrb r3, [ip, r3] @ zero_extendqisi2
str r3, [sp, #8]
.L35:
ldr r0, [sp, #8]
mov r0, r0, asl #1
and r6, r0, #256
mov r9, fp, asl #1
add r3, r4, r6, asl #1
add r3, r3, r9
cmp lr, #16777216
str r0, [sp, #8]
add r5, r3, #512
bcs .L38
ldr r1, [sp, #12]
cmp r7, r1
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
orr r8, r3, r8, asl #8
.L38:
ldrh r2, [r5, #0]
mov r1, r2, asl #16
mov r3, r1, lsr #16
mov r0, lr, lsr #11
mul ip, r3, r0
rsb r3, r3, #2048
cmp r8, ip
add r3, r2, r3, asr #5
mov fp, r9
sub r2, r2, r1, lsr #21
bcs .L40
cmp r6, #0
strh r3, [r5, #0] @ movhi
mov lr, ip
beq .L37
b .L34
.L40:
cmp r6, #0
strh r2, [r5, #0] @ movhi
rsb r8, ip, r8
add fp, r9, #1
rsb lr, ip, lr
beq .L34
.L37:
cmp fp, #255
ble .L35
b .L137
.L34:
cmp fp, #255
bgt .L137
.L50:
mov r5, fp, asl #1
cmp lr, #16777216
mov fp, r5
bcs .L46
ldr r2, [sp, #12]
cmp r7, r2
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
orr r8, r3, r8, asl #8
.L46:
ldrh r2, [r4, r5]
mov r0, r2, asl #16
mov r1, lr, lsr #11
mov r3, r0, lsr #16
mul ip, r3, r1
rsb r3, r3, #2048
cmp r8, ip
add r3, r2, r3, asr #5
rsb lr, ip, lr
sub r2, r2, r0, lsr #21
movcc lr, ip
rsbcs r8, ip, r8
addcs fp, r5, #1
strcch r3, [r4, r5] @ movhi
strcsh r2, [r4, r5] @ movhi
b .L34
.L137:
ldr r3, [sp, #32]
ldr ip, [sp, #48]
ldr r0, [sp, #96]
cmp r3, #3
and r4, fp, #255
strb r4, [ip, r0]
movle r1, #0
add ip, ip, #1
str ip, [sp, #48]
strle r1, [sp, #32]
ble .L29
ldr r2, [sp, #32]
cmp r2, #9
ldrgt r3, [sp, #32]
suble r2, r2, #3
subgt r3, r3, #6
strle r2, [sp, #32]
strgt r3, [sp, #32]
b .L29
.L33:
ldr r4, [sp, #52]
ldr r0, [sp, #32]
rsb lr, ip, lr
sub r3, r1, r2, lsr #21
add r6, r4, r0, asl #1
cmp lr, r9
strh r3, [r5, r4] @ movhi
rsb r8, ip, r8
add r4, r6, #384
bhi .L56
ldr r1, [sp, #12]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L56:
ldrh r2, [r4, #0]
mov r0, r2, asl #16
mov r3, lr, lsr #11
mov r1, r0, lsr #16
mul ip, r1, r3
cmp r8, ip
bcs .L58
rsb r3, r1, #2048
add r3, r2, r3, asr #5
strh r3, [r4, #0] @ movhi
ldr r2, [sp, #52]
ldr r3, [sp, #32]
ldr lr, [sp, #20]
cmp r3, #6
ldr r0, [sp, #24]
add r4, r2, #1632
ldr r1, [sp, #28]
movgt r3, #3
movle r3, #0
str lr, [sp, #16]
add r4, r4, #4
mov lr, ip
str r3, [sp, #32]
str r0, [sp, #20]
str r1, [sp, #24]
b .L61
.L58:
rsb lr, ip, lr
sub r3, r2, r0, lsr #21
cmp lr, r9
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #408
bhi .L62
ldr r2, [sp, #12]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L62:
ldrh r1, [r4, #0]
mov r0, r1, asl #16
mov r3, lr, lsr #11
mov r2, r0, lsr #16
mul ip, r2, r3
cmp r8, ip
bcs .L64
mov lr, ip
ldr r0, [sp, #32]
ldr ip, [sp, #52]
rsb r3, r2, #2048
add r2, ip, r0, asl #5
add r3, r1, r3, asr #5
add r2, r2, fp, asl #1
cmp lr, r9
strh r3, [r4, #0] @ movhi
add r4, r2, #480
bhi .L65
ldr r1, [sp, #12]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L65:
ldrh r2, [r4, #0]
mov r0, r2, asl #16
mov r3, lr, lsr #11
mov r1, r0, lsr #16
mul ip, r1, r3
cmp r8, ip
subcs r3, r2, r0, lsr #21
rsbcs r8, ip, r8
rsbcs lr, ip, lr
strcsh r3, [r4, #0] @ movhi
bcs .L72
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #48]
cmp r2, #0
strh r3, [r4, #0] @ movhi
mov lr, ip
beq .L155
ldr r4, [sp, #28]
ldr r0, [sp, #32]
ldr ip, [sp, #96]
rsb r3, r4, r2
ldrb r4, [ip, r3] @ zero_extendqisi2
cmp r0, #6
movgt r0, #11
movle r0, #9
str r0, [sp, #32]
strb r4, [r2, ip]
add r2, r2, #1
str r2, [sp, #48]
b .L29
.L64:
rsb lr, ip, lr
sub r3, r1, r0, lsr #21
cmp lr, r9
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #432
bhi .L73
ldr r1, [sp, #12]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L73:
ldrh r2, [r4, #0]
mov r0, r2, asl #16
mov r3, lr, lsr #11
mov r1, r0, lsr #16
mul ip, r1, r3
cmp r8, ip
bcs .L75
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #24]
mov lr, ip
strh r3, [r4, #0] @ movhi
b .L76
.L75:
rsb lr, ip, lr
sub r3, r2, r0, lsr #21
cmp lr, r9
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #456
bhi .L77
ldr r2, [sp, #12]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L77:
ldrh r2, [r4, #0]
mov r0, r2, asl #16
mov r3, lr, lsr #11
mov r1, r0, lsr #16
mul ip, r1, r3
cmp r8, ip
bcs .L79
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #20]
mov lr, ip
strh r3, [r4, #0] @ movhi
b .L80
.L79:
sub r3, r2, r0, lsr #21
strh r3, [r4, #0] @ movhi
add r2, sp, #16
ldmia r2, {r2, r3} @ phole ldm
str r3, [sp, #16]
rsb r8, ip, r8
rsb lr, ip, lr
.L80:
ldr r4, [sp, #24]
str r4, [sp, #20]
.L76:
ldr ip, [sp, #28]
str r2, [sp, #28]
str ip, [sp, #24]
.L72:
ldr r1, [sp, #32]
ldr r0, [sp, #52]
cmp r1, #6
movgt r1, #11
movle r1, #8
add r4, r0, #2656
str r1, [sp, #32]
add r4, r4, #8
.L61:
mvn r5, #-16777216
cmp lr, r5
bhi .L83
ldr r2, [sp, #12]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L83:
ldrh r1, [r4, #0]
mov r2, r1, asl #16
mov r3, lr, lsr #11
mov r0, r2, lsr #16
mul ip, r0, r3
cmp r8, ip
bcs .L85
add r2, r4, fp, asl #4
rsb r3, r0, #2048
add r3, r1, r3, asr #5
mov lr, ip
add r5, r2, #4
mov ip, #3
mov r9, #0
str ip, [sp, #4]
strh r3, [r4, #0] @ movhi
b .L86
.L85:
rsb lr, ip, lr
sub r3, r1, r2, lsr #21
cmp lr, r5
rsb r8, ip, r8
strh r3, [r4, #0] @ movhi
bhi .L87
ldr r0, [sp, #12]
cmp r7, r0
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L87:
ldrh r1, [r4, #2]
mov r2, r1, asl #16
mov r3, lr, lsr #11
mov r0, r2, lsr #16
mul ip, r0, r3
cmp r8, ip
bcs .L89
add r2, r4, fp, asl #4
rsb r3, r0, #2048
add r3, r1, r3, asr #5
mov lr, ip
mov r1, #3
add r5, r2, #260
mov r9, #8
str r1, [sp, #4]
strh r3, [r4, #2] @ movhi
b .L86
.L89:
sub r3, r1, r2, lsr #21
mov r2, #8
strh r3, [r4, #2] @ movhi
str r2, [sp, #4]
rsb r8, ip, r8
rsb lr, ip, lr
add r5, r4, #516
mov r9, #16
.L86:
ldr r6, [sp, #4]
mov fp, #1
.L91:
mov r4, fp, asl #1
cmp lr, #16777216
mov fp, r4
bcs .L94
ldr r3, [sp, #12]
cmp r7, r3
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
orr r8, r3, r8, asl #8
.L94:
ldrh r2, [r5, r4]
mov r0, r2, asl #16
mov r1, lr, lsr #11
mov r3, r0, lsr #16
mul ip, r3, r1
rsb r3, r3, #2048
cmp r8, ip
add r3, r2, r3, asr #5
sub r2, r2, r0, lsr #21
rsb lr, ip, lr
strcch r3, [r5, r4] @ movhi
movcc lr, ip
rsbcs r8, ip, r8
addcs fp, r4, #1
strcsh r2, [r5, r4] @ movhi
subs r6, r6, #1
bne .L91
ldr r4, [sp, #4]
ldr ip, [sp, #32]
mov r2, #1
sub fp, fp, r2, asl r4
cmp ip, #3
add fp, fp, r9
bgt .L98
ldr r0, [sp, #52]
cmp fp, #3
movlt r3, fp
movge r3, #3
add ip, ip, #7
add r3, r0, r3, asl #7
str ip, [sp, #32]
add r4, r3, #864
mov r6, r2
mov r9, #6
.L99:
mov r5, r6, asl #1
cmp lr, #16777216
mov r6, r5
bcs .L102
ldr r1, [sp, #12]
cmp r7, r1
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
orr r8, r3, r8, asl #8
.L102:
ldrh r2, [r4, r5]
mov r0, r2, asl #16
mov r1, lr, lsr #11
mov r3, r0, lsr #16
mul ip, r3, r1
rsb r3, r3, #2048
cmp r8, ip
add r3, r2, r3, asr #5
sub r2, r2, r0, lsr #21
rsb lr, ip, lr
strcch r3, [r4, r5] @ movhi
movcc lr, ip
rsbcs r8, ip, r8
addcs r6, r5, #1
strcsh r2, [r4, r5] @ movhi
subs r9, r9, #1
bne .L99
sub r6, r6, #64
cmp r6, #3
strle r6, [sp, #28]
ble .L122
and r3, r6, #1
mov r2, r6, asr #1
cmp r6, #13
orr r3, r3, #2
sub r5, r2, #1
str r3, [sp, #28]
subgt r5, r2, #5
bgt .L109
ldr r2, [sp, #52]
mov r3, r3, asl r5
str r3, [sp, #28]
add r3, r2, r3, asl #1
sub r3, r3, r6, asl #1
add r4, r3, #1360
add r4, r4, #14
b .L108
.L109:
cmp lr, #16777216
bcs .L112
ldr r3, [sp, #12]
cmp r7, r3
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L112:
ldr r4, [sp, #28]
mov lr, lr, lsr #1
cmp r8, lr
mov r4, r4, asl #1
str r4, [sp, #28]
orrcs r4, r4, #1
rsbcs r8, lr, r8
strcs r4, [sp, #28]
subs r5, r5, #1
bne .L109
ldr r0, [sp, #28]
ldr ip, [sp, #52]
mov r0, r0, asl #4
add r4, ip, #1600
str r0, [sp, #28]
add r4, r4, #4
mov r5, #4
.L108:
mov r9, #1
str r9, [sp, #0]
.L115:
ldr r1, [sp, #0]
cmp lr, #16777216
mov r6, r1, asl #1
str r6, [sp, #0]
bcs .L118
ldr r2, [sp, #12]
cmp r7, r2
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
orr r8, r3, r8, asl #8
.L118:
ldrh r2, [r4, r6]
mov r0, r2, asl #16
mov r1, lr, lsr #11
mov r3, r0, lsr #16
mul ip, r3, r1
cmp r8, ip
rsb lr, ip, lr
rsbcs r8, ip, r8
ldrcs ip, [sp, #28]
rsb r3, r3, #2048
add r3, r2, r3, asr #5
orrcs ip, ip, r9
addcs r3, r6, #1
sub r2, r2, r0, lsr #21
movcc lr, ip
strcch r3, [r4, r6] @ movhi
strcs r3, [sp, #0]
strcsh r2, [r4, r6] @ movhi
strcs ip, [sp, #28]
subs r5, r5, #1
mov r9, r9, asl #1
bne .L115
.L122:
ldr r0, [sp, #28]
adds r0, r0, #1
str r0, [sp, #28]
beq .L30
.L98:
ldr r1, [sp, #28]
ldr r2, [sp, #48]
cmp r1, r2
add fp, fp, #2
bhi .L155
.L125:
ldr r4, [sp, #48]
ldr ip, [sp, #28]
ldr r0, [sp, #96]
rsb r3, ip, r4
ldrb r4, [r0, r3] @ zero_extendqisi2
ldr r1, [sp, #48]
strb r4, [r1, r0]
subs fp, fp, #1
ldr r2, [sp, #100]
moveq r3, #0
movne r3, #1
add r1, r1, #1
cmp r1, r2
movcs r3, #0
andcc r3, r3, #1
cmp r3, #0
str r1, [sp, #48]
bne .L125
.L29:
ldr r3, [sp, #48]
ldr ip, [sp, #100]
cmp r3, ip
b .L158
.L30:
cmp lr, #16777216
bcs .L129
ldr lr, [sp, #12]
cmp r7, lr
addne r7, r7, #1
bne .L129
.L155:
mov r0, #1
b .L19
.L129:
ldr r0, [sp, #60]
ldr r1, [sp, #56]
rsb r3, r0, r7
str r3, [r1, #0]
ldr r2, [sp, #104]
ldr r3, [sp, #48]
str r3, [r2, #0]
mov r0, #0
.L19:
add sp, sp, #64
ldmfd sp!, {r4, r5, r6, r7, r8, r9, fp, pc}
.size LzmaDecode, .-LzmaDecode
.ident "GCC: (GNU) 3.4.5"

View File

@ -332,6 +332,8 @@ ONAM: .long start_of_dll_names
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include "include/header2.ash"
section .ucl_nrv2e_decompress_8
#include "arch/arm/v4a/nrv2e_d8.S"
@ -351,44 +353,43 @@ section Call2D
////////////////////////////////////////
section LZMA_0
// r0=src0, r1=slen, r2=dst0, r3=addr dstl
adr r8, .LUPXa
ldmia r8, {r4, r5, r6, r7} // load params
parb .req r3
para .req r4
parc .req r5
pard .req r6
mov r8, sp // save stack
add r4, r4, sp
adr r7, .LzmaParams
ldmia r7, {parb, para, parc, pard} // load params
mov r7, sp // save stack
add para, para, sp
mov ip, #0
.Lclearstack:
stmfd sp!, {ip}
cmp sp, r4
cmp sp, para
bne .Lclearstack
stmfd sp!, {r4, r5} // &outSizeProcessed, outSize,
stmfd sp!, {r2} // out
add r3, r4, #4 // &inSizeProcessed
mov r2, r6 // inSize
stmfd sp!, {r2, parb, para} // &outSizeProcessed, outSize, out
add r3, para, #4 // &inSizeProcessed
mov r2, parc // inSize
add r1, r0, #2 // in
add r0, r4, #8 // &CLzmaDecoderState
str r7, [r0] // lc, lp, pb, dummy
add r0, para, #8 // &CLzmaDecoderState
str pard, [r0] // lc, lp, pb, dummy
bl LZMA_DECODE
b .LLZMA_end
.LUPXa: .long UPXa
.LUPXb: .long UPXb
.LUPXc: .long UPXc
.LUPXd: .long UPXd
.LzmaParams:
.long UPXb, UPXa, UPXc, UPXd
.LLZMA_end:
mov sp, r8
mov sp, r7
section LZMA_DECODE
section LZMA_DEC10
#undef section
#include "arch/arm/v4a/lzma_d_cs.S"
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include "include/header2.ash"

View File

@ -8,6 +8,10 @@ ifneq ($(wildcard $(HOME)/local/bin/bin-upx),)
export PATH := $(HOME)/local/bin/bin-upx:$(PATH)
endif
ifneq ($(wildcard $(HOME)/bin/bin-upx),)
export PATH := $(HOME)/bin/bin-upx:$(PATH)
endif
all: armpe_tester wtest.exe