Function at 0x18003b0c0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rdx
push rbx
push rbp
push rsi
push rdi
push r12
push r15
sub rsp, 0xb8
mov r12d, dword [rcx]
mov rbx, r8
mov rdi, qword [rcx + 0x20]
mov rsi, rdx
movsxd rbp, r9d
mov r15, rcx
cmp ebp, 1
jne 0x18003b108
mov r9, qword [rsp + 0x130]
add rsp, 0xb8
pop r15
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
jmp 0x18003a2a0
mov eax, dword [rsp + 0x140]
lea rcx, [rsp + 0x140]
mov qword [rsp + 0x50], rcx
lea rdx, [rsp + 0x70]
mov ecx, dword [rsp + 0x128]
mov r9, rbx
mov dword [rsp + 0x48], 1
mov r8, rsi
mov dword [rsp + 0x40], ecx
mov rcx, r15
mov qword [rsp + 0x100], r13
mov r13d, dword [rsp + 0x118]
mov dword [rsp + 0x38], r13d
mov dword [rsp + 0x108], eax
lea rax, [rsp + 0x110]
mov dword [rsp + 0x30], r13d
mov qword [rsp + 0xb0], r14
mov qword [rsp + 0x28], rax
movaps xmmword [rsp + 0xa0], xmm6
mov dword [rsp + 0x20], ebp
movaps xmmword [rsp + 0x90], xmm7
call fcn.180039560
movd xmm7, dword [rsp + 0x74]
movd xmm6, dword [rsp + 0x78]
cvtdq2ps xmm7, xmm7
cvtdq2ps xmm6, xmm6
mulss xmm7, dword [0x1800c1d2c]
mulss xmm6, dword [0x1800c1d2c]
cmp ebp, 2
jne 0x18003b42f
mov ecx, dword [rsp + 0x84]
xor r14d, r14d
test dword [rsp + 0x80], 0xffffbfff
mov eax, 8
mov r8d, r14d
mov r10, rsi
cmovne r8d, eax
mov r11d, r14d
mov eax, dword [rsp + 0x110]
add ecx, r8d
sub dword [r15 + 0x28], ecx
sub eax, r8d
cmp dword [rsp + 0x80], 0x2000
mov dword [rsp + 0xf0], eax
mov rax, rbx
cmovg r10, rbx
cmovg rax, rsi
mov qword [rsp + 0x60], r10
mov qword [rsp + 0x68], rax
test r8d, r8d
je 0x18003b31b
test r12d, r12d
je 0x18003b2b8
movss xmm1, dword [rax + 4]
movss xmm0, dword [r10 + 4]
mulss xmm0, dword [rax]
mov r8d, dword [rdi + 0x14]
mulss xmm1, dword [r10]
mov r9d, dword [rdi + 0x10]
lea eax, [r8 + 1]
subss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, xmm1
seta r11b
cmp eax, 0x20
jbe 0x18003b2a1
nop dword [rax + rax]
mov ecx, dword [rdi + 0x1c]
mov r10d, dword [rdi + 0xc]
add ecx, r10d
mov edx, dword [rdi + 8]
cmp ecx, edx
jb 0x18003b278
mov eax, 0xffffffff
jmp 0x18003b28b
lea eax, [r10 + 1]
mov dword [rdi + 0xc], eax
sub edx, eax
mov rax, qword [rdi]
mov byte [rdx + rax], r9b
mov eax, r14d
or dword [rdi + 0x30], eax
sub r8d, 8
shr r9d, 8
cmp r8d, 8
jge 0x18003b260
mov r10, qword [rsp + 0x60]
mov ecx, r8d
mov eax, r11d
shl eax, cl
or eax, r9d
inc dword [rdi + 0x18]
mov dword [rdi + 0x10], eax
lea eax, [r8 + 1]
jmp 0x18003b318
mov r9d, dword [rdi + 0x14]
mov r11d, dword [rdi + 0x10]
cmp r9d, 1
jae 0x18003b305
mov r10d, dword [rdi + 8]
mov r8d, dword [rdi + 0xc]
nop
cmp r8d, r10d
jae 0x18003b2eb
mov rax, qword [rdi]
inc r8d
mov ecx, r10d
mov dword [rdi + 0xc], r8d
sub ecx, r8d
movzx edx, byte [rcx + rax]
jmp 0x18003b2ee
mov edx, r14d
mov ecx, r9d
add r9d, 8
shl edx, cl
or r11d, edx
cmp r9d, 0x18
jle 0x18003b2d0
mov r10, qword [rsp + 0x60]
inc dword [rdi + 0x18]
mov eax, r11d
shr eax, 1
mov dword [rdi + 0x10], eax
and r11d, 1
lea eax, [r9 - 1]
mov dword [rdi + 0x14], eax
movss xmm0, dword [0x1800c1df0]
lea eax, [r11 + r11]
mov r9d, dword [rsp + 0xf0]
mov edi, 1
sub edi, eax
mov r8d, 2
mov eax, dword [rsp + 0x108]
mov rdx, r10
mov dword [rsp + 0x50], eax
mov rcx, r15
mov rax, qword [rsp + 0x138]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x130]
movss dword [rsp + 0x40], xmm0
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x128]
mov dword [rsp + 0x30], eax
mov rax, qword [rsp + 0x120]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r13d
call fcn.18003aba0
mov ecx, edi
movd xmm1, edi
neg ecx
mov r13d, eax
mov rax, qword [rsp + 0x60]
cvtdq2ps xmm1, xmm1
movd xmm0, ecx
mov rcx, qword [rsp + 0x68]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [rax + 4]
movss dword [rcx], xmm0
mulss xmm1, dword [rax]
movss dword [rcx + 4], xmm1
cmp dword [r15 + 4], r14d
je 0x18003b638
movaps xmm2, xmm6
movaps xmm0, xmm7
mulss xmm0, dword [rsi]
movss dword [rsi], xmm0
movaps xmm0, xmm7
mulss xmm0, dword [rsi + 4]
movss dword [rsi + 4], xmm0
mulss xmm2, dword [rbx]
mulss xmm6, dword [rbx + 4]
movss dword [rbx], xmm2
movss dword [rbx + 4], xmm6
movss xmm1, dword [rsi]
movaps xmm0, xmm1
subss xmm0, xmm2
movss dword [rsi], xmm0
addss xmm1, dword [rbx]
movss dword [rbx], xmm1
movss xmm2, dword [rsi + 4]
movaps xmm0, xmm2
subss xmm0, dword [rbx + 4]
movss dword [rsi + 4], xmm0
addss xmm2, dword [rbx + 4]
movss dword [rbx + 4], xmm2
jmp 0x18003b638
mov esi, dword [rsp + 0x110]
mov eax, esi
sub eax, dword [rsp + 0x7c]
cdq
sub eax, edx
sar eax, 1
cmp esi, eax
mov edi, eax
cmovl eax, esi
xor r14d, r14d
test eax, eax
jns 0x18003b454
mov edi, r14d
jmp 0x18003b459
cmp esi, edi
cmovl edi, esi
mov r12d, dword [r15 + 0x28]
sub esi, edi
sub r12d, dword [rsp + 0x84]
mov r8d, ebp
mov dword [r15 + 0x28], r12d
cmp edi, esi
jl 0x18003b560
mov rax, qword [rsp + 0x138]
mov r9d, edi
movss xmm0, dword [0x1800c1df0]
mov rcx, r15
mov r13d, dword [rsp + 0x140]
mov rdx, qword [rsp + 0xf8]
mov dword [rsp + 0x50], r13d
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x130]
movss dword [rsp + 0x40], xmm0
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x128]
mov dword [rsp + 0x30], eax
mov rax, qword [rsp + 0x120]
mov qword [rsp + 0x28], rax
mov eax, dword [rsp + 0x118]
mov dword [rsp + 0x20], eax
call fcn.18003aba0
mov dword [rsp + 0x108], eax
mov eax, dword [r15 + 0x28]
sub eax, r12d
add eax, edi
cmp eax, 0x18
jle 0x18003b505
cmp dword [rsp + 0x80], r14d
je 0x18003b505
add esi, 0xffffffe8
add esi, eax
mov eax, dword [rsp + 0x118]
mov r9d, esi
mov ecx, eax
mov r8d, ebp
sar r13d, cl
mov rdx, rbx
mov ecx, dword [rsp + 0x128]
mov dword [rsp + 0x50], r13d
mov qword [rsp + 0x48], r14
movss dword [rsp + 0x40], xmm6
mov qword [rsp + 0x38], r14
mov dword [rsp + 0x30], ecx
mov rcx, r15
mov qword [rsp + 0x28], r14
mov dword [rsp + 0x20], eax
call fcn.18003aba0
mov r13d, dword [rsp + 0x108]
mov rsi, qword [rsp + 0xf8]
jmp 0x18003b635
mov eax, dword [rsp + 0x140]
mov ecx, r13d
sar eax, cl
mov r9d, esi
mov dword [rsp + 0x50], eax
mov rdx, rbx
mov eax, dword [rsp + 0x128]
mov rcx, r15
mov qword [rsp + 0x48], r14
movss dword [rsp + 0x40], xmm6
mov qword [rsp + 0x38], r14
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], r14
mov dword [rsp + 0x20], r13d
call fcn.18003aba0
mov r13d, eax
mov eax, dword [r15 + 0x28]
sub eax, r12d
add eax, esi
cmp eax, 0x18
jle 0x18003b5c6
cmp dword [rsp + 0x80], 0x4000
je 0x18003b5c6
add edi, 0xffffffe8
add edi, eax
mov eax, dword [rsp + 0x140]
mov r9d, edi
movss xmm0, dword [0x1800c1df0]
mov r8d, ebp
mov rsi, qword [rsp + 0xf8]
mov rcx, r15
mov dword [rsp + 0x50], eax
mov rdx, rsi
mov rax, qword [rsp + 0x138]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x130]
movss dword [rsp + 0x40], xmm0
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x128]
mov dword [rsp + 0x30], eax
mov rax, qword [rsp + 0x120]
mov qword [rsp + 0x28], rax
mov eax, dword [rsp + 0x118]
mov dword [rsp + 0x20], eax
call fcn.18003aba0
or r13d, eax
cmp dword [r15 + 4], 0
movaps xmm6, xmmword [rsp + 0xa0]
je 0x18003b775
cmp ebp, 2
je 0x18003b661
mov r9d, ebp
movaps xmm2, xmm7
mov rdx, rbx
mov rcx, rsi
call fcn.1800389b0
cmp dword [rsp + 0x70], 0
je 0x18003b775
mov edx, r14d
test ebp, ebp
jle 0x18003b709
cmp ebp, 2
jb 0x18003b709
movdqa xmm2, xmmword [0x1800c23f0]
cmp ebp, 0x10
jb 0x18003b6e4
mov eax, ebp
and eax, 0xfffffff0
movsxd rcx, eax
lea rax, [rbx + 0x20]
nop dword [rax]
movups xmm0, xmmword [rax - 0x20]
add edx, 0x10
lea rax, [rax + 0x40]
add r14, 0x10
xorps xmm0, xmm2
movups xmmword [rax - 0x60], xmm0
movups xmm0, xmmword [rax - 0x50]
xorps xmm0, xmm2
movups xmmword [rax - 0x50], xmm0
movups xmm1, xmmword [rax - 0x40]
xorps xmm1, xmm2
movups xmmword [rax - 0x40], xmm1
movups xmm0, xmmword [rax - 0x30]
xorps xmm0, xmm2
movups xmmword [rax - 0x30], xmm0
cmp r14, rcx
jl 0x18003b6a0
mov eax, ebp
and al, 0xf
cmp al, 2
jb 0x18003b709
mov eax, ebp
movsxd rcx, edx
and eax, 0xfffffffe
movsxd r8, eax
nop
movsd xmm0, qword [rbx + rcx*4]
add edx, 2
xorps xmm0, xmm2
movsd qword [rbx + rcx*4], xmm0
add rcx, 2
cmp rcx, r8
jl 0x18003b6f0
movsxd rcx, edx
cmp rcx, rbp
jge 0x18003b775
movaps xmm2, xmmword [0x1800c23f0]
mov rax, rbp
sub rax, rcx
cmp rax, 4
jl 0x18003b760
mov rdx, rbp
lea rax, [rbx + 8]
sub rdx, rcx
lea rax, [rax + rcx*4]
sub rdx, 4
shr rdx, 2
inc rdx
lea rcx, [rcx + rdx*4]
movups xmm0, xmmword [rax - 8]
lea rax, [rax + 0x10]
xorps xmm0, xmm2
movups xmmword [rax - 0x18], xmm0
sub rdx, 1
jne 0x18003b741
cmp rcx, rbp
jge 0x18003b775
nop dword [rax + rax]
movss xmm0, dword [rbx + rcx*4]
xorps xmm0, xmm2
movss dword [rbx + rcx*4], xmm0
inc rcx
cmp rcx, rbp
jl 0x18003b760
movaps xmm7, xmmword [rsp + 0x90]
mov eax, r13d
mov r13, qword [rsp + 0x100]
mov r14, qword [rsp + 0xb0]
add rsp, 0xb8
pop r15
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret