Function at 0x463950
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2e0
mov eax, dword [0x4b3080]
xor eax, esp
mov dword [esp + 0x2dc], eax
mov eax, dword [ebp + 8]
push esi
mov esi, edx
mov dword [esp + 0x24], ecx
push edi
mov edi, dword [ebp + 0xc]
mov edx, eax
imul edx, edi
mov ecx, esi
movss dword [esp + 0x3c], xmm2
mov dword [esp + 0x1c], esi
mov dword [esp + 0x14], eax
call fcn.0045d450
push 0x80
lea eax, [esp + 0x1e4]
movsd qword [esp + 0x44], xmm0
push 0
push eax
call fcn.00467a60
mov eax, dword [esp + 0x20]
add esp, 0xc
shl eax, 2
mov dword [esp + 0xc], eax
test edi, edi
jle 0x463a4e
mov edx, dword [ebp + 0x10]
mov ecx, esi
mov esi, dword [esp + 0xc]
inc edx
mov eax, edi
mov dword [esp + 0x2c], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x24], eax
nop word [eax + eax]
cmp edx, 1
jle 0x463a39
mov eax, dword [esp + 0x14]
lea edi, [ecx + 4]
mov edx, dword [ebp + 0x10]
lea esi, [esp + 0x1e0]
dec eax
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], eax
nop
push eax
mov edx, edi
call fcn.00462950
addsd xmm0, qword [esi]
mov eax, dword [esp + 0x1c]
add esp, 4
mov ecx, dword [esp + 0x10]
dec eax
add edi, 4
mov dword [esp + 0x18], eax
movsd qword [esi], xmm0
add esi, 8
sub dword [esp + 0x20], 1
jne 0x463a00
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0xc]
add ecx, esi
sub eax, 1
mov dword [esp + 0x10], ecx
mov dword [esp + 0x24], eax
jne 0x4639e0
mov eax, dword [esp + 0xc]
jmp 0x463a52
mov dword [esp + 0xc], eax
movsd xmm1, qword [esp + 0x40]
lea esi, [esp + 0x1e0]
mulsd xmm1, qword [0x4a7700]
lea edi, [esp + 0x260]
mov ecx, 0x20
mov dword [esp + 0x20], 0
movsd xmm6, qword [0x4a7930]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp + 0x10]
movaps xmm7, xmm6
movaps xmm2, xmm1
movsd qword [esp + 0x48], xmm1
addsd xmm2, qword [esp + 0x40]
xor esi, esi
movsd qword [esp + 0x30], xmm7
addsd xmm2, qword [0x4a76a0]
movsd qword [esp + 0xd0], xmm2
movsd qword [esp + 0x158], xmm2
test edi, edi
jle 0x463f5f
mov edx, 0xfffffff8
mov ecx, 0xfffffffc
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], ecx
cmp dword [ebp + 0xc], 0
jle 0x463c42
mov edx, dword [ebp + 0xc]
sub eax, ecx
mov edi, dword [esp + 0x1c]
sub eax, 4
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], edx
nop dword [eax]
nop dword [eax + eax]
movss xmm6, dword [edi + ecx + 4]
lea edx, [edi + ecx]
movss xmm5, dword [eax + edx]
xor eax, eax
cvtps2pd xmm4, xmm6
cvtps2pd xmm5, xmm5
cmp ecx, 0xfffffffc
jle 0x463ba3
mov ecx, dword [esp + 0xc]
add ecx, edi
movss xmm7, dword [ecx - 4]
nop word [eax + eax]
movss xmm3, dword [edx]
sub edx, 4
movsd xmm1, qword [esp + eax*8 + 0x1e0]
movaps xmm0, xmm3
movss xmm2, dword [ecx]
add ecx, 4
mulss xmm0, xmm6
cvtps2pd xmm0, xmm0
subsd xmm1, xmm0
movaps xmm0, xmm2
mulss xmm0, xmm7
cvtps2pd xmm0, xmm0
movsd qword [esp + eax*8 + 0x1e0], xmm1
movsd xmm1, qword [esp + eax*8 + 0x260]
subsd xmm1, xmm0
cvtps2pd xmm0, xmm3
movsd qword [esp + eax*8 + 0x260], xmm1
movsd xmm1, qword [esp + eax*8 + 0x50]
inc eax
mulsd xmm0, xmm1
addsd xmm4, xmm0
cvtps2pd xmm0, xmm2
mulsd xmm0, xmm1
addsd xmm5, xmm0
cmp eax, esi
jl 0x463b30
xor eax, eax
jmp 0x463baa
xor eax, eax
cmp ecx, 0xfffffffc
jl 0x463c11
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x18]
add ecx, 0xfffffffc
add edx, 4
add ecx, edi
add edx, edi
nop dword [eax]
movss xmm1, dword [edx]
sub edx, 4
movsd xmm0, qword [esp + eax*8 + 0xd0]
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm4
subsd xmm0, xmm1
movss xmm1, dword [ecx]
cvtps2pd xmm1, xmm1
add ecx, 4
movsd qword [esp + eax*8 + 0xd0], xmm0
movsd xmm0, qword [esp + eax*8 + 0x158]
mulsd xmm1, xmm5
subsd xmm0, xmm1
movsd qword [esp + eax*8 + 0x158], xmm0
inc eax
cmp eax, esi
jle 0x463bc0
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
lea eax, [edx*4]
add edi, eax
sub dword [esp + 0x24], 1
mov eax, dword [esp + 0x2c]
jne 0x463b00
movsd xmm6, qword [0x4a7930]
movsd xmm7, qword [esp + 0x30]
mov edi, dword [ebp + 0x10]
mov edx, dword [esp + 0x10]
movsd xmm3, qword [esp + esi*8 + 0x1e0]
xor ecx, ecx
movsd xmm2, qword [esp + esi*8 + 0x260]
test esi, esi
jle 0x463cf8
mov eax, edx
movsd xmm1, qword [esp + ecx*8 + 0x50]
inc ecx
movaps xmm0, xmm1
mulsd xmm1, qword [esp + eax + 0x1e0]
mulsd xmm0, qword [esp + eax + 0x260]
sub eax, 8
addsd xmm2, xmm1
addsd xmm3, xmm0
cmp ecx, esi
jl 0x463c60
lea ecx, [esp + 0x158]
movsd qword [esp + esi*8 + 0xd8], xmm3
movsd xmm4, qword [esp + 0xd0]
lea ecx, [ecx + esi*8]
movsd qword [esp + esi*8 + 0x160], xmm2
xor eax, eax
movsd xmm5, qword [esp + 0x158]
nop dword [eax + eax]
movsd xmm1, qword [esp + eax*8 + 0x50]
movaps xmm0, xmm1
mulsd xmm0, qword [ecx]
sub ecx, 8
addsd xmm2, xmm0
movaps xmm0, xmm1
mulsd xmm0, qword [esp + eax*8 + 0x160]
mulsd xmm1, qword [esp + eax*8 + 0xd8]
inc eax
addsd xmm5, xmm0
addsd xmm4, xmm1
cmp eax, esi
jl 0x463cc0
jmp 0x463d1c
movsd qword [esp + esi*8 + 0xd8], xmm3
movsd xmm4, qword [esp + 0xd0]
movsd qword [esp + esi*8 + 0x160], xmm2
movsd xmm5, qword [esp + 0x158]
movaps xmm3, xmm2
movsd qword [esp + 0x30], xmm2
mulsd xmm3, qword [0x4a7bb0]
addsd xmm4, xmm5
movss xmm5, dword [esp + 0x3c]
movaps xmm1, xmm6
cvtps2pd xmm5, xmm5
divsd xmm3, xmm4
movaps xmm0, xmm3
mulsd xmm0, xmm3
subsd xmm1, xmm0
mulsd xmm1, xmm7
comisd xmm5, xmm1
jb 0x463db2
movaps xmm1, xmm5
movaps xmm0, xmm6
divsd xmm1, xmm7
subsd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x463d73
sqrtsd xmm0, xmm0
jmp 0x463d78
call fcn.00485ad0
movaps xmm3, xmm0
xorps xmm5, xmm5
movsd xmm0, qword [esp + 0x30]
comisd xmm0, xmm5
jbe 0x463d91
xorps xmm3, xmmword [0x4a7e10]
movss xmm0, dword [esp + 0x3c]
movsd xmm6, qword [0x4a7930]
cvtps2pd xmm7, xmm0
mov dword [esp + 0x20], 1
movsd qword [esp + 0x30], xmm7
jmp 0x463dbb
movaps xmm7, xmm1
movsd qword [esp + 0x30], xmm1
lea edx, [esi + 1]
movaps xmm4, xmm3
sar edx, 1
xor eax, eax
unpcklpd xmm4, xmm4
test edx, edx
jle 0x463e12
mov ecx, dword [esp + 0x10]
lea ecx, [esp + ecx + 0x50]
nop word [eax + eax]
movsd xmm1, qword [ecx]
movaps xmm0, xmm3
movsd xmm2, qword [esp + eax*8 + 0x50]
mulsd xmm0, xmm1
addsd xmm0, xmm2
movsd qword [esp + eax*8 + 0x50], xmm0
movaps xmm0, xmm3
mulsd xmm0, xmm2
inc eax
addsd xmm0, xmm1
movsd qword [ecx], xmm0
sub ecx, 8
cmp eax, edx
jl 0x463de0
cmp dword [esp + 0x20], 0
lea edx, [esi + 1]
movsd qword [esp + esi*8 + 0x50], xmm3
jne 0x463f85
lea eax, [esi + 1]
xor ecx, ecx
test eax, eax
js 0x463ee5
lea eax, [esi + 2]
cmp eax, 2
jb 0x463e9c
lea edx, [esi + 1]
and eax, 0x80000001
jns 0x463e4a
dec eax
or eax, 0xfffffffe
inc eax
sub edx, eax
lea eax, [esp + 0x158]
lea eax, [eax + esi*8]
movsd xmm1, qword [eax + 8]
movhpd xmm1, qword [eax]
movups xmm2, xmmword [esp + ecx*8 + 0xd0]
movaps xmm0, xmm1
mulpd xmm0, xmm4
addpd xmm0, xmm2
mulpd xmm2, xmm4
movups xmmword [esp + ecx*8 + 0xd0], xmm0
add ecx, 2
addpd xmm2, xmm1
movlpd qword [eax + 8], xmm2
movhpd qword [eax], xmm2
sub eax, 0x10
cmp ecx, edx
jle 0x463e56
lea eax, [esi + 1]
cmp ecx, eax
jg 0x463ee5
mov eax, esi
lea edx, [esp + 0x160]
sub eax, ecx
lea eax, [edx + eax*8]
lea edx, [esi + 1]
nop dword [eax]
movsd xmm0, qword [eax]
movsd xmm2, qword [esp + ecx*8 + 0xd0]
mulsd xmm0, xmm3
addsd xmm0, xmm2
movsd qword [esp + ecx*8 + 0xd0], xmm0
movaps xmm0, xmm3
mulsd xmm0, xmm2
inc ecx
addsd xmm0, qword [eax]
movsd qword [eax], xmm0
sub eax, 8
cmp ecx, edx
jle 0x463eb0
mov eax, dword [esp + 0xc]
inc esi
mov ecx, dword [esp + 0x18]
sub eax, 4
mov edx, dword [esp + 0x10]
add ecx, 4
add edx, 8
mov dword [esp + 0xc], eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], edx
cmp esi, edi
jl 0x463ad6
movsd xmm2, qword [esp + 0xd0]
xor eax, eax
mov edx, dword [esp + 0x28]
nop
movsd xmm1, qword [esp + eax*8 + 0x50]
movaps xmm0, xmm1
mulsd xmm0, qword [esp + eax*8 + 0xd8]
addsd xmm2, xmm0
movaps xmm0, xmm1
mulsd xmm0, xmm1
xorps xmm1, xmmword [0x4a7e10]
addsd xmm6, xmm0
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm1
movss dword [edx + eax*4], xmm0
inc eax
cmp eax, edi
jl 0x463f20
movsd xmm1, qword [esp + 0x48]
mulsd xmm1, xmm6
movaps xmm7, xmm2
subsd xmm7, xmm1
mov ecx, dword [esp + 0x2e4]
xorps xmm0, xmm0
pop edi
pop esi
xor ecx, esp
cvtsd2ss xmm0, xmm7
call fcn.004661fb
mov esp, ebp
pop ebp
ret
cmp edx, edi
jge 0x463fa1
mov ecx, edi
lea edi, [esp + 0x50]
sub ecx, edx
lea edi, [edi + edx*8]
shl ecx, 3
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [ebp + 0x10]
xor ecx, ecx
cmp edi, 8
jb 0x464044
mov esi, dword [esp + 0x28]
lea eax, [esp + edi*8 + 0x48]
lea edx, [esi - 4]
lea edx, [edx + edi*4]
cmp esi, eax
ja 0x463fca
lea eax, [esp + 0x50]
cmp edx, eax
jae 0x464044
movaps xmm1, xmmword [0x4a7e10]
lea eax, [esi + 0x10]
mov edx, edi
lea esi, [esp + 0x50]
and edx, 0xfffffff8
lea edi, [esp + 0x70]
movups xmm0, xmmword [esi + ecx*8]
lea esi, [esp + 0x80]
lea eax, [eax + 0x20]
xorps xmm0, xmm1
cvtpd2ps xmm0, xmm0
movsd qword [eax - 0x30], xmm0
movups xmm0, xmmword [esp + ecx*8 + 0x60]
xorps xmm0, xmm1
cvtpd2ps xmm0, xmm0
movsd qword [eax - 0x28], xmm0
movups xmm0, xmmword [edi + ecx*8]
xorps xmm0, xmm1
cvtpd2ps xmm0, xmm0
movsd qword [eax - 0x20], xmm0
movups xmm0, xmmword [esi + ecx*8]
add ecx, 8
lea esi, [esp + 0x50]
xorps xmm0, xmm1
cvtpd2ps xmm0, xmm0
movsd qword [eax - 0x18], xmm0
cmp ecx, edx
jl 0x463fe1
mov edi, dword [ebp + 0x10]
cmp ecx, edi
jge 0x4640d7
jmp 0x46404b
movaps xmm1, xmmword [0x4a7e10]
mov eax, edi
sub eax, ecx
cmp eax, 4
jl 0x4640b9
mov eax, dword [esp + 0x28]
lea esi, [edi - 3]
add eax, 8
lea eax, [eax + ecx*4]
movsd xmm0, qword [esp + ecx*8 + 0x50]
lea eax, [eax + 0x10]
xorps xmm0, xmm1
cvtsd2ss xmm0, xmm0
movss dword [eax - 0x18], xmm0
movsd xmm0, qword [esp + ecx*8 + 0x58]
xorps xmm0, xmm1
cvtsd2ss xmm0, xmm0
movss dword [eax - 0x14], xmm0
movsd xmm0, qword [esp + ecx*8 + 0x60]
xorps xmm0, xmm1
cvtsd2ss xmm0, xmm0
movss dword [eax - 0x10], xmm0
movsd xmm0, qword [esp + ecx*8 + 0x68]
add ecx, 4
xorps xmm0, xmm1
mov edx, ecx
cvtsd2ss xmm0, xmm0
movss dword [eax - 0xc], xmm0
cmp ecx, esi
jl 0x464061
cmp edx, edi
jge 0x4640d7
mov eax, dword [esp + 0x28]
nop dword [eax]
movsd xmm0, qword [esp + ecx*8 + 0x50]
xorps xmm0, xmm1
cvtsd2ss xmm0, xmm0
movss dword [eax + ecx*4], xmm0
inc ecx
cmp ecx, edi
jl 0x4640c0
cmp dword [ebp + 0xc], 0
jle 0x464230
mov eax, dword [esp + 0x14]
mov esi, edi
and esi, 0xfffc
xorps xmm5, xmm5
shl eax, 2
mov dword [esp + 0x14], eax
xor ecx, ecx
movaps xmm4, xmm5
test esi, esi
je 0x46416b
mov eax, dword [esp + 0x1c]
lea edx, [esi - 1]
shr edx, 2
add eax, 8
inc edx
lea ecx, [edx*4]
nop word [eax + eax]
movss xmm2, dword [eax - 4]
movss xmm3, dword [eax - 8]
movss xmm0, dword [eax]
movss xmm1, dword [eax + 4]
add eax, 0x10
cvtps2pd xmm3, xmm3
cvtps2pd xmm2, xmm2
mulsd xmm3, xmm3
mulsd xmm2, xmm2
cvtps2pd xmm0, xmm0
addsd xmm3, xmm2
mulsd xmm0, xmm0
cvtps2pd xmm1, xmm1
addsd xmm3, xmm0
mulsd xmm1, xmm1
addsd xmm3, xmm1
addsd xmm4, xmm3
sub edx, 1
jne 0x464120
mov eax, dword [esp + 0x14]
cmp ecx, edi
jge 0x464209
mov eax, edi
sub eax, ecx
cmp eax, 4
jl 0x4641eb
mov eax, dword [esp + 0x1c]
mov edx, edi
sub edx, ecx
sub edx, 4
shr edx, 2
lea eax, [eax + ecx*4]
add eax, 8
inc edx
lea ecx, [ecx + edx*4]
nop dword [eax]
nop dword [eax + eax]
movss xmm3, dword [eax - 8]
movss xmm0, dword [eax - 4]
movss xmm1, dword [eax]
movss xmm2, dword [eax + 4]
add eax, 0x10
cvtps2pd xmm3, xmm3
cvtps2pd xmm0, xmm0
mulsd xmm3, xmm3
mulsd xmm0, xmm0
cvtps2pd xmm1, xmm1
addsd xmm4, xmm3
mulsd xmm1, xmm1
cvtps2pd xmm2, xmm2
addsd xmm4, xmm0
mulsd xmm2, xmm2
addsd xmm4, xmm1
addsd xmm4, xmm2
sub edx, 1
jne 0x4641a0
cmp ecx, edi
jge 0x464205
mov eax, dword [esp + 0x1c]
nop
movss xmm0, dword [eax + ecx*4]
inc ecx
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm0
addsd xmm4, xmm0
cmp ecx, edi
jl 0x4641f0
mov eax, dword [esp + 0x14]
movsd xmm0, qword [esp + 0x40]
add dword [esp + 0x1c], eax
subsd xmm0, xmm4
sub dword [ebp + 0xc], 1
movsd qword [esp + 0x40], xmm0
jne 0x4640f7
mulsd xmm7, xmm0
jmp 0x463f6a
movsd xmm0, qword [esp + 0x40]
mulsd xmm7, xmm0
jmp 0x463f6a