Function at 0x14005bfc0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
mov r13, r9
mov r12, r8
mov qword [rsp + 0x40], rdx
mov r14, rcx
mov rsi, qword [rsp + 0xb0]
cmp byte [rsi + 0x28], 0
jne 0x14005c053
mov rcx, qword [rsi + 0x10]
mov r15, qword [rsi + 0x20]
cmp rcx, qword [rsi + 0x18]
jne 0x14005c03f
lea rax, [rcx + rcx*2]
shr rax, 1
test rcx, rcx
mov edi, 0x20
cmovne rdi, rax
cmp rdi, rcx
jbe 0x14005c04d
mov rax, rdi
shr rax, 0x3d
jne 0x14005c04d
lea rdx, [rdi*8]
mov rcx, qword [rsi + 8]
call fcn.14008beb0
test rax, rax
je 0x14005c04d
mov qword [rsi + 8], rax
mov qword [rsi + 0x18], rdi
mov rcx, qword [rsi + 0x10]
jmp 0x14005c043
mov rax, qword [rsi + 8]
mov qword [rax + rcx*8], r15
inc qword [rsi + 0x10]
jmp 0x14005c053
mov word [rsi + 0x28], 0x101
mov rcx, rsi
call fcn.14004faf0
xor ebp, ebp
test rax, rax
je 0x14005c94e
mov r15, rax
lea r9, [r13 + 0x18]
mov r8, qword [r14 + 8]
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rsi
mov rcx, rax
mov rdx, r12
call fcn.140053ae0
test eax, eax
je 0x14005c94e
mov qword [rsp + 0x20], rsi
mov rcx, r15
mov rdx, r15
mov r8, r13
mov r9, r13
call fcn.140053170
test eax, eax
je 0x14005c94e
mov r8, qword [r14 + 0x10]
movsxd rax, dword [r15 + 8]
movsxd rdx, dword [r8 + 8]
cmp eax, edx
jge 0x14005c0d2
mov r9, qword [r8]
mov r11, rdx
sub r11, rax
cmp r11, 4
jae 0x14005c0d6
xor ecx, ecx
mov r10, rax
jmp 0x14005c140
xor ecx, ecx
jmp 0x14005c14c
mov rdi, r11
and rdi, 0xfffffffffffffffc
lea r10, [rdi + rax]
lea rcx, [r9 + rax*8]
add rcx, 0x10
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
nop word cs:[rax + rax]
movdqu xmm2, xmmword [rcx + rbx*8 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [rcx + rbx*8]
por xmm1, xmm2
add rbx, 4
cmp rdi, rbx
jne 0x14005c100
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq rcx, xmm0
cmp r11, rdi
je 0x14005c14c
nop word cs:[rax + rax]
or rcx, qword [r9 + r10*8]
inc r10
cmp rdx, r10
jne 0x14005c140
cmp edx, eax
jge 0x14005c1dc
mov r9, qword [r15]
mov r11, rax
sub r11, rdx
cmp r11, 4
jae 0x14005c168
mov r10, rdx
jmp 0x14005c1d0
mov rdi, r11
and rdi, 0xfffffffffffffffc
lea r10, [rdi + rdx]
movq xmm1, rcx
lea rcx, [r9 + rdx*8]
add rcx, 0x10
pxor xmm0, xmm0
xor ebx, ebx
nop word cs:[rax + rax]
movdqu xmm2, xmmword [rcx + rbx*8 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [rcx + rbx*8]
por xmm0, xmm2
add rbx, 4
cmp rdi, rbx
jne 0x14005c190
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movq rcx, xmm1
cmp r11, rdi
je 0x14005c1dc
nop word cs:[rax + rax]
or rcx, qword [r9 + r10*8]
inc r10
cmp rax, r10
jne 0x14005c1d0
cmp eax, edx
cmovl edx, eax
test edx, edx
jle 0x14005c283
mov r9, qword [r15]
mov r10, qword [r8]
mov r11d, edx
cmp edx, 4
jae 0x14005c1fb
xor edx, edx
jmp 0x14005c270
mov edx, r11d
and edx, 0x7ffffffc
movq xmm0, rcx
mov ecx, r11d
shr ecx, 2
and ecx, 0x1fffffff
shl rcx, 5
pxor xmm1, xmm1
xor edi, edi
nop
movdqu xmm2, xmmword [r9 + rdi]
movdqu xmm3, xmmword [r9 + rdi + 0x10]
movdqu xmm4, xmmword [r10 + rdi]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm2, xmmword [r10 + rdi + 0x10]
pxor xmm2, xmm3
por xmm1, xmm2
add rdi, 0x20
cmp rcx, rdi
jne 0x14005c220
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq rcx, xmm0
cmp rdx, r11
je 0x14005c283
nop word [rax + rax]
mov rsi, qword [r10 + rdx*8]
xor rsi, qword [r9 + rdx*8]
or rcx, rsi
inc rdx
cmp r11, rdx
jne 0x14005c270
mov edx, dword [r15 + 0x10]
mov r11d, dword [r8 + 0x10]
xor r11d, edx
mov r8, qword [r14 + 0x18]
movsxd r9, dword [r8 + 8]
cmp eax, r9d
mov qword [rsp + 0x38], r13
jge 0x14005c2b7
mov r12, qword [r8]
mov rbp, r9
sub rbp, rax
cmp rbp, 4
jae 0x14005c2bc
xor r10d, r10d
mov r13, rax
jmp 0x14005c320
xor r10d, r10d
jmp 0x14005c32c
mov rdi, rbp
and rdi, 0xfffffffffffffffc
lea r13, [rdi + rax]
lea r10, [r12 + rax*8]
add r10, 0x10
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
nop dword [rax]
movdqu xmm2, xmmword [r10 + rbx*8 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [r10 + rbx*8]
por xmm1, xmm2
add rbx, 4
cmp rdi, rbx
jne 0x14005c2e0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r10, xmm0
cmp rbp, rdi
je 0x14005c32c
nop word cs:[rax + rax]
or r10, qword [r12 + r13*8]
inc r13
cmp r9, r13
jne 0x14005c320
movsxd r11, r11d
cmp r9d, eax
jge 0x14005c3bc
mov r12, qword [r15]
mov rbp, rax
sub rbp, r9
cmp rbp, 4
jae 0x14005c34c
mov r13, r9
jmp 0x14005c3b0
mov rdi, rbp
and rdi, 0xfffffffffffffffc
lea r13, [rdi + r9]
movq xmm1, r10
lea r10, [r12 + r9*8]
add r10, 0x10
pxor xmm0, xmm0
xor ebx, ebx
nop word [rax + rax]
movdqu xmm2, xmmword [r10 + rbx*8 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [r10 + rbx*8]
por xmm0, xmm2
add rbx, 4
cmp rdi, rbx
jne 0x14005c370
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movq r10, xmm1
cmp rbp, rdi
je 0x14005c3bc
nop word cs:[rax + rax]
or r10, qword [r12 + r13*8]
inc r13
cmp rax, r13
jne 0x14005c3b0
or rcx, r11
cmp eax, r9d
cmovl r9d, eax
test r9d, r9d
jle 0x14005c3e6
mov rax, qword [r15]
mov r11, qword [r8]
mov r12d, r9d
cmp r9d, 4
mov r9, qword [rsp + 0x38]
jae 0x14005c3f0
xor ebx, ebx
jmp 0x14005c470
mov r9, qword [rsp + 0x38]
jmp 0x14005c483
mov ebx, r12d
and ebx, 0x7ffffffc
movq xmm0, r10
mov r10d, r12d
shr r10d, 2
and r10d, 0x1fffffff
shl r10, 5
pxor xmm1, xmm1
xor edi, edi
nop word cs:[rax + rax]
movdqu xmm2, xmmword [rax + rdi]
movdqu xmm3, xmmword [rax + rdi + 0x10]
movdqu xmm4, xmmword [r11 + rdi]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm2, xmmword [r11 + rdi + 0x10]
pxor xmm2, xmm3
por xmm1, xmm2
add rdi, 0x20
cmp r10, rdi
jne 0x14005c420
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r10, xmm0
cmp rbx, r12
je 0x14005c483
nop dword [rax + rax]
mov rsi, qword [r11 + rbx*8]
xor rsi, qword [rax + rbx*8]
or r10, rsi
inc rbx
cmp r12, rbx
jne 0x14005c470
test rcx, rcx
sete al
xor edx, dword [r8 + 0x10]
movsxd rcx, edx
or rcx, r10
sete cl
or cl, al
movzx r12d, cl
neg r12
cmp dword [r14 + 0x20], 2
jl 0x14005c935
mov ebp, 1
mov rsi, qword [rsp + 0xb0]
nop word [rax + rax]
cmp dword [r14 + 0x24], ebp
jne 0x14005c4d0
cmp r12, 0xffffffffffffffff
jne 0x14005c93d
mov qword [rsp + 0x20], rsi
mov rcx, r15
mov rdx, r15
mov r8, r15
call fcn.140053170
test eax, eax
je 0x14005c980
mov rcx, qword [r14 + 0x18]
movsxd rax, dword [r15 + 8]
movsxd rdx, dword [rcx + 8]
cmp eax, edx
jge 0x14005c520
mov r9, qword [rcx]
mov r11, rdx
sub r11, rax
cmp r11, 4
jae 0x14005c530
mov r10, rax
xor r8d, r8d
jmp 0x14005c590
xor r8d, r8d
jmp 0x14005c59c
mov rdi, r11
and rdi, 0xfffffffffffffffc
lea r10, [rdi + rax]
lea r8, [r9 + rax*8]
add r8, 0x10
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
nop dword [rax]
movdqu xmm2, xmmword [r8 + rbx*8 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [r8 + rbx*8]
por xmm1, xmm2
add rbx, 4
cmp rdi, rbx
jne 0x14005c550
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r8, xmm0
cmp r11, rdi
je 0x14005c59c
nop word cs:[rax + rax]
or r8, qword [r9 + r10*8]
inc r10
cmp rdx, r10
jne 0x14005c590
cmp edx, eax
jge 0x14005c62c
mov r9, qword [r15]
mov r11, rax
sub r11, rdx
cmp r11, 4
jae 0x14005c5c0
mov r10, rdx
jmp 0x14005c620
mov rdi, r11
and rdi, 0xfffffffffffffffc
lea r10, [rdi + rdx]
movq xmm1, r8
lea r8, [r9 + rdx*8]
add r8, 0x10
pxor xmm0, xmm0
xor ebx, ebx
nop
movdqu xmm2, xmmword [r8 + rbx*8 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [r8 + rbx*8]
por xmm0, xmm2
add rbx, 4
cmp rdi, rbx
jne 0x14005c5e0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movq r8, xmm1
cmp r11, rdi
je 0x14005c62c
nop word cs:[rax + rax]
or r8, qword [r9 + r10*8]
inc r10
cmp rax, r10
jne 0x14005c620
cmp eax, edx
cmovl edx, eax
test edx, edx
jle 0x14005c6e3
mov r9, qword [r15]
mov r10, qword [rcx]
mov r11d, edx
cmp edx, 4
jae 0x14005c650
xor edx, edx
jmp 0x14005c6d0
mov edx, r11d
and edx, 0x7ffffffc
movq xmm0, r8
mov r8d, r11d
shr r8d, 2
and r8d, 0x1fffffff
shl r8, 5
pxor xmm1, xmm1
xor edi, edi
nop word cs:[rax + rax]
movdqu xmm2, xmmword [r9 + rdi]
movdqu xmm3, xmmword [r9 + rdi + 0x10]
movdqu xmm4, xmmword [r10 + rdi]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm2, xmmword [r10 + rdi + 0x10]
pxor xmm2, xmm3
por xmm1, xmm2
add rdi, 0x20
cmp r8, rdi
jne 0x14005c680
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r8, xmm0
cmp rdx, r11
je 0x14005c6e3
nop word [rax + rax]
mov rsi, qword [r10 + rdx*8]
xor rsi, qword [r9 + rdx*8]
or r8, rsi
inc rdx
cmp r11, rdx
jne 0x14005c6d0
mov edx, dword [r15 + 0x10]
mov ecx, dword [rcx + 0x10]
xor ecx, edx
movsxd rcx, ecx
or rcx, r8
mov rcx, r12
mov r8, 0xffffffffffffffff
cmove rcx, r8
mov r8, qword [r14 + 0x10]
movsxd r9, dword [r8 + 8]
cmp eax, r9d
jge 0x14005c730
mov r11, qword [r8]
mov rdi, r9
sub rdi, rax
cmp rdi, 4
jae 0x14005c740
mov r13, rax
xor r10d, r10d
jmp 0x14005c7a0
xor r10d, r10d
jmp 0x14005c7ac
mov rbx, rdi
and rbx, 0xfffffffffffffffc
lea r13, [rbx + rax]
lea r10, [r11 + rax*8]
add r10, 0x10
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop dword [rax]
movdqu xmm2, xmmword [r10 + rsi*8 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [r10 + rsi*8]
por xmm1, xmm2
add rsi, 4
cmp rbx, rsi
jne 0x14005c760
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r10, xmm0
cmp rdi, rbx
je 0x14005c7ac
nop word cs:[rax + rax]
or r10, qword [r11 + r13*8]
inc r13
cmp r9, r13
jne 0x14005c7a0
cmp r9d, eax
jge 0x14005c83c
mov r11, qword [r15]
mov rbx, rax
sub rbx, r9
cmp rbx, 4
jae 0x14005c7d0
mov r13, r9
jmp 0x14005c830
mov rdi, rbx
and rdi, 0xfffffffffffffffc
lea r13, [rdi + r9]
movq xmm1, r10
lea r10, [r11 + r9*8]
add r10, 0x10
pxor xmm0, xmm0
xor esi, esi
nop
movdqu xmm2, xmmword [r10 + rsi*8 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [r10 + rsi*8]
por xmm0, xmm2
add rsi, 4
cmp rdi, rsi
jne 0x14005c7f0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
movq r10, xmm1
cmp rbx, rdi
je 0x14005c83c
nop word cs:[rax + rax]
or r10, qword [r11 + r13*8]
inc r13
cmp rax, r13
jne 0x14005c830
cmp eax, r9d
cmovl r9d, eax
test r9d, r9d
jle 0x14005c903
mov rax, qword [r15]
mov r11, qword [r8]
mov r13d, r9d
cmp r9d, 4
jae 0x14005c870
xor r9d, r9d
jmp 0x14005c8f0
mov r9d, r13d
and r9d, 0x7ffffffc
movq xmm0, r10
mov r10d, r13d
shr r10d, 2
and r10d, 0x1fffffff
shl r10, 5
pxor xmm1, xmm1
xor edi, edi
nop word [rax + rax]
movdqu xmm2, xmmword [rax + rdi]
movdqu xmm3, xmmword [rax + rdi + 0x10]
movdqu xmm4, xmmword [r11 + rdi]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm2, xmmword [r11 + rdi + 0x10]
pxor xmm2, xmm3
por xmm1, xmm2
add rdi, 0x20
cmp r10, rdi
jne 0x14005c8a0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
movq r10, xmm0
cmp r9, r13
je 0x14005c903
nop dword [rax + rax]
mov rsi, qword [r11 + r9*8]
xor rsi, qword [rax + r9*8]
or r10, rsi
inc r9
cmp r13, r9
jne 0x14005c8f0
xor edx, dword [r8 + 0x10]
movsxd rax, edx
or rax, r10
mov edx, ecx
and edx, 1
or rdx, rax
mov rsi, qword [rsp + 0xb0]
mov r9, qword [rsp + 0x38]
je 0x14005c93d
inc ebp
mov r12, rcx
cmp ebp, dword [r14 + 0x20]
jl 0x14005c4c0
jmp 0x14005c93d
mov rsi, qword [rsp + 0xb0]
and r12d, 1
mov rax, qword [rsp + 0x40]
mov dword [rax], r12d
mov ebp, 1
cmp byte [rsi + 0x28], 0
jne 0x14005c96d
mov rax, qword [rsi + 8]
mov rcx, qword [rsi + 0x10]
lea rdx, [rcx - 1]
mov qword [rsi + 0x10], rdx
mov rax, qword [rax + rcx*8 - 8]
mov qword [rsi + 0x20], rax
mov eax, ebp
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
xor ebp, ebp
cmp byte [rsi + 0x28], 0
jne 0x14005c96d
jmp 0x14005c954