Function at 0x140031ac0
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 8], rcx
push rsi
push r12
push r15
sub rsp, 0xc0
movaps xmmword [rsp + 0x20], xmm12
mov qword [rax - 0x20], rbx
mov qword [rax - 0x28], rbp
mov qword [rax - 0x30], rdi
mov qword [rax - 0x38], r13
mov qword [rax - 0x40], r14
movaps xmmword [rax - 0x58], xmm6
movaps xmmword [rax - 0x68], xmm7
movaps xmmword [rax - 0x78], xmm8
movsxd rbp, edx
mov r15, rcx
mov eax, ebp
movaps xmmword [rsp + 0x50], xmm9
cdq
and edx, 3
add eax, edx
sar eax, 2
movsxd rcx, eax
mov edi, eax
shl rcx, 2
call sub.msvcrt.dll_malloc
lea r8d, [rdi + rbp]
movsxd rcx, r8d
mov rsi, rax
mov qword [rsp + 0xf8], rax
shl rcx, 2
call sub.msvcrt.dll_malloc
mov ebx, ebp
mov r13, rax
sar ebx, 1
movd xmm12, ebp
cvtdq2ps xmm12, xmm12
unpcklps xmm12, xmm12
cvtps2pd xmm0, xmm12
call sub.msvcrt.dll_log
movapd xmm6, xmm0
movsd xmm0, qword [0x14006ef38]
call sub.msvcrt.dll_log
movsd xmm9, qword [0x14006ec48]
divsd xmm6, xmm0
addsd xmm6, xmm9
movapd xmm0, xmm6
call fcn.140056aaa
movss xmm7, dword [0x14006f1a8]
movsxd rax, ebx
mov dword [r15], ebp
mov qword [r15 + 8], r13
mov qword [r15 + 0x10], rsi
cvttsd2si r14d, xmm0
mov qword [rsp + 0xf0], rax
mov dword [rsp + 0xe8], r14d
mov dword [r15 + 4], r14d
test edi, edi
jle 0x140031cbd
mov rsi, qword [rsp + 0xf0]
movaps xmmword [rsp + 0x40], xmm10
lea eax, [rbp + rbp]
movd xmm0, eax
movaps xmm8, xmm7
movaps xmm10, xmm7
xor r12d, r12d
mov r15, r13
lea rbx, [r13 + 4]
divss xmm8, xmm12
lea r14d, [r12 + 1]
cvtdq2ps xmm0, xmm0
movaps xmmword [rsp + 0x30], xmm11
movsd xmm11, qword [0x14006ef40]
divss xmm10, xmm0
nop word [rax + rax]
movd xmm6, r12d
cvtdq2ps xmm6, xmm6
mulss xmm6, xmm8
unpcklps xmm6, xmm6
cvtps2pd xmm0, xmm6
call sub.msvcrt.dll_cos
unpcklps xmm6, xmm6
cvtsd2ss xmm1, xmm0
cvtps2pd xmm0, xmm6
movss dword [r15], xmm1
call sub.msvcrt.dll_sin
movd xmm6, r14d
xorpd xmm0, xmm11
cvtsd2ss xmm0, xmm0
cvtdq2ps xmm6, xmm6
movss dword [rbx], xmm0
mulss xmm6, xmm10
unpcklps xmm6, xmm6
cvtps2pd xmm0, xmm6
call sub.msvcrt.dll_cos
unpcklps xmm6, xmm6
cvtsd2ss xmm1, xmm0
cvtps2pd xmm0, xmm6
movss dword [rbx + rsi*4 - 4], xmm1
call sub.msvcrt.dll_sin
add rbx, 8
add r12d, 4
add r14d, 2
add r15, 8
dec rdi
cvtsd2ss xmm1, xmm0
movss dword [rbx + rsi*4 - 8], xmm1
jne 0x140031c10
mov rsi, qword [rsp + 0xf8]
mov r14d, dword [rsp + 0xe8]
mov r15, qword [rsp + 0xe0]
movaps xmm11, xmmword [rsp + 0x30]
movaps xmm10, xmmword [rsp + 0x40]
mov eax, ebp
cdq
and edx, 7
add eax, edx
sar eax, 3
mov r12d, eax
test eax, eax
jle 0x140031d38
movsd xmm8, qword [0x14006f1a0]
lea rbx, [r13 + rbp*4]
divss xmm7, xmm12
mov ebp, r12d
mov edi, 2
nop word [rax + rax]
movd xmm6, edi
cvtdq2ps xmm6, xmm6
mulss xmm6, xmm7
unpcklps xmm6, xmm6
cvtps2pd xmm0, xmm6
call sub.msvcrt.dll_cos
unpcklps xmm6, xmm6
mulsd xmm0, xmm9
cvtsd2ss xmm0, xmm0
movss dword [rbx], xmm0
cvtps2pd xmm0, xmm6
call sub.msvcrt.dll_sin
add rbx, 8
add edi, 4
dec rbp
mulsd xmm0, xmm8
cvtsd2ss xmm0, xmm0
movss dword [rbx - 4], xmm0
jne 0x140031cf0
movaps xmm9, xmmword [rsp + 0x50]
movaps xmm8, xmmword [rsp + 0x60]
movaps xmm7, xmmword [rsp + 0x70]
mov r13, qword [rsp + 0xa0]
mov rdi, qword [rsp + 0xa8]
mov rbp, qword [rsp + 0xb0]
mov rbx, qword [rsp + 0xb8]
lea ecx, [r14 - 1]
mov r11d, 1
movaps xmm6, xmmword [rsp + 0x80]
shl r11d, cl
lea ecx, [r14 - 2]
mov r14, qword [rsp + 0x98]
mov r9d, 1
dec r11d
xor r8d, r8d
shl r9d, cl
test r12d, r12d
jle 0x140031de8
lea r10, [rsi + 4]
xor edx, edx
xor ecx, ecx
test r9d, r9d
je 0x140031dc9
mov eax, r9d
nop
test r8d, eax
je 0x140031dbe
mov eax, 1
shl eax, cl
or edx, eax
inc ecx
mov eax, r9d
sar eax, cl
test eax, eax
jne 0x140031db0
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, r12d
jl 0x140031da2
movss xmm0, dword [0x14006f198]
divss xmm0, xmm12
movaps xmm12, xmmword [rsp + 0x20]
movss dword [r15 + 0x18], xmm0
add rsp, 0xc0
pop r15
pop r12
pop rsi
ret