Function at 0x2008e400
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov esi, r9d
mov edi, dword [rsp + 0xa0]
test ecx, ecx
je 0x2008e491
test edx, edx
je 0x2008e4c9
movzx eax, byte [0x205332bb]
cmp al, 0xec
je 0x2008e5c1
mov eax, edi
not eax
mov ecx, eax
and ecx, 0xf0fb47d9
mov ebp, edi
and ebp, 0xf04b826
or ebp, ecx
and eax, 0xbf496f98
mov ebx, edi
and ebx, 0x40b69067
or ebx, eax
lea r14, [rsp + 0x30]
nop
mov eax, dword [0x205338c8]
add eax, ebp
mov edx, eax
xor edx, eax
not edx
and edx, esi
xor edx, eax
mov rcx, r14
mov r8d, ebx
call fcn.2008e390
test al, 1
jne 0x2008e529
cmp byte [rsp + 0x30], 0xec
jne 0x2008e460
jmp 0x2008e5c1
test edx, edx
je 0x2008e4f9
movzx eax, byte [0x20533086]
cmp al, 0x6e
je 0x2008e674
mov cl, 0xdf
nop word cs:[rax + rax]
mov al, 0xce
lock cmpxchg byte [0x20533086], cl
je 0x2008e5cd
cmp al, 0x6e
jne 0x2008e4b0
jmp 0x2008e674
movzx eax, byte [0x205330f8]
cmp al, 0x2e
je 0x2008e6fa
mov cl, 0xff
nop word [rax + rax]
mov al, 0x77
lock cmpxchg byte [0x205330f8], cl
je 0x2008e680
cmp al, 0x2e
jne 0x2008e4e0
jmp 0x2008e6fa
movzx eax, byte [0x2053336f]
cmp al, 0x87
je 0x2008e775
mov cl, 0xf2
nop word [rax + rax]
mov al, 0xb5
lock cmpxchg byte [0x2053336f], cl
je 0x2008e703
cmp al, 0x87
jne 0x2008e510
jmp 0x2008e775
xor r15d, r15d
lea r13, [0x2046c320]
mov ebx, esi
xor ebx, 0xe32b7846
mov ebp, edi
xor ebp, 0xd74a7c8b
lea r14, [rsp + 0x30]
xor esi, 0x8ee7ea95
xor edi, 0xa8e945a9
nop word cs:[rax + rax]
movsxd r15, r15d
lea rax, [0x205332b0]
movzx r12d, byte [r15 + rax]
xor r12b, byte [r15 + r13]
mov ecx, r15d
mov rdx, r14
mov r8d, ebx
mov r9d, ebp
call fcn.2008f9a0
mov rax, qword [rsp + 0x30]
mov byte [rax], r12b
add r15d, 0x81394699
mov eax, r15d
xor eax, 1
and r15d, 1
lea r15d, [rax + r15*2]
add r15d, 0x7ec6b967
mov ecx, r15d
mov edx, esi
mov r8d, edi
call fcn.2008efa0
test al, 1
je 0x2008e560
mov al, 0xec
xchg byte [0x205332bb], al
lea rax, [0x205332b0]
jmp 0x2008e77c
xor eax, eax
mov ebx, edi
xor ebx, 0x40df58a8
lea r14, [rsp + 0x30]
lea r12, [0x2046c110]
lea r13, [0x20533080]
xor edi, 0x506e2e45
movsxd r15, eax
mov eax, esi
xor eax, 0xfeb6d5b3
mov r8d, esi
not r8d
and r8d, esi
xor r8d, eax
mov rcx, r15
mov rdx, r14
mov r9d, ebx
call fcn.2008e2c0
mov rax, qword [rsp + 0x30]
movzx eax, byte [rax]
add al, 0xd0
movzx ecx, byte [r15 + r12]
xor cl, al
mov edx, ecx
not dl
and dl, al
add dl, dl
mov eax, ecx
xor al, dl
and dl, cl
add dl, dl
add dl, al
mov eax, edx
xor al, 0x30
and dl, 0x30
add dl, dl
add dl, al
mov byte [r15 + r13], dl
add r15d, 0x2cd80ec2
mov eax, r15d
xor eax, 0xd327f13f
and r15d, 0x5327f13f
lea eax, [rax + r15*2]
mov ecx, dword [0x205338c8]
add ecx, edi
cmp eax, ecx
jl 0x2008e5f0
mov al, 0x6e
xchg byte [0x20533086], al
lea rax, [0x20533080]
jmp 0x2008e77c
xor eax, eax
lea r14, [0x205330e0]
lea r15, [0x2046c170]
xor esi, 0x4aafe297
xor edi, 0x17817873
lea rbx, [rsp + 0x30]
nop word cs:[rax + rax]
movsxd r12, eax
movzx ecx, byte [r12 + r14]
movzx edx, byte [r12 + r15]
mov dword [rsp + 0x20], edi
mov r8, rbx
mov r9d, esi
call fcn.2008e900
movzx eax, byte [rsp + 0x30]
mov byte [r12 + r14], al
mov eax, r12d
xor eax, 0x29530611
and r12d, 0x29530611
lea eax, [rax + r12*2]
add eax, 0xd6acf9f0
cmp eax, 0x18
jl 0x2008e6b0
mov al, 0x2e
xchg byte [0x205330f8], al
lea rax, [0x205330e0]
jmp 0x2008e77c
xor ebx, ebx
xor esi, 0xe6a163e2
mov eax, edi
not eax
mov ecx, eax
and ecx, 0x8ca65223
and edi, 0x7359addc
or edi, ecx
and eax, 0x7359addc
or edi, eax
not edi
or edi, eax
lea r14, [rsp + 0x30]
lea r15, [0x2046c3d0]
lea r12, [0x20533360]
nop dword [rax]
mov ecx, ebx
mov rdx, r14
mov r8d, esi
mov r9d, edi
call fcn.2008ef80
mov rax, qword [rsp + 0x30]
movzx ecx, byte [rbx + r15]
add cl, byte [rax]
mov byte [rbx + r12], cl
lea eax, [rbx + 1]
cmp eax, 0xe
jg 0x2008e76d
inc rbx
jmp 0x2008e740
mov al, 0x87
xchg byte [0x2053336f], al
lea rax, [0x20533360]
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret