Function at 0x14001cf25
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x368
mov rbx, r9
mov rdi, r8
mov r14, rdx
mov rsi, rcx
lea r15, [0x1402403d8]
mov edx, 1
mov rcx, r14
mov r8, r15
call fcn.140056a74
mov rcx, rax
xor edx, edx
mov r8, r15
call fcn.140056a74
mov rcx, qword [rax + 0x30]
add rcx, 0xfffffffffffffffe
cmp rcx, 0x1b
mov edx, 0x1b
cmovb rdx, rcx
add rdx, 0xfffffffffffffff9
cmp rdx, 1
ja 0x14001d24c
mov qword [rsp + 0x28], rbx
lea rcx, [rsp + 0x58]
mov rdx, rax
call fcn.140041a93
lea rax, [0x140237265]
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x30]
imul rax, qword [0x1402f8588], 0xffffffff827b6735
rol rax, 4
movzx eax, ax
add rax, rcx
pxor xmm0, xmm0
movdqa xmmword [rsp + 0x30], xmm0
mov cl, 1
xor ebx, ebx
lea r8, [0x1402403f0]
movzx r10d, byte [rbx + r8]
mov r9, rbx
or r9, 1
movzx r9d, byte [r9 + r8]
mov r11, rbx
or r11, 2
movzx r11d, byte [r11 + r8]
mov r15, rbx
or r15, 3
movzx r15d, byte [r15 + r8]
mov r12, rbx
or r12, 4
movzx r12d, byte [r12 + r8]
mov r13, rbx
or r13, 5
movzx r13d, byte [r13 + r8]
mov rbp, rbx
or rbp, 6
mov rdx, rbx
or rdx, 7
movzx ebp, byte [rbp + r8]
movzx edx, byte [rdx + r8]
shl rdx, 0x38
shl rbp, 0x30
or rbp, rdx
shl r13, 0x28
shl r12, 0x20
shl r15, 0x18
shl r11, 0x10
shl r9, 8
or r9, r10
or r9, r11
or r9, r15
or r9, r12
or r9, r13
or r9, rbp
xor r9, qword [rax + rbx]
mov qword [rsp + rbx + 0x30], r9
mov ebx, 8
test cl, 1
mov ecx, 0
jne 0x14001cfd8
movzx eax, word [rax + 0x10]
xor eax, 0xdb6b
mov word [rsp + 0x40], ax
cmp qword [rsp + 0x68], 0x12
jne 0x14001d0cd
mov rax, qword [rsp + 0x60]
movdqu xmm0, xmmword [rax]
movzx eax, word [rax + 0x10]
movzx ecx, word [rsp + 0x40]
movd xmm1, eax
movd xmm2, ecx
pcmpeqb xmm2, xmm1
pcmpeqb xmm0, xmmword [rsp + 0x30]
pand xmm0, xmm2
pmovmskb eax, xmm0
cmp eax, 0xffff
sete bpl
jmp 0x14001d0cf
xor ebp, ebp
cmp qword [rsp + 0x58], 0
je 0x14001d0eb
mov r8, qword [rsp + 0x60]
mov rcx, qword [0x1402fea40]
xor edx, edx
call qword [sym.imp.kernel32.dll_HeapFree]
test bpl, bpl
je 0x14001d255
lea r15, [0x140240408]
mov edx, 1
mov rcx, r14
mov r8, r15
call fcn.140056a74
mov edx, 1
mov rcx, rax
mov r8, r15
call fcn.140056a74
mov rdx, qword [rax + 0x30]
add rdx, 0xfffffffffffffffe
cmp rdx, 0x1b
mov ecx, 0x1b
cmovb rcx, rdx
cmp rcx, 0x1b
ja 0x14001d24c
mov edx, 0x9c3fe1c
bt rdx, rcx
jae 0x14001d24c
mov r15, qword [rax]
mov r12, qword [rax + 8]
lea r8, [0x140240420]
mov edx, 2
mov rcx, r14
call fcn.140056a74
mov rdx, qword [rax + 0x30]
add rdx, 0xfffffffffffffffe
cmp rdx, 0x1b
mov ecx, 0x1b
cmovb rcx, rdx
cmp rcx, 0x1b
ja 0x14001d24c
mov edx, 0x9c3fe1c
bt rdx, rcx
jae 0x14001d24c
mov rdx, qword [rsp + 0x28]
cmp rdx, 0x17
jbe 0x14001d3c7
cmp r12, 8
jne 0x14001d255
mov r12, qword [rax]
mov rbx, qword [rax + 8]
lea r14, [rsp + 0x60]
mov rdx, qword [rdi]
bswap rdx
mov rcx, r14
call fcn.14005701b
mov rdx, qword [rdi + 8]
bswap rdx
lea rcx, [rsp + 0xe0]
call fcn.14005701b
mov rdx, qword [rdi + 0x10]
bswap rdx
lea rcx, [rsp + 0x160]
call fcn.14005701b
lea rdi, [rsp + 0x1e0]
mov r8d, 0x180
mov rcx, rdi
mov rdx, r14
call sub.VCRUNTIME140.dll_memcpy
mov rcx, r15
call fcn.140004dc8
mov qword [rdi + 0x180], rax
test bl, 7
je 0x14001d26c
mov eax, dword [rsp + 0x51]
mov ecx, dword [rsp + 0x54]
mov dword [rsi + 4], ecx
mov dword [rsi + 1], eax
movdqu xmm0, xmmword [rsp + 0x58]
movdqu xmm1, xmmword [rsp + 0x68]
movdqu xmmword [rsi + 0x20], xmm0
movdqu xmmword [rsi + 0x30], xmm1
mov byte [rsi], 0x15
pxor xmm0, xmm0
movdqu xmmword [rsi + 8], xmm0
jmp 0x14001d258
mov byte [rsi], 0x14
mov byte [rsi + 8], 0
jmp 0x14001d258
mov byte [rsi], 0x15
add rsp, 0x368
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea r15, [rsp + 0x360]
mov rcx, rbx
call fcn.1400809c7
mov qword [rsp + 0x48], rax
mov rdi, rdx
mov rcx, rdx
mov rdx, r12
mov r8, rbx
call sub.VCRUNTIME140.dll_memcpy
mov rcx, r15
call fcn.140004dc8
mov r13, rax
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x28], rbx
cmp rbx, 8
jb 0x14001d35b
mov rbx, qword [rsp + 0x28]
and rbx, 0xfffffffffffffff8
add rbx, rdi
lea r15, [rsp + 0x2e0]
lea r12, [rsp + 0x1e0]
mov rbp, rdi
mov rcx, rbp
call fcn.140004dc8
mov r13, rax
mov rdx, qword [rbp]
bswap rdx
mov rcx, r15
call fcn.140057673
mov rcx, rax
call fcn.140057325
mov r14d, 0x10
mov rdx, qword [rsp + r14*8 + 0x1e0]
mov rcx, rax
call fcn.140057456
inc r14
cmp r14, 0x20
jne 0x14001d2f8
lea r14, [rbp + 8]
rol rax, 0x20
mov rcx, rax
call fcn.1400573be
mov rcx, r12
mov rdx, rax
call fcn.140057673
bswap rax
mov qword [rbp], rax
xor eax, eax
mov cl, byte [rsp + rax + 0x30]
xor byte [rbp + rax], cl
lea rcx, [rax + 1]
mov rax, rcx
cmp rcx, 8
jne 0x14001d335
mov qword [rsp + 0x30], r13
mov rbp, r14
cmp r14, rbx
jne 0x14001d2d0
mov qword [rsp + 0x360], r13
test rdi, rdi
mov r8, qword [rsp + 0x28]
je 0x14001d21a
test r8, r8
je 0x14001d3a4
movzx eax, byte [r8 + rdi - 1]
xor ecx, ecx
mov rdx, r8
sub rdx, rax
cmovae rcx, rdx
cmp r8, rcx
cmovb rcx, r8
mov rax, qword [rsp + 0x48]
mov qword [rsi + 8], rax
mov qword [rsi + 0x10], rdi
mov qword [rsi + 0x18], rcx
mov bl, 0x18
jmp 0x14001d3c0
mov bl, 0x15
cmp qword [rsp + 0x48], 0
je 0x14001d3c0
mov rcx, qword [0x1402fea40]
xor edx, edx
mov r8, rdi
call qword [sym.imp.kernel32.dll_HeapFree]
mov byte [rsi], bl
jmp 0x14001d258
lea r8, [0x140240438]
mov ecx, 0x18
call fcn.140237a00
ud2