Function at 0x18025ca80
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x188
lea rbp, [rsp + 0x80]
mov rsi, rcx
mov eax, 0x20
call fcn.18045a590
sub rsp, rax
mov rbx, rsp
mov eax, 0x20
call fcn.18045a590
sub rsp, rax
mov rdi, rsp
mov eax, 0x20
call fcn.18045a590
sub rsp, rax
mov r14, rsp
mov byte [r14], 0x12
mov qword [rdi], rdx
mov r15, rdi
add r15, 8
mov qword [rdi + 8], r8
mov qword [rdi + 0x10], r14
lea rcx, [rbp + 0x28]
lea r8, [rbp + 0x107]
sub rsp, 0x20
mov rdx, rdi
mov r9, r14
call fcn.18027b820
add rsp, 0x20
cmp qword [rbp + 0x28], 0
jne 0x18025cb0e
jmp 0x18025cda5
mov r12, qword [rbp + 0x30]
lea rdx, [rbp + 0x28]
add rdx, 0x10
lea rcx, [rbp - 0x28]
sub rsp, 0x20
mov r8d, 0x28
call fcn.180468b10
add rsp, 0x20
cmp r12, 0
je 0x18025cda5
mov rcx, rbp
lea rdx, [rbp - 0x28]
sub rsp, 0x20
mov r8d, 0x28
call fcn.180468b10
add rsp, 0x20
mov al, byte [0x1805297c8]
sub rsp, 0x20
mov ecx, 0xc0
mov edx, 8
call fcn.1802cbf10
add rsp, 0x20
mov r15, rax
cmp r15, 0
sete al
test al, 1
jne 0x18025cb82
jmp 0x18025cb9b
sub rsp, 0x20
mov ecx, 8
mov edx, 0xc0
call fcn.180407090
add rsp, 0x20
ud2
mov qword [r15], r12
mov rcx, r15
add rcx, 8
mov rdx, rbp
sub rsp, 0x20
mov r8d, 0x28
call fcn.180468b10
add rsp, 0x20
mov qword [rbx], 4
mov r13, rbx
add r13, 8
mov qword [rbx + 8], r15
mov rax, rbx
add rax, 0x10
mov qword [rbp + 0xb0], rax
mov qword [rbx + 0x10], 1
mov rax, qword [rdi]
mov qword [rbp + 0xc8], rax
mov rax, qword [rdi + 8]
mov qword [rbp + 0xd0], rax
mov rax, qword [rdi + 0x10]
mov qword [rbp + 0xd8], rax
lea rax, [rbp + 0xc8]
add rax, 0x10
mov qword [rbp + 0xb8], rax
lea rax, [rbp + 0x60]
add rax, 8
mov qword [rbp + 0xc0], rax
lea r12, [rbp + 0x60]
add r12, 0x10
mov r9, qword [rbp + 0xd8]
lea rcx, [rbp + 0x60]
lea rdx, [rbp + 0xc8]
lea r8, [rbp + 0x107]
sub rsp, 0x20
call fcn.18027b820
add rsp, 0x20
mov edi, 1
cmp qword [rbp + 0x60], 0
je 0x18025cc75
mov qword [rbp + 0xf8], r13
mov edi, 1
jmp 0x18025cc7a
mov r13, qword [rbp + 0xf8]
jmp 0x18025cc75
jmp 0x18025cd7e
mov rax, qword [rbp + 0xc0]
mov r13, qword [rax]
lea rcx, [rbp - 0x78]
sub rsp, 0x20
mov rdx, r12
mov r8d, 0x28
call fcn.180468b10
add rsp, 0x20
cmp r13, 0
je 0x18025cd75
lea rcx, [rbp - 0x50]
lea rdx, [rbp - 0x78]
sub rsp, 0x20
mov r8d, 0x28
call fcn.180468b10
add rsp, 0x20
cmp rdi, qword [rbx]
sete al
test al, 1
jne 0x18025cd3e
jmp 0x18025cccf
imul rax, rdi, 0x30
mov rcx, r15
add rcx, rax
mov qword [rcx], r13
add rcx, 8
lea rdx, [rbp - 0x50]
sub rsp, 0x20
mov r8d, 0x28
call fcn.180468b10
add rsp, 0x20
add rdi, 1
mov rax, qword [rbp + 0xb0]
mov qword [rax], rdi
mov rax, qword [rbp + 0xb8]
mov r9, qword [rax]
lea rcx, [rbp + 0x60]
lea rdx, [rbp + 0xc8]
lea r8, [rbp + 0x107]
sub rsp, 0x20
call fcn.18027b820
add rsp, 0x20
cmp qword [rbp + 0x60], 0
je 0x18025cc6c
jmp 0x18025cc7a
sub rsp, 0x30
mov rcx, rbx
mov rdx, rdi
mov r8d, 1
mov r9d, 8
mov qword [rsp + 0x20], 0x30
call fcn.180268a00
add rsp, 0x30
mov rax, qword [rbp + 0xf8]
mov r15, qword [rax]
jmp 0x18025cccf
mov r13, qword [rbp + 0xf8]
jmp 0x18025cd7e
lea rcx, [rbp + 0xc8]
add rcx, 8
sub rsp, 0x20
call fcn.1802d31e0
add rsp, 0x20
mov r15, qword [rbx]
mov rbx, qword [r13]
cmp byte [r14], 0x12
jne 0x18025ce00
jmp 0x18025cdec
sub rsp, 0x20
mov rcx, r15
call fcn.1802d31e0
add rsp, 0x20
mov al, byte [r14]
xor r15d, r15d
mov ebx, 8
cmp al, 0x12
mov edi, 0
je 0x18025cdec
mov rax, qword [r14]
mov qword [rsi], rax
mov rax, qword [r14 + 8]
mov qword [rsi + 8], rax
mov rax, qword [r14 + 0x10]
mov qword [rsi + 0x10], rax
mov rax, qword [r14 + 0x18]
mov qword [rsi + 0x18], rax
jmp 0x18025d3e4
mov qword [rsi + 8], r15
mov qword [rsi + 0x10], rbx
mov qword [rsi + 0x18], rdi
mov byte [rsi], 0x12
jmp 0x18025d3e4
mov rax, qword [r14]
mov qword [rsi], rax
mov rax, qword [r14 + 8]
mov qword [rsi + 8], rax
mov rax, qword [r14 + 0x10]
mov qword [rsi + 0x10], rax
mov rax, qword [r14 + 0x18]
mov qword [rsi + 0x18], rax
cmp rdi, 0
sete al
test al, 1
jne 0x18025d3bb
jmp 0x18025ce2f
xor r8d, r8d
mov qword [rbp + 0x98], rdi
jmp 0x18025ce3b