Function at 0x14004d380
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
mov r10, rdx
mov r11, rcx
movzx eax, byte [r8 + 0x17]
mov r9d, eax
and r9d, 0x7f
test al, al
mov r12, qword [r8]
cmovns r12, r8
cmovs r9, qword [r8 + 8]
cmp r9, 0x20
ja 0x14004d5fe
cmp r9, 0x10
jbe 0x14004d592
movabs rcx, 0xb492b66fbe98f273
imul rcx, qword [r12]
mov rdx, qword [r12 + 8]
movabs rax, 0x9ae16a3b2f90404f
imul rax, qword [r12 + r9 - 8]
movabs rbp, 0xc3a5c85c97cb3127
imul rbp, qword [r12 + r9 - 0x10]
movabs rbx, 0xc949d7c7509e6557
xor rbx, rdx
rol rbx, 0x2c
add rbx, rcx
add rbx, r9
sub rcx, rdx
rol rcx, 0x15
sub rbx, rax
rol rax, 0x22
add rax, rcx
add rax, rbp
xor rax, rbx
movabs rcx, 0x9ddfea08eb382d69
imul rax, rcx
xor rbx, rax
shr rax, 0x2f
xor rax, rbx
imul rax, rcx
mov rsi, rax
shr rsi, 0x2f
xor rsi, rax
imul rsi, rcx
mov rdi, qword [r11 + 8]
test rdi, rdi
je 0x14004d579
mov rax, rdi
shr rax, 1
movabs rcx, 0x5555555555555555
and rcx, rax
mov rax, rdi
sub rax, rcx
movabs rcx, 0x3333333333333333
mov rdx, rax
and rdx, rcx
shr rax, 2
and rax, rcx
add rax, rdx
mov rcx, rax
shr rcx, 4
add rcx, rax
movabs rax, 0xf0f0f0f0f0f0f0f
and rax, rcx
movabs rbx, 0x101010101010101
imul rbx, rax
shr rbx, 0x38
cmp rbx, 1
jbe 0x14004d723
mov r13, rsi
cmp rsi, rdi
jb 0x14004d4d6
mov rax, rsi
xor edx, edx
div rdi
mov r13, rdx
mov rax, qword [r11]
mov rax, qword [rax + r13*8]
test rax, rax
je 0x14004d579
mov rbp, qword [rax]
test rbp, rbp
je 0x14004d579
lea r15, [rdi - 1]
mov rax, qword [rbp + 8]
cmp rsi, rax
je 0x14004d525
cmp ebx, 1
jbe 0x14004d9d7
cmp rax, rdi
jb 0x14004d515
xor edx, edx
div rdi
mov rax, rdx
cmp rax, r13
jne 0x14004d579
mov rbp, qword [rbp]
test rbp, rbp
jne 0x14004d4f6
jmp 0x14004d579
movzx edx, byte [rbp + 0x27]
mov eax, edx
and eax, 0x7f
mov rcx, rax
test dl, dl
jns 0x14004d539
mov rcx, qword [rbp + 0x18]
cmp rcx, r9
jne 0x14004d51a
lea rcx, [rbp + 0x10]
test dl, dl
jns 0x14004d549
mov rcx, qword [rcx]
jns 0x14004d9df
mov r14, r10
test r9, r9
je 0x14004da04
mov rdx, r12
mov r8, r9
mov qword [rsp + 0x20], r9
call fcn.140061c80
mov r9, qword [rsp + 0x20]
test eax, eax
mov r10, r14
je 0x14004d57b
jmp 0x14004d51a
xor ebp, ebp
mov qword [r10], rbp
mov rax, r10
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp r9, 9
jae 0x14004d6db
cmp r9, 4
jae 0x14004d996
movabs rsi, 0x9ae16a3b2f90404f
test r9, r9
je 0x14004d450
movzx eax, byte [r12]
mov rcx, r9
shr rcx, 1
movzx ecx, byte [r12 + rcx]
movzx edx, byte [r9 + r12 - 1]
shl rcx, 8
or rcx, rax
lea rax, [r9 + rdx*4]
imul rcx, rsi
movabs rdx, 0xc949d7c7509e6557
imul rdx, rax
xor rdx, rcx
mov rax, rdx
shr rax, 0x2f
xor rax, rdx
jmp 0x14004d6d2
cmp r9, 0x40
ja 0x14004d72f
mov rax, r9
mov r9, qword [r12 + r9 - 0x10]
lea rdx, [r9 + rax]
movabs r8, 0xc3a5c85c97cb3127
imul rdx, r8
add rdx, qword [r12]
mov rcx, qword [r12 + 0x18]
lea r14, [rdx + rcx]
rol r14, 0xc
mov rbx, rdx
rol rbx, 0x1b
mov rsi, qword [r12 + 0x10]
add rdx, qword [r12 + 8]
mov rdi, rdx
rol rdi, 0x39
add rdx, rsi
mov rbp, rdx
rol rbp, 0x21
add rsi, qword [r12 + rax - 0x20]
add rdx, rcx
add rcx, qword [r12 + rax - 8]
add rdi, rbx
lea r15, [rcx + rsi]
rol r15, 0xc
add rdi, r14
mov rbx, rsi
rol rbx, 0x1b
add rbp, rdi
add rsi, qword [r12 + rax - 0x18]
mov rdi, rsi
rol rdi, 0x39
add rsi, r9
mov r9, rax
add rcx, rsi
rol rsi, 0x21
add rbx, rdx
add rbx, rdi
add rbx, r15
add rbx, rsi
movabs rax, 0x9ae16a3b2f90404f
imul rbx, rax
add rcx, rbp
imul rcx, r8
add rcx, rbx
mov rdx, rcx
shr rdx, 0x2f
xor rdx, rcx
imul rdx, r8
add rdx, rbp
mov rsi, rdx
shr rsi, 0x2f
xor rsi, rdx
imul rsi, rax
jmp 0x14004d450
mov rax, qword [r12 + r9 - 8]
lea rdx, [rax + r9]
mov ecx, r9d
ror rdx, cl
mov rcx, qword [r12]
xor rcx, rdx
movabs rbp, 0x9ddfea08eb382d69
imul rcx, rbp
xor rdx, rcx
shr rcx, 0x2f
xor rcx, rdx
imul rcx, rbp
mov rsi, rcx
shr rsi, 0x2f
xor rsi, rcx
imul rsi, rbp
xor rsi, rax
jmp 0x14004d450
lea r13, [rdi - 1]
and r13, rsi
jmp 0x14004d4d6
mov qword [rsp + 0x28], r11
mov qword [rsp + 0x30], r10
movabs r14, 0xb492b66fbe98f273
movabs r8, 0x9ddfea08eb382d69
mov rbx, qword [r12 + r9 - 0x28]
mov r10, qword [r12 + r9 - 0x10]
mov rcx, qword [r12 + r9 - 0x38]
mov rax, qword [r12 + r9 - 0x30]
lea rdx, [rcx + r10]
mov rsi, qword [r12 + r9 - 0x18]
lea rdi, [rax + r9]
xor rdi, rsi
imul rdi, r8
mov rbp, rsi
xor rbp, rdi
shr rdi, 0x2f
xor rdi, rbp
imul rdi, r8
mov r13, rdi
shr r13, 0x2f
xor r13, rdi
imul r13, r8
mov rbp, qword [r12 + r9 - 0x40]
add rbp, r9
lea rdi, [rbx + rbp]
add rdi, r13
rol rdi, 0x2b
add rax, rcx
add rax, rbp
mov r8, rax
rol r8, 0x14
add r8, rbp
add r8, rdi
add rax, rbx
mov rdi, qword [r12 + r9 - 0x20]
add rdi, rdx
mov rcx, r9
mov r9, qword [r12 + r9 - 8]
add rdi, r14
lea r11, [r9 + rbx]
add r11, rdi
rol r11, 0x2b
add rsi, r10
add rsi, rdi
mov rbp, rsi
rol rbp, 0x14
add rbp, rdi
add rbp, r11
imul rbx, r14
add rbx, qword [r12]
add rsi, r9
mov qword [rsp + 0x20], rcx
dec rcx
and rcx, 0xffffffffffffffc0
mov qword [rsp + 0x38], rcx
xor edi, edi
mov r15, r13
add rbx, rax
add rbx, rdx
mov r9, qword [r12 + rdi + 8]
mov r14, qword [r12 + rdi + 0x10]
add rbx, r9
rol rbx, 0x1b
add rdx, r8
mov rcx, qword [r12 + rdi + 0x30]
mov qword [rsp + 0x40], rcx
add rdx, rcx
rol rdx, 0x16
movabs rcx, 0xb492b66fbe98f273
imul rbx, rcx
mov r10, rdx
imul r10, rcx
mov r13, rbx
xor r13, rbp
mov r11, qword [r12 + rdi + 0x28]
add rax, r11
mov rdx, rax
add rdx, r10
add r15, rsi
imul r8, rcx
mov r10, qword [r12 + rdi + 0x18]
add r8, qword [r12 + rdi]
add rsi, r10
add rsi, r13
add rsi, r8
rol rsi, 0x2b
add r9, r14
add r9, r8
mov rax, r9
rol rax, 0x14
add r8, rax
add r8, rsi
rol r15, 0x1f
mov rax, r9
mov rbx, r15
imul rbx, rcx
add rax, r10
add r14, rdx
add rbp, rbx
add rbp, qword [r12 + rdi + 0x20]
mov rcx, qword [r12 + rdi + 0x38]
add r14, rcx
add r14, rbp
add r11, qword [rsp + 0x40]
add r11, rbp
mov rsi, r11
rol rsi, 0x14
add rbp, rsi
rol r14, 0x2b
add rbp, r14
mov rsi, r11
add rsi, rcx
add rdi, 0x40
cmp qword [rsp + 0x38], rdi
jne 0x14004d80c
xor r8, rbp
movabs rdi, 0x9ddfea08eb382d69
imul r8, rdi
mov rcx, r8
shr rcx, 0x2f
xor rcx, rbp
xor rcx, r8
imul rcx, rdi
mov rbp, rcx
shr rbp, 0x2f
xor rbp, rcx
imul rbp, rdi
add rbp, rbx
xor rax, rsi
imul rax, rdi
mov rcx, rax
shr rcx, 0x2f
xor rcx, rsi
xor rcx, rax
imul rcx, rdi
mov rax, rcx
shr rax, 0x2f
xor rax, rcx
imul rax, rdi
mov rcx, rdx
shr rcx, 0x2f
xor rcx, rdx
movabs rdx, 0xb492b66fbe98f273
imul rcx, rdx
add rcx, r13
add rcx, rax
xor rcx, rbp
imul rcx, rdi
xor rbp, rcx
shr rcx, 0x2f
xor rcx, rbp
imul rcx, rdi
mov rsi, rcx
shr rsi, 0x2f
xor rsi, rcx
imul rsi, rdi
mov r10, qword [rsp + 0x30]
mov r11, qword [rsp + 0x28]
mov r9, qword [rsp + 0x20]
jmp 0x14004d450
mov eax, dword [r12]
mov ecx, dword [r12 + r9 - 4]
shl eax, 3
add rax, r9
xor rax, rcx
movabs rdx, 0x9ddfea08eb382d69
imul rax, rdx
xor rcx, rax
shr rax, 0x2f
xor rax, rcx
imul rax, rdx
mov rsi, rax
shr rsi, 0x2f
xor rsi, rax
imul rsi, rdx
jmp 0x14004d450
and rax, r15
jmp 0x14004d515
test al, al
je 0x14004d57b
xor ecx, ecx
mov dl, byte [rbp + rcx + 0x10]
cmp dl, byte [r12 + rcx]
jne 0x14004d51a
inc rcx
cmp rax, rcx
jne 0x14004d9e9
jmp 0x14004d57b
mov r10, r14
jmp 0x14004d57b