Function at 0x14003ad70
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
mov rsi, qword [rcx]
mov rbx, rsi
add rbx, 0x40
mov rcx, qword [rsi + 0x58]
cmp rcx, 0
je 0x14003ae5d
mov rax, qword [rsi + 0x50]
mov rdx, qword [rbx]
xor r8d, r8d
cmp rax, rdx
mov r9, rdx
cmovb r9, r8
sub rax, r9
mov r8, rdx
sub r8, rax
cmp r8, rcx
setb r11b
mov r9, rax
add r9, rcx
xor r10d, r10d
mov r14, rcx
sub r14, r8
cmovb r14, r10
cmp r8, rcx
cmovb r9, rdx
mov r15, qword [rsi + 0x48]
mov rcx, rax
shl rcx, 3
mov r12, r15
add r12, rcx
mov r13, r9
sub r13, rax
cmp r9, rax
je 0x14003ae28
mov byte [rsp + 0x27], r11b
xor ebp, ebp
jmp 0x14003adfb
mov rax, rbp
add rbp, 1
mov rdi, qword [r12 + rax*8]
mov rcx, rdi
call fcn.14005e780
test al, 1
jne 0x14003ae14
jmp 0x14003ae1c
mov rcx, rdi
call fcn.14005f730
cmp rbp, r13
jne 0x14003adfb
mov r11b, byte [rsp + 0x27]
jmp 0x14003ae28
test r11b, 1
jne 0x14003ae30
jmp 0x14003ae5d
xor r12d, r12d
jmp 0x14003ae35
mov rax, r12
add r12, 1
mov rdi, qword [r15 + rax*8]
mov rcx, rdi
call fcn.14005e780
test al, 1
jne 0x14003ae4e
jmp 0x14003ae56
mov rcx, rdi
call fcn.14005f730
cmp r12, r14
jne 0x14003ae35
jmp 0x14003ae5d
mov rdx, qword [rbx]
cmp rdx, 0
je 0x14003ae79
mov rcx, qword [rsi + 0x48]
shl rdx, 3
mov r8d, 8
call fcn.1400541d0
mov rax, qword [rsi]
cmp rax, 2
je 0x14003b06b
mov rdi, rsi
add rdi, 8
cmp rax, 0
jne 0x14003af89
mov rdx, qword [rdi]
movabs rax, 0x8000000000000000
cmp rdx, rax
je 0x14003af65
mov rax, qword [rsi + 0x28]
cmp rax, 0
je 0x14003aed0
mov rcx, qword [rsi + 0x20]
shl rax, 5
mov rdx, rax
mov r8d, 8
call fcn.1400541d0
mov rdx, qword [rdi]
cmp rdx, 0
je 0x14003aee9
mov rcx, qword [rsi + 0x10]
shl rdx, 4
mov r8d, 8
call fcn.1400541d0
mov rdi, rsi
add rdi, 0x30
mov rax, qword [rsi + 0x30]
lock dec qword [rax]
sete al
test al, 1
je 0x14003b06b
mov eax, dword [0x1400d5748]
add eax, dword [0x1400d574c]
or eax, 0x1988236f
imul eax, eax, 0xf79dcfee
and eax, 0xde2b9614
cmp eax, 0x6b90029
je 0x14003b08e
jmp 0x14003af2c
mov eax, dword [0x1400d5750]
mov ecx, dword [0x1400d5754]
xor edx, edx
div ecx
mov ebx, eax
xor ebx, 0x4b898208
or ebx, 0x340434e5
xor ebx, 0x3de109fa
mov rcx, rdi
call fcn.140041bb0
cmp ebx, 0x1af3ea2b
je 0x14003af2c
jmp 0x14003b06b
mov rcx, rsi
add rcx, 0x10
mov rax, qword [rsi + 0x10]
lock dec qword [rax]
sete al
test al, 1
je 0x14003b06b
call fcn.140042370
jmp 0x14003b06b
mov rdx, qword [rdi]
movabs rax, 0x8000000000000000
cmp rdx, rax
je 0x14003b050
mov rbx, qword [rsi + 0x28]
cmp rbx, 0
je 0x14003b01a
mov eax, dword [0x1400d5758]
sub eax, dword [0x1400d575c]
xor eax, 0x8137c890
imul eax, eax, 0x652c23f0
mov ecx, 0x5a5eccb3
xor edx, edx
div ecx
cmp eax, 0xc4ac9a11
jae 0x14003b0a3
mov eax, dword [0x1400d5760]
imul eax, dword [0x1400d5764]
imul ebp, eax, 0xd19f7483
or ebp, 0xae553791
xor ebp, 0x45d41d41
mov rcx, qword [rsi + 0x20]
mov rdx, rbx
shl rdx, 5
mov r8d, 8
call fcn.1400541d0
mov rdx, qword [rdi]
cmp ebp, 0xf8934f28
ja 0x14003b0a3
jmp 0x14003b01a
cmp rdx, 0
je 0x14003b033
mov rcx, qword [rsi + 0x10]
shl rdx, 4
mov r8d, 8
call fcn.1400541d0
mov rcx, rsi
add rcx, 0x30
mov rax, qword [rsi + 0x30]
lock dec qword [rax]
sete al
test al, 1
je 0x14003b06b
call fcn.140041bb0
jmp 0x14003b06b
mov rcx, rsi
add rcx, 0x10
mov rax, qword [rsi + 0x10]
lock dec qword [rax]
sete al
test al, 1
je 0x14003b06b
call fcn.140042370
mov rcx, rsi
mov edx, 0x70
mov r8d, 8
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.1400541d0
insb byte [rdi], dx
and al, 0x6a
int1
rcr bl, cl
xchg edx, eax
test dword [rax - 0x77], ecx
stc
call fcn.140041bb0
jmp 0x14003af2a
outsb dx, byte [rsi]
sub r11d, ebx
sub dword [rcx - 0xe091a], 0x8b4804c8
and byte [rax - 0x77], r9b
fimul dword [rax - 0x3f]
loop 0x14003b0bf
mov r8d, 8
call fcn.1400541d0
jmp 0x14003afd4
add al, ch
or edx, dword [rcx + 0xae90001]
invalid