Function at 0x2018ee00
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x40
test ecx, ecx
je 0x2018ee8e
mov esi, r9d
mov rax, qword [0x205b3ab8]
mov r15, rax
shr r15, 0x20
or r15d, eax
test edx, edx
je 0x2018eed9
mov ecx, esi
xor ecx, 0xc710d5a5
mov eax, dword [0x2055131c]
add eax, r15d
add eax, esi
add eax, 0xffff9790
cdqe
add rax, qword [0x20551338]
call qword [case.0x2010e313.0]
test al, 1
jne 0x2018f01c
nop dword [rax]
movzx ecx, byte [0x205522f0]
mov edx, ecx
xor dl, 0x4b
mov eax, ecx
and al, 0x4b
add al, al
add al, dl
add cl, 0x5f
lock cmpxchg byte [0x20550e7f], cl
je 0x2018ef99
cmp al, 0x83
jne 0x2018ee60
jmp 0x2018f01c
mov eax, 0x2683e712
add eax, dword [0x205522e0]
cmp edx, eax
jne 0x2018ef66
movzx eax, byte [0x20550bc5]
movzx ecx, byte [0x205522f0]
add cl, 0xf
cmp al, cl
je 0x2018f12a
mov cl, 0x36
nop dword [rax]
mov al, 0x4f
lock cmpxchg byte [0x20550bc5], cl
je 0x2018f09e
cmp al, 0x40
jne 0x2018eec0
jmp 0x2018f12a
movzx eax, byte [0x20550d6e]
cmp al, 0xa4
je 0x2018f092
mov bl, 0x47
mov ebp, 0x9c1722b4
lea rdi, [rsp + 0x32]
nop word cs:[rax + rax]
mov al, 0x6d
lock cmpxchg byte [0x20550d6e], bl
sete r14b
sete dl
mov ecx, dword [0x205522e0]
add ecx, ebp
mov r9d, ecx
xor r9d, ecx
not r9d
and r9d, esi
xor r9d, ecx
mov ecx, dword [0x20551318]
add ecx, esi
sub ecx, r15d
add ecx, 0xffff9790
movsxd r10, ecx
add r10, qword [0x20551330]
mov ecx, eax
mov r8, rdi
mov rax, r10
call qword [case.0x2010e313.0]
test r14b, r14b
jne 0x2018f028
cmp byte [rsp + 0x32], 0xa4
jne 0x2018ef00
jmp 0x2018f092
movzx eax, byte [0x20550d14]
cmp al, 0xc7
je 0x2018f119
mov cl, 0x7d
nop word [rax + rax]
mov al, 0x3b
lock cmpxchg byte [0x20550d14], cl
je 0x2018f0dc
cmp al, 0xc7
jne 0x2018ef80
jmp 0x2018f119
xor edi, edi
lea r12, [0x20550e70]
mov ebp, esi
xor ebp, 0x7083ef3a
lea rbx, [rsp + 0x33]
lea r14, [rsp + 0x38]
nop word cs:[rax + rax]
lea rcx, [r12 + rdi]
mov eax, dword [0x20551310]
add eax, r15d
add eax, esi
add eax, 0xffff9790
cdqe
add rax, qword [0x20551328]
mov dword [rsp + 0x20], ebp
mov edx, edi
mov r8, rbx
mov r9, r14
call qword [case.0x2010e313.0]
mov rax, qword [rsp + 0x38]
movzx eax, byte [rax]
mov ecx, eax
xor cl, al
not cl
and cl, byte [rsp + 0x33]
xor cl, al
mov byte [rdi + r12], cl
lea eax, [rdi + 1]
cmp eax, 0xe
jg 0x2018f014
inc rdi
jmp 0x2018efc0
mov al, 0x83
xchg byte [0x20550e7f], al
lea rax, [0x20550e70]
jmp 0x2018f131
xor eax, eax
lea r14, [0x20550d60]
lea r12, [0x20472400]
mov edi, esi
xor edi, 0xbe3ac464
lea rbx, [rsp + 0x34]
nop word cs:[rax + rax]
movsxd rcx, eax
movzx eax, byte [rcx + r12]
xor byte [rcx + r14], al
mov eax, dword [0x20551314]
or eax, r15d
add eax, esi
add eax, 0xffff9790
cdqe
add rax, qword [0x20551320]
mov rdx, rbx
mov r8d, edi
call qword [case.0x2010e313.0]
mov eax, dword [rsp + 0x34]
cmp eax, 0xe
jl 0x2018f050
mov al, 0xa4
xchg byte [0x20550d6e], al
lea rax, [0x20550d60]
jmp 0x2018f131
xor eax, eax
lea rcx, [0x20550bb0]
lea rdx, [0x20472260]
nop
movzx r8d, byte [rax + rcx]
movzx r9d, byte [rax + rdx]
mov r10d, r8d
xor r10b, r9b
and r8b, r9b
add r8b, r8b
add r8b, r10b
mov byte [rax + rcx], r8b
lea r8d, [rax + 1]
cmp r8d, 0x14
jg 0x2018f122
inc rax
jmp 0x2018f0b0
xor edx, edx
lea rax, [0x20550d00]
lea rcx, [0x204723a0]
nop dword [rax]
movsxd rdx, edx
movzx r8d, byte [rdx + rcx]
add byte [rdx + rax], r8b
mov r8d, dword [0x205522e0]
add edx, r8d
add edx, 0x2683e713
cmp edx, 0x14
jl 0x2018f0f0
mov al, 0xc7
xchg byte [0x20550d14], al
lea rax, [0x20550d00]
jmp 0x2018f131
mov al, 0x40
xchg byte [0x20550bc5], al
lea rax, [0x20550bb0]
add rsp, 0x40
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret