Function at 0x1801a6400
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push r14
push r15
mov eax, 0x58
call fcn.180131170
sub rsp, rax
mov rax, qword [rcx + 0x178]
mov rbx, rcx
mov qword [rsp + 0x30], rax
mov r15, r9
mov rax, qword [rcx + 0x180]
mov r14, r8
mov rcx, qword [rcx + 0x38]
mov rsi, rdx
mov qword [rsp + 0x28], rax
add rcx, r9
movabs rax, 0xfffffffe0
cmp rcx, rax
ja 0x1801a6737
cmp rcx, r9
jb 0x1801a6737
cmp dword [rbx + 0x174], 0
mov qword [rsp + 0x88], rbp
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x48], r12
lea r12, [rbx + 0x60]
mov qword [rsp + 0x40], r13
lea r13, [rbx + 0x40]
mov qword [rsp + 0x20], r13
mov qword [rbx + 0x38], rcx
je 0x1801a64a3
mov rdx, r12
mov rcx, r13
call fcn.1801a7180
mov dword [rbx + 0x174], 0
jmp 0x1801a64a8
mov qword [rsp + 0x20], r13
movzx eax, byte [rbx + 0xd]
mov ebp, dword [rbx + 0x170]
movzx edi, byte [rbx + 0xc]
shl edi, 8
or edi, eax
mov dword [rsp + 0x80], ebp
movzx eax, byte [rbx + 0xe]
shl edi, 8
or edi, eax
movzx eax, byte [rbx + 0xf]
shl edi, 8
or edi, eax
test ebp, ebp
je 0x1801a6528
mov rax, r13
nop dword [rax + rax]
test r15, r15
je 0x1801a6515
movzx edx, byte [rsi]
dec r15
mov ecx, ebp
inc rsi
movzx eax, byte [rcx + rbx + 0x10]
xor al, dl
mov byte [r14], al
inc r14
xor byte [rcx + rbx + 0x40], dl
lea rax, [rbx + 0x40]
inc ebp
and ebp, 0xf
mov dword [rsp + 0x80], ebp
jne 0x1801a64e0
jmp 0x1801a651d
test ebp, ebp
jne 0x1801a670d
mov rdx, r12
mov rcx, rax
call fcn.1801a7180
cmp r15, 0xc00
jb 0x1801a6602
movabs rax, 0xaaaaaaaaaaaaaaab
mul r15
mov rbp, rdx
shr rbp, 0xb
imul rax, rbp, 0xfffffffffffff400
mov qword [rsp + 0x38], rbp
add r15, rax
mov qword [rsp + 0x98], r15
mov r15, qword [rsp + 0x28]
nop word [rax + rax]
mov r9d, 0xc00
mov r8, rsi
mov rdx, r12
mov rcx, r13
call fcn.1801a7300
mov rbp, qword [rsp + 0x30]
mov r12d, 0xc0
nop
mov r8, r15
lea rdx, [rbx + 0x10]
mov rcx, rbx
call rbp
inc edi
mov byte [rbx + 0xf], dil
mov eax, edi
shr eax, 0x18
mov byte [rbx + 0xc], al
mov eax, edi
shr eax, 0x10
mov byte [rbx + 0xd], al
mov eax, edi
shr eax, 8
mov byte [rbx + 0xe], al
mov rax, qword [rbx + 0x10]
xor rax, qword [rsi]
mov qword [r14], rax
mov rax, qword [rsi + 8]
add rsi, 0x10
xor rax, qword [rbx + 0x18]
mov qword [r14 + 8], rax
add r14, 0x10
sub r12, 1
jne 0x1801a6590
sub qword [rsp + 0x38], 1
lea r12, [rbx + 0x60]
mov r13, qword [rsp + 0x20]
jne 0x1801a6570
mov r15, qword [rsp + 0x98]
lea r12, [rbx + 0x60]
mov ebp, dword [rsp + 0x80]
mov r9, r15
and r9, 0xfffffffffffffff0
je 0x1801a66b2
mov r8, rsi
mov rdx, r12
mov rcx, r13
call fcn.1801a7300
cmp r15, 0x10
jb 0x1801a66b2
mov rbp, qword [rsp + 0x30]
mov r12, r15
shr r12, 4
imul rax, r12, 0xfffffffffffffff0
add r15, rax
mov qword [rsp + 0x98], r15
mov r15, qword [rsp + 0x28]
nop word [rax + rax]
mov r8, r15
lea rdx, [rbx + 0x10]
mov rcx, rbx
call rbp
inc edi
mov byte [rbx + 0xf], dil
mov eax, edi
shr eax, 0x18
mov byte [rbx + 0xc], al
mov eax, edi
shr eax, 0x10
mov byte [rbx + 0xd], al
mov eax, edi
shr eax, 8
mov byte [rbx + 0xe], al
mov rax, qword [rbx + 0x10]
xor rax, qword [rsi]
mov qword [r14], rax
mov rax, qword [rsi + 8]
add rsi, 0x10
xor rax, qword [rbx + 0x18]
mov qword [r14 + 8], rax
add r14, 0x10
sub r12, 1
jne 0x1801a6650
mov r15, qword [rsp + 0x98]
mov ebp, dword [rsp + 0x80]
mov r13, qword [rsp + 0x20]
test r15, r15
je 0x1801a670d
mov r8, qword [rsp + 0x28]
lea rdx, [rbx + 0x10]
mov rcx, rbx
call qword [rsp + 0x30]
inc edi
mov eax, edi
mov byte [rbx + 0xf], dil
shr eax, 0x18
mov byte [rbx + 0xc], al
mov eax, edi
shr eax, 0x10
mov byte [rbx + 0xd], al
mov eax, edi
shr eax, 8
mov byte [rbx + 0xe], al
nop word [rax + rax]
mov edx, ebp
inc ebp
movzx ecx, byte [rdx + rsi]
movzx eax, byte [rbx + rdx + 0x10]
xor byte [rdx + r13], cl
xor al, cl
mov byte [rdx + r14], al
sub r15, 1
jne 0x1801a66f0
mov r12, qword [rsp + 0x48]
xor eax, eax
mov rdi, qword [rsp + 0x50]
mov r13, qword [rsp + 0x40]
mov dword [rbx + 0x170], ebp
mov rbp, qword [rsp + 0x88]
add rsp, 0x58
pop r15
pop r14
pop rsi
pop rbx
ret
mov eax, 0xffffffff
add rsp, 0x58
pop r15
pop r14
pop rsi
pop rbx
ret