Function at 0x140047810
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, 0x10
movsxd r11, ecx
xor ebp, ebp
mov rbx, r9
mov r14d, r11d
mov rdi, r8
mov r15d, edx
mov r10d, ebp
lea ecx, [r11 + r11]
mov r13d, ebp
imul r14d, edx
mov rsi, r11
mov dword [rsp + 0x50], r14d
cmp edx, 4
jl 0x14004796f
movsxd rax, ecx
lea ebp, [r11*4]
mov qword [rsp + 8], rax
lea eax, [rdx - 4]
mov r15, qword [rsp + 8]
shr eax, 2
inc eax
mov r12d, eax
lea r13d, [rax*4]
movsxd r9, r10d
lea eax, [r10 + r10]
add r10d, r11d
movsxd rcx, eax
lea rax, [r15 + r9*2]
movsxd rdx, r14d
movss xmm0, dword [rdi + r9*4]
add r14d, ebp
addss xmm0, dword [rdi + rdx*4]
movss dword [rbx + rcx*4], xmm0
movss xmm0, dword [rdi + r9*4]
add r9, r11
subss xmm0, dword [rdi + rdx*4]
add rdx, r11
movss dword [rbx + rax*4 - 4], xmm0
movss xmm0, dword [rdi + r9*4]
lea r8, [rdx + r11]
lea eax, [r10 + r10]
add r10d, r11d
movsxd rcx, eax
lea rax, [r15 + r9*2]
addss xmm0, dword [rdi + rdx*4]
movss dword [rbx + rcx*4], xmm0
movss xmm0, dword [rdi + r9*4]
add r9, r11
subss xmm0, dword [rdi + rdx*4]
lea rdx, [r8 + r11]
movss dword [rbx + rax*4 - 4], xmm0
movss xmm0, dword [rdi + r8*4]
lea eax, [r10 + r10]
add r10d, r11d
movsxd rcx, eax
lea rax, [r15 + r9*2]
addss xmm0, dword [rdi + r9*4]
movss dword [rbx + rcx*4], xmm0
movss xmm0, dword [rdi + r9*4]
add r9, r11
subss xmm0, dword [rdi + r8*4]
movss dword [rbx + rax*4 - 4], xmm0
movss xmm0, dword [rdi + rdx*4]
lea eax, [r10 + r10]
add r10d, r11d
movsxd rcx, eax
lea rax, [r15 + r9*2]
addss xmm0, dword [rdi + r9*4]
movss dword [rbx + rcx*4], xmm0
movss xmm0, dword [rdi + r9*4]
subss xmm0, dword [rdi + rdx*4]
movss dword [rbx + rax*4 - 4], xmm0
dec r12
jne 0x140047880
mov r15d, dword [rsp + 0x58]
xor ebp, ebp
lea ecx, [r11 + r11]
cmp r13d, r15d
jge 0x1400479e1
movsxd rdx, r10d
movsxd rax, r14d
movsxd rcx, ecx
lea r9, [rdi + rdx*4]
lea rdx, [rdx*2 - 1]
lea r14, [r11*4]
add rdx, rcx
lea r8, [rdi + rax*4]
lea r12, [r11*8]
lea rdx, [rbx + rdx*4]
sub r15d, r13d
movss xmm0, dword [r8]
lea eax, [r10 + r10]
add r10d, r11d
addss xmm0, dword [r9]
movsxd rcx, eax
movss dword [rbx + rcx*4], xmm0
movss xmm0, dword [r9]
add r9, r14
subss xmm0, dword [r8]
add r8, r14
movss dword [rdx], xmm0
add rdx, r12
dec r15
jne 0x1400479a7
mov r15d, dword [rsp + 0x58]
cmp r11d, 2
jl 0x140047b8d
je 0x140047b2e
test r15d, r15d
jle 0x140047b18
movsxd r14, dword [rsp + 0x50]
mov rax, r11
lea r13, [r11*8]
neg rax
mov rdx, rdi
lea r15, [rbx - 4]
shl rax, 2
lea r12, [rbx + r13]
lea r8, [r11 + r11]
mov qword [rsp], rax
mov eax, dword [rsp + 0x58]
sub rdx, rbx
mov rcx, qword [rsp]
mov qword [rsp + 8], rax
cmp r11d, 2
jle 0x140047af6
mov r9, qword [rsp + 0x70]
mov r10, r14
lea eax, [r11 - 3]
sub r10, rbp
shr eax, 1
add r9, 4
shl r10, 2
mov r8, r12
mov rcx, r15
sub r10, rbx
add r10, rdi
inc eax
nop word [rax + rax]
movss xmm4, dword [r10 + rcx + 0xc]
movss xmm3, dword [r10 + rcx + 8]
add rcx, 8
sub r8, 8
add r9, 8
movaps xmm0, xmm4
mulss xmm4, dword [r9 - 0xc]
movaps xmm5, xmm3
mulss xmm0, dword [r9 - 8]
mulss xmm5, dword [r9 - 0xc]
mulss xmm3, dword [r9 - 8]
addss xmm5, xmm0
subss xmm4, xmm3
movaps xmm0, xmm4
addss xmm0, dword [rdx + rcx + 4]
movss dword [rcx + 4], xmm0
subss xmm4, dword [rdx + rcx + 4]
movaps xmm0, xmm5
movss dword [r8], xmm4
addss xmm0, dword [rdx + rcx]
movss dword [rcx], xmm0
movss xmm1, dword [rdx + rcx]
subss xmm1, xmm5
movss dword [r8 - 4], xmm1
dec rax
jne 0x140047a70
mov rax, qword [rsp + 8]
mov rcx, qword [rsp]
lea r8, [r11 + r11]
add r15, r13
add rbp, r8
add r12, r13
add rdx, rcx
add r14, r11
dec rax
mov qword [rsp + 8], rax
jne 0x140047a34
mov r15d, dword [rsp + 0x58]
mov eax, r11d
and eax, 0x80000001
jge 0x140047b29
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x140047b8d
mov eax, dword [rsp + 0x50]
dec r11d
add eax, r11d
test r15d, r15d
jle 0x140047b8d
movss xmm1, dword [0x140099050]
movsxd r9, eax
movsxd rax, r11d
lea r10, [rsi*8]
lea rsi, [rsi*4]
mov r8d, r15d
lea rdx, [rdi + rax*4]
sub r9, rax
lea rcx, [rsi + rbx]
nop dword [rax]
movss xmm0, dword [rdx + r9*4]
xorps xmm0, xmm1
movss dword [rcx], xmm0
mov eax, dword [rdx]
add rdx, rsi
mov dword [rcx - 4], eax
add rcx, r10
dec r8
jne 0x140047b70
mov rbx, qword [rsp + 0x60]
add rsp, 0x10
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret