Function at 0x564913
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov qword [rsp + 0x38], r8
mov r14, qword [rcx + 0x10]
mov rax, r14
inc rax
je 0x564e9b
mov rbx, rdx
mov rsi, rcx
mov rbp, qword [rcx]
mov rcx, rbp
cmp rbp, 8
jb 0x564973
lea rcx, [rbp + 1]
shr rcx, 3
mov rdx, rcx
and rdx, 0xfffffffffffffff8
mov r8d, ecx
and r8d, 7
or rcx, 7
imul rcx, r8
xor r8, 7
imul r8, rdx
add rcx, r8
mov rdx, rcx
shr rdx, 1
cmp rax, rdx
jbe 0x5649b2
movabs r13, 0x8000000000000001
inc rcx
cmp rax, rcx
cmova rcx, rax
cmp rcx, 8
jae 0x564a3c
xor eax, eax
cmp rcx, 4
setae al
lea r8, [rax*4 + 4]
jmp 0x564a9e
mov qword [rsp + 0x20], r14
lea rdi, [rbp + 1]
mov r14, qword [rsi + 0x18]
xor edx, edx
movdqa xmm0, xmmword [0x005b84c0]
xor eax, eax
test dl, 1
je 0x5649e1
add rax, 0xf
jb 0x564a0b
cmp rax, rdi
jae 0x564a0b
lea rcx, [rax + 1]
jmp 0x5649f0
cmp rax, rdi
mov rcx, rax
adc rcx, 0
cmp rax, rdi
jae 0x564a0b
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [r14 + rax]
por xmm1, xmm0
movdqa xmmword [r14 + rax], xmm1
mov dl, 1
mov rax, rcx
jmp 0x5649cb
mov qword [rsp + 0x28], rsi
cmp rdi, 0x10
mov qword [rsp + 0x40], rdi
jae 0x564b2c
lea rcx, [r14 + 0x10]
mov rdx, r14
mov r8, rdi
call sub.msvcrt.dll_memmove
test rdi, rdi
jne 0x564b37
jmp 0x564cd7
movabs rax, 0x1ffffffffffffff8
or rax, 7
cmp rcx, rax
ja 0x564e9b
shl rcx, 3
movabs rdx, 0x2492492492492493
mov rax, rcx
mul rdx
sub rcx, rdx
shr rcx, 1
add rcx, rdx
shr rcx, 2
mov rax, rcx
xor rax, 0xfffffffffffffffe
add rcx, rcx
lea rdx, [r13 - 5]
and rdx, rcx
add rax, rdx
inc rax
bsr rcx, rax
not ecx
mov r8, 0xffffffffffffffff
shr r8, cl
inc r8
lea r15, [rsp + 0x48]
mov edx, 0xa8
mov rcx, r15
call fcn.004f262d
mov r15, qword [r15 + 0x18]
test r15, r15
je 0x564d0f
mov rdi, qword [rsp + 0x48]
mov r12, qword [rsp + 0x50]
lea r8, [rdi + 0x11]
mov rax, 0xffffffffffffffee
sub rax, rdi
mov rcx, rax
not rcx
and eax, 1
neg rax
and rax, rcx
and rax, 0xfffffffffffffffe
mov rcx, r8
or rcx, 1
and r8d, 1
neg r8
and r8, rcx
add r8, rax
mov rcx, r15
mov dl, 0xff
call sub.msvcrt.dll_memset
mov rcx, r12
sub rcx, r14
mov rax, rbp
inc rax
jne 0x564d19
mov r12, qword [rsi + 0x18]
mov qword [rsi], rdi
mov qword [rsi + 8], rcx
mov qword [rsi + 0x18], r15
jmp 0x564e5a
movdqu xmm0, xmmword [r14]
movdqu xmmword [r14 + rdi], xmm0
lea rax, [r14 - 0xa8]
mov qword [rsp + 0x30], rax
xor edi, edi
mov r15d, 0xa8
mov rsi, rdi
inc rdi
cmp byte [r14 + rsi], 0x80
jne 0x564cce
mov eax, 0xfe
sub eax, esi
and rax, r15
mov rcx, rdi
and rcx, 0xffffffffffffff57
imul rcx, rax
mov rax, rdi
and rax, r15
mov rdx, rdi
or rdx, r15
imul rdx, rax
add rdx, rcx
mov r12, r14
sub r12, rdx
mov rax, rsi
neg rax
imul r13, rax, 0xa8
add r13, qword [rsp + 0x30]
mov rcx, rbx
mov rdx, qword [rsp + 0x38]
mov r8, r13
call fcn.0056460f
mov rcx, rax
and rcx, rbp
movdqu xmm0, xmmword [r14 + rcx]
pmovmskb edx, xmm0
mov r8, rcx
test edx, edx
jne 0x564bf1
mov r9d, 0x10
mov r8, rcx
mov rdx, r9
and rdx, r8
xor r8, r9
lea r8, [r8 + rdx*2]
and r8, rbp
movdqu xmm0, xmmword [r14 + r8]
pmovmskb edx, xmm0
add r9, 0x10
test edx, edx
je 0x564bcf
bsf edx, edx
add rdx, r8
and rdx, rbp
cmp byte [r14 + rdx], 0
js 0x564c0d
movdqa xmm0, xmmword [r14]
pmovmskb edx, xmm0
bsf edx, edx
mov r8, rsi
sub r8, rcx
mov r9, rdx
sub r9, rcx
xor r9, r8
and r9, rbp
cmp r9, 0x10
jb 0x564c98
lea r8, [rdx + 1]
mov rcx, r8
and rcx, 0xffffffffffffff57
mov r9d, 0xfe
sub r9d, edx
and r9, r15
imul r9, rcx
mov rcx, r8
and rcx, r15
or r8, r15
imul r8, rcx
add r8, r9
mov rcx, r14
sub rcx, r8
mov r8b, byte [r14 + rdx]
shr rax, 0x39
lea r9, [rdx - 0x10]
and r9, rbp
mov byte [r14 + rdx], al
mov byte [r9 + r14 + 0x10], al
cmp r8b, 0xff
je 0x564cae
xor eax, eax
mov dl, byte [r12 + rax]
mov r8b, byte [rcx + rax]
mov byte [r12 + rax], r8b
mov byte [rcx + rax], dl
inc rax
cmp rax, 0xa8
jne 0x564c79
jmp 0x564b9f
shr rax, 0x39
lea rcx, [rsi - 0x10]
and rcx, rbp
mov byte [r14 + rsi], al
mov byte [rcx + r14 + 0x10], al
jmp 0x564cce
lea rax, [rsi - 0x10]
and rax, rbp
mov dl, 0xff
mov byte [r14 + rsi], dl
mov byte [rax + r14 + 0x10], dl
mov r8d, 0xa8
mov rdx, r12
call sub.msvcrt.dll_memcpy
cmp rsi, rbp
jne 0x564b4b
mov rcx, qword [rsp + 0x40]
mov rax, rcx
shr rax, 3
and rcx, 0xfffffffffffffff8
sub rcx, rax
cmp rbp, 8
movabs r13, 0x8000000000000001
cmovb rcx, rbp
sub rcx, qword [rsp + 0x20]
mov rax, qword [rsp + 0x28]
mov qword [rax + 8], rcx
jmp 0x564e87
mov r13, qword [rsp + 0x50]
jmp 0x564e87
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], rsi
mov r12, qword [rsi + 0x18]
lea rsi, [r12 - 0xa8]
xor r13d, r13d
mov r14d, 0xa8
cmp byte [r12 + r13], 0
js 0x564e21
mov rax, r13
neg rax
imul r8, rax, 0xa8
add r8, rsi
mov rcx, rbx
mov rdx, qword [rsp + 0x38]
call fcn.0056460f
mov rcx, rax
and rcx, rdi
movdqu xmm0, xmmword [r15 + rcx]
pmovmskb edx, xmm0
test edx, edx
jne 0x564da1
mov r8d, 0x10
mov rdx, r8
and rdx, rcx
xor rcx, r8
lea rcx, [rcx + rdx*2]
and rcx, rdi
movdqu xmm0, xmmword [r15 + rcx]
pmovmskb edx, xmm0
add r8, 0x10
test edx, edx
je 0x564d7f
bsf r8d, edx
add r8, rcx
and r8, rdi
cmp byte [r15 + r8], 0
js 0x564dbf
movdqa xmm0, xmmword [r15]
pmovmskb ecx, xmm0
bsf r8d, ecx
shr rax, 0x39
lea rcx, [r8 - 0x10]
and rcx, rdi
mov byte [r15 + r8], al
mov byte [rcx + r15 + 0x10], al
mov rax, r13
not rax
imul rdx, rax, 0xa8
add rdx, r12
lea rax, [r8 + 1]
mov ecx, 0xfe
sub ecx, r8d
and rcx, r14
mov r8, rax
and r8, 0xffffffffffffff57
imul r8, rcx
mov rcx, rax
and rcx, r14
or rax, r14
imul rax, rcx
add rax, r8
mov rcx, r15
sub rcx, rax
mov r8d, 0xa8
call sub.msvcrt.dll_memcpy
lea rax, [r13 + 1]
cmp r13, rbp
mov r13, rax
jne 0x564d3d
mov rax, qword [rsp + 0x28]
mov qword [rax], rdi
mov rcx, qword [rsp + 0x30]
mov qword [rax + 8], rcx
mov qword [rax + 0x18], r15
test rbp, rbp
movabs r13, 0x8000000000000001
mov rax, qword [rsp + 0x20]
je 0x564e87
mov ecx, 0xa8
mul rcx
add rax, 0xf
and rax, 0xfffffffffffffff0
add rbp, rax
cmp rbp, 0xffffffffffffffef
je 0x564e87
sub r12, rax
mov rcx, qword [0x00677420]
xor edx, edx
mov r8, r12
call fcn.005ab9d4
mov rax, r13
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
call fcn.00430a70
ud2