Function at 0x4045c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
push edi
mov edi, 1
add dword [0x449624], edi
mov eax, dword [0x449624]
sub eax, 0x58a88cf6
cmp eax, 0xc5f7ebe3
jle 0x4045f3
fld dword [0x47fa3c]
fstp dword [0x4796c0]
jmp 0x40462d
fld dword [0x476cbc]
fld dword [0x47cbb8]
fmul qword [0x45cf98]
fld qword [0x45cf98]
fadd qword [0x43b0b0]
fstp qword [0x45cf98]
fxch st(1)
fucompi st(1)
fstp st(0)
lahf
test ah, 0x44
jnp 0x40462d
add dword [0x43dac8], 0x98c002b7
movzx ecx, word [0x46ad72]
movsx eax, cx
add dword [0x44a860], eax
fld dword [0x476bdc]
fadd qword [0x463320]
fstp qword [0x463320]
fld dword [0x472f80]
fmul qword [0x450928]
fadd dword [0x476c0c]
fstp dword [0x476c0c]
mov edx, dword [0x43c7dc]
mov eax, dword [0x445444]
and edx, eax
and edx, 0x1b67dd63
mov dword [0x43c7dc], edx
movzx ecx, word [0x46af12]
movsx edx, cx
xor edx, 0x2b155422
cmp edx, 0x2f4bf188
jge 0x4046d1
mov eax, dword [0x448b0c]
dec dword [0x448b0c]
cmp eax, 0x74311194
jl 0x4046b6
add dword [0x43f910], 0x2a46b4e9
jmp 0x4046d1
mov cx, word [0x46df0e]
movsx eax, cx
imul eax, eax, 0xbb7efe7
and eax, 0x3206108f
or dword [0x447d44], eax
mov dx, word [0x46c584]
movsx eax, dx
add eax, eax
cmp eax, 0x27cc024a
jle 0x404702
fld dword [0x47f1cc]
fmul dword [0x4802b4]
fadd qword [0x44bcb0]
fmul qword [0x467198]
fstp qword [0x467198]
push 0xf
lea ecx, [ebp - 0x10]
push 0
push ecx
call fcn.004096f0
mov eax, dword [0x44861c]
mov ecx, dword [ebp + 0x14]
add eax, 0x15203869
xor dword [0x44474c], eax
mov eax, dword [0x448b04]
add eax, 0x957d3fc
or eax, 0x4f86a6be
mov dword [0x44a8cc], eax
add dword [0x448b04], edi
add esp, 0xc
xor edx, edx
test ecx, ecx
je 0x404829
mov esi, 0xcc7a0cf1
mov edi, edi
fld dword [0x47c074]
fmul dword [0x479a94]
fmul dword [0x4722b8]
fstp dword [0x47b464]
cmp edx, 0xf
je 0x4047dd
mov eax, dword [0x448aac]
mov ebx, dword [ebp + 0x10]
or eax, 0xdbfe9b2
add dword [0x448cfc], eax
fld dword [0x47edb4]
fld dword [0x475b68]
movzx ebx, word [ebx + edx*2 + 0x300]
fadd dword [0x47ada0]
mov al, cl
and al, 1
mov byte [ebp + ebx - 0x10], al
fsubp st(1)
shr ecx, 1
add edx, edi
fstp dword [0x47edb4]
add dword [0x43ece8], esi
mov eax, dword [0x43d450]
movzx ebx, word [0x46ee78]
and eax, 0xe7fcff77
or eax, 0x432c7762
xor ebx, eax
mov word [0x46ee78], bx
test ecx, ecx
jne 0x404750
jmp 0x404829
fld dword [0x47feec]
fmul dword [0x47659c]
fadd qword [0x45bae0]
fld dword [0x478cd0]
fmul dword [0x47a250]
fcompi st(1)
fstp st(0)
jb 0x404817
movzx ecx, word [0x46f388]
add ecx, 0x23801001
mov word [0x46f388], cx
jmp 0x404829
mov edx, dword [0x44715c]
imul edx, edx, 0xfffeb7e5
mov dword [0x44715c], edx
fld dword [0x472254]
xor edx, edx
fmul dword [0x471d8c]
xor esi, esi
mov ebx, 0xb4f434dc
fstp dword [0x4790ec]
fld dword [0x472254]
fld1
fadd st(1), st(0)
fxch st(1)
fstp dword [0x472254]
fld dword [0x471d8c]
fadd st(1)
fstp dword [0x471d8c]
mov ax, word [0x46bda8]
mov cx, word [0x46a3e2]
cwde
imul eax, eax, 0xcdcb274b
movsx ecx, cx
and ecx, eax
or dword [0x44a2e8], ecx
xor ecx, ecx
fld dword [0x47dad4]
fmul qword [0x45d230]
fsub dword [0x475c94]
fstp qword [0x466960]
fld qword [0x462280]
fsub dword [0x479e58]
fadd qword [0x467988]
fmul qword [0x44d9b0]
fstp qword [0x44d9b0]
fld qword [0x467988]
fsub st(1)
fstp qword [0x467988]
mov eax, dword [0x445de4]
imul eax, eax, 0xf4391a48
mov dword [0x445de4], eax
add edx, edx
fld qword [0x460618]
add esi, esi
fsub dword [0x472244]
inc ecx
fsub qword [0x454400]
fadd qword [0x453e08]
fstp qword [0x453e08]
fld dword [0x472244]
fsub st(1)
fstp dword [0x472244]
mov ax, word [0x46e6f0]
movsx edi, ax
mov eax, dword [0x43d18c]
imul eax, edi
imul eax, eax, 0x5eb98aaa
or dword [0x444800], eax
movsx eax, byte [ebp + ecx - 0x11]
or edx, eax
mov eax, dword [0x43ff38]
not eax
or dword [0x447584], eax
movsx eax, byte [ebp + ecx - 0xa]
xor dword [0x440020], ebx
or esi, eax
mov eax, dword [0x43def4]
not eax
add eax, 0x331bee6
or eax, 0xfa70f5e9
xor dword [0x44a904], eax
cmp ecx, 7
jne 0x4048c9
mov ecx, dword [0x444924]
fstp st(0)
sub ecx, 0x2c92c509
cmp ecx, 0xd9ff746f
jl 0x4049a2
mov ax, word [0x46fc2a]
movsx ecx, ax
imul ecx, ecx, 0xacca174
cmp ecx, 0x78c66cf5
jle 0x4049b4
mov eax, dword [0x443648]
mov ecx, dword [0x440194]
jmp 0x4049b4
movzx eax, word [0x4709ee]
and eax, 0x403005d6
mov word [0x4709ee], ax
mov ecx, dword [0x443cec]
sub ecx, 0x472ba586
add esi, esi
cmp ecx, 0xf6acb05e
jge 0x4049d4
xor dword [0x444b94], 0x3fb99398
movsx eax, byte [ebp - 2]
mov ecx, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov dword [0x44a5d8], 0xf3e100b1
add dword [0x43c7c0], 0xf7bc9886
movzx edx, word [ecx + edx*2]
add edx, ebx
push edx
or esi, eax
push edi
sub esi, 0xffffff80
call fcn.004301f0
or ecx, 0xffffffff
add dword [0x446478], ecx
mov eax, dword [0x446478]
mov edx, dword [0x43c1ac]
lea eax, [edx + eax + 0x29de823c]
mov edx, dword [0x440238]
add dword [0x43c1ac], ecx
mov ecx, 1
add dword [0x440238], ecx
sub edx, 0x466dee83
add esp, 8
cmp edx, eax
jge 0x404a6b
mov ax, word [0x471176]
movsx edx, ax
mov eax, 0x307ebf54
sub eax, edx
mov edx, dword [0x442fdc]
add dword [0x442fdc], ecx
cmp eax, edx
jge 0x404a6b
mov eax, dword [0x447f68]
mov ecx, dword [ebp + 0x10]
movzx edx, word [ecx + esi*2]
add edx, ebx
push edx
push edi
call fcn.00407650
mov eax, dword [0x44a098]
mov ecx, dword [0x43dd48]
not eax
or ecx, eax
push 5
mov word [0x46a8e4], cx
push 0x3842
call fcn.004331e0
fld qword [0x458278]
mov esi, eax
push esi
fstp dword [0x47b8a8]
push edi
call fcn.00407650
and dword [0x4494e0], 0x7dc0631b
push esi
push 5
call fcn.0040a430
mov eax, dword [0x441b9c]
mov edx, dword [0x444e1c]
imul eax, eax, 0xd5bd3049
dec dword [0x444e1c]
add esp, 0x20
cmp edx, eax
pop edi
pop esi
pop ebx
jle 0x404afb
movzx eax, word [0x46ced4]
and eax, 0x8a9c4110
mov word [0x46ced4], ax
mov esp, ebp
pop ebp
ret
and dword [0x448da0], 0xc3271b1b
mov esp, ebp
pop ebp
ret