Function at 0x1800029a0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r13
push r14
push r15
sub rsp, 0x20
movsxd rbx, dword [rcx]
xor r13d, r13d
mov rsi, r9
mov ebp, r8d
mov r14, rdx
mov r15, rcx
mov edi, r13d
test ebx, ebx
je 0x180002a09
mov rdx, rbx
cmp rbx, 0x10
jge 0x180002a02
cmp edi, ebp
jae 0x180002a02
movzx ecx, byte [r14]
inc ebx
movzx eax, byte [rdx + r15 + 0x64]
inc r14
xor al, cl
inc edi
mov byte [rsi], al
inc rsi
mov byte [rdx + r15 + 0x64], cl
inc rdx
cmp rdx, 0x10
jl 0x1800029d8
cmp ebx, 0x10
cmove ebx, r13d
mov eax, ebp
mov qword [rsp + 0x50], r12
sub eax, edi
cmp eax, 0x10
jb 0x180002b82
lea r12d, [rdi + 0x10]
cmp r12d, ebp
ja 0x180002b82
nop dword [rax + rax]
lea rdx, [r15 + 0x64]
mov rcx, r15
call fcn.1800021b0
movzx ecx, byte [r14]
movzx eax, byte [r15 + 0x64]
xor al, cl
mov byte [rsi], al
movzx eax, byte [r15 + 0x65]
mov byte [r15 + 0x64], cl
movzx ecx, byte [r14 + 1]
xor al, cl
mov byte [rsi + 1], al
movzx eax, byte [r15 + 0x66]
mov byte [r15 + 0x65], cl
movzx ecx, byte [r14 + 2]
xor al, cl
mov byte [rsi + 2], al
mov byte [r15 + 0x66], cl
movzx ecx, byte [r14 + 3]
movzx eax, cl
xor al, byte [r15 + 0x67]
mov byte [rsi + 3], al
movzx eax, byte [r15 + 0x68]
mov byte [r15 + 0x67], cl
movzx ecx, byte [r14 + 4]
xor al, cl
mov byte [rsi + 4], al
movzx eax, byte [r15 + 0x69]
mov byte [r15 + 0x68], cl
movzx ecx, byte [r14 + 5]
xor al, cl
mov byte [rsi + 5], al
movzx eax, byte [r15 + 0x6a]
mov byte [r15 + 0x69], cl
movzx ecx, byte [r14 + 6]
xor al, cl
mov byte [rsi + 6], al
mov byte [r15 + 0x6a], cl
movzx ecx, byte [r14 + 7]
movzx eax, cl
xor al, byte [r15 + 0x6b]
mov byte [rsi + 7], al
movzx eax, byte [r15 + 0x6c]
mov byte [r15 + 0x6b], cl
movzx ecx, byte [r14 + 8]
xor al, cl
mov byte [rsi + 8], al
movzx eax, byte [r15 + 0x6d]
mov byte [r15 + 0x6c], cl
movzx ecx, byte [r14 + 9]
xor al, cl
mov byte [rsi + 9], al
movzx eax, byte [r15 + 0x6e]
mov byte [r15 + 0x6d], cl
movzx ecx, byte [r14 + 0xa]
xor al, cl
mov byte [rsi + 0xa], al
mov byte [r15 + 0x6e], cl
movzx ecx, byte [r14 + 0xb]
movzx eax, cl
xor al, byte [r15 + 0x6f]
mov byte [rsi + 0xb], al
movzx eax, byte [r15 + 0x70]
mov byte [r15 + 0x6f], cl
movzx ecx, byte [r14 + 0xc]
xor al, cl
mov byte [rsi + 0xc], al
movzx eax, byte [r15 + 0x71]
mov byte [r15 + 0x70], cl
movzx ecx, byte [r14 + 0xd]
xor al, cl
mov byte [rsi + 0xd], al
movzx eax, byte [r15 + 0x72]
mov byte [r15 + 0x71], cl
movzx ecx, byte [r14 + 0xe]
xor al, cl
mov byte [rsi + 0xe], al
mov byte [r15 + 0x72], cl
movzx ecx, byte [r14 + 0xf]
movzx eax, cl
xor al, byte [r15 + 0x73]
mov byte [rsi + 0xf], al
add r14, 0x10
add rsi, 0x10
mov byte [r15 + 0x73], cl
add edi, 0x10
add r12d, 0x10
cmp r12d, ebp
jbe 0x180002a30
cmp edi, ebp
jae 0x180002be7
nop word [rax + rax]
lea rdx, [r15 + 0x64]
mov rcx, r15
call fcn.1800021b0
cmp edi, ebp
jae 0x180002bdc
movsxd rax, ebx
mov r8, 0xffffffffffffff9c
add rax, 0x64
add rax, r15
sub r8, r15
lea rcx, [r8 + rax]
cmp rcx, 0x10
jge 0x180002bdc
movzx edx, byte [r14]
inc ebx
movzx ecx, byte [rax]
inc r14
xor cl, dl
inc edi
mov byte [rsi], cl
inc rsi
mov byte [rax], dl
inc rax
cmp edi, ebp
jb 0x180002bb4
cmp ebx, 0x10
cmove ebx, r13d
cmp edi, ebp
jb 0x180002b90
mov r12, qword [rsp + 0x50]
mov eax, 1
mov rbp, qword [rsp + 0x60]
mov dword [r15], ebx
mov rbx, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r14
pop r13
pop rdi
pop rsi
ret