Function at 0x40a9a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov ebp, esp
adc al, 0xf6
push esi
push edi
mov edi, dword [ebp + 0xc]
mov edx, dword [edi]
test edx, edx
mov esp, ebx
clc
jne 0x40a9db
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
rcr byte [ebx - 0x75], 0xe5
pop ebp
ret 0xa9
fld st(0)
mov al, byte [esi]
inc esi
test al, al
mov dword [ebp + 8], esi
js 0x40a9f3
dec edx
mov dword [edi], edx
mov ebp, dword [eax + 0x4a]
mov dword [esi - 0x75], ebx
dec ebp
adc byte [esi - 0xa], ah
add dword [ebx + 0x6b8902c1], eax
adc byte [edx - 0x38], dl
or byte [eax - 0x68], dh
mov ecx, eax
scasd eax, dword es:[edi]
loope 0x40a9b8
inc eax
add byte [eax], al
cmp cl, 0xc0
jne 0x40aaea
cdq
mov edi, 0x92
cmpsb byte [esi], byte es:[edi]
enter 0x5589, 0xfffffffffffffff0
and ecx, edi
xor ebx, ebx
mov esi, 0x4501
xor edx, edx
cmp ecx, edi
mov dword [ebp - 0x29], esi
mov dword [ebp - 0x14], eax
jne 0x40aa54
js 0x40a9f9
jne 0x40a9ce
mov eax, edi
pop ds
rol dword [ebx], cl
add dword [eax - 0x2517ff71], edx
or eax, 0xf80b0000
or ebx, edx
sub byte [ebx + 0x7589034c], al
cld
ja 0x40aa8b
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x10]
and eax, edi
and ecx, ebx
cmp eax, edi
push ss
add al, 0x3b
retf
ror dword [ebx + 0x471da845], cl
arpl word [ebx - 0x74cc0835], cx
mul dword [ebx]
retf 0x738b
add dword [eax], eax
add byte [ebx - 0x3974fe06], al
or eax, 0x1ee08317
cmpsd dword [esi], dword es:[edi]
dec dword [ebx]
invalid
pop edi
cmp edi, dword [eax + 0x16]
pop ebx
in eax, 0x5d
fistp word [ecx]
or ecx, dword [ebp + 0x75]
mov edx, dword [di - 0x4b]
jne 0x40ab04
mov edx, dword [ebp - 0x4b]
push ds
xor eax, 0x28a01fb
add edi, edi
and al, 0x3f
and eax, 0xf200ff
cdq
and eax, edi
and edx, ebx
or eax, edx
je 0x40aa8b
add al, byte [ebx]
jmp dword [edi + edi]
mov dl, 0x55
cld
cmp edx, 2
jne 0x40aad1
cmp esi, 0xd
jne 0x40aa9b
test ecx, ecx
jne 0x40aaf2
mov eax, dword [ebp + 8]
not byte [ebp + 0x20]
jmp 0x40aaf0
cmp edx, 3
jne 0x40aa78
test ecx, ecx
jg 0x40aa8b
jl 0x40aae1
cmp esi, 4
stosb byte es:[edi], al
stosb byte es:[edi], al
or dword [edx], 4
stosd dword es:[edi], eax
or al, 0x85
leave
pop edx
inc eax
mov eax, dword [ebp + 8]
test byte [eax], 0x30
xor ebx, dword [ecx - 0x470d8275]
add cl, bl
add byte [eax], al
mov edi, dword [ebp - 0xe]
mov eax, 0xcb02
cmp eax, edx
mov ebx, ebx
sbb eax, eax
neg eax
inc eax
inc edx
fmul dword [edi]
sub byte [edx - 0x7a000002], 0xd2
je 0x40ab4e
pushfd
jge 0x40ab1a
jmp 0x40ab17
xor eax, eax
js 0x40aaa5
mov al, byte [edi]
pop es
insd dword es:[edi], dx
push ebp
cld
mov edx, eax
and edx, 0xb200c0
inc edi
cmp dl, 0x80
mov dword [edi + 0x57850f7a], ebx
invalid
mov esi, dword [ebx - 0xbea7408]
sub ebp, dword [edx - 0x7af3aa75]
leave
mov dword [edx], eax
jg 0x40ab76
jl 0x40ab69
xchg ebp, eax
inc byte [eax]
add byte [ebx - 0x74f28d00], dl
or dword [ebx + ecx*4], edx
mov ecx, dword [ecx]
adc al, 0x8b
adc byte [edx - 0x77], cl
adc byte [ebx - 0x3814efbb], cl
mov eax, dword [ebp + 0x14]
popfd
sbb byte [ebx - 0x393e01c8], al
add byte [eax], al
push dword [eax]
sbb dword [edi], 0xffffffff
mov dword [eax], ebx
mov edx, ecx
mov edi, dword [ecx + 0x839125]
add al, ch
adc byte [eax + eax], cl
xchg esi, eax
mov bp, word [ebx + ecx*4 - 0x449fefbb]
fadd dword [ecx + 0x3ffe6]
add byte [esi - 0x7c], ah
or byte [ebx - 0x317ec840], al
add ah, bl
add eax, 0x83e48966
sar byte [edx - 0x74efba97], 0x7d
or al, 0x8b
pop es
test eax, eax
mov dword [ebp - 8], eax
leave
test ebp, esi
std
invalid