Function at 0x4a8810
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x138
mov qword [rsp + 0x180], rcx
mov ecx, edx
mov qword [rsp + 0x198], r9
mov rax, qword [rsp + 0x180]
mov rdi, qword [rsp + 0x180]
mov edx, dword [rax + 4]
mov eax, r8d
add rax, qword [rdi + 0xa0]
bswap rax
mov qword [rsp + 0x64], rax
mov eax, edx
or eax, r8d
je 0x4a8888
cmp edx, 3
jbe 0x4a9360
test r8d, r8d
jne 0x4a9360
mov r8d, 0x10
sub r8, rdx
lea r9, [rsp + rdx + 0x60]
jmp 0x4a8893
lea r9, [rsp + 0x64]
mov r8d, 0xc
mov rcx, qword [rsp + 0x180]
mov rdx, r9
call fcn.004a04c0
mov rax, qword [rsp + 0x180]
mov rcx, qword [rsp + 0x180]
mov eax, dword [rax + 8]
mov ebx, 0x1e
lea eax, [rax + rax*2]
add eax, eax
lea rdi, [rcx + 0xc]
lea rbp, [rsp + 0xb0]
lea rsi, [rax*4]
sub rbx, rax
mov rcx, rbp
lea rdx, [rdi + rbx*4]
mov r8, rsi
mov qword [rsp + 0x58], rdi
call sub.msvcrt.dll_memcpy
mov r8d, ebx
lea rcx, [rbp + rsi]
shl r8, 2
mov rdx, rdi
call sub.msvcrt.dll_memcpy
lea rax, [rsp + 0xbc]
mov qword [rsp + 0x30], rax
mov ecx, 0xa
mov qword [rsp + 0x28], rbp
lea r15, [0x0074d580]
mov ebp, ecx
nop
mov rax, qword [rsp + 0x11c]
mov rdx, qword [rsp + 0x28]
mov qword [rsp + 0x70], rax
mov rcx, qword [rsp + 0x30]
mov eax, dword [rsp + 0x124]
mov r8d, 0x6c
mov dword [rsp + 0x78], eax
call sub.msvcrt.dll_memmove
mov edi, dword [rsp + 0xc0]
mov rax, qword [rsp + 0x70]
mov edx, dword [rsp + 0xc8]
mov r10d, dword [rsp + 0x78]
mov rcx, rax
xor eax, edi
xor r10d, edx
xor dword [rsp + 0xf4], edx
mov ebx, dword [rsp + 0xec]
shr rcx, 0x20
mov edx, eax
mov r9, rcx
shr edx, 0x10
mov ecx, dword [rsp + 0xc4]
xor ebx, edi
lea r14, [0x0074d180]
movzx edx, dl
xor r9d, ecx
xor dword [rsp + 0xf0], ecx
movzx r8d, al
mov ecx, dword [r14 + rdx*4]
mov dword [rsp + 0xec], ebx
movzx edx, ah
mov r13d, ebx
shr eax, 0x18
lea rbx, [0x0074c980]
mov r11d, dword [rbx + r8*4]
mov r12d, dword [r15 + rax*4]
mov ebx, r9d
mov eax, r9d
mov dword [rsp + 0x38], edi
shr eax, 0x18
lea rdi, [0x0074cd80]
movzx ebx, bh
mov esi, dword [rdi + rbx*4]
mov eax, dword [r15 + rax*4]
lea rbx, [0x0074c980]
movzx r8d, r9b
mov r8d, dword [rbx + r8*4]
mov edx, dword [rdi + rdx*4]
shr r9d, 0x10
mov edi, eax
xor edi, r8d
movzx r9d, r9b
xor edi, dword [r14 + r9*4]
mov r9d, r10d
shr r9d, 0x18
xor r12d, r11d
xor r8d, r11d
mov r11d, dword [r15 + r9*4]
mov r9d, r10d
shr r9d, 0x10
movzx r9d, r9b
mov r14d, dword [r14 + r9*4]
xor r12d, ecx
movzx r9d, r10b
xor r12d, edx
xor edi, esi
xor edx, esi
mov esi, dword [rbx + r9*4]
mov ebx, r10d
xor r8d, esi
xor eax, r11d
movzx ebx, bh
xor r11d, esi
mov esi, dword [rsp + 0xbc]
mov r10, rbx
lea rbx, [0x0074cd80]
mov r9d, dword [rbx + r10*4]
mov r10d, esi
xor r11d, r14d
shr r10d, 0x18
xor r9d, r11d
mov r11d, dword [r15 + r10*4]
mov r10d, esi
shr r10d, 0x10
mov ebx, esi
xor ecx, r14d
movzx ebx, bh
lea r14, [0x0074d180]
movzx r10d, r10b
mov r10d, dword [r14 + r10*4]
mov r14, rbx
lea rbx, [0x0074cd80]
mov r14d, dword [rbx + r14*4]
movzx esi, sil
lea rbx, [0x0074c980]
xor eax, r11d
xor ecx, r10d
xor edx, r14d
xor r11d, dword [rbx + rsi*4]
xor r10d, r11d
mov esi, r12d
mov r11d, edi
xor esi, eax
xor r11d, ecx
and r11d, 0xff0000
and esi, 0xff000000
xor r10d, r14d
or esi, r11d
mov r11d, r8d
xor r11d, r10d
movzx r11d, r11b
or esi, r11d
mov r11d, r9d
xor r11d, edx
and r11d, 0xff00
or esi, r11d
mov r14d, r8d
mov r11d, eax
shl r11d, 8
shr r14d, 0x18
xor r11d, edi
xor r14d, r12d
and r11d, 0xff000000
movzx r14d, r14b
or r11d, r14d
mov r14d, ecx
shl r14d, 8
xor r14d, r9d
and r14d, 0xff0000
or r11d, r14d
mov r14d, edx
shl r14d, 8
xor r14d, r10d
and r14d, 0xff00
or r11d, r14d
mov dword [rsp + 0xb4], r11d
mov r11d, eax
shl r11d, 0x10
mov r14d, r8d
xor r11d, r9d
shr r14d, 0x10
and r11d, 0xff000000
xor r14d, edi
movzx r14d, r14b
or r11d, r14d
mov r14d, ecx
shl r14d, 0x10
xor r14d, r10d
and r14d, 0xff0000
or r11d, r14d
shr r8d, 8
mov r14d, edx
shl eax, 0x18
shr r14d, 0x10
xor r10d, eax
xor r9d, r8d
shr ecx, 8
xor r14d, r12d
and r10d, 0xff000000
movzx r8d, r9b
xor r12d, ecx
shr edx, 8
or r10d, r8d
and r12d, 0xff0000
xor edi, edx
and r14d, 0xff00
or r12d, r10d
and edi, 0xff00
or r11d, r14d
or edi, r12d
mov dword [rsp + 0xb0], esi
mov dword [rsp + 0xb8], r11d
mov dword [rsp + 0xbc], edi
dec ebp
jne 0x4a8920
lea rax, [rsp + 0xec]
mov qword [rsp + 0x50], rax
lea rax, [rsp + 0xe8]
mov dword [rsp + 0x30], r13d
mov dword [rsp + 0x44], 0xd
mov qword [rsp + 0x48], rax
mov ebx, dword [rsp + 0x38]
mov rbp, qword [rsp + 0x28]
jmp 0x4a8c27
mov ebx, dword [rsp + 0xc0]
xor ebx, esi
mov dword [rsp + 0xc0], ebx
xor esi, dword [rsp + 0x30]
mov dword [rsp + 0xec], esi
vmovdqu xmm0, xmmword [rbp]
mov rdi, qword [rsp + 0x50]
mov rdx, qword [rsp + 0xfc]
mov r12, qword [rsp + 0xec]
mov r13, qword [rsp + 0xf4]
mov r11, qword [rsp + 0x104]
mov r8, qword [rsp + 0x10c]
mov r9, qword [rsp + 0x114]
mov rcx, qword [rsp + 0x11c]
mov eax, dword [rsp + 0x124]
vmovdqu xmmword [rdi], xmm0
vmovdqu xmm1, xmmword [rbp + 0x10]
mov dword [rsp + 0x28], ebx
vmovdqu xmmword [rdi + 0x10], xmm1
vmovdqu xmm2, xmmword [rbp + 0x20]
mov dword [rsp + 0xa8], eax
vmovdqu xmmword [rdi + 0x20], xmm2
mov r10, qword [rbp + 0x30]
mov dword [rsp + 0x38], edx
mov qword [rdi + 0x30], r10
lea rbx, [0x0074d180]
mov r10d, dword [rbp + 0x38]
mov qword [rsp + 0xb0], r12
mov dword [rdi + 0x38], r10d
mov qword [rsp + 0xb8], r13
mov qword [rsp + 0xc0], rdx
mov qword [rsp + 0xc8], r11
mov qword [rsp + 0xd0], r8
mov qword [rsp + 0xd8], r9
mov qword [rsp + 0xe0], rcx
mov dword [rsp + 0xe8], eax
mov eax, esi
shr eax, 0x10
movzx eax, al
mov r12d, dword [rbx + rax*4]
mov eax, esi
lea rdi, [0x0074cd80]
movzx eax, ah
mov r14d, dword [rdi + rax*4]
lea r9, [0x0074c980]
movzx eax, sil
mov r13d, dword [r9 + rax*4]
shr esi, 0x18
mov eax, dword [rsp + 0xb4]
mov ecx, dword [r15 + rsi*4]
mov edx, eax
xor ecx, r13d
shr edx, 0x18
mov r8d, dword [r15 + rdx*4]
mov esi, ecx
movzx edx, ah
movzx ecx, al
mov edx, dword [rdi + rdx*4]
mov edi, dword [r9 + rcx*4]
mov r10d, dword [rsp + 0xb8]
shr eax, 0x10
mov r11d, r8d
xor r11d, edi
movzx eax, al
xor r11d, dword [rbx + rax*4]
mov eax, r10d
shr eax, 0x18
mov r9d, dword [r15 + rax*4]
mov eax, r10d
shr eax, 0x10
movzx eax, al
mov ecx, dword [rbx + rax*4]
movzx eax, r10b
lea rbx, [0x0074c980]
mov eax, dword [rbx + rax*4]
xor r8d, r9d
xor r9d, eax
xor eax, edi
mov edi, dword [rsp + 0xbc]
mov ebx, r10d
xor eax, r13d
movzx ebx, bh
mov r13d, edi
mov r10, rbx
xor r9d, ecx
lea rbx, [0x0074cd80]
shr r13d, 0x10
xor r9d, dword [rbx + r10*4]
movzx r13d, r13b
lea rbx, [0x0074d180]
mov r13d, dword [rbx + r13*4]
mov ebx, edi
xor ecx, r13d
movzx ebx, bh
xor ecx, r12d
xor esi, r12d
mov r12, rbx
lea rbx, [0x0074cd80]
mov r12d, dword [rbx + r12*4]
mov r10d, edi
shr r10d, 0x18
xor r11d, edx
mov r10d, dword [r15 + r10*4]
xor edx, r12d
xor esi, r14d
xor edx, r14d
movzx edi, dil
lea r14, [0x0074c980]
xor r8d, r10d
xor r10d, dword [r14 + rdi*4]
xor r10d, r13d
mov edi, r11d
xor r12d, r10d
xor edi, ecx
mov r10d, r9d
and edi, 0xff0000
xor r10d, edx
and r10d, 0xff00
or edi, r10d
mov r10d, eax
xor r10d, r12d
movzx r10d, r10b
or edi, r10d
mov r10d, esi
xor r10d, r8d
and r10d, 0xff000000
or edi, r10d
mov r10d, ecx
shl r10d, 8
xor r10d, r9d
and r10d, 0xff0000
mov r14d, r10d
mov r10d, edx
shl r10d, 8
xor r10d, r12d
and r10d, 0xff00
mov r13d, r10d
mov r10d, r14d
or r10d, r13d
mov r13d, r8d
shl r13d, 8
xor r13d, r11d
and r13d, 0xff000000
or r10d, r13d
mov r13d, eax
shr r13d, 0x18
xor r13d, esi
movzx r13d, r13b
or r10d, r13d
mov dword [rsp + 0x30], r10d
mov dword [rsp + 0xb4], r10d
mov r13d, eax
mov r10d, r8d
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
shl r8d, 0x18
shr eax, 8
xor eax, r9d
xor r8d, r12d
and r8d, 0xff000000
movzx eax, al
or eax, r8d
mov r8d, ecx
shr r8d, 8
xor r13d, esi
xor esi, r8d
and esi, 0xff0000
or eax, esi
mov esi, dword [rsp + 0xf0]
shr edx, 8
xor esi, edi
xor edx, r11d
mov dword [rsp + 0xf0], esi
and edx, 0xff00
or eax, edx
mov dword [rsp + 0x40], eax
mov dword [rsp + 0xbc], eax
mov eax, dword [rsp + 0x38]
and r13d, 0xff00
vmovdqu xmm3, xmmword [rsp + 0xf0]
or r10d, r13d
xor eax, edi
mov dword [rsp + 0x3c], r10d
mov dword [rsp + 0xb8], r10d
mov dword [rsp + 0xb0], edi
mov dword [rsp + 0x38], eax
mov dword [rsp + 0xc0], eax
vmovdqu xmmword [rsp + 0x70], xmm3
vmovdqu xmm4, xmmword [rsp + 0x100]
vmovdqu xmm5, xmmword [rsp + 0x110]
mov rax, qword [rsp + 0x120]
mov rcx, qword [rsp + 0x48]
mov r8d, 0x40
mov rdx, rbp
mov qword [rsp + 0xa0], rax
vmovdqu xmmword [rsp + 0x80], xmm4
vmovdqu xmmword [rsp + 0x90], xmm5
call sub.msvcrt.dll_memmove
mov rax, qword [rsp + 0xa0]
lea rbx, [0x0074d180]
mov qword [rsp + 0xe0], rax
mov eax, esi
shr eax, 0x10
movzx eax, al
mov r12d, dword [rbx + rax*4]
vmovdqu xmm0, xmmword [rsp + 0x70]
mov eax, esi
movzx eax, ah
lea rcx, [0x0074cd80]
vmovdqu xmmword [rsp + 0xb0], xmm0
mov edi, dword [rcx + rax*4]
lea r14, [0x0074c980]
movzx eax, sil
mov r13d, dword [r14 + rax*4]
mov eax, dword [rsp + 0xb4]
shr esi, 0x18
mov edx, eax
shr edx, 0x18
mov r8d, dword [r15 + rdx*4]
movzx edx, ah
mov ecx, dword [rcx + rdx*4]
movzx edx, al
mov edx, dword [r14 + rdx*4]
mov r11d, dword [r15 + rsi*4]
shr eax, 0x10
mov esi, dword [rsp + 0xb8]
mov r10d, r8d
xor r10d, edx
movzx eax, al
xor r10d, dword [rbx + rax*4]
mov eax, esi
shr eax, 0x18
mov r9d, dword [r15 + rax*4]
xor r11d, r13d
xor r11d, r12d
mov eax, esi
xor r11d, edi
xor r10d, ecx
xor r8d, r9d
shr eax, 0x10
movzx eax, al
mov eax, dword [rbx + rax*4]
movzx r14d, sil
lea rbx, [0x0074c980]
mov r14d, dword [rbx + r14*4]
mov ebx, esi
xor edx, r14d
xor r9d, r14d
mov r14d, dword [rsp + 0x28]
movzx esi, bh
xor r9d, eax
lea rbx, [0x0074cd80]
xor r9d, dword [rbx + rsi*4]
mov esi, r14d
shr esi, 0x10
lea rbx, [0x0074d180]
movzx esi, sil
mov esi, dword [rbx + rsi*4]
xor r13d, edx
xor eax, esi
xor r12d, eax
mov edx, r14d
mov eax, r14d
shr edx, 0x18
lea rbx, [0x0074cd80]
movzx eax, ah
mov eax, dword [rbx + rax*4]
mov edx, dword [r15 + rdx*4]
movzx ebx, byte [rsp + 0x28]
lea r14, [0x0074c980]
xor r8d, edx
xor edx, dword [r14 + rbx*4]
xor ecx, eax
xor edx, esi
xor edi, ecx
xor eax, edx
mov esi, r10d
mov edx, r9d
xor esi, r12d
xor edx, edi
and edx, 0xff00
and esi, 0xff0000
or esi, edx
mov edx, r13d
xor edx, eax
movzx edx, dl
or esi, edx
mov edx, r11d
xor edx, r8d
and edx, 0xff000000
or esi, edx
mov ebx, r12d
mov edx, edi
shl ebx, 8
shl edx, 8
xor ebx, r9d
xor edx, eax
and ebx, 0xff0000
and edx, 0xff00
or ebx, edx
mov edx, r8d
shl edx, 8
xor edx, r10d
and edx, 0xff000000
or ebx, edx
mov edx, r13d
shr edx, 0x18
xor edx, r11d
movzx edx, dl
or ebx, edx
mov ecx, r13d
mov edx, r8d
shl edx, 0x10
shr ecx, 0x10
xor ecx, r10d
xor edx, r9d
and edx, 0xff000000
movzx ecx, cl
or edx, ecx
mov ecx, r12d
shl ecx, 0x10
xor ecx, eax
and ecx, 0xff0000
or edx, ecx
shl r8d, 0x18
mov ecx, edi
shr r13d, 8
shr ecx, 0x10
xor r8d, eax
xor r13d, r9d
shr r12d, 8
xor ecx, r11d
and r8d, 0xff000000
xor r12d, r11d
movzx r13d, r13b
and ecx, 0xff00
or r13d, r8d
and r12d, 0xff0000
or ecx, edx
or r13d, r12d
shr edi, 8
xor r10d, edi
vmovdqu xmm1, xmmword [rsp + 0x80]
vmovdqu xmm2, xmmword [rsp + 0x90]
and r10d, 0xff00
or r13d, r10d
mov dword [rsp + 0xb0], esi
mov dword [rsp + 0xb4], ebx
mov dword [rsp + 0xb8], ecx
mov dword [rsp + 0xbc], r13d
vmovdqu xmmword [rsp + 0xc0], xmm1
vmovdqu xmmword [rsp + 0xd0], xmm2
dec dword [rsp + 0x44]
jne 0x4a8c20
mov eax, dword [rsp + 0xc0]
mov r14d, r13d
mov r13d, dword [rsp + 0x30]
xor eax, esi
xor r13d, esi
bswap ebx
mov rdi, qword [rsp + 0x198]
mov dword [rdi], ebx
bswap ecx
mov dword [rdi + 4], ecx
bswap r14d
mov dword [rdi + 8], r14d
bswap eax
mov dword [rdi + 0xc], eax
bswap r13d
mov dword [rdi + 0x10], r13d
mov r10d, dword [rsp + 0x3c]
bswap r10d
mov dword [rdi + 0x14], r10d
mov edx, dword [rsp + 0x40]
bswap edx
cmp qword [rsp + 0x1a0], 8
mov dword [rdi + 0x18], edx
je 0x4a93c8
mov rax, qword [rsp + 0x180]
xor r9d, r9d
mov qword [rax + 0xc], 0
xor r8d, r8d
mov rax, qword [rsp + 0x180]
mov qword [rax + 0x48], 0
mov qword [rax + 0x50], 0
mov qword [rax + 0x58], 0
mov qword [rax + 0x60], 0
mov rax, qword [rsp + 0x180]
mov rcx, qword [rsp + 0x58]
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 0x4a92e4
mov rax, qword [rsp + 0x180]
mov rdx, qword [0x0074da30]
vmovdqu xmm3, xmmword [0x0074da20]
mov qword [rax + 0x78], rdx
mov edx, dword [0x0074da38]
mov qword [rax], 0
mov dword [rax + 0x80], edx
mov dword [rax + 8], 0
mov qword [rax + 0xa0], 0
vmovdqu xmmword [rax + 0x68], xmm3
add rsp, 0x138
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 ecx, r8d, ecx
cmp edx, 4
je 0x4a948e
mov r9d, edx
mov r8d, 0x10
lea eax, [rdx + 1]
mov byte [rsp + r9 + 0x60], cl
sub r8, r9
lea r9, [rsp + r9 + 0x60]
cmp eax, 3
ja 0x4a8893
mov byte [rsp + rax + 0x60], 0
lea eax, [rdx + 2]
cmp edx, 2
je 0x4a8893
mov byte [rsp + rax + 0x60], 0
lea eax, [rdx + 3]
cmp edx, 1
jne 0x4a94a9
jmp 0x4a8893
mov r15d, dword [rsp + 0x38]
bswap r15d
mov rax, qword [rsp + 0x180]
mov dword [rdi + 0x1c], r15d
mov qword [rax + 0xc], 0
xor r8d, r8d
xor ecx, ecx
mov rax, qword [rsp + 0x180]
mov qword [rax + 0x44], 0
mov qword [rax + 0x4c], 0
mov qword [rax + 0x54], 0
mov qword [rax + 0x5c], 0
mov rax, qword [rsp + 0x180]
mov r9, qword [rsp + 0x58]
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 0x4a9431
mov rax, qword [rsp + 0x180]
vmovdqu xmm4, xmmword [0x0074da00]
vmovdqu xmm5, xmmword [0x0074da10]
mov qword [rax], 0
mov dword [rax + 8], 0
mov qword [rax + 0xa0], 0
vmovdqu xmmword [rax + 0x64], xmm4
vmovdqu xmmword [rax + 0x74], xmm5
jmp 0x4a9348
mov byte [rsp + 0x60], cl
xor eax, eax
mov word [rsp + 0x61], ax
mov r8d, 0x10
mov eax, 3
lea r9, [rsp + 0x60]
mov edx, eax
mov byte [rsp + rdx + 0x60], 0
cmp eax, 2
jne 0x4a8893
mov byte [rsp + 0x63], 0
jmp 0x4a8893