Function at 0x100013c0
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
mov rax, rsp
sub rsp, 0x40
cmp dword [rcx + 0xc], 0
mov r13d, r8d
mov edi, edx
mov r12, rcx
mov ebx, 1
jne 0x10001407
mov dword [rax - 0x18], edx
mov dword [rax - 0x1c], edx
mov dword [rax - 0x20], edx
mov dword [rax - 0x10], r8d
mov dword [rax - 0x14], r8d
mov byte [rax - 9], bl
mov byte [rax - 0xa], bl
mov word [rax - 0xc], 0x20
jmp 0x1000160c
cmp dword [rcx + 0xc], ebx
jne 0x1000146d
mov rdx, qword [rcx + 0x10]
cmp word [rdx + 0x14], 0x20
jne 0x1000146d
mov eax, dword [rdx]
cmp edi, eax
jne 0x1000142c
mov dword [rdx + 0x10], r8d
mov dword [rdx + 0xc], r8d
mov al, bl
jmp 0x1000163a
xor eax, edi
mov r8d, 0x1f
bt eax, 0x1f
mov ecx, r8d
jb 0x10001450
mov r9d, 0xffffffff
mov eax, dword [rdx]
add ecx, r9d
xor eax, edi
shr eax, cl
test bl, al
je 0x10001443
mov eax, edi
sub r8w, cx
shr eax, cl
mov word [rdx + 0x14], r8w
and eax, ebx
mov dword [rdx + rax*4 + 0xc], r13d
mov dword [rdx + rax*4 + 4], edi
jmp 0x10001638
mov r11, qword [rcx + 0x10]
xor eax, eax
mov r9d, 0xffffffff
lea ebp, [rax + 0x20]
cdqe
lea rcx, [rax + rax*2]
lea rsi, [r11 + rcx*8]
movzx r10d, word [rsi + 0x14]
sub ebp, r10d
cmp ebp, 0x20
jne 0x10001498
xor r8d, r8d
jmp 0x100014b2
mov r8d, edi
mov ecx, ebp
shr r8d, cl
cmp r10d, 0x20
je 0x100014b2
mov ecx, r10d
mov eax, ebx
shl eax, cl
sub eax, ebx
and r8d, eax
cmp ebp, 0x20
jne 0x100014bb
xor edx, edx
jmp 0x100014d2
mov edx, dword [rsi]
mov ecx, ebp
shr edx, cl
cmp r10d, 0x20
je 0x100014d2
mov ecx, r10d
mov eax, ebx
shl eax, cl
sub eax, ebx
and edx, eax
cmp r8d, edx
jne 0x100014f3
add ebp, r9d
mov eax, edi
mov ecx, ebp
shr eax, cl
and eax, ebx
cmp byte [rax + rsi + 0x16], 0
jne 0x1000157a
mov eax, dword [rsi + rax*4 + 4]
jmp 0x1000147c
movzx r14d, word [rsi + 0x14]
mov dword [rsp + 0x80], r14d
sub r14d, ebx
lea ecx, [r14 + rbp]
jmp 0x1000150f
add r14d, r9d
add ecx, r9d
mov eax, dword [rsi]
xor eax, edi
shr eax, cl
test bl, al
je 0x10001509
lea rcx, [rsp + 0x20]
mov rdx, rsi
mov r8d, 0x18
call sub.msvcrt.dll_memcpy
mov eax, dword [rsp + 0x80]
mov r8d, edi
sub ax, r14w
lea ecx, [r14 + rbp]
mov word [rsp + 0x34], r14w
shr r8d, cl
sub ax, bx
mov word [rsi + 0x14], ax
and r8d, ebx
mov eax, ebx
mov dword [rsi + r8*4 + 0xc], r13d
mov byte [r8 + rsi + 0x16], bl
sub eax, r8d
mov byte [rax + rsi + 0x16], 0
mov dword [rsi + r8*4 + 4], edi
mov ecx, eax
mov eax, dword [r12 + 0xc]
mov dword [rsi + rcx*4 + 4], eax
jmp 0x10001609
mov r14d, dword [rsi + rax*4 + 4]
mov r11d, eax
cmp edi, r14d
jne 0x10001591
mov dword [rsi + rax*4 + 0xc], r13d
jmp 0x10001425
movsxd rdx, eax
lea r10d, [rbp - 1]
mov eax, r14d
xor eax, edi
mov ecx, r10d
shr eax, cl
test bl, al
jne 0x100015bc
mov r8d, dword [rsi + rdx*4 + 4]
add r10d, r9d
mov eax, r8d
xor eax, edi
mov ecx, r10d
shr eax, cl
test bl, al
je 0x100015ab
mov eax, dword [rsi + r11*4 + 0xc]
mov ecx, r10d
mov edx, edi
shr edx, cl
mov ecx, ebx
mov byte [r11 + rsi + 0x16], 0
and edx, ebx
sub bp, r10w
mov dword [rsp + rdx*4 + 0x2c], r13d
sub ecx, edx
sub bp, bx
mov dword [rsp + rcx*4 + 0x2c], eax
mov eax, dword [r12 + 0xc]
mov byte [rsp + rcx + 0x36], bl
mov byte [rsp + rdx + 0x36], bl
mov dword [rsp + rdx*4 + 0x24], edi
mov dword [rsp + 0x20], r14d
mov dword [rsp + rcx*4 + 0x24], r14d
mov dword [rsi + r11*4 + 4], eax
mov word [rsp + 0x34], bp
mov rcx, r12
call fcn.10001a24
movsxd r11, dword [r12 + 0xc]
mov rax, qword [r12 + 0x10]
lea rcx, [r11 + r11*2]
lea rdx, [rsp + 0x20]
mov r8d, 0x18
lea rcx, [rax + rcx*8]
call sub.msvcrt.dll_memcpy
add dword [r12 + 0xc], ebx
xor al, al
add rsp, 0x40
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret