Function at 0x43c630
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x2f8
mov eax, dword [0x533840]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, edx
mov dword [ebp - 0x2d0], ecx
push esi
push edi
mov edi, dword [ebx + 8]
mov ecx, eax
mov edx, edi
mov dword [ebp - 0x2c8], eax
imul edx, dword [ebx + 0xc]
mov dword [ebp - 0x2cc], edi
call fcn.004395e0
push 0x80
lea eax, [ebp - 0x218]
movsd qword [ebp - 0x2d8], xmm0
push 0
push eax
call fcn.004c62a0
mov edx, dword [ebx + 0xc]
lea eax, [edi*4]
add esp, 0xc
mov dword [ebp - 0x2a0], eax
test edx, edx
jle 0x43c769
mov edx, dword [ebx + 0x14]
mov ecx, dword [ebp - 0x2c8]
inc edx
mov eax, dword [ebx + 0xc]
mov esi, dword [ebp - 0x2a0]
mov dword [ebp - 0x2b4], edx
mov dword [ebp - 0x29c], ecx
mov dword [ebp - 0x2a8], eax
cmp edx, 1
jle 0x43c747
mov eax, dword [ebp - 0x2cc]
lea edi, [ecx + 4]
mov edx, dword [ebx + 0x14]
lea esi, [ebp - 0x218]
dec eax
mov dword [ebp - 0x2a4], edx
mov dword [ebp - 0x2c4], eax
nop dword [eax + eax]
push eax
mov edx, edi
call fcn.0043b2c0
addsd xmm0, qword [esi]
mov eax, dword [ebp - 0x2c4]
add esp, 4
mov ecx, dword [ebp - 0x29c]
dec eax
add edi, 4
mov dword [ebp - 0x2c4], eax
movsd qword [esi], xmm0
add esi, 8
sub dword [ebp - 0x2a4], 1
jne 0x43c700
mov eax, dword [ebp - 0x2a8]
mov edx, dword [ebp - 0x2b4]
mov esi, dword [ebp - 0x2a0]
add ecx, esi
sub eax, 1
mov dword [ebp - 0x29c], ecx
mov dword [ebp - 0x2a8], eax
jne 0x43c6d7
mov eax, dword [ebp - 0x2a0]
mov edx, dword [ebx + 0xc]
jmp 0x43c76f
mov dword [ebp - 0x2a0], eax
movsd xmm0, qword [ebp - 0x2d8]
lea esi, [ebp - 0x218]
movaps xmm2, xmm0
lea edi, [ebp - 0x298]
mulsd xmm2, qword [0x52d788]
mov ecx, 0x20
rep movsd dword es:[edi], dword [esi]
addsd xmm2, qword [0x52d5c8]
xor ecx, ecx
mov dword [ebp - 0x2a4], ecx
movsd qword [ebp - 0x90], xmm2
movsd qword [ebp - 0x198], xmm2
cmp dword [ebx + 0x14], ecx
jle 0x43cf6d
mov edi, 0xfffffff0
mov dword [ebp - 0x29c], edi
nop dword [eax]
test edx, edx
jle 0x43c944
mov esi, dword [ebx + 0xc]
lea edx, [ecx*4]
mov edi, dword [ebp - 0x2c8]
sub eax, edx
mov dword [ebp - 0x2b4], eax
mov dword [ebp - 0x2a8], esi
add edx, 0xfffffffc
add edx, edi
movss xmm5, dword [edx + eax]
xor eax, eax
cmp dword [ebp - 0x29c], 0xfffffff0
movss xmm6, dword [edx + 4]
cvtps2pd xmm4, xmm6
cvtps2pd xmm5, xmm5
jle 0x43c8a7
mov esi, dword [ebp - 0x2a0]
add esi, edi
movss xmm7, dword [esi - 4]
nop word [eax + eax]
movss xmm3, dword [edx]
sub edx, 4
movsd xmm1, qword [ebp + eax*8 - 0x218]
movaps xmm0, xmm3
movss xmm2, dword [esi]
add esi, 4
mulss xmm0, xmm6
cvtps2pd xmm0, xmm0
subsd xmm1, xmm0
movaps xmm0, xmm7
mulss xmm0, xmm2
cvtss2sd xmm0, xmm0
movsd qword [ebp + eax*8 - 0x218], xmm1
movsd xmm1, qword [ebp + eax*8 - 0x298]
subsd xmm1, xmm0
cvtps2pd xmm0, xmm3
movsd qword [ebp + eax*8 - 0x298], xmm1
movsd xmm1, qword [ebp + eax*8 - 0x110]
inc eax
mulsd xmm0, xmm1
addsd xmm4, xmm0
cvtps2pd xmm0, xmm2
mulsd xmm0, xmm1
addsd xmm5, xmm0
cmp eax, ecx
jl 0x43c830
xor eax, eax
jmp 0x43c8b2
xor eax, eax
cmp dword [ebp - 0x29c], 0xfffffff0
jl 0x43c913
mov edx, dword [ebp - 0x2a0]
lea esi, [edi + ecx*4]
add edx, 0xfffffffc
add edx, edi
movss xmm1, dword [esi]
sub esi, 4
movsd xmm0, qword [ebp + eax*8 - 0x90]
cvtps2pd xmm1, xmm1
mulsd xmm1, xmm4
subsd xmm0, xmm1
movss xmm1, dword [edx]
cvtps2pd xmm1, xmm1
add edx, 4
movsd qword [ebp + eax*8 - 0x90], xmm0
movsd xmm0, qword [ebp + eax*8 - 0x198]
mulsd xmm1, xmm5
subsd xmm0, xmm1
movsd qword [ebp + eax*8 - 0x198], xmm0
inc eax
cmp eax, ecx
jle 0x43c8c0
mov esi, dword [ebp - 0x2a8]
mov edx, dword [ebp - 0x2cc]
lea eax, [edx*4]
add edi, eax
lea edx, [ecx*4]
mov eax, dword [ebp - 0x2b4]
sub esi, 1
mov dword [ebp - 0x2a8], esi
jne 0x43c7f6
mov edi, dword [ebp - 0x29c]
movsd xmm3, qword [ebp + ecx*8 - 0x218]
xor edx, edx
movsd xmm6, qword [ebp + ecx*8 - 0x298]
test ecx, ecx
je 0x43caca
cmp ecx, 4
jb 0x43ca61
mov esi, ecx
xorps xmm7, xmm7
mov eax, edi
movaps xmmword [ebp - 0x2c0], xmm7
mov edi, dword [ebp - 0x29c]
lea ecx, [ebp - 0x110]
and esi, 0xfffffffc
xorps xmm5, xmm5
xorps xmm4, xmm4
nop dword [eax]
movups xmm2, xmmword [ecx + edx*8]
movsd xmm1, qword [ebp + eax - 0x290]
movhpd xmm1, qword [ebp + eax - 0x298]
mulpd xmm1, xmm2
addpd xmm7, xmm1
movsd xmm1, qword [ebp + eax - 0x210]
movhpd xmm1, qword [ebp + eax - 0x218]
mulpd xmm1, xmm2
movups xmm2, xmmword [ebp + edx*8 - 0x100]
add edx, 4
addpd xmm1, xmmword [ebp - 0x2c0]
movaps xmmword [ebp - 0x2c0], xmm1
movsd xmm1, qword [ebp + eax - 0x2a0]
movhpd xmm1, qword [ebp + eax - 0x2a8]
mulpd xmm1, xmm2
addpd xmm5, xmm1
movsd xmm1, qword [ebp + eax - 0x220]
movhpd xmm1, qword [ebp + eax - 0x228]
sub eax, 0x20
mulpd xmm1, xmm2
addpd xmm4, xmm1
cmp edx, esi
jl 0x43c990
addpd xmm4, xmmword [ebp - 0x2c0]
mov ecx, dword [ebp - 0x2a4]
addpd xmm5, xmm7
movaps xmm0, xmm4
unpckhpd xmm0, xmm4
addsd xmm4, xmm0
movaps xmm0, xmm5
unpckhpd xmm0, xmm5
addsd xmm5, xmm0
addsd xmm6, xmm4
addsd xmm3, xmm5
movsd qword [ebp - 0x2b8], xmm3
movsd qword [ebp - 0x2b8], xmm6
cmp edx, ecx
jge 0x43caca
mov eax, ecx
sub eax, edx
lea eax, [eax*8 - 8]
nop dword [eax]
movsd xmm1, qword [ebp + edx*8 - 0x110]
inc edx
movaps xmm0, xmm1
mulsd xmm1, qword [ebp + eax - 0x218]
mulsd xmm0, qword [ebp + eax - 0x298]
sub eax, 8
addsd xmm1, xmm6
addsd xmm3, xmm0
movaps xmm6, xmm1
cmp edx, ecx
jl 0x43ca70
movsd qword [ebp + ecx*8 - 0x88], xmm3
xor edx, edx
movsd xmm4, qword [ebp - 0x90]
movaps xmm3, xmm1
movsd qword [ebp + ecx*8 - 0x190], xmm6
movsd xmm5, qword [ebp - 0x198]
jmp 0x43caf9
movsd qword [ebp + ecx*8 - 0x88], xmm3
xor edx, edx
movsd xmm4, qword [ebp - 0x90]
movaps xmm3, xmm6
movsd qword [ebp + ecx*8 - 0x190], xmm6
movsd xmm5, qword [ebp - 0x198]
test ecx, ecx
je 0x43cc79
cmp ecx, 4
jb 0x43cc29
xorps xmm7, xmm7
lea eax, [ebp + ecx*8 - 0x1a8]
mov esi, ecx
movaps xmmword [ebp - 0x2f0], xmm7
xor edx, edx
movaps xmmword [ebp - 0x2c0], xmm7
and esi, 0xfffffffc
xorps xmm3, xmm3
xorps xmm5, xmm5
xorps xmm4, xmm4
nop word [eax + eax]
movups xmm2, xmmword [ebp + edx*8 - 0x110]
movups xmm0, xmmword [ebp + edx*8 - 0x190]
movsd xmm1, qword [eax + 0x10]
mulpd xmm0, xmm2
movhpd xmm1, qword [eax + 8]
addpd xmm0, xmmword [ebp - 0x2f0]
mulpd xmm1, xmm2
movaps xmmword [ebp - 0x2f0], xmm0
movups xmm0, xmmword [ebp + edx*8 - 0x88]
addpd xmm7, xmm1
mulpd xmm0, xmm2
movups xmm2, xmmword [ebp + edx*8 - 0x100]
addpd xmm0, xmmword [ebp - 0x2c0]
movsd xmm1, qword [eax]
movhpd xmm1, qword [eax - 8]
sub eax, 0x20
movaps xmmword [ebp - 0x2c0], xmm0
movups xmm0, xmmword [ebp + edx*8 - 0x180]
mulpd xmm1, xmm2
mulpd xmm0, xmm2
addpd xmm3, xmm1
addpd xmm5, xmm0
movups xmm0, xmmword [ebp + edx*8 - 0x78]
add edx, 4
mulpd xmm0, xmm2
addpd xmm4, xmm0
cmp edx, esi
jl 0x43cb30
addpd xmm4, xmmword [ebp - 0x2c0]
addpd xmm5, xmmword [ebp - 0x2f0]
movaps xmm0, xmm4
unpckhpd xmm0, xmm4
addsd xmm4, xmm0
movaps xmm0, xmm5
unpckhpd xmm0, xmm5
addsd xmm5, xmm0
addpd xmm3, xmm7
addsd xmm5, qword [ebp - 0x198]
movaps xmm0, xmm3
unpckhpd xmm0, xmm3
addsd xmm3, xmm0
addsd xmm4, qword [ebp - 0x90]
addsd xmm3, xmm6
movsd qword [ebp - 0x2b8], xmm3
movsd qword [ebp - 0x2b8], xmm5
movsd qword [ebp - 0x2b8], xmm4
cmp edx, ecx
jge 0x43cc79
mov eax, ecx
sub eax, edx
lea eax, [ebp + eax*8 - 0x198]
nop dword [eax]
nop dword [eax + eax]
movsd xmm1, qword [ebp + edx*8 - 0x110]
movaps xmm0, xmm1
mulsd xmm0, qword [eax]
sub eax, 8
addsd xmm3, xmm0
movaps xmm0, xmm1
mulsd xmm0, qword [ebp + edx*8 - 0x190]
mulsd xmm1, qword [ebp + edx*8 - 0x88]
inc edx
addsd xmm5, xmm0
addsd xmm4, xmm1
cmp edx, ecx
jl 0x43cc40
mulsd xmm3, qword [0x52d958]
addsd xmm4, xmm5
lea esi, [ecx + 1]
xor eax, eax
sar esi, 1
divsd xmm3, xmm4
movaps xmm4, xmm3
unpcklpd xmm4, xmm4
test esi, esi
jle 0x43cce8
lea edx, [ebp - 0x108]
add edx, edi
nop dword [eax]
nop word [eax + eax]
movsd xmm1, qword [edx]
movaps xmm0, xmm3
movsd xmm2, qword [ebp + eax*8 - 0x110]
mulsd xmm0, xmm1
addsd xmm0, xmm2
movsd qword [ebp + eax*8 - 0x110], xmm0
movaps xmm0, xmm3
mulsd xmm0, xmm2
inc eax
addsd xmm0, xmm1
movsd qword [edx], xmm0
sub edx, 8
cmp eax, esi
jl 0x43ccb0
lea eax, [ecx + 1]
movsd qword [ebp + ecx*8 - 0x110], xmm3
xor edx, edx
test eax, eax
js 0x43cdb2
lea eax, [ecx + 2]
cmp eax, 2
jb 0x43cd66
lea esi, [ecx + 1]
and eax, 0x80000001
jns 0x43cd15
dec eax
or eax, 0xfffffffe
inc eax
sub esi, eax
lea eax, [ebp - 0x198]
lea eax, [eax + ecx*8]
movsd xmm1, qword [eax + 8]
movhpd xmm1, qword [eax]
movups xmm2, xmmword [ebp + edx*8 - 0x90]
movaps xmm0, xmm1
mulpd xmm0, xmm4
addpd xmm0, xmm2
mulpd xmm2, xmm4
movups xmmword [ebp + edx*8 - 0x90], xmm0
add edx, 2
addpd xmm2, xmm1
movlpd qword [eax + 8], xmm2
movhpd qword [eax], xmm2
sub eax, 0x10
cmp edx, esi
jle 0x43cd20
lea eax, [ecx + 1]
cmp edx, eax
jg 0x43cdb2
mov eax, ecx
lea esi, [ebp - 0x190]
sub eax, edx
lea eax, [esi + eax*8]
lea esi, [ecx + 1]
nop word [eax + eax]
movsd xmm0, qword [eax]
movsd xmm2, qword [ebp + edx*8 - 0x90]
mulsd xmm0, xmm3
addsd xmm0, xmm2
mulsd xmm2, xmm3
addsd xmm2, qword [eax]
movsd qword [ebp + edx*8 - 0x90], xmm0
inc edx
movsd qword [eax], xmm2
sub eax, 8
cmp edx, esi
jle 0x43cd80
mov eax, dword [ebp - 0x2a0]
inc ecx
mov esi, dword [ebx + 0x14]
sub eax, 4
mov edx, dword [ebx + 0xc]
add edi, 8
mov dword [ebp - 0x2a4], ecx
mov dword [ebp - 0x2a0], eax
mov dword [ebp - 0x29c], edi
cmp ecx, esi
jl 0x43c7d0
movsd xmm0, qword [0x52d780]
xor ecx, ecx
movsd xmm4, qword [ebp - 0x90]
movaps xmm3, xmm0
movaps xmm5, xmmword [0x52db20]
movaps xmm2, xmm4
mov edi, dword [ebp - 0x2d0]
cmp esi, 4
jb 0x43cf03
lea eax, [ebp - 0x90]
lea eax, [eax + esi*8]
lea edx, [esi - 1]
lea edx, [edi + edx*4]
cmp edi, eax
ja 0x43ce2e
lea eax, [ebp - 0x88]
cmp edx, eax
jae 0x43cf03
lea eax, [ebp + esi*8 - 0x118]
cmp edi, eax
ja 0x43ce4d
lea eax, [ebp - 0x110]
movaps xmm2, xmm4
movaps xmm3, xmm0
cmp edx, eax
jae 0x43cf03
mov eax, esi
and eax, 0x80000003
jns 0x43ce5b
dec eax
or eax, 0xfffffffc
inc eax
mov edx, esi
xorps xmm6, xmm6
sub edx, eax
xorps xmm3, xmm3
xorps xmm2, xmm2
xorps xmm7, xmm7
nop dword [eax + eax]
movups xmm1, xmmword [ebp + ecx*8 - 0x110]
movups xmm0, xmmword [ebp + ecx*8 - 0x88]
mulpd xmm0, xmm1
addpd xmm7, xmm0
movaps xmm0, xmm1
mulpd xmm0, xmm1
xorps xmm1, xmm5
addpd xmm6, xmm0
cvtpd2ps xmm0, xmm1
movups xmm1, xmmword [ebp + ecx*8 - 0x100]
movsd qword [edi + ecx*4], xmm0
movups xmm0, xmmword [ebp + ecx*8 - 0x78]
mulpd xmm0, xmm1
addpd xmm2, xmm0
movaps xmm0, xmm1
mulpd xmm0, xmm1
xorps xmm1, xmm5
addpd xmm3, xmm0
cvtpd2ps xmm0, xmm1
movsd qword [edi + ecx*4 + 8], xmm0
add ecx, 4
mov eax, ecx
cmp ecx, edx
jl 0x43ce70
addpd xmm2, xmm7
addpd xmm3, xmm6
movaps xmm0, xmm2
unpckhpd xmm0, xmm2
addsd xmm2, xmm0
movaps xmm0, xmm3
unpckhpd xmm0, xmm3
addsd xmm3, xmm0
addsd xmm2, xmm4
addsd xmm3, qword [0x52d780]
cmp eax, esi
jge 0x43cf3b
movsd xmm1, qword [ebp + ecx*8 - 0x110]
movaps xmm0, xmm1
mulsd xmm0, qword [ebp + ecx*8 - 0x88]
addsd xmm2, xmm0
movaps xmm0, xmm1
mulsd xmm0, xmm1
xorps xmm1, xmm5
addsd xmm3, xmm0
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm1
movss dword [edi + ecx*4], xmm0
inc ecx
cmp ecx, esi
jl 0x43cf03
movsd xmm0, qword [ebp - 0x2d8]
mulsd xmm0, qword [0x52d638]
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
mulsd xmm0, xmm3
subsd xmm2, xmm0
xorps xmm0, xmm0
cvtsd2ss xmm0, xmm2
call fcn.004c43a7
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
movsd xmm3, qword [0x52d780]
jmp 0x43cf43