Function at 0x14021bde0
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 ebp, dword [rsp + 0xa0]
test ecx, ecx
je 0x14021be39
test edx, edx
je 0x14021beb9
movzx eax, byte [0x1404ef9bc]
cmp al, 0x4a
je 0x14021c076
mov cl, 0xb8
nop word [rax + rax]
mov al, 0x50
lock cmpxchg byte [0x1404ef9bc], cl
je 0x14021bfc5
cmp al, 0x4a
jne 0x14021be20
jmp 0x14021c076
mov r8d, esi
mov eax, dword [0x1404f1418]
mov r14d, ebp
xor r14d, 0xbbe91b76
mov r9d, esi
sub r9d, r14d
sub r9d, eax
add r9d, dword [0x1404efec8]
xor r8d, 0xf6ddd31c
mov ecx, ebp
xor ecx, 0xbbe8db82
add ecx, eax
add ecx, r9d
movsxd rax, ecx
add rax, qword [0x1404eff10]
mov ecx, edx
mov edx, r8d
call qword [case.0x1401138cb.0]
test al, 1
je 0x14021bf38
movzx eax, byte [0x1404ef8eb]
cmp al, 0xc3
je 0x14021c15e
mov cl, 0xb9
nop
mov al, 0x2e
lock cmpxchg byte [0x1404ef8eb], cl
je 0x14021c0cc
cmp al, 0xc3
jne 0x14021bea0
jmp 0x14021c15e
movzx eax, byte [0x1404ef510]
cmp al, 0xc5
je 0x14021c0c0
mov r14b, 0xda
mov edi, esi
xor edi, 0xe92a87e1
nop word cs:[rax + rax]
mov al, 0x94
lock cmpxchg byte [0x1404ef510], r14b
mov ebx, eax
sete dl
mov eax, dword [0x1404efeb0]
add eax, esi
add eax, 0xffff4034
cdqe
add rax, qword [0x1404eff00]
mov ecx, ebx
mov r8d, edi
call qword [case.0x1401138cb.0]
test al, 1
jne 0x14021c082
movzx eax, byte [0x1404f1428]
mov ecx, ebp
xor cl, 0xc2
mov edx, ecx
xor dl, al
and cl, al
add cl, cl
add cl, dl
cmp bl, cl
jne 0x14021bee0
jmp 0x14021c0c0
mov edx, ebp
xor edx, 0x9fb38bed
add edx, dword [0x1404f1418]
xor edx, esi
mov eax, dword [0x1404efecc]
add eax, esi
add eax, 0xffff4034
cdqe
add rax, qword [0x1404eff08]
lea rcx, [rsp + 0x30]
call qword [case.0x1401138cb.0]
cmp byte [rsp + 0x30], 0xd5
je 0x14021c1e9
mov edi, esi
xor edi, 0x568cdd73
lea rbx, [rsp + 0x30]
nop word cs:[rax + rax]
mov eax, dword [0x1404efebc]
add eax, esi
add eax, 0xffff4034
cdqe
add rax, qword [0x1404efee8]
mov rcx, rbx
mov edx, edi
call qword [case.0x1401138cb.0]
test al, 1
jne 0x14021c16a
cmp byte [rsp + 0x30], 0xd5
jne 0x14021bf90
jmp 0x14021c1e9
xor edi, edi
mov eax, esi
not eax
mov ecx, eax
and ecx, 0x8d2add02
mov ebx, esi
and ebx, 0x72d522fd
or ebx, ecx
lea r14, [rsp + 0x30]
and eax, 0x11a32cbe
mov ebp, esi
and ebp, 0xee5cd341
or ebp, eax
lea r15, [rsp + 0x2f]
lea r12, [0x1404ef9b0]
nop dword [rax]
mov eax, dword [0x1404efec0]
add eax, esi
add eax, 0xffff4034
cdqe
add rax, qword [0x1404efef0]
mov ecx, edi
mov rdx, r14
mov r8d, ebx
call qword [case.0x1401138cb.0]
mov rcx, qword [rsp + 0x30]
mov eax, dword [0x1404efeb8]
add eax, esi
add eax, 0xffff4034
cdqe
add rax, qword [0x1404efef8]
mov dword [rsp + 0x20], ebp
mov edx, edi
mov r8, r15
mov r9, r14
call qword [case.0x1401138cb.0]
movzx eax, byte [rsp + 0x2f]
mov rcx, qword [rsp + 0x30]
add al, byte [rcx]
mov byte [rdi + r12], al
lea eax, [rdi + 1]
cmp eax, 0xb
jg 0x14021c06e
inc rdi
jmp 0x14021c000
mov al, 0x4a
xchg byte [0x1404ef9bc], al
lea rax, [0x1404ef9b0]
jmp 0x14021c1f0
xor eax, eax
lea rcx, [0x1404ef500]
lea rdx, [0x1404093a0]
nop word cs:[rax + rax]
movzx r8d, byte [rax + rdx]
add byte [rax + rcx], r8b
lea r8d, [rax + 1]
cmp r8d, 0xf
jg 0x14021c0b8
inc rax
jmp 0x14021c0a0
mov al, 0xc5
xchg byte [0x1404ef510], al
lea rax, [0x1404ef500]
jmp 0x14021c1f0
xor edi, edi
lea r15, [0x1404ef8d0]
lea r12, [0x140409740]
xor ebp, 0xbbe8db83
mov ebx, esi
xor ebx, 0x8ed95b01
nop word [rax + rax]
movsxd rdi, edi
movzx eax, byte [rdi + r12]
mov ecx, eax
xor cl, al
not cl
and cl, byte [rdi + r15]
xor cl, al
mov byte [rdi + r15], cl
mov eax, dword [0x1404f1418]
add eax, ebp
add edi, eax
mov eax, dword [0x1404efed0]
add eax, esi
add eax, 0xffff4034
cdqe
add rax, qword [0x1404efee0]
mov ecx, edi
mov edx, ebx
call qword [case.0x1401138cb.0]
test al, 1
je 0x14021c0f0
add r14d, dword [0x1404f1418]
mov ecx, esi
sub esi, r14d
add esi, dword [0x1404efec4]
xor ecx, 0x8d8af571
movsxd rax, esi
add rax, qword [0x1404eff20]
call qword [case.0x1401138cb.0]
lea rax, [0x1404ef8d0]
jmp 0x14021c1f0
xor edi, edi
lea r15, [0x1404efb00]
mov ebx, esi
xor ebx, 0x4ba94f85
lea r14, [rsp + 0x30]
mov r12d, ebp
xor r12d, 0xbbe8dbb7
nop word [rax + rax]
movzx r13d, byte [rdi + r15]
mov eax, dword [0x1404efeb4]
add eax, esi
add eax, 0xffff4034
cdqe
add rax, qword [0x1404eff18]
mov ecx, edi
mov rdx, r14
mov r8d, ebx
call qword [case.0x1401138cb.0]
xor r13b, byte [rsp + 0x30]
mov byte [rdi + r15], r13b
lea eax, [rdi + 1]
mov ecx, dword [0x1404f1418]
add ecx, r12d
cmp eax, ecx
jge 0x14021c1d7
inc rdi
jmp 0x14021c190
xor bpl, 0xf2
add bpl, byte [0x1404f1428]
xchg byte [0x1404efb0d], bpl
lea rax, [0x1404efb00]
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret