Function at 0x441560
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
test rcx, rcx
mov rbp, rcx
mov r12, rdx
mov qword [rsp + 0xa0], r8
je 0x441802
test rdx, rdx
je 0x441802
mov rcx, rdx
call sub.msvcrt.dll_strlen
test rax, rax
mov r13, rax
je 0x441900
lea r8, [r12 + rax]
mov rcx, r12
xor eax, eax
nop dword [rax]
movsx edx, byte [rcx]
add rcx, 1
add edx, eax
mov eax, edx
shl eax, 0xa
add eax, edx
mov edx, eax
shr edx, 6
xor eax, edx
cmp r8, rcx
jne 0x4415b0
lea eax, [rax + rax*8]
mov r11d, eax
shr r11d, 0xb
xor r11d, eax
mov eax, r11d
shl eax, 0xf
lea r14d, [rax + r11]
mov eax, dword [rbp]
mov rdi, qword [rbp + 8]
test eax, eax
mov dword [rsp + 0x28], eax
jle 0x4416d0
test rdi, rdi
jle 0x4416d0
mov r15, qword [rbp + 0x18]
xor ebx, ebx
jmp 0x44161d
add rbx, 1
cmp rbx, rdi
je 0x4416d0
mov rdx, qword [r15 + rbx*8]
lea rsi, [rbx*8]
test rdx, rdx
je 0x441610
mov rax, qword [rbp + 0x20]
cmp dword [rax + rbx*4], r14d
jne 0x441610
mov rcx, r12
call sub.msvcrt.dll_strcmp
test eax, eax
mov r9d, eax
jne 0x441610
mov rbx, rsi
add rbx, qword [rbp + 0x10]
mov rcx, qword [rbx]
test rcx, rcx
je 0x44166b
mov dword [rsp + 0x28], eax
call sub.msvcrt.dll_free
add rsi, qword [rbp + 0x10]
mov r9d, dword [rsp + 0x28]
mov rbx, rsi
xor r10d, r10d
cmp qword [rsp + 0xa0], 0
je 0x4416bf
mov rcx, qword [rsp + 0xa0]
mov dword [rsp + 0x28], r9d
call sub.msvcrt.dll_strlen
lea rsi, [rax + 1]
mov rcx, rsi
call sub.msvcrt.dll_malloc
test rax, rax
mov r10, rax
mov r9d, dword [rsp + 0x28]
je 0x4416bf
mov rdx, qword [rsp + 0xa0]
mov r8, rsi
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov r9d, dword [rsp + 0x28]
mov r10, rax
mov qword [rbx], r10
jmp 0x4417a3
movsxd rsi, dword [rsp + 0x28]
cmp rsi, rdi
je 0x44180a
mov rax, qword [rbp + 0x10]
mov r9, qword [rbp + 0x18]
mov qword [rsp + 0x28], rax
mov rax, qword [rbp + 0x20]
mov qword [rsp + 0x30], rax
lea rbx, [r9 + rsi*8]
jmp 0x441712
add rsi, 1
add rbx, 8
cmp rsi, qword [rbp + 8]
je 0x4417c0
mov rdi, qword [rbx]
mov r15, rbx
sub r15, r9
test rdi, rdi
jne 0x441700
add r13, 1
mov rcx, r13
call sub.msvcrt.dll_malloc
test rax, rax
mov r9, rax
je 0x441745
mov r8, r13
mov rdx, r12
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov r9, rax
mov r12, qword [rsp + 0x28]
mov qword [rbx], r9
add r12, r15
cmp qword [rsp + 0xa0], 0
je 0x44178f
mov rcx, qword [rsp + 0xa0]
call sub.msvcrt.dll_strlen
lea rbx, [rax + 1]
mov rcx, rbx
call sub.msvcrt.dll_malloc
test rax, rax
mov rdi, rax
je 0x44178f
mov rdx, qword [rsp + 0xa0]
mov r8, rbx
mov rcx, rax
call sub.msvcrt.dll_memcpy
mov rax, qword [rsp + 0x30]
mov qword [r12], rdi
xor r9d, r9d
mov dword [rax + rsi*4], r14d
add dword [rbp], 1
mov eax, r9d
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor esi, esi
jmp 0x4416f4
cmp qword [rsp + 0x28], 0
je 0x4417e3
mov rcx, qword [rsp + 0x28]
mov qword [rsp + 0x38], r9
call sub.msvcrt.dll_free
mov r9, qword [rsp + 0x38]
test r9, r9
je 0x4417f0
mov rcx, r9
call sub.msvcrt.dll_free
mov rax, qword [rsp + 0x30]
test rax, rax
je 0x441802
mov rcx, rax
call sub.msvcrt.dll_free
mov r9d, 0xffffffff
jmp 0x4417a3
lea rbx, [rdi + rdi]
mov edx, 8
mov rcx, rbx
call sub.msvcrt.dll_calloc
mov edx, 8
mov rcx, rbx
mov rsi, rax
mov qword [rsp + 0x28], rax
call sub.msvcrt.dll_calloc
mov edx, 4
mov rcx, rbx
mov qword [rsp + 0x38], rax
call sub.msvcrt.dll_calloc
test rsi, rsi
mov qword [rsp + 0x30], rax
mov r9, qword [rsp + 0x38]
je 0x4417c7
test r9, r9
je 0x4417c7
test rax, rax
je 0x4417cf
mov rbx, qword [rbp + 0x10]
mov r15, qword [rsp + 0x28]
lea rsi, [rdi*8]
mov qword [rsp + 0x38], r9
mov r8, rsi
mov rdx, rbx
mov rcx, r15
call sub.msvcrt.dll_memcpy
mov r9, qword [rsp + 0x38]
mov rdx, qword [rbp + 0x18]
mov r8, rsi
mov rcx, r9
call sub.msvcrt.dll_memcpy
mov rsi, qword [rsp + 0x30]
mov rdx, qword [rbp + 0x20]
lea r8, [rdi*4]
mov rcx, rsi
call sub.msvcrt.dll_memcpy
mov rcx, rbx
call sub.msvcrt.dll_free
mov rcx, qword [rbp + 0x18]
call sub.msvcrt.dll_free
mov rcx, qword [rbp + 0x20]
call sub.msvcrt.dll_free
mov r9, qword [rsp + 0x38]
shl qword [rbp + 8], 1
mov rcx, r12
mov qword [rbp + 0x20], rsi
mov qword [rbp + 0x10], r15
movsxd rsi, dword [rbp]
mov qword [rbp + 0x18], r9
call sub.msvcrt.dll_strlen
mov r9, qword [rsp + 0x38]
mov r13, rax
jmp 0x4416f4
xor r14d, r14d
jmp 0x4415e3