Function at 0x140059020
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x58]
sub rsp, 0x158
mov rax, qword [0x1400df040]
xor rax, rsp
mov qword [rbp + 0x48], rax
mov qword [rbp - 0x50], r9
mov qword [rbp - 0x78], r8
mov qword [rbp - 0x60], rdx
mov rdi, rcx
mov qword [rbp - 0x70], rcx
mov qword [rbp + 0x20], rcx
xor eax, eax
mov dword [rsp + 0x38], eax
mov rax, qword [r8]
mov rcx, r8
call qword [rax + 0x30]
mov rsi, rax
mov qword [rbp - 0x80], rax
mov qword [rdi], 0
mov qword [rdi + 8], 0
mov qword [rdi + 0x10], 0
movabs r12, 0x7fffffffffffffff
test rax, rax
je 0x1400590cf
cmp rax, r12
ja 0x1400597ac
mov edx, 1
mov rcx, rax
call fcn.14000ddc0
mov rcx, rax
mov qword [rdi], rax
add rax, rsi
mov qword [rdi + 0x10], rax
lea rbx, [rcx + rsi]
mov r8, rsi
xor edx, edx
call sub.VCRUNTIME140.dll_memset
mov qword [rdi + 8], rbx
mov r13d, 1
mov dword [rsp + 0x38], r13d
xor r14d, r14d
mov qword [rsp + 0x40], r14
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x50], r14
test rsi, rsi
je 0x140059128
cmp rsi, r12
ja 0x1400597b2
mov edx, r13d
mov rcx, rsi
call fcn.14000ddc0
mov r14, rax
mov qword [rsp + 0x40], rax
lea rbx, [rax + rsi]
mov qword [rsp + 0x50], rbx
mov r8, rsi
xor edx, edx
mov rcx, rax
call sub.VCRUNTIME140.dll_memset
mov qword [rsp + 0x48], rbx
xor r15d, r15d
mov qword [rsp + 0x20], r15
xor edi, edi
mov qword [rsp + 0x70], rdi
mov qword [rsp + 0x28], rdi
xor ebx, ebx
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x30], rbx
test rsi, rsi
je 0x140059193
cmp rsi, r12
ja 0x1400597b8
mov edx, 1
mov rcx, rsi
call fcn.14000ddc0
mov r15, rax
mov qword [rsp + 0x20], rax
lea rdi, [rax + rsi]
mov qword [rsp + 0x70], rdi
mov rbx, rdi
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x30], rbx
mov r8, rsi
xor edx, edx
mov rcx, rax
call sub.VCRUNTIME140.dll_memset
mov qword [rsp + 0x28], rdi
xor edx, edx
mov rax, qword [rbp + 0xc0]
div rsi
mov qword [rbp - 0x30], rdx
mov rcx, rax
mov qword [rbp - 0x58], rax
xor eax, eax
mov qword [rbp - 0x68], rax
test rcx, rcx
je 0x1400595eb
mov rsi, qword [rbp - 0x60]
mov rcx, qword [rbp - 0x50]
mov qword [rsp + 0x58], rcx
movabs r11, 0x2aaaaaaaaaaaaaab
lea r10d, [rax + 1]
mov r9d, r10d
not r9d
shr r9d, 0x1f
shr eax, 0x1f
and r9d, eax
neg r9d
and r9d, 1
mov r8d, 0x10
mov rcx, r8
mov edx, 1
shl edx, cl
dec edx
and edx, r10d
lea eax, [rdx - 1]
shr eax, 0x1f
not edx
shr edx, 0x1f
and eax, edx
neg eax
and eax, 1
imul rax, r8
add r9, rax
mov rcx, rax
shr r10d, cl
shr r8, 1
jne 0x1400591f1
mov qword [rbp - 0x40], r9
mov r14, qword [rsi + 0x60]
mov r8, qword [rsi + 0x58]
mov rcx, r14
sub rcx, r8
mov rax, r11
imul rcx
sar rdx, 2
mov rax, rdx
shr rax, 0x3f
add rdx, rax
cmp rdx, r9
ja 0x14005937d
nop dword [rax]
nop word [rax + rax]
mov rbx, qword [r14 - 0x10]
sub rbx, qword [r14 - 0x18]
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x28], xmm0
mov qword [rbp + 0x38], 0
mov r12d, 0
je 0x1400592c5
movabs rax, 0x7fffffffffffffff
cmp rbx, rax
ja 0x1400597be
mov edx, 1
mov rcx, rbx
call fcn.14000ddc0
mov rdi, rax
mov qword [rbp + 0x28], rax
lea r12, [rax + rbx]
mov qword [rbp + 0x38], r12
mov r8, rbx
xor edx, edx
mov rcx, rax
call sub.VCRUNTIME140.dll_memset
mov rbx, r12
mov qword [rbp + 0x30], rbx
jmp 0x1400592cd
mov rbx, qword [rbp + 0x30]
mov rdi, qword [rbp + 0x28]
or r13d, 2
mov dword [rsp + 0x38], r13d
mov r8, rbx
sub r8, rdi
mov rdx, qword [r14 - 0x18]
mov rcx, rdi
call fcn.14005ccc0
mov rdx, qword [rsi + 0x60]
cmp rdx, qword [rsi + 0x68]
je 0x140059308
xor eax, eax
xor ecx, ecx
mov qword [rdx], rdi
mov qword [rdx + 8], rbx
mov qword [rdx + 0x10], r12
add qword [rsi + 0x60], 0x18
jmp 0x14005931d
lea r8, [rbp + 0x28]
lea rcx, [rsi + 0x58]
call fcn.140056480
mov rax, qword [rbp + 0x38]
mov rcx, qword [rbp + 0x28]
and r13d, 0xfffffffd
mov dword [rsp + 0x38], r13d
test rcx, rcx
je 0x14005933d
sub rax, rcx
mov r8d, 1
mov rdx, rax
call fcn.14000de60
nop
mov r14, qword [rsi + 0x60]
mov r8, qword [rsi + 0x58]
mov rcx, r14
sub rcx, r8
movabs rax, 0x2aaaaaaaaaaaaaab
imul rcx
sar rdx, 2
mov rax, rdx
shr rax, 0x3f
add rdx, rax
mov r9, qword [rbp - 0x40]
cmp rdx, r9
jbe 0x140059260
movabs r12, 0x7fffffffffffffff
lea rax, [r9 + r9*2]
lea rdx, [r8 + rax*8]
lea rcx, [rsp + 0x40]
call fcn.140051f10
mov rbx, qword [rsp + 0x48]
mov r14, qword [rsp + 0x40]
sub rbx, r14
mov rcx, qword [rsp + 0x60]
sub rcx, r15
cmp rbx, rcx
jbe 0x14005942f
cmp rbx, r12
ja 0x1400597a6
mov rdx, rcx
shr rdx, 1
mov rax, r12
sub rax, rdx
cmp rcx, rax
jbe 0x1400593cc
mov rdi, r12
jmp 0x1400593d7
lea rdi, [rdx + rcx]
cmp rdi, rbx
cmovb rdi, rbx
test r15, r15
je 0x1400593fe
mov r8d, 1
mov rdx, rcx
mov rcx, r15
call fcn.14000de60
xor eax, eax
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x30], rax
mov edx, 1
mov rcx, rdi
call fcn.14000ddc0
mov r15, rax
mov qword [rsp + 0x20], rax
add rax, rdi
mov qword [rsp + 0x30], rax
mov r8, rbx
mov rdx, r14
mov rcx, r15
call sub.VCRUNTIME140.dll_memmove
lea rdi, [r15 + rbx]
jmp 0x14005947a
mov rdi, qword [rsp + 0x70]
mov r12, rdi
sub r12, r15
mov rdx, r14
mov rcx, r15
cmp rbx, r12
jbe 0x140059464
mov r8, r12
call sub.VCRUNTIME140.dll_memmove
lea rdx, [r12 + r14]
sub rbx, r12
mov r8, rbx
mov rcx, rdi
call sub.VCRUNTIME140.dll_memmove
add rdi, rbx
jmp 0x140059470
mov r8, rbx
call sub.VCRUNTIME140.dll_memmove
lea rdi, [rbx + r15]
movabs r12, 0x7fffffffffffffff
mov qword [rsp + 0x28], rdi
mov rcx, qword [rsp + 0x58]
mov qword [rbp - 0x10], rcx
mov rax, qword [rbp - 0x80]
mov qword [rbp - 8], rax
mov qword [rbp - 0x20], r15
mov qword [rbp - 0x18], rax
movaps xmm0, xmmword [rbp - 0x20]
movdqa xmmword [rbp - 0x40], xmm0
movaps xmm1, xmmword [rbp - 0x10]
movdqa xmmword [rsp + 0x70], xmm1
mov r9, rax
mov rdx, r15
mov r8, rcx
mov rcx, rax
cmp rax, 0x20
jb 0x14005955a
mov rdx, qword [rbp - 0x40]
movups xmm1, xmmword [rdx]
movups xmmword [rbp + 0x28], xmm1
movups xmm3, xmmword [rdx + 0x10]
movups xmmword [rbp + 0x38], xmm3
mov r8, qword [rsp + 0x70]
movq rcx, xmm1
xor rcx, qword [r8]
mov qword [rbp + 0x28], rcx
mov rax, qword [r8 + 8]
xor qword [rbp + 0x30], rax
movq rcx, xmm3
xor rcx, qword [r8 + 0x10]
mov qword [rbp + 0x38], rcx
mov rax, qword [r8 + 0x18]
xor qword [rbp + 0x40], rax
movups xmm0, xmmword [rbp + 0x28]
movups xmmword [rdx], xmm0
movups xmm1, xmmword [rbp + 0x38]
movups xmmword [rdx + 0x10], xmm1
add rdx, 0x20
mov r9, qword [rbp - 0x38]
add r9, 0xffffffffffffffe0
mov qword [rbp], rdx
mov qword [rbp + 8], r9
movaps xmm0, xmmword [rbp]
movdqa xmmword [rbp - 0x40], xmm0
add r8, 0x20
mov rax, qword [rsp + 0x78]
add rax, 0xffffffffffffffe0
mov qword [rbp + 0x10], r8
mov qword [rbp + 0x18], rax
movaps xmm0, xmmword [rbp + 0x10]
movdqa xmmword [rsp + 0x70], xmm0
cmp r9, 0x20
jae 0x1400594c1
mov rcx, r9
test r9, r9
je 0x140059575
sub r8, rdx
movzx eax, byte [rdx]
xor al, byte [rdx + r8]
mov byte [rdx], al
lea rdx, [rdx + 1]
sub rcx, 1
jne 0x140059562
sub rdi, r15
mov rcx, qword [rbp - 0x78]
mov rax, qword [rcx]
mov rbx, qword [rax + 0x48]
call qword [rax + 0x30]
mov rcx, rax
xor edx, edx
mov rax, rdi
div rcx
mov r9, rax
mov r8, r15
mov rdx, r15
mov rcx, qword [rbp - 0x78]
call rbx
lea rdx, [rsp + 0x20]
mov rcx, qword [rbp - 0x70]
call fcn.140051f10
mov rax, qword [rbp - 0x68]
inc rax
mov qword [rbp - 0x68], rax
mov rdx, qword [rsp + 0x58]
add rdx, qword [rbp - 0x80]
mov qword [rsp + 0x58], rdx
mov rbx, qword [rsp + 0x30]
mov rdi, qword [rsp + 0x28]
mov r15, qword [rsp + 0x20]
cmp rax, qword [rbp - 0x58]
je 0x1400595eb
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x70], rdi
jmp 0x1400591c6
mov r13, qword [rbp - 0x30]
test r13, r13
je 0x140059749
mov rdx, qword [rbp - 0x60]
add rdx, 0x28
lea rcx, [rsp + 0x40]
call fcn.140051f10
mov rsi, qword [rsp + 0x48]
mov r14, qword [rsp + 0x40]
sub rsi, r14
sub rbx, r15
cmp rsi, rbx
jbe 0x1400596a0
cmp rsi, r12
ja 0x1400597a6
mov rcx, rbx
shr rcx, 1
mov rax, r12
sub rax, rcx
cmp rbx, rax
ja 0x140059648
lea r12, [rcx + rbx]
cmp r12, rsi
cmovb r12, rsi
test r15, r15
je 0x14005966f
mov r8d, 1
mov rdx, rbx
mov rcx, r15
call fcn.14000de60
xor eax, eax
mov qword [rsp + 0x20], rax
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x30], rax
mov edx, 1
mov rcx, r12
call fcn.14000ddc0
mov r15, rax
mov qword [rsp + 0x20], rax
add rax, r12
mov qword [rsp + 0x30], rax
mov r8, rsi
mov rdx, r14
mov rcx, r15
call sub.VCRUNTIME140.dll_memmove
lea rdi, [r15 + rsi]
jmp 0x1400596dc
mov rbx, rdi
sub rbx, r15
mov rdx, r14
mov rcx, r15
cmp rsi, rbx
jbe 0x1400596d0
mov r8, rbx
call sub.VCRUNTIME140.dll_memmove
lea rdx, [rbx + r14]
sub rsi, rbx
mov r8, rsi
mov rcx, rdi
call sub.VCRUNTIME140.dll_memmove
add rdi, rsi
jmp 0x1400596dc
mov r8, rsi
call sub.VCRUNTIME140.dll_memmove
lea rdi, [rsi + r15]
mov qword [rsp + 0x28], rdi
mov rdx, qword [rbp - 0x58]
imul rdx, qword [rbp - 0x80]
add rdx, qword [rbp - 0x50]
mov r8, r13
mov rcx, r15
call fcn.140019b00
xor byte [r15 + r13], 0x80
sub rdi, r15
mov rsi, qword [rbp - 0x78]
mov r8, qword [rsi]
mov rbx, qword [r8 + 0x48]
mov rcx, rsi
call qword [r8 + 0x30]
mov r8, rax
xor edx, edx
mov rax, rdi
div r8
mov r9, rax
mov r8, r15
mov rdx, r15
mov rcx, rsi
call rbx
lea rdx, [rsp + 0x20]
mov rdi, qword [rbp - 0x70]
mov rcx, rdi
call fcn.140051f10
mov rbx, qword [rsp + 0x30]
mov r15, qword [rsp + 0x20]
jmp 0x14005974d
mov rdi, qword [rbp - 0x70]
test r15, r15
je 0x140059767
sub rbx, r15
mov r8d, 1
mov rdx, rbx
mov rcx, r15
call fcn.14000de60
nop
test r14, r14
je 0x140059783
mov rdx, qword [rsp + 0x50]
sub rdx, r14
mov r8d, 1
mov rcx, r14
call fcn.14000de60
nop
mov rax, rdi
mov rcx, qword [rbp + 0x48]
xor rcx, rsp
call fcn.140092a00
add rsp, 0x158
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
call fcn.1400093c0
nop
call fcn.1400093c0
int3
call fcn.1400093c0
nop
call fcn.1400093c0
nop
call fcn.1400093c0
int3