Function at 0x582b10
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x308
mov r15d, 0x20
xor ebp, ebp
mov r9, qword [rcx + 8]
mov rsi, qword [rcx + 0x20]
mov rdi, qword [rcx + 0x28]
mov r10, qword [rcx + 0x30]
mov r11, qword [rcx + 0x38]
mov r12, qword [rcx + 0x10]
mov r13, qword [rcx + 0x18]
mov rbx, qword [rcx + 0x48]
mov qword [rsp + 0x360], r8
mov r8, qword [rcx]
mov rcx, qword [rcx + 0x40]
mov qword [rsp + 0x80], r8
mov qword [rsp + 0x88], r9
mov qword [rsp + 0xa0], rsi
mov qword [rsp + 0xa8], rdi
mov qword [rsp + 0xb0], r10
mov qword [rsp + 0xb8], r11
mov qword [rsp + 0xc0], rcx
mov qword [rsp + 0xc8], rbx
mov qword [rsp + 0xd0], r8
mov qword [rsp + 0xd8], r9
mov qword [rsp + 0xf0], rsi
mov qword [rsp + 0xf8], rdi
mov qword [rsp + 0x100], r10
mov qword [rsp + 0x108], r11
mov qword [rsp + 0x110], rcx
mov qword [rsp + 0x118], rbx
mov qword [rsp + 0x120], r8
mov qword [rsp + 0x90], r12
mov qword [rsp + 0x98], r13
mov qword [rsp + 0xe0], r12
mov qword [rsp + 0xe8], r13
mov qword [rsp + 0x128], r9
mov qword [rsp + 0x140], rsi
mov qword [rsp + 0x148], rdi
mov qword [rsp + 0x150], r10
mov qword [rsp + 0x160], rcx
mov qword [rsp + 0x168], rbx
mov rcx, qword [rdx]
mov rbx, qword [rdx + 8]
mov qword [rsp + 0x170], r8
mov qword [rsp + 0x178], r9
mov qword [rsp + 0x180], r8
mov qword [rsp + 0x188], r9
mov r8, qword [rdx + 0x10]
mov r9, qword [rdx + 0x18]
mov qword [rsp + 0x1a0], rsi
mov qword [rsp + 0x1a8], rdi
mov rsi, qword [rdx + 0x20]
mov rdi, qword [rdx + 0x28]
mov qword [rsp + 0x1b0], r10
mov r10, qword [rdx + 0x30]
mov qword [rsp + 0x158], r11
mov qword [rsp + 0x1b8], r11
mov qword [rsp + 0x1c8], rbx
mov r11, qword [rdx + 0x38]
mov qword [rsp + 0x130], r12
mov qword [rsp + 0x138], r13
mov qword [rsp + 0x190], r12
mov qword [rsp + 0x198], r13
mov qword [rsp + 0x1c0], rcx
mov qword [rsp + 0x1d0], r8
mov qword [rsp + 0x1d8], r9
mov qword [rsp + 0x1e0], rsi
mov qword [rsp + 0x1e8], rdi
mov qword [rsp + 0x1f0], r10
mov rax, qword [rdx + 0x40]
mov rdx, qword [rdx + 0x48]
mov qword [rsp + 0x200], rax
mov qword [rsp + 0x250], rax
mov qword [rsp + 0x2a0], rax
lea rax, [rsp + 0x2e0]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x80]
mov qword [rsp + 0x218], rbx
mov qword [rsp + 0x268], rbx
mov qword [rsp + 0x2b8], rbx
mov qword [rsp + 0x2c8], rbx
mov qword [rsp + 0x1f8], r11
mov qword [rsp + 0x208], rdx
mov qword [rsp + 0x210], rcx
mov qword [rsp + 0x220], r8
mov qword [rsp + 0x228], r9
mov qword [rsp + 0x230], rsi
mov qword [rsp + 0x238], rdi
mov qword [rsp + 0x240], r10
mov qword [rsp + 0x248], r11
mov qword [rsp + 0x258], rdx
mov qword [rsp + 0x260], rcx
mov qword [rsp + 0x270], r8
mov qword [rsp + 0x278], r9
mov qword [rsp + 0x280], rsi
mov qword [rsp + 0x288], rdi
mov qword [rsp + 0x290], r10
mov qword [rsp + 0x298], r11
mov qword [rsp + 0x2a8], rdx
mov qword [rsp + 0x2b0], rcx
mov qword [rsp + 0x2c0], rcx
mov qword [rsp + 0x2d0], r8
mov qword [rsp + 0x2d8], r9
lea rbx, [rsp + 0x1c0]
mov qword [rsp + 0x20], rax
jmp 0x582e14
dec r15d
je 0x582fb1
vzeroupper
mov rax, qword [rsp + 0x20]
mov r8, qword [rsp + 0x28]
lea rdx, [rbx + rbp]
lea rcx, [rax + rbp]
call fcn.005819f0
vmovdqu8 ymm0, ymmword [rsp + 0x2e0]
mov eax, dword [rsp + 0x2e0]
vpmovzxbw ymm2, xmm0
vextracti128 xmm0, ymm0, 1
vpmovzxbw ymm0, xmm0
vpmovzxwd ymm1, xmm0
vextracti128 xmm0, ymm0, 1
vpmovzxwd ymm0, xmm0
vpaddd ymm0, ymm1, ymm0
vpmovzxwd ymm1, xmm2
vextracti128 xmm2, ymm2, 1
vpmovzxwd ymm2, xmm2
vpaddd ymm2, ymm1, ymm2
vpaddd ymm0, ymm0, ymm2
vmovdqu xmm1, xmm0
vextracti128 xmm0, ymm0, 1
vpaddd xmm0, xmm1, xmm0
vpsrldq xmm1, xmm0, 8
vpaddd xmm0, xmm0, xmm1
vpsrldq xmm1, xmm0, 4
vpaddd xmm0, xmm0, xmm1
vmovd r14d, xmm0
movzx ebp, r14b
lea rdi, [rbx + rbp]
xor dword [rdi], eax
lea eax, [rbp + 4]
mov rsi, rbp
mov edx, dword [rsp + 0x2e4]
xor dword [rbx + rax], edx
lea eax, [rbp + 8]
mov edx, dword [rsp + 0x2e8]
xor dword [rbx + rax], edx
lea eax, [rbp + 0xc]
mov edx, dword [rsp + 0x2ec]
xor dword [rbx + rax], edx
lea eax, [rbp + 0x10]
mov edx, dword [rsp + 0x2f0]
xor dword [rbx + rax], edx
lea eax, [rbp + 0x14]
mov edx, dword [rsp + 0x2f4]
xor dword [rbx + rax], edx
lea eax, [rbp + 0x18]
mov edx, dword [rsp + 0x2f8]
xor dword [rbx + rax], edx
lea eax, [rbp + 0x1c]
mov edx, dword [rsp + 0x2fc]
xor dword [rbx + rax], edx
test r14b, 0xe0
jne 0x582f2d
lea eax, [rbp + 0x100]
add rax, rbx
cmp ebp, 0x20
jbe 0x583192
vmovdqu xmm4, xmmword [rdi]
vmovdqu xmmword [rax], xmm4
vmovdqu xmm5, xmmword [rdi + 0x10]
vmovdqu xmmword [rax + 0x10], xmm5
mov r12d, 0x100
sub r12d, esi
cmp r12d, 0x1f
ja 0x582e08
lea r13d, [rsi - 0xe0]
mov eax, r13d
shr eax, 2
je 0x582f6c
mov eax, eax
lea rdx, [rsp + 0x2c0]
lea r8, [rax*4]
mov rcx, rbx
vzeroupper
call sub.msvcrt.dll_memmove
mov edx, r13d
and edx, 3
je 0x582e08
mov eax, r13d
sub eax, edx
cmp r13d, eax
jbe 0x582e08
sub edx, r13d
lea r8d, [rsi + rdx - 0xe1]
lea rcx, [rbx + rax]
lea rdx, [rsp + rax + 0x2c0]
inc r8
vzeroupper
call sub.msvcrt.dll_memmove
dec r15d
jne 0x582e11
cmp r12d, 0x100
jne 0x5832c7
vmovdqu ymm5, ymmword [rsp + 0x1c0]
vmovdqu ymm4, ymmword [rsp + 0x1e0]
vpxor ymm0, ymm5, ymmword [rsp + 0x80]
vmovdqu ymm5, ymmword [rsp + 0x200]
vmovdqu ymmword [rsp + 0x1c0], ymm0
vmovdqu64 xmm26, xmm0
vpxor ymm0, ymm4, ymmword [rsp + 0xa0]
vmovdqu ymm3, ymmword [rsp + 0x220]
vmovdqu ymmword [rsp + 0x1e0], ymm0
vmovdqu64 xmm24, xmm0
vpxor ymm0, ymm5, ymmword [rsp + 0xc0]
vmovdqu ymm4, ymmword [rsp + 0x240]
vmovdqu64 xmm22, xmm0
vmovdqu ymmword [rsp + 0x200], ymm0
vpxor ymm0, ymm3, ymmword [rsp + 0xe0]
vmovdqu ymm5, ymmword [rsp + 0x120]
vmovdqu64 xmm20, xmm0
vmovdqu ymmword [rsp + 0x220], ymm0
vpxor ymm0, ymm4, ymmword [rsp + 0x100]
vmovdqu ymm3, ymmword [rsp + 0x280]
vmovdqu64 xmm18, xmm0
vmovdqu ymmword [rsp + 0x240], ymm0
vpxor ymm0, ymm5, ymmword [rsp + 0x260]
mov rax, qword [rsp + 0x360]
vmovdqu ymm5, ymmword [rsp + 0x2a0]
vmovdqu64 xmm16, xmm0
vmovdqu ymmword [rsp + 0x260], ymm0
vpxor ymm0, ymm3, ymmword [rsp + 0x140]
vmovdqu xmm3, xmmword [rsp + 0x1d0]
vmovdqu xmm4, xmm0
vmovdqu ymmword [rsp + 0x280], ymm0
vmovdqu xmmword [rax + 0x10], xmm3
vpxor ymm0, ymm5, ymmword [rsp + 0x160]
vmovdqu xmm3, xmmword [rsp + 0x1f0]
vmovdqu ymmword [rsp + 0x2a0], ymm0
vmovdqu64 xmmword [rax], xmm26
vmovdqu64 xmmword [rax + 0x20], xmm24
vmovdqu xmmword [rax + 0x30], xmm3
vmovdqu64 xmmword [rax + 0x40], xmm22
vmovdqu xmm3, xmmword [rsp + 0x210]
vmovdqu xmmword [rax + 0xc0], xmm4
vmovdqu xmmword [rax + 0x50], xmm3
vmovdqu xmm4, xmmword [rsp + 0x290]
vmovdqu xmm3, xmmword [rsp + 0x230]
vmovdqu xmm5, xmmword [rsp + 0x250]
vmovdqu xmmword [rax + 0x70], xmm3
vmovdqu xmmword [rax + 0xd0], xmm4
vmovdqu xmm3, xmmword [rsp + 0x270]
vmovdqu xmm4, xmmword [rsp + 0x2b0]
vmovdqu64 xmmword [rax + 0x60], xmm20
vmovdqu64 xmmword [rax + 0x80], xmm18
vmovdqu xmmword [rax + 0x90], xmm5
vmovdqu64 xmmword [rax + 0xa0], xmm16
vmovdqu xmmword [rax + 0xb0], xmm3
vmovdqu xmmword [rax + 0xe0], xmm0
vmovdqu xmmword [rax + 0xf0], xmm4
vzeroupper
add rsp, 0x308
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r11d, 0x20
sub r11d, ebp
mov r12d, r11d
mov edx, r11d
and r12d, 3
shr edx, 2
je 0x583b70
mov edx, edx
shl rdx, 2
cmp edx, 0x20
jae 0x583216
test dl, 0x10
jne 0x583d13
test dl, 8
jne 0x583d34
test dl, 4
jne 0x583d49
test edx, edx
jne 0x5832bd
test r12d, r12d
je 0x582f2d
mov edx, r11d
sub edx, r12d
cmp r11d, edx
jbe 0x582f2d
lea rcx, [rax + rdx]
mov eax, 0x1f
lea eax, [r12 + rax - 0x20]
add rdx, rdi
lea r8, [rax + 1]
vzeroupper
call sub.msvcrt.dll_memcpy
jmp 0x582f2d
mov rcx, qword [rdi]
lea r8, [rdi + rdx + 8]
mov qword [rax], rcx
lea rcx, [rax + rdx + 8]
mov r9, qword [r8 - 0x28]
mov qword [rcx - 0x28], r9
mov r9, qword [r8 - 0x20]
mov qword [rcx - 0x20], r9
mov r9, qword [r8 - 0x18]
mov qword [rcx - 0x18], r9
mov r9, rdi
mov r8, qword [r8 - 0x10]
mov qword [rcx - 0x10], r8
lea r8, [rax + 8]
and r8, 0xfffffffffffffff8
mov rcx, rax
sub rcx, r8
add edx, ecx
and edx, 0xffffffe0
sub r9, rcx
cmp edx, 0x20
jb 0x5831dc
and edx, 0xffffffe0
mov dword [rsp + 0x30], edx
mov dword [rsp + 0x34], ebp
mov qword [rsp + 0x38], rax
xor r10d, r10d
mov edx, r10d
mov r13, qword [r9 + rdx + 8]
mov rsi, qword [r9 + rdx + 0x10]
mov rcx, qword [r9 + rdx + 0x18]
mov rax, qword [r9 + rdx]
mov qword [r8 + rdx + 8], r13
mov qword [r8 + rdx], rax
mov qword [r8 + rdx + 0x10], rsi
mov qword [r8 + rdx + 0x18], rcx
add r10d, 0x20
cmp r10d, dword [rsp + 0x30]
jb 0x58327b
mov esi, dword [rsp + 0x34]
mov rax, qword [rsp + 0x38]
jmp 0x5831dc
movzx edx, byte [rdi]
mov byte [rax], dl
jmp 0x5831dc
mov ebp, r12d
shr ebp, 2
je 0x58343a
lea rcx, [rsp + 0x84]
mov rax, rdi
sub rax, rcx
lea edx, [rbp - 1]
cmp rax, 0x18
jbe 0x583cf5
cmp edx, 2
jbe 0x583cf5
cmp edx, 6
jbe 0x583dc8
vmovdqu ymm4, ymmword [rdi]
mov eax, r12d
vpxor ymm0, ymm4, ymmword [rsp + 0x80]
shr eax, 5
vmovdqu ymmword [rdi], ymm0
cmp eax, 1
je 0x5833c1
vmovdqu ymm3, ymmword [rdi + 0x20]
vpxor ymm0, ymm3, ymmword [rsp + 0xa0]
vmovdqu ymmword [rdi + 0x20], ymm0
cmp eax, 2
je 0x5833c1
vmovdqu ymm4, ymmword [rdi + 0x40]
vpxor ymm0, ymm4, ymmword [rsp + 0xc0]
vmovdqu ymmword [rdi + 0x40], ymm0
cmp eax, 3
je 0x5833c1
vmovdqu ymm5, ymmword [rdi + 0x60]
vpxor ymm0, ymm5, ymmword [rsp + 0xe0]
vmovdqu ymmword [rdi + 0x60], ymm0
cmp eax, 4
je 0x5833c1
vmovdqu ymm3, ymmword [rdi + 0x80]
vpxor ymm0, ymm3, ymmword [rsp + 0x100]
vmovdqu ymmword [rdi + 0x80], ymm0
cmp eax, 5
je 0x5833c1
vmovdqu ymm4, ymmword [rdi + 0xa0]
vpxor ymm0, ymm4, ymmword [rsp + 0x120]
vmovdqu ymmword [rdi + 0xa0], ymm0
cmp eax, 7
jne 0x5833c1
vmovdqu ymm5, ymmword [rdi + 0xc0]
vpxor ymm0, ymm5, ymmword [rsp + 0x140]
vmovdqu ymmword [rdi + 0xc0], ymm0
shl eax, 3
cmp ebp, eax
je 0x58343a
mov ecx, ebp
sub edx, eax
sub ecx, eax
cmp edx, 2
jbe 0x583400
mov edx, eax
lea rdx, [rdi + rdx*4]
vmovdqu xmm3, xmmword [rdx]
lea r8d, [rax + 0x10]
vpxor xmm0, xmm3, xmmword [rsp + r8*4 + 0x40]
mov r8d, ecx
and r8d, 0xfffffffc
vmovdqu xmmword [rdx], xmm0
add eax, r8d
lea rdx, [rsp + 0x40]
cmp r8d, ecx
je 0x58343f
mov edx, eax
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rdi + rdx], ecx
lea edx, [rax + 1]
cmp ebp, edx
jbe 0x58343a
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
add eax, 2
xor dword [rdi + rdx], ecx
cmp ebp, eax
jbe 0x58343a
shl rax, 2
mov edx, dword [rsp + rax + 0x80]
xor dword [rdi + rax], edx
lea rdx, [rsp + 0x40]
mov r13d, r12d
and r13d, 3
je 0x5836a5
mov eax, r12d
sub eax, r13d
cmp eax, r12d
jae 0x5836a5
mov r8d, eax
lea rcx, [rdi + r8]
lea r11, [rdx + r8 + 0x41]
mov r9, rcx
sub r9, r11
mov qword [rsp + 0x28], r8
lea r10d, [r13 - 1]
cmp r9, 0x1e
jbe 0x583d5a
cmp r10d, 0xe
jbe 0x583d5a
cmp r10d, 0x1e
jbe 0x583539
vmovdqu8 ymm3, ymmword [rcx]
lea r9, [rdx + r8 + 0x40]
vpxor ymm0, ymm3, ymmword [r9]
vmovdqu8 ymm4, ymmword [rcx + 0x20]
vmovdqu8 ymmword [rcx], ymm0
vpxor ymm0, ymm4, ymmword [r9 + 0x20]
vmovdqu8 ymm5, ymmword [rcx + 0x40]
vmovdqu8 ymmword [rcx + 0x20], ymm0
vpxor ymm0, ymm5, ymmword [r9 + 0x40]
vmovdqu8 ymm3, ymmword [rcx + 0x60]
vmovdqu8 ymmword [rcx + 0x40], ymm0
vpxor ymm0, ymm3, ymmword [r9 + 0x60]
vmovdqu8 ymm4, ymmword [rcx + 0x80]
vmovdqu8 ymmword [rcx + 0x60], ymm0
vpxor ymm0, ymm4, ymmword [r9 + 0x80]
vmovdqu8 ymm5, ymmword [rcx + 0xa0]
vmovdqu8 ymmword [rcx + 0x80], ymm0
vpxor ymm0, ymm5, ymmword [r9 + 0xa0]
vmovdqu8 ymmword [rcx + 0xa0], ymm0
vmovdqu8 ymm3, ymmword [r9 + 0xc0]
vpxor ymm0, ymm3, ymmword [rcx + 0xc0]
vmovdqu8 ymmword [rcx + 0xc0], ymm0
test r13d, r13d
je 0x5836a5
cmp r10d, 0xe
jbe 0x583554
vmovdqu8 xmm4, xmmword [rsp + r8 + 0x80]
vpxor xmm0, xmm4, xmmword [rcx]
vmovdqu8 xmmword [rcx], xmm0
test r13d, r13d
je 0x5836a5
movzx ecx, byte [rsp + r8 + 0x80]
xor byte [rdi + r8], cl
lea ecx, [rax + 1]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 2]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 3]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 4]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 5]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 6]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 7]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 8]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 9]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 0xa]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 0xb]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 0xc]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
xor byte [rdi + rcx], r8b
lea ecx, [rax + 0xd]
cmp r12d, ecx
jbe 0x5836a5
movzx r8d, byte [rsp + rcx + 0x80]
add eax, 0xe
xor byte [rdi + rcx], r8b
cmp r12d, eax
jbe 0x5836a5
movzx ecx, byte [rsp + rax + 0x80]
xor byte [rdi + rax], cl
mov rcx, qword [rsp + 0x20]
mov eax, r12d
add rcx, rax
mov qword [rsp + 0x28], rax
mov eax, esi
shr eax, 2
mov dword [rsp + 0x20], eax
je 0x58384b
lea r8d, [rax - 1]
cmp r8d, 2
jbe 0x583ccf
cmp r8d, 6
jbe 0x5837dd
vmovdqu ymm5, ymmword [rsp + 0x1c0]
lea eax, [r12 + 0x40]
add rax, rdx
vpxor ymm0, ymm5, ymmword [rax]
mov r9d, esi
shr r9d, 5
vmovdqu ymmword [rsp + 0x1c0], ymm0
cmp r9d, 1
je 0x5837c0
vmovdqu ymm3, ymmword [rsp + 0x1e0]
vpxor ymm0, ymm3, ymmword [rax + 0x20]
vmovdqu ymmword [rsp + 0x1e0], ymm0
cmp r9d, 2
je 0x5837c0
vmovdqu ymm4, ymmword [rsp + 0x200]
vpxor ymm0, ymm4, ymmword [rax + 0x40]
vmovdqu ymmword [rsp + 0x200], ymm0
cmp r9d, 3
je 0x5837c0
vmovdqu ymm5, ymmword [rsp + 0x220]
vpxor ymm0, ymm5, ymmword [rax + 0x60]
vmovdqu ymmword [rsp + 0x220], ymm0
cmp r9d, 4
je 0x5837c0
vmovdqu ymm3, ymmword [rsp + 0x240]
vpxor ymm0, ymm3, ymmword [rax + 0x80]
vmovdqu ymmword [rsp + 0x240], ymm0
cmp r9d, 5
je 0x5837c0
vmovdqu ymm4, ymmword [rsp + 0x260]
vpxor ymm0, ymm4, ymmword [rax + 0xa0]
vmovdqu ymmword [rsp + 0x260], ymm0
cmp r9d, 7
jne 0x5837c0
vmovdqu ymm5, ymmword [rax + 0xc0]
vpxor ymm0, ymm5, ymmword [rsp + 0x280]
vmovdqu ymmword [rsp + 0x280], ymm0
mov eax, dword [rsp + 0x20]
lea r15d, [r9*8]
cmp eax, r15d
je 0x58384b
sub r8d, r15d
sub eax, r15d
cmp r8d, 2
jbe 0x583819
lea r9d, [r15 + 0x10]
mov r11, qword [rsp + 0x28]
lea r9, [rsp + r9*4 + 0x300]
vmovdqu xmm0, xmmword [r11 + r9 - 0x2c0]
lea r8d, [r15 + 0x60]
lea r8, [rdx + r8*4]
vpxor xmm0, xmm0, xmmword [r8]
vmovdqu xmmword [r8], xmm0
mov r8d, eax
and r8d, 0xfffffffc
add r15d, r8d
cmp eax, r8d
je 0x58384b
mov eax, r15d
mov r8d, dword [rcx + rax*4]
mov r11d, dword [rsp + 0x20]
xor dword [rbx + rax*4], r8d
lea eax, [r15 + 1]
cmp r11d, eax
jbe 0x58384b
mov r8d, dword [rcx + rax*4]
xor dword [rbx + rax*4], r8d
lea eax, [r15 + 2]
cmp r11d, eax
jbe 0x58384b
mov r8d, dword [rcx + rax*4]
xor dword [rbx + rax*4], r8d
and r14d, 3
je 0x583a70
mov eax, esi
sub eax, r14d
cmp esi, eax
jbe 0x583a70
lea r15d, [r14 - 1]
mov r9d, eax
mov dword [rsp + 0x34], r15d
mov r8, r9
cmp r15d, 0xe
jbe 0x583b57
cmp r15d, 0x1e
jbe 0x583db2
lea r11, [r9 + 0x180]
lea r8, [rdx + r11]
lea r10d, [r12 + 0x40]
vmovdqu8 ymm3, ymmword [r8]
mov dword [rsp + 0x30], r10d
add r10, r9
add r10, rdx
vpxor ymm0, ymm3, ymmword [r10]
vmovdqu8 ymm4, ymmword [r8 + 0x20]
vmovdqu8 ymmword [r8], ymm0
vpxor ymm0, ymm4, ymmword [r10 + 0x20]
vmovdqu8 ymm5, ymmword [r8 + 0x40]
vmovdqu8 ymmword [r8 + 0x20], ymm0
vpxor ymm0, ymm5, ymmword [r10 + 0x40]
vmovdqu8 ymm3, ymmword [r8 + 0x60]
vmovdqu8 ymmword [r8 + 0x40], ymm0
vpxor ymm0, ymm3, ymmword [r10 + 0x60]
vmovdqu8 ymm4, ymmword [r8 + 0x80]
vmovdqu8 ymmword [r8 + 0x60], ymm0
vpxor ymm0, ymm4, ymmword [r10 + 0x80]
vmovdqu8 ymm5, ymmword [r8 + 0xa0]
vmovdqu8 ymmword [r8 + 0x80], ymm0
vpxor ymm0, ymm5, ymmword [r10 + 0xa0]
vmovdqu8 ymmword [r8 + 0xa0], ymm0
vmovdqu8 ymm0, ymmword [r10 + 0xc0]
vpxor ymm0, ymm0, ymmword [r8 + 0xc0]
vmovdqu8 ymmword [r8 + 0xc0], ymm0
test r14d, r14d
je 0x583a70
cmp dword [rsp + 0x34], 0xe
jbe 0x583971
add rdx, r11
mov r8d, dword [rsp + 0x30]
lea r11, [rsp + 0x300]
lea r10, [r11 + r9]
vmovdqu8 xmm3, xmmword [r8 + r10 - 0x2c0]
vpxor xmm0, xmm3, xmmword [rdx]
vmovdqu8 xmmword [rdx], xmm0
test r14d, r14d
je 0x583a70
movzx edx, byte [rcx + r9]
xor byte [rbx + r9], dl
lea edx, [rax + 1]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 2]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 3]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 4]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 5]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 6]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 7]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 8]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 9]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 0xa]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 0xb]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 0xc]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
xor byte [rbx + rdx], r8b
lea edx, [rax + 0xd]
cmp esi, edx
jbe 0x583a70
movzx r8d, byte [rcx + rdx]
add eax, 0xe
xor byte [rbx + rdx], r8b
cmp esi, eax
jbe 0x583a70
movzx edx, byte [rcx + rax]
xor byte [rbx + rax], dl
test ebp, ebp
je 0x583aac
mov eax, ebp
shl rax, 2
cmp eax, 0x20
jae 0x583b8f
test al, 0x10
jne 0x583e24
test al, 8
jne 0x583d78
test al, 4
jne 0x583dd1
test eax, eax
je 0x583aac
movzx eax, byte [rdi]
mov rcx, qword [rsp + 0x360]
mov byte [rcx], al
test r13d, r13d
je 0x583b87
mov edx, r12d
sub edx, r13d
cmp edx, r12d
jae 0x583b87
mov rcx, qword [rsp + 0x360]
lea eax, [r13 - 1]
add rcx, rdx
lea r8, [rax + 1]
add rdx, rdi
vzeroupper
call sub.msvcrt.dll_memcpy
mov rcx, qword [rsp + 0x28]
mov eax, dword [rsp + 0x20]
add rcx, qword [rsp + 0x360]
test eax, eax
je 0x583b29
mov eax, dword [rsp + 0x20]
shl rax, 2
cmp eax, 0x20
jae 0x583c3b
test al, 0x10
jne 0x583e03
test al, 8
jne 0x583d9d
test al, 4
jne 0x583df2
test eax, eax
je 0x583b29
movzx eax, byte [rbx]
mov byte [rcx], al
test r14d, r14d
je 0x58317e
mov edx, esi
sub edx, r14d
cmp esi, edx
jbe 0x58317e
lea eax, [r14 - 1]
add rcx, rdx
lea r8, [rax + 1]
add rdx, rbx
call sub.msvcrt.dll_memcpy
jmp 0x58317e
movzx eax, byte [rcx + r8]
xor byte [rbx + r8], al
inc r8
cmp esi, r8d
ja 0x583b57
jmp 0x583a70
test r12d, r12d
jne 0x5831e5
mov r12d, 0x100
sub r12d, esi
jmp 0x582e08
vzeroupper
jmp 0x583ae2
mov rdx, qword [rdi]
mov rcx, qword [rsp + 0x360]
mov r9, rdi
mov qword [rcx], rdx
mov rcx, qword [rsp + 0x360]
lea rdx, [rcx + rax + 8]
lea rcx, [rdi + rax + 8]
mov r8, qword [rcx - 0x28]
mov qword [rdx - 0x28], r8
mov r8, qword [rcx - 0x20]
mov qword [rdx - 0x20], r8
mov r8, qword [rcx - 0x18]
mov qword [rdx - 0x18], r8
mov rcx, qword [rcx - 0x10]
mov qword [rdx - 0x10], rcx
mov rcx, qword [rsp + 0x360]
mov rdx, qword [rsp + 0x360]
add rcx, 8
and rcx, 0xfffffffffffffff8
sub rdx, rcx
add eax, edx
and eax, 0xffffffe0
sub r9, rdx
cmp eax, 0x20
jb 0x583aac
and eax, 0xffffffe0
xor r8d, r8d
mov edx, r8d
mov r15, qword [r9 + rdx]
mov rbp, qword [r9 + rdx + 8]
mov r11, qword [r9 + rdx + 0x10]
mov r10, qword [r9 + rdx + 0x18]
add r8d, 0x20
mov qword [rcx + rdx], r15
mov qword [rcx + rdx + 8], rbp
mov qword [rcx + rdx + 0x10], r11
mov qword [rcx + rdx + 0x18], r10
cmp r8d, eax
jb 0x583c04
jmp 0x583aac
mov rdx, qword [rsp + 0x1c0]
lea r8, [rbx + rax + 8]
mov qword [rcx], rdx
lea rdx, [rcx + rax + 8]
mov r10, rbx
mov r9, qword [r8 - 0x28]
mov qword [rdx - 0x28], r9
mov r9, qword [r8 - 0x20]
mov qword [rdx - 0x20], r9
mov r9, qword [r8 - 0x18]
mov qword [rdx - 0x18], r9
mov r8, qword [r8 - 0x10]
mov qword [rdx - 0x10], r8
lea r8, [rcx + 8]
and r8, 0xfffffffffffffff8
mov rdx, rcx
sub rdx, r8
add eax, edx
and eax, 0xffffffe0
sub r10, rdx
cmp eax, 0x20
jb 0x583b29
and eax, 0xffffffe0
xor r9d, r9d
mov edx, r9d
mov r12, qword [r10 + rdx]
mov rbp, qword [r10 + rdx + 8]
mov rdi, qword [r10 + rdx + 0x10]
mov r11, qword [r10 + rdx + 0x18]
add r9d, 0x20
mov qword [r8 + rdx], r12
mov qword [r8 + rdx + 8], rbp
mov qword [r8 + rdx + 0x10], rdi
mov qword [r8 + rdx + 0x18], r11
cmp r9d, eax
jb 0x583c98
jmp 0x583b29
mov rax, rbx
mov r9, rcx
lea r8, [rsp + r8*4 + 0x1c4]
mov r10d, dword [r9]
add r9, 4
xor dword [rax], r10d
add rax, 4
cmp rax, r8
jne 0x583cdd
jmp 0x58384b
mov r8d, ebp
xor eax, eax
lea rdx, [rsp + 0x40]
mov ecx, dword [rdx + rax*4 + 0x40]
xor dword [rdi + rax*4], ecx
inc rax
cmp r8, rax
jne 0x583cff
jmp 0x58343f
vmovdqu8 xmm3, xmmword [rdi]
vmovdqu8 xmmword [rax], xmm3
vmovdqu8 xmm3, xmmword [rdi + rdx - 0x10]
vmovdqu8 xmmword [rax + rdx - 0x10], xmm3
jmp 0x5831dc
mov rcx, qword [rdi]
mov qword [rax], rcx
mov rcx, qword [rdi + rdx - 8]
mov qword [rax + rdx - 8], rcx
jmp 0x5831dc
mov ecx, dword [rdi]
mov dword [rax], ecx
mov ecx, dword [rdi + rdx - 4]
mov dword [rax + rdx - 4], ecx
jmp 0x5831dc
mov r9, r8
mov rax, qword [rsp + 0x20]
movzx eax, byte [rax + r9]
xor byte [rdi + r9], al
inc r9
cmp r12d, r9d
ja 0x583d5d
jmp 0x5836a5
mov rdx, qword [rdi]
mov rcx, qword [rsp + 0x360]
mov qword [rcx], rdx
mov rdx, qword [rdi + rax - 8]
mov rcx, qword [rsp + 0x360]
mov qword [rcx + rax - 8], rdx
jmp 0x583aac
mov rdx, qword [rbx]
mov qword [rcx], rdx
mov rdx, qword [rbx + rax - 8]
mov qword [rcx + rax - 8], rdx
jmp 0x583b29
lea r11d, [r12 + 0x40]
mov dword [rsp + 0x30], r11d
lea r11, [r9 + 0x180]
jmp 0x583942
mov ecx, ebp
xor eax, eax
jmp 0x5833d3
mov edx, dword [rdi]
mov rcx, qword [rsp + 0x360]
mov dword [rcx], edx
mov edx, dword [rdi + rax - 4]
mov rcx, qword [rsp + 0x360]
mov dword [rcx + rax - 4], edx
jmp 0x583aac
mov edx, dword [rbx]
mov dword [rcx], edx
mov edx, dword [rbx + rax - 4]
mov dword [rcx + rax - 4], edx
jmp 0x583b29
vmovdqu8 xmm4, xmmword [rbx]
vmovdqu8 xmmword [rcx], xmm4
vmovdqu8 xmm5, xmmword [rbx + rax - 0x10]
vmovdqu8 xmmword [rcx + rax - 0x10], xmm5
jmp 0x583b29
mov rcx, qword [rsp + 0x360]
vmovdqu8 xmm5, xmmword [rdi]
vmovdqu8 xmmword [rcx], xmm5
mov rcx, qword [rsp + 0x360]
vmovdqu8 xmm3, xmmword [rdi + rax - 0x10]
vmovdqu8 xmmword [rcx + rax - 0x10], xmm3
jmp 0x583aac