Показать сообщение отдельно
  #6  
Старый 26.04.2013, 07:45
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Именно ЛЗО нужен? Можно ЛЗМА взять (он довольно сильно жмет), он полностью на паскале есть.
И да, в блоке asm не судьба было дизассемблировать?

Засунул твой код в дизасм
Код:
                push    ecx
                push    ebx
                push    esi
                mov     eax, [ebp+8]
                mov     edx, [ebp+0Ch]
                add     edx, eax
                mov     esi, eax
                mov     [ebp-4], edx
                xor     edx, edx
                mov     ecx, [ebp+14h]
                mov     [ecx], edx
                mov     al, [esi]
                mov     edx, [ebp+10h]
                cmp     al, 11h
                jbe     short loc_40103C
                xor     ecx, ecx
                mov     cl, al
                add     ecx, 0FFFFFFEFh
                inc     esi
                cmp     ecx, 4
                jb      loc_4011FA

loc_401031:
                mov     al, [esi]
                inc     esi
                mov     [edx], al
                inc     edx
                dec     ecx
                jnz     short loc_401031
                jmp     short loc_4010A2


loc_40103C:
                xor     ecx, ecx
                mov     cl, [esi]
                inc     esi
                cmp     ecx, 10h
                jnb     loc_4010D7
                test    ecx, ecx
                jnz     short loc_401066
                jmp     short loc_401057


loc_401050:
                add     ecx, 0FFh
                inc     esi

loc_401057:
                cmp     byte ptr [esi], 0
                jz      short loc_401050
                xor     eax, eax
                mov     al, [esi]
                add     eax, 0Fh
                add     ecx, eax
                inc     esi

loc_401066:
                mov     eax, [esi]
                add     esi, 4
                mov     [edx], eax
                add     edx, 4
                dec     ecx
                jz      short loc_4010A2
                cmp     ecx, 4
                jb      short loc_401099

loc_401078:
                mov     eax, [esi]
                mov     [edx], eax
                add     edx, 4
                add     esi, 4
                sub     ecx, 4
                cmp     ecx, 4
                jnb     short loc_401078
                test    ecx, ecx
                jbe     short loc_4010A2

loc_40108E:
                mov     al, [esi]
                inc     esi
                mov     [edx], al
                inc     edx
                dec     ecx
                jnz     short loc_40108E
                jmp     short loc_4010A2


loc_401099:
                mov     al, [esi]
                inc     esi
                mov     [edx], al
                inc     edx
                dec     ecx
                jnz     short loc_401099

loc_4010A2:
                xor     ecx, ecx
                mov     cl, [esi]
                inc     esi
                cmp     ecx, 10h
                jnb     short loc_4010D7
                shr     ecx, 2
                lea     eax, [edx-801h]
                sub     eax, ecx
                xor     ecx, ecx
                mov     cl, [esi]
                inc     esi
                shl     ecx, 2
                sub     eax, ecx
                mov     cl, [eax]
                inc     eax
                mov     [edx], cl
                inc     edx
                mov     cl, [eax]
                inc     eax
                mov     [edx], cl
                inc     edx
                mov     al, [eax]
                mov     [edx], al
                inc     edx
                jmp     loc_4011EA


loc_4010D7:
                cmp     ecx, 40h
                jb      short loc_4010FC
                mov     ebx, ecx
                lea     eax, [edx-1]
                shr     ebx, 2
                and     ebx, 7
                sub     eax, ebx
                xor     ebx, ebx
                mov     bl, [esi]
                inc     esi
                shl     ebx, 3
                shr     ecx, 5
                sub     eax, ebx
                dec     ecx
                jmp     loc_4011D5


loc_4010FC:
                cmp     ecx, 20h
                jb      short loc_401130
                and     ecx, 1Fh
                test    ecx, ecx
                jnz     short loc_401120
                jmp     short loc_401111


loc_40110A:
                add     ecx, 0FFh
                inc     esi

