Function at 0x14015c720
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
mov eax, 0x48
call fcn.1400b21a0
sub rsp, rax
mov rax, qword [rcx + 0x178]
mov rbx, rcx
mov r12, qword [rcx + 0x160]
mov r14, r9
mov r13, qword [rcx + 0x168]
mov rsi, r8
mov qword [rsp + 0x28], rax
mov rdi, rdx
mov rax, qword [rcx + 0x180]
mov rcx, qword [rcx + 0x38]
mov qword [rsp + 0x20], rax
add rcx, r9
movabs rax, 0xfffffffe0
cmp rcx, rax
ja 0x14015c9cf
cmp rcx, r9
jb 0x14015c9cf
cmp dword [rbx + 0x174], 0
mov qword [rsp + 0x88], rbp
mov qword [rsp + 0x40], r15
mov qword [rbx + 0x38], rcx
je 0x14015c7bb
lea rdx, [rbx + 0x60]
lea rcx, [rbx + 0x40]
call r12
mov dword [rbx + 0x174], 0
mov ebp, dword [rbx + 0x170]
mov r15d, dword [rbx + 0xc]
mov dword [rsp + 0x80], ebp
bswap r15d
test ebp, ebp
je 0x14015c816
test r14, r14
je 0x14015c803
movzx edx, byte [rdi]
dec r14
mov ecx, ebp
inc rdi
movzx eax, byte [rcx + rbx + 0x10]
xor al, dl
mov byte [rsi], al
inc rsi
xor byte [rcx + rbx + 0x40], dl
inc ebp
and ebp, 0xf
mov dword [rsp + 0x80], ebp
jne 0x14015c7d3
jmp 0x14015c80b
test ebp, ebp
jne 0x14015c9ac
lea rdx, [rbx + 0x60]
lea rcx, [rbx + 0x40]
call r12
cmp r14, 0xc00
jb 0x14015c8da
movabs rax, 0xaaaaaaaaaaaaaaab
lea rcx, [rbx + 0x60]
mul r14
lea r10, [rbx + 0x40]
mov rbp, rdx
shr rbp, 0xb
imul rax, rbp, 0xfffffffffffff400
mov qword [rsp + 0x30], rbp
add r14, rax
mov qword [rsp + 0x98], r14
mov r14, qword [rsp + 0x20]
nop dword [rax + rax]
mov rdx, rcx
mov r9d, 0xc00
mov rcx, r10
mov r8, rdi
call r13
mov rbp, qword [rsp + 0x28]
mov r12d, 0xc0
nop dword [rax]
mov r8, r14
lea rdx, [rbx + 0x10]
mov rcx, rbx
call rbp
inc r15d
mov eax, r15d
bswap eax
mov dword [rbx + 0xc], eax
mov rax, qword [rdi]
xor rax, qword [rbx + 0x10]
mov qword [rsi], rax
mov rax, qword [rdi + 8]
add rdi, 0x10
xor rax, qword [rbx + 0x18]
mov qword [rsi + 8], rax
add rsi, 0x10
sub r12, 1
jne 0x14015c880
sub qword [rsp + 0x30], 1
lea rcx, [rbx + 0x60]
lea r10, [rbx + 0x40]
jne 0x14015c860
mov r14, qword [rsp + 0x98]
mov ebp, dword [rsp + 0x80]
mov r9, r14
and r9, 0xfffffffffffffff0
je 0x14015c96a
lea rdx, [rbx + 0x60]
mov r8, rdi
lea rcx, [rbx + 0x40]
call r13
cmp r14, 0x10
jb 0x14015c96a
mov rbp, qword [rsp + 0x28]
mov r12, r14
shr r12, 4
imul rax, r12, 0xfffffffffffffff0
add r14, rax
mov qword [rsp + 0x98], r14
mov r14, qword [rsp + 0x20]
nop dword [rax + rax]
mov r8, r14
lea rdx, [rbx + 0x10]
mov rcx, rbx
call rbp
inc r15d
mov eax, r15d
bswap eax
mov dword [rbx + 0xc], eax
mov rax, qword [rdi]
xor rax, qword [rbx + 0x10]
mov qword [rsi], rax
mov rax, qword [rdi + 8]
add rdi, 0x10
xor rax, qword [rbx + 0x18]
mov qword [rsi + 8], rax
add rsi, 0x10
sub r12, 1
jne 0x14015c920
mov r14, qword [rsp + 0x98]
mov ebp, dword [rsp + 0x80]
test r14, r14
je 0x14015c9ac
mov r8, qword [rsp + 0x20]
lea rdx, [rbx + 0x10]
mov rcx, rbx
call qword [rsp + Ordinal_41]
inc r15d
bswap r15d
mov dword [rbx + 0xc], r15d
nop dword [rax]
mov edx, ebp
inc ebp
movzx ecx, byte [rdx + rdi]
movzx eax, byte [rbx + rdx + 0x10]
xor byte [rdx + rbx + 0x40], cl
xor al, cl
mov byte [rdx + rsi], al
sub r14, 1
jne 0x14015c990
mov r15, qword [rsp + 0x40]
xor eax, eax
mov dword [rbx + 0x170], ebp
mov rbp, qword [rsp + 0x88]
add rsp, 0x48
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret
or eax, 0xffffffff
add rsp, 0x48
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret