Function at 0x86aa20
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x48
mov rax, qword [rsp + 0xc0]
mov ebx, dword [rax]
mov esi, dword [rax + 4]
mov rdi, rdx
mov eax, r8d
mov edx, dword [rsp + 0xc8]
mov rbp, rcx
sub eax, 8
mov dword [rsp + 0xa0], r8d
mov qword [rsp + 0xa8], r9
mov dword [rsp + 0x20], eax
test edx, edx
je 0x86aba2
test eax, eax
js 0x86ae34
shr eax, 3
lea r14, [rsp + 0x38]
mov r12, rdi
mov rbp, qword [rsp + 0xb8]
mov edx, eax
mov dword [rsp + 0x24], eax
mov eax, ebx
mov rbx, rcx
lea r13, [rdx*8 + 8]
mov edx, esi
mov rsi, rdi
mov rdi, qword [rsp + 0xb0]
lea r15, [rcx + r13]
mov qword [rsp + 0x28], r13
mov r13, r14
mov r14, r9
nop word cs:[rax + rax]
mov ecx, dword [rbx + 4]
mov r8d, dword [rbx]
mov r9, rbp
add r12, 8
add rbx, 8
xor edx, ecx
xor eax, r8d
mov rcx, r13
mov r8, rdi
mov dword [rsp + 0x3c], edx
mov rdx, r14
mov dword [rsp + 0x38], eax
call fcn.0086a310
mov eax, dword [rsp + 0x38]
mov edx, dword [rsp + 0x3c]
movzx ecx, ah
mov byte [r12 - 8], al
mov byte [r12 - 7], cl
mov ecx, eax
shr ecx, 0x10
mov byte [r12 - 4], dl
mov byte [r12 - 6], cl
mov ecx, eax
shr ecx, 0x18
mov byte [r12 - 5], cl
movzx ecx, dh
mov byte [r12 - 3], cl
mov ecx, edx
shr ecx, 0x10
mov byte [r12 - 2], cl
mov ecx, edx
shr ecx, 0x18
mov byte [r12 - 1], cl
cmp r15, rbx
jne 0x86aac0
mov rdi, rsi
mov esi, edx
mov edx, dword [rsp + 0x24]
mov rbp, rbx
mov ebx, eax
mov eax, dword [rsp + 0xa0]
mov r13, qword [rsp + 0x28]
neg edx
shl edx, 3
add rdi, r13
lea ecx, [rax + rdx - 0x10]
add edx, dword [rsp + 0x20]
mov dword [rsp + 0xa0], edx
cmp ecx, 0xfffffff8
je 0x86ae50
movsxd rcx, ecx
cmp dword [rsp + 0xa0], 7
lea rax, [rbp + rcx + 8]
ja case.0x86aba0.0
mov edx, dword [rsp + 0xa0]
lea rcx, [0x00d63520]
movsxd rdx, dword [rcx + rdx*4]
add rdx, rcx
jmp rdx
test eax, eax
js 0x86ae40
shr eax, 3
mov qword [rsp + 0x90], rcx
lea r14, [rsp + 0x38]
mov edx, eax
mov dword [rsp + 0x24], eax
mov r15, r14
lea rax, [rdx*8 + 8]
mov qword [rsp + 0x28], rax
lea r12, [rdi + rax]
mov r13d, dword [rbp]
mov r14d, dword [rbp + 4]
mov rcx, r15
add rdi, 8
mov rdx, qword [rsp + 0xa8]
mov r9, qword [rsp + 0xb8]
add rbp, 8
mov r8, qword [rsp + 0xb0]
mov dword [rsp + 0x38], r13d
mov dword [rsp + 0x3c], r14d
call fcn.0086a450
xor ebx, dword [rsp + 0x38]
xor esi, dword [rsp + 0x3c]
mov edx, ebx
mov byte [rdi - 8], bl
mov eax, esi
shr edx, 0x10
mov byte [rdi - 7], bh
shr ebx, 0x18
mov byte [rdi - 6], dl
mov edx, esi
shr edx, 0x10
mov byte [rdi - 5], bl
mov ebx, r13d
mov byte [rdi - 4], sil
shr esi, 0x18
mov byte [rdi - 3], ah
mov byte [rdi - 2], dl
mov byte [rdi - 1], sil
mov esi, r14d
cmp r12, rdi
jne 0x86abd4
mov edx, dword [rsp + 0x24]
mov eax, dword [rsp + 0xa0]
mov r12d, r14d
mov rbp, qword [rsp + 0x90]
add rbp, qword [rsp + 0x28]
neg edx
shl edx, 3
lea r14d, [rax + rdx - 0x10]
add edx, dword [rsp + 0x20]
mov dword [rsp + 0xa0], edx
cmp r14d, 0xfffffff8
je 0x86ad3a
mov ebx, dword [rbp]
mov esi, dword [rbp + 4]
lea rcx, [rsp + 0x38]
movsxd r14, r14d
mov rdx, qword [rsp + 0xa8]
mov r9, qword [rsp + 0xb8]
mov r8, qword [rsp + 0xb0]
mov dword [rsp + 0x38], ebx
mov dword [rsp + 0x3c], esi
call fcn.0086a450
xor r13d, dword [rsp + 0x38]
xor r12d, dword [rsp + 0x3c]
lea rdx, [rdi + r14 + 8]
cmp dword [rsp + 0xa0], 7
ja case.0x86acec.0
mov eax, dword [rsp + 0xa0]
lea rcx, [0x00d63540]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov eax, r12d
sub rdx, 1
shr eax, 0x10
mov byte [rdx], al
mov ecx, r12d
lea rax, [rdx - 1]
mov byte [rdx - 1], ch
mov byte [rax - 1], r12b
lea rdx, [rax - 1]
mov eax, r13d
lea rcx, [rdx - 1]
shr eax, 0x18
mov byte [rdx - 1], al
mov edx, r13d
lea rax, [rcx - 1]
shr edx, 0x10
mov byte [rcx - 1], dl
mov ecx, r13d
lea rdx, [rax - 1]
mov byte [rax - 1], ch
mov byte [rdx - 1], r13b
mov r12d, esi
mov r13d, ebx
mov rax, qword [rsp + 0xc0]
mov dword [rax], r13d
mov dword [rax + 4], r12d
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx edx, byte [rax - 1]
sub rax, 1
shl edx, 0x10
mov r8d, edx
movzx edx, byte [rax - 1]
lea rcx, [rax - 1]
shl edx, 8
or edx, r8d
lea rax, [rcx - 1]
movzx ecx, byte [rcx - 1]
or edx, ecx
xor esi, edx
movzx ecx, byte [rax - 1]
lea rdx, [rax - 1]
shl ecx, 0x18
lea r8, [rdx - 1]
movzx edx, byte [rdx - 1]
shl edx, 0x10
or ecx, edx
movzx edx, byte [r8 - 1]
lea rax, [r8 - 1]
shl edx, 8
or edx, ecx
movzx eax, byte [rax - 1]
or edx, eax
xor ebx, edx
mov r9, qword [rsp + 0xb8]
lea rcx, [rsp + 0x38]
mov dword [rsp + 0x38], ebx
mov r8, qword [rsp + 0xb0]
mov rdx, qword [rsp + 0xa8]
mov dword [rsp + 0x3c], esi
call fcn.0086a310
mov ebx, dword [rsp + 0x38]
mov eax, dword [rsp + 0x3c]
movzx esi, bh
mov ecx, ebx
mov edx, eax
mov r10d, ebx
shr ecx, 0x10
mov r9d, esi
movzx esi, ah
mov r11d, eax
shr ebx, 0x18
mov r8d, esi
mov rsi, qword [rsp + 0x38]
shr edx, 0x10
shr eax, 0x18
mov qword [rdi], rsi
mov rsi, qword [rsp + 0xc0]
mov byte [rsi], r10b
mov byte [rsi + 1], r9b
mov byte [rsi + 2], cl
mov byte [rsi + 3], bl
mov byte [rsi + 4], r11b
mov byte [rsi + 5], r8b
mov byte [rsi + 6], dl
mov byte [rsi + 7], al
jmp 0x86ad49
mov ecx, eax
jmp 0x86ab6c
mov r14d, eax
mov r12d, esi
mov r13d, ebx
jmp 0x86ac7d
movzx eax, bh
mov ecx, ebx
mov edx, esi
mov r11d, esi
shr ecx, 0x10
mov r9d, eax
mov eax, esi
shr esi, 0x18
movzx eax, ah
mov r10d, ebx
shr edx, 0x10
mov r8d, eax
shr ebx, 0x18
mov eax, esi
jmp 0x86ae0c
xor r8d, r8d
jmp 0x86ad68
xor edx, edx
jmp 0x86ada8
mov r8, rax
xor ecx, ecx
jmp 0x86ad9a
mov rdx, rax
xor ecx, ecx
jmp 0x86ad8d
mov rcx, rax
xor edx, edx
jmp 0x86ad76
mov rax, rdx
jmp 0x86ad26
mov rcx, rdx
jmp 0x86ad19
mov rax, rdx
jmp 0x86ad04
mov r12d, esi
mov r13d, ebx
jmp 0x86ad3a