Function at 0x180370c40
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push r14
push r15
mov eax, 0x58
call fcn.1802fb9b0
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 0x180370f77
cmp rcx, r9
jb 0x180370f77
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 0x180370ce3
mov rdx, r12
mov rcx, r13
call fcn.1803719c0
mov dword [rbx + 0x174], 0
jmp 0x180370ce8
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 0x180370d68
mov rax, r13
nop dword [rax + rax]
test r15, r15
je 0x180370d55
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 0x180370d20
jmp 0x180370d5d
test ebp, ebp
jne 0x180370f4d
mov rdx, r12
mov rcx, rax
call fcn.1803719c0
cmp r15, 0xc00
jb 0x180370e42
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.180371b40
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 0x180370dd0
sub qword [rsp + 0x38], 1
lea r12, [rbx + 0x60]
mov r13, qword [rsp + 0x20]
jne 0x180370db0
mov r15, qword [rsp + 0x98]
lea r12, [rbx + 0x60]
mov ebp, dword [rsp + 0x80]
mov r9, r15
and r9, 0xfffffffffffffff0
je 0x180370ef2
mov r8, rsi
mov rdx, r12
mov rcx, r13
call fcn.180371b40
cmp r15, 0x10
jb 0x180370ef2
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 0x180370e90
mov r15, qword [rsp + 0x98]
mov ebp, dword [rsp + 0x80]
mov r13, qword [rsp + 0x20]
test r15, r15
je 0x180370f4d
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 0x180370f30
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