Function at 0x140296c80
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 [0x1403531c0]
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 0x140296d2f
cmp rax, r12
ja 0x14029740c
mov edx, 1
mov rcx, rax
call fcn.140245630
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 fcn.1402f7260
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 0x140296d88
cmp rsi, r12
ja 0x140297412
mov edx, r13d
mov rcx, rsi
call fcn.140245630
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 fcn.1402f7260
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 0x140296df3
cmp rsi, r12
ja 0x140297418
mov edx, 1
mov rcx, rsi
call fcn.140245630
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 fcn.1402f7260
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 0x14029724b
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 0x140296e51
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 0x140296fdd
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 0x140296f25
movabs rax, 0x7fffffffffffffff
cmp rbx, rax
ja 0x14029741e
mov edx, 1
mov rcx, rbx
call fcn.140245630
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 fcn.1402f7260
mov rbx, r12
mov qword [rbp + 0x30], rbx
jmp 0x140296f2d
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.14029a8d0
mov rdx, qword [rsi + 0x60]
cmp rdx, qword [rsi + 0x68]
je 0x140296f68
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 0x140296f7d
lea r8, [rbp + 0x28]
lea rcx, [rsi + 0x58]
call fcn.140294210
mov rax, qword [rbp + 0x38]
mov rcx, qword [rbp + 0x28]
and r13d, 0xfffffffd
mov dword [rsp + 0x38], r13d
test rcx, rcx
je 0x140296f9d
sub rax, rcx
mov r8d, 1
mov rdx, rax
call fcn.1402456d0
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 0x140296ec0
movabs r12, 0x7fffffffffffffff
lea rax, [r9 + r9*2]
lea rdx, [r8 + rax*8]
lea rcx, [rsp + 0x40]
call fcn.14028faf0
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 0x14029708f
cmp rbx, r12
ja 0x140297406
mov rdx, rcx
shr rdx, 1
mov rax, r12
sub rax, rdx
cmp rcx, rax
jbe 0x14029702c
mov rdi, r12
jmp 0x140297037
lea rdi, [rdx + rcx]
cmp rdi, rbx
cmovb rdi, rbx
test r15, r15
je 0x14029705e
mov r8d, 1
mov rdx, rcx
mov rcx, r15
call fcn.1402456d0
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.140245630
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 fcn.1402f6bc0
lea rdi, [r15 + rbx]
jmp 0x1402970da
mov rdi, qword [rsp + 0x70]
mov r12, rdi
sub r12, r15
mov rdx, r14
mov rcx, r15
cmp rbx, r12
jbe 0x1402970c4
mov r8, r12
call fcn.1402f6bc0
lea rdx, [r12 + r14]
sub rbx, r12
mov r8, rbx
mov rcx, rdi
call fcn.1402f6bc0
add rdi, rbx
jmp 0x1402970d0
mov r8, rbx
call fcn.1402f6bc0
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 0x1402971ba
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 0x140297121
mov rcx, r9
test r9, r9
je 0x1402971d5
sub r8, rdx
movzx eax, byte [rdx]
xor al, byte [rdx + r8]
mov byte [rdx], al
lea rdx, [rdx + 1]
sub rcx, 1
jne 0x1402971c2
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.14028faf0
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 0x14029724b
mov qword [rsp + 0x60], rbx
mov qword [rsp + 0x70], rdi
jmp 0x140296e26
mov r13, qword [rbp - 0x30]
test r13, r13
je 0x1402973a9
mov rdx, qword [rbp - 0x60]
add rdx, 0x28
lea rcx, [rsp + 0x40]
call fcn.14028faf0
mov rsi, qword [rsp + 0x48]
mov r14, qword [rsp + 0x40]
sub rsi, r14
sub rbx, r15
cmp rsi, rbx
jbe 0x140297300
cmp rsi, r12
ja 0x140297406
mov rcx, rbx
shr rcx, 1
mov rax, r12
sub rax, rcx
cmp rbx, rax
ja 0x1402972a8
lea r12, [rcx + rbx]
cmp r12, rsi
cmovb r12, rsi
test r15, r15
je 0x1402972cf
mov r8d, 1
mov rdx, rbx
mov rcx, r15
call fcn.1402456d0
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.140245630
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 fcn.1402f6bc0
lea rdi, [r15 + rsi]
jmp 0x14029733c
mov rbx, rdi
sub rbx, r15
mov rdx, r14
mov rcx, r15
cmp rsi, rbx
jbe 0x140297330
mov r8, rbx
call fcn.1402f6bc0
lea rdx, [rbx + r14]
sub rsi, rbx
mov r8, rsi
mov rcx, rdi
call fcn.1402f6bc0
add rdi, rsi
jmp 0x14029733c
mov r8, rsi
call fcn.1402f6bc0
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.140249980
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.14028faf0
mov rbx, qword [rsp + 0x30]
mov r15, qword [rsp + 0x20]
jmp 0x1402973ad
mov rdi, qword [rbp - 0x70]
test r15, r15
je 0x1402973c7
sub rbx, r15
mov r8d, 1
mov rdx, rbx
mov rcx, r15
call fcn.1402456d0
nop
test r14, r14
je 0x1402973e3
mov rdx, qword [rsp + 0x50]
sub rdx, r14
mov r8d, 1
mov rcx, r14
call fcn.1402456d0
nop
mov rax, rdi
mov rcx, qword [rbp + 0x48]
xor rcx, rsp
call fcn.1402d55d0
add rsp, 0x158
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
call fcn.1400037e0
nop
call fcn.1400037e0
int3
call fcn.1400037e0
nop
call fcn.1400037e0
nop
call fcn.1400037e0
int3