Function at 0x54e6a0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x38
mov rax, qword [rsp + 0xb0]
mov rbx, qword [rsp + 0xa0]
mov r14, qword [rsp + 0xa8]
mov edi, dword [rax]
mov r12, rcx
mov rsi, rdx
mov r15, r8
mov r13, r9
test edi, edi
jne 0x54e703
jmp 0x54e708
mov eax, edi
add r12, 1
add rsi, 1
add edi, 1
movzx eax, byte [r14 + rax]
xor al, byte [r12 - 1]
sub r15, 1
mov byte [rsi - 1], al
and edi, 0xf
je 0x54e708
test r15, r15
jne 0x54e6e0
cmp r15, 0xf
jbe 0x54ead3
lea rax, [r15 - 0x10]
mov rdi, r12
and rax, 0xfffffffffffffff0
add rax, 0x10
mov qword [rsp + 0x28], rax
lea rbp, [rsi + rax]
nop word [rax + rax]
mov rdx, r14
mov r8, r13
mov rcx, rbx
call qword [rsp + 0xb8]
movzx eax, byte [rbx + 0xf]
mov edx, eax
add eax, 1
add edx, 1
shr eax, 8
mov byte [rbx + 0xf], dl
mov edx, eax
movzx eax, byte [rbx + 0xe]
add eax, edx
mov byte [rbx + 0xe], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 0xd]
add eax, edx
mov byte [rbx + 0xd], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 0xc]
add eax, edx
mov byte [rbx + 0xc], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 0xb]
add eax, edx
mov byte [rbx + 0xb], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 0xa]
add eax, edx
mov byte [rbx + 0xa], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 9]
add eax, edx
mov byte [rbx + 9], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 8]
add eax, edx
mov byte [rbx + 8], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 7]
add eax, edx
mov byte [rbx + 7], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 6]
add eax, edx
mov byte [rbx + 6], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 5]
add eax, edx
mov byte [rbx + 5], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 4]
add eax, edx
mov byte [rbx + 4], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 3]
add eax, edx
mov byte [rbx + 3], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 2]
add eax, edx
mov byte [rbx + 2], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 1]
add eax, edx
mov byte [rbx + 1], al
shr eax, 8
add byte [rbx], al
mov rax, qword [rdi]
add rsi, 0x10
add rdi, 0x10
xor rax, qword [r14]
mov qword [rsi - 0x10], rax
mov rax, qword [rdi - 8]
xor rax, qword [r14 + 8]
mov qword [rsi - 8], rax
cmp rsi, rbp
jne 0x54e730
and r15d, 0xf
add r12, qword [rsp + 0x28]
xor edi, edi
test r15, r15
je 0x54eab8
mov rdx, r14
mov rcx, rbx
mov r8, r13
call qword [rsp + 0xb8]
movzx eax, byte [rbx + 0xf]
mov rcx, r15
mov edx, eax
add eax, 1
add edx, 1
shr eax, 8
mov byte [rbx + 0xf], dl
mov edx, eax
movzx eax, byte [rbx + 0xe]
add eax, edx
mov byte [rbx + 0xe], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 0xd]
add eax, edx
mov byte [rbx + 0xd], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 0xc]
add eax, edx
mov byte [rbx + 0xc], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 0xb]
add eax, edx
mov byte [rbx + 0xb], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 0xa]
add eax, edx
mov byte [rbx + 0xa], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 9]
add eax, edx
mov byte [rbx + 9], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 8]
add eax, edx
mov byte [rbx + 8], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 7]
add eax, edx
mov byte [rbx + 7], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 6]
add eax, edx
mov byte [rbx + 6], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 5]
add eax, edx
mov byte [rbx + 5], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 4]
add eax, edx
mov byte [rbx + 4], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 3]
add eax, edx
mov byte [rbx + 3], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 2]
add eax, edx
mov byte [rbx + 2], al
shr eax, 8
mov edx, eax
movzx eax, byte [rbx + 1]
add eax, edx
mov byte [rbx + 1], al
shr eax, 8
add byte [rbx], al
mov eax, edi
movzx edx, byte [r14 + rax]
xor dl, byte [r12 + rax]
mov byte [rbp + rax], dl
lea edx, [rdi + 1]
sub rcx, 1
je 0x54eab5
mov eax, edx
movzx r8d, byte [r14 + rax]
xor r8b, byte [r12 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 2]
cmp r15, 2
je 0x54eab5
movzx r8d, byte [r14 + rax]
xor r8b, byte [r12 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 3]
cmp r15, 3
je 0x54eab5
movzx r8d, byte [r12 + rax]
xor r8b, byte [r14 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 4]
cmp r15, 4
je 0x54eab5
movzx r8d, byte [r14 + rax]
xor r8b, byte [r12 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 5]
cmp r15, 5
je 0x54eab5
movzx r8d, byte [r14 + rax]
xor r8b, byte [r12 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 6]
cmp r15, 6
je 0x54eab5
movzx r8d, byte [r14 + rax]
xor r8b, byte [r12 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 7]
cmp r15, 7
je 0x54eab5
movzx r8d, byte [r12 + rax]
xor r8b, byte [r14 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 8]
cmp r15, 8
je 0x54eab5
movzx r8d, byte [r12 + rax]
xor r8b, byte [r14 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 9]
cmp r15, 9
je 0x54eab5
movzx r8d, byte [r12 + rax]
xor r8b, byte [r14 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 0xa]
cmp r15, 0xa
je 0x54eab5
movzx r8d, byte [r12 + rax]
xor r8b, byte [r14 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 0xb]
cmp r15, 0xb
je 0x54eab5
movzx r8d, byte [r12 + rax]
xor r8b, byte [r14 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 0xc]
cmp r15, 0xc
je 0x54eab5
movzx r8d, byte [r12 + rax]
xor r8b, byte [r14 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 0xd]
cmp r15, 0xd
je 0x54eab5
movzx r8d, byte [r12 + rax]
xor r8b, byte [r14 + rax]
mov byte [rbp + rax], r8b
lea eax, [rdi + 0xe]
cmp r15, 0xe
je 0x54eab5
movzx r8d, byte [r12 + rax]
xor r8b, byte [r14 + rax]
mov byte [rbp + rax], r8b
lea edi, [rdx + rcx]
mov rax, qword [rsp + 0xb0]
mov dword [rax], edi
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rbp, rsi
jmp 0x54e84a