encode proc uses eax ebx ecx edx esi edi, output:dword, input:dword, in_len:dword, mem64k:dword sub edx, edx xchg eax, edx pushad mov ebp, esp and ecx, eax mov edi, [ebp+30h] cld mov ch, 40h push edi rep stosd sub edx, 2864E25Ch mov esi, [ebp+28h] jnz jq_e0 dec edx jq_e0: push ecx sub ax, 0AEB6h mov edi, [ebp+24h] pop ebx stosw xchg eax, edx pop ebp stosd push edi xchg eax, edx push esp jq_e1: test cl, 7 lodsb jnz jq_e3 xchg edx, [esp] adc ah, dl pop edx xchg edi, [esp] ror edx, 1 mov [edi], ah jc jq_e2 xor edx, 2C047C3Eh jq_e2: pop edi mov ah, 0FFh push edi xor edx, 76C52B8Dh inc edi push edx jq_e3: cmp al, [ebx+ebp] jz jq_e5 ror edx, 1 mov [ebx+ebp], al jnc jq_e4 xor edx, 2C047C3Eh jq_e4: mov bh, al xor edx, 5AC157B3h adc al, dl stosb mov al, bh stc jq_e5: inc ecx mov bh, bl rcl ah, 1 cmp ecx, [esp+34h] mov bl, al jc jq_e1 ror ah, cl pop ebx add ah, bl pop esi mov ebp, esp sub edi, [ebp+24h] mov [ebp+14h], edx xchg ah, [esi] add [ebp+1Ch], edi popad ret 10h encode endp