Function at 0x508e20
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 r12, qword [rcx]
mov rsi, qword [rcx + 0x10]
mov rdi, qword [rcx + 0x18]
mov r10, qword [rcx + 0x20]
mov r11, qword [rcx + 0x28]
mov qword [rsp + 0x360], r8
lea rbp, [rsp + 0x1c0]
mov r8, qword [rcx + 0x30]
mov qword [rsp + 0x80], r12
mov r9, qword [rcx + 0x38]
mov qword [rsp + 0x90], rsi
mov r13, qword [rcx + 8]
mov qword [rsp + 0x98], rdi
mov r15, qword [rcx + 0x48]
mov qword [rsp + 0xa0], r10
mov r14, qword [rcx + 0x40]
mov qword [rsp + 0xa8], r11
mov qword [rsp + 0xb0], r8
mov qword [rsp + 0x88], r13
mov qword [rsp + 0xb8], r9
mov qword [rsp + 0xc8], r15
mov qword [rsp + 0xd0], r12
mov qword [rsp + 0xd8], r13
mov qword [rsp + 0xe0], rsi
mov qword [rsp + 0xe8], rdi
mov qword [rsp + 0xf0], r10
mov qword [rsp + 0xf8], r11
mov qword [rsp + 0x100], r8
mov qword [rsp + 0x108], r9
mov qword [rsp + 0x118], r15
mov qword [rsp + 0x120], r12
mov qword [rsp + 0xc0], r14
mov qword [rsp + 0x110], r14
mov qword [rsp + 0x128], r13
mov rbx, qword [rdx + 0x18]
vmovdqu xmm5, xmmword [rcx]
mov qword [rsp + 0x130], rsi
mov rcx, qword [rdx + 0x10]
mov qword [rsp + 0x150], r8
mov qword [rsp + 0x158], r9
mov qword [rsp + 0x180], r12
mov r12, qword [rdx + 0x20]
mov qword [rsp + 0x188], r13
mov r13, qword [rdx + 0x28]
mov qword [rsp + 0x190], rsi
mov rsi, qword [rdx + 0x30]
mov qword [rsp + 0x1b0], r8
mov r8, qword [rdx]
mov qword [rsp + 0x1b8], r9
mov r9, qword [rdx + 8]
mov qword [rsp + 0x138], rdi
mov qword [rsp + 0x140], r10
mov qword [rsp + 0x148], r11
mov qword [rsp + 0x168], r15
lea r15, [rsp + 0x2e0]
vmovups xmmword [rsp + 0x170], xmm5
mov qword [rsp + 0x198], rdi
mov rdi, qword [rdx + 0x38]
mov qword [rsp + 0x1a0], r10
mov qword [rsp + 0x1a8], r11
mov qword [rsp + 0x1e0], r12
mov qword [rsp + 0x1e8], r13
mov qword [rsp + 0x160], r14
mov qword [rsp + 0x1c0], r8
mov qword [rsp + 0x1c8], r9
mov qword [rsp + 0x1d0], rcx
mov qword [rsp + 0x1d8], rbx
mov qword [rsp + 0x1f0], rsi
mov r10, qword [rdx + 0x40]
mov r11, qword [rdx + 0x48]
mov qword [rsp + 0x1f8], rdi
vmovdqu xmm5, xmmword [rdx]
mov qword [rsp + 0x230], r12
mov qword [rsp + 0x238], r13
mov qword [rsp + 0x248], rdi
mov qword [rsp + 0x280], r12
mov r12d, 0x20
mov qword [rsp + 0x288], r13
lea r13, [rsp + 0x80]
mov qword [rsp + 0x298], rdi
xor edi, edi
mov qword [rsp + 0x200], r10
mov qword [rsp + 0x208], r11
mov qword [rsp + 0x210], r8
mov qword [rsp + 0x218], r9
mov qword [rsp + 0x220], rcx
mov qword [rsp + 0x228], rbx
mov qword [rsp + 0x240], rsi
mov qword [rsp + 0x250], r10
mov qword [rsp + 0x258], r11
mov qword [rsp + 0x260], r8
mov qword [rsp + 0x268], r9
mov qword [rsp + 0x270], rcx
mov qword [rsp + 0x278], rbx
mov qword [rsp + 0x290], rsi
mov qword [rsp + 0x2a0], r10
mov qword [rsp + 0x2a8], r11
vmovups xmmword [rsp + 0x2b0], xmm5
mov qword [rsp + 0x2c0], r8
mov qword [rsp + 0x2c8], r9
mov qword [rsp + 0x2d0], rcx
mov qword [rsp + 0x2d8], rbx
jmp 0x509112
sub r12d, 1
je 0x5092e7
lea rdx, [rbp + rdi]
mov r8, r15
lea rcx, [r13 + rdi]
call fcn.00507f20
mov eax, dword [rsp + 0x2e0]
vmovdqu xmm2, xmmword [rsp + 0x2e0]
vmovdqu xmm1, xmmword [rsp + 0x2f0]
vpmovzxbw xmm3, xmm2
vpsrldq xmm2, xmm2, 8
vpmovzxwd xmm0, xmm3
vpsrldq xmm3, xmm3, 8
vpmovzxbw xmm2, xmm2
vpmovzxwd xmm3, xmm3
vpmovzxbw xmm4, xmm1
vpaddd xmm0, xmm0, xmm3
vpsrldq xmm1, xmm1, 8
vpmovzxwd xmm3, xmm2
vpsrldq xmm2, xmm2, 8
vpmovzxbw xmm1, xmm1
vpmovzxwd xmm2, xmm2
vpaddd xmm2, xmm3, xmm2
vpaddd xmm0, xmm0, xmm2
vpsrldq xmm2, xmm4, 8
vpmovzxwd xmm4, xmm4
vpmovzxwd xmm2, xmm2
vpaddd xmm2, xmm2, xmm4
vpaddd xmm0, xmm0, xmm2
vpmovzxwd xmm2, xmm1
vpsrldq xmm1, xmm1, 8
vpmovzxwd xmm1, xmm1
vpaddd xmm1, xmm2, xmm1
vpaddd xmm0, xmm0, xmm1
vpsrldq xmm1, xmm0, 8
vpaddd xmm0, xmm0, xmm1
vpsrldq xmm1, xmm0, 4
vpaddd xmm0, xmm0, xmm1
vmovd esi, xmm0
movzx edi, sil
lea rbx, [rbp + rdi]
mov r14, rdi
xor dword [rbx], eax
mov eax, dword [rsp + 0x2e4]
xor dword [rbx + 4], eax
mov eax, dword [rsp + 0x2e8]
xor dword [rbx + 8], eax
mov eax, dword [rsp + 0x2ec]
xor dword [rbx + 0xc], eax
mov eax, dword [rsp + 0x2f0]
xor dword [rbx + 0x10], eax
mov eax, dword [rsp + 0x2f4]
xor dword [rbx + 0x14], eax
mov eax, dword [rsp + 0x2f8]
xor dword [rbx + 0x18], eax
mov eax, dword [rsp + 0x2fc]
xor dword [rbx + 0x1c], eax
test sil, 0xe0
jne 0x509247
lea eax, [rdi + 0x100]
add rax, rbp
cmp edi, 0x20
jbe 0x50960a
vmovdqu xmm5, xmmword [rbx]
vmovups xmmword [rax], xmm5
vmovdqu xmm5, xmmword [rbx + 0x10]
vmovups xmmword [rax + 0x10], xmm5
mov r10d, 0x100
sub r10d, r14d
cmp r10d, 0x1f
ja 0x509108
lea r9d, [r14 - 0xe0]
mov eax, r9d
shr eax, 2
je 0x509298
sub eax, 1
mov rcx, rbp
mov dword [rsp + 0x38], r10d
lea rdx, [rsp + 0x2c0]
mov dword [rsp + 0x28], r9d
lea r8, [rax*4 + 4]
call sub.msvcrt.dll_memmove
mov r9d, dword [rsp + 0x28]
mov r10d, dword [rsp + 0x38]
mov edx, r9d
and edx, 3
je 0x509108
mov eax, r9d
sub eax, edx
cmp r9d, eax
jbe 0x509108
lea rcx, [rbp + rax]
sub edx, r9d
mov dword [rsp + 0x28], r10d
lea r8d, [r14 + rdx - 0xe1]
lea rdx, [rsp + rax + 0x2c0]
add r8, 1
call sub.msvcrt.dll_memmove
mov r10d, dword [rsp + 0x28]
sub r12d, 1
jne 0x509112
cmp r10d, 0x100
jne 0x5096d0
vmovdqu xmm5, xmmword [rsp + 0x1c0]
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x1d0], 1
vmovdqu xmm5, xmmword [rsp + 0x80]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0x90], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x1c0], xmm0
vmovdqu xmm5, xmmword [rsp + 0x1e0]
vextractf128 xmmword [rsp + 0x1d0], ymm0, 1
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x1f0], 1
vmovdqu xmm5, xmmword [rsp + 0xa0]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0xb0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x1e0], xmm0
vmovdqu xmm5, xmmword [rsp + 0x200]
vextractf128 xmmword [rsp + 0x1f0], ymm0, 1
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x210], 1
vmovdqu xmm5, xmmword [rsp + 0xc0]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0xd0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x200], xmm0
vmovdqu xmm5, xmmword [rsp + 0x220]
vextractf128 xmmword [rsp + 0x210], ymm0, 1
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x230], 1
vmovdqu xmm5, xmmword [rsp + 0xe0]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0xf0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x220], xmm0
vmovdqu xmm5, xmmword [rsp + 0x240]
vextractf128 xmmword [rsp + 0x230], ymm0, 1
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x250], 1
vmovdqu xmm5, xmmword [rsp + 0x100]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0x110], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x240], xmm0
vmovdqu xmm5, xmmword [rsp + 0x120]
vextractf128 xmmword [rsp + 0x250], ymm0, 1
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x130], 1
vmovdqu xmm5, xmmword [rsp + 0x260]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0x270], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x260], xmm0
mov rax, qword [rsp + 0x360]
vextractf128 xmmword [rsp + 0x270], ymm0, 1
vmovdqu xmm5, xmmword [rsp + 0x140]
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x150], 1
vmovdqu xmm5, xmmword [rsp + 0x280]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0x290], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x280], xmm0
vmovdqu xmm5, xmmword [rsp + 0x2a0]
vextractf128 xmmword [rsp + 0x290], ymm0, 1
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x2b0], 1
vmovdqu xmm5, xmmword [rsp + 0x160]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0x170], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x2a0], xmm0
vmovdqu xmm5, xmmword [rsp + 0x1c0]
vextractf128 xmmword [rsp + 0x2b0], ymm0, 1
vmovups xmmword [rax], xmm5
vmovdqu xmm5, xmmword [rsp + 0x1d0]
vmovups xmmword [rax + 0x10], xmm5
vmovdqu xmm5, xmmword [rsp + 0x1e0]
vmovups xmmword [rax + 0x20], xmm5
vmovdqu xmm5, xmmword [rsp + 0x1f0]
vmovups xmmword [rax + 0x30], xmm5
vmovdqu xmm5, xmmword [rsp + 0x200]
vmovups xmmword [rax + 0x40], xmm5
vmovdqu xmm5, xmmword [rsp + 0x210]
vmovups xmmword [rax + 0x50], xmm5
vmovdqu xmm5, xmmword [rsp + 0x220]
vmovups xmmword [rax + 0x60], xmm5
vmovdqu xmm5, xmmword [rsp + 0x230]
vmovups xmmword [rax + 0x70], xmm5
vmovdqu xmm5, xmmword [rsp + 0x240]
vmovups xmmword [rax + 0x80], xmm5
vmovdqu xmm5, xmmword [rsp + 0x250]
vmovups xmmword [rax + 0x90], xmm5
vmovdqu xmm5, xmmword [rsp + 0x260]
vmovups xmmword [rax + 0xa0], xmm5
vmovdqu xmm5, xmmword [rsp + 0x270]
vmovups xmmword [rax + 0xb0], xmm5
vmovdqu xmm5, xmmword [rsp + 0x280]
vmovups xmmword [rax + 0xc0], xmm5
vmovdqu xmm5, xmmword [rsp + 0x290]
vmovups xmmword [rax + 0xd0], xmm5
vmovdqu xmm5, xmmword [rsp + 0x2a0]
vmovups xmmword [rax + 0xe0], xmm5
vmovdqu xmm5, xmmword [rsp + 0x2b0]
vmovups xmmword [rax + 0xf0], xmm5
vzeroupper
add rsp, 0x308
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, 0x20
sub ecx, edi
mov r8d, ecx
mov edx, ecx
and r8d, 3
shr edx, 2
je 0x50a0a0
sub edx, 1
lea r9, [rdx*4 + 4]
mov edx, r9d
cmp r9d, 8
jae 0x50967a
and r9d, 4
jne 0x50a0fe
test edx, edx
jne 0x5096ac
test r8d, r8d
je 0x509247
mov edx, ecx
sub edx, r8d
cmp ecx, edx
jbe 0x509247
lea rcx, [rax + rdx]
mov eax, 0x1f
add rdx, rbx
lea eax, [r8 + rax - 0x20]
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
jmp 0x509247
mov edx, r9d
mov r10, qword [rbx + rdx - 8]
mov qword [rax + rdx - 8], r10
lea edx, [r9 - 1]
cmp edx, 8
jb 0x509645
and edx, 0xfffffff8
xor r9d, r9d
mov r10d, r9d
add r9d, 8
mov r11, qword [rbx + r10]
mov qword [rax + r10], r11
cmp r9d, edx
jb 0x509696
jmp 0x509645
movzx r9d, byte [rbx]
mov byte [rax], r9b
test dl, 2
je 0x509645
movzx r9d, word [rbx + rdx - 2]
mov word [rax + rdx - 2], r9w
jmp 0x509645
mov r15d, r10d
shr r15d, 2
je 0x509950
lea rax, [rbx + 0x20]
lea ecx, [r15 - 1]
cmp r13, rax
lea rax, [rsp + 0xa0]
setae dl
cmp rbx, rax
setae al
or dl, al
je 0x50a0b7
cmp ecx, 6
jbe 0x50a0b7
mov eax, r10d
vmovdqu xmm5, xmmword [rbx]
vinsertf128 ymm1, ymm5, xmmword [rbx + 0x10], 1
vmovdqu xmm5, xmmword [rsp + 0x80]
shr eax, 5
vinsertf128 ymm0, ymm5, xmmword [rsp + 0x90], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rbx], xmm0
vextractf128 xmmword [rbx + 0x10], ymm0, 1
cmp eax, 1
je 0x5098b0
vmovdqu xmm5, xmmword [rbx + 0x20]
vinsertf128 ymm1, ymm5, xmmword [rbx + 0x30], 1
vmovdqu xmm5, xmmword [rsp + 0xa0]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0xb0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x20], xmm0
vextractf128 xmmword [rbx + 0x30], ymm0, 1
cmp eax, 2
je 0x5098b0
vmovdqu xmm5, xmmword [rbx + 0x40]
vinsertf128 ymm1, ymm5, xmmword [rbx + 0x50], 1
vmovdqu xmm5, xmmword [rsp + 0xc0]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0xd0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x40], xmm0
vextractf128 xmmword [rbx + 0x50], ymm0, 1
cmp eax, 3
je 0x5098b0
vmovdqu xmm5, xmmword [rbx + 0x60]
vinsertf128 ymm1, ymm5, xmmword [rbx + 0x70], 1
vmovdqu xmm5, xmmword [rsp + 0xe0]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0xf0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x60], xmm0
vextractf128 xmmword [rbx + 0x70], ymm0, 1
cmp eax, 4
je 0x5098b0
vmovdqu xmm5, xmmword [rbx + 0x80]
vinsertf128 ymm1, ymm5, xmmword [rbx + 0x90], 1
vmovdqu xmm5, xmmword [rsp + 0x100]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0x110], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x80], xmm0
vextractf128 xmmword [rbx + 0x90], ymm0, 1
cmp eax, 5
je 0x5098b0
vmovdqu xmm5, xmmword [rbx + 0xa0]
vinsertf128 ymm1, ymm5, xmmword [rbx + 0xb0], 1
vmovdqu xmm5, xmmword [rsp + 0x120]
vinsertf128 ymm0, ymm5, xmmword [rsp + 0x130], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0xa0], xmm0
vextractf128 xmmword [rbx + 0xb0], ymm0, 1
cmp eax, 7
jne 0x5098b0
vmovdqu xmm5, xmmword [rsp + 0x140]
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x150], 1
vmovdqu xmm5, xmmword [rbx + 0xc0]
vinsertf128 ymm0, ymm5, xmmword [rbx + 0xd0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0xc0], xmm0
vextractf128 xmmword [rbx + 0xd0], ymm0, 1
shl eax, 3
cmp r15d, eax
je 0x509950
mov edx, eax
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 1]
cmp r15d, edx
jbe 0x509950
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 2]
cmp r15d, edx
jbe 0x509950
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 3]
cmp r15d, edx
jbe 0x509950
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 4]
cmp r15d, edx
jbe 0x509950
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 5]
cmp r15d, edx
jbe 0x509950
shl rdx, 2
add eax, 6
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
cmp r15d, eax
jbe 0x509950
shl rax, 2
mov edx, dword [rsp + rax + 0x80]
xor dword [rbx + rax], edx
lea rax, [rsp + 0x40]
mov r9d, r10d
and r9d, 3
je 0x509b27
mov r8d, r10d
sub r8d, r9d
cmp r8d, r10d
jae 0x509b27
mov ecx, r8d
lea r12, [rbx + rcx + 0x20]
mov qword [rsp + 0x28], rcx
lea r11, [rax + rcx + 0x40]
lea rdx, [rbx + rcx]
cmp r11, r12
setae byte [rsp + 0x38]
movzx edi, byte [rsp + 0x38]
lea r12, [rax + rcx + 0x60]
cmp rdx, r12
setae r12b
or dil, r12b
je 0x50a11b
lea r12d, [r9 - 1]
cmp r12d, 0x1e
jbe 0x50a11b
vmovdqu xmm5, xmmword [rdx]
vinsertf128 ymm0, ymm5, xmmword [rdx + 0x10], 1
vmovdqu xmm5, xmmword [r11]
vinsertf128 ymm1, ymm5, xmmword [r11 + 0x10], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rdx], xmm0
vextractf128 xmmword [rdx + 0x10], ymm0, 1
vmovdqu xmm5, xmmword [rdx + 0x20]
vinsertf128 ymm0, ymm5, xmmword [rdx + 0x30], 1
vmovdqu xmm5, xmmword [r11 + 0x20]
vinsertf128 ymm1, ymm5, xmmword [r11 + 0x30], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x20], xmm0
vextractf128 xmmword [rdx + 0x30], ymm0, 1
vmovdqu xmm5, xmmword [rdx + 0x40]
vinsertf128 ymm0, ymm5, xmmword [rdx + 0x50], 1
vmovdqu xmm5, xmmword [r11 + 0x40]
vinsertf128 ymm1, ymm5, xmmword [r11 + 0x50], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x40], xmm0
vextractf128 xmmword [rdx + 0x50], ymm0, 1
vmovdqu xmm5, xmmword [rdx + 0x60]
vinsertf128 ymm0, ymm5, xmmword [rdx + 0x70], 1
vmovdqu xmm5, xmmword [r11 + 0x60]
vinsertf128 ymm1, ymm5, xmmword [r11 + 0x70], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x60], xmm0
vmovdqu xmm5, xmmword [rdx + 0x80]
vextractf128 xmmword [rdx + 0x70], ymm0, 1
vinsertf128 ymm0, ymm5, xmmword [rdx + 0x90], 1
vmovdqu xmm5, xmmword [r11 + 0x80]
vinsertf128 ymm1, ymm5, xmmword [r11 + 0x90], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x80], xmm0
vmovdqu xmm5, xmmword [rdx + 0xa0]
vextractf128 xmmword [rdx + 0x90], ymm0, 1
vinsertf128 ymm0, ymm5, xmmword [rdx + 0xb0], 1
vmovdqu xmm4, xmmword [r11 + 0xa0]
vinsertf128 ymm1, ymm4, xmmword [r11 + 0xb0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0xa0], xmm0
vmovdqu xmm4, xmmword [rdx + 0xc0]
vextractf128 xmmword [rdx + 0xb0], ymm0, 1
vinsertf128 ymm1, ymm4, xmmword [rdx + 0xd0], 1
vmovdqu xmm5, xmmword [r11 + 0xc0]
vinsertf128 ymm0, ymm5, xmmword [r11 + 0xd0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0xc0], xmm0
vextractf128 xmmword [rdx + 0xd0], ymm0, 1
test r9d, r9d
jne 0x509b13
jmp 0x509b27
mov ecx, r8d
add r8d, 1
movzx edx, byte [rsp + rcx + 0x80]
xor byte [rbx + rcx], dl
cmp r8d, r10d
jb 0x509b10
mov edi, r10d
mov r12d, r14d
add r13, rdi
shr r12d, 2
je 0x509dc5
lea r8, [rax + rdi + 0x60]
lea rdx, [rax + rdi + 0x40]
cmp rbp, r8
lea r8, [rsp + 0x1e0]
setae r11b
lea ecx, [r12 - 1]
cmp rdx, r8
setae r8b
or r11b, r8b
je 0x50a0d8
cmp ecx, 6
jbe 0x50a0d8
mov ecx, r14d
vmovdqu xmm4, xmmword [rdx]
vinsertf128 ymm0, ymm4, xmmword [rdx + 0x10], 1
vmovdqu xmm5, xmmword [rsp + 0x1c0]
shr ecx, 5
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x1d0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x1c0], xmm0
vextractf128 xmmword [rsp + 0x1d0], ymm0, 1
cmp ecx, 1
je 0x509d42
vmovdqu xmm4, xmmword [rdx + 0x20]
vinsertf128 ymm0, ymm4, xmmword [rdx + 0x30], 1
vmovdqu xmm5, xmmword [rsp + 0x1e0]
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x1f0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x1e0], xmm0
vextractf128 xmmword [rsp + 0x1f0], ymm0, 1
cmp ecx, 2
je 0x509d42
vmovdqu xmm4, xmmword [rdx + 0x40]
vinsertf128 ymm0, ymm4, xmmword [rdx + 0x50], 1
vmovdqu xmm5, xmmword [rsp + 0x200]
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x210], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x200], xmm0
vextractf128 xmmword [rsp + 0x210], ymm0, 1
cmp ecx, 3
je 0x509d42
vmovdqu xmm4, xmmword [rdx + 0x60]
vinsertf128 ymm0, ymm4, xmmword [rdx + 0x70], 1
vmovdqu xmm5, xmmword [rsp + 0x220]
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x230], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x220], xmm0
vextractf128 xmmword [rsp + 0x230], ymm0, 1
cmp ecx, 4
je 0x509d42
vmovdqu xmm4, xmmword [rdx + 0x80]
vinsertf128 ymm0, ymm4, xmmword [rdx + 0x90], 1
vmovdqu xmm5, xmmword [rsp + 0x240]
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x250], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x240], xmm0
vextractf128 xmmword [rsp + 0x250], ymm0, 1
cmp ecx, 5
je 0x509d42
vmovdqu xmm4, xmmword [rdx + 0xa0]
vinsertf128 ymm0, ymm4, xmmword [rdx + 0xb0], 1
vmovdqu xmm5, xmmword [rsp + 0x260]
vinsertf128 ymm1, ymm5, xmmword [rsp + 0x270], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x260], xmm0
vextractf128 xmmword [rsp + 0x270], ymm0, 1
cmp ecx, 7
jne 0x509d42
vmovdqu xmm5, xmmword [rdx + 0xc0]
vinsertf128 ymm1, ymm5, xmmword [rdx + 0xd0], 1
vmovdqu xmm4, xmmword [rsp + 0x280]
vinsertf128 ymm0, ymm4, xmmword [rsp + 0x290], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x280], xmm0
vextractf128 xmmword [rsp + 0x290], ymm0, 1
lea edx, [rcx*8]
cmp r12d, edx
je 0x509dc5
mov ecx, edx
mov r8d, dword [r13 + rcx*4]
xor dword [rbp + rcx*4], r8d
lea ecx, [rdx + 1]
cmp r12d, ecx
jbe 0x509dc5
mov r8d, dword [r13 + rcx*4]
xor dword [rbp + rcx*4], r8d
lea ecx, [rdx + 2]
cmp r12d, ecx
jbe 0x509dc5
mov r8d, dword [r13 + rcx*4]
xor dword [rbp + rcx*4], r8d
lea ecx, [rdx + 3]
cmp r12d, ecx
jbe 0x509dc5
mov r8d, dword [r13 + rcx*4]
xor dword [rbp + rcx*4], r8d
lea ecx, [rdx + 4]
cmp r12d, ecx
jbe 0x509dc5
mov r8d, dword [r13 + rcx*4]
xor dword [rbp + rcx*4], r8d
lea ecx, [rdx + 5]
cmp r12d, ecx
jbe 0x509dc5
add edx, 6
mov r8d, dword [r13 + rcx*4]
xor dword [rbp + rcx*4], r8d
cmp r12d, edx
jbe 0x509dc5
mov ecx, dword [r13 + rdx*4]
xor dword [rbp + rdx*4], ecx
and esi, 3
mov dword [rsp + 0x28], esi
je 0x509fbf
mov ecx, r14d
sub ecx, dword [rsp + 0x28]
cmp r14d, ecx
jbe 0x509fbf
mov edx, ecx
mov dword [rsp + 0x38], ecx
lea r11, [rdx + 0x180]
mov r8, rdx
lea rsi, [rdi + rdx + 0x40]
mov rcx, r11
lea r11, [rdi + rdx + 0x60]
mov qword [rsp + 0x30], rcx
cmp rcx, r11
setge byte [rsp + 0x3f]
movzx ecx, byte [rsp + 0x3f]
lea r11, [rdx + 0x1a0]
cmp r11, rsi
setle r11b
or cl, r11b
je 0x50a081
mov ecx, dword [rsp + 0x28]
mov r11d, ecx
sub r11d, 1
cmp r11d, 0x1e
jbe 0x50a081
mov r8, qword [rsp + 0x30]
add r8, rax
add rax, rsi
vmovdqu xmm4, xmmword [rax]
vinsertf128 ymm1, ymm4, xmmword [rax + 0x10], 1
vmovdqu xmm5, xmmword [r8]
vinsertf128 ymm0, ymm5, xmmword [r8 + 0x10], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [r8], xmm0
vextractf128 xmmword [r8 + 0x10], ymm0, 1
vmovdqu xmm5, xmmword [r8 + 0x20]
vinsertf128 ymm0, ymm5, xmmword [r8 + 0x30], 1
vmovdqu xmm4, xmmword [rax + 0x20]
vinsertf128 ymm1, ymm4, xmmword [rax + 0x30], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [r8 + 0x20], xmm0
vextractf128 xmmword [r8 + 0x30], ymm0, 1
vmovdqu xmm5, xmmword [r8 + 0x40]
vinsertf128 ymm0, ymm5, xmmword [r8 + 0x50], 1
vmovdqu xmm4, xmmword [rax + 0x40]
vinsertf128 ymm1, ymm4, xmmword [rax + 0x50], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [r8 + 0x40], xmm0
vextractf128 xmmword [r8 + 0x50], ymm0, 1
vmovdqu xmm5, xmmword [r8 + 0x60]
vinsertf128 ymm0, ymm5, xmmword [r8 + 0x70], 1
vmovdqu xmm4, xmmword [rax + 0x60]
vinsertf128 ymm1, ymm4, xmmword [rax + 0x70], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [r8 + 0x60], xmm0
vmovdqu xmm5, xmmword [r8 + 0x80]
vextractf128 xmmword [r8 + 0x70], ymm0, 1
vinsertf128 ymm0, ymm5, xmmword [r8 + 0x90], 1
vmovdqu xmm4, xmmword [rax + 0x80]
vinsertf128 ymm1, ymm4, xmmword [rax + 0x90], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [r8 + 0x80], xmm0
vmovdqu xmm5, xmmword [r8 + 0xa0]
vextractf128 xmmword [r8 + 0x90], ymm0, 1
vinsertf128 ymm0, ymm5, xmmword [r8 + 0xb0], 1
vmovdqu xmm4, xmmword [rax + 0xa0]
vinsertf128 ymm1, ymm4, xmmword [rax + 0xb0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [r8 + 0xa0], xmm0
vextractf128 xmmword [r8 + 0xb0], ymm0, 1
vmovdqu xmm5, xmmword [r8 + 0xc0]
vinsertf128 ymm0, ymm5, xmmword [r8 + 0xd0], 1
vmovdqu xmm4, xmmword [rax + 0xc0]
vinsertf128 ymm1, ymm4, xmmword [rax + 0xd0], 1
vxorps ymm0, ymm0, ymm1
vmovups xmmword [r8 + 0xc0], xmm0
vextractf128 xmmword [r8 + 0xd0], ymm0, 1
test ecx, ecx
je 0x509fbf
mov ecx, dword [rsp + 0x38]
jmp 0x509fad
mov edx, ecx
add ecx, 1
movzx eax, byte [r13 + rdx]
xor byte [rbp + rdx], al
cmp r14d, ecx
ja 0x509fab
test r15d, r15d
je 0x50a113
mov rcx, qword [rsp + 0x360]
lea eax, [r15 - 1]
mov rdx, rbx
lea r8, [rax*4 + 4]
mov dword [rsp + 0x30], r9d
mov dword [rsp + 0x38], r10d
vzeroupper
call sub.msvcrt.dll_memcpy
mov r10d, dword [rsp + 0x38]
mov r9d, dword [rsp + 0x30]
test r9d, r9d
je 0x50a026
mov edx, r10d
sub edx, r9d
cmp edx, r10d
jae 0x50a026
mov rcx, qword [rsp + 0x360]
lea eax, [r9 - 1]
lea r8, [rax + 1]
add rcx, rdx
add rdx, rbx
call sub.msvcrt.dll_memcpy
add rdi, qword [rsp + 0x360]
test r12d, r12d
je 0x50a04b
mov rdx, rbp
mov rcx, rdi
lea eax, [r12 - 1]
lea r8, [rax*4 + 4]
call sub.msvcrt.dll_memcpy
mov eax, dword [rsp + 0x28]
test eax, eax
je 0x5095f6
mov eax, dword [rsp + 0x28]
mov edx, r14d
sub edx, eax
cmp r14d, edx
jbe 0x5095f6
lea rcx, [rdi + rdx]
sub eax, 1
add rdx, rbp
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
jmp 0x5095f6
movzx eax, byte [r13 + r8]
xor byte [rbp + r8], al
add r8, 1
cmp r14d, r8d
ja 0x50a081
jmp 0x509fbf
test r8d, r8d
jne 0x50964e
mov r10d, 0x100
sub r10d, r14d
jmp 0x509108
lea rax, [rsp + 0x40]
xor edx, edx
mov r8d, dword [rax + rdx*4 + 0x40]
xor dword [rbx + rdx*4], r8d
mov r8, rdx
add rdx, 1
cmp rcx, r8
jne 0x50a0be
jmp 0x509955
lea rcx, [rsp + rcx*4 + 0x1c4]
mov rdx, rbp
mov r8, r13
mov r11d, dword [r8]
add r8, 4
xor dword [rdx], r11d
add rdx, 4
cmp rdx, rcx
jne 0x50a0e6
jmp 0x509dc5
mov r9d, dword [rbx]
mov dword [rax], r9d
mov r9d, dword [rbx + rdx - 4]
mov dword [rax + rdx - 4], r9d
jmp 0x509645
vzeroupper
jmp 0x509ffb
mov rdi, rcx
movzx edx, byte [r13 + rdi]
xor byte [rbx + rdi], dl
add rdi, 1
cmp r10d, edi
ja 0x50a11e
jmp 0x509b27