Function at 0x1402163c0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r13
push r14
push r15
sub rsp, 0x90
mov rsi, r9
mov qword [rsp + 0x58], rdx
mov r9, r8
mov rbp, rcx
lea r8, [rcx + 0x40]
mov r15, rdx
mov r14, rdx
mov qword [rsp + 0x50], r8
mov edi, dword [rsi + 0xc]
mov ebx, 0xffffffff
mov eax, dword [rsi + 4]
sub eax, dword [rsi + 8]
mov dword [rsp + 8], eax
mov rax, qword [rcx + 8]
mov ecx, dword [rsi + 0x10]
mov qword [rsp + 0x20], rax
mov eax, 0x40
cmp edi, eax
mov dword [rsp + 0x18], edi
cmovb eax, edi
test ecx, ecx
je 0x140216447
cmp ecx, eax
ja 0x140216447
sub eax, ecx
mov r13d, 1
shl r13, cl
movzx ecx, al
dec r13
shl r13, cl
jmp 0x140216453
mov r13d, 1
shl r13, cl
dec r13
mov qword [rsp + 0x38], r13
cmp rdx, r9
jae 0x140216942
movabs rax, 0x27d4eb2f165667c5
mov qword [rsp + 0x88], r12
mov qword [rsp + 0x40], rax
lea r12, str.ww__
nop
xor r11d, r11d
mov rcx, r9
sub rcx, r15
mov qword [rsp], r11
xor r10d, r10d
cmp rcx, 3
jbe 0x140216569
mov edx, 3
nop
movzx eax, byte [r11 + r15]
inc r11
mov qword [rsp], r11
mov rax, qword [r12 + rax*8]
lea rbx, [rax + rbx*2]
mov qword [rsp + 0x10], rbx
test rbx, r13
jne 0x1402164cf
mov qword [r8 + r10*8], r11
inc r10d
cmp r10d, 0x40
je 0x140216745
movzx eax, byte [r11 + r15]
inc r11
mov qword [rsp], r11
mov rax, qword [r12 + rax*8]
lea rbx, [rax + rbx*2]
mov qword [rsp + 0x10], rbx
test rbx, r13
jne 0x1402164fe
mov qword [r8 + r10*8], r11
inc r10d
cmp r10d, 0x40
je 0x140216745
movzx eax, byte [r11 + r15]
inc r11
mov qword [rsp], r11
mov rax, qword [r12 + rax*8]
lea rbx, [rax + rbx*2]
mov qword [rsp + 0x10], rbx
test rbx, r13
jne 0x14021652d
mov qword [r8 + r10*8], r11
inc r10d
cmp r10d, 0x40
je 0x140216745
movzx eax, byte [r11 + r15]
add rdx, 4
inc r11
mov qword [rsp], r11
mov rax, qword [r12 + rax*8]
lea rbx, [rax + rbx*2]
mov qword [rsp + 0x10], rbx
test rbx, r13
jne 0x140216560
mov qword [r8 + r10*8], r11
inc r10d
cmp r10d, 0x40
je 0x140216745
cmp rdx, rcx
jb 0x1402164a0
cmp r11, rcx
jae 0x14021659b
nop
movzx eax, byte [r11 + r15]
inc r11
mov rax, qword [r12 + rax*8]
lea rbx, [rax + rbx*2]
test rbx, r13
jne 0x140216592
mov qword [r8 + r10*8], r11
inc r10d
cmp r10d, 0x40
je 0x140216597
cmp r11, rcx
jb 0x140216570
mov qword [rsp], r11
xor ecx, ecx
mov qword [rsp + 0x10], rbx
mov dword [rsp + 0xd8], ecx
test r10d, r10d
je 0x14021692e
mov r13d, dword [rsp + 8]
movabs r11, 0x9e3779b185ebca87
mov rbx, qword [rsp + 0x20]
mov r12d, edi
mov rdi, r8
mov qword [rsp + 0x30], r8
lea rdx, [r12 + r14]
mov qword [rsp + 0x48], rdx
nop word [rax + rax]
mov r14, qword [rdi]
lea rax, [r14 + r15]
cmp rax, rdx
jb 0x1402168e8
sub r14, r12
add r14, r15
mov r8, r14
cmp r12, 0x20
jb 0x140216753
lea rcx, [r14 - 0x1f]
movabs r11, 0xc2b2ae3d27d4eb4f
add rcx, r12
movabs rbp, 0x60ea27eeadc0b5d6
xor edi, edi
mov r9, r11
movabs rsi, 0x61c8864e7a143579
movabs rdx, 0x9e3779b185ebca87
nop word [rax + rax]
mov rax, qword [r8]
imul rax, r11
add rbp, rax
mov rax, qword [r8 + 8]
imul rax, r11
rol rbp, 0x1f
add r9, rax
mov rax, qword [r8 + 0x10]
imul rax, r11
imul rbp, rdx
add rdi, rax
rol r9, 0x1f
mov rax, qword [r8 + 0x18]
add r8, 0x20
imul rax, r11
imul r9, rdx
add rsi, rax
rol rdi, 0x1f
rol rsi, 0x1f
imul rsi, rdx
imul rdi, rdx
cmp r8, rcx
jb 0x140216640
mov rax, rsi
mov rcx, rdi
rol rax, 0x12
mov rdx, rbp
imul rdx, r11
movabs r11, 0x9e3779b185ebca87
rol rcx, 0xc
add rax, rcx
rol rdx, 0x1f
mov rcx, r9
rol rbp, 1
rol rcx, 7
add rax, rcx
movabs rcx, 0xc2b2ae3d27d4eb4f
add rax, rbp
mov rbp, qword [rsp + 0xd0]
imul rdi, rcx
imul rdx, r11
imul r9, rcx
imul rsi, rcx
xor rax, rdx
rol rdi, 0x1f
imul rax, r11
imul rdi, r11
movabs rdx, 0x7a1435883d4d519d
rol r9, 0x1f
sub rax, rdx
rol rsi, 0x1f
imul r9, r11
imul rsi, r11
xor rax, r9
imul rax, r11
sub rax, rdx
xor rax, rdi
mov rdi, qword [rsp + 0x30]
imul rax, r11
sub rax, rdx
xor rax, rsi
mov rsi, qword [rsp + 0xe8]
imul rax, r11
sub rax, rdx
jmp 0x14021675d
xor ecx, ecx
mov dword [rsp + 0xd8], ecx
jmp 0x1402165b2
movabs rax, 0x27d4eb2f165667c5
mov r9, r12
add rax, r12
and r9d, 0x1f
cmp r9, 8
jb 0x1402167db
mov edx, r9d
movabs rbx, 0x7a1435883d4d519d
shr rdx, 3
movabs r13, 0x9e3779b185ebca87
imul rcx, rdx, 0xfffffffffffffff8
movabs r11, 0xc2b2ae3d27d4eb4f
add r9, rcx
nop dword [rax]
mov rcx, qword [r8]
add r8, 8
imul rcx, r11
rol rcx, 0x1f
imul rcx, r13
xor rax, rcx
rol rax, 0x1b
imul rax, r13
sub rax, rbx
sub rdx, 1
jne 0x1402167a0
mov r13d, dword [rsp + 8]
movabs r11, 0x9e3779b185ebca87
mov rbx, qword [rsp + 0x20]
cmp r9, 4
jb 0x140216814
mov edx, dword [r8]
movabs rcx, 0x165667b19e3779f9
imul rdx, r11
add r8, 4
xor rax, rdx
movabs rdx, 0xc2b2ae3d27d4eb4f
rol rax, 0x17
imul rax, rdx
add rax, rcx
sub r9, 4
jmp 0x14021681e
movabs rdx, 0xc2b2ae3d27d4eb4f
test r9, r9
je 0x14021684f
nop dword [rax]
nop word [rax + rax]
movzx ecx, byte [r8]
lea r8, [r8 + 1]
imul rcx, qword [rsp + 0x40]
xor rax, rcx
rol rax, 0xb
imul rax, r11
sub r9, 1
jne 0x140216830
mov r9, qword [rbp + 0x38]
mov rcx, rax
movups xmm2, xmmword [rsi]
shr rcx, 0x21
sub r14d, ebx
xor rcx, rax
mov dword [rsp + 0x28], r14d
imul rcx, rdx
psrldq xmm2, 8
movabs rax, 0x165667b19e3779f9
mov edx, 1
mov r8, rcx
shr r8, 0x1d
xor r8, rcx
mov ecx, r13d
imul r8, rax
shl edx, cl
mov ecx, dword [rsi + 8]
dec edx
mov rax, r8
shr rax, 0x20
xor r8, rax
mov dword [rsp + 0x2c], eax
mov eax, r8d
and rdx, rax
mov rax, qword [rsp + 0x28]
add r9, rdx
shl rdx, cl
mov rcx, qword [rbp + 0x28]
movzx r8d, byte [r9]
add rdx, r8
inc r8b
mov qword [rcx + rdx*8], rax
mov eax, 1
mov rdx, qword [rsp + 0x48]
movd ecx, xmm2
shl al, cl
mov ecx, dword [rsp + 0xd8]
dec al
and al, r8b
mov byte [r9], al
inc ecx
add rdi, 8
mov dword [rsp + 0xd8], ecx
mov qword [rsp + 0x30], rdi
cmp ecx, r10d
jb 0x1402165e0
mov r11, qword [rsp]
lea r12, str.ww__
mov rbx, qword [rsp + 0x10]
mov r13, qword [rsp + 0x38]
mov r8, qword [rsp + 0x50]
mov r9, qword [rsp + 0xe0]
mov edi, dword [rsp + 0x18]
mov r14, qword [rsp + 0x58]
add r15, r11
cmp r15, r9
jb 0x140216480
mov r12, qword [rsp + 0x88]
add rsp, 0x90
pop r15
pop r14
pop r13
pop rdi
pop rsi
pop rbp
pop rbx
ret