mirror of
https://github.com/upx/upx
synced 2025-09-28 19:06:07 +08:00
fixes for the i386 nrv2b & nrv2d stubs
This commit is contained in:
parent
1b2837915d
commit
e881e008b8
|
@ -48,7 +48,7 @@
|
||||||
jnz 1f
|
jnz 1f
|
||||||
.endif
|
.endif
|
||||||
mov ebx, [esi]
|
mov ebx, [esi]
|
||||||
sub esi, byte -4
|
sub esi, -4
|
||||||
adc ebx, ebx
|
adc ebx, ebx
|
||||||
1:
|
1:
|
||||||
.endm
|
.endm
|
||||||
|
@ -63,7 +63,6 @@ decompr_literals_n2b:
|
||||||
movsb
|
movsb
|
||||||
section N2BFAS10
|
section N2BFAS10
|
||||||
jmps dcl1_n2b
|
jmps dcl1_n2b
|
||||||
.balign 8
|
|
||||||
section N2BFAS11
|
section N2BFAS11
|
||||||
decompr_literalb_n2b:
|
decompr_literalb_n2b:
|
||||||
mov al, [esi]
|
mov al, [esi]
|
||||||
|
@ -80,14 +79,14 @@ dcl1_n2b:
|
||||||
getbit 32
|
getbit 32
|
||||||
dcl2_n2b:
|
dcl2_n2b:
|
||||||
section N2BSMA20
|
section N2BSMA20
|
||||||
jc decompr_literals_n2b
|
jcs decompr_literals_n2b
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
inc eax
|
inc eax
|
||||||
section N2BFAS20
|
section N2BFAS20
|
||||||
#ifndef UPX102
|
#ifndef UPX102
|
||||||
mov al, [edi] // force data cache allocate (PentiumPlain or MMX)
|
mov al, [edi] // force data cache allocate (PentiumPlain or MMX)
|
||||||
#endif
|
#endif
|
||||||
jc decompr_literalb_n2b
|
jcs decompr_literalb_n2b
|
||||||
mov eax, 1
|
mov eax, 1
|
||||||
section N2BDEC20
|
section N2BDEC20
|
||||||
loop1_n2b:
|
loop1_n2b:
|
||||||
|
@ -95,13 +94,13 @@ loop1_n2b:
|
||||||
adc eax, eax
|
adc eax, eax
|
||||||
section N2BSMA30
|
section N2BSMA30
|
||||||
getbit 1
|
getbit 1
|
||||||
jnc loop1_n2b
|
jncs loop1_n2b
|
||||||
section N2BFAS30
|
section N2BFAS30
|
||||||
add ebx, ebx
|
add ebx, ebx
|
||||||
jnc loop1_n2b
|
jncs loop1_n2b
|
||||||
jnz loopend1_n2b
|
jnz loopend1_n2b
|
||||||
getbit 32
|
getbit 32
|
||||||
jnc loop1_n2b
|
jncs loop1_n2b
|
||||||
loopend1_n2b:
|
loopend1_n2b:
|
||||||
section N2BDEC30
|
section N2BDEC30
|
||||||
xor ecx, ecx
|
xor ecx, ecx
|
||||||
|
@ -111,29 +110,28 @@ section N2BDEC30
|
||||||
mov al, [esi]
|
mov al, [esi]
|
||||||
inc esi
|
inc esi
|
||||||
xor eax, -1
|
xor eax, -1
|
||||||
jz decompr_end_n2b
|
jzs decompr_end_n2b
|
||||||
mov ebp, eax
|
mov ebp, eax
|
||||||
decompr_ebpeax_n2b:
|
decompr_ebpeax_n2b:
|
||||||
getbit 1
|
getbit 1
|
||||||
adc ecx, ecx
|
adc ecx, ecx
|
||||||
getbit 1
|
getbit 1
|
||||||
adc ecx, ecx
|
adc ecx, ecx
|
||||||
jnz decompr_got_mlen_n2b
|
jnzs decompr_got_mlen_n2b
|
||||||
inc ecx
|
inc ecx
|
||||||
loop2_n2b:
|
loop2_n2b:
|
||||||
getbit 1
|
getbit 1
|
||||||
adc ecx, ecx
|
adc ecx, ecx
|
||||||
section N2BSMA40
|
section N2BSMA40
|
||||||
getbit 1
|
getbit 1
|
||||||
jnc loop2_n2b
|
jncs loop2_n2b
|
||||||
section N2BFAS40
|
section N2BFAS40
|
||||||
add ebx, ebx
|
add ebx, ebx
|
||||||
jnc loop2_n2b
|
jncs loop2_n2b
|
||||||
jnz loopend2_n2b
|
jnz loopend2_n2b
|
||||||
getbit 32
|
getbit 32
|
||||||
jnc loop2_n2b
|
jncs loop2_n2b
|
||||||
loopend2_n2b:
|
loopend2_n2b:
|
||||||
section N2BDUMM1
|
|
||||||
section N2BSMA50
|
section N2BSMA50
|
||||||
inc ecx
|
inc ecx
|
||||||
inc ecx
|
inc ecx
|
||||||
|
@ -164,7 +162,7 @@ section N2BFAS60
|
||||||
#ifndef UPX102
|
#ifndef UPX102
|
||||||
mov al, [edi+ecx] // force data cache allocate (PentiumPlain or MMX)
|
mov al, [edi+ecx] // force data cache allocate (PentiumPlain or MMX)
|
||||||
#endif
|
#endif
|
||||||
jbe decompr_copy4_n2b
|
jbes decompr_copy4_n2b
|
||||||
loop3_n2b:
|
loop3_n2b:
|
||||||
mov al, [edx]
|
mov al, [edx]
|
||||||
inc edx
|
inc edx
|
||||||
|
@ -174,7 +172,6 @@ loop3_n2b:
|
||||||
jnz loop3_n2b
|
jnz loop3_n2b
|
||||||
jmp decompr_loop_n2b
|
jmp decompr_loop_n2b
|
||||||
section N2BFAS61
|
section N2BFAS61
|
||||||
.balign 4
|
|
||||||
decompr_copy4_n2b:
|
decompr_copy4_n2b:
|
||||||
mov eax, [edx]
|
mov eax, [edx]
|
||||||
add edx, 4
|
add edx, 4
|
||||||
|
@ -186,7 +183,6 @@ decompr_copy4_n2b:
|
||||||
jmp decompr_loop_n2b
|
jmp decompr_loop_n2b
|
||||||
section N2BDEC60
|
section N2BDEC60
|
||||||
decompr_end_n2b:
|
decompr_end_n2b:
|
||||||
section NRV2BEND
|
|
||||||
|
|
||||||
// vi:ts=8:et
|
// vi:ts=8:et
|
||||||
|
|
||||||
|
|
|
@ -64,16 +64,14 @@ decompr_literals_n2d:
|
||||||
movsb
|
movsb
|
||||||
section N2DFAS10
|
section N2DFAS10
|
||||||
jmps dcl1_n2d
|
jmps dcl1_n2d
|
||||||
.balign 8
|
|
||||||
section N2DFAS11
|
section N2DFAS11
|
||||||
decompr_literalb_n2d:
|
decompr_literalb_n2d:
|
||||||
mov al, [esi]
|
mov al, [esi]
|
||||||
inc esi
|
inc esi
|
||||||
mov [edi], al
|
mov [edi], al
|
||||||
inc edi
|
inc edi
|
||||||
|
|
||||||
section N2DDEC10
|
section N2DDEC10
|
||||||
|
|
||||||
|
|
||||||
decompr_loop_n2d:
|
decompr_loop_n2d:
|
||||||
add ebx, ebx
|
add ebx, ebx
|
||||||
jnz dcl2_n2d
|
jnz dcl2_n2d
|
||||||
|
@ -81,14 +79,14 @@ dcl1_n2d:
|
||||||
getbit 32
|
getbit 32
|
||||||
dcl2_n2d:
|
dcl2_n2d:
|
||||||
section N2DSMA20
|
section N2DSMA20
|
||||||
jc decompr_literals_n2d
|
jcs decompr_literals_n2d
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
inc eax
|
inc eax
|
||||||
section N2DFAS20
|
section N2DFAS20
|
||||||
#ifndef UPX102
|
#ifndef UPX102
|
||||||
mov al, [edi] // force data cache allocate (PentiumPlain or MMX)
|
mov al, [edi] // force data cache allocate (PentiumPlain or MMX)
|
||||||
#endif
|
#endif
|
||||||
jc decompr_literalb_n2d
|
jcs decompr_literalb_n2d
|
||||||
mov eax, 1
|
mov eax, 1
|
||||||
section N2DDEC20
|
section N2DDEC20
|
||||||
loop1_n2d:
|
loop1_n2d:
|
||||||
|
@ -96,13 +94,13 @@ loop1_n2d:
|
||||||
adc eax, eax
|
adc eax, eax
|
||||||
section N2DSMA30
|
section N2DSMA30
|
||||||
getbit 1
|
getbit 1
|
||||||
jc loopend1_n2d
|
jcs loopend1_n2d
|
||||||
section N2DFAS30
|
section N2DFAS30
|
||||||
add ebx, ebx
|
add ebx, ebx
|
||||||
jnc loopcontinue1_n2d
|
jnc loopcontinue1_n2d
|
||||||
jnz loopend1_n2d
|
jnzs loopend1_n2d
|
||||||
getbit 32
|
getbit 32
|
||||||
jc loopend1_n2d
|
jcs loopend1_n2d
|
||||||
loopcontinue1_n2d:
|
loopcontinue1_n2d:
|
||||||
section N2DDEC30
|
section N2DDEC30
|
||||||
dec eax
|
dec eax
|
||||||
|
@ -117,7 +115,7 @@ loopend1_n2d:
|
||||||
mov al, [esi]
|
mov al, [esi]
|
||||||
inc esi
|
inc esi
|
||||||
xor eax, -1
|
xor eax, -1
|
||||||
jz decompr_end_n2d
|
jzs decompr_end_n2d
|
||||||
sar eax, 1 // shift low-bit into carry
|
sar eax, 1 // shift low-bit into carry
|
||||||
mov ebp, eax
|
mov ebp, eax
|
||||||
jmps decompr_ebpeax_n2d
|
jmps decompr_ebpeax_n2d
|
||||||
|
@ -127,22 +125,21 @@ decompr_ebpeax_n2d:
|
||||||
adc ecx, ecx
|
adc ecx, ecx
|
||||||
getbit 1
|
getbit 1
|
||||||
adc ecx, ecx
|
adc ecx, ecx
|
||||||
jnz decompr_got_mlen_n2d
|
jnzs decompr_got_mlen_n2d
|
||||||
inc ecx
|
inc ecx
|
||||||
loop2_n2d:
|
loop2_n2d:
|
||||||
getbit 1
|
getbit 1
|
||||||
adc ecx, ecx
|
adc ecx, ecx
|
||||||
section N2DSMA40
|
section N2DSMA40
|
||||||
getbit 1
|
getbit 1
|
||||||
jnc loop2_n2d
|
jncs loop2_n2d
|
||||||
section N2DFAS40
|
section N2DFAS40
|
||||||
add ebx, ebx
|
add ebx, ebx
|
||||||
jnc loop2_n2d
|
jncs loop2_n2d
|
||||||
jnz loopend2_n2d
|
jnz loopend2_n2d
|
||||||
getbit 32
|
getbit 32
|
||||||
jnc loop2_n2d
|
jncs loop2_n2d
|
||||||
loopend2_n2d:
|
loopend2_n2d:
|
||||||
section N2DDUMM1
|
|
||||||
section N2DSMA50
|
section N2DSMA50
|
||||||
inc ecx
|
inc ecx
|
||||||
inc ecx
|
inc ecx
|
||||||
|
@ -173,7 +170,7 @@ section N2DFAS60
|
||||||
#ifndef UPX102
|
#ifndef UPX102
|
||||||
mov al, [edi+ecx] // force data cache allocate (PentiumPlain or MMX)
|
mov al, [edi+ecx] // force data cache allocate (PentiumPlain or MMX)
|
||||||
#endif
|
#endif
|
||||||
jbe decompr_copy4_n2d
|
jbes decompr_copy4_n2d
|
||||||
loop3_n2d:
|
loop3_n2d:
|
||||||
mov al, [edx]
|
mov al, [edx]
|
||||||
inc edx
|
inc edx
|
||||||
|
@ -183,7 +180,6 @@ loop3_n2d:
|
||||||
jnz loop3_n2d
|
jnz loop3_n2d
|
||||||
jmp decompr_loop_n2d
|
jmp decompr_loop_n2d
|
||||||
section N2DFAS61
|
section N2DFAS61
|
||||||
.balign 4
|
|
||||||
decompr_copy4_n2d:
|
decompr_copy4_n2d:
|
||||||
mov eax, [edx]
|
mov eax, [edx]
|
||||||
add edx, 4
|
add edx, 4
|
||||||
|
@ -195,7 +191,6 @@ decompr_copy4_n2d:
|
||||||
jmp decompr_loop_n2d
|
jmp decompr_loop_n2d
|
||||||
section N2DDEC60
|
section N2DDEC60
|
||||||
decompr_end_n2d:
|
decompr_end_n2d:
|
||||||
section NRV2DEND
|
|
||||||
|
|
||||||
// vi:ts=8:et
|
// vi:ts=8:et
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user