Function at 0x405bc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x60
push esi
push edi
lea eax, [esp + 0x2c]
mov dword [esp + 0x34], edx
push eax
lea eax, [esp + 0x28]
movss dword [esp + 0x14], xmm2
push eax
lea edx, [esp + 0x24]
movss dword [esp + 0x44], xmm1
mov dword [esp + 0x24], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
call fcn.00405a60
add esp, 8
test al, al
je 0x405e52
mov ecx, dword [0x6815a8]
mov eax, dword [ecx + 0x3f04]
mov byte [eax + 0xc5], 1
mov esi, dword [ecx + 0x3f04]
mov dword [esp + 0x24], esi
call fcn.00475600
movss xmm1, dword [ebp + 0xc]
xor edi, edi
movss xmm2, dword [esp + 0x10]
divss xmm1, dword [0x672068]
divss xmm2, dword [0x672068]
fstp dword [esp + 0xc]
fld dword [esp + 0xc]
fmul dword [ebp + 8]
movss dword [ebp + 0xc], xmm1
movss dword [esp + 0x10], xmm2
fstp dword [esp + 0x14]
movd xmm0, edi
mov eax, edi
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x6722c0]
cvtpd2ps xmm0, xmm0
movss dword [esp + 0x1c], xmm0
mulss xmm0, xmm1
addss xmm0, dword [esp + 0x14]
xorps xmm0, xmmword [0x6722f0]
cvtss2sd xmm0, xmm0
movsd qword [esp + 0x50], xmm0
call fcn.00523ec0
cvtsd2ss xmm0, xmm0
movss dword [esp + 0xc], xmm0
movsd xmm0, qword [esp + 0x50]
call fcn.00523d00
movsd xmm1, qword [0x672028]
cvtsd2ss xmm0, xmm0
movss dword [esp + 0x4c], xmm0
movss xmm0, dword [esp + 0xc]
cvtps2pd xmm0, xmm0
call fcn.00524450
cvtsd2ss xmm0, xmm0
inc edi
mov eax, edi
shr eax, 0x1f
addss xmm0, dword [0x672010]
movss dword [esp + 0x50], xmm0
movd xmm0, edi
cvtdq2pd xmm0, xmm0
addsd xmm0, qword [eax*8 + 0x6722c0]
cvtpd2ps xmm0, xmm0
mulss xmm0, dword [ebp + 0xc]
addss xmm0, dword [esp + 0x14]
xorps xmm0, xmmword [0x6722f0]
cvtss2sd xmm0, xmm0
movsd qword [esp + 0x40], xmm0
call fcn.00523ec0
cvtsd2ss xmm0, xmm0
movss dword [esp + 0x18], xmm0
movsd xmm0, qword [esp + 0x40]
call fcn.00523d00
movsd xmm1, qword [0x672028]
cvtsd2ss xmm0, xmm0
movss dword [esp + 0x38], xmm0
movss xmm0, dword [esp + 0x18]
cvtps2pd xmm0, xmm0
call fcn.00524450
push dword [esp + 0x34]
mov esi, dword [esi + 0x288]
cvtsd2ss xmm0, xmm0
addss xmm0, dword [0x672010]
movss dword [esp + 0x44], xmm0
call fcn.0046a830
movss xmm3, dword [esp + 0x40]
movss xmm0, dword [esp + 0x3c]
mulss xmm0, xmm3
divss xmm0, dword [esp + 0x44]
addss xmm0, dword [esp + 0x30]
movss dword [esp + 0x5c], xmm0
movss xmm0, dword [esp + 0x1c]
mulss xmm0, xmm3
mulss xmm0, dword [esp + 0x3c]
divss xmm0, dword [esp + 0x44]
addss xmm0, dword [esp + 0x34]
movss dword [esp + 0x60], xmm0
movss xmm0, dword [esp + 0x50]
mulss xmm0, xmm3
divss xmm0, dword [esp + 0x54]
addss xmm0, dword [esp + 0x30]
movss dword [esp + 0x64], xmm0
movss xmm0, dword [esp + 0x10]
mulss xmm0, xmm3
mulss xmm0, dword [esp + 0x50]
divss xmm0, dword [esp + 0x54]
addss xmm0, dword [esp + 0x34]
movss dword [esp + 0x68], xmm0
movss xmm0, dword [esp + 0x20]
mulss xmm0, dword [esp + 0x14]
movss dword [esp], xmm0
push eax
lea eax, [esp + 0x60]
mov ecx, esi
push eax
lea eax, [esp + 0x6c]
push eax
call fcn.004883a0
movss xmm1, dword [ebp + 0xc]
mov esi, dword [esp + 0x24]
cmp edi, 0x32
jb 0x405c82
pop edi
pop esi
mov esp, ebp
pop ebp
ret