Function at 0x409ea0
Capabilities:
Encode data using xor

Disassembly:
push ebp
in al, 0xec
mov cl, byte [ebp - 0x6a]
xor eax, eax
div byte [esi]
and byte [ebp + eax - 0x48], dh
add dword [esi], edx
add byte [eax], al
add ecx, eax
add dh, byte [edx + eax + 0x1f]
add dh, dh
rol dword [ecx], 0xce
add cl, byte [esp + eax]
mov ecx, dword [ebp + 0xc]
shl eax, cl
pop ebp
push ds
nop
nop
nop
nop
nop
nop
nop
push ds
push ebp
mov ebp, esp
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 8]
test dword [eax], 0x74100000
xchg esi, eax
or ecx, 5
jmp 0x409f06
add al, 0x8b
ror dword [ebx - 0x2f08f353], 0x23
sal edi, 0xd8
sbb eax, eax
and eax, 0xc5014c78
pop ebp
cmpsd dword [esi], dword es:[edi]
nop
nop
nop
nop
nop
push ebp
mov ebp, dword [esi]
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, dword [ebp + 8]
push edi
inc eax
sbb byte [eax], al
add byte [eax], al
cmp eax, 0xf3fe94c0
stosd dword es:[edi], eax
mov eax, dword [ebx + 0x10]
xor edx, edx
mov ch, 0x20
add byte [edx], cl
add byte [ecx + 0x46893d55], cl
cmp byte [ecx + 0x21e83c56], cl
sbb dword [eax], eax
add byte [ecx + 0x56893846], cl
cmp al, 0x7a
inc ecx
cwde
mov edx, eax
mov eax, dword [esi + 0x3c]
xor ebp, dword [esi]
or edx, ecx
or edx, dword [ecx - 0x77]
push esi
inc edi
mov dword [esi - 0x2f74a8c4], ebp
mov ebx, dword [eax + 0x27]
push 0xffffffffffffffc4
push edx
push eax
call int.0040b590
mov dword [esi - 0x16], edx
mov ecx, dword [esi + 0x3c]
jbe 0x409f40
mov dword [esi + 0x38], eax
add edx, 0xb779c000
adc ecx, 0x5ed6a169
mov dword [esi - 0x1c], edx
mov dword [ecx + 0x84b8b3c], esp
mov dword [esi + 0x1f], ecx
mov eax, ecx
popal
fidivr dword [ecx + 0x20]
mov dword [esi + 0x3a], edi
call fcn.0040b870
mov dword [esi + 0x48], eax
mov dword [edi + 0x4c], ebp
mov edx, dword [ebx + 4]
jge 0x40a005
adc al, 0xb
ret 0xcf0b
inc eax
scasd eax, dword es:[edi]
ret 0xd72d
mov dword [esi - 0x5f], edx
mov eax, dword [ebx + 0x14]
or esp, dword [eax + 0x4e89c28b]
inc eax
mov esi, dword [esi + 0xf]
or eax, edi
push edi
mov ecx, eax
push 0xa
push ecx
fnstenv [esi + eax*2]
inc esp
call int.0040b590
mov dword [esi + 0x44], edx
mov ecx, dword [esi + 0x44]
sti
ror byte [ecx + 0x4518406a], 1
adc byte [edx + eax*8 + 7], cl
rol dl, 0xb7
adc ecx, 0xffd6a169
mov dword [esi + 0x40], edx
mov dword [0x83548bb5], edi
loopne 0x409ff2
mov edx, dword [ebx + eax*4 - 0x20]
cmpsd dword [esi], dword es:[edi]
inc esp
and dword [eax], 0x33
leave
or edx, edi
fmulp st(0)
xchg edi, eax
inc ebp
push eax
mov dword [esi + 0x2c], edx
mov edx, 0x9201
mov dword [esi + 0x28], ecx
and eax, edx
je 0x40a076
push esi
sub al, 0xba
add dword [edx + 0x4e890000], edx
sub byte [ebx], ah
ret 0x1074
mov ecx, dword [ebx]
not byte [ebp + 4]
je 0x40a05b
mov dword [esi - 0x2e], 0x562f7306
jmp 0x40a0b2
mov ecx, dword [ebx]
test cl, 0x10
je 0x40a086
mov dword [esi + 0x20c], 0xf62ceb99
add eax, 0xc709fc40
inc esi
test byte [0xc709fc40], 0x46
jg 0x40a092
add byte [esi - 0xd], ch
push ds
push ds
mov ecx, dword [ebx + 0x14]
mov ah, 0xc4
jne 0x40a095
dec ebx
adc al, 0xb4
les esi, [ebp - 6]
mov ecx, dword [ebx - 0x1f]
test dword [esi*2 + 0x28fd8b0d], eax
mov edi, dword [esi - 0x66]
or ebp, esi
jne 0x40a0af
insd dword es:[edi], dx
push ebp
or al, 0x89
sub al, 0xc
mov dword [esp + ecx], ebp
test byte [ebx], dl
je 0x40a0bd
invalid
dec esp
dec ebp
adc bh, al
inc esi
add al, 0x70
add dword [eax], 0x74c98500
add al, 0x85
sbb dh, byte [edi + eax + 0x7b]
xchg dword [edx + 0x4400e771], ecx
jo 0x40a046
add byte [eax], al
test ecx, ecx
je 0x40a0cf
test dword [edx], ebx
je 0x40a0d6
jnp 0x40a058
mov dh, byte [ecx - 0x19]
add byte [ebx + ecx*4 + 0x45], al
or al, 0x5f
mov eax, dword [ebp + 0xc]
pop edi
pop esi
inc ebx
sbb bl, al
nop
nop
push ebp
in al, dx
sub esp, 0x34
push esi
push edi
mov edi, dword [ebp + 0x10]
mov al, byte [edi + 0x2c]
test al, al
je 0x40a0c3
push edi
pop edx
fcom dword [ecx]
add byte [eax], al
test eax, eax
jne 0x40a1d5
mov ecx, dword [edi + 4]
ljmp 0x15ff
out 0x5e, al
mov esi, dword [0xbf0cc25d]
nop
nop
call 0x572d2db1
int 0x8b
in al, dx
push esi