Function at 0x140212bb0
Capabilities:
Encode data using xor

Disassembly:
push rbp
mov rbp, rsp
push r15
mov r15d, r9d
push r14
push r13
mov r13, rdx
push r12
mov r12, r8
push rdi
push rsi
push rbx
mov rbx, rcx
and rsp, 0xfffffffffffffff0
sub rsp, 0x140
mov r14, qword [rbp + 0x48]
mov rax, qword [rbp + 0x38]
mov rcx, qword [r8 + 8]
mov rdx, qword [rbx + 0x18]
mov r8d, dword [r14 + 0x14]
mov rdi, qword [rbp + 0x40]
mov qword [rsp + 0x40], rax
mov rsi, qword [rbp + 0x30]
call sub.msvcrt.dll_memcpy
movzx eax, r15b
mov dword [rdi + 0x18], 0
mov dword [rsp + 0x4c], eax
cmp r15b, 1
je 0x140212c60
cmp r15b, 2
je 0x140212e50
test r15b, r15b
je 0x140212ca8
mov eax, dword [rsp + 0x4c]
mov qword [rbp + 0x38], r14
mov r9, rsi
mov r8, rdi
mov rdx, r12
mov rcx, r13
mov dword [rbp + 0x40], eax
mov rax, qword [rsp + 0x40]
mov qword [rbp + 0x30], rax
lea rsp, [rbp - 0x38]
pop rbx
pop rsi
pop rdi
pop r12
pop r13
pop r14
pop r15
pop rbp
jmp fcn.14014cba0
mov r8d, dword [r14 + 0xc]
mov eax, dword [r14 + 0x14]
mov r9, qword [rbx]
add eax, r8d
cmp eax, dword [r14 + 0x28]
mov qword [rsp + 0x30], r9
mov dword [rsp + 0x38], eax
jae 0x140212e80
mov rcx, qword [r13]
mov rdx, rsi
call sub.msvcrt.dll_memcpy
mov edx, dword [r14 + 0xc]
mov rcx, qword [rdi]
mov r8d, dword [r14 + 0x14]
add rdx, rsi
call sub.msvcrt.dll_memcpy
jmp 0x140212c24
mov r8d, dword [r14 + 0xc]
mov eax, dword [r14 + 0x14]
mov r9, qword [rbx]
add eax, r8d
cmp eax, dword [r14 + 0x28]
mov qword [rsp + 0x30], r9
mov dword [rsp + 0x38], eax
jb 0x140212c81
lea r15, [rsp + 0x60]
mov r8d, 2
mov rdx, r14
mov rcx, r15
call fcn.14004b6f0
mov r8d, dword [r14 + 0x24]
mov rdx, qword [rsp + 0x30]
mov rcx, r15
call fcn.14004b7f0
mov rcx, r15
call fcn.14004b6a0
mov r8d, dword [r14 + 0x28]
mov rdx, rsi
mov rcx, r15
call fcn.14004b7a0
mov r8d, 0xff
mov rdx, r14
mov rcx, r15
call fcn.14004b6f0
mov r8d, dword [r14 + 0x28]
mov rdx, rsi
mov rcx, r15
call fcn.14004b7f0
lea r9, [rsp + 0x5e]
mov eax, dword [rsp + 0x38]
mov rcx, r15
mov rdx, r9
mov r8d, 2
mov qword [rsp + 0x30], r9
mov word [rsp + 0x5e], ax
call fcn.14004b7f0
mov rcx, r15
call fcn.14004b6a0
mov r8d, dword [rsp + 0x38]
mov rdx, rsi
mov rcx, r15
call fcn.14004b7a0
mov rcx, qword [r13]
mov r8d, dword [r14 + 0xc]
mov rdx, rsi
call sub.msvcrt.dll_memcpy
mov edx, dword [r14 + 0xc]
mov rcx, qword [rdi]
mov r8d, dword [r14 + 0x14]
add rdx, rsi
call sub.msvcrt.dll_memcpy
mov eax, dword [r14 + 0x14]
add eax, dword [r14 + 0xc]
cmp eax, dword [r14 + 0x28]
mov rbx, qword [rbx + 8]
mov dword [rsp + 0x38], eax
jb 0x140212c24
mov r8d, 2
mov rdx, r14
mov rcx, r15
call fcn.14004b6f0
mov r8d, dword [r14 + 0x24]
mov rdx, rbx
mov rcx, r15
call fcn.14004b7f0
mov rcx, r15
call fcn.14004b6a0
mov r8d, dword [r14 + 0x28]
mov rdx, rsi
mov rcx, r15
call fcn.14004b7a0
mov r8d, 0xff
mov rdx, r14
mov rcx, r15
call fcn.14004b6f0
mov r8d, dword [r14 + 0x28]
mov rdx, rsi
mov rcx, r15
call fcn.14004b7f0
mov eax, dword [rsp + 0x38]
mov rdx, qword [rsp + 0x30]
mov r8d, 2
mov word [rsp + 0x5e], ax
mov rcx, r15
call fcn.14004b7f0
mov rcx, r15
call fcn.14004b6a0
mov r8d, dword [rsp + 0x38]
mov rdx, rsi
mov rcx, r15
call fcn.14004b7a0
mov rcx, qword [r12]
mov r8d, dword [r14 + 0xc]
mov rdx, rsi
call sub.msvcrt.dll_memcpy
mov edx, dword [r14 + 0xc]
mov rcx, qword [rdi + 8]
mov r8d, dword [r14 + 0x14]
add rdx, rsi
call sub.msvcrt.dll_memcpy
jmp 0x140212c24
mov eax, dword [r14 + 0x14]
mov r9, qword [rdi]
mov r10, qword [rbx]
cmp eax, dword [r14 + 0x28]
jae 0x140213018
mov rcx, qword [r13]
mov rdx, qword [rbx + 0x10]
mov r8d, dword [r14 + 0xc]
call sub.msvcrt.dll_memcpy
jmp 0x140212c24
lea r15, [rsp + 0x60]
mov r8d, 2
mov rdx, r14
mov rcx, r15
call fcn.14004b6f0
mov r8d, dword [r14 + 0x24]
mov rdx, qword [rsp + 0x30]
mov rcx, r15
call fcn.14004b7f0
mov rcx, r15
call fcn.14004b6a0
mov r8d, dword [r14 + 0x28]
mov rdx, rsi
mov rcx, r15
call fcn.14004b7a0
mov r8d, 0xff
mov rdx, r14
mov rcx, r15
call fcn.14004b6f0
mov r8d, dword [r14 + 0x28]
mov rdx, rsi
mov rcx, r15
call fcn.14004b7f0
lea r10, [rsp + 0x5e]
mov eax, dword [rsp + 0x38]
mov rcx, r15
mov rdx, r10
mov r8d, 2
mov qword [rsp + 0x20], r10
mov word [rsp + 0x5e], ax
call fcn.14004b7f0
mov rcx, r15
call fcn.14004b6a0
mov r8d, dword [rsp + 0x38]
mov rdx, rsi
mov rcx, r15
call fcn.14004b7a0
mov rcx, qword [r13]
mov r8d, dword [r14 + 0xc]
mov rdx, rsi
call sub.msvcrt.dll_memcpy
mov edx, dword [r14 + 0xc]
mov rcx, qword [rdi]
mov r8d, dword [r14 + 0x14]
add rdx, rsi
call sub.msvcrt.dll_memcpy
mov eax, dword [r14 + 0x14]
mov r9, qword [rdi + 8]
mov r11, qword [rbx + 8]
cmp eax, dword [r14 + 0x28]
mov qword [rsp + 0x28], r9
mov qword [rsp + 0x30], r11
mov dword [rsp + 0x38], eax
jb 0x140212c24
mov rdx, r14
mov rcx, r15
mov r8d, 2
call fcn.14004b6f0
mov r8d, dword [r14 + 0x24]
mov rdx, qword [rsp + 0x30]
mov rcx, r15
call fcn.14004b7f0
mov rcx, r15
call fcn.14004b6a0
mov r9, qword [rsp + 0x28]
mov r8d, dword [r14 + 0x28]
mov rcx, r15
mov rdx, r9
mov qword [rsp + 0x30], r9
call fcn.14004b7a0
mov rdx, r14
mov rcx, r15
mov r8d, 0xff
call fcn.14004b6f0
mov r8d, dword [r14 + 0x28]
mov rdx, qword [rsp + 0x30]
mov rcx, r15
call fcn.14004b7f0
mov eax, dword [rsp + 0x38]
mov rdx, qword [rsp + 0x20]
mov rcx, r15
mov r8d, 2
mov word [rsp + 0x5e], ax
call fcn.14004b7f0
mov rcx, r15
call fcn.14004b6a0
mov r8d, dword [rsp + 0x38]
mov rdx, qword [rsp + 0x30]
mov rcx, r15
call fcn.14004b7a0
mov rcx, qword [r12]
mov rdx, qword [rbx + 0x10]
mov r8d, dword [r14 + 0xc]
call sub.msvcrt.dll_memcpy
jmp 0x140212c24
lea r15, [rsp + 0x60]
mov r8d, 2
mov rdx, r14
mov dword [rsp + 0x28], eax
mov rcx, r15
mov qword [rsp + 0x30], r10
mov qword [rsp + 0x38], r9
call fcn.14004b6f0
mov r8d, dword [r14 + 0x24]
mov rdx, qword [rsp + 0x30]
mov rcx, r15
call fcn.14004b7f0
mov rcx, r15
call fcn.14004b6a0
mov r8d, dword [r14 + 0x28]
mov rdx, qword [rsp + 0x38]
mov rcx, r15
call fcn.14004b7a0
mov r8d, 0xff
mov rdx, r14
mov rcx, r15
call fcn.14004b6f0
mov r9, qword [rsp + 0x38]
mov r8d, dword [r14 + 0x28]
mov rcx, r15
mov rdx, r9
mov qword [rsp + 0x30], r9
call fcn.14004b7f0
mov eax, dword [rsp + 0x28]
lea r10, [rsp + 0x5e]
mov rcx, r15
mov rdx, r10
mov r8d, 2
mov qword [rsp + 0x28], r10
mov word [rsp + 0x5e], ax
mov dword [rsp + 0x38], eax
call fcn.14004b7f0
mov rcx, r15
call fcn.14004b6a0
mov r8d, dword [rsp + 0x38]
mov rdx, qword [rsp + 0x30]
mov rcx, r15
call fcn.14004b7a0
mov rdx, qword [rbx + 0x10]
mov rcx, qword [r13]
mov r8d, dword [r14 + 0xc]
call sub.msvcrt.dll_memcpy
mov eax, dword [r14 + 0x14]
add eax, dword [r14 + 0xc]
cmp eax, dword [r14 + 0x28]
mov rbx, qword [rbx + 8]
mov dword [rsp + 0x38], eax
jb 0x140212c24
mov r8d, 2
mov rdx, r14
mov rcx, r15
call fcn.14004b6f0
mov r8d, dword [r14 + 0x24]
mov rdx, rbx
mov rcx, r15
call fcn.14004b7f0
mov rcx, r15
call fcn.14004b6a0
mov r8d, dword [r14 + 0x28]
mov rdx, rsi
mov rcx, r15
call fcn.14004b7a0
mov r8d, 0xff
mov rdx, r14
mov rcx, r15
call fcn.14004b6f0
mov r8d, dword [r14 + 0x28]
mov rdx, rsi
mov rcx, r15
call fcn.14004b7f0
mov eax, dword [rsp + 0x38]
mov rdx, qword [rsp + 0x28]
mov r8d, 2
mov word [rsp + 0x5e], ax
jmp 0x140212e07