Function at 0x10019a00
Capabilities:
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x840
mov dword [esp + 0x188], 0
mov dword [esp + 0x18c], 4
mov dword [esp + 0xfc], edx
mov dword [esp + 0x190], 0
mov dword [esp + 0xf8], ecx
call 0x10019a43
pop eax
mov esi, dword [edx + 0x3c]
mov ecx, dword [edx + 0x38]
mov dword [esp + 0x8c], eax
test esi, esi
mov dword [esp + 0x3dc], ecx
mov dword [esp + 0x3e0], esi
mov dword [esp + 0x3e4], 0
je 0x1001a226
lea eax, [esp + 0x1f0]
mov ebx, 4
xor edi, edi
mov dword [esp + 0x30], 0
mov dword [esp + 0xac], eax
jmp 0x10019ac6
mov eax, dword [esp + 0x10]
mov dword [ebx + edx*8], esi
mov dword [ebx + edx*8 + 4], eax
inc edx
mov esi, dword [esp + 0x3e0]
mov dword [esp + 0x30], edx
mov dword [esp + 0x190], edx
test esi, esi
je 0x10019b4e
lea ecx, [esp + 0x1f0]
lea edx, [esp + 0x3dc]
push edi
call fcn.1002b650
add esp, 4
cmp dword [esp + 0x1f0], 0
jne 0x10019b82
sub esi, dword [esp + 0x3e0]
mov edi, esi
add edi, dword [esp + 0x3e4]
cmp byte [esp + 0x209], 3
mov dword [esp + 0x3e4], edi
je 0x10019b4e
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x1fc]
mov esi, dword [esp + 0x204]
cmp edx, dword [esp + 0x188]
mov dword [esp + 0x10], eax
jne 0x10019aa0
lea ecx, [esp + 0x188]
call fcn.10018ea0
mov ebx, dword [esp + 0x18c]
mov edx, dword [esp + 0x190]
jmp 0x10019aa0
mov eax, dword [esp + 0x18c]
cmp dword [esp + 0x30], 0x15
mov dword [esp + 4], eax
jae 0x10019ba1
cmp dword [esp + 0x30], 2
jb 0x1001a226
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 4]
push 1
call fcn.1002b960
add esp, 4
jmp 0x1001a226
movups xmm0, xmmword [esp + 0x1f8]
mov eax, dword [esp + 0xf8]
movups xmmword [eax + 0x10], xmm0
mov dword [eax + 8], 0
jmp 0x1002005f
mov eax, dword [0x1036e078]
test eax, eax
jne 0x10019bbc
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x1002050d
mov dword [0x1036e078], eax
mov ecx, dword [esp + 0x30]
shr ecx, 1
mov dword [esp + 0x110], ecx
lea ecx, [ecx*8]
push ecx
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x1002050d
mov ecx, eax
mov eax, dword [0x1036e078]
mov dword [esp + 0x50], ecx
test eax, eax
jne 0x10019c02
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10020529
mov dword [0x1036e078], eax
push pe_nt_image_headers32
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10020529
mov esi, eax
mov eax, dword [esp + 4]
mov dword [esp + 0xb0], 0x10
lea ecx, [eax - 4]
mov dword [esp + 0xa8], ecx
lea ecx, [eax - 8]
add eax, 0xfffffff0
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x114], eax
xor eax, eax
xor ecx, ecx
jmp 0x10019c63
mov ecx, 1
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x30]
jae 0x1001a207
mov dword [esp + 8], esi
mov esi, dword [esp + 0x30]
mov edx, eax
mov eax, dword [esp + 4]
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x10], edx
sub esi, edx
lea ecx, [eax + edx*8]
cmp esi, 2
jae 0x10019c90
mov eax, dword [esp + 0x30]
jmp 0x10019e41
mov eax, dword [ecx]
mov edx, dword [ecx + 8]
cmp edx, eax
jae 0x10019cb0
cmp esi, 2
jne 0x10019cc6
mov edx, dword [esp + 0x10]
mov esi, 2
lea eax, [edx + 2]
jmp 0x10019d25
cmp esi, 2
jne 0x10019cf0
mov edx, dword [esp + 0x10]
mov esi, 2
lea eax, [edx + 2]
jmp 0x10019e41
mov edi, 2
mov ebx, edx
mov dword [esp + 0x70], eax
nop word cs:[eax + eax]
nop dword [eax + eax]
mov eax, ebx
mov ebx, dword [ecx + edi*8]
cmp ebx, eax
jae 0x10019d10
inc edi
cmp esi, edi
jne 0x10019ce0
jmp 0x10019d0e
mov edi, 2
mov ebx, edx
mov dword [esp + 0x70], eax
nop dword [eax + eax]
mov eax, ebx
mov ebx, dword [ecx + edi*8]
cmp ebx, eax
jb 0x10019d10
inc edi
cmp esi, edi
jne 0x10019d00
mov edi, esi
mov esi, dword [esp + 0x10]
cmp edx, dword [esp + 0x70]
lea eax, [edi + esi]
mov edx, esi
mov esi, edi
jae 0x10019e41
cmp eax, edx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x3c], eax
jb 0x100203a0
cmp eax, edx
ja 0x10020386
cmp esi, 2
jb 0x10019e39
mov edx, dword [esp + 0x10]
mov edi, esi
mov dword [esp + 0x70], 0
shr edi, 1
cmp esi, 0x18
jb 0x10019df9
lea ebx, [edx + esi]
mov edx, dword [esp + 0xa8]
lea eax, [edi - 1]
lea edx, [edx + ebx*8]
mov dword [esp + 0x48], edx
mov edx, 8
mul edx
mov edx, dword [esp + 0x48]
seto byte [esp + 0x64]
mov dword [esp + 0x2c], eax
sub edx, eax
cmp edx, dword [esp + 0x48]
ja 0x10019df5
mov eax, dword [esp + 0x6c]
lea eax, [eax + ebx*8]
mov edx, eax
sub edx, dword [esp + 0x2c]
cmp edx, eax
ja 0x10019df5
cmp byte [esp + 0x64], 0
mov edx, dword [esp + 0x10]
jne 0x10019df9
shl ebx, 3
mov edx, edi
mov eax, ecx
add ebx, dword [esp + 0x114]
and edx, 0xfffffffe
mov dword [esp + 0x70], edx
movdqu xmm0, xmmword [eax]
movdqu xmm1, xmmword [ebx]
pshufd xmm1, xmm1, 0x4e
pshufd xmm0, xmm0, 0x4e
movdqu xmmword [eax], xmm1
movdqu xmmword [ebx], xmm0
add eax, 0x10
add ebx, 0xfffffff0
add edx, 0xfffffffe
jne 0x10019dc0
cmp edi, dword [esp + 0x70]
mov edx, dword [esp + 0x10]
jne 0x10019df9
mov eax, dword [esp + 0x3c]
jmp 0x10019e41
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x70]
lea eax, [edx*8]
add edx, esi
shl edx, 3
lea eax, [eax + ebx*8]
sub edi, ebx
shl ebx, 3
sub edx, ebx
add eax, dword [esp + 4]
add edx, dword [esp + 0x6c]
nop dword [eax + eax]
movq xmm0, qword [eax]
movq xmm1, qword [edx]
movq qword [eax], xmm1
movq qword [edx], xmm0
add eax, 8
add edx, 0xfffffff8
dec edi
jne 0x10019e20
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x10]
mov edi, eax
sub edi, edx
jb 0x100202fc
cmp eax, dword [esp + 0x30]
ja 0x100202fc
jae 0x10019eb0
cmp esi, 0xa
jae 0x10019eb0
mov eax, dword [esp + 0x30]
lea edi, [edx + 0xa]
cmp edi, eax
cmovae edi, eax
mov dword [esp + 0x3c], edi
sub edi, edx
jb 0x10020378
mov eax, 1
cmp esi, 2
cmovb esi, eax
mov edx, edi
push esi
call fcn.1002b960
add esp, 4
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x9c]
mov esi, dword [esp + 8]
cmp ecx, dword [esp + 0xb0]
je 0x10019ec8
jmp 0x10019f35
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x9c]
mov esi, dword [esp + 8]
cmp ecx, dword [esp + 0xb0]
jne 0x10019f35
lea eax, [ecx + ecx]
mov dword [esp + 0xb0], eax
mov eax, dword [0x1036e078]
test eax, eax
jne 0x10019ef1
mov esi, ecx
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10020338
mov ecx, esi
mov dword [0x1036e078], eax
mov ebx, ecx
shl ecx, 4
push ecx
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10020338
mov esi, eax
lea eax, [ebx*8]
push eax
push dword [esp + 0xc]
push esi
call sub.msvcrt.dll_memcpy
add esp, 0xc
push dword [esp + 8]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
mov edx, dword [esp + 0x10]
mov ecx, ebx
mov dword [esi + ecx*8], edi
mov dword [esi + ecx*8 + 4], edx
inc ecx
cmp ecx, 2
jb 0x10019c55
mov dword [esp + 8], esi
jmp 0x10019fae
mov edi, esi
mov eax, edx
mov esi, dword [esp + 0x50]
sub eax, esi
push eax
push esi
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov ecx, dword [esp + 0x44]
mov esi, dword [esp + 8]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0xc]
add ecx, dword [esp + 0x2c]
mov dword [esi + eax*8 + 8], ecx
mov ecx, dword [esp + 0x48]
mov dword [esi + eax*8 + 0xc], ecx
mov ecx, dword [esp + 0x64]
not eax
add ecx, eax
lea eax, [edx + 8]
shl ecx, 3
push ecx
push eax
push edx
call sub.msvcrt.dll_memmove
add esp, 0xc
mov ecx, dword [esp + 0x9c]
cmp ecx, 1
jbe 0x10019c50
mov edx, ecx
mov eax, dword [esi + ecx*8 - 8]
mov ecx, dword [esi + ecx*8 - 4]
mov dword [esp + 0x64], edx
add ecx, eax
cmp ecx, dword [esp + 0x30]
mov ecx, edx
je 0x1001a010
mov edx, dword [esi + ecx*8 - 0x10]
cmp edx, eax
jbe 0x1001a010
cmp ecx, 3
jb 0x1001a1e6
lea edi, [ecx - 3]
mov dword [esp + 0x34], edi
mov edi, ecx
mov ecx, dword [esi + ecx*8 - 0x18]
lea esi, [edx + eax]
cmp ecx, esi
jbe 0x1001a1cd
cmp edi, 4
jb 0x1001a1f0
mov esi, dword [esp + 8]
add edx, ecx
cmp dword [esi + edi*8 - 0x20], edx
mov edi, dword [esp + 0x34]
jbe 0x1001a01c
jmp 0x1001a1fe
cmp ecx, 3
jb 0x1001a024
lea edi, [ecx - 3]
mov ecx, dword [esi + ecx*8 - 0x18]
cmp ecx, eax
mov ecx, dword [esp + 0x64]
jb 0x1001a027
lea edi, [ecx - 2]
cmp ecx, edi
jbe 0x100201a5
lea eax, [edi + 1]
cmp ecx, eax
jbe 0x100201cd
mov eax, dword [esi + edi*8 + 8]
mov edx, dword [esi + edi*8 + 0xc]
mov ebx, dword [esi + edi*8 + 4]
add edx, eax
mov dword [esp + 0x44], eax
mov eax, ebx
mov dword [esp + 0x48], ebx
mov esi, edx
sub esi, ebx
jb 0x10020212
cmp edx, dword [esp + 0x30]
ja 0x1002022c
lea eax, [ecx - 1]
mov dword [esp + 0x70], edx
mov dword [esp + 0x34], edi
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 8]
lea ecx, [eax + edi*8]
mov edx, dword [eax + edi*8]
mov eax, dword [esp + 4]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x2c], edx
lea ebx, [eax + ecx*8]
mov ecx, dword [esp + 0x50]
mov eax, esi
sub eax, edx
lea edi, [ebx + edx*8]
cmp eax, edx
jae 0x1001a140
mov esi, eax
lea eax, [eax*8]
push eax
push edi
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x50]
cmp dword [esp + 0x2c], 0
lea eax, [eax + esi*8]
jle 0x10019f54
test esi, esi
mov ecx, esi
jle 0x10019f54
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x70]
lea ecx, [ecx + edx*8]
jmp 0x1001a117
lea esi, [edi - 8]
mov edx, eax
movq xmm0, qword [edi - 8]
cmp esi, ebx
movq qword [ecx], xmm0
jbe 0x10019f50
add ecx, 0xfffffff8
cmp edx, dword [esp + 0x50]
mov edi, esi
mov eax, edx
jbe 0x10019f50
mov edx, dword [eax - 8]
cmp edx, dword [edi - 8]
jb 0x1001a0f0
mov esi, edi
lea edx, [eax - 8]
mov edi, eax
movq xmm0, qword [edi - 8]
cmp esi, ebx
movq qword [ecx], xmm0
ja 0x1001a106
jmp 0x10019f50
lea eax, [edx*8]
push eax
mov dword [esp + 0x14], ebx
push ebx
push ecx
mov ebx, ecx
call sub.msvcrt.dll_memcpy
mov ecx, dword [esp + 0x38]
add esp, 0xc
lea eax, [ebx + ecx*8]
test ecx, ecx
jle 0x1001a1c0
cmp esi, ecx
jle 0x1001a1c0
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x70]
mov esi, dword [esp + 0x50]
lea ecx, [ecx + edx*8]
mov dword [esp + 0x70], ecx
nop word [eax + eax]
mov ecx, esi
mov esi, dword [edi]
xor edx, edx
xor ebx, ebx
cmp esi, dword [ecx]
setae bl
lea esi, [ecx + ebx*8]
cmovb ecx, edi
mov ebx, dword [esp + 0x10]
movq xmm0, qword [ecx]
setb cl
movq qword [ebx], xmm0
add ebx, 8
cmp esi, eax
mov dword [esp + 0x10], ebx
jae 0x1001a1c4
mov dl, cl
lea edi, [edi + edx*8]
cmp edi, dword [esp + 0x70]
jb 0x1001a180
jmp 0x1001a1c4
mov esi, dword [esp + 0x50]
mov edi, dword [esp + 0x10]
jmp 0x10019f58
mov esi, dword [esp + 8]
mov edi, dword [esp + 0x34]
cmp ecx, eax
mov ecx, dword [esp + 0x64]
jae 0x1001a024
jmp 0x1001a027
mov ecx, 2
jmp 0x10019c55
mov esi, dword [esp + 8]
mov ecx, 3
jmp 0x10019c55
mov ecx, dword [esp + 0x64]
jmp 0x10019c55
push esi
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
push dword [esp + 0x50]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 0xfc]
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 8
mov dword [esp + 0x194], 0
mov dword [esp + 0x198], 8
mov dword [esp + 0xcc], 0
mov dword [esp + 0x19c], 0
mov ecx, dword [eax + 0x44]
test ecx, ecx
je 0x1001f675
mov eax, dword [eax + 0x40]
xor edx, edx
mov dword [esp + 0x48], eax
lea eax, [esp + 0x340]
mov dword [esp + 0x110], eax
mov dword [esp + 0x9c], edx
jmp 0x1001a2d1
test edi, edi
mov ecx, edi
mov dword [esp + 0x9c], esi
je 0x1001f675
cmp ecx, 4
jb 0x1001fee9
mov eax, dword [esp + 0x48]
lea ebx, [ecx - 4]
mov esi, 0x400
mov dword [esp + 0x64], ecx
mov edi, dword [eax]
lea edx, [eax + 4]
cmp edi, 0xfffffff0
jae 0x1001a300
mov eax, edi
sub ebx, eax
jae 0x1001a335
jmp 0x1001fefe
cmp edi, 0xffffffff
jne 0x1001ff22
cmp ebx, 8
jb 0x1001ff2b
cmp dword [edx + 4], 0
jne 0x1001ff95
mov eax, dword [edx]
mov edx, dword [esp + 0x48]
lea ebx, [ecx - 0xc]
mov esi, 0x800
add edx, 0xc
sub ebx, eax
jb 0x1001fefe
cmp eax, 2
jb 0x1001ff12
mov dword [esp + 0x50], esi
lea ecx, [edx + eax]
mov esi, eax
lea eax, [edx + 2]
mov dword [esp + 0x34], edi
mov edi, edx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x10], eax
movzx eax, word [edx]
mov dword [esp + 0x48], ecx
mov dword [esp + 8], esi
lea ecx, [eax - 2]
mov dword [esp + 0x44], eax
cmp cx, 3
lea ecx, [esi - 2]
jae 0x1001a3a0
cmp dword [esp + 0x34], 0xfffffff0
jae 0x1001a3f0
cmp ecx, 4
jb 0x10020119
mov eax, dword [esp + 8]
lea ecx, [eax - 6]
mov eax, dword [edi + 2]
add edi, 6
test ecx, ecx
jne 0x1001a41d
jmp 0x1001ffc2
cmp ax, 5
jne 0x1001ffae
test ecx, ecx
je 0x1001ffb9
mov eax, dword [esp + 8]
cmp eax, 3
je 0x1001ffbf
movzx ecx, byte [edi + 2]
cmp dword [esp + 0x34], 0xfffffff0
movzx ebx, byte [edi + 3]
mov esi, eax
lea eax, [edi + 4]
lea esi, [esi - 4]
jae 0x1001a437
cmp esi, 4
jb 0x100200ab
mov eax, dword [eax]
mov esi, dword [esp + 8]
mov dword [esp + 0x10], edx
jmp 0x1001a450
cmp ecx, 8
jb 0x1002012b
mov eax, dword [esp + 0x10]
cmp dword [eax + 4], 0
jne 0x1002009d
mov edx, dword [eax]
mov eax, dword [esp + 8]
add edi, 0xa
lea ecx, [eax - 0xa]
mov eax, edx
test ecx, ecx
je 0x1001ffc2
movzx edx, byte [edi]
inc edi
dec ecx
mov dword [esp + 0x6c], 0
mov dword [esp + 0x3c], edi
mov byte [esp + 0x70], dl
jmp 0x1001a510
cmp esi, 8
jb 0x100200af
cmp dword [eax + 4], 0
jne 0x1002009d
mov dword [esp + 0x10], eax
mov eax, dword [eax]
dec ecx
cmp ecx, 5
ja 0x1002018b
mov edi, dword [ecx*4 + 0x10020d10]
mov edx, dword [esp + 0x10]
mov byte [esp + 0x70], bl
mov ebx, eax
lea eax, [esi - 8]
mov dword [esp + 0x6c], 0
mov ecx, eax
mov eax, ebx
add edi, dword [esp + 0x8c]
add edx, 8
mov dword [esp + 0x3c], edx
jmp edi
mov edx, dword [esp + 0xfc]
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x64]
sub esi, edi
mov ebx, dword [edx + 0x2c]
add esi, dword [esp + 0x9c]
cmp ebx, eax
jb 0x1001a2c0
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x19c]
mov edi, dword [edx + 0x28]
sub ebx, eax
pxor xmm0, xmm0
mov dword [esp + 0x128], 8
mov dword [esp + 0x12c], 0
mov dword [esp + 0x11c], 0
mov dword [esp + 0xa8], ecx
mov dword [esp + 0xb0], edx
mov dword [esp + 0xac], eax
movq qword [esp + 0x120], xmm0
mov dword [esp + 0x114], esi
je 0x1001c5e0
mov edx, dword [esp + 0x44]
movzx eax, byte [esp + 0x70]
add edi, dword [esp + 0xac]
mov dword [esp + 0x160], 0
mov dword [esp + 0x1e8], 8
shl edx, 0x10
add edx, dword [esp + 0x50]
or eax, edx
mov dword [esp + 0x1ec], eax
mov eax, dword [esp + 0xb0]
add eax, 8
mov dword [esp + 0x1e4], eax
mov dword [esp + 0x10], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x70], 0
xor ecx, ecx
mov dword [esp + 0x2c], edi
nop dword [eax + eax]
mov eax, dword [esp + 0x10]
cmp ecx, 0x3f
movzx edx, byte [edi + eax]
jne 0x1001a616
cmp dl, 1
ja 0x1001c5e0
mov dh, dl
xor edi, edi
mov eax, ebx
mov ebx, 0
and dh, 0x7f
movzx esi, dh
shld edi, esi, cl
shl esi, cl
test cl, 0x20
cmovne edi, esi
cmovne esi, ebx
mov ebx, dword [esp + 0x70]
or ebx, edi
mov edi, dword [esp + 0x50]
mov dword [esp + 0x70], ebx
or edi, esi
test dl, dl
mov dword [esp + 0x50], edi
jns 0x1001a66a
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x2c]
mov ebx, eax
add ecx, 7
inc edx
cmp ebx, edx
mov eax, edx
mov dword [esp + 0x10], edx
jne 0x1001a600
jmp 0x1001c5e0
mov esi, edi
mov esi, eax
mov eax, dword [esp + 0x10]
mov ecx, edi
or ecx, ebx
je 0x1001c5f9
lea ecx, [esi - 1]
cmp ecx, eax
mov eax, dword [esp + 0x2c]
je 0x1001c5e0
mov edx, dword [esp + 0x10]
movzx ecx, byte [eax + edx + 1]
mov edi, ecx
and edi, 0x7f
test cl, cl
lea ecx, [esi - 2]
js 0x1001a6aa
mov esi, edx
lea edx, [eax + edx + 2]
sub ecx, esi
jmp 0x1001a706
cmp ecx, edx
je 0x1001c5e0
mov ebx, dword [esp + 0x10]
movzx edi, di
movzx ecx, byte [eax + ebx + 2]
mov edx, ecx
and edx, 0x7f
shl edx, 7
or edi, edx
test cl, cl
lea edx, [eax + ebx + 3]
lea ecx, [esi - 3]
js 0x1001a6d7
sub ecx, ebx
jmp 0x1001a706
cmp ecx, ebx
je 0x1001c5e0
movzx ecx, byte [edx]
cmp cx, 3
ja 0x1001c5e0
mov edx, dword [esp + 0x10]
movzx ebx, cx
movzx edi, di
shl ebx, 0xe
or edi, ebx
sub esi, edx
lea edx, [eax + edx + 4]
add esi, 0xfffffffc
mov ecx, esi
test di, di
mov dword [esp + 0xa4], edi
je 0x1001c5e0
test ecx, ecx
je 0x1001c5e0
movzx eax, byte [edx]
cmp al, 1
ja 0x1001c5e0
dec ecx
pxor xmm0, xmm0
mov byte [esp + 0x98], al
mov dword [esp + 0x20c], 0
mov dword [esp + 0x208], 0
mov dword [esp + 0x210], 0
mov dword [esp + 0x21c], 0
mov dword [esp + 0x218], 0
mov dword [esp + 0x220], 0
mov dword [esp + 0x22c], 0
mov dword [esp + 0x228], 0
mov dword [esp + 0x230], 0
mov dword [esp + 0x23c], 0
mov dword [esp + 0x238], 0
mov dword [esp + 0x240], 0
mov dword [esp + 0x200], 0
mov dword [esp + 0x10], ecx
movdqa xmmword [esp + 0x1f0], xmm0
je 0x1001c5b0
mov edi, edx
inc edi
mov eax, dword [esp + 0x10]
lea ecx, [eax - 1]
movzx eax, byte [edi]
mov esi, eax
and esi, 0x7f
test al, al
js 0x1001a7f2
inc edi
mov edx, edi
jmp 0x1001a81d
test ecx, ecx
je 0x1001c5b0
movzx eax, byte [edi + 1]
movzx esi, si
lea edx, [edi + 2]
mov ecx, eax
and ecx, 0x7f
shl ecx, 7
or esi, ecx
mov ecx, dword [esp + 0x10]
test al, al
lea ecx, [ecx - 2]
js 0x1001ab25
test si, si
je 0x1001abd1
test ecx, ecx
mov dword [esp + 0x40], esi
je 0x1001c5b0
movzx eax, byte [edx]
lea esi, [ecx - 1]
mov ebx, eax
and ebx, 0x7f
test al, al
js 0x1001a8d1
inc edx
mov edi, edx
cmp bx, 0x21
mov dword [esp + 0x10], esi
jne 0x1001a906
test esi, esi
je 0x1001c5b0
xor ebx, ebx
mov dword [esp + 0xc], 0
mov dword [esp + 0x2c], 0
xor ecx, ecx
mov dword [esp + 4], edi
nop word cs:[eax + eax]
movzx esi, byte [edi + ebx]
cmp ecx, 0x3f
jne 0x1001a896
cmp esi, 0x7f
je 0x1001a896
test esi, esi
jne 0x1001c5b0
mov eax, esi
xor edi, edi
mov edx, 0
and eax, 0x7f
shld edi, eax, cl
shl eax, cl
test cl, 0x20
cmovne edi, eax
cmovne eax, edx
mov edx, esi
or dword [esp + 0x2c], edi
or dword [esp + 0xc], eax
test dl, dl
jns 0x1001a936
inc ebx
add ecx, 7
mov edi, dword [esp + 4]
cmp dword [esp + 0x10], ebx
jne 0x1001a880
jmp 0x1001c5b0
test esi, esi
je 0x1001c5b0
movzx eax, byte [edx + 1]
movzx ebx, bx
lea edi, [edx + 2]
mov esi, eax
and esi, 0x7f
shl esi, 7
or ebx, esi
test al, al
lea esi, [ecx - 2]
js 0x1001ab54
cmp bx, 0x21
mov dword [esp + 0x10], esi
je 0x1001a856
movzx eax, bx
test eax, eax
je 0x1001c5b0
movzx eax, word [esp + 0x40]
mov edx, ebx
mov ebx, dword [esp + 0x68]
mov ecx, 0xffffffff
xor esi, esi
shl edx, 0x10
or edx, eax
and ebx, ecx
xor eax, eax
xor ecx, ecx
mov dword [esp + 0xc], edx
xor edx, edx
jmp 0x1001a9ae
add ecx, 7
mov eax, 0xffffffff
mov edi, 0
mov esi, dword [esp + 0x2c]
cmp ecx, 0x40
setl byte [esp + 0x38]
and dl, 0x40
shl eax, cl
shr dl, 6
test cl, 0x20
mov ecx, 0xffffffff
cmovne ecx, eax
cmovne eax, edi
test byte [esp + 0x38], dl
movzx edx, word [esp + 0x40]
cmove eax, edi
cmove ecx, edi
mov edi, dword [esp + 0xc]
or edx, 0x210000
mov dword [esp + 0xc], edx
or esi, ecx
mov ecx, 0xffffffff
and dword [esp + 0x68], ecx
or edi, eax
mov eax, edi
mov edx, edi
mov edi, dword [esp + 4]
shrd eax, esi, 0x10
shr esi, 0x10
mov cl, dh
lea edi, [edi + ebx + 1]
not ebx
add dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x68]
movzx ecx, cl
shld esi, eax, 0x10
shl eax, 0x10
mov dword [esp + 0x68], ebx
shl ecx, 8
or ecx, eax
movzx eax, dl
or eax, ecx
cmp dword [esp + 0x1f0], 0
je 0x1001aa32
mov edx, dword [esp + 0x1fc]
mov dword [esp + 4], eax
cmp edx, dword [esp + 0x1f4]
jne 0x1001a9f7
lea ecx, [esp + 0x1f4]
call fcn.1002c000
mov edx, dword [esp + 0x1fc]
mov ecx, dword [esp + 0x1f8]
mov eax, edx
inc edx
shl eax, 4
mov dword [ecx + eax + 4], esi
mov esi, dword [esp + 4]
mov dword [ecx + eax], esi
mov esi, dword [esp + 0xc]
mov dword [ecx + eax + 0xc], ebx
mov dword [ecx + eax + 8], esi
mov dword [esp + 0x1fc], edx
cmp dword [esp + 0x10], 0
jne 0x1001a7da
jmp 0x1001c5b0
mov ecx, dword [esp + 0x1f4]
cmp ecx, 5
jne 0x1001ab91
mov dword [esp + 4], eax
mov dword [esp + 0x2c], esi
mov ebx, edi
mov eax, dword [0x1036e078]
test eax, eax
jne 0x1001aa67
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10020582
mov dword [0x1036e078], eax
push 0x50
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10020582
mov dword [esp + 0x4b0], 5
mov dword [esp + 0x4b4], eax
mov ecx, 0x14
mov edi, eax
lea esi, [esp + 0x1f8]
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 0x4b8], 5
lea ecx, [esp + 0x4b0]
mov edx, 5
call fcn.1002c000
mov eax, dword [esp + 0x4b8]
mov edx, dword [esp + 0x4b4]
mov esi, dword [esp + 0x2c]
mov edi, dword [esp + 0x68]
mov ecx, eax
inc eax
shl ecx, 4
mov dword [edx + ecx + 4], esi
mov esi, dword [esp + 4]
mov dword [edx + ecx], esi
mov esi, dword [esp + 0xc]
mov dword [edx + ecx + 0xc], edi
mov edi, ebx
mov dword [edx + ecx + 8], esi
mov dword [esp + 0x4b8], eax
lea ecx, [esp + 0x1f4]
movq xmm0, qword [esp + 0x4b0]
mov dword [ecx + 8], eax
movq qword [ecx], xmm0
mov dword [esp + 0x1f0], 1
cmp dword [esp + 0x10], 0
jne 0x1001a7da
jmp 0x1001c5b0
test ecx, ecx
je 0x1001c5b0
movzx eax, byte [edx]
cmp ax, 3
ja 0x1001c5b0
mov ecx, dword [esp + 0x10]
movzx eax, ax
movzx esi, si
add edi, 3
shl eax, 0xe
or esi, eax
add ecx, 0xfffffffd
jmp 0x1001a7ee
test esi, esi
je 0x1001c5b0
movzx eax, byte [edi]
cmp ax, 3
ja 0x1001c5b0
movzx eax, ax
add ecx, 0xfffffffd
add edx, 3
movzx ebx, bx
shl eax, 0xe
mov edi, edx
mov esi, ecx
or ebx, eax
cmp bx, 0x21
mov dword [esp + 0x10], esi
jne 0x1001a906
jmp 0x1001a856
jae 0x100202e5
mov edx, dword [esp + 0xc]
shl ecx, 4
mov dword [esp + ecx + 0x1fc], esi
mov dword [esp + ecx + 0x1f8], eax
mov dword [esp + ecx + 0x204], ebx
mov dword [esp + ecx + 0x200], edx
inc dword [esp + 0x1f4]
cmp dword [esp + 0x10], 0
jne 0x1001a7da
jmp 0x1001c5b0
test ecx, ecx
je 0x1001c5b0
movzx ebx, byte [edx]
lea esi, [ecx - 1]
mov eax, ebx
and eax, 0x7f
test bl, bl
js 0x1001abed
inc edx
mov edi, edx
jmp 0x1001ac3a
test esi, esi
je 0x1001c5b0
movzx ebx, byte [edx + 1]
movzx eax, ax
lea edi, [edx + 2]
mov esi, ebx
and esi, 0x7f
shl esi, 7
or eax, esi
test bl, bl
lea esi, [ecx - 2]
jns 0x1001ac3a
test esi, esi
je 0x1001c5b0
movzx esi, byte [edi]
cmp si, 3
ja 0x1001c5b0
movzx esi, si
add edx, 3
add ecx, 0xfffffffd
movzx eax, ax
shl esi, 0xe
mov edi, edx
or eax, esi
mov esi, ecx
test ax, ax
jne 0x1001c5b0
lea ecx, [esp + 0x1f4]
movq xmm0, qword [esp + 0x1f0]
mov dword [esp + 0x38], esi
movsd xmm2, qword [ecx + 0x1c]
movsd xmm3, qword [ecx + 0x24]
movq xmm1, qword [ecx + 0x14]
movd eax, xmm0
movdqa xmmword [esp + 0xd0], xmm0
movdqu xmm0, xmmword [esp + 0x1f8]
movsd qword [esp + 0x348], xmm2
movsd xmm2, qword [ecx + 0x2c]
movsd qword [esp + 0x350], xmm3
movsd xmm3, qword [ecx + 0x34]
cmp eax, 2
movq qword [esp + 0x340], xmm1
movsd qword [esp + 0x358], xmm2
movsd xmm2, qword [ecx + 0x3c]
movsd qword [esp + 0x360], xmm3
movsd xmm3, qword [ecx + 0x44]
movsd qword [esp + 0x368], xmm2
movq xmm2, qword [ecx + 0x4c]
movsd qword [esp + 0x370], xmm3
movq qword [esp + 0x378], xmm2
je 0x1001c5e0
movsd xmm2, qword [esp + 0x370]
movsd xmm3, qword [esp + 0x368]
movq xmm1, qword [esp + 0x378]
mov ebx, dword [esp + 0x38]
movzx edx, byte [esp + 0x98]
cmp eax, 3
movsd qword [esp + 0x418], xmm2
movsd xmm2, qword [esp + 0x360]
movsd qword [esp + 0x410], xmm3
movsd xmm3, qword [esp + 0x358]
movq qword [esp + 0x420], xmm1
movsd qword [esp + 0x408], xmm2
movsd xmm2, qword [esp + 0x350]
movsd qword [esp + 0x400], xmm3
movsd xmm3, qword [esp + 0x340]
movsd qword [esp + 0x3f8], xmm2
movq xmm2, qword [esp + 0x348]
movsd qword [esp + 0x3e8], xmm3
movq qword [esp + 0x3f0], xmm2
je 0x1001c5e0
pshufd xmm1, xmm0, 0xff
movd dword [esp + 0x4c], xmm0
mov eax, dword [esp + 0x450]
cmp dword [esp + 0x70], 0
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x2c], edi
movd dword [esp + 0x88], xmm1
pshufd xmm1, xmm0, 0xee
movd esi, xmm1
pshufd xmm1, xmm0, 0x55
movsd xmm0, qword [esp + 0x420]
movd dword [esp + 0xa0], xmm1
movsd xmm1, qword [esp + 0x3f0]
mov dword [esp + 0x68], esi
mov dword [esp + 0x148], eax
movzx eax, byte [esp + 0x454]
movsd qword [esp + 0x1d8], xmm0
movsd xmm0, qword [esp + 0x418]
movsd qword [esp + 0x1a8], xmm1
movsd xmm1, qword [esp + 0x1a8]
mov byte [esp + 0x14c], al
mov eax, dword [esp + 0x148]
movsd qword [esp + 0x1d0], xmm0
movsd xmm0, qword [esp + 0x410]
movsd qword [esp + 0x678], xmm1
mov dword [esp + 0x164], eax
movzx eax, byte [esp + 0x14c]
movsd qword [esp + 0x1c8], xmm0
movsd xmm0, qword [esp + 0x408]
mov byte [esp + 0x168], al
movsd qword [esp + 0x1c0], xmm0
movsd xmm0, qword [esp + 0x400]
movsd qword [esp + 0x1b8], xmm0
movsd xmm0, qword [esp + 0x3f8]
movsd xmm1, qword [esp + 0x1b8]
movsd qword [esp + 0x1b0], xmm0
movsd xmm0, qword [esp + 0x3e8]
movsd xmm2, qword [esp + 0x1b0]
movsd qword [esp + 0x688], xmm1
movsd xmm1, qword [esp + 0x1c8]
movsd qword [esp + 0x1a0], xmm0
movsd qword [esp + 0x680], xmm2
movsd xmm2, qword [esp + 0x1c0]
movq xmm0, qword [esp + 0x1a0]
movsd qword [esp + 0x698], xmm1
movq xmm1, qword [esp + 0x1d8]
movsd qword [esp + 0x690], xmm2
movq xmm2, qword [esp + 0x1d0]
movq qword [esp + 0x670], xmm0
movq qword [esp + 0x6a8], xmm1
movq qword [esp + 0x6a0], xmm2
jne 0x1001b00d
lea eax, [ecx - 1]
cmp eax, dword [esp + 0x160]
jb 0x1001c992
movzx edx, byte [esp + 0x98]
jne 0x1001b00d
cmp dword [esp + 0x120], 0
je 0x1001b265
mov eax, dword [esp + 0x11c]
test eax, eax
je 0x1001b265
mov edx, dword [esp + 0x118]
mov dword [esp + 0x60], edx
mov dword [esp + 4], eax
movzx eax, word [eax + 0x4d6]
mov edx, 0xffffffff
lea edi, [eax*8]
mov dword [esp + 0x40], eax
test edi, edi
je 0x1001afe6
mov eax, dword [esp + 4]
xor ebx, ebx
mov esi, dword [eax + edx*8 + 8]
mov ecx, dword [eax + edx*8 + 0xc]
mov eax, dword [esp + 0x70]
mov dword [esp + 0xc], esi
xor esi, dword [esp + 0x50]
mov dword [esp + 0x10], ecx
xor ecx, eax
or esi, ecx
mov ecx, dword [esp + 0x50]
mov esi, dword [esp + 0x68]
setne bl
cmp ecx, dword [esp + 0xc]
sbb eax, dword [esp + 0x10]
mov eax, 0xff
cmovb ebx, eax
inc edx
add edi, 0xfffffff8
cmp bl, 1
je 0x1001af88
movzx eax, bl
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0x2c]
test eax, eax
jne 0x1001aff2
jmp 0x1001c992
mov edx, dword [esp + 0x40]
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 4]
sub dword [esp + 0x60], 1
jb 0x1001b265
mov eax, dword [eax + edx*4 + 0x4d8]
jmp 0x1001af6d
mov edi, dword [esp + 0x11c]
test edi, edi
je 0x1001b0ea
mov eax, dword [esp + 0x118]
mov dword [esp + 0x104], edi
mov dword [esp + 0x108], eax
mov dword [esp + 0x60], eax
movzx eax, word [edi + 0x4d6]
mov ebx, 0xffffffff
mov dword [esp + 0x40], edi
lea ecx, [eax*8]
mov dword [esp + 0x130], eax
test ecx, ecx
je 0x1001b0b2
mov eax, dword [esp + 0x40]
mov dword [esp + 0x10], ebx
mov esi, dword [esp + 0x70]
xor edx, edx
mov edi, dword [eax + ebx*8 + 8]
mov eax, dword [eax + ebx*8 + 0xc]
mov ebx, eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 4], edi
xor ebx, esi
xor edi, eax
or edi, ebx
mov ebx, dword [esp + 0x10]
setne dl
cmp eax, dword [esp + 4]
mov eax, 0xff
sbb esi, dword [esp + 0xc]
cmovb edx, eax
inc ebx
add ecx, 0xfffffff8
cmp dl, 1
je 0x1001b053
movzx eax, dl
test eax, eax
je 0x1001c96a
mov dword [esp + 0x10], ebx
jmp 0x1001b0bd
mov eax, dword [esp + 0x130]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x50]
sub eax, 1
jb 0x1001b49d
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x10]
mov edi, dword [edi + eax*4 + 0x4d8]
jmp 0x1001b035
mov eax, dword [esp + 0x70]
movaps xmm0, xmmword [esp + 0xd0]
mov dword [esp + 0x4b0], ecx
movsd xmm1, qword [esp + 0x1d0]
lea ecx, [esp + 0x4d0]
movsd xmm2, qword [esp + 0x1c8]
mov dword [esp + 0x4b4], eax
mov eax, dword [esp + 0x4c]
movlps qword [esp + 0x4b8], xmm0
movq xmm0, qword [esp + 0x1d8]
mov dword [esp + 0x4c0], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x4c4], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x4c8], esi
mov esi, dword [esp + 0x148]
mov dword [esp + 0x4cc], eax
movsd qword [ecx + 0x30], xmm1
movsd xmm1, qword [esp + 0x1c0]
movsd qword [ecx + 0x28], xmm2
movsd xmm2, qword [esp + 0x1b8]
mov eax, dword [esp + 0xa4]
movq qword [ecx + 0x38], xmm0
movsd qword [ecx + 0x20], xmm1
movsd xmm1, qword [esp + 0x1b0]
movsd qword [ecx + 0x18], xmm2
movq xmm2, qword [esp + 0x1a0]
movsd qword [ecx + 0x10], xmm1
movq xmm1, qword [esp + 0x1a8]
movq qword [ecx], xmm2
movq qword [ecx + 8], xmm1
mov word [esp + 0x510], ax
mov byte [esp + 0x512], dl
movzx edx, byte [esp + 0x14c]
mov dword [ecx + 0x43], esi
mov byte [ecx + 0x47], dl
mov eax, dword [0x1036e078]
test eax, eax
jne 0x1001b1f6
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x1002059d
mov dword [0x1036e078], eax
push 0x4d8
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x1002059d
mov edi, eax
mov dword [eax + 0x4d0], 0
mov ecx, 0x1a
lea esi, [esp + 0x4b0]
add edi, 0x58
rep movsd dword es:[edi], dword [esi]
mov word [eax + 0x4d6], 1
mov ecx, dword [esp + 0x70]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [eax], ecx
mov ecx, 1
mov dword [esp + 0x118], 0
mov dword [esp + 0x11c], eax
mov dword [esp + 0x120], ecx
mov edi, dword [esp + 0x2c]
jmp 0x1001b490
mov eax, dword [esp + 0x70]
movaps xmm0, xmmword [esp + 0xd0]
mov dword [esp + 0x1f0], ecx
movsd xmm1, qword [esp + 0x1d0]
lea ecx, [esp + 0x1f4]
movsd xmm2, qword [esp + 0x1c8]
mov dh, byte [esp + 0x98]
mov dl, byte [esp + 0x14c]
mov dword [esp + 0x1f4], eax
mov eax, dword [esp + 0x4c]
movlps qword [esp + 0x1f8], xmm0
movq xmm0, qword [esp + 0x1d8]
mov dword [esp + 0x200], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x204], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x208], esi
mov esi, dword [esp + 0x148]
mov dword [esp + 0x20c], eax
movsd qword [ecx + 0x4c], xmm1
movsd xmm1, qword [esp + 0x1c0]
movsd qword [ecx + 0x44], xmm2
movsd xmm2, qword [esp + 0x1b8]
mov eax, dword [esp + 0xa4]
movq qword [ecx + 0x54], xmm0
movsd qword [ecx + 0x3c], xmm1
movsd xmm1, qword [esp + 0x1b0]
movsd qword [ecx + 0x34], xmm2
movq xmm2, qword [esp + 0x1a0]
movsd qword [ecx + 0x2c], xmm1
movq xmm1, qword [esp + 0x1a8]
movq qword [ecx + 0x1c], xmm2
movq qword [ecx + 0x24], xmm1
mov word [esp + 0x250], ax
mov byte [esp + 0x252], dh
mov byte [ecx + 0x63], dl
mov edx, dword [esp + 0x160]
mov dword [ecx + 0x5f], esi
mov esi, dword [esp + 0x1e8]
cmp edx, dword [esp + 0x124]
jne 0x1001b38e
lea ecx, [esp + 0x124]
call fcn.10006c10
mov esi, dword [esp + 0x128]
mov edx, dword [esp + 0x12c]
mov ecx, dword [esp + 0x70]
imul eax, edx, 0x68
movaps xmm0, xmmword [esp + 0xd0]
inc edx
mov dword [esp + 0x1e8], esi
mov dword [esp + 0x160], edx
mov dword [esi + eax + 4], ecx
mov ecx, dword [esp + 0x50]
mov dword [esi + eax], ecx
mov ecx, dword [esp + 0x4c]
movlps qword [esi + eax + 8], xmm0
mov dword [esi + eax + 0x10], ecx
mov ecx, dword [esp + 0xa0]
mov dword [esi + eax + 0x14], ecx
mov ecx, dword [esp + 0x88]
mov dword [esi + eax + 0x1c], ecx
mov ecx, dword [esp + 0x68]
mov dword [esi + eax + 0x18], ecx
mov ecx, dword [esp + 0xa4]
movsd xmm0, qword [esp + 0x670]
movq xmm1, qword [esp + 0x678]
movsd qword [esi + eax + 0x20], xmm0
movq qword [esi + eax + 0x28], xmm1
movsd xmm0, qword [esp + 0x680]
movsd qword [esi + eax + 0x30], xmm0
movsd xmm0, qword [esp + 0x688]
movsd qword [esi + eax + 0x38], xmm0
movsd xmm0, qword [esp + 0x690]
movsd qword [esi + eax + 0x40], xmm0
movsd xmm0, qword [esp + 0x698]
movsd qword [esi + eax + 0x48], xmm0
movsd xmm0, qword [esp + 0x6a0]
movsd qword [esi + eax + 0x50], xmm0
movq xmm0, qword [esp + 0x6a8]
movq qword [esi + eax + 0x58], xmm0
mov word [esi + eax + 0x60], cx
movzx ecx, byte [esp + 0x98]
mov byte [esi + eax + 0x62], cl
mov ecx, dword [esp + 0x164]
mov dword [esi + eax + 0x63], ecx
movzx ecx, byte [esp + 0x168]
mov byte [esi + eax + 0x67], cl
mov dword [esp + 0x12c], edx
test ebx, ebx
jne 0x1001a5da
jmp 0x1001c5e0
mov eax, dword [esp + 0x70]
movdqa xmm2, xmmword [esp + 0xd0]
mov dword [esp + 0x4b0], esi
mov edx, dword [esp + 0x88]
movsd xmm1, qword [esp + 0x1d0]
lea ecx, [esp + 0x4d0]
movsd xmm3, qword [esp + 0x1c8]
movq xmm0, qword [esp + 0x1d8]
test edi, edi
mov dword [esp + 0x4b4], eax
mov eax, dword [esp + 0x4c]
movq qword [esp + 0x4b8], xmm2
mov dword [esp + 0x4c0], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x4c4], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x4cc], edx
mov dword [esp + 0x4c8], eax
movsd qword [ecx + 0x30], xmm1
movsd xmm1, qword [esp + 0x1c0]
movsd qword [ecx + 0x28], xmm3
movsd xmm3, qword [esp + 0x1b8]
mov eax, dword [esp + 0xa4]
movq qword [ecx + 0x38], xmm0
movsd qword [ecx + 0x20], xmm1
movsd xmm1, qword [esp + 0x1b0]
movsd qword [ecx + 0x18], xmm3
movsd xmm3, qword [esp + 0x1a0]
movsd qword [ecx + 0x10], xmm1
movq xmm1, qword [esp + 0x1a8]
movsd qword [ecx], xmm3
movq qword [ecx + 8], xmm1
mov word [esp + 0x510], ax
movzx eax, byte [esp + 0x98]
mov byte [esp + 0x512], al
mov eax, dword [esp + 0x148]
mov dword [ecx + 0x43], eax
mov ah, byte [esp + 0x14c]
mov byte [ecx + 0x47], ah
je 0x1001b1db
mov ebx, dword [esp + 0x70]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x340], esi
movsd xmm1, qword [esp + 0x1d0]
lea ecx, [esp + 0x348]
movq xmm0, qword [esp + 0x1d8]
mov dword [esp + 0x344], ebx
movq qword [esp + 0x348], xmm2
mov dword [esp + 0x350], eax
mov eax, dword [esp + 0xa0]
movsd xmm2, qword [esp + 0x1c8]
mov ebx, dword [esp + 0x148]
mov dword [esp + 0x354], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x35c], edx
mov dh, byte [esp + 0x98]
mov dl, byte [esp + 0x14c]
mov dword [esp + 0x358], eax
movsd qword [ecx + 0x48], xmm1
movsd xmm1, qword [esp + 0x1c0]
movsd qword [ecx + 0x40], xmm2
movsd xmm2, qword [esp + 0x1b8]
mov eax, dword [esp + 0xa4]
movq qword [ecx + 0x50], xmm0
movsd qword [ecx + 0x38], xmm1
movsd xmm1, qword [esp + 0x1b0]
movsd qword [ecx + 0x30], xmm2
movq xmm2, qword [esp + 0x1a0]
movsd qword [ecx + 0x28], xmm1
movq xmm1, qword [esp + 0x1a8]
movq qword [ecx + 0x18], xmm2
movq qword [ecx + 0x20], xmm1
mov word [esp + 0x3a0], ax
mov byte [esp + 0x3a2], dh
mov dword [ecx + 0x5b], ebx
mov byte [ecx + 0x5f], dl
mov ecx, dword [esp + 0x130]
cmp cx, 0xb
jae 0x1001b7be
mov eax, dword [esp + 0x10]
cmp eax, ecx
lea eax, [edi + eax*8]
jae 0x1001b805
mov edi, dword [esp + 0x40]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x130]
lea ecx, [edi + ebx*8 + 8]
sub edx, ebx
mov dword [esp + 4], ecx
mov dword [esp + 0xc], edx
lea ecx, [edx*8]
push ecx
push eax
push dword [esp + 0xc]
call sub.msvcrt.dll_memmove
add esp, 0xc
mov eax, dword [esp + 0x70]
mov dword [edi + ebx*8], esi
imul edx, dword [esp + 0xc], 0x68
mov dword [edi + ebx*8 + 4], eax
movsd xmm1, qword [esp + 0x1a8]
movsd xmm2, qword [esp + 0x1b0]
mov eax, dword [esp + 0x148]
movsd xmm0, qword [esp + 0x1a0]
movsd qword [esp + 0x1f8], xmm1
movsd xmm1, qword [esp + 0x1b8]
movsd qword [esp + 0x200], xmm2
movsd xmm2, qword [esp + 0x1c0]
mov dword [esp + 0x3e8], eax
movzx eax, byte [esp + 0x14c]
movsd qword [esp + 0x1f0], xmm0
movsd qword [esp + 0x208], xmm1
movsd xmm1, qword [esp + 0x1c8]
movsd qword [esp + 0x210], xmm2
movq xmm2, qword [esp + 0x1d0]
mov byte [esp + 0x3ec], al
imul eax, ebx, 0x68
lea ecx, [edi + eax + 0x58]
lea eax, [edi + eax + 0xc0]
movsd qword [esp + 0x218], xmm1
movsd xmm1, qword [esp + 0x1d8]
movq qword [esp + 0x220], xmm2
movsd qword [esp + 0x228], xmm1
push edx
push ecx
push eax
call sub.msvcrt.dll_memmove
add esp, 0xc
jmp 0x1001b8bb
cmp dword [esp + 0x10], 5
mov al, 1
mov esi, 4
mov dword [esp + 0xb8], eax
jb 0x1001b9fa
je 0x1001b9df
cmp dword [esp + 0x10], 6
jne 0x1001b9e5
mov esi, 5
mov dword [esp + 0xb8], 0
mov dword [esp + 0x10], 0
jmp 0x1001b9fa
mov ecx, dword [esp + 0x70]
mov dword [eax], esi
mov dword [eax + 4], ecx
movsd xmm1, qword [esp + 0x1a8]
movsd xmm2, qword [esp + 0x1b0]
mov eax, dword [esp + 0x148]
movsd xmm0, qword [esp + 0x1a0]
movsd qword [esp + 0x1f8], xmm1
movsd xmm1, qword [esp + 0x1b8]
movsd qword [esp + 0x200], xmm2
movsd xmm2, qword [esp + 0x1c0]
mov dword [esp + 0x3e8], eax
movzx eax, byte [esp + 0x14c]
movsd qword [esp + 0x1f0], xmm0
movsd qword [esp + 0x208], xmm1
movsd xmm1, qword [esp + 0x1c8]
movsd qword [esp + 0x210], xmm2
movq xmm2, qword [esp + 0x1d0]
mov byte [esp + 0x3ec], al
movsd qword [esp + 0x218], xmm1
movsd xmm1, qword [esp + 0x1d8]
movq qword [esp + 0x220], xmm2
movsd qword [esp + 0x228], xmm1
imul eax, dword [esp + 0x10], 0x68
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x70]
movaps xmm0, xmmword [esp + 0xd0]
mov dword [edx + eax + 0x5c], ecx
mov ecx, dword [esp + 0x4c]
mov dword [edx + eax + 0x58], esi
movlps qword [edx + eax + 0x60], xmm0
mov dword [edx + eax + 0x68], ecx
mov ecx, dword [esp + 0xa0]
mov dword [edx + eax + 0x6c], ecx
mov ecx, dword [esp + 0x88]
mov dword [edx + eax + 0x74], ecx
mov ecx, dword [esp + 0x68]
mov dword [edx + eax + 0x70], ecx
mov ecx, dword [esp + 0xa4]
movsd xmm0, qword [esp + 0x1f0]
movq xmm1, qword [esp + 0x1f8]
movsd qword [edx + eax + 0x78], xmm0
movq qword [edx + eax + 0x80], xmm1
movsd xmm0, qword [esp + 0x200]
movsd qword [edx + eax + 0x88], xmm0
movsd xmm0, qword [esp + 0x208]
movsd qword [edx + eax + 0x90], xmm0
movsd xmm0, qword [esp + 0x210]
movsd qword [edx + eax + 0x98], xmm0
movsd xmm0, qword [esp + 0x218]
movsd qword [edx + eax + 0xa0], xmm0
movsd xmm0, qword [esp + 0x220]
movsd qword [edx + eax + 0xa8], xmm0
movq xmm0, qword [esp + 0x228]
movq qword [edx + eax + 0xb0], xmm0
mov word [edx + eax + 0xb8], cx
movzx ecx, byte [esp + 0x98]
mov byte [edx + eax + 0xba], cl
mov ecx, dword [esp + 0x3e8]
mov dword [edx + eax + 0xbb], ecx
movzx ecx, byte [esp + 0x3ec]
mov byte [edx + eax + 0xbf], cl
mov eax, dword [esp + 0x130]
inc eax
mov word [edx + 0x4d6], ax
jmp 0x1001c43d
mov esi, dword [esp + 0x10]
jmp 0x1001b9fa
add dword [esp + 0x10], 0xfffffff9
mov esi, 6
mov dword [esp + 0xb8], 0
mov ecx, 0x4d8
mov edx, 8
call fcn.10002820
test eax, eax
je 0x10020692
mov edi, dword [esp + 0x40]
mov dword [eax + 0x4d0], 0
mov edx, esi
mov dword [esp + 0xc], eax
imul ecx, esi, 0x68
not edx
movzx ebx, word [edi + 0x4d6]
add edx, ebx
mov word [eax + 0x4d6], dx
cmp edx, 0xb
mov eax, dword [edi + esi*8]
mov dword [esp + 0x60], eax
mov eax, dword [edi + esi*8 + 4]
mov dword [esp + 0x130], eax
mov eax, esi
lea esi, [edi + ecx + 0x58]
mov ecx, 0x1a
lea edi, [esp + 0x1f0]
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
ja 0x100206a6
lea esi, [eax + 1]
mov dword [esp + 4], eax
sub ebx, esi
cmp ebx, ecx
jne 0x100206bd
mov ebx, dword [esp + 0x40]
mov dword [esp + 0xbc], ecx
lea ecx, [ecx*8]
lea eax, [ebx + 0x58]
mov dword [esp + 0xc0], eax
lea eax, [ebx + esi*8]
push ecx
push eax
mov edi, dword [esp + 0x14]
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
imul eax, esi, 0x68
imul edx, dword [esp + 0xbc], 0x68
lea ecx, [edi + 0x58]
add eax, dword [esp + 0xc0]
push edx
push eax
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 4]
mov ecx, 0x17
lea esi, [esp + 0x1fc]
lea edi, [esp + 0x3e8]
mov word [ebx + 0x4d6], ax
mov eax, dword [esp + 0x1f0]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x1f4]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x1f8]
mov dword [esp + 4], eax
rep movsd dword es:[edi], dword [esi]
cmp byte [esp + 0xb8], 0
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
cmovne esi, ebx
lea ebx, [eax + 1]
movzx ecx, word [esi + 0x4d6]
lea eax, [esi + eax*8]
cmp ebx, ecx
mov dword [esp + 0xb8], ecx
jbe 0x1001bbff
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x70]
mov dword [eax], ecx
mov dword [eax + 4], edx
movsd xmm1, qword [esp + 0x1a8]
movsd xmm2, qword [esp + 0x1b0]
mov eax, dword [esp + 0x148]
movsd xmm0, qword [esp + 0x1a0]
movsd qword [esp + 0x1f8], xmm1
movsd xmm1, qword [esp + 0x1b8]
movsd qword [esp + 0x200], xmm2
movsd xmm2, qword [esp + 0x1c0]
mov dword [esp + 0x6d0], eax
movzx eax, byte [esp + 0x14c]
movsd qword [esp + 0x1f0], xmm0
movsd qword [esp + 0x208], xmm1
movsd xmm1, qword [esp + 0x1c8]
movsd qword [esp + 0x210], xmm2
movq xmm2, qword [esp + 0x1d0]
mov byte [esp + 0x6d4], al
movsd qword [esp + 0x218], xmm1
movsd xmm1, qword [esp + 0x1d8]
movq qword [esp + 0x220], xmm2
movsd qword [esp + 0x228], xmm1
jmp 0x1001bd12
mov edx, dword [esp + 0xb8]
mov edi, dword [esp + 0x10]
lea ecx, [esi + ebx*8]
mov dword [esp + 0xf0], ecx
sub edx, edi
mov dword [esp + 0xf4], edx
lea ecx, [edx*8]
push ecx
push eax
push dword [esp + 0xf8]
call sub.msvcrt.dll_memmove
add esp, 0xc
mov eax, dword [esp + 0x70]
imul edx, dword [esp + 0xf4], 0x68
imul ecx, ebx, 0x68
lea ecx, [esi + ecx + 0x58]
mov dword [esi + edi*8 + 4], eax
mov eax, dword [esp + 0x50]
mov dword [esi + edi*8], eax
movsd xmm1, qword [esp + 0x1a8]
movsd xmm2, qword [esp + 0x1b0]
mov eax, dword [esp + 0x148]
movsd xmm0, qword [esp + 0x1a0]
movsd qword [esp + 0x1f8], xmm1
movsd xmm1, qword [esp + 0x1b8]
movsd qword [esp + 0x200], xmm2
movsd xmm2, qword [esp + 0x1c0]
mov dword [esp + 0x6d0], eax
movzx eax, byte [esp + 0x14c]
movsd qword [esp + 0x1f0], xmm0
movsd qword [esp + 0x208], xmm1
movsd xmm1, qword [esp + 0x1c8]
movsd qword [esp + 0x210], xmm2
movq xmm2, qword [esp + 0x1d0]
mov byte [esp + 0x6d4], al
imul eax, edi, 0x68
lea eax, [esi + eax + 0x58]
movsd qword [esp + 0x218], xmm1
movsd xmm1, qword [esp + 0x1d8]
movq qword [esp + 0x220], xmm2
movsd qword [esp + 0x228], xmm1
push edx
push eax
push ecx
call sub.msvcrt.dll_memmove
add esp, 0xc
imul eax, dword [esp + 0x10], 0x68
mov ecx, dword [esp + 0x70]
movaps xmm0, xmmword [esp + 0xd0]
lea edi, [esp + 0x450]
mov dword [esi + eax + 0x5c], ecx
mov ecx, dword [esp + 0x50]
mov dword [esi + eax + 0x58], ecx
mov ecx, dword [esp + 0x4c]
movlps qword [esi + eax + 0x60], xmm0
mov dword [esi + eax + 0x68], ecx
mov ecx, dword [esp + 0xa0]
mov dword [esi + eax + 0x6c], ecx
mov ecx, dword [esp + 0x88]
mov dword [esi + eax + 0x74], ecx
mov ecx, dword [esp + 0x68]
mov dword [esi + eax + 0x70], ecx
mov ecx, dword [esp + 0xa4]
movsd xmm0, qword [esp + 0x1f0]
movq xmm1, qword [esp + 0x1f8]
movsd qword [esi + eax + 0x78], xmm0
movq qword [esi + eax + 0x80], xmm1
movsd xmm0, qword [esp + 0x200]
movsd qword [esi + eax + 0x88], xmm0
movsd xmm0, qword [esp + 0x208]
movsd qword [esi + eax + 0x90], xmm0
movsd xmm0, qword [esp + 0x210]
movsd qword [esi + eax + 0x98], xmm0
movsd xmm0, qword [esp + 0x218]
movsd qword [esi + eax + 0xa0], xmm0
movsd xmm0, qword [esp + 0x220]
movsd qword [esi + eax + 0xa8], xmm0
movq xmm0, qword [esp + 0x228]
movq qword [esi + eax + 0xb0], xmm0
mov word [esi + eax + 0xb8], cx
movzx ecx, byte [esp + 0x98]
mov byte [esi + eax + 0xba], cl
mov ecx, dword [esp + 0x6d0]
mov dword [esi + eax + 0xbb], ecx
movzx ecx, byte [esp + 0x6d4]
mov byte [esi + eax + 0xbf], cl
mov eax, dword [esp + 0xb8]
mov ecx, 0x17
inc eax
mov word [esi + 0x4d6], ax
lea esi, [esp + 0x3e8]
rep movsd dword es:[edi], dword [esi]
cmp dword [esp + 4], 2
je 0x1001c43d
mov ecx, 0x17
lea edi, [esp + 0x6d0]
lea esi, [esp + 0x450]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + 0x4d0]
test ecx, ecx
je 0x1001c2f6
mov eax, dword [esp + 0xc]
lea edx, [esp + 0x6d0]
mov dword [esp + 0xa0], 0
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x130]
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x40]
movzx ebx, word [eax + 0x4d4]
mov eax, dword [esp + 0xbc]
lea edi, [esp + 0x3f4]
mov esi, edx
mov dword [esp + 0x3ec], eax
mov eax, ecx
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x3e8], ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0x3f0], ecx
mov ecx, 0x17
rep movsd dword es:[edi], dword [esi]
mov edi, eax
movzx eax, word [eax + 0x4d6]
mov dword [esp + 0x40], edi
cmp eax, 0xb
mov dword [esp + 0x70], eax
jb 0x1001c455
mov cl, 1
mov esi, 4
cmp bx, 5
jb 0x1001bf3a
cmp bx, 5
je 0x1001bf2c
cmp ebx, 6
jne 0x1001bf30
xor ecx, ecx
mov esi, 5
xor ebx, ebx
jmp 0x1001bf3a
mov esi, ebx
jmp 0x1001bf3a
add ebx, 0xfffffff9
mov esi, 6
xor ecx, ecx
mov dword [esp + 0xd0], ecx
mov eax, dword [0x1036e078]
test eax, eax
jne 0x1001bf5c
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x100206d9
mov dword [0x1036e078], eax
push 0x508
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x100206d9
mov dword [eax + 0x4d0], 0
mov ecx, eax
mov dword [esp + 0x10], eax
mov edx, esi
mov dword [esp + 0x50], esi
movzx eax, word [edi + 0x4d6]
not edx
mov dword [esp + 0xc], ecx
add edx, eax
mov word [ecx + 0x4d6], dx
mov ecx, dword [edi + esi*8]
mov dword [esp + 0x60], ecx
imul ecx, esi, 0x68
cmp edx, 0xb
lea ecx, [edi + ecx + 0x58]
mov dword [esp + 4], ecx
mov ecx, dword [edi + esi*8 + 4]
lea edi, [esp + 0x340]
mov esi, dword [esp + 4]
mov dword [esp + 0x130], ecx
mov ecx, 0x1a
rep movsd dword es:[edi], dword [esi]
ja 0x100206ed
mov ecx, dword [esp + 0x50]
lea esi, [ecx + 1]
sub eax, esi
cmp eax, edx
jne 0x10020706
mov eax, dword [esp + 0x40]
mov edi, edx
lea ecx, [edi*8]
lea edx, [eax + 0x58]
lea eax, [eax + esi*8]
mov dword [esp + 4], edx
push ecx
push eax
push dword [esp + 0x14]
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov ecx, dword [esp + 0x10]
imul eax, esi, 0x68
mov dword [esp + 0x4c], esi
imul edx, edi, 0x68
add eax, dword [esp + 4]
add ecx, 0x58
push edx
push eax
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x40]
lea edi, [esp + 0x1f8]
lea esi, [esp + 0x340]
mov word [ecx + 0x4d6], ax
mov ecx, 0x1a
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x130]
mov ecx, dword [esp + 0x60]
mov edi, dword [esp + 0xc]
mov dword [esp + 0x1f4], eax
mov dword [esp + 0x1f0], ecx
movzx esi, word [edi + 0x4d6]
lea ecx, [esi + 1]
cmp esi, 0xc
jae 0x10020722
mov edx, dword [esp + 0x70]
sub edx, dword [esp + 0x50]
cmp edx, ecx
jne 0x10020739
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x40]
inc dword [esp + 0xa0]
shl edx, 2
add eax, 0x4d8
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x4c]
lea ecx, [ecx + eax*4 + 0x4d8]
push edx
push ecx
push dword [esp + 0x58]
call sub.msvcrt.dll_memcpy
add esp, 0xc
xor eax, eax
mov ecx, eax
cmp eax, esi
mov edx, dword [edi + ecx*4 + 0x4d8]
adc eax, 0
cmp ecx, esi
mov dword [edx + 0x4d0], edi
mov word [edx + 0x4d4], cx
jae 0x1001c0e8
cmp eax, esi
jbe 0x1001c0c5
mov eax, dword [esp + 0x1f8]
mov ecx, 0x17
lea esi, [esp + 0x204]
lea edi, [esp + 0x340]
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0x1fc]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0x200]
mov dword [esp + 4], eax
rep movsd dword es:[edi], dword [esi]
lea ecx, [ebx + 1]
cmp byte [esp + 0xd0], 0
mov edx, dword [esp + 0x10]
mov eax, ecx
mov dword [esp + 0x70], ecx
cmovne edx, dword [esp + 0x40]
movzx esi, word [edx + 0x4d6]
lea eax, [edx + ebx*8]
cmp ecx, esi
mov dword [esp + 0x50], esi
jbe 0x1001c17d
mov ecx, dword [esp + 0x98]
lea edi, [esp + 0x1f0]
lea esi, [esp + 0x3e8]
mov dword [eax], ecx
mov ecx, dword [esp + 0xa4]
mov dword [eax + 4], ecx
mov ecx, 0x1a
rep movsd dword es:[edi], dword [esi]
jmp 0x1001c204
mov ecx, dword [esp + 0x70]
sub esi, ebx
mov dword [esp + 0x10], edx
mov dword [esp + 0xd0], esi
lea ecx, [edx + ecx*8]
lea edx, [esi*8]
push edx
push eax
push ecx
call sub.msvcrt.dll_memmove
add esp, 0xc
mov eax, dword [esp + 0xa4]
mov ecx, dword [esp + 0x10]
lea edi, [esp + 0x1f0]
lea esi, [esp + 0x3e8]
mov dword [ecx + ebx*8 + 4], eax
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x10]
mov dword [ecx + ebx*8], eax
mov ecx, 0x1a
imul eax, ebx, 0x68
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x10]
lea eax, [ecx + eax + 0x58]
imul ecx, dword [esp + 0x70], 0x68
lea ecx, [edx + ecx + 0x58]
imul edx, dword [esp + 0xd0], 0x68
push edx
push eax
push ecx
call sub.msvcrt.dll_memmove
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [esp + 0x50]
mov ecx, 0x1a
lea esi, [esp + 0x1f0]
inc eax
mov dword [esp + 0x10], eax
imul eax, ebx, 0x68
lea edi, [edx + eax + 0x58]
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x50]
lea esi, [eax + 2]
lea eax, [ebx + 2]
cmp eax, esi
jae 0x1001c258
mov edi, dword [esp + 0x70]
lea ecx, [edx + 0x4d8]
lea eax, [ecx + eax*4]
lea ecx, [ecx + edi*4]
mov edi, dword [esp + 0x50]
sub edi, ebx
shl edi, 2
push edi
push ecx
push eax
mov edi, edx
call sub.msvcrt.dll_memmove
mov edx, edi
add esp, 0xc
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x10]
cmp dword [esp + 0x70], esi
mov dword [edx + ebx*4 + 0x4dc], eax
mov word [edx + 0x4d6], cx
jae 0x1001c28d
mov eax, dword [edx + ebx*4 + 0x4dc]
inc ebx
cmp ecx, ebx
mov dword [eax + 0x4d0], edx
mov word [eax + 0x4d4], bx
jne 0x1001c274
lea eax, [esp + 0x450]
mov ecx, 0x17
lea esi, [esp + 0x340]
mov edi, eax
rep movsd dword es:[edi], dword [esi]
cmp dword [esp + 4], 2
je 0x1001c43d
lea edx, [esp + 0x6d0]
mov ecx, 0x17
mov esi, eax
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x60]
mov ebx, dword [esp + 0x130]
mov ecx, dword [eax + 0x4d0]
mov dword [esp + 0x68], esi
mov dword [esp + 0x98], edi
mov dword [esp + 0xa4], ebx
test ecx, ecx
jne 0x1001beaf
jmp 0x1001c310
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x60]
mov ebx, dword [esp + 0x130]
mov dword [esp + 0xa0], 0
mov dword [esp + 0x130], ebx
mov dword [esp + 0x60], edi
mov dword [esp + 0xc], esi
mov ecx, 0x508
mov edx, 8
call fcn.10002820
test eax, eax
je 0x10020755
mov edx, dword [esp + 0x108]
mov ecx, dword [esp + 0x104]
mov dword [eax + 0x4d0], 0
mov word [eax + 0x4d6], 0
lea edi, [esp + 0x1fc]
lea esi, [esp + 0x6d0]
mov dword [eax + 0x4d8], ecx
mov dword [ecx + 0x4d0], eax
mov word [ecx + 0x4d4], 0
lea ecx, [edx + 1]
cmp edx, dword [esp + 0xa0]
mov dword [esp + 0x118], ecx
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x11c], eax
mov dword [esp + 0x1f4], ecx
mov ecx, dword [esp + 0xc0]
mov dword [esp + 0x1f0], ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0x1f8], ecx
mov ecx, 0x17
rep movsd dword es:[edi], dword [esi]
jne 0x10020769
movzx edx, word [eax + 0x4d6]
cmp edx, 0xa
ja 0x1002077a
mov ecx, dword [esp + 0x60]
lea ebx, [edx + 1]
mov esi, dword [esp + 0xc0]
mov word [eax + 0x4d6], bx
mov dword [eax + edx*8], ecx
mov ecx, dword [esp + 0x130]
mov dword [eax + edx*8 + 4], ecx
imul ecx, edx, 0x68
mov dword [eax + ecx + 0x58], esi
mov esi, dword [esp + 0xbc]
lea edi, [eax + ecx + 0x64]
mov dword [eax + ecx + 0x5c], esi
mov esi, dword [esp + 4]
mov dword [eax + ecx + 0x60], esi
mov ecx, 0x17
lea esi, [esp + 0x6d0]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0xc]
mov dword [eax + edx*4 + 0x4dc], ecx
mov dword [ecx + 0x4d0], eax
mov word [ecx + 0x4d4], bx
mov eax, dword [esp + 0x120]
mov ebx, dword [esp + 0x38]
inc eax
mov dword [esp + 0x120], eax
jmp 0x1001b25c
lea ecx, [eax + 1]
lea edx, [ebx + 1]
cmp ax, bx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x10], edx
jbe 0x1001c503
mov esi, dword [esp + 0x70]
mov edi, dword [esp + 0x40]
mov ecx, dword [esp + 0x10]
sub esi, ebx
lea eax, [edi + ebx*8]
lea ecx, [edi + ecx*8]
lea edx, [esi*8]
mov dword [esp + 0xc], esi
push edx
push eax
push ecx
call sub.msvcrt.dll_memmove
add esp, 0xc
mov eax, dword [esp + 0xa4]
mov ecx, edi
mov dword [edi + ebx*8 + 4], eax
mov eax, dword [esp + 0x98]
mov dword [edi + ebx*8], eax
imul eax, ebx, 0x68
lea edi, [edi + eax + 0x58]
imul eax, dword [esp + 0x10], 0x68
lea eax, [ecx + eax + 0x58]
imul ecx, esi, 0x68
push ecx
push edi
push eax
call sub.msvcrt.dll_memmove
add esp, 0xc
mov ecx, 0x1a
lea esi, [esp + 0x3e8]
rep movsd dword es:[edi], dword [esi]
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x40]
lea eax, [ecx + eax*4 + 0x4d8]
lea ecx, [ecx + ebx*4 + 0x4e0]
shl edx, 2
push edx
push eax
push ecx
call sub.msvcrt.dll_memmove
add esp, 0xc
jmp 0x1001c531
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x98]
lea esi, [esp + 0x3e8]
mov dword [ecx + ebx*8], eax
mov eax, dword [esp + 0xa4]
mov dword [ecx + ebx*8 + 4], eax
imul eax, ebx, 0x68
lea edi, [ecx + eax + 0x58]
mov ecx, 0x1a
rep movsd dword es:[edi], dword [esi]
mov edx, dword [esp + 0x70]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x50]
add edx, 2
mov dword [ecx + ebx*4 + 0x4dc], eax
mov word [ecx + 0x4d6], si
cmp dword [esp + 0x10], edx
jae 0x1001c43d
mov eax, dword [ecx + ebx*4 + 0x4dc]
inc ebx
cmp esi, ebx
mov dword [eax + 0x4d0], ecx
mov word [eax + 0x4d4], bx
jne 0x1001c55c
jmp 0x1001c43d
cmp dword [esp + 0x1f0], 0
je 0x1001c5e0
cmp dword [esp + 0x1f4], 0
je 0x1001c5e0
push dword [esp + 0x1f8]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
nop dword [eax + eax]
lea ecx, [esp + 0x118]
call fcn.1002b2e0
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x64]
jmp 0x1001a2c0
mov eax, dword [esp + 0x128]
test eax, eax
je 0x1001c5ec
mov dword [esp + 0xc], eax
xor eax, eax
cmp dword [esp + 0x34], 0xfffffff0
mov ecx, dword [esp + 0xb0]
mov edi, dword [esp + 0x6c]
mov ebx, dword [esp + 0xa8]
setae al
cmp byte [ecx + 0x74], 0
lea esi, [edi - 3]
mov dword [esp + 0x1f0], edi
mov edi, dword [esp + 0x3c]
setne cl
cmp word [esp + 0x44], 5
mov dword [esp + 0x340], edi
mov dword [esp + 0x344], ebx
setae dl
test dl, cl
lea ecx, [eax*8 + 8]
mov edx, 0
lea eax, [eax*8 + 0xc]
cmove ecx, edx
cmove eax, edx
xor edx, edx
cmp esi, 2
mov esi, dword [esp + 0x180]
setb dl
test ebx, ebx
mov dword [esp + 0x1fc], esi
mov esi, dword [esp + 0x10c]
mov dword [esp + 0x1f8], esi
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x200], edi
mov dword [esp + 0x204], ebx
mov dword [esp + 0x208], 0
mov dword [esp + 0x20c], esi
mov esi, dword [esp + 8]
mov dword [esp + 0x210], esi
mov esi, dword [esp + 0xac]
mov dword [esp + 0x214], esi
mov esi, dword [esp + 0x1ec]
mov dword [esp + 0x218], esi
mov esi, dword [esp + 0x118]
mov dword [esp + 4], esi
mov dword [esp + 0x248], esi
mov esi, dword [esp + 0x11c]
mov dword [esp + 0x44], esi
mov dword [esp + 0x24c], esi
mov esi, dword [esp + 0x124]
mov dword [esp + 0x254], esi
mov esi, dword [esp + 0x120]
mov dword [esp + 0x250], esi
mov esi, dword [esp + 0xc]
mov dword [esp + 0x258], esi
mov esi, dword [esp + 0x160]
mov dword [esp + 0x25c], esi
mov dword [esp + 0x230], 0
mov dword [esp + 0x238], 0
mov dword [esp + 0x244], 0
mov dword [esp + 0x240], 0
mov dword [esp + 0x2f8], ecx
mov dword [esp + 0x2fc], 0
mov dword [esp + 0x300], eax
mov dword [esp + 0x304], eax
mov dword [esp + 0x28c], 0
mov dword [esp + 0x288], 0x2f
mov dword [esp + 0x220], edx
mov edx, dword [esp + 0x10c]
mov ecx, dword [esp + 0x180]
mov dword [esp + 0x224], 0
mov esi, ebx
mov dword [esp + 0x228], edx
mov dword [esp + 0x22c], ecx
lea edx, [esp + 0x1f0]
lea ecx, [esp + 0x248]
mov dword [esp + 0x368], edx
mov dword [esp + 0x36c], ecx
mov dword [esp + 0x350], 0
mov dword [esp + 0x364], 0
je 0x1001c8be
xor edx, edx
xor eax, eax
mov dword [esp + 0x50], 0
xor ecx, ecx
mov dword [esp + 0x70], esi
mov dword [esp + 0x2c], edi
movzx ebx, byte [edi + edx]
cmp ecx, 0x3f
jne 0x1001c82a
cmp bl, 1
ja 0x1001c8be
mov bh, bl
xor esi, esi
mov dword [esp + 0x10], edx
mov edx, 0
and bh, 0x7f
movzx edi, bh
shld esi, edi, cl
shl edi, cl
test cl, 0x20
cmovne esi, edi
cmovne edi, edx
or dword [esp + 0x50], esi
or eax, edi
test bl, bl
jns 0x1001c86b
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 0x70]
mov edi, dword [esp + 0x2c]
add ecx, 7
inc edx
cmp esi, edx
jne 0x1001c818
jmp 0x1001c8be
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x10]
mov esi, eax
lea edi, [ecx - 1]
mov ecx, edi
sub ecx, edx
or esi, dword [esp + 0x50]
mov esi, dword [esp + 0x2c]
lea ebx, [esi + edx + 1]
mov dword [esp + 0x340], ebx
mov dword [esp + 0x344], ecx
jne 0x1001c9ba
cmp edi, edx
mov edi, ebx
mov esi, ecx
mov dword [esp + 0x364], 0xffffffff
mov dword [esp + 0x350], 0
jne 0x1001c802
lea ecx, [esp + 0x248]
call fcn.1002b2e0
mov eax, dword [esp + 0x288]
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x64]
xor eax, 0x2f
or eax, dword [esp + 0x28c]
je 0x1001a2c0
cmp dword [esp + 0x2bc], 0
je 0x1001c907
push dword [esp + 0x2c0]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x2c8], 0
je 0x1001c925
push dword [esp + 0x2cc]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x2d4], 0
je 0x1001c943
push dword [esp + 0x2d8]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x2e0], 0
je 0x1001a2c0
push dword [esp + 0x2e4]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
jmp 0x1001a2c0
pshufd xmm0, xmmword [esp + 0xd0], 0x50
pxor xmm1, xmm1
pcmpeqd xmm0, xmm1
movmskpd eax, xmm0
test eax, eax
mov eax, dword [esp + 0x4c]
jne 0x1001c5e0
push eax
jmp 0x1001c5cb
pshufd xmm0, xmmword [esp + 0xd0], 0x50
pxor xmm1, xmm1
pcmpeqd xmm0, xmm1
movmskpd eax, xmm0
test eax, eax
mov eax, dword [esp + 0x4c]
jne 0x1001c5e0
push eax
jmp 0x1001c5cb
cmp dword [esp + 0x34], 0xfffffff0
mov dword [esp + 0x6c], eax
setae byte [esp + 0x40]
cmp dword [esp + 0x50], 0
jne 0x1001c9ed
mov eax, dword [esp + 0x6c]
lea ecx, [eax - 1]
cmp ecx, dword [esp + 0x160]
jae 0x1001c9ed
mov esi, dword [esp + 0xc]
imul eax, ecx, 0x68
add esi, eax
jmp 0x1001caa6
cmp dword [esp + 0x44], 0
je 0x1001c8be
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x50]
movzx eax, word [ecx + 0x4d6]
mov ecx, 0xffffffff
mov dword [esp + 0x68], eax
imul eax, eax, 0x68
mov dword [esp + 0xac], eax
xor eax, eax
mov esi, dword [esp + 0xac]
add esi, eax
je 0x1001ca78
mov edx, dword [esp + 0x44]
mov ebx, edi
mov esi, dword [edx + ecx*8 + 8]
mov edi, dword [edx + ecx*8 + 0xc]
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x34], esi
mov dword [esp + 0xc], edi
xor edi, ebx
xor ebx, ebx
mov esi, dword [esp + 0x34]
xor esi, edx
or esi, edi
mov edi, dword [esp + 0x50]
setne bl
cmp edx, dword [esp + 0x34]
mov edx, 0xff
mov esi, edi
sbb esi, dword [esp + 0xc]
cmovb ebx, edx
inc ecx
add eax, 0xffffff98
cmp bl, 1
je 0x1001ca1c
movzx esi, bl
test esi, esi
jne 0x1001ca7c
jmp 0x1001ca9b
mov ecx, dword [esp + 0x68]
sub dword [esp + 4], 1
jb 0x1001c8be
mov edx, dword [esp + 0x44]
mov edx, dword [edx + ecx*4 + 0x4d8]
mov dword [esp + 0x44], edx
jmp 0x1001c9f8
mov edx, dword [esp + 0x44]
sub edx, eax
add edx, 0xfffffff0
mov esi, edx
mov ecx, dword [esp + 0xa8]
mov eax, dword [esp + 8]
movzx edx, byte [esp + 0x40]
mov edi, dword [esp + 0x10]
add ecx, dword [esp + 0x3c]
sub eax, ecx
xor ecx, ecx
mov cl, dl
xor edx, edx
lea eax, [eax + ecx*8]
mov ecx, dword [esp + 0x2c]
lea ebx, [ecx + edi + 1]
not edi
lea eax, [ecx + eax + 4]
mov ecx, esi
add edi, dword [esp + 0x70]
cmp byte [esi + 0x62], 1
sete dl
mov esi, edi
mov dword [esp + 0x364], edx
mov dword [esp + 0x348], 0
mov dword [esp + 0x350], ebx
mov dword [esp + 0x354], edi
mov dword [esp + 0x358], eax
lea eax, [esp + 0x1f0]
mov dword [esp + 0x35c], ecx
add ecx, 8
mov dword [esp + 0x360], eax
call fcn.10006d20
mov edi, eax
test edx, edx
lea ecx, [esp + 0x348]
mov dword [esp + 0x4b0], ebx
mov dword [esp + 0x4b4], esi
mov dword [esp + 0x4b8], eax
mov dword [esp + 0x4bc], edx
mov dword [esp + 0x4c0], ecx
je 0x1001cee0
movaps xmm0, xmmword [0x10040420]
add edi, 0x10
lea esi, [edx - 1]
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0x2e
mov dword [esp + 0x34], 0
mov dword [esp + 0x44], 0
movaps xmmword [esp + 0x50], xmm0
movaps xmmword [esp + 0x70], xmm0
jmp 0x1001cbc5
add edi, 0x10
add esi, 0xffffffff
jae 0x1001cf1d
mov eax, dword [esp + 0x4c0]
movq xmm0, qword [edi - 0x10]
movq xmm1, qword [edi - 8]
mov eax, dword [eax + 0x18]
mov eax, dword [eax + 0x28]
movq qword [esp + 0x458], xmm1
movq qword [esp + 0x450], xmm0
lea ecx, [esp + 0x3e8]
lea ebx, [esp + 0x450]
lea edx, [esp + 0x4b0]
push ebx
push eax
call fcn.10022540
add esp, 8
mov eax, dword [esp + 0x3e8]
mov ecx, dword [esp + 0x3ec]
mov edx, eax
xor edx, 0x2e
or edx, ecx
je 0x1001c8be
movdqu xmm0, xmmword [esp + 0x3f0]
mov dword [esp + 0x3e8], eax
mov dword [esp + 0x4b8], edi
mov dword [esp + 0x3ec], ecx
mov dword [esp + 0x4bc], esi
pextrw eax, xmm0, 4
movdqu xmmword [esp + 0x3f0], xmm0
cmp eax, 0x71
jle 0x1001ccc4
cmp eax, 0x2130
jg 0x1001cd29
add eax, 0xffffff8e
cmp eax, 0x1a
ja 0x1001cbb9
mov eax, dword [eax*4 + 0x10020d8c]
add eax, dword [esp + 0x8c]
jmp eax
add eax, 0xfffffffd
cmp eax, 0x18
ja 0x1001cbb9
mov eax, dword [eax*4 + 0x10020d28]
add eax, dword [esp + 0x8c]
jmp eax
cmp eax, 0x2131
je 0x1001ce68
cmp eax, 0x2132
je 0x1001cd83
cmp eax, 0x2133
jne 0x1001cbb9
lea ecx, [esp + 0x450]
lea edx, [esp + 0x3e8]
call fcn.10023d00
mov eax, dword [esp + 0x450]
xor eax, 0xb
or eax, dword [esp + 0x454]
jne 0x1001cbb9
mov eax, dword [esp + 0x458]
mov dword [esp + 0x2fc], eax
jmp 0x1001cbb9
lea ecx, [esp + 0x450]
lea edx, [esp + 0x3e8]
call fcn.10023d00
mov eax, dword [esp + 0x450]
xor eax, 0x17
or eax, dword [esp + 0x454]
jne 0x1001cbb9
mov eax, dword [esp + 0x458]
mov dword [esp + 0x304], eax
jmp 0x1001cbb9
mov eax, dword [esp + 0x220]
xor eax, 1
or eax, dword [esp + 0x224]
je 0x1001cbb9
lea ecx, [esp + 0x450]
lea edx, [esp + 0x3e8]
call fcn.10023d00
mov eax, dword [esp + 0x450]
xor eax, 0x2d
or eax, dword [esp + 0x454]
jne 0x1001cbb9
mov eax, dword [esp + 0x458]
mov ecx, dword [esp + 0x45c]
mov dword [esp + 0x224], 0
mov dword [esp + 0x220], 1
mov dword [esp + 0x22c], ecx
mov dword [esp + 0x228], eax
jmp 0x1001cbb9
movdqa xmm0, xmmword [0x10040420]
mov dword [esp + 0x44], 0
mov dword [esp + 8], 0x2e
lea eax, [esp + 0x348]
mov dword [esp + 0x34], 0
mov dword [esp + 0x10], 0
movdqa xmmword [esp + 0x50], xmm0
movdqa xmmword [esp + 0x70], xmm0
jmp 0x1001cf24
mov eax, dword [esp + 0x4c0]
cmp dword [eax], 1
je 0x1001cf3c
mov ecx, dword [esp + 0x4b0]
sub ecx, dword [eax + 8]
mov dword [eax], 1
mov dword [eax + 4], ecx
movdqa xmm1, xmmword [esp + 0x70]
xor edi, edi
movd ecx, xmm1
pshufd xmm0, xmm1, 0x55
movd eax, xmm0
xor ecx, 0x2e
or ecx, eax
je 0x1001cfb3
movdqa xmm0, xmmword [esp + 0x70]
movzx eax, byte [esp + 0x219]
movdqu xmmword [esp + 0x818], xmm0
mov edx, dword [esp + 0x1e4]
lea esi, [esp + 0x818]
lea ecx, [esp + 0x340]
push esi
push dword [esp + 0x2fc]
push eax
call fcn.10025ec0
add esp, 0xc
xor edi, edi
cmp byte [esp + 0x340], 0x4b
jne 0x1001cfa8
mov edi, dword [esp + 0x344]
mov eax, dword [esp + 0x348]
mov dword [esp + 0xc], eax
movdqa xmm1, xmmword [esp + 0x50]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x230], edi
movd ecx, xmm1
pshufd xmm0, xmm1, 0x55
mov dword [esp + 0x234], eax
movd eax, xmm0
xor ecx, 0x2e
or ecx, eax
jne 0x1001d00e
cmp dword [esp + 0x10], 0
mov dword [esp + 0x238], 0
je 0x1001d165
movzx eax, byte [esp + 0x218]
mov dword [esp + 0x50], 0
mov byte [esp + 0x10], al
jmp 0x1001d0b7
movdqa xmm0, xmmword [esp + 0x50]
movzx eax, byte [esp + 0x219]
movdqu xmmword [esp + 0x828], xmm0
mov edx, dword [esp + 0x1e4]
lea esi, [esp + 0x828]
lea ecx, [esp + 0x340]
push esi
push dword [esp + 0x2fc]
push eax
call fcn.10025ec0
add esp, 0xc
xor esi, esi
mov edx, dword [esp + 0x344]
cmp byte [esp + 0x340], 0x4b
mov eax, 0
mov ecx, dword [esp + 0x348]
cmove eax, edx
cmp dword [esp + 0x10], 0
mov dword [esp + 0x50], edx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x238], eax
mov dword [esp + 0x23c], ecx
je 0x1001d16d
movzx ecx, byte [esp + 0x218]
test eax, eax
mov edi, dword [esp + 0x230]
mov byte [esp + 0x10], cl
mov ecx, dword [esp + 0x50]
cmove ecx, eax
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x234]
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 0xb0]
mov ecx, dword [eax + 0x4c]
sub ecx, dword [esp + 0x2c]
jb 0x1001c8be
cmp ecx, 4
jb 0x1001c8be
mov eax, dword [esp + 0xb0]
lea esi, [ecx - 4]
mov byte [esp + 0xac], 4
mov edx, dword [eax + 0x48]
add edx, dword [esp + 0x2c]
mov eax, dword [edx]
lea ebx, [edx + 4]
cmp eax, 0xfffffff0
jae 0x1001d5f9
mov dword [esp + 0x3c], eax
cmp esi, dword [esp + 0x3c]
jb 0x1001c8be
cmp dword [esp + 0x3c], 1
jbe 0x1001c8be
movzx ecx, word [ebx]
mov dword [esp + 0x6c], ecx
add ecx, 0xfffffffa
cmp cx, 0xfffc
jb 0x1001c8be
cmp word [esp + 0x6c], 4
jbe 0x1001d76d
mov ecx, dword [esp + 0x3c]
and ecx, 0xfffffffe
cmp ecx, 2
je 0x1001c8be
cmp byte [ebx + 3], 0
jne 0x1001c8be
movzx ecx, byte [ebx + 2]
add ebx, 4
mov byte [esp + 0x10], cl
mov ecx, dword [esp + 0x3c]
add ecx, 0xfffffffc
jmp 0x1001d777
mov dword [esp + 0x6c], eax
xor esi, esi
jmp 0x1001d171
mov dword [esp + 0x6c], eax
mov ebx, 0x2f
mov eax, dword [esp + 0x288]
xor eax, 0x2f
or eax, dword [esp + 0x28c]
je 0x1001d201
cmp dword [esp + 0x2bc], 0
je 0x1001d1a7
push dword [esp + 0x2c0]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x2c8], 0
je 0x1001d1c5
push dword [esp + 0x2cc]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x2d4], 0
je 0x1001d1e3
push dword [esp + 0x2d8]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x2e0], 0
je 0x1001d201
push dword [esp + 0x2e4]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 8]
movsd xmm0, qword [esp + 0x1a0]
lea ecx, [esp + 0x1f4]
movsd xmm1, qword [esp + 0x1a8]
movzx edx, byte [esp + 0x10c]
xor eax, 0x2e
or eax, dword [esp + 0x34]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x260], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x264], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x268], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x26c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x270], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x274], eax
movsd qword [ecx + 0x84], xmm0
mov eax, dword [esp + 0xc]
movsd xmm0, qword [esp + 0x460]
movsd qword [ecx + 0x8c], xmm1
mov dword [esp + 0x28c], esi
mov dword [esp + 0x288], ebx
mov dword [esp + 0x290], edi
movq xmm1, qword [esp + 0x458]
mov dword [esp + 0x294], eax
movsd qword [ecx + 0xb4], xmm0
movsd xmm0, qword [esp + 0x450]
mov eax, dword [esp + 0x2c]
movq qword [ecx + 0xac], xmm1
movsd qword [ecx + 0xa4], xmm0
mov dword [esp + 0x2b0], eax
mov eax, dword [esp + 0x3c]
movsd xmm0, qword [esp + 0x148]
mov dword [esp + 0x2b4], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x2b8], eax
mov eax, dword [esp + 0x540]
mov dword [esp + 0x2bc], eax
mov eax, dword [esp + 0x544]
mov dword [esp + 0x2c0], eax
mov eax, dword [esp + 0x53c]
mov dword [esp + 0x2c4], eax
mov eax, dword [esp + 0x150]
movsd qword [ecx + 0xd4], xmm0
movq xmm0, qword [esp + 0x548]
mov dword [ecx + 0xdc], eax
mov eax, dword [esp + 0x1e0]
mov dword [esp + 0x2d4], eax
mov eax, dword [esp + 0x538]
mov dword [esp + 0x2d8], eax
mov eax, dword [esp + 0x534]
mov dword [esp + 0x2dc], eax
mov eax, dword [esp + 0x550]
movq qword [ecx + 0xec], xmm0
mov dword [ecx + 0xf4], eax
movzx eax, byte [esp + 0x10]
movzx ecx, byte [esp + 0x160]
mov byte [esp + 0x2ec], al
movzx eax, byte [esp + 0xac]
mov byte [esp + 0x2ed], al
mov eax, dword [esp + 0x6c]
mov word [esp + 0x2ee], ax
mov byte [esp + 0x2f0], dl
mov byte [esp + 0x2f1], cl
movzx edx, byte [esp + 0x1ec]
movzx ecx, byte [esp + 0x1e8]
mov byte [esp + 0x2f2], dl
mov byte [esp + 0x2f3], cl
movzx edx, byte [esp + 0x1e4]
movzx ecx, byte [esp + 0x180]
mov byte [esp + 0x2f4], dl
mov byte [esp + 0x2f5], cl
je 0x1001d432
mov eax, dword [esp + 8]
and al, 0x3f
cmp al, 0xc
je 0x1001d63c
and dword [esp + 8], 0x3f
jne 0x1001d432
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x240], eax
mov dword [esp + 0x244], ecx
lea eax, [esp + 0x1f4]
movupd xmm0, xmmword [esp + 0x1f0]
mov edi, dword [esp + 0x224]
mov esi, dword [esp + 0x220]
movsd xmm1, qword [eax + 0x14]
movsd xmm3, qword [eax + 0xc]
movq xmm2, qword [eax + 0x1c]
movapd xmmword [esp + 0x10], xmm0
movsd qword [esp + 0x6b8], xmm1
movq xmm1, qword [eax + 0x24]
movsd qword [esp + 0x6b0], xmm3
movq qword [esp + 0x6c0], xmm2
movq qword [esp + 0x6c8], xmm1
push 0xe0
lea eax, [esp + 0x22c]
push eax
lea eax, [esp + 0x740]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, esi
xor eax, 2
or eax, edi
je 0x1001c5ec
movsd xmm1, qword [esp + 0x6c0]
lea eax, [esp + 0x568]
movsd xmm0, qword [esp + 0x6c8]
movq xmm2, qword [esp + 0x6b0]
movsd qword [eax + 0x10], xmm1
movq xmm1, qword [esp + 0x6b8]
movsd qword [eax + 0x18], xmm0
movq qword [eax], xmm2
movq qword [eax + 8], xmm1
push 0xe0
lea eax, [esp + 0x73c]
push eax
lea eax, [esp + 0x598]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
movdqa xmm0, xmmword [esp + 0x10]
lea edx, [esp + 0x5b0]
movdqu xmmword [esp + 0x558], xmm0
mov dword [esp + 0x588], esi
mov dword [esp + 0x58c], edi
lea esi, [esp + 0x558]
mov ecx, dword [esp + 0x56c]
mov eax, dword [esp + 0x568]
test ecx, ecx
mov dword [esp + 0x340], eax
mov dword [esp + 0x344], ecx
mov dword [esp + 0x348], 0
mov dword [esp + 0x34c], esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x350], edx
mov dword [esp + 8], ecx
je 0x1002057d
mov edi, dword [esp + 8]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x70], 0
mov dword [esp + 0x50], 0
xor ecx, ecx
neg edi
lea esi, [eax + 1]
movzx eax, byte [esi - 1]
cmp ecx, 0x3f
mov byte [esp + 0x10], al
jne 0x1001d5ba
cmp byte [esp + 0x10], 2
jae 0x100203fe
movzx ebx, byte [esp + 0x10]
xor eax, eax
mov edx, 0
and bl, 0x7f
movzx ebx, bl
shld eax, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne eax, ebx
cmovne ebx, edx
or dword [esp + 0x50], eax
or dword [esp + 0x70], ebx
cmp byte [esp + 0x10], 0
jns 0x1001d6ab
add ecx, 7
inc esi
inc edi
jne 0x1001d5a2
jmp 0x10020415
cmp eax, 0xffffffff
jne 0x1001c8be
cmp esi, 8
jb 0x1001c8be
cmp dword [ebx + 4], 0
jne 0x1001c8be
mov esi, dword [ebx]
add edx, 0xc
add ecx, 0xfffffff4
mov byte [esp + 0xac], 8
mov ebx, edx
mov dword [esp + 0x3c], esi
mov esi, ecx
cmp esi, dword [esp + 0x3c]
jae 0x1001d109
jmp 0x1001c8be
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0x2fc]
mov esi, dword [eax + 0x34]
sub esi, ecx
jb 0x1001c8be
movzx ebx, byte [esp + 0x218]
mov eax, dword [esp + 4]
mul ebx
jo 0x1001c8be
mov edx, esi
sub edx, eax
jb 0x1001c8be
movzx edi, bl
dec edi
cmp edi, 7
ja 0x1001c8be
mov edi, dword [edi*4 + 0x10020e54]
mov ebx, dword [esp + 0xb0]
add edi, dword [esp + 0x8c]
add ecx, dword [ebx + 0x30]
jmp edi
mov eax, dword [esp + 0x70]
not edi
mov dword [esp + 0x340], esi
mov dword [esp + 0x344], edi
or eax, dword [esp + 0x50]
jne 0x1001e9fa
lea ecx, [esp + 0x5b0]
call fcn.1002b2e0
mov eax, dword [esp + 0x5f0]
xor eax, 0x2f
or eax, dword [esp + 0x5f4]
je 0x1001c5ec
cmp dword [esp + 0x624], 0
je 0x1001d70a
push dword [esp + 0x628]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x630], 0
je 0x1001d728
push dword [esp + 0x634]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x63c], 0
je 0x1001d746
push dword [esp + 0x640]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x648], 0
je 0x1001c5ec
push dword [esp + 0x64c]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
jmp 0x1001c5ec
mov ecx, dword [esp + 0x3c]
add ebx, 2
add ecx, 0xfffffffe
cmp eax, 0xfffffff0
mov dword [esp + 0xa8], ecx
jae 0x1001d7a0
cmp dword [esp + 0xa8], 4
jb 0x1001c8be
mov eax, dword [ebx]
add dword [esp + 0xa8], 0xfffffffc
add ebx, 4
jmp 0x1001d7c5
cmp dword [esp + 0xa8], 8
jb 0x1001c8be
cmp dword [ebx + 4], 0
jne 0x1001c8be
mov eax, dword [ebx]
add dword [esp + 0xa8], 0xfffffff8
add ebx, 8
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x68], ebx
sub dword [esp + 0xa8], eax
jb 0x1001c8be
cmp dword [esp + 0x40], 0
je 0x1001c8be
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x68]
lea edx, [ecx + 1]
dec eax
mov dword [esp + 0x90], edx
mov dword [esp + 0x94], eax
movzx ecx, byte [ecx]
test cl, cl
mov byte [esp + 0x160], cl
je 0x1001c8be
cmp word [esp + 0x6c], 4
mov byte [esp + 0x1ec], 1
jb 0x1001d89d
test eax, eax
je 0x1001c8be
mov eax, dword [esp + 0x68]
movzx eax, byte [eax + 1]
test al, al
mov byte [esp + 0x1ec], al
je 0x1001c8be
mov eax, dword [esp + 0x68]
lea ebx, [eax + 2]
mov eax, dword [esp + 0x40]
add eax, 0xfffffffe
jmp 0x1001d89f
mov ebx, edx
test eax, eax
je 0x1001c8be
mov edx, eax
lea ecx, [ebx + 1]
dec edx
mov dword [esp + 0x90], ecx
mov dword [esp + 0x94], edx
je 0x1001c8be
cmp eax, 2
je 0x1001c8be
movzx edx, byte [ebx]
movzx ecx, byte [ecx]
mov esi, ebx
mov byte [esp + 0x10c], dl
mov byte [esp + 0x1e8], cl
lea edx, [ebx + 3]
lea ecx, [eax - 3]
mov dword [esp + 0x90], edx
mov dword [esp + 0x94], ecx
movzx edx, byte [ebx + 2]
test dl, dl
mov byte [esp + 0x1e4], dl
je 0x1001c8be
cmp byte [esp + 0x10c], 0
setne byte [esp + 0x180]
test ecx, ecx
je 0x1001c8be
movzx ecx, byte [ebx + 3]
test cl, cl
mov byte [esp + 0x10c], cl
je 0x1001c8be
movzx ecx, byte [esp + 0x10c]
add eax, 0xfffffffc
dec cl
movzx edx, cl
sub eax, edx
mov ecx, edx
mov dword [esp + 0x98], edx
jb 0x1001c8be
mov ecx, dword [esp + 0x6c]
add ebx, 4
mov dword [esp + 0x164], 0
mov dword [esp + 0x168], 8
mov dword [esp + 0x16c], 0
mov dword [esp + 0xa4], ebx
movzx edx, cx
cmp cx, 5
mov dword [esp + 0x130], edx
mov edx, dword [esp + 0x98]
lea esi, [ebx + edx]
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], eax
jae 0x1001daaa
test eax, eax
mov dword [esp + 0xec], 2
je 0x1001dbae
lea edx, [esi + eax]
mov dword [esp + 0x38], 0
mov dword [esp + 0xd0], 8
xor ebx, ebx
cmp byte [esi + ebx], 0
je 0x1001d9ed
lea ecx, [esi + ebx + 1]
inc ebx
cmp ecx, edx
jne 0x1001d9d9
jmp 0x1001dbae
mov edx, ebx
lea ecx, [esi + ebx + 1]
not edx
mov dword [esp + 0x90], ecx
add edx, eax
test ebx, ebx
mov dword [esp + 0x94], edx
je 0x1001de6e
mov eax, dword [esp + 0x38]
cmp eax, dword [esp + 0x164]
jne 0x1001da43
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0x164]
call fcn.1002c000
mov eax, dword [esp + 0x168]
mov ecx, dword [esp + 0x16c]
mov dword [esp + 0xd0], eax
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0xd0]
mov dword [esp + 0x100], 0
mov eax, ecx
inc ecx
shl eax, 4
mov dword [esp + 0x38], ecx
mov dword [edx + eax + 4], 0
mov dword [edx + eax], 0x1f
mov dword [edx + eax + 8], esi
mov dword [edx + eax + 0xc], ebx
mov dword [esp + 0x16c], ecx
mov eax, dword [esp + 0x94]
mov esi, dword [esp + 0x90]
lea edx, [esi + eax]
test eax, eax
jne 0x1001d9d7
mov dword [esp + 0xec], 2
jmp 0x1001dbb9
lea ecx, [esp + 0x340]
lea edx, [esp + 0x90]
call fcn.1002bbf0
cmp byte [esp + 0x340], 0x4b
jne 0x1001dbc3
mov eax, dword [esp + 0x344]
mov dword [esp + 0x50], 0
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0x348]
mov dword [esp + 0xec], eax
mov eax, dword [esp + 0x94]
test eax, eax
je 0x1001dbc9
mov edx, dword [esp + 0x34c]
mov ecx, eax
mov dword [esp + 0xd0], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0xa0], edx
mov edx, dword [esp + 0x90]
lea esi, [edx + ecx]
neg ecx
inc edx
mov dword [esp + 0x88], esi
mov dword [esp + 0x4c], ecx
movzx eax, byte [edx - 1]
cmp dword [esp + 0x50], 0x3f
jne 0x1001db4c
cmp al, 2
jae 0x1001dc17
mov ecx, eax
xor ebx, ebx
mov byte [esp + 0x38], al
mov eax, 0
and cl, 0x7f
movzx esi, cl
mov ecx, dword [esp + 0x50]
shld ebx, esi, cl
shl esi, cl
test cl, 0x20
cmovne ebx, esi
cmovne esi, eax
or dword [esp + 0x60], ebx
or dword [esp + 0xd0], esi
cmp byte [esp + 0x38], 0
jns 0x1001dc2d
add dword [esp + 0x50], 7
inc edx
inc dword [esp + 0x4c]
jne 0x1001db39
mov eax, dword [esp + 0x88]
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], 0
jmp 0x1001dbb9
mov dword [esp + 0x100], 0
mov dword [esp + 0x50], 0
jmp 0x1001dbc9
mov al, 1
mov dword [esp + 0x50], eax
cmp dword [esp + 0x164], 0
je 0x1001dbe7
push dword [esp + 0x168]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x100], 0
mov ecx, dword [esp + 0x50]
sete al
or cl, al
jne 0x1001c8be
push dword [esp + 0xec]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
jmp 0x1001c8be
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x90], edx
not eax
mov dword [esp + 0x94], eax
jmp 0x1001dbb9
mov ecx, dword [esp + 0xd0]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x90], edx
or ecx, dword [esp + 0x60]
not eax
mov dword [esp + 0x94], eax
je 0x1001de40
cmp dword [esp + 0xa0], 0
je 0x10020797
mov eax, dword [esp + 0x130]
movzx ecx, byte [esp + 0xac]
movzx ebx, byte [esp + 0x10]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x104], 8
mov dword [esp + 0x88], 0
mov dword [esp + 0x108], 0
shl eax, 0x10
shl ecx, 8
or ecx, eax
mov eax, dword [esp + 0xa0]
or ebx, ecx
lea eax, [eax*4]
mov dword [esp + 0x38], eax
add dword [esp + 0x88], 1
movdqa xmm0, xmmword [0x10040420]
adc dword [esp + 0x108], 0
xor esi, esi
movdqa xmmword [esp + 0x50], xmm0
mov eax, dword [esp + 0xec]
movzx eax, word [eax + esi + 2]
lea ecx, [esp + 0x340]
lea edx, [esp + 0x90]
push eax
push ebx
call fcn.1002c0a0
add esp, 8
mov eax, dword [esp + 0x340]
or eax, dword [esp + 0x344]
jne 0x1001dbb9
mov ecx, dword [esp + 0xec]
xor eax, eax
movdqu xmm0, xmmword [esp + 0x348]
cmp word [ecx + esi], 1
sete al
add esi, 4
movd xmm1, eax
cmp dword [esp + 0x38], esi
pshufd xmm1, xmm1, 0x44
psllq xmm1, 0x3f
psrad xmm1, 0x1f
pshufd xmm1, xmm1, 0xf5
pand xmm0, xmm1
pandn xmm1, xmmword [esp + 0x50]
por xmm1, xmm0
movdqa xmmword [esp + 0x50], xmm1
jne 0x1001dcd9
movdqa xmm1, xmmword [esp + 0x50]
pshufd xmm0, xmm1, 0x55
movd eax, xmm1
movd ecx, xmm0
mov dword [esp + 0xbc], eax
xor eax, 0x2e
or eax, ecx
mov dword [esp + 0xc0], ecx
je 0x10020797
mov eax, dword [esp + 0x4c]
cmp eax, dword [esp + 0x164]
jne 0x1001ddc6
mov edx, dword [esp + 0x4c]
lea ecx, [esp + 0x164]
call fcn.1002c000
mov eax, dword [esp + 0x168]
mov ecx, dword [esp + 0x16c]
mov dword [esp + 0x104], eax
mov dword [esp + 0x4c], ecx
mov edx, dword [esp + 0x4c]
mov esi, dword [esp + 0x104]
mov ecx, dword [esp + 0xbc]
movdqa xmm1, xmmword [esp + 0x50]
mov eax, edx
pshufd xmm0, xmm1, 0xee
inc edx
shl eax, 4
mov dword [esp + 0x4c], edx
mov dword [esi + eax], ecx
mov ecx, dword [esp + 0xc0]
mov dword [esi + eax + 4], ecx
movd ecx, xmm0
pshufd xmm0, xmm1, 0xff
mov dword [esi + eax + 8], ecx
movd ecx, xmm0
mov dword [esi + eax + 0xc], ecx
mov esi, dword [esp + 0x88]
mov ecx, dword [esp + 0x108]
mov dword [esp + 0x16c], edx
cmp esi, dword [esp + 0xd0]
sbb ecx, dword [esp + 0x60]
jb 0x1001dcb9
mov dword [esp + 0x50], 0
jmp 0x1001de8f
mov dword [esp + 0x118], 0
mov dword [esp + 0x11c], 8
mov dword [esp + 0x120], 0
mov dword [esp + 0x50], 0
jmp 0x1001df01
mov dword [esp + 0xec], 2
mov dword [esp + 0xa0], 0
mov dword [esp + 0x100], 0
cmp word [esp + 0x6c], 5
mov dword [esp + 0x118], 0
mov dword [esp + 0x11c], 8
mov dword [esp + 0x120], 0
jae 0x1001df01
test edi, edi
mov dword [esp + 0xb4], 0
je 0x1001e709
pxor xmm0, xmm0
mov ebx, 0x1f
mov dword [esp + 0x354], 0
mov dword [esp + 0x350], 0
movdqa xmmword [esp + 0x6d0], xmm0
movdqa xmmword [esp + 0x340], xmm0
jmp 0x1001e70e
lea ecx, [esp + 0x340]
lea edx, [esp + 0x90]
call fcn.1002bbf0
cmp byte [esp + 0x340], 0x4b
jne 0x1001e006
mov eax, dword [esp + 0x344]
mov dword [esp + 0x38], 0
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x348]
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0x94]
test eax, eax
je 0x1001e9a9
mov edx, dword [esp + 0x34c]
mov ecx, eax
mov dword [esp + 0x60], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0xbc], edx
mov edx, dword [esp + 0x90]
lea esi, [edx + ecx]
neg ecx
inc edx
mov dword [esp + 0x108], esi
mov dword [esp + 0x88], ecx
movzx eax, byte [edx - 1]
cmp dword [esp + 0x38], 0x3f
jne 0x1001df9f
cmp al, 2
jae 0x1001e011
mov ecx, eax
xor esi, esi
mov byte [esp + 0xd0], al
mov eax, 0
and cl, 0x7f
movzx ebx, cl
mov ecx, dword [esp + 0x38]
shld esi, ebx, cl
shl ebx, cl
test cl, 0x20
cmovne esi, ebx
cmovne ebx, eax
or dword [esp + 0x4c], esi
or dword [esp + 0x60], ebx
cmp byte [esp + 0xd0], 0
jns 0x1001e02d
add dword [esp + 0x38], 7
inc edx
inc dword [esp + 0x88]
jne 0x1001df90
mov eax, dword [esp + 0x108]
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], 0
jmp 0x1001e9a1
mov al, 1
mov dword [esp + 0x38], eax
jmp 0x1001e9a9
mov eax, dword [esp + 0x88]
mov dword [esp + 0x90], edx
not eax
mov dword [esp + 0x94], eax
jmp 0x1001e9a1
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x88]
mov dword [esp + 0x90], edx
or ecx, dword [esp + 0x4c]
not eax
mov dword [esp + 0x94], eax
je 0x1001e5fa
cmp dword [esp + 0xbc], 0
je 0x100207b3
mov ecx, dword [esp + 0x130]
movzx eax, byte [esp + 0xac]
movzx edx, byte [esp + 0x10]
mov dword [esp + 0x170], 0
mov dword [esp + 0x3b0], 8
mov dword [esp + 0x3b8], 0
mov dword [esp + 0x3b4], 0
shl ecx, 0x10
shl eax, 8
or eax, ecx
or edx, eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x88], edx
lea eax, [eax*4]
mov dword [esp + 0x108], eax
add dword [esp + 0x3b8], 1
mov dword [esp + 0x104], 0x2e
mov dword [esp + 0x38], 0
mov dword [esp + 0x3d0], 0
mov dword [esp + 0x3c8], 0
mov dword [esp + 0x3cc], 0
mov dword [esp + 0x3c4], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xf0], 0
mov dword [esp + 0x154], 0
mov dword [esp + 0xf4], 0
mov dword [esp + 0x158], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0x15c], 0
mov dword [esp + 0x3c0], 0
mov dword [esp + 0x3bc], 0
adc dword [esp + 0x3b4], 0
jmp 0x1001e1bc
mov eax, dword [esp + 0x38]
add eax, 4
cmp dword [esp + 0x108], eax
mov dword [esp + 0x38], eax
je 0x1001e4a6
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0x38]
movzx eax, word [eax + ecx + 2]
lea ecx, [esp + 0x340]
lea edx, [esp + 0x90]
push eax
push dword [esp + 0x8c]
call fcn.1002c0a0
add esp, 8
mov eax, dword [esp + 0x340]
or eax, dword [esp + 0x344]
jne 0x1001e9a1
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0x38]
movzx ecx, word [eax + ecx]
dec ecx
cmp ecx, 4
ja 0x1001e1a4
mov ecx, dword [ecx*4 + 0x10020df8]
mov edx, dword [esp + 0x350]
mov eax, dword [esp + 0x354]
mov esi, dword [esp + 0x348]
mov ebx, dword [esp + 0x34c]
add ecx, dword [esp + 0x8c]
mov dword [esp + 0xd0], edx
shr edx, 8
mov dword [esp + 0x130], eax
jmp ecx
mov eax, dword [esp + 0x104]
xor eax, 0x2e
or eax, dword [esp + 0xc0]
je 0x100207b3
mov eax, dword [esp + 0x170]
cmp eax, dword [esp + 0x118]
jne 0x1001e4fc
mov edx, dword [esp + 0x170]
lea ecx, [esp + 0x118]
call fcn.10029eb0
mov eax, dword [esp + 0x11c]
mov ecx, dword [esp + 0x120]
mov dword [esp + 0x3b0], eax
mov dword [esp + 0x170], ecx
movzx ecx, byte [esp + 0x3c0]
mov eax, dword [esp + 0x3cc]
movzx edx, byte [esp + 0x3bc]
mov ebx, dword [esp + 0x3b0]
mov esi, dword [esp + 0x3c4]
and eax, 0xffffff
shl ecx, 0x18
shl edx, 0x18
or ecx, eax
mov eax, dword [esp + 0x3d0]
and eax, 0xffffff
or edx, eax
imul eax, dword [esp + 0x170], 0x38
mov dword [ebx + eax], esi
mov dword [ebx + eax + 4], ecx
mov ecx, dword [esp + 0x3c8]
mov esi, dword [esp + 0x3b8]
mov dword [ebx + eax + 8], ecx
mov ecx, dword [esp + 0xc0]
mov dword [ebx + eax + 0xc], edx
mov edx, dword [esp + 0x3b4]
mov dword [ebx + eax + 0x14], ecx
mov ecx, dword [esp + 0x104]
mov dword [ebx + eax + 0x10], ecx
mov ecx, dword [esp + 0x524]
mov dword [ebx + eax + 0x1c], ecx
mov ecx, dword [esp + 0x528]
mov dword [ebx + eax + 0x18], ecx
mov ecx, dword [esp + 0x154]
mov dword [ebx + eax + 0x24], ecx
mov ecx, dword [esp + 0xf0]
mov dword [ebx + eax + 0x20], ecx
mov ecx, dword [esp + 0x158]
mov dword [ebx + eax + 0x2c], ecx
mov ecx, dword [esp + 0xf4]
mov dword [ebx + eax + 0x28], ecx
mov ecx, dword [esp + 0x15c]
mov dword [ebx + eax + 0x34], ecx
mov ecx, dword [esp + 0xb8]
mov dword [ebx + eax + 0x30], ecx
mov ecx, dword [esp + 0x170]
inc ecx
cmp esi, dword [esp + 0x60]
mov dword [esp + 0x170], ecx
mov dword [esp + 0x120], ecx
sbb edx, dword [esp + 0x4c]
jb 0x1001e0c6
mov eax, dword [esp + 0xb4]
mov ebx, 0x2e
mov dword [esp + 0xb4], 0
mov dword [esp + 0x1e0], eax
movsd xmm0, qword [esp + 0x164]
mov edx, dword [esp + 0x16c]
mov ecx, dword [esp + 0x120]
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0xb4]
movsd qword [esp + 0x148], xmm0
movsd xmm0, qword [esp + 0x118]
mov dword [esp + 0x150], edx
mov dword [esp + 0x550], ecx
mov edx, dword [esp + 0xec]
mov ecx, dword [esp + 0x100]
add dword [esp + 0x68], eax
movsd qword [esp + 0x548], xmm0
movaps xmm0, xmmword [esp + 0x670]
mov dword [esp + 0x544], edx
mov dword [esp + 0x540], ecx
mov edx, dword [esp + 0xa0]
mov ecx, dword [esp + 0xbc]
movaps xmmword [esp + 0x1a0], xmm0
movaps xmm0, xmmword [esp + 0x4b0]
mov dword [esp + 0x53c], edx
mov dword [esp + 0x534], ecx
mov edx, dword [esp + 0x1e0]
mov ecx, dword [esp + 0xe8]
movaps xmmword [esp + 0x450], xmm0
movq xmm0, qword [esp + 0x4c0]
mov dword [esp + 0xb4], edx
mov dword [esp + 0x538], ecx
movq qword [esp + 0x460], xmm0
mov eax, dword [esp + 0x288]
xor eax, 0x2f
or eax, dword [esp + 0x28c]
jne 0x1001d189
jmp 0x1001d201
mov ebx, 0x2e
mov ecx, dword [esp + 0x94]
movdqa xmm0, xmmword [esp + 0x6d0]
movdqa xmm2, xmmword [esp + 0x340]
movq xmm1, qword [esp + 0x350]
mov dword [esp + 0xe8], 2
test ecx, ecx
movdqa xmmword [esp + 0x670], xmm0
movdqa xmmword [esp + 0x4b0], xmm2
movq qword [esp + 0x4c0], xmm1
mov eax, ecx
mov dword [esp + 0x60], ecx
je 0x1001e958
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0xd0], 0
mov dword [esp + 0x4c], 8
lea edx, [eax + ecx]
xor esi, esi
cmp byte [eax + esi], 0
je 0x1001e79b
lea ecx, [eax + esi + 1]
inc esi
cmp ecx, edx
jne 0x1001e787
jmp 0x1001e996
mov edx, esi
lea ecx, [eax + esi + 1]
not edx
mov dword [esp + 0x90], ecx
add edx, dword [esp + 0x60]
test esi, esi
mov dword [esp + 0x94], edx
je 0x1001e965
lea ecx, [esp + 0x340]
lea edx, [esp + 0x90]
push esi
push eax
call fcn.10029b60
add esp, 8
mov eax, dword [esp + 0x350]
mov ecx, dword [esp + 0x354]
mov dword [esp + 0x60], eax
xor eax, 0x2e
mov dword [esp + 0x38], ecx
or eax, ecx
je 0x1001e98b
lea edx, [esp + 0x348]
movsd xmm0, qword [esp + 0x344]
mov ecx, dword [esp + 0xd0]
mov eax, dword [esp + 0x34c]
mov esi, dword [esp + 0x340]
movsd xmm1, qword [edx + 0x20]
movq xmm2, qword [edx + 0x10]
movaps xmmword [esp + 0x130], xmm0
movq xmm0, qword [edx + 0x28]
cmp ecx, dword [esp + 0x118]
mov dword [esp + 0x88], eax
movsd qword [esp + 0x3f8], xmm1
movq xmm1, qword [edx + 0x18]
movq qword [esp + 0x3e8], xmm2
movq qword [esp + 0x400], xmm0
movq qword [esp + 0x3f0], xmm1
jne 0x1001e897
mov edx, dword [esp + 0xd0]
lea ecx, [esp + 0x118]
call fcn.10029eb0
mov eax, dword [esp + 0x11c]
mov ecx, dword [esp + 0x120]
mov dword [esp + 0x4c], eax
mov dword [esp + 0xd0], ecx
mov ecx, dword [esp + 0xd0]
mov edx, dword [esp + 0x4c]
movaps xmm0, xmmword [esp + 0x130]
imul eax, ecx, 0x38
inc ecx
mov dword [edx + eax], esi
mov esi, dword [esp + 0x88]
movlps qword [edx + eax + 4], xmm0
mov dword [esp + 0xd0], ecx
mov dword [edx + eax + 0xc], esi
mov esi, dword [esp + 0x38]
mov dword [esp + 0x38], 0
mov dword [edx + eax + 0x14], esi
mov esi, dword [esp + 0x60]
mov dword [edx + eax + 0x10], esi
movsd xmm0, qword [esp + 0x3e8]
movq xmm1, qword [esp + 0x3f0]
movsd qword [edx + eax + 0x18], xmm0
movq qword [edx + eax + 0x20], xmm1
movsd xmm0, qword [esp + 0x3f8]
movsd qword [edx + eax + 0x28], xmm0
movq xmm0, qword [esp + 0x400]
movq qword [edx + eax + 0x30], xmm0
mov dword [esp + 0x120], ecx
mov ecx, dword [esp + 0x94]
mov eax, dword [esp + 0x90]
lea edx, [eax + ecx]
test ecx, ecx
mov dword [esp + 0x60], ecx
jne 0x1001e785
mov dword [esp + 0xb4], 0
mov dword [esp + 0xe8], 2
jmp 0x1001e9a9
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x38], eax
jmp 0x1001e9a9
mov dword [esp + 0xe8], 2
mov dword [esp + 0x1e0], 0
mov dword [esp + 0xbc], 0
jmp 0x1001e618
mov dword [esp + 0xe8], 2
mov dword [esp + 0xb4], 0
mov dword [esp + 0x38], 0
cmp dword [esp + 0x118], 0
je 0x1001e9c7
push dword [esp + 0x11c]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0xb4], 0
mov ecx, dword [esp + 0x38]
sete al
or cl, al
cmp cl, 1
je 0x1001dbb9
push dword [esp + 0xe8]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
jmp 0x1001dbb9
cmp dword [esp + 0x50], 0
jne 0x1001ea20
mov eax, dword [esp + 0x70]
lea ecx, [eax - 1]
cmp ecx, dword [esp + 0x5c4]
jae 0x1001ea20
imul ecx, ecx, 0x68
add ecx, dword [esp + 0x5c0]
jmp 0x1001eae1
mov eax, dword [esp + 0x5b4]
mov byte [esp + 8], 0x12
test eax, eax
mov dword [esp + 0x34], eax
je 0x10020413
mov eax, dword [esp + 0x5b0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x34]
mov edi, 0xffffffff
xor esi, esi
movzx eax, word [eax + 0x4d6]
mov dword [esp + 0xc], eax
imul eax, eax, 0x68
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x44]
add eax, esi
je 0x1001eab5
mov eax, dword [esp + 0x34]
xor ebx, ebx
mov edx, dword [eax + edi*8 + 8]
mov ecx, dword [eax + edi*8 + 0xc]
mov dword [esp + 0x2c], edx
mov eax, edx
mov edx, dword [esp + 0x70]
mov dword [esp + 0x10], ecx
xor ecx, dword [esp + 0x50]
xor eax, edx
or eax, ecx
mov eax, dword [esp + 0x50]
setne bl
cmp edx, dword [esp + 0x2c]
sbb eax, dword [esp + 0x10]
mov eax, 0xff
cmovb ebx, eax
inc edi
add esi, 0xffffff98
cmp bl, 1
je 0x1001ea60
movzx eax, bl
test eax, eax
jne 0x1001eab9
jmp 0x1001ead8
mov edi, dword [esp + 0xc]
sub dword [esp + 4], 1
jb 0x10020413
mov eax, dword [esp + 0x34]
mov eax, dword [eax + edi*4 + 0x4d8]
mov dword [esp + 0x34], eax
jmp 0x1001ea43
mov ecx, dword [esp + 0x34]
sub ecx, esi
add ecx, 0xfffffff0
cmp byte [ecx + 0x62], 1
jne 0x1001eaf2
mov dword [esp + 0x348], 1
add ecx, 8
call fcn.10006d20
mov dword [esp + 0x10], eax
test edx, edx
je 0x1001ef69
shl edx, 4
xor ebx, ebx
mov dword [esp + 0x2c], 0
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x44], 0
mov dword [esp + 8], 0
mov dword [esp + 0x70], 0
add edx, dword [esp + 0x10]
mov dword [esp + 0x50], edx
jmp 0x1001eb80
cmp edi, 4
jb 0x100205e4
mov eax, dword [ecx]
mov ecx, dword [esp + 0x10]
mov ebx, 1
add ecx, 0x10
mov dword [esp + 0x17c], eax
add dword [esp + 0x17c], esi
cmp ecx, dword [esp + 0x50]
mov dword [esp + 0x10], ecx
je 0x1001eea7
mov eax, dword [esp + 0x10]
movsd xmm0, qword [eax]
movsd xmm1, qword [eax + 8]
mov eax, dword [esp + 0x34c]
movsd qword [esp + 0x4b8], xmm1
movsd qword [esp + 0x4b0], xmm0
mov eax, dword [eax + 0x28]
movsd qword [esp + 0x3f0], xmm1
movsd qword [esp + 0x3e8], xmm0
lea ecx, [esp + 0x1f0]
lea esi, [esp + 0x3e8]
lea edx, [esp + 0x340]
push esi
push eax
call fcn.10022540
add esp, 8
mov eax, dword [esp + 0x1f0]
mov ecx, dword [esp + 0x1f4]
mov edx, eax
xor edx, 0x2e
or edx, ecx
lea edx, [esp + 0x1f8]
movsd xmm0, qword [edx]
movsd xmm1, qword [edx + 8]
movsd qword [esp + 0x450], xmm0
movsd qword [esp + 0x458], xmm1
je 0x100205b1
movq xmm0, qword [esp + 0x450]
movq xmm1, qword [esp + 0x458]
lea edx, [esp + 0x740]
movq qword [edx + 8], xmm1
movq qword [edx], xmm0
mov dword [esp + 0x73c], ecx
mov dword [esp + 0x738], eax
movzx eax, word [esp + 0x748]
cmp eax, 0x55
jne 0x1001eceb
mov ebx, dword [esp + 0xfc]
lea ecx, [esp + 0x1f0]
lea edx, [esp + 0x738]
call fcn.10023d00
mov ecx, dword [esp + 0x1f0]
mov eax, dword [esp + 0x1f8]
mov edx, ecx
and dl, 0x3f
cmp dl, 0x18
jne 0x1001ed78
mov edi, dword [ebx + 0x24]
mov esi, dword [esp + 0x66c]
mov ecx, dword [ebx + 0x20]
sub edi, esi
jb 0x10020596
mov ebx, dword [esp + 0x580]
movzx edx, bh
mul edx
jo 0x100205e0
add ecx, esi
sub edi, eax
jb 0x10020596
and ebx, 0xff00
add ecx, eax
cmp ebx, 0x800
jne 0x1001eb4d
cmp edi, 8
jb 0x100205e8
cmp dword [ecx + 4], 0
je 0x1001eb56
jmp 0x10020639
cmp eax, 0x13
je 0x1001edb7
cmp eax, 0x12
je 0x1001ee09
cmp eax, 0x11
jne 0x1001ee8a
lea ecx, [esp + 0x1f0]
lea edx, [esp + 0x738]
call fcn.10023d00
mov eax, dword [esp + 0x1f0]
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x174]
or eax, dword [esp + 0x1f4]
mov eax, 0
cmove ecx, eax
mov eax, 1
cmove edx, dword [esp + 0x1fc]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 8]
mov dword [esp + 0x174], edx
cmove ecx, eax
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x178]
cmove ecx, dword [esp + 0x1f8]
mov dword [esp + 0x178], ecx
jmp 0x1001ee8a
cmp ecx, 0x16
jne 0x1001ee5a
cmp word [esp + 0x582], 5
mov ecx, 0
jae 0x1001ed98
mov ecx, dword [esp + 0x66c]
cmp byte [ebx + 0x74], 0
mov edx, 0
mov ebx, 1
cmovne edx, ecx
add edx, eax
mov dword [esp + 0x17c], edx
jmp 0x1001ee8a
lea ecx, [esp + 0x1f0]
lea edx, [esp + 0x738]
call fcn.10023d00
mov eax, dword [esp + 0x1f0]
mov ecx, dword [esp + 0x2c]
xor eax, 0x26
or eax, dword [esp + 0x1f4]
mov eax, 1
cmove ecx, eax
mov dword [esp + 0x2c], ecx
movzx ecx, word [esp + 0x186]
cmove cx, word [esp + 0x1f8]
mov word [esp + 0x186], cx
jmp 0x1001ee8a
lea ecx, [esp + 0x1f0]
lea edx, [esp + 0x738]
call fcn.10023d00
mov eax, dword [esp + 0x1f0]
test al, 0x3f
je 0x1001ee5e
cmp eax, 7
jne 0x1001ee8a
mov eax, dword [esp + 0x1f8]
mov ecx, dword [esp + 0x1fc]
mov dword [esp + 4], 0
mov dword [esp + 0xc], 1
mov dword [esp + 0x530], eax
mov dword [esp + 0x52c], ecx
jmp 0x1001ee8a
xor ebx, ebx
jmp 0x1001ee8a
mov eax, dword [esp + 0x1f8]
mov ecx, dword [esp + 0x1fc]
mov dword [esp + 0x44], 0
mov dword [esp + 0x34], 1
mov dword [esp + 0x3d8], eax
mov dword [esp + 0x3d4], ecx
mov eax, dword [esp + 0x10]
add eax, 0x10
cmp eax, dword [esp + 0x50]
mov dword [esp + 0x10], eax
jne 0x1001eb80
test ebx, ebx
je 0x1001efa1
mov eax, dword [esp + 0x580]
mov edx, dword [esp + 0xfc]
mov ecx, eax
lea esi, [edx + 0x1c]
lea edi, [edx + 0x24]
lea ebx, [edx + 0x20]
shr ecx, 0x10
cmp cx, 5
cmovb edi, esi
lea esi, [edx + 0x18]
mov edi, dword [edi]
cmovb ebx, esi
mov esi, dword [ebx]
sub edi, dword [esp + 0x17c]
jb 0x100207cf
add esi, dword [esp + 0x17c]
cmp cx, 5
mov ecx, dword [edx + 0x30]
mov edx, dword [edx + 0x34]
mov dword [esp + 0x1f0], esi
mov dword [esp + 0x1f4], edi
mov edi, dword [esp + 0x5ac]
mov esi, dword [esp + 0x5a8]
mov dword [esp + 0x1f8], eax
setae byte [esp + 0x1fc]
mov byte [esp + 0x1ff], 0
mov word [esp + 0x1fd], 0
mov dword [esp + 0x204], edi
mov dword [esp + 0x200], esi
mov dword [esp + 0x208], ecx
mov ecx, dword [esp + 0x664]
mov dword [esp + 0x20c], edx
mov dword [esp + 0x214], 0
mov dword [esp + 0x210], ecx
jmp 0x1001f102
mov dword [esp + 0x2c], 0
mov dword [esp + 0xc], 0
mov dword [esp + 4], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x44], 0
mov dword [esp + 8], 0
mov dword [esp + 0x70], 0
mov ecx, dword [esp + 0x190]
test ecx, ecx
mov eax, ecx
mov dword [esp + 0x10], ecx
je 0x1001f001
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x18c]
xor ecx, ecx
mov edi, eax
jmp 0x1001efc9
mov eax, edi
sub edi, ecx
jbe 0x1001f001
mov esi, dword [esp + 0x9c]
shr edi, 1
xor ebx, ebx
add edi, ecx
cmp dword [edx + edi*8], esi
mov esi, 0xff
setne bl
cmovb ebx, esi
cmp bl, 1
je 0x1001efc3
movzx ecx, bl
cmp ecx, 0xff
jne 0x1001f25a
inc edi
mov ecx, edi
mov edi, eax
sub edi, ecx
ja 0x1001efc9
mov eax, dword [esp + 8]
xor eax, 1
mov ecx, eax
or eax, dword [esp + 0x70]
jne 0x1001f189
mov eax, dword [esp + 0x34]
xor eax, 1
or eax, dword [esp + 0x44]
jne 0x1001f189
mov eax, dword [esp + 0x3d8]
mov ecx, dword [esp + 0x174]
cmp dword [esp + 0x178], eax
sbb ecx, dword [esp + 0x3d4]
jae 0x1001f297
mov edx, dword [esp + 0xcc]
cmp edx, dword [esp + 0xc4]
jne 0x1001f06a
lea ecx, [esp + 0xc4]
call fcn.1002ae00
mov edx, dword [esp + 0xcc]
mov eax, dword [esp + 0xc8]
mov esi, dword [esp + 0x174]
mov ebx, dword [esp + 0x178]
mov edi, dword [esp + 0x3d4]
mov ecx, edx
shl ecx, 5
mov dword [eax + ecx], ebx
mov dword [eax + ecx + 4], esi
mov dword [eax + ecx + 0xc], edi
mov ebx, dword [esp + 0x3d8]
mov edi, dword [esp + 0x114]
mov dword [eax + ecx + 8], ebx
mov dword [eax + ecx + 0x14], 0
mov dword [eax + ecx + 0x10], 0
mov dword [eax + ecx + 0x18], edi
jmp 0x1001f237
mov edx, dword [esp + 0xcc]
mov eax, dword [esp + 0xc8]
movdqa xmm0, xmmword [esp + 0x10]
mov esi, dword [esp + 0x114]
mov ecx, edx
inc edx
shl ecx, 5
movdqu xmmword [eax + ecx], xmm0
mov dword [eax + ecx + 0x14], 0
mov dword [eax + ecx + 0x10], 0
mov dword [eax + ecx + 0x18], esi
mov dword [esp + 0xcc], edx
lea ecx, [esp + 0x738]
lea edx, [esp + 0x1f0]
call fcn.100211a0
mov eax, dword [esp + 0x738]
movdqu xmm0, xmmword [esp + 0x740]
mov ecx, eax
movdqa xmmword [esp + 0x10], xmm0
and cl, 3
cmp cl, 1
jne 0x1001f241
movdqa xmm1, xmmword [esp + 0x10]
pshufd xmm0, xmm1, 0x55
pshufd xmm2, xmm1, 0xff
movd ecx, xmm1
pshufd xmm1, xmm1, 0xee
movd esi, xmm1
movd eax, xmm0
movd edx, xmm2
cmp ecx, esi
sbb eax, edx
jae 0x1001f102
mov edx, dword [esp + 0xcc]
cmp edx, dword [esp + 0xc4]
jne 0x1001f0c8
lea ecx, [esp + 0xc4]
call fcn.1002ae00
jmp 0x1001f0c1
or ecx, dword [esp + 0x70]
jne 0x1001f297
mov eax, dword [esp + 0xc]
xor eax, 1
or eax, dword [esp + 4]
jne 0x1001f297
mov esi, dword [esp + 0x530]
mov eax, dword [esp + 0x178]
mov edi, dword [esp + 0x52c]
mov ecx, dword [esp + 0x174]
add esi, eax
adc edi, ecx
cmp eax, esi
mov ecx, ecx
sbb ecx, edi
jae 0x1001f297
mov edx, dword [esp + 0xcc]
cmp edx, dword [esp + 0xc4]
jne 0x1001f1f3
lea ecx, [esp + 0xc4]
call fcn.1002ae00
mov edx, dword [esp + 0xcc]
mov ecx, dword [esp + 0xc8]
mov ebx, dword [esp + 0x174]
mov eax, edx
shl eax, 5
mov dword [ecx + eax + 4], ebx
mov ebx, dword [esp + 0x178]
mov dword [ecx + eax], ebx
mov dword [ecx + eax + 0xc], edi
mov edi, dword [esp + 0x114]
mov dword [ecx + eax + 8], esi
mov dword [ecx + eax + 0x14], 0
mov dword [ecx + eax + 0x10], 0
mov dword [ecx + eax + 0x18], edi
inc edx
mov dword [esp + 0xcc], edx
jmp 0x1001f297
cmp eax, 2
jne 0x1001f297
movdqa xmm0, xmmword [esp + 0x10]
movd edx, xmm0
cmp dl, 0x4b
je 0x1001f297
jmp 0x100207e0
dec edi
mov ecx, edi
cmp ecx, 0xffffffff
je 0x1001f28b
cmp edi, dword [esp + 0x10]
jae 0x10020831
mov esi, dword [esp + 0x9c]
lea eax, [ecx - 1]
cmp dword [edx + ecx*8], esi
mov ecx, eax
je 0x1001f25d
lea ecx, [eax + 2]
cmp dword [esp + 0x10], ecx
jae 0x1001f28d
jmp 0x10020844
xor ecx, ecx
cmp ecx, dword [esp + 0x10]
jne 0x1001f359
push 0x118
lea eax, [esp + 0x55c]
push eax
lea eax, [esp + 0x228]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x9c]
mov esi, dword [esp + 0x19c]
movzx ecx, word [esp + 0x186]
mov dword [esp + 0x338], eax
mov eax, dword [esp + 0x2c]
cmp esi, dword [esp + 0x194]
mov word [esp + 0x33c], ax
mov word [esp + 0x33e], cx
mov dword [esp + 0x1f0], 2
mov dword [esp + 0x208], 2
jne 0x1001f319
lea ecx, [esp + 0x194]
mov edx, esi
call fcn.1002cb30
mov esi, dword [esp + 0x19c]
imul eax, esi, 0x150
add eax, dword [esp + 0x198]
push 0x150
lea ecx, [esp + 0x1f4]
push ecx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x64]
inc esi
mov dword [esp + 0x19c], esi
test ecx, ecx
jne 0x1001a291
jmp 0x1001f675
mov eax, dword [esp + 0x10]
lea eax, [edx + eax*8]
lea edx, [edx + ecx*8]
mov ecx, dword [esp + 0xfc]
mov dword [esp + 0xb0], eax
mov dword [esp + 4], edx
mov dword [esp + 0x3c], ecx
jmp 0x1001f393
mov eax, dword [esp + 4]
add eax, 8
cmp eax, dword [esp + 0xb0]
mov dword [esp + 4], eax
je 0x1001f297
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 4]
cmp dword [ecx], eax
jne 0x1001f297
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x3c]
mov ecx, dword [edx + 0x38]
mov eax, dword [eax + 4]
mov edx, dword [edx + 0x3c]
sub edx, eax
jb 0x1002085c
add ecx, eax
mov dword [esp + 0x738], ecx
mov dword [esp + 0x73c], edx
lea ecx, [esp + 0x1f0]
lea edx, [esp + 0x738]
push eax
call fcn.1002b650
add esp, 4
cmp dword [esp + 0x1f0], 0
jne 0x10020876
mov ebx, dword [esp + 0x1f8]
test ebx, ebx
je 0x1001f37b
mov eax, dword [esp + 0x1f4]
movzx ecx, byte [esp + 0x20c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x208]
movzx edx, cl
mov byte [esp + 0x34], cl
mov dword [esp + 0x6c], edx
mov dword [esp + 0xc], eax
add al, al
add al, cl
movzx eax, al
mov dword [esp + 0x44], eax
jmp 0x1001f487
cmp ebx, dword [esp + 0x44]
jb 0x1001f37b
cmp byte [esp + 0x34], 0
mov dword [esp + 8], 0
je 0x1001f4d1
mov ecx, dword [esp + 0x6c]
dec ecx
cmp ecx, 7
ja 0x100208aa
mov ecx, dword [ecx*4 + 0x10020e74]
add ecx, dword [esp + 0x8c]
jmp ecx
xor ecx, ecx
jmp 0x1001f524
movzx edx, byte [esp + 0xc]
dec edx
cmp edx, 7
ja 0x100208b8
mov edx, dword [edx*4 + 0x10020e94]
add edx, dword [esp + 0x8c]
jmp edx
mov eax, dword [esp + 0xcc]
mov edi, dword [esp + 0xc8]
cmp eax, 0x15
mov dword [esp + 0x30], eax
jae 0x1001f6b7
cmp dword [esp + 0x30], 2
jb 0x1001fe2c
mov edx, dword [esp + 0x30]
mov ecx, edi
push 1
call fcn.1002ba40
add esp, 4
mov ebx, dword [esp + 0x30]
shl ebx, 5
add ebx, edi
mov esi, ebx
jmp 0x1001fe39
mov eax, dword [0x1036e078]
test eax, eax
jne 0x1001f6d2
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10020545
mov dword [0x1036e078], eax
mov ecx, dword [esp + 0x30]
shr ecx, 1
mov dword [esp + 0x114], ecx
shl ecx, 5
push ecx
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10020545
mov ebx, eax
mov eax, dword [0x1036e078]
mov dword [esp + 0x48], ebx
test eax, eax
jne 0x1001f714
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10020561
mov dword [0x1036e078], eax
push pe_nt_image_headers32
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
mov dword [esp + 0x70], eax
je 0x10020561
lea eax, [edi + 0x40]
xor edx, edx
mov dword [esp + 0x3c], edi
mov dword [esp + 0xac], 0x10
mov dword [esp + 0xa8], eax
lea eax, [edi - 0x20]
mov dword [esp + 0xb0], eax
xor eax, eax
jmp 0x1001f776
mov edx, 1
mov eax, dword [esp + 0x8c]
cmp eax, dword [esp + 0x30]
jae 0x1001fdfb
mov esi, dword [esp + 0x30]
mov ecx, eax
mov edi, eax
mov eax, dword [esp + 0x3c]
shl edi, 5
mov dword [esp + 0x50], ecx
sub esi, ecx
add eax, edi
cmp esi, 2
mov dword [esp + 0x2c], eax
jae 0x1001f880
mov eax, ecx
mov ecx, dword [esp + 0x30]
mov edi, ecx
sub edi, eax
jb 0x1002031c
cmp ecx, dword [esp + 0x30]
ja 0x1002031c
jae 0x1001f8e0
cmp esi, 0xa
jae 0x1001f8e0
mov ecx, dword [esp + 0x30]
lea edi, [eax + 0xa]
mov dword [esp + 0x34], edx
cmp edi, ecx
cmovae edi, ecx
mov dword [esp + 0x8c], edi
sub edi, eax
jb 0x1002037f
mov eax, 1
cmp esi, 2
cmovb esi, eax
mov ecx, dword [esp + 0x2c]
mov edx, edi
push esi
call fcn.1002ba40
add esp, 4
mov edx, dword [esp + 0x34]
cmp edx, dword [esp + 0xac]
jne 0x1001f8f4
lea eax, [edx + edx]
mov dword [esp + 0xac], eax
mov eax, dword [0x1036e078]
test eax, eax
jne 0x1001f836
mov ebx, edx
call sub.KERNEL32.dll_GetProcessHeap
test eax, eax
je 0x10020358
mov edx, ebx
mov dword [0x1036e078], eax
mov ecx, edx
shl ecx, 4
push ecx
push 0
push eax
mov esi, edx
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10020358
mov ebx, eax
lea eax, [esi*8]
push eax
push dword [esp + 0x74]
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
push dword [esp + 0x70]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
mov eax, ebx
mov ebx, dword [esp + 0x48]
mov edx, esi
jmp 0x1001f8f8
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x10], esi
mov eax, dword [ecx + 0x24]
mov esi, dword [ecx]
mov dword [esp + 0x64], eax
mov eax, dword [ecx + 0x20]
mov ecx, dword [ecx + 4]
mov dword [esp + 0x9c], esi
mov dword [esp + 8], ecx
cmp eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x44], eax
sbb ecx, dword [esp + 8]
jae 0x1001fc20
mov eax, dword [esp + 0x10]
cmp eax, 2
jne 0x1001fc3a
mov eax, dword [esp + 0x50]
mov esi, 2
lea ecx, [eax + 2]
jmp 0x1001fceb
mov dword [esp + 0x8c], ecx
cmp edx, dword [esp + 0xac]
je 0x1001f80d
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x50]
mov dword [eax + edx*8], edi
mov dword [esp + 0x70], eax
mov dword [eax + edx*8 + 4], ecx
inc edx
cmp edx, 2
jb 0x1001f765
mov edi, dword [esp + 0x70]
jmp 0x1001f984
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x50]
mov eax, ebx
mov ecx, dword [esp + 0x10]
sub ecx, eax
push ecx
push eax
push esi
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov ecx, dword [esp + 0x9c]
mov edi, dword [esp + 0x70]
mov eax, dword [esp + 8]
mov edx, dword [esp + 0xc]
add ecx, dword [esp + 0x64]
mov dword [edi + eax*8 + 8], ecx
mov ecx, dword [esp + 0x44]
mov dword [edi + eax*8 + 0xc], ecx
mov ecx, dword [esp + 0x2c]
not eax
add ecx, eax
lea eax, [edx + 8]
shl ecx, 3
push ecx
push eax
push edx
call sub.msvcrt.dll_memmove
add esp, 0xc
mov edx, dword [esp + 0x34]
cmp edx, 1
jbe 0x1001f760
mov eax, dword [edi + edx*8 - 8]
mov ecx, dword [edi + edx*8 - 4]
mov edi, edx
mov dword [esp + 0x2c], edx
add ecx, eax
cmp ecx, dword [esp + 0x30]
je 0x1001f9f0
mov ecx, dword [esp + 0x70]
mov edx, dword [ecx + edi*8 - 0x10]
cmp edx, eax
jbe 0x1001f9f0
cmp edi, 3
jb 0x1001fde0
lea ecx, [edi - 3]
lea esi, [edx + eax]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x70]
mov ecx, dword [ecx + edi*8 - 0x18]
cmp ecx, esi
jbe 0x1001fc09
cmp edi, 4
jb 0x1001fdea
mov edi, dword [esp + 0x70]
mov esi, dword [esp + 0x2c]
add edx, ecx
cmp dword [edi + esi*8 - 0x20], edx
mov edi, dword [esp + 0x2c]
mov edx, dword [esp + 8]
jbe 0x1001fa00
jmp 0x1001fdf4
cmp edi, 3
jb 0x1001fa04
mov ecx, dword [esp + 0x70]
lea edx, [edi - 3]
mov ecx, dword [ecx + edi*8 - 0x18]
cmp ecx, eax
jb 0x1001fa07
lea edx, [edi - 2]
cmp edi, edx
jbe 0x10020248
lea eax, [edx + 1]
cmp edi, eax
jbe 0x10020270
mov eax, dword [esp + 0x70]
mov esi, dword [eax + edx*8 + 8]
mov edi, dword [eax + edx*8 + 0xc]
mov ecx, dword [eax + edx*8 + 4]
add edi, esi
mov dword [esp + 0x9c], esi
mov esi, edi
sub esi, ecx
jb 0x100202b5
cmp edi, dword [esp + 0x30]
ja 0x100202c9
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x44], ecx
shl ecx, 5
mov dword [esp + 0x6c], esi
shl edi, 5
mov dword [esp + 8], edx
add ecx, dword [esp + 0x3c]
dec eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x50], ecx
mov eax, dword [eax + edx*8]
mov ebx, eax
sub esi, eax
mov dword [esp + 0x64], eax
shl ebx, 5
cmp esi, eax
mov eax, dword [esp + 0x70]
mov dword [esp + 4], esi
lea esi, [ecx + ebx]
lea eax, [eax + edx*8]
mov dword [esp + 0xc], eax
jae 0x1001fb50
mov ebx, dword [esp + 4]
shl ebx, 5
push ebx
push esi
push dword [esp + 0x50]
call sub.msvcrt.dll_memcpy
add esp, 0xc
add ebx, dword [esp + 0x48]
cmp dword [esp + 0x64], 0
mov dword [esp + 0x10], ebx
jle 0x1001fc00
cmp dword [esp + 4], 0
jle 0x1001fc00
add edi, dword [esp + 0xb0]
mov ebx, dword [esp + 0x48]
mov edx, dword [esp + 0x10]
nop dword [eax + eax]
mov eax, dword [edx - 0x20]
mov ecx, dword [edx - 0x1c]
cmp eax, dword [esi - 0x20]
sbb ecx, dword [esi - 0x1c]
jb 0x1001fb00
add edx, 0xffffffe0
mov eax, edx
mov dword [esp + 0x10], edx
jmp 0x1001fb09
add esi, 0xffffffe0
mov dword [esp + 0x10], edx
mov eax, esi
movsd xmm1, qword [eax + 8]
movq xmm0, qword [eax]
cmp esi, dword [esp + 0x50]
movsd qword [edi + 8], xmm1
movsd xmm1, qword [eax + 0x10]
movsd qword [edi + 0x10], xmm1
movq xmm1, qword [eax + 0x18]
movq qword [edi], xmm0
movq qword [edi + 0x18], xmm1
jbe 0x1001f928
mov edx, dword [esp + 0x10]
add edi, 0xffffffe0
cmp edx, ebx
ja 0x1001fae0
jmp 0x1001f928
mov eax, ebx
push eax
push ecx
push dword [esp + 0x50]
call sub.msvcrt.dll_memcpy
add esp, 0xc
add ebx, dword [esp + 0x48]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x64]
test ebx, ebx
jle 0x1001f920
cmp dword [esp + 0x6c], ebx
mov eax, ebx
jle 0x1001f920
add edi, dword [esp + 0x3c]
mov eax, dword [esp + 0x48]
nop dword [eax + eax]
mov ebx, eax
mov eax, dword [esi]
mov ecx, dword [esi + 4]
mov edx, ebx
cmp eax, dword [ebx]
sbb ecx, dword [ebx + 4]
setae al
cmovb edx, esi
setb cl
movzx eax, al
movsd xmm1, qword [edx + 8]
movq xmm0, qword [edx]
shl eax, 5
add eax, ebx
mov ebx, dword [esp + 0x50]
cmp eax, dword [esp + 0x10]
movsd qword [ebx + 8], xmm1
movsd xmm1, qword [edx + 0x10]
movsd qword [ebx + 0x10], xmm1
movq xmm1, qword [edx + 0x18]
lea edx, [ebx + 0x20]
movq qword [ebx], xmm0
mov dword [esp + 0x50], edx
movq qword [ebx + 0x18], xmm1
jae 0x1001fbf2
movzx ecx, cl
shl ecx, 5
add esi, ecx
cmp esi, edi
jb 0x1001fb90
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x50]
jmp 0x1001f92a
mov ebx, dword [esp + 0x48]
jmp 0x1001f928
mov edx, dword [esp + 8]
cmp ecx, eax
jae 0x1001fa04
jmp 0x1001fa07
mov eax, dword [esp + 0x10]
cmp eax, 2
jne 0x1001fc7d
mov eax, dword [esp + 0x50]
mov esi, 2
lea ecx, [eax + 2]
jmp 0x1001f7a0
mov dword [esp + 0x34], edx
add edi, dword [esp + 0xa8]
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x64]
mov eax, 2
nop word cs:[eax + eax]
nop dword [eax]
mov ecx, edx
mov ebx, esi
mov esi, dword [edi]
mov edx, dword [edi + 4]
cmp esi, ebx
mov ebx, edx
sbb ebx, ecx
jae 0x1001fcbf
inc eax
add edi, 0x20
cmp dword [esp + 0x10], eax
jne 0x1001fc60
jmp 0x1001fcbb
mov dword [esp + 0x34], edx
add edi, dword [esp + 0xa8]
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x64]
mov eax, 2
nop word cs:[eax + eax]
nop
mov ecx, edx
mov ebx, esi
mov esi, dword [edi]
mov edx, dword [edi + 4]
cmp esi, ebx
mov ebx, edx
sbb ebx, ecx
jb 0x1001fcbf
inc eax
add edi, 0x20
cmp dword [esp + 0x10], eax
jne 0x1001fca0
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x9c]
mov edx, dword [esp + 0x50]
mov ebx, dword [esp + 0x48]
cmp dword [esp + 0x44], esi
mov esi, dword [esp + 8]
lea ecx, [eax + edx]
sbb dword [esp + 0x64], esi
mov esi, eax
mov eax, edx
mov edx, dword [esp + 0x34]
jae 0x1001f7a0
cmp ecx, eax
jb 0x100203d5
cmp ecx, dword [esp + 0x30]
ja 0x100203bf
cmp esi, 2
jb 0x1001f7a0
mov dword [esp + 0x34], edx
mov edx, eax
mov eax, esi
mov edi, esi
add edx, esi
mov esi, dword [esp + 0x2c]
shr eax, 1
shl edx, 5
add edx, dword [esp + 0xb0]
nop word cs:[eax + eax]
nop dword [eax]
movsd xmm0, qword [esi + 0x18]
movsd qword [esp + 0x208], xmm0
movsd xmm0, qword [esi + 0x10]
movsd qword [esp + 0x200], xmm0
movsd xmm0, qword [esi]
movsd xmm1, qword [esi + 8]
movsd qword [esp + 0x1f8], xmm1
movsd qword [esp + 0x1f0], xmm0
movsd xmm0, qword [edx + 0x18]
movsd qword [esi + 0x18], xmm0
movsd xmm0, qword [edx + 0x10]
movsd qword [esi + 0x10], xmm0
movsd xmm0, qword [edx]
movsd xmm1, qword [edx + 8]
movsd qword [esi + 8], xmm1
movsd qword [esi], xmm0
add esi, 0x20
movsd xmm0, qword [esp + 0x208]
movsd qword [edx + 0x18], xmm0
movsd xmm0, qword [esp + 0x200]
movsd qword [edx + 0x10], xmm0
movq xmm0, qword [esp + 0x1f0]
movq xmm1, qword [esp + 0x1f8]
movq qword [edx + 8], xmm1
movq qword [edx], xmm0
add edx, 0xffffffe0
dec eax
jne 0x1001fd30
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x50]
mov esi, edi
jmp 0x1001f7a0
mov edx, 2
jmp 0x1001f765
mov edx, 3
jmp 0x1001f765
mov edx, edi
jmp 0x1001f765
push dword [esp + 0x70]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
push ebx
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
mov edi, dword [esp + 0xc8]
mov eax, dword [esp + 0xcc]
mov dword [esp + 0x30], eax
mov esi, dword [esp + 0x30]
test esi, esi
je 0x1001fe7b
shl esi, 5
add esi, edi
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x30], esi
nop word cs:[eax + eax]
nop dword [eax + eax]
mov edx, dword [edi + 8]
mov ebx, dword [edi + 0xc]
mov esi, edi
cmp ecx, edx
mov edi, edx
cmova edi, ecx
cmp eax, ebx
cmova edx, ecx
cmovbe eax, ebx
cmove edx, edi
lea edi, [esi + 0x20]
mov dword [esi + 0x14], eax
cmp edi, dword [esp + 0x30]
mov ecx, edx
mov dword [esi + 0x10], edx
jne 0x1001fe50
mov ecx, dword [esp + 0xf8]
movsd xmm0, qword [esp + 0x194]
mov eax, dword [esp + 0x19c]
cmp dword [esp + 0x188], 0
mov esi, dword [esp + 0xcc]
mov edx, dword [esp + 0xfc]
movsd qword [ecx + 0x10], xmm0
movq xmm0, qword [esp + 0xc4]
mov dword [ecx + 0x18], eax
mov dword [ecx + 0xc], esi
movq qword [ecx + 4], xmm0
mov dword [ecx], 0
mov dword [ecx + 0x1c], edx
je 0x10020095
push dword [esp + 0x18c]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
jmp 0x10020095
mov eax, dword [esp + 0x48]
xor ecx, ecx
mov edi, 0x13
mov esi, eax
shr esi, 8
jmp 0x1001ff9e
xor ecx, ecx
mov edi, 0x13
xor ebx, ebx
mov esi, edx
mov dword [esp + 0x10], edx
jmp 0x1001ffcd
xor ecx, ecx
mov edi, 0x13
xor ebx, ebx
mov esi, edx
jmp 0x1001ffcd
xor ecx, ecx
mov edi, 0x10
jmp 0x1001ff9c
mov dword [esp + 0x55f], edx
xor ebx, ebx
mov edi, 0x13
movzx eax, byte [esp + 0x562]
mov ecx, dword [esp + 0x558]
mov edx, dword [esp + 0x55c]
mov byte [esp + 0x1fa], al
movzx eax, word [esp + 0x560]
mov word [esp + 0x1f8], ax
mov dword [esp + 0x1f4], edx
mov dword [esp + 0x1f0], ecx
mov dword [esp + 0x1fb], 0
shld edx, ecx, 8
mov eax, dword [esp + 0x1f7]
mov dword [esp + 0x10], edx
mov esi, eax
shr esi, 8
jmp 0x1001ffa0
xor ecx, ecx
mov edi, 0x35
xor esi, esi
xor ebx, ebx
shld ebx, esi, 8
movzx eax, al
shl esi, 8
or esi, eax
jmp 0x1001ffcd
xor ecx, ecx
mov edi, 0x11
mov esi, eax
jmp 0x1001ffcb
mov esi, dword [esp + 0x10]
jmp 0x1001ffc4
add edi, 3
mov esi, edi
xor ecx, ecx
mov edi, 0x13
xor ebx, ebx
mov eax, dword [esp + 0xf8]
mov edx, dword [esp + 0x10]
shl ecx, 8
or ecx, edi
mov dword [eax + 0x10], ecx
mov dword [eax + 0x14], edx
mov dword [eax + 0x18], esi
mov dword [eax + 0x1c], ebx
mov dword [eax + 8], 0
mov esi, dword [esp + 0x198]
imul ebx, dword [esp + 0x19c], 0x150
mov ecx, esi
nop word cs:[eax + eax]
nop
test ebx, ebx
je 0x10020029
lea edi, [ecx + 0x150]
add ebx, 0xfffffeb0
call fcn.1002b1d0
mov ecx, edi
jmp 0x10020010
cmp dword [esp + 0x194], 0
je 0x10020041
push esi
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0xc4], 0
je 0x1002005f
push dword [esp + 0xc8]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x188], 0
je 0x1002007d
push dword [esp + 0x18c]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 0xfc]
lock dec dword [eax]
jne 0x10020095
lea ecx, [esp + 0xfc]
call fcn.1002b2a0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, 0x35
xor ecx, ecx
xor ebx, ebx
jmp 0x1001ffcd
mov esi, eax
jmp 0x1002011d
mov dword [esp + 0x1f7], eax
mov edi, 0x13
xor ebx, ebx
jmp 0x1002013d
mov esi, dword [esp + 0x10]
mov edi, 0x13
xor ecx, ecx
xor ebx, ebx
jmp 0x1001ffcd
mov eax, dword [esp + 0x10]
mov edi, 0x13
xor ebx, ebx
mov dword [esp + 0x1f7], eax
movzx eax, word [esp + 0x1f8]
mov ecx, dword [esp + 0x1f0]
mov edx, dword [esp + 0x1f4]
mov word [esp + 0x560], ax
mov ah, byte [esp + 0x1fa]
mov byte [esp + 0x562], ah
mov dword [esp + 0x55c], edx
mov dword [esp + 0x558], ecx
shld edx, ecx, 8
mov esi, dword [esp + 0x55f]
mov dword [esp + 0x10], edx
jmp 0x1001ffcd
mov edi, 0x3f
xor ecx, ecx
jmp 0x1001ffcd
mov dword [esp + str.Index_out_of_bounds], 0x103666d4
mov dword [esp + 0x1fc], 1
mov dword [esp + 0x1f0], 0
mov edx, 0x10366848
jmp 0x100201f3
mov edx, 0x10366858
mov dword [esp + str.Index_out_of_bounds], 0x103666d4
mov dword [esp + 0x1fc], 1
mov dword [esp + 0x1f0], 0
mov ecx, dword [esp + 0xac]
mov dword [ecx + 0x10], str.Index_out_of_bounds
mov dword [ecx + 0x14], 0
call fcn.100032d0
jmp 0x1002085a
mov ecx, dword [esp + 0x48]
push 0x10366868
mov esi, dword [esp + 0xc]
call fcn.10004170
add esp, 4
jmp 0x1002085a
mov ecx, edx
mov edx, dword [esp + 0x30]
push 0x10366868
mov esi, dword [esp + 0xc]
call fcn.10003a80
add esp, 4
jmp 0x1002085a
mov dword [esp + str.Index_out_of_bounds], 0x103666d4
mov dword [esp + 0x1fc], 1
mov dword [esp + 0x1f0], 0
mov edx, 0x10366848
jmp 0x10020296
mov edx, 0x10366858
mov dword [esp + str.Index_out_of_bounds], 0x103666d4
mov dword [esp + 0x1fc], 1
mov dword [esp + 0x1f0], 0
lea ecx, [esp + 0x1f0]
mov dword [ecx + 0x10], str.Index_out_of_bounds
mov dword [ecx + 0x14], 0
call fcn.100032d0
jmp 0x1002085a
mov edx, edi
push 0x10366868
call fcn.10004170
add esp, 4
jmp 0x1002085a
mov edx, dword [esp + 0x30]
mov ecx, edi
push 0x10366868
mov ebx, dword [esp + 0x4c]
call fcn.10003a80
add esp, 4
jmp 0x1002085a
mov edx, 5
push 0x10365e24
call fcn.10003300
add esp, 4
jmp 0x1002085a
mov edx, 0x2c
mov ecx, str.assertion_failed:_end___start__end___len
push 0x10366910
mov esi, dword [esp + 0xc]
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov edx, 0x2c
mov ecx, str.assertion_failed:_end___start__end___len
push 0x10366910
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value
push 0x103668c4
mov esi, dword [esp + 0xc]
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value
push 0x103668c4
mov ebx, dword [esp + 0x4c]
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov eax, 0x10366920
jmp 0x100203a5
mov eax, 0x10366920
jmp 0x100203e1
mov ecx, dword [esp + 0x3c]
push 0x10366838
mov esi, dword [esp + 0xc]
call fcn.10003a80
add esp, 4
jmp 0x1002085a
mov eax, 0x10366838
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x10]
push eax
mov esi, dword [esp + 0xc]
call fcn.10004170
add esp, 4
jmp 0x1002085a
mov edx, dword [esp + 0x30]
push 0x10366838
call fcn.10003a80
add esp, 4
jmp 0x1002085a
mov eax, 0x10366838
mov dword [esp + 0x8c], ecx
mov edx, dword [esp + 0x8c]
mov ecx, dword [esp + 0x50]
push eax
mov ebx, dword [esp + 0x4c]
call fcn.10004170
add esp, 4
jmp 0x1002085a
not edi
mov dword [esp + 0x340], esi
mov byte [esp + 8], 6
mov dword [esp + 0x344], edi
jmp 0x1002043a
mov eax, dword [esp + 0x2c]
add eax, dword [esp + 8]
mov dword [esp + 0x340], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x344], 0
xor eax, eax
mov byte [esp + 8], 0x13
mov ecx, dword [esp + 0xf8]
movzx edx, byte [esp + 8]
movzx ebx, byte [esp + 0x10]
mov esi, dword [esp + 0x2c]
mov byte [ecx + 0x10], dl
mov byte [ecx + 0x11], bl
mov dword [ecx + 0x14], 0
mov dword [ecx + 0x18], esi
mov dword [ecx + 0x1c], eax
mov dword [ecx + 8], 0
lea ecx, [esp + 0x5b0]
call fcn.1002b2e0
mov eax, dword [esp + 0x5f0]
xor eax, 0x2f
or eax, dword [esp + 0x5f4]
je 0x1001fff0
cmp dword [esp + 0x624], 0
je 0x100204aa
push dword [esp + 0x628]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x630], 0
je 0x100204c8
push dword [esp + 0x634]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x63c], 0
je 0x100204e6
push dword [esp + 0x640]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x648], 0
je 0x1001fff0
push dword [esp + 0x64c]
push 0
push dword [0x1036e078]
call sub.KERNEL32.dll_HeapFree
jmp 0x1001fff0
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value
push 0x103668a4
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value
push 0x103668b4
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value
push 0x103668a4
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value
push 0x103668b4
call fcn.10003da0
add esp, 4
jmp 0x1002085a
jmp 0x10020433
mov ecx, 0x50
mov edx, 8
call fcn.10002c00
jmp 0x1002085a
mov al, 0x13
jmp 0x10020659
mov ecx, 0x4d8
mov edx, 8
call fcn.10002c00
jmp 0x1002085a
movq xmm0, qword [esp + 0x450]
mov eax, dword [esp + 0xf8]
movq xmm1, qword [esp + 0x458]
movq qword [eax + 0x18], xmm1
movq qword [eax + 0x10], xmm0
mov dword [eax + 8], 0
jmp 0x10020469
mov al, 0x35
jmp 0x10020659
mov al, 0x13
jmp 0x1002063b
mov dword [esp + 0x3ef], ecx
movzx ecx, word [esp + 0x3f0]
mov eax, dword [esp + 0x3e8]
mov edx, dword [esp + 0x3ec]
mov word [esp + 0x4b8], cx
movzx ecx, byte [esp + 0x3f2]
mov byte [esp + 0x4ba], cl
mov dword [esp + 0x4b4], edx
mov dword [esp + 0x4b0], eax
shld edx, eax, 8
mov al, 0x13
mov ecx, dword [esp + 0x4b7]
jmp 0x1002063b
mov al, 0x35
mov ah, byte [esp + 0x4b2]
movzx esi, word [esp + 0x4b0]
mov byte [esp + 0x452], ah
mov word [esp + 0x450], si
mov edi, dword [esp + 0xf8]
mov ah, byte [esp + 0x452]
movzx esi, word [esp + 0x450]
mov byte [edi + 0x13], ah
mov word [edi + 0x11], si
mov byte [edi + 0x10], al
mov dword [edi + 0x14], edx
mov dword [edi + 0x18], ecx
mov dword [edi + 0x1c], 0
mov dword [edi + 8], 0
jmp 0x10020469
mov ecx, 0x4d8
mov edx, 8
call fcn.10002c00
jmp 0x1002085a
mov edx, 0xb
push 0x10365cf0
call fcn.10003a80
add esp, 4
jmp 0x1002085a
mov edx, 0x28
mov ecx, str.assertion_failed:_src.len____dst.len___f6
push 0x10365ce0
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov ecx, 0x508
mov edx, 8
call fcn.10002c00
jmp 0x1002085a
mov ecx, edx
mov edx, 0xb
push 0x10365cf0
call fcn.10003a80
add esp, 4
jmp 0x1002085a
mov edx, 0x28
mov ecx, str.assertion_failed:_src.len____dst.len___f6
push 0x10365ce0
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov edx, 0xc
push 0x10365d00
call fcn.10003a80
add esp, 4
jmp 0x1002085a
mov edx, 0x28
mov ecx, str.assertion_failed:_src.len____dst.len___f6
push 0x10365ce0
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov ecx, 0x508
mov edx, 8
call fcn.10002c00
jmp 0x1002085a
mov eax, 0x10365c98
mov edx, 0x30
mov ecx, 0x10365c67
jmp 0x10020789
mov eax, 0x10365ca8
mov edx, 0x20
mov ecx, str.assertion_failed:_idx___CAPACITY_rustc_84c898d65adf2f39a5a98507f1fe0ce10a2b8dbclibrary_alloc_srccollections_btree_node.rsassertion_failed:_edge.height__self.height___1
push eax
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value
push 0x10366bac
call fcn.10003da0
add esp, 4
jmp 0x1002085a
mov edx, 0x2b
mov ecx, str.called__Option::unwrap____on_a__None__value
push 0x10366b9c
call fcn.10003da0
add esp, 4
jmp 0x1002085a
shl eax, 0x10
xor ebx, ebx
mov dl, 0x13
mov dword [esp + 0x50], 0
jmp 0x1002080e
movdqa xmm1, xmmword [esp + 0x10]
mov eax, edx
mov bl, dh
pshufd xmm0, xmm1, 0x55
pshufd xmm2, xmm1, 0xff
pshufd xmm1, xmm1, 0xee
movd ecx, xmm0
movd esi, xmm1
movd dword [esp + 0x50], xmm2
shrd eax, ecx, 0x10
shr ecx, 0x10
mov edi, dword [esp + 0xf8]
mov byte [edi + 0x10], dl
mov byte [edi + 0x11], bl
mov word [edi + 0x16], cx
mov ecx, dword [esp + 0x50]
mov dword [edi + 0x12], eax
mov dword [edi + 0x18], esi
mov dword [edi + 0x1c], ecx
jmp 0x10020686
mov edx, dword [esp + 0x10]
push 0x10366d68
call fcn.10003300
add esp, 4
jmp 0x1002085a
add eax, 2
mov edx, dword [esp + 0x10]
mov ecx, eax
push 0x10366d78
call fcn.10003a10
add esp, 4
ud2
mov byte [esp + 0x1f8], 0x13
mov dword [esp + 0x200], ecx
mov dword [esp + 0x204], 0
lea esi, [esp + 0x1f4]
mov eax, dword [esp + 0x1f8]
mov edx, dword [esp + 0xf8]
mov ecx, dword [esi + 0x10]
movq xmm0, qword [esi + 8]
mov dword [edx + 0x1c], ecx
movq qword [edx + 0x14], xmm0
mov dword [edx + 0x10], eax
mov dword [edx + 8], 0
jmp 0x10020469
movzx eax, byte [esp + 0x34]
mov byte [esp + 0x1f0], al
jmp 0x100208c3
mov eax, dword [esp + 0xc]
mov byte [esp + 0x1f0], al
movzx eax, byte [esp + 0x1f6]
movzx ecx, word [esp + 0x1f4]
mov esi, dword [esp + 0x1f0]
mov byte [esp + 0x10], 0x17
shl eax, 0x10
or ecx, eax
jmp 0x10020988
mov edi, dword [esp + 0x1f7]
mov ebx, dword [esp + 0x1fb]
jmp 0x100209ef
movzx eax, byte [esp + 0x10]
mov edx, dword [esp + 0xf8]
shld ecx, esi, 8
shl esi, 8
or eax, esi
mov dword [edx + 0x14], ecx
mov dword [edx + 0x10], eax
mov dword [edx + 0x18], edi
mov dword [edx + 0x1c], ebx
mov dword [edx + 8], 0
jmp 0x10020469