Function at 0x180179290
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], rbp
push rsi
push r12
push r13
push r14
push r15
sub rsp, 0x60
mov rax, qword [rcx]
mov r13, r9
mov r14, r8
mov rbp, rdx
mov r15, rcx
call qword [rax + 0x20]
test al, al
jne 0x1801792c0
mov rcx, r15
call fcn.1800a53c0
mov r12, qword [r15 + 0x40]
mov rsi, qword [r15 + 0x48]
mov rax, qword [r15 + 0x70]
sub rsi, r12
mov qword [rsp + 0x98], rbx
mov qword [rsp + 0xa0], rdi
test rax, rax
je 0x180179342
mov rdi, rsi
lea r8, [rax + r12]
sub rdi, rax
mov rbx, r13
cmp rdi, r13
mov rdx, rbp
mov rcx, r14
cmovb rbx, rdi
mov r9, rbx
call fcn.1800f7260
add qword [r15 + 0x70], rbx
sub r13, rbx
add rbp, rbx
add r14, rbx
cmp rbx, rdi
jne 0x180179342
mov rdx, qword [r15 + 0x20]
mov rcx, r15
call fcn.180179860
mov rcx, qword [r15 + 8]
mov r9, qword [r15 + 0x20]
mov r8, qword [r15 + 0x40]
mov rdx, qword [r15 + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x48]
mov qword [r15 + 0x70], 0
cmp r13, rsi
jb 0x1801794e3
mov r11, rsi
mov rbx, rsi
and r11d, 0x1f
mov rdi, r12
sub rbx, r11
mov qword [rsp + 0x90], r11
sub rdi, rbp
test rbx, rbx
je 0x1801793f5
mov rdx, r12
mov rcx, r12
neg rdx
nop dword [rax + rax]
lea rax, [rdx + rcx]
movups xmm0, xmmword [rax + rbp]
movups xmm1, xmmword [rax + rbp + 0x10]
xor eax, eax
movups xmmword [rsp + 0x20], xmm0
movups xmm0, xmmword [rcx]
movups xmmword [rsp + 0x30], xmm1
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rsp + 0x40], xmm0
movups xmmword [rsp + 0x50], xmm1
nop word [rax + rax]
movdqu xmm0, xmmword [rsp + rax + 0x20]
movdqu xmm1, xmmword [rsp + rax + 0x40]
xorps xmm1, xmm0
movdqu xmmword [rsp + rax + 0x20], xmm1
add rax, 0x10
cmp rax, 0x20
jl 0x1801793b0
movups xmm0, xmmword [rsp + 0x20]
lea rax, [rdx + rcx]
add rcx, 0x20
movups xmm1, xmmword [rsp + 0x30]
movups xmmword [rax + r14], xmm0
movups xmmword [rax + r14 + 0x10], xmm1
lea rax, [rdx + rcx]
cmp rax, rbx
jne 0x180179380
mov r8, rbx
cmp rbx, rsi
je 0x1801794a4
cmp r11, 8
jb 0x180179475
lea rdx, [rsi - 1]
lea rax, [rsi - 1]
add rdx, r14
add rax, rbp
lea r9, [rbx + r14]
lea rcx, [rbx + rbp]
cmp r9, rax
ja 0x180179427
cmp rdx, rcx
jae 0x180179475
lea rax, [r12 - 1]
add rax, rsi
lea r10, [rbx + r12]
cmp r9, rax
ja 0x18017943d
cmp rdx, r10
jae 0x180179475
mov rax, r11
mov rdx, rsi
and eax, 7
sub rdx, rax
mov r9, r14
sub r9, rbp
nop
movq xmm1, qword [rdi + rcx]
add r8, 8
movq xmm0, qword [rcx]
lea rcx, [rcx + 8]
xorps xmm1, xmm0
movq qword [r9 + rcx - 8], xmm1
cmp r8, rdx
jne 0x180179450
cmp r8, rsi
je 0x1801794a4
mov r9, r14
lea rcx, [r8 + rbp]
sub r9, rbp
mov rdx, rsi
sub rdx, r8
nop word [rax + rax]
movzx eax, byte [rcx + rdi]
xor al, byte [rcx]
mov byte [rcx + r9], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x180179490
mov rdx, qword [r15 + 0x20]
mov rcx, r15
sub r13, rsi
add rbp, rsi
sub rdi, rsi
add r14, rsi
call fcn.180179860
mov rcx, qword [r15 + 8]
mov r9, qword [r15 + 0x20]
mov r8, qword [r15 + 0x40]
mov rdx, qword [r15 + 0x28]
mov rax, qword [rcx]
call qword [rax + 0x48]
mov r11, qword [rsp + 0x90]
cmp r13, rsi
jae 0x180179366
mov r9, r13
mov r8, r12
mov rdx, rbp
mov rcx, r14
call fcn.1800f7260
add qword [r15 + 0x70], r13
mov rdi, qword [rsp + 0xa0]
mov rbx, qword [rsp + 0x98]
mov rbp, qword [rsp + 0xa8]
add rsp, 0x60
pop r15
pop r14
pop r13
pop r12
pop rsi
ret