Function at 0x644f90
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 + 0xb0]
mov ebx, dword [rax]
mov r10d, dword [rax + 4]
mov rbp, rcx
mov ecx, dword [rsp + 0xb8]
mov r11, rdx
mov edi, r8d
lea eax, [r8 - 8]
mov rdx, r9
mov dword [rsp + 0x20], eax
test ecx, ecx
je 0x6450c0
test eax, eax
js 0x645350
shr eax, 3
lea rsi, [rsp + 0x38]
lea r15d, [rax + 1]
mov r14d, eax
mov eax, r10d
lea r13, [r15*8]
mov r15, r11
lea r12, [rbp + r13]
nop dword [rax + rax]
movd xmm2, eax
movd xmm0, ebx
mov rcx, rsi
add r15, 8
movq xmm1, qword [rbp]
punpckldq xmm0, xmm2
add rbp, 8
pxor xmm0, xmm1
movq qword [rsp + 0x38], xmm0
call sym.RC5_32_encrypt
mov ebx, dword [rsp + 0x38]
movzx eax, bh
mov byte [r15 - 8], bl
mov byte [r15 - 7], al
mov eax, ebx
shr eax, 0x10
mov byte [r15 - 6], al
mov eax, ebx
shr eax, 0x18
mov byte [r15 - 5], al
mov eax, dword [rsp + 0x3c]
movzx ecx, ah
mov byte [r15 - 4], al
mov byte [r15 - 3], cl
mov ecx, eax
shr ecx, 0x10
mov byte [r15 - 2], cl
mov ecx, eax
shr ecx, 0x18
mov byte [r15 - 1], cl
cmp r12, rbp
jne 0x645000
neg r14d
mov r10d, eax
add r11, r13
shl r14d, 3
lea ecx, [rdi + r14 - 0x10]
mov edi, dword [rsp + 0x20]
add edi, r14d
cmp ecx, 0xfffffff8
je 0x645370
movsxd rcx, edi
lea rax, [rbp + rcx]
cmp edi, 7
ja case.0x6450b5.0
lea r9, [0x007c75a0]
mov edi, edi
movsxd rcx, dword [r9 + rdi*4]
add rcx, r9
jmp rcx
test eax, eax
js 0x645360
shr eax, 3
mov qword [rsp + 0xa8], r9
lea rsi, [rsp + 0x38]
lea r14d, [rax + 1]
mov dword [rsp + 0x24], eax
lea rax, [r14*8]
mov r14, rbp
mov qword [rsp + 0x28], rax
lea r12, [r11 + rax]
nop dword [rax]
mov rax, qword [r14]
mov rcx, rsi
mov r15d, ebx
mov r13d, r10d
mov ebx, dword [r14]
mov r10d, dword [r14 + 4]
add r11, 8
add r14, 8
mov rdx, qword [rsp + 0xa8]
mov qword [rsp + 0x38], rax
call sym.RC5_32_decrypt
mov ecx, dword [rsp + 0x38]
mov eax, dword [rsp + 0x3c]
xor ecx, r15d
xor eax, r13d
movzx edx, ch
mov byte [r11 - 8], cl
mov r8d, ecx
shr ecx, 0x18
mov byte [r11 - 7], dl
shr r8d, 0x10
movzx edx, ah
mov byte [r11 - 5], cl
mov ecx, eax
mov byte [r11 - 4], al
shr ecx, 0x10
shr eax, 0x18
mov byte [r11 - 6], r8b
mov byte [r11 - 3], dl
mov byte [r11 - 2], cl
mov byte [r11 - 1], al
cmp r12, r11
jne 0x6450f8
mov ecx, dword [rsp + 0x24]
mov rdx, qword [rsp + 0xa8]
add rbp, qword [rsp + 0x28]
neg ecx
shl ecx, 3
lea r8d, [rdi + rcx - 0x10]
mov edi, dword [rsp + 0x20]
add edi, ecx
cmp r8d, 0xfffffff8
je 0x64522a
mov rax, qword [rbp]
lea rcx, [rsp + 0x38]
mov esi, dword [rbp]
mov r12d, dword [rbp + 4]
mov qword [rsp + 0x38], rax
call sym.RC5_32_decrypt
movsxd rax, edi
xor ebx, dword [rsp + 0x38]
xor r10d, dword [rsp + 0x3c]
add r11, rax
cmp edi, 7
ja case.0x6451dd.0
lea rdx, [0x007c75c0]
mov edi, edi
movsxd rax, dword [rdx + rdi*4]
add rax, rdx
jmp rax
mov eax, r10d
sub r11, 1
shr eax, 0x10
mov byte [r11], al
mov eax, r10d
sub r11, 1
movzx eax, ah
mov byte [r11], al
mov byte [r11 - 1], r10b
lea rax, [r11 - 1]
mov edx, ebx
lea r11, [rax - 1]
shr edx, 0x18
mov byte [rax - 1], dl
mov edx, ebx
lea rax, [r11 - 1]
shr edx, 0x10
mov byte [r11 - 1], dl
mov byte [rax - 1], bh
lea r11, [rax - 1]
mov byte [r11 - 1], bl
mov r10d, r12d
mov ebx, esi
mov rax, qword [rsp + 0xb0]
mov dword [rax], ebx
mov dword [rax + 4], r10d
add rsp, 0x48
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor r8d, r8d
movzx ecx, byte [rax - 1]
sub rax, 1
shl ecx, 8
or ecx, r8d
lea r8, [rax - 1]
movzx eax, byte [rax - 1]
or ecx, eax
xor r10d, ecx
lea rax, [r8 - 1]
movzx r8d, byte [r8 - 1]
shl r8d, 0x18
movzx ecx, byte [rax - 1]
lea r9, [rax - 1]
shl ecx, 0x10
or r8d, ecx
movzx ecx, byte [r9 - 1]
lea rax, [r9 - 1]
shl ecx, 8
or ecx, r8d
movzx eax, byte [rax - 1]
or ecx, eax
xor ebx, ecx
movd xmm0, ebx
movd xmm3, r10d
lea rcx, [rsp + 0x38]
punpckldq xmm0, xmm3
movq qword [rsp + 0x38], xmm0
call sym.RC5_32_encrypt
mov ebx, dword [rsp + 0x38]
mov edx, dword [rsp + 0x3c]
movzx eax, bh
movzx esi, dl
movzx edi, dh
mov ecx, ebx
mov r9d, eax
mov eax, edx
shr edx, 0x18
movzx r8d, bl
shr ecx, 0x10
mov r10d, edx
mov rdx, qword [rsp + 0x38]
shr ebx, 0x18
shr eax, 0x10
mov qword [r11], rdx
movzx r10d, r10b
movzx eax, al
movzx edi, dil
movzx ebx, bl
shl r10, 8
movzx ecx, cl
movzx r9d, r9b
or r10, rax
mov rax, qword [rsp + 0xb0]
shl r10, 8
or r10, rdi
shl r10, 8
or r10, rsi
shl r10, 8
or r10, rbx
shl r10, 8
or r10, rcx
shl r10, 8
or r10, r9
shl r10, 8
or r10, r8
mov qword [rax], r10
jmp 0x645238
mov ecx, eax
jmp 0x64508b
mov r8d, eax
jmp 0x645191
movzx eax, bh
mov ecx, ebx
movzx r8d, bl
movzx esi, r10b
shr ecx, 0x10
mov r9d, eax
mov eax, r10d
shr ebx, 0x18
movzx edi, ah
shr r10d, 0x18
shr eax, 0x10
jmp 0x6452f0
xor ecx, ecx
jmp 0x645298
mov r9, rax
xor r8d, r8d
jmp 0x645289
xor r8d, r8d
jmp 0x64527b
mov r8, rax
jmp 0x64526e
xor ecx, ecx
jmp 0x645261
movzx ecx, byte [rax - 1]
sub rax, 1
shl ecx, 0x10
mov r8d, ecx
jmp 0x645253
mov rax, r11
jmp 0x645201
mov rax, r11
jmp 0x64521a
mov r10d, r12d
mov ebx, esi
jmp 0x64522a