Function at 0x5a566c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x14
mov esi, ecx
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x40]
mov edi, dword [ebp + 0x34]
mov dword [esp + 0xc], edx
mov ebx, dword [eax]
test ebx, ebx
jle 0x5a5a19
xor eax, eax
cmp ebx, 4
jl 0x5a5dcc
movsd xmm0, qword [0x76e5b0]
mov edx, ebx
mov dword [esp + 0x10], esi
and edx, 0xfffffffc
unpcklpd xmm0, xmm0
mov ecx, dword [ebp + 0x20]
mov esi, dword [ebp + 0x14]
movups xmm1, xmmword [ecx + eax*8]
movups xmm3, xmmword [ecx + eax*8 + 0x10]
mulpd xmm1, xmm0
mulpd xmm3, xmm0
movups xmm2, xmmword [esi + eax*8]
movups xmm4, xmmword [esi + eax*8 + 0x10]
addpd xmm2, xmm1
addpd xmm4, xmm3
movups xmmword [eax*8 + 0x7170b0], xmm2
movups xmmword [eax*8 + 0x7170c0], xmm4
add eax, 4
cmp eax, edx
jb 0x5a56b8
mov esi, dword [esp + 0x10]
cmp edx, ebx
jae 0x5a5e11
movsd xmm0, qword [0x76e5b0]
movsd qword [esp], xmm0
movaps xmm1, xmm0
mov eax, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x14]
movaps xmm0, xmm1
mulsd xmm0, qword [eax + edx*8]
addsd xmm0, qword [ecx + edx*8]
movsd qword [edx*8 + 0x7170b0], xmm0
inc edx
cmp edx, ebx
jb 0x5a5713
cmp ebx, 4
jl 0x5a5e0a
movsd xmm0, qword [0x76e5b0]
mov edx, ebx
unpcklpd xmm0, xmm0
and edx, 0xfffffffc
mov dword [esp + 0x10], esi
xor eax, eax
mov ecx, dword [ebp + 0x24]
mov esi, dword [ebp + 0x18]
movups xmm1, xmmword [ecx + eax*8]
movups xmm3, xmmword [ecx + eax*8 + 0x10]
mulpd xmm1, xmm0
mulpd xmm3, xmm0
movups xmm2, xmmword [esi + eax*8]
movups xmm4, xmmword [esi + eax*8 + 0x10]
addpd xmm2, xmm1
addpd xmm4, xmm3
movups xmmword [eax*8 + 0x7170e0], xmm2
movups xmmword [eax*8 + 0x7170f0], xmm4
add eax, 4
cmp eax, edx
jb 0x5a5754
mov esi, dword [esp + 0x10]
cmp edx, ebx
jae 0x5a57bb
movsd xmm1, qword [esp]
mov eax, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x18]
movaps xmm0, xmm1
mulsd xmm0, qword [eax + edx*8]
addsd xmm0, qword [ecx + edx*8]
movsd qword [edx*8 + 0x7170e0], xmm0
inc edx
cmp edx, ebx
jb 0x5a57a0
mov eax, dword [ebp + 0x28]
movsd xmm0, qword [esp]
mov edx, dword [ebp + 0x1c]
mulsd xmm0, qword [eax]
addsd xmm0, qword [edx]
movsd qword [esp], xmm0
cmp ebx, 0xc
jle 0x5a5d84
lea eax, [ebx*8]
push eax
push 0
push 0x717110
call fcn.0062a5e0
add esp, 0xc
xor eax, eax
mov edi, ebx
xor ecx, ecx
movsd xmm1, qword [eax*8 + 0x717110]
pxor xmm0, xmm0
mov dword [esp + 0x10], esi
and edi, 0xfffffffc
lea edx, [esi + eax*8]
lea esi, [ecx + ecx*4]
movsd xmm2, qword [edx + esi*8]
movsd xmm3, qword [edx + esi*8 + 0x50]
movhpd xmm2, qword [edx + esi*8 + 0x28]
movhpd xmm3, qword [edx + esi*8 + 0x78]
mulpd xmm2, xmmword [ecx*8 + 0x7170b0]
mulpd xmm3, xmmword [ecx*8 + 0x7170c0]
addpd xmm1, xmm2
addpd xmm0, xmm3
add ecx, 4
cmp ecx, edi
jb 0x5a5810
addpd xmm1, xmm0
movaps xmm0, xmm1
unpckhpd xmm0, xmm1
mov esi, dword [esp + 0x10]
addsd xmm1, xmm0
movsd qword [eax*8 + 0x717110], xmm1
cmp edi, ebx
jae 0x5a5896
lea edx, [esi + eax*8]
lea ecx, [edi + edi*4]
movsd xmm0, qword [edx + ecx*8]
mulsd xmm0, qword [edi*8 + 0x7170b0]
inc edi
addsd xmm0, qword [eax*8 + 0x717110]
movsd qword [eax*8 + 0x717110], xmm0
cmp edi, ebx
jb 0x5a586e
inc eax
cmp eax, ebx
jae 0x5a58a9
cmp ebx, 4
jl 0x5a5d1b
jmp 0x5a57f5
mov edi, dword [ebp + 0x34]
cmp ebx, 0xc
jle 0x5a5d3c
lea eax, [ebx*8]
push eax
push 0
push 0x717140
call fcn.0062a5e0
add esp, 0xc
xor eax, eax
mov edi, ebx
xor ecx, ecx
movsd xmm1, qword [eax*8 + 0x717140]
pxor xmm0, xmm0
mov dword [esp + 0x10], esi
and edi, 0xfffffffc
lea edx, [esi + eax*8]
lea esi, [ecx + ecx*4]
movsd xmm2, qword [edx + esi*8]
movsd xmm3, qword [edx + esi*8 + 0x50]
movhpd xmm2, qword [edx + esi*8 + 0x28]
movhpd xmm3, qword [edx + esi*8 + 0x78]
mulpd xmm2, xmmword [ecx*8 + 0x7170e0]
mulpd xmm3, xmmword [ecx*8 + 0x7170f0]
addpd xmm1, xmm2
addpd xmm0, xmm3
add ecx, 4
cmp ecx, edi
jb 0x5a58e9
addpd xmm1, xmm0
movaps xmm0, xmm1
unpckhpd xmm0, xmm1
mov esi, dword [esp + 0x10]
addsd xmm1, xmm0
movsd qword [eax*8 + 0x717140], xmm1
cmp edi, ebx
jae 0x5a596f
lea edx, [esi + eax*8]
lea ecx, [edi + edi*4]
movsd xmm0, qword [edx + ecx*8]
mulsd xmm0, qword [edi*8 + 0x7170e0]
inc edi
addsd xmm0, qword [eax*8 + 0x717140]
movsd qword [eax*8 + 0x717140], xmm0
cmp edi, ebx
jb 0x5a5947
inc eax
cmp eax, ebx
jae 0x5a5982
cmp ebx, 4
jl 0x5a5d22
jmp 0x5a58ce
mov edi, dword [ebp + 0x34]
movsd xmm1, qword [edi]
mulsd xmm1, qword [esp]
mov eax, dword [esp + 0xc]
divsd xmm1, qword [eax]
cmp ebx, 4
jl 0x5a5d35
mov edx, ebx
xor eax, eax
mov ecx, dword [esp + 8]
and edx, 0xfffffffc
movups xmm0, xmmword [ecx + eax*8]
movups xmm2, xmmword [ecx + eax*8 + 0x10]
mulpd xmm0, xmmword [eax*8 + 0x717110]
mulpd xmm2, xmmword [eax*8 + 0x717120]
xorps xmm0, xmmword [0x690290]
xorps xmm2, xmmword [0x690290]
movups xmmword [eax*8 + 0x717170], xmm0
movups xmmword [eax*8 + 0x717180], xmm2
add eax, 4
cmp eax, edx
jb 0x5a59aa
cmp edx, ebx
jae 0x5a5a15
mov eax, dword [esp + 8]
movsd xmm0, qword [eax + edx*8]
mulsd xmm0, qword [edx*8 + 0x717110]
xorps xmm0, xmmword [0x6902b0]
movsd qword [edx*8 + 0x717170], xmm0
inc edx
cmp edx, ebx
jb 0x5a59f2
test ebx, ebx
jmp 0x5a5a3b
mov eax, dword [ebp + 0x28]
movsd xmm1, qword [0x76e5b0]
mov edx, dword [ebp + 0x1c]
mov ecx, dword [esp + 0xc]
mulsd xmm1, qword [eax]
addsd xmm1, qword [edx]
mulsd xmm1, qword [edi]
divsd xmm1, qword [ecx]
mov edx, dword [ebp + 0x2c]
movsd xmm0, qword [0x7170e0]
mov ecx, dword [ebp + 0x30]
mulsd xmm0, qword [edx]
movsd xmm2, qword [0x717170]
mulsd xmm0, qword [edi]
addsd xmm2, qword [ecx]
mov eax, dword [ebp + 0x38]
subsd xmm2, xmm0
movsd xmm3, qword [0x717178]
movsd qword [0x717170], xmm2
addsd xmm3, qword [eax]
movsd qword [0x717178], xmm3
jle 0x5a5b0a
cmp ebx, 4
jl 0x5a5df6
mov esi, ebx
xor eax, eax
mov edi, dword [esp + 8]
and esi, 0xfffffffc
movups xmm0, xmmword [edi + eax*8]
movups xmm2, xmmword [edi + eax*8 + 0x10]
mulpd xmm0, xmmword [eax*8 + 0x717140]
mulpd xmm2, xmmword [eax*8 + 0x717150]
xorps xmm0, xmmword [0x690290]
xorps xmm2, xmmword [0x690290]
movups xmmword [eax*8 + 0x7171a0], xmm0
movups xmmword [eax*8 + 0x7171b0], xmm2
add eax, 4
cmp eax, esi
jb 0x5a5a9a
mov edi, dword [ebp + 0x34]
cmp esi, ebx
jae 0x5a5b08
mov eax, dword [esp + 8]
movsd xmm0, qword [eax + esi*8]
mulsd xmm0, qword [esi*8 + 0x717140]
xorps xmm0, xmmword [0x6902b0]
movsd qword [esi*8 + 0x7171a0], xmm0
inc esi
cmp esi, ebx
jb 0x5a5ae5
test ebx, ebx
movsd xmm0, qword [0x7170b0]
mulsd xmm0, qword [edx]
movsd xmm2, qword [0x7171a0]
mulsd xmm0, qword [edi]
addsd xmm2, qword [ecx + 8]
mov edx, dword [esp + 8]
addsd xmm2, xmm0
mulsd xmm1, qword [edx]
mov eax, dword [ebp + 0x3c]
movsd xmm3, qword [0x7171a8]
movsd xmm0, qword [ecx + 0x10]
movsd qword [0x7171a0], xmm2
subsd xmm0, xmm1
addsd xmm3, qword [eax]
movsd qword [0x7171a8], xmm3
jle 0x5a5ce7
xor edx, edx
cmp ebx, 4
jl 0x5a5deb
mov eax, ebx
mov ecx, dword [ebp + 0x20]
and eax, 0xfffffffc
mov esi, dword [ebp + 0x14]
nop word [eax + eax]
movups xmm2, xmmword [ecx + edx*8]
movups xmm5, xmmword [ecx + edx*8 + 0x10]
addpd xmm2, xmmword [edx*8 + 0x717170]
addpd xmm5, xmmword [edx*8 + 0x717180]
movups xmm3, xmmword [esi + edx*8]
movups xmm6, xmmword [esi + edx*8 + 0x10]
movsd xmm1, qword [0x690330]
movsd xmm4, qword [0x690330]
mulsd xmm1, qword [0x76e5b0]
mulsd xmm4, qword [0x76e5b0]
unpcklpd xmm1, xmm1
unpcklpd xmm4, xmm4
mulpd xmm1, xmm2
mulpd xmm4, xmm5
addpd xmm3, xmm1
addpd xmm6, xmm4
movups xmmword [esi + edx*8], xmm3
movups xmmword [esi + edx*8 + 0x10], xmm6
add edx, 4
cmp edx, eax
jb 0x5a5b80
cmp eax, ebx
jae 0x5a5c35
mov edx, dword [ebp + 0x20]
mov ecx, dword [ebp + 0x14]
movsd xmm2, qword [0x690330]
movsd xmm1, qword [edx + eax*8]
mulsd xmm2, qword [0x76e5b0]
addsd xmm1, qword [eax*8 + 0x717170]
mulsd xmm2, xmm1
addsd xmm2, qword [ecx + eax*8]
movsd qword [ecx + eax*8], xmm2
inc eax
cmp eax, ebx
jb 0x5a5bf6
cmp ebx, 4
jl 0x5a5de4
mov eax, ebx
and eax, 0xfffffffc
mov ecx, dword [ebp + 0x24]
xor edx, edx
mov esi, dword [ebp + 0x18]
nop dword [eax]
movups xmm2, xmmword [ecx + edx*8]
movups xmm5, xmmword [ecx + edx*8 + 0x10]
addpd xmm2, xmmword [edx*8 + 0x7171a0]
addpd xmm5, xmmword [edx*8 + 0x7171b0]
movups xmm3, xmmword [esi + edx*8]
movups xmm6, xmmword [esi + edx*8 + 0x10]
movsd xmm1, qword [0x690330]
movsd xmm4, qword [0x690330]
mulsd xmm1, qword [0x76e5b0]
mulsd xmm4, qword [0x76e5b0]
unpcklpd xmm1, xmm1
unpcklpd xmm4, xmm4
mulpd xmm1, xmm2
mulpd xmm4, xmm5
addpd xmm3, xmm1
addpd xmm6, xmm4
movups xmmword [esi + edx*8], xmm3
movups xmmword [esi + edx*8 + 0x10], xmm6
add edx, 4
cmp edx, eax
jb 0x5a5c40
cmp eax, ebx
jae 0x5a5ce7
mov edx, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x18]
movsd xmm2, qword [0x690330]
movsd xmm1, qword [edx + eax*8]
mulsd xmm2, qword [0x76e5b0]
addsd xmm1, qword [eax*8 + 0x7171a0]
mulsd xmm2, xmm1
addsd xmm2, qword [ecx + eax*8]
movsd qword [ecx + eax*8], xmm2
inc eax
cmp eax, ebx
jb 0x5a5cb6
mov eax, dword [ebp + 0x28]
movsd xmm2, qword [0x690330]
mulsd xmm2, qword [0x76e5b0]
movsd xmm1, qword [eax]
mov edx, dword [ebp + 0x1c]
addsd xmm1, xmm0
mulsd xmm2, xmm1
addsd xmm2, qword [edx]
movsd qword [edx], xmm2
add esp, 0x14
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret
xor edi, edi
jmp 0x5a5867
nop dword [eax + eax]
nop dword [eax]
xor edi, edi
jmp 0x5a5940
xor edx, edx
jmp 0x5a59ea
cmp ebx, 4
jl 0x5a5d80
mov edx, ebx
xor eax, eax
and edx, 0xfffffffc
pxor xmm0, xmm0
movups xmmword [eax*8 + 0x717140], xmm0
movups xmmword [eax*8 + 0x717150], xmm0
add eax, 4
cmp eax, edx
jb 0x5a5d4c
cmp edx, ebx
jae 0x5a5d79
pxor xmm0, xmm0
movsd qword [edx*8 + 0x717140], xmm0
inc edx
cmp edx, ebx
jb 0x5a5d6b
xor eax, eax
jmp 0x5a5974
xor edx, edx
jmp 0x5a5d63
cmp ebx, 4
jl 0x5a5dc8
mov edx, ebx
xor eax, eax
and edx, 0xfffffffc
pxor xmm0, xmm0
movups xmmword [eax*8 + 0x717110], xmm0
movups xmmword [eax*8 + 0x717120], xmm0
add eax, 4
cmp eax, edx
jb 0x5a5d94
cmp edx, ebx
jae 0x5a5dc1
pxor xmm0, xmm0
movsd qword [edx*8 + 0x717110], xmm0
inc edx
cmp edx, ebx
jb 0x5a5db3
xor eax, eax
jmp 0x5a589b
xor edx, edx
jmp 0x5a5dab
test ebx, ebx
jbe 0x5a5dfd
movsd xmm0, qword [0x76e5b0]
xor edx, edx
movsd qword [esp], xmm0
jmp 0x5a570a
xor eax, eax
jmp 0x5a5cac
test ebx, ebx
jbe 0x5a5de4
xor eax, eax
jmp 0x5a5bf0
xor esi, esi
jmp 0x5a5add
movsd xmm0, qword [0x76e5b0]
movsd qword [esp], xmm0
xor edx, edx
jmp 0x5a5791
movsd xmm1, qword [0x76e5b0]
movsd qword [esp], xmm1
jmp 0x5a5748