Function at 0x404f10
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
fld dword [0x4aec84]
push ebx
fld qword [0x459ee8]
push esi
fsub dword [0x49ea14]
push edi
fsub dword [0x4a1ddc]
fsubp st(1)
fstp dword [0x4aec84]
inc dword [0x44a6cc]
mov eax, dword [0x44a6cc]
add eax, 0x8abb516e
and dword [0x43d7b8], eax
mov eax, dword [0x4464e4]
sub eax, 0x5e0b1cd
and eax, 0x28c53424
add dword [0x43cf68], eax
mov eax, dword [ebp + 0xc]
xor dword [0x440a04], 0x743ab589
add eax, 4
push eax
call fcn.0042ce50
add dword [0x44db44], 0xb13cf432
fld dword [0x4acc20]
fld qword [0x487918]
add esp, 4
fld dword [0x49b1b0]
mov esi, eax
fmulp st(2)
mov dword [ebp - 4], esi
fld dword [0x4acc20]
fld1
fsub st(1), st(0)
fxch st(1)
fstp dword [0x4acc20]
fxch st(1)
fcompi st(2)
fstp st(1)
jbe 0x404fc2
mov dword [0x44ea64], 0xf7d66227
mov edi, dword [ebp + 8]
fld dword [0x4a0b24]
fld dword [0x49eb28]
fadd qword [0x487ad8]
mov cl, byte [edi + 0x437248]
fsubp st(1)
fstp dword [0x4a0b24]
mov byte [esi], cl
fld dword [0x4b1644]
fadd qword [0x483900]
fld qword [0x459e68]
fsub dword [0x4a3ae0]
fld dword [0x4a3ae0]
fsub st(3)
fstp dword [0x4a3ae0]
fxch st(1)
fucompi st(1)
fstp st(0)
lahf
test ah, 0x44
jnp 0x40504b
mov edx, dword [0x4553b4]
mov ecx, dword [0x455310]
mov eax, 0x3dbfb577
sub eax, edx
sar ecx, 2
xor ecx, eax
cmp ecx, 0xeb9d871c
jne 0x40504b
fld dword [0x4a69b8]
fsub dword [0x4b2410]
fstp dword [0x4a69b8]
mov edx, dword [0x4b4af8]
mov al, byte [edx + edi]
xor byte [esi], al
mov cx, word [0x494b92]
mov edx, dword [0x45343c]
movsx eax, cx
shl edx, 8
shl eax, 0xa
imul edx, eax
add edx, 0xed49f5d
cmp edx, 0xdbbfc7f9
jle 0x40508f
fld dword [0x49b6e4]
fmul qword [0x478358]
fstp qword [0x478358]
mov ax, word [0x48e7aa]
movsx ecx, ax
mov edx, 0xbde211e8
sub edx, ecx
or ecx, 0xffffffff
add word [0x48e7aa], cx
inc esi
cmp edx, 0xa8e5885d
jne 0x4050c8
mov ax, word [0x494aca]
mov edx, dword [0x453a20]
cwde
lea eax, [edx + eax + 1]
mov dword [0x453a20], eax
mov dx, word [0x4945b8]
movsx eax, dx
mov edx, dword [0x447ec8]
sub eax, edx
add eax, 0x45d9922f
mov word [0x4945b8], ax
add dword [0x447ec8], ecx
mov al, byte [edi + 0x437249]
mov byte [esi], al
mov eax, dword [0x446548]
inc edi
sar eax, 7
and eax, 0xebcafffa
or eax, 0xa8423e62
and dword [0x443070], eax
mov ecx, dword [0x4b4af8]
mov dl, byte [ecx + edi]
xor byte [esi], dl
mov eax, dword [0x44a5ac]
mov ecx, dword [0x4493c0]
imul ecx, ecx, 0xa0be6f94
shl eax, 4
or eax, 0x768f6b51
cmp eax, ecx
jl 0x40513e
or dword [0x454074], 0xdffbfe3f
mov edx, dword [0x44e354]
imul edx, edx, 0x2711ec6e
mov dword [0x44e354], edx
dec esi
fld dword [0x4aef50]
inc edi
fld dword [0x49ac0c]
lea ecx, [edi + 0x437248]
fmul qword [0x46f4f0]
fsubp st(1)
fstp dword [0x4aef50]
movzx eax, word [esi]
movzx ebx, ax
lea eax, [ebx + 3]
push eax
push ecx
mov dword [0x449940], 0x72b5e848
push esi
mov dword [ebp + 8], ebx
call fcn.004325b0
mov edx, dword [0x44cd9c]
not edx
or edx, 0x3640bd68
add esp, 0xc
cmp edx, 0x2bcfc414
jle 0x4051c8
mov ax, word [0x4956a6]
mov ecx, dword [0x455610]
cwde
add eax, 0x10793655
imul ecx, eax
add ecx, ecx
mov dword [0x455610], ecx
jmp 0x4051dc
movzx edx, word [0x48f7f8]
or edx, 0x18060
mov word [0x48f7f8], dx
and dword [0x43cc04], 0xa06bf9ee
mov edx, 0xffffab7e
mov word [0x4992da], dx
mov edx, dword [0x4b4af8]
dec dword [0x456a4c]
add edi, edx
mov edx, dword [0x456a4c]
lea ecx, [ebx + esi + 3]
mov ebx, dword [0x446748]
or edx, 0xfee9e275
imul ebx, edx
mov eax, esi
mov dword [0x446748], ebx
cmp esi, ecx
je 0x405245
mov edx, 0x29ac0ec3
mov esi, 0x89251788
add dword [0x442acc], esi
mov bl, byte [edi]
xor byte [eax], bl
inc eax
inc edi
mov dword [0x4564bc], edx
cmp eax, ecx
jne 0x40522f
mov edx, dword [ebp + 8]
xor dword [0x4496fc], 0xdee4da2e
cmp dword [ebp + 0xc], edx
je 0x40533d
fld dword [0x4adf70]
sub ecx, 3
fld dword [0x4b23f4]
fadd qword [0x4770d8]
fsubp st(1)
fstp dword [0x4adf70]
mov byte [ecx + 3], 0
fld dword [0x4b49c8]
fmul dword [0x499f48]
fadd dword [0x4a9564]
fadd dword [0x4b2010]
fstp dword [0x4b2010]
fld dword [0x4a9564]
fadd st(1)
fstp dword [0x4a9564]
mov eax, dword [0x43dd78]
mov si, word [0x49773e]
movsx esi, si
sar eax, 7
imul esi, eax
sub esi, 0x583c9b07
cmp esi, 0xde9b5545
jg 0x4052d5
xor dword [0x44e544], 0x29c88210
mov eax, dword [0x4559a0]
mov esi, dword [0x440f38]
mov edi, dword [ecx]
add eax, 0x15f78eaa
cmp esi, eax
jl 0x4052f5
and dword [0x44a5a4], 0x496c72a5
mov eax, dword [0x44b9e4]
sub dword [ebp + 0xc], edx
imul eax, eax, 0xb0a4bbf0
xor eax, 0xcb73d1ba
or dword [0x450370], eax
mov eax, dword [0x4550d8]
mov esi, ecx
mov cx, word [0x49448e]
mov edx, dword [0x452ef8]
movsx ecx, cx
sar eax, 2
and ecx, eax
and edx, ecx
and edx, 0x6bf4644e
mov dword [0x452ef8], edx
jmp 0x404fc5
or dword [0x43f05c], 0x5d62fef6
fstp st(0)
mov eax, dword [ebp - 4]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret