Function at 0x1400643e0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x98
lea rbp, [rsp + 0x80]
and rsp, 0xffffffffffffffe0
mov ebx, dword [rbp + 0x98]
mov eax, 0xffffff53
cmp ebx, 0xc
jb 0x1400648a2
mov r13, rcx
mov ecx, dword [rbp + 0x88]
test ecx, ecx
je 0x1400648a2
test r13, r13
je 0x1400648a2
cmp ebx, 0x10
ja 0x1400648a2
mov r15d, r9d
mov r14, r8
mov rdi, rdx
mov r9, qword [rbp + 0x80]
cmp ecx, 0xc
jne 0x140064465
mov eax, dword [r9 + 8]
mov dword [rsp + 0x68], eax
mov rax, qword [r9]
mov qword [rsp + 0x60], rax
mov dword [rsp + 0x6c], 0x1000000
jmp 0x140064488
lea rax, [rsp + 0x60]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], ecx
mov dword [rsp + 0x30], 0x10
mov rcx, r13
xor edx, edx
xor r8d, r8d
call fcn.1400636e0
mov rax, qword [rsp + 0x60]
mov qword [rsp + 0x80], rax
mov eax, dword [rsp + 0x68]
mov dword [rsp + 0x88], eax
mov eax, dword [rsp + 0x6c]
mov dword [rsp + 0x8c], eax
cmp r15d, 0x10
mov dword [rsp + 0x5c], r15d
jae 0x1400644be
mov r12, rdi
jmp 0x14006468b
mov qword [rsp + 0x78], r13
mov ebx, r15d
shr ebx, 4
movzx r13d, byte [rsp + 0x6f]
movzx esi, byte [rsp + 0x6e]
movzx eax, byte [rsp + 0x6c]
mov byte [rsp + 0x3f], al
movzx r12d, byte [rsp + 0x6d]
inc r13b
xor r15d, r15d
jmp 0x14006451b
mov rax, qword [r14 + r15]
xor rax, qword [rsp + 0x40]
mov qword [rdi + r15], rax
mov rax, qword [r14 + r15 + 8]
xor rax, qword [rsp + 0x48]
mov qword [rdi + r15 + 8], rax
inc r13b
add r15, 0x10
test ebx, ebx
je 0x140064674
mov byte [rsp + 0x6f], r13b
test r13b, r13b
jne 0x140064550
inc sil
mov byte [rsp + 0x6e], sil
jne 0x140064550
inc r12b
mov byte [rsp + 0x6d], r12b
jne 0x14006454b
movzx eax, byte [rsp + 0x3f]
inc al
mov byte [rsp + 0x3f], al
mov byte [rsp + 0x6c], al
xor r12d, r12d
xor esi, esi
nop dword [rax]
mov rcx, qword [rsp + 0x78]
lea rdx, [rsp + 0x60]
lea r8, [rsp + 0x40]
call fcn.140060a40
test eax, eax
jne 0x1400648a2
dec ebx
lea eax, [rdi + r15]
lea ecx, [r14 + r15]
or ecx, eax
test cl, 7
je 0x1400644f0
movzx eax, byte [r14 + r15]
xor al, byte [rsp + 0x40]
mov byte [rdi + r15], al
movzx eax, byte [r14 + r15 + 1]
xor al, byte [rsp + 0x41]
mov byte [rdi + r15 + 1], al
movzx eax, byte [r14 + r15 + 2]
xor al, byte [rsp + 0x42]
mov byte [rdi + r15 + 2], al
movzx eax, byte [r14 + r15 + 3]
xor al, byte [rsp + 0x43]
mov byte [rdi + r15 + 3], al
movzx eax, byte [r14 + r15 + 4]
xor al, byte [rsp + 0x44]
mov byte [rdi + r15 + 4], al
movzx eax, byte [r14 + r15 + 5]
xor al, byte [rsp + 0x45]
mov byte [rdi + r15 + 5], al
movzx eax, byte [r14 + r15 + 6]
xor al, byte [rsp + 0x46]
mov byte [rdi + r15 + 6], al
movzx eax, byte [r14 + r15 + 7]
xor al, byte [rsp + 0x47]
mov byte [rdi + r15 + 7], al
movzx eax, byte [r14 + r15 + 8]
xor al, byte [rsp + 0x48]
mov byte [rdi + r15 + 8], al
movzx eax, byte [r14 + r15 + 9]
xor al, byte [rsp + 0x49]
mov byte [rdi + r15 + 9], al
movzx eax, byte [r14 + r15 + 0xa]
xor al, byte [rsp + 0x4a]
mov byte [rdi + r15 + 0xa], al
movzx eax, byte [r14 + r15 + 0xb]
xor al, byte [rsp + 0x4b]
mov byte [rdi + r15 + 0xb], al
movzx eax, byte [r14 + r15 + 0xc]
xor al, byte [rsp + 0x4c]
mov byte [rdi + r15 + 0xc], al
movzx eax, byte [r14 + r15 + 0xd]
xor al, byte [rsp + 0x4d]
mov byte [rdi + r15 + 0xd], al
movzx eax, byte [r14 + r15 + 0xe]
xor al, byte [rsp + 0x4e]
mov byte [rdi + r15 + 0xe], al
movzx eax, byte [r14 + r15 + 0xf]
xor al, byte [rsp + 0x4f]
mov byte [rdi + r15 + 0xf], al
jmp 0x14006450c
lea r12, [rdi + r15]
add r14, r15
mov ebx, dword [rbp + 0x98]
mov r13, qword [rsp + 0x78]
mov r15d, dword [rsp + 0x5c]
mov esi, r15d
and esi, 0xf
je 0x140064854
inc byte [rsp + 0x6f]
jne 0x1400646ad
inc byte [rsp + 0x6e]
jne 0x1400646ad
inc byte [rsp + 0x6d]
jne 0x1400646ad
inc byte [rsp + 0x6c]
lea rdx, [rsp + 0x60]
lea r15, [rsp + 0x40]
mov rcx, r13
mov r8, r15
call fcn.140060a40
test eax, eax
jne 0x1400648a2
mov eax, r14d
or eax, r12d
or eax, esi
test al, 7
je 0x1400646e1
mov eax, esi
cmp esi, 8
jae 0x140064709
xor ecx, ecx
jmp 0x140064751
cmp esi, 8
mov r15d, dword [rsp + 0x5c]
jb 0x140064854
mov eax, esi
shr eax, 3
lea rcx, [rax - 1]
cmp rcx, 3
jae 0x1400647d5
xor ecx, ecx
jmp 0x140064820
mov rdx, r12
sub rdx, r15
xor ecx, ecx
cmp rdx, 0x20
jb 0x140064751
mov rdx, r12
sub rdx, r14
cmp rdx, 0x20
mov r15d, dword [rsp + 0x5c]
jb 0x140064756
mov ecx, eax
and ecx, 0xfffffff8
xor edx, edx
nop
mov r8, qword [r14 + rdx]
xor r8, qword [rsp + rdx + 0x40]
mov qword [r12 + rdx], r8
add rdx, 8
cmp rcx, rdx
jne 0x140064730
cmp rcx, rax
je 0x140064854
jmp 0x140064756
mov r15d, dword [rsp + 0x5c]
mov rdx, rcx
not rdx
add rdx, rax
mov r8, rax
and r8, 3
je 0x140064786
nop dword [rax + rax]
movzx r9d, byte [r14 + rcx]
xor r9b, byte [rsp + rcx + 0x40]
mov byte [r12 + rcx], r9b
inc rcx
dec r8
jne 0x140064770
cmp rdx, 3
jb 0x140064854
movzx edx, byte [r14 + rcx]
xor dl, byte [rsp + rcx + 0x40]
mov byte [r12 + rcx], dl
movzx edx, byte [r14 + rcx + 1]
xor dl, byte [rsp + rcx + 0x41]
mov byte [r12 + rcx + 1], dl
movzx edx, byte [r14 + rcx + 2]
xor dl, byte [rsp + rcx + 0x42]
mov byte [r12 + rcx + 2], dl
movzx edx, byte [r14 + rcx + 3]
xor dl, byte [rsp + rcx + 0x43]
mov byte [r12 + rcx + 3], dl
add rcx, 4
cmp rax, rcx
jne 0x140064790
jmp 0x140064854
xor ecx, ecx
nop word [rax + rax]
mov rdx, qword [r14 + rcx*8]
xor rdx, qword [rsp + rcx*8 + 0x40]
mov qword [r12 + rcx*8], rdx
mov rdx, qword [r14 + rcx*8 + 8]
xor rdx, qword [rsp + rcx*8 + 0x48]
mov qword [r12 + rcx*8 + 8], rdx
mov rdx, qword [r14 + rcx*8 + 0x10]
xor rdx, qword [rsp + rcx*8 + 0x50]
mov qword [r12 + rcx*8 + 0x10], rdx
mov rdx, qword [r14 + rcx*8 + 0x18]
xor rdx, qword [rsp + rcx*8 + 0x58]
mov qword [r12 + rcx*8 + 0x18], rdx
add rcx, 4
jne 0x1400647e0
cmp esi, 8
jb 0x140064854
lea rdx, [r12 + rcx*8]
lea r8, [r14 + rcx*8]
lea rcx, [rsp + rcx*8]
add rcx, 0x40
xor r9d, r9d
nop dword [rax + rax]
mov r10, qword [r8 + r9*8]
xor r10, qword [rcx + r9*8]
mov qword [rdx + r9*8], r10
inc r9
cmp rax, r9
jne 0x140064840
mov r14, qword [rbp + 0x90]
xor eax, eax
test r14, r14
je 0x1400648a2
mov r8d, dword [rbp + 0xa8]
mov rdx, qword [rbp + 0xa0]
mov dword [rsp + 0x30], ebx
mov qword [rsp + 0x28], r14
mov dword [rsp + 0x20], r15d
mov rcx, r13
mov r9, rdi
call fcn.1400636e0
lea rdx, [rsp + 0x80]
lea r8, [rsp + 0x40]
mov rcx, r13
call fcn.140060a40
test eax, eax
je 0x1400648b3
lea rsp, [rbp + 0x18]
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov ecx, ebx
mov eax, r14d
or eax, ebx
test al, 7
je 0x1400648d3
mov eax, 0
test ebx, ebx
je 0x1400648a2
cmp ebx, 8
jae 0x1400648f3
xor edx, edx
jmp 0x140064970
mov eax, 0
cmp ebx, 8
jb 0x1400648a2
mov edx, ebx
shr edx, 3
cmp ebx, 0x20
jae 0x140064988
xor r8d, r8d
jmp 0x1400649d0
cmp ebx, 0x20
jae 0x1400648fc
xor edx, edx
jmp 0x14006493c
mov edx, ecx
and edx, 0xffffffe0
xor eax, eax
movups xmm0, xmmword [r14 + rax]
movups xmm1, xmmword [r14 + rax + 0x10]
xorps xmm0, xmmword [rsp + rax + 0x40]
xorps xmm1, xmmword [rsp + rax + 0x50]
movups xmmword [r14 + rax], xmm0
movups xmmword [r14 + rax + 0x10], xmm1
add rax, 0x20
cmp rdx, rax
jne 0x140064903
xor eax, eax
cmp rdx, rcx
je 0x1400648a2
test cl, 0x18
je 0x140064970
mov rax, rdx
mov edx, ecx
and edx, 0xfffffff8
nop word cs:[rax + rax]
mov r8, qword [rsp + rax + 0x40]
xor qword [r14 + rax], r8
add rax, 8
cmp rdx, rax
jne 0x140064950
xor eax, eax
cmp rdx, rcx
je 0x1400648a2
nop dword [rax]
movzx eax, byte [rsp + rdx + 0x40]
xor byte [r14 + rdx], al
inc rdx
xor eax, eax
cmp rcx, rdx
jne 0x140064970
jmp 0x1400648a2
mov r8d, edx
and r8d, 0xfffffffc
and ecx, 0xffffffe0
xor eax, eax
movups xmm0, xmmword [r14 + rax]
movups xmm1, xmmword [r14 + rax + 0x10]
xorps xmm0, xmmword [rsp + rax + 0x40]
xorps xmm1, xmmword [rsp + rax + 0x50]
movups xmmword [r14 + rax], xmm0
movups xmmword [r14 + rax + 0x10], xmm1
add rax, 0x20
cmp rcx, rax
jne 0x140064994
xor eax, eax
cmp r8, rdx
je 0x1400648a2
nop dword [rax + rax]
mov rax, qword [rsp + r8*8 + 0x40]
xor qword [r14 + r8*8], rax
inc r8
xor eax, eax
cmp rdx, r8
jne 0x1400649d0
jmp 0x1400648a2