Function at 0x140201140
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rax, qword [rcx + 0x18]
mov qword [rsp + 0x40], rax
inc rax
je 0x140201a1f
mov r15, rdx
mov rsi, rcx
mov r13, qword [rcx + 8]
lea r12, [r13 + 1]
mov rcx, r12
shr rcx, 3
mov r9, r12
and r9, 0xfffffffffffffff8
sub r9, rcx
cmp r13, 8
cmovb r9, r13
movabs r8, 0x7ffffffffffffff0
mov rcx, r9
shr rcx, 1
cmp rax, rcx
mov qword [rsp + 0x28], rsi
jbe 0x1402011c9
inc r9
cmp rax, r9
cmova r9, rax
cmp r9, 8
jae 0x1402011fb
xor eax, eax
cmp r9, 4
setae al
lea rdi, [rax*4 + 4]
jmp 0x140201267
mov qword [rsp + 0x48], r9
mov rsi, qword [rsi]
mov rcx, r12
shr rcx, 4
xor eax, eax
test r12b, 0xf
setne al
add rax, rcx
je 0x1402014d1
cmp rax, 1
jne 0x14020145f
xor edx, edx
jmp 0x1402014b7
movabs rax, 0x1ffffffffffffffe
add rax, 2
cmp r9, rax
jae 0x140201a1f
shl r9, 3
mov edi, 1
cmp r9, 0xe
jb 0x140201267
movabs rcx, 0x2492492492492493
mov rax, r9
mul rcx
sub r9, rdx
shr r9, 1
add r9, rdx
shr r9, 2
dec r9
bsr rcx, r9
not ecx
mov rdi, 0xffffffffffffffff
shr rdi, cl
movabs rax, 0xffffffffffffffe
cmp rdi, rax
ja 0x140201a1f
inc rdi
mov rbp, rdi
shl rbp, 4
lea r14, [rdi + 0x10]
mov r12, rbp
add r12, r14
jb 0x140201a1f
cmp r12, r8
ja 0x140201a1f
test r12, r12
je 0x1402012cf
movzx eax, byte [0x1403f6a90]
mov rcx, qword [0x1403f6548]
test rcx, rcx
jne 0x1402012b3
call sub.kernel32.dll_GetProcessHeap
test rax, rax
je 0x1402012c5
mov rcx, rax
mov qword [0x1403f6548], rax
xor edx, edx
mov r8, r12
call sub.kernel32.dll_HeapAlloc
mov rbx, rax
test rax, rax
jne 0x1402012d4
mov rcx, r12
call fcn.140150410
ud2
mov ebx, 0x10
lea rsi, [rdi - 1]
mov rax, rdi
shr rax, 3
mov r12, rdi
and r12, 0xfffffffffffffff8
sub r12, rax
cmp rdi, 9
cmovb r12, rsi
add rbx, rbp
mov rcx, rbx
mov dl, 0xff
mov r8, r14
call sub.msvcrt.dll_memset
sub r12, qword [rsp + 0x40]
cmp r13, 0xffffffffffffffff
je 0x14020141b
mov qword [rsp + 0x30], r12
mov rax, qword [rsp + 0x28]
mov r14, qword [rax]
lea rax, [r14 - 0x10]
mov qword [rsp + 0x38], rax
mov r12, qword [r15]
mov r15, qword [r15 + 8]
xor edi, edi
jmp 0x14020137a
shr rax, 0x39
lea rcx, [rdx - 0x10]
and rcx, rsi
mov byte [rbx + rdx], al
mov byte [rcx + rbx + 0x10], al
mov rax, r14
sub rax, rbp
shl rdx, 4
neg rdx
movdqu xmm0, xmmword [rax - 0x10]
movdqu xmmword [rbx + rdx - 0x10], xmm0
lea rax, [rdi + 1]
cmp rdi, r13
mov rdi, rax
je 0x1402013fc
cmp byte [r14 + rdi], 0
js 0x14020136a
mov rbp, rdi
shl rbp, 4
mov rax, qword [rsp + 0x38]
sub rax, rbp
mov r8, qword [rax]
mov rcx, r12
mov rdx, r15
call fcn.140200f80
mov rcx, rax
and rcx, rsi
movdqu xmm0, xmmword [rbx + rcx]
pmovmskb edx, xmm0
test edx, edx
jne 0x1402013d7
mov r8d, 0x10
nop word [rax + rax]
add rcx, r8
and rcx, rsi
movdqu xmm0, xmmword [rbx + rcx]
pmovmskb edx, xmm0
add r8, 0x10
test edx, edx
je 0x1402013c0
tzcnt edx, edx
add rdx, rcx
and rdx, rsi
cmp byte [rbx + rdx], 0
js 0x140201340
movdqa xmm0, xmmword [rbx]
pmovmskb ecx, xmm0
tzcnt edx, ecx
jmp 0x140201340
mov rax, qword [rsp + 0x28]
mov qword [rax], rbx
mov qword [rax + 8], rsi
mov rcx, qword [rsp + 0x30]
mov qword [rax + 0x10], rcx
test r13, r13
jne 0x14020142e
jmp 0x1402014fe
mov rax, qword [rsp + 0x28]
mov r14, qword [rax]
mov qword [rax], rbx
mov qword [rax + 8], rsi
mov qword [rax + 0x10], r12
mov rax, r13
shl rax, 4
add r13, rax
cmp r13, 0xffffffffffffffdf
je 0x1402014fe
sub r14, rax
add r14, 0xfffffffffffffff0
mov rcx, qword [0x1403f6548]
xor edx, edx
mov r8, r14
call fcn.140302ad4
jmp 0x1402014fe
movabs rcx, 0x1ffffffffffffffe
and rcx, rax
xor r8d, r8d
movdqa xmm0, xmmword [0x14030ba70]
nop word [rax + rax]
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [rsi + r8]
por xmm1, xmm0
movdqa xmmword [rsi + r8], xmm1
lea rdx, [r8 + 0x20]
pxor xmm1, xmm1
pcmpgtb xmm1, xmmword [rsi + r8 + 0x10]
por xmm1, xmm0
movdqa xmmword [rsi + r8 + 0x10], xmm1
mov r8, rdx
add rcx, 0xfffffffffffffffe
jne 0x140201480
test al, 1
je 0x1402014d1
pxor xmm0, xmm0
pcmpgtb xmm0, xmmword [rsi + rdx]
por xmm0, xmmword [0x14030ba70]
movdqa xmmword [rsi + rdx], xmm0
cmp r12, 0x10
jae 0x14020151d
lea rcx, [rsi + 0x10]
mov rdx, rsi
mov r8, r12
call sub.msvcrt.dll_memmove
test r12, r12
jne 0x140201527
mov rcx, qword [rsp + 0x48]
sub rcx, qword [rsp + 0x40]
mov rax, qword [rsp + 0x28]
mov qword [rax + 0x10], rcx
movabs rax, 0x7ffffffffffffff0
add rax, 0x11
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movdqu xmm0, xmmword [rsi]
movdqu xmmword [rsi + r12], xmm0
lea rax, [rsi - 0x10]
mov qword [rsp + 0x50], rax
mov rax, qword [r15]
mov rcx, qword [r15 + 8]
movabs rdx, 0x736f6d6570736575
xor rdx, rax
movabs r8, 0x646f72616e646f6d
xor r8, rcx
add rdx, r8
rol r8, 0xd
movabs r9, 0x6c7967656e657261
xor r8, rdx
rol rdx, 0x20
mov qword [rsp + 0x38], rdx
xor r9, rax
mov qword [rsp + 0x60], r9
mov qword [rsp + 0x30], r8
rol r8, 0x11
mov qword [rsp + 0x58], r8
xor r15d, r15d
movabs r12, 0x7465646279746573
xor r12, rcx
jmp 0x1402015c4
shr r8, 0x39
lea rax, [r15 - 0x10]
and rax, r13
mov byte [rsi + r15], r8b
mov byte [rax + rsi + 0x10], r8b
lea rax, [r15 + 1]
cmp r15, r13
mov r15, rax
je 0x1402014eb
cmp byte [rsi + r15], 0x80
jne 0x1402015b4
mov rax, r15
shl rax, 4
mov r14, rsi
sub r14, rax
add r14, 0xfffffffffffffff0
mov rdx, qword [rsp + 0x50]
sub rdx, rax
nop word cs:[rax + rax]
mov rax, qword [rdx]
movzx ebp, byte [rax + 0x28]
mov r8, qword [rax + 0x10]
mov rbx, qword [rax + 0x20]
lea r10, [rbx*8]
cmp r10, 7
mov edi, 7
cmovb rdi, r10
cmp rdi, 3
jbe 0x140201630
mov r9d, dword [r8]
mov eax, 4
mov rcx, rax
or rcx, 1
cmp rcx, rdi
jb 0x140201641
jmp 0x140201657
xor r9d, r9d
xor eax, eax
mov rcx, rax
or rcx, 1
cmp rcx, rdi
jae 0x140201657
movzx r11d, word [r8 + rax]
lea ecx, [rax*8]
shl r11, cl
or r9, r11
or rax, 2
cmp rax, rdi
jae 0x14020166c
movzx r11d, byte [r8 + rax]
shl eax, 3
mov ecx, eax
shl r11, cl
or r9, r11
mov rdi, rbx
shl rdi, 8
or rdi, rbp
mov rax, r12
xor rax, rdi
mov rcx, qword [rsp + 0x60]
lea rbp, [rax + rcx]
rol rax, 0x10
xor rax, rbp
mov rcx, qword [rsp + 0x38]
lea r11, [rax + rcx]
rol rax, 0x15
xor rax, r11
add rbp, qword [rsp + 0x30]
mov rcx, rbp
xor rcx, qword [rsp + 0x58]
rol rbp, 0x20
xor rdi, r11
shld r9, rbx, 8
test rbx, rbx
je 0x140201758
add rdi, rcx
rol rcx, 0xd
xor rcx, rdi
rol rdi, 0x20
xor rax, r9
add rbp, rax
rol rax, 0x10
xor rax, rbp
add rdi, rax
rol rax, 0x15
add rbp, rcx
rol rcx, 0x11
xor rcx, rbp
rol rbp, 0x20
xor rax, rdi
xor rdi, r9
add r10, 0xfffffffffffffff9
mov r9d, 7
and r10, 0xfffffffffffffff8
je 0x140201753
nop word cs:[rax + rax]
add rdi, rcx
rol rcx, 0xd
mov r11, qword [r8 + r9]
xor rcx, rdi
rol rdi, 0x20
xor rax, r11
add rbp, rax
rol rax, 0x10
xor rax, rbp
add rdi, rax
rol rax, 0x15
add rbp, rcx
rol rcx, 0x11
xor rcx, rbp
rol rbp, 0x20
xor rax, rdi
xor rdi, r11
add r9, 8
cmp r9, r10
jb 0x140201710
movzx r9d, byte [r8 + r9]
shl rbx, 0x3b
movabs r8, 0x900000000000000
add rbx, r8
add rdi, rcx
rol rcx, 0xd
or rbx, r9
xor rcx, rdi
rol rdi, 0x20
xor rax, rbx
add rbp, rax
rol rax, 0x10
xor rax, rbp
add rdi, rax
rol rax, 0x15
add rbp, rcx
rol rcx, 0x11
xor rax, rdi
xor rcx, rbp
rol rbp, 0x20
xor rdi, rbx
add rdi, rcx
rol rcx, 0xd
xor rcx, rdi
rol rdi, 0x20
xor rbp, 0xff
add rbp, rax
rol rax, 0x10
xor rax, rbp
add rdi, rax
rol rax, 0x15
add rbp, rcx
rol rcx, 0x11
xor rcx, rbp
rol rbp, 0x20
xor rax, rdi
add rdi, rcx
rol rcx, 0xd
xor rcx, rdi
rol rdi, 0x20
add rbp, rax
rol rax, 0x10
xor rax, rbp
add rdi, rax
rol rax, 0x15
add rbp, rcx
rol rcx, 0x11
xor rcx, rbp
rol rbp, 0x20
xor rax, rdi
add rdi, rcx
rol rcx, 0xd
add rbp, rax
rol rax, 0x10
xor rax, rbp
rol rax, 0x15
xor rcx, rdi
add rbp, rcx
rol rcx, 0x11
mov r8, rbp
rol r8, 0x20
xor r8, rcx
xor r8, rax
xor r8, rbp
mov rax, r8
and rax, r13
movdqu xmm0, xmmword [rsi + rax]
pmovmskb ecx, xmm0
mov r9, rax
test ecx, ecx
jne 0x140201878
mov r10d, 0x10
mov r9, rax
nop word [rax + rax]
add r9, r10
and r9, r13
movdqu xmm0, xmmword [rsi + r9]
pmovmskb ecx, xmm0
add r10, 0x10
test ecx, ecx
je 0x140201860
tzcnt ecx, ecx
add rcx, r9
and rcx, r13
cmp byte [rsi + rcx], 0
js 0x140201894
movdqa xmm0, xmmword [rsi]
pmovmskb ecx, xmm0
tzcnt ecx, ecx
mov r9, r15
sub r9, rax
mov r10, rcx
sub r10, rax
xor r10, r9
and r10, r13
cmp r10, 0x10
jb 0x1402015a0
mov rax, rcx
shl rax, 4
neg rax
add rax, rsi
add rax, 0xfffffffffffffff0
movzx r9d, byte [rsi + rcx]
shr r8, 0x39
lea r10, [rcx - 0x10]
and r10, r13
mov byte [rsi + rcx], r8b
mov byte [r10 + rsi + 0x10], r8b
cmp r9b, 0xff
je 0x140201a00
movzx ecx, byte [r14]
movzx r8d, byte [rax]
mov byte [r14], r8b
mov byte [rax], cl
movzx ecx, byte [r14 + 1]
movzx r8d, byte [rax + 1]
mov byte [r14 + 1], r8b
mov byte [rax + 1], cl
movzx ecx, byte [r14 + 2]
movzx r8d, byte [rax + 2]
mov byte [r14 + 2], r8b
mov byte [rax + 2], cl
movzx ecx, byte [r14 + 3]
movzx r8d, byte [rax + 3]
mov byte [r14 + 3], r8b
mov byte [rax + 3], cl
movzx ecx, byte [r14 + 4]
movzx r8d, byte [rax + 4]
mov byte [r14 + 4], r8b
mov byte [rax + 4], cl
movzx ecx, byte [r14 + 5]
movzx r8d, byte [rax + 5]
mov byte [r14 + 5], r8b
mov byte [rax + 5], cl
movzx ecx, byte [r14 + 6]
movzx r8d, byte [rax + 6]
mov byte [r14 + 6], r8b
mov byte [rax + 6], cl
movzx ecx, byte [r14 + 7]
movzx r8d, byte [rax + 7]
mov byte [r14 + 7], r8b
mov byte [rax + 7], cl
movzx ecx, byte [r14 + 8]
movzx r8d, byte [rax + 8]
mov byte [r14 + 8], r8b
mov byte [rax + 8], cl
movzx ecx, byte [r14 + 9]
movzx r8d, byte [rax + 9]
mov byte [r14 + 9], r8b
mov byte [rax + 9], cl
movzx ecx, byte [r14 + 0xa]
movzx r8d, byte [rax + 0xa]
mov byte [r14 + 0xa], r8b
mov byte [rax + 0xa], cl
movzx ecx, byte [r14 + 0xb]
movzx r8d, byte [rax + 0xb]
mov byte [r14 + 0xb], r8b
mov byte [rax + 0xb], cl
movzx ecx, byte [r14 + 0xc]
movzx r8d, byte [rax + 0xc]
mov byte [r14 + 0xc], r8b
mov byte [rax + 0xc], cl
movzx ecx, byte [r14 + 0xd]
movzx r8d, byte [rax + 0xd]
mov byte [r14 + 0xd], r8b
mov byte [rax + 0xd], cl
movzx ecx, byte [r14 + 0xe]
movzx r8d, byte [rax + 0xe]
mov byte [r14 + 0xe], r8b
mov byte [rax + 0xe], cl
movzx ecx, byte [r14 + 0xf]
movzx r8d, byte [rax + 0xf]
mov byte [r14 + 0xf], r8b
mov byte [rax + 0xf], cl
jmp 0x1402015f0
lea rcx, [r15 - 0x10]
and rcx, r13
mov byte [rsi + r15], 0xff
mov byte [rcx + rsi + 0x10], 0xff
movdqu xmm0, xmmword [r14]
movdqu xmmword [rax], xmm0
jmp 0x1402015b4
call fcn.1401503d0
ud2