loc_401111:                             ; CODE XREF: start+108j
                cmp     byte ptr [esi], 0
                jz      short loc_40110A
                xor     eax, eax
                mov     al, [esi]
                add     eax, 1Fh
                add     ecx, eax
                inc     esi

loc_401120:                             ; CODE XREF: start+106j
                movzx   ebx, word ptr [esi]
                sar     ebx, 2
                lea     eax, [edx-1]
                sub     eax, ebx
                add     esi, 2
                jmp     short loc_401199


loc_401130:                             ; CODE XREF: start+FFj
                cmp     ecx, 10h
                jb      short loc_40117A
                mov     eax, edx
                mov     ebx, ecx
                and     ebx, 8
                shl     ebx, 0Bh
                sub     eax, ebx
                and     ecx, 7
                test    ecx, ecx
                jnz     short loc_401160
                jmp     short loc_401151


loc_40114A:                             ; CODE XREF: start+154j
                add     ecx, 0FFh
                inc     esi

loc_401151:
                cmp     byte ptr [esi], 0
                jz      short loc_40114A
                xor     ebx, ebx
                mov     bl, [esi]
                add     ebx, 7
                add     ecx, ebx
                inc     esi

loc_401160:
                movzx   ebx, word ptr [esi]
                sar     ebx, 2
                sub     eax, ebx
                add     esi, 2
                cmp     edx, eax
                jz      loc_40120D
                sub     eax, 4000h
                jmp     short loc_401199


loc_40117A:
                shr     ecx, 2
                lea     eax, [edx-1]
                sub     eax, ecx
                xor     ecx, ecx
                mov     cl, [esi]
                inc     esi
                shl     ecx, 2
                sub     eax, ecx
                mov     cl, [eax]
                inc     eax
                mov     [edx], cl
                inc     edx
                mov     al, [eax]
                mov     [edx], al
                inc     edx
                jmp     short loc_4011EA


loc_401199:
                cmp     ecx, 6
                jb      short loc_4011D5
                mov     ebx, edx
                sub     ebx, eax
                cmp     ebx, 4
                jl      short loc_4011D5
                mov     ebx, [eax]
                add     eax, 4
                mov     [edx], ebx
                add     edx, 4
                sub     ecx, 2

loc_4011B4:
                mov     ebx, [eax]
                mov     [edx], ebx
                add     edx, 4
                add     eax, 4
                sub     ecx, 4
                cmp     ecx, 4
                jnb     short loc_4011B4
                test    ecx, ecx
                jbe     short loc_4011EA

loc_4011CA:
                mov     bl, [eax]
                inc     eax
                mov     [edx], bl
                inc     edx
                dec     ecx
                jnz     short loc_4011CA
                jmp     short loc_4011EA


loc_4011D5:
                mov     bl, [eax]
                inc     eax
                mov     [edx], bl
                inc     edx
                mov     bl, [eax]
                inc     eax
                mov     [edx], bl
                inc     edx

loc_4011E1:
                mov     bl, [eax]
                inc     eax
                mov     [edx], bl
                inc     edx
                dec     ecx
                jnz     short loc_4011E1

loc_4011EA:
                xor     ecx, ecx
                mov     cl, [esi-2]
                and     ecx, 3
                test    ecx, ecx
                jz      loc_40103C

loc_4011FA:
                mov     al, [esi]
                inc     esi
                mov     [edx], al
                inc     edx
                dec     ecx
                jnz     short loc_4011FA
                xor     ecx, ecx
                mov     cl, [esi]
                inc     esi
                jmp     loc_4010D7


loc_40120D:
                sub     edx, [ebp+10h]
                mov     eax, [ebp+14h]
                mov     [eax], edx
                cmp     esi, [ebp-4]
                jnz     short loc_40121E
                xor     eax, eax
                jmp     short loc_40122B


loc_40121E:
                mov     eax, 0FFFFFFF8h
                cmp     esi, [ebp-4]
                jb      short loc_40122B
                add     eax, 4

loc_40122B:
                pop     esi
                pop     ebx
                pop     ecx
                pop     ebp
                retn
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием