Function at 0x18035c040
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push r14
push r15
mov eax, 0x58
call fcn.1802e6db0
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 0x18035c377
cmp rcx, r9
jb 0x18035c377
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 0x18035c0e3
mov rdx, r12
mov rcx, r13
call fcn.18035cdc0
mov dword [rbx + 0x174], 0
jmp 0x18035c0e8
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 0x18035c168
mov rax, r13
nop dword [rax + rax]
test r15, r15
je 0x18035c155
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 0x18035c120
jmp 0x18035c15d
test ebp, ebp
jne 0x18035c34d
mov rdx, r12
mov rcx, rax
call fcn.18035cdc0
cmp r15, 0xc00
jb 0x18035c242
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.18035cf40
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 0x18035c1d0
sub qword [rsp + 0x38], 1
lea r12, [rbx + 0x60]
mov r13, qword [rsp + 0x20]
jne 0x18035c1b0
mov r15, qword [rsp + 0x98]
lea r12, [rbx + 0x60]
mov ebp, dword [rsp + 0x80]
mov r9, r15
and r9, 0xfffffffffffffff0
je 0x18035c2f2
mov r8, rsi
mov rdx, r12
mov rcx, r13
call fcn.18035cf40
cmp r15, 0x10
jb 0x18035c2f2
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 0x18035c290
mov r15, qword [rsp + 0x98]
mov ebp, dword [rsp + 0x80]
mov r13, qword [rsp + 0x20]
test r15, r15
je 0x18035c34d
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 0x18035c330
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