Function at 0x498a50
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x128
mov qword [rsp + 0x170], rcx
mov eax, r8d
mov ecx, dword [rcx + 4]
mov rdi, qword [rsp + 0x170]
mov qword [rsp + 0x188], r9
add rax, qword [rdi + 0xa0]
bswap rax
mov qword [rsp + 0x54], rax
mov eax, ecx
or eax, r8d
je 0x498ac0
cmp ecx, 3
jbe 0x499510
test r8d, r8d
jne 0x499510
mov r8d, 0x10
lea rdx, [rsp + rcx + 0x50]
sub r8, rcx
jmp 0x498acb
lea rdx, [rsp + 0x54]
mov r8d, 0xc
mov rcx, qword [rsp + 0x170]
mov ebx, 0x1e
call fcn.00490860
mov rax, qword [rsp + 0x170]
mov rdi, qword [rsp + 0x170]
mov eax, dword [rax + 8]
lea r14, [rdi + 0xc]
lea rdi, [rsp + 0xa0]
mov rcx, rdi
mov qword [rsp + 0x48], r14
lea eax, [rax + rax*2]
add eax, eax
lea rsi, [rax*4]
sub rbx, rax
mov r8, rsi
lea rdx, [r14 + rbx*4]
call sub.msvcrt.dll_memcpy
mov r8d, ebx
lea rcx, [rdi + rsi]
mov rdx, r14
shl r8, 2
lea rsi, [0x0069f960]
call sub.msvcrt.dll_memcpy
mov ecx, 0xa
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0xac]
mov qword [rsp + 0x30], rax
mov edi, ecx
nop dword [rax + rax]
mov rdx, qword [rsp + 0x28]
mov rax, qword [rsp + 0x10c]
mov r8d, 0x6c
lea r15, [0x006a0160]
mov rcx, qword [rsp + 0x30]
lea r13, [0x0069fd60]
mov qword [rsp + 0x60], rax
mov eax, dword [rsp + 0x114]
mov dword [rsp + 0x68], eax
call sub.msvcrt.dll_memmove
mov ecx, dword [rsp + 0xb0]
mov rax, qword [rsp + 0x60]
mov ebp, dword [rsp + 0x68]
xor ebp, dword [rsp + 0xb8]
mov ebx, ecx
mov dword [rsp + 0x38], ecx
xor ebx, eax
shr rax, 0x20
xor eax, dword [rsp + 0xb4]
mov edx, ebx
mov ebx, dword [rsp + 0xdc]
movzx r10d, dl
xor ebx, ecx
mov rcx, qword [rsp + 0xb4]
mov r11d, dword [rsi + r10*4]
movzx r10d, al
xor qword [rsp + 0xe0], rcx
mov ecx, edx
mov r8d, ebx
mov r10d, dword [rsi + r10*4]
shr ecx, 0x10
mov dword [rsp + 0xdc], ebx
lea rbx, [0x006a0560]
movzx ecx, cl
mov r9d, dword [r15 + rcx*4]
movzx ecx, dh
shr edx, 0x18
mov r14d, dword [rbx + rdx*4]
mov edx, eax
mov ecx, dword [r13 + rcx*4]
shr edx, 0x18
mov edx, dword [rbx + rdx*4]
movzx ebx, ah
shr eax, 0x10
xor r14d, r11d
mov r12d, dword [r13 + rbx*4]
movzx eax, al
xor r14d, r9d
mov ebx, ebp
mov r13d, edx
xor r14d, ecx
xor r13d, r10d
xor r13d, dword [r15 + rax*4]
mov eax, ebp
xor r10d, r11d
shr eax, 0x18
lea r11, [0x006a0560]
xor r13d, r12d
xor ecx, r12d
mov eax, dword [r11 + rax*4]
mov r11d, ebp
shr r11d, 0x10
movzx r11d, r11b
xor edx, eax
mov r15d, dword [r15 + r11*4]
movzx r11d, bpl
movzx ebp, bh
lea rbx, [0x0069fd60]
mov r12d, dword [rsi + r11*4]
xor r9d, r15d
xor r10d, r12d
xor eax, r12d
mov r12d, dword [rsp + 0xac]
xor eax, r15d
xor eax, dword [rbx + rbp*4]
lea rbp, [0x006a0560]
mov r11d, eax
mov eax, r12d
lea r15, [0x006a0160]
mov ebx, r12d
shr eax, 0x18
movzx ebx, bh
mov eax, dword [rbp + rax*4]
mov ebp, r12d
movzx r12d, r12b
shr ebp, 0x10
movzx ebp, bpl
xor edx, eax
mov ebp, dword [r15 + rbp*4]
mov r15, rbx
lea rbx, [0x0069fd60]
mov r15d, dword [rbx + r15*4]
xor r9d, ebp
xor ecx, r15d
xor eax, dword [rsi + r12*4]
xor ebp, eax
mov eax, r14d
xor eax, edx
xor ebp, r15d
mov r15d, r10d
and eax, 0xff000000
shr r15d, 0x18
mov r12d, eax
mov eax, r13d
xor r15d, r14d
xor eax, r9d
movzx r15d, r15b
and eax, 0xff0000
or eax, r12d
mov r12d, r10d
xor r12d, ebp
movzx r12d, r12b
or eax, r12d
mov r12d, r11d
xor r12d, ecx
and r12d, 0xff00
or eax, r12d
mov r12d, edx
shl r12d, 8
mov dword [rsp + 0xa0], eax
xor r12d, r13d
and r12d, 0xff000000
or r12d, r15d
mov r15d, r9d
shl r15d, 8
xor r15d, r11d
and r15d, 0xff0000
or r12d, r15d
mov r15d, ecx
shl r15d, 8
xor r15d, ebp
and r15d, 0xff00
or r12d, r15d
mov r15d, r10d
mov dword [rsp + 0xa4], r12d
mov r12d, edx
shr r15d, 0x10
shl r12d, 0x10
xor r15d, r13d
xor r12d, r11d
movzx r15d, r15b
and r12d, 0xff000000
or r12d, r15d
mov r15d, r9d
shl edx, 0x18
shl r15d, 0x10
shr r10d, 8
xor r15d, ebp
xor r11d, r10d
xor ebp, edx
shr r9d, 8
and r15d, 0xff0000
and ebp, 0xff000000
movzx r11d, r11b
or r12d, r15d
mov r15d, ecx
shr ecx, 8
or ebp, r11d
shr r15d, 0x10
xor r13d, ecx
xor r15d, r14d
xor r14d, r9d
and r13d, 0xff00
and r14d, 0xff0000
and r15d, 0xff00
or r14d, ebp
or r12d, r15d
or r13d, r14d
mov dword [rsp + 0xa8], r12d
mov dword [rsp + 0xac], r13d
dec edi
jne 0x498b58
lea rcx, [rsp + 0xdc]
mov ebx, dword [rsp + 0x38]
mov r15d, eax
mov dword [rsp + 0x30], 0xd
mov qword [rsp + 0x40], rcx
lea rcx, [rsp + 0xd8]
mov rdi, qword [rsp + 0x28]
mov eax, r8d
mov qword [rsp + 0x38], rcx
jmp 0x498e56
mov ebx, dword [rsp + 0xb0]
mov eax, dword [rsp + 0xdc]
xor ebx, r15d
xor eax, r15d
mov r13, qword [rsp + 0xe4]
mov r10, qword [rsp + 0xec]
mov dword [rsp + 0xb0], ebx
vmovdqu xmm0, xmmword [rdi]
mov dword [rsp + 0x28], ebx
mov rbx, qword [rsp + 0x40]
mov dword [rsp + 0xdc], eax
mov r11, qword [rsp + 0xf4]
mov r12, qword [rsp + 0xdc]
mov r8, qword [rsp + 0xfc]
mov r9, qword [rsp + 0x104]
mov rcx, qword [rsp + 0x10c]
mov edx, dword [rsp + 0x114]
vmovups xmmword [rbx], xmm0
vmovdqu xmm1, xmmword [rdi + 0x10]
vmovups xmmword [rbx + 0x10], xmm1
vmovdqu xmm2, xmmword [rdi + 0x20]
vmovups xmmword [rbx + 0x20], xmm2
mov rbp, qword [rdi + 0x30]
mov qword [rbx + 0x30], rbp
mov ebp, dword [rdi + 0x38]
mov dword [rsp + 0xd8], edx
mov edx, eax
shr edx, 0x10
mov dword [rbx + 0x38], ebp
lea rbx, [0x006a0160]
movzx edx, dl
mov qword [rsp + 0xa8], r13
mov qword [rsp + 0xb8], r11
mov r13d, dword [rbx + rdx*4]
lea r11, [0x0069fd60]
movzx edx, ah
mov r15d, dword [r11 + rdx*4]
movzx edx, al
mov qword [rsp + 0xa0], r12
shr eax, 0x18
mov qword [rsp + 0xb0], r10
mov qword [rsp + 0xc0], r8
mov qword [rsp + 0xc8], r9
lea r9, [0x006a0560]
mov qword [rsp + 0xd0], rcx
mov r14d, dword [rsi + rdx*4]
mov ecx, dword [rsp + 0xa4]
mov ebp, dword [r9 + rax*4]
mov r10d, dword [rsp + 0xa8]
vmovdqu xmm4, xmmword [rsp + 0xf0]
mov eax, ecx
movzx r8d, cl
movzx edx, ch
shr ecx, 0x10
shr eax, 0x18
movzx ecx, cl
mov r12d, dword [rsi + r8*4]
mov edx, dword [r11 + rdx*4]
mov eax, dword [r9 + rax*4]
mov r11d, dword [rbx + rcx*4]
mov ecx, r10d
xor ebp, r14d
shr ecx, 0x18
xor ebp, r13d
vmovups xmmword [rsp + 0x70], xmm4
vmovdqu xmm5, xmmword [rsp + 0x100]
mov r8d, eax
mov r9d, dword [r9 + rcx*4]
mov ecx, r10d
xor ebp, r15d
vmovups xmmword [rsp + 0x80], xmm5
xor r8d, r12d
shr ecx, 0x10
xor r11d, r8d
movzx r8d, r10b
movzx ecx, cl
xor eax, r9d
mov r8d, dword [rsi + r8*4]
mov ecx, dword [rbx + rcx*4]
mov ebx, r10d
xor r11d, edx
movzx ebx, bh
xor r9d, r8d
xor r8d, r12d
mov r12d, dword [rsp + 0xac]
mov r10, rbx
lea rbx, [0x0069fd60]
xor r9d, ecx
xor r8d, r14d
xor r9d, dword [rbx + r10*4]
mov r10d, r12d
lea r14, [0x006a0560]
shr r10d, 0x18
lea rbx, [0x006a0160]
mov r10d, dword [r14 + r10*4]
mov r14d, r12d
shr r14d, 0x10
movzx r14d, r14b
xor eax, r10d
mov r14d, dword [rbx + r14*4]
mov ebx, r12d
movzx r12d, r12b
movzx ebx, bh
xor r10d, dword [rsi + r12*4]
mov r12d, r11d
xor ecx, r14d
xor r10d, r14d
xor ecx, r13d
mov r13, rbx
lea rbx, [0x0069fd60]
mov r13d, dword [rbx + r13*4]
xor r12d, ecx
lea rbx, [0x006a0160]
and r12d, 0xff0000
xor edx, r13d
xor r13d, r10d
mov r10d, r9d
xor edx, r15d
lea r15, [0x006a0560]
xor r10d, edx
and r10d, 0xff00
or r12d, r10d
mov r10d, r8d
xor r10d, r13d
movzx r10d, r10b
or r12d, r10d
mov r10d, ebp
xor r10d, eax
and r10d, 0xff000000
or r12d, r10d
mov r10d, ecx
shl r10d, 8
mov dword [rsp + 0xa0], r12d
xor r10d, r9d
and r10d, 0xff0000
mov r14d, r10d
mov r10d, edx
shl r10d, 8
xor r10d, r13d
and r10d, 0xff00
or r10d, r14d
mov r14d, eax
shl r14d, 8
xor r14d, r11d
and r14d, 0xff000000
or r10d, r14d
mov r14d, r8d
shr r14d, 0x18
xor r14d, ebp
movzx r14d, r14b
or r10d, r14d
mov r14d, r8d
mov dword [rsp + 0xa4], r10d
mov r10d, eax
shr r14d, 0x10
shl r10d, 0x10
xor r14d, r11d
xor r10d, r9d
movzx r14d, r14b
and r10d, 0xff000000
or r10d, r14d
mov r14d, ecx
shl r14d, 0x10
xor r14d, r13d
and r14d, 0xff0000
or r10d, r14d
mov r14d, edx
shr r14d, 0x10
shl eax, 0x18
xor dword [rsp + 0xb0], r12d
shr r8d, 8
xor r13d, eax
shr ecx, 8
xor r14d, ebp
xor r9d, r8d
xor ebp, ecx
shr edx, 8
and r13d, 0xff000000
movzx r9d, r9b
xor r11d, edx
and ebp, 0xff0000
and r14d, 0xff00
or r13d, r9d
and r11d, 0xff00
or r10d, r14d
mov rdx, rdi
or ebp, r13d
mov rax, qword [rsp + 0x110]
mov dword [rsp + 0xa8], r10d
mov r8d, 0x40
or r11d, ebp
mov ebp, dword [rsp + 0xe0]
mov dword [rsp + 0xac], r11d
xor ebp, r12d
mov dword [rsp + 0xe0], ebp
vmovdqu xmm3, xmmword [rsp + 0xe0]
vmovups xmmword [rsp + 0x60], xmm3
mov qword [rsp + 0x90], rax
mov rcx, qword [rsp + 0x38]
call sub.msvcrt.dll_memmove
mov rax, qword [rsp + 0x90]
vmovdqu xmm0, xmmword [rsp + 0x60]
lea r9, [0x0069fd60]
vmovdqu xmm2, xmmword [rsp + 0x80]
vmovdqu xmm1, xmmword [rsp + 0x70]
mov qword [rsp + 0xd0], rax
mov eax, ebp
vmovups xmmword [rsp + 0xa0], xmm0
shr eax, 0x10
mov ecx, dword [rsp + 0xa4]
vmovups xmmword [rsp + 0xb0], xmm1
movzx eax, al
mov r13d, dword [rbx + rax*4]
mov eax, ebp
movzx r8d, cl
movzx edx, ch
movzx eax, ah
mov r8d, dword [rsi + r8*4]
mov edx, dword [r9 + rdx*4]
vmovups xmmword [rsp + 0xc0], xmm2
mov r12d, dword [r9 + rax*4]
movzx eax, bpl
shr ebp, 0x18
mov r14d, dword [rsi + rax*4]
mov eax, ecx
mov r11d, dword [r15 + rbp*4]
shr ecx, 0x10
shr eax, 0x18
mov ebp, dword [rsp + 0xa8]
movzx ecx, cl
mov eax, dword [r15 + rax*4]
xor r11d, r14d
xor r11d, r13d
mov r10d, eax
xor r11d, r12d
xor r10d, r8d
xor r10d, dword [rbx + rcx*4]
mov ecx, ebp
shr ecx, 0x18
xor r10d, edx
mov r9d, dword [r15 + rcx*4]
mov ecx, ebp
movzx r15d, bpl
mov r15d, dword [rsi + r15*4]
xor eax, r9d
shr ecx, 0x10
movzx ecx, cl
xor r9d, r15d
xor r8d, r15d
mov ecx, dword [rbx + rcx*4]
mov ebx, ebp
xor r14d, r8d
lea r15, [0x006a0560]
movzx ebp, bh
lea rbx, [0x0069fd60]
xor r9d, ecx
xor r9d, dword [rbx + rbp*4]
mov ebx, dword [rsp + 0x28]
mov r8d, ebx
mov ebp, ebx
shr r8d, 0x18
shr ebp, 0x10
mov r8d, dword [r15 + r8*4]
movzx ebp, bpl
mov r15d, ebx
lea rbx, [0x006a0160]
mov ebp, dword [rbx + rbp*4]
lea rbx, [0x0069fd60]
xor eax, r8d
xor ecx, ebp
xor r13d, ecx
mov ecx, r15d
mov r15d, r10d
movzx ecx, ch
xor r15d, r13d
mov ecx, dword [rbx + rcx*4]
movzx ebx, byte [rsp + 0x28]
and r15d, 0xff0000
xor edx, ecx
xor r8d, dword [rsi + rbx*4]
mov ebx, r13d
xor r12d, edx
mov edx, r9d
xor ebp, r8d
shl ebx, 8
xor edx, r12d
xor ecx, ebp
xor ebx, r9d
mov r8d, r14d
and edx, 0xff00
and ebx, 0xff0000
or r15d, edx
mov edx, r14d
xor edx, ecx
movzx edx, dl
or r15d, edx
mov edx, r11d
xor edx, eax
and edx, 0xff000000
or r15d, edx
mov edx, r12d
shl edx, 8
mov dword [rsp + 0xa0], r15d
xor edx, ecx
and edx, 0xff00
shr r8d, 0x10
or ebx, edx
mov edx, eax
xor r8d, r10d
shl edx, 8
movzx r8d, r8b
xor edx, r10d
and edx, 0xff000000
or ebx, edx
mov edx, r14d
shr r14d, 8
shr edx, 0x18
xor edx, r11d
movzx edx, dl
or ebx, edx
mov edx, eax
shl eax, 0x18
shl edx, 0x10
xor eax, ecx
mov dword [rsp + 0xa4], ebx
xor edx, r9d
xor r9d, r14d
and eax, 0xff000000
and edx, 0xff000000
movzx r9d, r9b
or edx, r8d
mov r8d, r13d
shr r13d, 8
or eax, r9d
shl r8d, 0x10
xor r8d, ecx
and r8d, 0xff0000
or edx, r8d
mov r8d, r12d
shr r8d, 0x10
xor r8d, r11d
xor r11d, r13d
and r8d, 0xff00
and r11d, 0xff0000
or edx, r8d
or eax, r11d
shr r12d, 8
xor r10d, r12d
mov dword [rsp + 0xa8], edx
and r10d, 0xff00
or r10d, eax
mov dword [rsp + 0xac], r10d
dec dword [rsp + 0x30]
jne 0x498e48
mov ecx, edx
mov edx, dword [rsp + 0xb0]
mov eax, r15d
mov r8d, r10d
xor eax, dword [rsp + 0xdc]
xor edx, r15d
bswap ebx
mov rdi, qword [rsp + 0x188]
mov dword [rdi], ebx
bswap ecx
mov dword [rdi + 4], ecx
bswap r8d
mov dword [rdi + 8], r8d
bswap edx
mov dword [rdi + 0xc], edx
bswap eax
mov dword [rdi + 0x10], eax
mov eax, dword [rsp + 0xe0]
bswap eax
mov dword [rdi + 0x14], eax
mov eax, dword [rsp + 0xe4]
bswap eax
cmp qword [rsp + 0x190], 8
mov dword [rdi + 0x18], eax
je 0x499570
mov rdi, qword [rsp + 0x48]
xor eax, eax
mov ecx, 0xb
mov rdx, qword [0x006a0a10]
vmovdqu xmm3, xmmword [0x006a0a00]
rep stosq qword [rdi], rax
mov rax, qword [rsp + 0x170]
mov dword [rdi], 0
mov qword [rax + 0x78], rdx
mov edx, dword [0x006a0a18]
mov qword [rax], 0
mov dword [rax + 0x80], edx
mov dword [rax + 8], 0
mov qword [rax + 0xa0], 0
vmovups xmmword [rax + 0x68], xmm3
add rsp, 0x128
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov eax, 0xff
shrx r8d, eax, r8d
andn edx, r8d, edx
cmp ecx, 4
je 0x4995cb
mov r9d, ecx
mov r8d, 0x10
lea eax, [rcx + 1]
mov byte [rsp + r9 + 0x50], dl
sub r8, r9
lea rdx, [rsp + r9 + 0x50]
cmp eax, 3
ja 0x498acb
mov byte [rsp + rax + 0x50], 0
lea eax, [rcx + 2]
cmp ecx, 2
je 0x498acb
mov byte [rsp + rax + 0x50], 0
lea eax, [rcx + 3]
cmp ecx, 1
jne 0x4995e6
jmp 0x498acb
mov eax, dword [rsp + 0xe8]
bswap eax
mov dword [rdi + 0x1c], eax
mov rdi, qword [rsp + 0x48]
xor eax, eax
mov ecx, 0xb
vmovdqu xmm4, xmmword [0x006a09e0]
vmovdqu xmm5, xmmword [0x006a09f0]
rep stosq qword [rdi], rax
mov rax, qword [rsp + 0x170]
mov qword [rax], 0
mov dword [rax + 8], 0
mov qword [rax + 0xa0], 0
vmovups xmmword [rax + 0x64], xmm4
vmovups xmmword [rax + 0x74], xmm5
jmp 0x4994f3
xor eax, eax
mov byte [rsp + 0x50], dl
mov r8d, 0x10
lea rdx, [rsp + 0x50]
mov word [rsp + 0x51], ax
mov eax, 3
mov ecx, eax
mov byte [rsp + rcx + 0x50], 0
cmp eax, 2
jne 0x498acb
mov byte [rsp + 0x53], 0
jmp 0x498acb