Function at 0x54a110
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 r9, qword [rcx + 0x38]
mov r13, qword [rcx + 8]
mov r14, qword [rcx + 0x40]
mov r15, qword [rcx + 0x48]
mov qword [rsp + 0x360], r8
lea rax, [rsp + 0x80]
mov r8, qword [rcx + 0x30]
mov qword [rsp + 0x80], r12
mov qword [rsp + 0x88], r13
mov qword [rsp + 0x90], rsi
mov qword [rsp + 0x98], rdi
mov qword [rsp + 0xa0], r10
mov qword [rsp + 0xa8], r11
mov qword [rsp + 0xb0], r8
mov qword [rsp + 0xb8], r9
mov qword [rsp + 0xc0], r14
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 + 0x110], r14
mov qword [rsp + 0x120], r12
mov qword [rsp + 0xc8], r15
mov qword [rsp + 0x118], r15
mov qword [rsp + 0x128], r13
mov rbx, qword [rdx + 0x18]
vmovdqu xmm4, 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 + 0x160], r14
lea r14, [rsp + 0x2e0]
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 + 0x168], r15
mov qword [rsp + 0x1c0], r8
mov qword [rsp + 0x1c8], r9
mov qword [rsp + 0x1d0], rcx
mov qword [rsp + 0x1d8], rbx
vmovups xmmword [rsp + 0x170], xmm4
mov qword [rsp + 0x1f0], rsi
mov r10, qword [rdx + 0x40]
mov r11, qword [rdx + 0x48]
vmovdqu xmm5, xmmword [rdx]
mov qword [rsp + 0x1f8], rdi
mov qword [rsp + 0x230], r12
mov qword [rsp + 0x238], r13
mov qword [rsp + 0x248], rdi
mov qword [rsp + 0x280], r12
lea r12, [rsp + 0x1c0]
mov qword [rsp + 0x288], r13
mov r13d, 0x20
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
mov qword [rsp + 0x2c0], r8
mov qword [rsp + 0x2c8], r9
mov qword [rsp + 0x2d0], rcx
mov qword [rsp + 0x2d8], rbx
mov qword [rsp + 0x20], rax
vmovups xmmword [rsp + 0x2b0], xmm5
jmp 0x54a40d
sub r13d, 1
je 0x54a5b1
vzeroupper
mov rax, qword [rsp + 0x20]
lea rdx, [r12 + rdi]
mov r8, r14
lea rcx, [rax + rdi]
call fcn.005491f0
mov eax, dword [rsp + 0x2e0]
vmovdqu xmm3, xmmword [rsp + 0x2e0]
vinserti128 ymm1, ymm3, xmmword [rsp + 0x2f0], 1
vpmovzxbw ymm2, xmm3
vextracti128 xmm0, ymm2, 1
vextracti128 xmm1, ymm1, 1
vpmovzxwd ymm2, xmm2
vpmovzxbw ymm1, xmm1
vpmovzxwd ymm0, xmm0
vpaddd ymm0, ymm0, ymm2
vextracti128 xmm2, ymm1, 1
vpmovzxwd ymm1, xmm1
vpmovzxwd ymm2, xmm2
vpaddd ymm1, ymm2, ymm1
vpaddd ymm0, ymm0, ymm1
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 esi, xmm0
movzx edi, sil
lea rbx, [r12 + rdi]
mov rbp, 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 0x54a516
lea eax, [rdi + 0x100]
add rax, r12
cmp edi, 0x20
jbe 0x54a8d7
vmovdqu xmm4, xmmword [rbx]
vmovups xmmword [rax], xmm4
vmovdqu xmm5, xmmword [rbx + 0x10]
vmovups xmmword [rax + 0x10], xmm5
mov r9d, 0x100
sub r9d, ebp
cmp r9d, 0x1f
ja 0x54a400
lea r15d, [rbp - 0xe0]
mov eax, r15d
shr eax, 2
je 0x54a560
sub eax, 1
lea rdx, [rsp + 0x2c0]
mov rcx, r12
mov dword [rsp + 0x28], r9d
lea r8, [rax*4 + 4]
vzeroupper
call sub.msvcrt.dll_memmove
mov r9d, dword [rsp + 0x28]
mov edx, r15d
and edx, 3
je 0x54a400
mov eax, r15d
sub eax, edx
cmp r15d, eax
jbe 0x54a400
sub edx, r15d
lea rcx, [r12 + rax]
mov dword [rsp + 0x28], r9d
lea r8d, [rbp + rdx - 0xe1]
lea rdx, [rsp + rax + 0x2c0]
add r8, 1
vzeroupper
call sub.msvcrt.dll_memmove
mov r9d, dword [rsp + 0x28]
sub r13d, 1
jne 0x54a40a
mov r15d, r9d
cmp r9d, 0x100
jne 0x54a9d0
vmovdqu xmm4, xmmword [rsp + 0x1c0]
vmovdqu xmm5, xmmword [rsp + 0x80]
vinserti128 ymm1, ymm4, xmmword [rsp + 0x1d0], 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0x90], 1
vmovdqu xmm4, xmmword [rsp + 0x1e0]
vmovdqu xmm5, xmmword [rsp + 0xa0]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x1f0], 1
vmovdqu xmm4, xmmword [rsp + 0x200]
vmovups xmmword [rsp + 0x1c0], xmm0
vextracti128 xmmword [rsp + 0x1d0], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0xb0], 1
vmovdqu xmm5, xmmword [rsp + 0xc0]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x210], 1
vmovdqu xmm4, xmmword [rsp + 0x220]
vmovups xmmword [rsp + 0x1e0], xmm0
vextracti128 xmmword [rsp + 0x1f0], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0xd0], 1
vmovdqu xmm5, xmmword [rsp + 0xe0]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x230], 1
vmovdqu xmm4, xmmword [rsp + 0x240]
vmovups xmmword [rsp + 0x200], xmm0
vextracti128 xmmword [rsp + 0x210], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0xf0], 1
vmovdqu xmm5, xmmword [rsp + 0x100]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x250], 1
vmovdqu xmm4, xmmword [rsp + 0x260]
vmovups xmmword [rsp + 0x220], xmm0
vextracti128 xmmword [rsp + 0x230], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0x110], 1
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x270], 1
vmovups xmmword [rsp + 0x240], xmm0
vextracti128 xmmword [rsp + 0x250], ymm0, 1
vmovdqu xmm5, xmmword [rsp + 0x120]
vinserti128 ymm0, ymm5, xmmword [rsp + 0x130], 1
vmovdqu xmm4, xmmword [rsp + 0x280]
mov rax, qword [rsp + 0x360]
vmovdqu xmm5, xmmword [rsp + 0x140]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x290], 1
vmovups xmmword [rsp + 0x260], xmm0
vextracti128 xmmword [rsp + 0x270], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0x150], 1
vmovdqu xmm4, xmmword [rsp + 0x2a0]
vmovdqu xmm5, xmmword [rsp + 0x160]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x2b0], 1
vmovdqu xmm4, xmmword [rsp + 0x1c0]
vmovups xmmword [rsp + 0x280], xmm0
vextracti128 xmmword [rsp + 0x290], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsp + 0x170], 1
vmovdqu xmm5, xmmword [rsp + 0x1d0]
vmovups xmmword [rax], xmm4
vmovdqu xmm4, xmmword [rsp + 0x1e0]
vmovups xmmword [rax + 0x10], xmm5
vpxor ymm0, ymm0, ymm1
vmovdqu xmm5, xmmword [rsp + 0x1f0]
vextracti128 xmmword [rsp + 0x2b0], ymm0, 1
vmovups xmmword [rax + 0x20], xmm4
vmovdqu xmm4, xmmword [rsp + 0x200]
vmovups xmmword [rax + 0x30], xmm5
vmovdqu xmm5, xmmword [rsp + 0x210]
vmovups xmmword [rax + 0x40], xmm4
vmovdqu xmm4, xmmword [rsp + 0x220]
vmovups xmmword [rax + 0x50], xmm5
vmovdqu xmm5, xmmword [rsp + 0x230]
vmovups xmmword [rax + 0x60], xmm4
vmovups xmmword [rsp + 0x2a0], xmm0
vmovups xmmword [rax + 0x70], xmm5
vmovdqu xmm4, xmmword [rsp + 0x240]
vmovdqu xmm5, xmmword [rsp + 0x250]
vmovups xmmword [rax + 0x80], xmm4
vmovdqu xmm4, xmmword [rsp + 0x260]
vmovups xmmword [rax + 0x90], xmm5
vmovdqu xmm5, xmmword [rsp + 0x270]
vmovups xmmword [rax + 0xa0], xmm4
vmovdqu xmm4, xmmword [rsp + 0x280]
vmovups xmmword [rax + 0xb0], xmm5
vmovdqu xmm5, xmmword [rsp + 0x290]
vmovups xmmword [rax + 0xc0], xmm4
vmovdqu xmm4, xmmword [rsp + 0x2a0]
vmovups xmmword [rax + 0xd0], xmm5
vmovdqu xmm5, xmmword [rsp + 0x2b0]
vmovups xmmword [rax + 0xe0], xmm4
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 r9d, ecx
mov edx, ecx
and r9d, 3
shr edx, 2
je 0x54b373
sub edx, 1
lea r8, [rdx*4 + 4]
mov edx, r8d
cmp r8d, 8
jae 0x54a94e
and r8d, 4
jne 0x54b459
test edx, edx
jne 0x54a9a9
test r9d, r9d
je 0x54a516
mov edx, ecx
sub edx, r9d
cmp ecx, edx
jbe 0x54a516
lea rcx, [rax + rdx]
mov eax, 0x1f
add rdx, rbx
lea eax, [r9 + rax - 0x20]
lea r8, [rax + 1]
vzeroupper
call sub.msvcrt.dll_memcpy
jmp 0x54a516
mov rdx, qword [rbx]
lea r11, [rax + 8]
mov r15, rbx
and r11, 0xfffffffffffffff8
mov qword [rax], rdx
mov edx, r8d
mov r10, qword [rbx + rdx - 8]
mov qword [rax + rdx - 8], r10
mov rdx, rax
sub rdx, r11
sub r15, rdx
add edx, r8d
and edx, 0xfffffff8
cmp edx, 8
jb 0x54a916
mov qword [rsp + 0x28], rax
and edx, 0xfffffff8
xor r8d, r8d
mov r10d, r8d
add r8d, 8
mov rax, qword [r15 + r10]
mov qword [r11 + r10], rax
cmp r8d, edx
jb 0x54a98b
mov rax, qword [rsp + 0x28]
jmp 0x54a916
movzx r8d, byte [rbx]
mov byte [rax], r8b
test dl, 2
je 0x54a916
movzx r8d, word [rbx + rdx - 2]
mov word [rax + rdx - 2], r8w
jmp 0x54a916
mov r8d, r9d
shr r8d, 2
je 0x54ac52
lea rax, [rbx + 0x20]
cmp qword [rsp + 0x20], rax
lea ecx, [r8 - 1]
lea rax, [rsp + 0xa0]
setae dl
cmp rbx, rax
setae al
or dl, al
je 0x54b46e
cmp ecx, 6
jbe 0x54b46e
vmovdqu xmm5, xmmword [rsp + 0x80]
vmovdqu xmm4, xmmword [rbx]
mov eax, r9d
vinserti128 ymm0, ymm5, xmmword [rsp + 0x90], 1
vinserti128 ymm1, ymm4, xmmword [rbx + 0x10], 1
shr eax, 5
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx], xmm0
vextracti128 xmmword [rbx + 0x10], ymm0, 1
cmp eax, 1
je 0x54abb2
vmovdqu xmm5, xmmword [rsp + 0xa0]
vmovdqu xmm4, xmmword [rbx + 0x20]
vinserti128 ymm0, ymm5, xmmword [rsp + 0xb0], 1
vinserti128 ymm1, ymm4, xmmword [rbx + 0x30], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x20], xmm0
vextracti128 xmmword [rbx + 0x30], ymm0, 1
cmp eax, 2
je 0x54abb2
vmovdqu xmm5, xmmword [rsp + 0xc0]
vmovdqu xmm4, xmmword [rbx + 0x40]
vinserti128 ymm0, ymm5, xmmword [rsp + 0xd0], 1
vinserti128 ymm1, ymm4, xmmword [rbx + 0x50], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x40], xmm0
vextracti128 xmmword [rbx + 0x50], ymm0, 1
cmp eax, 3
je 0x54abb2
vmovdqu xmm5, xmmword [rsp + 0xe0]
vmovdqu xmm4, xmmword [rbx + 0x60]
vinserti128 ymm0, ymm5, xmmword [rsp + 0xf0], 1
vinserti128 ymm1, ymm4, xmmword [rbx + 0x70], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x60], xmm0
vextracti128 xmmword [rbx + 0x70], ymm0, 1
cmp eax, 4
je 0x54abb2
vmovdqu xmm5, xmmword [rsp + 0x100]
vmovdqu xmm4, xmmword [rbx + 0x80]
vinserti128 ymm0, ymm5, xmmword [rsp + 0x110], 1
vinserti128 ymm1, ymm4, xmmword [rbx + 0x90], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0x80], xmm0
vextracti128 xmmword [rbx + 0x90], ymm0, 1
cmp eax, 5
je 0x54abb2
vmovdqu xmm4, xmmword [rsp + 0x120]
vmovdqu xmm3, xmmword [rbx + 0xa0]
vinserti128 ymm0, ymm4, xmmword [rsp + 0x130], 1
vinserti128 ymm1, ymm3, xmmword [rbx + 0xb0], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0xa0], xmm0
vextracti128 xmmword [rbx + 0xb0], ymm0, 1
cmp eax, 7
jne 0x54abb2
vmovdqu xmm5, xmmword [rsp + 0x140]
vmovdqu xmm3, xmmword [rbx + 0xc0]
vinserti128 ymm1, ymm5, xmmword [rsp + 0x150], 1
vinserti128 ymm0, ymm3, xmmword [rbx + 0xd0], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbx + 0xc0], xmm0
vextracti128 xmmword [rbx + 0xd0], ymm0, 1
shl eax, 3
cmp r8d, eax
je 0x54ac52
mov edx, eax
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 1]
cmp r8d, edx
jbe 0x54ac52
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 2]
cmp r8d, edx
jbe 0x54ac52
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 3]
cmp r8d, edx
jbe 0x54ac52
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 4]
cmp r8d, edx
jbe 0x54ac52
shl rdx, 2
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
lea edx, [rax + 5]
cmp r8d, edx
jbe 0x54ac52
shl rdx, 2
add eax, 6
mov ecx, dword [rsp + rdx + 0x80]
xor dword [rbx + rdx], ecx
cmp r8d, eax
jbe 0x54ac52
shl rax, 2
mov edx, dword [rsp + rax + 0x80]
xor dword [rbx + rax], edx
lea rax, [rsp + 0x40]
mov edi, r15d
and edi, 3
mov dword [rsp + 0x28], edi
je 0x54ae27
mov r9d, r15d
mov r14d, edi
sub r9d, edi
cmp r9d, r15d
jae 0x54ae27
mov ecx, r9d
lea rdi, [rbx + rcx + 0x20]
lea r10, [rax + rcx + 0x40]
mov r11, rcx
cmp r10, rdi
lea rdx, [rbx + rcx]
lea rdi, [rax + rcx + 0x60]
setae r13b
cmp rdx, rdi
setae dil
or r13b, dil
je 0x54b48f
lea edi, [r14 - 1]
cmp edi, 0x1e
jbe 0x54b48f
vmovdqu xmm5, xmmword [r10]
vmovdqu xmm4, xmmword [rdx]
vinserti128 ymm1, ymm5, xmmword [r10 + 0x10], 1
vinserti128 ymm0, ymm4, xmmword [rdx + 0x10], 1
vmovdqu xmm3, xmmword [rdx + 0x20]
vmovdqu xmm5, xmmword [rdx + 0x40]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx], xmm0
vextracti128 xmmword [rdx + 0x10], ymm0, 1
vinserti128 ymm0, ymm3, xmmword [rdx + 0x30], 1
vmovdqu xmm4, xmmword [r10 + 0x20]
vinserti128 ymm1, ymm4, xmmword [r10 + 0x30], 1
vmovdqu xmm4, xmmword [rdx + 0x60]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x20], xmm0
vextracti128 xmmword [rdx + 0x30], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rdx + 0x50], 1
vmovdqu xmm3, xmmword [r10 + 0x40]
vinserti128 ymm1, ymm3, xmmword [r10 + 0x50], 1
vmovdqu xmm3, xmmword [rdx + 0x80]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x40], xmm0
vextracti128 xmmword [rdx + 0x50], ymm0, 1
vinserti128 ymm0, ymm4, xmmword [rdx + 0x70], 1
vmovdqu xmm5, xmmword [r10 + 0x60]
vinserti128 ymm1, ymm5, xmmword [r10 + 0x70], 1
vmovdqu xmm5, xmmword [rdx + 0xa0]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x60], xmm0
vextracti128 xmmword [rdx + 0x70], ymm0, 1
vinserti128 ymm0, ymm3, xmmword [rdx + 0x90], 1
vmovdqu xmm4, xmmword [r10 + 0x80]
vinserti128 ymm1, ymm4, xmmword [r10 + 0x90], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0x80], xmm0
vextracti128 xmmword [rdx + 0x90], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rdx + 0xb0], 1
vmovdqu xmm3, xmmword [r10 + 0xa0]
vinserti128 ymm1, ymm3, xmmword [r10 + 0xb0], 1
vmovdqu xmm5, xmmword [rdx + 0xc0]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm5, xmmword [rdx + 0xd0], 1
vmovups xmmword [rdx + 0xa0], xmm0
vextracti128 xmmword [rdx + 0xb0], ymm0, 1
vmovdqu xmm4, xmmword [r10 + 0xc0]
vinserti128 ymm0, ymm4, xmmword [r10 + 0xd0], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rdx + 0xc0], xmm0
vextracti128 xmmword [rdx + 0xd0], ymm0, 1
test r14d, r14d
jne 0x54ae13
jmp 0x54ae27
mov ecx, r9d
add r9d, 1
movzx edx, byte [rsp + rcx + 0x80]
xor byte [rbx + rcx], dl
cmp r9d, r15d
jb 0x54ae10
mov r10, qword [rsp + 0x20]
mov r13d, r15d
mov r14d, ebp
add r10, r13
shr r14d, 2
je 0x54b0bb
lea r9, [rax + r13 + 0x60]
lea rdx, [rax + r13 + 0x40]
cmp r12, r9
lea r9, [rsp + 0x1e0]
lea ecx, [r14 - 1]
setae r11b
cmp rdx, r9
setae r9b
or r11b, r9b
je 0x54b433
cmp ecx, 6
jbe 0x54b433
vmovdqu xmm3, xmmword [rsp + 0x1c0]
vmovdqu xmm4, xmmword [rdx]
mov ecx, ebp
vinserti128 ymm0, ymm4, xmmword [rdx + 0x10], 1
shr ecx, 5
vinserti128 ymm1, ymm3, xmmword [rsp + 0x1d0], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x1c0], xmm0
vextracti128 xmmword [rsp + 0x1d0], ymm0, 1
cmp ecx, 1
je 0x54b045
vmovdqu xmm5, xmmword [rsp + 0x1e0]
vmovdqu xmm3, xmmword [rdx + 0x20]
vinserti128 ymm1, ymm5, xmmword [rsp + 0x1f0], 1
vinserti128 ymm0, ymm3, xmmword [rdx + 0x30], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x1e0], xmm0
vextracti128 xmmword [rsp + 0x1f0], ymm0, 1
cmp ecx, 2
je 0x54b045
vmovdqu xmm4, xmmword [rsp + 0x200]
vmovdqu xmm5, xmmword [rdx + 0x40]
vinserti128 ymm1, ymm4, xmmword [rsp + 0x210], 1
vinserti128 ymm0, ymm5, xmmword [rdx + 0x50], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x200], xmm0
vextracti128 xmmword [rsp + 0x210], ymm0, 1
cmp ecx, 3
je 0x54b045
vmovdqu xmm3, xmmword [rsp + 0x220]
vmovdqu xmm4, xmmword [rdx + 0x60]
vinserti128 ymm1, ymm3, xmmword [rsp + 0x230], 1
vinserti128 ymm0, ymm4, xmmword [rdx + 0x70], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x220], xmm0
vextracti128 xmmword [rsp + 0x230], ymm0, 1
cmp ecx, 4
je 0x54b045
vmovdqu xmm3, xmmword [rdx + 0x80]
vmovdqu xmm5, xmmword [rsp + 0x240]
vinserti128 ymm0, ymm3, xmmword [rdx + 0x90], 1
vinserti128 ymm1, ymm5, xmmword [rsp + 0x250], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x240], xmm0
vextracti128 xmmword [rsp + 0x250], ymm0, 1
cmp ecx, 5
je 0x54b045
vmovdqu xmm5, xmmword [rdx + 0xa0]
vmovdqu xmm4, xmmword [rsp + 0x260]
vinserti128 ymm0, ymm5, xmmword [rdx + 0xb0], 1
vinserti128 ymm1, ymm4, xmmword [rsp + 0x270], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x260], xmm0
vextracti128 xmmword [rsp + 0x270], ymm0, 1
cmp ecx, 7
jne 0x54b045
vmovdqu xmm3, xmmword [rdx + 0xc0]
vmovdqu xmm4, xmmword [rsp + 0x280]
vinserti128 ymm1, ymm3, xmmword [rdx + 0xd0], 1
vinserti128 ymm0, ymm4, xmmword [rsp + 0x290], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rsp + 0x280], xmm0
vextracti128 xmmword [rsp + 0x290], ymm0, 1
lea edx, [rcx*8]
cmp r14d, edx
je 0x54b0bb
mov ecx, edx
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
lea ecx, [rdx + 1]
cmp r14d, ecx
jbe 0x54b0bb
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
lea ecx, [rdx + 2]
cmp r14d, ecx
jbe 0x54b0bb
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
lea ecx, [rdx + 3]
cmp r14d, ecx
jbe 0x54b0bb
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
lea ecx, [rdx + 4]
cmp r14d, ecx
jbe 0x54b0bb
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
lea ecx, [rdx + 5]
cmp r14d, ecx
jbe 0x54b0bb
add edx, 6
mov r9d, dword [r10 + rcx*4]
xor dword [r12 + rcx*4], r9d
cmp r14d, edx
jbe 0x54b0bb
mov ecx, dword [r10 + rdx*4]
xor dword [r12 + rdx*4], ecx
and esi, 3
mov r9d, esi
je 0x54b2a2
mov ecx, ebp
sub ecx, esi
cmp ebp, ecx
jbe 0x54b2a2
mov edx, ecx
lea rdi, [rdx + 0x180]
lea rsi, [r13 + rdx + 0x60]
mov qword [rsp + 0x20], rdx
mov r11, rdi
lea rdi, [r13 + rdx + 0x40]
cmp r11, rsi
lea rsi, [rdx + 0x1a0]
mov qword [rsp + 0x30], r11
setge byte [rsp + 0x3f]
cmp rdi, rsi
movzx r11d, byte [rsp + 0x3f]
setge sil
or r11b, sil
je 0x54b4ab
lea esi, [r9 - 1]
cmp esi, 0x1e
jbe 0x54b4ab
mov r11, qword [rsp + 0x30]
add r11, rax
add rax, rdi
vmovdqu xmm3, xmmword [rax]
vmovdqu xmm5, xmmword [r11]
vinserti128 ymm1, ymm3, xmmword [rax + 0x10], 1
vinserti128 ymm0, ymm5, xmmword [r11 + 0x10], 1
vmovdqu xmm4, xmmword [r11 + 0x20]
vmovdqu xmm3, xmmword [r11 + 0x40]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11], xmm0
vextracti128 xmmword [r11 + 0x10], ymm0, 1
vinserti128 ymm0, ymm4, xmmword [r11 + 0x30], 1
vmovdqu xmm5, xmmword [rax + 0x20]
vinserti128 ymm1, ymm5, xmmword [rax + 0x30], 1
vmovdqu xmm5, xmmword [r11 + 0x60]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0x20], xmm0
vextracti128 xmmword [r11 + 0x30], ymm0, 1
vinserti128 ymm0, ymm3, xmmword [r11 + 0x50], 1
vmovdqu xmm4, xmmword [rax + 0x40]
vinserti128 ymm1, ymm4, xmmword [rax + 0x50], 1
vmovdqu xmm4, xmmword [r11 + 0x80]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0x40], xmm0
vextracti128 xmmword [r11 + 0x50], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [r11 + 0x70], 1
vmovdqu xmm3, xmmword [rax + 0x60]
vinserti128 ymm1, ymm3, xmmword [rax + 0x70], 1
vmovdqu xmm3, xmmword [r11 + 0xa0]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0x60], xmm0
vextracti128 xmmword [r11 + 0x70], ymm0, 1
vinserti128 ymm0, ymm4, xmmword [r11 + 0x90], 1
vmovdqu xmm5, xmmword [rax + 0x80]
vinserti128 ymm1, ymm5, xmmword [rax + 0x90], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0x80], xmm0
vextracti128 xmmword [r11 + 0x90], ymm0, 1
vinserti128 ymm0, ymm3, xmmword [r11 + 0xb0], 1
vmovdqu xmm4, xmmword [rax + 0xa0]
vinserti128 ymm1, ymm4, xmmword [rax + 0xb0], 1
vmovdqu xmm5, xmmword [r11 + 0xc0]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0xa0], xmm0
vextracti128 xmmword [r11 + 0xb0], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [r11 + 0xd0], 1
vmovdqu xmm3, xmmword [rax + 0xc0]
vinserti128 ymm1, ymm3, xmmword [rax + 0xd0], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [r11 + 0xc0], xmm0
vextracti128 xmmword [r11 + 0xd0], ymm0, 1
test r9d, r9d
jne 0x54b292
jmp 0x54b2a2
mov edx, ecx
add ecx, 1
movzx eax, byte [r10 + rdx]
xor byte [r12 + rdx], al
cmp ebp, ecx
ja 0x54b290
test r8d, r8d
je 0x54b2cc
lea eax, [r8 - 1]
lea rax, [rax*4 + 4]
cmp eax, 8
jae 0x54b38f
test al, 4
jne 0x54b4c9
test eax, eax
jne 0x54b421
mov eax, dword [rsp + 0x28]
test eax, eax
je 0x54b38a
mov eax, dword [rsp + 0x28]
mov edx, r15d
sub edx, eax
cmp edx, r15d
jae 0x54b38a
mov rcx, qword [rsp + 0x360]
sub eax, 1
mov dword [rsp + 0x20], r9d
lea r8, [rax + 1]
add rcx, rdx
add rdx, rbx
vzeroupper
call sub.msvcrt.dll_memcpy
mov r9d, dword [rsp + 0x20]
add r13, qword [rsp + 0x360]
test r14d, r14d
je 0x54b343
lea eax, [r14 - 1]
lea rax, [rax*4 + 4]
cmp eax, 8
jae 0x54b3da
test al, 4
jne 0x54b4ec
test eax, eax
jne 0x54b413
test r9d, r9d
je 0x54a8c3
mov edx, ebp
sub edx, r9d
cmp ebp, edx
jbe 0x54a8c3
lea eax, [r9 - 1]
lea rcx, [r13 + rdx]
add rdx, r12
lea r8, [rax + 1]
call sub.msvcrt.dll_memcpy
jmp 0x54a8c3
test r9d, r9d
jne 0x54a91f
mov r9d, 0x100
sub r9d, ebp
jmp 0x54a400
vzeroupper
jmp 0x54b311
mov rdx, qword [rbx]
mov rdi, qword [rsp + 0x360]
mov qword [rdi], rdx
mov edx, eax
mov rdi, qword [rsp + 0x360]
mov rcx, qword [rbx + rdx - 8]
mov qword [rdi + rdx - 8], rcx
mov rsi, qword [rsp + 0x360]
lea rdi, [rsi + 8]
mov rcx, rsi
mov rsi, rbx
and rdi, 0xfffffffffffffff8
sub rcx, rdi
sub rsi, rcx
add ecx, eax
shr ecx, 3
rep movsq qword [rdi], qword [rsi]
jmp 0x54b2cc
mov rdx, qword [rsp + 0x1c0]
lea rdi, [r13 + 8]
mov rsi, r12
and rdi, 0xfffffffffffffff8
mov qword [r13], rdx
mov edx, eax
mov rcx, qword [r12 + rdx - 8]
mov qword [r13 + rdx - 8], rcx
mov rcx, r13
sub rcx, rdi
sub rsi, rcx
add ecx, eax
shr ecx, 3
rep movsq qword [rdi], qword [rsi]
jmp 0x54b343
movzx eax, byte [r12]
mov byte [r13], al
jmp 0x54b343
movzx eax, byte [rbx]
mov rdi, qword [rsp + 0x360]
mov byte [rdi], al
jmp 0x54b2cc
mov rdx, r12
mov r9, r10
lea rcx, [rsp + rcx*4 + 0x1c4]
mov r11d, dword [r9]
xor dword [rdx], r11d
add rdx, 4
add r9, 4
cmp rcx, rdx
jne 0x54b441
jmp 0x54b0bb
mov r8d, dword [rbx]
mov dword [rax], r8d
mov r8d, dword [rbx + rdx - 4]
mov dword [rax + rdx - 4], r8d
jmp 0x54a916
xor edx, edx
lea rax, [rsp + 0x40]
mov r9d, dword [rax + rdx*4 + 0x40]
xor dword [rbx + rdx*4], r9d
mov r9, rdx
add rdx, 1
cmp rcx, r9
jne 0x54b475
jmp 0x54ac57
mov rcx, qword [rsp + 0x20]
movzx edx, byte [rcx + r11]
xor byte [rbx + r11], dl
add r11, 1
cmp r15d, r11d
ja 0x54b494
jmp 0x54ae27
mov r11, rdx
lea rdx, [r12 + r11]
movzx eax, byte [rdx]
xor al, byte [r10 + r11]
add r11, 1
mov byte [rdx], al
cmp ebp, r11d
ja 0x54b4ae
jmp 0x54b2a2
mov edx, dword [rbx]
mov rdi, qword [rsp + 0x360]
mov eax, eax
mov dword [rdi], edx
mov edx, dword [rbx + rax - 4]
mov rdi, qword [rsp + 0x360]
mov dword [rdi + rax - 4], edx
jmp 0x54b2cc
mov edx, dword [r12]
mov eax, eax
mov dword [r13], edx
mov edx, dword [r12 + rax - 4]
mov dword [r13 + rax - 4], edx
jmp 0x54b343