Function at 0x584a00
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 r13, rcx
mov rsi, rdx
mov r15, r8
mov r12, r9
test edi, edi
jne 0x584a62
jmp 0x584a67
mov eax, edi
add r13, 1
add rsi, 1
add edi, 1
movzx eax, byte [r14 + rax]
xor al, byte [r13 - 1]
sub r15, 1
mov byte [rsi - 1], al
and edi, 0xf
je 0x584a67
test r15, r15
jne 0x584a40
cmp r15, 0xf
jbe 0x584e46
lea rax, [r15 - 0x10]
mov rdi, r13
and rax, 0xfffffffffffffff0
add rax, 0x10
mov qword [rsp + 0x28], rax
lea rbp, [rsi + rax]
nop dword [rax]
mov rcx, rbx
mov r8, r12
mov rdx, r14
call qword [rsp + 0xb8]
movzx eax, byte [rbx + 0xf]
mov ecx, eax
add eax, 1
add ecx, 1
shr eax, 8
mov byte [rbx + 0xf], cl
mov ecx, eax
movzx eax, byte [rbx + 0xe]
add eax, ecx
mov byte [rbx + 0xe], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 0xd]
add eax, ecx
mov byte [rbx + 0xd], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 0xc]
add eax, ecx
mov byte [rbx + 0xc], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 0xb]
add eax, ecx
mov byte [rbx + 0xb], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 0xa]
add eax, ecx
mov byte [rbx + 0xa], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 9]
add eax, ecx
mov byte [rbx + 9], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 8]
add eax, ecx
mov byte [rbx + 8], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 7]
add eax, ecx
mov byte [rbx + 7], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 6]
add eax, ecx
mov byte [rbx + 6], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 5]
add eax, ecx
mov byte [rbx + 5], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 4]
add eax, ecx
mov byte [rbx + 4], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 3]
add eax, ecx
mov byte [rbx + 3], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 2]
add eax, ecx
mov byte [rbx + 2], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 1]
add eax, ecx
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 0x584a90
and r15d, 0xf
add r13, qword [rsp + 0x28]
xor edi, edi
test r15, r15
je 0x584e2b
mov r8, r12
mov rcx, rbx
mov rdx, r14
call qword [rsp + 0xb8]
movzx eax, byte [rbx + 0xf]
mov r8, r15
mov ecx, eax
add eax, 1
add ecx, 1
shr eax, 8
mov byte [rbx + 0xf], cl
mov ecx, eax
movzx eax, byte [rbx + 0xe]
add eax, ecx
mov byte [rbx + 0xe], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 0xd]
add eax, ecx
mov byte [rbx + 0xd], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 0xc]
add eax, ecx
mov byte [rbx + 0xc], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 0xb]
add eax, ecx
mov byte [rbx + 0xb], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 0xa]
add eax, ecx
mov byte [rbx + 0xa], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 9]
add eax, ecx
mov byte [rbx + 9], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 8]
add eax, ecx
mov byte [rbx + 8], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 7]
add eax, ecx
mov byte [rbx + 7], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 6]
add eax, ecx
mov byte [rbx + 6], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 5]
add eax, ecx
mov byte [rbx + 5], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 4]
add eax, ecx
mov byte [rbx + 4], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 3]
add eax, ecx
mov byte [rbx + 3], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 2]
add eax, ecx
mov byte [rbx + 2], al
shr eax, 8
mov ecx, eax
movzx eax, byte [rbx + 1]
add eax, ecx
mov byte [rbx + 1], al
shr eax, 8
add byte [rbx], al
mov eax, edi
movzx ecx, byte [r14 + rax]
xor cl, byte [r13 + rax]
mov byte [rbp + rax], cl
lea ecx, [rdi + 1]
sub r8, 1
je 0x584e27
mov eax, ecx
movzx r9d, byte [r14 + rax]
xor r9b, byte [r13 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 2]
cmp r15, 2
je 0x584e27
movzx r9d, byte [r14 + rax]
xor r9b, byte [r13 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 3]
cmp r15, 3
je 0x584e27
movzx r9d, byte [r13 + rax]
xor r9b, byte [r14 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 4]
cmp r15, 4
je 0x584e27
movzx r9d, byte [r13 + rax]
xor r9b, byte [r14 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 5]
cmp r15, 5
je 0x584e27
movzx r9d, byte [r13 + rax]
xor r9b, byte [r14 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 6]
cmp r15, 6
je 0x584e27
movzx r9d, byte [r13 + rax]
xor r9b, byte [r14 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 7]
cmp r15, 7
je 0x584e27
movzx r9d, byte [r13 + rax]
xor r9b, byte [r14 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 8]
cmp r15, 8
je 0x584e27
movzx r9d, byte [r13 + rax]
xor r9b, byte [r14 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 9]
cmp r15, 9
je 0x584e27
movzx r9d, byte [r13 + rax]
xor r9b, byte [r14 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 0xa]
cmp r15, 0xa
je 0x584e27
movzx r9d, byte [r13 + rax]
xor r9b, byte [r14 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 0xb]
cmp r15, 0xb
je 0x584e27
movzx r9d, byte [r13 + rax]
xor r9b, byte [r14 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 0xc]
cmp r15, 0xc
je 0x584e27
movzx r9d, byte [r13 + rax]
xor r9b, byte [r14 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 0xd]
cmp r15, 0xd
je 0x584e27
movzx r9d, byte [r13 + rax]
xor r9b, byte [r14 + rax]
mov byte [rbp + rax], r9b
lea eax, [rdi + 0xe]
cmp r15, 0xe
je 0x584e27
movzx r9d, byte [r13 + rax]
movzx edx, byte [r14 + rax]
xor edx, r9d
mov byte [rbp + rax], dl
lea edi, [rcx + r8]
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 0x584baa