Normalize whitespace.
This commit is contained in:
@@ -9,7 +9,7 @@ Changes in 3.92 (XX XXX 2015):
|
|||||||
Received by UPX Team on 2015-May-08; originally reported
|
Received by UPX Team on 2015-May-08; originally reported
|
||||||
by Codenomicon to NCSC-FI on 2015-01-08.
|
by Codenomicon to NCSC-FI on 2015-01-08.
|
||||||
The vulnerabilities were discovered by Joonas Kuorilehto and
|
The vulnerabilities were discovered by Joonas Kuorilehto and
|
||||||
Antti Häyrynen from Codenomicon
|
Antti Häyrynen from Codenomicon
|
||||||
* Explicitly diagnose Go-language bad PT_LOAD; recommend hemfix.c.
|
* Explicitly diagnose Go-language bad PT_LOAD; recommend hemfix.c.
|
||||||
https://sourceforge.net/p/upx/bugs/195/ https://github.com/pwaller/goupx
|
https://sourceforge.net/p/upx/bugs/195/ https://github.com/pwaller/goupx
|
||||||
* bug fixes
|
* bug fixes
|
||||||
|
|||||||
+1
-1
@@ -355,7 +355,7 @@ class PackLinuxElf64Le : public PackLinuxElf64
|
|||||||
typedef PackLinuxElf64 super;
|
typedef PackLinuxElf64 super;
|
||||||
protected:
|
protected:
|
||||||
PackLinuxElf64Le(InputFile *f) : super(f) {
|
PackLinuxElf64Le(InputFile *f) : super(f) {
|
||||||
lg2_page=16;
|
lg2_page=16;
|
||||||
page_size=1u<<lg2_page;
|
page_size=1u<<lg2_page;
|
||||||
bele = &N_BELE_RTP::le_policy;
|
bele = &N_BELE_RTP::le_policy;
|
||||||
PackLinuxElf64help1(f);
|
PackLinuxElf64help1(f);
|
||||||
|
|||||||
+3
-3
@@ -475,7 +475,7 @@ PackMachAMD64::buildLoader(const Filter *ft)
|
|||||||
if (0) {
|
if (0) {
|
||||||
Mach_command const *ptr1 = (Mach_command const *)(1+
|
Mach_command const *ptr1 = (Mach_command const *)(1+
|
||||||
(Mach_header const *)stub_amd64_darwin_macho_upxmain_exe);
|
(Mach_header const *)stub_amd64_darwin_macho_upxmain_exe);
|
||||||
for (unsigned j = 0; j < mhdro.ncmds; ++j,
|
for (unsigned j = 0; j < mhdro.ncmds; ++j,
|
||||||
ptr1 = (Mach_command const *)(ptr1->cmdsize + (char const *)ptr1))
|
ptr1 = (Mach_command const *)(ptr1->cmdsize + (char const *)ptr1))
|
||||||
switch (ptr1->cmd) {
|
switch (ptr1->cmd) {
|
||||||
case Mach_segment_command::LC_SEGMENT_64: {
|
case Mach_segment_command::LC_SEGMENT_64: {
|
||||||
@@ -809,7 +809,7 @@ void PackMachAMD64::pack4(OutputFile *fo, Filter &ft) // append PackHeader
|
|||||||
unsigned cmdsize = mhdro.sizeofcmds - sizeof(segXHDR);
|
unsigned cmdsize = mhdro.sizeofcmds - sizeof(segXHDR);
|
||||||
unsigned const ncmds = mhdro.ncmds;
|
unsigned const ncmds = mhdro.ncmds;
|
||||||
unsigned delta = 0;
|
unsigned delta = 0;
|
||||||
for (unsigned j = 0; j < ncmds -1; ++j,
|
for (unsigned j = 0; j < ncmds -1; ++j,
|
||||||
(cmdsize -= ptr1->cmdsize),
|
(cmdsize -= ptr1->cmdsize),
|
||||||
ptr1 = (Mach_command *)(ptr1->cmdsize + (char *)ptr1))
|
ptr1 = (Mach_command *)(ptr1->cmdsize + (char *)ptr1))
|
||||||
next:
|
next:
|
||||||
@@ -1752,7 +1752,7 @@ void PackMachBase<T>::pack1(OutputFile *const fo, Filter &/*ft*/) // generate e
|
|||||||
unsigned cmdsize = mhdro.sizeofcmds - sizeof(segXHDR);
|
unsigned cmdsize = mhdro.sizeofcmds - sizeof(segXHDR);
|
||||||
Mach_header const *const ptr0 = (Mach_header const *)stub_amd64_darwin_macho_upxmain_exe;
|
Mach_header const *const ptr0 = (Mach_header const *)stub_amd64_darwin_macho_upxmain_exe;
|
||||||
Mach_command const *ptr1 = (Mach_command const *)(1+ ptr0);
|
Mach_command const *ptr1 = (Mach_command const *)(1+ ptr0);
|
||||||
for (unsigned j = 0; j < mhdro.ncmds -1; ++j,
|
for (unsigned j = 0; j < mhdro.ncmds -1; ++j,
|
||||||
(cmdsize -= ptr1->cmdsize),
|
(cmdsize -= ptr1->cmdsize),
|
||||||
ptr1 = (Mach_command const *)(ptr1->cmdsize + (char const *)ptr1)) {
|
ptr1 = (Mach_command const *)(ptr1->cmdsize + (char const *)ptr1)) {
|
||||||
Mach_segment_command const *const segptr = (Mach_segment_command const *)ptr1;
|
Mach_segment_command const *const segptr = (Mach_segment_command const *)ptr1;
|
||||||
|
|||||||
+1
-1
@@ -310,7 +310,7 @@ amd64-darwin.macho-fold.h : tmp/$$T.o tmp/amd64-darwin.macho-main.o
|
|||||||
|
|
||||||
amd64-darwin.macho-upxmain.h: amd64-darwin.macho-upxmain.exe
|
amd64-darwin.macho-upxmain.h: amd64-darwin.macho-upxmain.exe
|
||||||
$(call tc,bin2h) $< $@
|
$(call tc,bin2h) $< $@
|
||||||
|
|
||||||
tmp/amd64-darwin.macho-fold.o : $(srcdir)/src/$$T.S
|
tmp/amd64-darwin.macho-fold.o : $(srcdir)/src/$$T.S
|
||||||
$(call tc,gcc) -c $< -o $@
|
$(call tc,gcc) -c $< -o $@
|
||||||
$(call tc,f-objstrip,$@)
|
$(call tc,f-objstrip,$@)
|
||||||
|
|||||||
@@ -579,7 +579,7 @@ ERR_LAB
|
|||||||
Mach_thread_command const *const thrc = (Mach_thread_command const *)sc;
|
Mach_thread_command const *const thrc = (Mach_thread_command const *)sc;
|
||||||
if (AMD64_THREAD_STATE ==thrc->flavor
|
if (AMD64_THREAD_STATE ==thrc->flavor
|
||||||
&& AMD64_THREAD_STATE_COUNT==thrc->count ) {
|
&& AMD64_THREAD_STATE_COUNT==thrc->count ) {
|
||||||
entry = thrc->state.rip + base; // JMP
|
entry = thrc->state.rip + base; // JMP
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (LC_MAIN==sc->cmd) {
|
else if (LC_MAIN==sc->cmd) {
|
||||||
|
|||||||
@@ -45,10 +45,10 @@ GLOBAL(bswap)
|
|||||||
|
|
||||||
GLOBAL(bzero)
|
GLOBAL(bzero)
|
||||||
GLOBAL(__bzero)
|
GLOBAL(__bzero)
|
||||||
xor %eax,%eax // the value
|
xor %eax,%eax // the value
|
||||||
mov %esi,%ecx // the count
|
mov %esi,%ecx // the count
|
||||||
rep; stosb // *rdi++ = %al
|
rep; stosb // *rdi++ = %al
|
||||||
ret
|
ret
|
||||||
|
|
||||||
SYS_exit =1
|
SYS_exit =1
|
||||||
SYS_read =3
|
SYS_read =3
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -171,7 +171,7 @@ LzmaDecode: .globl LzmaDecode
|
|||||||
#undef vs
|
#undef vs
|
||||||
|
|
||||||
add w14,w5,w6 // lp + lc
|
add w14,w5,w6 // lp + lc
|
||||||
mov Range,#~0
|
mov Range,#~0
|
||||||
lsl w5,Range,w5; mvn w5,w5 // ~(~0<<lp) == litPosMask
|
lsl w5,Range,w5; mvn w5,w5 // ~(~0<<lp) == litPosMask
|
||||||
lsl w4,Range,w4; mvn w4,w4 // ~(~0<<ps) == posStateMask
|
lsl w4,Range,w4; mvn w4,w4 // ~(~0<<ps) == posStateMask
|
||||||
mov w3,#1
|
mov w3,#1
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ LzmaDecode: .globl LzmaDecode
|
|||||||
#undef vs
|
#undef vs
|
||||||
|
|
||||||
add w14,w5,w6 // lp + lc
|
add w14,w5,w6 // lp + lc
|
||||||
mov Range,#~0
|
mov Range,#~0
|
||||||
lsl w5,Range,w5; mvn w5,w5 // ~(~0<<lp) == litPosMask
|
lsl w5,Range,w5; mvn w5,w5 // ~(~0<<lp) == litPosMask
|
||||||
lsl w4,Range,w4; mvn w4,w4 // ~(~0<<ps) == posStateMask
|
lsl w4,Range,w4; mvn w4,w4 // ~(~0<<ps) == posStateMask
|
||||||
mov w3,#1
|
mov w3,#1
|
||||||
|
|||||||
@@ -1,441 +1,441 @@
|
|||||||
// .section .text.LzmaDecode,"ax",%progbits
|
// .section .text.LzmaDecode,"ax",%progbits
|
||||||
// .align 2
|
// .align 2
|
||||||
// .global LzmaDecode
|
// .global LzmaDecode
|
||||||
// .type LzmaDecode, %function
|
// .type LzmaDecode, %function
|
||||||
//LzmaDecode:
|
//LzmaDecode:
|
||||||
stp x29, x30, [sp, -112]!
|
stp x29, x30, [sp, -112]!
|
||||||
mov w8, 1024
|
mov w8, 1024
|
||||||
add x29, sp, 0
|
add x29, sp, 0
|
||||||
stp x19, x20, [sp, 16]
|
stp x19, x20, [sp, 16]
|
||||||
stp x21, x22, [sp, 32]
|
stp x21, x22, [sp, 32]
|
||||||
stp x23, x24, [sp, 48]
|
stp x23, x24, [sp, 48]
|
||||||
stp x25, x26, [sp, 64]
|
stp x25, x26, [sp, 64]
|
||||||
ldp w19, w15, [x0]
|
ldp w19, w15, [x0]
|
||||||
ldr w14, [x0, 8]
|
ldr w14, [x0, 8]
|
||||||
ldr x11, [x0, 16]
|
ldr x11, [x0, 16]
|
||||||
str wzr, [x3]
|
str wzr, [x3]
|
||||||
str wzr, [x6]
|
str wzr, [x6]
|
||||||
ldr w7, [x0, 4]
|
ldr w7, [x0, 4]
|
||||||
mov w0, 768
|
mov w0, 768
|
||||||
add w7, w19, w7
|
add w7, w19, w7
|
||||||
lsl w7, w0, w7
|
lsl w7, w0, w7
|
||||||
mov w0, 1
|
mov w0, 1
|
||||||
adds w7, w7, 1846
|
adds w7, w7, 1846
|
||||||
lsl w14, w0, w14
|
lsl w14, w0, w14
|
||||||
lsl w0, w0, w15
|
lsl w0, w0, w15
|
||||||
sub w14, w14, #1
|
sub w14, w14, #1
|
||||||
sub w15, w0, #1
|
sub w15, w0, #1
|
||||||
mov x0, 0
|
mov x0, 0
|
||||||
beq .L22
|
beq .L22
|
||||||
.L79:
|
.L79:
|
||||||
strh w8, [x11, x0, lsl 1]
|
strh w8, [x11, x0, lsl 1]
|
||||||
add x0, x0, 1
|
add x0, x0, 1
|
||||||
cmp w7, w0
|
cmp w7, w0
|
||||||
bhi .L79
|
bhi .L79
|
||||||
.L22:
|
.L22:
|
||||||
add x2, x1, x2, uxtw
|
add x2, x1, x2, uxtw
|
||||||
mov w27, 0
|
mov w27, 0
|
||||||
str x2, [x29, 96]
|
str x2, [x29, 96]
|
||||||
mov w28, -1
|
mov w28, -1
|
||||||
add x0, x1, 1
|
add x0, x1, 1
|
||||||
add x10, x1, 6
|
add x10, x1, 6
|
||||||
add x2, x2, 1
|
add x2, x2, 1
|
||||||
.L20:
|
.L20:
|
||||||
cmp x0, x2
|
cmp x0, x2
|
||||||
mov x8, x0
|
mov x8, x0
|
||||||
beq .L41
|
beq .L41
|
||||||
str x0, [x29, 104]
|
str x0, [x29, 104]
|
||||||
add x0, x0, 1
|
add x0, x0, 1
|
||||||
cmp x0, x10
|
cmp x0, x10
|
||||||
ldrb w7, [x0, -2]
|
ldrb w7, [x0, -2]
|
||||||
orr w27, w7, w27, lsl 8
|
orr w27, w7, w27, lsl 8
|
||||||
bne .L20
|
bne .L20
|
||||||
stp x1, x6, [x29, 80]
|
stp x1, x6, [x29, 80]
|
||||||
mov x9, x4
|
mov x9, x4
|
||||||
mov x25, x3
|
mov x25, x3
|
||||||
cbz w5, .L63
|
cbz w5, .L63
|
||||||
mov w23, 1
|
mov w23, 1
|
||||||
mov w26, 8
|
mov w26, 8
|
||||||
mov w22, w23
|
mov w22, w23
|
||||||
mov w21, w23
|
mov w21, w23
|
||||||
mov w7, w23
|
mov w7, w23
|
||||||
mov w10, 0
|
mov w10, 0
|
||||||
mov w13, 0
|
mov w13, 0
|
||||||
mov w6, 0
|
mov w6, 0
|
||||||
sub w20, w26, w19
|
sub w20, w26, w19
|
||||||
.L60:
|
.L60:
|
||||||
and w12, w14, w6
|
and w12, w14, w6
|
||||||
lsl w8, w10, 4
|
lsl w8, w10, 4
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
mov w0, 0
|
mov w0, 0
|
||||||
sxtw x1, w12
|
sxtw x1, w12
|
||||||
add x8, x1, x8, sxtw
|
add x8, x1, x8, sxtw
|
||||||
lsl x8, x8, 1
|
lsl x8, x8, 1
|
||||||
add x1, x11, x8
|
add x1, x11, x8
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
cbnz w0, .L26
|
cbnz w0, .L26
|
||||||
and w0, w15, w6
|
and w0, w15, w6
|
||||||
asr w8, w13, w20
|
asr w8, w13, w20
|
||||||
lsl w0, w0, w19
|
lsl w0, w0, w19
|
||||||
cmp w10, 6
|
cmp w10, 6
|
||||||
add w8, w0, w8
|
add w8, w0, w8
|
||||||
lsl w0, w8, 2
|
lsl w0, w8, 2
|
||||||
sub w8, w0, w8
|
sub w8, w0, w8
|
||||||
ubfiz x8, x8, 8, 24
|
ubfiz x8, x8, 8, 24
|
||||||
add x8, x8, 1846
|
add x8, x8, 1846
|
||||||
add x8, x11, x8, lsl 1
|
add x8, x11, x8, lsl 1
|
||||||
ble .L64
|
ble .L64
|
||||||
sub w0, w6, w7
|
sub w0, w6, w7
|
||||||
mov w2, 1
|
mov w2, 1
|
||||||
ldrb w12, [x9, x0]
|
ldrb w12, [x9, x0]
|
||||||
b .L32
|
b .L32
|
||||||
.L96:
|
.L96:
|
||||||
cbnz w13, .L29
|
cbnz w13, .L29
|
||||||
.L30:
|
.L30:
|
||||||
cmp w2, 255
|
cmp w2, 255
|
||||||
bgt .L31
|
bgt .L31
|
||||||
.L32:
|
.L32:
|
||||||
lsl w12, w12, 1
|
lsl w12, w12, 1
|
||||||
mov w0, w2
|
mov w0, w2
|
||||||
and w13, w12, 256
|
and w13, w12, 256
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
sxtw x1, w13
|
sxtw x1, w13
|
||||||
add x1, x1, 256
|
add x1, x1, 256
|
||||||
add x1, x1, x2, sxtw
|
add x1, x1, x2, sxtw
|
||||||
add x1, x8, x1, lsl 1
|
add x1, x8, x1, lsl 1
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
mov w2, w0
|
mov w2, w0
|
||||||
tbz x2, 0, .L96
|
tbz x2, 0, .L96
|
||||||
cbnz w13, .L30
|
cbnz w13, .L30
|
||||||
.L29:
|
.L29:
|
||||||
cmp w2, 255
|
cmp w2, 255
|
||||||
bgt .L31
|
bgt .L31
|
||||||
.L33:
|
.L33:
|
||||||
add x1, x8, x2, sxtw 1
|
add x1, x8, x2, sxtw 1
|
||||||
mov w0, w2
|
mov w0, w2
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
cmp w0, 255
|
cmp w0, 255
|
||||||
mov w2, w0
|
mov w2, w0
|
||||||
ble .L33
|
ble .L33
|
||||||
uxtb w13, w0
|
uxtb w13, w0
|
||||||
cmp w10, 3
|
cmp w10, 3
|
||||||
strb w13, [x9, w6, uxtw]
|
strb w13, [x9, w6, uxtw]
|
||||||
add w6, w6, 1
|
add w6, w6, 1
|
||||||
bgt .L62
|
bgt .L62
|
||||||
mov w10, 0
|
mov w10, 0
|
||||||
.L34:
|
.L34:
|
||||||
cmp w5, w6
|
cmp w5, w6
|
||||||
bhi .L60
|
bhi .L60
|
||||||
.L58:
|
.L58:
|
||||||
mov w1, 16777215
|
mov w1, 16777215
|
||||||
cmp w28, w1
|
cmp w28, w1
|
||||||
bhi .L97
|
bhi .L97
|
||||||
ldp x2, x1, [x29, 96]
|
ldp x2, x1, [x29, 96]
|
||||||
cmp x1, x2
|
cmp x1, x2
|
||||||
beq .L41
|
beq .L41
|
||||||
add x8, x1, 1
|
add x8, x1, 1
|
||||||
str x8, [x29, 104]
|
str x8, [x29, 104]
|
||||||
lsl w28, w28, 8
|
lsl w28, w28, 8
|
||||||
ldrb w0, [x1]
|
ldrb w0, [x1]
|
||||||
orr w27, w0, w27, lsl 8
|
orr w27, w0, w27, lsl 8
|
||||||
.L25:
|
.L25:
|
||||||
ldr x0, [x29, 80]
|
ldr x0, [x29, 80]
|
||||||
ldp x19, x20, [sp, 16]
|
ldp x19, x20, [sp, 16]
|
||||||
sub x8, x8, x0
|
sub x8, x8, x0
|
||||||
ldr x0, [x29, 88]
|
ldr x0, [x29, 88]
|
||||||
str w8, [x25]
|
str w8, [x25]
|
||||||
ldp x21, x22, [sp, 32]
|
ldp x21, x22, [sp, 32]
|
||||||
str w6, [x0]
|
str w6, [x0]
|
||||||
mov w0, 0
|
mov w0, 0
|
||||||
ldp x23, x24, [sp, 48]
|
ldp x23, x24, [sp, 48]
|
||||||
ldp x25, x26, [sp, 64]
|
ldp x25, x26, [sp, 64]
|
||||||
ldp x29, x30, [sp], 112
|
ldp x29, x30, [sp], 112
|
||||||
ret
|
ret
|
||||||
.L64:
|
.L64:
|
||||||
mov w2, 1
|
mov w2, 1
|
||||||
b .L33
|
b .L33
|
||||||
.L31:
|
.L31:
|
||||||
uxtb w13, w2
|
uxtb w13, w2
|
||||||
strb w13, [x9, w6, uxtw]
|
strb w13, [x9, w6, uxtw]
|
||||||
add w6, w6, 1
|
add w6, w6, 1
|
||||||
.L62:
|
.L62:
|
||||||
cmp w10, 9
|
cmp w10, 9
|
||||||
bgt .L35
|
bgt .L35
|
||||||
sub w10, w10, #3
|
sub w10, w10, #3
|
||||||
b .L34
|
b .L34
|
||||||
.L26:
|
.L26:
|
||||||
sxtw x13, w10
|
sxtw x13, w10
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
add x13, x13, 192
|
add x13, x13, 192
|
||||||
mov w0, 0
|
mov w0, 0
|
||||||
lsl x13, x13, 1
|
lsl x13, x13, 1
|
||||||
add x1, x11, x13
|
add x1, x11, x13
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
cbnz w0, .L36
|
cbnz w0, .L36
|
||||||
mov w0, 3
|
mov w0, 3
|
||||||
cmp w10, 6
|
cmp w10, 6
|
||||||
mov w23, w22
|
mov w23, w22
|
||||||
csel w10, w0, wzr, gt
|
csel w10, w0, wzr, gt
|
||||||
mov w22, w21
|
mov w22, w21
|
||||||
add x24, x11, 1636
|
add x24, x11, 1636
|
||||||
mov w21, w7
|
mov w21, w7
|
||||||
.L38:
|
.L38:
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
mov x1, x24
|
mov x1, x24
|
||||||
mov w0, 0
|
mov w0, 0
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
cbnz w0, .L44
|
cbnz w0, .L44
|
||||||
lsl w12, w12, 3
|
lsl w12, w12, 3
|
||||||
mov w8, -8
|
mov w8, -8
|
||||||
mov w13, 3
|
mov w13, 3
|
||||||
sxtw x12, w12
|
sxtw x12, w12
|
||||||
add x12, x12, 2
|
add x12, x12, 2
|
||||||
add x12, x24, x12, lsl 1
|
add x12, x24, x12, lsl 1
|
||||||
.L45:
|
.L45:
|
||||||
mov w0, 1
|
mov w0, 1
|
||||||
.L47:
|
.L47:
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
add x1, x12, x0, uxtw 1
|
add x1, x12, x0, uxtw 1
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
subs w13, w13, #1
|
subs w13, w13, #1
|
||||||
bne .L47
|
bne .L47
|
||||||
cmp w10, 3
|
cmp w10, 3
|
||||||
add w8, w0, w8
|
add w8, w0, w8
|
||||||
bgt .L48
|
bgt .L48
|
||||||
mov w7, 3
|
mov w7, 3
|
||||||
mov w12, 6
|
mov w12, 6
|
||||||
cmp w8, w7
|
cmp w8, w7
|
||||||
mov w0, 1
|
mov w0, 1
|
||||||
csel w7, w8, w7, le
|
csel w7, w8, w7, le
|
||||||
lsl w7, w7, 6
|
lsl w7, w7, 6
|
||||||
sxtw x7, w7
|
sxtw x7, w7
|
||||||
add x7, x7, 432
|
add x7, x7, 432
|
||||||
lsl x7, x7, 1
|
lsl x7, x7, 1
|
||||||
.L49:
|
.L49:
|
||||||
add x1, x7, x0, uxtw 1
|
add x1, x7, x0, uxtw 1
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
add x1, x11, x1
|
add x1, x11, x1
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
subs w12, w12, #1
|
subs w12, w12, #1
|
||||||
bne .L49
|
bne .L49
|
||||||
sub w7, w0, #64
|
sub w7, w0, #64
|
||||||
add w10, w10, 7
|
add w10, w10, 7
|
||||||
cmp w7, 3
|
cmp w7, 3
|
||||||
mov w12, w7
|
mov w12, w7
|
||||||
ble .L50
|
ble .L50
|
||||||
cmp w7, 13
|
cmp w7, 13
|
||||||
and w0, w7, 1
|
and w0, w7, 1
|
||||||
asr w1, w7, 1
|
asr w1, w7, 1
|
||||||
orr w7, w0, 2
|
orr w7, w0, 2
|
||||||
bgt .L51
|
bgt .L51
|
||||||
sub w13, w1, #1
|
sub w13, w1, #1
|
||||||
mov x0, 688
|
mov x0, 688
|
||||||
lsl w7, w7, w13
|
lsl w7, w7, w13
|
||||||
sub x12, x0, x12, sxtw
|
sub x12, x0, x12, sxtw
|
||||||
add x12, x12, x7, uxtw
|
add x12, x12, x7, uxtw
|
||||||
add x12, x11, x12, lsl 1
|
add x12, x11, x12, lsl 1
|
||||||
sub x12, x12, #2
|
sub x12, x12, #2
|
||||||
.L52:
|
.L52:
|
||||||
mov w0, 1
|
mov w0, 1
|
||||||
mov w24, w0
|
mov w24, w0
|
||||||
.L57:
|
.L57:
|
||||||
add x1, x12, x0, sxtw 1
|
add x1, x12, x0, sxtw 1
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
and w3, w0, 1
|
and w3, w0, 1
|
||||||
orr w1, w7, w24
|
orr w1, w7, w24
|
||||||
cmp w3, wzr
|
cmp w3, wzr
|
||||||
csel w7, w1, w7, ne
|
csel w7, w1, w7, ne
|
||||||
subs w13, w13, #1
|
subs w13, w13, #1
|
||||||
lsl w24, w24, 1
|
lsl w24, w24, 1
|
||||||
bne .L57
|
bne .L57
|
||||||
.L50:
|
.L50:
|
||||||
adds w7, w7, 1
|
adds w7, w7, 1
|
||||||
beq .L58
|
beq .L58
|
||||||
.L48:
|
.L48:
|
||||||
cmp w7, w6
|
cmp w7, w6
|
||||||
add w0, w8, 2
|
add w0, w8, 2
|
||||||
bhi .L41
|
bhi .L41
|
||||||
mov w1, w6
|
mov w1, w6
|
||||||
.L59:
|
.L59:
|
||||||
sub w2, w6, w7
|
sub w2, w6, w7
|
||||||
sub w0, w0, #1
|
sub w0, w0, #1
|
||||||
add w6, w6, 1
|
add w6, w6, 1
|
||||||
cmp w0, wzr
|
cmp w0, wzr
|
||||||
ccmp w5, w6, 0, ne
|
ccmp w5, w6, 0, ne
|
||||||
ldrb w13, [x9, x2]
|
ldrb w13, [x9, x2]
|
||||||
strb w13, [x9, w1, uxtw]
|
strb w13, [x9, w1, uxtw]
|
||||||
mov w1, w6
|
mov w1, w6
|
||||||
bhi .L59
|
bhi .L59
|
||||||
b .L34
|
b .L34
|
||||||
.L35:
|
.L35:
|
||||||
sub w10, w10, #6
|
sub w10, w10, #6
|
||||||
b .L34
|
b .L34
|
||||||
.L36:
|
.L36:
|
||||||
add x1, x13, 24
|
add x1, x13, 24
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
add x1, x11, x1
|
add x1, x11, x1
|
||||||
mov w0, 0
|
mov w0, 0
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
cbnz w0, .L39
|
cbnz w0, .L39
|
||||||
add x1, x8, 480
|
add x1, x8, 480
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
add x1, x11, x1
|
add x1, x11, x1
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
cbnz w0, .L67
|
cbnz w0, .L67
|
||||||
cbz w6, .L41
|
cbz w6, .L41
|
||||||
sub w0, w6, w7
|
sub w0, w6, w7
|
||||||
cmp w10, 6
|
cmp w10, 6
|
||||||
mov w10, 11
|
mov w10, 11
|
||||||
ldrb w13, [x9, x0]
|
ldrb w13, [x9, x0]
|
||||||
mov w0, 9
|
mov w0, 9
|
||||||
strb w13, [x9, w6, uxtw]
|
strb w13, [x9, w6, uxtw]
|
||||||
csel w10, w10, w0, gt
|
csel w10, w10, w0, gt
|
||||||
add w6, w6, 1
|
add w6, w6, 1
|
||||||
b .L34
|
b .L34
|
||||||
.L44:
|
.L44:
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
add x1, x24, 2
|
add x1, x24, 2
|
||||||
mov w0, 0
|
mov w0, 0
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
mov w8, w0
|
mov w8, w0
|
||||||
cbnz w0, .L46
|
cbnz w0, .L46
|
||||||
lsl w0, w12, 3
|
lsl w0, w12, 3
|
||||||
mov w13, 3
|
mov w13, 3
|
||||||
sxtw x0, w0
|
sxtw x0, w0
|
||||||
add x0, x0, 130
|
add x0, x0, 130
|
||||||
add x12, x24, x0, lsl 1
|
add x12, x24, x0, lsl 1
|
||||||
b .L45
|
b .L45
|
||||||
.L39:
|
.L39:
|
||||||
add x1, x13, 48
|
add x1, x13, 48
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
add x1, x11, x1
|
add x1, x11, x1
|
||||||
mov w0, 0
|
mov w0, 0
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
cbnz w0, .L98
|
cbnz w0, .L98
|
||||||
.L40:
|
.L40:
|
||||||
cmp w10, 6
|
cmp w10, 6
|
||||||
mov w0, w7
|
mov w0, w7
|
||||||
mov w10, 11
|
mov w10, 11
|
||||||
mov w7, w21
|
mov w7, w21
|
||||||
csel w10, w10, w26, gt
|
csel w10, w10, w26, gt
|
||||||
mov w21, w0
|
mov w21, w0
|
||||||
add x24, x11, 2664
|
add x24, x11, 2664
|
||||||
b .L38
|
b .L38
|
||||||
.L46:
|
.L46:
|
||||||
add x12, x24, 516
|
add x12, x24, 516
|
||||||
mov w8, -240
|
mov w8, -240
|
||||||
mov w13, 8
|
mov w13, 8
|
||||||
b .L45
|
b .L45
|
||||||
.L41:
|
.L41:
|
||||||
ldp x19, x20, [sp, 16]
|
ldp x19, x20, [sp, 16]
|
||||||
ldp x21, x22, [sp, 32]
|
ldp x21, x22, [sp, 32]
|
||||||
ldp x23, x24, [sp, 48]
|
ldp x23, x24, [sp, 48]
|
||||||
ldp x25, x26, [sp, 64]
|
ldp x25, x26, [sp, 64]
|
||||||
mov w0, 1
|
mov w0, 1
|
||||||
ldp x29, x30, [sp], 112
|
ldp x29, x30, [sp], 112
|
||||||
ret
|
ret
|
||||||
.L51:
|
.L51:
|
||||||
ldr x12, [x29, 96]
|
ldr x12, [x29, 96]
|
||||||
sub w1, w1, #5
|
sub w1, w1, #5
|
||||||
mov w3, 16777215
|
mov w3, 16777215
|
||||||
.L55:
|
.L55:
|
||||||
cmp w28, w3
|
cmp w28, w3
|
||||||
lsl w7, w7, 1
|
lsl w7, w7, 1
|
||||||
bhi .L53
|
bhi .L53
|
||||||
ldr x2, [x29, 104]
|
ldr x2, [x29, 104]
|
||||||
cmp x2, x12
|
cmp x2, x12
|
||||||
add x4, x2, 1
|
add x4, x2, 1
|
||||||
beq .L41
|
beq .L41
|
||||||
str x4, [x29, 104]
|
str x4, [x29, 104]
|
||||||
lsl w28, w28, 8
|
lsl w28, w28, 8
|
||||||
ldrb w0, [x2]
|
ldrb w0, [x2]
|
||||||
orr w27, w0, w27, lsl 8
|
orr w27, w0, w27, lsl 8
|
||||||
.L53:
|
.L53:
|
||||||
lsr w0, w28, 1
|
lsr w0, w28, 1
|
||||||
cmp w0, w27
|
cmp w0, w27
|
||||||
mov w28, w0
|
mov w28, w0
|
||||||
bhi .L54
|
bhi .L54
|
||||||
sub w27, w27, w0
|
sub w27, w27, w0
|
||||||
orr w7, w7, 1
|
orr w7, w7, 1
|
||||||
.L54:
|
.L54:
|
||||||
subs w1, w1, #1
|
subs w1, w1, #1
|
||||||
bne .L55
|
bne .L55
|
||||||
lsl w7, w7, 4
|
lsl w7, w7, 4
|
||||||
add x12, x11, 1604
|
add x12, x11, 1604
|
||||||
mov w13, 4
|
mov w13, 4
|
||||||
b .L52
|
b .L52
|
||||||
.L67:
|
.L67:
|
||||||
mov w0, w21
|
mov w0, w21
|
||||||
mov w21, w7
|
mov w21, w7
|
||||||
mov w7, w0
|
mov w7, w0
|
||||||
b .L40
|
b .L40
|
||||||
.L98:
|
.L98:
|
||||||
add x1, x13, 72
|
add x1, x13, 72
|
||||||
add x18, x29, 96
|
add x18, x29, 96
|
||||||
add x1, x11, x1
|
add x1, x11, x1
|
||||||
mov w0, 0
|
mov w0, 0
|
||||||
bl rcGetBit.2736
|
bl rcGetBit.2736
|
||||||
cbnz w0, .L69
|
cbnz w0, .L69
|
||||||
mov w0, w21
|
mov w0, w21
|
||||||
mov w21, w22
|
mov w21, w22
|
||||||
mov w22, w0
|
mov w22, w0
|
||||||
b .L40
|
b .L40
|
||||||
.L69:
|
.L69:
|
||||||
mov w0, w21
|
mov w0, w21
|
||||||
mov w21, w23
|
mov w21, w23
|
||||||
mov w23, w22
|
mov w23, w22
|
||||||
mov w22, w0
|
mov w22, w0
|
||||||
b .L40
|
b .L40
|
||||||
.L97:
|
.L97:
|
||||||
ldr x8, [x29, 104]
|
ldr x8, [x29, 104]
|
||||||
b .L25
|
b .L25
|
||||||
.L63:
|
.L63:
|
||||||
mov w6, 0
|
mov w6, 0
|
||||||
b .L25
|
b .L25
|
||||||
// .size LzmaDecode, .-LzmaDecode
|
// .size LzmaDecode, .-LzmaDecode
|
||||||
|
|
||||||
// .section .text.rcGetBit.2736,"ax",%progbits
|
// .section .text.rcGetBit.2736,"ax",%progbits
|
||||||
// .align 2
|
// .align 2
|
||||||
// .type rcGetBit.2736, %function
|
// .type rcGetBit.2736, %function
|
||||||
rcGetBit.2736:
|
rcGetBit.2736:
|
||||||
mov w3, 16777215
|
mov w3, 16777215
|
||||||
cmp w28, w3
|
cmp w28, w3
|
||||||
bhi .L2
|
bhi .L2
|
||||||
ldp x4, x3, [x18]
|
ldp x4, x3, [x18]
|
||||||
cmp x3, x4
|
cmp x3, x4
|
||||||
beq .L5
|
beq .L5
|
||||||
add x4, x3, 1
|
add x4, x3, 1
|
||||||
str x4, [x18, 8]
|
str x4, [x18, 8]
|
||||||
lsl w28, w28, 8
|
lsl w28, w28, 8
|
||||||
ldrb w2, [x3]
|
ldrb w2, [x3]
|
||||||
orr w27, w2, w27, lsl 8
|
orr w27, w2, w27, lsl 8
|
||||||
.L2:
|
.L2:
|
||||||
ldrh w3, [x1]
|
ldrh w3, [x1]
|
||||||
lsr w2, w28, 11
|
lsr w2, w28, 11
|
||||||
mul w2, w2, w3
|
mul w2, w2, w3
|
||||||
cmp w2, w27
|
cmp w2, w27
|
||||||
bhi .L7
|
bhi .L7
|
||||||
lsl w0, w0, 1
|
lsl w0, w0, 1
|
||||||
sub w3, w3, w3, lsr 5
|
sub w3, w3, w3, lsr 5
|
||||||
sub w27, w27, w2
|
sub w27, w27, w2
|
||||||
sub w28, w28, w2
|
sub w28, w28, w2
|
||||||
strh w3, [x1]
|
strh w3, [x1]
|
||||||
add w0, w0, 1
|
add w0, w0, 1
|
||||||
ret
|
ret
|
||||||
.L7:
|
.L7:
|
||||||
mov w4, 2048
|
mov w4, 2048
|
||||||
mov w28, w2
|
mov w28, w2
|
||||||
sub w2, w4, w3
|
sub w2, w4, w3
|
||||||
lsl w0, w0, 1
|
lsl w0, w0, 1
|
||||||
add w3, w3, w2, asr 5
|
add w3, w3, w2, asr 5
|
||||||
strh w3, [x1]
|
strh w3, [x1]
|
||||||
ret
|
ret
|
||||||
.L5:
|
.L5:
|
||||||
mov w0, 1
|
mov w0, 1
|
||||||
ret
|
ret
|
||||||
// .size rcGetBit.2736, .-rcGetBit.2736
|
// .size rcGetBit.2736, .-rcGetBit.2736
|
||||||
|
|
||||||
// .ident "GCC: (GNU) 5.2.1 20151104 (Red Hat Cross 5.2.1-4)"
|
// .ident "GCC: (GNU) 5.2.1 20151104 (Red Hat Cross 5.2.1-4)"
|
||||||
// .section .note.GNU-stack,"",%progbits
|
// .section .note.GNU-stack,"",%progbits
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ main2:
|
|||||||
//teq r0,r0 // debugging
|
//teq r0,r0 // debugging
|
||||||
stdu r2,-8*(1+ 32-a0)(sp) # retaddr
|
stdu r2,-8*(1+ 32-a0)(sp) # retaddr
|
||||||
// stmw a0,4*1(sp)
|
// stmw a0,4*1(sp)
|
||||||
std 3,3*8-8*2(sp)
|
std 3,3*8-8*2(sp)
|
||||||
std 4,4*8-8*2(sp)
|
std 4,4*8-8*2(sp)
|
||||||
std 5,5*8-8*2(sp)
|
std 5,5*8-8*2(sp)
|
||||||
std 6,6*8-8*2(sp)
|
std 6,6*8-8*2(sp)
|
||||||
@@ -279,8 +279,8 @@ dy_done1: # escape hatch
|
|||||||
sc # munmap
|
sc # munmap
|
||||||
li a0,~0 # failure
|
li a0,~0 # failure
|
||||||
// lmw t0,0(sp)
|
// lmw t0,0(sp)
|
||||||
ld 2,2*8-8*2(sp)
|
ld 2,2*8-8*2(sp)
|
||||||
ld 3,3*8-8*2(sp)
|
ld 3,3*8-8*2(sp)
|
||||||
ld 4,4*8-8*2(sp)
|
ld 4,4*8-8*2(sp)
|
||||||
ld 5,5*8-8*2(sp)
|
ld 5,5*8-8*2(sp)
|
||||||
ld 6,6*8-8*2(sp)
|
ld 6,6*8-8*2(sp)
|
||||||
|
|||||||
Reference in New Issue
Block a user