Function at 0x685100
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rdi, qword [rsp + 0xc0]
mov eax, dword [rdi]
mov dword [rsp + 0xb0], r8d
mov esi, dword [rsp + 0xb0]
mov r13, rdx
mov rbp, rcx
mov r8d, dword [rdi + 4]
mov edx, dword [rsp + 0xc8]
mov rbx, r9
bswap eax
sub esi, 8
bswap r8d
mov dword [rsp + 0x30], esi
test edx, edx
je 0x685254
test esi, esi
js 0x685505
shr esi, 3
mov r14, r13
mov edx, esi
mov dword [rsp + 0x28], esi
lea rsi, [rsp + 0x48]
lea r15, [rdx*8 + 8]
mov edx, r8d
lea r12, [rcx + r15]
nop dword [rax]
mov ecx, dword [rbp + 4]
mov r8d, dword [rbp]
add r14, 8
add rbp, 8
bswap ecx
xor edx, ecx
bswap r8d
mov rcx, rsi
xor eax, r8d
mov dword [rsp + 0x4c], edx
mov rdx, rbx
mov dword [rsp + 0x48], eax
call fcn.006848e0
mov eax, dword [rsp + 0x48]
mov edx, dword [rsp + 0x4c]
mov ecx, eax
mov byte [r14 - 5], al
shr ecx, 0x18
mov byte [r14 - 8], cl
mov ecx, eax
shr ecx, 0x10
mov byte [r14 - 7], cl
movzx ecx, ah
mov byte [r14 - 6], cl
mov ecx, edx
shr ecx, 0x18
mov byte [r14 - 4], cl
mov ecx, edx
shr ecx, 0x10
mov byte [r14 - 3], cl
movzx ecx, dh
mov byte [r14 - 2], cl
mov byte [r14 - 1], dl
cmp r12, rbp
jne 0x685180
mov r14d, dword [rsp + 0x28]
mov esi, dword [rsp + 0xb0]
mov r8d, edx
add r13, r15
neg r14d
shl r14d, 3
lea edx, [rsi + r14 - 0x10]
add r14d, dword [rsp + 0x30]
mov dword [rsp + 0xb0], r14d
cmp edx, 0xfffffff8
je 0x685520
movsxd rdx, edx
cmp dword [rsp + 0xb0], 7
lea rdx, [rbp + rdx + 8]
ja case.0x685252.0
mov ebp, dword [rsp + 0xb0]
lea r9, [0x00900d30]
movsxd rcx, dword [r9 + rbp*4]
add rcx, r9
jmp rcx
test esi, esi
js 0x685510
shr esi, 3
mov qword [rsp + 0xa0], rcx
mov r15d, r8d
mov edx, esi
mov dword [rsp + 0x34], esi
lea rsi, [rdx*8 + 8]
mov qword [rsp + 0xc0], rdi
mov rdi, rbp
mov qword [rsp + 0x38], rsi
add rsi, r13
mov qword [rsp + 0x28], rsi
lea rsi, [rsp + 0x48]
mov r14, rsi
mov esi, eax
nop word [rax + rax]
mov r8d, dword [rdi]
mov r9d, dword [rdi + 4]
mov rdx, rbx
mov rcx, r14
add r13, 8
add rdi, 8
bswap r8d
bswap r9d
mov ebp, r8d
mov r12d, r9d
mov dword [rsp + 0x48], r8d
mov dword [rsp + 0x4c], r9d
call fcn.00684cf0
mov eax, dword [rsp + 0x48]
mov edx, dword [rsp + 0x4c]
xor eax, esi
xor edx, r15d
mov esi, ebp
mov r15d, r12d
mov ecx, eax
mov byte [r13 - 5], al
shr ecx, 0x18
mov byte [r13 - 8], cl
mov ecx, eax
shr ecx, 0x10
mov byte [r13 - 7], cl
movzx ecx, ah
mov eax, edx
shr eax, 0x18
mov byte [r13 - 6], cl
mov byte [r13 - 4], al
mov eax, edx
shr eax, 0x10
mov byte [r13 - 3], al
movzx eax, dh
mov byte [r13 - 2], al
mov byte [r13 - 1], dl
cmp qword [rsp + 0x28], r13
jne 0x6852a0
mov eax, dword [rsp + 0x34]
mov esi, dword [rsp + 0xb0]
mov r14d, ebp
mov rdi, qword [rsp + 0xc0]
mov rbp, qword [rsp + 0xa0]
neg eax
add rbp, qword [rsp + 0x38]
shl eax, 3
lea esi, [rsi + rax - 0x10]
add eax, dword [rsp + 0x30]
mov dword [rsp + 0xb0], eax
cmp esi, 0xfffffff8
je 0x685418
mov r12d, dword [rbp]
mov eax, dword [rbp + 4]
lea rcx, [rsp + 0x48]
mov rdx, rbx
movsxd rsi, esi
bswap eax
bswap r12d
mov dword [rsp + 0x4c], eax
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x48], r12d
call fcn.00684cf0
xor r14d, dword [rsp + 0x48]
xor r15d, dword [rsp + 0x4c]
lea rax, [r13 + rsi + 8]
cmp dword [rsp + 0xb0], 7
mov r8d, dword [rsp + 0x28]
ja case.0x6853c7.0
mov ebp, dword [rsp + 0xb0]
lea rcx, [0x00900d50]
movsxd rdx, dword [rcx + rbp*4]
add rdx, rcx
jmp rdx
mov ebx, r15d
sub rax, 1
mov byte [rax], bh
mov ecx, r15d
lea rdx, [rax - 1]
shr ecx, 0x10
mov byte [rax - 1], cl
shr r15d, 0x18
lea rax, [rdx - 1]
mov byte [rdx - 1], r15b
mov byte [rax - 1], r14b
lea rcx, [rax - 1]
mov eax, r14d
lea rdx, [rcx - 1]
mov byte [rcx - 1], ah
mov ecx, r14d
lea rax, [rdx - 1]
shr ecx, 0x10
mov byte [rdx - 1], cl
shr r14d, 0x18
mov r15d, r8d
mov byte [rax - 1], r14b
mov r14d, r12d
bswap r14d
bswap r15d
mov dword [rdi], r14d
mov dword [rdi + 4], r15d
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movzx r9d, byte [rdx - 1]
sub rdx, 1
shl r9d, 8
movzx ecx, byte [rdx - 1]
lea r11, [rdx - 1]
shl ecx, 0x10
or r9d, ecx
movzx ecx, byte [r11 - 1]
lea rdx, [r11 - 1]
shl ecx, 0x18
or ecx, r9d
xor r8d, ecx
movzx r9d, byte [rdx - 1]
lea rsi, [rdx - 1]
movzx ecx, byte [rsi - 1]
lea r11, [rsi - 1]
shl ecx, 8
or r9d, ecx
movzx ecx, byte [r11 - 1]
lea rdx, [r11 - 1]
shl ecx, 0x10
or ecx, r9d
movzx edx, byte [rdx - 1]
shl edx, 0x18
or edx, ecx
xor eax, edx
mov rdx, rbx
lea rcx, [rsp + 0x48]
mov dword [rsp + 0x48], eax
mov dword [rsp + 0x4c], r8d
call fcn.006848e0
mov eax, dword [rsp + 0x48]
mov edx, dword [rsp + 0x4c]
mov ebx, eax
mov r8d, edx
mov ecx, eax
mov r9d, eax
shr ebx, 0x18
bswap r8d
mov dword [r13 + 4], r8d
bswap ecx
mov r11d, ebx
mov ebx, edx
mov dword [r13], ecx
mov ecx, edx
shr ebx, 0x18
shr r9d, 0x10
movzx esi, ah
mov ebp, ebx
shr ecx, 0x10
movzx ebx, dh
mov byte [rdi], r11b
mov byte [rdi + 1], r9b
mov byte [rdi + 2], sil
mov byte [rdi + 3], al
mov byte [rdi + 4], bpl
mov byte [rdi + 5], cl
mov byte [rdi + 6], bl
mov byte [rdi + 7], dl
jmp 0x685425
mov edx, esi
jmp 0x68521e
mov r15d, r8d
mov r14d, eax
jmp 0x68535e
mov ebx, eax
mov r9d, eax
mov ecx, r8d
movzx esi, ah
shr ebx, 0x18
shr r9d, 0x10
mov edx, r8d
mov r11d, ebx
mov ebx, r8d
shr ecx, 0x10
shr ebx, 0x18
mov ebp, ebx
mov ebx, r8d
movzx ebx, bh
jmp 0x6854e5
xor r9d, r9d
jmp 0x685443
xor ecx, ecx
jmp 0x685489
mov r11, rdx
xor r9d, r9d
jmp 0x68547a
mov rsi, rdx
xor r9d, r9d
jmp 0x68546c
mov r11, rdx
xor r9d, r9d
jmp 0x685451
mov rdx, rax
jmp 0x6853fd
mov rcx, rax
jmp 0x6853f3
mov rdx, rax
jmp 0x6853df
mov r15d, r8d
mov r14d, r12d
jmp 0x685418