Function at 0x642720
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x18
test rdx, rdx
sete r9b
test r8, r8
sete al
or r9b, al
jne 0x642cf5
test rcx, rcx
je 0x642cf5
mov ebp, dword [r8 + 0x110]
mov eax, ebp
and eax, 0xfffffffd
cmp eax, 0xc
je 0x642769
cmp ebp, 0x10
jne 0x642cf5
movzx eax, byte [rcx]
movzx r12d, byte [rcx + 3]
lea rdi, [0x009624e0]
xor r12d, dword [r8]
movzx r9d, byte [rcx + 7]
shl eax, 0x18
xor r9d, dword [r8 + 4]
movzx r10d, byte [rcx + 8]
xor r12d, eax
movzx eax, byte [rcx + 1]
movzx r11d, byte [rcx + 0xc]
shl r10d, 0x18
shl eax, 0x10
shl r11d, 0x18
xor r12d, eax
movzx eax, byte [rcx + 2]
shl eax, 8
xor r12d, eax
movzx eax, byte [rcx + 4]
mov ebx, r12d
shl eax, 0x18
movzx esi, bh
shr ebx, 0x18
xor r9d, eax
movzx eax, byte [rcx + 5]
mov r13, rsi
movzx esi, r12b
shr r12d, 0x10
shl eax, 0x10
movzx r12d, r12b
xor r9d, eax
movzx eax, byte [rcx + 6]
shl eax, 8
xor r9d, eax
movzx eax, byte [rcx + 0xb]
xor eax, dword [r8 + 8]
xor eax, r10d
movzx r10d, byte [rcx + 9]
movzx r14d, r9b
shl r10d, 0x10
xor eax, r10d
movzx r10d, byte [rcx + 0xa]
shl r10d, 8
xor eax, r10d
movzx r10d, byte [rcx + 0xf]
xor r10d, dword [r8 + 0xc]
xor r10d, r11d
movzx r11d, byte [rcx + 0xd]
movzx ecx, byte [rcx + 0xe]
movzx r15d, al
shl r11d, 0x10
shl ecx, 8
xor r10d, r11d
lea r11, [0x00962ce0]
xor ecx, r10d
lea r10, [0x009620e0]
mov ebx, dword [r11 + rbx*4]
xor ebx, dword [r10 + rsi*4]
lea rsi, [0x009628e0]
xor ebx, dword [rsi + r12*4]
xor ebx, dword [rdi + r13*4]
mov r12d, r9d
mov dword [rsp + 8], ebx
mov ebx, r9d
shr r9d, 0x10
shr r12d, 0x18
movzx r9d, r9b
movzx ebx, bh
mov r12d, dword [r11 + r12*4]
xor r12d, dword [r10 + r14*4]
xor r12d, dword [rsi + r9*4]
mov r9d, eax
xor r12d, dword [rdi + rbx*4]
movzx ebx, ah
shr r9d, 0x18
shr eax, 0x10
mov r14d, dword [r11 + r9*4]
movzx r9d, al
xor r14d, dword [r10 + r15*4]
mov eax, dword [rsi + r9*4]
mov r9d, ecx
shr r9d, 0x18
xor eax, r14d
movzx r14d, cl
xor eax, dword [rdi + rbx*4]
movzx ebx, ch
shr ecx, 0x10
mov r9d, dword [r11 + r9*4]
xor r9d, dword [r10 + r14*4]
xor r12d, eax
movzx ecx, cl
xor r9d, dword [rsi + rcx*4]
xor r9d, dword [rdi + rbx*4]
mov ebx, dword [rsp + 8]
xor eax, r9d
xor r9d, r12d
mov ecx, eax
mov r13d, r9d
xor ebx, r12d
shr r13d, 0x18
xor ecx, ebx
xor r12d, ecx
rol ecx, 0x10
mov eax, r12d
shr r12d, 8
shl eax, 8
and r12d, 0xff00ff
and eax, 0xff00ff00
or eax, r12d
mov r12d, r9d
shl r12d, 0x18
xor r12d, r13d
mov r13d, r9d
shl r13d, 8
and r13d, 0xff0000
shr r9d, 8
xor eax, ecx
xor r12d, r13d
and r9d, 0xff00
mov r13d, dword [r8 + 0x14]
xor ebx, eax
xor r9d, r12d
lea r12, [r8 + 0x20]
xor ecx, r9d
xor r13d, eax
xor r9d, dword [r8 + 0x1c]
xor ecx, ebx
xor eax, r9d
xor ebx, dword [r8 + 0x10]
xor r13d, ecx
xor ecx, dword [r8 + 0x18]
cmp ebp, 2
je 0x642bcf
sub ebp, 4
mov qword [rsp + 0x68], rdx
shr ebp, 1
mov r9d, ebp
lea rbp, [r9 + 2]
mov qword [rsp + 8], r9
mov r9, r12
shl rbp, 5
add rbp, r8
nop word [rax + rax]
mov r14d, ebx
movzx edx, bh
movzx r15d, bl
shr ebx, 0x10
shr r14d, 0x18
movzx ebx, bl
mov r8d, ecx
mov r14d, dword [rdi + r14*4]
xor r14d, dword [rsi + r15*4]
shr r8d, 0x18
mov r15d, r14d
movzx r14d, r13b
xor r15d, dword [r10 + rbx*4]
mov ebx, r13d
shr r13d, 0x10
xor r15d, dword [r11 + rdx*4]
movzx edx, bh
shr ebx, 0x18
movzx r13d, r13b
mov ebx, dword [rdi + rbx*4]
xor ebx, dword [rsi + r14*4]
movzx r14d, cl
xor ebx, dword [r10 + r13*4]
xor ebx, dword [r11 + rdx*4]
movzx edx, ch
shr ecx, 0x10
movzx ecx, cl
mov r8d, dword [rdi + r8*4]
xor r8d, dword [rsi + r14*4]
movzx r14d, al
xor r8d, dword [r10 + rcx*4]
mov ecx, dword [r11 + rdx*4]
movzx edx, ah
xor ecx, r8d
mov r8d, eax
shr eax, 0x10
shr r8d, 0x18
movzx eax, al
xor ebx, ecx
mov r8d, dword [rdi + r8*4]
xor r8d, dword [rsi + r14*4]
xor r8d, dword [r10 + rax*4]
mov eax, ecx
xor r8d, dword [r11 + rdx*4]
mov ecx, r15d
xor eax, r8d
xor r8d, ebx
xor ecx, ebx
mov r14d, r8d
xor eax, ecx
shr r8d, 8
shl r14d, 8
xor ebx, eax
and r8d, 0xff00ff
rol ecx, 0x10
and r14d, 0xff00ff00
mov r13d, ebx
mov r15d, ebx
or r8d, r14d
mov r14d, ebx
shr r14d, 8
shr r15d, 0x18
shl r13d, 0x18
shl ebx, 8
and r14d, 0xff00
xor r13d, r15d
and ebx, 0xff0000
mov r15d, dword [r9 + 4]
xor r13d, eax
xor eax, r8d
xor r8d, dword [r9 + 0xc]
xor ebx, r13d
xor r14d, ebx
xor ecx, r14d
xor r15d, r14d
xor r14d, r8d
xor eax, ecx
xor ecx, dword [r9]
xor r15d, eax
movzx edx, ch
movzx r13d, cl
mov ebx, ecx
shr ecx, 0x10
shr ebx, 0x18
mov r8d, r15d
xor eax, dword [r9 + 8]
movzx ecx, cl
mov ebx, dword [r11 + rbx*4]
shr r8d, 0x18
xor ebx, dword [r10 + r13*4]
movzx r13d, r15b
xor ebx, dword [rsi + rcx*4]
mov ecx, r15d
shr r15d, 0x10
mov r8d, dword [r11 + r8*4]
movzx ecx, ch
xor r8d, dword [r10 + r13*4]
movzx r15d, r15b
xor ebx, dword [rdi + rdx*4]
mov r13d, r8d
movzx edx, ah
xor r13d, dword [rsi + r15*4]
movzx r15d, al
xor r13d, dword [rdi + rcx*4]
mov ecx, eax
shr eax, 0x10
shr ecx, 0x18
movzx eax, al
mov r8d, r14d
mov ecx, dword [r11 + rcx*4]
xor ecx, dword [r10 + r15*4]
movzx r15d, r14b
xor ecx, dword [rsi + rax*4]
mov eax, r14d
shr r14d, 0x10
xor ecx, dword [rdi + rdx*4]
movzx eax, ah
shr r8d, 0x18
movzx r14d, r14b
mov r8d, dword [r11 + r8*4]
xor r8d, dword [r10 + r15*4]
xor r8d, dword [rsi + r14*4]
xor r8d, dword [rdi + rax*4]
mov eax, r13d
xor eax, ecx
xor ecx, r8d
xor ebx, eax
xor r8d, eax
xor ecx, ebx
mov r14d, r8d
xor eax, ecx
shr r14d, 0x18
mov r13d, eax
shr eax, 8
shl r13d, 8
and eax, 0xff00ff
rol ecx, 0x10
and r13d, 0xff00ff00
or eax, r13d
mov r13d, r8d
shl r13d, 0x18
xor eax, ecx
xor r13d, r14d
mov r14d, r8d
shr r8d, 8
xor ebx, eax
shl r14d, 8
and r8d, 0xff00
and r14d, 0xff0000
xor r13d, r14d
xor r8d, r13d
mov r13d, dword [r9 + 0x14]
xor ecx, r8d
xor ecx, ebx
xor ebx, dword [r9 + 0x10]
xor r13d, eax
xor r8d, dword [r9 + 0x1c]
xor r13d, ecx
add r9, 0x20
xor ecx, dword [r9 - 8]
xor eax, r8d
cmp rbp, r9
jne 0x642980
mov r8, qword [rsp + 8]
mov rdx, qword [rsp + 0x68]
add r8, 1
shl r8, 5
add r12, r8
mov r8d, ebx
movzx r9d, bl
movzx ebp, bh
shr ebx, 0x10
shr r8d, 0x18
movzx r9d, byte [rsi + r9*4]
movzx ebx, bl
mov r8d, dword [rdi + r8*4]
shl r8d, 0x18
or r8d, r9d
mov r9d, dword [r11 + rbp*4]
movzx ebp, cl
movzx ebp, byte [rsi + rbp*4]
shl r9d, 8
movzx r9d, r9w
or r8d, r9d
mov r9d, dword [r10 + rbx*4]
movzx ebx, r13b
movzx ebx, byte [rsi + rbx*4]
shl r9d, 8
and r9d, 0xff0000
or r8d, r9d
mov r9d, r13d
shr r9d, 0x18
mov r9d, dword [rdi + r9*4]
shl r9d, 0x18
or r9d, ebx
mov ebx, r13d
shr r13d, 0x10
movzx ebx, bh
movzx r13d, r13b
mov ebx, dword [r11 + rbx*4]
shl ebx, 8
movzx ebx, bx
or r9d, ebx
mov ebx, dword [r10 + r13*4]
shl ebx, 8
and ebx, 0xff0000
or r9d, ebx
mov ebx, ecx
xor r9d, dword [r12 + 4]
shr ebx, 0x18
bswap r9d
mov ebx, dword [rdi + rbx*4]
shl ebx, 0x18
or ebx, ebp
movzx ebp, ch
shr ecx, 0x10
mov ebp, dword [r11 + rbp*4]
movzx ecx, cl
mov ecx, dword [r10 + rcx*4]
shl ebp, 8
shl ecx, 8
movzx ebp, bp
and ecx, 0xff0000
or ebx, ebp
or ebx, ecx
mov ecx, eax
xor ebx, dword [r12 + 8]
shr ecx, 0x18
bswap ebx
mov ecx, dword [rdi + rcx*4]
movzx edi, al
movzx esi, byte [rsi + rdi*4]
shl ecx, 0x18
or ecx, esi
movzx esi, ah
mov r11d, dword [r11 + rsi*4]
shl r11d, 8
shr eax, 0x10
xor r8d, dword [r12]
movzx eax, al
movzx r11d, r11w
bswap r8d
mov eax, dword [r10 + rax*4]
or ecx, r11d
shl eax, 8
and eax, 0xff0000
or eax, ecx
xor eax, dword [r12 + 0xc]
mov dword [rdx], r8d
bswap eax
mov dword [rdx + 4], r9d
mov dword [rdx + 8], ebx
mov dword [rdx + 0xc], eax
add rsp, 0x18
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret