arm/pe: lzma works for v4t too
minor changes in v4a code
This commit is contained in:
+8
-6
@@ -183,14 +183,16 @@ PackArmPe::~PackArmPe()
|
|||||||
|
|
||||||
const int *PackArmPe::getCompressionMethods(int method, int level) const
|
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_nrv2b[] = { M_NRV2B_8, M_NRV2E_8, M_LZMA, M_END };
|
||||||
static const int m_nrv2e[] = { M_NRV2E_8, M_NRV2B_8, 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_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_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);
|
UNUSED(level);
|
||||||
|
|
||||||
|
if (M_IS_LZMA(method))
|
||||||
|
return m_lzma;
|
||||||
// FIXME this when we have v4 mode nrv2b
|
// FIXME this when we have v4 mode nrv2b
|
||||||
if (!use_thumb_stub)
|
if (!use_thumb_stub)
|
||||||
{
|
{
|
||||||
@@ -198,8 +200,6 @@ const int *PackArmPe::getCompressionMethods(int method, int level) const
|
|||||||
return m_nrv2e_v4 ;
|
return m_nrv2e_v4 ;
|
||||||
if (M_IS_NRV2D(method))
|
if (M_IS_NRV2D(method))
|
||||||
return m_nrv2d_v4;
|
return m_nrv2d_v4;
|
||||||
if (M_IS_LZMA(method))
|
|
||||||
return m_lzma_v4;
|
|
||||||
return m_nrv2e_v4;
|
return m_nrv2e_v4;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1672,7 +1672,7 @@ int PackArmPe::buildLoader(const Filter *ft)
|
|||||||
else if (ph.method == M_NRV2D_8)
|
else if (ph.method == M_NRV2D_8)
|
||||||
addLoader("Call2D", NULL);
|
addLoader("Call2D", NULL);
|
||||||
else if (M_IS_LZMA(ph.method))
|
else if (M_IS_LZMA(ph.method))
|
||||||
addLoader("LZMA_0", NULL);
|
addLoader("+40C,CallLZMA", NULL);
|
||||||
|
|
||||||
|
|
||||||
if (ft->id == 0x50)
|
if (ft->id == 0x50)
|
||||||
@@ -1699,6 +1699,8 @@ int PackArmPe::buildLoader(const Filter *ft)
|
|||||||
addLoader(".ucl_nrv2e_decompress_8", NULL);
|
addLoader(".ucl_nrv2e_decompress_8", NULL);
|
||||||
else if (ph.method == M_NRV2B_8)
|
else if (ph.method == M_NRV2B_8)
|
||||||
addLoader(".ucl_nrv2b_decompress_8", NULL);
|
addLoader(".ucl_nrv2b_decompress_8", NULL);
|
||||||
|
else if (M_IS_LZMA(ph.method))
|
||||||
|
addLoader("+40C,LZMA_DECODE,.text.LzmaDecode", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
addLoader("IDENTSTR,UPX1HEAD", NULL);
|
addLoader("IDENTSTR,UPX1HEAD", NULL);
|
||||||
|
|||||||
+1213
-1213
File diff suppressed because it is too large
Load Diff
+897
-633
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
|
lzma_d_c%.S : tc_bfdname = elf32-littlearm
|
||||||
|
|
||||||
tc.arm-lzma.gcc = $(tc.arm-linux.elf.gcc)
|
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 += -Os
|
||||||
tc.arm-lzma.gcc += -ffunction-sections
|
tc.arm-lzma.gcc += -ffunction-sections
|
||||||
tc.arm-lzma.gcc += -I$(UPX_LZMADIR)
|
tc.arm-lzma.gcc += -I$(UPX_LZMADIR)
|
||||||
|
|||||||
@@ -52,22 +52,22 @@ LzmaDecodeProperties:
|
|||||||
.global LzmaDecode
|
.global LzmaDecode
|
||||||
.type LzmaDecode, %function
|
.type LzmaDecode, %function
|
||||||
LzmaDecode:
|
LzmaDecode:
|
||||||
@ args = 12, pretend = 0, frame = 64
|
@ args = 12, pretend = 0, frame = 52
|
||||||
@ frame_needed = 0, uses_anonymous_args = 0
|
@ frame_needed = 0, uses_anonymous_args = 0
|
||||||
stmfd sp!, {r4, r5, r6, r7, r8, r9, fp, lr}
|
stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
|
||||||
sub sp, sp, #64
|
sub sp, sp, #52
|
||||||
str r3, [sp, #56]
|
str r3, [sp, #44]
|
||||||
mov r3, #0
|
mov r3, #0
|
||||||
str r3, [sp, #48]
|
str r3, [sp, #36]
|
||||||
ldrb ip, [r0, #0] @ zero_extendqisi2
|
ldrb ip, [r0, #0] @ zero_extendqisi2
|
||||||
ldrb r4, [r0, #1] @ zero_extendqisi2
|
ldrb r4, [r0, #1] @ zero_extendqisi2
|
||||||
ldrb lr, [r0, #2] @ zero_extendqisi2
|
ldrb lr, [r0, #2] @ zero_extendqisi2
|
||||||
str ip, [sp, #36]
|
str ip, [sp, #24]
|
||||||
ldr ip, [sp, #56]
|
ldr ip, [sp, #44]
|
||||||
str r3, [ip, #0]
|
str r3, [ip, #0]
|
||||||
ldr ip, [sp, #104]
|
ldr ip, [sp, #96]
|
||||||
str r3, [ip, #0]
|
str r3, [ip, #0]
|
||||||
ldr r3, [sp, #36]
|
ldr r3, [sp, #24]
|
||||||
ldrb ip, [r0, #1] @ zero_extendqisi2
|
ldrb ip, [r0, #1] @ zero_extendqisi2
|
||||||
add ip, r3, ip
|
add ip, r3, ip
|
||||||
mov r3, #768
|
mov r3, #768
|
||||||
@@ -76,42 +76,42 @@ LzmaDecode:
|
|||||||
mov r3, #1
|
mov r3, #1
|
||||||
mov lr, r3, asl lr
|
mov lr, r3, asl lr
|
||||||
sub lr, lr, #1
|
sub lr, lr, #1
|
||||||
str r3, [sp, #28]
|
str r3, [sp, #16]
|
||||||
mov r3, r3, asl r4
|
mov r3, r3, asl r4
|
||||||
str lr, [sp, #44]
|
str lr, [sp, #32]
|
||||||
mov r4, #0
|
mov r4, #0
|
||||||
mov lr, #1
|
mov lr, #1
|
||||||
sub r3, r3, #1
|
sub r3, r3, #1
|
||||||
add r0, r0, #4
|
add r0, r0, #4
|
||||||
add ip, ip, #6
|
add ip, ip, #6
|
||||||
str r3, [sp, #40]
|
str r3, [sp, #28]
|
||||||
str r0, [sp, #52]
|
str r0, [sp, #40]
|
||||||
str r4, [sp, #32]
|
str r4, [sp, #20]
|
||||||
str lr, [sp, #24]
|
str lr, [sp, #12]
|
||||||
str lr, [sp, #20]
|
str lr, [sp, #8]
|
||||||
str lr, [sp, #16]
|
str lr, [sp, #4]
|
||||||
str r1, [sp, #60]
|
str r1, [sp, #48]
|
||||||
cmp r4, ip
|
cmp r4, ip
|
||||||
mov r1, r4
|
mov r1, r4
|
||||||
.L157:
|
.L157:
|
||||||
bcs .L132
|
bcs .L132
|
||||||
mov r3, r1, asl #1
|
mov r3, r1, asl #1
|
||||||
ldr r0, [sp, #52]
|
ldr r0, [sp, #40]
|
||||||
add r1, r1, #1
|
add r1, r1, #1
|
||||||
mov lr, #1024 @ movhi
|
mov lr, #1024 @ movhi
|
||||||
cmp r1, ip
|
cmp r1, ip
|
||||||
strh lr, [r3, r0] @ movhi
|
strh lr, [r3, r0] @ movhi
|
||||||
b .L157
|
b .L157
|
||||||
.L132:
|
.L132:
|
||||||
ldr r0, [sp, #60]
|
ldr r0, [sp, #48]
|
||||||
mov r8, #0
|
mov r8, #0
|
||||||
add r2, r0, r2
|
add r2, r0, r2
|
||||||
str r2, [sp, #12]
|
str r2, [sp, #0]
|
||||||
mov r7, r0
|
mov r7, r0
|
||||||
mvn lr, #0
|
mvn lr, #0
|
||||||
mov r2, r8
|
mov r2, r8
|
||||||
.L28:
|
.L28:
|
||||||
ldr r1, [sp, #12]
|
ldr r1, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r1
|
||||||
add r2, r2, #1
|
add r2, r2, #1
|
||||||
beq .L155
|
beq .L155
|
||||||
@@ -119,28 +119,28 @@ LzmaDecode:
|
|||||||
cmp r2, #4
|
cmp r2, #4
|
||||||
orr r8, r3, r8, asl #8
|
orr r8, r3, r8, asl #8
|
||||||
ble .L28
|
ble .L28
|
||||||
ldr r2, [sp, #48]
|
ldr r2, [sp, #36]
|
||||||
ldr r3, [sp, #100]
|
ldr r3, [sp, #92]
|
||||||
cmp r2, r3
|
cmp r2, r3
|
||||||
.L158:
|
.L158:
|
||||||
bcs .L30
|
bcs .L30
|
||||||
add r0, sp, #44
|
add r0, sp, #32
|
||||||
ldmia r0, {r0, ip} @ phole ldm
|
ldmia r0, {r0, ip} @ phole ldm
|
||||||
ldr r1, [sp, #32]
|
ldr r1, [sp, #20]
|
||||||
and fp, ip, r0
|
and r9, ip, r0
|
||||||
mvn r9, #-16777216
|
mvn sl, #-16777216
|
||||||
add r3, fp, r1, asl #4
|
add r3, r9, r1, asl #4
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
mov r5, r3, asl #1
|
mov r5, r3, asl #1
|
||||||
bhi .L31
|
bhi .L31
|
||||||
ldr r2, [sp, #12]
|
ldr r2, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r2
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
orr r8, r3, r8, asl #8
|
orr r8, r3, r8, asl #8
|
||||||
.L31:
|
.L31:
|
||||||
ldr r3, [sp, #52]
|
ldr r3, [sp, #40]
|
||||||
ldrh r1, [r5, r3]
|
ldrh r1, [r5, r3]
|
||||||
mov r2, r1, asl #16
|
mov r2, r1, asl #16
|
||||||
mov r3, lr, lsr #11
|
mov r3, lr, lsr #11
|
||||||
@@ -148,18 +148,18 @@ LzmaDecode:
|
|||||||
mul ip, r0, r3
|
mul ip, r0, r3
|
||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
bcs .L33
|
bcs .L33
|
||||||
ldr lr, [sp, #36]
|
ldr lr, [sp, #24]
|
||||||
rsb r3, lr, #8
|
rsb r3, lr, #8
|
||||||
mov r3, r4, asr r3
|
mov r3, r4, asr r3
|
||||||
ldr lr, [sp, #40]
|
ldr lr, [sp, #28]
|
||||||
ldr r4, [sp, #48]
|
|
||||||
and r2, r4, lr
|
|
||||||
ldr r4, [sp, #36]
|
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, r2, asl r4
|
||||||
add r3, r3, r3, asl #1
|
add r3, r3, r3, asl #1
|
||||||
rsb r2, r0, #2048
|
rsb r2, r0, #2048
|
||||||
ldr r0, [sp, #32]
|
ldr r0, [sp, #20]
|
||||||
add r3, lr, r3, asl #9
|
add r3, lr, r3, asl #9
|
||||||
add r2, r1, r2, asr #5
|
add r2, r1, r2, asr #5
|
||||||
add r4, r3, #3680
|
add r4, r3, #3680
|
||||||
@@ -167,27 +167,24 @@ LzmaDecode:
|
|||||||
strh r2, [r5, lr] @ movhi
|
strh r2, [r5, lr] @ movhi
|
||||||
add r4, r4, #12
|
add r4, r4, #12
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
mov fp, #1
|
mov r9, #1
|
||||||
ble .L50
|
ble .L50
|
||||||
ldr r1, [sp, #48]
|
ldr r1, [sp, #36]
|
||||||
ldr r2, [sp, #28]
|
ldr r2, [sp, #16]
|
||||||
ldr ip, [sp, #96]
|
ldr ip, [sp, #88]
|
||||||
rsb r3, r2, r1
|
rsb r3, r2, r1
|
||||||
ldrb r3, [ip, r3] @ zero_extendqisi2
|
ldrb fp, [ip, r3] @ zero_extendqisi2
|
||||||
str r3, [sp, #8]
|
|
||||||
.L35:
|
.L35:
|
||||||
ldr r0, [sp, #8]
|
mov fp, fp, asl #1
|
||||||
mov r0, r0, asl #1
|
and r6, fp, #256
|
||||||
and r6, r0, #256
|
mov sl, r9, asl #1
|
||||||
mov r9, fp, asl #1
|
|
||||||
add r3, r4, r6, asl #1
|
add r3, r4, r6, asl #1
|
||||||
add r3, r3, r9
|
add r3, r3, sl
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
str r0, [sp, #8]
|
|
||||||
add r5, r3, #512
|
add r5, r3, #512
|
||||||
bcs .L38
|
bcs .L38
|
||||||
ldr r1, [sp, #12]
|
ldr r0, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r0
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -201,7 +198,7 @@ LzmaDecode:
|
|||||||
rsb r3, r3, #2048
|
rsb r3, r3, #2048
|
||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
mov fp, r9
|
mov r9, sl
|
||||||
sub r2, r2, r1, lsr #21
|
sub r2, r2, r1, lsr #21
|
||||||
bcs .L40
|
bcs .L40
|
||||||
cmp r6, #0
|
cmp r6, #0
|
||||||
@@ -213,23 +210,23 @@ LzmaDecode:
|
|||||||
cmp r6, #0
|
cmp r6, #0
|
||||||
strh r2, [r5, #0] @ movhi
|
strh r2, [r5, #0] @ movhi
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
add fp, r9, #1
|
add r9, sl, #1
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
beq .L34
|
beq .L34
|
||||||
.L37:
|
.L37:
|
||||||
cmp fp, #255
|
cmp r9, #255
|
||||||
ble .L35
|
ble .L35
|
||||||
b .L137
|
b .L137
|
||||||
.L34:
|
.L34:
|
||||||
cmp fp, #255
|
cmp r9, #255
|
||||||
bgt .L137
|
bgt .L137
|
||||||
.L50:
|
.L50:
|
||||||
mov r5, fp, asl #1
|
mov r5, r9, asl #1
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
mov fp, r5
|
mov r9, r5
|
||||||
bcs .L46
|
bcs .L46
|
||||||
ldr r2, [sp, #12]
|
ldr r1, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r1
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -247,42 +244,42 @@ LzmaDecode:
|
|||||||
sub r2, r2, r0, lsr #21
|
sub r2, r2, r0, lsr #21
|
||||||
movcc lr, ip
|
movcc lr, ip
|
||||||
rsbcs r8, ip, r8
|
rsbcs r8, ip, r8
|
||||||
addcs fp, r5, #1
|
addcs r9, r5, #1
|
||||||
strcch r3, [r4, r5] @ movhi
|
strcch r3, [r4, r5] @ movhi
|
||||||
strcsh r2, [r4, r5] @ movhi
|
strcsh r2, [r4, r5] @ movhi
|
||||||
b .L34
|
b .L34
|
||||||
.L137:
|
.L137:
|
||||||
ldr r3, [sp, #32]
|
ldr r2, [sp, #20]
|
||||||
ldr ip, [sp, #48]
|
ldr r3, [sp, #36]
|
||||||
ldr r0, [sp, #96]
|
ldr ip, [sp, #88]
|
||||||
cmp r3, #3
|
cmp r2, #3
|
||||||
and r4, fp, #255
|
and r4, r9, #255
|
||||||
strb r4, [ip, r0]
|
strb r4, [r3, ip]
|
||||||
movle r1, #0
|
movle r0, #0
|
||||||
add ip, ip, #1
|
add r3, r3, #1
|
||||||
str ip, [sp, #48]
|
str r3, [sp, #36]
|
||||||
strle r1, [sp, #32]
|
strle r0, [sp, #20]
|
||||||
ble .L29
|
ble .L29
|
||||||
ldr r2, [sp, #32]
|
ldr r1, [sp, #20]
|
||||||
cmp r2, #9
|
cmp r1, #9
|
||||||
ldrgt r3, [sp, #32]
|
ldrgt r2, [sp, #20]
|
||||||
suble r2, r2, #3
|
suble r1, r1, #3
|
||||||
subgt r3, r3, #6
|
subgt r2, r2, #6
|
||||||
strle r2, [sp, #32]
|
strle r1, [sp, #20]
|
||||||
strgt r3, [sp, #32]
|
strgt r2, [sp, #20]
|
||||||
b .L29
|
b .L29
|
||||||
.L33:
|
.L33:
|
||||||
ldr r4, [sp, #52]
|
ldr r4, [sp, #40]
|
||||||
ldr r0, [sp, #32]
|
ldr r0, [sp, #20]
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
sub r3, r1, r2, lsr #21
|
sub r3, r1, r2, lsr #21
|
||||||
add r6, r4, r0, asl #1
|
add r6, r4, r0, asl #1
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
strh r3, [r5, r4] @ movhi
|
strh r3, [r5, r4] @ movhi
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
add r4, r6, #384
|
add r4, r6, #384
|
||||||
bhi .L56
|
bhi .L56
|
||||||
ldr r1, [sp, #12]
|
ldr r1, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r1
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -299,31 +296,31 @@ LzmaDecode:
|
|||||||
rsb r3, r1, #2048
|
rsb r3, r1, #2048
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
ldr r2, [sp, #52]
|
ldr r2, [sp, #40]
|
||||||
ldr r3, [sp, #32]
|
ldr r3, [sp, #20]
|
||||||
ldr lr, [sp, #20]
|
ldr lr, [sp, #8]
|
||||||
cmp r3, #6
|
cmp r3, #6
|
||||||
ldr r0, [sp, #24]
|
ldr r0, [sp, #12]
|
||||||
add r4, r2, #1632
|
add r4, r2, #1632
|
||||||
ldr r1, [sp, #28]
|
ldr r1, [sp, #16]
|
||||||
movgt r3, #3
|
movgt r3, #3
|
||||||
movle r3, #0
|
movle r3, #0
|
||||||
str lr, [sp, #16]
|
str lr, [sp, #4]
|
||||||
add r4, r4, #4
|
add r4, r4, #4
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
str r3, [sp, #32]
|
str r3, [sp, #20]
|
||||||
str r0, [sp, #20]
|
str r0, [sp, #8]
|
||||||
str r1, [sp, #24]
|
str r1, [sp, #12]
|
||||||
b .L61
|
b .L61
|
||||||
.L58:
|
.L58:
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
sub r3, r2, r0, lsr #21
|
sub r3, r2, r0, lsr #21
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
add r4, r6, #408
|
add r4, r6, #408
|
||||||
bhi .L62
|
bhi .L62
|
||||||
ldr r2, [sp, #12]
|
ldr r2, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r2
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -338,17 +335,17 @@ LzmaDecode:
|
|||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
bcs .L64
|
bcs .L64
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
ldr r0, [sp, #32]
|
ldr r0, [sp, #20]
|
||||||
ldr ip, [sp, #52]
|
ldr ip, [sp, #40]
|
||||||
rsb r3, r2, #2048
|
rsb r3, r2, #2048
|
||||||
add r2, ip, r0, asl #5
|
add r2, ip, r0, asl #5
|
||||||
add r3, r1, r3, asr #5
|
add r3, r1, r3, asr #5
|
||||||
add r2, r2, fp, asl #1
|
add r2, r2, r9, asl #1
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
add r4, r2, #480
|
add r4, r2, #480
|
||||||
bhi .L65
|
bhi .L65
|
||||||
ldr r1, [sp, #12]
|
ldr r1, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r1
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -368,33 +365,33 @@ LzmaDecode:
|
|||||||
bcs .L72
|
bcs .L72
|
||||||
rsb r3, r1, #2048
|
rsb r3, r1, #2048
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
ldr r2, [sp, #48]
|
ldr r2, [sp, #36]
|
||||||
cmp r2, #0
|
cmp r2, #0
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
beq .L155
|
beq .L155
|
||||||
ldr r4, [sp, #28]
|
ldr r4, [sp, #16]
|
||||||
ldr r0, [sp, #32]
|
ldr r0, [sp, #20]
|
||||||
ldr ip, [sp, #96]
|
ldr ip, [sp, #88]
|
||||||
rsb r3, r4, r2
|
rsb r3, r4, r2
|
||||||
ldrb r4, [ip, r3] @ zero_extendqisi2
|
ldrb r4, [ip, r3] @ zero_extendqisi2
|
||||||
cmp r0, #6
|
cmp r0, #6
|
||||||
movgt r0, #11
|
movgt r0, #11
|
||||||
movle r0, #9
|
movle r0, #9
|
||||||
str r0, [sp, #32]
|
str r0, [sp, #20]
|
||||||
strb r4, [r2, ip]
|
strb r4, [r2, ip]
|
||||||
add r2, r2, #1
|
add r2, r2, #1
|
||||||
str r2, [sp, #48]
|
str r2, [sp, #36]
|
||||||
b .L29
|
b .L29
|
||||||
.L64:
|
.L64:
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
sub r3, r1, r0, lsr #21
|
sub r3, r1, r0, lsr #21
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
add r4, r6, #432
|
add r4, r6, #432
|
||||||
bhi .L73
|
bhi .L73
|
||||||
ldr r1, [sp, #12]
|
ldr r1, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r1
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -410,19 +407,19 @@ LzmaDecode:
|
|||||||
bcs .L75
|
bcs .L75
|
||||||
rsb r3, r1, #2048
|
rsb r3, r1, #2048
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
ldr r2, [sp, #24]
|
ldr r2, [sp, #12]
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
b .L76
|
b .L76
|
||||||
.L75:
|
.L75:
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
sub r3, r2, r0, lsr #21
|
sub r3, r2, r0, lsr #21
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
add r4, r6, #456
|
add r4, r6, #456
|
||||||
bhi .L77
|
bhi .L77
|
||||||
ldr r2, [sp, #12]
|
ldr r2, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r2
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -438,39 +435,38 @@ LzmaDecode:
|
|||||||
bcs .L79
|
bcs .L79
|
||||||
rsb r3, r1, #2048
|
rsb r3, r1, #2048
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
ldr r2, [sp, #20]
|
ldr r2, [sp, #8]
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
b .L80
|
b .L80
|
||||||
.L79:
|
.L79:
|
||||||
sub r3, r2, r0, lsr #21
|
sub r3, r2, r0, lsr #21
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
add r2, sp, #16
|
ldmib sp, {r2, r3} @ phole ldm
|
||||||
ldmia r2, {r2, r3} @ phole ldm
|
str r3, [sp, #4]
|
||||||
str r3, [sp, #16]
|
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
.L80:
|
.L80:
|
||||||
ldr r4, [sp, #24]
|
ldr r4, [sp, #12]
|
||||||
str r4, [sp, #20]
|
str r4, [sp, #8]
|
||||||
.L76:
|
.L76:
|
||||||
ldr ip, [sp, #28]
|
ldr ip, [sp, #16]
|
||||||
str r2, [sp, #28]
|
str r2, [sp, #16]
|
||||||
str ip, [sp, #24]
|
str ip, [sp, #12]
|
||||||
.L72:
|
.L72:
|
||||||
ldr r1, [sp, #32]
|
ldr r1, [sp, #20]
|
||||||
ldr r0, [sp, #52]
|
ldr r0, [sp, #40]
|
||||||
cmp r1, #6
|
cmp r1, #6
|
||||||
movgt r1, #11
|
movgt r1, #11
|
||||||
movle r1, #8
|
movle r1, #8
|
||||||
add r4, r0, #2656
|
add r4, r0, #2656
|
||||||
str r1, [sp, #32]
|
str r1, [sp, #20]
|
||||||
add r4, r4, #8
|
add r4, r4, #8
|
||||||
.L61:
|
.L61:
|
||||||
mvn r5, #-16777216
|
mvn r5, #-16777216
|
||||||
cmp lr, r5
|
cmp lr, r5
|
||||||
bhi .L83
|
bhi .L83
|
||||||
ldr r2, [sp, #12]
|
ldr r2, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r2
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -484,14 +480,13 @@ LzmaDecode:
|
|||||||
mul ip, r0, r3
|
mul ip, r0, r3
|
||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
bcs .L85
|
bcs .L85
|
||||||
add r2, r4, fp, asl #4
|
add r2, r4, r9, asl #4
|
||||||
rsb r3, r0, #2048
|
rsb r3, r0, #2048
|
||||||
add r3, r1, r3, asr #5
|
add r3, r1, r3, asr #5
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
add r5, r2, #4
|
add r5, r2, #4
|
||||||
mov ip, #3
|
mov sl, #0
|
||||||
mov r9, #0
|
mov fp, #3
|
||||||
str ip, [sp, #4]
|
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
b .L86
|
b .L86
|
||||||
.L85:
|
.L85:
|
||||||
@@ -501,8 +496,8 @@ LzmaDecode:
|
|||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
bhi .L87
|
bhi .L87
|
||||||
ldr r0, [sp, #12]
|
ldr r3, [sp, #0]
|
||||||
cmp r7, r0
|
cmp r7, r3
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
@@ -515,35 +510,33 @@ LzmaDecode:
|
|||||||
mul ip, r0, r3
|
mul ip, r0, r3
|
||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
bcs .L89
|
bcs .L89
|
||||||
add r2, r4, fp, asl #4
|
add r2, r4, r9, asl #4
|
||||||
rsb r3, r0, #2048
|
rsb r3, r0, #2048
|
||||||
add r3, r1, r3, asr #5
|
add r3, r1, r3, asr #5
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
mov r1, #3
|
|
||||||
add r5, r2, #260
|
add r5, r2, #260
|
||||||
mov r9, #8
|
mov sl, #8
|
||||||
str r1, [sp, #4]
|
mov fp, #3
|
||||||
strh r3, [r4, #2] @ movhi
|
strh r3, [r4, #2] @ movhi
|
||||||
b .L86
|
b .L86
|
||||||
.L89:
|
.L89:
|
||||||
sub r3, r1, r2, lsr #21
|
sub r3, r1, r2, lsr #21
|
||||||
mov r2, #8
|
|
||||||
strh r3, [r4, #2] @ movhi
|
strh r3, [r4, #2] @ movhi
|
||||||
str r2, [sp, #4]
|
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
add r5, r4, #516
|
add r5, r4, #516
|
||||||
mov r9, #16
|
mov sl, #16
|
||||||
|
mov fp, #8
|
||||||
.L86:
|
.L86:
|
||||||
ldr r6, [sp, #4]
|
mov r6, fp
|
||||||
mov fp, #1
|
mov r9, #1
|
||||||
.L91:
|
.L91:
|
||||||
mov r4, fp, asl #1
|
mov r4, r9, asl #1
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
mov fp, r4
|
mov r9, r4
|
||||||
bcs .L94
|
bcs .L94
|
||||||
ldr r3, [sp, #12]
|
ldr ip, [sp, #0]
|
||||||
cmp r7, r3
|
cmp r7, ip
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -562,34 +555,33 @@ LzmaDecode:
|
|||||||
strcch r3, [r5, r4] @ movhi
|
strcch r3, [r5, r4] @ movhi
|
||||||
movcc lr, ip
|
movcc lr, ip
|
||||||
rsbcs r8, ip, r8
|
rsbcs r8, ip, r8
|
||||||
addcs fp, r4, #1
|
addcs r9, r4, #1
|
||||||
strcsh r2, [r5, r4] @ movhi
|
strcsh r2, [r5, r4] @ movhi
|
||||||
subs r6, r6, #1
|
subs r6, r6, #1
|
||||||
bne .L91
|
bne .L91
|
||||||
ldr r4, [sp, #4]
|
ldr r0, [sp, #20]
|
||||||
ldr ip, [sp, #32]
|
|
||||||
mov r2, #1
|
mov r2, #1
|
||||||
sub fp, fp, r2, asl r4
|
sub r9, r9, r2, asl fp
|
||||||
cmp ip, #3
|
cmp r0, #3
|
||||||
add fp, fp, r9
|
add r9, r9, sl
|
||||||
bgt .L98
|
bgt .L98
|
||||||
ldr r0, [sp, #52]
|
ldr r1, [sp, #40]
|
||||||
cmp fp, #3
|
cmp r9, #3
|
||||||
movlt r3, fp
|
movlt r3, r9
|
||||||
movge r3, #3
|
movge r3, #3
|
||||||
add ip, ip, #7
|
add r0, r0, #7
|
||||||
add r3, r0, r3, asl #7
|
add r3, r1, r3, asl #7
|
||||||
str ip, [sp, #32]
|
str r0, [sp, #20]
|
||||||
add r4, r3, #864
|
add r4, r3, #864
|
||||||
mov r6, r2
|
mov r6, r2
|
||||||
mov r9, #6
|
mov sl, #6
|
||||||
.L99:
|
.L99:
|
||||||
mov r5, r6, asl #1
|
mov r5, r6, asl #1
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
mov r6, r5
|
mov r6, r5
|
||||||
bcs .L102
|
bcs .L102
|
||||||
ldr r1, [sp, #12]
|
ldr r2, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r2
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -610,24 +602,24 @@ LzmaDecode:
|
|||||||
rsbcs r8, ip, r8
|
rsbcs r8, ip, r8
|
||||||
addcs r6, r5, #1
|
addcs r6, r5, #1
|
||||||
strcsh r2, [r4, r5] @ movhi
|
strcsh r2, [r4, r5] @ movhi
|
||||||
subs r9, r9, #1
|
subs sl, sl, #1
|
||||||
bne .L99
|
bne .L99
|
||||||
sub r6, r6, #64
|
sub r6, r6, #64
|
||||||
cmp r6, #3
|
cmp r6, #3
|
||||||
strle r6, [sp, #28]
|
strle r6, [sp, #16]
|
||||||
ble .L122
|
ble .L122
|
||||||
and r3, r6, #1
|
and r3, r6, #1
|
||||||
mov r2, r6, asr #1
|
mov r2, r6, asr #1
|
||||||
cmp r6, #13
|
cmp r6, #13
|
||||||
orr r3, r3, #2
|
orr r3, r3, #2
|
||||||
sub r5, r2, #1
|
sub r5, r2, #1
|
||||||
str r3, [sp, #28]
|
str r3, [sp, #16]
|
||||||
subgt r5, r2, #5
|
subgt r5, r2, #5
|
||||||
bgt .L109
|
bgt .L109
|
||||||
ldr r2, [sp, #52]
|
ldr r4, [sp, #40]
|
||||||
mov r3, r3, asl r5
|
mov r3, r3, asl r5
|
||||||
str r3, [sp, #28]
|
str r3, [sp, #16]
|
||||||
add r3, r2, r3, asl #1
|
add r3, r4, r3, asl #1
|
||||||
sub r3, r3, r6, asl #1
|
sub r3, r3, r6, asl #1
|
||||||
add r4, r3, #1360
|
add r4, r3, #1360
|
||||||
add r4, r4, #14
|
add r4, r4, #14
|
||||||
@@ -635,41 +627,40 @@ LzmaDecode:
|
|||||||
.L109:
|
.L109:
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
bcs .L112
|
bcs .L112
|
||||||
ldr r3, [sp, #12]
|
ldr ip, [sp, #0]
|
||||||
cmp r7, r3
|
cmp r7, ip
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
orr r8, r3, r8, asl #8
|
orr r8, r3, r8, asl #8
|
||||||
.L112:
|
.L112:
|
||||||
ldr r4, [sp, #28]
|
ldr r0, [sp, #16]
|
||||||
mov lr, lr, lsr #1
|
mov lr, lr, lsr #1
|
||||||
cmp r8, lr
|
cmp r8, lr
|
||||||
mov r4, r4, asl #1
|
mov r0, r0, asl #1
|
||||||
str r4, [sp, #28]
|
str r0, [sp, #16]
|
||||||
orrcs r4, r4, #1
|
orrcs r0, r0, #1
|
||||||
rsbcs r8, lr, r8
|
rsbcs r8, lr, r8
|
||||||
strcs r4, [sp, #28]
|
strcs r0, [sp, #16]
|
||||||
subs r5, r5, #1
|
subs r5, r5, #1
|
||||||
bne .L109
|
bne .L109
|
||||||
ldr r0, [sp, #28]
|
ldr r2, [sp, #16]
|
||||||
ldr ip, [sp, #52]
|
ldr r1, [sp, #40]
|
||||||
mov r0, r0, asl #4
|
mov r2, r2, asl #4
|
||||||
add r4, ip, #1600
|
add r4, r1, #1600
|
||||||
str r0, [sp, #28]
|
str r2, [sp, #16]
|
||||||
add r4, r4, #4
|
add r4, r4, #4
|
||||||
mov r5, #4
|
mov r5, #4
|
||||||
.L108:
|
.L108:
|
||||||
mov r9, #1
|
mov sl, #1
|
||||||
str r9, [sp, #0]
|
mov fp, sl
|
||||||
.L115:
|
.L115:
|
||||||
ldr r1, [sp, #0]
|
mov r6, fp, asl #1
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
mov r6, r1, asl #1
|
mov fp, r6
|
||||||
str r6, [sp, #0]
|
|
||||||
bcs .L118
|
bcs .L118
|
||||||
ldr r2, [sp, #12]
|
ldr r3, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r3
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -683,41 +674,40 @@ LzmaDecode:
|
|||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
rsbcs r8, ip, r8
|
rsbcs r8, ip, r8
|
||||||
ldrcs ip, [sp, #28]
|
ldrcs ip, [sp, #16]
|
||||||
rsb r3, r3, #2048
|
rsb r3, r3, #2048
|
||||||
|
orrcs ip, ip, sl
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
orrcs ip, ip, r9
|
|
||||||
addcs r3, r6, #1
|
|
||||||
sub r2, r2, r0, lsr #21
|
sub r2, r2, r0, lsr #21
|
||||||
movcc lr, ip
|
movcc lr, ip
|
||||||
strcch r3, [r4, r6] @ movhi
|
strcch r3, [r4, r6] @ movhi
|
||||||
strcs r3, [sp, #0]
|
addcs fp, r6, #1
|
||||||
strcsh r2, [r4, r6] @ movhi
|
strcsh r2, [r4, r6] @ movhi
|
||||||
strcs ip, [sp, #28]
|
strcs ip, [sp, #16]
|
||||||
subs r5, r5, #1
|
subs r5, r5, #1
|
||||||
mov r9, r9, asl #1
|
mov sl, sl, asl #1
|
||||||
bne .L115
|
bne .L115
|
||||||
.L122:
|
.L122:
|
||||||
ldr r0, [sp, #28]
|
ldr r0, [sp, #16]
|
||||||
adds r0, r0, #1
|
adds r0, r0, #1
|
||||||
str r0, [sp, #28]
|
str r0, [sp, #16]
|
||||||
beq .L30
|
beq .L30
|
||||||
.L98:
|
.L98:
|
||||||
ldr r1, [sp, #28]
|
ldr r1, [sp, #16]
|
||||||
ldr r2, [sp, #48]
|
ldr r2, [sp, #36]
|
||||||
cmp r1, r2
|
cmp r1, r2
|
||||||
add fp, fp, #2
|
add r9, r9, #2
|
||||||
bhi .L155
|
bhi .L155
|
||||||
.L125:
|
.L125:
|
||||||
ldr r4, [sp, #48]
|
ldr r4, [sp, #36]
|
||||||
ldr ip, [sp, #28]
|
ldr ip, [sp, #16]
|
||||||
ldr r0, [sp, #96]
|
ldr r0, [sp, #88]
|
||||||
rsb r3, ip, r4
|
rsb r3, ip, r4
|
||||||
ldrb r4, [r0, r3] @ zero_extendqisi2
|
ldrb r4, [r0, r3] @ zero_extendqisi2
|
||||||
ldr r1, [sp, #48]
|
ldr r1, [sp, #36]
|
||||||
strb r4, [r1, r0]
|
strb r4, [r1, r0]
|
||||||
subs fp, fp, #1
|
subs r9, r9, #1
|
||||||
ldr r2, [sp, #100]
|
ldr r2, [sp, #92]
|
||||||
moveq r3, #0
|
moveq r3, #0
|
||||||
movne r3, #1
|
movne r3, #1
|
||||||
add r1, r1, #1
|
add r1, r1, #1
|
||||||
@@ -725,17 +715,17 @@ LzmaDecode:
|
|||||||
movcs r3, #0
|
movcs r3, #0
|
||||||
andcc r3, r3, #1
|
andcc r3, r3, #1
|
||||||
cmp r3, #0
|
cmp r3, #0
|
||||||
str r1, [sp, #48]
|
str r1, [sp, #36]
|
||||||
bne .L125
|
bne .L125
|
||||||
.L29:
|
.L29:
|
||||||
ldr r3, [sp, #48]
|
ldr r3, [sp, #36]
|
||||||
ldr ip, [sp, #100]
|
ldr ip, [sp, #92]
|
||||||
cmp r3, ip
|
cmp r3, ip
|
||||||
b .L158
|
b .L158
|
||||||
.L30:
|
.L30:
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
bcs .L129
|
bcs .L129
|
||||||
ldr lr, [sp, #12]
|
ldr lr, [sp, #0]
|
||||||
cmp r7, lr
|
cmp r7, lr
|
||||||
addne r7, r7, #1
|
addne r7, r7, #1
|
||||||
bne .L129
|
bne .L129
|
||||||
@@ -743,16 +733,16 @@ LzmaDecode:
|
|||||||
mov r0, #1
|
mov r0, #1
|
||||||
b .L19
|
b .L19
|
||||||
.L129:
|
.L129:
|
||||||
ldr r0, [sp, #60]
|
ldr r0, [sp, #48]
|
||||||
ldr r1, [sp, #56]
|
ldr r1, [sp, #44]
|
||||||
rsb r3, r0, r7
|
rsb r3, r0, r7
|
||||||
str r3, [r1, #0]
|
str r3, [r1, #0]
|
||||||
ldr r2, [sp, #104]
|
ldr r2, [sp, #96]
|
||||||
ldr r3, [sp, #48]
|
ldr r3, [sp, #36]
|
||||||
str r3, [r2, #0]
|
str r3, [r2, #0]
|
||||||
mov r0, #0
|
mov r0, #0
|
||||||
.L19:
|
.L19:
|
||||||
add sp, sp, #64
|
add sp, sp, #52
|
||||||
ldmfd sp!, {r4, r5, r6, r7, r8, r9, fp, pc}
|
ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
|
||||||
.size LzmaDecode, .-LzmaDecode
|
.size LzmaDecode, .-LzmaDecode
|
||||||
.ident "GCC: (GNU) 3.4.5"
|
.ident "GCC: (GNU) 3.4.5"
|
||||||
|
|||||||
@@ -52,22 +52,22 @@ LzmaDecodeProperties:
|
|||||||
.global LzmaDecode
|
.global LzmaDecode
|
||||||
.type LzmaDecode, %function
|
.type LzmaDecode, %function
|
||||||
LzmaDecode:
|
LzmaDecode:
|
||||||
@ args = 12, pretend = 0, frame = 64
|
@ args = 12, pretend = 0, frame = 52
|
||||||
@ frame_needed = 0, uses_anonymous_args = 0
|
@ frame_needed = 0, uses_anonymous_args = 0
|
||||||
stmfd sp!, {r4, r5, r6, r7, r8, r9, fp, lr}
|
stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
|
||||||
sub sp, sp, #64
|
sub sp, sp, #52
|
||||||
str r3, [sp, #56]
|
str r3, [sp, #44]
|
||||||
mov r3, #0
|
mov r3, #0
|
||||||
str r3, [sp, #48]
|
str r3, [sp, #36]
|
||||||
ldrb ip, [r0, #0] @ zero_extendqisi2
|
ldrb ip, [r0, #0] @ zero_extendqisi2
|
||||||
ldrb r4, [r0, #1] @ zero_extendqisi2
|
ldrb r4, [r0, #1] @ zero_extendqisi2
|
||||||
ldrb lr, [r0, #2] @ zero_extendqisi2
|
ldrb lr, [r0, #2] @ zero_extendqisi2
|
||||||
str ip, [sp, #36]
|
str ip, [sp, #24]
|
||||||
ldr ip, [sp, #56]
|
ldr ip, [sp, #44]
|
||||||
str r3, [ip, #0]
|
str r3, [ip, #0]
|
||||||
ldr ip, [sp, #104]
|
ldr ip, [sp, #96]
|
||||||
str r3, [ip, #0]
|
str r3, [ip, #0]
|
||||||
ldr r3, [sp, #36]
|
ldr r3, [sp, #24]
|
||||||
ldrb ip, [r0, #1] @ zero_extendqisi2
|
ldrb ip, [r0, #1] @ zero_extendqisi2
|
||||||
add ip, r3, ip
|
add ip, r3, ip
|
||||||
mov r3, #768
|
mov r3, #768
|
||||||
@@ -76,42 +76,42 @@ LzmaDecode:
|
|||||||
mov r3, #1
|
mov r3, #1
|
||||||
mov lr, r3, asl lr
|
mov lr, r3, asl lr
|
||||||
sub lr, lr, #1
|
sub lr, lr, #1
|
||||||
str r3, [sp, #28]
|
str r3, [sp, #16]
|
||||||
mov r3, r3, asl r4
|
mov r3, r3, asl r4
|
||||||
str lr, [sp, #44]
|
str lr, [sp, #32]
|
||||||
mov r4, #0
|
mov r4, #0
|
||||||
mov lr, #1
|
mov lr, #1
|
||||||
sub r3, r3, #1
|
sub r3, r3, #1
|
||||||
add r0, r0, #4
|
add r0, r0, #4
|
||||||
add ip, ip, #6
|
add ip, ip, #6
|
||||||
str r3, [sp, #40]
|
str r3, [sp, #28]
|
||||||
str r0, [sp, #52]
|
str r0, [sp, #40]
|
||||||
str r4, [sp, #32]
|
str r4, [sp, #20]
|
||||||
str lr, [sp, #24]
|
str lr, [sp, #12]
|
||||||
str lr, [sp, #20]
|
str lr, [sp, #8]
|
||||||
str lr, [sp, #16]
|
str lr, [sp, #4]
|
||||||
str r1, [sp, #60]
|
str r1, [sp, #48]
|
||||||
cmp r4, ip
|
cmp r4, ip
|
||||||
mov r1, r4
|
mov r1, r4
|
||||||
.L157:
|
.L157:
|
||||||
bcs .L132
|
bcs .L132
|
||||||
mov r3, r1, asl #1
|
mov r3, r1, asl #1
|
||||||
ldr r0, [sp, #52]
|
ldr r0, [sp, #40]
|
||||||
add r1, r1, #1
|
add r1, r1, #1
|
||||||
mov lr, #1024 @ movhi
|
mov lr, #1024 @ movhi
|
||||||
cmp r1, ip
|
cmp r1, ip
|
||||||
strh lr, [r3, r0] @ movhi
|
strh lr, [r3, r0] @ movhi
|
||||||
b .L157
|
b .L157
|
||||||
.L132:
|
.L132:
|
||||||
ldr r0, [sp, #60]
|
ldr r0, [sp, #48]
|
||||||
mov r8, #0
|
mov r8, #0
|
||||||
add r2, r0, r2
|
add r2, r0, r2
|
||||||
str r2, [sp, #12]
|
str r2, [sp, #0]
|
||||||
mov r7, r0
|
mov r7, r0
|
||||||
mvn lr, #0
|
mvn lr, #0
|
||||||
mov r2, r8
|
mov r2, r8
|
||||||
.L28:
|
.L28:
|
||||||
ldr r1, [sp, #12]
|
ldr r1, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r1
|
||||||
add r2, r2, #1
|
add r2, r2, #1
|
||||||
beq .L155
|
beq .L155
|
||||||
@@ -119,28 +119,28 @@ LzmaDecode:
|
|||||||
cmp r2, #4
|
cmp r2, #4
|
||||||
orr r8, r3, r8, asl #8
|
orr r8, r3, r8, asl #8
|
||||||
ble .L28
|
ble .L28
|
||||||
ldr r2, [sp, #48]
|
ldr r2, [sp, #36]
|
||||||
ldr r3, [sp, #100]
|
ldr r3, [sp, #92]
|
||||||
cmp r2, r3
|
cmp r2, r3
|
||||||
.L158:
|
.L158:
|
||||||
bcs .L30
|
bcs .L30
|
||||||
add r0, sp, #44
|
add r0, sp, #32
|
||||||
ldmia r0, {r0, ip} @ phole ldm
|
ldmia r0, {r0, ip} @ phole ldm
|
||||||
ldr r1, [sp, #32]
|
ldr r1, [sp, #20]
|
||||||
and fp, ip, r0
|
and r9, ip, r0
|
||||||
mvn r9, #-16777216
|
mvn sl, #-16777216
|
||||||
add r3, fp, r1, asl #4
|
add r3, r9, r1, asl #4
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
mov r5, r3, asl #1
|
mov r5, r3, asl #1
|
||||||
bhi .L31
|
bhi .L31
|
||||||
ldr r2, [sp, #12]
|
ldr r2, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r2
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
orr r8, r3, r8, asl #8
|
orr r8, r3, r8, asl #8
|
||||||
.L31:
|
.L31:
|
||||||
ldr r3, [sp, #52]
|
ldr r3, [sp, #40]
|
||||||
ldrh r1, [r5, r3]
|
ldrh r1, [r5, r3]
|
||||||
mov r2, r1, asl #16
|
mov r2, r1, asl #16
|
||||||
mov r3, lr, lsr #11
|
mov r3, lr, lsr #11
|
||||||
@@ -148,18 +148,18 @@ LzmaDecode:
|
|||||||
mul ip, r0, r3
|
mul ip, r0, r3
|
||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
bcs .L33
|
bcs .L33
|
||||||
ldr lr, [sp, #36]
|
ldr lr, [sp, #24]
|
||||||
rsb r3, lr, #8
|
rsb r3, lr, #8
|
||||||
mov r3, r4, asr r3
|
mov r3, r4, asr r3
|
||||||
ldr lr, [sp, #40]
|
ldr lr, [sp, #28]
|
||||||
ldr r4, [sp, #48]
|
|
||||||
and r2, r4, lr
|
|
||||||
ldr r4, [sp, #36]
|
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, r2, asl r4
|
||||||
add r3, r3, r3, asl #1
|
add r3, r3, r3, asl #1
|
||||||
rsb r2, r0, #2048
|
rsb r2, r0, #2048
|
||||||
ldr r0, [sp, #32]
|
ldr r0, [sp, #20]
|
||||||
add r3, lr, r3, asl #9
|
add r3, lr, r3, asl #9
|
||||||
add r2, r1, r2, asr #5
|
add r2, r1, r2, asr #5
|
||||||
add r4, r3, #3680
|
add r4, r3, #3680
|
||||||
@@ -167,27 +167,24 @@ LzmaDecode:
|
|||||||
strh r2, [r5, lr] @ movhi
|
strh r2, [r5, lr] @ movhi
|
||||||
add r4, r4, #12
|
add r4, r4, #12
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
mov fp, #1
|
mov r9, #1
|
||||||
ble .L50
|
ble .L50
|
||||||
ldr r1, [sp, #48]
|
ldr r1, [sp, #36]
|
||||||
ldr r2, [sp, #28]
|
ldr r2, [sp, #16]
|
||||||
ldr ip, [sp, #96]
|
ldr ip, [sp, #88]
|
||||||
rsb r3, r2, r1
|
rsb r3, r2, r1
|
||||||
ldrb r3, [ip, r3] @ zero_extendqisi2
|
ldrb fp, [ip, r3] @ zero_extendqisi2
|
||||||
str r3, [sp, #8]
|
|
||||||
.L35:
|
.L35:
|
||||||
ldr r0, [sp, #8]
|
mov fp, fp, asl #1
|
||||||
mov r0, r0, asl #1
|
and r6, fp, #256
|
||||||
and r6, r0, #256
|
mov sl, r9, asl #1
|
||||||
mov r9, fp, asl #1
|
|
||||||
add r3, r4, r6, asl #1
|
add r3, r4, r6, asl #1
|
||||||
add r3, r3, r9
|
add r3, r3, sl
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
str r0, [sp, #8]
|
|
||||||
add r5, r3, #512
|
add r5, r3, #512
|
||||||
bcs .L38
|
bcs .L38
|
||||||
ldr r1, [sp, #12]
|
ldr r0, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r0
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -201,7 +198,7 @@ LzmaDecode:
|
|||||||
rsb r3, r3, #2048
|
rsb r3, r3, #2048
|
||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
mov fp, r9
|
mov r9, sl
|
||||||
sub r2, r2, r1, lsr #21
|
sub r2, r2, r1, lsr #21
|
||||||
bcs .L40
|
bcs .L40
|
||||||
cmp r6, #0
|
cmp r6, #0
|
||||||
@@ -213,23 +210,23 @@ LzmaDecode:
|
|||||||
cmp r6, #0
|
cmp r6, #0
|
||||||
strh r2, [r5, #0] @ movhi
|
strh r2, [r5, #0] @ movhi
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
add fp, r9, #1
|
add r9, sl, #1
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
beq .L34
|
beq .L34
|
||||||
.L37:
|
.L37:
|
||||||
cmp fp, #255
|
cmp r9, #255
|
||||||
ble .L35
|
ble .L35
|
||||||
b .L137
|
b .L137
|
||||||
.L34:
|
.L34:
|
||||||
cmp fp, #255
|
cmp r9, #255
|
||||||
bgt .L137
|
bgt .L137
|
||||||
.L50:
|
.L50:
|
||||||
mov r5, fp, asl #1
|
mov r5, r9, asl #1
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
mov fp, r5
|
mov r9, r5
|
||||||
bcs .L46
|
bcs .L46
|
||||||
ldr r2, [sp, #12]
|
ldr r1, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r1
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -247,42 +244,42 @@ LzmaDecode:
|
|||||||
sub r2, r2, r0, lsr #21
|
sub r2, r2, r0, lsr #21
|
||||||
movcc lr, ip
|
movcc lr, ip
|
||||||
rsbcs r8, ip, r8
|
rsbcs r8, ip, r8
|
||||||
addcs fp, r5, #1
|
addcs r9, r5, #1
|
||||||
strcch r3, [r4, r5] @ movhi
|
strcch r3, [r4, r5] @ movhi
|
||||||
strcsh r2, [r4, r5] @ movhi
|
strcsh r2, [r4, r5] @ movhi
|
||||||
b .L34
|
b .L34
|
||||||
.L137:
|
.L137:
|
||||||
ldr r3, [sp, #32]
|
ldr r2, [sp, #20]
|
||||||
ldr ip, [sp, #48]
|
ldr r3, [sp, #36]
|
||||||
ldr r0, [sp, #96]
|
ldr ip, [sp, #88]
|
||||||
cmp r3, #3
|
cmp r2, #3
|
||||||
and r4, fp, #255
|
and r4, r9, #255
|
||||||
strb r4, [ip, r0]
|
strb r4, [r3, ip]
|
||||||
movle r1, #0
|
movle r0, #0
|
||||||
add ip, ip, #1
|
add r3, r3, #1
|
||||||
str ip, [sp, #48]
|
str r3, [sp, #36]
|
||||||
strle r1, [sp, #32]
|
strle r0, [sp, #20]
|
||||||
ble .L29
|
ble .L29
|
||||||
ldr r2, [sp, #32]
|
ldr r1, [sp, #20]
|
||||||
cmp r2, #9
|
cmp r1, #9
|
||||||
ldrgt r3, [sp, #32]
|
ldrgt r2, [sp, #20]
|
||||||
suble r2, r2, #3
|
suble r1, r1, #3
|
||||||
subgt r3, r3, #6
|
subgt r2, r2, #6
|
||||||
strle r2, [sp, #32]
|
strle r1, [sp, #20]
|
||||||
strgt r3, [sp, #32]
|
strgt r2, [sp, #20]
|
||||||
b .L29
|
b .L29
|
||||||
.L33:
|
.L33:
|
||||||
ldr r4, [sp, #52]
|
ldr r4, [sp, #40]
|
||||||
ldr r0, [sp, #32]
|
ldr r0, [sp, #20]
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
sub r3, r1, r2, lsr #21
|
sub r3, r1, r2, lsr #21
|
||||||
add r6, r4, r0, asl #1
|
add r6, r4, r0, asl #1
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
strh r3, [r5, r4] @ movhi
|
strh r3, [r5, r4] @ movhi
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
add r4, r6, #384
|
add r4, r6, #384
|
||||||
bhi .L56
|
bhi .L56
|
||||||
ldr r1, [sp, #12]
|
ldr r1, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r1
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -299,31 +296,31 @@ LzmaDecode:
|
|||||||
rsb r3, r1, #2048
|
rsb r3, r1, #2048
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
ldr r2, [sp, #52]
|
ldr r2, [sp, #40]
|
||||||
ldr r3, [sp, #32]
|
ldr r3, [sp, #20]
|
||||||
ldr lr, [sp, #20]
|
ldr lr, [sp, #8]
|
||||||
cmp r3, #6
|
cmp r3, #6
|
||||||
ldr r0, [sp, #24]
|
ldr r0, [sp, #12]
|
||||||
add r4, r2, #1632
|
add r4, r2, #1632
|
||||||
ldr r1, [sp, #28]
|
ldr r1, [sp, #16]
|
||||||
movgt r3, #3
|
movgt r3, #3
|
||||||
movle r3, #0
|
movle r3, #0
|
||||||
str lr, [sp, #16]
|
str lr, [sp, #4]
|
||||||
add r4, r4, #4
|
add r4, r4, #4
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
str r3, [sp, #32]
|
str r3, [sp, #20]
|
||||||
str r0, [sp, #20]
|
str r0, [sp, #8]
|
||||||
str r1, [sp, #24]
|
str r1, [sp, #12]
|
||||||
b .L61
|
b .L61
|
||||||
.L58:
|
.L58:
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
sub r3, r2, r0, lsr #21
|
sub r3, r2, r0, lsr #21
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
add r4, r6, #408
|
add r4, r6, #408
|
||||||
bhi .L62
|
bhi .L62
|
||||||
ldr r2, [sp, #12]
|
ldr r2, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r2
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -338,17 +335,17 @@ LzmaDecode:
|
|||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
bcs .L64
|
bcs .L64
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
ldr r0, [sp, #32]
|
ldr r0, [sp, #20]
|
||||||
ldr ip, [sp, #52]
|
ldr ip, [sp, #40]
|
||||||
rsb r3, r2, #2048
|
rsb r3, r2, #2048
|
||||||
add r2, ip, r0, asl #5
|
add r2, ip, r0, asl #5
|
||||||
add r3, r1, r3, asr #5
|
add r3, r1, r3, asr #5
|
||||||
add r2, r2, fp, asl #1
|
add r2, r2, r9, asl #1
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
add r4, r2, #480
|
add r4, r2, #480
|
||||||
bhi .L65
|
bhi .L65
|
||||||
ldr r1, [sp, #12]
|
ldr r1, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r1
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -368,33 +365,33 @@ LzmaDecode:
|
|||||||
bcs .L72
|
bcs .L72
|
||||||
rsb r3, r1, #2048
|
rsb r3, r1, #2048
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
ldr r2, [sp, #48]
|
ldr r2, [sp, #36]
|
||||||
cmp r2, #0
|
cmp r2, #0
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
beq .L155
|
beq .L155
|
||||||
ldr r4, [sp, #28]
|
ldr r4, [sp, #16]
|
||||||
ldr r0, [sp, #32]
|
ldr r0, [sp, #20]
|
||||||
ldr ip, [sp, #96]
|
ldr ip, [sp, #88]
|
||||||
rsb r3, r4, r2
|
rsb r3, r4, r2
|
||||||
ldrb r4, [ip, r3] @ zero_extendqisi2
|
ldrb r4, [ip, r3] @ zero_extendqisi2
|
||||||
cmp r0, #6
|
cmp r0, #6
|
||||||
movgt r0, #11
|
movgt r0, #11
|
||||||
movle r0, #9
|
movle r0, #9
|
||||||
str r0, [sp, #32]
|
str r0, [sp, #20]
|
||||||
strb r4, [r2, ip]
|
strb r4, [r2, ip]
|
||||||
add r2, r2, #1
|
add r2, r2, #1
|
||||||
str r2, [sp, #48]
|
str r2, [sp, #36]
|
||||||
b .L29
|
b .L29
|
||||||
.L64:
|
.L64:
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
sub r3, r1, r0, lsr #21
|
sub r3, r1, r0, lsr #21
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
add r4, r6, #432
|
add r4, r6, #432
|
||||||
bhi .L73
|
bhi .L73
|
||||||
ldr r1, [sp, #12]
|
ldr r1, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r1
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -410,19 +407,19 @@ LzmaDecode:
|
|||||||
bcs .L75
|
bcs .L75
|
||||||
rsb r3, r1, #2048
|
rsb r3, r1, #2048
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
ldr r2, [sp, #24]
|
ldr r2, [sp, #12]
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
b .L76
|
b .L76
|
||||||
.L75:
|
.L75:
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
sub r3, r2, r0, lsr #21
|
sub r3, r2, r0, lsr #21
|
||||||
cmp lr, r9
|
cmp lr, sl
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
add r4, r6, #456
|
add r4, r6, #456
|
||||||
bhi .L77
|
bhi .L77
|
||||||
ldr r2, [sp, #12]
|
ldr r2, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r2
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -438,39 +435,38 @@ LzmaDecode:
|
|||||||
bcs .L79
|
bcs .L79
|
||||||
rsb r3, r1, #2048
|
rsb r3, r1, #2048
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
ldr r2, [sp, #20]
|
ldr r2, [sp, #8]
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
b .L80
|
b .L80
|
||||||
.L79:
|
.L79:
|
||||||
sub r3, r2, r0, lsr #21
|
sub r3, r2, r0, lsr #21
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
add r2, sp, #16
|
ldmib sp, {r2, r3} @ phole ldm
|
||||||
ldmia r2, {r2, r3} @ phole ldm
|
str r3, [sp, #4]
|
||||||
str r3, [sp, #16]
|
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
.L80:
|
.L80:
|
||||||
ldr r4, [sp, #24]
|
ldr r4, [sp, #12]
|
||||||
str r4, [sp, #20]
|
str r4, [sp, #8]
|
||||||
.L76:
|
.L76:
|
||||||
ldr ip, [sp, #28]
|
ldr ip, [sp, #16]
|
||||||
str r2, [sp, #28]
|
str r2, [sp, #16]
|
||||||
str ip, [sp, #24]
|
str ip, [sp, #12]
|
||||||
.L72:
|
.L72:
|
||||||
ldr r1, [sp, #32]
|
ldr r1, [sp, #20]
|
||||||
ldr r0, [sp, #52]
|
ldr r0, [sp, #40]
|
||||||
cmp r1, #6
|
cmp r1, #6
|
||||||
movgt r1, #11
|
movgt r1, #11
|
||||||
movle r1, #8
|
movle r1, #8
|
||||||
add r4, r0, #2656
|
add r4, r0, #2656
|
||||||
str r1, [sp, #32]
|
str r1, [sp, #20]
|
||||||
add r4, r4, #8
|
add r4, r4, #8
|
||||||
.L61:
|
.L61:
|
||||||
mvn r5, #-16777216
|
mvn r5, #-16777216
|
||||||
cmp lr, r5
|
cmp lr, r5
|
||||||
bhi .L83
|
bhi .L83
|
||||||
ldr r2, [sp, #12]
|
ldr r2, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r2
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -484,14 +480,13 @@ LzmaDecode:
|
|||||||
mul ip, r0, r3
|
mul ip, r0, r3
|
||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
bcs .L85
|
bcs .L85
|
||||||
add r2, r4, fp, asl #4
|
add r2, r4, r9, asl #4
|
||||||
rsb r3, r0, #2048
|
rsb r3, r0, #2048
|
||||||
add r3, r1, r3, asr #5
|
add r3, r1, r3, asr #5
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
add r5, r2, #4
|
add r5, r2, #4
|
||||||
mov ip, #3
|
mov sl, #0
|
||||||
mov r9, #0
|
mov fp, #3
|
||||||
str ip, [sp, #4]
|
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
b .L86
|
b .L86
|
||||||
.L85:
|
.L85:
|
||||||
@@ -501,8 +496,8 @@ LzmaDecode:
|
|||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
strh r3, [r4, #0] @ movhi
|
strh r3, [r4, #0] @ movhi
|
||||||
bhi .L87
|
bhi .L87
|
||||||
ldr r0, [sp, #12]
|
ldr r3, [sp, #0]
|
||||||
cmp r7, r0
|
cmp r7, r3
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
@@ -515,35 +510,33 @@ LzmaDecode:
|
|||||||
mul ip, r0, r3
|
mul ip, r0, r3
|
||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
bcs .L89
|
bcs .L89
|
||||||
add r2, r4, fp, asl #4
|
add r2, r4, r9, asl #4
|
||||||
rsb r3, r0, #2048
|
rsb r3, r0, #2048
|
||||||
add r3, r1, r3, asr #5
|
add r3, r1, r3, asr #5
|
||||||
mov lr, ip
|
mov lr, ip
|
||||||
mov r1, #3
|
|
||||||
add r5, r2, #260
|
add r5, r2, #260
|
||||||
mov r9, #8
|
mov sl, #8
|
||||||
str r1, [sp, #4]
|
mov fp, #3
|
||||||
strh r3, [r4, #2] @ movhi
|
strh r3, [r4, #2] @ movhi
|
||||||
b .L86
|
b .L86
|
||||||
.L89:
|
.L89:
|
||||||
sub r3, r1, r2, lsr #21
|
sub r3, r1, r2, lsr #21
|
||||||
mov r2, #8
|
|
||||||
strh r3, [r4, #2] @ movhi
|
strh r3, [r4, #2] @ movhi
|
||||||
str r2, [sp, #4]
|
|
||||||
rsb r8, ip, r8
|
rsb r8, ip, r8
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
add r5, r4, #516
|
add r5, r4, #516
|
||||||
mov r9, #16
|
mov sl, #16
|
||||||
|
mov fp, #8
|
||||||
.L86:
|
.L86:
|
||||||
ldr r6, [sp, #4]
|
mov r6, fp
|
||||||
mov fp, #1
|
mov r9, #1
|
||||||
.L91:
|
.L91:
|
||||||
mov r4, fp, asl #1
|
mov r4, r9, asl #1
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
mov fp, r4
|
mov r9, r4
|
||||||
bcs .L94
|
bcs .L94
|
||||||
ldr r3, [sp, #12]
|
ldr ip, [sp, #0]
|
||||||
cmp r7, r3
|
cmp r7, ip
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -562,34 +555,33 @@ LzmaDecode:
|
|||||||
strcch r3, [r5, r4] @ movhi
|
strcch r3, [r5, r4] @ movhi
|
||||||
movcc lr, ip
|
movcc lr, ip
|
||||||
rsbcs r8, ip, r8
|
rsbcs r8, ip, r8
|
||||||
addcs fp, r4, #1
|
addcs r9, r4, #1
|
||||||
strcsh r2, [r5, r4] @ movhi
|
strcsh r2, [r5, r4] @ movhi
|
||||||
subs r6, r6, #1
|
subs r6, r6, #1
|
||||||
bne .L91
|
bne .L91
|
||||||
ldr r4, [sp, #4]
|
ldr r0, [sp, #20]
|
||||||
ldr ip, [sp, #32]
|
|
||||||
mov r2, #1
|
mov r2, #1
|
||||||
sub fp, fp, r2, asl r4
|
sub r9, r9, r2, asl fp
|
||||||
cmp ip, #3
|
cmp r0, #3
|
||||||
add fp, fp, r9
|
add r9, r9, sl
|
||||||
bgt .L98
|
bgt .L98
|
||||||
ldr r0, [sp, #52]
|
ldr r1, [sp, #40]
|
||||||
cmp fp, #3
|
cmp r9, #3
|
||||||
movlt r3, fp
|
movlt r3, r9
|
||||||
movge r3, #3
|
movge r3, #3
|
||||||
add ip, ip, #7
|
add r0, r0, #7
|
||||||
add r3, r0, r3, asl #7
|
add r3, r1, r3, asl #7
|
||||||
str ip, [sp, #32]
|
str r0, [sp, #20]
|
||||||
add r4, r3, #864
|
add r4, r3, #864
|
||||||
mov r6, r2
|
mov r6, r2
|
||||||
mov r9, #6
|
mov sl, #6
|
||||||
.L99:
|
.L99:
|
||||||
mov r5, r6, asl #1
|
mov r5, r6, asl #1
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
mov r6, r5
|
mov r6, r5
|
||||||
bcs .L102
|
bcs .L102
|
||||||
ldr r1, [sp, #12]
|
ldr r2, [sp, #0]
|
||||||
cmp r7, r1
|
cmp r7, r2
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -610,24 +602,24 @@ LzmaDecode:
|
|||||||
rsbcs r8, ip, r8
|
rsbcs r8, ip, r8
|
||||||
addcs r6, r5, #1
|
addcs r6, r5, #1
|
||||||
strcsh r2, [r4, r5] @ movhi
|
strcsh r2, [r4, r5] @ movhi
|
||||||
subs r9, r9, #1
|
subs sl, sl, #1
|
||||||
bne .L99
|
bne .L99
|
||||||
sub r6, r6, #64
|
sub r6, r6, #64
|
||||||
cmp r6, #3
|
cmp r6, #3
|
||||||
strle r6, [sp, #28]
|
strle r6, [sp, #16]
|
||||||
ble .L122
|
ble .L122
|
||||||
and r3, r6, #1
|
and r3, r6, #1
|
||||||
mov r2, r6, asr #1
|
mov r2, r6, asr #1
|
||||||
cmp r6, #13
|
cmp r6, #13
|
||||||
orr r3, r3, #2
|
orr r3, r3, #2
|
||||||
sub r5, r2, #1
|
sub r5, r2, #1
|
||||||
str r3, [sp, #28]
|
str r3, [sp, #16]
|
||||||
subgt r5, r2, #5
|
subgt r5, r2, #5
|
||||||
bgt .L109
|
bgt .L109
|
||||||
ldr r2, [sp, #52]
|
ldr r4, [sp, #40]
|
||||||
mov r3, r3, asl r5
|
mov r3, r3, asl r5
|
||||||
str r3, [sp, #28]
|
str r3, [sp, #16]
|
||||||
add r3, r2, r3, asl #1
|
add r3, r4, r3, asl #1
|
||||||
sub r3, r3, r6, asl #1
|
sub r3, r3, r6, asl #1
|
||||||
add r4, r3, #1360
|
add r4, r3, #1360
|
||||||
add r4, r4, #14
|
add r4, r4, #14
|
||||||
@@ -635,41 +627,40 @@ LzmaDecode:
|
|||||||
.L109:
|
.L109:
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
bcs .L112
|
bcs .L112
|
||||||
ldr r3, [sp, #12]
|
ldr ip, [sp, #0]
|
||||||
cmp r7, r3
|
cmp r7, ip
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
orr r8, r3, r8, asl #8
|
orr r8, r3, r8, asl #8
|
||||||
.L112:
|
.L112:
|
||||||
ldr r4, [sp, #28]
|
ldr r0, [sp, #16]
|
||||||
mov lr, lr, lsr #1
|
mov lr, lr, lsr #1
|
||||||
cmp r8, lr
|
cmp r8, lr
|
||||||
mov r4, r4, asl #1
|
mov r0, r0, asl #1
|
||||||
str r4, [sp, #28]
|
str r0, [sp, #16]
|
||||||
orrcs r4, r4, #1
|
orrcs r0, r0, #1
|
||||||
rsbcs r8, lr, r8
|
rsbcs r8, lr, r8
|
||||||
strcs r4, [sp, #28]
|
strcs r0, [sp, #16]
|
||||||
subs r5, r5, #1
|
subs r5, r5, #1
|
||||||
bne .L109
|
bne .L109
|
||||||
ldr r0, [sp, #28]
|
ldr r2, [sp, #16]
|
||||||
ldr ip, [sp, #52]
|
ldr r1, [sp, #40]
|
||||||
mov r0, r0, asl #4
|
mov r2, r2, asl #4
|
||||||
add r4, ip, #1600
|
add r4, r1, #1600
|
||||||
str r0, [sp, #28]
|
str r2, [sp, #16]
|
||||||
add r4, r4, #4
|
add r4, r4, #4
|
||||||
mov r5, #4
|
mov r5, #4
|
||||||
.L108:
|
.L108:
|
||||||
mov r9, #1
|
mov sl, #1
|
||||||
str r9, [sp, #0]
|
mov fp, sl
|
||||||
.L115:
|
.L115:
|
||||||
ldr r1, [sp, #0]
|
mov r6, fp, asl #1
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
mov r6, r1, asl #1
|
mov fp, r6
|
||||||
str r6, [sp, #0]
|
|
||||||
bcs .L118
|
bcs .L118
|
||||||
ldr r2, [sp, #12]
|
ldr r3, [sp, #0]
|
||||||
cmp r7, r2
|
cmp r7, r3
|
||||||
mov lr, lr, asl #8
|
mov lr, lr, asl #8
|
||||||
beq .L155
|
beq .L155
|
||||||
ldrb r3, [r7], #1 @ zero_extendqisi2
|
ldrb r3, [r7], #1 @ zero_extendqisi2
|
||||||
@@ -683,41 +674,40 @@ LzmaDecode:
|
|||||||
cmp r8, ip
|
cmp r8, ip
|
||||||
rsb lr, ip, lr
|
rsb lr, ip, lr
|
||||||
rsbcs r8, ip, r8
|
rsbcs r8, ip, r8
|
||||||
ldrcs ip, [sp, #28]
|
ldrcs ip, [sp, #16]
|
||||||
rsb r3, r3, #2048
|
rsb r3, r3, #2048
|
||||||
|
orrcs ip, ip, sl
|
||||||
add r3, r2, r3, asr #5
|
add r3, r2, r3, asr #5
|
||||||
orrcs ip, ip, r9
|
|
||||||
addcs r3, r6, #1
|
|
||||||
sub r2, r2, r0, lsr #21
|
sub r2, r2, r0, lsr #21
|
||||||
movcc lr, ip
|
movcc lr, ip
|
||||||
strcch r3, [r4, r6] @ movhi
|
strcch r3, [r4, r6] @ movhi
|
||||||
strcs r3, [sp, #0]
|
addcs fp, r6, #1
|
||||||
strcsh r2, [r4, r6] @ movhi
|
strcsh r2, [r4, r6] @ movhi
|
||||||
strcs ip, [sp, #28]
|
strcs ip, [sp, #16]
|
||||||
subs r5, r5, #1
|
subs r5, r5, #1
|
||||||
mov r9, r9, asl #1
|
mov sl, sl, asl #1
|
||||||
bne .L115
|
bne .L115
|
||||||
.L122:
|
.L122:
|
||||||
ldr r0, [sp, #28]
|
ldr r0, [sp, #16]
|
||||||
adds r0, r0, #1
|
adds r0, r0, #1
|
||||||
str r0, [sp, #28]
|
str r0, [sp, #16]
|
||||||
beq .L30
|
beq .L30
|
||||||
.L98:
|
.L98:
|
||||||
ldr r1, [sp, #28]
|
ldr r1, [sp, #16]
|
||||||
ldr r2, [sp, #48]
|
ldr r2, [sp, #36]
|
||||||
cmp r1, r2
|
cmp r1, r2
|
||||||
add fp, fp, #2
|
add r9, r9, #2
|
||||||
bhi .L155
|
bhi .L155
|
||||||
.L125:
|
.L125:
|
||||||
ldr r4, [sp, #48]
|
ldr r4, [sp, #36]
|
||||||
ldr ip, [sp, #28]
|
ldr ip, [sp, #16]
|
||||||
ldr r0, [sp, #96]
|
ldr r0, [sp, #88]
|
||||||
rsb r3, ip, r4
|
rsb r3, ip, r4
|
||||||
ldrb r4, [r0, r3] @ zero_extendqisi2
|
ldrb r4, [r0, r3] @ zero_extendqisi2
|
||||||
ldr r1, [sp, #48]
|
ldr r1, [sp, #36]
|
||||||
strb r4, [r1, r0]
|
strb r4, [r1, r0]
|
||||||
subs fp, fp, #1
|
subs r9, r9, #1
|
||||||
ldr r2, [sp, #100]
|
ldr r2, [sp, #92]
|
||||||
moveq r3, #0
|
moveq r3, #0
|
||||||
movne r3, #1
|
movne r3, #1
|
||||||
add r1, r1, #1
|
add r1, r1, #1
|
||||||
@@ -725,17 +715,17 @@ LzmaDecode:
|
|||||||
movcs r3, #0
|
movcs r3, #0
|
||||||
andcc r3, r3, #1
|
andcc r3, r3, #1
|
||||||
cmp r3, #0
|
cmp r3, #0
|
||||||
str r1, [sp, #48]
|
str r1, [sp, #36]
|
||||||
bne .L125
|
bne .L125
|
||||||
.L29:
|
.L29:
|
||||||
ldr r3, [sp, #48]
|
ldr r3, [sp, #36]
|
||||||
ldr ip, [sp, #100]
|
ldr ip, [sp, #92]
|
||||||
cmp r3, ip
|
cmp r3, ip
|
||||||
b .L158
|
b .L158
|
||||||
.L30:
|
.L30:
|
||||||
cmp lr, #16777216
|
cmp lr, #16777216
|
||||||
bcs .L129
|
bcs .L129
|
||||||
ldr lr, [sp, #12]
|
ldr lr, [sp, #0]
|
||||||
cmp r7, lr
|
cmp r7, lr
|
||||||
addne r7, r7, #1
|
addne r7, r7, #1
|
||||||
bne .L129
|
bne .L129
|
||||||
@@ -743,16 +733,16 @@ LzmaDecode:
|
|||||||
mov r0, #1
|
mov r0, #1
|
||||||
b .L19
|
b .L19
|
||||||
.L129:
|
.L129:
|
||||||
ldr r0, [sp, #60]
|
ldr r0, [sp, #48]
|
||||||
ldr r1, [sp, #56]
|
ldr r1, [sp, #44]
|
||||||
rsb r3, r0, r7
|
rsb r3, r0, r7
|
||||||
str r3, [r1, #0]
|
str r3, [r1, #0]
|
||||||
ldr r2, [sp, #104]
|
ldr r2, [sp, #96]
|
||||||
ldr r3, [sp, #48]
|
ldr r3, [sp, #36]
|
||||||
str r3, [r2, #0]
|
str r3, [r2, #0]
|
||||||
mov r0, #0
|
mov r0, #0
|
||||||
.L19:
|
.L19:
|
||||||
add sp, sp, #64
|
add sp, sp, #52
|
||||||
ldmfd sp!, {r4, r5, r6, r7, r8, r9, fp, pc}
|
ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
|
||||||
.size LzmaDecode, .-LzmaDecode
|
.size LzmaDecode, .-LzmaDecode
|
||||||
.ident "GCC: (GNU) 3.4.5"
|
.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
|
lzma_d_c%.S : tc_bfdname = elf32-littlearm
|
||||||
|
|
||||||
tc.arm-lzma.gcc = $(tc.arm-linux.elf.gcc)
|
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 += -Os
|
||||||
tc.arm-lzma.gcc += -ffunction-sections
|
tc.arm-lzma.gcc += -ffunction-sections
|
||||||
tc.arm-lzma.gcc += -I$(UPX_LZMADIR)
|
tc.arm-lzma.gcc += -I$(UPX_LZMADIR)
|
||||||
tc.arm-lzma.gcc += -I$(top_srcdir)/src
|
tc.arm-lzma.gcc += -I$(top_srcdir)/src
|
||||||
|
|
||||||
lzma_d_c%.S : lzma_d_c.c
|
lzma_d_c%.S : lzma_d_c.c
|
||||||
$(call tc,gcc) $(PP_FLAGS) -c $< -o tmp/$T.o
|
$(call tc,gcc) $(PP_FLAGS) -S $< -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 $@
|
|
||||||
|
|
||||||
lzma_d_cf.% : PP_FLAGS = -DFAST
|
lzma_d_cf.% : PP_FLAGS = -DFAST
|
||||||
lzma_d_cs.% : PP_FLAGS = -DSMALL
|
lzma_d_cs.% : PP_FLAGS = -DSMALL
|
||||||
|
|||||||
+1104
-119
File diff suppressed because it is too large
Load Diff
+1104
-119
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
|
// r0=src0, r1=slen, r2=dst0, r3=addr dstl
|
||||||
|
|
||||||
parb .req r3
|
parb .req r3
|
||||||
@@ -371,20 +371,20 @@ section LZMA_0
|
|||||||
cmp sp, para
|
cmp sp, para
|
||||||
bne .Lclearstack
|
bne .Lclearstack
|
||||||
|
|
||||||
stmfd sp!, {r2, parb, para} // &outSizeProcessed, outSize, out
|
stmfd sp!, {r2, parb, para} // out, outSize, &outSizeProcessed
|
||||||
add r3, para, #4 // &inSizeProcessed
|
add r3, para, #4 // &inSizeProcessed
|
||||||
mov r2, parc // inSize
|
mov r2, parc // inSize
|
||||||
add r1, r0, #2 // in
|
add r1, r0, #2 // in
|
||||||
add r0, para, #8 // &CLzmaDecoderState
|
add r0, para, #8 // &CLzmaDecoderState
|
||||||
str pard, [r0] // lc, lp, pb, dummy
|
str pard, [r0] // lc, lp, pb, dummy
|
||||||
bl LZMA_DECODE
|
bl LZMA_DECODE
|
||||||
|
mov sp, r7
|
||||||
b .LLZMA_end
|
b .LLZMA_end
|
||||||
|
|
||||||
.LzmaParams:
|
.LzmaParams:
|
||||||
.long UPXb, UPXa, UPXc, UPXd
|
.long UPXb, UPXa, UPXc, UPXd
|
||||||
|
|
||||||
.LLZMA_end:
|
.LLZMA_end:
|
||||||
mov sp, r7
|
|
||||||
|
|
||||||
section LZMA_DECODE
|
section LZMA_DECODE
|
||||||
|
|
||||||
|
|||||||
@@ -281,6 +281,8 @@ section ProcessEnd
|
|||||||
|
|
||||||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||||||
|
|
||||||
|
#include "include/header2.ash"
|
||||||
|
|
||||||
#define PURE_THUMB 1
|
#define PURE_THUMB 1
|
||||||
|
|
||||||
section .ucl_nrv2b_decompress_8
|
section .ucl_nrv2b_decompress_8
|
||||||
@@ -298,7 +300,46 @@ section .ucl_nrv2e_decompress_8
|
|||||||
section Call2E
|
section Call2E
|
||||||
bl .thumb_nrv2e_d8
|
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"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user