1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00

arm/pe: lzma works for v4t too

minor changes in v4a code
This commit is contained in:
László Molnár 2006-07-23 16:13:10 +02:00
parent 1dcee2ffa2
commit 3bcc06ed09
11 changed files with 4771 additions and 2519 deletions

View File

@ -183,14 +183,16 @@ PackArmPe::~PackArmPe()
const int *PackArmPe::getCompressionMethods(int method, int level) const
{
static const int m_nrv2b[] = { M_NRV2B_8, M_NRV2E_8, M_END };
static const int m_nrv2e[] = { M_NRV2E_8, M_NRV2B_8, M_END };
static const int m_nrv2b[] = { M_NRV2B_8, M_NRV2E_8, M_LZMA, M_END };
static const int m_nrv2e[] = { M_NRV2E_8, M_NRV2B_8, M_LZMA, M_END };
static const int m_nrv2d_v4[] = { M_NRV2D_8, M_NRV2E_8, M_LZMA, M_END };
static const int m_nrv2e_v4[] = { M_NRV2E_8, M_NRV2D_8, M_LZMA, M_END };
static const int m_lzma_v4[] = { M_LZMA, M_END };
static const int m_lzma[] = { M_LZMA, M_END };
UNUSED(level);
if (M_IS_LZMA(method))
return m_lzma;
// FIXME this when we have v4 mode nrv2b
if (!use_thumb_stub)
{
@ -198,8 +200,6 @@ const int *PackArmPe::getCompressionMethods(int method, int level) const
return m_nrv2e_v4 ;
if (M_IS_NRV2D(method))
return m_nrv2d_v4;
if (M_IS_LZMA(method))
return m_lzma_v4;
return m_nrv2e_v4;
}
@ -1672,7 +1672,7 @@ int PackArmPe::buildLoader(const Filter *ft)
else if (ph.method == M_NRV2D_8)
addLoader("Call2D", NULL);
else if (M_IS_LZMA(ph.method))
addLoader("LZMA_0", NULL);
addLoader("+40C,CallLZMA", NULL);
if (ft->id == 0x50)
@ -1699,6 +1699,8 @@ int PackArmPe::buildLoader(const Filter *ft)
addLoader(".ucl_nrv2e_decompress_8", NULL);
else if (ph.method == M_NRV2B_8)
addLoader(".ucl_nrv2b_decompress_8", NULL);
else if (M_IS_LZMA(ph.method))
addLoader("+40C,LZMA_DECODE,.text.LzmaDecode", NULL);
}
addLoader("IDENTSTR,UPX1HEAD", NULL);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -27,7 +27,7 @@ lzma_d_c%.S : tc_list = arm-lzma arm-linux.elf default
lzma_d_c%.S : tc_bfdname = elf32-littlearm
tc.arm-lzma.gcc = $(tc.arm-linux.elf.gcc)
tc.arm-lzma.gcc += -march=armv4 -fPIC
tc.arm-lzma.gcc += -march=armv4
tc.arm-lzma.gcc += -Os
tc.arm-lzma.gcc += -ffunction-sections
tc.arm-lzma.gcc += -I$(UPX_LZMADIR)

View File

