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