1
0
mirror of https://github.com/upx/upx synced 2025-09-28 19:06:07 +08:00
This commit is contained in:
László Molnár 2006-07-24 11:06:06 +02:00
commit cf930d0dde
4 changed files with 2084 additions and 2115 deletions

File diff suppressed because it is too large Load Diff

View File

@ -27,7 +27,11 @@ 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
# -fPIC not needed: no globals, no string constants, no &func.
# Omitting -fPIC enables general use of r10.
tc.arm-lzma.gcc += -march=armv4
tc.arm-lzma.gcc += -Os
tc.arm-lzma.gcc += -ffunction-sections
tc.arm-lzma.gcc += -I$(UPX_LZMADIR)

View File

@ -1,18 +1,18 @@
@ args = 12, pretend = 0, frame = 52
@ args = 12, pretend = 0, frame = 48
@ frame_needed = 0, uses_anonymous_args = 0
stmfd sp!, {r4, r5, r6, r7, r8, r9, fp, lr}
sub sp, sp, #52
stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
sub sp, sp, #48
str r3, [sp, #0]
ldrb r3, [r0, #0] @ zero_extendqisi2
ldrb r5, [r0, #2] @ zero_extendqisi2
ldrb lr, [r0, #1] @ zero_extendqisi2
ldr ip, [sp, #0]
str r3, [sp, #24]
str r3, [sp, #20]
ldr r3, [sp, #92]
mov r4, #0
str r4, [ip, #0]
str r4, [r3, #0]
ldr ip, [sp, #24]
ldr ip, [sp, #20]
ldrb r3, [r0, #1] @ zero_extendqisi2
add r3, ip, r3
mov ip, #768
@ -26,8 +26,8 @@
add r0, r0, #4
add ip, ip, #6
str r1, [sp, #4]
str r3, [sp, #16]
str lr, [sp, #20]
str r3, [sp, #12]
str lr, [sp, #16]
str r0, [sp, #8]
b f.L14
f.L15:
@ -41,12 +41,12 @@ f.L14:
bne f.L15
ldr r3, [sp, #4]
mov r6, #0
add fp, r3, r2
add r9, r3, r2
mov lr, r3
mov r2, r6
f.L17:
ldr r5, [sp, #4]
rsb r3, r5, fp
rsb r3, r5, r9
cmp r2, r3
add lr, lr, #1
beq f.L18
@ -55,52 +55,48 @@ f.L17:
cmp r2, #5
orr r6, r3, r6, asl #8
bne f.L17
mov r0, #0
mov fp, #0
mov ip, #1
str r0, [sp, #12]
mov r7, r0
str r0, [sp, #28]
mov r7, fp
mvn r0, #0
str ip, [sp, #48]
str ip, [sp, #44]
str fp, [sp, #24]
str ip, [sp, #28]
str ip, [sp, #32]
str ip, [sp, #36]
str ip, [sp, #40]
b f.L172
f.L22:
mvn r8, #-16777216
cmp r0, r8
bhi f.L23
cmp lr, fp
cmp lr, r9
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r0, r0, asl #8
orr r6, r3, r6, asl #8
f.L23:
add r1, sp, #12
ldmia r1, {r1, r2} @ phole ldm
ldr r3, [sp, #28]
and r9, r1, r2
mov r1, r3, asl #4
add r3, r9, r1
ldr r2, [sp, #8]
ldr r1, [sp, #12]
ldr r2, [sp, #24]
and sl, fp, r1
mov r1, r2, asl #4
add r3, sl, r1
mov r5, r3, asl #1
ldrh ip, [r2, r5]
ldr r3, [sp, #8]
ldrh ip, [r3, r5]
mov r3, r0, lsr #11
mul r4, ip, r3
cmp r6, r4
bcs f.L26
ldr r0, [sp, #24]
ldr r0, [sp, #20]
rsb r3, r0, #8
mov r3, r7, asr r3
ldr r1, [sp, #12]
ldr r0, [sp, #20]
and r2, r1, r0
ldr r1, [sp, #24]
add r3, r3, r2, asl r1
ldr r1, [sp, #16]
and r2, fp, r1
add r3, r3, r2, asl r0
ldr r0, [sp, #8]
mov r2, #1536
mla r2, r3, r2, r0
ldr r1, [sp, #28]
ldr r1, [sp, #24]
rsb r3, ip, #2048
cmp r1, #6
add r3, ip, r3, asr #5
@ -110,24 +106,23 @@ f.L23:
movle r0, r4
movle r1, #1
ble f.L171
ldr r2, [sp, #12]
ldr r5, [sp, #48]
ldr ip, [sp, #84]
rsb r3, r5, r2
ldrb r7, [ip, r3] @ zero_extendqisi2
ldr r2, [sp, #44]
ldr r5, [sp, #84]
rsb r3, r2, fp
ldrb r7, [r5, r3] @ zero_extendqisi2
mov r0, r4
mov r1, #1
f.L31:
mov r7, r7, asl #1
and r5, r7, #256
mov r9, r1, asl #1
mov sl, r1, asl #1
add r3, r8, r5, asl #1
add r3, r3, r9
add r3, r3, sl
cmp r0, #16777216
add r4, r3, #512
add ip, r1, #1
bcs f.L32
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -145,7 +140,7 @@ f.L32:
cmp r5, #0
mov r0, ip
strh r2, [r4, #0] @ movhi
mov r1, r9
mov r1, sl
beq f.L39
mov r0, ip
b f.L171
@ -163,7 +158,7 @@ f.L40:
cmp r0, #16777216
add r1, r1, r3
bcs f.L41
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -188,24 +183,22 @@ f.L171:
add r3, r1, #1
ble f.L40
f.L46:
ldr ip, [sp, #24]
and r7, r1, #255
ldr r1, [sp, #28]
ldr r3, [sp, #12]
ldr r2, [sp, #84]
cmp r1, #3
strb r7, [r2, r3]
movle r5, #0
add r3, r3, #1
str r3, [sp, #12]
strle r5, [sp, #28]
cmp ip, #3
ldr r1, [sp, #84]
movle r2, #0
strb r7, [r1, fp]
add fp, fp, #1
strle r2, [sp, #24]
ble f.L172
ldr ip, [sp, #28]
cmp ip, #9
ldrgt r1, [sp, #28]
suble ip, ip, #3
subgt r1, r1, #6
strle ip, [sp, #28]
strgt r1, [sp, #28]
ldr r3, [sp, #24]
cmp r3, #9
ldrgt r5, [sp, #24]
suble r3, r3, #3
subgt r5, r5, #6
strle r3, [sp, #24]
strgt r5, [sp, #24]
b f.L172
f.L26:
sub r3, ip, ip, lsr #5
@ -215,14 +208,14 @@ f.L26:
strh r3, [ip, r5] @ movhi
rsb r6, r4, r6
bhi f.L51
cmp lr, fp
cmp lr, r9
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r2, r2, asl #8
orr r6, r3, r6, asl #8
f.L51:
ldr r0, [sp, #8]
ldr r3, [sp, #28]
ldr r3, [sp, #24]
add r7, r0, r3, asl #1
add r0, r7, #384
ldrh ip, [r0, #0]
@ -230,23 +223,23 @@ f.L51:
mul r4, ip, r3
cmp r6, r4
bcs f.L54
ldr r2, [sp, #28]
ldr r2, [sp, #24]
ldr r5, [sp, #8]
cmp r2, #6
rsb r3, ip, #2048
add r1, r5, #1632
movgt r2, #3
ldr r5, [sp, #36]
ldr r5, [sp, #32]
movle r2, #0
add r3, ip, r3, asr #5
str r2, [sp, #28]
ldr ip, [sp, #32]
ldr r2, [sp, #48]
str r5, [sp, #40]
str r2, [sp, #24]
ldr ip, [sp, #28]
ldr r2, [sp, #44]
str r5, [sp, #36]
add r1, r1, #4
mov r5, r4
str ip, [sp, #36]
str r2, [sp, #32]
str ip, [sp, #32]
str r2, [sp, #28]
strh r3, [r0, #0] @ movhi
b f.L59
f.L54:
@ -256,7 +249,7 @@ f.L54:
strh r3, [r0, #0] @ movhi
rsb r6, r4, r6
bhi f.L60
cmp lr, fp
cmp lr, r9
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r2, r2, asl #8
@ -273,7 +266,7 @@ f.L60:
cmp r4, r8
strh r3, [r5, #0] @ movhi
bhi f.L67
cmp lr, fp
cmp lr, r9
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r4, r4, asl #8
@ -281,7 +274,7 @@ f.L60:
f.L67:
ldr r5, [sp, #8]
add r3, r5, r1, asl #1
add r3, r3, r9, asl #1
add r3, r3, sl, asl #1
add r1, r3, #480
ldrh ip, [r1, #0]
mov r3, r4, lsr #11
@ -293,23 +286,21 @@ f.L67:
bcs f.L169
rsb r3, ip, #2048
add r3, ip, r3, asr #5
ldr ip, [sp, #12]
cmp ip, #0
cmp fp, #0
strh r3, [r1, #0] @ movhi
beq f.L18
ldr r0, [sp, #48]
ldr r1, [sp, #84]
rsb r3, r0, ip
ldrb r7, [r1, r3] @ zero_extendqisi2
ldr r3, [sp, #28]
cmp r3, #6
movgt r3, #11
movle r3, #9
str r3, [sp, #28]
ldr ip, [sp, #44]
ldr r1, [sp, #24]
ldr r0, [sp, #84]
rsb r3, ip, fp
ldrb r7, [r0, r3] @ zero_extendqisi2
cmp r1, #6
movgt r1, #11
movle r1, #9
str r1, [sp, #24]
strb r7, [r0, fp]
mov r0, r2
strb r7, [r1, ip]
add ip, ip, #1
str ip, [sp, #12]
add fp, fp, #1
b f.L172
f.L63:
rsb r2, r4, r2
@ -318,7 +309,7 @@ f.L63:
strh r3, [r5, #0] @ movhi
rsb r6, r4, r6
bhi f.L76
cmp lr, fp
cmp lr, r9
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r2, r2, asl #8
@ -330,14 +321,14 @@ f.L76:
mul r4, ip, r3
cmp r6, r4
bcs f.L79
ldr r5, [sp, #48]
ldr r5, [sp, #44]
rsb r3, ip, #2048
ldr r2, [sp, #32]
ldr r2, [sp, #28]
add r3, ip, r3, asr #5
str r5, [sp, #32]
str r5, [sp, #28]
mov r5, r4
f.L170:
str r2, [sp, #48]
str r2, [sp, #44]
f.L169:
strh r3, [r1, #0] @ movhi
b f.L75
@ -348,7 +339,7 @@ f.L79:
strh r3, [r1, #0] @ movhi
rsb r6, r4, r6
bhi f.L81
cmp lr, fp
cmp lr, r9
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r2, r2, asl #8
@ -361,41 +352,41 @@ f.L81:
cmp r6, r4
bcs f.L84
rsb r3, ip, #2048
ldr r2, [sp, #36]
ldr r2, [sp, #32]
add r3, ip, r3, asr #5
ldr r0, [sp, #48]
ldr ip, [sp, #32]
ldr r0, [sp, #44]
ldr ip, [sp, #28]
mov r5, r4
str ip, [sp, #36]
str r0, [sp, #32]
str ip, [sp, #32]
str r0, [sp, #28]
b f.L170
f.L84:
sub r3, ip, ip, lsr #5
strh r3, [r1, #0] @ movhi
ldr ip, [sp, #48]
add r1, sp, #36
ldr ip, [sp, #44]
add r1, sp, #32
ldmia r1, {r1, r3} @ phole ldm
rsb r5, r4, r2
ldr r2, [sp, #32]
str r1, [sp, #40]
str r2, [sp, #36]
str ip, [sp, #32]
str r3, [sp, #48]
ldr r2, [sp, #28]
str r1, [sp, #36]
str r2, [sp, #32]
str ip, [sp, #28]
str r3, [sp, #44]
rsb r6, r4, r6
f.L75:
ldr r2, [sp, #28]
ldr r2, [sp, #24]
ldr r0, [sp, #8]
cmp r2, #6
movgt r2, #11
movle r2, #8
add r1, r0, #2656
str r2, [sp, #28]
str r2, [sp, #24]
add r1, r1, #8
f.L59:
mvn r7, #-16777216
cmp r5, r7
bhi f.L89
cmp lr, fp
cmp lr, r9
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r5, r5, asl #8
@ -406,12 +397,12 @@ f.L89:
mul r4, ip, r3
cmp r6, r4
bcs f.L92
add r2, r1, r9, asl #4
add r2, r1, sl, asl #4
rsb r3, ip, #2048
add r3, ip, r3, asr #5
add r5, r2, #4
mov r0, r4
mov r9, #3
mov sl, #3
mov r8, #0
strh r3, [r1, #0] @ movhi
b f.L94
@ -422,7 +413,7 @@ f.L92:
rsb r6, r4, r6
strh r3, [r1, #0] @ movhi
bhi f.L95
cmp lr, fp
cmp lr, r9
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r2, r2, asl #8
@ -433,12 +424,12 @@ f.L95:
mul r4, ip, r3
cmp r6, r4
bcs f.L98
add r2, r1, r9, asl #4
add r2, r1, sl, asl #4
rsb r3, ip, #2048
add r3, ip, r3, asr #5
add r5, r2, #260
mov r0, r4
mov r9, #3
mov sl, #3
mov r8, #8
strh r3, [r1, #2] @ movhi
b f.L94
@ -448,10 +439,10 @@ f.L98:
rsb r6, r4, r6
rsb r0, r4, r2
add r5, r1, #516
mov r9, #8
mov sl, #8
mov r8, #16
f.L94:
mov r7, r9
mov r7, sl
mov r1, #1
f.L100:
add r3, r1, #1
@ -459,7 +450,7 @@ f.L100:
mov r4, r1, asl #1
add r1, r1, r3
bcs f.L101
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -481,11 +472,11 @@ f.L101:
subs r7, r7, #1
bne f.L100
mov r2, #1
sub r3, r1, r2, asl r9
ldr r5, [sp, #28]
sub r3, r1, r2, asl sl
ldr r5, [sp, #24]
add r3, r3, r8
cmp r5, #3
str r3, [sp, #44]
str r3, [sp, #40]
bgt f.L108
ldr ip, [sp, #8]
cmp r3, #3
@ -500,7 +491,7 @@ f.L110:
mov r4, r7, asl #1
add r7, r7, r3
bcs f.L111
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -544,7 +535,7 @@ f.L123:
cmp r0, #16777216
add r2, r2, #1
bcs f.L124
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -563,14 +554,14 @@ f.L124:
mov r5, ip, asl #4
mov r7, #4
f.L122:
mov r9, #1
mov r8, r9
mov sl, #1
mov r8, sl
f.L130:
cmp r0, #16777216
mov r1, r8, asl #1
add ip, r8, #1
bcs f.L131
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq f.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -584,7 +575,7 @@ f.L131:
cmp r6, ip
add r2, r3, r2, asr #5
sub r3, r3, r3, lsr #5
orrcs r5, r5, r9
orrcs r5, r5, sl
movcc r8, r1
movcc r0, ip
strcch r2, [r4, r1] @ movhi
@ -592,35 +583,32 @@ f.L131:
rsbcs r6, ip, r6
rsbcs r0, ip, r0
subs r7, r7, #1
mov r9, r9, asl #1
mov sl, sl, asl #1
bne f.L130
f.L137:
adds r5, r5, #1
str r5, [sp, #48]
str r5, [sp, #44]
beq f.L139
ldr r3, [sp, #28]
ldr r3, [sp, #24]
add r3, r3, #7
str r3, [sp, #28]
str r3, [sp, #24]
f.L108:
ldr r5, [sp, #48]
ldr ip, [sp, #12]
cmp r5, ip
ldr r5, [sp, #44]
cmp r5, fp
bhi f.L18
rsb r3, r5, ip
ldr r1, [sp, #44]
ldr r5, [sp, #84]
add r2, r1, #2
add r4, r5, r3
add ip, r5, ip
ldr ip, [sp, #40]
ldr r1, [sp, #84]
rsb r3, r5, fp
add r2, ip, #2
add r4, r1, r3
add ip, r1, fp
f.L142:
ldr r1, [sp, #12]
add r1, r1, #1
subs r2, r2, #1
str r1, [sp, #12]
ldr r5, [sp, #88]
moveq r3, #0
movne r3, #1
cmp r1, r5
add fp, fp, #1
cmp fp, r5
movcs r3, #0
andcc r3, r3, #1
ldrb r7, [r4], #1 @ zero_extendqisi2
@ -628,28 +616,26 @@ f.L142:
strb r7, [ip], #1
bne f.L142
f.L172:
ldr ip, [sp, #12]
ldr r1, [sp, #88]
cmp ip, r1
ldr ip, [sp, #88]
cmp fp, ip
bcc f.L22
f.L139:
cmp r0, #16777216
bcs f.L143
cmp lr, fp
cmp lr, r9
beq f.L18
add lr, lr, #1
f.L143:
ldr r2, [sp, #4]
ldr r5, [sp, #0]
ldr r1, [sp, #12]
ldr ip, [sp, #92]
rsb r3, r2, lr
ldr r0, [sp, #4]
ldr r1, [sp, #0]
ldr r2, [sp, #92]
rsb r3, r0, lr
mov r0, #0
str r3, [r5, #0]
str r1, [ip, #0]
str r3, [r1, #0]
str fp, [r2, #0]
b f.L146
f.L18:
mov r0, #1
f.L146:
add sp, sp, #52
ldmfd sp!, {r4, r5, r6, r7, r8, r9, fp, pc}
add sp, sp, #48
ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}

View File

@ -1,18 +1,18 @@
@ args = 12, pretend = 0, frame = 52
@ args = 12, pretend = 0, frame = 48
@ frame_needed = 0, uses_anonymous_args = 0
stmfd sp!, {r4, r5, r6, r7, r8, r9, fp, lr}
sub sp, sp, #52
stmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
sub sp, sp, #48
str r3, [sp, #0]
ldrb r3, [r0, #0] @ zero_extendqisi2
ldrb r5, [r0, #2] @ zero_extendqisi2
ldrb lr, [r0, #1] @ zero_extendqisi2
ldr ip, [sp, #0]
str r3, [sp, #24]
str r3, [sp, #20]
ldr r3, [sp, #92]
mov r4, #0
str r4, [ip, #0]
str r4, [r3, #0]
ldr ip, [sp, #24]
ldr ip, [sp, #20]
ldrb r3, [r0, #1] @ zero_extendqisi2
add r3, ip, r3
mov ip, #768
@ -26,8 +26,8 @@
add r0, r0, #4
add ip, ip, #6
str r1, [sp, #4]
str r3, [sp, #16]
str lr, [sp, #20]
str r3, [sp, #12]
str lr, [sp, #16]
str r0, [sp, #8]
b s.L14
s.L15:
@ -41,12 +41,12 @@ s.L14:
bne s.L15
ldr r3, [sp, #4]
mov r6, #0
add fp, r3, r2
add r9, r3, r2
mov lr, r3
mov r2, r6
s.L17:
ldr r5, [sp, #4]
rsb r3, r5, fp
rsb r3, r5, r9
cmp r2, r3
add lr, lr, #1
beq s.L18
@ -55,52 +55,48 @@ s.L17:
cmp r2, #5
orr r6, r3, r6, asl #8
bne s.L17
mov r0, #0
mov fp, #0
mov ip, #1
str r0, [sp, #12]
mov r7, r0
str r0, [sp, #28]
mov r7, fp
mvn r0, #0
str ip, [sp, #48]
str ip, [sp, #44]
str fp, [sp, #24]
str ip, [sp, #28]
str ip, [sp, #32]
str ip, [sp, #36]
str ip, [sp, #40]
b s.L172
s.L22:
mvn r8, #-16777216
cmp r0, r8
bhi s.L23
cmp lr, fp
cmp lr, r9
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r0, r0, asl #8
orr r6, r3, r6, asl #8
s.L23:
add r1, sp, #12
ldmia r1, {r1, r2} @ phole ldm
ldr r3, [sp, #28]
and r9, r1, r2
mov r1, r3, asl #4
add r3, r9, r1
ldr r2, [sp, #8]
ldr r1, [sp, #12]
ldr r2, [sp, #24]
and sl, fp, r1
mov r1, r2, asl #4
add r3, sl, r1
mov r5, r3, asl #1
ldrh ip, [r2, r5]
ldr r3, [sp, #8]
ldrh ip, [r3, r5]
mov r3, r0, lsr #11
mul r4, ip, r3
cmp r6, r4
bcs s.L26
ldr r0, [sp, #24]
ldr r0, [sp, #20]
rsb r3, r0, #8
mov r3, r7, asr r3
ldr r1, [sp, #12]
ldr r0, [sp, #20]
and r2, r1, r0
ldr r1, [sp, #24]
add r3, r3, r2, asl r1
ldr r1, [sp, #16]
and r2, fp, r1
add r3, r3, r2, asl r0
ldr r0, [sp, #8]
mov r2, #1536
mla r2, r3, r2, r0
ldr r1, [sp, #28]
ldr r1, [sp, #24]
rsb r3, ip, #2048
cmp r1, #6
add r3, ip, r3, asr #5
@ -110,24 +106,23 @@ s.L23:
movle r0, r4
movle r1, #1
ble s.L171
ldr r2, [sp, #12]
ldr r5, [sp, #48]
ldr ip, [sp, #84]
rsb r3, r5, r2
ldrb r7, [ip, r3] @ zero_extendqisi2
ldr r2, [sp, #44]
ldr r5, [sp, #84]
rsb r3, r2, fp
ldrb r7, [r5, r3] @ zero_extendqisi2
mov r0, r4
mov r1, #1
s.L31:
mov r7, r7, asl #1
and r5, r7, #256
mov r9, r1, asl #1
mov sl, r1, asl #1
add r3, r8, r5, asl #1
add r3, r3, r9
add r3, r3, sl
cmp r0, #16777216
add r4, r3, #512
add ip, r1, #1
bcs s.L32
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -145,7 +140,7 @@ s.L32:
cmp r5, #0
mov r0, ip
strh r2, [r4, #0] @ movhi
mov r1, r9
mov r1, sl
beq s.L39
mov r0, ip
b s.L171
@ -163,7 +158,7 @@ s.L40:
cmp r0, #16777216
add r1, r1, r3
bcs s.L41
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -188,24 +183,22 @@ s.L171:
add r3, r1, #1
ble s.L40
s.L46:
ldr ip, [sp, #24]
and r7, r1, #255
ldr r1, [sp, #28]
ldr r3, [sp, #12]
ldr r2, [sp, #84]
cmp r1, #3
strb r7, [r2, r3]
movle r5, #0
add r3, r3, #1
str r3, [sp, #12]
strle r5, [sp, #28]
cmp ip, #3
ldr r1, [sp, #84]
movle r2, #0
strb r7, [r1, fp]
add fp, fp, #1
strle r2, [sp, #24]
ble s.L172
ldr ip, [sp, #28]
cmp ip, #9
ldrgt r1, [sp, #28]
suble ip, ip, #3
subgt r1, r1, #6
strle ip, [sp, #28]
strgt r1, [sp, #28]
ldr r3, [sp, #24]
cmp r3, #9
ldrgt r5, [sp, #24]
suble r3, r3, #3
subgt r5, r5, #6
strle r3, [sp, #24]
strgt r5, [sp, #24]
b s.L172
s.L26:
sub r3, ip, ip, lsr #5
@ -215,14 +208,14 @@ s.L26:
strh r3, [ip, r5] @ movhi
rsb r6, r4, r6
bhi s.L51
cmp lr, fp
cmp lr, r9
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r2, r2, asl #8
orr r6, r3, r6, asl #8
s.L51:
ldr r0, [sp, #8]
ldr r3, [sp, #28]
ldr r3, [sp, #24]
add r7, r0, r3, asl #1
add r0, r7, #384
ldrh ip, [r0, #0]
@ -230,23 +223,23 @@ s.L51:
mul r4, ip, r3
cmp r6, r4
bcs s.L54
ldr r2, [sp, #28]
ldr r2, [sp, #24]
ldr r5, [sp, #8]
cmp r2, #6
rsb r3, ip, #2048
add r1, r5, #1632
movgt r2, #3
ldr r5, [sp, #36]
ldr r5, [sp, #32]
movle r2, #0
add r3, ip, r3, asr #5
str r2, [sp, #28]
ldr ip, [sp, #32]
ldr r2, [sp, #48]
str r5, [sp, #40]
str r2, [sp, #24]
ldr ip, [sp, #28]
ldr r2, [sp, #44]
str r5, [sp, #36]
add r1, r1, #4
mov r5, r4
str ip, [sp, #36]
str r2, [sp, #32]
str ip, [sp, #32]
str r2, [sp, #28]
strh r3, [r0, #0] @ movhi
b s.L59
s.L54:
@ -256,7 +249,7 @@ s.L54:
strh r3, [r0, #0] @ movhi
rsb r6, r4, r6
bhi s.L60
cmp lr, fp
cmp lr, r9
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r2, r2, asl #8
@ -273,7 +266,7 @@ s.L60:
cmp r4, r8
strh r3, [r5, #0] @ movhi
bhi s.L67
cmp lr, fp
cmp lr, r9
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r4, r4, asl #8
@ -281,7 +274,7 @@ s.L60:
s.L67:
ldr r5, [sp, #8]
add r3, r5, r1, asl #1
add r3, r3, r9, asl #1
add r3, r3, sl, asl #1
add r1, r3, #480
ldrh ip, [r1, #0]
mov r3, r4, lsr #11
@ -293,23 +286,21 @@ s.L67:
bcs s.L169
rsb r3, ip, #2048
add r3, ip, r3, asr #5
ldr ip, [sp, #12]
cmp ip, #0
cmp fp, #0
strh r3, [r1, #0] @ movhi
beq s.L18
ldr r0, [sp, #48]
ldr r1, [sp, #84]
rsb r3, r0, ip
ldrb r7, [r1, r3] @ zero_extendqisi2
ldr r3, [sp, #28]
cmp r3, #6
movgt r3, #11
movle r3, #9
str r3, [sp, #28]
ldr ip, [sp, #44]
ldr r1, [sp, #24]
ldr r0, [sp, #84]
rsb r3, ip, fp
ldrb r7, [r0, r3] @ zero_extendqisi2
cmp r1, #6
movgt r1, #11
movle r1, #9
str r1, [sp, #24]
strb r7, [r0, fp]
mov r0, r2
strb r7, [r1, ip]
add ip, ip, #1
str ip, [sp, #12]
add fp, fp, #1
b s.L172
s.L63:
rsb r2, r4, r2
@ -318,7 +309,7 @@ s.L63:
strh r3, [r5, #0] @ movhi
rsb r6, r4, r6
bhi s.L76
cmp lr, fp
cmp lr, r9
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r2, r2, asl #8
@ -330,14 +321,14 @@ s.L76:
mul r4, ip, r3
cmp r6, r4
bcs s.L79
ldr r5, [sp, #48]
ldr r5, [sp, #44]
rsb r3, ip, #2048
ldr r2, [sp, #32]
ldr r2, [sp, #28]
add r3, ip, r3, asr #5
str r5, [sp, #32]
str r5, [sp, #28]
mov r5, r4
s.L170:
str r2, [sp, #48]
str r2, [sp, #44]
s.L169:
strh r3, [r1, #0] @ movhi
b s.L75
@ -348,7 +339,7 @@ s.L79:
strh r3, [r1, #0] @ movhi
rsb r6, r4, r6
bhi s.L81
cmp lr, fp
cmp lr, r9
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r2, r2, asl #8
@ -361,41 +352,41 @@ s.L81:
cmp r6, r4
bcs s.L84
rsb r3, ip, #2048
ldr r2, [sp, #36]
ldr r2, [sp, #32]
add r3, ip, r3, asr #5
ldr r0, [sp, #48]
ldr ip, [sp, #32]
ldr r0, [sp, #44]
ldr ip, [sp, #28]
mov r5, r4
str ip, [sp, #36]
str r0, [sp, #32]
str ip, [sp, #32]
str r0, [sp, #28]
b s.L170
s.L84:
sub r3, ip, ip, lsr #5
strh r3, [r1, #0] @ movhi
ldr ip, [sp, #48]
add r1, sp, #36
ldr ip, [sp, #44]
add r1, sp, #32
ldmia r1, {r1, r3} @ phole ldm
rsb r5, r4, r2
ldr r2, [sp, #32]
str r1, [sp, #40]
str r2, [sp, #36]
str ip, [sp, #32]
str r3, [sp, #48]
ldr r2, [sp, #28]
str r1, [sp, #36]
str r2, [sp, #32]
str ip, [sp, #28]
str r3, [sp, #44]
rsb r6, r4, r6
s.L75:
ldr r2, [sp, #28]
ldr r2, [sp, #24]
ldr r0, [sp, #8]
cmp r2, #6
movgt r2, #11
movle r2, #8
add r1, r0, #2656
str r2, [sp, #28]
str r2, [sp, #24]
add r1, r1, #8
s.L59:
mvn r7, #-16777216
cmp r5, r7
bhi s.L89
cmp lr, fp
cmp lr, r9
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r5, r5, asl #8
@ -406,12 +397,12 @@ s.L89:
mul r4, ip, r3
cmp r6, r4
bcs s.L92
add r2, r1, r9, asl #4
add r2, r1, sl, asl #4
rsb r3, ip, #2048
add r3, ip, r3, asr #5
add r5, r2, #4
mov r0, r4
mov r9, #3
mov sl, #3
mov r8, #0
strh r3, [r1, #0] @ movhi
b s.L94
@ -422,7 +413,7 @@ s.L92:
rsb r6, r4, r6
strh r3, [r1, #0] @ movhi
bhi s.L95
cmp lr, fp
cmp lr, r9
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
mov r2, r2, asl #8
@ -433,12 +424,12 @@ s.L95:
mul r4, ip, r3
cmp r6, r4
bcs s.L98
add r2, r1, r9, asl #4
add r2, r1, sl, asl #4
rsb r3, ip, #2048
add r3, ip, r3, asr #5
add r5, r2, #260
mov r0, r4
mov r9, #3
mov sl, #3
mov r8, #8
strh r3, [r1, #2] @ movhi
b s.L94
@ -448,10 +439,10 @@ s.L98:
rsb r6, r4, r6
rsb r0, r4, r2
add r5, r1, #516
mov r9, #8
mov sl, #8
mov r8, #16
s.L94:
mov r7, r9
mov r7, sl
mov r1, #1
s.L100:
add r3, r1, #1
@ -459,7 +450,7 @@ s.L100:
mov r4, r1, asl #1
add r1, r1, r3
bcs s.L101
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -481,11 +472,11 @@ s.L101:
subs r7, r7, #1
bne s.L100
mov r2, #1
sub r3, r1, r2, asl r9
ldr r5, [sp, #28]
sub r3, r1, r2, asl sl
ldr r5, [sp, #24]
add r3, r3, r8
cmp r5, #3
str r3, [sp, #44]
str r3, [sp, #40]
bgt s.L108
ldr ip, [sp, #8]
cmp r3, #3
@ -500,7 +491,7 @@ s.L110:
mov r4, r7, asl #1
add r7, r7, r3
bcs s.L111
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -544,7 +535,7 @@ s.L123:
cmp r0, #16777216
add r2, r2, #1
bcs s.L124
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -563,14 +554,14 @@ s.L124:
mov r5, ip, asl #4
mov r7, #4
s.L122:
mov r9, #1
mov r8, r9
mov sl, #1
mov r8, sl
s.L130:
cmp r0, #16777216
mov r1, r8, asl #1
add ip, r8, #1
bcs s.L131
cmp lr, fp
cmp lr, r9
mov r0, r0, asl #8
beq s.L18
ldrb r3, [lr], #1 @ zero_extendqisi2
@ -584,7 +575,7 @@ s.L131:
cmp r6, ip
add r2, r3, r2, asr #5
sub r3, r3, r3, lsr #5
orrcs r5, r5, r9
orrcs r5, r5, sl
movcc r8, r1
movcc r0, ip
strcch r2, [r4, r1] @ movhi
@ -592,35 +583,32 @@ s.L131:
rsbcs r6, ip, r6
rsbcs r0, ip, r0
subs r7, r7, #1
mov r9, r9, asl #1
mov sl, sl, asl #1
bne s.L130
s.L137:
adds r5, r5, #1
str r5, [sp, #48]
str r5, [sp, #44]
beq s.L139
ldr r3, [sp, #28]
ldr r3, [sp, #24]
add r3, r3, #7
str r3, [sp, #28]
str r3, [sp, #24]
s.L108:
ldr r5, [sp, #48]
ldr ip, [sp, #12]
cmp r5, ip
ldr r5, [sp, #44]
cmp r5, fp
bhi s.L18
rsb r3, r5, ip
ldr r1, [sp, #44]
ldr r5, [sp, #84]
add r2, r1, #2
add r4, r5, r3
add ip, r5, ip
ldr ip, [sp, #40]
ldr r1, [sp, #84]
rsb r3, r5, fp
add r2, ip, #2
add r4, r1, r3
add ip, r1, fp
s.L142:
ldr r1, [sp, #12]
add r1, r1, #1
subs r2, r2, #1
str r1, [sp, #12]
ldr r5, [sp, #88]
moveq r3, #0
movne r3, #1
cmp r1, r5
add fp, fp, #1
cmp fp, r5
movcs r3, #0
andcc r3, r3, #1
ldrb r7, [r4], #1 @ zero_extendqisi2
@ -628,28 +616,26 @@ s.L142:
strb r7, [ip], #1
bne s.L142
s.L172:
ldr ip, [sp, #12]
ldr r1, [sp, #88]
cmp ip, r1
ldr ip, [sp, #88]
cmp fp, ip
bcc s.L22
s.L139:
cmp r0, #16777216
bcs s.L143
cmp lr, fp
cmp lr, r9
beq s.L18
add lr, lr, #1
s.L143:
ldr r2, [sp, #4]
ldr r5, [sp, #0]
ldr r1, [sp, #12]
ldr ip, [sp, #92]
rsb r3, r2, lr
ldr r0, [sp, #4]
ldr r1, [sp, #0]
ldr r2, [sp, #92]
rsb r3, r0, lr
mov r0, #0
str r3, [r5, #0]
str r1, [ip, #0]
str r3, [r1, #0]
str fp, [r2, #0]
b s.L146
s.L18:
mov r0, #1
s.L146:
add sp, sp, #52
ldmfd sp!, {r4, r5, r6, r7, r8, r9, fp, pc}
add sp, sp, #48
ldmfd sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}