Function at 0x1800039c0
Capabilities:
Encode data using xor

Disassembly:
mov dword [rsp + 0x78], 0
mov edx, edi
mov qword [rsp + 0x80], 0
mov rax, qword [rsp + 0x38]
mov qword [rsp + 0x88], 0
call rax
lea ecx, [rdi - 1]
test edi, edi
mov rsi, rax
je 0x180003b9c
lea rax, [rbp + r14 + 0x18]
lea r8, [rbp + r14 + 8]
cmp rsi, rax
lea rax, [rsi + 0x10]
setae dl
cmp r8, rax
setae al
or dl, al
je 0x18000439f
cmp ecx, 0xe
jbe 0x18000439f
mov edx, edi
xor eax, eax
shr edx, 4
shl rdx, 4
nop
movdqu xmm2, xmmword [r8 + rax]
movups xmmword [rsi + rax], xmm2
add rax, 0x10
cmp rax, rdx
jne 0x180003a0f
mov r9d, edi
mov r8d, ecx
and r9d, 0xfffffff0
mov edx, r9d
sub r8d, r9d
cmp edi, r9d
lea rax, [rsi + rdx]
lea rdx, [r13 + rdx + 8]
je 0x180003b32
movzx r9d, byte [rdx]
test r8d, r8d
mov byte [rax], r9b
je 0x180003b32
movzx r9d, byte [rdx + 1]
cmp r8d, 1
mov byte [rax + 1], r9b
je 0x180003b32
movzx r9d, byte [rdx + 2]
cmp r8d, 2
mov byte [rax + 2], r9b
je 0x180003b32
movzx r9d, byte [rdx + 3]
cmp r8d, 3
mov byte [rax + 3], r9b
je 0x180003b32
movzx r9d, byte [rdx + 4]
cmp r8d, 4
mov byte [rax + 4], r9b
je 0x180003b32
movzx r9d, byte [rdx + 5]
cmp r8d, 5
mov byte [rax + 5], r9b
je 0x180003b32
movzx r9d, byte [rdx + 6]
cmp r8d, 6
mov byte [rax + 6], r9b
je 0x180003b32
movzx r9d, byte [rdx + 7]
cmp r8d, 7
mov byte [rax + 7], r9b
je 0x180003b32
movzx r9d, byte [rdx + 8]
cmp r8d, 8
mov byte [rax + 8], r9b
je 0x180003b32
movzx r9d, byte [rdx + 9]
cmp r8d, 9
mov byte [rax + 9], r9b
je 0x180003b32
movzx r9d, byte [rdx + 0xa]
cmp r8d, 0xa
mov byte [rax + 0xa], r9b
je 0x180003b32
movzx r9d, byte [rdx + 0xb]
cmp r8d, 0xb
mov byte [rax + 0xb], r9b
je 0x180003b32
movzx r9d, byte [rdx + 0xc]
cmp r8d, 0xc
mov byte [rax + 0xc], r9b
je 0x180003b32
movzx r9d, byte [rdx + 0xd]
cmp r8d, 0xd
mov byte [rax + 0xd], r9b
je 0x180003b32
movzx edx, byte [rdx + 0xe]
mov byte [rax + 0xe], dl
shr ecx, 2
lea r8d, [rcx + 1]
mov edx, r8d
movd xmm1, r15d
mov rax, rsi
shr edx, 2
pshufd xmm1, xmm1, 0
shl rdx, 4
add rdx, rsi
movdqu xmm0, xmmword [rax]
add rax, 0x10
pxor xmm0, xmm1
movups xmmword [rax - 0x10], xmm0
cmp rax, rdx
jne 0x180003b53
mov edx, r8d
and edx, 0xfffffffc
lea eax, [rdx*4]
cmp r8d, edx
je 0x180003b9c
movsxd rdx, eax
xor dword [rsi + rdx], r15d
lea edx, [rax + 4]
cmp edi, edx
jbe 0x180003b9c
movsxd rdx, edx
add eax, 8
xor dword [rsi + rdx], r15d
cmp edi, eax
jbe 0x180003b9c
cdqe
xor dword [rsi + rax], r15d
mov edx, 0x20a
mov ecx, 0x40
mov rax, qword [rsp + 0x38]
call rax
mov rdi, rax
movsx ax, byte [rsi]
test al, al
je 0x180003bd0
xor edx, edx
nop dword [rax + rax]
mov word [rdi + rdx*2], ax
add rdx, 1
movsx ax, byte [rsi + rdx]
test al, al
jne 0x180003bbf
mov edx, 0x20a
mov ecx, 0x40
call qword [r12 + 0xc8]
xor ecx, ecx
mov r8d, 0x105
mov rsi, rax
mov rdx, rax
call qword [r12 + 0x48]
cmp word [rsi], 0
je 0x18000444f
xor eax, eax
lea edx, [rax + 1]
mov rax, rdx
lea rdx, [rsi + rdx*2]
cmp word [rdx], 0
jne 0x180003c01
xor r8d, r8d
mov word [rdx], r8w
lea edx, [rax - 1]
mov rax, rdx
lea rdx, [rsi + rdx*2]
cmp word [rdx], 0x5c
jne 0x180003c11
mov rdx, rdi
mov rcx, rsi
call fcn.18000358f
lea r9, [rsp + 0x78]
mov rdx, r12
lea r8, [rsp + 0x80]
call fcn.1800032df
test al, al
je 0x180004137
mov edx, dword [rsp + 0x78]
mov qword [rsp + 0x20], rbx
mov r9, r12
mov rcx, qword [rsp + 0x80]
lea r8, [rsp + 0x88]
call fcn.1800025df
test al, al
je 0x180004137
mov rax, qword [rsp + 0x88]
mov qword [rsp + 0x50], rax
lea rdi, [rax + 0x10]
jmp 0x180004192
mov r8d, ecx
xor eax, eax
jmp 0x1800043b2
mov rax, rdx
movzx edx, byte [r13 + rax + 8]
cmp rax, r8
mov byte [rsi + rax], dl
lea rdx, [rax + 1]
jne 0x1800043af
mov r8d, ecx
shr r8d, 2
add r8d, 1
cmp ecx, 0xb
ja 0x180003b39
xor eax, eax
jmp 0x180003b7a
mov rdx, rsi
xor eax, eax
jmp 0x180003c11