Function at 0x140047a20
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], rbx
mov dword [rsp + 0x10], edx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x30
xor eax, eax
movsxd rdi, ecx
mov rbx, r8
mov qword [rsp + 0x18], rax
mov r8d, eax
mov r12d, eax
mov esi, eax
mov ecx, edi
lea eax, [rdi + rdi]
cdqe
mov r11, r9
mov r15d, edx
imul ecx, edx
movsxd r13, ecx
mov r10, rdi
mov dword [rsp + 0x70], ecx
mov qword [rsp + 0x10], rax
mov r9, r13
cmp edx, 4
jl 0x140047b7a
lea rdx, [r11 + rax*4 - 4]
lea eax, [r15 - 4]
lea rbp, [rdi*8]
shr eax, 2
inc eax
mov r14d, eax
lea r12d, [rax*4]
nop dword [rax]
movss xmm0, dword [rbx + r9*4]
lea eax, [r8 + r8]
add r8d, edi
addss xmm0, dword [rbx + rsi*4]
movsxd rcx, eax
lea eax, [r8 + r8]
add r8d, edi
movss dword [r11 + rcx*4], xmm0
movss xmm0, dword [rbx + rsi*4]
add rsi, rdi
movsxd rcx, eax
lea eax, [r8 + r8]
add r8d, edi
subss xmm0, dword [rbx + r9*4]
add r9, rdi
movss dword [rdx], xmm0
add rdx, rbp
movss xmm0, dword [rbx + r9*4]
addss xmm0, dword [rbx + rsi*4]
movss dword [r11 + rcx*4], xmm0
movss xmm0, dword [rbx + rsi*4]
add rsi, rdi
movsxd rcx, eax
lea eax, [r8 + r8]
add r8d, edi
subss xmm0, dword [rbx + r9*4]
add r9, rdi
movss dword [rdx], xmm0
movss xmm0, dword [rbx + r9*4]
add rdx, rbp
addss xmm0, dword [rbx + rsi*4]
movss dword [r11 + rcx*4], xmm0
movss xmm0, dword [rbx + rsi*4]
add rsi, rdi
movsxd rcx, eax
subss xmm0, dword [rbx + r9*4]
add r9, rdi
movss dword [rdx], xmm0
movss xmm0, dword [rbx + r9*4]
add rdx, rbp
addss xmm0, dword [rbx + rsi*4]
movss dword [r11 + rcx*4], xmm0
movss xmm0, dword [rbx + rsi*4]
add rsi, rdi
subss xmm0, dword [rbx + r9*4]
add r9, rdi
movss dword [rdx], xmm0
add rdx, rbp
dec r14
jne 0x140047aa0
mov rax, qword [rsp + 0x10]
cmp r12d, r15d
jge 0x140047bdd
lea rax, [rax + rsi*2]
lea rdx, [rbx + r9*4]
lea r9, [rbx + rsi*4]
lea rsi, [r11 + rax*4 - 4]
mov eax, r15d
lea rbp, [rdi*4]
sub eax, r12d
lea r14, [rdi*8]
mov r12d, eax
movss xmm0, dword [rdx]
lea eax, [r8 + r8]
add r8d, edi
addss xmm0, dword [r9]
movsxd rcx, eax
movss dword [r11 + rcx*4], xmm0
movss xmm0, dword [r9]
add r9, rbp
subss xmm0, dword [rdx]
add rdx, rbp
movss dword [rsi], xmm0
add rsi, r14
dec r12
jne 0x140047ba9
cmp edi, 2
jl 0x140047dd6
je 0x140047d34
test r15d, r15d
jle 0x140047d1b
mov rax, rdi
lea rbp, [rdi*8]
mov rcx, rbx
neg rax
xor r8d, r8d
lea r9, [r11 - 4]
shl rax, 2
lea rsi, [r11 + rbp]
lea r12, [rdi + rdi]
mov qword [rsp + 8], rax
mov rax, r15
mov r15, qword [rsp + 0x90]
mov rdx, qword [rsp + 8]
mov qword [rsp + 0x10], rax
sub rcx, r11
cmp edi, 2
jle 0x140047cf9
mov rax, r13
mov r12, rsi
lea r14, [r15 + 4]
sub rax, r8
mov rdx, r9
shl rax, 2
sub rax, r11
add rax, rbx
mov qword [rsp + 0x20], rax
lea eax, [rdi - 3]
shr eax, 1
inc eax
mov qword [rsp], rax
mov rax, qword [rsp + 0x20]
nop
movss xmm2, dword [r14]
movss xmm4, dword [rax + rdx + 0xc]
movss xmm3, dword [rax + rdx + 8]
add rdx, 8
sub r12, 8
add r14, 8
dec qword [rsp]
movaps xmm5, xmm3
movaps xmm0, xmm2
mulss xmm3, xmm2
mulss xmm5, dword [r14 - 0xc]
mulss xmm0, xmm4
mulss xmm4, dword [r14 - 0xc]
addss xmm5, xmm0
subss xmm4, xmm3
movaps xmm0, xmm4
addss xmm0, dword [rcx + rdx + 4]
movss dword [rdx + 4], xmm0
subss xmm4, dword [rcx + rdx + 4]
movaps xmm0, xmm5
movss dword [r12], xmm4
addss xmm0, dword [rcx + rdx]
movss dword [rdx], xmm0
movss xmm1, dword [rcx + rdx]
subss xmm1, xmm5
movss dword [r12 - 4], xmm1
jne 0x140047c70
mov rax, qword [rsp + 0x10]
mov rdx, qword [rsp + 8]
lea r12, [rdi + rdi]
add r9, rbp
add r8, r12
add rsi, rbp
add rcx, rdx
add r13, rdi
dec rax
mov qword [rsp + 0x10], rax
jne 0x140047c36
mov r15d, dword [rsp + 0x78]
mov eax, edi
and eax, 0x80000001
jge 0x140047d2b
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x140047dd6
mov eax, dword [rsp + 0x70]
movss xmm1, dword [0x140084e90]
lea ecx, [rdi - 1]
add eax, ecx
mov rdx, rdi
movsxd r9, ecx
movsxd r8, eax
cmp r15d, 2
jl 0x140047db7
lea eax, [r15 - 2]
add rdi, rdi
shr eax, 1
inc eax
mov ecx, eax
add eax, eax
mov qword [rsp + 0x18], rax
nop dword [rax + rax]
movss xmm0, dword [rbx + r8*4]
add r8, r10
xorps xmm0, xmm1
movss dword [r11 + rdx*4], xmm0
mov eax, dword [rbx + r9*4]
add r9, r10
mov dword [r11 + rdx*4 - 4], eax
add rdx, rdi
movss xmm0, dword [rbx + r8*4]
add r8, r10
xorps xmm0, xmm1
movss dword [r11 + rdx*4], xmm0
mov eax, dword [rbx + r9*4]
add r9, r10
mov dword [r11 + rdx*4 - 4], eax
add rdx, rdi
dec rcx
jne 0x140047d70
cmp dword [rsp + 0x18], r15d
jge 0x140047dd6
movss xmm0, dword [rbx + r8*4]
xorps xmm0, xmm1
movss dword [r11 + rdx*4], xmm0
mov eax, dword [rbx + r9*4]
mov dword [r11 + rdx*4 - 4], eax
mov rbx, qword [rsp + 0x80]
add rsp, 0x30
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret