diff --git a/src/stub/src/arch/i086/cc_test.c b/src/stub/src/arch/i086/cc_test.c index a945a33a..b60d3fea 100644 --- a/src/stub/src/arch/i086/cc_test.c +++ b/src/stub/src/arch/i086/cc_test.c @@ -103,9 +103,6 @@ void __pascal p4fshlv_v(unsigned char v, uint32_t __far *a) { *a <<= v; } uint32_t __pascal p4nshlv(unsigned char v, uint32_t __near *a) { return *a <<= v; } uint32_t __pascal p4fshlv(unsigned char v, uint32_t __far *a) { return *a <<= v; } -uint32_t __cdecl shlv_2(uint16_t h, uint16_t l, unsigned v) -{ uint16_t x = l >> (16 - v); l <<= v; h <<= v; h |= x; return h * 65536ul + l; } - hptrdiff_t __cdecl hptr2int(hptr a) { return (hptrdiff_t) a; } hptr __cdecl int2hptr(hptrdiff_t a) { return (hptr) a; } diff --git a/src/stub/src/arch/i086/cleanasm.py b/src/stub/src/arch/i086/cleanasm.py index e54b5fef..eeb4306d 100644 --- a/src/stub/src/arch/i086/cleanasm.py +++ b/src/stub/src/arch/i086/cleanasm.py @@ -195,29 +195,42 @@ def main(argv): if opts.call_rewrite and inst in ["call"]: k, v = parse_label(inst, args) if v[:2] == [1, 2]: # external 2-byte + if k == "__aNahdiff": + s = [ + ["push", "word ptr [bp+8]"], + ["push", "word ptr [bp+6]"], + ["push", r"word ptr \[bp([+-]\d+)\]$"], + ["push", r"word ptr \[bp([+-]\d+)\]$"], + ] + dpos = omatch(i-1, -4, s) + if dpos: + orewrite_inst(i, "*DEL*", "", dpos) + continue if k in ["__LMUL", "__U4M",]: + s1 = [ + ["mov", "bx,0x300"], + ["xor", "cx,cx"], + ] + s2 = [ + ["shl", "ax,1"], + ["rcl", "dx,1"], + ] + dpos1 = omatch(i-1, -2, s1) + dpos2 = omatch(i+1, 2, s2) + if dpos1 and dpos2: + orewrite_inst(i, "M_U4M_dxax_0x0600", "", dpos1 + dpos2) + continue s = [ ["mov", "bx,word ptr [bx]"], ["xor", "cx,cx"], ] dpos = omatch(i-1, -2, s, debug=0) if 0 and dpos: - orewrite_inst(i, "M_LMUL_dxax_00bx_ptr", "", dpos) + orewrite_inst(i, "M_U4M_dxax_00bx_ptr", "", dpos) continue dpos = omatch(i-1, -1, s) if dpos: - orewrite_inst(i, "M_LMUL_dxax_00bx", "", dpos) - continue - if k == "__aNahdiff": - s = [ - ["push", "word ptr [bp+8]"], - ["push", "word ptr [bp+6]"], - ["push", "word ptr [bp-66]"], - ["push", "word ptr [bp-68]"], - ] - dpos = omatch(i-1, -4, s) - if dpos: - orewrite_inst(i, "*DEL*", "", dpos) + orewrite_inst(i, "M_U4M_dxax_00bx", "", dpos) continue if k == "__PIA": s = [ @@ -257,6 +270,36 @@ def main(argv): if dpos: orewrite_inst(i, "M_shld_8", "", dpos) continue + s1 = [ + ["mov", r"^c[lx],0x8$"], + ["shl", "si,1"], + ["rcl", "di,1"], + ] + s2 = [ + ["les", r"^bx,dword ptr \[bp([+-]\d+)\]$"], + ] + dpos1 = omatch(i-1, -3, s1) + dpos2 = omatch(i+1, 1, s2) + if 1 and dpos1 and dpos2: + # bx and cx are free for use + orewrite_inst(i, "M_shld_disi_8_bxcx", "", dpos1) + continue + s1 = [ + ["mov", "ax,si"], + ["mov", r"^c[lx],0x8$"], + ["shl", "ax,1"], + ["rcl", "di,1"], + ] + s2 = [ + ["mov", "si,ax"], + ["les", r"^bx,dword ptr \[bp([+-]\d+)\]$"], + ] + dpos1 = omatch(i-1, -4, s1) + dpos2 = omatch(i+1, 2, s2) + if 1 and dpos1 and dpos2: + # bx and cx are free for use + orewrite_inst(i, "M_shld_diax_8_bxcx", "", dpos1[-3:]) + continue s1 = [ ["mov", r"^c[lx],0x8$"], ["shl", r"^word ptr \[bp([+-]\d+)\],1$"], diff --git a/src/stub/src/arch/i086/lzma_d_cf.S b/src/stub/src/arch/i086/lzma_d_cf.S index 20667d02..aa4699af 100644 --- a/src/stub/src/arch/i086/lzma_d_cf.S +++ b/src/stub/src/arch/i086/lzma_d_cf.S @@ -119,14 +119,14 @@ M_PTC_JNE .Lf005 .Lf007: mov ax,0x1 - jmp .Lf139 + jmp .Lf125 .Lf008: mov ax,word ptr [bp-18] cmp ax,word ptr [bp+26] jb .Lf011 je .Lf010 .Lf009: - jmp .Lf136 + jmp .Lf122 .Lf010: mov ax,word ptr [bp-20] cmp ax,word ptr [bp+24] @@ -143,18 +143,14 @@ add dx,ax mov word ptr [bp-14],dx cmp di,0x100 - jae .Lf013 + jae .Lf012 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] M_PTC je .Lf007 - mov cx,0x8 -.Lf012: - shl si,1 - rcl di,1 - loop .Lf012 + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -171,24 +167,24 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf013: +.Lf012: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf016 - je .Lf015 + jb .Lf015 + je .Lf014 +.Lf013: + jmp .Lf034 .Lf014: - jmp .Lf037 -.Lf015: mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf014 -.Lf016: + jae .Lf013 +.Lf015: mov word ptr [bp-26],0x1 mov si,word ptr [bp-8] mov di,dx @@ -211,26 +207,23 @@ mov dx,word ptr [bp-18] and dx,word ptr [bp-84] mov cx,word ptr [bp-78] - jcxz .Lf018 -.Lf017: + jcxz .Lf017 +.Lf016: shl ax,1 rcl dx,1 - loop .Lf017 -.Lf018: + loop .Lf016 +.Lf017: add ax,word ptr [bp-90] adc dx,bx - mov bx,0x300 - M_LMUL_dxax_00bx - shl ax,1 - rcl dx,1 + M_U4M_dxax_0x0600 mov dx,word ptr [bp-34] add dx,0xe6c add dx,ax mov word ptr [bp-14],dx cmp word ptr [bp-16],0x7 - jge .Lf019 - jmp .Lf027 -.Lf019: + jge .Lf018 + jmp .Lf025 +.Lf018: mov bx,word ptr [bp-20] sub bx,word ptr [bp-102] mov cx,word ptr [bp-18] @@ -243,7 +236,7 @@ mov al,byte ptr es:[bx] xor ah,ah mov word ptr [bp-76],ax -.Lf020: +.Lf019: shl word ptr [bp-76],1 mov ax,word ptr [bp-76] xor al,al @@ -258,19 +251,15 @@ add dx,ax mov word ptr [bp-46],dx cmp di,0x100 - jae .Lf023 + jae .Lf021 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf021 + M_PTC_JNE .Lf020 jmp .Lf007 -.Lf021: - mov cx,0x8 -.Lf022: - shl si,1 - rcl di,1 - loop .Lf022 +.Lf020: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -287,21 +276,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf023: +.Lf021: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-46] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf024 - jne .Lf025 + jb .Lf022 + jne .Lf023 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf025 -.Lf024: + jae .Lf023 +.Lf022: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -312,9 +301,9 @@ add word ptr [bx],ax shl word ptr [bp-26],1 cmp word ptr [bp-66],0x0 - jne .Lf027 - jmp .Lf026 -.Lf025: + jne .Lf025 + jmp .Lf024 +.Lf023: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -330,35 +319,31 @@ inc ax mov word ptr [bp-26],ax cmp word ptr [bp-66],0x0 - je .Lf027 -.Lf026: + je .Lf025 +.Lf024: cmp word ptr [bp-26],0x100 - jge .Lf027 - jmp .Lf020 -.Lf027: + jge .Lf025 + jmp .Lf019 +.Lf025: mov ax,word ptr [bp-26] cmp ax,0x100 - jl .Lf028 - jmp .Lf034 -.Lf028: + jl .Lf026 + jmp .Lf031 +.Lf026: shl ax,1 mov bx,word ptr [bp-14] add bx,ax mov word ptr [bp-40],bx cmp di,0x100 - jae .Lf031 + jae .Lf028 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf029 + M_PTC_JNE .Lf027 jmp .Lf007 -.Lf029: - mov cx,0x8 -.Lf030: - shl si,1 - rcl di,1 - loop .Lf030 +.Lf027: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -375,21 +360,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf031: +.Lf028: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-40] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf032 - jne .Lf033 + jb .Lf029 + jne .Lf030 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf033 -.Lf032: + jae .Lf030 +.Lf029: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -399,8 +384,8 @@ shr ax,cl add word ptr [bx],ax shl word ptr [bp-26],1 - jmp .Lf027 -.Lf033: + jmp .Lf025 +.Lf030: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -415,8 +400,8 @@ add ax,ax inc ax mov word ptr [bp-26],ax - jmp .Lf027 -.Lf034: + jmp .Lf025 +.Lf031: mov al,byte ptr [bp-26] mov byte ptr [bp-2],al mov bx,word ptr [bp-20] @@ -432,19 +417,19 @@ mov byte ptr es:[bx],al mov ax,word ptr [bp-16] cmp ax,0x4 - jge .Lf035 + jge .Lf032 xor ax,ax mov word ptr [bp-16],ax jmp .Lf008 -.Lf035: +.Lf032: cmp ax,0xa - jge .Lf036 + jge .Lf033 sub word ptr [bp-16],0x3 jmp .Lf008 -.Lf036: +.Lf033: sub word ptr [bp-16],0x6 jmp .Lf008 -.Lf037: +.Lf034: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -462,19 +447,15 @@ add dx,ax mov word ptr [bp-14],dx cmp di,0x100 - jae .Lf040 + jae .Lf036 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf038 + M_PTC_JNE .Lf035 jmp .Lf007 -.Lf038: - mov cx,0x8 -.Lf039: - shl si,1 - rcl di,1 - loop .Lf039 +.Lf035: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -491,21 +472,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf040: +.Lf036: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf041 - jne .Lf044 + jb .Lf037 + jne .Lf040 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf044 -.Lf041: + jae .Lf040 +.Lf037: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -527,17 +508,17 @@ mov ax,word ptr [bp-100] mov word ptr [bp-50],ax cmp word ptr [bp-16],0x7 - jge .Lf042 + jge .Lf038 xor ax,ax - jmp .Lf043 -.Lf042: + jmp .Lf039 +.Lf038: mov ax,0x3 -.Lf043: +.Lf039: mov word ptr [bp-16],ax mov bx,word ptr [bp-34] add bx,0x664 - jmp .Lf076 -.Lf044: + jmp .Lf068 +.Lf040: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -555,19 +536,15 @@ add ax,dx mov word ptr [bp-14],ax cmp di,0x100 - jae .Lf047 + jae .Lf042 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf045 + M_PTC_JNE .Lf041 jmp .Lf007 -.Lf045: - mov cx,0x8 -.Lf046: - shl si,1 - rcl di,1 - loop .Lf046 +.Lf041: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -584,11 +561,11 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf047: +.Lf042: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-12] @@ -598,15 +575,15 @@ mov word ptr [bp-80],dx mov ax,word ptr [bp-4] cmp ax,word ptr [bp-94] - jb .Lf050 - je .Lf049 -.Lf048: - jmp .Lf060 -.Lf049: + jb .Lf045 + je .Lf044 +.Lf043: + jmp .Lf054 +.Lf044: mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf048 -.Lf050: + jae .Lf043 +.Lf045: mov si,word ptr [bp-8] mov di,word ptr [bp-94] mov ax,0x800 @@ -625,20 +602,16 @@ add dx,ax mov word ptr [bp-14],dx cmp di,0x100 - jae .Lf053 + jae .Lf047 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf051 + M_PTC_JNE .Lf046 jmp .Lf007 -.Lf051: +.Lf046: mov ax,si - mov cx,0x8 -.Lf052: - shl ax,1 - rcl di,1 - loop .Lf052 + M_shld_diax_8_bxcx mov si,ax les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] @@ -655,21 +628,21 @@ mov word ptr [bp-12],bx mov ax,word ptr [bp-80] mov word ptr [bp-10],ax -.Lf053: +.Lf047: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf054 - jne .Lf056 + jb .Lf048 + jne .Lf050 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf059 -.Lf054: + jae .Lf053 +.Lf048: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -680,18 +653,18 @@ add word ptr [bx],ax mov ax,word ptr [bp-18] or ax,word ptr [bp-20] - jne .Lf055 + jne .Lf049 jmp .Lf007 -.Lf055: +.Lf049: cmp word ptr [bp-16],0x7 - jge .Lf057 + jge .Lf051 mov ax,0x9 - jmp .Lf058 -.Lf056: - jmp .Lf059 -.Lf057: + jmp .Lf052 +.Lf050: + jmp .Lf053 +.Lf051: mov ax,0xb -.Lf058: +.Lf052: mov word ptr [bp-16],ax mov bx,word ptr [bp-20] sub bx,word ptr [bp-102] @@ -716,7 +689,7 @@ mov al,byte ptr [bp-2] mov byte ptr es:[bx],al jmp .Lf008 -.Lf059: +.Lf053: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -727,8 +700,8 @@ mov ax,word ptr [bx] shr ax,cl sub word ptr [bx],ax - jmp .Lf073 -.Lf060: + jmp .Lf065 +.Lf054: sub si,word ptr [bp-8] sbb di,word ptr [bp-94] mov ax,word ptr [bp-8] @@ -747,19 +720,15 @@ add dx,ax mov word ptr [bp-14],dx cmp di,0x100 - jae .Lf063 + jae .Lf056 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf061 + M_PTC_JNE .Lf055 jmp .Lf007 -.Lf061: - mov cx,0x8 -.Lf062: - shl si,1 - rcl di,1 - loop .Lf062 +.Lf055: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -775,21 +744,21 @@ mov word ptr [bp-12],bx mov ax,word ptr [bp-80] mov word ptr [bp-10],ax -.Lf063: +.Lf056: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf064 - jne .Lf065 + jb .Lf057 + jne .Lf058 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf065 -.Lf064: + jae .Lf058 +.Lf057: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -800,8 +769,8 @@ add word ptr [bx],ax mov ax,word ptr [bp-52] mov cx,word ptr [bp-50] - jmp .Lf072 -.Lf065: + jmp .Lf064 +.Lf058: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -819,19 +788,15 @@ add ax,dx mov word ptr [bp-14],ax cmp di,0x100 - jae .Lf068 + jae .Lf060 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf066 + M_PTC_JNE .Lf059 jmp .Lf007 -.Lf066: - mov cx,0x8 -.Lf067: - shl si,1 - rcl di,1 - loop .Lf067 +.Lf059: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -848,21 +813,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf068: +.Lf060: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf069 - jne .Lf070 + jb .Lf061 + jne .Lf062 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf070 -.Lf069: + jae .Lf062 +.Lf061: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -873,8 +838,8 @@ add word ptr [bx],ax mov ax,word ptr [bp-56] mov cx,word ptr [bp-54] - jmp .Lf071 -.Lf070: + jmp .Lf063 +.Lf062: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -891,47 +856,43 @@ mov word ptr [bp-68],dx mov dx,word ptr [bp-54] mov word ptr [bp-74],dx -.Lf071: +.Lf063: mov dx,word ptr [bp-52] mov word ptr [bp-56],dx mov dx,word ptr [bp-50] mov word ptr [bp-54],dx -.Lf072: +.Lf064: mov dx,word ptr [bp-102] mov word ptr [bp-52],dx mov dx,word ptr [bp-100] mov word ptr [bp-50],dx mov word ptr [bp-102],ax mov word ptr [bp-100],cx -.Lf073: +.Lf065: cmp word ptr [bp-16],0x7 - jge .Lf074 + jge .Lf066 mov ax,0x8 - jmp .Lf075 -.Lf074: + jmp .Lf067 +.Lf066: mov ax,0xb -.Lf075: +.Lf067: mov word ptr [bp-16],ax mov bx,word ptr [bp-34] add bx,0xa68 -.Lf076: +.Lf068: mov word ptr [bp-14],bx mov bx,word ptr [bp-14] mov word ptr [bp-22],bx cmp di,0x100 - jae .Lf079 + jae .Lf070 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf077 + M_PTC_JNE .Lf069 jmp .Lf007 -.Lf077: - mov cx,0x8 -.Lf078: - shl si,1 - rcl di,1 - loop .Lf078 +.Lf069: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -948,21 +909,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf079: +.Lf070: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-22] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf080 - jne .Lf082 + jb .Lf071 + jne .Lf073 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf082 -.Lf080: + jae .Lf073 +.Lf071: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -980,10 +941,10 @@ mov word ptr [bp-22],dx xor ax,ax mov word ptr [bp-70],ax -.Lf081: +.Lf072: mov word ptr [bp-60],0x3 - jmp .Lf088 -.Lf082: + jmp .Lf078 +.Lf073: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -999,19 +960,15 @@ inc bx mov word ptr [bp-22],bx cmp di,0x100 - jae .Lf085 + jae .Lf075 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf083 + M_PTC_JNE .Lf074 jmp .Lf007 -.Lf083: - mov cx,0x8 -.Lf084: - shl si,1 - rcl di,1 - loop .Lf084 +.Lf074: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -1028,21 +985,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf085: +.Lf075: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-22] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf086 - jne .Lf087 + jb .Lf076 + jne .Lf077 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf087 -.Lf086: + jae .Lf077 +.Lf076: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -1059,8 +1016,8 @@ add dx,ax mov word ptr [bp-22],dx mov word ptr [bp-70],0x8 - jmp .Lf081 -.Lf087: + jmp .Lf072 +.Lf077: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -1076,30 +1033,26 @@ mov word ptr [bp-22],bx mov word ptr [bp-70],0x10 mov word ptr [bp-60],0x8 -.Lf088: +.Lf078: mov ax,word ptr [bp-60] mov word ptr [bp-62],ax mov word ptr [bp-24],0x1 -.Lf089: +.Lf079: mov ax,word ptr [bp-24] shl ax,1 mov bx,word ptr [bp-22] add bx,ax mov word ptr [bp-38],bx cmp di,0x100 - jae .Lf092 + jae .Lf081 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf090 + M_PTC_JNE .Lf080 jmp .Lf007 -.Lf090: - mov cx,0x8 -.Lf091: - shl si,1 - rcl di,1 - loop .Lf091 +.Lf080: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -1116,21 +1069,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf092: +.Lf081: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-38] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf093 - jne .Lf094 + jb .Lf082 + jne .Lf083 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf094 -.Lf093: + jae .Lf083 +.Lf082: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -1140,8 +1093,8 @@ shr ax,cl add word ptr [bx],ax shl word ptr [bp-24],1 - jmp .Lf095 -.Lf094: + jmp .Lf084 +.Lf083: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -1156,11 +1109,11 @@ add ax,ax inc ax mov word ptr [bp-24],ax -.Lf095: +.Lf084: dec word ptr [bp-62] - je .Lf096 - jmp .Lf089 -.Lf096: + je .Lf085 + jmp .Lf079 +.Lf085: mov cl,byte ptr [bp-60] mov ax,0x1 shl ax,cl @@ -1168,15 +1121,15 @@ mov ax,word ptr [bp-70] add word ptr [bp-24],ax cmp word ptr [bp-16],0x4 - jl .Lf097 - jmp .Lf130 -.Lf097: + jl .Lf086 + jmp .Lf116 +.Lf086: add word ptr [bp-16],0x7 mov ax,word ptr [bp-24] cmp ax,0x4 - jl .Lf098 + jl .Lf087 mov ax,0x3 -.Lf098: +.Lf087: mov cl,0x7 mov dx,ax shl dx,cl @@ -1186,26 +1139,22 @@ mov word ptr [bp-14],ax mov word ptr [bp-92],0x6 mov word ptr [bp-32],0x1 -.Lf099: +.Lf088: mov ax,word ptr [bp-32] shl ax,1 mov bx,word ptr [bp-14] add bx,ax mov word ptr [bp-42],bx cmp di,0x100 - jae .Lf102 + jae .Lf090 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf100 + M_PTC_JNE .Lf089 jmp .Lf007 -.Lf100: - mov cx,0x8 -.Lf101: - shl si,1 - rcl di,1 - loop .Lf101 +.Lf089: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -1222,21 +1171,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf102: +.Lf090: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-42] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf103 - jne .Lf104 + jb .Lf091 + jne .Lf092 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf104 -.Lf103: + jae .Lf092 +.Lf091: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -1246,8 +1195,8 @@ shr ax,cl add word ptr [bx],ax shl word ptr [bp-32],1 - jmp .Lf105 -.Lf104: + jmp .Lf093 +.Lf092: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -1262,15 +1211,15 @@ add ax,ax inc ax mov word ptr [bp-32],ax -.Lf105: +.Lf093: dec word ptr [bp-92] - je .Lf106 - jmp .Lf099 -.Lf106: + je .Lf094 + jmp .Lf088 +.Lf094: sub word ptr [bp-32],0x40 mov ax,word ptr [bp-32] cmp ax,0x4 - jl .Lf109 + jl .Lf097 sar ax,1 dec ax mov word ptr [bp-36],ax @@ -1281,14 +1230,14 @@ xor ax,ax mov word ptr [bp-100],ax cmp word ptr [bp-32],0xe - jge .Lf110 + jge .Lf098 mov cx,word ptr [bp-36] - jcxz .Lf108 -.Lf107: + jcxz .Lf096 +.Lf095: shl word ptr [bp-102],1 rcl word ptr [bp-100],1 - loop .Lf107 -.Lf108: + loop .Lf095 +.Lf096: mov dx,word ptr [bp-102] shl dx,1 mov ax,word ptr [bp-34] @@ -1300,26 +1249,22 @@ dec dx dec dx mov word ptr [bp-14],dx - jmp .Lf119 -.Lf109: - jmp .Lf128 -.Lf110: + jmp .Lf106 +.Lf097: + jmp .Lf114 +.Lf098: sub word ptr [bp-36],0x4 -.Lf111: +.Lf099: cmp di,0x100 - jae .Lf114 + jae .Lf101 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf112 + M_PTC_JNE .Lf100 jmp .Lf007 -.Lf112: - mov cx,0x8 -.Lf113: - shl si,1 - rcl di,1 - loop .Lf113 +.Lf100: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -1336,59 +1281,55 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf114: +.Lf101: shr di,1 rcr si,1 shl word ptr [bp-102],1 rcl word ptr [bp-100],1 mov ax,word ptr [bp-4] cmp di,ax - jb .Lf115 - jne .Lf116 + jb .Lf102 + jne .Lf103 cmp si,word ptr [bp-6] - ja .Lf116 -.Lf115: + ja .Lf103 +.Lf102: sub word ptr [bp-6],si sbb word ptr [bp-4],di or byte ptr [bp-102],0x1 -.Lf116: +.Lf103: dec word ptr [bp-36] - je .Lf117 - jmp .Lf111 -.Lf117: + je .Lf104 + jmp .Lf099 +.Lf104: mov bx,word ptr [bp-34] add bx,0x644 mov word ptr [bp-14],bx mov cx,0x4 -.Lf118: +.Lf105: shl word ptr [bp-102],1 rcl word ptr [bp-100],1 - loop .Lf118 + loop .Lf105 mov word ptr [bp-36],0x4 -.Lf119: +.Lf106: mov ax,0x1 mov word ptr [bp-64],ax mov word ptr [bp-48],ax -.Lf120: +.Lf107: mov ax,word ptr [bp-48] shl ax,1 mov bx,word ptr [bp-14] add bx,ax mov word ptr [bp-44],bx cmp di,0x100 - jae .Lf123 + jae .Lf109 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf121 + M_PTC_JNE .Lf108 jmp .Lf007 -.Lf121: - mov cx,0x8 -.Lf122: - shl si,1 - rcl di,1 - loop .Lf122 +.Lf108: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -1405,21 +1346,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf123: +.Lf109: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-44] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Lf124 - jne .Lf125 + jb .Lf110 + jne .Lf111 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Lf125 -.Lf124: + jae .Lf111 +.Lf110: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -1429,8 +1370,8 @@ shr ax,cl add word ptr [bx],ax shl word ptr [bp-48],1 - jmp .Lf126 -.Lf125: + jmp .Lf112 +.Lf111: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -1449,37 +1390,37 @@ cwd or word ptr [bp-102],ax or word ptr [bp-100],dx -.Lf126: +.Lf112: shl word ptr [bp-64],1 dec word ptr [bp-36] - je .Lf127 - jmp .Lf120 -.Lf127: - jmp .Lf129 -.Lf128: + je .Lf113 + jmp .Lf107 +.Lf113: + jmp .Lf115 +.Lf114: cwd mov word ptr [bp-102],ax mov word ptr [bp-100],dx -.Lf129: +.Lf115: add word ptr [bp-102],0x1 adc word ptr [bp-100],0x0 mov ax,word ptr [bp-100] or ax,word ptr [bp-102] - jne .Lf130 - jmp .Lf136 -.Lf130: + jne .Lf116 + jmp .Lf122 +.Lf116: add word ptr [bp-24],0x2 mov ax,word ptr [bp-100] cmp ax,word ptr [bp-18] - jbe .Lf132 -.Lf131: + jbe .Lf118 +.Lf117: jmp .Lf007 -.Lf132: - jne .Lf133 +.Lf118: + jne .Lf119 mov ax,word ptr [bp-102] cmp ax,word ptr [bp-20] - ja .Lf131 -.Lf133: + ja .Lf117 +.Lf119: mov bx,word ptr [bp-20] sub bx,word ptr [bp-102] mov cx,word ptr [bp-18] @@ -1504,34 +1445,34 @@ mov al,byte ptr [bp-2] mov byte ptr es:[bx],al cmp word ptr [bp-24],0x0 - jne .Lf135 -.Lf134: + jne .Lf121 +.Lf120: jmp .Lf008 -.Lf135: +.Lf121: mov ax,word ptr [bp-18] cmp ax,word ptr [bp+26] - jb .Lf133 - jne .Lf134 + jb .Lf119 + jne .Lf120 mov ax,word ptr [bp-20] cmp ax,word ptr [bp+24] - jb .Lf133 - jmp .Lf134 -.Lf136: + jb .Lf119 + jmp .Lf120 +.Lf122: cmp di,0x100 - jae .Lf138 + jae .Lf124 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Lf137 + M_PTC_JNE .Lf123 jmp .Lf007 -.Lf137: +.Lf123: mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Lf138: +.Lf124: mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp+10] @@ -1546,7 +1487,7 @@ mov ax,word ptr [bp-18] mov word ptr [bx+2],ax xor ax,ax -.Lf139: +.Lf125: mov sp,bp pop bp pop di diff --git a/src/stub/src/arch/i086/lzma_d_cs.S b/src/stub/src/arch/i086/lzma_d_cs.S index 9f4f0dba..e756f10d 100644 --- a/src/stub/src/arch/i086/lzma_d_cs.S +++ b/src/stub/src/arch/i086/lzma_d_cs.S @@ -119,14 +119,14 @@ M_PTC_JNE .Ls005 .Ls007: mov ax,0x1 - jmp .Ls139 + jmp .Ls125 .Ls008: mov ax,word ptr [bp-18] cmp ax,word ptr [bp+26] jb .Ls011 je .Ls010 .Ls009: - jmp .Ls136 + jmp .Ls122 .Ls010: mov ax,word ptr [bp-20] cmp ax,word ptr [bp+24] @@ -143,18 +143,14 @@ add dx,ax mov word ptr [bp-14],dx cmp di,0x100 - jae .Ls013 + jae .Ls012 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] M_PTC je .Ls007 - mov cx,0x8 -.Ls012: - shl si,1 - rcl di,1 - loop .Ls012 + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -171,24 +167,24 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls013: +.Ls012: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls016 - je .Ls015 + jb .Ls015 + je .Ls014 +.Ls013: + jmp .Ls034 .Ls014: - jmp .Ls037 -.Ls015: mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls014 -.Ls016: + jae .Ls013 +.Ls015: mov word ptr [bp-26],0x1 mov si,word ptr [bp-8] mov di,dx @@ -211,26 +207,23 @@ mov dx,word ptr [bp-18] and dx,word ptr [bp-84] mov cx,word ptr [bp-78] - jcxz .Ls018 -.Ls017: + jcxz .Ls017 +.Ls016: shl ax,1 rcl dx,1 - loop .Ls017 -.Ls018: + loop .Ls016 +.Ls017: add ax,word ptr [bp-90] adc dx,bx - mov bx,0x300 - M_LMUL_dxax_00bx - shl ax,1 - rcl dx,1 + M_U4M_dxax_0x0600 mov dx,word ptr [bp-34] add dx,0xe6c add dx,ax mov word ptr [bp-14],dx cmp word ptr [bp-16],0x7 - jge .Ls019 - jmp .Ls027 -.Ls019: + jge .Ls018 + jmp .Ls025 +.Ls018: mov bx,word ptr [bp-20] sub bx,word ptr [bp-102] mov cx,word ptr [bp-18] @@ -243,7 +236,7 @@ mov al,byte ptr es:[bx] xor ah,ah mov word ptr [bp-76],ax -.Ls020: +.Ls019: shl word ptr [bp-76],1 mov ax,word ptr [bp-76] xor al,al @@ -258,19 +251,15 @@ add dx,ax mov word ptr [bp-46],dx cmp di,0x100 - jae .Ls023 + jae .Ls021 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls021 + M_PTC_JNE .Ls020 jmp .Ls007 -.Ls021: - mov cx,0x8 -.Ls022: - shl si,1 - rcl di,1 - loop .Ls022 +.Ls020: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -287,21 +276,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls023: +.Ls021: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-46] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls024 - jne .Ls025 + jb .Ls022 + jne .Ls023 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls025 -.Ls024: + jae .Ls023 +.Ls022: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -312,9 +301,9 @@ add word ptr [bx],ax shl word ptr [bp-26],1 cmp word ptr [bp-66],0x0 - jne .Ls027 - jmp .Ls026 -.Ls025: + jne .Ls025 + jmp .Ls024 +.Ls023: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -330,35 +319,31 @@ inc ax mov word ptr [bp-26],ax cmp word ptr [bp-66],0x0 - je .Ls027 -.Ls026: + je .Ls025 +.Ls024: cmp word ptr [bp-26],0x100 - jge .Ls027 - jmp .Ls020 -.Ls027: + jge .Ls025 + jmp .Ls019 +.Ls025: mov ax,word ptr [bp-26] cmp ax,0x100 - jl .Ls028 - jmp .Ls034 -.Ls028: + jl .Ls026 + jmp .Ls031 +.Ls026: shl ax,1 mov bx,word ptr [bp-14] add bx,ax mov word ptr [bp-40],bx cmp di,0x100 - jae .Ls031 + jae .Ls028 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls029 + M_PTC_JNE .Ls027 jmp .Ls007 -.Ls029: - mov cx,0x8 -.Ls030: - shl si,1 - rcl di,1 - loop .Ls030 +.Ls027: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -375,21 +360,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls031: +.Ls028: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-40] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls032 - jne .Ls033 + jb .Ls029 + jne .Ls030 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls033 -.Ls032: + jae .Ls030 +.Ls029: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -399,8 +384,8 @@ shr ax,cl add word ptr [bx],ax shl word ptr [bp-26],1 - jmp .Ls027 -.Ls033: + jmp .Ls025 +.Ls030: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -415,8 +400,8 @@ add ax,ax inc ax mov word ptr [bp-26],ax - jmp .Ls027 -.Ls034: + jmp .Ls025 +.Ls031: mov al,byte ptr [bp-26] mov byte ptr [bp-2],al mov bx,word ptr [bp-20] @@ -432,19 +417,19 @@ mov byte ptr es:[bx],al mov ax,word ptr [bp-16] cmp ax,0x4 - jge .Ls035 + jge .Ls032 xor ax,ax mov word ptr [bp-16],ax jmp .Ls008 -.Ls035: +.Ls032: cmp ax,0xa - jge .Ls036 + jge .Ls033 sub word ptr [bp-16],0x3 jmp .Ls008 -.Ls036: +.Ls033: sub word ptr [bp-16],0x6 jmp .Ls008 -.Ls037: +.Ls034: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -462,19 +447,15 @@ add dx,ax mov word ptr [bp-14],dx cmp di,0x100 - jae .Ls040 + jae .Ls036 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls038 + M_PTC_JNE .Ls035 jmp .Ls007 -.Ls038: - mov cx,0x8 -.Ls039: - shl si,1 - rcl di,1 - loop .Ls039 +.Ls035: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -491,21 +472,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls040: +.Ls036: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls041 - jne .Ls044 + jb .Ls037 + jne .Ls040 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls044 -.Ls041: + jae .Ls040 +.Ls037: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -527,17 +508,17 @@ mov ax,word ptr [bp-100] mov word ptr [bp-50],ax cmp word ptr [bp-16],0x7 - jge .Ls042 + jge .Ls038 xor ax,ax - jmp .Ls043 -.Ls042: + jmp .Ls039 +.Ls038: mov ax,0x3 -.Ls043: +.Ls039: mov word ptr [bp-16],ax mov bx,word ptr [bp-34] add bx,0x664 - jmp .Ls076 -.Ls044: + jmp .Ls068 +.Ls040: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -555,19 +536,15 @@ add ax,dx mov word ptr [bp-14],ax cmp di,0x100 - jae .Ls047 + jae .Ls042 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls045 + M_PTC_JNE .Ls041 jmp .Ls007 -.Ls045: - mov cx,0x8 -.Ls046: - shl si,1 - rcl di,1 - loop .Ls046 +.Ls041: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -584,11 +561,11 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls047: +.Ls042: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-12] @@ -598,15 +575,15 @@ mov word ptr [bp-80],dx mov ax,word ptr [bp-4] cmp ax,word ptr [bp-94] - jb .Ls050 - je .Ls049 -.Ls048: - jmp .Ls060 -.Ls049: + jb .Ls045 + je .Ls044 +.Ls043: + jmp .Ls054 +.Ls044: mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls048 -.Ls050: + jae .Ls043 +.Ls045: mov si,word ptr [bp-8] mov di,word ptr [bp-94] mov ax,0x800 @@ -625,20 +602,16 @@ add dx,ax mov word ptr [bp-14],dx cmp di,0x100 - jae .Ls053 + jae .Ls047 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls051 + M_PTC_JNE .Ls046 jmp .Ls007 -.Ls051: +.Ls046: mov ax,si - mov cx,0x8 -.Ls052: - shl ax,1 - rcl di,1 - loop .Ls052 + M_shld_diax_8_bxcx mov si,ax les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] @@ -655,21 +628,21 @@ mov word ptr [bp-12],bx mov ax,word ptr [bp-80] mov word ptr [bp-10],ax -.Ls053: +.Ls047: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls054 - jne .Ls056 + jb .Ls048 + jne .Ls050 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls059 -.Ls054: + jae .Ls053 +.Ls048: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -680,18 +653,18 @@ add word ptr [bx],ax mov ax,word ptr [bp-18] or ax,word ptr [bp-20] - jne .Ls055 + jne .Ls049 jmp .Ls007 -.Ls055: +.Ls049: cmp word ptr [bp-16],0x7 - jge .Ls057 + jge .Ls051 mov ax,0x9 - jmp .Ls058 -.Ls056: - jmp .Ls059 -.Ls057: + jmp .Ls052 +.Ls050: + jmp .Ls053 +.Ls051: mov ax,0xb -.Ls058: +.Ls052: mov word ptr [bp-16],ax mov bx,word ptr [bp-20] sub bx,word ptr [bp-102] @@ -716,7 +689,7 @@ mov al,byte ptr [bp-2] mov byte ptr es:[bx],al jmp .Ls008 -.Ls059: +.Ls053: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -727,8 +700,8 @@ mov ax,word ptr [bx] shr ax,cl sub word ptr [bx],ax - jmp .Ls073 -.Ls060: + jmp .Ls065 +.Ls054: sub si,word ptr [bp-8] sbb di,word ptr [bp-94] mov ax,word ptr [bp-8] @@ -747,19 +720,15 @@ add dx,ax mov word ptr [bp-14],dx cmp di,0x100 - jae .Ls063 + jae .Ls056 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls061 + M_PTC_JNE .Ls055 jmp .Ls007 -.Ls061: - mov cx,0x8 -.Ls062: - shl si,1 - rcl di,1 - loop .Ls062 +.Ls055: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -775,21 +744,21 @@ mov word ptr [bp-12],bx mov ax,word ptr [bp-80] mov word ptr [bp-10],ax -.Ls063: +.Ls056: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls064 - jne .Ls065 + jb .Ls057 + jne .Ls058 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls065 -.Ls064: + jae .Ls058 +.Ls057: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -800,8 +769,8 @@ add word ptr [bx],ax mov ax,word ptr [bp-52] mov cx,word ptr [bp-50] - jmp .Ls072 -.Ls065: + jmp .Ls064 +.Ls058: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -819,19 +788,15 @@ add ax,dx mov word ptr [bp-14],ax cmp di,0x100 - jae .Ls068 + jae .Ls060 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls066 + M_PTC_JNE .Ls059 jmp .Ls007 -.Ls066: - mov cx,0x8 -.Ls067: - shl si,1 - rcl di,1 - loop .Ls067 +.Ls059: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -848,21 +813,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls068: +.Ls060: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-14] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls069 - jne .Ls070 + jb .Ls061 + jne .Ls062 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls070 -.Ls069: + jae .Ls062 +.Ls061: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -873,8 +838,8 @@ add word ptr [bx],ax mov ax,word ptr [bp-56] mov cx,word ptr [bp-54] - jmp .Ls071 -.Ls070: + jmp .Ls063 +.Ls062: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -891,47 +856,43 @@ mov word ptr [bp-68],dx mov dx,word ptr [bp-54] mov word ptr [bp-74],dx -.Ls071: +.Ls063: mov dx,word ptr [bp-52] mov word ptr [bp-56],dx mov dx,word ptr [bp-50] mov word ptr [bp-54],dx -.Ls072: +.Ls064: mov dx,word ptr [bp-102] mov word ptr [bp-52],dx mov dx,word ptr [bp-100] mov word ptr [bp-50],dx mov word ptr [bp-102],ax mov word ptr [bp-100],cx -.Ls073: +.Ls065: cmp word ptr [bp-16],0x7 - jge .Ls074 + jge .Ls066 mov ax,0x8 - jmp .Ls075 -.Ls074: + jmp .Ls067 +.Ls066: mov ax,0xb -.Ls075: +.Ls067: mov word ptr [bp-16],ax mov bx,word ptr [bp-34] add bx,0xa68 -.Ls076: +.Ls068: mov word ptr [bp-14],bx mov bx,word ptr [bp-14] mov word ptr [bp-22],bx cmp di,0x100 - jae .Ls079 + jae .Ls070 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls077 + M_PTC_JNE .Ls069 jmp .Ls007 -.Ls077: - mov cx,0x8 -.Ls078: - shl si,1 - rcl di,1 - loop .Ls078 +.Ls069: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -948,21 +909,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls079: +.Ls070: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-22] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls080 - jne .Ls082 + jb .Ls071 + jne .Ls073 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls082 -.Ls080: + jae .Ls073 +.Ls071: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -980,10 +941,10 @@ mov word ptr [bp-22],dx xor ax,ax mov word ptr [bp-70],ax -.Ls081: +.Ls072: mov word ptr [bp-60],0x3 - jmp .Ls088 -.Ls082: + jmp .Ls078 +.Ls073: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -999,19 +960,15 @@ inc bx mov word ptr [bp-22],bx cmp di,0x100 - jae .Ls085 + jae .Ls075 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls083 + M_PTC_JNE .Ls074 jmp .Ls007 -.Ls083: - mov cx,0x8 -.Ls084: - shl si,1 - rcl di,1 - loop .Ls084 +.Ls074: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -1028,21 +985,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls085: +.Ls075: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-22] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls086 - jne .Ls087 + jb .Ls076 + jne .Ls077 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls087 -.Ls086: + jae .Ls077 +.Ls076: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -1059,8 +1016,8 @@ add dx,ax mov word ptr [bp-22],dx mov word ptr [bp-70],0x8 - jmp .Ls081 -.Ls087: + jmp .Ls072 +.Ls077: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -1076,30 +1033,26 @@ mov word ptr [bp-22],bx mov word ptr [bp-70],0x10 mov word ptr [bp-60],0x8 -.Ls088: +.Ls078: mov ax,word ptr [bp-60] mov word ptr [bp-62],ax mov word ptr [bp-24],0x1 -.Ls089: +.Ls079: mov ax,word ptr [bp-24] shl ax,1 mov bx,word ptr [bp-22] add bx,ax mov word ptr [bp-38],bx cmp di,0x100 - jae .Ls092 + jae .Ls081 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls090 + M_PTC_JNE .Ls080 jmp .Ls007 -.Ls090: - mov cx,0x8 -.Ls091: - shl si,1 - rcl di,1 - loop .Ls091 +.Ls080: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -1116,21 +1069,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls092: +.Ls081: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-38] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls093 - jne .Ls094 + jb .Ls082 + jne .Ls083 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls094 -.Ls093: + jae .Ls083 +.Ls082: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -1140,8 +1093,8 @@ shr ax,cl add word ptr [bx],ax shl word ptr [bp-24],1 - jmp .Ls095 -.Ls094: + jmp .Ls084 +.Ls083: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -1156,11 +1109,11 @@ add ax,ax inc ax mov word ptr [bp-24],ax -.Ls095: +.Ls084: dec word ptr [bp-62] - je .Ls096 - jmp .Ls089 -.Ls096: + je .Ls085 + jmp .Ls079 +.Ls085: mov cl,byte ptr [bp-60] mov ax,0x1 shl ax,cl @@ -1168,15 +1121,15 @@ mov ax,word ptr [bp-70] add word ptr [bp-24],ax cmp word ptr [bp-16],0x4 - jl .Ls097 - jmp .Ls130 -.Ls097: + jl .Ls086 + jmp .Ls116 +.Ls086: add word ptr [bp-16],0x7 mov ax,word ptr [bp-24] cmp ax,0x4 - jl .Ls098 + jl .Ls087 mov ax,0x3 -.Ls098: +.Ls087: mov cl,0x7 mov dx,ax shl dx,cl @@ -1186,26 +1139,22 @@ mov word ptr [bp-14],ax mov word ptr [bp-92],0x6 mov word ptr [bp-32],0x1 -.Ls099: +.Ls088: mov ax,word ptr [bp-32] shl ax,1 mov bx,word ptr [bp-14] add bx,ax mov word ptr [bp-42],bx cmp di,0x100 - jae .Ls102 + jae .Ls090 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls100 + M_PTC_JNE .Ls089 jmp .Ls007 -.Ls100: - mov cx,0x8 -.Ls101: - shl si,1 - rcl di,1 - loop .Ls101 +.Ls089: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -1222,21 +1171,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls102: +.Ls090: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-42] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls103 - jne .Ls104 + jb .Ls091 + jne .Ls092 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls104 -.Ls103: + jae .Ls092 +.Ls091: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -1246,8 +1195,8 @@ shr ax,cl add word ptr [bx],ax shl word ptr [bp-32],1 - jmp .Ls105 -.Ls104: + jmp .Ls093 +.Ls092: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -1262,15 +1211,15 @@ add ax,ax inc ax mov word ptr [bp-32],ax -.Ls105: +.Ls093: dec word ptr [bp-92] - je .Ls106 - jmp .Ls099 -.Ls106: + je .Ls094 + jmp .Ls088 +.Ls094: sub word ptr [bp-32],0x40 mov ax,word ptr [bp-32] cmp ax,0x4 - jl .Ls109 + jl .Ls097 sar ax,1 dec ax mov word ptr [bp-36],ax @@ -1281,14 +1230,14 @@ xor ax,ax mov word ptr [bp-100],ax cmp word ptr [bp-32],0xe - jge .Ls110 + jge .Ls098 mov cx,word ptr [bp-36] - jcxz .Ls108 -.Ls107: + jcxz .Ls096 +.Ls095: shl word ptr [bp-102],1 rcl word ptr [bp-100],1 - loop .Ls107 -.Ls108: + loop .Ls095 +.Ls096: mov dx,word ptr [bp-102] shl dx,1 mov ax,word ptr [bp-34] @@ -1300,26 +1249,22 @@ dec dx dec dx mov word ptr [bp-14],dx - jmp .Ls119 -.Ls109: - jmp .Ls128 -.Ls110: + jmp .Ls106 +.Ls097: + jmp .Ls114 +.Ls098: sub word ptr [bp-36],0x4 -.Ls111: +.Ls099: cmp di,0x100 - jae .Ls114 + jae .Ls101 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls112 + M_PTC_JNE .Ls100 jmp .Ls007 -.Ls112: - mov cx,0x8 -.Ls113: - shl si,1 - rcl di,1 - loop .Ls113 +.Ls100: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -1336,59 +1281,55 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls114: +.Ls101: shr di,1 rcr si,1 shl word ptr [bp-102],1 rcl word ptr [bp-100],1 mov ax,word ptr [bp-4] cmp di,ax - jb .Ls115 - jne .Ls116 + jb .Ls102 + jne .Ls103 cmp si,word ptr [bp-6] - ja .Ls116 -.Ls115: + ja .Ls103 +.Ls102: sub word ptr [bp-6],si sbb word ptr [bp-4],di or byte ptr [bp-102],0x1 -.Ls116: +.Ls103: dec word ptr [bp-36] - je .Ls117 - jmp .Ls111 -.Ls117: + je .Ls104 + jmp .Ls099 +.Ls104: mov bx,word ptr [bp-34] add bx,0x644 mov word ptr [bp-14],bx mov cx,0x4 -.Ls118: +.Ls105: shl word ptr [bp-102],1 rcl word ptr [bp-100],1 - loop .Ls118 + loop .Ls105 mov word ptr [bp-36],0x4 -.Ls119: +.Ls106: mov ax,0x1 mov word ptr [bp-64],ax mov word ptr [bp-48],ax -.Ls120: +.Ls107: mov ax,word ptr [bp-48] shl ax,1 mov bx,word ptr [bp-14] add bx,ax mov word ptr [bp-44],bx cmp di,0x100 - jae .Ls123 + jae .Ls109 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls121 + M_PTC_JNE .Ls108 jmp .Ls007 -.Ls121: - mov cx,0x8 -.Ls122: - shl si,1 - rcl di,1 - loop .Ls122 +.Ls108: + M_shld_disi_8_bxcx les bx,dword ptr [bp-12] mov al,byte ptr es:[bx] mov byte ptr [bp-90],al @@ -1405,21 +1346,21 @@ M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls123: +.Ls109: M_shrd_11_disi_bp -96 -98 mov bx,word ptr [bp-44] mov bx,word ptr [bx] - M_LMUL_dxax_00bx + M_U4M_dxax_00bx mov word ptr [bp-8],ax mov word ptr [bp-94],dx mov ax,word ptr [bp-4] cmp ax,dx - jb .Ls124 - jne .Ls125 + jb .Ls110 + jne .Ls111 mov ax,word ptr [bp-6] cmp ax,word ptr [bp-8] - jae .Ls125 -.Ls124: + jae .Ls111 +.Ls110: mov si,word ptr [bp-8] mov di,dx mov ax,0x800 @@ -1429,8 +1370,8 @@ shr ax,cl add word ptr [bx],ax shl word ptr [bp-48],1 - jmp .Ls126 -.Ls125: + jmp .Ls112 +.Ls111: sub si,word ptr [bp-8] sbb di,dx mov ax,word ptr [bp-8] @@ -1449,37 +1390,37 @@ cwd or word ptr [bp-102],ax or word ptr [bp-100],dx -.Ls126: +.Ls112: shl word ptr [bp-64],1 dec word ptr [bp-36] - je .Ls127 - jmp .Ls120 -.Ls127: - jmp .Ls129 -.Ls128: + je .Ls113 + jmp .Ls107 +.Ls113: + jmp .Ls115 +.Ls114: cwd mov word ptr [bp-102],ax mov word ptr [bp-100],dx -.Ls129: +.Ls115: add word ptr [bp-102],0x1 adc word ptr [bp-100],0x0 mov ax,word ptr [bp-100] or ax,word ptr [bp-102] - jne .Ls130 - jmp .Ls136 -.Ls130: + jne .Ls116 + jmp .Ls122 +.Ls116: add word ptr [bp-24],0x2 mov ax,word ptr [bp-100] cmp ax,word ptr [bp-18] - jbe .Ls132 -.Ls131: + jbe .Ls118 +.Ls117: jmp .Ls007 -.Ls132: - jne .Ls133 +.Ls118: + jne .Ls119 mov ax,word ptr [bp-102] cmp ax,word ptr [bp-20] - ja .Ls131 -.Ls133: + ja .Ls117 +.Ls119: mov bx,word ptr [bp-20] sub bx,word ptr [bp-102] mov cx,word ptr [bp-18] @@ -1504,34 +1445,34 @@ mov al,byte ptr [bp-2] mov byte ptr es:[bx],al cmp word ptr [bp-24],0x0 - jne .Ls135 -.Ls134: + jne .Ls121 +.Ls120: jmp .Ls008 -.Ls135: +.Ls121: mov ax,word ptr [bp-18] cmp ax,word ptr [bp+26] - jb .Ls133 - jne .Ls134 + jb .Ls119 + jne .Ls120 mov ax,word ptr [bp-20] cmp ax,word ptr [bp+24] - jb .Ls133 - jmp .Ls134 -.Ls136: + jb .Ls119 + jmp .Ls120 +.Ls122: cmp di,0x100 - jae .Ls138 + jae .Ls124 mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp-30] mov cx,word ptr [bp-28] - M_PTC_JNE .Ls137 + M_PTC_JNE .Ls123 jmp .Ls007 -.Ls137: +.Ls123: mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] M_PIA1 mov word ptr [bp-12],ax mov word ptr [bp-10],dx -.Ls138: +.Ls124: mov ax,word ptr [bp-12] mov dx,word ptr [bp-10] mov bx,word ptr [bp+10] @@ -1546,7 +1487,7 @@ mov ax,word ptr [bp-18] mov word ptr [bx+2],ax xor ax,ax -.Ls139: +.Ls125: mov sp,bp pop bp pop di diff --git a/src/stub/src/arch/i086/lzma_m.h b/src/stub/src/arch/i086/lzma_m.h index fef1cdbd..a8608cf9 100644 --- a/src/stub/src/arch/i086/lzma_m.h +++ b/src/stub/src/arch/i086/lzma_m.h @@ -144,11 +144,11 @@ L1: /************************************************************************* -// support macros: LMUL, shld, shrd +// support macros: U4M, shld, shrd **************************************************************************/ // umul32: dx:ax = dx:ax * 00:bx -.macro M_LMUL_dxax_00bx +.macro M_U4M_dxax_00bx // mult high-word mov cx, ax // save ax mov ax, dx @@ -162,7 +162,7 @@ L1: // umul32: dx:ax = dx:ax * word ptr [bx] -.macro M_LMUL_dxax_00bx_ptr +.macro M_U4M_dxax_00bx_ptr // mult high-word mov cx, ax // save ax mov ax, dx @@ -176,7 +176,7 @@ L1: // umul32: dx:ax = ax:cx * 00:bx -.macro M_LMUL_axcx_00bx +.macro M_U4M_axcx_00bx // mult high-word mul bx xchg ax, cx // save high-word result, get low @@ -187,14 +187,95 @@ L1: .endm +// umul32: dx:ax = dx:ax * 0x0600 +.macro M_U4M_dxax_0x0600 + // FIXME: compute clocks and optimize this +#if 1 + // code size: 18 bytes + // i086: > 140 clocks (mul needs 70 clocks) + // i286: > 26 clocks (mul needs 13 clocks) + mov bx, 0x300 + M_U4M_dxax_00bx + shl ax + rcl dx +#elif 1 + // code size: 14 bytes + // i086: > 140 clocks (mul needs 70 clocks) + // i286: > 26 clocks (mul needs 13 clocks) + mov bx, 0x600 + M_U4M_dxax_00bx +#else + // code size: 16+8 == 24 bytes + // i086: 18+9 == 27 clocks + // i286: 16+8 == 24 clocks + // FIXME: can we further optimize this ? + shl ax + rcl dx // dx:ax <<= 1 v * 2 + mov cx, dx + mov bx, ax // cx:bx = dx:ax v * 2 + shl ax + rcl dx // dx:ax <<= 1 v * 4 + add ax, bx + adc dx, cx // dx:ax += cx:bx v * 6 + M_shld_8 // dx:ax <<= 8 v * 0x600 +#endif +.endm + + // shld: dx:ax <<= 8 .macro M_shld_8 + // code size: 8 bytes + // i086: 9 clocks + // i286: 8 clocks mov dh, dl mov dl, ah mov ah, al xor al, al .endm + +// shld: di:si <<= 8; bx and cx are free +.macro M_shld_disi_8_bxcx + // FIXME: compute clocks and optimize this +#if 1 + local L1 + mov cx, 8 +L1: shl si + rcl di + loop L1 +#else + mov bx, di + mov cx, si + mov bh, bl + mov bl, ch + mov ch, cl + xor cl, cl + mov di, bx + mov si, cx +#endif +.endm + + +// shld: di:ax <<= 8; bx and cx are free +.macro M_shld_diax_8_bxcx + // FIXME: compute clocks and optimize this +#if 1 + local L1 + mov cx, 8 +L1: shl ax + rcl di + loop L1 +#else + mov bx, di + mov bh, bl + mov bl, ah + mov ah, al + xor al, al + mov di, bx +#endif +.endm + + .macro M_shld_8_bp h l mov dx, word ptr[bp+h] mov ax, word ptr[bp+l]