Function at 0x6ecaf0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xa8
mov rbp, rsp
mov qword [rbp + 0x20], rcx
mov dword [rbp + 0x2c], r8d
mov qword [rbp + 0xd8], rdx
mov rcx, qword [rbp + 0xd8]
call fcn.00415230
nop
mov ecx, dword [rbp + 0x2c]
movsxd rcx, ecx
test rcx, rcx
jbe 0x6ecd2a
mov rax, qword [rbp + 0x20]
mov qword [rax + 0x68], 0
mov rax, rcx
shr rax, 4
test rax, rax
jbe 0x6ecc3a
xor edx, edx
lea r11, [rax - 1]
mov rax, rdx
cmp rax, r11
ja 0x6ecc39
sub r11, rdx
add r11, 1
mov rax, qword [rbp + 0xd8]
mov rdx, qword [rbp + 0x20]
mov rdx, qword [rdx + 0x68]
lea rax, [rax + rdx]
lea rdi, [rbp + 0x80]
mov rdx, qword [rbp + 0x20]
lea rsi, [rdx + 0x58]
movsq qword [rdi], qword [rsi]
movsq qword [rdi], qword [rsi]
mov rdx, qword [rax]
xor rdx, qword [rbp + 0x80]
mov qword [rbp + 0x70], rdx
mov rax, qword [rax + 8]
xor rax, qword [rbp + 0x88]
mov qword [rbp + 0x78], rax
mov rax, qword [rbp + 0x20]
mov rax, qword [rax + 0xa0]
lea rdx, [rbp + 0x70]
mov qword [rbp + 0x68], rdx
mov r8, qword [rbp + 0x68]
movzx rdx, byte [r8]
add rdx, rdx
lea rdi, [rbp + 0x58]
lea rsi, [rax + rdx*8 + 0x18]
movsq qword [rdi], qword [rsi]
movsq qword [rdi], qword [rsi]
mov edx, 1
movsxd r9, edx
movzx r10, byte [r8 + r9]
mov rbx, r9
shl rbx, 9
lea rbx, [rax + rbx*8 + 0x18]
mov rsi, r10
add rsi, rsi
mov rbx, qword [rbx + rsi*8]
xor qword [rbp + 0x58], rbx
shl r9, 9
lea r9, [rax + r9*8 + 0x20]
add r10, r10
mov r9, qword [r9 + r10*8]
xor qword [rbp + 0x60], r9
add edx, 1
cmp edx, 0x10
jne 0x6ecbd1
nop
mov rax, qword [rbp + 0x20]
lea rdi, [rax + 0x58]
lea rsi, [rbp + 0x58]
movsq qword [rdi], qword [rsi]
movsq qword [rdi], qword [rsi]
mov rax, qword [rbp + 0x20]
lea rax, [rax + 0x68]
add qword [rax], 0x10
sub r11, 1
test r11, r11
jne 0x6ecb5e
nop
mov rax, rcx
and rax, 0xf
test rax, rax
jbe 0x6ecd2a
mov rcx, qword [rbp + 0x20]
mov rcx, qword [rcx + 0xa0]
lea rdi, [rbp + 0x90]
lea rsi, [rcx + 8]
movsq qword [rdi], qword [rsi]
movsq qword [rdi], qword [rsi]
mov rcx, qword [rbp + 0xd8]
mov rdx, qword [rbp + 0x20]
mov rdx, qword [rdx + 0x68]
lea rcx, [rcx + rdx]
lea rdx, [rbp + 0x90]
mov r8, rax
call fcn.00409690
mov rax, qword [rbp + 0x20]
lea rax, [rax + 0x58]
mov rcx, qword [rbp + 0x90]
xor rcx, qword [rax]
mov qword [rbp + 0x48], rcx
mov rcx, qword [rbp + 0x98]
xor rcx, qword [rax + 8]
mov qword [rbp + 0x50], rcx
mov rax, qword [rbp + 0x20]
mov rax, qword [rax + 0xa0]
lea rcx, [rbp + 0x48]
mov qword [rbp + 0x40], rcx
mov rdx, qword [rbp + 0x40]
movzx rcx, byte [rdx]
add rcx, rcx
lea rdi, [rbp + 0x30]
lea rsi, [rax + rcx*8 + 0x18]
movsq qword [rdi], qword [rsi]
movsq qword [rdi], qword [rsi]
mov ecx, 1
movsxd r8, ecx
movzx r9, byte [rdx + r8]
mov r10, r8
shl r10, 9
lea r10, [rax + r10*8 + 0x18]
mov r11, r9
add r11, r11
mov r10, qword [r10 + r11*8]
xor qword [rbp + 0x30], r10
shl r8, 9
lea r8, [rax + r8*8 + 0x20]
add r9, r9
mov r8, qword [r8 + r9*8]
xor qword [rbp + 0x38], r8
add ecx, 1
cmp ecx, 0x10
jne 0x6eccdb
nop
mov rax, qword [rbp + 0x20]
lea rdi, [rax + 0x58]
lea rsi, [rbp + 0x30]
movsq qword [rdi], qword [rsi]
movsq qword [rdi], qword [rsi]
nop
lea rcx, [rbp + 0xd8]
mov rdx, qword [0x00406570]
call fcn.00415160
lea rsp, [rbp + 0xa8]
pop rbx
pop rsi
pop rdi
pop rbp
ret