Function at 0x54ea30
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 rbx, rcx
mov rdi, rdx
mov ecx, dword [rdx + 8]
mov edx, dword [r8 + 8]
cmp ecx, edx
jl 0x54ea60
mov eax, edx
mov edx, ecx
mov ecx, eax
mov rax, r8
mov r8, rdi
mov rdi, rax
cmp dword [rbx + 0xc], edx
jl 0x54ec70
test ecx, ecx
jle 0x54ecd0
mov rsi, qword [r8]
mov r10, qword [rbx]
mov rdi, qword [rdi]
lea rax, [rsi + 0x10]
lea r11, [r10 + 0x10]
cmp r10, rax
setae r9b
cmp rsi, r11
setae al
or r9d, eax
lea rax, [rdi + 0x10]
cmp r10, rax
setae al
cmp rdi, r11
setae r11b
or eax, r11d
test r9b, al
je 0x54eca0
cmp ecx, 0xe
jbe 0x54eca0
mov r9, rsi
xor r11d, r11d
shr r9, 3
and r9d, 1
je 0x54ead7
mov rax, qword [rsi]
xor rax, qword [rdi]
mov r11d, 1
mov qword [r10], rax
mov r12d, ecx
xor eax, eax
xor r15d, r15d
sub r12d, r9d
mov r9d, r9d
shl r9, 3
mov ebp, r12d
lea r14, [rsi + r9]
lea r13, [rdi + r9]
shr ebp, 1
add r9, r10
nop dword [rax]
movdqu xmm0, xmmword [r13 + rax]
add r15d, 1
pxor xmm0, xmmword [r14 + rax]
movups xmmword [r9 + rax], xmm0
add rax, 0x10
cmp ebp, r15d
ja 0x54eb00
mov eax, r12d
and eax, 0xfffffffe
add r11d, eax
cmp r12d, eax
je 0x54eb54
movsxd rax, r11d
add r11d, 1
mov r9, qword [rdi + rax*8]
xor r9, qword [rsi + rax*8]
cmp r11d, ecx
mov qword [r10 + rax*8], r9
jge 0x54eb54
movsxd r11, r11d
mov rax, qword [rsi + r11*8]
xor rax, qword [rdi + r11*8]
mov qword [r10 + r11*8], rax
cmp edx, ecx
jle 0x54ed10
movsxd rsi, ecx
mov r11, qword [r8]
mov r10, qword [rbx]
lea r8, [rsi*8 + 0x10]
mov r9d, edx
sub r9d, ecx
lea rbp, [r8 - 0x10]
lea r12, [r10 + r8]
lea rax, [r11 + rbp]
lea rdi, [r10 + rbp]
cmp rax, r12
setae r12b
add r8, r11
cmp rdi, r8
setae r8b
or r12b, r8b
je 0x54ece0
cmp r9d, 0x18
jbe 0x54ece0
shr rax, 3
lea edi, [rdx - 1]
and eax, 1
sub edi, ecx
cmp eax, 1
sbb r8d, r8d
add r8d, 2
cmp edi, r8d
jb 0x54ec17
test eax, eax
je 0x54ebd1
mov r8, qword [r11 + rsi*8]
add ecx, 1
mov qword [r10 + rsi*8], r8
sub r9d, eax
xor r8d, r8d
mov edi, r9d
mov r12d, r9d
lea r9, [rbp + rax*8]
shr edi, 1
xor eax, eax
lea rsi, [r11 + r9]
add r9, r10
nop dword [rax]
movdqa xmm0, xmmword [rsi + rax]
add r8d, 1
movups xmmword [r9 + rax], xmm0
add rax, 0x10
cmp edi, r8d
ja 0x54ebf0
mov eax, r12d
and eax, 0xfffffffe
add ecx, eax
cmp r12d, eax
je 0x54ec31
movsxd rsi, ecx
mov rax, qword [r11 + rsi*8]
add ecx, 1
cmp ecx, edx
mov qword [r10 + rsi*8], rax
jge 0x54ec31
movsxd rcx, ecx
mov rax, qword [r11 + rcx*8]
mov qword [r10 + rcx*8], rax
movsxd rax, edx
lea rax, [r10 + rax*8 - 8]
nop dword [rax]
sub rax, 8
cmp qword [rax + 8], 0
jne 0x54ec50
sub edx, 1
jne 0x54ec40
mov dword [rbx + 8], edx
mov eax, 1
add rsp, 0x38
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rbx
mov qword [rsp + 0x28], r8
call fcn.004abc80
mov rdx, rax
xor eax, eax
mov r8, qword [rsp + 0x28]
test rdx, rdx
je 0x54ec58
mov edx, dword [r8 + 8]
mov ecx, dword [rdi + 8]
jmp 0x54ea69
lea eax, [rcx - 1]
lea r11, [rax*8 + 8]
xor eax, eax
nop dword [rax]
mov r9, qword [rsi + rax]
xor r9, qword [rdi + rax]
mov qword [r10 + rax], r9
add rax, 8
cmp rax, r11
jne 0x54ecb0
jmp 0x54eb54
xor ecx, ecx
jmp 0x54eb54
lea r8d, [rdx - 1]
mov esi, r8d
sub esi, ecx
xor ecx, ecx
lea r9, [rsi*8 + 8]
mov r8, qword [rax + rcx]
mov qword [rdi + rcx], r8
add rcx, 8
cmp rcx, r9
jne 0x54ecf3
jmp 0x54ec31
test edx, edx
mov dword [rbx + 8], edx
jg 0x54ed21
mov eax, 1
jmp 0x54ec58
mov r10, qword [rbx]
jmp 0x54ec31