Function at 0x1401f5d80
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
mov qword [rsp + 0x40], r9
mov rsi, rdx
mov rdi, rcx
mov rcx, qword [rsp + 0xc0]
mov rdx, qword [rsp + 0xb8]
mov r13, qword [rsp + 0xb0]
mov eax, dword [0x1402a4604]
bt eax, 0x19
jb 0x1401f5e08
bt eax, 9
jae 0x1401f6278
mov ebp, dword [rcx]
test r8, r8
je 0x1401f604d
test ebp, ebp
je 0x1401f604d
mov eax, ebp
mov al, byte [rdx + rax]
xor al, byte [rdi]
inc rdi
mov byte [rsi], al
inc rsi
lea r12, [r8 - 1]
inc ebp
and ebp, 0xf
je 0x1401f6050
cmp r8, 1
mov r8, r12
jne 0x1401f5ddc
jmp 0x1401f6050
mov ebp, dword [rcx]
test r8, r8
je 0x1401f5e38
test ebp, ebp
je 0x1401f5e38
mov eax, ebp
mov al, byte [rdx + rax]
xor al, byte [rdi]
inc rdi
mov byte [rsi], al
inc rsi
lea r12, [r8 - 1]
inc ebp
and ebp, 0xf
je 0x1401f5e3b
cmp r8, 1
mov r8, r12
jne 0x1401f5e13
jmp 0x1401f5e3b
mov r12, r8
mov ebx, dword [r13 + 0xc]
bswap ebx
cmp r12, 0x10
jb 0x1401f5f56
mov r14d, 0x10000000
mov r15, r12
shr r15, 4
cmp r15, r14
cmovae r15, r14
add ebx, r15d
cmp r15, rbx
mov eax, 0
cmova rax, rbx
mov ecx, 0
cmova ebx, ecx
sub r15, rax
mov qword [rsp + 0x20], r13
mov rcx, rdi
mov rdx, rsi
mov r8, r15
mov r9, qword [rsp + 0x40]
call fcn.14007b420
mov eax, ebx
bswap eax
mov dword [r13 + 0xc], eax
test ebx, ebx
jne 0x1401f5f3f
movzx eax, byte [r13 + 0xb]
inc eax
mov byte [r13 + 0xb], al
shr eax, 8
movzx ecx, byte [r13 + 0xa]
add ecx, eax
mov byte [r13 + 0xa], cl
shr ecx, 8
movzx eax, byte [r13 + 9]
add eax, ecx
mov byte [r13 + 9], al
shr eax, 8
movzx ecx, byte [r13 + 8]
add ecx, eax
mov byte [r13 + 8], cl
shr ecx, 8
movzx eax, byte [r13 + 7]
add eax, ecx
mov byte [r13 + 7], al
shr eax, 8
movzx ecx, byte [r13 + 6]
add ecx, eax
mov byte [r13 + 6], cl
shr ecx, 8
movzx eax, byte [r13 + 5]
add eax, ecx
mov byte [r13 + 5], al
shr eax, 8
movzx ecx, byte [r13 + 4]
add ecx, eax
mov byte [r13 + 4], cl
shr ecx, 8
movzx eax, byte [r13 + 3]
add eax, ecx
mov byte [r13 + 3], al
shr eax, 8
movzx ecx, byte [r13 + 2]
add ecx, eax
mov byte [r13 + 2], cl
shr ecx, 8
movzx eax, byte [r13 + 1]
add eax, ecx
mov byte [r13 + 1], al
shr eax, 8
add byte [r13], al
shl r15, 4
sub r12, r15
add rsi, r15
add rdi, r15
cmp r12, 0xf
ja 0x1401f5e51
test r12, r12
je 0x1401f625d
xorps xmm0, xmm0
mov r14, qword [rsp + 0xb8]
movups xmmword [r14], xmm0
mov qword [rsp + 0x20], r13
mov r8d, 1
mov rcx, r14
mov rdx, r14
mov r9, qword [rsp + 0x40]
call fcn.14007b420
inc ebx
bswap ebx
mov dword [r13 + 0xc], ebx
jne 0x1401f6035
movzx eax, byte [r13 + 0xb]
inc eax
mov byte [r13 + 0xb], al
shr eax, 8
movzx ecx, byte [r13 + 0xa]
add ecx, eax
mov byte [r13 + 0xa], cl
shr ecx, 8
movzx eax, byte [r13 + 9]
add eax, ecx
mov byte [r13 + 9], al
shr eax, 8
movzx ecx, byte [r13 + 8]
add ecx, eax
mov byte [r13 + 8], cl
shr ecx, 8
movzx eax, byte [r13 + 7]
add eax, ecx
mov byte [r13 + 7], al
shr eax, 8
movzx ecx, byte [r13 + 6]
add ecx, eax
mov byte [r13 + 6], cl
shr ecx, 8
movzx eax, byte [r13 + 5]
add eax, ecx
mov byte [r13 + 5], al
shr eax, 8
movzx ecx, byte [r13 + 4]
add ecx, eax
mov byte [r13 + 4], cl
shr ecx, 8
movzx eax, byte [r13 + 3]
add eax, ecx
mov byte [r13 + 3], al
shr eax, 8
movzx ecx, byte [r13 + 2]
add ecx, eax
mov byte [r13 + 2], cl
shr ecx, 8
movzx eax, byte [r13 + 1]
add eax, ecx
mov byte [r13 + 1], al
shr eax, 8
add byte [r13], al
mov eax, ebp
mov cl, byte [r14 + rax]
xor cl, byte [rdi + rax]
inc ebp
mov byte [rsi + rax], cl
dec r12
jne 0x1401f6035
jmp 0x1401f625d
mov r12, r8
mov ebx, dword [r13 + 0xc]
bswap ebx
cmp r12, 0x10
jb 0x1401f616b
mov r14d, 0x10000000
mov r15, r12
shr r15, 4
cmp r15, r14
cmovae r15, r14
add ebx, r15d
cmp r15, rbx
mov eax, 0
cmova rax, rbx
mov ecx, 0
cmova ebx, ecx
sub r15, rax
mov qword [rsp + 0x20], r13
mov rcx, rdi
mov rdx, rsi
mov r8, r15
mov r9, qword [rsp + 0x40]
call fcn.14007dfe0
mov eax, ebx
bswap eax
mov dword [r13 + 0xc], eax
test ebx, ebx
jne 0x1401f6154
movzx eax, byte [r13 + 0xb]
inc eax
mov byte [r13 + 0xb], al
shr eax, 8
movzx ecx, byte [r13 + 0xa]
add ecx, eax
mov byte [r13 + 0xa], cl
shr ecx, 8
movzx eax, byte [r13 + 9]
add eax, ecx
mov byte [r13 + 9], al
shr eax, 8
movzx ecx, byte [r13 + 8]
add ecx, eax
mov byte [r13 + 8], cl
shr ecx, 8
movzx eax, byte [r13 + 7]
add eax, ecx
mov byte [r13 + 7], al
shr eax, 8
movzx ecx, byte [r13 + 6]
add ecx, eax
mov byte [r13 + 6], cl
shr ecx, 8
movzx eax, byte [r13 + 5]
add eax, ecx
mov byte [r13 + 5], al
shr eax, 8
movzx ecx, byte [r13 + 4]
add ecx, eax
mov byte [r13 + 4], cl
shr ecx, 8
movzx eax, byte [r13 + 3]
add eax, ecx
mov byte [r13 + 3], al
shr eax, 8
movzx ecx, byte [r13 + 2]
add ecx, eax
mov byte [r13 + 2], cl
shr ecx, 8
movzx eax, byte [r13 + 1]
add eax, ecx
mov byte [r13 + 1], al
shr eax, 8
add byte [r13], al
shl r15, 4
sub r12, r15
add rsi, r15
add rdi, r15
cmp r12, 0xf
ja 0x1401f6066
test r12, r12
je 0x1401f625d
xorps xmm0, xmm0
mov r14, qword [rsp + 0xb8]
movups xmmword [r14], xmm0
mov qword [rsp + 0x20], r13
mov r8d, 1
mov rcx, r14
mov rdx, r14
mov r9, qword [rsp + 0x40]
call fcn.14007dfe0
inc ebx
bswap ebx
mov dword [r13 + 0xc], ebx
jne 0x1401f624a
movzx eax, byte [r13 + 0xb]
inc eax
mov byte [r13 + 0xb], al
shr eax, 8
movzx ecx, byte [r13 + 0xa]
add ecx, eax
mov byte [r13 + 0xa], cl
shr ecx, 8
movzx eax, byte [r13 + 9]
add eax, ecx
mov byte [r13 + 9], al
shr eax, 8
movzx ecx, byte [r13 + 8]
add ecx, eax
mov byte [r13 + 8], cl
shr ecx, 8
movzx eax, byte [r13 + 7]
add eax, ecx
mov byte [r13 + 7], al
shr eax, 8
movzx ecx, byte [r13 + 6]
add ecx, eax
mov byte [r13 + 6], cl
shr ecx, 8
movzx eax, byte [r13 + 5]
add eax, ecx
mov byte [r13 + 5], al
shr eax, 8
movzx ecx, byte [r13 + 4]
add ecx, eax
mov byte [r13 + 4], cl
shr ecx, 8
movzx eax, byte [r13 + 3]
add eax, ecx
mov byte [r13 + 3], al
shr eax, 8
movzx ecx, byte [r13 + 2]
add ecx, eax
mov byte [r13 + 2], cl
shr ecx, 8
movzx eax, byte [r13 + 1]
add eax, ecx
mov byte [r13 + 1], al
shr eax, 8
add byte [r13], al
mov eax, ebp
mov cl, byte [r14 + rax]
xor cl, byte [rdi + rax]
inc ebp
mov byte [rsi + rax], cl
dec r12
jne 0x1401f624a
mov rax, qword [rsp + 0xc0]
mov dword [rax], ebp
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rax, [0x1401f5790]
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x20], r13
mov rcx, rdi
mov rdx, rsi
mov r9, qword [rsp + 0x40]
call fcn.1401f62b0
jmp 0x1401f6267