Function at 0x59d350
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 0x59d64c
dec r13d
je 0x59d7e8
vzeroupper
mov rax, qword [rsp + 0x28]
lea rdx, [rbp + rsi]
lea rcx, [rax + rsi]
mov r8, r15
call fcn.0059c3c0
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 0x59d74f
lea eax, [rsi + 0x100]
add rax, rbp
cmp esi, 0x20
jbe 0x59d9ec
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 0x59d640
lea r12d, [rdi - 0xe0]
mov eax, r12d
shr eax, 2
je 0x59d798
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 0x59d640
mov eax, r12d
sub eax, edx
cmp r12d, eax
jbe 0x59d640
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 0x59d649
mov r12d, r9d
cmp r9d, 0x100
jne 0x59db50
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 0x59e228
dec edx
lea r9, [rdx*4 + 4]
mov edx, r9d
cmp r9d, 0x20
jae 0x59da79
and r9d, 0x10
jne 0x59e385
test dl, 8
jne 0x59e3a2
test dl, 4
jne 0x59e3b7
test edx, edx
jne 0x59db2f
test r11d, r11d
je 0x59d74f
mov edx, r10d
sub edx, r11d
cmp r10d, edx
jbe 0x59d74f
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 0x59d74f
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 0x59da3f
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 0x59dae8
mov r14d, dword [rsp + 0x38]
mov edi, dword [rsp + 0x44]
mov rax, qword [rsp + 0x48]
jmp 0x59da3f
movzx ecx, byte [rbx]
mov byte [rax], cl
test dl, 2
je 0x59da3f
movzx ecx, word [rbx + rdx - 2]
mov word [rax + rdx - 2], cx
jmp 0x59da3f
mov r13d, r9d
shr r13d, 2
je 0x59dcfa
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 0x59e3c8
cmp ecx, 6
jbe 0x59e3c8
vmovdqu32 ymm3, ymmword [rbx]
mov eax, r9d
vpxor ymm0, ymm3, ymmword [rsp + 0x90]
shr eax, 5
vmovdqu32 ymmword [rbx], ymm0
cmp eax, 1
je 0x59dc5a
vmovdqu32 ymm4, ymmword [rbx + 0x20]
vpxor ymm0, ymm4, ymmword [rsp + 0xb0]
vmovdqu32 ymmword [rbx + 0x20], ymm0
cmp eax, 2
je 0x59dc5a
vmovdqu32 ymm5, ymmword [rbx + 0x40]
vpxor ymm0, ymm5, ymmword [rsp + 0xd0]
vmovdqu32 ymmword [rbx + 0x40], ymm0
cmp eax, 3
je 0x59dc5a
vmovdqu32 ymm3, ymmword [rbx + 0x60]
vpxor ymm0, ymm3, ymmword [rsp + 0xf0]
vmovdqu32 ymmword [rbx + 0x60], ymm0
cmp eax, 4
je 0x59dc5a
vmovdqu32 ymm4, ymmword [rbx + 0x80]
vpxor ymm0, ymm4, ymmword [rsp + 0x110]
vmovdqu32 ymmword [rbx + 0x80], ymm0
cmp eax, 5
je 0x59dc5a
vmovdqu32 ymm5, ymmword [rbx + 0xa0]
vpxor ymm0, ymm5, ymmword [rsp + 0x130]
vmovdqu32 ymmword [rbx + 0xa0], ymm0
cmp eax, 7
jne 0x59dc5a
vmovdqu32 ymm3, ymmword [rsp + 0x150]
vpxor ymm0, ymm3, ymmword [rbx + 0xc0]
vmovdqu32 ymmword [rbx + 0xc0], ymm0
shl eax, 3
cmp r13d, eax
je 0x59dcfa
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 0x59dcfa
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x90]
xor dword [rbx + rdx], ecx
lea edx, [rax + 2]
cmp r13d, edx
jbe 0x59dcfa
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x90]
xor dword [rbx + rdx], ecx
lea edx, [rax + 3]
cmp r13d, edx
jbe 0x59dcfa
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x90]
xor dword [rbx + rdx], ecx
lea edx, [rax + 4]
cmp r13d, edx
jbe 0x59dcfa
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x90]
xor dword [rbx + rdx], ecx
lea edx, [rax + 5]
cmp r13d, edx
jbe 0x59dcfa
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x90]
add eax, 6
xor dword [rbx + rdx], ecx
cmp r13d, eax
jbe 0x59dcfa
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 0x59de0e
mov ecx, r12d
sub ecx, r15d
cmp ecx, r12d
jae 0x59de0e
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 0x59e40e
lea r11d, [r15 - 1]
cmp r11d, 0x1e
jbe 0x59e40e
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 0x59ddfa
jmp 0x59de0e
mov edx, ecx
movzx r8d, byte [rsp + rdx + 0x90]
inc ecx
xor byte [rbx + rdx], r8b
cmp ecx, r12d
jb 0x59ddf8
mov rdx, qword [rsp + 0x28]
mov esi, r12d
mov ecx, edi
add rdx, rsi
shr ecx, 2
mov dword [rsp + 0x28], ecx
je 0x59dfe1
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 0x59e3e8
cmp r8d, 6
jbe 0x59e3e8
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 0x59df58
vmovdqu32 ymm3, ymmword [rsp + 0x1f0]
vpxor ymm0, ymm3, ymmword [rcx + 0x20]
vmovdqu32 ymmword [rsp + 0x1f0], ymm0
cmp r8d, 2
je 0x59df58
vmovdqu32 ymm4, ymmword [rsp + 0x210]
vpxor ymm0, ymm4, ymmword [rcx + 0x40]
vmovdqu32 ymmword [rsp + 0x210], ymm0
cmp r8d, 3
je 0x59df58
vmovdqu32 ymm5, ymmword [rsp + 0x230]
vpxor ymm0, ymm5, ymmword [rcx + 0x60]
vmovdqu32 ymmword [rsp + 0x230], ymm0
cmp r8d, 4
je 0x59df58
vmovdqu32 ymm3, ymmword [rsp + 0x250]
vpxor ymm0, ymm3, ymmword [rcx + 0x80]
vmovdqu32 ymmword [rsp + 0x250], ymm0
cmp r8d, 5
je 0x59df58
vmovdqu32 ymm4, ymmword [rsp + 0x270]
vpxor ymm0, ymm4, ymmword [rcx + 0xa0]
vmovdqu32 ymmword [rsp + 0x270], ymm0
cmp r8d, 7
jne 0x59df58
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 0x59dfe1
mov r8d, ecx
mov r9d, dword [rdx + r8*4]
xor dword [rbp + r8*4], r9d
lea r8d, [rcx + 1]
cmp r11d, r8d
jbe 0x59dfe1
mov r9d, dword [rdx + r8*4]
xor dword [rbp + r8*4], r9d
lea r8d, [rcx + 2]
cmp r11d, r8d
jbe 0x59dfe1
mov r9d, dword [rdx + r8*4]
xor dword [rbp + r8*4], r9d
lea r8d, [rcx + 3]
cmp r11d, r8d
jbe 0x59dfe1
mov r9d, dword [rdx + r8*4]
xor dword [rbp + r8*4], r9d
lea r8d, [rcx + 4]
cmp r11d, r8d
jbe 0x59dfe1
mov r9d, dword [rdx + r8*4]
xor dword [rbp + r8*4], r9d
lea r8d, [rcx + 5]
cmp r11d, r8d
jbe 0x59dfe1
mov r9d, dword [rdx + r8*4]
add ecx, 6
xor dword [rbp + r8*4], r9d
cmp r11d, ecx
jbe 0x59dfe1
mov r8d, dword [rdx + rcx*4]
xor dword [rbp + rcx*4], r8d
mov r11d, r14d
and r11d, 3
je 0x59e103
mov r8d, edi
sub r8d, r11d
cmp edi, r8d
jbe 0x59e103
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 0x59e206
lea r9d, [r11 - 1]
cmp r9d, 0x1e
jbe 0x59e206
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 0x59e0f3
jmp 0x59e103
mov ecx, r8d
movzx eax, byte [rdx + rcx]
inc r8d
xor byte [rbp + rcx], al
cmp edi, r8d
ja 0x59e0f0
test r13d, r13d
je 0x59e14e
lea eax, [r13 - 1]
lea r13, [rax*4 + 4]
cmp r13d, 0x20
jae 0x59e247
test r13b, 0x10
jne 0x59e4c3
test r13b, 8
jne 0x59e441
test r13b, 4
jne 0x59e49d
test r13d, r13d
je 0x59e14e
movzx eax, byte [rbx]
mov rcx, qword [rsp + 0x370]
mov byte [rcx], al
test r15d, r15d
je 0x59e23f
mov edx, r12d
sub edx, r15d
cmp edx, r12d
jae 0x59e23f
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 0x59e1d7
mov eax, dword [rsp + 0x28]
dec eax
lea rax, [rax*4 + 4]
cmp eax, 0x20
jae 0x59e2ef
test al, 0x10
jne 0x59e47d
test al, 8
jne 0x59e429
test al, 4
jne 0x59e469
test eax, eax
je 0x59e1d7
movzx eax, byte [rbp]
mov byte [rsi], al
test r11d, r11d
je 0x59d9d8
mov edx, edi
sub edx, r11d
cmp edi, edx
jbe 0x59d9d8
lea eax, [r11 - 1]
lea rcx, [rsi + rdx]
lea r8, [rax + 1]
add rdx, rbp
call sub.msvcrt.dll_memcpy
jmp 0x59d9d8
lea rcx, [rbp + r10]
movzx eax, byte [rcx]
xor al, byte [rdx + r10]
inc r10
mov byte [rcx], al
cmp edi, r10d
ja 0x59e206
jmp 0x59e103
test r11d, r11d
jne 0x59da48
mov r9d, 0x100
sub r9d, edi
jmp 0x59d640
vzeroupper
jmp 0x59e18e
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 0x59e14e
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 0x59e2ba
jmp 0x59e14e
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 0x59e1d7
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 0x59e34e
jmp 0x59e1d7
vmovdqu8 xmm3, xmmword [rbx]
vmovups xmmword [rax], xmm3
vmovdqu8 xmm4, xmmword [rbx + rdx - 0x10]
vmovups xmmword [rax + rdx - 0x10], xmm4
jmp 0x59da3f
mov rcx, qword [rbx]
mov qword [rax], rcx
mov rcx, qword [rbx + rdx - 8]
mov qword [rax + rdx - 8], rcx
jmp 0x59da3f
mov ecx, dword [rbx]
mov dword [rax], ecx
mov ecx, dword [rbx + rdx - 4]
mov dword [rax + rdx - 4], ecx
jmp 0x59da3f
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 0x59e3cf
jmp 0x59dcff
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 0x59e3f6
jmp 0x59dfe1
mov rcx, qword [rsp + 0x28]
movzx edx, byte [rcx + r10]
xor byte [rbx + r10], dl
inc r10
cmp r12d, r10d
ja 0x59e413
jmp 0x59de0e
mov rdx, qword [rbp]
mov eax, eax
mov qword [rsi], rdx
mov rdx, qword [rbp + rax - 8]
mov qword [rsi + rax - 8], rdx
jmp 0x59e1d7
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 0x59e14e
mov edx, dword [rbp]
mov eax, eax
mov dword [rsi], edx
mov edx, dword [rbp + rax - 4]
mov dword [rsi + rax - 4], edx
jmp 0x59e1d7
vmovdqu8 xmm3, xmmword [rbp]
mov eax, eax
vmovups xmmword [rsi], xmm3
vmovdqu8 xmm4, xmmword [rbp + rax - 0x10]
vmovups xmmword [rsi + rax - 0x10], xmm4
jmp 0x59e1d7
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 0x59e14e
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 0x59e14e