Function at 0x445470
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x78
mov eax, 0xc2b2ae3d
mov qword [rsp + 0x30], rax
movabs rax, 0x9e3779b185ebca87
lea r14, [r9 - 0x40]
mov qword [rsp + 0x38], rax
movabs rax, 0xc2b2ae3d27d4eb4f
mov r12, rdx
mov qword [rsp + 0x40], rax
movabs rax, 0x165667b19e3779f9
shr r14, 3
mov qword [rsp + 0x48], rax
movabs rax, 0x85ebca77c2b2ae63
mov r13, r14
mov qword [rsp + 0x50], rax
mov eax, 0x85ebca77
shl r13, 6
mov qword [rsp + 0x58], rax
movabs rax, 0x27d4eb2f165667c5
lea r10, [rsp + 0x30]
mov qword [rsp + 0x60], rax
mov eax, 0x9e3779b1
lea rdi, [r8 + r9]
mov qword [rsp + 0x68], rax
lea rax, [rdx - 1]
xor edx, edx
div r13
test rax, rax
mov qword [rsp + 0x28], rdx
je 0x4446a4
lea r15, [rcx + 0x180]
lea rsi, [r8 + r14*8]
lea r10, [rsp + 0x30]
lea rdi, [r8 + r9]
movdqa xmm3, xmmword [0x00543c40]
xor ebp, ebp
nop dword [rax]
test r14, r14
je 0x444650
mov r9, r8
mov rbx, r15
nop dword [rax + rax]
lea r11, [rbx - 0x180]
xor edx, edx
prefetcht0 byte [rbx]
movdqu xmm0, xmmword [r11 + rdx]
movdqu xmm1, xmmword [r9 + rdx]
pxor xmm1, xmm0
pshufd xmm0, xmm0, 0x4e
pshufd xmm2, xmm1, 0x31
pmuludq xmm1, xmm2
paddq xmm1, xmm0
paddq xmm1, xmmword [r10 + rdx]
movaps xmmword [r10 + rdx], xmm1
add rdx, 0x10
cmp rdx, 0x40
jne 0x44460c
add r9, 8
add rbx, 0x40
cmp rsi, r9
jne 0x444600
xor edx, edx
movdqa xmm1, xmmword [r10 + rdx]
movdqu xmm0, xmmword [rdi + rdx - 0x40]
movdqa xmm2, xmm1
pxor xmm0, xmm1
psrlq xmm2, 0x2f
pxor xmm0, xmm2
pshufd xmm1, xmm0, 0x31
pmuludq xmm0, xmm3
pmuludq xmm1, xmm3
psllq xmm1, 0x20
paddq xmm0, xmm1
movaps xmmword [r10 + rdx], xmm0
add rdx, 0x10
cmp rdx, 0x40
jne 0x444652
add rbp, 1
add r15, r13
cmp rax, rbp
jne 0x4445f0
mov r9, qword [rsp + 0x28]
imul rax, r13
shr r9, 6
test r9, r9
je 0x444715
lea r11, [rcx + rax + 0x180]
lea rbx, [r8 + r9*8]
mov rdx, r8
lea r9, [r11 - 0x180]
xor eax, eax
prefetcht0 byte [r11]
movdqu xmm0, xmmword [r9 + rax]
movdqu xmm1, xmmword [rdx + rax]
pxor xmm1, xmm0
pshufd xmm0, xmm0, 0x4e
pshufd xmm2, xmm1, 0x31
pmuludq xmm1, xmm2
paddq xmm1, xmm0
paddq xmm1, xmmword [r10 + rax]
movaps xmmword [r10 + rax], xmm1
add rax, 0x10
cmp rax, 0x40
jne 0x4446d2
add rdx, 8
add r11, 0x40
cmp rbx, rdx
jne 0x4446c5
lea rdx, [rcx + r12]
xor eax, eax
movdqu xmm0, xmmword [rdx + rax - 0x40]
movdqu xmm1, xmmword [rdi + rax - 0x47]
pxor xmm1, xmm0
pshufd xmm0, xmm0, 0x4e
pshufd xmm2, xmm1, 0x31
pmuludq xmm1, xmm2
paddq xmm1, xmm0
paddq xmm1, xmmword [r10 + rax]
movaps xmmword [r10 + rax], xmm1
add rax, 0x10
cmp rax, 0x40
jne 0x44471b
lea rdx, [r8 + 0xb]
movabs r8, 0x9e3779b185ebca87
mov rcx, r10
imul r8, r12
call fcn.00442e70
add rsp, 0x78
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
push r12
push rsi
push rbx
cmp rdx, 0x10
mov r10, rdx
ja 0x4454e0
cmp rdx, 8
jbe 0x445620
mov rax, qword [r8 + 0x20]
mov rdx, qword [r8 + 0x30]
xor rax, qword [r8 + 0x18]
xor rdx, qword [r8 + 0x28]
xor rax, qword [rcx]
xor rdx, qword [rcx + r10 - 8]
mov r8, rax
mov rcx, rdx
mul rdx
add r10, rcx
bswap r8
xor rax, rdx
add rax, r10
add rax, r8
mov r10, rax
shr r10, 0x25
xor rax, r10
movabs r10, 0x165667919e3779f9
imul rax, r10
mov r10, rax
shr r10, 0x20
xor rax, r10
pop rbx
pop rsi
pop r12
ret
cmp rdx, 0x80
ja 0x4455f4
movabs rax, 0x9e3779b185ebca87
imul rax, rdx
cmp rdx, 0x20
mov r9, rax
jbe 0x445590
cmp rdx, 0x40
jbe 0x445554
cmp rdx, 0x60
ja 0x445690
mov r11, qword [r8 + 0x40]
mov rax, qword [r8 + 0x48]
lea rbx, [rcx + r10 - 0x30]
xor r11, qword [rcx + 0x20]
xor rax, qword [rcx + 0x28]
mul r11
mov r11, rax
mov r12, rdx
mov rax, qword [r8 + 0x50]
mov rdx, qword [r8 + 0x58]
xor rax, qword [rbx]
xor r11, r12
xor rdx, qword [rbx + 8]
mul rdx
xor rax, rdx
add rax, r11
add r9, rax
mov r11, qword [r8 + 0x20]
mov rax, qword [r8 + 0x28]
lea rbx, [rcx + r10 - 0x20]
xor r11, qword [rcx + 0x10]
xor rax, qword [rcx + 0x18]
mul r11
mov r11, rax
mov r12, rdx
mov rax, qword [r8 + 0x30]
mov rdx, qword [r8 + 0x38]
xor rax, qword [rbx]
xor r11, r12
xor rdx, qword [rbx + 8]
mul rdx
xor rax, rdx
add rax, r11
add r9, rax
mov r11, qword [r8]
mov rax, qword [r8 + 8]
xor r11, qword [rcx]
xor rax, qword [rcx + 8]
lea rcx, [rcx + r10 - 0x10]
mov rsi, qword [rcx]
mul r11
mov r12, rdx
mov r11, rax
mov rdx, qword [r8 + 0x10]
mov rax, qword [r8 + 0x18]
xor rax, qword [rcx + 8]
xor r11, r12
xor rsi, rdx
mul rsi
xor rax, rdx
add rax, r11
add rax, r9
mov r10, rax
shr r10, 0x25
xor rax, r10
movabs r10, 0x165667919e3779f9
imul r10, rax
mov rax, r10
shr rax, 0x20
xor rax, r10
pop rbx
pop rsi
pop r12
ret
cmp rdx, 0xf0
ja 0x445610
xor r9d, r9d
pop rbx
pop rsi
pop r12
jmp fcn.00442f80
pop rbx
pop rsi
pop r12
jmp 0x444520
cmp rdx, 3
jbe 0x4456d3
mov r9d, dword [rcx + rdx - 4]
mov edx, dword [rcx]
mov rax, qword [r8 + 0x10]
xor rax, qword [r8 + 8]
movabs r8, 0x9fb21c651e98df25
shl rdx, 0x20
add rdx, r9
xor rax, rdx
mov rdx, rax
mov rcx, rax
rol rcx, 0x18
ror rdx, 0xf
xor rdx, rcx
xor rdx, rax
imul rdx, r8
mov rcx, rdx
mov rax, rdx
shr rcx, 0x23
add r10, rcx
xor rax, r10
imul rax, r8
mov r10, rax
shr rax, 0x1c
xor rax, r10
jmp 0x4454d9
mov rax, qword [r8 + 0x60]
mov rdx, qword [r8 + 0x68]
xor rax, qword [rcx + 0x30]
xor rdx, qword [rcx + 0x38]
mov r11, qword [r8 + 0x70]
mul rdx
xor rax, rdx
lea rdx, [rcx + r10 - 0x40]
lea rbx, [rax + r9]
mov rax, qword [r8 + 0x78]
xor r11, qword [rdx]
xor rax, qword [rdx + 8]
mul r11
mov r11, rax
mov rax, rdx
xor rax, r11
lea r9, [rax + rbx]
jmp 0x445518
test rdx, rdx
je 0x445738
movzx eax, byte [rcx + rdx - 1]
movzx edx, byte [rcx]
shl edx, 0x10
or eax, edx
mov edx, r10d
shr r10, 1
shl edx, 8
or eax, edx
movzx edx, byte [rcx + r10]
shl edx, 0x18
or eax, edx
mov edx, dword [r8 + 4]
xor edx, dword [r8]
xor eax, edx
movabs rdx, 0xc2b2ae3d27d4eb4f
imul rax, rdx
mov rdx, rax
shr rdx, 0x1d
xor rax, rdx
movabs rdx, 0x165667b19e3779f9
imul rax, rdx
mov rdx, rax
shr rdx, 0x20
xor rax, rdx
jmp 0x4454d9
mov rax, qword [r8 + 0x40]
xor rax, qword [r8 + 0x38]
mov rdx, rax
shr rax, 0x21
xor rax, rdx
jmp 0x445703