Function at 0x14015aa10
Capabilities:
Encode data using xor

Disassembly:
push rbp
xor eax, eax
mov rbp, rsp
push r15
push r14
push r13
push r12
mov r12, r8
push rdi
push rsi
mov rsi, rdx
push rbx
mov rbx, rcx
mov ecx, 0x19
and rsp, 0xfffffffffffffff0
sub rsp, 0x1f0
lea r13, [rsp + 0x50]
mov qword [rsp + 0x120], 0
mov qword [rsp + 0x128], 0
mov rdi, r13
mov qword [rsp + 0x130], 0
mov qword [rsp + 0x138], 0
mov qword [rsp + 0x140], 0
mov qword [rsp + 0x148], 0
mov qword [rsp + 0x150], 0
mov qword [rsp + 0x158], 0
mov qword [rsp + 0x160], 0
mov qword [rsp + 0x168], 0
mov qword [rsp + 0x170], 0
mov qword [rsp + 0x178], 0
mov qword [rsp + 0x180], 0
mov qword [rsp + 0x188], 0
mov qword [rsp + 0x190], 0
mov qword [rsp + 0x198], 0
mov qword [rsp + 0x1a0], 0
mov qword [rsp + 0x1a8], 0
mov qword [rsp + 0x1b0], 0
mov qword [rsp + 0x1b8], 0
mov qword [rsp + 0x1c0], 0
mov qword [rsp + 0x1c8], 0
mov qword [rsp + 0x1d0], 0
mov qword [rsp + 0x1d8], 0
rep stosq qword [rdi], rax
mov qword [rsp + 0x1e0], 0
cmp r8, 0x47
jbe 0x14015ac10
lea rdi, [rsp + 0x98]
nop dword [rax + rax]
mov rax, rsi
mov rcx, r13
nop
movzx edx, byte [rax + 1]
movzx r8d, byte [rax + 2]
add rax, 8
shl r8, 0x10
shl rdx, 8
or rdx, r8
movzx r8d, byte [rax - 8]
or rdx, r8
movzx r8d, byte [rax - 5]
shl r8, 0x18
or rdx, r8
movzx r8d, byte [rax - 4]
shl r8, 0x20
or r8, rdx
movzx edx, byte [rax - 3]
shl rdx, 0x28
or rdx, r8
movzx r8d, byte [rax - 2]
shl r8, 0x30
or r8, rdx
movzx edx, byte [rax - 1]
shl rdx, 0x38
or rdx, r8
xor qword [rcx], rdx
add rcx, 8
cmp rcx, rdi
jne 0x14015ab90
mov rcx, r13
sub r12, 0x48
add rsi, 0x48
call fcn.14004c800
cmp r12, 0x47
ja 0x14015ab88
lea rax, [rsp + 0x120]
test r12, r12
je 0x14015ac52
mov r8d, r12d
mov rdi, rax
cmp r12d, 8
jb 0x14015ac32
mov ecx, r12d
shr ecx, 3
rep movsq qword [rdi], qword [rsi]
xor edx, edx
test r8b, 4
jne 0x14015b1eb
test r8b, 2
jne 0x14015b1d3
and r8d, 1
jne 0x14015b1c7
mov byte [rsp + r12 + 0x120], 6
mov r8, r13
lea r9, [rsp + 0x168]
or byte [rsp + 0x167], 0x80
nop
movzx edx, byte [rax + 1]
movzx ecx, byte [rax + 2]
add rax, 8
shl rcx, 0x10
shl rdx, 8
or rdx, rcx
movzx ecx, byte [rax - 8]
or rdx, rcx
movzx ecx, byte [rax - 5]
shl rcx, 0x18
or rdx, rcx
movzx ecx, byte [rax - 4]
shl rcx, 0x20
or rcx, rdx
movzx edx, byte [rax - 3]
shl rdx, 0x28
or rdx, rcx
movzx ecx, byte [rax - 2]
shl rcx, 0x30
or rcx, rdx
movzx edx, byte [rax - 1]
shl rdx, 0x38
or rdx, rcx
xor qword [r8], rdx
add r8, 8
cmp rax, r9
jne 0x14015ac70
mov rcx, r13
call fcn.14004c800
mov rdi, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x58]
mov r10, qword [rsp + 0x68]
mov r11, qword [rsp + 0x60]
mov rax, rdi
mov r12, rdi
mov r15, rdi
mov r14, rdi
shr rax, 0x18
shr r12, 0x30
mov rdx, rdi
mov r13, rsi
mov qword [rsp + 0x48], rax
mov rax, rsi
shr r15, 0x28
movzx r12d, r12b
shr rax, 0x28
mov qword [rsp + 0x38], r15
shr r14, 0x20
mov r15, rsi
mov qword [rsp + 0x28], rax
mov rax, rdi
shr rdx, 0x10
mov r8, qword [rsp + 0x78]
shr rax, 0x38
mov qword [rsp + 0x40], r14
shr r13, 0x20
mov r14, rsi
shl rax, 8
mov qword [rsp + 0x30], r13
mov r13, rsi
shr r15, 0x18
shr r13, 0x30
or rax, r12
shr r14, 0x10
mov r9, qword [rsp + 0x70]
movzx r12d, byte [rsp + 0x38]
shl rax, 8
movzx r13d, r13b
mov rcx, qword [rsp + 0x80]
or rax, r12
movzx r12d, byte [rsp + 0x40]
shl rax, 8
or rax, r12
movzx r12d, byte [rsp + 0x48]
shl rax, 8
or rax, r12
movzx r12d, dl
mov rdx, rsi
shl rax, 8
movzx edx, dh
or r12, rax
mov rax, rdi
movzx edi, dil
movzx eax, ah
shl r12, 8
or r12, rax
mov rax, rsi
movzx esi, sil
shr rax, 0x38
shl r12, 8
shl rax, 8
or rax, r13
movzx r13d, byte [rsp + 0x28]
shl rax, 8
or rax, r13
movzx r13d, byte [rsp + 0x30]
shl rax, 8
or rax, r13
movzx r13d, r15b
mov r15, r11
shl rax, 8
shr r15, 0x30
or rax, r13
movzx r13d, r14b
movzx r15d, r15b
mov r14, r12
shl rax, 8
mov r12, r11
or r14, rdi
mov rdi, r11
shr r12, 0x28
or rax, r13
shr rdi, 0x20
shl rax, 8
movzx r12d, r12b
movzx edi, dil
or rax, rdx
mov rdx, r11
shl rax, 8
shr rdx, 0x10
or rax, rsi
mov rsi, r11
mov r13, rax
mov rax, r10
shr rsi, 0x18
shr rax, 0x10
movzx esi, sil
mov qword [rsp + 0x48], rax
mov rax, r10
shr rax, 0x18
mov qword [rsp + 0x40], rax
mov rax, r10
shr rax, 0x20
mov qword [rsp + 0x38], rax
mov rax, r10
shr rax, 0x28
mov qword [rsp + 0x30], rax
mov rax, r10
shr rax, 0x30
mov qword [rsp + 0x28], rax
mov rax, r11
shr rax, 0x38
shl rax, 8
or rax, r15
mov r15, r9
shl rax, 8
or rax, r12
shl rax, 8
or rax, rdi
movzx edi, dl
mov rdx, r10
shl rax, 8
or rax, rsi
shl rax, 8
mov rsi, rax
mov rax, r11
movzx r11d, r11b
or rsi, rdi
movzx eax, ah
mov rdi, r10
movzx r10d, r10b
shl rsi, 8
or rsi, rax
shl rsi, 8
shr rdi, 0x38
mov rax, rdi
movzx edi, byte [rsp + 0x28]
or rsi, r11
shr r15, 0x30
shl rax, 8
mov r12, rsi
movzx r15d, r15b
mov rsi, r9
or rax, rdi
movzx edi, byte [rsp + 0x30]
shr rsi, 0x28
mov r11, r9
shl rax, 8
movzx esi, sil
shr r11, 0x20
or rax, rdi
movzx edi, byte [rsp + 0x38]
movzx r11d, r11b
shl rax, 8
or rax, rdi
movzx edi, byte [rsp + 0x40]
shl rax, 8
or rax, rdi
movzx edi, byte [rsp + 0x48]
shl rax, 8
or rax, rdi
movzx edi, dh
mov rdx, r9
shl rax, 8
shr rdx, 0x10
or rax, rdi
shl rax, 8
or rax, r10
mov r10, r9
mov rdi, rax
mov rax, r8
shr r10, 0x18
shr rax, 0x10
movzx r10d, r10b
mov qword [rsp + 0x48], rax
mov rax, r8
shr rax, 0x18
mov qword [rsp + 0x40], rax
mov rax, r8
shr rax, 0x20
mov qword [rsp + 0x38], rax
mov rax, r8
shr rax, 0x28
mov qword [rsp + 0x30], rax
mov rax, r8
shr rax, 0x30
mov qword [rsp + 0x28], rax
mov rax, r9
shr rax, 0x38
shl rax, 8
or rax, r15
mov r15, rcx
shl rax, 8
or rax, rsi
mov rsi, r8
shl rax, 8
shr rsi, 0x38
or rax, r11
movzx r11d, dl
mov rdx, r8
movzx r8d, r8b
shl rax, 8
shr r15, 0x30
or rax, r10
movzx r15d, r15b
shl rax, 8
mov r10, rax
mov rax, r9
movzx r9d, r9b
or r10, r11
movzx eax, ah
movzx r11d, byte [rsp + 0x28]
mov qword [rbx], r14
shl r10, 8
mov qword [rbx + 8], r13
or r10, rax
mov rax, rsi
movzx esi, dh
mov rdx, rcx
shl rax, 8
shl r10, 8
mov qword [rbx + 0x10], r12
or rax, r11
movzx r11d, byte [rsp + 0x30]
shr rdx, 0x10
mov qword [rbx + 0x18], rdi
shl rax, 8
or rax, r11
movzx r11d, byte [rsp + 0x38]
shl rax, 8
or rax, r11
movzx r11d, byte [rsp + 0x40]
shl rax, 8
or rax, r11
movzx r11d, byte [rsp + 0x48]
shl rax, 8
or rax, r11
shl rax, 8
or rax, rsi
mov rsi, r10
mov r10, rcx
shl rax, 8
or rsi, r9
mov r9, rcx
shr r10, 0x28
or rax, r8
mov r8, rcx
shr r9, 0x20
movzx r10d, r10b
mov r11, rax
shr r8, 0x18
movzx r9d, r9b
mov qword [rbx + 0x20], rsi
mov rax, qword [rsp + 0x88]
movzx r8d, r8b
mov qword [rbx + 0x28], r11
shr rax, 0x10
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x88]
shr rax, 0x18
mov qword [rsp + 0x40], rax
mov rax, qword [rsp + 0x88]
shr rax, 0x20
mov qword [rsp + 0x38], rax
mov rax, qword [rsp + 0x88]
shr rax, 0x28
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x88]
shr rax, 0x30
mov qword [rsp + 0x28], rax
mov rax, rcx
shr rax, 0x38
shl rax, 8
or rax, r15
shl rax, 8
or rax, r10
shl rax, 8
or rax, r9
movzx r9d, dl
mov rdx, qword [rsp + 0x88]
shl rax, 8
or rax, r8
shr rdx, 0x38
shl rax, 8
mov r8, rax
movzx eax, ch
movzx ecx, cl
or r8, r9
movzx r9d, byte [rsp + 0x28]
shl r8, 8
or r8, rax
mov rax, rdx
mov rdx, qword [rsp + 0x88]
shl rax, 8
shl r8, 8
or rax, r9
movzx r9d, byte [rsp + 0x30]
movzx edx, dh
mov r10, r8
shl rax, 8
or r10, rcx
or rax, r9
movzx r9d, byte [rsp + 0x38]
mov qword [rbx + 0x30], r10
shl rax, 8
or rax, r9
movzx r9d, byte [rsp + 0x40]
shl rax, 8
or rax, r9
movzx r9d, byte [rsp + 0x48]
shl rax, 8
or rax, r9
shl rax, 8
or rax, rdx
movzx edx, byte [rsp + 0x88]
shl rax, 8
or rax, rdx
mov qword [rbx + 0x38], rax
lea rsp, [rbp - 0x38]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
movzx ecx, byte [rsi + rdx]
mov byte [rdi + rdx], cl
jmp 0x14015ac52
movzx ecx, word [rsi + rdx]
mov word [rdi + rdx], cx
add rdx, 2
and r8d, 1
je 0x14015ac52
jmp 0x14015b1c7
mov edx, dword [rsi]
mov dword [rdi], edx
mov edx, 4
test r8b, 2
je 0x14015ac48
jmp 0x14015b1d3