Function at 0x14017ec60
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0xe8
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x60], 0xfffffffffffffffe
mov r15, rdx
mov qword [rbp + 0x18], rcx
cmp rdx, 0x15
jae 0x14017ecbf
cmp r15, 1
jbe 0x14017f35e
mov r8d, 1
mov rcx, qword [rbp + 0x18]
mov rdx, r15
add rsp, 0xe8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
jmp fcn.14017f7e0
movabs r12, 0x7ffffffffffffffe
mov rsi, r15
and rsi, r12
movzx eax, byte [0x1402a2221]
mov edx, 1
mov rcx, rsi
call fcn.1400402e0
test rax, rax
je 0x14017f4e3
mov r14, rax
mov qword [rbp + 8], rsi
movzx eax, byte [0x1402a2221]
mov ecx, 0x100
mov edx, 8
call fcn.1400402e0
test rax, rax
mov qword [rbp + 0x38], r14
je 0x14017f4ef
mov rcx, qword [rbp + 0x18]
lea rdx, [rcx + 3]
mov qword [rbp - 8], rdx
lea rdx, [rcx - 1]
mov qword [rbp], rdx
add rcx, 0xfffffffffffffffe
mov qword [rbp - 0x10], rcx
mov ecx, 0x10
mov qword [rbp + 0x58], rcx
xor ebx, ebx
xor r11d, r11d
mov qword [rbp - 0x18], r15
jmp 0x14017ed63
mov ebx, 1
mov r11, qword [rbp + 0x20]
movabs r12, 0x7ffffffffffffffe
mov r10, r15
sub r10, r11
jbe 0x14017f323
mov rcx, qword [rbp + 0x18]
lea rcx, [rcx + r11*2]
cmp r10, 2
mov qword [rbp + 0x40], r11
jae 0x14017ed90
mov r8, r10
lea rdx, [r8 + r11]
jmp 0x14017ef20
movzx edx, byte [rcx + 2]
cmp dl, byte [rcx]
jb 0x14017eda5
jne 0x14017ede6
movzx r8d, byte [rcx + 1]
cmp byte [rcx + 3], r8b
jae 0x14017ede6
mov r8d, 2
cmp r10, 3
jae 0x14017edc8
jmp 0x14017ee34
inc r8
cmp r10, r8
je 0x14017ee31
mov r9d, edx
movzx edx, byte [rcx + r8*2]
cmp dl, r9b
jb 0x14017edc0
jne 0x14017ee34
movzx r9d, byte [rcx + r8*2 - 1]
cmp byte [rcx + r8*2 + 1], r9b
jb 0x14017edc0
jmp 0x14017ee34
mov r8d, 2
cmp r10, 3
jae 0x14017ee0c
jmp 0x14017ed84
inc r8
cmp r10, r8
je 0x14017ed81
mov r9d, edx
movzx edx, byte [rcx + r8*2]
cmp dl, r9b
jb 0x14017ed84
jne 0x14017ee00
movzx r9d, byte [rcx + r8*2 - 1]
cmp byte [rcx + r8*2 + 1], r9b
jae 0x14017ee00
jmp 0x14017ed84
mov r8, r10
mov rdx, r8
add rdx, r11
jb 0x14017f4c6
cmp rdx, r15
ja 0x14017f4a6
cmp r8, 2
jb 0x14017ef20
mov r13, rdx
mov qword [rbp + 0x30], rbx
mov qword [rbp + 0x10], rax
mov rax, r8
shr rax, 1
lea rdx, [rcx + r8*2]
mov r9, r8
and r9, 0xfffffffffffffffe
sub rdx, r9
cmp rax, 1
jne 0x14017ee7d
xor r9d, r9d
jmp 0x14017eedf
mov r10, rax
and r10, 0xfffffffffffffffe
mov r9, qword [rbp - 8]
lea r11, [r9 + r11*2]
mov r9, qword [rbp]
lea rsi, [r9 + r13*2]
xor r9d, r9d
nop word [rax + rax]
movzx edi, word [r11 + r9*2 - 3]
movzx ebx, word [rsi - 1]
mov word [r11 + r9*2 - 3], bx
mov word [rsi - 1], di
mov rdi, r9
xor rdi, r12
add rdi, rax
movzx ebx, word [r11 + r9*2 - 1]
movzx r14d, word [rdx + rdi*2]
mov word [r11 + r9*2 - 1], r14w
mov word [rdx + rdi*2], bx
add r9, 2
add rsi, 0xfffffffffffffffc
cmp r10, r9
jne 0x14017eea0
test r8b, 2
je 0x14017ef02
mov r10, r9
not r10
add rax, r10
movzx r10d, word [rcx + r9*2]
movzx r11d, word [rdx + rax*2]
mov word [rcx + r9*2], r11w
mov word [rdx + rax*2], r10w
mov rax, qword [rbp + 0x10]
mov rbx, qword [rbp + 0x30]
mov rdx, r13
mov r11, qword [rbp + 0x40]
nop word cs:[rax + rax]
mov rdi, rdx
sub rdi, r11
jb 0x14017f442
cmp rdx, r15
ja 0x14017f442
jae 0x14017f000
cmp r8, 0xa
jae 0x14017f000
lea rdi, [r11 + 0xa]
cmp rdi, r15
cmovae rdi, r15
mov r14, rdi
sub rdi, r11
jb 0x14017f46b
cmp r8, 1
adc r8, 0
mov r13, rax
mov qword [rbp + 0x50], rax
mov rsi, qword [rbp + 0x58]
mov qword [rbp + 0x48], rsi
mov rdx, rdi
call fcn.14017f7e0
mov rdx, r14
cmp rbx, rsi
mov qword [rbp + 0x20], rdx
jne 0x14017f014
lea rax, [rsi + rsi]
mov qword [rbp + 0x30], rax
mov rcx, rsi
shl rcx, 5
mov r12, rsi
movzx eax, byte [0x1402a2221]
mov edx, 8
call fcn.1400402e0
test rax, rax
mov r14, qword [rbp + 0x38]
je 0x14017f48c
mov rsi, rax
shl r12, 4
mov rcx, rax
mov rdx, r13
mov r8, r12
call fcn.1401bf140
mov r8d, 8
mov rcx, r13
mov rdx, r12
call fcn.1400402f0
mov rax, rsi
mov rcx, qword [rbp + 0x30]
mov qword [rbp + 0x58], rcx
movabs r12, 0x7ffffffffffffffe
mov rdx, qword [rbp + 0x20]
jmp 0x14017f01b
mov r13, rax
mov rsi, qword [rbp + 0x58]
cmp rbx, rsi
mov qword [rbp + 0x20], rdx
je 0x14017ef8b
mov r14, qword [rbp + 0x38]
mov rax, r13
mov r8, qword [rbp + 0x40]
mov rcx, rbx
shl rcx, 4
mov qword [rax + rcx], rdi
mov qword [rax + rcx + 8], r8
inc rbx
mov r11, rdx
cmp rbx, 2
jb 0x14017ed63
mov qword [rbp + 0x10], rax
jmp 0x14017f0af
mov r15, rdi
mov r14, qword [rbp + 0x38]
mov rdx, r14
mov rsi, qword [rbp + 0x28]
sub r8, rdx
mov rcx, r15
call fcn.1401bf140
mov rax, qword [rbp - 0x20]
add rax, qword [rbp + 0x40]
mov qword [rbx], rax
mov rax, qword [rbp - 0x28]
mov qword [rbx + 8], rax
lea rdx, [rsi + 0x10]
mov rax, qword [rbp - 0x30]
not rax
add r12, rax
shl r12, 4
mov rcx, rsi
mov r8, r12
call fcn.1401bf140
mov rbx, qword [rbp + 0x30]
cmp rbx, 1
mov r15, qword [rbp - 0x18]
mov rax, qword [rbp + 0x10]
jbe 0x14017ed50
mov r12, rbx
lea r11, [rbx - 1]
mov rcx, r11
shl rcx, 4
mov r10, qword [rax + rcx]
mov rcx, qword [rax + rcx + 8]
add rcx, r10
cmp rcx, r15
je 0x14017f120
mov rdx, r12
shl rdx, 4
mov r8, qword [rdx + rax - 0x20]
cmp r8, r10
jbe 0x14017f120
cmp r12, 2
jbe 0x14017f307
lea rdi, [r12 - 3]
mov rcx, rdi
shl rcx, 4
mov rcx, qword [rax + rcx]
lea r9, [r8 + r10]
cmp rcx, r9
jbe 0x14017f136
cmp r12, 3
jbe 0x14017f311
add r8, rcx
cmp qword [rdx + rax - 0x40], r8
jbe 0x14017f136
jmp 0x14017f31b
cmp r12, 3
jb 0x14017f13b
lea rdi, [r12 - 3]
mov rcx, rdi
shl rcx, 4
mov rcx, qword [rax + rcx]
cmp rcx, r10
jb 0x14017f140
lea rdi, [r12 - 2]
cmp r12, rdi
jbe 0x14017f373
mov qword [rbp + 0x30], r11
lea rbx, [rdi + 1]
cmp r12, rbx
jbe 0x14017f3b9
mov rdx, rdi
shl rdx, 4
mov rcx, qword [rax + rdx + 8]
shl rbx, 4
mov r8, qword [rax + rbx]
mov r13, qword [rax + rbx + 8]
add r13, r8
mov rsi, r13
sub rsi, rcx
jb 0x14017f422
cmp r13, r15
ja 0x14017f3ff
mov qword [rbp - 0x20], r8
mov qword [rbp - 0x30], rdi
lea r8, [rax + rdx]
mov qword [rbp + 0x28], r8
mov rdx, qword [rax + rdx]
add rbx, rax
mov rax, qword [rbp + 0x18]
mov qword [rbp - 0x28], rcx
lea r15, [rax + rcx*2]
lea rdi, [r15 + rdx*2]
mov r14, rsi
sub r14, rdx
cmp r14, rdx
mov qword [rbp + 0x40], rdx
jae 0x14017f260
lea r8, [r14 + r14]
mov rsi, qword [rbp + 0x38]
mov rcx, rsi
mov rdx, rdi
call fcn.1401bf140
lea r8, [rsi + r14*2]
cmp qword [rbp + 0x40], 0
jle 0x14017f050
test r14, r14
jle 0x14017f050
mov rax, qword [rbp - 0x10]
lea rax, [rax + r13*2]
mov r14, qword [rbp + 0x38]
mov rsi, qword [rbp + 0x28]
movzx ecx, byte [rdi - 2]
cmp byte [r8 - 2], cl
jae 0x14017f210
add rdi, 0xfffffffffffffffe
jmp 0x14017f23c
movzx ecx, byte [r8 - 1]
sete dl
cmp cl, byte [rdi - 1]
setb cl
and cl, dl
movzx ecx, cl
sub rdi, rcx
sub rdi, rcx
xor cl, 1
movzx edx, cl
sub r8, rdx
sub r8, rdx
mov rcx, r8
test dl, dl
jne 0x14017f23f
mov rcx, rdi
movzx ecx, word [rcx]
mov word [rax], cx
cmp rdi, r15
jbe 0x14017f253
add rax, 0xfffffffffffffffe
cmp r8, r14
ja 0x14017f200
mov r15, rdi
mov rdx, r14
jmp 0x14017f05e
lea r8, [rdx + rdx]
mov r14, qword [rbp + 0x38]
mov rcx, r14
mov rdx, r15
call fcn.1401bf140
mov rax, qword [rbp + 0x40]
lea r8, [r14 + rax*2]
test rax, rax
jle 0x14017f057
cmp rsi, rax
jle 0x14017f057
mov rax, qword [rbp + 0x18]
lea rax, [rax + r13*2]
mov rdx, r14
mov rsi, qword [rbp + 0x28]
nop dword [rax]
movzx r9d, byte [rdi]
movzx r10d, byte [rdx]
cmp r9b, r10b
jb 0x14017f2c8
movzx ecx, byte [rdi + 1]
cmp cl, byte [rdx + 1]
setb r11b
xor ecx, ecx
cmp r9b, r10b
jne 0x14017f302
mov r9, rdx
test r11b, 1
je 0x14017f2cd
mov cl, 1
mov r9, rdi
movzx r9d, word [r9]
mov word [r15], r9w
add r15, 2
mov r9d, ecx
xor r9b, 1
movzx r9d, r9b
lea rdx, [rdx + r9*2]
cmp rdx, r8
jae 0x14017f05e
movzx ecx, cl
lea rdi, [rdi + rcx*2]
cmp rdi, rax
jb 0x14017f2a0
jmp 0x14017f05e
mov r9, rdx
jmp 0x14017f2cd
mov ebx, 2
jmp 0x14017ed55
mov ebx, 3
jmp 0x14017ed55
mov rbx, r12
jmp 0x14017ed55
mov rdx, qword [rbp + 0x58]
shl rdx, 4
mov r8d, 8
mov rcx, rax
call fcn.1400402f0
mov r8d, 1
mov rcx, r14
mov rdx, qword [rbp + 8]
add rsp, 0xe8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
jmp fcn.1400402f0
nop
add rsp, 0xe8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
lea rcx, [0x14021c1e0]
mov qword [rbp - 0x60], rcx
mov qword [rbp - 0x58], 1
lea rcx, [0x14021c1f0]
mov qword [rbp - 0x50], rcx
xorps xmm0, xmm0
movups xmmword [rbp - 0x48], xmm0
mov qword [rbp + 0x50], rax
mov rax, qword [rbp + 0x58]
mov qword [rbp + 0x48], rax
lea rdx, [0x14021c258]
lea rcx, [rbp - 0x60]
call fcn.1401c8aa0
jmp 0x14017f4fb
lea rcx, [0x14021c1e0]
mov qword [rbp - 0x60], rcx
mov qword [rbp - 0x58], 1
lea rcx, [0x14021c1f0]
mov qword [rbp - 0x50], rcx
xorps xmm0, xmm0
movups xmmword [rbp - 0x48], xmm0
mov qword [rbp + 0x50], rax
mov rax, qword [rbp + 0x58]
mov qword [rbp + 0x48], rax
lea rdx, [0x14021c270]
lea rcx, [rbp - 0x60]
call fcn.1401c8aa0
jmp 0x14017f4fb
mov qword [rbp + 0x50], rax
mov rax, qword [rbp + 0x58]
mov qword [rbp + 0x48], rax
lea r8, [0x14021c288]
mov rcx, r13
mov rdx, r15
call fcn.1401c9000
jmp 0x14017f4fb
mov qword [rbp + 0x50], rax
mov rax, qword [rbp + 0x58]
mov qword [rbp + 0x48], rax
lea r8, [0x14021c288]
mov rdx, r13
call fcn.1401c9080
jmp 0x14017f4fb
mov qword [rbp + 0x50], rax
mov rax, qword [rbp + 0x58]
mov qword [rbp + 0x48], rax
lea rcx, [0x14021c2e8]
lea r8, [0x14021c318]
mov edx, 0x2c
call fcn.1401c8b70
jmp 0x14017f4fb
mov qword [rbp + 0x50], rax
mov rax, qword [rbp + 0x58]
mov qword [rbp + 0x48], rax
lea r8, [0x14021c330]
mov rcx, qword [rbp + 0x40]
mov rdx, r14
call fcn.1401c9080
jmp 0x14017f4fb
mov qword [rbp + 0x50], r13
mov rax, qword [rbp + 0x30]
mov qword [rbp + 0x48], rax
lea rcx, [0x14021c2d0]
call fcn.1401c8a10
jmp 0x14017f4fb
mov qword [rbp + 0x50], rax
mov rax, qword [rbp + 0x58]
mov qword [rbp + 0x48], rax
lea r8, [0x14021c240]
mov rcx, rdx
mov rdx, r15
call fcn.1401c9000
jmp 0x14017f4fb
mov qword [rbp + 0x50], rax
mov rax, qword [rbp + 0x58]
mov qword [rbp + 0x48], rax
lea r8, [0x14021c240]
mov rcx, r11
call fcn.1401c9080
jmp 0x14017f4fb
lea rcx, [0x14021c2a0]
call fcn.1401c8a10
lea rcx, [0x14021c2b8]
call fcn.1401c8a10
ud2