Function at 0x140010500
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
push r14
sub rsp, 0x40
cmp byte [rcx], 0
mov r14, rcx
je 0x140010cc0
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbp
mov qword [rax + 0x18], rsi
mov qword [rax - 0x10], rdi
mov qword [rax - 0x18], r12
movabs r12, 0x87d0d4dec0
mov qword [rax - 0x20], r13
movabs r13, 0xffffffc3a65e7076
mov qword [rax - 0x28], r15
xor r15d, r15d
nop dword [rax + rax]
mov ecx, 0xc
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x10
mov rbp, rax
mov dword [rax + 4], 0xfff2634a
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x14
mov rsi, rax
mov dword [rax + 8], 0x8fdbe
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 4
mov rdi, rax
mov dword [rax + 0xc], 0xfff70f74
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov edx, dword [rdi + 0xc]
mov rbx, rax
mov ecx, dword [rdi + 0xc]
mov r8d, dword [rsi + 8]
imul edx, ecx
mov ecx, dword [rsi + 8]
imul r8d, ecx
add r8d, edx
mov edx, dword [rbp + 4]
mov ecx, dword [rbp + 4]
imul edx, ecx
mov rcx, rbp
add edx, r8d
mov dword [rax], edx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rsi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 8
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov rcx, rax
mov qword [rax], r12
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 8
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov rcx, rax
mov qword [rax], r13
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 8
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
movabs rcx, 0xffffffe329f34df6
mov qword [rax], rcx
mov rcx, rax
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 8
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 4
mov rbx, rax
mov dword [rax], 0xfffa46d7
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov rdi, rax
mov dword [rax], r15d
mov ecx, dword [rbx]
test ecx, ecx
jns 0x140010668
mov dword [rax], 0xffffffff
jmp 0x1400106a4
mov ecx, 4
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, dword [rbx]
mov r9d, 0xa
mov r8, rax
mov dword [rax], ecx
mov ecx, dword [r8]
mov eax, dword [rbx]
cdq
idiv ecx
mov ecx, dword [r8]
add ecx, eax
mov dword [r8], ecx
sub r9, 1
jne 0x140010680
mov eax, dword [r8]
mov rcx, r8
mov dword [rdi], eax
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ebx, 2
mov ecx, ebx
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov rcx, rax
mov word [rax], r15w
mov word [rax], bx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 0x2d0
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov rcx, rax
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
lea ecx, [rbx + 2]
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
lea ecx, [rbx + 2]
mov rdi, rax
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov dword [rdi], 0x3ea81
mov rbx, rax
mov dword [rax], r15d
mov ecx, dword [rdi]
and ecx, 0xfff49c5e
mov dword [rax], ecx
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 8
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov rcx, rax
mov qword [rax], 0xfffffffffff74288
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 0xc
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x10
mov rbp, rax
mov dword [rax + 4], 0x66773
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x14
mov rsi, rax
mov dword [rax + 8], 0xa6341
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 4
mov rdi, rax
mov dword [rax + 0xc], 0x434cd
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov edx, dword [rdi + 0xc]
mov rbx, rax
mov ecx, dword [rdi + 0xc]
mov r8d, dword [rsi + 8]
imul edx, ecx
mov ecx, dword [rsi + 8]
imul r8d, ecx
add r8d, edx
mov edx, dword [rbp + 4]
mov ecx, dword [rbp + 4]
imul edx, ecx
mov rcx, rbp
add edx, r8d
mov dword [rax], edx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rsi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
movzx ecx, byte [r14]
call qword [sym.imp.msvcrt.dll_toupper]
mov ecx, 0x3c
mov byte [r14], al
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov r8, rax
mov dword [rax], 0x92ed
mov dword [rax + 4], 0x6386a
mov dword [rax + 8], 0x1671f
mov dword [rax + 0xc], 0xcf8d
mov dword [rax + 0x10], 0x535b5
mov dword [rax + 0x14], 0x5c88c
mov dword [rax + 0x18], 0x302b5
mov dword [rax + 0x1c], 0x67e83
mov dword [rax + 0x20], 0x2bb88
mov dword [rax + 0x24], 0x2b52f
mov dword [rax + 0x28], 0x480e2
mov dword [rax + 0x2c], 0x42ef2
mov dword [rax + 0x30], 0xa89c
mov dword [rax + 0x34], 0x65192
mov dword [rax + 0x38], 0x3c10f
mov ecx, dword [rax + 0x34]
mov eax, dword [rax + 0x30]
cdq
idiv ecx
mov edx, dword [r8]
mov ecx, dword [r8 + 0x18]
imul eax, edx
cdq
idiv ecx
mov eax, dword [r8 + 0x20]
mov ecx, dword [r8 + 0x18]
imul eax, edx
cdq
idiv ecx
mov rcx, r8
mov dword [r8 + 0x38], edx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 0x14
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov r9, rax
mov dword [rax], 0x14b56
mov dword [rax + 4], 0x8f99
mov dword [rax + 8], 0x71170
mov dword [rax + 0xc], 0x1cfd
mov dword [rax + 0x10], 0x14faa
mov edx, dword [rax + 4]
mov ecx, dword [rax + 4]
imul edx, ecx
mov ecx, dword [rax]
mov eax, dword [rax]
imul ecx, edx
imul eax, ecx
mov ecx, dword [r9 + 4]
cdq
idiv ecx
mov r8d, eax
mov eax, dword [r9]
mov ecx, dword [r9]
cdq
idiv ecx
mov ecx, dword [r9 + 4]
mov eax, edx
cdq
idiv ecx
mov ecx, dword [r9 + 8]
add eax, r8d
sub eax, ecx
mov rcx, r9
mov dword [r9 + 0x10], eax
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 0x120
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov rcx, rax
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 0xc
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x10
mov rbp, rax
mov dword [rax + 4], 0xfff3338b
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x14
mov rsi, rax
mov dword [rax + 8], 0xfffe15cd
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 4
mov rdi, rax
mov dword [rax + 0xc], 0xdc233
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov edx, dword [rdi + 0xc]
mov rbx, rax
mov ecx, dword [rdi + 0xc]
mov r8d, dword [rsi + 8]
imul edx, ecx
mov ecx, dword [rsi + 8]
imul r8d, ecx
add r8d, edx
mov edx, dword [rbp + 4]
mov ecx, dword [rbp + 4]
imul edx, ecx
mov rcx, rbp
add edx, r8d
mov dword [rax], edx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rsi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ebx, 2
mov ecx, ebx
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov rcx, rax
mov word [rax], r15w
mov word [rax], bx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
lea ecx, [rbx + 2]
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov edx, r15d
mov dword [rax], 1
nop word [rax + rax]
mov ecx, dword [rax]
add ecx, edx
inc edx
mov dword [rax], ecx
cmp edx, 0xe9
jl 0x1400109e0
mov rcx, rax
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 4
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 4
mov rbx, rax
mov dword [rax], 0x2d2c8
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov rdi, rax
mov ecx, r15d
mov dword [rax], 1
nop dword [rax]
nop dword [rax + rax]
mov r8d, dword [rax]
mov edx, dword [rbx]
shl r8d, cl
inc ecx
xor edx, r8d
mov dword [rbx], edx
cmp ecx, 4
jl 0x140010a30
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 0xc
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x10
mov rbp, rax
mov dword [rax + 4], 0x7eff2
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 0x14
mov rsi, rax
mov dword [rax + 8], 0xcc52a
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov ecx, 4
mov rdi, rax
mov dword [rax + 0xc], 0xfff775a2
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov edx, dword [rdi + 0xc]
mov rbx, rax
mov ecx, dword [rdi + 0xc]
mov r8d, dword [rsi + 8]
imul edx, ecx
mov ecx, dword [rsi + 8]
imul r8d, ecx
add r8d, edx
mov edx, dword [rbp + 4]
mov ecx, dword [rbp + 4]
imul edx, ecx
mov rcx, rbp
add edx, r8d
mov dword [rax], edx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rsi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rdi
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov rcx, rbx
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 0x38
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov r9, rax
mov dword [rax], 0x47f7e
mov dword [rax + 4], 0x34217
mov dword [rax + 8], 0x45e5b
mov dword [rax + 0xc], 0x2336f
mov dword [rax + 0x10], 0x1bba5
mov dword [rax + 0x14], 0x5bad1
mov dword [rax + 0x18], 0x145b1
mov dword [rax + 0x1c], 0x70141
mov dword [rax + 0x20], 0x17033
mov dword [rax + 0x24], 0x22597
mov dword [rax + 0x28], 0x51092
mov dword [rax + 0x2c], 0x411f6
mov dword [rax + 0x30], 0x6fa12
mov dword [rax + 0x34], 0x5dbcd
mov r8d, dword [rax + 0x24]
mov eax, dword [rax + 0x1c]
imul r8d, eax
mov eax, dword [r9 + 0x10]
mov ecx, dword [r9 + 8]
cdq
idiv ecx
mov ecx, dword [r9 + 0x30]
add eax, r8d
sub eax, ecx
mov ecx, dword [r9 + 0x1c]
add ecx, eax
mov eax, dword [r9 + 0x18]
add eax, ecx
mov rcx, r9
mov dword [r9 + 0x34], eax
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 0x40
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov r9, rax
mov dword [rax], 0x62cbd
mov dword [rax + 4], 0x6d350
mov dword [rax + 8], 0x23333
mov dword [rax + 0xc], 0x358d7
mov dword [rax + 0x10], 0x39768
mov dword [rax + 0x14], 0x3a359
mov dword [rax + 0x18], 0x4f351
mov dword [rax + 0x1c], 0x5f44b
mov dword [rax + 0x20], 0x174fd
mov dword [rax + 0x24], 0x7745f
mov dword [rax + 0x28], 0x2c2ed
mov dword [rax + 0x2c], 0x416a9
mov dword [rax + 0x30], 0x13e01
mov dword [rax + 0x34], 0x72da4
mov dword [rax + 0x38], 0x3aa9c
mov dword [rax + 0x3c], 0x550ad
mov ecx, dword [rax + 0x28]
mov eax, dword [rax + 0xc]
cdq
idiv ecx
mov ecx, dword [r9 + 0x38]
cdq
idiv ecx
mov eax, dword [r9 + 0x1c]
mov ecx, dword [r9 + 0x14]
mov r8d, edx
cdq
idiv ecx
sub r8d, eax
mov eax, dword [r9 + 0x2c]
mov ecx, dword [r9 + 0x18]
add eax, r8d
add ecx, eax
mov eax, dword [r9 + 0xc]
add eax, ecx
mov rcx, r9
mov dword [r9 + 0x3c], eax
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
mov ecx, 8
call qword [sym.imp.msvcrt.dll_void____ptr64___cdecl_operator_new___unsigned_long_long_unsigned___int64__]
mov r8, rax
mov dword [rax], 0x399fa
mov dword [rax + 4], 0x5de62
mov eax, dword [rax]
mov ecx, dword [r8]
cdq
idiv ecx
mov ecx, dword [r8]
mov edx, dword [r8]
imul ecx, eax
add edx, ecx
mov ecx, dword [r8]
add ecx, edx
mov dword [r8 + 4], ecx
mov rcx, r8
call qword [sym.imp.msvcrt.dll_void___cdecl_operator_delete___void____ptr64_]
inc r14
cmp byte [r14], r15b
jne 0x140010550
mov r15, qword [rsp + 0x20]
mov r13, qword [rsp + 0x28]
mov r12, qword [rsp + 0x30]
mov rdi, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x58]
mov rbx, qword [rsp + 0x50]
add rsp, 0x40
pop r14
ret