Function at 0x140003860
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xf8
mov rax, r8
mov rsi, rdx
mov rdi, rcx
mov qword [rsp + 0x20], r9
lea rcx, [rsp + 0x90]
mov rdx, rdi
mov r8, rsi
mov r9, rax
call fcn.1400256a0
cmp qword [rsp + 0x90], 0
mov rdx, qword [rsp + 0xe0]
mov rcx, qword [rsp + 0xd8]
mov r8, qword [rsp + 0x98]
je 0x140003b95
mov rbp, qword [rsp + 0xb8]
mov r11, rsi
cmp rbp, rdx
je 0x140003d7f
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x40], rsi
mov rax, qword [rsp + 0xf0]
lea r9, [rax - 1]
mov qword [rsp + 0x48], r9
mov r14, qword [rsp + 0xe8]
mov r9, qword [rsp + 0xb0]
mov qword [rsp + 0x68], r9
mov rbx, qword [rsp + 0xc8]
mov r10, qword [rsp + 0xa8]
mov r11, rax
mov r9, r10
mov qword [rsp + 0x88], r10
sub r11, r10
mov qword [rsp + 0x78], r11
lea r9, [r8 - 1]
mov qword [rsp + 0x70], r9
cmp r9, rax
setb byte [rsp + 0x37]
mov r9, rbp
sub r9, r8
mov qword [rsp + 0x60], r9
lea r13, [rcx + rbp]
lea rdi, [rcx + r8]
lea rsi, [r14 + r8]
lea r9, [r14 + r8]
dec r9
mov qword [rsp + 0x80], r9
lea r9, [r8 + rbp]
dec r9
mov qword [rsp + 0x50], r9
mov r11, rbp
mov r9, qword [rsp + 0x48]
add r9, rbp
cmp r9, rdx
jae 0x140003bed
mov r10, qword [rsp + 0x88]
add r10, r11
mov qword [rsp + 0x58], r10
lea rbp, [r11 + rax]
cmp rbx, 0xffffffffffffffff
je 0x140003a80
mov r12, r11
jmp 0x1400039c6
xor ebx, ebx
mov r12, rbp
mov r9, qword [rsp + 0x48]
add r9, r12
cmp r9, rdx
jae 0x140003bed
cmp r11, r12
jne 0x140003bed
movzx r9d, byte [rcx + r9]
mov r10, qword [rsp + 0x68]
bt r10, r9
jae 0x1400039b0
cmp r8, rbx
mov r9, rbx
cmova r9, r8
mov r10, r9
nop dword [rax]
cmp r10, rax
jae 0x140003a20
lea r15, [r11 + r10]
cmp r15, rdx
jae 0x140003d41
lea r12, [r10 + 1]
movzx r15d, byte [r14 + r10]
cmp r15b, byte [r13 + r10]
mov r10, r12
je 0x1400039f0
add r12, qword [rsp + 0x60]
xor ebx, ebx
jmp 0x1400039b5
mov r10, r8
nop word cs:[rax + rax]
cmp rbx, r10
jae 0x140003a70
dec r10
cmp r10, rax
jae 0x140003b83
lea r9, [r10 + r11]
cmp r9, rdx
jae 0x140003d1f
movzx r15d, byte [r14 + r10]
cmp r15b, byte [rcx + r9]
je 0x140003a30
mov rbx, qword [rsp + 0x78]
mov r12, qword [rsp + 0x58]
jmp 0x1400039b5
xor ebx, ebx
jmp 0x140003b57
mov r10, r11
jmp 0x140003aa1
mov r9, qword [rsp + 0x48]
add r9, r10
cmp r9, rdx
jae 0x140003bed
cmp r11, r10
jne 0x140003bed
movzx r9d, byte [rcx + r9]
mov r10, qword [rsp + 0x68]
bt r10, r9
mov r10, rbp
jae 0x140003a90
xor r9d, r9d
mov rbx, r11
nop word cs:[rax + rax]
lea r10, [r8 + r9]
cmp r10, rax
jae 0x140003b00
lea r10, [r8 + rbx]
cmp r10, rdx
jae 0x140003d3e
movzx r15d, byte [rsi + r9]
lea r10, [rbx + 1]
inc r9
cmp r15b, byte [rdi + rbx]
mov rbx, r10
je 0x140003ad0
jmp 0x140003a90
test byte [rsp + 0x37], 1
je 0x140003b72
mov r9, qword [rsp + 0x50]
mov r10, qword [rsp + 0x80]
mov rbx, r8
nop word [rax + rax]
sub rbx, 1
jb 0x140003b50
cmp r9, rdx
jae 0x140003d1f
movzx r12d, byte [r10]
dec r10
lea r15, [r9 - 1]
cmp r12b, byte [rcx + r9]
mov r9, r15
je 0x140003b20
mov r10, qword [rsp + 0x58]
jmp 0x140003a90
mov rbx, 0xffffffffffffffff
add qword [rsp + 0x60], rax
add r13, rax
add qword [rsp + 0x50], rax
cmp rbp, rdx
jne 0x14000396b
jmp 0x140003c6c
mov rbx, 0xffffffffffffffff
test r8, r8
je 0x140003b57
mov r10, qword [rsp + 0x70]
lea r8, [0x14002bbe0]
mov rcx, r10
mov rdx, rax
call fcn.140028cd0
cmp byte [rsp + 0xaa], 0
mov r11, rsi
jne 0x140003d7f
movzx eax, byte [rsp + 0xa8]
test r8, r8
je 0x140003bfc
cmp r8, rdx
jae 0x140003c29
movzx r9d, byte [rcx + r8]
cmp r9b, 0xc0
jl 0x140003d9f
mov edx, eax
xor dl, 1
test r9b, r9b
js 0x140003c7e
test al, al
je 0x140003d7c
mov eax, edx
nop
xor al, 1
test dl, dl
mov edx, eax
jne 0x140003be0
jmp 0x140003d7c
mov rsi, qword [rsp + 0x40]
mov rdi, qword [rsp + 0x38]
jmp 0x140003d7f
test rdx, rdx
je 0x140003c46
movzx r9d, byte [rcx + r8]
test r9b, r9b
js 0x140003cc1
test al, al
je 0x140003d7c
nop word [rax + rax]
xor al, 1
jne 0x140003c20
jmp 0x140003d7c
jne 0x140003d9f
mov r11, rsi
test al, al
je 0x140003d7f
nop word [rax + rax]
xor al, 1
jne 0x140003c40
jmp 0x140003c64
mov r11, rsi
test al, al
je 0x140003d7f
nop word cs:[rax + rax]
xor al, 1
jne 0x140003c60
mov r11, rsi
jmp 0x140003d7f
mov rsi, qword [rsp + 0x40]
mov r11, rsi
mov rdi, qword [rsp + 0x38]
jmp 0x140003d7f
cmp r9b, 0xe0
jb 0x140003d2e
cmp r9b, 0xf0
jb 0x140003d64
movzx r11d, byte [rcx + r8 + 1]
and r11d, 0x3f
movzx r10d, byte [rcx + r8 + 2]
and r10d, 0x3f
shl r11d, 0xc
shl r10d, 6
or r10d, r11d
test al, al
je 0x140003cfa
mov eax, edx
xor al, 1
test dl, dl
mov edx, eax
jne 0x140003cb7
jmp 0x140003cfa
cmp r9b, 0xe0
jb 0x140003d5a
cmp r9b, 0xf0
jb 0x140003d74
movzx edx, byte [rcx + r8 + 1]
and edx, 0x3f
movzx r10d, byte [rcx + r8 + 2]
and r10d, 0x3f
shl edx, 0xc
shl r10d, 6
or r10d, edx
test al, al
je 0x140003cfa
xor al, 1
jne 0x140003cf6
movzx eax, r9b
and eax, 7
shl eax, 0x12
movzx ecx, byte [rcx + r8 + 3]
and ecx, 0x3f
or ecx, r10d
or ecx, eax
mov r11, rsi
cmp ecx, 0x110000
jne 0x140003d7c
jmp 0x140003d7f
lea r8, [0x14002bbf8]
mov rcx, r9
call fcn.140028cd0
test al, al
je 0x140003d7c
mov eax, edx
xor al, 1
test dl, dl
mov edx, eax
jne 0x140003d34
jmp 0x140003d7c
mov r9, r8
add r9, r11
cmp rdx, r9
cmova r9, rdx
lea r8, [0x14002bc10]
mov rcx, r9
call fcn.140028cd0
test al, al
je 0x140003d7c
xor al, 1
jne 0x140003d5e
jmp 0x140003d7c
test al, al
je 0x140003d7c
mov eax, edx
xor al, 1
test dl, dl
mov edx, eax
jne 0x140003d6a
jmp 0x140003d7c
test al, al
je 0x140003d7c
xor al, 1
jne 0x140003d78
mov r11, r8
add rdi, r11
sub rsi, r11
mov rax, rdi
mov rdx, rsi
add rsp, 0xf8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rax, [0x14002bcb8]
mov qword [rsp + 0x20], rax
mov r9, rdx
call fcn.1400291c0
int3