Function at 0x4a6180
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 qword [rsp + 0x188], r9
mov rdi, qword [rsp + 0x170]
mov ecx, dword [rcx + 4]
add rax, qword [rdi + 0xa0]
bswap rax
mov qword [rsp + 0x54], rax
mov eax, ecx
or eax, r8d
je 0x4a61f0
cmp ecx, 3
jbe 0x4a6c90
test r8d, r8d
jne 0x4a6c90
mov r8d, 0x10
sub r8, rcx
lea rdx, [rsp + rcx + 0x50]
jmp 0x4a61fb
lea rdx, [rsp + 0x54]
mov r8d, 0xc
mov rcx, qword [rsp + 0x170]
mov ebx, 0x1e
call fcn.0049dfd0
mov rax, qword [rsp + 0x170]
mov rdi, qword [rsp + 0x170]
mov eax, dword [rax + 8]
lea r15, [rdi + 0xc]
lea eax, [rax + rax*2]
add eax, eax
lea rsi, [rax*4]
sub rbx, rax
lea rdi, [rsp + 0xa0]
lea rdx, [r15 + rbx*4]
mov r8, rsi
mov rcx, rdi
mov qword [rsp + 0x48], r15
call sub.msvcrt.dll_memcpy
mov r8d, ebx
mov rdx, r15
lea rcx, [rdi + rsi]
shl r8, 2
call sub.msvcrt.dll_memcpy
lea rax, [rsp + 0xac]
mov dword [rsp + 0x34], 0xa
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x28], rdi
lea r15, [0x006fdea0]
nop dword [rax]
mov rax, qword [rsp + 0x10c]
mov rdx, qword [rsp + 0x28]
mov qword [rsp + 0x60], rax
mov rcx, qword [rsp + 0x38]
mov eax, dword [rsp + 0x114]
mov r8d, 0x6c
mov dword [rsp + 0x68], eax
call sub.msvcrt.dll_memmove
mov r12d, dword [rsp + 0xb0]
mov r9, qword [rsp + 0x60]
mov rdx, qword [rsp + 0xb4]
mov eax, r12d
xor eax, r9d
xor qword [rsp + 0xe0], rdx
mov edx, eax
shr edx, 0x10
lea r13, [0x006fdaa0]
shr r9, 0x20
movzx edx, dl
xor r9d, dword [rsp + 0xb4]
mov ecx, dword [r13 + rdx*4]
movzx r8d, al
movzx edx, ah
lea rbx, [0x006fd2a0]
shr eax, 0x18
mov r11d, dword [rbx + r8*4]
mov edi, dword [r15 + rax*4]
mov ebx, r9d
mov eax, r9d
lea rsi, [0x006fd6a0]
shr eax, 0x18
movzx ebx, bh
mov ebp, dword [rsi + rbx*4]
mov eax, dword [r15 + rax*4]
lea rbx, [0x006fd2a0]
movzx r8d, r9b
mov r8d, dword [rbx + r8*4]
mov r10d, dword [rsp + 0x68]
mov edx, dword [rsi + rdx*4]
shr r9d, 0x10
mov esi, eax
xor r10d, dword [rsp + 0xb8]
xor esi, r8d
movzx r9d, r9b
xor esi, dword [r13 + r9*4]
mov r9d, r10d
shr r9d, 0x18
xor edi, r11d
xor r8d, r11d
mov r11d, dword [r15 + r9*4]
mov r9d, r10d
shr r9d, 0x10
movzx r9d, r9b
mov r13d, dword [r13 + r9*4]
xor edi, ecx
movzx r9d, r10b
xor edi, edx
xor esi, ebp
xor edx, ebp
mov ebp, dword [rbx + r9*4]
mov ebx, r10d
xor r8d, ebp
xor eax, r11d
movzx ebx, bh
xor r11d, ebp
mov ebp, dword [rsp + 0xac]
mov r10, rbx
lea rbx, [0x006fd6a0]
mov r9d, dword [rbx + r10*4]
mov r10d, ebp
xor r11d, r13d
shr r10d, 0x18
xor r9d, r11d
mov r11d, dword [r15 + r10*4]
mov r10d, ebp
shr r10d, 0x10
mov ebx, ebp
xor ecx, r13d
movzx ebx, bh
lea r13, [0x006fdaa0]
movzx r10d, r10b
mov r10d, dword [r13 + r10*4]
mov r13, rbx
lea rbx, [0x006fd6a0]
mov r13d, dword [rbx + r13*4]
mov r14d, dword [rsp + 0xdc]
movzx ebp, bpl
lea rbx, [0x006fd2a0]
xor ecx, r10d
xor edx, r13d
xor eax, r11d
xor r14d, r12d
xor r11d, dword [rbx + rbp*4]
xor r10d, r11d
mov ebp, edi
mov r11d, esi
xor ebp, eax
xor r11d, ecx
and r11d, 0xff0000
and ebp, 0xff000000
xor r10d, r13d
or ebp, r11d
mov r11d, r8d
xor r11d, r10d
movzx r11d, r11b
or ebp, r11d
mov r11d, r9d
xor r11d, edx
and r11d, 0xff00
or ebp, r11d
mov r13d, r8d
mov r11d, eax
shl r11d, 8
shr r13d, 0x18
xor r11d, esi
xor r13d, edi
and r11d, 0xff000000
movzx r13d, r13b
or r11d, r13d
mov r13d, ecx
shl r13d, 8
xor r13d, r9d
and r13d, 0xff0000
or r11d, r13d
mov r13d, edx
shl r13d, 8
xor r13d, r10d
and r13d, 0xff00
or r11d, r13d
mov dword [rsp + 0xa4], r11d
mov r13d, r8d
mov r11d, eax
shl r11d, 0x10
shr r13d, 0x10
xor r11d, r9d
xor r13d, esi
movzx r13d, r13b
and r11d, 0xff000000
or r11d, r13d
mov r13d, ecx
shl r13d, 0x10
xor r13d, r10d
and r13d, 0xff0000
or r11d, r13d
shl eax, 0x18
mov r13d, edx
shr r8d, 8
shr r13d, 0x10
xor eax, r10d
xor r9d, r8d
shr ecx, 8
xor r13d, edi
and eax, 0xff000000
xor edi, ecx
shr edx, 8
movzx r9d, r9b
or eax, r9d
and edi, 0xff0000
xor esi, edx
and r13d, 0xff00
or eax, edi
and esi, 0xff00
or r11d, r13d
or esi, eax
mov dword [rsp + 0xdc], r14d
mov dword [rsp + 0xa0], ebp
mov dword [rsp + 0xa8], r11d
mov dword [rsp + 0xac], esi
dec dword [rsp + 0x34]
jne 0x4a6288
lea rdx, [rsp + 0xdc]
mov qword [rsp + 0x40], rdx
lea rdx, [rsp + 0xd8]
mov qword [rsp + 0x38], rdx
mov dword [rsp + 0x34], 0xd
mov rdi, qword [rsp + 0x28]
mov eax, r12d
mov edx, ebp
jmp 0x4a6587
mov eax, dword [rsp + 0xb0]
mov r14d, dword [rsp + 0xdc]
xor eax, edx
mov dword [rsp + 0xb0], eax
xor edx, r14d
mov dword [rsp + 0xdc], edx
vmovdqu xmm0, xmmword [rdi]
mov rbx, qword [rsp + 0x40]
mov r12, qword [rsp + 0xdc]
mov r10, qword [rsp + 0xec]
mov r11, qword [rsp + 0xf4]
mov r8, qword [rsp + 0xfc]
mov r9, qword [rsp + 0x104]
mov rcx, qword [rsp + 0x10c]
mov r13, qword [rsp + 0xe4]
mov dword [rsp + 0x28], eax
mov eax, 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 rsi, qword [rdi + 0x30]
mov qword [rbx + 0x30], rsi
mov esi, dword [rdi + 0x38]
mov qword [rsp + 0xd0], rcx
mov ecx, edx
shr ecx, 0x10
mov dword [rbx + 0x38], esi
mov dword [rsp + 0xd8], eax
lea rbx, [0x006fdaa0]
movzx eax, cl
mov qword [rsp + 0xa0], r12
mov qword [rsp + 0xc0], r8
mov r12d, dword [rbx + rax*4]
lea r8, [0x006fd6a0]
movzx eax, dh
mov r14d, dword [r8 + rax*4]
mov qword [rsp + 0xc8], r9
movzx eax, dl
lea r9, [0x006fd2a0]
mov qword [rsp + 0xb0], r10
mov qword [rsp + 0xb8], r11
mov qword [rsp + 0xa8], r13
mov r13d, dword [r9 + rax*4]
mov ecx, dword [rsp + 0xa4]
shr edx, 0x18
mov esi, dword [r15 + rdx*4]
mov edx, ecx
shr edx, 0x18
mov eax, edx
movzx edx, ch
mov edx, dword [r8 + rdx*4]
mov eax, dword [r15 + rax*4]
movzx r8d, cl
mov ebp, dword [r9 + r8*4]
mov r10d, dword [rsp + 0xa8]
shr ecx, 0x10
mov r11d, eax
xor r11d, ebp
movzx ecx, cl
xor r11d, dword [rbx + rcx*4]
mov ecx, r10d
shr ecx, 0x18
mov r9d, dword [r15 + rcx*4]
mov ecx, r10d
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [rbx + rcx*4]
movzx r8d, r10b
lea rbx, [0x006fd2a0]
mov r8d, dword [rbx + r8*4]
xor eax, r9d
xor r9d, r8d
xor r8d, ebp
mov ebp, dword [rsp + 0xac]
mov ebx, r10d
xor r8d, r13d
xor esi, r13d
movzx ebx, bh
mov r13d, ebp
mov r10, rbx
xor r9d, ecx
lea rbx, [0x006fd6a0]
shr r13d, 0x10
xor r9d, dword [rbx + r10*4]
movzx r13d, r13b
lea rbx, [0x006fdaa0]
mov r13d, dword [rbx + r13*4]
mov ebx, ebp
xor ecx, r13d
movzx ebx, bh
xor ecx, r12d
xor esi, r12d
mov r12, rbx
lea rbx, [0x006fd6a0]
mov r12d, dword [rbx + r12*4]
mov r10d, ebp
shr r10d, 0x18
xor r11d, edx
mov r10d, dword [r15 + r10*4]
xor edx, r12d
xor esi, r14d
xor edx, r14d
movzx ebp, bpl
lea r14, [0x006fd2a0]
xor eax, r10d
xor r10d, dword [r14 + rbp*4]
xor r10d, r13d
mov ebp, r11d
xor r12d, r10d
xor ebp, ecx
mov r10d, r9d
and ebp, 0xff0000
xor r10d, edx
and r10d, 0xff00
or ebp, r10d
mov r10d, r8d
xor r10d, r12d
movzx r10d, r10b
or ebp, r10d
mov r10d, esi
xor r10d, eax
and r10d, 0xff000000
or ebp, r10d
mov r10d, ecx
shl r10d, 8
xor r10d, r9d
and r10d, 0xff0000
mov r13d, r10d
mov r10d, edx
shl r10d, 8
xor r10d, r12d
and r10d, 0xff00
or r10d, r13d
mov r13d, eax
shl r13d, 8
xor r13d, r11d
and r13d, 0xff000000
or r10d, r13d
mov r13d, r8d
shr r13d, 0x18
xor r13d, esi
movzx r13d, r13b
or r10d, r13d
mov dword [rsp + 0xa4], r10d
mov r13d, r8d
mov r10d, eax
shl r10d, 0x10
shr r13d, 0x10
xor r10d, r9d
xor r13d, r11d
and r10d, 0xff000000
movzx r13d, r13b
or r10d, r13d
mov r13d, ecx
shl r13d, 0x10
xor r13d, r12d
and r13d, 0xff0000
or r10d, r13d
mov r13d, edx
shr r13d, 0x10
shr r8d, 8
shl eax, 0x18
xor eax, r12d
xor r9d, r8d
shr ecx, 8
xor r13d, esi
movzx r9d, r9b
xor esi, ecx
and eax, 0xff000000
or eax, r9d
and esi, 0xff0000
or eax, esi
mov esi, dword [rsp + 0xe0]
shr edx, 8
xor esi, ebp
mov dword [rsp + 0xe0], esi
xor r11d, edx
and r11d, 0xff00
or r11d, eax
vmovdqu xmm3, xmmword [rsp + 0xe0]
vmovdqu xmm4, xmmword [rsp + 0xf0]
vmovdqu xmm5, xmmword [rsp + 0x100]
and r13d, 0xff00
mov rax, qword [rsp + 0x110]
or r10d, r13d
xor dword [rsp + 0xb0], ebp
mov dword [rsp + 0xa8], r10d
mov dword [rsp + 0xac], r11d
mov dword [rsp + 0xa0], ebp
vmovups xmmword [rsp + 0x60], xmm3
vmovups xmmword [rsp + 0x70], xmm4
vmovups xmmword [rsp + 0x80], xmm5
mov qword [rsp + 0x90], rax
mov rcx, qword [rsp + 0x38]
mov r8d, 0x40
mov rdx, rdi
call sub.msvcrt.dll_memmove
mov rax, qword [rsp + 0x90]
mov ecx, esi
shr ecx, 0x10
vmovdqu xmm0, xmmword [rsp + 0x60]
lea rbx, [0x006fdaa0]
mov qword [rsp + 0xd0], rax
movzx eax, cl
vmovups xmmword [rsp + 0xa0], xmm0
mov r12d, dword [rbx + rax*4]
mov eax, esi
mov ecx, dword [rsp + 0xa4]
movzx eax, ah
lea rdx, [0x006fd6a0]
mov ebp, dword [rdx + rax*4]
movzx eax, sil
shr esi, 0x18
mov r11d, dword [r15 + rsi*4]
mov esi, ecx
shr esi, 0x18
mov r13d, dword [r14 + rax*4]
mov eax, esi
mov r8d, dword [r15 + rax*4]
movzx eax, ch
mov edx, dword [rdx + rax*4]
movzx eax, cl
mov eax, dword [r14 + rax*4]
mov esi, dword [rsp + 0xa8]
shr ecx, 0x10
mov r10d, r8d
xor r10d, eax
movzx ecx, cl
xor r10d, dword [rbx + rcx*4]
mov ecx, esi
shr ecx, 0x18
mov r9d, dword [r15 + rcx*4]
xor r11d, r13d
xor r11d, r12d
mov ecx, esi
xor r11d, ebp
xor r10d, edx
xor r8d, r9d
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [rbx + rcx*4]
movzx r14d, sil
lea rbx, [0x006fd2a0]
mov r14d, dword [rbx + r14*4]
mov ebx, esi
xor eax, r14d
xor r9d, r14d
mov r14d, dword [rsp + 0x28]
movzx esi, bh
xor r9d, ecx
lea rbx, [0x006fd6a0]
xor r9d, dword [rbx + rsi*4]
mov esi, r14d
shr esi, 0x10
lea rbx, [0x006fdaa0]
movzx esi, sil
mov esi, dword [rbx + rsi*4]
lea rbx, [0x006fd6a0]
xor ecx, esi
xor r12d, ecx
mov ecx, r14d
movzx ecx, ch
xor r13d, eax
mov ecx, dword [rbx + rcx*4]
mov eax, r14d
shr eax, 0x18
xor edx, ecx
mov eax, dword [r15 + rax*4]
xor ebp, edx
movzx edx, r14b
lea r14, [0x006fd2a0]
xor r8d, eax
xor eax, dword [r14 + rdx*4]
xor eax, esi
xor ecx, eax
mov edx, r10d
mov eax, r9d
xor edx, r12d
xor eax, ebp
and eax, 0xff00
and edx, 0xff0000
or edx, eax
mov eax, r13d
xor eax, ecx
movzx eax, al
or edx, eax
mov eax, r11d
xor eax, r8d
and eax, 0xff000000
or edx, eax
mov r14d, r12d
mov eax, ebp
shl r14d, 8
shl eax, 8
xor r14d, r9d
xor eax, ecx
and r14d, 0xff0000
and eax, 0xff00
or r14d, eax
mov eax, r8d
shl eax, 8
xor eax, r10d
and eax, 0xff000000
or r14d, eax
mov eax, r13d
shr eax, 0x18
xor eax, r11d
movzx eax, al
or r14d, eax
mov esi, r13d
mov eax, r8d
shl eax, 0x10
shr esi, 0x10
xor eax, r9d
xor esi, r10d
and eax, 0xff000000
movzx esi, sil
or eax, esi
mov esi, r12d
shl esi, 0x10
xor esi, ecx
and esi, 0xff0000
or eax, esi
shl r8d, 0x18
mov esi, ebp
shr r13d, 8
shr esi, 0x10
xor r8d, ecx
xor r9d, r13d
shr r12d, 8
xor esi, r11d
and r8d, 0xff000000
xor r11d, r12d
movzx r9d, r9b
and esi, 0xff00
or r8d, r9d
and r11d, 0xff0000
or eax, esi
or r8d, r11d
shr ebp, 8
xor r10d, ebp
vmovdqu xmm1, xmmword [rsp + 0x70]
vmovdqu xmm2, xmmword [rsp + 0x80]
and r10d, 0xff00
or r10d, r8d
mov dword [rsp + 0xa0], edx
mov dword [rsp + 0xa4], r14d
mov dword [rsp + 0xa8], eax
mov dword [rsp + 0xac], r10d
vmovups xmmword [rsp + 0xb0], xmm1
vmovups xmmword [rsp + 0xc0], xmm2
dec dword [rsp + 0x34]
jne 0x4a6578
mov ebp, edx
mov edx, dword [rsp + 0xb0]
mov esi, r14d
xor edx, ebp
mov r8d, r10d
xor ebp, dword [rsp + 0xdc]
bswap esi
mov rdi, qword [rsp + 0x188]
mov dword [rdi], esi
bswap eax
mov dword [rdi + 4], eax
bswap r8d
mov dword [rdi + 8], r8d
mov eax, edx
bswap eax
mov dword [rdi + 0xc], eax
bswap ebp
mov dword [rdi + 0x10], ebp
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 0x4a6cf8
mov rax, qword [rsp + 0x170]
xor r9d, r9d
mov qword [rax + 0xc], 0
xor r8d, r8d
mov rax, qword [rsp + 0x170]
mov qword [rax + 0x48], 0
mov qword [rax + 0x50], 0
mov qword [rax + 0x58], 0
mov qword [rax + 0x60], 0
mov rax, qword [rsp + 0x170]
mov rcx, qword [rsp + 0x48]
add rax, 0x14
and rax, 0xfffffffffffffff8
sub rcx, rax
add ecx, 0x5c
and ecx, 0xffffffe0
mov edx, r8d
add r8d, 0x20
mov qword [rax + rdx], r9
mov qword [rax + rdx + 8], r9
mov qword [rax + rdx + 0x10], r9
mov qword [rax + rdx + 0x18], r9
cmp r8d, ecx
jb 0x4a6c12
mov rax, qword [rsp + 0x170]
mov rdx, qword [0x006fe350]
vmovdqu xmm3, xmmword [0x006fe340]
mov qword [rax + 0x78], rdx
mov edx, dword [0x006fe358]
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 0x4a6dbe
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 0x4a61fb
mov byte [rsp + rax + 0x50], 0
lea eax, [rcx + 2]
cmp ecx, 2
je 0x4a61fb
mov byte [rsp + rax + 0x50], 0
lea eax, [rcx + 3]
cmp ecx, 1
jne 0x4a6dd9
jmp 0x4a61fb
mov eax, dword [rsp + 0xe8]
bswap eax
mov dword [rdi + 0x1c], eax
mov rax, qword [rsp + 0x170]
xor r8d, r8d
mov qword [rax + 0xc], 0
xor ecx, ecx
mov rax, qword [rsp + 0x170]
mov qword [rax + 0x44], 0
mov qword [rax + 0x4c], 0
mov qword [rax + 0x54], 0
mov qword [rax + 0x5c], 0
mov rax, qword [rsp + 0x170]
mov r9, qword [rsp + 0x48]
add rax, 0x14
and rax, 0xfffffffffffffff8
sub r9, rax
add r9d, 0x58
and r9d, 0xffffffe0
mov edx, ecx
add ecx, 0x20
mov qword [rax + rdx], r8
mov qword [rax + rdx + 8], r8
mov qword [rax + rdx + 0x10], r8
mov qword [rax + rdx + 0x18], r8
cmp ecx, r9d
jb 0x4a6d61
mov rax, qword [rsp + 0x170]
vmovdqu xmm4, xmmword [0x006fe320]
vmovdqu xmm5, xmmword [0x006fe330]
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 0x4a6c76
xor eax, eax
mov byte [rsp + 0x50], dl
mov word [rsp + 0x51], ax
mov r8d, 0x10
mov eax, 3
lea rdx, [rsp + 0x50]
mov ecx, eax
mov byte [rsp + rcx + 0x50], 0
cmp eax, 2
jne 0x4a61fb
mov byte [rsp + 0x53], 0
jmp 0x4a61fb