Function at 0x476400
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 + 0x188], r9
mov eax, r8d
mov r9d, dword [rcx + 4]
add rax, qword [rcx + 0xa0]
mov qword [rsp + 0x170], rcx
bswap rax
mov qword [rsp + 0x54], rax
mov eax, r9d
or eax, r8d
je 0x476468
cmp r9d, 3
jbe 0x476eb0
test r8d, r8d
jne 0x476eb0
lea rdx, [rsp + r9 + 0x50]
mov r8d, 0x10
sub r8, r9
jmp 0x476473
lea rdx, [rsp + 0x54]
mov r8d, 0xc
mov rcx, qword [rsp + 0x170]
mov ebx, 0x1e
call fcn.0046e220
mov rax, qword [rsp + 0x170]
mov rdi, qword [rsp + 0x170]
mov eax, dword [rax + 8]
lea r14, [rdi + 0xc]
lea rdi, [rsp + 0xa0]
mov qword [rsp + 0x48], r14
mov rcx, rdi
lea eax, [rax + rax*2]
add eax, eax
lea rsi, [rax*4]
sub rbx, rax
lea rdx, [r14 + rbx*4]
mov r8, rsi
call sub.msvcrt.dll_memcpy
lea rcx, [rdi + rsi]
mov r8d, ebx
mov rdx, r14
lea rsi, [0x005e0a60]
shl r8, 2
call sub.msvcrt.dll_memcpy
mov ecx, 0xa
mov qword [rsp + 0x28], rdi
lea rax, [rsp + 0xac]
mov edi, ecx
mov qword [rsp + 0x30], rax
nop dword [rax + rax]
mov rax, qword [rsp + 0x10c]
mov r8d, 0x6c
mov rdx, qword [rsp + 0x28]
lea r15, [0x005e1260]
mov rcx, qword [rsp + 0x30]
lea r13, [0x005e0e60]
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
mov r11d, dword [rsi + r10*4]
movzx r10d, al
xor ebx, ecx
mov rcx, qword [rsp + 0xb4]
mov r8d, ebx
mov dword [rsp + 0xdc], ebx
mov r10d, dword [rsi + r10*4]
xor qword [rsp + 0xe0], rcx
mov ecx, edx
shr ecx, 0x10
lea rbx, [0x005e1660]
movzx ecx, cl
mov r9d, dword [r15 + rcx*4]
movzx ecx, dh
shr edx, 0x18
mov r14d, dword [rbx + rdx*4]
mov edx, eax
shr edx, 0x18
mov ecx, dword [r13 + rcx*4]
mov edx, dword [rbx + rdx*4]
movzx ebx, ah
shr eax, 0x10
mov r12d, dword [r13 + rbx*4]
movzx eax, al
mov ebx, ebp
xor r14d, r11d
xor r14d, r9d
mov r13d, edx
xor r14d, ecx
xor r13d, r10d
xor r13d, dword [r15 + rax*4]
mov eax, ebp
xor r10d, r11d
shr eax, 0x18
xor ecx, r12d
lea r11, [0x005e1660]
mov eax, dword [r11 + rax*4]
mov r11d, ebp
shr r11d, 0x10
xor r13d, r12d
movzx r11d, r11b
mov r15d, dword [r15 + r11*4]
movzx r11d, bpl
movzx ebp, bh
mov r12d, dword [rsi + r11*4]
lea rbx, [0x005e0e60]
xor edx, eax
xor r9d, r15d
xor eax, r12d
xor r10d, r12d
mov r12d, dword [rsp + 0xac]
xor eax, r15d
xor eax, dword [rbx + rbp*4]
lea rbp, [0x005e1660]
lea r15, [0x005e1260]
mov ebx, r12d
mov r11d, eax
mov eax, r12d
movzx ebx, bh
shr eax, 0x18
mov eax, dword [rbp + rax*4]
mov ebp, r12d
movzx r12d, r12b
shr ebp, 0x10
movzx ebp, bpl
mov ebp, dword [r15 + rbp*4]
mov r15, rbx
lea rbx, [0x005e0e60]
xor edx, eax
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
and r15d, 0xff0000
shr r9d, 8
and ebp, 0xff000000
or r12d, r15d
mov r15d, ecx
movzx r11d, r11b
shr r15d, 0x10
shr ecx, 8
or ebp, r11d
xor r15d, r14d
xor r14d, r9d
xor r13d, ecx
and r14d, 0xff0000
and r15d, 0xff00
and r13d, 0xff00
or r14d, ebp
or r12d, r15d
or r13d, r14d
mov dword [rsp + 0xa8], r12d
mov dword [rsp + 0xac], r13d
sub edi, 1
jne 0x476500
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 0x4767fe
mov ebx, dword [rsp + 0xb0]
mov eax, dword [rsp + 0xdc]
xor ebx, r15d
xor eax, r15d
mov r13, qword [rsp + 0xe4]
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 r10, qword [rsp + 0xec]
mov r12, qword [rsp + 0xdc]
mov r11, qword [rsp + 0xf4]
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 qword [rsp + 0xa8], r13
movzx edx, dl
mov qword [rsp + 0xb8], r11
mov dword [rbx + 0x38], ebp
lea rbx, [0x005e1260]
mov r13d, dword [rbx + rdx*4]
lea r11, [0x005e0e60]
movzx edx, ah
mov qword [rsp + 0xa0], r12
mov r15d, dword [r11 + rdx*4]
movzx edx, al
mov qword [rsp + 0xb0], r10
shr eax, 0x18
mov qword [rsp + 0xc0], r8
mov qword [rsp + 0xc8], r9
lea r9, [0x005e1660]
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
vmovdqu xmm5, xmmword [rsp + 0x100]
shr eax, 0x18
shr ecx, 0x10
mov r12d, dword [rsi + r8*4]
xor ebp, r14d
mov eax, dword [r9 + rax*4]
movzx ecx, cl
xor ebp, r13d
vmovups xmmword [rsp + 0x70], xmm4
vmovups xmmword [rsp + 0x80], xmm5
mov edx, dword [r11 + rdx*4]
xor ebp, r15d
mov r11d, dword [rbx + rcx*4]
mov ecx, r10d
shr ecx, 0x18
mov r8d, eax
mov r9d, dword [r9 + rcx*4]
mov ecx, r10d
xor r8d, r12d
shr ecx, 0x10
xor r11d, r8d
movzx r8d, r10b
movzx ecx, cl
mov r8d, dword [rsi + r8*4]
xor r11d, edx
mov ecx, dword [rbx + rcx*4]
xor eax, r9d
mov ebx, r10d
movzx ebx, bh
mov r10, rbx
lea rbx, [0x005e0e60]
xor r9d, r8d
xor r8d, r12d
mov r12d, dword [rsp + 0xac]
xor r9d, ecx
xor r9d, dword [rbx + r10*4]
xor r8d, r14d
lea r14, [0x005e1660]
lea rbx, [0x005e1260]
mov r10d, r12d
shr r10d, 0x18
mov r10d, dword [r14 + r10*4]
mov r14d, r12d
shr r14d, 0x10
movzx r14d, r14b
mov r14d, dword [rbx + r14*4]
mov ebx, r12d
movzx r12d, r12b
movzx ebx, bh
xor eax, r10d
xor r10d, dword [rsi + r12*4]
mov r12d, r11d
xor ecx, r14d
xor ecx, r13d
mov r13, rbx
xor r10d, r14d
lea rbx, [0x005e0e60]
xor r12d, ecx
mov r13d, dword [rbx + r13*4]
and r12d, 0xff0000
lea rbx, [0x005e1260]
xor edx, r13d
xor r13d, r10d
mov r10d, r9d
xor edx, r15d
lea r15, [0x005e1660]
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
shr r8d, 8
xor r13d, eax
shr ecx, 8
mov rax, qword [rsp + 0x110]
xor r9d, r8d
xor r14d, ebp
and r13d, 0xff000000
movzx r9d, r9b
xor ebp, ecx
shr edx, 8
or r13d, r9d
xor edx, r11d
and ebp, 0xff0000
or ebp, r13d
and edx, 0xff00
and r14d, 0xff00
or edx, ebp
mov ebp, dword [rsp + 0xe0]
or r10d, r14d
mov r8d, 0x40
xor dword [rsp + 0xb0], r12d
mov dword [rsp + 0xa8], r10d
mov dword [rsp + 0xac], edx
mov rdx, rdi
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]
lea r9, [0x005e0e60]
vmovdqu xmm0, xmmword [rsp + 0x60]
vmovdqu xmm1, xmmword [rsp + 0x70]
vmovups xmmword [rsp + 0xa0], xmm0
mov ecx, dword [rsp + 0xa4]
mov qword [rsp + 0xd0], rax
mov eax, ebp
vmovdqu xmm2, xmmword [rsp + 0x80]
vmovups xmmword [rsp + 0xb0], xmm1
shr eax, 0x10
vmovups xmmword [rsp + 0xc0], xmm2
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 r12d, dword [r9 + rax*4]
movzx eax, bpl
shr ebp, 0x18
mov r14d, dword [rsi + rax*4]
mov eax, ecx
shr ecx, 0x10
shr eax, 0x18
mov r11d, dword [r15 + rbp*4]
movzx ecx, cl
mov eax, dword [r15 + rax*4]
mov ebp, dword [rsp + 0xa8]
mov edx, dword [r9 + rdx*4]
xor r11d, r14d
mov r10d, eax
xor r11d, r13d
xor r10d, r8d
xor r10d, dword [rbx + rcx*4]
mov ecx, ebp
xor r11d, r12d
shr ecx, 0x18
mov r9d, dword [r15 + rcx*4]
mov ecx, ebp
movzx r15d, bpl
mov r15d, dword [rsi + r15*4]
xor r10d, edx
xor eax, r9d
shr ecx, 0x10
movzx ecx, cl
xor r9d, r15d
xor r8d, r15d
mov ecx, dword [rbx + rcx*4]
lea r15, [0x005e1660]
mov ebx, ebp
xor r14d, r8d
movzx ebp, bh
lea rbx, [0x005e0e60]
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, [0x005e1260]
mov ebp, dword [rbx + rbp*4]
lea rbx, [0x005e0e60]
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]
and r15d, 0xff0000
movzx ebx, byte [rsp + 0x28]
xor edx, ecx
xor r8d, dword [rsi + rbx*4]
xor r12d, edx
mov edx, r9d
mov ebx, r13d
xor edx, r12d
shl ebx, 8
and edx, 0xff00
xor ebx, r9d
or r15d, edx
mov edx, r14d
and ebx, 0xff0000
xor ebp, r8d
mov r8d, r14d
xor ecx, ebp
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
shl r8d, 0x10
or eax, r9d
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
sub dword [rsp + 0x30], 1
jne 0x4767f0
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 0x476f18
mov rdi, qword [rsp + 0x48]
xor eax, eax
mov ecx, 0xb
mov rdx, qword [0x005e1b10]
vmovdqu xmm3, xmmword [0x005e1b00]
rep stosq qword [rdi], rax
mov rax, qword [rsp + 0x170]
mov dword [rdi], 0
mov qword [rax + 0x78], rdx
mov edx, dword [0x005e1b18]
vmovups xmmword [rax + 0x68], xmm3
mov qword [rax], 0
mov dword [rax + 8], 0
mov dword [rax + 0x80], edx
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
mov ecx, r8d
shr eax, cl
not eax
and edx, eax
cmp r9d, 4
je 0x476f73
lea eax, [r9 + 1]
mov ecx, r9d
mov r8d, 0x10
mov byte [rsp + rcx + 0x50], dl
lea rdx, [rsp + rcx + 0x50]
sub r8, rcx
cmp eax, 3
ja 0x476473
mov byte [rsp + rax + 0x50], 0
lea eax, [r9 + 2]
cmp r9d, 2
je 0x476473
mov byte [rsp + rax + 0x50], 0
lea eax, [r9 + 3]
cmp r9d, 1
jne 0x476f8e
jmp 0x476473
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 [0x005e1ae0]
vmovdqu xmm5, xmmword [0x005e1af0]
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 0x476e99
xor eax, eax
mov byte [rsp + 0x50], dl
mov r8d, 0x10
mov word [rsp + 0x51], ax
lea rdx, [rsp + 0x50]
mov eax, 3
mov ecx, eax
mov byte [rsp + rcx + 0x50], 0
cmp eax, 2
jne 0x476473
mov byte [rsp + 0x53], 0
jmp 0x476473