Архиваторы...

Тема в разделе "WASM.BEGINNERS", создана пользователем kodermax, 12 мар 2007.

  1. kodermax

    kodermax New Member

    Публикаций:
    0
    Регистрация:
    5 фев 2007
    Сообщения:
    26
    Подскажиет какие-нибудь простенькие архиваторы с исходниками на Asm для win32 не с графическим интерфейсом
     
  2. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    Возьми иду и любой дос архивахор
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Тебе просто алгоритмы сжатия? Тогда Google - он тебе описание и хафмана, и LZ выдаст. А реализовать и сам сможешь. Кстати, по сжатию тут где-то недавно пробегал топик
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    я писал консольный архиватор на алгоритме LZ. Он мог создавать многофайловые архивы. Правда я кудато затерял сорсы ((
     
  5. Perre

    Perre New Member

    Публикаций:
    0
    Регистрация:
    6 апр 2007
    Сообщения:
    100
    изначально процедура была написана на си её декомпелирывали)

    Упаковка
    lzwGetRequiredMemSize(Dword bSize);
    вход размер не упакованых данных выход требуемый размер буфера

    lzwCompress(Byte *data, Dword bSize, Byte *buff);
    адрес буфера исходных даных
    размер буфера
    адрес буфера получаемых данных
    выход eax - размер упакованых данных

    распаковка точно токже, но
    lzwGetDecompressedSize(Byte *compressedData);
    zwDecompress(Byte *data, Dword bSize, Byte *buff);


    (процеруру распаковки не проверял, если)

    Код (Text):
    1. lzwGetRequiredMemSize@4 proc
    2. arg_0       = dword ptr  4
    3.         mov eax, [esp+arg_0]
    4.         test    eax, eax
    5.         jnz short loc_402830
    6.         mov eax, 0Ch
    7.         ret 4
    8. loc_402830: test    al, 1
    9.         jz  short loc_402837
    10.         add eax, 1
    11. loc_402837: lea eax, [eax+eax*2]
    12.         shr eax, 1
    13.         add eax, 0Ch
    14.         ret 4
    15. lzwGetRequiredMemSize@4 endp
    16.  
    17. lzwGetDecompressedSize@4 proc
    18. arg_0       = dword ptr  4
    19.         mov eax, [esp+arg_0]
    20.         cmp dword ptr [eax], 21575A4Ch
    21.         jz  short loc_402C11
    22.         xor eax, eax
    23.         ret 4
    24. loc_402C11: mov eax, [eax+4]
    25.         ret 4
    26. lzwGetDecompressedSize@4 endp
    27.  
    28. lzwCompress@12  proc
    29. arg_0       = dword ptr  4
    30. arg_4       = dword ptr  8
    31. arg_8       = dword ptr  0Ch
    32. arg_10      = dword ptr  14h
    33. arg_14      = dword ptr  18h
    34. arg_18      = dword ptr  1Ch
    35. arg_30      = byte ptr  34h
    36. arg_C02C    = dword ptr  0C030h
    37. arg_C030    = dword ptr  0C034h
    38. arg_C034    = dword ptr  0C038h
    39. arg_C03B    = byte ptr  0C03Fh
    40. arg_C03C    = dword ptr  0C040h
    41. arg_C040    = dword ptr  0C044h
    42. arg_C044    = dword ptr  0C048h
    43. arg_C048    = dword ptr  0C04Ch
    44. arg_C04C    = dword ptr  0C050h
    45. arg_C050    = dword ptr  0C054h
    46. arg_C054    = dword ptr  0C058h
    47. arg_C058    = dword ptr  0C05Ch
    48. arg_C05C    = dword ptr  0C060h
    49. arg_C060    = dword ptr  0C064h
    50. arg_C064    = dword ptr  0C068h
    51. arg_C068    = dword ptr  0C06Ch
    52. arg_C06C    = dword ptr  0C070h
    53. arg_18068   = dword ptr  1806Ch
    54. arg_1806C   = dword ptr  18070h
    55. arg_18070   = dword ptr  18074h
    56.         mov eax, 0C02Ch
    57.         call    sub_402CD0
    58.         mov eax, [esp+arg_C02C]
    59.         push    ebx
    60.         push    ebp
    61.         mov ebp, [esp+8+arg_C030]
    62.         push    esi
    63.         mov esi, [esp+0Ch+arg_C034]
    64.         push    edi
    65.         push    ebp
    66.         xor bl, bl
    67.         xor edi, edi
    68.         push    eax
    69.         mov [esp+1Bh], bl
    70.         mov [esp+18h+arg_18], 9
    71.         mov [esp+18h+arg_14], 100h
    72.     ;   mov dword_404720, edi
    73.         mov dword ptr [esi], 21575A4Ch
    74.         mov [esi+4], ebp
    75.         call    sub_402850
    76.         mov ecx, 100h
    77.         mov [esi+8], eax
    78.         add esp, 8
    79.         mov [esp+10h+arg_8], 0Ch
    80.         mov [esp+10h+arg_10], edi
    81.         mov [esp+10h+arg_0], ecx
    82.         lea eax, [esp+10h+arg_30]
    83. loc_402900: mov [eax-8], edi
    84.         mov [eax], edi
    85.         mov dword ptr [eax-4], 1
    86.         add eax, 0Ch
    87.         sub ecx, 1
    88.         jnz short loc_402900
    89.         xor ecx, ecx
    90.         cmp ebp, edi
    91.         mov [esp+10h+arg_4], ecx
    92.         ja  short loc_40293B
    93. loc_40291E: mov eax, [esp+10h+arg_8]
    94.         pop edi
    95.         pop esi
    96.         pop ebp
    97.         pop ebx
    98.         add esp, 0C02Ch
    99.         ret 0Ch
    100.         align 4
    101. loc_402930: mov ebp, [esp-0C02Ch+arg_1806C]
    102.         mov ecx, [esp-0C02Ch+arg_C040]
    103. loc_40293B: mov edx, [esp-0C02Ch+arg_18068]
    104.         movzx   edi, byte ptr [edx+ecx]
    105.         add edx, ecx
    106.         lea eax, [edi+edi*2]
    107.         mov eax, [esp+eax*4-0C02Ch+arg_C06C]
    108.         test    eax, eax
    109.         mov [esp-0C02Ch+arg_C05C], edx
    110.         mov [esp-0C02Ch+arg_C060], edi
    111.         mov [esp-0C02Ch+arg_C048], edi
    112.         jz  loc_402A17
    113.         mov esi, 1
    114.         add ecx, esi
    115.         cmp ecx, ebp
    116.         mov [esp-0C02Ch+arg_C058], eax
    117.         jnb loc_402A17
    118.         jmp short loc_402988
    119. ;----------------------------------------------
    120.         jmp short loc_402980
    121. ;-----------------------------------------------
    122.         align 8
    123. loc_402980: mov eax, [esp-0C02Ch+arg_C058]
    124.         mov edx, [esp-0C02Ch+arg_C05C]
    125. loc_402988: test    eax, eax
    126.         jz  loc_402A17
    127.         lea edi, [eax+eax*2]
    128.         add edi, edi
    129.         add edi, edi
    130.         mov ebp, [esp+edi-0C02Ch+arg_C068]
    131.         cmp ebp, esi
    132.         jbe short loc_4029F7
    133.         mov ecx, [esp-0C02Ch+arg_C040]
    134.         lea eax, [ecx+ebp]
    135.         cmp eax, [esp-0C02Ch+arg_1806C]
    136.         ja  short loc_4029F7
    137.         mov ecx, [esp+edi-0C02Ch+arg_C064]
    138.         mov dl, [edx+esi]
    139.         mov ebx, [esp-0C02Ch+arg_18068]
    140.         lea eax, [ecx+esi]
    141.         cmp dl, [eax+ebx]
    142.         jnz short loc_4029F3
    143.         xor eax, eax
    144.         mov dl, 1
    145.         add ecx, ebx
    146.         jmp short loc_4029D0
    147.         align 4
    148. loc_4029D0: cmp eax, ebp
    149.         mov bl, [esp-0C02Ch+arg_C03B]
    150.         jnb loc_402B16
    151.         mov ebx, [esp-0C02Ch+arg_C05C]
    152.         mov bl, [ebx+eax]
    153.         cmp bl, [ecx]
    154.         jz  short loc_4029E9
    155.         xor dl, dl
    156. loc_4029E9: add eax, 1
    157.         add ecx, 1
    158.         test    dl, dl
    159.         jnz short loc_4029D0
    160. loc_4029F3: mov bl, [esp-0C02Ch+arg_C03B]
    161. loc_4029F7: mov edx, [esp-0C02Ch+arg_C040]
    162.         mov ecx, [esp+edi-0C02Ch+arg_C06C]
    163.         mov edi, [esp-0C02Ch+arg_C048]
    164.         lea eax, [esi+edx]
    165.         cmp eax, [esp-0C02Ch+arg_1806C]
    166.         mov [esp-0C02Ch+arg_C058], ecx
    167.         jb  loc_402980
    168. loc_402A17: mov eax, [esp-0C02Ch+arg_C04C]
    169.         cmp eax, 0F00h
    170.         jnz loc_402B2D
    171.         mov edx, [esp-0C02Ch+arg_C03C]
    172.         mov esi, [esp-0C02Ch+arg_18068]
    173.         lea eax, [edx+edx*2]
    174.         add eax, eax
    175.         add eax, eax
    176.         mov ecx, [esp+eax-0C02Ch+arg_C064]
    177.         movzx   ecx, byte ptr [ecx+esi]
    178.         mov eax, [esp+eax-0C02Ch+arg_C06C]
    179.         add edx, 1
    180.         lea ecx, [ecx+ecx*2]
    181.         mov [esp+ecx*4-0C02Ch+arg_C06C], eax
    182.         mov eax, edx
    183.         mov [esp-0C02Ch+arg_C03C], edx
    184.         cdq
    185.         and edx, 0FFFh
    186.         add eax, edx
    187.         sar eax, 0Ch
    188.         jz  short loc_402A6A
    189.         mov [esp-0C02Ch+arg_C03C], 100h
    190. loc_402A6A: mov ecx, [esp-0C02Ch+arg_C03C]
    191.         add ecx, 0FFFFFFFFh
    192.         cmp ecx, 0FFh
    193.         jnz short loc_402A7E
    194.         mov ecx, 0FFFh
    195. loc_402A7E: mov eax, [esp-0C02Ch+arg_C060]
    196.         lea edx, [eax+eax*2]
    197.         cmp [esp+edx*4-0C02Ch+arg_C06C], 0
    198.         lea edx, [esp+edx*4-0C02Ch+arg_C06C]
    199.         jz  short loc_402AA0
    200. loc_402A90: mov eax, [edx]
    201.         lea edx, [eax+eax*2]
    202.         cmp [esp+edx*4-0C02Ch+arg_C06C], 0
    203.         lea edx, [esp+edx*4-0C02Ch+arg_C06C]
    204.         jnz short loc_402A90
    205. loc_402AA0: mov ebp, [esp-0C02Ch+arg_C040]
    206.         lea edx, [eax+eax*2]
    207.         mov [esp+edx*4-0C02Ch+arg_C06C], ecx
    208.         lea eax, [ecx+ecx*2]
    209.         add eax, eax
    210.         add eax, eax
    211.         lea edx, [edi+edi*2]
    212.         mov [esp+eax-0C02Ch+arg_C064], ebp
    213.         mov edx, [esp+edx*4-0C02Ch+arg_C068]
    214.         add edx, 1
    215.         cmp [esp-0C02Ch+arg_C04C], 0F00h
    216.         lea ecx, [esp+eax-0C02Ch+arg_C068]
    217.         mov [ecx], edx
    218.         mov [esp+eax-0C02Ch+arg_C06C], 0
    219.         jge short loc_402ADD
    220.         add [esp-0C02Ch+arg_C04C], 1
    221. loc_402ADD: mov ecx, [esp-0C02Ch+arg_C054]
    222.         mov eax, edx
    223.         mov edx, 1
    224.         shl edx, cl
    225.         lea ebp, [eax+ebp-1]
    226.         mov [esp-0C02Ch+arg_C040], ebp
    227.     ;   mov dword_404720, ebp
    228.         cmp edx, [esp-0C02Ch+arg_C050]
    229.         jnz short loc_402B0A
    230.         cmp ecx, 0Ch
    231.         jge short loc_402B0A
    232.         add ecx, 1
    233.         mov [esp-0C02Ch+arg_C054], ecx
    234. loc_402B0A: xor esi, esi
    235.         test    ecx, ecx
    236.         jle loc_402BB2
    237.         jmp short loc_402B44
    238. loc_402B16: test    dl, dl
    239.         jz  loc_4029F7
    240.         mov eax, [esp-0C02Ch+arg_C058]
    241.         mov esi, ebp
    242.         mov [esp-0C02Ch+arg_C048], eax
    243.         jmp loc_4029F7
    244. loc_402B2D: jge loc_402A6A
    245.         mov ecx, [esp-0C02Ch+arg_C03C]
    246.         add ecx, eax
    247.         jmp loc_402A7E
    248.         align 4
    249. loc_402B40: mov edi, [esp-0C02Ch+arg_C048]
    250. loc_402B44: mov eax, [esp-0C02Ch+arg_C044]
    251.         mov ecx, [esp-0C02Ch+arg_18070]
    252.         mov dl, [eax+ecx]
    253.         mov ecx, esi
    254.         mov eax, 1
    255.         shl eax, cl
    256.         mov ecx, 7
    257.         test    edi, eax
    258.         movzx   eax, bl
    259.         mov bl, 1
    260.         jz  short loc_402B71
    261.         sub ecx, eax
    262.         shl bl, cl
    263.         or  dl, bl
    264.         jmp short loc_402B79
    265. loc_402B71: sub ecx, eax
    266.         shl bl, cl
    267.         not bl
    268.         and dl, bl
    269. loc_402B79: mov ecx, [esp-0C02Ch+arg_C044]
    270.         mov edi, [esp-0C02Ch+arg_18070]
    271.         lea ebx, [eax+1]
    272.         and ebx, 80000007h
    273.         mov [ecx+edi], dl
    274.         jns short loc_402B97
    275.         dec ebx
    276.         or  ebx, 0FFFFFFF8h
    277.         inc ebx
    278. loc_402B97: test    bl, bl
    279.         jnz short loc_402BA5
    280.         add ecx, 1
    281.         mov [esp-0C02Ch+arg_C044], ecx
    282.         mov [ecx+edi], bl
    283. loc_402BA5: add esi, 1
    284.         cmp esi, [esp-0C02Ch+arg_C054]
    285.         jl  short loc_402B40
    286.         mov [esp-0C02Ch+arg_C03B], bl
    287. loc_402BB2: add [esp-0C02Ch+arg_C050], 1
    288.         cmp ebp, [esp-0C02Ch+arg_1806C]
    289.         jb  loc_402930
    290.         test    bl, bl
    291.         jz  loc_40291E
    292.         mov eax, [esp-0C02Ch+arg_C044]
    293.         pop edi
    294.         pop esi
    295.         pop ebp
    296.         add eax, 1
    297.         pop ebx
    298.         add esp, 0C02Ch
    299.         ret 0Ch
    300. lzwCompress@12  endp ; sp =  18068h
    301.  
    302. sub_402CD0  proc    ; CODE XREF: sub_402890+5p
    303. arg_0       = byte ptr  8
    304.         push    ecx
    305.         cmp eax, 1000h
    306.         lea ecx, [esp+arg_0]
    307.         jb  short loc_402CF0
    308. loc_402CDC: sub ecx, 1000h
    309.         sub eax, 1000h
    310.         test    [ecx], eax
    311.         cmp eax, 1000h
    312.         jnb short loc_402CDC
    313. loc_402CF0: sub ecx, eax
    314.         mov eax, esp
    315.         test    [ecx], eax
    316.         mov esp, ecx
    317.         mov ecx, [eax]
    318.         mov eax, [eax+4]
    319.         push    eax
    320.         ret
    321. sub_402CD0  endp
    322.  
    323. sub_402850  proc
    324. arg_0       = dword ptr  8
    325. arg_4       = dword ptr  0Ch
    326.         push    ebp
    327.         mov ebp, esp
    328.         cmp [ebp+arg_4], 0
    329.         jnz short loc_40285D
    330.         xor eax, eax
    331.         pop ebp
    332.         ret
    333. loc_40285D: push    esi
    334.         push    edi
    335.         mov esi, [ebp+arg_0]
    336.         mov edi, [ebp+arg_4]
    337.         cld
    338.         xor edx, edx
    339.         dec edx
    340. loc_402869: xor eax, eax
    341.         lodsb
    342.         xor al, dl
    343.         xor ecx, ecx
    344.         mov cl, 8
    345.         shr edx, cl
    346. loc_402874: clc
    347.         rcr eax, 1
    348.         jnb short loc_40287E
    349.         xor eax, 0EDB88320h
    350. loc_40287E: loop    loc_402874
    351.         xor edx, eax
    352.         dec edi
    353.         jnz short loc_402869
    354.         mov eax, edx
    355.         not eax
    356.         pop edi
    357.         pop esi
    358.         pop ebp
    359.         ret
    360. sub_402850  endp
    361.  
    362. lzwDecompress@12    proc
    363. var_10      = byte ptr -10h
    364. arg_0       = dword ptr  4
    365. arg_4       = dword ptr  8
    366. arg_8       = dword ptr  0Ch
    367. arg_C       = dword ptr  10h
    368. arg_10      = dword ptr  14h
    369. arg_14      = dword ptr  18h
    370. arg_18      = dword ptr  1Ch
    371. arg_28      = byte ptr  2Ch
    372. arg_C024    = dword ptr  0C028h
    373. arg_C028    = dword ptr  0C02Ch
    374. arg_C02C    = dword ptr  0C030h
    375. arg_C033    = byte ptr  0C037h
    376. arg_C034    = dword ptr  0C038h
    377. arg_C038    = dword ptr  0C03Ch
    378. arg_C03C    = dword ptr  0C040h
    379. arg_C040    = dword ptr  0C044h
    380. arg_C044    = dword ptr  0C048h
    381. arg_C048    = dword ptr  0C04Ch
    382. arg_C04C    = dword ptr  0C050h
    383. arg_C050    = dword ptr  0C054h
    384. arg_C054    = dword ptr  0C058h
    385. arg_C058    = dword ptr  0C05Ch
    386. arg_C05C    = dword ptr  0C060h
    387. arg_18058   = dword ptr  1805Ch
    388. arg_18060   = dword ptr  18064h
    389.         mov eax, 0C024h
    390.         call    sub_402CD0
    391.         mov ecx, [esp+arg_C028]
    392.         cmp ecx, 0Ch
    393.         ja  short loc_402C84
    394.         mov eax, 5
    395.         add esp, 0C024h
    396.         ret 0Ch
    397. loc_402C84: mov eax, [esp+arg_C024]
    398.         cmp dword ptr [eax], 21575A4Ch
    399.         jz  short loc_402CA1
    400.         mov eax, 1
    401.         add esp, 0C024h
    402.         ret 0Ch
    403. loc_402CA1: push    ebx
    404.         push    ebp
    405.         push    esi
    406.         push    edi
    407.         push    eax
    408.         call    lzwGetDecompressedSize@4
    409.         mov edx, 9
    410.         mov ebx, 100h
    411.         mov [esp+10h+arg_8], eax
    412.         lea eax, ds:0FFFFFFA0h[ecx*8]
    413.         xor esi, esi
    414.         cmp eax, edx
    415.         mov edi, ebx
    416.         mov [esp+10h+arg_C], 0Ch
    417.         mov byte ptr [esp+13h], 0
    418.         mov [esp+10h+arg_10], edx
    419.         mov [esp+10h+arg_14], ebx
    420.     ;   mov dword_405724, esi
    421.         mov [esp+10h+arg_18], edi
    422.         mov ecx, edx
    423.         jl  short loc_402D10
    424.         lea esp, [esp+0]
    425. loc_402CF0: mov ebp, 1
    426.         shl ebp, cl
    427.         cmp edi, ebp
    428.         jnz short loc_402D03
    429.         cmp ecx, 0Ch
    430.         jz  short loc_402D03
    431.         add ecx, 1
    432. loc_402D03: sub eax, ecx
    433.         add edi, 1
    434.         cmp eax, ecx
    435.         jge short loc_402CF0
    436.         mov [esp+10h+arg_18], edi
    437. loc_402D10: mov [esp+10h+arg_4], esi
    438.         mov [esp+10h+arg_0], ebx
    439.         lea eax, [esp+10h+arg_28]
    440.         mov ecx, ebx
    441.         mov edi, edi
    442. loc_402D20: mov [eax-8], esi
    443.         mov [eax], esi
    444.         mov dword ptr [eax-4], 1
    445.         add eax, 0Ch
    446.         sub ecx, 1
    447.         jnz short loc_402D20
    448.         xor ebp, ebp
    449.         cmp [esp+10h+arg_8], esi
    450.         ja  short loc_402D77
    451. loc_402D3C: mov ecx, [esp+10h+arg_8]
    452.         mov edx, [esp+10h+arg_C02C]
    453.         push    ecx
    454.         push    edx
    455.         call    sub_402850
    456.         mov edx, [esp+18h+arg_C024]
    457.         add esp, 8
    458.         mov ecx, eax
    459.         mov eax, [edx+8]
    460.         sub eax, ecx
    461.         pop edi
    462.         neg eax
    463.         pop esi
    464.         sbb eax, eax
    465.         pop ebp
    466.         and eax, 2
    467.         pop ebx
    468.         add esp, 0C024h
    469.         ret 0Ch
    470. loc_402D73: mov edi, [esp-0C024h+arg_C04C]
    471. loc_402D77: cmp ebx, edi
    472.         jnb loc_402F53
    473.         xor ebx, ebx
    474.         xor edi, edi
    475.         test    edx, edx
    476.         jle loc_402E14
    477.         jmp short loc_402D90
    478.         align 4
    479. loc_402D90: movzx   esi, [esp-0C024h+arg_C033]
    480.         mov eax, [esp-0C024h+arg_C040]
    481.         lea eax, [esi+eax*8]
    482.         mov edx, eax
    483.         and edx, 80000007h
    484.         jns short loc_402DAB
    485.         dec edx
    486.         or  edx, 0FFFFFFF8h
    487.         inc edx
    488. loc_402DAB: mov ecx, 7
    489.         sub ecx, edx
    490.         mov edx, 1
    491.         shl edx, cl
    492.         mov ecx, [esp-0C024h+arg_18058]
    493.         mov [esp-0C024h+arg_C050], edx
    494.         cdq
    495.         and edx, 7
    496.         add eax, edx
    497.         sar eax, 3
    498.         mov dl, [eax+ecx]
    499.         mov eax, [esp-0C024h+arg_C050]
    500.         test    dl, al
    501.         jz  short loc_402DE3
    502.         mov eax, 1
    503.         mov ecx, edi
    504.         shl eax, cl
    505.         or  ebx, eax
    506. loc_402DE3: lea eax, [esi+1]
    507.         and eax, 80000007h
    508.         jns short loc_402DF2
    509.         dec eax
    510.         or  eax, 0FFFFFFF8h
    511.         inc eax
    512. loc_402DF2: test    al, al
    513.         mov [esp-0C024h+arg_C033], al
    514.         jnz short loc_402DFF
    515.         add [esp-0C024h+arg_C040], 1
    516. loc_402DFF: add edi, 1
    517.         cmp edi, [esp-0C024h+arg_C044]
    518.         jl  short loc_402D90
    519.         cmp ebx, 0FFh
    520.         ja  short loc_402E20
    521.         mov esi, [esp-0C024h+arg_C038]
    522. loc_402E14: mov ecx, [esp-0C024h+arg_18060]
    523.         mov [ecx+ebp], bl
    524.         jmp short loc_402E7B
    525. loc_402E20: mov eax, [esp-0C024h+arg_C038]
    526.         cmp eax, 0F00h
    527.         jge short loc_402E38
    528.         add eax, 0FFh
    529.         cmp ebx, eax
    530.         ja  loc_402F41
    531. loc_402E38: lea eax, [ebx+ebx*2]
    532.         add eax, eax
    533.         add eax, eax
    534.         mov edx, [esp+eax-0C024h+arg_C058]
    535.         lea ecx, [edx+ebp]
    536.         cmp ecx, [esp-0C024h+arg_C03C]
    537.         ja  loc_402F41
    538.         xor ecx, ecx
    539.         test    edx, edx
    540.         jbe short loc_402E77
    541.         mov eax, [esp+eax-0C024h+arg_C054]
    542.         mov esi, edx
    543.         mov edx, [esp-0C024h+arg_18060]
    544.         add eax, edx
    545.         lea edi, [edx+ebp]
    546. loc_402E68: mov dl, [eax]
    547.         mov [edi+ecx], dl
    548.         add ecx, 1
    549.         add eax, 1
    550.         cmp ecx, esi
    551.         jb  short loc_402E68
    552. loc_402E77: mov esi, [esp-0C024h+arg_C038]
    553. loc_402E7B: cmp esi, 0F00h
    554.         jnz loc_402F30
    555.         mov eax, [esp-0C024h+arg_C034]
    556.         add eax, 1
    557.         mov [esp-0C024h+arg_C034], eax
    558.         cdq
    559.         and edx, 0FFFh
    560.         add eax, edx
    561.         sar eax, 0Ch
    562.         jz  short loc_402EA8
    563.         mov [esp-0C024h+arg_C034], 100h
    564. loc_402EA8: mov eax, [esp-0C024h+arg_C034]
    565.         add eax, 0FFFFFFFFh
    566.         cmp eax, 0FFh
    567.         jnz short loc_402EBB
    568.         mov eax, 0FFFh
    569. loc_402EBB: lea eax, [eax+eax*2]
    570.         add eax, eax
    571.         add eax, eax
    572.         lea edx, [ebx+ebx*2]
    573.         mov [esp+eax-0C024h+arg_C054], ebp
    574.         mov edx, [esp+edx*4-0C024h+arg_C058]
    575.         add edx, 1
    576.         cmp esi, 0F00h
    577.         lea ecx, [esp+eax-0C024h+arg_C058]
    578.         mov [ecx], edx
    579.         mov [esp+eax-0C024h+arg_C05C], 0
    580.         jge short loc_402EED
    581.         add esi, 1
    582.         mov [esp-0C024h+arg_C038], esi
    583. loc_402EED: mov ebx, [esp-0C024h+arg_C048]
    584.         mov eax, edx
    585.         mov edx, [esp-0C024h+arg_C044]
    586.         lea ebp, [eax+ebp-1]
    587.         mov eax, 1
    588.         mov ecx, edx
    589.         shl eax, cl
    590.         add ebx, 1
    591.     ;   mov dword_405724, ebp
    592.         mov [esp-0C024h+arg_C048], ebx
    593.         cmp eax, ebx
    594.         jnz short loc_402F21
    595.         cmp edx, 0Ch
    596.         jge short loc_402F21
    597.         add edx, 1
    598.         mov [esp-0C024h+arg_C044], edx
    599. loc_402F21: cmp ebp, [esp-0C024h+arg_C03C]
    600.         jb  loc_402D73
    601.         jmp loc_402D3C
    602. loc_402F30: jge loc_402EA8
    603.         mov eax, [esp-0C024h+arg_C034]
    604.         add eax, esi
    605.         jmp loc_402EBB
    606. loc_402F41: pop edi
    607.         pop esi
    608.         pop ebp
    609.         mov eax, 3
    610.         pop ebx
    611.         add esp, 0C024h
    612.         ret 0Ch
    613. loc_402F53: cmp ebp, [esp-0C024h+arg_C03C]
    614.         jnb loc_402D3C
    615.         pop edi
    616.         pop esi
    617.         pop ebp
    618.         mov eax, 4
    619.         pop ebx
    620.         add esp, 0C024h
    621.         ret 0Ch
    622. lzwDecompress@12    endp
     
  6. ShadOS

    ShadOS New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2006
    Сообщения:
    39
    Адрес:
    0x48k
    Вот ИМХО лудший сайт по сжатию информации: http://www.compression.ru/download/
    В разделе есть исходники на ASM в том числе.