Function at 0x409ae0
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
movaps xmmword [rsp + 0x50], xmm6
mov r12, r8
mov rsi, rdx
mov r14, rcx
test r8, r8
je 0x409c90
mov rcx, qword [0x0043d0c0]
test rcx, rcx
jne 0x409b2b
call sub.KERNEL32.DLL_GetProcessHeap
test rax, rax
je 0x40a08c
mov rcx, rax
mov qword [0x0043d0c0], rax
xor edx, edx
mov r8, r12
call sub.KERNEL32.DLL_HeapAlloc
test rax, rax
je 0x40a08c
mov r13, rax
mov rcx, rax
mov rdx, rsi
mov r8, r12
call sub.msvcrt.dll_memcpy
lea rsi, [r12 - 1]
mov rax, rsi
inc rax
mov rcx, 0xffffffffffffffff
cmovne rcx, rax
cmp rcx, 9
mov r15d, 8
cmovae r15, rcx
mov rcx, qword [0x0043d0c0]
test rcx, rcx
jne 0x409b97
call sub.KERNEL32.DLL_GetProcessHeap
test rax, rax
je 0x40a09b
mov rcx, rax
mov qword [0x0043d0c0], rax
xor edx, edx
mov r8, r15
call sub.KERNEL32.DLL_HeapAlloc
test rax, rax
je 0x40a09b
mov rbx, rax
mov byte [rax], 1
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x30], r15
mov qword [rsp + 0x38], 1
test rsi, rsi
je 0x409ce0
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x40], r12
lea rbp, [r12 - 2]
lea r14, [0x00436861]
mov esi, 1
lea r15, [0x00436865]
mov rdi, r14
jmp 0x409c20
mov r12b, 1
mov rdi, r14
cmp rsi, qword [rsp + 0x30]
je 0x409c34
mov byte [rbx + rsi], r12b
add rsi, 1
mov qword [rsp + 0x38], rsi
add rbp, 0xffffffffffffffff
jae 0x409c59
cmp rdi, r15
je 0x409c00
movzx r12d, byte [rdi]
add rdi, 1
cmp rsi, qword [rsp + 0x30]
jne 0x409c0d
mov r8, rbp
inc r8
mov rax, 0xffffffffffffffff
cmove r8, rax
lea rcx, [rsp + 0x28]
mov rdx, rsi
call fcn.0040a0f0
mov rbx, qword [rsp + 0x28]
jmp 0x409c0d
mov rbx, qword [rsp + 0x28]
mov r15, qword [rsp + 0x30]
mov r14, qword [rsp + 0x48]
lea rsi, [r14 + 8]
mov r12, qword [rsp + 0x40]
test r12, r12
je 0x409cb2
lea rbp, [r12 + r13]
lea rdi, [rbx + r12]
mov rcx, qword [0x0043d0c0]
test rcx, rcx
jne 0x409d1c
jmp 0x409d04
mov r13d, 1
mov ecx, 1
mov rdx, rsi
mov r8, r12
call sub.msvcrt.dll_memcpy
lea rsi, [r14 + 8]
xor r15d, r15d
mov ebx, 1
mov qword [rsi], 1
mov qword [r14 + 0x10], r12
mov qword [r14 + 0x18], 0
xor eax, eax
mov qword [r14 + 0x18], rax
mov qword [r14], 0
test r12, r12
jne 0x409da9
jmp 0x409dba
cmp r12, 1
jne 0x409e3d
lea rbp, [r12 + r13]
mov rdi, rbx
add rdi, r12
lea rsi, [r14 + 8]
mov rcx, qword [0x0043d0c0]
test rcx, rcx
jne 0x409d1c
call sub.KERNEL32.DLL_GetProcessHeap
test rax, rax
je 0x40a08c
mov rcx, rax
mov qword [0x0043d0c0], rax
xor edx, edx
mov r8, r12
call sub.KERNEL32.DLL_HeapAlloc
test rax, rax
je 0x40a08c
mov qword [rsi], rax
mov qword [r14 + 0x10], r12
mov qword [r14 + 0x18], 0
cmp r12, 8
jae 0x409dfb
xor esi, esi
mov rdx, rax
mov rdi, rsi
not rdi
add rdi, r12
mov rbp, r12
and rbp, 3
je 0x409f07
nop word cs:[rax + rax]
nop dword [rax]
movzx eax, byte [rbx + rsi]
xor al, byte [r13 + rsi]
lea rcx, [rsi + 1]
mov byte [rdx], al
add rdx, 1
mov rsi, rcx
add rbp, 0xffffffffffffffff
jne 0x409d70
mov rax, r12
cmp rdi, 3
jae 0x409f17
mov qword [r14 + 0x18], rax
mov qword [r14], 0
test r12, r12
je 0x409dba
mov rcx, qword [0x0043d0c0]
xor edx, edx
mov r8, r13
call sub.KERNEL32.DLL_HeapFree
test r15, r15
je 0x409de5
mov rcx, qword [0x0043d0c0]
xor edx, edx
mov r8, rbx
movaps xmm6, xmmword [rsp + 0x50]
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp sub.KERNEL32.DLL_HeapFree
movaps xmm6, xmmword [rsp + 0x50]
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rdx, [rax + r12]
cmp rax, rbp
setb r8b
cmp r13, rdx
setb r9b
cmp rax, rdi
setb cl
cmp rbx, rdx
setb dl
xor esi, esi
test r8b, r9b
jne 0x409d4a
and cl, dl
jne 0x409d4a
cmp r12, 0x20
jae 0x409f87
xor esi, esi
jmp 0x40a041
mov rcx, qword [0x0043d0c0]
test rcx, rcx
jne 0x409e61
call sub.KERNEL32.DLL_GetProcessHeap
test rax, rax
je 0x40a0aa
mov rcx, rax
mov qword [0x0043d0c0], rax
mov r8d, 0x28
xor edx, edx
call sub.KERNEL32.DLL_HeapAlloc
test rax, rax
je 0x40a0aa
mov rsi, rax
mov rax, qword [0x00436ac8]
mov qword [rsi + 0x20], rax
movups xmm0, xmmword [0x00436ab8]
movups xmmword [rsi + 0x10], xmm0
movups xmm0, xmmword [str.The_given_slices_are_not_the_same_length__A]
movups xmmword [rsi], xmm0
mov qword [rsp + 0x28], rsi
movaps xmm6, xmmword [0x00435090]
movups xmmword [rsp + 0x30], xmm6
mov rcx, qword [0x0043d0c0]
test rcx, rcx
jne 0x409ecf
call sub.KERNEL32.DLL_GetProcessHeap
test rax, rax
je 0x40a0bb
mov rcx, rax
mov qword [0x0043d0c0], rax
mov r8d, 0x18
xor edx, edx
call sub.KERNEL32.DLL_HeapAlloc
test rax, rax
je 0x40a0bb
mov qword [rax], rsi
movups xmmword [rax + 8], xmm6
mov qword [r14 + 8], rax
lea rax, fcn.004179b0
mov qword [r14 + 0x10], rax
mov qword [r14], 1
jmp 0x409da9
mov rcx, rsi
mov rax, r12
cmp rdi, 3
jb 0x409d99
sub rax, rcx
lea rsi, [rcx + r13]
add rsi, 3
lea rbp, [rbx + rcx]
add rbp, 3
xor edi, edi
nop dword [rax]
movzx ecx, byte [rbp + rdi - 3]
xor cl, byte [rsi + rdi - 3]
mov byte [rdx + rdi], cl
movzx ecx, byte [rbp + rdi - 2]
xor cl, byte [rsi + rdi - 2]
mov byte [rdx + rdi + 1], cl
movzx ecx, byte [rbp + rdi - 1]
xor cl, byte [rsi + rdi - 1]
mov byte [rdx + rdi + 2], cl
movzx ecx, byte [rbp + rdi]
xor cl, byte [rsi + rdi]
mov byte [rdx + rdi + 3], cl
add rdi, 4
cmp rax, rdi
jne 0x409f30
mov rax, r12
mov qword [r14 + 0x18], rax
mov qword [r14], 0
test r12, r12
jne 0x409da9
jmp 0x409dba
mov rsi, r12
and rsi, 0xffffffffffffffe0
lea rcx, [rsi - 0x20]
mov rdi, rcx
shr rdi, 5
add rdi, 1
test rcx, rcx
je 0x40a006
mov rbp, rdi
and rbp, 0xfffffffffffffffe
xor edx, edx
nop dword [rax + rax]
movups xmm0, xmmword [r13 + rdx]
movups xmm1, xmmword [r13 + rdx + 0x10]
movups xmm2, xmmword [rbx + rdx]
xorps xmm2, xmm0
movups xmm0, xmmword [rbx + rdx + 0x10]
xorps xmm0, xmm1
movups xmmword [rax + rdx], xmm2
movups xmmword [rax + rdx + 0x10], xmm0
movups xmm0, xmmword [r13 + rdx + 0x20]
movups xmm1, xmmword [r13 + rdx + 0x30]
movups xmm2, xmmword [rbx + rdx + 0x20]
xorps xmm2, xmm0
movups xmm0, xmmword [rbx + rdx + 0x30]
xorps xmm0, xmm1
movups xmmword [rax + rdx + 0x20], xmm2
movups xmmword [rax + rdx + 0x30], xmm0
add rdx, 0x40
add rbp, 0xfffffffffffffffe
jne 0x409fb0
jmp 0x40a008
xor edx, edx
test dil, 1
je 0x40a032
movups xmm0, xmmword [r13 + rdx]
movups xmm1, xmmword [r13 + rdx + 0x10]
movups xmm2, xmmword [rbx + rdx]
xorps xmm2, xmm0
movups xmm0, xmmword [rbx + rdx + 0x10]
xorps xmm0, xmm1
movups xmmword [rax + rdx], xmm2
movups xmmword [rax + rdx + 0x10], xmm0
cmp rsi, r12
je 0x409f6b
test r12b, 0x18
je 0x40a084
mov rcx, rsi
mov rsi, r12
and rsi, 0xfffffffffffffff8
mov rdx, rax
add rdx, rsi
nop word cs:[rax + rax]
nop dword [rax + rax]
mov rbp, qword [rbx + rcx]
xor rbp, qword [r13 + rcx]
mov qword [rax + rcx], rbp
add rcx, 8
cmp rsi, rcx
jne 0x40a060
cmp rsi, r12
jne 0x409d4d
jmp 0x409f6b
add rax, rsi
jmp 0x409d4a
mov edx, 1
mov rcx, r12
call fcn.004018d0
ud2
mov edx, 1
mov rcx, r15
call fcn.004018d0
ud2
mov ecx, 0x28
mov edx, 1
call fcn.004018d0
ud2
mov ecx, 0x18
mov edx, 8
call fcn.004018d0
ud2