Function at 0x14004ab20
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x88
mov rbx, rdx
mov qword [rsp + 0x30], rcx
cmp rdx, 0x15
jae 0x14004ab71
cmp rbx, 1
jbe 0x14004b1a0
mov r8d, 1
mov rcx, qword [rsp + 0x30]
mov rdx, rbx
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.14004b1c0
movabs rax, 0x7ffffffffffffff8
lea rdx, [rbx*4]
and rdx, rax
movzx eax, byte [0x141ada129]
xor ecx, ecx
call fcn.14014fee0
test rax, rax
je 0x14004b1b5
mov r14, rax
movzx eax, byte [0x141ada129]
mov edx, 0x100
xor ecx, ecx
call fcn.14014fee0
test rax, rax
je 0x14004b1b5
mov rbp, rax
mov rax, qword [rsp + 0x30]
lea rcx, [rax + 0xc]
mov qword [rsp + 0x58], rcx
add rax, 0xfffffffffffffff8
mov qword [rsp + 0x50], rax
mov eax, 0x10
mov qword [rsp + 0x48], rax
xor edi, edi
movabs r13, 0x1ffffffffffffffe
xor r15d, r15d
mov qword [rsp + 0x20], rbx
mov qword [rsp + 0x28], r14
jmp 0x14004ac14
mov r15d, 1
mov rdi, qword [rsp + 0x60]
cmp rdi, rbx
jae 0x14004b16b
mov rax, rbx
sub rax, rdi
mov rcx, qword [rsp + 0x30]
lea rcx, [rcx + rdi*8]
cmp rax, 2
jae 0x14004afe0
mov r8, rax
lea rax, [r8 + rdi]
mov r12, rax
sub r12, rdi
jb 0x14004b1b5
cmp rax, rbx
ja 0x14004b1b5
jae 0x14004ac83
cmp r8, 0xa
jae 0x14004ac83
cmp rdi, 0xfffffffffffffff6
jae 0x14004b1b5
lea rsi, [rdi + 0xa]
cmp rsi, rbx
cmovae rsi, rbx
cmp rax, rdi
mov eax, 1
cmove r8, rax
mov r12, rsi
sub r12, rdi
mov rdx, r12
call fcn.14004b1c0
mov rax, rsi
mov qword [rsp + 0x60], rax
cmp r15, qword [rsp + 0x48]
jne 0x14004ace9
mov rdx, r15
shl rdx, 5
movzx eax, byte [0x141ada129]
xor ecx, ecx
call fcn.14014fee0
test rax, rax
je 0x14004b1b5
mov r13, rax
lea rax, [r15 + r15]
mov qword [rsp + 0x48], rax
mov r8, r15
shl r8, 4
mov rcx, r13
mov rdx, rbp
call sub.msvcrt.dll_memcpy
mov rcx, qword [0x141ada118]
xor edx, edx
mov r8, rbp
call fcn.1401cdfe4
mov rbp, r13
movabs r13, 0x1ffffffffffffffe
mov rax, r15
shl rax, 4
mov qword [rbp + rax], r12
mov qword [rbp + rax + 8], rdi
inc r15
mov rax, r15
cmp r15, 2
mov qword [rsp + 0x38], rbp
jae 0x14004ad7c
jmp 0x14004ac06
mov r14, qword [rsp + 0x28]
mov rdx, r14
mov rbp, qword [rsp + 0x38]
add rdi, rbp
sub r8, rdx
mov rcx, r13
call sub.msvcrt.dll_memcpy
mov rax, qword [rsp + 0x68]
add rax, r15
mov qword [rdi], rax
mov rax, qword [rsp + 0x70]
mov qword [rdi + 8], rax
lea rdx, [r12 + 0x10]
mov rax, qword [rsp + 0x78]
not rax
mov r8, qword [rsp + 0x40]
add r8, rax
shl r8, 4
mov rcx, r12
call sub.msvcrt.dll_memmove
mov rax, qword [rsp + 0x80]
cmp rax, 1
movabs r13, 0x1ffffffffffffffe
jbe 0x14004ac00
mov r15, rax
lea r10, [rax - 1]
mov rcx, r10
shl rcx, 4
mov rax, qword [rbp + rcx]
mov rcx, qword [rbp + rcx + 8]
add rcx, rax
cmp rcx, rbx
je 0x14004adf0
mov rdx, r15
shl rdx, 4
mov r8, qword [rdx + rbp - 0x20]
cmp r8, rax
jbe 0x14004adf0
cmp r15, 2
je 0x14004b09e
lea r11, [r15 - 3]
mov rcx, r11
shl rcx, 4
mov rcx, qword [rbp + rcx]
lea r9, [r8 + rax]
cmp rcx, r9
jbe 0x14004ae06
cmp r15, 3
jbe 0x14004b160
add r8, rcx
cmp qword [rdx + rbp - 0x40], r8
jbe 0x14004ae06
jmp 0x14004ac06
cmp r15, 2
je 0x14004ae0b
lea r11, [r15 - 3]
mov rcx, r11
shl rcx, 4
mov rcx, qword [rbp + rcx]
cmp rcx, rax
jb 0x14004ae0f
lea r11, [r15 - 2]
cmp r11, r15
jae 0x14004b1b5
lea rdi, [r11 + 1]
cmp rdi, r15
jae 0x14004b1b5
mov r12, r11
shl r12, 4
mov rcx, qword [rbp + r12 + 8]
shl rdi, 4
mov rax, qword [rbp + rdi]
mov rsi, qword [rbp + rdi + 8]
add rsi, rax
mov r14, rsi
sub r14, rcx
jb 0x14004b1b5
cmp rsi, rbx
ja 0x14004b1b5
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x78], r11
mov qword [rsp + 0x80], r10
mov qword [rsp + 0x40], r15
add r12, rbp
mov r15, qword [r12]
mov rax, qword [rsp + 0x30]
mov qword [rsp + 0x70], rcx
lea r13, [rax + rcx*8]
lea rbp, [r15*8]
add rbp, r13
mov rbx, r14
sub rbx, r15
cmp rbx, r15
jae 0x14004af30
lea r8, [rbx*8]
mov r14, qword [rsp + 0x28]
mov rcx, r14
mov rdx, rbp
call sub.msvcrt.dll_memcpy
lea r8, [r14 + rbx*8]
test r15, r15
jle 0x14004afc0
test rbx, rbx
jle 0x14004afc0
mov rax, qword [rsp + 0x50]
lea rax, [rax + rsi*8]
mov rbx, qword [rsp + 0x20]
nop dword [rax]
movzx ecx, byte [r8 - 8]
movzx edx, byte [rbp - 8]
cmp cl, dl
mov r9d, 0
sbb r9, r9
cmp cl, dl
mov r10d, 0
adc r10, 0xffffffffffffffff
cmp cl, dl
lea rbp, [rbp + r9*8]
lea r8, [r8 + r10*8]
mov rcx, r8
cmovb rcx, rbp
mov rcx, qword [rcx]
mov qword [rax], rcx
cmp rbp, r13
jbe 0x14004af26
add rax, 0xfffffffffffffff8
cmp r8, r14
ja 0x14004aee0
mov r13, rbp
jmp 0x14004ad15
lea r8, [r15*8]
mov rbx, qword [rsp + 0x28]
mov rcx, rbx
mov rdx, r13
call sub.msvcrt.dll_memcpy
lea r8, [rbx + r15*8]
test r15, r15
jle 0x14004afc5
cmp r14, r15
mov rbx, qword [rsp + 0x20]
jle 0x14004ad10
mov rax, qword [rsp + 0x30]
lea rax, [rax + rsi*8]
mov r14, qword [rsp + 0x28]
mov rdx, r14
movzx r9d, byte [rbp]
xor r10d, r10d
xor ecx, ecx
cmp r9b, byte [rdx]
setae r10b
setb r9b
mov r11, rdx
cmovb r11, rbp
mov r11, qword [r11]
mov qword [r13], r11
add r13, 8
lea rdx, [rdx + r10*8]
cmp rdx, r8
jae 0x14004ad18
mov cl, r9b
lea rbp, [rbp + rcx*8]
cmp rbp, rax
jb 0x14004af70
jmp 0x14004ad18
mov r13, rbp
jmp 0x14004afca
mov r14, qword [rsp + 0x28]
mov rdx, r14
mov rbx, qword [rsp + 0x20]
jmp 0x14004ad18
movzx edx, byte [rcx + 8]
cmp dl, byte [rcx]
jae 0x14004b040
mov r8d, 2
cmp rax, 2
je 0x14004b018
nop word cs:[rax + rax]
mov r9d, edx
movzx edx, byte [rcx + r8*8]
cmp dl, r9b
jae 0x14004b018
inc r8
cmp rax, r8
jne 0x14004b000
mov r8, rax
mov rax, r8
add rax, rdi
jb 0x14004b1b5
cmp rax, rbx
ja 0x14004b1b5
cmp r8, 2
jae 0x14004b06e
mov r8d, 1
jmp 0x14004ac34
mov r8d, 2
cmp rax, 2
je 0x14004ac30
mov r9d, edx
movzx edx, byte [rcx + r8*8]
cmp dl, r9b
jb 0x14004ac30
inc r8
cmp rax, r8
jne 0x14004b050
jmp 0x14004ac2d
mov r12, rax
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x38], rbp
mov rax, r8
shr rax, 1
lea rdx, [rcx + r8*8]
lea r9, [rax*8]
sub rdx, r9
cmp rax, 1
jne 0x14004b0a9
xor r9d, r9d
jmp 0x14004b11a
mov r15d, 2
jmp 0x14004ac06
movabs r9, 0x7ffffffffffffff8
lea r10, [r9 + 6]
and r10, rax
mov r9, qword [rsp + 0x58]
lea r11, [r9 + rdi*8]
mov r9, qword [rsp + 0x50]
lea rsi, [r9 + r12*8]
xor r9d, r9d
nop
movzx ebx, byte [r11 + r9*8 - 0xc]
mov ebp, dword [r11 + r9*8 - 8]
mov r14, qword [rsi]
mov qword [r11 + r9*8 - 0xc], r14
mov byte [rsi], bl
mov dword [rsi + 4], ebp
mov rbx, r9
xor rbx, r13
add rbx, rax
movzx ebp, byte [r11 + r9*8 - 4]
mov r14d, dword [r11 + r9*8]
mov r15, qword [rdx + rbx*8]
mov qword [r11 + r9*8 - 4], r15
mov byte [rdx + rbx*8], bpl
mov dword [rdx + rbx*8 + 4], r14d
add r9, 2
add rsi, 0xfffffffffffffff0
cmp r10, r9
jne 0x14004b0d0
test r8b, 2
je 0x14004b144
mov r10, r9
not r10
add rax, r10
movzx r10d, byte [rcx + r9*8]
mov r11d, dword [rcx + r9*8 + 4]
mov rsi, qword [rdx + rax*8]
mov qword [rcx + r9*8], rsi
mov byte [rdx + rax*8], r10b
mov dword [rdx + rax*8 + 4], r11d
mov rbx, qword [rsp + 0x20]
mov r14, qword [rsp + 0x28]
mov rbp, qword [rsp + 0x38]
mov r15, qword [rsp + 0x40]
mov rax, r12
jmp 0x14004ac34
mov r15d, 3
jmp 0x14004ac06
mov rcx, qword [0x141ada118]
xor edx, edx
mov r8, rbp
call fcn.1401cdfe4
mov rcx, qword [0x141ada118]
xor edx, edx
mov r8, r14
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.1401cdfe4
nop
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
ud2