Function at 0x59f560
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x318
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 r9, qword [rcx + 0x38]
mov r13, qword [rcx + 8]
mov r15, qword [rcx + 0x48]
mov r14, qword [rcx + 0x40]
mov qword [rsp + 0x370], r8
mov r8, qword [rcx + 0x30]
mov qword [rsp + 0x90], r12
mov qword [rsp + 0x98], r13
mov qword [rsp + 0xa0], rsi
mov qword [rsp + 0xa8], rdi
mov qword [rsp + 0xb0], r10
mov qword [rsp + 0xb8], r11
mov qword [rsp + 0xc0], r8
mov qword [rsp + 0xc8], r9
mov qword [rsp + 0xd8], r15
mov qword [rsp + 0xe0], r12
mov qword [rsp + 0xe8], r13
mov qword [rsp + 0xf0], rsi
mov qword [rsp + 0xf8], rdi
mov qword [rsp + 0x100], r10
mov qword [rsp + 0x108], r11
mov qword [rsp + 0x110], r8
mov qword [rsp + 0x118], r9
mov qword [rsp + 0x128], r15
mov qword [rsp + 0x130], r12
mov qword [rsp + 0xd0], r14
mov qword [rsp + 0x120], r14
mov qword [rsp + 0x138], r13
mov rbx, qword [rdx + 0x18]
vmovdqu32 xmm5, xmmword [rcx]
mov qword [rsp + 0x140], rsi
mov rcx, qword [rdx + 0x10]
mov qword [rsp + 0x160], r8
mov qword [rsp + 0x168], r9
mov qword [rsp + 0x190], r12
mov qword [rsp + 0x198], r13
mov r12, qword [rdx + 0x20]
mov r13, qword [rdx + 0x28]
mov qword [rsp + 0x1a0], rsi
mov qword [rsp + 0x1c0], r8
mov rsi, qword [rdx + 0x30]
mov r8, qword [rdx]
mov qword [rsp + 0x1c8], r9
mov r9, qword [rdx + 8]
mov qword [rsp + 0x148], rdi
mov qword [rsp + 0x150], r10
mov qword [rsp + 0x158], r11
mov qword [rsp + 0x178], r15
mov qword [rsp + 0x1a8], rdi
mov qword [rsp + 0x1b0], r10
mov rdi, qword [rdx + 0x38]
mov qword [rsp + 0x1b8], r11
mov qword [rsp + 0x1f8], r13
vmovups xmmword [rsp + 0x180], xmm5
mov qword [rsp + 0x170], r14
mov qword [rsp + 0x1d0], r8
mov qword [rsp + 0x1d8], r9
mov qword [rsp + 0x1e0], rcx
mov qword [rsp + 0x1e8], rbx
mov qword [rsp + 0x1f0], r12
mov qword [rsp + 0x200], rsi
mov r10, qword [rdx + 0x40]
mov r11, qword [rdx + 0x48]
vmovdqu32 xmm5, xmmword [rdx]
lea rax, [rsp + 0x90]
mov qword [rsp + 0x248], r13
mov qword [rsp + 0x250], rsi
mov qword [rsp + 0x298], r13
mov qword [rsp + 0x2a0], rsi
mov qword [rsp + 0x208], rdi
mov qword [rsp + 0x210], r10
mov qword [rsp + 0x218], r11
mov qword [rsp + 0x220], r8
mov qword [rsp + 0x228], r9
mov qword [rsp + 0x230], rcx
mov qword [rsp + 0x238], rbx
mov qword [rsp + 0x240], r12
mov qword [rsp + 0x258], rdi
mov qword [rsp + 0x260], r10
mov qword [rsp + 0x268], r11
mov qword [rsp + 0x270], r8
mov qword [rsp + 0x278], r9
mov qword [rsp + 0x280], rcx
mov qword [rsp + 0x288], rbx
mov qword [rsp + 0x290], r12
mov qword [rsp + 0x2a8], rdi
mov qword [rsp + 0x2b0], r10
mov qword [rsp + 0x2b8], r11
mov qword [rsp + 0x2d0], r8
mov qword [rsp + 0x2d8], r9
mov qword [rsp + 0x2e0], rcx
mov qword [rsp + 0x2e8], rbx
mov qword [rsp + 0x28], rax
vmovups xmmword [rsp + 0x2c0], xmm5
mov r13d, 0x20
xor esi, esi
lea r15, [rsp + 0x2f0]
lea rbp, [rsp + 0x1d0]
jmp 0x59f85c
dec r13d
je 0x59f9f8
vzeroupper
mov rax, qword [rsp + 0x28]
lea rdx, [rbp + rsi]
lea rcx, [rax + rsi]
mov r8, r15
call fcn.0059e5d0
vmovdqu8 ymm0, ymmword [rsp + 0x2f0]
mov eax, dword [rsp + 0x2f0]
vpmovzxbw ymm2, xmm0
vextracti128 xmm1, ymm2, 1
vextracti128 xmm0, ymm0, 1
vpmovzxbw ymm0, xmm0
vpmovzxwd ymm2, xmm2
vpmovzxwd ymm1, xmm1
vpaddd ymm1, ymm1, ymm2
vextracti128 xmm2, ymm0, 1
vpmovzxwd ymm2, xmm2
vpmovzxwd ymm0, xmm0
vpaddd ymm0, ymm2, ymm0
vpaddd ymm0, ymm1, ymm0
vextracti128 xmm1, 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 esi, r14b
lea rbx, [rbp + rsi]
xor dword [rbx], eax
mov rdi, rsi
mov eax, dword [rsp + 0x2f4]
xor dword [rbx + 4], eax
mov eax, dword [rsp + 0x2f8]
xor dword [rbx + 8], eax
mov eax, dword [rsp + 0x2fc]
xor dword [rbx + 0xc], eax
mov eax, dword [rsp + 0x300]
xor dword [rbx + 0x10], eax
mov eax, dword [rsp + 0x304]
xor dword [rbx + 0x14], eax
mov eax, dword [rsp + 0x308]
xor dword [rbx + 0x18], eax
mov eax, dword [rsp + 0x30c]
xor dword [rbx + 0x1c], eax
test r14b, 0xe0
jne 0x59f95f
lea eax, [rsi + 0x100]
add rax, rbp
cmp esi, 0x20
jbe 0x59fbfc
vmovdqu xmm3, xmmword [rbx]
vmovups xmmword [rax], xmm3
vmovdqu xmm4, xmmword [rbx + 0x10]
vmovups xmmword [rax + 0x10], xmm4
mov r9d, 0x100
sub r9d, edi
cmp r9d, 0x1f
ja 0x59f850
lea r12d, [rdi - 0xe0]
mov eax, r12d
shr eax, 2
je 0x59f9a8
dec eax
lea rdx, [rsp + 0x2d0]
lea r8, [rax*4 + 4]
mov rcx, rbp
mov dword [rsp + 0x30], r9d
vzeroupper
call sub.msvcrt.dll_memmove
mov r9d, dword [rsp + 0x30]
mov edx, r12d
and edx, 3
je 0x59f850
mov eax, r12d
sub eax, edx
cmp r12d, eax
jbe 0x59f850
sub edx, r12d
lea r8d, [rdi + rdx - 0xe1]
lea rcx, [rbp + rax]
lea rdx, [rsp + rax + 0x2d0]
inc r8
mov dword [rsp + 0x30], r9d
vzeroupper
call sub.msvcrt.dll_memmove
mov r9d, dword [rsp + 0x30]
dec r13d
jne 0x59f859
mov r12d, r9d
cmp r9d, 0x100
jne 0x59fd60
vmovdqu32 ymm3, ymmword [rsp + 0x1d0]
vmovdqu32 ymm5, ymmword [rsp + 0x1f0]
vpxor ymm0, ymm3, ymmword [rsp + 0x90]
vmovdqu32 ymm3, ymmword [rsp + 0x210]
vmovdqu32 ymmword [rsp + 0x1d0], ymm0
vmovdqu32 xmm26, xmm0
vpxor ymm0, ymm5, ymmword [rsp + 0xb0]
vmovdqu32 ymm4, ymmword [rsp + 0x230]
vmovdqu32 ymmword [rsp + 0x1f0], ymm0
vmovdqu32 xmm24, xmm0
vpxor ymm0, ymm3, ymmword [rsp + 0xd0]
vmovdqu32 ymm5, ymmword [rsp + 0x250]
vmovdqu32 xmm22, xmm0
vmovdqu32 ymmword [rsp + 0x210], ymm0
vpxor ymm0, ymm4, ymmword [rsp + 0xf0]
vmovdqu32 ymm3, ymmword [rsp + 0x270]
vmovdqu32 xmm20, xmm0
vmovdqu32 ymmword [rsp + 0x230], ymm0
vpxor ymm0, ymm5, ymmword [rsp + 0x110]
vmovdqu32 ymm4, ymmword [rsp + 0x290]
vmovdqu32 xmm18, xmm0
vmovdqu32 ymmword [rsp + 0x250], ymm0
vpxor ymm0, ymm3, ymmword [rsp + 0x130]
vmovdqu32 ymm5, ymmword [rsp + 0x2b0]
vmovdqu32 xmm16, xmm0
vmovdqu32 ymmword [rsp + 0x270], ymm0
vpxor ymm0, ymm4, ymmword [rsp + 0x150]
mov rax, qword [rsp + 0x370]
vmovdqu xmm3, xmmword [rsp + 0x200]
vmovdqu xmm4, xmm0
vmovdqu32 ymmword [rsp + 0x290], ymm0
vpxor ymm0, ymm5, ymmword [rsp + 0x170]
vmovdqu xmm5, xmmword [rsp + 0x1e0]
vmovups xmmword [rax + 0x30], xmm3
vmovdqu32 ymmword [rsp + 0x2b0], ymm0
vmovdqu32 xmmword [rax], xmm26
vmovups xmmword [rax + 0x10], xmm5
vmovdqu32 xmmword [rax + 0x20], xmm24
vmovdqu32 xmmword [rax + 0x40], xmm22
vmovdqu xmm5, xmmword [rsp + 0x220]
vmovdqu xmm3, xmmword [rsp + 0x240]
vmovups xmmword [rax + 0xc0], xmm4
vmovdqu xmm4, xmmword [rsp + 0x2a0]
vmovups xmmword [rax + 0x50], xmm5
vmovups xmmword [rax + 0x70], xmm3
vmovdqu xmm5, xmmword [rsp + 0x260]
vmovdqu xmm3, xmmword [rsp + 0x280]
vmovups xmmword [rax + 0xd0], xmm4
vmovdqu xmm4, xmmword [rsp + 0x2c0]
vmovdqu32 xmmword [rax + 0x60], xmm20
vmovdqu32 xmmword [rax + 0x80], xmm18
vmovups xmmword [rax + 0x90], xmm5
vmovdqu32 xmmword [rax + 0xa0], xmm16
vmovups xmmword [rax + 0xb0], xmm3
vmovups xmmword [rax + 0xe0], xmm0
vmovups xmmword [rax + 0xf0], xmm4
vzeroupper
add rsp, 0x318
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r10d, 0x20
sub r10d, esi
mov r11d, r10d
mov edx, r10d
and r11d, 3
shr edx, 2
je 0x5a0438
dec edx
lea r9, [rdx*4 + 4]
mov edx, r9d
cmp r9d, 0x20
jae 0x59fc89
and r9d, 0x10
jne 0x5a0595
test dl, 8
jne 0x5a05b2
test dl, 4
jne 0x5a05c7
test edx, edx
jne 0x59fd3f
test r11d, r11d
je 0x59f95f
mov edx, r10d
sub edx, r11d
cmp r10d, edx
jbe 0x59f95f
lea rcx, [rax + rdx]
mov eax, 0x1f
lea eax, [r11 + rax - 0x20]
add rdx, rbx
lea r8, [rax + 1]
vzeroupper
call sub.msvcrt.dll_memcpy
jmp 0x59f95f
mov rdx, qword [rbx]
mov ecx, r9d
mov qword [rax], rdx
lea rdx, [rax + rcx + 8]
lea rcx, [rbx + rcx + 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 r8, rbx
mov rcx, qword [rcx - 0x10]
mov qword [rdx - 0x10], rcx
lea rcx, [rax + 8]
and rcx, 0xfffffffffffffff8
mov rdx, rax
sub rdx, rcx
sub r8, rdx
add edx, r9d
and edx, 0xffffffe0
cmp edx, 0x20
jb 0x59fc4f
and edx, 0xffffffe0
mov dword [rsp + 0x30], edx
mov dword [rsp + 0x44], esi
mov qword [rsp + 0x48], rax
xor r9d, r9d
vmovd dword [rsp + 0x38], xmm0
mov edx, r9d
mov r14, qword [r8 + rdx + 8]
mov r12, qword [r8 + rdx + 0x10]
mov rdi, qword [r8 + rdx + 0x18]
mov rax, qword [r8 + rdx]
mov qword [rcx + rdx + 8], r14
mov qword [rcx + rdx], rax
mov qword [rcx + rdx + 0x10], r12
mov qword [rcx + rdx + 0x18], rdi
add r9d, 0x20
cmp r9d, dword [rsp + 0x30]
jb 0x59fcf8
mov r14d, dword [rsp + 0x38]
mov edi, dword [rsp + 0x44]
mov rax, qword [rsp + 0x48]
jmp 0x59fc4f
movzx ecx, byte [rbx]
mov byte [rax], cl
test dl, 2
je 0x59fc4f
movzx ecx, word [rbx + rdx - 2]
mov word [rax + rdx - 2], cx
jmp 0x59fc4f
mov r13d, r9d
shr r13d, 2
je 0x59ff0a
lea rax, [rbx + 0x20]
cmp qword [rsp + 0x28], rax
lea rax, [rsp + 0xb0]
setae dl
cmp rbx, rax
setae al
or dl, al
lea ecx, [r13 - 1]
je 0x5a05d8
cmp ecx, 6
jbe 0x5a05d8
vmovdqu32 ymm3, ymmword [rbx]
mov eax, r9d
vpxor ymm0, ymm3, ymmword [rsp + 0x90]
shr eax, 5
vmovdqu32 ymmword [rbx], ymm0
cmp eax, 1
je 0x59fe6a
vmovdqu32 ymm4, ymmword [rbx + 0x20]
vpxor ymm0, ymm4, ymmword [rsp + 0xb0]
vmovdqu32 ymmword [rbx + 0x20], ymm0
cmp eax, 2
je 0x59fe6a
vmovdqu32 ymm5, ymmword [rbx + 0x40]
vpxor ymm0, ymm5, ymmword [rsp + 0xd0]
vmovdqu32 ymmword [rbx + 0x40], ymm0
cmp eax, 3
je 0x59fe6a
vmovdqu32 ymm3, ymmword [rbx + 0x60]
vpxor ymm0, ymm3, ymmword [rsp + 0xf0]
vmovdqu32 ymmword [rbx + 0x60], ymm0
cmp eax, 4
je 0x59fe6a
vmovdqu32 ymm4, ymmword [rbx + 0x80]
vpxor ymm0, ymm4, ymmword [rsp + 0x110]
vmovdqu32 ymmword [rbx + 0x80], ymm0
cmp eax, 5
je 0x59fe6a
vmovdqu32 ymm5, ymmword [rbx + 0xa0]
vpxor ymm0, ymm5, ymmword [rsp + 0x130]
vmovdqu32 ymmword [rbx + 0xa0], ymm0
cmp eax, 7
jne 0x59fe6a
vmovdqu32 ymm3, ymmword [rsp + 0x150]
vpxor ymm0, ymm3, ymmword [rbx + 0xc0]
vmovdqu32 ymmword [rbx + 0xc0], ymm0
shl eax, 3
cmp r13d, eax
je 0x59ff0a
mov edx, eax
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x90]
xor dword [rbx + rdx], ecx
lea edx, [rax + 1]
cmp r13d, edx
jbe 0x59ff0a
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x90]
xor dword [rbx + rdx], ecx
lea edx, [rax + 2]
cmp r13d, edx
jbe 0x59ff0a
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x90]
xor dword [rbx + rdx], ecx
lea edx, [rax + 3]
cmp r13d, edx
jbe 0x59ff0a
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x90]
xor dword [rbx + rdx], ecx
lea edx, [rax + 4]
cmp r13d, edx
jbe 0x59ff0a
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x90]
xor dword [rbx + rdx], ecx
lea edx, [rax + 5]
cmp r13d, edx
jbe 0x59ff0a
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x90]
add eax, 6
xor dword [rbx + rdx], ecx
cmp r13d, eax
jbe 0x59ff0a
shl rax, 2
mov edx, dword [rsp + rax + 0x90]
xor dword [rbx + rax], edx
lea rax, [rsp + 0x50]
mov r15d, r12d
and r15d, 3
je 0x5a001e
mov ecx, r12d
sub ecx, r15d
cmp ecx, r12d
jae 0x5a001e
mov edx, ecx
lea r11, [rbx + rdx + 0x20]
lea r9, [rax + rdx + 0x40]
cmp r9, r11
lea r8, [rbx + rdx]
lea r11, [rax + rdx + 0x60]
setae sil
cmp r8, r11
setae r11b
or sil, r11b
mov r10, rdx
je 0x5a061e
lea r11d, [r15 - 1]
cmp r11d, 0x1e
jbe 0x5a061e
vmovdqu8 ymm4, ymmword [r8]
vmovdqu8 ymm5, ymmword [r8 + 0x20]
vpxor ymm0, ymm4, ymmword [r9]
vmovdqu8 ymm3, ymmword [r8 + 0x40]
vmovdqu8 ymmword [r8], ymm0
vpxor ymm0, ymm5, ymmword [r9 + 0x20]
vmovdqu8 ymm4, ymmword [r8 + 0x60]
vmovdqu8 ymmword [r8 + 0x20], ymm0
vpxor ymm0, ymm3, ymmword [r9 + 0x40]
vmovdqu8 ymm5, ymmword [r8 + 0x80]
vmovdqu8 ymmword [r8 + 0x40], ymm0
vpxor ymm0, ymm4, ymmword [r9 + 0x60]
vmovdqu8 ymm3, ymmword [r8 + 0xa0]
vmovdqu8 ymmword [r8 + 0x60], ymm0
vpxor ymm0, ymm5, ymmword [r9 + 0x80]
vmovdqu8 ymmword [r8 + 0x80], ymm0
vpxor ymm0, ymm3, ymmword [r9 + 0xa0]
vmovdqu8 ymmword [r8 + 0xa0], ymm0
vmovdqu8 ymm4, ymmword [r9 + 0xc0]
vpxor ymm0, ymm4, ymmword [r8 + 0xc0]
vmovdqu8 ymmword [r8 + 0xc0], ymm0
test r15d, r15d
jne 0x5a000a
jmp 0x5a001e
mov edx, ecx
movzx r8d, byte [rsp + rdx + 0x90]
inc ecx
xor byte [rbx + rdx], r8b
cmp ecx, r12d
jb 0x5a0008
mov rdx, qword [rsp + 0x28]
mov esi, r12d
mov ecx, edi
add rdx, rsi
shr ecx, 2
mov dword [rsp + 0x28], ecx
je 0x5a01f1
lea r9, [rax + rsi + 0x60]
cmp rbp, r9
lea r8d, [rcx - 1]
lea r9, [rsp + 0x1f0]
lea rcx, [rax + rsi + 0x40]
setae r10b
cmp rcx, r9
setae r9b
or r10b, r9b
je 0x5a05f8
cmp r8d, 6
jbe 0x5a05f8
vmovdqu32 ymm5, ymmword [rsp + 0x1d0]
mov r8d, edi
vpxor ymm0, ymm5, ymmword [rcx]
shr r8d, 5
vmovdqu32 ymmword [rsp + 0x1d0], ymm0
cmp r8d, 1
je 0x5a0168
vmovdqu32 ymm3, ymmword [rsp + 0x1f0]
vpxor ymm0, ymm3, ymmword [rcx + 0x20]
vmovdqu32 ymmword [rsp + 0x1f0], ymm0
cmp r8d, 2
je 0x5a0168
vmovdqu32 ymm4, ymmword [rsp + 0x210]
vpxor ymm0, ymm4, ymmword [rcx + 0x40]
vmovdqu32 ymmword [rsp + 0x210], ymm0
cmp r8d, 3
je 0x5a0168
vmovdqu32 ymm5, ymmword [rsp + 0x230]
vpxor ymm0, ymm5, ymmword [rcx + 0x60]
vmovdqu32 ymmword [rsp + 0x230], ymm0
cmp r8d, 4
je 0x5a0168
vmovdqu32 ymm3, ymmword [rsp + 0x250]
vpxor ymm0, ymm3, ymmword [rcx + 0x80]
vmovdqu32 ymmword [rsp + 0x250], ymm0
cmp r8d, 5
je 0x5a0168
vmovdqu32 ymm4, ymmword [rsp + 0x270]
vpxor ymm0, ymm4, ymmword [rcx + 0xa0]
vmovdqu32 ymmword [rsp + 0x270], ymm0
cmp r8d, 7
jne 0x5a0168
vmovdqu32 ymm5, ymmword [rcx + 0xc0]
vpxor ymm0, ymm5, ymmword [rsp + 0x290]
vmovdqu32 ymmword [rsp + 0x290], ymm0
mov r11d, dword [rsp + 0x28]
lea ecx, [r8*8]
cmp r11d, ecx
je 0x5a01f1
mov r8d, ecx
mov r9d, dword [rdx + r8*4]
xor dword [rbp + r8*4], r9d
lea r8d, [rcx + 1]
cmp r11d, r8d
jbe 0x5a01f1
mov r9d, dword [rdx + r8*4]
xor dword [rbp + r8*4], r9d
lea r8d, [rcx + 2]
cmp r11d, r8d
jbe 0x5a01f1
mov r9d, dword [rdx + r8*4]
xor dword [rbp + r8*4], r9d
lea r8d, [rcx + 3]
cmp r11d, r8d
jbe 0x5a01f1
mov r9d, dword [rdx + r8*4]
xor dword [rbp + r8*4], r9d
lea r8d, [rcx + 4]
cmp r11d, r8d
jbe 0x5a01f1
mov r9d, dword [rdx + r8*4]
xor dword [rbp + r8*4], r9d
lea r8d, [rcx + 5]
cmp r11d, r8d
jbe 0x5a01f1
mov r9d, dword [rdx + r8*4]
add ecx, 6
xor dword [rbp + r8*4], r9d
cmp r11d, ecx
jbe 0x5a01f1
mov r8d, dword [rdx + rcx*4]
xor dword [rbp + rcx*4], r8d
mov r11d, r14d
and r11d, 3
je 0x5a0313
mov r8d, edi
sub r8d, r11d
cmp edi, r8d
jbe 0x5a0313
mov ecx, r8d
lea r9, [rsi + rcx + 0x40]
mov qword [rsp + 0x30], r9
lea r14, [rcx + 0x180]
lea r9, [rsi + rcx + 0x60]
cmp r14, r9
lea r9, [rcx + 0x1a0]
mov qword [rsp + 0x38], r14
setge r14b
cmp qword [rsp + 0x30], r9
setge r9b
or r14b, r9b
mov r10, rcx
je 0x5a0416
lea r9d, [r11 - 1]
cmp r9d, 0x1e
jbe 0x5a0416
mov r14, qword [rsp + 0x38]
add r14, rax
vmovdqu8 ymm3, ymmword [r14]
add rax, qword [rsp + 0x30]
vpxor ymm0, ymm3, ymmword [rax]
vmovdqu8 ymm4, ymmword [r14 + 0x20]
vmovdqu8 ymmword [r14], ymm0
vpxor ymm0, ymm4, ymmword [rax + 0x20]
vmovdqu8 ymm5, ymmword [r14 + 0x40]
vmovdqu8 ymmword [r14 + 0x20], ymm0
vpxor ymm0, ymm5, ymmword [rax + 0x40]
vmovdqu8 ymm3, ymmword [r14 + 0x60]
vmovdqu8 ymmword [r14 + 0x40], ymm0
vpxor ymm0, ymm3, ymmword [rax + 0x60]
vmovdqu8 ymm4, ymmword [r14 + 0x80]
vmovdqu8 ymmword [r14 + 0x60], ymm0
vpxor ymm0, ymm4, ymmword [rax + 0x80]
vmovdqu8 ymm5, ymmword [r14 + 0xa0]
vmovdqu8 ymmword [r14 + 0x80], ymm0
vpxor ymm0, ymm5, ymmword [rax + 0xa0]
vmovdqu8 ymmword [r14 + 0xa0], ymm0
vmovdqu8 ymm0, ymmword [rax + 0xc0]
vpxor ymm0, ymm0, ymmword [r14 + 0xc0]
vmovdqu8 ymmword [r14 + 0xc0], ymm0
test r11d, r11d
jne 0x5a0303
jmp 0x5a0313
mov ecx, r8d
movzx eax, byte [rdx + rcx]
inc r8d
xor byte [rbp + rcx], al
cmp edi, r8d
ja 0x5a0300
test r13d, r13d
je 0x5a035e
lea eax, [r13 - 1]
lea r13, [rax*4 + 4]
cmp r13d, 0x20
jae 0x5a0457
test r13b, 0x10
jne 0x5a06d3
test r13b, 8
jne 0x5a0651
test r13b, 4
jne 0x5a06ad
test r13d, r13d
je 0x5a035e
movzx eax, byte [rbx]
mov rcx, qword [rsp + 0x370]
mov byte [rcx], al
test r15d, r15d
je 0x5a044f
mov edx, r12d
sub edx, r15d
cmp edx, r12d
jae 0x5a044f
mov rcx, qword [rsp + 0x370]
lea eax, [r15 - 1]
add rcx, rdx
lea r8, [rax + 1]
add rdx, rbx
mov dword [rsp + 0x30], r11d
vzeroupper
call sub.msvcrt.dll_memcpy
mov r11d, dword [rsp + 0x30]
mov eax, dword [rsp + 0x28]
add rsi, qword [rsp + 0x370]
test eax, eax
je 0x5a03e7
mov eax, dword [rsp + 0x28]
dec eax
lea rax, [rax*4 + 4]
cmp eax, 0x20
jae 0x5a04ff
test al, 0x10
jne 0x5a068d
test al, 8
jne 0x5a0639
test al, 4
jne 0x5a0679
test eax, eax
je 0x5a03e7
movzx eax, byte [rbp]
mov byte [rsi], al
test r11d, r11d
je 0x59fbe8
mov edx, edi
sub edx, r11d
cmp edi, edx
jbe 0x59fbe8
lea eax, [r11 - 1]
lea rcx, [rsi + rdx]
lea r8, [rax + 1]
add rdx, rbp
call sub.msvcrt.dll_memcpy
jmp 0x59fbe8
lea rcx, [rbp + r10]
movzx eax, byte [rcx]
xor al, byte [rdx + r10]
inc r10
mov byte [rcx], al
cmp edi, r10d
ja 0x5a0416
jmp 0x5a0313
test r11d, r11d
jne 0x59fc58
mov r9d, 0x100
sub r9d, edi
jmp 0x59f850
vzeroupper
jmp 0x5a039e
mov rax, qword [rbx]
mov rcx, qword [rsp + 0x370]
mov edx, r13d
mov qword [rcx], rax
mov r8, rbx
mov rax, qword [rsp + 0x370]
lea rax, [rax + rdx + 8]
lea rdx, [rbx + rdx + 8]
mov rcx, qword [rdx - 0x28]
mov qword [rax - 0x28], rcx
mov rcx, qword [rdx - 0x20]
mov qword [rax - 0x20], rcx
mov rcx, qword [rdx - 0x18]
mov qword [rax - 0x18], rcx
mov rdx, qword [rdx - 0x10]
mov qword [rax - 0x10], rdx
mov rax, qword [rsp + 0x370]
lea rdx, [rax + 8]
and rdx, 0xfffffffffffffff8
sub rax, rdx
add r13d, eax
and r13d, 0xffffffe0
sub r8, rax
cmp r13d, 0x20
jb 0x5a035e
and r13d, 0xffffffe0
xor ecx, ecx
mov eax, ecx
mov r14, qword [r8 + rax]
mov r10, qword [r8 + rax + 0x10]
mov r9, qword [r8 + rax + 0x18]
mov qword [rdx + rax], r14
add ecx, 0x20
mov r14, qword [r8 + rax + 8]
mov qword [rdx + rax + 0x10], r10
mov qword [rdx + rax + 8], r14
mov qword [rdx + rax + 0x18], r9
cmp ecx, r13d
jb 0x5a04ca
jmp 0x5a035e
mov rdx, qword [rsp + 0x1d0]
mov ecx, eax
mov qword [rsi], rdx
lea rdx, [rsi + rcx + 8]
lea rcx, [rbp + rcx + 8]
mov r8, qword [rcx - 0x28]
mov r9, rbp
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
lea rcx, [rsi + 8]
and rcx, 0xfffffffffffffff8
mov rdx, rsi
sub rdx, rcx
add eax, edx
and eax, 0xffffffe0
sub r9, rdx
cmp eax, 0x20
jb 0x5a03e7
and eax, 0xffffffe0
xor r8d, r8d
mov edx, r8d
mov r13, qword [r9 + rdx]
mov r12, qword [r9 + rdx + 8]
mov rbx, qword [r9 + rdx + 0x10]
mov r10, qword [r9 + rdx + 0x18]
add r8d, 0x20
mov qword [rcx + rdx], r13
mov qword [rcx + rdx + 8], r12
mov qword [rcx + rdx + 0x10], rbx
mov qword [rcx + rdx + 0x18], r10
cmp r8d, eax
jb 0x5a055e
jmp 0x5a03e7
vmovdqu8 xmm3, xmmword [rbx]
vmovups xmmword [rax], xmm3
vmovdqu8 xmm4, xmmword [rbx + rdx - 0x10]
vmovups xmmword [rax + rdx - 0x10], xmm4
jmp 0x59fc4f
mov rcx, qword [rbx]
mov qword [rax], rcx
mov rcx, qword [rbx + rdx - 8]
mov qword [rax + rdx - 8], rcx
jmp 0x59fc4f
mov ecx, dword [rbx]
mov dword [rax], ecx
mov ecx, dword [rbx + rdx - 4]
mov dword [rax + rdx - 4], ecx
jmp 0x59fc4f
xor edx, edx
lea rax, [rsp + 0x50]
mov r8d, dword [rax + rdx*4 + 0x40]
xor dword [rbx + rdx*4], r8d
mov r8, rdx
inc rdx
cmp rcx, r8
jne 0x5a05df
jmp 0x59ff0f
mov rcx, rbp
mov r9, rdx
lea r8, [rsp + r8*4 + 0x1d4]
mov r10d, dword [r9]
add r9, 4
xor dword [rcx], r10d
add rcx, 4
cmp r8, rcx
jne 0x5a0606
jmp 0x5a01f1
mov rcx, qword [rsp + 0x28]
movzx edx, byte [rcx + r10]
xor byte [rbx + r10], dl
inc r10
cmp r12d, r10d
ja 0x5a0623
jmp 0x5a001e
mov rdx, qword [rbp]
mov eax, eax
mov qword [rsi], rdx
mov rdx, qword [rbp + rax - 8]
mov qword [rsi + rax - 8], rdx
jmp 0x5a03e7
mov rax, qword [rbx]
mov rcx, qword [rsp + 0x370]
mov r13d, r13d
mov qword [rcx], rax
mov rax, qword [rbx + r13 - 8]
mov rcx, qword [rsp + 0x370]
mov qword [rcx + r13 - 8], rax
jmp 0x5a035e
mov edx, dword [rbp]
mov eax, eax
mov dword [rsi], edx
mov edx, dword [rbp + rax - 4]
mov dword [rsi + rax - 4], edx
jmp 0x5a03e7
vmovdqu8 xmm3, xmmword [rbp]
mov eax, eax
vmovups xmmword [rsi], xmm3
vmovdqu8 xmm4, xmmword [rbp + rax - 0x10]
vmovups xmmword [rsi + rax - 0x10], xmm4
jmp 0x5a03e7
mov eax, dword [rbx]
mov rcx, qword [rsp + 0x370]
mov r13d, r13d
mov dword [rcx], eax
mov eax, dword [rbx + r13 - 4]
mov rcx, qword [rsp + 0x370]
mov dword [rcx + r13 - 4], eax
jmp 0x5a035e
mov rax, qword [rsp + 0x370]
vmovdqu8 xmm4, xmmword [rbx]
mov r13d, r13d
vmovups xmmword [rax], xmm4
mov rax, qword [rsp + 0x370]
vmovdqu8 xmm5, xmmword [rbx + r13 - 0x10]
vmovups xmmword [rax + r13 - 0x10], xmm5
jmp 0x5a035e