Function at 0x180057560
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 [0x1800f9280]
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 0x180057653
movzx ebx, byte [rsp + 0xf0]
test rbp, rbp
jle 0x1800576e8
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.180058f10
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 0x18005762a
mov rdx, r12
mov rcx, rsi
call fcn.180057560
mov rsi, r14
jmp 0x18005763d
mov rdx, r15
mov rcx, r14
call fcn.180057560
mov r15, r12
mov qword [rsp + 0x48], r12
mov rax, r15
sub rax, rsi
and rax, 0xfffffffffffffff8
cmp rax, 0x100
jg 0x1800575b6
cmp rsi, r15
je 0x1800576c9
lea r14, [rsi + 8]
cmp r14, r15
je 0x1800576c9
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.180059a40
test al, al
je 0x1800576b4
nop
mov rax, qword [rdi]
mov qword [rbx], rax
sub rbx, 8
cmp rbx, rsi
je 0x1800576b4
sub rdi, 8
lea rdx, [rsp + 0x58]
mov r8, rdi
call fcn.180059a40
test al, al
jne 0x180057690
mov rax, qword [rsp + 0x58]
add r14, 8
add rbp, 8
mov qword [rbx], rax
cmp r14, r15
jne 0x180057670
mov rcx, qword [rsp + 0x70]
xor rcx, rsp
call fcn.1800a3c90
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 0x180057810
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 0x180057786
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.180059a40
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 0x180057740
mov rcx, qword [rsp + 0x60]
lea r8, [rdi - 1]
cmp r13, rbx
jne 0x18005779d
test dil, 1
jne 0x18005779d
mov rax, qword [rsi + rdi*8 - 8]
mov qword [rsi + r13*8], rax
mov r13, r8
cmp r12, r13
jge 0x1800577e0
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.180059a40
test al, al
je 0x1800577db
mov rax, qword [r14]
mov qword [rsi + r13*8], rax
mov r13, rbp
cmp r12, rbp
jl 0x1800577b0
mov rcx, qword [rsp + 0x58]
mov qword [rsi + r13*8], rcx
lea r8, [rdi - 1]
test r12, r12
jg 0x180057720
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 0x1800576c9
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.180059b80
sub r14, 8
lea rax, [r15 + r14]
and rax, 0xfffffffffffffff8
cmp rax, 0x10
jge 0x180057830
jmp 0x1800576c9