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