LEMPEL-ZIV 32BIT COMPRESSION ENGINE
lz_compress (347 bytes)
lz_decompress (365 bytes)
Both subroutines have identical parameters that are needed
to be placed in stack.
push pointer_to_the_temporary_data
push input_buffer_size
push pointer_to_the_output_buffer
push pointer_to_the_input_buffer
call lz_compress
Returns:
EAX holds number of bytes places in the output buffer,
registers EBX,ECX,EDX,ESI,EDI and EBP are not preserved.
Size of the temporary data need to be 5000h for compression
and 3000h for decompression.
lz_compress:
db 02bh,0c0h,050h,050h,050h,050h,050h,08bh,0ech,0e8h,083h,000h,000h,000h,02bh,0c0h
db 0feh,0c4h,0e8h,09dh,000h,000h,000h,0e8h,0c3h,000h,000h,000h,02ah,0e4h,066h,089h
db 045h,000h,0e8h,0b8h,000h,000h,000h,072h,04bh,088h,045h,008h,00fh,0b7h,05dh,000h
db 0e8h,0bfh,000h,000h,000h,073h,0e7h,0e8h,0eeh,000h,000h,000h,053h,00fh,0b7h,045h
db 000h,0e8h,06eh,000h,000h,000h,05bh,08ah,045h,008h,066h,03bh,05dh,004h,07ch,0cch
db 066h,083h,07dh,006h,00ch,07ch,013h,02bh,0c0h,0feh,0c4h,0e8h,054h,000h,000h,000h
db 0e8h,02ch,000h,000h,000h,08ah,045h,008h,0ebh,0b2h,066h,0ffh,045h,006h,066h,0d1h
db 065h,004h,0ebh,0a8h,00fh,0b7h,045h,000h,0e8h,037h,000h,000h,000h,0b8h,001h,001h
db 000h,000h,0e8h,02dh,000h,000h,000h,097h,02bh,045h,01ch,083h,0c4h,014h,0c2h,010h
db 000h,060h,066h,0c7h,045h,006h,009h,000h,066h,0c7h,045h,004h,000h,002h,02bh,0c0h
db 048h,0b9h,080h,002h,000h,000h,08bh,07dh,024h,0f3h,066h,0abh,066h,0c7h,045h,002h
db 002h,001h,061h,0c3h,050h,08bh,045h,00ch,00fh,0b7h,04dh,006h,001h,04dh,00ch,0b9h
db 008h,000h,000h,000h,02bh,0d2h,0f7h,0f1h,003h,045h,01ch,097h,058h,08bh,0cah,02bh
db 0d2h,067h,0e3h,004h,0d3h,0e0h,00ah,007h,066h,0abh,0c1h,0e8h,010h,0aah,0c3h,08bh
db 075h,018h,08bh,07dh,010h,03bh,07dh,020h,073h,008h,08ah,004h,03eh,0ffh,045h,010h
db 0f8h,0c3h,0f9h,0c3h,0e8h,02ah,000h,000h,000h,02bh,0ffh,066h,083h,03eh,0ffh,074h
db 020h,047h,00fh,0b7h,01eh,0e8h,019h,000h,000h,000h,038h,046h,004h,075h,005h,0f8h
db 00fh,0b7h,0c3h,0c3h,066h,083h,07eh,002h,0ffh,074h,006h,00fh,0b7h,05eh,002h,0ebh
db 0e4h,0f9h,0c3h,08dh,034h,09bh,003h,075h,024h,0c3h,00fh,0b7h,05dh,002h,083h,0ffh
db 000h,074h,006h,066h,089h,05eh,002h,0ebh,003h,066h,089h,01eh,066h,081h,0fbh,000h
db 010h,074h,017h,0e8h,0dbh,0ffh,0ffh,0ffh,066h,0c7h,006h,0ffh,0ffh,066h,0c7h,046h
db 002h,0ffh,0ffh,088h,046h,004h,066h,0ffh,045h,002h,0c3h
lz_decompress:
db 02bh,0c0h,050h,050h,06ah,009h,068h,000h,000h,000h,002h,068h,000h,000h,002h,001h
db 050h,068h,0ffh,007h,0ffh,00fh,068h,0ffh,001h,0ffh,003h,08bh,0ech,0e8h,0d6h,000h
db 000h,000h,066h,03dh,001h,001h,00fh,084h,0bbh,000h,000h,000h,066h,03dh,000h,001h
db 075h,01fh,0e8h,0fbh,000h,000h,000h,0e8h,0bch,000h,000h,000h,066h,089h,045h,008h
db 066h,089h,045h,00ah,088h,045h,017h,088h,045h,016h,0e8h,0f6h,000h,000h,000h,0ebh
db 0cch,066h,089h,045h,008h,066h,089h,045h,00ch,066h,03bh,045h,00eh,07ch,011h,00fh
db 0b7h,045h,00ah,066h,089h,045h,008h,00fh,0b6h,045h,016h,050h,066h,0ffh,045h,010h
db 066h,081h,07dh,008h,0ffh,000h,07eh,01ah,00fh,0b7h,05dh,008h,0e8h,070h,000h,000h
db 000h,08ah,043h,002h,050h,066h,0ffh,045h,010h,00fh,0b7h,003h,066h,089h,045h,008h
db 0ebh,0deh,00fh,0b7h,045h,008h,088h,045h,016h,088h,045h,017h,050h,066h,0ffh,045h
db 010h,00fh,0b7h,04dh,010h,067h,0e3h,008h,058h,0e8h,097h,000h,000h,000h,0e2h,0f8h
db 066h,089h,04dh,010h,0e8h,097h,000h,000h,000h,00fh,0b7h,045h,00ch,066h,089h,045h
db 00ah,00fh,0b7h,05dh,00eh,066h,03bh,05dh,012h,00fh,08ch,04eh,0ffh,0ffh,0ffh,066h
db 083h,07dh,014h,00ch,00fh,084h,043h,0ffh,0ffh,0ffh,066h,0ffh,045h,014h,066h,0d1h
db 065h,012h,0e9h,036h,0ffh,0ffh,0ffh,097h,02bh,045h,028h,083h,0c4h,020h,0c2h,010h
db 000h,08dh,01ch,05bh,003h,05dh,030h,0c3h,00fh,0b7h,045h,014h,003h,045h,018h,087h
db 045h,018h,0b9h,008h,000h,000h,000h,02bh,0d2h,0f7h,0f1h,003h,045h,024h,096h,066h
db 0adh,00fh,0b7h,0d8h,0ach,00fh,0b7h,0cah,067h,0e3h,007h,0d0h,0e8h,066h,0d1h,0dbh
db 0e2h,0f9h,00fh,0b7h,0c3h,00fh,0b7h,05dh,014h,083h,0ebh,009h,066h,023h,044h,05dh
db 000h,0c3h,066h,0c7h,045h,014h,009h,000h,066h,0c7h,045h,012h,000h,002h,066h,0c7h
db 045h,00eh,002h,001h,0c3h,08bh,07dh,01ch,003h,07dh,028h,0aah,0ffh,045h,01ch,0c3h
db 00fh,0b7h,05dh,00eh,0e8h,098h,0ffh,0ffh,0ffh,00fh,0b6h,045h,017h,088h,043h,002h
db 00fh,0b7h,045h,00ah,066h,089h,003h,066h,0ffh,045h,00eh,0c3h