Function at 0x8ea290
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x68
mov rax, qword [rsp + 0xe0]
mov rbx, qword [rsp + 0xd0]
mov edi, dword [rax]
mov esi, dword [rax + 4]
mov rax, qword [rsp + 0xd0]
mov ebx, dword [rbx + 4]
mov qword [rsp + 0xb8], rdx
mov rdx, qword [rsp + 0xd8]
mov rbp, rcx
mov ecx, r8d
mov qword [rsp + 0xc8], r9
mov r9d, dword [rsp + 0xe8]
sub ecx, 8
mov r11d, dword [rdx]
mov r12d, dword [rdx + 4]
mov dword [rsp + 0xc0], r8d
mov eax, dword [rax]
mov dword [rsp + 0x40], ecx
mov dword [rsp + 0x28], r11d
test r9d, r9d
je 0x8ea430
test ecx, ecx
js 0x8ea3f5
shr ecx, 3
mov r13, qword [rsp + 0xb8]
mov edx, ecx
mov dword [rsp + 0x2c], ecx
lea rcx, [rsp + 0x58]
lea r14, [rdx*8 + 8]
mov edx, ebx
mov rbx, r13
mov r13d, r11d
lea r15, [rbp + r14]
mov qword [rsp + 0x30], r14
mov r14, rcx
nop word [rax + rax]
mov r8d, dword [rbp]
mov ecx, dword [rbp + 4]
add rbx, 8
add rbp, 8
xor r8d, r13d
xor eax, r8d
mov r8d, 1
mov dword [rsp + 0x58], eax
mov eax, ecx
mov rcx, r14
xor eax, r12d
xor edx, eax
mov dword [rsp + 0x5c], edx
mov rdx, qword [rsp + 0xc8]
call fcn.00867a50
mov eax, dword [rsp + 0x58]
xor eax, edi
mov edx, eax
mov byte [rbx - 8], al
shr edx, 0x10
mov byte [rbx - 7], ah
mov byte [rbx - 6], dl
mov edx, eax
shr edx, 0x18
mov byte [rbx - 5], dl
mov edx, dword [rsp + 0x5c]
xor edx, esi
mov ecx, edx
mov byte [rbx - 4], dl
shr ecx, 0x10
mov byte [rbx - 3], dh
mov byte [rbx - 2], cl
mov ecx, edx
shr ecx, 0x18
mov byte [rbx - 1], cl
cmp r15, rbp
jne 0x8ea350
mov ebx, edx
mov edx, dword [rsp + 0x2c]
mov ecx, dword [rsp + 0xc0]
mov r14, qword [rsp + 0x30]
add qword [rsp + 0xb8], r14
neg edx
shl edx, 3
lea ecx, [rcx + rdx - 0x10]
add edx, dword [rsp + 0x40]
mov dword [rsp + 0xc0], edx
cmp ecx, 0xfffffff8
je 0x8ea640
movsxd rcx, ecx
cmp dword [rsp + 0xc0], 7
lea rdx, [rbp + rcx + 8]
ja case.0x8ea429.0
mov ecx, dword [rsp + 0xc0]
lea r8, [0x00d89140]
movsxd rcx, dword [r8 + rcx*4]
add rcx, r8
jmp rcx
mov edx, dword [rsp + 0x40]
test edx, edx
jle 0x8ea5c0
lea edx, [r8 - 9]
mov dword [rsp + 0x2c], esi
mov r13d, ebx
mov r14, rbp
shr edx, 3
mov r15, qword [rsp + 0xb8]
mov ebx, eax
lea rcx, [rdx*8 + 8]
mov dword [rsp + 0x44], edx
mov qword [rsp + 0x48], rcx
add rcx, rbp
mov rbp, r15
mov qword [rsp + 0x38], rcx
lea rcx, [rsp + 0x58]
mov qword [rsp + 0x30], rcx
nop dword [rax]
mov esi, dword [r14]
mov edx, edi
mov rcx, qword [rsp + 0x30]
xor r8d, r8d
add rbp, 8
add r14, 8
xor edx, esi
mov dword [rsp + 0x58], edx
mov edx, dword [rsp + 0x2c]
mov r15d, dword [r14 - 4]
xor edx, r15d
mov dword [rsp + 0x5c], edx
mov rdx, qword [rsp + 0xc8]
call fcn.00867a50
mov edx, dword [rsp + 0x28]
xor edx, dword [rsp + 0x58]
xor ebx, edx
mov edx, dword [rsp + 0x5c]
mov byte [rbp - 8], bl
xor edx, r12d
mov byte [rbp - 7], bh
xor r13d, edx
mov edx, ebx
shr ebx, 0x18
shr edx, 0x10
mov eax, r13d
mov byte [rbp - 5], bl
mov ebx, esi
mov byte [rbp - 6], dl
mov edx, r13d
shr edx, 0x10
mov byte [rbp - 4], r13b
shr r13d, 0x18
mov byte [rbp - 3], ah
mov byte [rbp - 2], dl
mov byte [rbp - 1], r13b
mov r13d, r15d
cmp qword [rsp + 0x38], r14
jne 0x8ea480
mov rax, qword [rsp + 0x48]
mov ebx, dword [rsp + 0xc0]
mov rbp, r14
mov r14d, r15d
add qword [rsp + 0xb8], rax
mov eax, dword [rsp + 0x44]
mov r13d, esi
mov esi, dword [rsp + 0x2c]
neg eax
shl eax, 3
lea r15d, [rbx + rax - 0x10]
add eax, dword [rsp + 0x40]
mov dword [rsp + 0xc0], eax
mov eax, dword [rbp]
mov rcx, qword [rsp + 0x30]
xor r8d, r8d
movsxd r15, r15d
mov rdx, qword [rsp + 0xc8]
xor edi, eax
mov dword [rsp + 0x2c], eax
mov dword [rsp + 0x58], edi
mov ebx, dword [rbp + 4]
xor esi, ebx
mov dword [rsp + 0x5c], esi
call fcn.00867a50
xor r12d, dword [rsp + 0x5c]
mov ebp, dword [rsp + 0x28]
xor ebp, dword [rsp + 0x58]
mov rax, qword [rsp + 0xb8]
mov r9d, r12d
mov r11d, ebp
xor r9d, r14d
xor r11d, r13d
cmp dword [rsp + 0xc0], 8
lea rdi, [rax + r15 + 8]
mov eax, dword [rsp + 0x2c]
ja case.0x8ea5bb.0
mov edx, dword [rsp + 0xc0]
lea r8, [0x00d89160]
movsxd rdx, dword [r8 + rdx*4]
add rdx, r8
jmp rdx
cmp dword [rsp + 0x40], 0xfffffff8
jne 0x8ea7ba
mov rdi, qword [rsp + 0xd0]
mov dword [rdi], eax
mov dword [rdi + 4], ebx
add rsp, 0x68
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov edx, r9d
sub rdi, 1
shr edx, 0x18
mov byte [rdi], dl
mov edx, r9d
sub rdi, 1
shr edx, 0x10
mov byte [rdi], dl
mov ecx, r9d
lea rdx, [rdi - 1]
mov byte [rdi - 1], ch
mov byte [rdx - 1], r9b
lea rdi, [rdx - 1]
mov edx, r11d
lea r8, [rdi - 1]
shr edx, 0x18
mov byte [rdi - 1], dl
mov ecx, r11d
lea rdx, [r8 - 1]
shr ecx, 0x10
mov byte [r8 - 1], cl
mov ecx, r11d
lea rdi, [rdx - 1]
mov byte [rdx - 1], ch
mov byte [rdi - 1], r11b
jmp case.0x8ea5bb.0
movzx edi, ah
mov ecx, eax
mov edx, ebx
mov r9d, eax
shr ecx, 0x10
mov r8d, edi
mov r10d, ebx
movzx edi, bh
shr eax, 0x18
shr edx, 0x10
shr ebx, 0x18
mov rsi, qword [rsp + 0xd0]
mov byte [rsi], r9b
mov byte [rsi + 1], r8b
mov byte [rsi + 2], cl
mov byte [rsi + 3], al
mov byte [rsi + 4], r10b
mov byte [rsi + 5], dil
mov byte [rsi + 6], dl
mov byte [rsi + 7], bl
jmp 0x8ea5d8
movzx r9d, byte [rdx - 1]
sub rdx, 1
shl r9d, 0x10
mov r8d, r9d
movzx r9d, byte [rdx - 1]
lea rcx, [rdx - 1]
shl r9d, 8
or r9d, r8d
lea rdx, [rcx - 1]
movzx ecx, byte [rcx - 1]
or r9d, ecx
movzx r8d, byte [rdx - 1]
lea rcx, [rdx - 1]
shl r8d, 0x18
lea r10, [rcx - 1]
movzx ecx, byte [rcx - 1]
shl ecx, 0x10
or r8d, ecx
movzx ecx, byte [r10 - 1]
lea rdx, [r10 - 1]
shl ecx, 8
or ecx, r8d
movzx edx, byte [rdx - 1]
or ecx, edx
xor eax, dword [rsp + 0x28]
xor ebx, r12d
mov rdx, qword [rsp + 0xc8]
mov r8d, 1
xor eax, ecx
xor r9d, ebx
lea rcx, [rsp + 0x58]
mov dword [rsp + 0x58], eax
mov dword [rsp + 0x5c], r9d
call fcn.00867a50
xor edi, dword [rsp + 0x58]
mov r11, qword [rsp + 0xb8]
mov edx, edi
mov ecx, edi
mov r9d, edi
movzx eax, dh
shr ecx, 0x10
mov r8d, eax
mov eax, edi
mov rdi, qword [rsp + 0xb8]
shr eax, 0x18
mov dword [rdi], edx
xor esi, dword [rsp + 0x5c]
mov ebx, esi
mov edx, esi
mov r10d, esi
mov dword [r11 + 4], esi
movzx edi, bh
shr edx, 0x10
shr ebx, 0x18
jmp 0x8ea65f
xor r8d, r8d
jmp 0x8ea697
xor r9d, r9d
xor ecx, ecx
jmp 0x8ea6dc
mov r10, rdx
xor r9d, r9d
xor r8d, r8d
jmp 0x8ea6cd
mov rcx, rdx
xor r9d, r9d
xor r8d, r8d
jmp 0x8ea6bf
xor r9d, r9d
jmp 0x8ea6b2
mov rcx, rdx
xor r9d, r9d
jmp 0x8ea6a7
mov rdx, rdi
jmp 0x8ea60b
mov rdx, rdi
jmp 0x8ea62e
mov r8, rdi
jmp 0x8ea620
xor r9d, r9d
xor ecx, ecx
jmp 0x8ea6e2
mov r13d, eax
lea rax, [rsp + 0x58]
mov r15d, dword [rsp + 0x40]
mov r14d, ebx
mov qword [rsp + 0x30], rax
jmp 0x8ea544