Function at 0x180010080
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
xor r13d, r13d
movzx r14d, dx
mov r15, rcx
mov edx, r13d
mov ecx, r13d
mov qword [rsp + 0x48], rdx
mov dword [rsp + 0x40], ecx
mov ebx, r9d
mov edi, r8d
mov esi, r13d
mov ebp, r13d
mov r12d, r13d
test byte [0x1800b78f1], 1
jne 0x18003b3ba
cmp qword [rsp + 0xa0], rsi
je 0x18003b503
mov rax, qword [rsp + 0xa8]
test rax, rax
je 0x18003b503
mov rax, qword [rax]
test rax, rax
je 0x18003b503
cmp qword [0x1800b7ec8], rsi
mov r12, rax
je 0x18001041f
mov rax, qword [0x1800b8500]
test rax, rax
jne 0x18003b42a
mov rax, qword [0x1800b7ed8]
test rax, rax
je 0x18003b455
mov edx, 8
mov rcx, rax
lea r8d, [rdx + 0x50]
call qword [sym.imp.api_ms_win_core_heap_l1_1_0.dll_HeapAlloc]
nop dword [rax + rax]
mov rsi, rax
test rsi, rsi
je 0x18003b46d
lea rax, [rsi + 0x10]
mov qword [rsi + 8], rsi
mov qword [rax + 8], rax
test ebx, ebx
mov qword [rax], rax
mov eax, ebx
mov qword [rsi], rsi
cmove eax, edi
mov dword [rsi + 0x2c], eax
mov qword [rsi + 0x20], r15
mov word [rsi + 0x28], r14w
prefetchw byte [0x1800b7f78]
mov eax, dword [0x1800b7f78]
mov ecx, eax
lock cmpxchg dword [0x1800b7f78], ecx
jne 0x180010182
mov rcx, qword [rsi + 0x20]
lea r15, [rsi + 0x20]
test ebx, ebx
mov dword [rsi + 0x30], eax
mov eax, r13d
mov ebx, r13d
setne al
mov dword [rsi + 0x34], eax
test rcx, rcx
je 0x1800101ed
movzx eax, word [rcx]
test ax, ax
je 0x1800101d3
nop dword [rax]
nop dword [rax + rax]
add ebx, ebx
movzx eax, ax
xor ebx, eax
lea rcx, [rcx + 2]
movzx eax, word [rcx]
test ax, ax
jne 0x1800101c0
mov eax, 0x6eecbe1
mul ebx
mov eax, ebx
sub eax, edx
shr eax, 1
add eax, edx
shr eax, 9
imul eax, eax, 0x3e5
sub ebx, eax
lea rcx, [0x1800b8460]
mov dword [rsi + 0x44], ebx
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
mov eax, ebx
mov ebp, 1
lea r14, [rax*8]
mov rax, qword [0x1800b7ec8]
mov rdi, qword [r14 + rax]
test byte [0x1800b78f1], bpl
jne 0x18003b496
test rdi, rdi
je 0x18001029b
mov rbx, rdi
lea r14, [rbx + 0x20]
test r14, r14
je 0x180010266
test r15, r15
je 0x180010266
mov rdx, qword [r15]
mov rcx, qword [r14]
call qword [sym.imp.api_ms_win_core_crt_l1_1_0.dll__wcsicmp]
nop dword [rax + rax]
test eax, eax
jne 0x180010266
movzx eax, word [r15 + 8]
cmp word [r14 + 8], ax
je 0x180010367
mov rbx, qword [rbx]
cmp rbx, rdi
jne 0x180010232
mov rax, qword [rdi + 8]
cmp qword [rax], rdi
jne 0x18003b4fc
mov qword [rsi], rdi
mov qword [rsi + 8], rax
mov qword [rax], rsi
mov qword [rdi + 8], rsi
mov dword [rsi + 0x3c], ebp
test byte [0x1800b78f1], bpl
jne 0x18003b4ca
jmp 0x1800102b2
mov qword [r14 + rax], rsi
mov dword [rsi + 0x38], ebp
mov dword [rsi + 0x3c], ebp
test byte [0x1800b78f1], bpl
jne 0x18003b4c3
mov ecx, r13d
mov edx, ecx
mov rbx, qword [rsp + 0xa0]
test rbx, rbx
je 0x180010311
test r12, r12
je 0x180010311
test rsi, rsi
je 0x180010311
mov qword [rsi + 0x48], rbx
test ecx, ecx
jne 0x1800103d9
lock inc dword [r12]
test byte [0x1800b78f3], 2
jne 0x18003b536
mov qword [rsi + 0x50], r12
mov qword [r12 + 8], rsi
mov rax, qword [0x1800b7108]
mov qword [r12 + 0x158], rax
test byte [0x1800b78f1], 1
jne 0x18003b558
test ebp, ebp
je 0x18001032d
lea rcx, [0x1800b8460]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
mov rdx, qword [rsp + 0x48]
cmp dword [rsp + 0x40], 0
jne 0x180010406
test byte [0x1800b78f1], 1
jne 0x18003b579
lea r11, [rsp + 0x50]
mov eax, r13d
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret
mov eax, dword [r15 + 0xc]
cmp dword [r14 + 0xc], eax
jne 0x180010266
mov eax, dword [r15 + 0x10]
cmp dword [r14 + 0x10], eax
jne 0x180010266
mov eax, dword [r15 + 0x14]
cmp dword [r14 + 0x14], eax
jne 0x180010266
test rbx, rbx
je 0x1800103b9
mov rcx, qword [rbx + 0x18]
lea rax, [rbx + 0x10]
cmp qword [rcx], rax
jne 0x18003b4fc
lea rdx, [rsi + 0x10]
mov qword [rdx], rax
mov qword [rdx + 8], rcx
mov qword [rcx], rdx
mov qword [rax + 8], rdx
mov ecx, ebp
mov dword [rbx + 0x40], ebp
mov dword [rsp + 0x40], ecx
mov dword [rsi + 0x40], ebp
test byte [0x1800b78f1], cl
jne 0x18003b4e1
mov rdx, r13
jmp 0x1800102b7
mov rax, qword [rsi + 0x10]
mov rcx, qword [rax + 0x40]
mov qword [rsp + 0x48], rcx
call fcn.180006060
mov rdx, qword [rsp + 0x48]
mov qword [rsi + 0x50], rdx
test byte [0x1800b78f1], 1
je 0x180010311
jmp 0x18003b52c
mov rax, qword [rsp + 0xa8]
test rax, rax
je 0x180010338
mov qword [rax], rdx
jmp 0x180010338
lea rcx, [0x1800b8460]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_EnterCriticalSection]
nop dword [rax + rax]
cmp qword [0x1800b7ec8], rsi
jne 0x18001044c
mov ecx, 0x1f28
call fcn.180017d38
mov qword [0x1800b7ec8], rax
lea rcx, [0x1800b8460]
call qword [sym.imp.api_ms_win_core_synch_l1_1_0.dll_LeaveCriticalSection]
nop dword [rax + rax]
cmp qword [0x1800b7ec8], rsi
jne 0x18001010c
jmp 0x18003b401
mov rax, qword [rsp + 0xa8]
test rax, rax
je 0x18003b3cc
mov rax, qword [rax]
jmp 0x18003b3d3
mov rax, 0xffffffffffffffff
mov qword [rsp + 0x38], rax
mov r9d, r14d
mov rax, qword [rsp + 0xa0]
mov r8, r15
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], edi
call fcn.18008d2e4
mov ecx, esi
mov edx, ecx
jmp 0x1800100d1
test byte [0x1800b78f1], 1
je 0x18003b41b
mov ecx, 0xc
lea rdx, [0x1800a36b8]
call fcn.180087008
mov ecx, esi
mov r13d, 0xe
mov edx, ecx
jmp 0x1800102b7
mov ecx, 0x58
call qword [case.0x180030b5c.0]
mov rsi, rax
test rax, rax
je 0x180010147
xor edx, edx
mov rcx, rax
lea r8d, [rdx + 0x58]
call sub.api_ms_win_core_crt_l1_1_0.dll_memset
nop
jmp 0x180010147
call qword [sym.imp.api_ms_win_core_heap_l1_1_0.dll_GetProcessHeap]
nop dword [rax + rax]
mov qword [0x1800b7ed8], rax
jmp 0x18001012c
test byte [0x1800b78f1], 1
je 0x18003b487
mov ecx, 0xd
lea rdx, [0x1800a36b8]
call fcn.180087008
mov ecx, ebp
mov r13d, 0xe
mov edx, ecx
jmp 0x1800102b7
mov r9d, dword [rsi + 0x30]
lea rdx, [0x1800a36b8]
mov ecx, 0xe
mov qword [rsp + 0x28], rdi
mov r8, rsi
mov dword [rsp + 0x20], ebx
call fcn.1800896e0
mov rax, qword [0x1800b7ec8]
jmp 0x18001022a
mov ecx, 0xf
jmp 0x18003b4cf
mov ecx, 0x11
lea rdx, [0x1800a36b8]
call fcn.180087008
nop
jmp 0x1800102b2
mov ecx, 0x10
lea rdx, [0x1800a36b8]
mov r8, rbx
call fcn.1800879b4
mov ecx, ebp
jmp 0x1800103d1
mov ecx, 3
int 0x29
test byte [0x1800b78f1], 1
je 0x18003b521
mov ecx, 0xb
lea rdx, [0x1800a36b8]
call fcn.180087008
mov ecx, esi
mov edx, ecx
mov r13d, 0x57
jmp 0x1800102b7
mov ecx, 0x12
mov r9, rdx
jmp 0x18003b560
mov r9d, dword [r12]
lea rdx, [0x18009f098]
mov ecx, 0xc
mov r8, r12
call fcn.1800874d4
mov rdx, qword [rsp + 0x48]
jmp 0x1800102ec
mov ecx, 0x13
mov r9, r12
mov r8, rbx
lea rdx, [0x1800a36b8]
call fcn.180088bbc
mov rdx, qword [rsp + 0x48]
jmp 0x180010311
mov ecx, 0x14
lea rdx, [0x1800a36b8]
mov r8d, r13d
call fcn.1800876bc
nop
jmp 0x180010345