Function at 0x180365470
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push r14
push r15
mov eax, 0x58
call fcn.1802f01e0
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 0x1803657a7
cmp rcx, r9
jb 0x1803657a7
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 0x180365513
mov rdx, r12
mov rcx, r13
call fcn.1803661f0
mov dword [rbx + 0x174], 0
jmp 0x180365518
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 0x180365598
mov rax, r13
nop dword [rax + rax]
test r15, r15
je 0x180365585
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 0x180365550
jmp 0x18036558d
test ebp, ebp
jne 0x18036577d
mov rdx, r12
mov rcx, rax
call fcn.1803661f0
cmp r15, 0xc00
jb 0x180365672
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.180366370
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 0x180365600
sub qword [rsp + 0x38], 1
lea r12, [rbx + 0x60]
mov r13, qword [rsp + 0x20]
jne 0x1803655e0
mov r15, qword [rsp + 0x98]
lea r12, [rbx + 0x60]
mov ebp, dword [rsp + 0x80]
mov r9, r15
and r9, 0xfffffffffffffff0
je 0x180365722
mov r8, rsi
mov rdx, r12
mov rcx, r13
call fcn.180366370
cmp r15, 0x10
jb 0x180365722
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 0x1803656c0
mov r15, qword [rsp + 0x98]
mov ebp, dword [rsp + 0x80]
mov r13, qword [rsp + 0x20]
test r15, r15
je 0x18036577d
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 0x180365760
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