Function at 0x40dc80
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x432f11
mov eax, dword fs:[0]
push eax
sub esp, 0x50
push ebx
push esi
push edi
mov eax, dword [0x443080]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x44], ecx
mov eax, dword [ebp + 8]
xor ebx, ebx
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x18], ebx
test eax, eax
je 0x40e208
push 0x6400000
push eax
call fcn.00418629
add esp, 8
test eax, eax
je 0x40e208
mov eax, dword [0x444ce4]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [0x444ae4]
cmp eax, dword [ecx + 4]
jg 0x40e9ce
mov eax, dword [0x444ae0]
add eax, 0xfffffff0
push eax
call fcn.0040bba0
add esp, 4
mov dword [ebp - 0x18], 0x20
lea edi, [eax + 0x10]
mov dword [ebp - 0x24], edi
mov dword [ebp - 4], 1
mov ecx, dword [eax]
mov dword [ebp - 0x14], 0
test ecx, ecx
je 0x40dd3d
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40dd4b
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 3
test ecx, ecx
je 0x40ea34
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ebx, dword [ebp - 0x30]
add eax, 0x10
mov ecx, ebx
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 2
mov dword [ebp - 0x18], 0x60
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40dd75
sub ecx, edx
lea eax, [ebp - 0x14]
sar ecx, 1
push ecx
push ebx
push dword [edi - 0xc]
push edi
push eax
call fcn.0040bcd0
add esp, 0x14
mov esi, dword [ebp - 0x14]
mov ecx, dword [esi - 0x10]
lea eax, [esi - 0x10]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x38], eax
test ecx, ecx
je 0x40ddb8
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40ddc6
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 5
test ecx, ecx
je 0x40ea3e
mov eax, dword [ecx]
call dword [eax + 0xc]
push 1
push 0x434304
push dword [esi - 0xc]
add eax, 0x10
mov byte [ebp - 4], 4
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x20]
push esi
push eax
mov dword [ebp - 0x18], 0xe0
call fcn.0040bcd0
add esp, 0x14
mov esi, dword [ebp - 0x20]
mov ecx, dword [esi - 0x10]
lea eax, [esi - 0x10]
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x34], eax
test ecx, ecx
je 0x40de21
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40de2f
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 7
test ecx, ecx
je 0x40ea48
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ebx, dword [ebp - 0x2c]
add eax, 0x10
mov dword [ebp - 0x10], eax
mov byte [ebp - 4], 6
mov dword [ebp - 0x18], 0x1e0
test ebx, ebx
jne 0x40de5c
xor ecx, ecx
jmp 0x40de70
mov ecx, ebx
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40de61
sub ecx, edx
sar ecx, 1
push ecx
push ebx
push dword [esi - 0xc]
lea eax, [ebp - 0x10]
push esi
push eax
call fcn.0040bcd0
mov ebx, dword [ebp - 0x28]
add esp, 0x14
mov eax, dword [ebp - 0x10]
mov esi, dword [ebx]
lea edx, [eax - 0x10]
sub esi, 0x10
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x40], esi
cmp edx, esi
je 0x40dee7
cmp dword [esi + 0xc], 0
jl 0x40ded9
mov ecx, dword [edx]
cmp ecx, dword [esi]
jne 0x40ded9
push edx
call fcn.0040bba0
add esp, 4
mov dword [ebp - 0x10], eax
or ecx, 0xffffffff
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40ded2
mov esi, dword [esi]
push dword [ebp - 0x40]
mov ecx, dword [esi]
mov edx, dword [ecx + 4]
mov ecx, esi
call edx
mov eax, dword [ebp - 0x10]
add eax, 0x10
mov dword [ebx], eax
jmp 0x40dee4
push dword [eax - 0xc]
mov ecx, ebx
push eax
call fcn.004120f0
mov edx, dword [ebp - 0x1c]
or ebx, 0xffffffff
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40defe
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x34]
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40df15
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x38]
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40df2c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x40df4a
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0x28]
mov eax, dword [edi]
cmp dword [eax - 4], 1
jle 0x40df5f
push dword [eax - 0xc]
mov ecx, edi
call fcn.0040cc40
push dword [edi]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
call esi
test eax, eax
jne 0x40e9a4
mov edx, dword [0x444ce4]
mov esi, dword fs:[0x2c]
mov eax, dword [0x444b10]
mov ecx, dword [esi + edx*4]
cmp eax, dword [ecx + 4]
jg 0x40ea52
mov eax, dword [0x444b0c]
add eax, 0xfffffff0
push eax
call fcn.0040bba0
add esp, 4
mov dword [ebp - 0x18], 0x1020
lea edi, [eax + 0x10]
mov dword [ebp - 0x24], edi
mov dword [ebp - 4], 9
mov ecx, dword [eax]
mov dword [ebp - 0x10], 0
test ecx, ecx
je 0x40dfcf
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40dfdd
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 0xb
test ecx, ecx
je 0x40eab8
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ebx, dword [ebp - 0x30]
add eax, 0x10
mov ecx, ebx
mov dword [ebp - 0x10], eax
mov byte [ebp - 4], 0xa
mov dword [ebp - 0x18], 0x1820
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e007
sub ecx, edx
lea eax, [ebp - 0x10]
sar ecx, 1
push ecx
push ebx
push dword [edi - 0xc]
push edi
push eax
call fcn.0040bcd0
add esp, 0x14
mov esi, dword [ebp - 0x10]
mov ecx, dword [esi - 0x10]
lea eax, [esi - 0x10]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x3c], eax
test ecx, ecx
je 0x40e04a
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40e058
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 0xd
test ecx, ecx
je 0x40eac2
mov eax, dword [ecx]
call dword [eax + 0xc]
push 1
push 0x434304
push dword [esi - 0xc]
add eax, 0x10
mov byte [ebp - 4], 0xc
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x20]
push esi
push eax
mov dword [ebp - 0x18], 0x1c20
call fcn.0040bcd0
add esp, 0x14
mov esi, dword [ebp - 0x20]
mov ecx, dword [esi - 0x10]
lea eax, [esi - 0x10]
mov dword [ebp - 0x14], 0
mov dword [ebp - 0x40], eax
test ecx, ecx
je 0x40e0b3
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40e0c1
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 0xf
test ecx, ecx
je 0x40eacc
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ebx, dword [ebp - 0x2c]
add eax, 0x10
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 0xe
mov dword [ebp - 0x18], 0x1e20
test ebx, ebx
jne 0x40e0ee
xor ecx, ecx
jmp 0x40e102
mov ecx, ebx
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e0f3
sub ecx, edx
sar ecx, 1
push ecx
push ebx
push dword [esi - 0xc]
lea eax, [ebp - 0x14]
push esi
push eax
call fcn.0040bcd0
mov ebx, dword [ebp - 0x28]
add esp, 0x14
mov eax, dword [ebp - 0x14]
mov esi, dword [ebx]
lea edx, [eax - 0x10]
sub esi, 0x10
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x38], esi
cmp edx, esi
je 0x40e179
cmp dword [esi + 0xc], 0
jl 0x40e16b
mov ecx, dword [edx]
cmp ecx, dword [esi]
jne 0x40e16b
push edx
call fcn.0040bba0
add esp, 4
mov dword [ebp - 0x34], eax
or ecx, 0xffffffff
lea edx, [esi + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40e164
mov esi, dword [esi]
push dword [ebp - 0x38]
mov ecx, dword [esi]
mov edx, dword [ecx + 4]
mov ecx, esi
call edx
mov eax, dword [ebp - 0x34]
add eax, 0x10
mov dword [ebx], eax
jmp 0x40e176
push dword [eax - 0xc]
mov ecx, ebx
push eax
call fcn.004120f0
mov edx, dword [ebp - 0x1c]
or esi, 0xffffffff
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40e190
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x40]
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40e1a7
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x3c]
mov ebx, 0x1020
mov eax, esi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40e1c3
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add edi, 0xfffffff0
mov eax, esi
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x40e1e1
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edi, dword [ebp - 0x28]
mov eax, dword [edi]
cmp dword [eax - 4], 1
jle 0x40e1f6
push dword [eax - 0xc]
mov ecx, edi
call fcn.0040cc40
push dword [edi]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
call esi
test eax, eax
jne 0x40e9a4
mov eax, dword [0x444ce4]
mov ecx, dword fs:[0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [0x444ae4]
cmp eax, dword [ecx + 4]
jg 0x40ead6
mov eax, dword [0x444ae0]
add eax, 0xfffffff0
push eax
call fcn.0040bba0
or ebx, 1
add esp, 4
mov dword [ebp - 0x18], ebx
lea esi, [eax + 0x10]
mov dword [ebp - 0x24], esi
mov dword [ebp - 4], 0x11
mov ecx, dword [eax]
mov dword [ebp - 0x10], 0
test ecx, ecx
je 0x40e264
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40e272
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 0x13
test ecx, ecx
je 0x40eb3c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov byte [ebp - 4], 0x12
mov dword [ebp - 0x10], eax
or ebx, 2
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x18], ebx
test eax, eax
jne 0x40e29e
xor ecx, ecx
jmp 0x40e2b5
mov ecx, eax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e2a3
mov eax, dword [ebp - 0x2c]
sub ecx, edx
sar ecx, 1
push ecx
push eax
push dword [esi - 0xc]
lea eax, [ebp - 0x10]
push esi
push eax
call fcn.0040bcd0
mov eax, dword [ebp - 0x10]
add esp, 0x14
mov edx, dword [edi]
sub edx, 0x10
mov dword [ebp - 0x38], edx
lea ecx, [eax - 0x10]
mov dword [ebp - 0x14], ecx
cmp ecx, edx
je 0x40e338
cmp dword [edx + 0xc], 0
lea edi, [edx + 0xc]
mov dword [ebp - 0x3c], edi
mov edi, dword [ebp - 0x28]
jl 0x40e32a
mov ecx, dword [ecx]
cmp ecx, dword [edx]
jne 0x40e32a
push dword [ebp - 0x14]
call fcn.0040bba0
mov dword [ebp - 0x34], eax
add esp, 4
mov eax, dword [ebp - 0x3c]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40e320
mov eax, dword [ebp - 0x38]
push eax
mov edi, dword [eax]
mov ecx, dword [edi]
mov edx, dword [ecx + 4]
mov ecx, edi
call edx
mov edi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x34]
add eax, 0x10
mov dword [edi], eax
jmp 0x40e335
push dword [eax - 0xc]
mov ecx, edi
push eax
call fcn.004120f0
mov ecx, dword [ebp - 0x14]
and ebx, 0xfffffffd
or eax, 0xffffffff
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x40e352
mov ecx, dword [ecx]
push dword [ebp - 0x14]
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40e371
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
cmp dword [eax - 4], 1
jle 0x40e383
push dword [eax - 0xc]
mov ecx, edi
call fcn.0040cc40
push dword [edi]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
call esi
test eax, eax
jne 0x40e9a4
mov edx, dword [0x444ce4]
mov esi, dword fs:[0x2c]
mov eax, dword [0x444b10]
mov ecx, dword [esi + edx*4]
cmp eax, dword [ecx + 4]
jg 0x40eb46
mov eax, dword [0x444b0c]
add eax, 0xfffffff0
push eax
call fcn.0040bba0
or ebx, 8
add esp, 4
mov dword [ebp - 0x18], ebx
lea esi, [eax + 0x10]
mov dword [ebp - 0x24], esi
mov dword [ebp - 4], 0x15
mov ecx, dword [eax]
mov dword [ebp - 0x10], 0
test ecx, ecx
je 0x40e3f2
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40e400
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 0x17
test ecx, ecx
je 0x40ebac
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov byte [ebp - 4], 0x16
mov dword [ebp - 0x10], eax
or ebx, 4
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x18], ebx
test eax, eax
jne 0x40e42c
xor ecx, ecx
jmp 0x40e443
mov ecx, eax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e431
mov eax, dword [ebp - 0x2c]
sub ecx, edx
sar ecx, 1
push ecx
push eax
push dword [esi - 0xc]
lea eax, [ebp - 0x10]
push esi
push eax
call fcn.0040bcd0
mov eax, dword [ebp - 0x10]
add esp, 0x14
mov edx, dword [edi]
sub edx, 0x10
mov dword [ebp - 0x38], edx
lea ecx, [eax - 0x10]
mov dword [ebp - 0x14], ecx
cmp ecx, edx
je 0x40e4c6
cmp dword [edx + 0xc], 0
lea edi, [edx + 0xc]
mov dword [ebp - 0x3c], edi
mov edi, dword [ebp - 0x28]
jl 0x40e4b8
mov ecx, dword [ecx]
cmp ecx, dword [edx]
jne 0x40e4b8
push dword [ebp - 0x14]
call fcn.0040bba0
mov dword [ebp - 0x34], eax
add esp, 4
mov eax, dword [ebp - 0x3c]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40e4ae
mov eax, dword [ebp - 0x38]
push eax
mov edi, dword [eax]
mov ecx, dword [edi]
mov edx, dword [ecx + 4]
mov ecx, edi
call edx
mov edi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x34]
add eax, 0x10
mov dword [edi], eax
jmp 0x40e4c3
push dword [eax - 0xc]
mov ecx, edi
push eax
call fcn.004120f0
mov ecx, dword [ebp - 0x14]
and ebx, 0xfffffffb
or eax, 0xffffffff
mov dword [ebp - 0x18], ebx
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x40e4e3
mov ecx, dword [ecx]
push dword [ebp - 0x14]
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40e502
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
cmp dword [eax - 4], 1
jle 0x40e514
push dword [eax - 0xc]
mov ecx, edi
call fcn.0040cc40
push dword [edi]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
call esi
test eax, eax
jne 0x40e9a4
mov ecx, dword [ebp - 0x44]
lea eax, [ebp - 0x5c]
push eax
call fcn.0040c6c0
mov esi, eax
cmp dword [esi + 0x14], 7
mov dword [ebp - 4], 0x18
jbe 0x40e543
mov esi, dword [esi]
call fcn.0040f760
mov ecx, eax
test ecx, ecx
je 0x40ebb6
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x14], eax
push esi
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 0x19
call fcn.0040b4a0
test al, al
jne 0x40e599
test esi, esi
jne 0x40e576
xor ecx, ecx
jmp 0x40e58f
mov ecx, esi
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e580
sub ecx, edx
sar ecx, 1
push ecx
push esi
lea ecx, [ebp - 0x14]
call fcn.004120f0
mov ecx, dword [ebp - 0x48]
mov byte [ebp - 4], 0x1b
cmp ecx, 7
jbe 0x40e5d7
mov edx, dword [ebp - 0x5c]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x40e5cd
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40ebc0
push ecx
push edx
call fcn.00414794
add esp, 8
mov esi, dword [ebp - 0x14]
xor eax, eax
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x48], 7
mov word [ebp - 0x5c], ax
cmp dword [esi - 0xc], eax
jle 0x40e97f
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x40e893
push 0x6400000
push eax
call fcn.00418629
add esp, 8
test eax, eax
je 0x40e893
mov ecx, dword [esi - 0x10]
lea eax, [esi - 0x10]
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x24], eax
test ecx, ecx
je 0x40e637
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40e645
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 0x1d
test ecx, ecx
je 0x40ebc5
mov eax, dword [ecx]
call dword [eax + 0xc]
mov edi, dword [ebp - 0x30]
add eax, 0x10
mov ecx, edi
mov dword [ebp - 0x10], eax
or ebx, 0x2000
mov byte [ebp - 4], 0x1c
mov dword [ebp - 0x18], ebx
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e671
sub ecx, edx
lea eax, [ebp - 0x10]
sar ecx, 1
push ecx
push edi
push dword [esi - 0xc]
push esi
push eax
call fcn.0040bcd0
add esp, 0x14
mov edi, dword [ebp - 0x10]
mov ecx, dword [edi - 0x10]
lea eax, [edi - 0x10]
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x40], eax
test ecx, ecx
je 0x40e6b4
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40e6c2
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 0x1f
test ecx, ecx
je 0x40ebcf
mov eax, dword [ecx]
call dword [eax + 0xc]
push 1
push 0x434304
push dword [edi - 0xc]
add eax, 0x10
mov byte [ebp - 4], 0x1e
mov dword [ebp - 0x20], eax
or ebx, 0x4000
lea eax, [ebp - 0x20]
mov dword [ebp - 0x18], ebx
push edi
push eax
call fcn.0040bcd0
add esp, 0x14
mov edi, dword [ebp - 0x20]
mov ecx, dword [edi - 0x10]
lea eax, [edi - 0x10]
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x34], eax
test ecx, ecx
je 0x40e71f
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40e72d
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 0x21
test ecx, ecx
je 0x40ebd9
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov byte [ebp - 4], 0x20
mov dword [ebp - 0x1c], eax
or ebx, 0x8000
mov eax, dword [ebp - 0x2c]
mov dword [ebp - 0x18], ebx
test eax, eax
jne 0x40e75c
xor ecx, ecx
jmp 0x40e773
mov ecx, eax
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e761
mov eax, dword [ebp - 0x2c]
sub ecx, edx
sar ecx, 1
push ecx
push eax
push dword [edi - 0xc]
lea eax, [ebp - 0x1c]
push edi
push eax
call fcn.0040bcd0
mov edi, dword [ebp - 0x28]
add esp, 0x14
mov eax, dword [ebp - 0x1c]
mov edx, dword [edi]
lea ecx, [eax - 0x10]
sub edx, 0x10
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x3c], edx
cmp ecx, edx
je 0x40e7f2
cmp dword [edx + 0xc], 0
lea esi, [edx + 0xc]
mov dword [ebp - 0x44], esi
mov esi, dword [ebp - 0x14]
jl 0x40e7e4
mov ecx, dword [ecx]
cmp ecx, dword [edx]
jne 0x40e7e4
push dword [ebp - 0x30]
call fcn.0040bba0
mov dword [ebp - 0x38], eax
add esp, 4
mov eax, dword [ebp - 0x44]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40e7da
mov eax, dword [ebp - 0x3c]
push eax
mov ecx, dword [eax]
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x38]
add eax, 0x10
mov dword [edi], eax
jmp 0x40e7ef
push dword [eax - 0xc]
mov ecx, edi
push eax
call fcn.004120f0
mov ecx, dword [ebp - 0x30]
and ebx, 0xffff7fff
or eax, 0xffffffff
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x40e80f
mov ecx, dword [ecx]
push dword [ebp - 0x30]
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x34]
and ebx, 0xffffbfff
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40e82d
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x40]
and ebx, 0xffffdfff
mov dword [ebp - 0x18], ebx
or eax, 0xffffffff
mov byte [ebp - 4], 0x1b
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40e852
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [edi]
cmp dword [eax - 4], 1
jle 0x40e864
push dword [eax - 0xc]
mov ecx, edi
call fcn.0040cc40
push dword [edi]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40e893
mov edx, dword [ebp - 0x24]
or eax, 0xffffffff
mov dword [ebp - 4], 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40e99e
mov ecx, dword [edx]
push edx
jmp 0x40e999
mov ecx, dword [esi - 0x10]
mov dword [ebp - 0x1c], 0
test ecx, ecx
je 0x40e8ac
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x40e8ba
call fcn.0040f760
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
mov byte [ebp - 4], 0x23
test ecx, ecx
je 0x40ebe3
mov eax, dword [ecx]
call dword [eax + 0xc]
or ebx, 0x10
mov byte [ebp - 4], 0x22
add eax, 0x10
mov dword [ebp - 0x18], ebx
mov ebx, dword [ebp - 0x2c]
mov dword [ebp - 0x1c], eax
test ebx, ebx
jne 0x40e8e6
xor ecx, ecx
jmp 0x40e8ff
mov ecx, ebx
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40e8f0
sub ecx, edx
sar ecx, 1
push ecx
push ebx
push dword [esi - 0xc]
lea eax, [ebp - 0x1c]
push esi
push eax
call fcn.0040bcd0
mov eax, dword [ebp - 0x1c]
add esp, 0x14
mov ebx, dword [edi]
sub ebx, 0x10
lea edx, [eax - 0x10]
mov dword [ebp - 0x10], edx
cmp edx, ebx
je 0x40e96a
cmp dword [ebx + 0xc], 0
jl 0x40e95c
mov ecx, dword [edx]
cmp ecx, dword [ebx]
jne 0x40e95c
push edx
call fcn.0040bba0
add esp, 4
mov dword [ebp - 0x24], eax
or ecx, 0xffffffff
lea edx, [ebx + 0xc]
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40e955
mov ecx, dword [ebx]
push ebx
mov edx, dword [ecx]
call dword [edx + 4]
mov eax, dword [ebp - 0x24]
add eax, 0x10
mov dword [edi], eax
jmp 0x40e967
push dword [eax - 0xc]
mov ecx, edi
push eax
call fcn.004120f0
mov edx, dword [ebp - 0x10]
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x40e97f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 4], 0xffffffff
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x40e99e
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov eax, dword [edi]
cmp dword [eax - 4], 1
jle 0x40e9b6
push dword [eax - 0xc]
mov ecx, edi
call fcn.0040cc40
push dword [edi]
call esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push 0x444ae4
call fcn.00414a7d
add esp, 4
cmp dword [0x444ae4], 0xffffffff
jne 0x40dd00
sub esp, 0x28
mov dword [0x444ae0], 0
mov eax, esp
mov dword [ebp - 4], 0
mov ecx, 0x444ae0
mov dword [eax], 0x435010
mov dword [eax + 0x24], eax
call fcn.0040a4a0
push 0x4339b0
call fcn.004149ec
push 0x444ae4
mov dword [ebp - 4], 0xffffffff
call fcn.00414a2c
add esp, 8
jmp 0x40dd00
push 0x80004005
call fcn.0040b460
push 0x80004005
call fcn.0040b460
push 0x80004005
call fcn.0040b460
push 0x444b10
call fcn.00414a7d
add esp, 4
cmp dword [0x444b10], 0xffffffff
jne 0x40df92
sub esp, 0x28
mov dword [0x444b0c], 0
mov eax, esp
mov dword [ebp - 4], 8
mov ecx, 0x444b0c
mov dword [eax], 0x435064
mov dword [eax + 0x24], eax
call fcn.0040a4a0
push 0x433a30
call fcn.004149ec
push 0x444b10
mov dword [ebp - 4], 0xffffffff
call fcn.00414a2c
add esp, 8
jmp 0x40df92
push 0x80004005
call fcn.0040b460
push 0x80004005
call fcn.0040b460
push 0x80004005
call fcn.0040b460
push 0x444ae4
call fcn.00414a7d
add esp, 4
cmp dword [0x444ae4], 0xffffffff
jne 0x40e228
sub esp, 0x28
mov dword [0x444ae0], 0
mov eax, esp
mov dword [ebp - 4], 0x10
mov ecx, 0x444ae0
mov dword [eax], 0x435010
mov dword [eax + 0x24], eax
call fcn.0040a4a0
push 0x4339b0
call fcn.004149ec
push 0x444ae4
mov dword [ebp - 4], 0xffffffff
call fcn.00414a2c
add esp, 8
jmp 0x40e228
push 0x80004005
call fcn.0040b460
push 0x444b10
call fcn.00414a7d
add esp, 4
cmp dword [0x444b10], 0xffffffff
jne 0x40e3b6
sub esp, 0x28
mov dword [0x444b0c], 0
mov eax, esp
mov dword [ebp - 4], 0x14
mov ecx, 0x444b0c
mov dword [eax], 0x435064
mov dword [eax + 0x24], eax
call fcn.0040a4a0
push 0x433a30
call fcn.004149ec
push 0x444b10
mov dword [ebp - 4], 0xffffffff
call fcn.00414a2c
add esp, 8
jmp 0x40e3b6
push 0x80004005
call fcn.0040b460
push 0x80004005
call fcn.0040b460
call fcn.0041829f
push 0x80004005
call fcn.0040b460
push 0x80004005
call fcn.0040b460
push 0x80004005
call fcn.0040b460
push 0x80004005
call fcn.0040b460
int3