Function at 0x641e00
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 rax, qword [rsp + 0xc0]
mov ebx, dword [rax]
mov ebp, dword [rax + 4]
mov r13, rdx
mov eax, r8d
mov edx, dword [rsp + 0xc8]
mov r12, rcx
sub eax, 8
mov dword [rsp + 0xb0], r8d
mov rdi, r9
mov dword [rsp + 0x2c], eax
test edx, edx
je 0x641f60
test eax, eax
js 0x642220
shr eax, 3
lea rsi, [rsp + 0x48]
lea r15d, [rax + 1]
mov dword [rsp + 0x20], eax
lea rax, [r15*8]
mov r15, r13
mov qword [rsp + 0x30], rax
lea r14, [rcx + rax]
mov eax, ebp
nop dword [rax]
movq xmm1, qword [r12]
movd xmm2, eax
mov rdx, rdi
mov rcx, rsi
movd xmm0, ebx
mov r8d, 1
add r15, 8
add r12, 8
punpckldq xmm0, xmm2
pxor xmm0, xmm1
movq qword [rsp + 0x48], xmm0
call fcn.0063f420
mov ebx, dword [rsp + 0x48]
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 + 0x4c]
mov edx, eax
mov byte [r15 - 4], al
movzx ecx, ah
shr edx, 0x10
mov byte [r15 - 3], cl
mov byte [r15 - 2], dl
mov edx, eax
shr edx, 0x18
mov byte [r15 - 1], dl
cmp r14, r12
jne 0x641e78
mov r14d, dword [rsp + 0x20]
mov ebp, eax
mov eax, dword [rsp + 0xb0]
add r13, qword [rsp + 0x30]
neg r14d
shl r14d, 3
lea ecx, [rax + r14 - 0x10]
add r14d, dword [rsp + 0x2c]
mov dword [rsp + 0xb0], r14d
cmp ecx, 0xfffffff8
je 0x642240
movsxd rcx, dword [rsp + 0xb0]
cmp dword [rsp + 0xb0], 7
lea r10, [r12 + rcx]
ja case.0x641f58.0
mov eax, dword [rsp + 0xb0]
lea r9, [0x0092ba60]
movsxd rcx, dword [r9 + rax*4]
add rcx, r9
jmp rcx
test eax, eax
js 0x642230
shr eax, 3
mov r9, r12
lea rsi, [rsp + 0x48]
mov qword [rsp + 0xa0], r12
lea ecx, [rax + 1]
mov dword [rsp + 0x30], eax
mov r12d, ebp
mov ebp, ebx
lea rax, [rcx*8]
mov rbx, r9
mov qword [rsp + 0x38], rax
add rax, r13
mov qword [rsp + 0x20], rax
nop
mov rdx, qword [rbx]
mov rcx, rsi
xor r8d, r8d
mov r15d, ebp
mov r14d, r12d
mov ebp, dword [rbx]
mov r12d, dword [rbx + 4]
add r13, 8
mov qword [rsp + 0x48], rdx
mov rdx, rdi
add rbx, 8
call fcn.0063f420
mov edx, dword [rsp + 0x48]
mov eax, dword [rsp + 0x4c]
xor edx, r15d
xor eax, r14d
movzx ecx, dh
mov byte [r13 - 8], dl
mov byte [r13 - 7], cl
mov ecx, edx
shr edx, 0x18
mov byte [r13 - 5], dl
shr ecx, 0x10
mov edx, eax
mov byte [r13 - 6], cl
shr edx, 0x10
movzx ecx, ah
mov byte [r13 - 4], al
shr eax, 0x18
mov byte [r13 - 3], cl
mov byte [r13 - 2], dl
mov byte [r13 - 1], al
cmp qword [rsp + 0x20], r13
jne 0x641fa0
mov ecx, dword [rsp + 0x30]
mov eax, dword [rsp + 0xb0]
mov ebx, ebp
mov ebp, r12d
mov r12, qword [rsp + 0xa0]
add r12, qword [rsp + 0x38]
neg ecx
shl ecx, 3
lea r8d, [rax + rcx - 0x10]
add ecx, dword [rsp + 0x2c]
mov dword [rsp + 0xb0], ecx
cmp r8d, 0xfffffff8
je 0x6420ef
mov rcx, qword [r12]
xor r8d, r8d
mov rdx, rdi
mov esi, dword [r12]
mov r14d, dword [r12 + 4]
mov qword [rsp + 0x48], rcx
lea rcx, [rsp + 0x48]
call fcn.0063f420
xor ebx, dword [rsp + 0x48]
xor ebp, dword [rsp + 0x4c]
movsxd rdx, dword [rsp + 0xb0]
cmp dword [rsp + 0xb0], 7
lea rax, [r13 + rdx]
ja case.0x6420ab.0
mov edi, dword [rsp + 0xb0]
lea rcx, [0x0092ba80]
movsxd rdx, dword [rcx + rdi*4]
add rdx, rcx
jmp rdx
mov edx, ebp
sub rax, 1
shr edx, 0x10
mov byte [rax], dl
mov ecx, ebp
sub rax, 1
mov byte [rax], ch
mov byte [rax - 1], bpl
lea rdx, [rax - 1]
mov ecx, ebx
lea rax, [rdx - 1]
shr ecx, 0x18
mov byte [rdx - 1], cl
mov ecx, ebx
lea rdx, [rax - 1]
shr ecx, 0x10
mov byte [rax - 1], cl
mov byte [rdx - 1], bh
lea rax, [rdx - 1]
mov byte [rax - 1], bl
mov ebp, r14d
mov ebx, esi
mov rax, qword [rsp + 0xc0]
mov dword [rax], ebx
mov dword [rax + 4], ebp
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor r8d, r8d
movzx ecx, byte [r10 - 1]
sub r10, 1
shl ecx, 8
or ecx, r8d
movzx r9d, byte [r10 - 1]
lea r8, [r10 - 1]
or ecx, r9d
xor ebp, ecx
lea r10, [r8 - 1]
movzx r8d, byte [r8 - 1]
shl r8d, 0x18
movzx ecx, byte [r10 - 1]
lea r9, [r10 - 1]
shl ecx, 0x10
or r8d, ecx
movzx ecx, byte [r9 - 1]
lea r10, [r9 - 1]
shl ecx, 8
or ecx, r8d
movzx r8d, byte [r10 - 1]
or ecx, r8d
xor ebx, ecx
movd xmm0, ebx
movd xmm3, ebp
lea rcx, [rsp + 0x48]
mov rdx, rdi
mov r8d, 1
punpckldq xmm0, xmm3
movq qword [rsp + 0x48], xmm0
call fcn.0063f420
mov ecx, dword [rsp + 0x4c]
mov ebx, dword [rsp + 0x48]
mov edx, ecx
movzx esi, cl
movzx edi, ch
shr ecx, 0x18
mov r11d, ecx
mov rcx, qword [rsp + 0x48]
movzx eax, bh
mov r8d, ebx
shr r8d, 0x10
movzx r9d, bl
mov r10d, eax
shr ebx, 0x18
mov qword [r13], rcx
shr edx, 0x10
movzx r11d, r11b
movzx eax, dl
movzx edi, dil
movzx ebx, bl
shl r11, 8
movzx r8d, r8b
movzx r10d, r10b
or r11, rax
mov rax, qword [rsp + 0xc0]
shl r11, 8
or r11, rdi
shl r11, 8
or r11, rsi
shl r11, 8
or r11, rbx
shl r11, 8
or r11, r8
shl r11, 8
or r11, r10
shl r11, 8
or r11, r9
mov qword [rax], r11
jmp 0x6420fc
mov ecx, eax
jmp 0x641f20
mov r8d, eax
jmp 0x642047
movzx eax, bh
mov r8d, ebx
movzx esi, bpl
movzx r9d, bl
shr r8d, 0x10
mov r10d, eax
mov eax, ebp
shr ebp, 0x18
movzx edi, ah
shr eax, 0x10
mov r11d, ebp
shr ebx, 0x18
mov edx, eax
jmp 0x6421c0
xor ecx, ecx
jmp 0x64215b
mov r9, r10
xor r8d, r8d
jmp 0x64214c
xor r8d, r8d
jmp 0x64213d
mov r8, r10
jmp 0x642130
xor ecx, ecx
jmp 0x642122
movzx ecx, byte [r10 - 1]
sub r10, 1
shl ecx, 0x10
mov r8d, ecx
jmp 0x642113
mov rdx, rax
jmp 0x6420c8
mov rdx, rax
jmp 0x6420e0
mov ebp, r14d
mov ebx, esi
jmp 0x6420ef