Function at 0x140027a50
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x20
mov rsi, qword [rdx + 0x10]
mov r13, r9
mov r12, r8
mov rdi, rdx
mov rbx, rcx
test rsi, rsi
jne 0x140027b07
test r9, r9
je 0x140027ab3
mov rax, qword [rdx + 0x20]
mov ecx, 0x200
mov byte [rdx + 8], 6
mov qword [rdx + 0x10], 0x40
call qword [rax]
mov qword [rdi], rax
test rax, rax
jne 0x140027aba
xor r10d, r10d
mov qword [rdi + 0x10], r10
xor eax, eax
jmp 0x140027d94
xor edx, edx
mov r8d, 0x200
mov rcx, rax
call sub.msvcrt.dll_memset
movzx eax, word [r12]
mov ecx, dword [rbx + 0x390]
mov r11, r12
test ax, ax
je 0x140027af8
nop dword [rax]
imul ecx, ecx, 0xf4243
movzx eax, ax
add r11, 2
xor ecx, eax
movzx eax, word [r11]
test ax, ax
jne 0x140027ae0
mov ebx, dword [rdi + 0x10]
mov eax, ecx
dec ebx
and rbx, rax
jmp 0x140027d53
movzx r9d, word [r8]
mov ebp, dword [rbx + 0x390]
mov rcx, r8
test r9w, r9w
je 0x140027b37
movzx eax, r9w
nop
imul ebp, ebp, 0xf4243
movzx eax, ax
add rcx, 2
xor ebp, eax
movzx eax, word [rcx]
test ax, ax
jne 0x140027b20
mov r11, qword [rdi]
lea r10d, [rsi - 1]
mov eax, ebp
mov ebx, r10d
xor dl, dl
and rbx, rax
cmp qword [r11 + rbx*8], 0
je 0x140027bba
nop
mov rax, qword [r11 + rbx*8]
mov rcx, qword [rax]
cmp r9w, word [rcx]
jne 0x140027b7f
mov r8, r12
movzx eax, r9w
sub r8, rcx
test ax, ax
je 0x140027cc6
movzx eax, word [r8 + rcx + 2]
add rcx, 2
cmp ax, word [rcx]
je 0x140027b67
test dl, dl
jne 0x140027b9d
movzx ecx, byte [rdi + 8]
mov edx, r10d
mov eax, r10d
not edx
dec ecx
shr eax, 2
and edx, ebp
shr edx, cl
and dl, al
or dl, 1
movzx ecx, dl
cmp rbx, rcx
jae 0x140027bb0
mov rax, rsi
sub rax, rcx
add rbx, rax
jmp 0x140027bb3
sub rbx, rcx
cmp qword [r11 + rbx*8], 0
jne 0x140027b50
test r13, r13
je 0x140027ab3
movzx r15d, byte [rdi + 8]
mov rdx, qword [rdi + 0x18]
lea ecx, [r15 - 1]
shr rdx, cl
test rdx, rdx
je 0x140027d53
mov rax, qword [rdi + 0x20]
inc r15b
mov r12d, 1
movzx r14d, r15b
mov ecx, r14d
shl r12, cl
lea rbx, [r12*8]
lea r13d, [r12 - 1]
mov rcx, rbx
call qword [rax]
mov rsi, rax
test rax, rax
je 0x140027ab3
mov r8, rbx
xor edx, edx
mov rcx, rax
call sub.msvcrt.dll_memset
xor r10d, r10d
cmp qword [rdi + 0x10], r10
jbe 0x140027cea
mov rbx, qword [rsp + 0x60]
mov rax, qword [rdi]
cmp qword [rax + r10*8], 0
je 0x140027cdd
mov r11, qword [rax + r10*8]
mov r9d, dword [rbx + 0x390]
mov rcx, qword [r11]
movzx eax, word [rcx]
test ax, ax
je 0x140027c79
nop word [rax + rax]
imul r9d, r9d, 0xf4243
movzx eax, ax
add rcx, 2
xor r9d, eax
movzx eax, word [rcx]
test ax, ax
jne 0x140027c60
mov edx, r9d
mov eax, r13d
xor r8b, r8b
and rdx, rax
cmp qword [rsi + rdx*8], 0
je 0x140027cd9
nop dword [rax]
test r8b, r8b
jne 0x140027cb2
mov r8d, r13d
lea ecx, [r14 - 1]
mov eax, r13d
not r8d
shr eax, 2
and r8d, r9d
shr r8d, cl
and r8b, al
or r8b, 1
movzx ecx, r8b
cmp rdx, rcx
jae 0x140027ccf
mov rax, r12
sub rax, rcx
add rdx, rax
jmp 0x140027cd2
mov rax, qword [r11 + rbx*8]
jmp 0x140027d94
sub rdx, rcx
cmp qword [rsi + rdx*8], 0
jne 0x140027c90
mov qword [rsi + rdx*8], r11
inc r10
cmp r10, qword [rdi + 0x10]
jb 0x140027c30
mov rax, qword [rdi + 0x20]
mov rcx, qword [rdi]
call qword [rax + 0x10]
mov ebx, r13d
mov eax, ebp
and rbx, rax
mov qword [rdi], rsi
mov byte [rdi + 8], r15b
mov qword [rdi + 0x10], r12
xor dl, dl
cmp qword [rsi + rbx*8], 0
je 0x140027d49
test dl, dl
jne 0x140027d2c
mov edx, r13d
lea ecx, [r14 - 1]
mov eax, r13d
not edx
shr eax, 2
and edx, ebp
shr edx, cl
and dl, al
or dl, 1
movzx ecx, dl
cmp rbx, rcx
jae 0x140027d3f
mov rax, r12
sub rax, rcx
add rbx, rax
jmp 0x140027d42
sub rbx, rcx
cmp qword [rsi + rbx*8], 0
jne 0x140027d10
mov r13, qword [rsp + 0x78]
mov r12, qword [rsp + 0x70]
mov rax, qword [rdi + 0x20]
mov rcx, r13
call qword [rax]
mov rcx, qword [rdi]
mov qword [rcx + rbx*8], rax
mov rcx, qword [rdi]
cmp qword [rcx + rbx*8], 0
je 0x140027ab3
mov rcx, qword [rcx + rbx*8]
mov r8, r13
xor edx, edx
call sub.msvcrt.dll_memset
mov r11, qword [rdi]
mov rax, qword [r11 + rbx*8]
mov qword [rax], r12
mov rax, qword [rdi]
inc qword [rdi + 0x18]
mov rax, qword [rax + rbx*8]
mov rbx, qword [rsp + 0x68]
add rsp, 0x20
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret