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:
parent
1dcee2ffa2
commit
3bcc06ed09
|
@ -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
|
@ -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)
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
@ -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
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user