Function at 0x1403bae10
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov qword [rsp + 0x30], r9
mov rsi, rdx
mov rdi, rcx
mov rax, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0xa8]
mov r13, qword [rsp + 0xa0]
mov ebp, dword [rax]
test ebp, ebp
je 0x1403bae73
test r8, r8
je 0x1403bae73
mov eax, ebp
mov al, byte [rcx + rax]
xor al, byte [rdi]
inc rdi
mov byte [rsi], al
inc rsi
lea r15, [r8 - 1]
inc ebp
and ebp, 0xf
je 0x1403bae76
cmp r8, 1
mov r8, r15
jne 0x1403bae4e
jmp 0x1403bae76
mov r15, r8
mov ebx, dword [r13 + 0xc]
bswap ebx
cmp r15, 0x10
jb 0x1403baf9c
mov r14d, 0x10000000
jmp 0x1403baf42
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 r12, 4
sub r15, r12
add rsi, r12
add rdi, r12
cmp r15, 0xf
jbe 0x1403baf9c
mov r12, r15
shr r12, 4
cmp r12, r14
cmovae r12, r14
add ebx, r12d
cmp r12, rbx
mov eax, 0
cmova rax, rbx
mov ecx, 0
cmova ebx, ecx
sub r12, rax
mov qword [rsp + 0x20], r13
mov rcx, rdi
mov rdx, rsi
mov r8, r12
mov r9, qword [rsp + 0x30]
mov rax, qword [rsp + 0xb8]
call qword [case.0x14012d181.0]
mov eax, ebx
bswap eax
mov dword [r13 + 0xc], eax
test ebx, ebx
jne 0x1403baf2f
jmp 0x1403bae91
test r15, r15
je 0x1403bb097
xorps xmm0, xmm0
mov r14, qword [rsp + 0xa8]
movups xmmword [r14], xmm0
mov qword [rsp + 0x20], r13
mov r8d, 1
mov rcx, r14
mov rdx, r14
mov r9, qword [rsp + 0x30]
mov rax, qword [rsp + 0xb8]
call qword [case.0x14012d181.0]
inc ebx
bswap ebx
mov dword [r13 + 0xc], ebx
jne 0x1403bb084
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 r15
jne 0x1403bb084
mov rax, qword [rsp + 0xb0]
mov dword [rax], ebp
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret