Function at 0x14021a660
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
test ecx, ecx
je 0x14021a6c9
xor eax, eax
sub eax, dword [0x1405791c8]
mov ecx, eax
xor ecx, 0xc8938993
and eax, 0x48938993
lea eax, [rcx + rax*2]
add edx, eax
jne 0x14021a753
movzx eax, byte [0x140578f53]
cmp al, 0xf0
je 0x14021a9a1
mov cl, 0x8f
nop word cs:[rax + rax]
mov al, 0xab
lock cmpxchg byte [0x140578f53], cl
je 0x14021a7f7
cmp al, 0xf0
jne 0x14021a6b0
jmp 0x14021a9a1
xor eax, eax
mov ecx, 0x376c766d
mov r8d, dword [0x1405d1560]
lea r9d, [r8 - 1]
imul r9d, r8d
test r9b, 1
jne 0x14021a6e9
test al, al
je 0x14021a70d
mov r8d, dword [0x1405d1560]
lea r9d, [r8 - 1]
imul r9d, r8d
and r9d, 1
mov r8d, dword [0x1405791c8]
add r8d, ecx
cmp r9d, r8d
jne 0x14021a6d0
jmp 0x14021a6e5
test edx, edx
je 0x14021a77e
movzx eax, byte [0x140578f23]
cmp al, 0xde
je 0x14021a8a0
mov cl, 0x4b
nop word cs:[rax + rax]
mov al, 0xe5
lock cmpxchg byte [0x140578f23], cl
je 0x14021a806
movzx edx, byte [0x1405791d8]
add dl, 0xd
cmp al, dl
jne 0x14021a730
jmp 0x14021a8a0
mov eax, 0x376c766e
add eax, dword [0x1405791c8]
lea rcx, [fcn.14021a660]
add ecx, ecx
add ecx, 0x30e0
xor ecx, eax
not ecx
test ecx, eax
jne 0x14021aa95
jmp 0x14021aa4e
movzx eax, byte [0x140578f8d]
movzx ecx, byte [0x1405791d8]
add cl, 0x2a
cmp al, cl
je 0x14021a989
xor ecx, ecx
nop dword [rax]
mov eax, dword [0x1405d1564]
cmp eax, 0x14
jg 0x14021a7e0
mov al, 0x9e
lock cmpxchg byte [0x140578f8d], cl
sete dl
mov r8d, dword [0x1405d1564]
cmp r8d, 0xe
jg 0x14021a7e0
test dl, dl
jne 0x14021a8b7
cmp al, 0xfb
jne 0x14021a7a0
jmp 0x14021a989
mov al, 0x9e
lock cmpxchg byte [0x140578f8d], cl
mov eax, dword [0x1405d1564]
cmp eax, 0x18
jge 0x14021a7a0
jmp 0x14021a7ab
xor eax, eax
test al, al
jne 0x14021a9d0
jmp 0x14021a9aa
xor edx, edx
lea rax, [0x140578f20]
lea rcx, [0x1404931f0]
nop word cs:[rax + rax]
movsxd rdx, edx
movzx r8d, byte [rdx + rax]
movzx r9d, byte [rdx + rcx]
not r9b
mov r10d, r9d
or r10b, r8b
not r10b
and r9b, r8b
or r9b, r10b
mov byte [rdx + rax], r9b
add edx, 0xfab8bbce
mov r8d, edx
xor r8d, 0x5474433
and edx, 0x5474433
lea edx, [r8 + rdx*2]
cmp edx, 3
jl 0x14021a820
nop word cs:[rax + rax]
mov eax, dword [0x1405d1560]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x14021a870
xor eax, eax
nop word cs:[rax + rax]
test al, al
jne 0x14021a890
mov al, 0xde
xchg byte [0x140578f23], al
nop dword [rax]
mov eax, dword [0x1405d1564]
cmp eax, 0x21
jg 0x14021a8a0
lea rax, [0x140578f20]
jmp 0x14021a990
mov edi, 0xffffffff
mov ebx, 1
xor r14d, r14d
lea r15, [0x140578f80]
lea r12, [0x140493250]
lea rsi, [0x14021ab50]
xor r13d, r13d
test r14b, r14b
jne 0x14021a938
nop word cs:[rax + rax]
movzx eax, byte [r13 + r15]
movzx ecx, byte [r13 + r12]
mov edx, ecx
not dl
mov r8d, eax
xor r8b, dl
not r8b
and r8b, cl
and dl, al
or dl, r8b
mov byte [r13 + r15], dl
cmp dword [0x1405791c8], 0xc8938993
jne 0x14021a938
lea eax, [r13 + 1]
cmp eax, 0xc
jg 0x14021a981
add edi, 2
inc r13
dec ebx
test r14b, r14b
je 0x14021a8f0
movzx eax, byte [r13 + r15]
movzx edx, byte [r13 + r12]
sub al, dl
mul dl
mov ecx, eax
sub dl, al
sub al, dl
mul dl
mov ebp, eax
xor bpl, al
not bpl
and bpl, cl
xor bpl, al
mov ecx, 0x10
call fcn.140424ac4
mov qword [0x1405d1558], rax
mov rcx, rsi
call fcn.140444ec0
mov byte [r13 + r15], bpl
jmp 0x14021a8f0
mov al, 0xfb
xchg byte [0x140578f8d], al
lea rax, [0x140578f80]
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rax, [0x140578f30]
jmp 0x14021a990
mov eax, 0x1eca7140
add eax, dword [0x1405791c8]
mov ecx, eax
xor ecx, 0x18a2052d
and eax, 0x18a2052d
add eax, eax
add eax, ecx
je 0x14021a9e3
nop dword [rax + rax]
mov eax, dword [0x1405d1560]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x14021a9d0
jmp 0x14021a9aa
xor edx, edx
lea rax, [0x140578f30]
lea rcx, [0x140493200]
nop word cs:[rax + rax]
movsxd rdx, edx
movzx r8d, byte [rdx + rcx]
xor byte [rdx + rax], r8b
mov r8d, edx
xor r8d, 1
mov r9d, edx
not r9d
mov r10d, edx
xor edx, 0x7ffffffe
and edx, r9d
and r9d, 1
and r10d, 0x7ffffffe
or r10d, r9d
or edx, r10d
not edx
lea edx, [r8 + rdx*2]
cmp edx, 0x23
jl 0x14021aa00
mov al, 0xf0
xchg byte [0x140578f53], al
jmp 0x14021a9a1
movzx eax, byte [0x140578e83]
mov ecx, dword [0x1405791c8]
lea rdx, [fcn.14021a660]
add edx, edx
add edx, 0x4360
mov r8d, 0xc8938991
sub r8d, ecx
add ecx, 0x376c766e
mov r9d, edx
xor r9d, ecx
and ecx, edx
not edx
and r8d, edx
or r8d, ecx
and r8d, edx
or r8d, r9d
cmp r8d, 0xffffffff
je 0x14021aa9e
movzx eax, byte [0x140578e83]
jmp 0x14021aa4e
cmp al, 0xd5
je 0x14021ab3c
mov cl, 0x19
nop dword [rax + rax]
mov al, 0x62
lock cmpxchg byte [0x140578e83], cl
je 0x14021aac2
cmp al, 0xd5
jne 0x14021aab0
jmp 0x14021ab3c
xor eax, eax
lea rcx, [0x140578e60]
lea rdx, [0x140493130]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rcx]
movzx r9d, byte [rax + rdx]
mov r10d, r8d
not r10b
mov r11d, r10d
xor r11b, r9b
mov ebx, r8d
mov esi, r10d
and sil, r9b
and r8b, r9b
not r9b
xor bl, r9b
or bl, sil
not bl
or bl, r11b
not bl
and r9b, r10b
or r8b, r9b
or r8b, sil
not r8b
or r8b, bl
mov byte [rax + rcx], r8b
lea r8d, [rax + 1]
cmp r8d, 0x22
jg 0x14021ab34
inc rax
jmp 0x14021aae0
mov al, 0xd5
xchg byte [0x140578e83], al
lea rax, [0x140578e60]
jmp 0x14021a990