Function at 0x445750
Capabilities:
Encode data using xor

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x130
lea rsi, [rdx - 1]
mov r10, rsi
shr r10, 0xa
test r8, r8
jne 0x44404f
mov eax, 0xc2b2ae3d
test r10, r10
lea r9, [rsp + 0x70]
mov qword [rsp + 0x70], rax
movabs rax, 0x9e3779b185ebca87
mov qword [rsp + 0x78], rax
movabs rax, 0xc2b2ae3d27d4eb4f
mov qword [rsp + 0x80], rax
movabs rax, 0x165667b19e3779f9
mov qword [rsp + 0x88], rax
movabs rax, 0x85ebca77c2b2ae63
mov qword [rsp + 0x90], rax
mov eax, 0x85ebca77
mov qword [rsp + 0x98], rax
movabs rax, 0x27d4eb2f165667c5
mov qword [rsp + 0xa0], rax
mov eax, 0x9e3779b1
mov qword [rsp + 0xa8], rax
je 0x443f60
lea rdi, [rcx + 0x180]
shl r10, 0xa
lea rbx, [0x00543c00]
lea r9, [rsp + 0x70]
movdqa xmm3, xmmword [0x00543c40]
lea rbp, [rdi + r10]
nop dword [rax]
lea r8, [0x00543b80]
mov r11, rdi
nop word [rax + rax]
lea r10, [r11 - 0x180]
xor eax, eax
prefetcht0 byte [r11]
movdqu xmm1, xmmword [r10 + rax]
movdqu xmm0, xmmword [r8 + rax]
pxor xmm0, xmm1
pshufd xmm1, xmm1, 0x4e
pshufd xmm2, xmm0, 0x31
pmuludq xmm0, xmm2
paddq xmm0, xmm1
paddq xmm0, xmmword [r9 + rax]
movaps xmmword [r9 + rax], xmm0
add rax, 0x10
cmp rax, 0x40
jne 0x443ecd
add r8, 8
add r11, 0x40
cmp rbx, r8
jne 0x443ec0
xor eax, eax
movdqa xmm0, xmmword [r9 + rax]
movdqa xmm1, xmm0
pxor xmm0, xmmword [rbx + rax]
psrlq xmm1, 0x2f
pxor xmm0, xmm1
pshufd xmm1, xmm0, 0x31
pmuludq xmm0, xmm3
pmuludq xmm1, xmm3
psllq xmm1, 0x20
paddq xmm0, xmm1
movaps xmmword [r9 + rax], xmm0
add rax, 0x10
cmp rax, 0x40
jne 0x443f13
add rdi, 0x400
cmp rbp, rdi
jne 0x443eb0
mov rax, rsi
and rax, 0xfffffffffffffc00
sub rsi, rax
shr rsi, 6
test rsi, rsi
je 0x443fe1
lea r8, [0x00543b80]
lea r11, [rcx + rax + 0x180]
lea rbx, [r8 + rsi*8]
nop dword [rax + rax]
lea r10, [r11 - 0x180]
xor eax, eax
prefetcht0 byte [r11]
movdqu xmm1, xmmword [r10 + rax]
movdqu xmm0, xmmword [r8 + rax]
pxor xmm0, xmm1
pshufd xmm1, xmm1, 0x4e
pshufd xmm2, xmm0, 0x31
pmuludq xmm0, xmm2
paddq xmm0, xmm1
paddq xmm0, xmmword [r9 + rax]
movaps xmmword [r9 + rax], xmm0
add rax, 0x10
cmp rax, 0x40
jne 0x443f9d
add r8, 8
add r11, 0x40
cmp rbx, r8
jne 0x443f90
lea r8, [0x00543bf9]
xor eax, eax
add rcx, rdx
movdqu xmm1, xmmword [rcx + rax - 0x40]
movdqu xmm0, xmmword [r8 + rax]
pxor xmm0, xmm1
pshufd xmm1, xmm1, 0x4e
pshufd xmm2, xmm0, 0x31
pmuludq xmm0, xmm2
paddq xmm0, xmm1
paddq xmm0, xmmword [r9 + rax]
movaps xmmword [r9 + rax], xmm0
add rax, 0x10
cmp rax, 0x40
jne 0x443fed
movabs r8, 0x9e3779b185ebca87
mov rcx, r9
imul r8, rdx
lea rdx, [0x00543b8b]
call fcn.00442e70
add rsp, 0x130
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov rax, r8
mov qword [rsp + 0x28], r8
lea r9, [rsp + 0x70]
neg rax
movq xmm1, qword [rsp + 0x28]
mov qword [rsp + 0x28], rax
lea r8, [0x00543b80]
xor eax, eax
movhps xmm1, qword [rsp + 0x28]
mov r11, r9
nop dword [rax + rax]
movdqa xmm0, xmmword [r8 + rax]
paddq xmm0, xmm1
movaps xmmword [r11 + rax], xmm0
add rax, 0x10
cmp rax, 0xc0
jne 0x444080
mov eax, 0xc2b2ae3d
test r10, r10
mov qword [rsp + 0x30], rax
movabs rax, 0x9e3779b185ebca87
mov qword [rsp + 0x38], rax
movabs rax, 0xc2b2ae3d27d4eb4f
mov qword [rsp + 0x40], rax
movabs rax, 0x165667b19e3779f9
mov qword [rsp + 0x48], rax
movabs rax, 0x85ebca77c2b2ae63
mov qword [rsp + 0x50], rax
mov eax, 0x85ebca77
mov qword [rsp + 0x58], rax
movabs rax, 0x27d4eb2f165667c5
mov qword [rsp + 0x60], rax
mov eax, 0x9e3779b1
mov qword [rsp + 0x68], rax
je 0x4442be
lea rbp, [rcx + 0x180]
shl r10, 0xa
lea rdi, [r9 + 0x80]
movdqa xmm3, xmmword [0x00543c40]
lea r12, [rbp + r10]
lea r10, [rsp + 0x30]
mov r8, r9
mov rbx, rbp
nop word [rax + rax]
lea r11, [rbx - 0x180]
xor eax, eax
prefetcht0 byte [rbx]
movdqu xmm1, xmmword [r11 + rax]
movdqu xmm0, xmmword [r8 + rax]
pxor xmm0, xmm1
pshufd xmm1, xmm1, 0x4e
pshufd xmm2, xmm0, 0x31
pmuludq xmm0, xmm2
paddq xmm0, xmm1
paddq xmm0, xmmword [r10 + rax]
movaps xmmword [r10 + rax], xmm0
add rax, 0x10
cmp rax, 0x40
jne 0x44414c
add r8, 8
add rbx, 0x40
cmp rdi, r8
jne 0x444140
xor eax, eax
movdqa xmm0, xmmword [r10 + rax]
movdqa xmm1, xmm0
pxor xmm0, xmmword [rdi + rax]
psrlq xmm1, 0x2f
pxor xmm0, xmm1
pshufd xmm1, xmm0, 0x31
pmuludq xmm0, xmm3
pmuludq xmm1, xmm3
psllq xmm1, 0x20
paddq xmm0, xmm1
movaps xmmword [r10 + rax], xmm0
add rax, 0x10
cmp rax, 0x40
jne 0x444192
add rbp, 0x400
cmp r12, rbp
jne 0x444131
mov rax, rsi
and rax, 0xfffffffffffffc00
sub rsi, rax
shr rsi, 6
test rsi, rsi
je 0x444253
lea rbx, [rcx + rax + 0x180]
lea rsi, [r9 + rsi*8]
mov r8, r9
lea r11, [rbx - 0x180]
xor eax, eax
prefetcht0 byte [rbx]
movdqu xmm1, xmmword [r11 + rax]
movdqu xmm0, xmmword [r8 + rax]
pxor xmm0, xmm1
pshufd xmm1, xmm1, 0x4e
pshufd xmm2, xmm0, 0x31
pmuludq xmm0, xmm2
paddq xmm0, xmm1
paddq xmm0, xmmword [r10 + rax]
movaps xmmword [r10 + rax], xmm0
add rax, 0x10
cmp rax, 0x40
jne 0x44420f
add r8, 8
add rbx, 0x40
cmp rsi, r8
jne 0x444203
lea r8, [r9 + 0x79]
xor eax, eax
add rcx, rdx
movdqu xmm1, xmmword [rcx + rax - 0x40]
movdqu xmm0, xmmword [r8 + rax]
pxor xmm0, xmm1
pshufd xmm1, xmm1, 0x4e
pshufd xmm2, xmm0, 0x31
pmuludq xmm0, xmm2
paddq xmm0, xmm1
paddq xmm0, xmmword [r10 + rax]
movaps xmmword [r10 + rax], xmm0
add rax, 0x10
cmp rax, 0x40
jne 0x44425c
movabs r8, 0x9e3779b185ebca87
add r9, 0xb
mov rcx, r10
imul r8, rdx
mov rdx, r9
call fcn.00442e70
add rsp, 0x130
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
lea r10, [rsp + 0x30]
jmp 0x4441df
push r12
push rsi
push rbx
cmp rdx, 0x10
mov r10, rdx
ja 0x4457d1
cmp rdx, 8
jbe 0x445960
mov rax, qword [0x00543ba0]
mov rdx, qword [0x00543bb0]
xor rax, qword [0x00543b98]
xor rdx, qword [0x00543ba8]
add rax, r8
sub rdx, r8
xor rax, qword [rcx]
xor rdx, qword [rcx + r10 - 8]
mov r8, rax
mov rcx, rdx
bswap r8
mul rdx
add r10, rcx
xor rax, rdx
add rax, r10
lea rcx, [rax + r8]
movabs rax, 0x165667919e3779f9
mov r10, rcx
shr r10, 0x25
xor rcx, r10
imul rcx, rax
mov rax, rcx
shr rax, 0x20
xor rax, rcx
pop rbx
pop rsi
pop r12
ret
cmp rdx, 0x80
ja 0x445930
movabs rax, 0x9e3779b185ebca87
imul rax, rdx
cmp rdx, 0x20
mov r9, rax
jbe 0x4458b1
cmp rdx, 0x40
jbe 0x44585d
cmp rdx, 0x60
ja 0x4459e0
mov r11, qword [0x00543bc0]
mov rax, qword [0x00543bc8]
lea rbx, [rcx + r10 - 0x30]
add r11, r8
sub rax, r8
xor r11, qword [rcx + 0x20]
xor rax, qword [rcx + 0x28]
mul r11
mov r11, rax
mov r12, rdx
mov rax, qword [0x00543bd0]
mov rdx, qword [0x00543bd8]
xor r11, r12
add rax, r8
xor rax, qword [rbx]
sub rdx, r8
xor rdx, qword [rbx + 8]
mul rdx
xor rax, rdx
add rax, r11
add r9, rax
mov r11, qword [0x00543ba0]
mov rax, qword [0x00543ba8]
lea rbx, [rcx + r10 - 0x20]
add r11, r8
sub rax, r8
xor r11, qword [rcx + 0x10]
xor rax, qword [rcx + 0x18]
mul r11
mov r11, rax
mov r12, rdx
mov rax, qword [0x00543bb0]
mov rdx, qword [0x00543bb8]
xor r11, r12
add rax, r8
xor rax, qword [rbx]
sub rdx, r8
xor rdx, qword [rbx + 8]
mul rdx
xor rax, rdx
add rax, r11
add r9, rax
mov r11, qword [0x00543b80]
mov rax, qword [0x00543b88]
add r11, r8
sub rax, r8
xor r11, qword [rcx]
xor rax, qword [rcx + 8]
lea rcx, [rcx + r10 - 0x10]
mov rsi, qword [rcx]
mul r11
mov r11, rax
mov rax, qword [0x00543b98]
mov r12, rdx
mov rdx, qword [0x00543b90]
xor r11, r12
sub rax, r8
xor rax, qword [rcx + 8]
add rdx, r8
xor rsi, rdx
mul rsi
xor rax, rdx
add rax, r11
add rax, r9
mov rcx, rax
shr rcx, 0x25
xor rax, rcx
movabs rcx, 0x165667919e3779f9
imul rax, rcx
mov rcx, rax
shr rcx, 0x20
xor rax, rcx
pop rbx
pop rsi
pop r12
ret
cmp rdx, 0xf0
ja 0x445950
mov r9, r8
lea r8, [0x00543b80]
pop rbx
pop rsi
pop r12
jmp fcn.00442f80
pop rbx
pop rsi
pop r12
jmp 0x443de0
cmp rdx, 3
jbe 0x445a3b
mov r9d, r8d
mov rdx, qword [0x00543b90]
xor rdx, qword [0x00543b88]
bswap r9d
mov eax, dword [rcx]
shl r9, 0x20
xor r8, r9
sub rdx, r8
mov r8d, dword [rcx + r10 - 4]
shl rax, 0x20
add rax, r8
xor rax, rdx
mov rdx, rax
mov rcx, rax
rol rcx, 0x18
ror rdx, 0xf
xor rdx, rcx
movabs rcx, 0x9fb21c651e98df25
xor rdx, rax
imul rdx, rcx
mov r8, rdx
shr r8, 0x23
lea rax, [r8 + r10]
xor rax, rdx
imul rax, rcx
mov rcx, rax
shr rcx, 0x1c
xor rax, rcx
jmp 0x4457cc
mov rax, qword [0x00543be0]
mov rdx, qword [0x00543be8]
mov r11, qword [0x00543bf0]
add rax, r8
sub rdx, r8
xor rax, qword [rcx + 0x30]
xor rdx, qword [rcx + 0x38]
add r11, r8
mul rdx
xor rax, rdx
lea rdx, [rcx + r10 - 0x40]
lea rbx, [rax + r9]
mov rax, qword [0x00543bf8]
xor r11, qword [rdx]
sub rax, r8
xor rax, qword [rdx + 8]
mul r11
mov r11, rax
mov rax, rdx
xor rax, r11
lea r9, [rax + rbx]
jmp 0x445809
test rdx, rdx
je 0x445ab3
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 [0x00543b84]
xor edx, dword [0x00543b80]
add r8, rdx
xor r8, rax
movabs rdx, 0xc2b2ae3d27d4eb4f
movabs rcx, 0x165667b19e3779f9
mov rax, r8
shr rax, 0x21
xor rax, r8
imul rax, rdx
mov rdx, rax
shr rdx, 0x1d
xor rax, rdx
imul rax, rcx
mov rcx, rax
shr rcx, 0x20
xor rax, rcx
jmp 0x4457cc
mov rax, qword [0x00543bc0]
xor rax, qword [0x00543bb8]
jmp 0x445a71