Function at 0x416c00
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x53c14c
mov eax, dword fs:[0]
push eax
sub esp, 0xa8
mov eax, dword [0x596334]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x54], 0
mov esi, dword [ebx + 0x84]
test esi, esi
jne 0x41717e
call fcn.00407e20
mov ecx, eax
test ecx, ecx
je 0x4171e3
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x50], eax
mov eax, 0x55131c
mov dword [ebp - 4], esi
lea ecx, [ebp - 0x50]
test eax, 0xffff0000
jne 0x416c7f
movzx eax, ax
push eax
call fcn.00411fd0
jmp 0x416c8b
push 2
push 0x55131c
call fcn.0040b260
mov dword [ebp - 4], 1
call fcn.00407e20
mov ecx, eax
test ecx, ecx
je 0x4171ed
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x44], eax
mov eax, 0x551324
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x44]
test eax, 0xffff0000
jne 0x416cca
movzx eax, ax
push eax
call fcn.00411fd0
jmp 0x416cd6
push 5
push 0x551324
call fcn.0040b260
mov esi, dword [ebp - 0x44]
mov ecx, dword [esi - 0x10]
lea ebx, [esi - 0x10]
mov byte [ebp - 4], 4
test ecx, ecx
je 0x416cf2
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x416d08
call fcn.00407e20
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x4171f7
mov eax, dword [ecx]
call dword [eax + 0xc]
push 5
push 0x551244
push dword [esi - 0xc]
add eax, 0x10
mov dword [ebp - 0x54], 1
mov dword [ebp - 0x5c], eax
lea eax, [ebp - 0x5c]
push esi
push eax
call fcn.00413dd0
add esp, 0x14
mov edi, dword [ebp - 0x5c]
mov ecx, dword [edi - 0x10]
lea eax, [edi - 0x10]
mov byte [ebp - 4], 5
mov dword [ebp - 0x4c], eax
test ecx, ecx
je 0x416d50
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x416d66
call fcn.00407e20
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x417201
mov eax, dword [ecx]
call dword [eax + 0xc]
mov esi, dword [ebp - 0x50]
add eax, 0x10
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x58]
mov dword [ebp - 0x54], 3
push dword [esi - 0xc]
push esi
push dword [edi - 0xc]
push edi
push eax
call fcn.00413dd0
add esp, 0x14
lea eax, [ebp - 0x58]
lea ecx, [ebp - 0xb4]
push 0xac
push 0x154
push eax
call fcn.00419290
mov dword [ebp - 0x54], 1
mov edx, dword [ebp - 0x58]
or edi, 0xffffffff
mov byte [ebp - 4], 7
add edx, 0xfffffff0
mov eax, edi
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x416dd0
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4c]
mov eax, edi
mov byte [ebp - 4], 8
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x416deb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 9
mov eax, edi
lock xadd dword [ebx + 0xc], eax
dec eax
test eax, eax
jg 0x416e03
mov ecx, dword [ebx]
push ebx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xa
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x416e1e
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
push 1
lea ecx, [ebp - 0xb4]
call fcn.0041a530
call dword [sym.imp.USER32.dll_GetActiveWindow]
mov esi, dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ebx, eax
mov eax, dword [ebp - 0xa0]
test eax, eax
jne 0x416eb1
call fcn.0043f94d
mov dword [ebp - 0xa0], eax
test eax, eax
jne 0x416eb1
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ebx, dword [ebp - 0x48]
cmp byte [ebx + 0x88], 0
jne 0x41714f
mov ecx, dword [0x59ad94]
test ecx, ecx
jne 0x416f9a
push 0x593e44
call esi
cmp dword [0x59ad94], 0
jne 0x416f89
push 0x24
call fcn.0041fce0
add esp, 4
mov dword [ebp - 0x4c], eax
mov byte [ebp - 4], 0xc
test eax, eax
je 0x416f76
mov ecx, eax
call fcn.00411810
jmp 0x416f78
push 0
push 0
push eax
call fcn.0043fa4f
lea eax, [ebp - 0xb4]
mov dword [ebp - 0xac], eax
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push 0x593dac
mov dword [ebp - 0xa8], eax
call esi
mov eax, dword [0x593dc4]
mov dword [ebp - 0xa4], eax
lea eax, [ebp - 0xac]
push 0x593dac
mov dword [0x593dc4], eax
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
push 0
push 0x417bb0
push ebx
push 0xd2
push dword [0x59da7c]
call dword [sym.imp.USER32.dll_DialogBoxParamW]
cmp eax, 2
jne 0x416f5d
sub esp, 0x28
mov eax, esp
mov dword [ebp - 0x4c], esp
mov dword [eax + 0x24], 0
push 0
push 0
push str.exit
mov byte [ebp - 4], 0xb
call fcn.00414800
mov ecx, eax
mov byte [ebp - 4], 0xa
call fcn.0040ae50
mov ecx, dword [ebp - 0x48]
call fcn.004166f0
lea ecx, [ebp - 0xb4]
call fcn.00419400
jmp 0x4171c3
cmp eax, 8
jne 0x416e5a
lea ecx, [ebp - 0xb4]
call fcn.00419400
jmp 0x4171c3
xor eax, eax
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x5c]
xor edx, edx
lock or dword [ecx], edx
mov dword [0x59ad94], eax
push 0x593e44
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [0x59ad94]
lea eax, [ebp - 0x44]
push eax
call fcn.00411be0
mov eax, dword [ebp - 0x44]
add eax, 0xfffffff0
mov byte [ebp - 4], 0xd
push eax
call fcn.00407b00
add esp, 4
lea esi, [eax + 0x10]
mov dword [ebp - 0x48], esi
mov eax, dword [ebp - 0x44]
mov byte [ebp - 4], 0xe
cmp dword [eax - 4], 1
jle 0x416fd7
push dword [eax - 0xc]
lea ecx, [ebp - 0x44]
call fcn.00407da0
mov eax, dword [ebp - 0x44]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
xor eax, eax
mov dword [ebp - 0x18], 0
mov word [ebp - 0x28], ax
mov eax, dword [ebp - 0x44]
mov edx, eax
mov dword [ebp - 0x14], 7
lea ecx, [edx + 2]
mov dword [ebp - 0x4c], ecx
nop dword [eax]
mov cx, word [edx]
add edx, 2
test cx, cx
jne 0x417000
sub edx, dword [ebp - 0x4c]
lea ecx, [ebp - 0x28]
sar edx, 1
push edx
push eax
call fcn.00419030
cmp dword [ebp - 0x14], 8
lea edx, [ebp - 0x28]
mov eax, dword [ebp - 0x18]
cmovae edx, dword [ebp - 0x28]
mov byte [ebp - 4], 0xf
test eax, eax
je 0x417056
dec eax
mov ecx, edi
cmp eax, 0xffffffff
cmovb ecx, eax
cmp word [edx + ecx*2], 0x5c
lea eax, [edx + ecx*2]
je 0x417050
cmp eax, edx
je 0x417056
sub eax, 2
cmp word [eax], 0x5c
jne 0x417043
sub eax, edx
sar eax, 1
jmp 0x417059
or eax, 0xffffffff
mov ecx, dword [ebp - 0x18]
lea edx, [eax + 1]
xor eax, eax
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 7
mov word [ebp - 0x40], ax
cmp ecx, edx
jb 0x41720b
mov eax, ecx
sub eax, edx
cmp eax, ecx
cmovb ecx, eax
cmp dword [ebp - 0x14], 8
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push ecx
lea ecx, [ebp - 0x40]
lea eax, [eax + edx*2]
push eax
call fcn.00419030
cmp dword [ebp - 0x2c], 8
lea eax, [ebp - 0x40]
mov ecx, 0x551244
cmovae eax, dword [ebp - 0x40]
nop dword [eax]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4170d6
test dx, dx
je 0x4170d2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4170d6
add eax, 4
add ecx, 4
test dx, dx
jne 0x4170b0
xor edi, edi
jmp 0x4170db
sbb edi, edi
or edi, 1
lea ecx, [ebp - 0x40]
call fcn.00413940
test edi, edi
jne 0x4170f6
lea eax, [ebp - 0x44]
push eax
lea ecx, [ebp - 0x48]
call fcn.0040f8e0
mov esi, dword [ebp - 0x48]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41710d
call fcn.00420a30
push esi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x20]
lea ecx, [ebp - 0x28]
call fcn.00413940
or edi, 0xffffffff
mov byte [ebp - 4], 0xd
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x417133
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x44]
mov byte [ebp - 4], 0xa
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], edi
dec edi
test edi, edi
jg 0x41714f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.00420a30
mov edx, ebx
lea ecx, [ebx + 0x70]
neg edx
mov esi, dword [eax]
sbb edx, edx
and edx, ecx
push edx
push eax
call dword [esi + 8]
lea ecx, [ebp - 0xb4]
mov dword [ebp - 4], 0xffffffff
call fcn.00419400
mov esi, dword [ebx + 0x84]
mov ecx, dword [ebx + 0x78]
xor eax, eax
add esi, 1
push 1
sete al
mov edx, dword [ecx]
push eax
push ecx
call dword [edx + 0x20]
mov ecx, dword [ebx + 0x7c]
xor eax, eax
cmp esi, 1
push 1
sete al
mov edx, dword [ecx]
push eax
push ecx
call dword [edx + 0x20]
mov ecx, dword [ebx + 0x80]
xor eax, eax
cmp esi, 2
push 1
sete al
mov edx, dword [ecx]
push eax
push ecx
call dword [edx + 0x20]
mov dword [ebx + 0x84], esi
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00455d1a
mov esp, ebp
pop ebp
ret 0x10
push 0x80004005
call fcn.00404c40
push 0x80004005
call fcn.00404c40
push 0x80004005
call fcn.00404c40
push 0x80004005
call fcn.00404c40
call fcn.00418c70
int3