@ -52,22 +52,22 @@ LzmaDecodeProperties:
.global LzmaDecode
.type LzmaDecode, %function
LzmaDecode:
@ args = 12, pretend = 0, frame = 64
@ args = 12, pretend = 0, frame = 52
@ 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]
stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
sub sp, sp, #52
str r3, [sp, #44]
mov r3, #0
str r3, [sp, #48]
str r3, [sp, #36]
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 ip, [sp, #24]
ldr ip, [sp, #44]
str r3, [ip, #0]
ldr ip, [sp, #104]
ldr ip, [sp, #96]
str r3, [ip, #0]
ldr r3, [sp, #36]
ldr r3, [sp, #24]
ldrb ip, [r0, #1] @ zero_extendqisi2
add ip, r3, ip
mov r3, #768
@ -76,42 +76,42 @@ LzmaDecode:
mov r3, #1
mov lr, r3, asl lr
sub lr, lr, #1
str r3, [sp, #28]
str r3, [sp, #16]
mov r3, r3, asl r4
str lr, [sp, #44]
str lr, [sp, #32]
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]
str r3, [sp, #28]
str r0, [sp, #40]
str r4, [sp, #20]
str lr, [sp, #12]
str lr, [sp, #8]
str lr, [sp, #4]
str r1, [sp, #48]
cmp r4, ip
mov r1, r4
.L157:
bcs .L132
mov r3, r1, asl #1
ldr r0, [sp, #52]
ldr r0, [sp, #40]
add r1, r1, #1
mov lr, #1024 @ movhi
cmp r1, ip
strh lr, [r3, r0] @ movhi
b .L157
.L132:
ldr r0, [sp, #60]
ldr r0, [sp, #48]
mov r8, #0
add r2, r0, r2
str r2, [sp, #12]
str r2, [sp, #0]
mov r7, r0
mvn lr, #0
mov r2, r8
.L28:
ldr r1, [sp, #12]
ldr r1, [sp, #0]
cmp r7, r1
add r2, r2, #1
beq .L155
@ -119,28 +119,28 @@ LzmaDecode:
cmp r2, #4
orr r8, r3, r8, asl #8
ble .L28
ldr r2, [sp, #48]
ldr r3, [sp, #100]
ldr r2, [sp, #36]
ldr r3, [sp, #92]
cmp r2, r3
.L158:
bcs .L30
add r0, sp, #44
add r0, sp, #32
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
ldr r1, [sp, #20]
and r9, ip, r0
mvn sl, #-16777216
add r3, r9, r1, asl #4
cmp lr, sl
mov r5, r3, asl #1
bhi .L31
ldr r2, [sp, #12]
ldr r2, [sp, #0]
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]
ldr r3, [sp, #40]
ldrh r1, [r5, r3]
mov r2, r1, asl #16
mov r3, lr, lsr #11
@ -148,18 +148,18 @@ LzmaDecode:
mul ip, r0, r3
cmp r8, ip
bcs .L33
ldr lr, [sp, #36]
ldr lr, [sp, #24]
rsb r3, lr, #8
mov r3, r4, asr r3
ldr lr, [sp, #40]
ldr r4, [sp, #48]
and r2, r4, lr
ldr lr, [sp, #28]
ldr r4, [sp, #36]
ldr lr, [sp, #52]
and r2, r4, lr
ldr r4, [sp, #24]
ldr lr, [sp, #40]
add r3, r3, r2, asl r4
add r3, r3, r3, asl #1
rsb r2, r0, #2048
ldr r0, [sp, #32]
ldr r0, [sp, #20]
add r3, lr, r3, asl #9
add r2, r1, r2, asr #5
add r4, r3, #3680
@ -167,27 +167,24 @@ LzmaDecode:
strh r2, [r5, lr] @ movhi
add r4, r4, #12
mov lr, ip
mov fp, #1
mov r9, #1
ble .L50
ldr r1, [sp, #48]
ldr r2, [sp, #28]
ldr ip, [sp, #96]
ldr r1, [sp, #36]
ldr r2, [sp, #16]
ldr ip, [sp, #88]
rsb r3, r2, r1
ldrb r3, [ip, r3] @ zero_extendqisi2
str r3, [sp, #8]
ldrb fp, [ip, r3] @ zero_extendqisi2
.L35:
ldr r0, [sp, #8]
mov r0, r0, asl #1
and r6, r0, #256
mov r9, fp, asl #1
mov fp, fp, asl #1
and r6, fp, #256
mov sl, r9, asl #1
add r3, r4, r6, asl #1
add r3, r3, r9
add r3, r3, sl
cmp lr, #16777216
str r0, [sp, #8]
add r5, r3, #512
bcs .L38
ldr r1, [sp, #12]
cmp r7, r1
ldr r0, [sp, #0]
cmp r7, r0
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -201,7 +198,7 @@ LzmaDecode:
rsb r3, r3, #2048
cmp r8, ip
add r3, r2, r3, asr #5
mov fp, r9
mov r9, sl
sub r2, r2, r1, lsr #21
bcs .L40
cmp r6, #0
@ -213,23 +210,23 @@ LzmaDecode:
cmp r6, #0
strh r2, [r5, #0] @ movhi
rsb r8, ip, r8
add fp, r9, #1
add r9, sl, #1
rsb lr, ip, lr
beq .L34
.L37:
cmp fp, #255
cmp r9, #255
ble .L35
b .L137
.L34:
cmp fp, #255
cmp r9, #255
bgt .L137
.L50:
mov r5, fp, asl #1
mov r5, r9, asl #1
cmp lr, #16777216
mov fp, r5
mov r9, r5
bcs .L46
ldr r2, [sp, #12]
cmp r7, r2
ldr r1, [sp, #0]
cmp r7, r1
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -247,42 +244,42 @@ LzmaDecode:
sub r2, r2, r0, lsr #21
movcc lr, ip
rsbcs r8, ip, r8
addcs fp, r5, #1
addcs r9, 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]
ldr r2, [sp, #20]
ldr r3, [sp, #36]
ldr ip, [sp, #88]
cmp r2, #3
and r4, r9, #255
strb r4, [r3, ip]
movle r0, #0
add r3, r3, #1
str r3, [sp, #36]
strle r0, [sp, #20]
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]
ldr r1, [sp, #20]
cmp r1, #9
ldrgt r2, [sp, #20]
suble r1, r1, #3
subgt r2, r2, #6
strle r1, [sp, #20]
strgt r2, [sp, #20]
b .L29
.L33:
ldr r4, [sp, #52]
ldr r0, [sp, #32]
ldr r4, [sp, #40]
ldr r0, [sp, #20]
rsb lr, ip, lr
sub r3, r1, r2, lsr #21
add r6, r4, r0, asl #1
cmp lr, r9
cmp lr, sl
strh r3, [r5, r4] @ movhi
rsb r8, ip, r8
add r4, r6, #384
bhi .L56
ldr r1, [sp, #12]
ldr r1, [sp, #0]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -299,31 +296,31 @@ LzmaDecode:
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]
ldr r2, [sp, #40]
ldr r3, [sp, #20]
ldr lr, [sp, #8]
cmp r3, #6
ldr r0, [sp, #24]
ldr r0, [sp, #12]
add r4, r2, #1632
ldr r1, [sp, #28]
ldr r1, [sp, #16]
movgt r3, #3
movle r3, #0
str lr, [sp, #16]
str lr, [sp, #4]
add r4, r4, #4
mov lr, ip
str r3, [sp, #32]
str r0, [sp, #20]
str r1, [sp, #24]
str r3, [sp, #20]
str r0, [sp, #8]
str r1, [sp, #12]
b .L61
.L58:
rsb lr, ip, lr
sub r3, r2, r0, lsr #21
cmp lr, r9
cmp lr, sl
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #408
bhi .L62
ldr r2, [sp, #12]
ldr r2, [sp, #0]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -338,17 +335,17 @@ LzmaDecode:
cmp r8, ip
bcs .L64
mov lr, ip
ldr r0, [sp, #32]
ldr ip, [sp, #52]
ldr r0, [sp, #20]
ldr ip, [sp, #40]
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
add r2, r2, r9, asl #1
cmp lr, sl
strh r3, [r4, #0] @ movhi
add r4, r2, #480
bhi .L65
ldr r1, [sp, #12]
ldr r1, [sp, #0]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -368,33 +365,33 @@ LzmaDecode:
bcs .L72
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #48]
ldr r2, [sp, #36]
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]
ldr r4, [sp, #16]
ldr r0, [sp, #20]
ldr ip, [sp, #88]
rsb r3, r4, r2
ldrb r4, [ip, r3] @ zero_extendqisi2
cmp r0, #6
movgt r0, #11
movle r0, #9
str r0, [sp, #32]
str r0, [sp, #20]
strb r4, [r2, ip]
add r2, r2, #1
str r2, [sp, #48]
str r2, [sp, #36]
b .L29
.L64:
rsb lr, ip, lr
sub r3, r1, r0, lsr #21
cmp lr, r9
cmp lr, sl
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #432
bhi .L73
ldr r1, [sp, #12]
ldr r1, [sp, #0]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -410,19 +407,19 @@ LzmaDecode:
bcs .L75
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #24]
ldr r2, [sp, #12]
mov lr, ip
strh r3, [r4, #0] @ movhi
b .L76
.L75:
rsb lr, ip, lr
sub r3, r2, r0, lsr #21
cmp lr, r9
cmp lr, sl
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #456
bhi .L77
ldr r2, [sp, #12]
ldr r2, [sp, #0]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -438,39 +435,38 @@ LzmaDecode:
bcs .L79
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #20]
ldr r2, [sp, #8]
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]
ldmib sp, {r2, r3} @ phole ldm
str r3, [sp, #4]
rsb r8, ip, r8
rsb lr, ip, lr
.L80:
ldr r4, [sp, #24]
str r4, [sp, #20]
ldr r4, [sp, #12]
str r4, [sp, #8]
.L76:
ldr ip, [sp, #28]
str r2, [sp, #28]
str ip, [sp, #24]
ldr ip, [sp, #16]
str r2, [sp, #16]
str ip, [sp, #12]
.L72:
ldr r1, [sp, #32]
ldr r0, [sp, #52]
ldr r1, [sp, #20]
ldr r0, [sp, #40]
cmp r1, #6
movgt r1, #11
movle r1, #8
add r4, r0, #2656
str r1, [sp, #32]
str r1, [sp, #20]
add r4, r4, #8
.L61:
mvn r5, #-16777216
cmp lr, r5
bhi .L83
ldr r2, [sp, #12]
ldr r2, [sp, #0]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -484,14 +480,13 @@ LzmaDecode:
mul ip, r0, r3
cmp r8, ip
bcs .L85
add r2, r4, fp, asl #4
add r2, r4, r9, 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]
mov sl, #0
mov fp, #3
strh r3, [r4, #0] @ movhi
b .L86
.L85:
@ -501,8 +496,8 @@ LzmaDecode:
rsb r8, ip, r8
strh r3, [r4, #0] @ movhi
bhi .L87
ldr r0, [sp, #12]
cmp r7, r0
ldr r3, [sp, #0]
cmp r7, r3
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
@ -515,35 +510,33 @@ LzmaDecode:
mul ip, r0, r3
cmp r8, ip
bcs .L89
add r2, r4, fp, asl #4
add r2, r4, r9, 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]
mov sl, #8
mov fp, #3
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
mov sl, #16
mov fp, #8
.L86:
ldr r6, [sp, #4]
mov fp, #1
mov r6, fp
mov r9, #1
.L91:
mov r4, fp, asl #1
mov r4, r9, asl #1
cmp lr, #16777216
mov fp, r4
mov r9, r4
bcs .L94
ldr r3, [sp, #12]
cmp r7, r3
ldr ip, [sp, #0]
cmp r7, ip
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -562,34 +555,33 @@ LzmaDecode:
strcch r3, [r5, r4] @ movhi
movcc lr, ip
rsbcs r8, ip, r8
addcs fp, r4, #1
addcs r9, r4, #1
strcsh r2, [r5, r4] @ movhi
subs r6, r6, #1
bne .L91
ldr r4, [sp, #4]
ldr ip, [sp, #32]
ldr r0, [sp, #20]
mov r2, #1
sub fp, fp, r2, asl r4
cmp ip, #3
add fp, fp, r9
sub r9, r9, r2, asl fp
cmp r0, #3
add r9, r9, sl
bgt .L98
ldr r0, [sp, #52]
cmp fp, #3
movlt r3, fp
ldr r1, [sp, #40]
cmp r9, #3
movlt r3, r9
movge r3, #3
add ip, ip, #7
add r3, r0, r3, asl #7
str ip, [sp, #32]
add r0, r0, #7
add r3, r1, r3, asl #7
str r0, [sp, #20]
add r4, r3, #864
mov r6, r2
mov r9, #6
mov sl, #6
.L99:
mov r5, r6, asl #1
cmp lr, #16777216
mov r6, r5
bcs .L102
ldr r1, [sp, #12]
cmp r7, r1
ldr r2, [sp, #0]
cmp r7, r2
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -610,24 +602,24 @@ LzmaDecode:
rsbcs r8, ip, r8
addcs r6, r5, #1
strcsh r2, [r4, r5] @ movhi
subs r9, r9, #1
subs sl, sl, #1
bne .L99
sub r6, r6, #64
cmp r6, #3
strle r6, [sp, #28]
strle r6, [sp, #16]
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]
str r3, [sp, #16]
subgt r5, r2, #5
bgt .L109
ldr r2, [sp, #52]
ldr r4, [sp, #40]
mov r3, r3, asl r5
str r3, [sp, #28]
add r3, r2, r3, asl #1
str r3, [sp, #16]
add r3, r4, r3, asl #1
sub r3, r3, r6, asl #1
add r4, r3, #1360
add r4, r4, #14
@ -635,41 +627,40 @@ LzmaDecode:
.L109:
cmp lr, #16777216
bcs .L112
ldr r3, [sp, #12]
cmp r7, r3
ldr ip, [sp, #0]
cmp r7, ip
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L112:
ldr r4, [sp, #28]
ldr r0, [sp, #16]
mov lr, lr, lsr #1
cmp r8, lr
mov r4, r4, asl #1
str r4, [sp, #28]
orrcs r4, r4, #1
mov r0, r0, asl #1
str r0, [sp, #16]
orrcs r0, r0, #1
rsbcs r8, lr, r8
strcs r4, [sp, #28]
strcs r0, [sp, #16]
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]
ldr r2, [sp, #16]
ldr r1, [sp, #40]
mov r2, r2, asl #4
add r4, r1, #1600
str r2, [sp, #16]
add r4, r4, #4
mov r5, #4
.L108:
mov r9, #1
str r9, [sp, #0]
mov sl, #1
mov fp, sl
.L115:
ldr r1, [sp, #0]
mov r6, fp, asl #1
cmp lr, #16777216
mov r6, r1, asl #1
str r6, [sp, #0]
mov fp, r6
bcs .L118
ldr r2, [sp, #12]
cmp r7, r2
ldr r3, [sp, #0]
cmp r7, r3
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -683,41 +674,40 @@ LzmaDecode:
cmp r8, ip
rsb lr, ip, lr
rsbcs r8, ip, r8
ldrcs ip, [sp, #28]
ldrcs ip, [sp, #16]
rsb r3, r3, #2048
orrcs ip, ip, sl
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]
addcs fp, r6, #1
strcsh r2, [r4, r6] @ movhi
strcs ip, [sp, #28]
strcs ip, [sp, #16]
subs r5, r5, #1
mov r9, r9, asl #1
mov sl, sl, asl #1
bne .L115
.L122:
ldr r0, [sp, #28]
ldr r0, [sp, #16]
adds r0, r0, #1
str r0, [sp, #28]
str r0, [sp, #16]
beq .L30
.L98:
ldr r1, [sp, #28]
ldr r2, [sp, #48]
ldr r1, [sp, #16]
ldr r2, [sp, #36]
cmp r1, r2
add fp, fp, #2
add r9, r9, #2
bhi .L155
.L125:
ldr r4, [sp, #48]
ldr ip, [sp, #28]
ldr r0, [sp, #96]
ldr r4, [sp, #36]
ldr ip, [sp, #16]
ldr r0, [sp, #88]
rsb r3, ip, r4
ldrb r4, [r0, r3] @ zero_extendqisi2
ldr r1, [sp, #48]
ldr r1, [sp, #36]
strb r4, [r1, r0]
subs fp, fp, #1
ldr r2, [sp, #100]
subs r9, r9, #1
ldr r2, [sp, #92]
moveq r3, #0
movne r3, #1
add r1, r1, #1
@ -725,17 +715,17 @@ LzmaDecode:
movcs r3, #0
andcc r3, r3, #1
cmp r3, #0
str r1, [sp, #48]
str r1, [sp, #36]
bne .L125
.L29:
ldr r3, [sp, #48]
ldr ip, [sp, #100]
ldr r3, [sp, #36]
ldr ip, [sp, #92]
cmp r3, ip
b .L158
.L30:
cmp lr, #16777216
bcs .L129
ldr lr, [sp, #12]
ldr lr, [sp, #0]
cmp r7, lr
addne r7, r7, #1
bne .L129
@ -743,16 +733,16 @@ LzmaDecode:
mov r0, #1
b .L19
.L129:
ldr r0, [sp, #60]
ldr r1, [sp, #56]
ldr r0, [sp, #48]
ldr r1, [sp, #44]
rsb r3, r0, r7
str r3, [r1, #0]
ldr r2, [sp, #104]
ldr r3, [sp, #48]
ldr r2, [sp, #96]
ldr r3, [sp, #36]
str r3, [r2, #0]
mov r0, #0
.L19:
add sp, sp, #64
ldmfd sp!, {r4, r5, r6, r7, r8, r9, fp, pc}
add sp, sp, #52
ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
.size LzmaDecode, .-LzmaDecode
.ident "GCC: (GNU) 3.4.5"

View File

@ -52,22 +52,22 @@ LzmaDecodeProperties:
.global LzmaDecode
.type LzmaDecode, %function
LzmaDecode:
@ args = 12, pretend = 0, frame = 64
@ args = 12, pretend = 0, frame = 52
@ 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]
stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
sub sp, sp, #52
str r3, [sp, #44]
mov r3, #0
str r3, [sp, #48]
str r3, [sp, #36]
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 ip, [sp, #24]
ldr ip, [sp, #44]
str r3, [ip, #0]
ldr ip, [sp, #104]
ldr ip, [sp, #96]
str r3, [ip, #0]
ldr r3, [sp, #36]
ldr r3, [sp, #24]
ldrb ip, [r0, #1] @ zero_extendqisi2
add ip, r3, ip
mov r3, #768
@ -76,42 +76,42 @@ LzmaDecode:
mov r3, #1
mov lr, r3, asl lr
sub lr, lr, #1
str r3, [sp, #28]
str r3, [sp, #16]
mov r3, r3, asl r4
str lr, [sp, #44]
str lr, [sp, #32]
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]
str r3, [sp, #28]
str r0, [sp, #40]
str r4, [sp, #20]
str lr, [sp, #12]
str lr, [sp, #8]
str lr, [sp, #4]
str r1, [sp, #48]
cmp r4, ip
mov r1, r4
.L157:
bcs .L132
mov r3, r1, asl #1
ldr r0, [sp, #52]
ldr r0, [sp, #40]
add r1, r1, #1
mov lr, #1024 @ movhi
cmp r1, ip
strh lr, [r3, r0] @ movhi
b .L157
.L132:
ldr r0, [sp, #60]
ldr r0, [sp, #48]
mov r8, #0
add r2, r0, r2
str r2, [sp, #12]
str r2, [sp, #0]
mov r7, r0
mvn lr, #0
mov r2, r8
.L28:
ldr r1, [sp, #12]
ldr r1, [sp, #0]
cmp r7, r1
add r2, r2, #1
beq .L155
@ -119,28 +119,28 @@ LzmaDecode:
cmp r2, #4
orr r8, r3, r8, asl #8
ble .L28
ldr r2, [sp, #48]
ldr r3, [sp, #100]
ldr r2, [sp, #36]
ldr r3, [sp, #92]
cmp r2, r3
.L158:
bcs .L30
add r0, sp, #44
add r0, sp, #32
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
ldr r1, [sp, #20]
and r9, ip, r0
mvn sl, #-16777216
add r3, r9, r1, asl #4
cmp lr, sl
mov r5, r3, asl #1
bhi .L31
ldr r2, [sp, #12]
ldr r2, [sp, #0]
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]
ldr r3, [sp, #40]
ldrh r1, [r5, r3]
mov r2, r1, asl #16
mov r3, lr, lsr #11
@ -148,18 +148,18 @@ LzmaDecode:
mul ip, r0, r3
cmp r8, ip
bcs .L33
ldr lr, [sp, #36]
ldr lr, [sp, #24]
rsb r3, lr, #8
mov r3, r4, asr r3
ldr lr, [sp, #40]
ldr r4, [sp, #48]
and r2, r4, lr
ldr lr, [sp, #28]
ldr r4, [sp, #36]
ldr lr, [sp, #52]
and r2, r4, lr
ldr r4, [sp, #24]
ldr lr, [sp, #40]
add r3, r3, r2, asl r4
add r3, r3, r3, asl #1
rsb r2, r0, #2048
ldr r0, [sp, #32]
ldr r0, [sp, #20]
add r3, lr, r3, asl #9
add r2, r1, r2, asr #5
add r4, r3, #3680
@ -167,27 +167,24 @@ LzmaDecode:
strh r2, [r5, lr] @ movhi
add r4, r4, #12
mov lr, ip
mov fp, #1
mov r9, #1
ble .L50
ldr r1, [sp, #48]
ldr r2, [sp, #28]
ldr ip, [sp, #96]
ldr r1, [sp, #36]
ldr r2, [sp, #16]
ldr ip, [sp, #88]
rsb r3, r2, r1
ldrb r3, [ip, r3] @ zero_extendqisi2
str r3, [sp, #8]
ldrb fp, [ip, r3] @ zero_extendqisi2
.L35:
ldr r0, [sp, #8]
mov r0, r0, asl #1
and r6, r0, #256
mov r9, fp, asl #1
mov fp, fp, asl #1
and r6, fp, #256
mov sl, r9, asl #1
add r3, r4, r6, asl #1
add r3, r3, r9
add r3, r3, sl
cmp lr, #16777216
str r0, [sp, #8]
add r5, r3, #512
bcs .L38
ldr r1, [sp, #12]
cmp r7, r1
ldr r0, [sp, #0]
cmp r7, r0
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -201,7 +198,7 @@ LzmaDecode:
rsb r3, r3, #2048
cmp r8, ip
add r3, r2, r3, asr #5
mov fp, r9
mov r9, sl
sub r2, r2, r1, lsr #21
bcs .L40
cmp r6, #0
@ -213,23 +210,23 @@ LzmaDecode:
cmp r6, #0
strh r2, [r5, #0] @ movhi
rsb r8, ip, r8
add fp, r9, #1
add r9, sl, #1
rsb lr, ip, lr
beq .L34
.L37:
cmp fp, #255
cmp r9, #255
ble .L35
b .L137
.L34:
cmp fp, #255
cmp r9, #255
bgt .L137
.L50:
mov r5, fp, asl #1
mov r5, r9, asl #1
cmp lr, #16777216
mov fp, r5
mov r9, r5
bcs .L46
ldr r2, [sp, #12]
cmp r7, r2
ldr r1, [sp, #0]
cmp r7, r1
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -247,42 +244,42 @@ LzmaDecode:
sub r2, r2, r0, lsr #21
movcc lr, ip
rsbcs r8, ip, r8
addcs fp, r5, #1
addcs r9, 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]
ldr r2, [sp, #20]
ldr r3, [sp, #36]
ldr ip, [sp, #88]
cmp r2, #3
and r4, r9, #255
strb r4, [r3, ip]
movle r0, #0
add r3, r3, #1
str r3, [sp, #36]
strle r0, [sp, #20]
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]
ldr r1, [sp, #20]
cmp r1, #9
ldrgt r2, [sp, #20]
suble r1, r1, #3
subgt r2, r2, #6
strle r1, [sp, #20]
strgt r2, [sp, #20]
b .L29
.L33:
ldr r4, [sp, #52]
ldr r0, [sp, #32]
ldr r4, [sp, #40]
ldr r0, [sp, #20]
rsb lr, ip, lr
sub r3, r1, r2, lsr #21
add r6, r4, r0, asl #1
cmp lr, r9
cmp lr, sl
strh r3, [r5, r4] @ movhi
rsb r8, ip, r8
add r4, r6, #384
bhi .L56
ldr r1, [sp, #12]
ldr r1, [sp, #0]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -299,31 +296,31 @@ LzmaDecode:
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]
ldr r2, [sp, #40]
ldr r3, [sp, #20]
ldr lr, [sp, #8]
cmp r3, #6
ldr r0, [sp, #24]
ldr r0, [sp, #12]
add r4, r2, #1632
ldr r1, [sp, #28]
ldr r1, [sp, #16]
movgt r3, #3
movle r3, #0
str lr, [sp, #16]
str lr, [sp, #4]
add r4, r4, #4
mov lr, ip
str r3, [sp, #32]
str r0, [sp, #20]
str r1, [sp, #24]
str r3, [sp, #20]
str r0, [sp, #8]
str r1, [sp, #12]
b .L61
.L58:
rsb lr, ip, lr
sub r3, r2, r0, lsr #21
cmp lr, r9
cmp lr, sl
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #408
bhi .L62
ldr r2, [sp, #12]
ldr r2, [sp, #0]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -338,17 +335,17 @@ LzmaDecode:
cmp r8, ip
bcs .L64
mov lr, ip
ldr r0, [sp, #32]
ldr ip, [sp, #52]
ldr r0, [sp, #20]
ldr ip, [sp, #40]
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
add r2, r2, r9, asl #1
cmp lr, sl
strh r3, [r4, #0] @ movhi
add r4, r2, #480
bhi .L65
ldr r1, [sp, #12]
ldr r1, [sp, #0]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -368,33 +365,33 @@ LzmaDecode:
bcs .L72
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #48]
ldr r2, [sp, #36]
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]
ldr r4, [sp, #16]
ldr r0, [sp, #20]
ldr ip, [sp, #88]
rsb r3, r4, r2
ldrb r4, [ip, r3] @ zero_extendqisi2
cmp r0, #6
movgt r0, #11
movle r0, #9
str r0, [sp, #32]
str r0, [sp, #20]
strb r4, [r2, ip]
add r2, r2, #1
str r2, [sp, #48]
str r2, [sp, #36]
b .L29
.L64:
rsb lr, ip, lr
sub r3, r1, r0, lsr #21
cmp lr, r9
cmp lr, sl
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #432
bhi .L73
ldr r1, [sp, #12]
ldr r1, [sp, #0]
cmp r7, r1
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -410,19 +407,19 @@ LzmaDecode:
bcs .L75
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #24]
ldr r2, [sp, #12]
mov lr, ip
strh r3, [r4, #0] @ movhi
b .L76
.L75:
rsb lr, ip, lr
sub r3, r2, r0, lsr #21
cmp lr, r9
cmp lr, sl
strh r3, [r4, #0] @ movhi
rsb r8, ip, r8
add r4, r6, #456
bhi .L77
ldr r2, [sp, #12]
ldr r2, [sp, #0]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -438,39 +435,38 @@ LzmaDecode:
bcs .L79
rsb r3, r1, #2048
add r3, r2, r3, asr #5
ldr r2, [sp, #20]
ldr r2, [sp, #8]
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]
ldmib sp, {r2, r3} @ phole ldm
str r3, [sp, #4]
rsb r8, ip, r8
rsb lr, ip, lr
.L80:
ldr r4, [sp, #24]
str r4, [sp, #20]
ldr r4, [sp, #12]
str r4, [sp, #8]
.L76:
ldr ip, [sp, #28]
str r2, [sp, #28]
str ip, [sp, #24]
ldr ip, [sp, #16]
str r2, [sp, #16]
str ip, [sp, #12]
.L72:
ldr r1, [sp, #32]
ldr r0, [sp, #52]
ldr r1, [sp, #20]
ldr r0, [sp, #40]
cmp r1, #6
movgt r1, #11
movle r1, #8
add r4, r0, #2656
str r1, [sp, #32]
str r1, [sp, #20]
add r4, r4, #8
.L61:
mvn r5, #-16777216
cmp lr, r5
bhi .L83
ldr r2, [sp, #12]
ldr r2, [sp, #0]
cmp r7, r2
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -484,14 +480,13 @@ LzmaDecode:
mul ip, r0, r3
cmp r8, ip
bcs .L85
add r2, r4, fp, asl #4
add r2, r4, r9, 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]
mov sl, #0
mov fp, #3
strh r3, [r4, #0] @ movhi
b .L86
.L85:
@ -501,8 +496,8 @@ LzmaDecode:
rsb r8, ip, r8
strh r3, [r4, #0] @ movhi
bhi .L87
ldr r0, [sp, #12]
cmp r7, r0
ldr r3, [sp, #0]
cmp r7, r3
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
@ -515,35 +510,33 @@ LzmaDecode:
mul ip, r0, r3
cmp r8, ip
bcs .L89
add r2, r4, fp, asl #4
add r2, r4, r9, 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]
mov sl, #8
mov fp, #3
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
mov sl, #16
mov fp, #8
.L86:
ldr r6, [sp, #4]
mov fp, #1
mov r6, fp
mov r9, #1
.L91:
mov r4, fp, asl #1
mov r4, r9, asl #1
cmp lr, #16777216
mov fp, r4
mov r9, r4
bcs .L94
ldr r3, [sp, #12]
cmp r7, r3
ldr ip, [sp, #0]
cmp r7, ip
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -562,34 +555,33 @@ LzmaDecode:
strcch r3, [r5, r4] @ movhi
movcc lr, ip
rsbcs r8, ip, r8
addcs fp, r4, #1
addcs r9, r4, #1
strcsh r2, [r5, r4] @ movhi
subs r6, r6, #1
bne .L91
ldr r4, [sp, #4]
ldr ip, [sp, #32]
ldr r0, [sp, #20]
mov r2, #1
sub fp, fp, r2, asl r4
cmp ip, #3
add fp, fp, r9
sub r9, r9, r2, asl fp
cmp r0, #3
add r9, r9, sl
bgt .L98
ldr r0, [sp, #52]
cmp fp, #3
movlt r3, fp
ldr r1, [sp, #40]
cmp r9, #3
movlt r3, r9
movge r3, #3
add ip, ip, #7
add r3, r0, r3, asl #7
str ip, [sp, #32]
add r0, r0, #7
add r3, r1, r3, asl #7
str r0, [sp, #20]
add r4, r3, #864
mov r6, r2
mov r9, #6
mov sl, #6
.L99:
mov r5, r6, asl #1
cmp lr, #16777216
mov r6, r5
bcs .L102
ldr r1, [sp, #12]
cmp r7, r1
ldr r2, [sp, #0]
cmp r7, r2
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -610,24 +602,24 @@ LzmaDecode:
rsbcs r8, ip, r8
addcs r6, r5, #1
strcsh r2, [r4, r5] @ movhi
subs r9, r9, #1
subs sl, sl, #1
bne .L99
sub r6, r6, #64
cmp r6, #3
strle r6, [sp, #28]
strle r6, [sp, #16]
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]
str r3, [sp, #16]
subgt r5, r2, #5
bgt .L109
ldr r2, [sp, #52]
ldr r4, [sp, #40]
mov r3, r3, asl r5
str r3, [sp, #28]
add r3, r2, r3, asl #1
str r3, [sp, #16]
add r3, r4, r3, asl #1
sub r3, r3, r6, asl #1
add r4, r3, #1360
add r4, r4, #14
@ -635,41 +627,40 @@ LzmaDecode:
.L109:
cmp lr, #16777216
bcs .L112
ldr r3, [sp, #12]
cmp r7, r3
ldr ip, [sp, #0]
cmp r7, ip
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
mov lr, lr, asl #8
orr r8, r3, r8, asl #8
.L112:
ldr r4, [sp, #28]
ldr r0, [sp, #16]
mov lr, lr, lsr #1
cmp r8, lr
mov r4, r4, asl #1
str r4, [sp, #28]
orrcs r4, r4, #1
mov r0, r0, asl #1
str r0, [sp, #16]
orrcs r0, r0, #1
rsbcs r8, lr, r8
strcs r4, [sp, #28]
strcs r0, [sp, #16]
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]
ldr r2, [sp, #16]
ldr r1, [sp, #40]
mov r2, r2, asl #4
add r4, r1, #1600
str r2, [sp, #16]
add r4, r4, #4
mov r5, #4
.L108:
mov r9, #1
str r9, [sp, #0]
mov sl, #1
mov fp, sl
.L115:
ldr r1, [sp, #0]
mov r6, fp, asl #1
cmp lr, #16777216
mov r6, r1, asl #1
str r6, [sp, #0]
mov fp, r6
bcs .L118
ldr r2, [sp, #12]
cmp r7, r2
ldr r3, [sp, #0]
cmp r7, r3
mov lr, lr, asl #8
beq .L155
ldrb r3, [r7], #1 @ zero_extendqisi2
@ -683,41 +674,40 @@ LzmaDecode:
cmp r8, ip
rsb lr, ip, lr
rsbcs r8, ip, r8
ldrcs ip, [sp, #28]
ldrcs ip, [sp, #16]
rsb r3, r3, #2048
orrcs ip, ip, sl
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]
addcs fp, r6, #1
strcsh r2, [r4, r6] @ movhi
strcs ip, [sp, #28]
strcs ip, [sp, #16]
subs r5, r5, #1
mov r9, r9, asl #1
mov sl, sl, asl #1
bne .L115
.L122:
ldr r0, [sp, #28]
ldr r0, [sp, #16]
adds r0, r0, #1
str r0, [sp, #28]
str r0, [sp, #16]
beq .L30
.L98:
ldr r1, [sp, #28]
ldr r2, [sp, #48]
ldr r1, [sp, #16]
ldr r2, [sp, #36]
cmp r1, r2
add fp, fp, #2
add r9, r9, #2
bhi .L155
.L125:
ldr r4, [sp, #48]
ldr ip, [sp, #28]
ldr r0, [sp, #96]
ldr r4, [sp, #36]
ldr ip, [sp, #16]
ldr r0, [sp, #88]
rsb r3, ip, r4
ldrb r4, [r0, r3] @ zero_extendqisi2
ldr r1, [sp, #48]
ldr r1, [sp, #36]
strb r4, [r1, r0]
subs fp, fp, #1
ldr r2, [sp, #100]
subs r9, r9, #1
ldr r2, [sp, #92]
moveq r3, #0
movne r3, #1
add r1, r1, #1
@ -725,17 +715,17 @@ LzmaDecode:
movcs r3, #0
andcc r3, r3, #1
cmp r3, #0
str r1, [sp, #48]
str r1, [sp, #36]
bne .L125
.L29:
ldr r3, [sp, #48]
ldr ip, [sp, #100]
ldr r3, [sp, #36]
ldr ip, [sp, #92]
cmp r3, ip
b .L158
.L30:
cmp lr, #16777216
bcs .L129
ldr lr, [sp, #12]
ldr lr, [sp, #0]
cmp r7, lr
addne r7, r7, #1
bne .L129
@ -743,16 +733,16 @@ LzmaDecode:
mov r0, #1
b .L19
.L129:
ldr r0, [sp, #60]
ldr r1, [sp, #56]
ldr r0, [sp, #48]
ldr r1, [sp, #44]
rsb r3, r0, r7
str r3, [r1, #0]
ldr r2, [sp, #104]
ldr r3, [sp, #48]
ldr r2, [sp, #96]
ldr r3, [sp, #36]
str r3, [r2, #0]
mov r0, #0
.L19:
add sp, sp, #64
ldmfd sp!, {r4, r5, r6, r7, r8, r9, fp, pc}
add sp, sp, #52
ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
.size LzmaDecode, .-LzmaDecode
.ident "GCC: (GNU) 3.4.5"

View File

@ -27,19 +27,14 @@ lzma_d_c%.S : tc_list = arm-lzma arm-linux.elf default
lzma_d_c%.S : tc_bfdname = elf32-littlearm
tc.arm-lzma.gcc = $(tc.arm-linux.elf.gcc)
tc.arm-lzma.gcc += -march=armv4t -mthumb -fPIC
tc.arm-lzma.gcc += -march=armv4t -mthumb
tc.arm-lzma.gcc += -Os
tc.arm-lzma.gcc += -ffunction-sections
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 armv4t -M force-thumb -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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -352,7 +352,7 @@ section Call2D
////////////////////////////////////////
section LZMA_0
section CallLZMA
// r0=src0, r1=slen, r2=dst0, r3=addr dstl
parb .req r3
@ -371,20 +371,20 @@ section LZMA_0
cmp sp, para
bne .Lclearstack
stmfd sp!, {r2, parb, para} // &outSizeProcessed, outSize, out
stmfd sp!, {r2, parb, para} // out, outSize, &outSizeProcessed
add r3, para, #4 // &inSizeProcessed
mov r2, parc // inSize
add r1, r0, #2 // in
add r0, para, #8 // &CLzmaDecoderState
str pard, [r0] // lc, lp, pb, dummy
bl LZMA_DECODE
mov sp, r7
b .LLZMA_end
.LzmaParams:
.long UPXb, UPXa, UPXc, UPXd
.LLZMA_end:
mov sp, r7
section LZMA_DECODE

View File

@ -281,6 +281,8 @@ section ProcessEnd
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
#include "include/header2.ash"
#define PURE_THUMB 1
section .ucl_nrv2b_decompress_8
@ -298,7 +300,46 @@ section .ucl_nrv2e_decompress_8
section Call2E
bl .thumb_nrv2e_d8
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
////////////////////////////////////////
#include "include/header2.ash"
section CallLZMA
// r0=src0, r1=slen, r2=dst0, r3=addr dstl
parb .req r3
para .req r4
parc .req r5
pard .req r6
adr r7, .LzmaParams
ldmia r7!, {parb, para, parc, pard} // load params
mov r7, sp // save stack
add para, sp
mov r1, #0
.Lclearstack:
push {r1}
cmp sp, para
bne .Lclearstack
push {r2, parb, para} // out, outSize, &outSizeProcessed
add r3, para, #4 // &inSizeProcessed
mov r2, parc // inSize
add r1, r0, #2 // in
add r0, r3, #4 // &CLzmaDecoderState
str pard, [r0] // lc, lp, pb, dummy
bl LZMA_DECODE
mov sp, r7
b .LLZMA_end
.align 2
.LzmaParams:
.long UPXb, UPXa, UPXc, UPXd
.LLZMA_end:
section LZMA_DECODE
.real_start_ofLZMA_DECODE: // suppress silly warnings
#undef section
#include "arch/arm/v4t/lzma_d_cs.S"