Function at 0x140051c90
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 8], rcx
push rsi
push r12
push r14
sub rsp, 0xb0
movaps xmmword [rsp + 0x20], xmm12
mov qword [rax + 0x20], rbx
mov qword [rax - 0x20], rbp
mov qword [rax - 0x28], rdi
mov qword [rax - 0x30], r13
mov qword [rax - 0x38], r15
movaps xmmword [rax - 0x48], xmm6
movaps xmmword [rax - 0x58], xmm7
movaps xmmword [rax - 0x68], xmm8
movsxd rbx, edx
mov r12, rcx
movaps xmmword [rax - 0x78], xmm9
mov eax, ebx
cdq
and edx, 3
add eax, edx
sar eax, 2
movsxd rcx, eax
mov r13d, eax
shl rcx, 2
call sub.msvcrt.dll_malloc
lea r8d, [rbx + r13]
movsxd rcx, r8d
mov rsi, rax
shl rcx, 2
call sub.msvcrt.dll_malloc
mov rdi, rax
mov qword [rsp + 0xe0], rax
movd xmm12, ebx
cvtdq2ps xmm12, xmm12
cvtps2pd xmm0, xmm12
call sub.msvcrt.dll_log
movaps xmm6, xmm0
movsd xmm0, qword [0x1400e2600]
call sub.msvcrt.dll_log
movsd xmm9, qword [0x1400e25f0]
divsd xmm6, xmm0
addsd xmm6, xmm9
movaps xmm0, xmm6
call sub.msvcrt.dll_floor
movss xmm7, dword [0x1400e2878]
mov dword [r12], ebx
mov qword [r12 + 8], rdi
mov qword [r12 + 0x10], rsi
cvttsd2si r15d, xmm0
mov dword [rsp + 0xd8], r15d
mov dword [r12 + 4], r15d
test r13d, r13d
jle 0x140051e63
movaps xmmword [rsp + 0x40], xmm10
xor r14d, r14d
lea eax, [rbx + rbx]
movd xmm0, eax
mov rbp, rbx
movaps xmm8, xmm7
mov r12, rdi
sar rbp, 1
lea r15d, [r14 + 1]
divss xmm8, xmm12
add rdi, 4
movaps xmm10, xmm7
movaps xmmword [rsp + 0x30], xmm11
cvtdq2ps xmm0, xmm0
movsd xmm11, qword [0x1400e2660]
divss xmm10, xmm0
nop
movd xmm6, r14d
cvtdq2ps xmm6, xmm6
mulss xmm6, xmm8
cvtps2pd xmm0, xmm6
call sub.msvcrt.dll_cos
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
cvtps2pd xmm0, xmm6
movss dword [r12], xmm1
call sub.msvcrt.dll_sin
movd xmm6, r15d
xorps xmm0, xmm11
cvtsd2ss xmm0, xmm0
cvtdq2ps xmm6, xmm6
movss dword [rdi], xmm0
mulss xmm6, xmm10
cvtps2pd xmm0, xmm6
call sub.msvcrt.dll_cos
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
cvtps2pd xmm0, xmm6
movss dword [rdi + rbp*4 - 4], xmm1
call sub.msvcrt.dll_sin
xorps xmm1, xmm1
add r14d, 4
add r15d, 2
lea rdi, [rdi + 8]
lea r12, [r12 + 8]
cvtsd2ss xmm1, xmm0
movss dword [rdi + rbp*4 - 8], xmm1
dec r13
jne 0x140051dc0
mov r15d, dword [rsp + 0xd8]
mov r12, qword [rsp + 0xd0]
movaps xmm11, xmmword [rsp + 0x30]
movaps xmm10, xmmword [rsp + 0x40]
mov r13, qword [rsp + 0x98]
mov eax, ebx
cdq
and edx, 7
add eax, edx
sar eax, 3
mov r14d, eax
test eax, eax
jle 0x140051ee2
mov rax, qword [rsp + 0xe0]
movsd xmm8, qword [0x1400e2880]
divss xmm7, xmm12
mov edi, 2
mov ebp, r14d
lea rbx, [rax + rbx*4]
nop
movd xmm6, edi
cvtdq2ps xmm6, xmm6
mulss xmm6, xmm7
cvtps2pd xmm0, xmm6
call sub.msvcrt.dll_cos
mulsd xmm0, xmm9
cvtsd2ss xmm0, xmm0
movss dword [rbx], xmm0
cvtps2pd xmm0, xmm6
call sub.msvcrt.dll_sin
add edi, 4
lea rbx, [rbx + 8]
mulsd xmm0, xmm8
cvtsd2ss xmm0, xmm0
movss dword [rbx - 4], xmm0
dec rbp
jne 0x140051ea0
movaps xmm9, xmmword [rsp + 0x50]
movaps xmm8, xmmword [rsp + 0x60]
movaps xmm7, xmmword [rsp + 0x70]
mov rdi, qword [rsp + 0xa0]
mov rbp, qword [rsp + 0xa8]
mov rbx, qword [rsp + 0xe8]
lea ecx, [r15 - 1]
mov r11d, 1
mov r9d, 1
movaps xmm6, xmmword [rsp + 0x80]
shl r11d, cl
lea ecx, [r15 - 2]
mov r15, qword [rsp + 0x90]
dec r11d
xor r8d, r8d
shl r9d, cl
test r14d, r14d
jle 0x140051f88
lea r10, [rsi + 4]
xor edx, edx
xor ecx, ecx
test r9d, r9d
je 0x140051f69
mov eax, r9d
test r8d, eax
je 0x140051f5e
mov eax, 1
shl eax, cl
or edx, eax
inc ecx
mov eax, r9d
sar eax, cl
test eax, eax
jne 0x140051f50
mov eax, edx
inc r8d
mov dword [r10], edx
not eax
add rsi, 8
add r10, 8
and eax, r11d
dec eax
mov dword [rsi - 8], eax
cmp r8d, r14d
jl 0x140051f44
movss xmm0, dword [0x1400e287c]
divss xmm0, xmm12
movaps xmm12, xmmword [rsp + 0x20]
movss dword [r12 + 0x18], xmm0
add rsp, 0xb0
pop r14
pop r12
pop rsi
ret