Function at 0x140151a30
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0x48
mov rax, qword [rcx + 0x178]
mov r12, qword [rcx + 0x160]
mov r13, qword [rcx + 0x168]
mov qword [rsp + 0x28], rax
mov rax, qword [rcx + 0x180]
mov rbx, rcx
mov rcx, qword [rcx + 0x38]
mov qword [rsp + 0x20], rax
movabs rax, 0xfffffffe0
add rcx, r9
mov r14, r9
mov rsi, r8
mov rdi, rdx
cmp rcx, rax
ja 0x140151cde
cmp rcx, r9
jb 0x140151cde
cmp dword [rbx + 0x174], 0
mov qword [rsp + 0x88], rbp
mov qword [rbx + 0x38], rcx
mov qword [rsp + 0x40], r15
je 0x140151ac2
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]
bswap r15d
mov dword [rsp + 0x80], ebp
test ebp, ebp
je 0x140151b24
nop word [rax + rax]
test r14, r14
je 0x140151b11
movzx edx, byte [rdi]
mov ecx, ebp
inc rsi
movzx eax, byte [rcx + rbx + 0x10]
inc rdi
dec r14
xor al, dl
mov byte [rsi - 1], al
xor byte [rcx + rbx + 0x40], dl
inc ebp
and ebp, 0xf
mov dword [rsp + 0x80], ebp
jne 0x140151ae0
jmp 0x140151b19
test ebp, ebp
jne 0x140151cbb
lea rdx, [rbx + 0x60]
lea rcx, [rbx + 0x40]
call r12
cmp r14, 0xc00
jb 0x140151bea
movabs rax, 0xaaaaaaaaaaaaaaab
lea rcx, [rbx + 0x60]
lea r10, [rbx + 0x40]
mul r14
mov rbp, rdx
shr rbp, 0xb
mov qword [rsp + 0x30], rbp
imul rax, rbp, 0xfffffffffffff400
add r14, rax
mov qword [rsp + 0x98], r14
mov r14, qword [rsp + 0x20]
nop dword [rax]
mov rdx, rcx
mov r9d, 0xc00
mov r8, rdi
mov rcx, r10
call r13
mov rbp, qword [rsp + 0x28]
mov r12d, 0xc0
nop dword [rax]
lea rdx, [rbx + 0x10]
mov r8, r14
mov rcx, rbx
call rbp
inc r15d
add rsi, 0x10
mov eax, r15d
add rdi, 0x10
bswap eax
mov dword [rbx + 0xc], eax
mov rax, qword [rdi - 0x10]
xor rax, qword [rbx + 0x10]
mov qword [rsi - 0x10], rax
mov rax, qword [rdi - 8]
xor rax, qword [rbx + 0x18]
mov qword [rsi - 8], rax
dec r12
jne 0x140151b90
dec qword [rsp + 0x30]
lea rcx, [rbx + 0x60]
lea r10, [rbx + 0x40]
jne 0x140151b70
mov r14, qword [rsp + 0x98]
mov ebp, dword [rsp + 0x80]
mov r9, r14
and r9, 0xfffffffffffffff0
je 0x140151c7b
lea rdx, [rbx + 0x60]
lea rcx, [rbx + 0x40]
mov r8, rdi
call r13
cmp r14, 0x10
jb 0x140151c7b
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]
lea rdx, [rbx + 0x10]
mov r8, r14
mov rcx, rbx
call rbp
inc r15d
add rsi, 0x10
mov eax, r15d
add rdi, 0x10
bswap eax
mov dword [rbx + 0xc], eax
mov rax, qword [rdi - 0x10]
xor rax, qword [rbx + 0x10]
mov qword [rsi - 0x10], rax
mov rax, qword [rdi - 8]
xor rax, qword [rbx + 0x18]
mov qword [rsi - 8], rax
dec r12
jne 0x140151c30
mov r14, qword [rsp + 0x98]
mov ebp, dword [rsp + 0x80]
test r14, r14
je 0x140151cbb
mov r8, qword [rsp + 0x20]
lea rdx, [rbx + 0x10]
mov rcx, rbx
call qword [rsp + 0x28]
inc r15d
bswap r15d
mov dword [rbx + 0xc], r15d
nop word [rax + rax]
mov edx, ebp
inc ebp
movzx ecx, byte [rdx + rdi]
movzx eax, byte [rdx + rbx + 0x10]
xor byte [rdx + rbx + 0x40], cl
xor al, cl
mov byte [rdx + rsi], al
dec r14
jne 0x140151ca0
mov r15, qword [rsp + 0x40]
mov dword [rbx + 0x170], ebp
mov rbp, qword [rsp + 0x88]
xor eax, eax
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