Function at 0x49a230
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 rsi, qword [rsp + 0x170]
mov eax, r8d
mov ecx, dword [rcx + 4]
mov qword [rsp + 0x188], r9
add rax, qword [rsi + 0xa0]
bswap rax
mov qword [rsp + 0x54], rax
mov eax, ecx
or eax, r8d
je 0x49a2a0
cmp ecx, 3
jbe 0x49ad10
test r8d, r8d
jne 0x49ad10
mov r8d, 0x10
lea rdx, [rsp + rcx + 0x50]
sub r8, rcx
jmp 0x49a2ab
lea rdx, [rsp + 0x54]
mov r8d, 0xc
mov rcx, qword [rsp + 0x170]
mov ebx, 0x1e
lea rbp, [rsp + 0xa0]
call fcn.00491d30
mov rax, qword [rsp + 0x170]
mov rcx, qword [rsp + 0x170]
mov eax, dword [rax + 8]
lea rdi, [rcx + 0xc]
mov qword [rsp + 0x48], rdi
lea eax, [rax + rax*2]
add eax, eax
lea rsi, [rax*4]
sub rbx, rax
lea rdx, [rcx + rbx*4 + 0xc]
mov r8, rsi
mov rcx, rbp
call sub.msvcrt.dll_memcpy
mov r8d, ebx
lea rcx, [rbp + rsi]
mov rdx, rdi
shl r8, 2
call sub.msvcrt.dll_memcpy
lea rax, [rsp + 0xac]
mov dword [rsp + 0x34], 0xa
mov qword [rsp + 0x28], rbp
mov qword [rsp + 0x38], rax
nop
mov rax, qword [rsp + 0x10c]
mov r8d, 0x6c
lea r15, [0x006a0fa0]
lea rbp, [0x006a0ba0]
mov rdx, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x38]
lea r12, [0x006a07a0]
mov qword [rsp + 0x60], rax
mov eax, dword [rsp + 0x114]
mov dword [rsp + 0x68], eax
call sub.msvcrt.dll_memmove
mov r10d, dword [rsp + 0xb0]
mov rax, qword [rsp + 0x60]
mov rcx, qword [rsp + 0xb4]
xor qword [rsp + 0xe0], rcx
mov ebx, dword [rsp + 0x68]
xor ebx, dword [rsp + 0xb8]
mov edx, r10d
mov r14d, dword [rsp + 0xdc]
xor edx, eax
shr rax, 0x20
xor eax, dword [rsp + 0xb4]
mov ecx, edx
movzx edi, dh
movzx r9d, dl
shr ecx, 0x10
mov r8d, dword [rbp + rdi*4]
shr edx, 0x18
lea rdi, [0x006a13a0]
movzx ecx, cl
mov esi, dword [r12 + r9*4]
mov r13d, dword [rdi + rdx*4]
xor r14d, r10d
mov ecx, dword [r15 + rcx*4]
mov dword [rsp + 0xdc], r14d
movzx r9d, al
mov r9d, dword [r12 + r9*4]
xor r13d, esi
mov edx, ecx
xor edx, r8d
xor r13d, edx
mov edx, eax
shr edx, 0x18
mov edx, dword [rdi + rdx*4]
movzx edi, ah
shr eax, 0x10
mov r11d, dword [rbp + rdi*4]
movzx eax, al
lea rdi, [0x006a13a0]
xor r8d, r11d
xor r11d, dword [r15 + rax*4]
mov eax, edx
xor eax, r9d
xor r9d, esi
mov esi, ebx
shr esi, 0x10
movzx esi, sil
xor r11d, eax
mov eax, ebx
shr eax, 0x18
mov eax, dword [rdi + rax*4]
mov edi, dword [r15 + rsi*4]
movzx esi, bl
movzx ebx, bh
mov esi, dword [r12 + rsi*4]
xor ecx, edi
xor edi, dword [rbp + rbx*4]
xor edx, eax
xor eax, esi
xor r9d, esi
mov ebx, edi
lea rdi, [0x006a13a0]
xor ebx, eax
mov eax, dword [rsp + 0xac]
mov esi, eax
movzx ebp, ah
shr esi, 0x18
mov r12, rbp
lea rbp, [0x006a0ba0]
mov esi, dword [rdi + rsi*4]
mov edi, eax
mov r12d, dword [rbp + r12*4]
movzx eax, al
shr edi, 0x10
movzx edi, dil
mov edi, dword [r15 + rdi*4]
lea r15, [0x006a07a0]
xor r8d, r12d
xor edx, esi
xor ecx, edi
xor esi, dword [r15 + rax*4]
mov eax, r13d
xor edi, r12d
xor eax, edx
mov r12d, r9d
mov r15d, r8d
and eax, 0xff000000
shl r15d, 8
xor esi, edi
mov edi, eax
mov eax, r11d
xor eax, ecx
xor r12d, esi
xor r15d, esi
and eax, 0xff0000
movzx r12d, r12b
and r15d, 0xff00
or eax, edi
mov edi, ebx
xor edi, r8d
and edi, 0xff00
or edi, r12d
mov r12d, r9d
or eax, edi
mov edi, edx
shr r12d, 0x18
shl edi, 8
xor r12d, r13d
mov dword [rsp + 0xa0], eax
xor edi, r11d
movzx r12d, r12b
and edi, 0xff000000
or edi, r12d
mov r12d, ecx
shl r12d, 8
xor r12d, ebx
and r12d, 0xff0000
or r12d, r15d
mov r15d, r8d
or r12d, edi
mov edi, edx
mov dword [rsp + 0xa4], r12d
mov r12d, r9d
shl edi, 0x10
shr r12d, 0x10
xor edi, ebx
xor r12d, r11d
and edi, 0xff000000
movzx r12d, r12b
or edi, r12d
mov r12d, ecx
shr r15d, 0x10
shl edx, 0x18
shl r12d, 0x10
shr r9d, 8
shr ecx, 8
shr r8d, 8
xor r12d, esi
xor r15d, r13d
xor esi, edx
xor ebx, r9d
xor r13d, ecx
xor r11d, r8d
and r12d, 0xff0000
and r15d, 0xff00
and esi, 0xff000000
and r13d, 0xff0000
and r11d, 0xff00
movzx ebx, bl
or r12d, r15d
or esi, ebx
or r11d, r13d
or r12d, edi
or esi, r11d
mov dword [rsp + 0xa8], r12d
mov dword [rsp + 0xac], esi
dec dword [rsp + 0x34]
jne 0x49a330
lea rsi, [rsp + 0xd8]
lea rdi, [rsp + 0xdc]
mov dword [rsp + 0x34], 0xd
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x40], rdi
mov esi, r10d
jmp 0x49a5ff
mov esi, dword [rsp + 0xb0]
mov r14d, dword [rsp + 0xdc]
mov rdi, qword [rsp + 0x28]
xor esi, eax
xor eax, r14d
mov r14, qword [rsp + 0x40]
mov dword [rsp + 0xb0], esi
mov dword [rsp + 0xdc], eax
mov r13, qword [rsp + 0xe4]
mov r12, qword [rsp + 0xdc]
lea rbp, [0x006a13a0]
mov r10, qword [rsp + 0xec]
mov r8, qword [rsp + 0xfc]
vmovups xmm0, xmmword [rdi]
mov r9, qword [rsp + 0x104]
mov rcx, qword [rsp + 0x10c]
mov edx, dword [rsp + 0x114]
mov r11, qword [rsp + 0xf4]
vmovups xmmword [r14], xmm0
vmovups xmm1, xmmword [rdi + 0x10]
vmovups xmmword [r14 + 0x10], xmm1
vmovups xmm2, xmmword [rdi + 0x20]
vmovups xmmword [r14 + 0x20], xmm2
mov rbx, qword [rdi + 0x30]
mov qword [r14 + 0x30], rbx
mov ebx, dword [rdi + 0x38]
mov dword [rsp + 0xd8], edx
mov edx, eax
shr edx, 0x10
lea rdi, [0x006a0ba0]
mov qword [rsp + 0xb0], r10
lea r10, [0x006a07a0]
movzx edx, dl
mov qword [rsp + 0xa0], r12
mov qword [rsp + 0xa8], r13
mov qword [rsp + 0xc0], r8
mov qword [rsp + 0xc8], r9
mov dword [r14 + 0x38], ebx
lea r14, [0x006a0fa0]
mov qword [rsp + 0xd0], rcx
mov qword [rsp + 0xb8], r11
mov r9, r14
mov ebx, dword [r14 + rdx*4]
movzx edx, ah
mov r15d, dword [rdi + rdx*4]
movzx edx, al
shr eax, 0x18
mov r11d, dword [r10 + rdx*4]
mov r13d, dword [rbp + rax*4]
vmovups xmm4, xmmword [rsp + 0xf0]
vmovups xmm5, xmmword [rsp + 0x100]
mov eax, ebx
xor eax, r15d
xor r13d, r11d
xor r13d, eax
mov eax, dword [rsp + 0xa4]
movzx ecx, ah
mov edx, eax
vmovups xmmword [rsp + 0x70], xmm4
vmovups xmmword [rsp + 0x80], xmm5
shr edx, 0x18
mov r8d, dword [rdi + rcx*4]
movzx ecx, al
shr eax, 0x10
mov edx, dword [rbp + rdx*4]
movzx eax, al
mov r10d, dword [r10 + rcx*4]
mov r12d, dword [r14 + rax*4]
mov eax, edx
xor eax, r10d
xor r12d, r8d
xor r12d, eax
mov eax, dword [rsp + 0xa8]
mov ecx, eax
shr ecx, 0x18
mov r14d, dword [rbp + rcx*4]
mov ecx, eax
lea rbp, [0x006a07a0]
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [r9 + rcx*4]
movzx r9d, al
movzx eax, ah
mov r9d, dword [rbp + r9*4]
mov ebp, dword [rdi + rax*4]
xor edx, r14d
lea rdi, [0x006a0fa0]
mov eax, dword [rsp + 0xac]
xor r14d, r9d
xor r9d, r10d
xor ebp, ecx
mov r10d, eax
xor r9d, r11d
lea r11, [0x006a13a0]
xor r14d, ebp
shr r10d, 0x18
lea rbp, [0x006a07a0]
mov r10d, dword [r11 + r10*4]
mov r11d, eax
shr r11d, 0x10
movzx r11d, r11b
mov r11d, dword [rdi + r11*4]
lea rdi, [0x006a0ba0]
xor edx, r10d
xor ecx, r11d
xor ecx, ebx
movzx ebx, ah
movzx eax, al
xor r10d, dword [rbp + rax*4]
mov ebx, dword [rdi + rbx*4]
mov eax, r13d
xor eax, edx
and eax, 0xff000000
xor r11d, ebx
xor r8d, ebx
mov ebx, r9d
xor r10d, r11d
xor r8d, r15d
xor ebx, r10d
mov r15d, r8d
movzx r11d, bl
shl r15d, 8
or eax, r11d
mov ebx, eax
mov eax, r12d
xor eax, ecx
mov r11d, eax
mov eax, r14d
xor eax, r8d
and r11d, 0xff0000
and eax, 0xff00
or eax, r11d
or eax, ebx
mov ebx, ecx
shl ebx, 8
mov dword [rsp + 0xa0], eax
mov r11d, ebx
xor r11d, r14d
mov ebx, r11d
mov r11d, r15d
mov r15d, r9d
xor r11d, r10d
and ebx, 0xff0000
shr r15d, 0x18
and r11d, 0xff00
xor r15d, r13d
or r11d, ebx
mov ebx, edx
movzx r15d, r15b
shl ebx, 8
xor ebx, r12d
and ebx, 0xff000000
or ebx, r15d
mov r15d, r8d
or ebx, r11d
shr r15d, 0x10
mov dword [rsp + 0xa4], ebx
mov ebx, edx
shl ebx, 0x10
mov r11d, ebx
mov ebx, r9d
shr ebx, 0x10
xor r11d, r14d
xor ebx, r12d
and r11d, 0xff000000
movzx ebx, bl
or r11d, ebx
mov ebx, ecx
shl ebx, 0x10
xor ebx, r10d
and ebx, 0xff0000
xor r15d, r13d
xor dword [rsp + 0xb0], eax
xor eax, dword [rsp + 0xe0]
and r15d, 0xff00
shr r9d, 8
or ebx, r15d
shl edx, 0x18
shr ecx, 8
shr r8d, 8
or ebx, r11d
xor r14d, r9d
xor r10d, edx
xor r13d, ecx
xor r12d, r8d
mov dword [rsp + 0xa8], ebx
and r13d, 0xff0000
and r10d, 0xff000000
mov dword [rsp + 0xe0], eax
vmovups xmm3, xmmword [rsp + 0xe0]
mov ebx, eax
movzx r14d, r14b
mov rax, qword [rsp + 0x110]
and r12d, 0xff00
or r10d, r14d
mov r8d, 0x40
or r12d, r13d
lea r14, [0x006a0fa0]
or r10d, r12d
mov dword [rsp + 0xac], r10d
vmovups xmmword [rsp + 0x60], xmm3
mov qword [rsp + 0x90], rax
mov rdx, qword [rsp + 0x28]
mov rcx, qword [rsp + 0x38]
call sub.msvcrt.dll_memmove
mov rax, qword [rsp + 0x90]
mov r9, rbp
vmovups xmm0, xmmword [rsp + 0x60]
vmovups xmm1, xmmword [rsp + 0x70]
vmovups xmm2, xmmword [rsp + 0x80]
mov qword [rsp + 0xd0], rax
mov eax, ebx
shr eax, 0x10
movzx eax, al
mov r11d, dword [r14 + rax*4]
movzx eax, bh
mov r10d, dword [rdi + rax*4]
movzx eax, bl
mov r15d, dword [rbp + rax*4]
mov eax, ebx
lea rbp, [0x006a13a0]
vmovups xmmword [rsp + 0xa0], xmm0
shr eax, 0x18
mov rbx, r14
vmovups xmmword [rsp + 0xb0], xmm1
vmovups xmmword [rsp + 0xc0], xmm2
mov r13d, dword [rbp + rax*4]
mov eax, r11d
xor eax, r10d
xor r13d, r15d
xor r13d, eax
mov eax, dword [rsp + 0xa4]
movzx ecx, ah
mov edx, eax
mov r8d, dword [rdi + rcx*4]
shr edx, 0x18
movzx ecx, al
shr eax, 0x10
mov edx, dword [rbp + rdx*4]
movzx eax, al
mov r9d, dword [r9 + rcx*4]
mov r12d, dword [r14 + rax*4]
mov eax, edx
xor eax, r9d
xor r12d, r8d
xor r12d, eax
mov eax, dword [rsp + 0xa8]
mov ecx, eax
shr ecx, 0x18
mov r14d, dword [rbp + rcx*4]
mov ecx, eax
lea rbp, [0x006a07a0]
xor edx, r14d
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [rbx + rcx*4]
movzx ebx, al
movzx eax, ah
mov ebx, dword [rbp + rbx*4]
mov ebp, dword [rdi + rax*4]
mov eax, esi
shr eax, 0x18
xor r14d, ebx
xor ebx, r9d
mov r9d, esi
xor ebp, ecx
xor ebx, r15d
shr r9d, 0x10
lea r15, [0x006a13a0]
xor r14d, ebp
mov r15d, dword [r15 + rax*4]
movzx r9d, r9b
lea rax, [0x006a0fa0]
mov r9d, dword [rax + r9*4]
mov eax, esi
movzx esi, sil
movzx eax, ah
xor edx, r15d
xor ecx, r9d
xor ecx, r11d
mov r11d, dword [rdi + rax*4]
lea rdi, [0x006a07a0]
mov eax, dword [rdi + rsi*4]
xor r9d, r11d
xor r8d, r11d
mov r11d, edx
xor eax, r15d
xor r8d, r10d
mov r10d, ebx
shl r11d, 8
mov esi, eax
mov eax, r13d
xor r11d, r12d
xor esi, r9d
xor eax, edx
and r11d, 0xff000000
xor r10d, esi
and eax, 0xff000000
movzx r10d, r10b
or eax, r10d
mov r10d, r14d
mov r9d, eax
mov eax, r12d
xor r10d, r8d
xor eax, ecx
and r10d, 0xff00
and eax, 0xff0000
or eax, r10d
mov r10d, ebx
shr r10d, 0x18
or eax, r9d
xor r10d, r13d
mov dword [rsp + 0xa0], eax
movzx r9d, r10b
mov r10d, r11d
mov r11d, r8d
or r10d, r9d
mov r9d, ecx
shl r11d, 8
shl r9d, 8
xor r11d, esi
xor r9d, r14d
and r11d, 0xff00
and r9d, 0xff0000
or r11d, r9d
or r11d, r10d
mov r10d, ecx
shr ecx, 8
shl r10d, 0x10
mov dword [rsp + 0xa4], r11d
xor r10d, esi
mov r15d, r10d
mov r10d, r8d
shr r10d, 0x10
and r15d, 0xff0000
xor r10d, r13d
xor r13d, ecx
mov r9d, r10d
and r13d, 0xff0000
and r9d, 0xff00
or r15d, r9d
mov r9d, edx
shl edx, 0x18
mov r10d, r15d
mov r15d, ebx
shl r9d, 0x10
shr ebx, 8
shr r15d, 0x10
xor r9d, r14d
xor esi, edx
xor r14d, ebx
xor r15d, r12d
and r9d, 0xff000000
and esi, 0xff000000
movzx r14d, r14b
movzx r15d, r15b
or esi, r14d
or r9d, r15d
or r9d, r10d
shr r8d, 8
xor r12d, r8d
mov dword [rsp + 0xa8], r9d
and r12d, 0xff00
or r12d, r13d
or esi, r12d
mov dword [rsp + 0xac], esi
dec dword [rsp + 0x34]
jne 0x49a5f0
mov edx, dword [rsp + 0xb0]
mov r10d, r9d
mov r9d, esi
xor edx, eax
xor eax, dword [rsp + 0xdc]
bswap r11d
mov rsi, qword [rsp + 0x188]
mov dword [rsi], r11d
bswap r10d
mov dword [rsi + 4], r10d
bswap r9d
mov dword [rsi + 8], r9d
bswap edx
mov dword [rsi + 0xc], edx
bswap eax
mov dword [rsi + 0x10], eax
mov eax, dword [rsp + 0xe0]
bswap eax
mov dword [rsi + 0x14], eax
mov eax, dword [rsp + 0xe4]
bswap eax
cmp qword [rsp + 0x190], 8
mov dword [rsi + 0x18], eax
je 0x49ad80
mov rax, qword [rsp + 0x170]
vmovups xmm3, xmmword [0x006a1840]
mov qword [rax + 0xc], 0
mov rax, qword [rsp + 0x170]
mov qword [rax + 0x60], 0
lea rdx, [rax + 0x68]
mov rax, qword [rsp + 0x170]
mov rcx, qword [rsp + 0x48]
lea rdi, [rax + 0x14]
xor eax, eax
and rdi, 0xfffffffffffffff8
sub rcx, rdi
add ecx, 0x5c
shr ecx, 3
rep stosq qword [rdi], rax
mov rax, qword [rsp + 0x170]
vmovups xmmword [rax + 0x68], xmm3
mov rax, qword [0x006a1850]
mov qword [rdx + 0x10], rax
mov eax, dword [0x006a1858]
mov dword [rdx + 0x18], eax
mov rax, qword [rsp + 0x170]
mov qword [rax], 0
mov dword [rax + 8], 0
mov qword [rax + 0xa0], 0
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 0x49ae0f
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 0x49a2ab
mov byte [rsp + rax + 0x50], 0
lea eax, [rcx + 2]
cmp ecx, 2
je 0x49a2ab
mov byte [rsp + rax + 0x50], 0
lea eax, [rcx + 3]
cmp ecx, 1
jne 0x49ae2a
jmp 0x49a2ab
mov eax, dword [rsp + 0xe8]
bswap eax
mov dword [rsi + 0x1c], eax
mov rax, qword [rsp + 0x170]
vmovups xmm4, xmmword [0x006a1820]
vmovups xmm5, xmmword [0x006a1830]
mov qword [rax + 0xc], 0
mov rax, qword [rsp + 0x170]
mov qword [rax + 0x5c], 0
mov rax, qword [rsp + 0x170]
mov rcx, qword [rsp + 0x48]
lea rdi, [rax + 0x14]
xor eax, eax
and rdi, 0xfffffffffffffff8
sub rcx, rdi
add ecx, 0x58
shr ecx, 3
rep stosq qword [rdi], rax
mov rax, qword [rsp + 0x170]
vmovups xmmword [rax + 0x64], xmm4
vmovups xmmword [rax + 0x74], xmm5
mov qword [rax], 0
mov dword [rax + 8], 0
mov qword [rax + 0xa0], 0
jmp 0x49acf6
mov byte [rsp + 0x50], dl
mov word [rsp + 0x51], 0
lea rdx, [rsp + 0x50]
mov r8d, 0x10
mov eax, 3
mov ecx, eax
mov byte [rsp + rcx + 0x50], 0
cmp eax, 2
jne 0x49a2ab
mov byte [rsp + 0x53], 0
jmp 0x49a2ab