Function at 0x1402712e0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x138
shr r8, 3
mov rbx, rcx
mov rsi, rdx
mov r15, r9
mov eax, r8d
mov dword [rsp + 0x30], r8d
and eax, 0xfffffff7
cmp eax, 0x14
je 0x140271338
xor edi, edi
cmp r8d, 0x20
je 0x140271640
mov eax, edi
add rsp, 0x138
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
test r9, r9
je 0x140271670
mov eax, dword [r15 + 8]
mov dword [rsp + 0x30], eax
call fcn.1401cb150
mov rbp, rax
test rax, rax
je 0x140271668
call fcn.1401c4b30
mov qword [rsp + 0x48], rax
mov rdi, rax
test rax, rax
je 0x140271668
mov rcx, rax
call fcn.1401c4ba0
mov rcx, rdi
call fcn.1401c5700
mov rcx, rdi
mov r14, rax
call fcn.1401c5700
mov rcx, rdi
mov r12, rax
call fcn.1401c5700
mov rcx, rdi
mov qword [rsp + 0x50], rax
call fcn.1401c5700
mov rcx, rdi
mov qword [rsp + 0x38], rax
call fcn.1401c5700
mov rcx, rdi
mov qword [rsp + 0x80], rax
call fcn.1401c5700
mov rcx, rdi
mov qword [rsp + 0x88], rax
call fcn.1401c5700
mov rcx, rdi
mov qword [rsp + 0x40], rax
call fcn.1401c5700
mov r10, rax
test rax, rax
je 0x1402716b2
mov eax, 0x200
cmp rsi, rax
cmovb rsi, rax
add rsi, 0x3f
and rsi, 0xffffffffffffffc0
mov eax, esi
mov qword [rsp + 0x90], rsi
sub eax, 1
mov dword [rsp + 0xa8], eax
js 0x14027169d
mov rdx, qword [0x14048ca40]
mov r8d, dword [rsp + 0xa8]
mov rcx, r10
mov qword [rsp + 0x58], r10
call fcn.1401cb9e0
mov r10, qword [rsp + 0x58]
mov edx, dword [r10 + 8]
test edx, edx
jle 0x140271463
mov r8, qword [r10]
movsxd rcx, edx
lea rcx, [r8 + rcx*8]
jmp 0x140271455
sub edx, 1
je 0x14027145f
sub rcx, 8
cmp qword [rcx], 0
je 0x140271450
mov dword [r10 + 8], edx
test edx, edx
jne 0x14027146f
mov dword [r10 + 0x10], 0
test eax, eax
je 0x1402716b2
movsxd r13, dword [rsp + 0x30]
mov dword [rsp + 0x6c], 0
mov qword [rsp + 0x70], rbp
lea rax, [rsp + r13 + 0xef]
mov qword [rsp + 0xa0], r12
mov qword [rsp + 0x78], rax
mov qword [rsp + 0x98], r10
mov qword [rsp + 0x180], rbx
mov qword [rsp + 0x198], r15
mov r15, qword [rsp + 0x50]
mov r8d, dword [rsp + 0x6c]
mov rcx, qword [rsp + 0x1a0]
xor edx, edx
call fcn.14023cc90
test eax, eax
je 0x1402719a0
mov ebx, dword [rsp + 0x30]
lea rbp, [rsp + 0xb0]
mov rcx, rbp
mov edx, ebx
call fcn.14020b750
test eax, eax
jle 0x1402719a0
lea rsi, [rsp + 0xf0]
mov r8, r13
mov rdx, rbp
mov rcx, rsi
lea rdi, [rsp + 0x110]
call sub.msvcrt.dll_memcpy
mov r8, r13
mov rdx, rbp
mov rcx, rdi
call sub.msvcrt.dll_memcpy
sub ebx, 1
mov r12d, ebx
js 0x14027154f
mov rcx, qword [rsp + 0x78]
mov eax, ebx
lea rdx, [rsi + r13]
sub rcx, rax
jmp 0x140271549
sub rdx, 1
cmp rcx, rdx
je 0x14027154f
add byte [rdx - 1], 1
je 0x140271540
mov rax, qword [rsp + 0x198]
xor r9d, r9d
mov rdx, r13
mov rcx, rbp
lea rbx, [rsp + 0xd0]
mov qword [rsp + 0x20], rax
mov r8, rbx
call fcn.140274560
test eax, eax
je 0x1402719a0
xor r9d, r9d
mov r8, rdi
mov rdx, r13
mov rcx, rsi
mov rax, qword [rsp + 0x198]
mov qword [rsp + 0x20], rax
call fcn.140274560
test eax, eax
je 0x1402719a0
mov r8d, dword [rsp + 0x30]
mov rax, rbx
lea rcx, [rbx + r13]
test r8d, r8d
jle 0x1402715ca
nop dword [rax]
movzx edx, byte [rdi]
xor byte [rax], dl
add rax, 1
add rdi, 1
cmp rcx, rax
jne 0x1402715b8
mov r8, qword [rsp + 0x38]
mov edx, dword [rsp + 0x30]
movsxd rax, r12d
mov rcx, rbx
or byte [rsp + 0xd0], 0x80
or byte [rsp + rax + 0xd0], 1
call fcn.1401c62e0
test rax, rax
je 0x1402719a0
mov r8, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x38]
mov edx, 0x40
mov r9d, 1
mov rax, qword [rsp + 0x1a0]
mov qword [rsp + 0x20], rax
call fcn.140240470
test eax, eax
jg 0x1402716e0
jne 0x1402719a0
add dword [rsp + 0x6c], 1
jmp 0x1402714bb
test r9, r9
jne 0x140271341
mov r15, qword [0x14048f190]
call fcn.1401cb150
mov rbp, rax
test rax, rax
jne 0x14027135a
nop dword [rax]
xor edi, edi
jmp 0x1402716c9
mov r15, qword [0x14048f170]
cmp r8d, 0x14
je 0x140271349
mov dword [rsp + 0x30], 0x1c
mov r15, qword [0x14048f180]
jmp 0x140271349
mov rbp, qword [rsp + 0x70]
mov r8d, 0x77
mov edx, 0x91
mov ecx, 3
call fcn.1402750a0
xor edi, edi
mov rsi, qword [rsp + 0x48]
mov rcx, rsi
call fcn.1401c4ca0
mov rcx, rsi
call fcn.1401c4f90
mov rcx, rbp
call fcn.1401cb200
jmp 0x14027131c
mov rcx, qword [rsp + 0x1a0]
xor r8d, r8d
mov edx, 2
call fcn.14023cc90
test eax, eax
je 0x1402719a0
mov rcx, qword [rsp + 0x1a0]
xor r8d, r8d
mov edx, 3
call fcn.14023cc90
test eax, eax
je 0x1402719a0
mov rax, qword [rsp + 0x90]
mov dword [rsp + 0x50], r12d
mov dword [rsp + 0xac], 0
lea rdx, [rax - 1]
movabs rax, 0xcccccccccccccccd
mul rdx
mov eax, dword [rsp + 0x30]
shl eax, 3
mov dword [rsp + 0x68], eax
shr rdx, 7
lea rax, [rsp + r13 + 0xef]
mov dword [rsp + 0x58], edx
mov qword [rsp + 0x60], rax
mov ecx, dword [r15 + 0xc]
test ecx, ecx
jg 0x14027177d
mov edx, 1
mov rcx, r15
call fcn.1401c5160
test rax, rax
je 0x140271797
mov rax, qword [r15]
mov dword [r15 + 0x10], 0
mov qword [rax], 0
mov dword [r15 + 8], 0
mov edx, dword [rsp + 0x58]
test edx, edx
js 0x1402718a0
mov r12d, dword [rsp + 0x50]
xor edi, edi
xor ebp, ebp
nop dword [rax]
mov rcx, qword [rsp + 0x60]
mov eax, dword [rsp + 0x50]
lea rdx, [rsi + r13]
sub rcx, r12
test eax, eax
jns 0x1402717d9
jmp 0x1402717df
sub rdx, 1
cmp rcx, rdx
je 0x1402717df
add byte [rdx - 1], 1
je 0x1402717d0
xor r9d, r9d
mov r8, rbx
mov rdx, r13
mov rcx, rsi
mov rax, qword [rsp + 0x198]
mov qword [rsp + 0x20], rax
call fcn.140274560
test eax, eax
je 0x1402719a0
mov edx, dword [rsp + 0x30]
mov r8, r14
mov rcx, rbx
call fcn.1401c62e0
test rax, rax
je 0x1402719a0
test edi, edi
js 0x140271698
mov rdx, r14
mov r8d, edi
mov rcx, r14
call fcn.1401cb9e0
mov edx, dword [r14 + 8]
test edx, edx
jle 0x140271863
mov r8, qword [r14]
movsxd rcx, edx
lea rcx, [r8 + rcx*8]
jmp 0x140271855
sub edx, 1
je 0x14027185f
sub rcx, 8
cmp qword [rcx], 0
je 0x140271850
mov dword [r14 + 8], edx
test edx, edx
jne 0x14027186f
mov dword [r14 + 0x10], 0
test eax, eax
je 0x1402719a0
mov r8, r14
mov rdx, r15
mov rcx, r15
call fcn.1401c5540
test eax, eax
je 0x1402719a0
mov eax, dword [rsp + 0x68]
add ebp, 1
add edi, eax
cmp dword [rsp + 0x58], ebp
jge 0x1402717b0
mov edx, dword [rsp + 0xa8]
mov rcx, r15
call fcn.1401c6590
test eax, eax
je 0x1402719a0
mov rdi, qword [rsp + 0x80]
mov rdx, r15
mov rcx, rdi
call fcn.1401c5bb0
test rax, rax
je 0x1402719a0
mov r12, qword [rsp + 0x98]
mov rdx, rdi
mov rcx, rdi
mov r8, r12
call fcn.1401c5540
test eax, eax
je 0x1402719a0
mov rdx, qword [rsp + 0x38]
mov rcx, r14
call fcn.1401cb7e0
test eax, eax
je 0x1402719a0
mov rax, qword [rsp + 0x48]
xor ecx, ecx
mov r9, r14
mov r8, rdi
mov rbp, qword [rsp + 0x88]
mov qword [rsp + 0x20], rax
mov rdx, rbp
call fcn.1401c6160
test eax, eax
je 0x1402719a0
mov r8, qword [0x14048ca40]
mov rdx, rbp
mov rcx, r14
call fcn.1401c5620
test eax, eax
je 0x1402719a0
mov rdx, rdi
mov rdi, qword [rsp + 0x40]
mov r8, r14
mov rcx, rdi
call fcn.1401c5620
test eax, eax
je 0x1402719a0
mov rdx, r12
mov rcx, rdi
call fcn.1401c6440
test eax, eax
jns 0x1402719aa
add dword [rsp + 0xac], 1
mov r8d, dword [rsp + 0xac]
cmp r8d, 0x1000
je 0x14027162c
mov rcx, qword [rsp + 0x1a0]
xor edx, edx
call fcn.14023cc90
test eax, eax
jne 0x140271763
nop dword [rax]
mov rbp, qword [rsp + 0x70]
jmp 0x1402716b2
mov r8, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x40]
mov edx, 0x40
mov r9d, 1
mov rax, qword [rsp + 0x1a0]
mov qword [rsp + 0x20], rax
call fcn.140240470
test eax, eax
jg 0x1402719d9
je 0x140271968
jmp 0x1402719a0
mov r8d, 1
mov edx, 2
mov rbp, qword [rsp + 0x70]
mov r10, qword [rsp + 0x98]
mov rcx, qword [rsp + 0x1a0]
mov r12, qword [rsp + 0xa0]
mov qword [rsp + 0x30], r10
mov rbx, qword [rsp + 0x180]
call fcn.14023cc90
test eax, eax
je 0x1402716b2
mov r10, qword [rsp + 0x30]
mov rsi, qword [rsp + 0x40]
mov r8, qword [0x14048ca40]
mov rdx, rsi
mov rcx, r10
call fcn.1401c5620
test eax, eax
je 0x1402716b2
mov rdi, qword [rsp + 0x48]
mov r9, qword [rsp + 0x38]
xor edx, edx
mov rcx, r14
mov r8, qword [rsp + 0x30]
mov qword [rsp + 0x20], rdi
call fcn.1401c6160
test eax, eax
je 0x1402716b2
mov rcx, qword [rsp + 0x30]
mov edx, 2
call fcn.1401c5270
test eax, eax
je 0x1402716b2
cmp dword [rsi + 8], 0
je 0x1402716b2
mov r8, rdi
mov rdx, rsi
mov rcx, rbp
call fcn.1401cf010
test eax, eax
je 0x1402716b2
mov rsi, qword [rsp + 0x30]
jmp 0x140271ac9
mov rcx, r12
call fcn.1401c67e0
test eax, eax
je 0x140271af4
mov r8, qword [0x14048ca40]
mov rdx, rsi
mov rcx, rsi
call fcn.1401c5540
test eax, eax
je 0x1402716b2
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0x28], rbp
mov r8, r14
mov rdx, rsi
mov r9, qword [rsp + 0x40]
mov rcx, r12
mov qword [rsp + 0x20], rax
call fcn.1401c7d30
test eax, eax
jne 0x140271aa3
jmp 0x1402716b2
mov rcx, qword [rsp + 0x1a0]
mov r8d, 1
mov edx, 3
call fcn.14023cc90
test eax, eax
je 0x1402716b2
mov rcx, qword [rbx + 8]
call fcn.1401c5030
mov rcx, qword [rbx + 0x10]
call fcn.1401c5030
mov rcx, qword [rbx + 0x18]
call fcn.1401c5030
mov rcx, qword [rsp + 0x40]
call fcn.1401c6270
mov rcx, qword [rsp + 0x38]
mov qword [rbx + 8], rax
call fcn.1401c6270
mov rcx, r12
mov qword [rbx + 0x10], rax
call fcn.1401c6270
cmp qword [rbx + 8], 0
mov qword [rbx + 0x18], rax
je 0x1402716b2
cmp qword [rbx + 0x10], 0
sete dil
test rax, rax
sete al
or edi, eax
xor edi, 1
movzx edi, dil
jmp 0x1402716b4