Function at 0x641aa0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x2d8
vmovups xmmword [rsp + 0x2b0], xmm6
vmovups xmmword [rsp + 0x2c0], xmm7
mov r14d, dword [r9]
lea r13, [rsp + 0x1df]
mov rbx, rdx
mov rsi, r8
and r13, 0xffffffffffffffc0
cmp r14d, 5
je 0x641aea
cmp r14d, 0xa
jne 0x6422e0
mov edi, dword [r9 + 4]
lea eax, [rdi - 0x400]
mov dword [rsp + 0x44], edi
cmp eax, 0x7fc00
ja 0x6422e0
mov eax, dword [r9 + 8]
lea edx, [rax - 8]
cmp edx, 0x18
ja 0x6422e0
lea edx, [rdi - 1]
and edx, edi
mov r12d, edx
jne 0x6422e0
mov rcx, qword [r9 + 0x18]
mov rdi, qword [r9 + 0x10]
mov qword [rsp + 0x50], rcx
test rdi, rdi
jne 0x641b3c
test rcx, rcx
jne 0x6422e0
mov r15d, eax
mov ecx, dword [rsp + 0x44]
mov qword [rsp + 0x80], r15
shl r15, 7
imul rcx, r15
mov qword [rsp + 0xa0], r15
mov rbp, r15
call sub.msvcrt.dll_malloc
mov qword [rsp + 0x48], rax
test rax, rax
je 0x643120
mov rcx, r15
call sub.msvcrt.dll_malloc
mov r15, rax
test rax, rax
je 0x643117
mov rcx, rbp
call sub.msvcrt.dll_malloc
mov rbp, rax
test rax, rax
je 0x64310e
mov dword [rsp + 0x120], r14d
cmp r14d, 5
je 0x6430a0
vmovdqu xmm0, xmmword [0x006dee70]
mov edx, 0x8000
mov ecx, 0x18000
mov dword [rsp + 0x60], 0x7ff0
vmovups xmmword [rsp + 0x124], xmm0
mov qword [rsp + 0x58], rdx
call sub.msvcrt.dll_malloc
mov qword [rsp + 0xf8], rax
test rax, rax
je 0x643105
mov rdx, qword [rsp + 0x58]
vmovq xmm7, rax
xor r9d, r9d
xor r8d, r8d
vpunpcklqdq xmm0, xmm7, xmm7
mov rcx, r13
mov qword [rsp + 0x158], 0
vmovups xmmword [rsp + 0x138], xmm0
add rax, rdx
mov qword [rsp + 0x148], rax
add rax, rdx
mov edx, 0x20
mov qword [rsp + 0x150], rax
mov eax, dword [rsp + 0x60]
mov dword [rsp + 0x134], eax
call fcn.00451f00
mov rdx, rbx
mov rcx, r13
mov r8, rsi
call fcn.00452120
lea rax, [rsp + 0x100]
mov rcx, r13
mov rdx, rax
mov qword [rsp + 0xb8], rax
call fcn.004521b0
cmp r14d, 5
je 0x6430d0
test rdi, rdi
je 0x6430e0
mov rax, qword [rsp + 0xa0]
mov qword [rsp + 0x28], r15
mov edx, 0x20
mov r8, rdi
mov qword [rsp + 0x20], 1
mov r9, qword [rsp + 0x50]
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0xb8]
call fcn.006369a0
mov eax, dword [rsp + 0x44]
mov edx, 0xaaaaaaab
vmovdqu xmm4, xmmword [r15]
vmovdqu xmm7, xmmword [r15 + 0x10]
mov dword [rsp + 0xf4], 0
vmovups xmmword [rsp + 0x100], xmm4
add eax, 2
vmovups xmmword [rsp + 0x110], xmm7
imul rax, rdx
shr rax, 0x21
lea edx, [rax + 1]
and edx, 0xfffffffe
mov dword [rsp + 0xf0], edx
mov edx, dword [rsp + 0x120]
cmp edx, 5
jne 0x641d20
mov ebx, dword [rsp + 0xf0]
and eax, 0xfffffffe
mov dword [rsp + 0xf0], eax
sub ebx, eax
mov dword [rsp + 0xf4], ebx
mov eax, dword [r15]
mov rsi, qword [rsp + 0x138]
lea r13, [rbp + 0x20]
mov r14d, dword [r15 + 0x3c]
mov r9d, dword [r15 + 0x1c]
mov r10d, dword [r15 + 4]
mov r11d, dword [r15 + 0x2c]
mov dword [rsp + 0x58], eax
mov eax, dword [r15 + 0x14]
mov ebx, dword [r15 + 0x54]
mov dword [rsp + 0x70], eax
mov eax, dword [r15 + 0x28]
mov dword [rsp + 0x74], eax
mov eax, dword [r15 + 0x10]
mov dword [rsp + 0x78], eax
mov eax, dword [r15 + 0x24]
mov dword [rsp + 0x88], eax
mov eax, dword [r15 + 0x38]
mov dword [rsp + 0x68], eax
mov eax, dword [r15 + 0xc]
mov dword [rsp + 0x64], eax
mov eax, dword [r15 + 0x20]
mov dword [rsp + 0xec], eax
mov eax, dword [r15 + 0x34]
mov dword [rsp + 0x6c], eax
mov eax, dword [r15 + 8]
mov dword [rsp + 0x60], eax
mov eax, dword [r15 + 0x30]
mov dword [rsp + 0xe8], eax
mov eax, dword [r15 + 0x18]
mov dword [rsp + 0x90], eax
mov eax, dword [r15 + 0x40]
mov dword [rsp + 0x98], eax
mov eax, dword [r15 + 0x68]
vmovdqu xmm4, xmmword [r15]
vmovdqu xmm6, xmmword [r15 + 0x20]
mov dword [rsp + 0xa8], eax
mov eax, dword [r15 + 0x7c]
vinserti128 ymm1, ymm6, xmmword [r15 + 0x30], 1
vinserti128 ymm3, ymm4, xmmword [r15 + 0x10], 1
mov edi, dword [r15 + 0x64]
mov ecx, dword [r15 + 0x4c]
mov dword [rsp + 0xb0], eax
mov eax, dword [r15 + 0x50]
vmovdqu xmm7, xmmword [r15 + 0x40]
vmovdqu xmm4, xmmword [r15 + 0x60]
vinserti128 ymm2, ymm7, xmmword [r15 + 0x50], 1
mov dword [rsp + 0xc0], eax
mov eax, dword [r15 + 0x78]
vinserti128 ymm0, ymm4, xmmword [r15 + 0x70], 1
mov r8d, dword [r15 + 0x5c]
mov dword [rsp + 0xcc], eax
mov eax, dword [r15 + 0x60]
mov dword [rsp + 0xd0], eax
mov eax, dword [r15 + 0x74]
mov dword [rsp + 0xd4], eax
mov eax, dword [r15 + 0x48]
mov dword [rsp + 0xd8], eax
mov eax, dword [r15 + 0x70]
mov dword [rsp + 0xdc], eax
mov eax, dword [r15 + 0x44]
mov dword [rsp + 0xe0], eax
mov eax, dword [r15 + 0x58]
mov dword [rsp + 0xe4], eax
mov eax, dword [r15 + 0x6c]
vpshufb ymm4, ymm3, ymmword [0x006dede0]
vpshufb ymm5, ymm1, ymmword [0x006dee00]
vpermq ymm7, ymm4, 0x4e
vpermq ymm6, ymm5, 0x4e
mov qword [rsp + 0x50], r13
vpshufb ymm4, ymm3, ymmword [0x006dee20]
vpshufb ymm5, ymm1, ymmword [0x006dee40]
vpor ymm4, ymm4, ymm7
mov r13d, dword [rsp + 0x130]
vpor ymm5, ymm5, ymm6
vpor ymm4, ymm4, ymm5
shr r13d, 7
vpshufb ymm5, ymm1, ymmword [0x006dede0]
vpshufb ymm1, ymm1, ymmword [0x006dee20]
vmovups xmmword [rbp], xmm4
vextracti128 xmmword [rbp + 0x10], ymm4, 1
vpermq ymm5, ymm5, 0x4e
vpshufb ymm4, ymm3, ymmword [0x006dee00]
vpermq ymm4, ymm4, 0x4e
vpor ymm1, ymm1, ymm5
vpshufb ymm3, ymm3, ymmword [0x006dee40]
mov dword [rsp + 0xc8], r13d
vpor ymm3, ymm3, ymm4
vpor ymm1, ymm1, ymm3
vpshufb ymm3, ymm0, ymmword [0x006dee00]
vmovups xmmword [rbp + 0x20], xmm1
vextracti128 xmmword [rbp + 0x30], ymm1, 1
vpermq ymm4, ymm3, 0x4e
vpshufb ymm1, ymm2, ymmword [0x006dede0]
vpshufb ymm3, ymm0, ymmword [0x006dee40]
vpermq ymm5, ymm1, 0x4e
vpshufb ymm1, ymm2, ymmword [0x006dee20]
vpor ymm3, ymm3, ymm4
vpor ymm1, ymm1, ymm5
vpor ymm1, ymm1, ymm3
vpshufb ymm3, ymm0, ymmword [0x006dede0]
vpshufb ymm0, ymm0, ymmword [0x006dee20]
vmovups xmmword [rbp + 0x40], xmm1
vextracti128 xmmword [rbp + 0x50], ymm1, 1
vpermq ymm3, ymm3, 0x4e
vpshufb ymm1, ymm2, ymmword [0x006dee00]
vpermq ymm1, ymm1, 0x4e
vpor ymm0, ymm0, ymm3
vpshufb ymm2, ymm2, ymmword [0x006dee40]
vpor ymm2, ymm2, ymm1
vpor ymm0, ymm0, ymm2
vmovups xmmword [rbp + 0x60], xmm0
vextracti128 xmmword [rbp + 0x70], ymm0, 1
je 0x6430f8
mov edi, r13d
mov eax, 1
lea r13, [rsp + 0x120]
mov qword [rsp + 0xa8], r15
sub edi, 1
mov dword [rsp + 0xb0], r12d
mov r14, rsi
mov r12, rsi
cmove eax, edi
xor ebx, ebx
mov r15, r13
mov esi, ebx
lea edi, [rax + 1]
mov dword [rsp + 0x88], eax
lea rax, [rbp + 0x80]
mov qword [rsp + 0x90], rax
lea rax, [rsp + 0x160]
mov qword [rsp + 0x98], rax
mov dword [rsp + 0xc0], edi
jmp 0x642034
mov rdx, r15
mov rcx, rbp
vzeroupper
call fcn.00641840
lea eax, [rsi + 1]
sub r14, 0xffffffffffffff80
cmp esi, dword [rsp + 0x88]
je 0x642348
mov esi, eax
lea rax, [r14 + 0x20]
cmp rbp, rax
jae 0x642048
cmp qword [rsp + 0x50], r14
ja 0x642320
vmovdqu xmm6, xmmword [rbp]
vinserti128 ymm0, ymm6, xmmword [rbp + 0x10], 1
vmovups xmmword [r14], xmm0
vextracti128 xmmword [r14 + 0x10], ymm0, 1
vmovdqu xmm7, xmmword [rbp + 0x20]
vinserti128 ymm0, ymm7, xmmword [rbp + 0x30], 1
vmovups xmmword [r14 + 0x20], xmm0
vextracti128 xmmword [r14 + 0x30], ymm0, 1
vmovdqu xmm6, xmmword [rbp + 0x40]
vinserti128 ymm0, ymm6, xmmword [rbp + 0x50], 1
vmovups xmmword [r14 + 0x40], xmm0
vextracti128 xmmword [r14 + 0x50], ymm0, 1
vmovdqu xmm7, xmmword [rbp + 0x60]
vinserti128 ymm0, ymm7, xmmword [rbp + 0x70], 1
vmovups xmmword [r14 + 0x60], xmm0
vextracti128 xmmword [r14 + 0x70], ymm0, 1
cmp r12, qword [rsp + 0x138]
jne 0x642010
mov eax, dword [rbp + 0x40]
mov r13d, dword [rsp + 0x124]
mov rbx, rbp
mov edi, dword [rbp + 0x44]
mov r11d, dword [rbp + 0x4c]
mov r10d, dword [rbp + 0x54]
mov r9d, dword [rbp + 0x5c]
mov dword [rsp + 0x58], eax
mov eax, dword [rbp + 0x48]
mov r8d, dword [rbp + 0x64]
mov ecx, dword [rbp + 0x6c]
mov edx, dword [rbp + 0x74]
mov dword [rsp + 0x60], eax
mov eax, dword [rbp + 0x50]
mov dword [rsp + 0x64], eax
mov eax, dword [rbp + 0x58]
mov dword [rsp + 0x68], eax
mov eax, dword [rbp + 0x60]
mov dword [rsp + 0x6c], eax
mov eax, dword [rbp + 0x68]
mov dword [rsp + 0x70], eax
mov eax, dword [rbp + 0x70]
mov dword [rsp + 0x74], eax
mov eax, dword [rbp + 0x78]
mov dword [rsp + 0x78], eax
mov eax, dword [rbp + 0x7c]
vmovdqu xmm7, xmmword [rbx + 0x20]
vmovd xmm4, dword [rsp + 0x78]
vinserti128 ymm1, ymm7, xmmword [rbx + 0x30], 1
vmovd xmm7, dword [rsp + 0x70]
vmovd xmm5, dword [rsp + 0x74]
vmovd xmm6, dword [rsp + 0x6c]
vpinsrd xmm3, xmm4, eax, 1
vpinsrd xmm4, xmm7, ecx, 1
vmovd xmm7, dword [rsp + 0x64]
mov rcx, qword [rsp + 0x98]
vpinsrd xmm2, xmm5, edx, 1
vpinsrd xmm0, xmm6, r8d, 1
vmovd xmm5, dword [rsp + 0x68]
mov edx, r13d
vpunpcklqdq xmm2, xmm2, xmm3
vmovd xmm6, dword [rsp + 0x60]
vpinsrd xmm3, xmm7, r10d, 1
vpunpcklqdq xmm0, xmm0, xmm4
vmovd xmm7, dword [rsp + 0x58]
vinserti128 ymm0, ymm0, xmm2, 1
vmovdqu xmm4, xmmword [rbx]
vpxor ymm0, ymm0, ymm1
vinserti128 ymm2, ymm4, xmmword [rbx + 0x10], 1
vpinsrd xmm4, xmm5, r9d, 1
vpinsrd xmm1, xmm7, edi, 1
vpinsrd xmm5, xmm6, r11d, 1
vpunpcklqdq xmm3, xmm3, xmm4
vmovups xmmword [rsp + 0x180], xmm0
vextracti128 xmmword [rsp + 0x190], ymm0, 1
vpunpcklqdq xmm1, xmm1, xmm5
vinserti128 ymm1, ymm1, xmm3, 1
vpxor ymm1, ymm1, ymm2
vmovups xmmword [rsp + 0x160], xmm1
vextracti128 xmmword [rsp + 0x170], ymm1, 1
vzeroupper
add rbx, 0x40
call fcn.006408e0
mov eax, dword [rsp + 0x160]
vmovdqu xmm4, xmmword [rsp + 0x180]
vmovdqu xmm5, xmmword [rsp + 0x160]
mov edi, dword [rsp + 0x164]
mov dword [rsp + 0x58], eax
mov eax, dword [rsp + 0x168]
mov r11d, dword [rsp + 0x16c]
mov r10d, dword [rsp + 0x174]
mov dword [rsp + 0x60], eax
mov eax, dword [rsp + 0x170]
mov r9d, dword [rsp + 0x17c]
mov r8d, dword [rsp + 0x184]
mov dword [rsp + 0x64], eax
mov eax, dword [rsp + 0x178]
mov ecx, dword [rsp + 0x18c]
mov edx, dword [rsp + 0x194]
vinserti128 ymm0, ymm4, xmmword [rsp + 0x190], 1
mov dword [rsp + 0x68], eax
mov eax, dword [rsp + 0x180]
vinserti128 ymm1, ymm5, xmmword [rsp + 0x170], 1
vmovups xmmword [rbx - 0x20], xmm0
vextracti128 xmmword [rbx - 0x10], ymm0, 1
mov dword [rsp + 0x6c], eax
mov eax, dword [rsp + 0x188]
vextracti128 xmmword [rbx - 0x30], ymm1, 1
vmovups xmmword [rbx - 0x40], xmm1
mov dword [rsp + 0x70], eax
mov eax, dword [rsp + 0x190]
mov dword [rsp + 0x74], eax
mov eax, dword [rsp + 0x198]
mov dword [rsp + 0x78], eax
mov eax, dword [rsp + 0x19c]
cmp rbx, qword [rsp + 0x90]
jne 0x642118
jmp 0x64201e
call qword [sym.imp.msvcrt.dll__errno]
mov r12d, 0xffffffff
mov dword [rax], 0x16
vmovups xmm6, xmmword [rsp + 0x2b0]
mov eax, r12d
vmovups xmm7, xmmword [rsp + 0x2c0]
add rsp, 0x2d8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor eax, eax
nop word [rax + rax]
mov edx, dword [rbp + rax]
mov dword [r14 + rax], edx
add rax, 4
cmp rax, 0x80
jne 0x642328
jmp 0x6420ab
mov eax, dword [rsp + 0xc0]
mov rsi, r12
mov r13, r15
mov r12d, dword [rsp + 0xb0]
mov r15, qword [rsp + 0xa8]
mov rdi, rax
shl rax, 7
lea r14, [rsi + rax]
lea rax, [rbp + 0x80]
mov qword [rsp + 0x88], rax
lea rax, [rsp + 0x160]
mov qword [rsp + 0x90], rax
cmp dword [rsp + 0xc8], edi
jbe 0x642552
mov qword [rsp + 0x98], r15
mov r15d, edi
mov rdi, rsi
mov dword [rsp + 0xa8], r12d
mov r12, r13
nop dword [rax]
lea rax, [r14 + 0x20]
cmp rbp, rax
jae 0x6423cc
cmp qword [rsp + 0x50], r14
ja 0x643050
vmovdqu xmm5, xmmword [rbp]
vinserti128 ymm0, ymm5, xmmword [rbp + 0x10], 1
vmovups xmmword [r14], xmm0
vextracti128 xmmword [r14 + 0x10], ymm0, 1
vmovdqu xmm6, xmmword [rbp + 0x20]
vinserti128 ymm0, ymm6, xmmword [rbp + 0x30], 1
vmovups xmmword [r14 + 0x20], xmm0
vextracti128 xmmword [r14 + 0x30], ymm0, 1
vmovdqu xmm7, xmmword [rbp + 0x40]
vinserti128 ymm0, ymm7, xmmword [rbp + 0x50], 1
vmovups xmmword [r14 + 0x40], xmm0
vextracti128 xmmword [r14 + 0x50], ymm0, 1
vmovdqu xmm5, xmmword [rbp + 0x60]
vinserti128 ymm0, ymm5, xmmword [rbp + 0x70], 1
vmovups xmmword [r14 + 0x60], xmm0
vextracti128 xmmword [r14 + 0x70], ymm0, 1
mov r8d, dword [rbp + 0x40]
mov eax, r15d
nop word cs:[rax + rax]
lea edx, [rax - 1]
mov ecx, eax
and eax, edx
jne 0x642440
and edx, r8d
sub edx, ecx
lea eax, [rdx + r15]
shl rax, 7
lea rdx, [rdi + rax]
lea rax, [rdi + rax + 0x20]
cmp qword [rsp + 0x50], rdx
jbe 0x64246f
cmp rbp, rax
jb 0x643078
vmovdqu xmm6, xmmword [rdx]
vmovdqu xmm4, xmmword [rbp]
vinserti128 ymm1, ymm6, xmmword [rdx + 0x10], 1
vinserti128 ymm0, ymm4, xmmword [rbp + 0x10], 1
vmovdqu xmm5, xmmword [rbp + 0x20]
vmovdqu xmm4, xmmword [rbp + 0x40]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbp], xmm0
vextracti128 xmmword [rbp + 0x10], ymm0, 1
vmovdqu xmm6, xmmword [rax]
vinserti128 ymm0, ymm5, xmmword [rbp + 0x30], 1
vinserti128 ymm1, ymm6, xmmword [rax + 0x10], 1
vmovdqu xmm6, xmmword [rbp + 0x60]
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbp + 0x20], xmm0
vextracti128 xmmword [rbp + 0x30], ymm0, 1
vinserti128 ymm0, ymm4, xmmword [rbp + 0x50], 1
vmovdqu xmm7, xmmword [rax + 0x20]
vinserti128 ymm1, ymm7, xmmword [rax + 0x30], 1
vpxor ymm0, ymm0, ymm1
vinserti128 ymm1, ymm6, xmmword [rbp + 0x70], 1
vmovups xmmword [rbp + 0x40], xmm0
vextracti128 xmmword [rbp + 0x50], ymm0, 1
vmovdqu xmm5, xmmword [rax + 0x40]
vinserti128 ymm0, ymm5, xmmword [rax + 0x50], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbp + 0x60], xmm0
vextracti128 xmmword [rbp + 0x70], ymm0, 1
cmp rdi, qword [rsp + 0x138]
je 0x642e30
mov rdx, r12
mov rcx, rbp
vzeroupper
call fcn.00641840
add r15d, 1
sub r14, 0xffffffffffffff80
cmp dword [rsp + 0xc8], r15d
jne 0x6423b8
mov r13, r12
mov r15, qword [rsp + 0x98]
mov r12d, dword [rsp + 0xa8]
mov eax, dword [rbp]
mov edx, dword [rsp + 0x120]
mov r14d, dword [rbp + 0xc]
mov r9d, dword [rbp + 0x2c]
mov r10d, dword [rbp + 0x34]
mov r11d, dword [rbp + 0x3c]
mov dword [rsp + 0x58], eax
mov eax, dword [rbp + 4]
mov ebx, dword [rbp + 0x44]
mov dword [rsp + 0x70], eax
mov eax, dword [rbp + 8]
mov dword [rsp + 0x74], eax
mov eax, dword [rbp + 0x10]
mov dword [rsp + 0x78], eax
mov eax, dword [rbp + 0x14]
mov dword [rsp + 0x88], eax
mov eax, dword [rbp + 0x18]
mov dword [rsp + 0x68], eax
mov eax, dword [rbp + 0x1c]
mov dword [rsp + 0x64], eax
mov eax, dword [rbp + 0x20]
mov dword [rsp + 0xec], eax
mov eax, dword [rbp + 0x24]
mov dword [rsp + 0x6c], eax
mov eax, dword [rbp + 0x28]
mov dword [rsp + 0x60], eax
mov eax, dword [rbp + 0x30]
mov dword [rsp + 0xe8], eax
mov eax, dword [rbp + 0x38]
mov dword [rsp + 0x90], eax
mov eax, dword [rbp + 0x40]
mov dword [rsp + 0x98], eax
mov eax, dword [rbp + 0x48]
mov edi, dword [rbp + 0x54]
mov ecx, dword [rbp + 0x5c]
mov dword [rsp + 0xa8], eax
mov eax, dword [rbp + 0x4c]
mov r8d, dword [rbp + 0x6c]
mov dword [rsp + 0xb0], eax
mov eax, dword [rbp + 0x50]
mov dword [rsp + 0xc0], eax
mov eax, dword [rbp + 0x58]
mov dword [rsp + 0xcc], eax
mov eax, dword [rbp + 0x60]
mov dword [rsp + 0xd0], eax
mov eax, dword [rbp + 0x64]
mov dword [rsp + 0xd4], eax
mov eax, dword [rbp + 0x68]
mov dword [rsp + 0xd8], eax
mov eax, dword [rbp + 0x70]
mov dword [rsp + 0xdc], eax
mov eax, dword [rbp + 0x74]
mov dword [rsp + 0xe0], eax
mov eax, dword [rbp + 0x78]
mov dword [rsp + 0xe4], eax
mov eax, dword [rbp + 0x7c]
vmovd xmm5, dword [rsp + 0x90]
vmovd xmm4, dword [rsp + 0x58]
vmovd xmm6, dword [rsp + 0x78]
vmovd xmm7, dword [rsp + 0x60]
vpinsrd xmm1, xmm6, dword [rsp + 0x70], 1
vpinsrd xmm3, xmm7, dword [rsp + 0x64], 1
vpinsrd xmm2, xmm5, r9d, 1
vpinsrd xmm0, xmm4, r10d, 1
vmovd xmm5, dword [rsp + 0x68]
vmovd xmm7, dword [rsp + 0x74]
vpunpcklqdq xmm1, xmm1, xmm2
vpunpcklqdq xmm0, xmm0, xmm3
vmovd xmm6, dword [rsp + 0xe8]
vmovd xmm4, dword [rsp + 0xec]
vinserti128 ymm0, ymm0, xmm1, 1
vpinsrd xmm1, xmm6, dword [rsp + 0x6c], 1
vpinsrd xmm2, xmm5, r14d, 1
vmovd xmm6, dword [rsp + 0xc0]
vmovups xmmword [r15], xmm0
vextracti128 xmmword [r15 + 0x10], ymm0, 1
vpinsrd xmm0, xmm4, dword [rsp + 0x88], 1
vpinsrd xmm3, xmm7, r11d, 1
vmovd xmm5, dword [rsp + 0xe4]
vpunpcklqdq xmm1, xmm1, xmm2
vmovd xmm7, dword [rsp + 0xd8]
vmovd xmm4, dword [rsp + 0x98]
vpunpcklqdq xmm0, xmm0, xmm3
vinserti128 ymm0, ymm0, xmm1, 1
vpinsrd xmm3, xmm7, ecx, 1
vpinsrd xmm2, xmm5, r8d, 1
vmovd xmm7, dword [rsp + 0xa8]
vmovups xmmword [r15 + 0x20], xmm0
vextracti128 xmmword [r15 + 0x30], ymm0, 1
vpinsrd xmm0, xmm4, dword [rsp + 0xe0], 1
vpinsrd xmm1, xmm6, ebx, 1
vpunpcklqdq xmm1, xmm1, xmm2
vmovd xmm4, dword [rsp + 0xd0]
vmovd xmm5, dword [rsp + 0xcc]
vpunpcklqdq xmm0, xmm0, xmm3
vpinsrd xmm3, xmm7, eax, 1
vpinsrd xmm2, xmm5, dword [rsp + 0xb0], 1
vmovd xmm6, dword [rsp + 0xdc]
vinserti128 ymm0, ymm0, xmm1, 1
mov rbx, qword [rsp + 0x80]
xor eax, eax
vpinsrd xmm1, xmm6, dword [rsp + 0xd4], 1
vmovups xmmword [r15 + 0x40], xmm0
vextracti128 xmmword [r15 + 0x50], ymm0, 1
vpinsrd xmm0, xmm4, edi, 1
vpunpcklqdq xmm0, xmm0, xmm3
vpunpcklqdq xmm1, xmm1, xmm2
shl rbx, 5
vinserti128 ymm0, ymm0, xmm1, 1
vmovups xmmword [r15 + 0x60], xmm0
vextracti128 xmmword [r15 + 0x70], ymm0, 1
mov rcx, qword [rsp + 0xa0]
nop dword [rax + rax]
vmovdqu xmm6, xmmword [r15 + rax]
vmovdqu xmm7, xmmword [r15 + rax + 0x20]
vinserti128 ymm1, ymm6, xmmword [r15 + rax + 0x10], 1
vinserti128 ymm0, ymm7, xmmword [r15 + rax + 0x30], 1
vpshufb ymm2, ymm1, ymmword [0x006dede0]
vpshufb ymm3, ymm0, ymmword [0x006dee00]
vpermq ymm5, ymm2, 0x4e
vpermq ymm4, ymm3, 0x4e
vpshufb ymm2, ymm1, ymmword [0x006dee20]
vpshufb ymm3, ymm0, ymmword [0x006dee40]
vpor ymm2, ymm2, ymm5
vpor ymm3, ymm3, ymm4
vpor ymm2, ymm2, ymm3
vpshufb ymm3, ymm0, ymmword [0x006dede0]
vpshufb ymm0, ymm0, ymmword [0x006dee20]
vmovups xmmword [rbp + rax], xmm2
vextracti128 xmmword [rbp + rax + 0x10], ymm2, 1
vpermq ymm3, ymm3, 0x4e
vpshufb ymm2, ymm1, ymmword [0x006dee00]
vpermq ymm2, ymm2, 0x4e
vpor ymm0, ymm0, ymm3
vpshufb ymm1, ymm1, ymmword [0x006dee40]
vpor ymm1, ymm1, ymm2
vpor ymm0, ymm0, ymm1
vmovups xmmword [rbp + rax + 0x20], xmm0
vextracti128 xmmword [rbp + rax + 0x30], ymm0, 1
add rax, 0x40
cmp rcx, rax
jne 0x6427c8
mov r14, qword [rsp + 0x80]
lea rsi, [rbp + 0x80]
mov edi, 1
cmp edx, 5
je 0x64291a
nop
vmovdqu xmm6, xmmword [rsi - 0x80]
vmovdqu xmm7, xmmword [rsi - 0x60]
mov rdx, r13
mov rcx, rsi
vinserti128 ymm0, ymm6, xmmword [rsi - 0x70], 1
vmovdqu xmm5, xmmword [rsi - 0x40]
vmovdqu xmm6, xmmword [rsi - 0x20]
vmovups xmmword [rsi], xmm0
vextracti128 xmmword [rsi + 0x10], ymm0, 1
vinserti128 ymm0, ymm7, xmmword [rsi - 0x50], 1
vmovups xmmword [rsi + 0x20], xmm0
vextracti128 xmmword [rsi + 0x30], ymm0, 1
vinserti128 ymm0, ymm5, xmmword [rsi - 0x30], 1
vmovups xmmword [rsi + 0x40], xmm0
vextracti128 xmmword [rsi + 0x50], ymm0, 1
vinserti128 ymm0, ymm6, xmmword [rsi - 0x10], 1
vmovups xmmword [rsi + 0x60], xmm0
vextracti128 xmmword [rsi + 0x70], ymm0, 1
vzeroupper
add rdi, 1
call fcn.00641840
sub rsi, 0xffffffffffffff80
cmp r14, rdi
ja 0x6428a0
mov rsi, qword [rsp + 0xa0]
lea rax, [rbx*4]
mov r14, qword [rsp + 0x48]
mov qword [rsp + 0xc0], r15
mov qword [rsp + 0x78], rax
lea eax, [rsi - 1]
mov ecx, esi
mov qword [rsp + 0x90], r13
mov r15, rsi
shr eax, 3
mov qword [rsp + 0x88], rcx
lea rdi, [rbp + rcx]
mov dword [rsp + 0xc8], eax
lea rax, [rbp + 0x80]
mov r13, rdi
mov qword [rsp + 0x98], rax
nop dword [rax]
mov rsi, qword [rsp + 0x88]
mov rax, qword [r13 - 8]
mov rdi, r14
mov qword [r14 + rsi - 8], rax
mov rsi, rbp
mov ecx, dword [rsp + 0xc8]
rep movsq qword [rdi], qword [rsi]
cmp r12d, 1
jbe 0x642a08
mov ecx, dword [rbp + r15 - 0x40]
mov eax, r12d
nop word [rax + rax]
lea edx, [rax - 1]
mov r8d, eax
and eax, edx
jne 0x6429b0
and edx, ecx
xor eax, eax
sub edx, r8d
add edx, r12d
imul rdx, r15
add rdx, qword [rsp + 0x48]
nop dword [rax]
vmovdqu xmm6, xmmword [rbp + rax]
vmovdqu xmm7, xmmword [rdx + rax]
vinserti128 ymm1, ymm6, xmmword [rbp + rax + 0x10], 1
vinserti128 ymm0, ymm7, xmmword [rdx + rax + 0x10], 1
vpxor ymm0, ymm0, ymm1
vmovups xmmword [rbp + rax], xmm0
vextracti128 xmmword [rbp + rax + 0x10], ymm0, 1
add rax, 0x20
cmp qword [rsp + 0x78], rax
jne 0x6429d0
mov rax, qword [rsp + 0x48]
cmp rax, qword [rsp + 0x138]
je 0x642bf0
mov r8, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x90]
mov rcx, rbp
vzeroupper
call fcn.00641010
add r12d, 1
add r14, r15
cmp dword [rsp + 0x44], r12d
ja 0x642978
mov r15, qword [rsp + 0xc0]
mov r13, qword [rsp + 0x90]
xor eax, eax
mov rdx, qword [rsp + 0xa0]
nop word [rax + rax]
vmovdqu xmm6, xmmword [rbp + rax]
vmovdqu xmm7, xmmword [rbp + rax + 0x20]
vinserti128 ymm1, ymm6, xmmword [rbp + rax + 0x10], 1
vinserti128 ymm0, ymm7, xmmword [rbp + rax + 0x30], 1
vpshufb ymm2, ymm1, ymmword [0x006dee00]
vpshufb ymm3, ymm0, ymmword [0x006dede0]
vpermq ymm5, ymm2, 0x4e
vpermq ymm4, ymm3, 0x4e
vpshufb ymm2, ymm1, ymmword [0x006dee20]
vpshufb ymm3, ymm0, ymmword [0x006dee40]
vpor ymm2, ymm2, ymm5
vpor ymm3, ymm3, ymm4
vpor ymm2, ymm2, ymm3
vpshufb ymm3, ymm0, ymmword [0x006dee00]
vpshufb ymm0, ymm0, ymmword [0x006dee20]
vmovups xmmword [r15 + rax], xmm2
vextracti128 xmmword [r15 + rax + 0x10], ymm2, 1
vpermq ymm3, ymm3, 0x4e
vpshufb ymm2, ymm1, ymmword [0x006dede0]
vpermq ymm2, ymm2, 0x4e
vpor ymm0, ymm0, ymm3
vpshufb ymm1, ymm1, ymmword [0x006dee40]
vpor ymm1, ymm1, ymm2
vpor ymm0, ymm0, ymm1
vmovups xmmword [r15 + rax + 0x20], xmm0
vextracti128 xmmword [r15 + rax + 0x30], ymm0, 1
add rax, 0x40
cmp rdx, rax
jne 0x642a68
mov ebx, dword [rsp + 0x44]
mov rsi, qword [rsp + 0x48]
mov rcx, r15
mov qword [rsp + 0x30], r13
mov rdi, qword [rsp + 0x80]
mov r9d, dword [rsp + 0xf0]
mov qword [rsp + 0x28], rbp
mov r8d, ebx
mov qword [rsp + 0x20], rsi
mov rdx, rdi
vzeroupper
call fcn.00641360
mov qword [rsp + 0x30], r13
mov r9d, dword [rsp + 0xf4]
mov qword [rsp + 0x28], rbp
mov r8d, ebx
mov rdx, rdi
mov rcx, r15
mov qword [rsp + 0x20], rsi
mov r12d, 1
call fcn.00641360
mov rax, rdi
mov qword [rsp + 0x20], 0x20
mov r9, qword [rsp + 0xb8]
shl rax, 9
mov rcx, qword [rsp + 0x340]
mov r8d, 0x40
lea rdx, [r15 + rax - 0x100]
call fcn.00636920
mov rcx, qword [rsp + 0xf8]
call sub.msvcrt.dll_free
mov rcx, rbp
call sub.msvcrt.dll_free
mov rcx, r15
call sub.msvcrt.dll_free
mov rcx, qword [rsp + 0x48]
call sub.msvcrt.dll_free
jmp 0x6422f2
mov ebx, dword [rbp + 0x40]
mov edi, dword [rbp + 0x48]
mov qword [rsp + 0xb0], rbp
mov ecx, dword [rbp + 0x60]
mov eax, dword [rsp + 0x124]
mov esi, dword [rbp + 0x44]
mov r11d, dword [rbp + 0x4c]
mov dword [rsp + 0x50], ebx
mov ebx, dword [rbp + 0x50]
mov r10d, dword [rbp + 0x54]
mov dword [rsp + 0x58], edi
mov edi, dword [rbp + 0x58]
mov r9d, dword [rbp + 0x5c]
mov dword [rsp + 0xa8], eax
mov r8d, dword [rbp + 0x64]
mov edx, dword [rbp + 0x74]
mov dword [rsp + 0x60], ebx
mov ebx, dword [rbp + 0x68]
mov eax, dword [rbp + 0x7c]
mov dword [rsp + 0x64], edi
mov edi, dword [rbp + 0x70]
mov dword [rsp + 0x68], ecx
mov dword [rsp + 0x6c], ebx
mov ebx, dword [rbp + 0x78]
mov ecx, dword [rbp + 0x6c]
mov dword [rsp + 0x70], edi
lea rdi, [rsp + 0x160]
mov dword [rsp + 0x74], ebx
mov rbx, rbp
mov ebp, dword [rsp + 0xa8]
vmovd xmm4, dword [rsp + 0x74]
vmovd xmm7, dword [rsp + 0x6c]
vmovdqu xmm6, xmmword [rbx + 0x20]
vmovd xmm5, dword [rsp + 0x70]
vinserti128 ymm1, ymm6, xmmword [rbx + 0x30], 1
vmovd xmm6, dword [rsp + 0x68]
vpinsrd xmm3, xmm4, eax, 1
vpinsrd xmm4, xmm7, ecx, 1
vmovd xmm7, dword [rsp + 0x60]
vpinsrd xmm2, xmm5, edx, 1
mov rcx, rdi
mov edx, ebp
vpinsrd xmm0, xmm6, r8d, 1
vmovd xmm5, dword [rsp + 0x64]
vpunpcklqdq xmm2, xmm2, xmm3
vmovd xmm6, dword [rsp + 0x58]
vpinsrd xmm3, xmm7, r10d, 1
vpunpcklqdq xmm0, xmm0, xmm4
vmovd xmm7, dword [rsp + 0x50]
vmovdqu xmm4, xmmword [rbx]
vinserti128 ymm0, ymm0, xmm2, 1
vinserti128 ymm2, ymm4, xmmword [rbx + 0x10], 1
vpinsrd xmm4, xmm5, r9d, 1
vpxor ymm0, ymm0, ymm1
vpinsrd xmm5, xmm6, r11d, 1
vpinsrd xmm1, xmm7, esi, 1
vpunpcklqdq xmm1, xmm1, xmm5
vpunpcklqdq xmm3, xmm3, xmm4
vmovups xmmword [rsp + 0x180], xmm0
vextracti128 xmmword [rsp + 0x190], ymm0, 1
vinserti128 ymm1, ymm1, xmm3, 1
vpxor ymm1, ymm1, ymm2
vmovups xmmword [rsp + 0x160], xmm1
vextracti128 xmmword [rsp + 0x170], ymm1, 1
vzeroupper
add rbx, 0x40
call fcn.006408e0
mov eax, dword [rsp + 0x160]
vmovdqu xmm4, xmmword [rsp + 0x180]
vmovdqu xmm5, xmmword [rsp + 0x160]
mov esi, dword [rsp + 0x164]
mov dword [rsp + 0x50], eax
mov eax, dword [rsp + 0x168]
mov r11d, dword [rsp + 0x16c]
mov r10d, dword [rsp + 0x174]
mov dword [rsp + 0x58], eax
mov eax, dword [rsp + 0x170]
mov r9d, dword [rsp + 0x17c]
mov r8d, dword [rsp + 0x184]
mov dword [rsp + 0x60], eax
mov eax, dword [rsp + 0x178]
mov ecx, dword [rsp + 0x18c]
mov edx, dword [rsp + 0x194]
vinserti128 ymm0, ymm4, xmmword [rsp + 0x190], 1
mov dword [rsp + 0x64], eax
mov eax, dword [rsp + 0x180]
vinserti128 ymm1, ymm5, xmmword [rsp + 0x170], 1
vmovups xmmword [rbx - 0x20], xmm0
vextracti128 xmmword [rbx - 0x10], ymm0, 1
mov dword [rsp + 0x68], eax
mov eax, dword [rsp + 0x188]
vextracti128 xmmword [rbx - 0x30], ymm1, 1
vmovups xmmword [rbx - 0x40], xmm1
mov dword [rsp + 0x6c], eax
mov eax, dword [rsp + 0x190]
mov dword [rsp + 0x70], eax
mov eax, dword [rsp + 0x198]
mov dword [rsp + 0x74], eax
mov eax, dword [rsp + 0x19c]
cmp rbx, qword [rsp + 0x98]
jne 0x642c6c
mov rbp, qword [rsp + 0xb0]
jmp 0x642a36
mov eax, dword [rbp + 0x40]
mov r13d, dword [rsp + 0x124]
mov rbx, rbp
mov esi, dword [rbp + 0x44]
mov r11d, dword [rbp + 0x4c]
mov r10d, dword [rbp + 0x54]
mov r9d, dword [rbp + 0x5c]
mov dword [rsp + 0x78], eax
mov eax, dword [rbp + 0x48]
mov r8d, dword [rbp + 0x64]
mov ecx, dword [rbp + 0x6c]
mov edx, dword [rbp + 0x74]
mov dword [rsp + 0x74], eax
mov eax, dword [rbp + 0x50]
mov dword [rsp + 0x70], eax
mov eax, dword [rbp + 0x58]
mov dword [rsp + 0x6c], eax
mov eax, dword [rbp + 0x60]
mov dword [rsp + 0x68], eax
mov eax, dword [rbp + 0x68]
mov dword [rsp + 0x64], eax
mov eax, dword [rbp + 0x70]
mov dword [rsp + 0x60], eax
mov eax, dword [rbp + 0x78]
mov dword [rsp + 0x58], eax
mov eax, dword [rbp + 0x7c]
vmovd xmm4, dword [rsp + 0x58]
vmovd xmm7, dword [rsp + 0x64]
vmovdqu xmm6, xmmword [rbx + 0x20]
vmovd xmm5, dword [rsp + 0x60]
vinserti128 ymm1, ymm6, xmmword [rbx + 0x30], 1
vmovd xmm6, dword [rsp + 0x68]
vpinsrd xmm3, xmm4, eax, 1
vpinsrd xmm4, xmm7, ecx, 1
vmovd xmm7, dword [rsp + 0x70]
vpinsrd xmm2, xmm5, edx, 1
vmovd xmm5, dword [rsp + 0x6c]
mov edx, r13d
vpinsrd xmm0, xmm6, r8d, 1
vpunpcklqdq xmm2, xmm2, xmm3
vmovd xmm6, dword [rsp + 0x74]
mov rcx, qword [rsp + 0x90]
vpinsrd xmm3, xmm7, r10d, 1
vpunpcklqdq xmm0, xmm0, xmm4
vmovd xmm7, dword [rsp + 0x78]
vmovdqu xmm4, xmmword [rbx]
vinserti128 ymm0, ymm0, xmm2, 1
vinserti128 ymm2, ymm4, xmmword [rbx + 0x10], 1
vpinsrd xmm4, xmm5, r9d, 1
vpxor ymm0, ymm0, ymm1
vpinsrd xmm5, xmm6, r11d, 1
vpinsrd xmm1, xmm7, esi, 1
vpunpcklqdq xmm1, xmm1, xmm5
vpunpcklqdq xmm3, xmm3, xmm4
vmovups xmmword [rsp + 0x180], xmm0
vextracti128 xmmword [rsp + 0x190], ymm0, 1
vinserti128 ymm1, ymm1, xmm3, 1
vpxor ymm1, ymm1, ymm2
vmovups xmmword [rsp + 0x160], xmm1
vextracti128 xmmword [rsp + 0x170], ymm1, 1
vzeroupper
add rbx, 0x40
call fcn.006408e0
mov eax, dword [rsp + 0x160]
vmovdqu xmm4, xmmword [rsp + 0x180]
vmovdqu xmm5, xmmword [rsp + 0x160]
mov esi, dword [rsp + 0x164]
mov dword [rsp + 0x78], eax
mov eax, dword [rsp + 0x168]
mov r11d, dword [rsp + 0x16c]
mov r10d, dword [rsp + 0x174]
mov dword [rsp + 0x74], eax
mov eax, dword [rsp + 0x170]
mov r9d, dword [rsp + 0x17c]
mov r8d, dword [rsp + 0x184]
mov dword [rsp + 0x70], eax
mov eax, dword [rsp + 0x178]
mov ecx, dword [rsp + 0x18c]
mov edx, dword [rsp + 0x194]
vinserti128 ymm0, ymm4, xmmword [rsp + 0x190], 1
mov dword [rsp + 0x6c], eax
mov eax, dword [rsp + 0x180]
vinserti128 ymm1, ymm5, xmmword [rsp + 0x170], 1
vmovups xmmword [rbx - 0x20], xmm0
vextracti128 xmmword [rbx - 0x10], ymm0, 1
mov dword [rsp + 0x68], eax
mov eax, dword [rsp + 0x188]
vextracti128 xmmword [rbx - 0x30], ymm1, 1
vmovups xmmword [rbx - 0x40], xmm1
mov dword [rsp + 0x64], eax
mov eax, dword [rsp + 0x190]
mov dword [rsp + 0x60], eax
mov eax, dword [rsp + 0x198]
mov dword [rsp + 0x58], eax
mov eax, dword [rsp + 0x19c]
cmp qword [rsp + 0x88], rbx
jne 0x642e8f
jmp 0x642529
xor eax, eax
nop word [rax + rax]
mov edx, dword [rbp + rax]
mov dword [r14 + rax], edx
add rax, 4
cmp rax, 0x80
jne 0x643058
jmp 0x64242f
xor eax, eax
nop word [rax + rax]
mov ecx, dword [rdx + rax]
xor dword [rbp + rax], ecx
add rax, 4
cmp rax, 0x80
jne 0x643080
jmp 0x64250d
vmovdqu xmm0, xmmword [0x006dee60]
mov edx, 0x1000
mov ecx, 0x2000
mov dword [rsp + 0x60], 0xff0
vmovups xmmword [rsp + 0x124], xmm0
jmp 0x641bce
mov qword [rsp + 0x50], rsi
mov rdi, rbx
jmp 0x641c7c
mov qword [rsp + 0x50], 0
mov rdi, rbx
jmp 0x641c7c
lea r13, [rsp + 0x120]
jmp 0x642647
or r12d, 0xffffffff
jmp 0x642bca
or r12d, 0xffffffff
jmp 0x642bd2
or r12d, 0xffffffff
jmp 0x642bda
or r12d, 0xffffffff
jmp 0x6422f2