Function at 0x46f5d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2e0
mov eax, dword [0x533840]
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.00467ce0
push 0x80
lea eax, [esp + 0x1e4]
movsd qword [esp + 0x44], xmm0
push 0
push eax
call fcn.004c62a0
mov eax, dword [esp + 0x20]
add esp, 0xc
shl eax, 2
mov dword [esp + 0xc], eax
test edi, edi
jle 0x46f6ce
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 0x46f6b9
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.0046e3f0
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 0x46f680
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 0x46f660
mov eax, dword [esp + 0xc]
jmp 0x46f6d2
mov dword [esp + 0xc], eax
movsd xmm1, qword [esp + 0x40]
lea esi, [esp + 0x1e0]
mulsd xmm1, qword [0x52d628]
lea edi, [esp + 0x260]
mov ecx, 0x20
mov dword [esp + 0x20], 0
movsd xmm6, qword [0x52d780]
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 [0x52d5c8]
movsd qword [esp + 0xd0], xmm2
movsd qword [esp + 0x158], xmm2
test edi, edi
jle 0x46fbdf
mov edx, 0xfffffff8
mov ecx, 0xfffffffc
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], ecx
cmp dword [ebp + 0xc], 0
jle 0x46f8c2
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 0x46f823
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 0x46f7b0
xor eax, eax
jmp 0x46f82a
xor eax, eax
cmp ecx, 0xfffffffc
jl 0x46f891
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 0x46f840
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 0x46f780
movsd xmm6, qword [0x52d780]
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 0x46f978
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 0x46f8e0
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 0x46f940
jmp 0x46f99c
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 [0x52d958]
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 0x46fa32
movaps xmm1, xmm5
movaps xmm0, xmm6
divsd xmm1, xmm7
subsd xmm0, xmm1
xorps xmm1, xmm1
ucomisd xmm1, xmm0
ja 0x46f9f3
sqrtsd xmm0, xmm0
jmp 0x46f9f8
call fcn.004d8400
movaps xmm3, xmm0
xorps xmm5, xmm5
movsd xmm0, qword [esp + 0x30]
comisd xmm0, xmm5
jbe 0x46fa11
xorps xmm3, xmmword [0x52db20]
movss xmm0, dword [esp + 0x3c]
movsd xmm6, qword [0x52d780]
cvtps2pd xmm7, xmm0
mov dword [esp + 0x20], 1
movsd qword [esp + 0x30], xmm7
jmp 0x46fa3b
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 0x46fa92
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 0x46fa60
cmp dword [esp + 0x20], 0
lea edx, [esi + 1]
movsd qword [esp + esi*8 + 0x50], xmm3
jne 0x46fc05
lea eax, [esi + 1]
xor ecx, ecx
test eax, eax
js 0x46fb65
lea eax, [esi + 2]
cmp eax, 2
jb 0x46fb1c
lea edx, [esi + 1]
and eax, 0x80000001
jns 0x46faca
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 0x46fad6
lea eax, [esi + 1]
cmp ecx, eax
jg 0x46fb65
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 0x46fb30
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 0x46f756
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 [0x52db20]
addsd xmm6, xmm0
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm1
movss dword [edx + eax*4], xmm0
inc eax
cmp eax, edi
jl 0x46fba0
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.004c43a7
mov esp, ebp
pop ebp
ret
cmp edx, edi
jge 0x46fc21
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 0x46fcc4
mov esi, dword [esp + 0x28]
lea eax, [esp + edi*8 + 0x48]
lea edx, [esi - 4]
lea edx, [edx + edi*4]
cmp esi, eax
ja 0x46fc4a
lea eax, [esp + 0x50]
cmp edx, eax
jae 0x46fcc4
movaps xmm1, xmmword [0x52db20]
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 0x46fc61
mov edi, dword [ebp + 0x10]
cmp ecx, edi
jge 0x46fd57
jmp 0x46fccb
movaps xmm1, xmmword [0x52db20]
mov eax, edi
sub eax, ecx
cmp eax, 4
jl 0x46fd39
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 0x46fce1
cmp edx, edi
jge 0x46fd57
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 0x46fd40
cmp dword [ebp + 0xc], 0
jle 0x46feb0
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 0x46fdeb
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 0x46fda0
mov eax, dword [esp + 0x14]
cmp ecx, edi
jge 0x46fe89
mov eax, edi
sub eax, ecx
cmp eax, 4
jl 0x46fe6b
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 0x46fe20
cmp ecx, edi
jge 0x46fe85
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 0x46fe70
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 0x46fd77
mulsd xmm7, xmm0
jmp 0x46fbea
movsd xmm0, qword [esp + 0x40]
mulsd xmm7, xmm0
jmp 0x46fbea