Function at 0x18004fac0
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x90
mov rax, qword [0x1800f1280]
xor rax, rsp
mov qword [rsp + 0x70], rax
mov rax, rdx
mov byte [rsp + 0x40], r9b
sub rax, rcx
mov qword [rsp + 0x48], rdx
and rax, 0xfffffffffffffff8
movzx edi, r9b
mov rbp, r8
mov r15, rdx
mov rsi, rcx
cmp rax, 0x100
jle 0x18004fbb3
movzx ebx, byte [rsp + 0xf0]
test rbp, rbp
jle 0x18004fc48
xorps xmm0, xmm0
mov byte [rsp + 0x20], bl
movzx r9d, dil
lea rcx, [rsp + 0x60]
mov r8, r15
mov rdx, rsi
movups xmmword [rsp + 0x60], xmm0
call fcn.1800512c0
mov r12, qword [rsp + 0x60]
mov rcx, rbp
mov r14, qword [rsp + 0x68]
mov rax, r12
sar rcx, 2
sub rax, rsi
sar rbp, 1
and rax, 0xfffffffffffffff8
add rbp, rcx
mov byte [rsp + 0x20], bl
mov rcx, r15
movzx r9d, dil
sub rcx, r14
mov r8, rbp
and rcx, 0xfffffffffffffff8
cmp rax, rcx
jge 0x18004fb8a
mov rdx, r12
mov rcx, rsi
call fcn.18004fac0
mov rsi, r14
jmp 0x18004fb9d
mov rdx, r15
mov rcx, r14
call fcn.18004fac0
mov r15, r12
mov qword [rsp + 0x48], r12
mov rax, r15
sub rax, rsi
and rax, 0xfffffffffffffff8
cmp rax, 0x100
jg 0x18004fb16
cmp rsi, r15
je 0x18004fc29
lea r14, [rsi + 8]
cmp r14, r15
je 0x18004fc29
mov rbp, rsi
nop dword [rax]
nop dword [rax + rax]
mov rax, qword [r14]
lea rdx, [rsp + 0x58]
mov r8, rbp
mov qword [rsp + 0x58], rax
mov rbx, r14
mov rdi, rbp
call fcn.180051df0
test al, al
je 0x18004fc14
nop
mov rax, qword [rdi]
mov qword [rbx], rax
sub rbx, 8
cmp rbx, rsi
je 0x18004fc14
sub rdi, 8
lea rdx, [rsp + 0x58]
mov r8, rdi
call fcn.180051df0
test al, al
jne 0x18004fbf0
mov rax, qword [rsp + 0x58]
add r14, 8
add rbp, 8
mov qword [rbx], rax
cmp r14, r15
jne 0x18004fbd0
mov rcx, qword [rsp + 0x70]
xor rcx, rsp
call fcn.18009bd90
add rsp, 0x90
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
mov rax, r15
sub rax, rsi
sar rax, 3
mov r12, rax
mov qword [rsp + 0x50], rax
sar r12, 1
test r12, r12
jle 0x18004fd70
lea r8, [rax - 1]
mov qword [rsp + 0x88], r13
mov rbx, r8
mov rdi, rax
sar rbx, 1
nop dword [rax + rax]
mov rcx, qword [rsi + r12*8 - 8]
dec r12
mov qword [rsp + 0x60], rcx
mov r13, r12
mov qword [rsp + 0x58], rcx
mov rdx, r12
cmp r12, rbx
jge 0x18004fce6
nop dword [rax]
lea rbp, [rdx + rdx]
lea r15, [rbp + 2]
lea r15, [rsi + r15*8]
lea r14, [r15 - 8]
mov rdx, r15
mov r8, r14
call fcn.180051df0
movzx edx, al
xor rdx, 1
inc rdx
add rdx, rbp
test al, al
cmove r14, r15
mov rax, qword [r14]
mov qword [rsi + r13*8], rax
mov r13, rdx
cmp rdx, rbx
jl 0x18004fca0
mov rcx, qword [rsp + 0x60]
lea r8, [rdi - 1]
cmp r13, rbx
jne 0x18004fcfd
test dil, 1
jne 0x18004fcfd
mov rax, qword [rsi + rdi*8 - 8]
mov qword [rsi + r13*8], rax
mov r13, r8
cmp r12, r13
jge 0x18004fd40
nop dword [rax]
nop word [rax + rax]
lea rbp, [r13 - 1]
sar rbp, 1
lea r8, [rsp + 0x58]
lea r14, [rsi + rbp*8]
mov rdx, r14
call fcn.180051df0
test al, al
je 0x18004fd3b
mov rax, qword [r14]
mov qword [rsi + r13*8], rax
mov r13, rbp
cmp r12, rbp
jl 0x18004fd10
mov rcx, qword [rsp + 0x58]
mov qword [rsi + r13*8], rcx
lea r8, [rdi - 1]
test r12, r12
jg 0x18004fc80
mov r13, qword [rsp + 0x88]
movzx ebx, byte [rsp + 0xf0]
movzx edi, byte [rsp + 0x40]
mov r15, qword [rsp + 0x48]
mov rax, qword [rsp + 0x50]
cmp rax, 2
jl 0x18004fc29
lea r14, [r15 - 8]
mov r15d, 8
sub r15, rsi
nop word [rax + rax]
mov rax, qword [r14]
lea r9, [rsp + 0x60]
mov qword [rsp + 0x60], rax
mov r8, r14
mov rax, qword [rsi]
sub r8, rsi
mov byte [rsp + 0x30], bl
xor edx, edx
sar r8, 3
mov rcx, rsi
mov byte [rsp + 0x28], bl
mov qword [r14], rax
mov byte [rsp + 0x20], dil
call fcn.180051f30
sub r14, 8
lea rax, [r15 + r14]
and rax, 0xfffffffffffffff8
cmp rax, 0x10
jge 0x18004fd90
jmp 0x18004fc29