Function at 0x140021c12
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rdi
sub rsp, 0x98
mov qword [rsp + 0x60], rdx
mov qword [rsp + 0x58], rcx
call fcn.14000b1d6
mov rcx, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x60]
add rax, 0x60
mov qword [rsp + 0x68], rax
mov rax, qword [rcx]
mov qword [rsp + 0x70], rax
cmp rax, rdx
jle 0x1400218f0
mov rdx, qword [rsp + 0x60]
mov rcx, qword [rsp + 0x58]
call fcn.140021440
jmp 0x140021bff
mov rax, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x60]
cmp rax, rcx
jge 0x140021bff
mov rax, qword [rsp + 0x58]
mov rcx, rax
add rcx, 8
mov qword [rsp + 0x48], rcx
mov rax, qword [rax + 8]
mov qword [rsp + 0x50], rax
cmp rax, 0
je 0x140021947
mov rcx, qword [rsp + 0x60]
mov rdx, qword [rsp + 0x50]
movabs rax, 0xbfffffffffffffff
and rax, qword [rdx]
cmp rax, rcx
jge 0x140021a5c
mov rdx, qword [rsp + 0x70]
mov r9, qword [rsp + 0x60]
movabs rax, 0x6cbb7fef06dc6df3
movabs rcx, 0x6cbb7fef06dc6df3
xor rax, rcx
sub rax, rdx
mov rcx, r9
add rcx, rax
mov qword [rsp + 0x40], rcx
movabs r8, 0xc57666939a3eb9ae
movabs rax, 0x3a89996c65c14651
xor r8, rax
mov rax, rcx
xor rax, r8
movabs r8, 0x24b4e4d69226539a
and rax, r8
movabs r11, 0x544e14f201d895cb
movabs r8, 0x70faf02493fec651
xor r11, r8
movabs r8, 0x1f16c9faa5f8544f
movabs r10, 0xe0e936055a07abb0
xor r8, r10
xor r11, r8
mov r10, rcx
and r10, r11
mov r8, r9
xor r8, 0xffffffffffffffff
movabs rsi, 0x8d963bf09088bc66
movabs rdi, 0xa922df2602aeeffc
xor rsi, rdi
and r8, rsi
and r9, r11
or rax, r10
or r8, r9
xor rax, r8
cmp rax, 0
setl al
xor rcx, rdx
cmp rcx, 0xffffffffffffffff
setg cl
and al, cl
test al, 1
jne 0x140021a52
mov r8, qword [rsp + 0x40]
mov rdx, qword [rsp + 0x50]
mov rcx, qword [rsp + 0x70]
mov r9d, 0x20
mov qword [rsp + 0x20], 8
call fcn.140010bb0
mov rcx, rax
mov rax, qword [rsp + 0x48]
mov qword [rax], rcx
jmp 0x140021a5c
call fcn.140008024
jmp 0x140021bff
mov rax, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x58]
mov rdx, qword [rsp + 0x60]
mov qword [rcx], rdx
mov qword [rsp + 0x38], rax
mov rcx, qword [rsp + 0x60]
mov rax, qword [rsp + 0x38]
mov qword [rsp + 0x30], rax
cmp rax, rcx
jge 0x140021b11
lea rcx, [rsp + 0x78]
mov edx, 0x20
call fcn.140008640
mov rcx, qword [rsp + 0x48]
mov rax, qword [rsp + 0x30]
mov rcx, qword [rcx]
add rcx, 8
shl rax, 5
add rcx, rax
lea rdx, [rsp + 0x78]
call fcn.14004c510
mov rax, qword [rsp + 0x68]
cmp byte [rax], 0
jne 0x140021b11
mov rdx, qword [rsp + 0x30]
mov rcx, rdx
add rcx, 1
mov qword [rsp + 0x28], rcx
xor rdx, 0xffffffffffffffff
xor rdx, 0xffffffffffffffff
mov rax, rcx
xor rax, rdx
and rax, rcx
movabs rcx, 0x2731e4fbb1ae5c88
movabs rdx, 0x2731e4fbb1ae5c88
xor rcx, rdx
cmp rax, rcx
jge 0x140021bf0
call fcn.140008024
mov eax, dword [0x1401c90c8]
and eax, dword [0x1401c90cc]
mov edx, eax
xor edx, 0xffffffff
and edx, 0xc5b62c6f
mov r8d, 0xfc7649a4
xor r8d, 0x39c065cb
mov ecx, 0xe32fc7c
xor ecx, 0xf1cd0383
xor r8d, ecx
mov ecx, eax
and ecx, r8d
imul ecx, edx
mov edx, eax
and edx, 0xc5b62c6f
or eax, 0xc5b62c6f
imul eax, edx
add eax, ecx
mov ecx, 0xffffffff
xor ecx, 0x7a7ea3f7
add eax, ecx
add eax, 1
mov ecx, 0x925a2aba
xor ecx, 0x6d7a1cf6
or eax, ecx
cmp eax, 0x815bd03d
je 0x140021c09
mov eax, dword [0x1401c90d0]
mov ecx, dword [0x1401c90d4]
xor ecx, 0xaa94a93
xor edx, edx
div ecx
mov ecx, 0x25eaf351
xor ecx, 0xb75f8ffd
sub eax, ecx
imul eax, eax, 0x26ed7c9f
mov edx, 0x215bc136
xor edx, 0x438f46a4
mov ecx, 0x96d0641b
xor ecx, 0x692f9be4
xor edx, ecx
mov ecx, eax
and ecx, edx
mov r8d, 0x492a4690
xor r8d, 0x2bfec102
mov edx, eax
xor edx, r8d
add eax, edx
sub eax, ecx
cmp eax, 0x4a38d73d
jbe 0x140021b85
jmp 0x140021bff
mov rax, qword [rsp + 0x28]
mov qword [rsp + 0x38], rax
jmp 0x140021a73
add rsp, 0x98
pop rdi
pop rsi
ret
jmp es:[rcx + rbp*8 - 0x8d]
sub rsp, 0x38
mov qword [rsp + 0x30], rdx
mov qword [rsp + 0x28], rcx
xor eax, eax
mov edx, eax
call fcn.140021440
mov rcx, qword [rsp + 0x28]
mov rdx, qword [rsp + 0x30]
add rsp, 0x38
jmp 0x1400218a0