Function at 0x18000c912
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x168
lea rbp, [rsp + 0x80]
mov qword [rbp + 0xe0], 0xfffffffffffffffe
mov byte [rbp + 0xdf], r8b
cmp qword [rdx + 0x10], 0
je 0x18000cf44
mov rsi, rdx
mov rdi, rcx
lea rax, [rcx + 0x5a]
mov qword [rbp + 0xd0], rax
xor eax, eax
mov qword [rbp + 0xc8], rax
lea rbx, [0x180086e58]
xor r13d, r13d
xor edx, edx
xor r8d, r8d
xor eax, eax
cmp qword [rsi + 0x18], 0x10
mov r10, rsi
jb 0x18000c982
mov r10, qword [rsi]
mov r9, qword [rsi + 0x10]
mov r12, rdi
mov r11d, dword [rdi + 0x280]
movzx r14d, byte [r10 + r13]
mov cl, byte [r14 + rbx]
test al, al
je 0x18000c9ac
mov edi, r14d
and edi, 0x3f
shl r15d, 6
or r15d, edi
jmp 0x18000c9b8
mov r15d, 0xff
shr r15d, cl
and r15d, r14d
movzx eax, al
shl rax, 4
movzx ecx, cl
add rcx, rax
movzx eax, byte [rcx + rbx + 0x100]
cmp eax, 1
jne 0x18000c9f3
lea eax, [r11 - 1]
cmp eax, 2
jb 0x18000ca2e
test r11d, r11d
je 0x18000d009
inc r13
mov al, 1
cmp r13, r9
jb 0x18000c990
jmp 0x18000cf25
test eax, eax
jne 0x18000ca6c
lea eax, [r15 - 8]
cmp eax, 5
ja case.default.0x18000ca12
lea rcx, [0x180087964]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov rax, qword [rbp + 0xd0]
mov r8, qword [rbp + 0xc8]
mov word [rax + r8], 0x625c
jmp 0x18000cb88
cmp rdx, 1
adc r13, 0xffffffffffffffff
cmp r11d, 1
mov rdi, r12
jne 0x18000cbbe
cmp byte [rbp + 0xdf], 0
je 0x18000ca9c
mov rax, qword [rbp + 0xd0]
mov dword [rax + r8], 0x6666755c
mov word [rax + r8 + 4], 0x6466
add r8, 6
jmp 0x18000cb8f
cmp byte [rbp + 0xdf], 0
jne 0x18000ca91
mov rcx, qword [rbp + 0xd0]
mov r9, qword [rbp + 0xc8]
mov byte [rcx + r9], r14b
inc r9
mov qword [rbp + 0xc8], r9
mov rdi, r12
inc rdx
jmp 0x18000cbc9
mov rax, qword [rbp + 0xd0]
mov word [rax + r8], 0xbfef
mov byte [rax + r8 + 2], 0xbd
add r8, 3
jmp 0x18000cb8f
cmp r15d, 0x22
je 0x18000cb73
cmp r15d, 0x5c
jne case.0x18000ca12.11
mov rax, qword [rbp + 0xd0]
mov r8, qword [rbp + 0xc8]
mov word [rax + r8], 0x5c5c
jmp 0x18000cb88
cmp r15d, 0x7f
setae al
cmp r15d, 0x20
jb 0x18000cbde
and al, byte [rbp + 0xdf]
jne 0x18000cbde
mov rax, qword [rbp + 0xd0]
mov r8, qword [rbp + 0xc8]
mov byte [rax + r8], r14b
inc r8
jmp 0x18000cb8c
mov rax, qword [rbp + 0xd0]
mov r8, qword [rbp + 0xc8]
mov word [rax + r8], 0x745c
jmp 0x18000cb88
mov rax, qword [rbp + 0xd0]
mov r8, qword [rbp + 0xc8]
mov word [rax + r8], 0x6e5c
jmp 0x18000cb88
mov rax, qword [rbp + 0xd0]
mov r8, qword [rbp + 0xc8]
mov word [rax + r8], 0x665c
jmp 0x18000cb88
mov rax, qword [rbp + 0xd0]
mov r8, qword [rbp + 0xc8]
mov word [rax + r8], 0x725c
jmp 0x18000cb88
mov rax, qword [rbp + 0xd0]
mov r8, qword [rbp + 0xc8]
mov word [rax + r8], 0x225c
add r8, 2
mov rdi, r12
lea rax, [r8 - 0x1f4]
cmp rax, 0xc
ja 0x18000cbbe
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, qword [rbp + 0xd0]
call qword [rax + 8]
xor eax, eax
xor r8d, r8d
xor edx, edx
xor ecx, ecx
mov qword [rbp + 0xc8], rcx
jmp 0x18000cbc9
xor eax, eax
xor edx, edx
mov qword [rbp + 0xc8], r8
inc r13
mov r9, qword [rsi + 0x10]
cmp r13, r9
jb 0x18000c975
jmp 0x18000cfca
cmp r15d, 0xffff
ja 0x18000cd18
cmp byte [0x1800a92d9], 0
mov rdi, r12
jne 0x18000cce9
mov rax, qword [0x1800a4530]
movabs rcx, 0x4c4f8c9c7696a466
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a483
xor cl, byte [rax + rdx]
mov byte [0x1800a92d2], cl
movabs rcx, 0x4c4f8c9c7696a467
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a484
xor cl, byte [rax + rdx]
mov byte [0x1800a92d3], cl
movabs rcx, 0x4c4f8c9c7696a468
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a485
xor cl, byte [rax + rdx]
mov byte [0x1800a92d4], cl
movabs rcx, 0x4c4f8c9c7696a469
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a486
xor cl, byte [rax + rdx]
mov byte [0x1800a92d5], cl
movabs rcx, 0x4c4f8c9c7696a46a
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a487
xor cl, byte [rax + rdx]
mov byte [0x1800a92d6], cl
movabs rcx, 0x4c4f8c9c7696a46b
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a488
xor cl, byte [rax + rdx]
mov byte [0x1800a92d7], cl
movabs rcx, 0x4c4f8c9c7696a46c
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a489
xor cl, byte [rax + rdx]
mov byte [0x1800a92d8], cl
mov byte [0x1800a92d9], 1
mov rax, qword [rbp + 0xd0]
mov r14, qword [rbp + 0xc8]
lea rcx, [rax + r14]
mov edx, 7
lea r8, [0x1800a92d2]
mov r9d, r15d
call fcn.18000da1c
add r14, 6
jmp 0x18000cf1d
cmp byte [0x1800a92e7], 0
mov rdi, r12
jne 0x18000ced6
mov rax, qword [0x1800a4530]
movabs rcx, 0x4c4f8c9c7696a49a
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4b2
xor cl, byte [rax + rdx]
mov byte [0x1800a92da], cl
movabs rcx, 0x4c4f8c9c7696a49b
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4b3
xor cl, byte [rax + rdx]
mov byte [0x1800a92db], cl
movabs rcx, 0x4c4f8c9c7696a49c
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4b4
xor cl, byte [rax + rdx]
mov byte [0x1800a92dc], cl
movabs rcx, 0x4c4f8c9c7696a49d
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4b5
xor cl, byte [rax + rdx]
mov byte [0x1800a92dd], cl
movabs rcx, 0x4c4f8c9c7696a49e
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4b6
xor cl, byte [rax + rdx]
mov byte [0x1800a92de], cl
movabs rcx, 0x4c4f8c9c7696a49f
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4b7
xor cl, byte [rax + rdx]
mov byte [0x1800a92df], cl
movabs rcx, 0x4c4f8c9c7696a4a0
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4b8
xor cl, byte [rax + rdx]
mov byte [0x1800a92e0], cl
movabs rcx, 0x4c4f8c9c7696a4a1
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4b9
xor cl, byte [rax + rdx]
mov byte [0x1800a92e1], cl
movabs rcx, 0x4c4f8c9c7696a4a2
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4ba
xor cl, byte [rax + rdx]
mov byte [0x1800a92e2], cl
movabs rcx, 0x4c4f8c9c7696a4a3
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4bb
xor cl, byte [rax + rdx]
mov byte [0x1800a92e3], cl
movabs rcx, 0x4c4f8c9c7696a4a4
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4bc
xor cl, byte [rax + rdx]
mov byte [0x1800a92e4], cl
movabs rcx, 0x4c4f8c9c7696a4a5
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4bd
xor cl, byte [rax + rdx]
mov byte [0x1800a92e5], cl
movabs rcx, 0x4c4f8c9c7696a4a6
mov cl, byte [rax + rcx]
movabs rdx, 0x4c4f8c9c7696a4be
xor cl, byte [rax + rdx]
mov byte [0x1800a92e6], cl
mov byte [0x1800a92e7], 1
mov eax, r15d
and eax, 0x3ff
or eax, 0xdc00
mov ecx, r15d
shr ecx, 0xa
add ecx, 0xd7c0
movzx r9d, cx
mov rcx, qword [rbp + 0xd0]
mov r14, qword [rbp + 0xc8]
add rcx, r14
mov dword [rsp + 0x20], eax
mov edx, 0xd
lea r8, [0x1800a92da]
call fcn.18000da1c
add r14, 0xc
mov r8, r14
jmp 0x18000cb8f
mov rdi, r12
mov eax, dword [rdi + 0x280]
cmp eax, 1
je 0x18000cf58
cmp eax, 2
je 0x18000cfe2
test eax, eax
je 0x18000d16c
add rsp, 0x168
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, qword [rbp + 0xd0]
call qword [rax + 8]
mov rsi, qword [rdi]
mov rax, qword [rsi]
mov rdi, qword [rax + 8]
mov rcx, qword [0x1800a4530]
cmp byte [rbp + 0xdf], 0
je 0x18000cfa3
movabs rax, 0x4c4f8c9c7696a5c5
add rcx, rax
call fcn.18001f2b0
lea rdx, [0x1800a933c]
mov r8d, 6
jmp 0x18000cfc2
movabs rax, 0x4c4f8c9c7696a5ff
add rcx, rax
call fcn.18001f300
lea rdx, [0x1800a9344]
mov r8d, 3
mov rcx, rsi
mov rax, rdi
jmp 0x18000cff3
test al, al
jne 0x18000cf28
mov r8, qword [rbp + 0xc8]
test r8, r8
je 0x18000cf44
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
mov rdx, qword [rbp + 0xd0]
add rsp, 0x168
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
jmp rax
xorps xmm0, xmm0
lea rsi, [rbp + 0xa0]
movaps xmmword [rsi], xmm0
mov qword [rsi + 0x10], 3
mov qword [rsi + 0x18], 0xf
mov dword [rsi], 0
movabs rcx, 0x4c4f8c9c7696a4da
add rcx, qword [0x1800a4530]
call fcn.18001f250
lea r8, [0x1800a92e8]
mov edx, 3
mov rcx, rsi
mov r9d, r14d
call fcn.18000da1c
lea rcx, [rbp + 0x20]
mov rdx, r13
call fcn.18000680a
cmp byte [0x1800a9313], 0
jne 0x18000d0da
mov rax, qword [0x1800a4530]
movabs r8, 0x4c4f8c9c7696a541
add r8, rax
movabs r9, 0x4c4f8c9c7696a52a
add r9, rax
xor ecx, ecx
movabs r10, 0x642c8590b21642c9
lea r11, [0x1800a92f6]
mov rax, rcx
mul r10
mov rax, rcx
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
imul rax, rax, 0xffffffffffffffe9
add rax, r9
mov al, byte [rcx + rax]
xor al, byte [r8 + rcx]
mov byte [rcx + r11], al
inc rcx
cmp rcx, 0x1d
jne 0x18000d0a2
mov byte [0x1800a9313], 1
movabs rsi, 0x4c4f8c9c76969580
mov rdx, qword [0x1800a4550]
add rdx, rsi
lea rcx, [rbp + 0x60]
lea r8, [rbp + 0x20]
call fcn.1800090d4
movabs rcx, 0x4c4f8c9c7696a503
add rcx, qword [0x1800a4530]
call fcn.18001f280
mov r8, qword [0x1800a4558]
add r8, rsi
lea rcx, [rbp + 0x40]
lea rdx, [rbp + 0x60]
call fcn.1800023ec
lea rcx, [rbp + 0x80]
lea rdx, [rbp + 0x40]
lea r8, [rbp + 0xa0]
call fcn.180009eeb
lea rcx, [rbp - 0x50]
lea r8, [rbp + 0x80]
mov edx, 0x13c
call fcn.180008d68
add rsi, qword [0x1800a4560]
lea rcx, [rbp - 0x50]
mov rdx, rsi
call sub.VCRUNTIME140.dll__CxxThrowException
jmp 0x18000d29b
xorps xmm0, xmm0
movaps xmmword [rbp + 0xa0], xmm0
mov qword [rbp + 0xb0], 3
mov qword [rbp + 0xb8], 0xf
mov dword [rbp + 0xa0], 0
cmp qword [rsi + 0x18], 0x10
jb 0x18000d1a0
mov rsi, qword [rsi]
movzx esi, byte [r9 + rsi - 1]
movabs rcx, 0x4c4f8c9c7696a4da
add rcx, qword [0x1800a4530]
call fcn.18001f250
lea r8, [0x1800a92e8]
lea rcx, [rbp + 0xa0]
mov edx, 3
mov r9d, esi
call fcn.18000da1c
cmp byte [0x1800a933b], 0
jne 0x18000d24c
mov rax, qword [0x1800a4530]
movabs r8, 0x4c4f8c9c7696a58c
add r8, rax
movabs r9, 0x4c4f8c9c7696a575
add r9, rax
xor ecx, ecx
movabs r10, 0x642c8590b21642c9
lea r11, [0x1800a9314]
mov rax, rcx
mul r10
mov rax, rcx
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
imul rax, rax, 0xffffffffffffffe9
add rax, r9
mov al, byte [rcx + rax]
xor al, byte [r8 + rcx]
mov byte [rcx + r11], al
inc rcx
cmp rcx, 0x27
jne 0x18000d214
mov byte [0x1800a933b], 1
movabs rsi, 0x4c4f8c9c76969580
mov rdx, qword [0x1800a4568]
add rdx, rsi
lea rcx, [rbp + 0x80]
lea r8, [rbp + 0xa0]
call fcn.18000a4aa
lea rcx, [rbp - 0x18]
lea r8, [rbp + 0x80]
mov edx, 0x13c
call fcn.180008d68
add rsi, qword [0x1800a4560]
lea rcx, [rbp - 0x18]
mov rdx, rsi
call sub.VCRUNTIME140.dll__CxxThrowException
int3