Function at 0x2018cce0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x50
mov esi, edx
test ecx, ecx
je 0x2018cd17
mov ecx, dword [0x205b3d50]
mov edx, 0x70f5ca80
mov r8d, 0x4d6a9842
call fcn.20190300
test al, 1
jne 0x2018d1cb
jmp 0x2018d1ee
mov ecx, esi
mov edx, 0xeb1f4dc2
mov r8d, 0x260b41b3
call fcn.2008e940
test al, 1
je 0x2018cd3c
xor eax, eax
test al, al
jne 0x2018cfb0
jmp 0x2018cf9b
movzx eax, byte [0x20550d5d]
cmp al, 0x75
je 0x2018cf8f
lea rsi, [rsp + 0x40]
mov bl, 0x9e
lea rdi, [rsp + 0x4c]
nop word [rax + rax]
mov ecx, 0xbcc80662
mov edx, 0x2169c60b
call fcn.2006dde0
mov eax, dword [0x205b3d50]
lea ecx, [rax - 1]
imul ecx, eax
mov r9d, dword [0x205522e0]
lea r8d, [r9 - 0x76fabc07]
add r9d, 0x80c423bd
mov rdx, rsi
call fcn.201294e0
cmp dword [rsp + 0x40], 0
jne 0x2018cdea
mov al, 0x4e
lock cmpxchg byte [0x20550d5d], bl
sete dl
mov ecx, dword [0x205522e0]
mov r8d, ecx
xor r8d, 0x51351f1a
mov r9d, ecx
and r9d, 0x51351f1a
lea r8d, [r8 + r9*2]
add ecx, 0x91aa296c
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], r8d
mov ecx, eax
mov r8, rdi
mov r9, rsi
call fcn.2018ff80
test al, 1
je 0x2018ce20
mov al, 0x4e
lock cmpxchg byte [0x20550d5d], bl
sete dl
mov ecx, eax
mov r8d, 0x54b8d24c
mov r9d, 0xd0f48774
call fcn.2006dde0
mov eax, dword [0x205b3d54]
cmp eax, 0x4a
jge 0x2018cd60
jmp 0x2018cd9f
test byte [rsp + 0x40], 1
jne 0x2018ce37
cmp byte [rsp + 0x4c], 0x75
jne 0x2018cd60
jmp 0x2018cf8f
xor esi, esi
lea r15, [0x20550d50]
lea r12, [0x204723f0]
lea rdi, [rsp + 0x40]
lea rbx, [rsp + 0x4c]
nop word cs:[rax + rax]
mov eax, dword [0x205b3d54]
cmp eax, 0x2c
jg 0x2018ce9d
nop dword [rax + rax]
movzx eax, byte [rsi + r12]
add byte [rsi + r15], al
mov ecx, 0x79801204
mov edx, 0x1c34df69
call fcn.2006dde0
mov eax, dword [0x205b3d50]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x2018cf70
mov ecx, esi
mov rdx, rdi
mov r8d, 0x81d3da1b
mov r9d, 0x9656efd6
call fcn.20135500
mov rcx, qword [rsp + 0x40]
mov rdx, rdi
mov r8d, 0x155fb549
mov r9d, 0x9b290b1c
call fcn.20190420
mov rax, qword [rsp + 0x40]
movzx ebp, byte [rax]
movzx edx, byte [rsi + r12]
mov dword [rsp + 0x28], 0x8c7a24a2
mov dword [rsp + 0x20], 0x65ff3325
mov ecx, ebp
mov r8, rbx
mov r9, rdi
call fcn.20190800
movzx eax, byte [rsp + 0x40]
mul byte [rsp + 0x4c]
sub al, bpl
mov edx, ebp
mov ecx, eax
shl dl, cl
mov r14d, ebp
mov ecx, edx
shl r14b, cl
sub bpl, r14b
mov eax, ebp
mul r14b
neg al
mov dword [rsp + 0x20], 0x92e211fc
mov ecx, eax
mov edx, r14d
mov r8, rdi
mov r9d, 0x6e4172d7
call fcn.2008e900
movzx eax, byte [rsp + 0x40]
sub al, r14b
mul r14b
sub al, r14b
mov dword [rsp + 0x20], 0x6404bee9
mov ecx, eax
mov edx, r14d
mov r8, rdi
mov r9d, 0xb0bbc252
call fcn.20190280
movzx eax, byte [rsp + 0x40]
mov byte [rsi + r15], al
jmp 0x2018ce70
lea eax, [rsi + 1]
cmp eax, 0xc
jg 0x2018cf80
inc rsi
jmp 0x2018ce60
mov ecx, 0xa1b6f486
mov edx, 0x2cd6cd3d
call fcn.20190810
lea rax, [0x20550d50]
jmp 0x2018d1bc
movzx eax, byte [0x20550d7d]
mov cl, 1
test cl, cl
jne 0x2018cfdc
nop dword [rax + rax]
mov ecx, 0x3dcd5b10
mov edx, 0x50ca0334
call fcn.201904c0
mov edx, dword [0x205522e0]
lea ecx, [rdx + 0x330a8ed5]
add edx, 0xd0819afc
call fcn.20190510
test al, 1
je 0x2018cfb0
jmp 0x2018cf9b
cmp al, 0x84
je 0x2018d178
mov bpl, 0x1d
lea rsi, [rsp + 0x4c]
lea rdi, [rsp + 0x40]
mov r14d, 0x2683e712
jmp 0x2018d009
cmp bl, 0x84
je 0x2018d178
mov eax, dword [0x205b3d50]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x2018d0c0
nop
mov al, 0xbb
lock cmpxchg byte [0x20550d7d], bpl
mov ebx, eax
sete r15b
mov rcx, rsi
mov rdx, rdi
mov r8d, 0xfc139969
mov r9d, 0xb3eaefb4
call fcn.20190440
mov eax, dword [rsp + 0x4c]
imul eax, dword [rsp + 0x40]
and eax, 1
mov ecx, dword [0x205522e0]
add ecx, r14d
cmp eax, ecx
jne 0x2018d0c0
test r15b, r15b
jne 0x2018d0f3
nop word [rax + rax]
mov eax, dword [0x205b3d50]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x2018d09f
mov rcx, rdi
mov edx, 0xe69a5bbf
mov r8d, 0x864e441e
call fcn.20190430
cmp dword [rsp + 0x40], 0x12
jle 0x2018d000
mov ecx, dword [0x205b3d54]
mov edx, 0xf26e1578
mov r8d, 0xa147dbfc
call fcn.2018ff50
test al, 1
je 0x2018d070
jmp 0x2018d081
movzx ecx, byte [0x205522f0]
lea eax, [rcx - 0x76]
add cl, 0xec
lock cmpxchg byte [0x20550d7d], cl
mov eax, dword [0x205522e0]
mov ecx, eax
xor ecx, 0x2683e712
and eax, 0x2683e712
add eax, eax
add eax, ecx
jne 0x2018d0c0
jmp 0x2018d020
xor eax, eax
lea rsi, [rsp + 0x40]
mov edi, 0x2683e71f
nop
movsxd rcx, eax
mov eax, dword [0x205522e0]
lea r9d, [rax - 0x1028fdbf]
add eax, 0x330a8ed5
mov dword [rsp + 0x20], eax
mov edx, ecx
mov r8, rsi
call fcn.20190020
mov eax, dword [rsp + 0x40]
mov ecx, dword [0x205522e0]
add ecx, edi
cmp eax, ecx
jl 0x2018d100
mov eax, dword [0x205b3d50]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x2018d152
mov al, 0x84
xchg byte [0x20550d7d], al
xor eax, eax
test al, al
je 0x2018d178
mov al, 0x84
xchg byte [0x20550d7d], al
jmp 0x2018d144
mov eax, dword [0x205b3d50]
mov ecx, dword [0x205522e0]
not ecx
add ecx, eax
imul ecx, eax
test cl, 1
je 0x2018d18e
xor ecx, ecx
mov edx, 0x4a85e4bc
mov r8d, 0xff9ff120
call fcn.2008e940
test al, 1
je 0x2018d160
mov ecx, dword [0x205b3d50]
lea edx, [rcx - 1]
mov r9d, dword [0x205522e0]
lea r8d, [r9 - 0x2bbf0f3d]
add r9d, 0x8aa374c8
call fcn.20190530
test al, 1
je 0x2018d160
lea rax, [0x20550d70]
add rsp, 0x50
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret
lea rax, [fcn.2018cce0]
add eax, eax
add eax, 0x2460
mov ecx, eax
not ecx
and ecx, eax
mov eax, 0x2683e712
add eax, dword [0x205522e0]
cmp ecx, eax
je 0x2018d20c
mov r8d, dword [0x205522e0]
lea edx, [r8 + 0x422d8c92]
add r8d, 0xb742c0c9
mov ecx, esi
call fcn.2006dde0
jmp 0x2018d1cb
test esi, esi
je 0x2018d2a9
xor edi, edi
mov ebx, 0x2683e742
lea rsi, [rsp + 0x40]
mov edx, dword [0x205522e0]
lea ecx, [rdx - 0x48aea215]
add edx, 0xa003f916
call fcn.2006dde0
test dil, dil
jne 0x2018d255
movzx eax, byte [0x20550df5]
mov ecx, dword [0x205b3d54]
mov edx, dword [0x205522e0]
add edx, ebx
cmp ecx, edx
jl 0x2018d27f
mov r8d, dword [0x205522e0]
lea edx, [r8 - 0x7e06d7e0]
add r8d, 0x5e9843a
mov rcx, rsi
call fcn.20190270
mov eax, dword [0x205b3d54]
cmp eax, 0x60
jge 0x2018d220
jmp 0x2018d23c
cmp al, 0x5b
je 0x2018d392
mov cl, 0x9e
nop dword [rax]
mov al, 0x35
lock cmpxchg byte [0x20550df5], cl
je 0x2018d325
cmp al, 0x5b
jne 0x2018d290
jmp 0x2018d392
mov ecx, 0x4aa6c253
mov edx, 0x6cf92e2d
call fcn.201904a0
test al, 1
jne 0x2018d3e9
mov bl, 0x2e
lea rsi, [rsp + 0x40]
nop word [rax + rax]
mov al, 0xfa
lock cmpxchg byte [0x20550c99], bl
sete dl
mov dword [rsp + 0x20], 0xc8065800
mov ecx, eax
mov r8, rsi
mov r9d, 0x43de7e30
call fcn.20190850
test al, 1
jne 0x2018d39f
movzx ecx, byte [rsp + 0x40]
mov r8d, dword [0x205522e0]
lea edx, [r8 + 0x28fe8734]
add r8d, 0x13362523
call fcn.20190480
test al, 1
je 0x2018d2d0
jmp 0x2018d3e9
xor edi, edi
lea r14, [0x20550de0]
lea rbx, [rsp + 0x4c]
nop word cs:[rax + rax]
movzx edx, byte [rdi + r14]
mov qword [rsp + 0x20], rsi
mov dword [rsp + 0x30], 0x9515627b
mov dword [rsp + 0x28], 0xf7f92aff
mov rcx, rdi
mov r8d, edi
mov r9, rbx
call fcn.201902a0
movzx eax, byte [rsp + 0x4c]
mov rcx, qword [rsp + 0x40]
mov byte [rcx + r14], al
lea eax, [rdi + 1]
cmp eax, 0x14
jg 0x2018d383
inc rdi
jmp 0x2018d340
movzx eax, byte [0x205522f0]
add al, 0x2a
xchg byte [0x20550df5], al
mov eax, dword [0x205b3d54]
cmp eax, 0x3a
jle 0x2018d3f5
jmp 0x2018d400
xor eax, eax
lea rcx, [0x20550c90]
lea rdx, [0x20472330]
mov r8d, 0x2683e71b
nop word cs:[rax + rax]
movzx r9d, byte [rax + rdx]
add byte [rax + rcx], r9b
lea r9d, [rax + 1]
mov r10d, dword [0x205522e0]
add r10d, r8d
cmp r9d, r10d
jge 0x2018d3e1
inc rax
jmp 0x2018d3c0
mov al, 0xeb
xchg byte [0x20550c99], al
lea rax, [0x20550c90]
jmp 0x2018d1bc
mov eax, dword [0x205b3d54]
cmp eax, 0x4f
jl 0x2018d42c
lea rsi, [rsp + 0x40]
nop word cs:[rax + rax]
mov rcx, rsi
mov edx, 0xb2ff973
mov r8d, 0x9eb31f4a
call fcn.20190430
cmp dword [rsp + 0x40], 0x5a
jge 0x2018d410
jmp 0x2018d3f5
lea rax, [0x20550de0]
jmp 0x2018d1bc