Function at 0x8e7da0
Capabilities:
Encode data using xor

Disassembly:
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x30
mov r12, rdx
mov edx, dword [rcx + 0x40]
mov rbx, rcx
test edx, edx
jne 0x8e7eee
mov dword [rcx + 0x40], r9d
mov qword [rsp + 0x20], 0
mov qword [rsp + 0x28], 0
cmp r9d, 0xfeff
jbe 0x8e7f00
mov eax, 0xfffffeff
lea rsi, [r8 + 0xa]
lea ebp, [r9 - 0xa]
mov rdx, r12
mov word [rsp + 0x20], ax
mov eax, r9d
bswap eax
mov dword [rsp + 0x22], eax
mov rax, qword [r8]
mov qword [rsp + 0x26], rax
movzx eax, word [r8 + 8]
mov r8, rcx
mov word [rsp + 0x2e], ax
mov rax, qword [rsp + 0x20]
xor qword [rcx], rax
mov rax, qword [rsp + 0x28]
xor qword [rcx + 8], rax
call fcn.00916710
lea edi, [rbp - 0x10]
shr edi, 4
add edi, 1
shl rdi, 4
add rdi, rsi
nop word [rax + rax]
mov rdx, qword [rsi]
mov rax, qword [rsi + 8]
mov r8, rbx
mov rcx, rbx
xor qword [rbx], rdx
add rsi, 0x10
xor qword [rbx + 8], rax
mov qword [rsp + 0x20], rdx
mov rdx, r12
mov qword [rsp + 0x28], rax
call fcn.00916710
cmp rsi, rdi
jne 0x8e7e40
and ebp, 0xf
test ebp, ebp
je 0x8e7edf
lea rcx, [rsp + 0x20]
mov rax, rdi
mov qword [rsp + 0x20], 0
mov qword [rsp + 0x28], 0
mov r8, rcx
cmp ebp, 8
jae 0x8e8050
xor edx, edx
test bpl, 4
jne 0x8e8030
test bpl, 2
jne 0x8e8010
and ebp, 1
jne 0x8e8000
nop dword [rax + rax]
mov rax, qword [rsp + 0x20]
xor qword [rbx], rax
mov r8, rbx
mov rdx, r12
mov rax, qword [rsp + 0x28]
xor qword [rbx + 8], rax
mov rcx, rbx
call fcn.00916710
mov rax, qword [rbx]
mov qword [rbx + 0x10], rax
mov rax, qword [rbx + 8]
mov qword [rbx + 0x18], rax
add rsp, 0x30
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
ret
mov eax, r9d
rol ax, 8
mov word [rsp + 0x20], ax
cmp r9d, 0xd
ja 0x8e7f6f
lea rax, [rsp + 0x22]
cmp r9d, 8
jb 0x8e7fc0
mov rdx, qword [r8]
lea r10, [rsp + 0x28]
mov qword [rsp + 0x22], rdx
mov edx, r9d
mov rcx, qword [r8 + rdx - 8]
mov qword [rax + rdx - 8], rcx
sub rax, r10
add r9d, eax
sub r8, rax
and r9d, 0xfffffff8
cmp r9d, 8
jb 0x8e7ec0
and r9d, 0xfffffff8
xor eax, eax
mov edx, eax
add eax, 8
mov rcx, qword [r8 + rdx]
mov qword [r10 + rdx], rcx
cmp eax, r9d
jb 0x8e7f58
jmp 0x8e7ec0
mov rax, qword [r8]
lea rsi, [r8 + 0xe]
lea ebp, [r9 - 0xe]
mov rdx, r12
mov qword [rsp + 0x22], rax
mov eax, dword [r8 + 8]
mov dword [rsp + 0x2a], eax
movzx eax, word [r8 + 0xc]
mov r8, rcx
mov word [rsp + 0x2e], ax
mov rax, qword [rsp + 0x20]
xor qword [rcx], rax
mov rax, qword [rsp + 0x28]
xor qword [rcx + 8], rax
call fcn.00916710
cmp ebp, 0xf
ja 0x8e7e27
mov rdi, rsi
jmp 0x8e7e72
test r9b, 4
jne 0x8e8077
test r9d, r9d
je 0x8e7ec0
movzx edx, byte [r8]
mov byte [rax], dl
test r9b, 2
je 0x8e7ec0
mov r9d, r9d
movzx edx, word [r8 + r9 - 2]
mov word [rax + r9 - 2], dx
jmp 0x8e7ec0
movzx eax, byte [rax + rdx]
mov byte [r8 + rdx], al
jmp 0x8e7ec0
movzx ecx, word [rax + rdx]
mov word [r8 + rdx], cx
add rdx, 2
and ebp, 1
je 0x8e7ec0
jmp 0x8e8000
mov edx, dword [rax]
mov dword [r8], edx
mov edx, 4
test bpl, 2
je 0x8e7eb2
jmp 0x8e8010
mov r9d, ebp
xor eax, eax
and r9d, 0xfffffff8
mov edx, eax
add eax, 8
mov r8, qword [rdi + rdx]
mov qword [rcx + rdx], r8
cmp eax, r9d
jb 0x8e8059
lea r8, [rcx + rax]
add rax, rdi
jmp 0x8e7e9c
mov edx, dword [r8]
mov r9d, r9d
mov dword [rax], edx
mov edx, dword [r8 + r9 - 4]
mov dword [rax + r9 - 4], edx
jmp 0x8e7ec0