Function at 0x14009e7e0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov ebp, r9d
mov esi, r8d
mov rbx, rdx
mov rdi, rcx
movzx ecx, byte [rcx + 0x190]
movzx r15d, r9b
lea r12d, [r15*8]
test rcx, rcx
je 0x14009e993
mov eax, r12d
sub al, cl
movzx eax, al
cmp eax, esi
cmova eax, esi
movzx edx, al
mov r8d, edx
test dl, dl
je 0x14009e8da
lea r10, [rdi + rcx]
add r10, 0xc8
cmp al, 8
jb 0x14009e85a
lea r9, [rdi + rcx]
sub r9, rbx
add r9, 0xc8
cmp r9, 0x20
jae 0x14009e906
xor r9d, r9d
mov r11, r9
not r11
add r11, r8
mov r14, r8
and r14, 3
je 0x14009e881
nop
movzx r13d, byte [rbx + r9]
mov byte [r10 + r9], r13b
inc r9
dec r14
jne 0x14009e870
cmp r11, 3
jb 0x14009e8d3
add rcx, rdi
add rcx, 0xcb
nop word cs:[rax + rax]
movzx r10d, byte [rbx + r9]
mov byte [rcx + r9 - 3], r10b
movzx r10d, byte [rbx + r9 + 1]
mov byte [rcx + r9 - 2], r10b
movzx r10d, byte [rbx + r9 + 2]
mov byte [rcx + r9 - 1], r10b
movzx r10d, byte [rbx + r9 + 3]
mov byte [rcx + r9], r10b
add r9, 4
cmp r8, r9
jne 0x14009e8a0
movzx ecx, byte [rdi + 0x190]
add rbx, r8
sub esi, edx
add cl, al
mov byte [rdi + 0x190], cl
movzx eax, cl
cmp r12d, eax
jne 0x14009e993
test bpl, bpl
je 0x14009e984
cmp bpl, 4
jae 0x14009e916
xor eax, eax
jmp 0x14009e970
cmp al, 0x20
jae 0x14009ea12
xor r9d, r9d
jmp 0x14009eb05
mov eax, r15d
and eax, 0xfffffffc
lea ecx, [r15*8]
and ecx, 0xffffffe0
xor edx, edx
nop dword [rax]
movups xmm0, xmmword [rdi + rdx]
movups xmm1, xmmword [rdi + rdx + 0x10]
movups xmm2, xmmword [rdi + rdx + 0xc8]
xorps xmm2, xmm0
movups xmm0, xmmword [rdi + rdx + 0xd8]
xorps xmm0, xmm1
movups xmmword [rdi + rdx], xmm2
movups xmmword [rdi + rdx + 0x10], xmm0
add rdx, 0x20
cmp rcx, rdx
jne 0x14009e930
cmp rax, r15
je 0x14009e984
nop word cs:[rax + rax]
mov rcx, qword [rdi + rax*8 + 0xc8]
xor qword [rdi + rax*8], rcx
inc rax
cmp r15, rax
jne 0x14009e970
mov rcx, rdi
call fcn.14009ed30
mov byte [rdi + 0x190], 0
cmp r12d, esi
jbe 0x14009e9c2
lea rcx, [rdi + 0xc8]
mov r8d, esi
mov rdx, rbx
call sub.msvcrt.dll_memcpy
add byte [rdi + 0x190], sil
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov eax, esi
xor edx, edx
div r12d
mov r14d, eax
mov r13d, r12d
jmp 0x14009e9f3
mov rcx, rdi
call fcn.14009ed30
sub esi, r12d
add rbx, r13
dec r14d
je 0x14009e998
test bpl, bpl
je 0x14009e9e0
xor eax, eax
nop word [rax + rax]
mov rcx, qword [rbx + rax*8]
xor qword [rdi + rax*8], rcx
inc rax
cmp r15, rax
jne 0x14009ea00
jmp 0x14009e9e0
mov r9d, r8d
and r9d, 0xffffffe0
movups xmm0, xmmword [rbx]
movups xmm1, xmmword [rbx + 0x10]
movups xmmword [r10], xmm0
movups xmmword [r10 + 0x10], xmm1
cmp r9, 0x20
je 0x14009eaf2
movups xmm0, xmmword [rbx + 0x20]
movups xmm1, xmmword [rbx + 0x30]
movups xmmword [r10 + 0x20], xmm0
movups xmmword [r10 + 0x30], xmm1
cmp r9d, 0x40
je 0x14009eaf2
movups xmm0, xmmword [rbx + 0x40]
movups xmm1, xmmword [rbx + 0x50]
movups xmmword [r10 + 0x40], xmm0
movups xmmword [r10 + 0x50], xmm1
cmp r9d, 0x60
je 0x14009eaf2
movups xmm0, xmmword [rbx + 0x60]
movups xmm1, xmmword [rbx + 0x70]
movups xmmword [r10 + 0x60], xmm0
movups xmmword [r10 + 0x70], xmm1
cmp r9d, 0x80
je 0x14009eaf2
movups xmm0, xmmword [rbx + 0x80]
movups xmm1, xmmword [rbx + 0x90]
movups xmmword [r10 + 0x80], xmm0
movups xmmword [r10 + 0x90], xmm1
cmp r9d, 0xa0
je 0x14009eaf2
movups xmm0, xmmword [rbx + 0xa0]
movups xmm1, xmmword [rbx + 0xb0]
movups xmmword [r10 + 0xa0], xmm0
movups xmmword [r10 + 0xb0], xmm1
cmp r9d, 0xc0
je 0x14009eaf2
movups xmm0, xmmword [rbx + 0xc0]
movups xmm1, xmmword [rbx + 0xd0]
movups xmmword [r10 + 0xc0], xmm0
movups xmmword [r10 + 0xd0], xmm1
cmp r9, r8
je 0x14009e8d3
test r8b, 0x18
je 0x14009e85d
mov r11, r9
mov r9d, r8d
and r9d, 0xfffffff8
nop
mov r14, qword [rbx + r11]
mov qword [r10 + r11], r14
add r11, 8
cmp r9, r11
jne 0x14009eb10
cmp r9, r8
je 0x14009e8d3
jmp 0x14009e85d