Function at 0x41ae10
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xc
mov esi, dword [ebp + 8]
lea esi, [esi]
mov eax, dword [esi + 0x74]
cmp eax, 0x105
jbe 0x41b0b0
cmp eax, 2
jbe 0x41b005
mov ebx, dword [esi + 0x6c]
mov eax, dword [esi + 0x38]
xor edx, edx
mov ecx, dword [esi + 0x58]
mov dl, byte [ebx + eax + 2]
mov eax, dword [esi + 0x48]
shl eax, cl
xor edx, eax
mov eax, dword [esi + 0x54]
and edx, eax
mov eax, dword [esi + 0x44]
mov dword [esi + 0x48], edx
mov di, word [eax + edx*2]
mov eax, dword [esi + 0x34]
and ebx, eax
mov eax, dword [esi + 0x40]
test di, di
mov word [eax + ebx*2], di
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 0x44]
mov eax, dword [esi + 0x6c]
mov word [edx + ecx*2], ax
je 0x41b005
mov ecx, edi
mov ebx, dword [esi + 0x6c]
and ecx, 0xffff
mov edx, ebx
mov eax, dword [esi + 0x2c]
sub edx, ecx
sub eax, 0x106
cmp edx, eax
jbe 0x41b14b
mov eax, dword [esi + 0x60]
cmp eax, 2
jbe 0x41b014
lea esi, [esi]
sub bx, word [esi + 0x70]
mov edx, dword [esi + 0x16a0]
lea ecx, [eax - 3]
mov eax, dword [esi + 0x16a4]
mov word [eax + edx*2], bx
mov eax, dword [esi + 0x16a0]
mov edx, dword [esi + 0x1698]
mov byte [edx + eax], cl
inc eax
and ecx, 0xff
mov dword [esi + 0x16a0], eax
xor eax, eax
lea edx, [ebx - 1]
mov al, byte [ecx + 0x42f680]
inc word [esi + eax*4 + 0x498]
cmp dx, 0xff
ja 0x41b130
mov eax, edx
and eax, 0xffff
mov al, byte [eax + 0x42f480]
and eax, 0xff
inc word [esi + eax*4 + 0x988]
mov eax, dword [esi + 0x169c]
mov edx, dword [esi + 0x74]
dec eax
cmp dword [esi + 0x16a0], eax
sete al
and eax, 0xff
mov edi, eax
mov eax, dword [esi + 0x60]
sub edx, eax
mov eax, dword [esi + 0x60]
mov dword [esi + 0x74], edx
cmp eax, dword [esi + 0x80]
ja 0x41b073
cmp edx, 2
jbe 0x41b073
dec eax
mov dword [esi + 0x60], eax
lea esi, [esi]
mov ebx, dword [esi + 0x6c]
mov eax, dword [esi + 0x38]
inc ebx
xor edx, edx
mov dword [esi + 0x6c], ebx
mov ecx, dword [esi + 0x58]
mov dl, byte [ebx + eax + 2]
mov eax, dword [esi + 0x48]
shl eax, cl
xor edx, eax
mov eax, dword [esi + 0x54]
and edx, eax
mov eax, dword [esi + 0x34]
and ebx, eax
mov eax, dword [esi + 0x44]
mov dword [esi + 0x48], edx
mov ecx, dword [esi + 0x40]
mov ax, word [eax + edx*2]
mov word [ecx + ebx*2], ax
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 0x44]
mov eax, dword [esi + 0x6c]
mov word [edx + ecx*2], ax
mov eax, dword [esi + 0x60]
dec eax
mov dword [esi + 0x60], eax
test eax, eax
jne 0x41af60
lea esi, [esi]
mov eax, dword [esi + 0x6c]
inc eax
mov dword [esi + 0x6c], eax
test edi, edi
je 0x41ae20
mov eax, dword [esi + 0x5c]
xor ecx, ecx
mov edx, dword [esi + 0x6c]
test eax, eax
js 0x41afd2
mov ecx, eax
mov edi, dword [esi + 0x38]
add ecx, edi
sub edx, eax
push 0
push edx
push ecx
push esi
call dbg._tr_flush_block
mov eax, dword [esi + 0x6c]
mov dword [esi + 0x5c], eax
mov eax, dword [esi]
call dbg.flush_pending
mov eax, dword [esi]
mov ebx, dword [eax + 0x10]
add esp, 0x10
test ebx, ebx
jne 0x41ae20
xor eax, eax
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esi + 0x60]
mov ebx, dword [esi + 0x6c]
cmp eax, 2
ja 0x41aeb0
mov eax, dword [esi + 0x38]
mov edx, dword [esi + 0x16a0]
mov cl, byte [eax + ebx]
mov eax, dword [esi + 0x16a4]
mov word [eax + edx*2], 0
mov eax, dword [esi + 0x16a0]
mov edx, dword [esi + 0x1698]
mov byte [edx + eax], cl
inc eax
and ecx, 0xff
mov dword [esi + 0x16a0], eax
inc word [esi + ecx*4 + 0x94]
mov eax, dword [esi + 0x169c]
dec eax
cmp dword [esi + 0x16a0], eax
sete al
and eax, 0xff
mov edi, eax
mov eax, dword [esi + 0x74]
dec eax
mov dword [esi + 0x74], eax
jmp 0x41afb0
mov ecx, dword [esi + 0x6c]
mov edx, dword [esi + 0x38]
add ecx, eax
mov dword [esi + 0x60], 0
mov dword [esi + 0x6c], ecx
xor eax, eax
mov ebx, dword [esi + 0x6c]
mov ecx, dword [esi + 0x58]
mov al, byte [edx + ebx]
mov dword [esi + 0x48], eax
mov dl, byte [ebx + edx + 1]
and edx, 0xff
shl eax, cl
xor eax, edx
mov edx, dword [esi + 0x54]
and eax, edx
mov dword [esi + 0x48], eax
jmp 0x41afb7
mov eax, esi
call dbg.fill_window
mov eax, dword [esi + 0x74]
cmp eax, 0x105
ja 0x41b0cc
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x41affb
test eax, eax
jne 0x41ae2e
mov ebx, dword [esi + 0x6c]
mov eax, ebx
cmp ebx, 2
ja 0x41b15f
mov dword [esi + 0x16b4], eax
cmp dword [ebp + 0xc], 4
jne 0x41b169
mov eax, dword [esi + 0x5c]
xor edx, edx
test eax, eax
js 0x41b0fe
mov edx, eax
mov ecx, dword [esi + 0x38]
add edx, ecx
sub ebx, eax
push 1
push ebx
push edx
push esi
call dbg._tr_flush_block
mov eax, dword [esi + 0x6c]
mov dword [esi + 0x5c], eax
mov eax, dword [esi]
call dbg.flush_pending
mov eax, dword [esi]
add esp, 0x10
cmp dword [eax + 0x10], 1
sbb eax, eax
lea esp, [ebp - 0xc]
add eax, 3
pop ebx
pop esi
pop edi
pop ebp
ret
shr dx, 7
mov eax, edx
and eax, 0xffff
mov al, byte [eax + 0x42f580]
and eax, 0xff
jmp 0x41af13
mov edx, ecx
mov eax, esi
call dbg.longest_match
mov ebx, dword [esi + 0x6c]
mov dword [esi + 0x60], eax
jmp 0x41ae9d
mov eax, 2
jmp 0x41b0e2
mov edx, dword [esi + 0x16a0]
mov eax, 1
test edx, edx
je 0x41affd
mov eax, dword [esi + 0x5c]
xor edx, edx
test eax, eax
js 0x41b18c
mov edx, eax
mov edi, dword [esi + 0x38]
add edx, edi
sub ebx, eax
push 0
push ebx
push edx
push esi
call dbg._tr_flush_block
mov eax, dword [esi + 0x6c]
mov dword [esi + 0x5c], eax
mov eax, dword [esi]
call dbg.flush_pending
mov eax, dword [esi]
mov ecx, dword [eax + 0x10]
add esp, 0x10
test ecx, ecx
setne al
and eax, 0xff
jmp 0x41affd