Function at 0x40f123
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4cd58e
mov eax, dword fs:[0]
push eax
sub esp, 0x850
mov eax, dword [0x55c6c0]
xor eax, esp
mov dword [esp + 0x848], eax
push ebx
push esi
push edi
mov eax, dword [0x55c6c0]
xor eax, esp
push eax
lea eax, [esp + 0x860]
mov dword fs:[0], eax
mov ebx, ecx
push str.SOFTWAREMicrosoftWindowsCurrentVersionApp_Paths
lea ecx, [esp + 0x18]
mov dword [esp + 0x24], ebx
call fcn.0040255d
and dword [esp + 0x868], 0
call fcn.0048aa29
push eax
lea ecx, [esp + 0x14]
call fcn.00402840
push 0
push 0x5c
mov ecx, ebx
mov byte [esp + 0x870], 1
call fcn.00411a8a
cmp eax, 0xffffffff
je 0x40f294
mov edi, dword [ebx]
mov esi, 0x82c
push esi
lea eax, [esp + 0x28]
push 0
push eax
call fcn.004adda0
add esp, 0xc
test edi, edi
je 0x40f1cf
push edi
lea eax, [esp + 0x28]
call fcn.0040c7ea
lea eax, [esp + 0x43e]
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x86c], 2
call fcn.0040255d
push eax
lea eax, [esp + 0x23a]
push eax
lea eax, [esp + 0x24]
push eax
mov byte [esp + 0x874], 3
call fcn.0040c5f2
add esp, 0xc
push eax
mov ecx, ebx
mov byte [esp + 0x86c], 4
call fcn.0040262c
mov ecx, dword [esp + 0x1c]
add ecx, 0xfffffff0
call fcn.00402883
mov byte [esp + 0x868], 2
mov ecx, dword [esp + 0x18]
add ecx, 0xfffffff0
call fcn.00402883
mov eax, dword [ebx]
cmp dword [eax - 0xc], 0
jne 0x40f28c
push esi
lea eax, [esp + 0x28]
push 0
push eax
call fcn.004adda0
add esp, 0xc
mov ecx, dword [esp + 0x10]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [esp + 0x14]
add ecx, 0xfffffff0
call fcn.00402883
mov al, 1
mov ecx, dword [esp + 0x860]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x848]
xor ecx, esp
call fcn.004aa206
mov esp, ebp
pop ebp
ret
mov byte [esp + 0x868], 1
push ecx
mov dword [esp + 0x1c], esp
mov ecx, esp
push ebx
call fcn.004025a1
lea ecx, [esp + 0x18]
call fcn.00406d13
call fcn.00461ea4
test al, al
je 0x40f45e
lea eax, [esp + 0x10]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
mov edi, 0x520938
push edi
call fcn.0040255d
push ecx
mov byte [esp + 0x874], 5
lea eax, [esp + 0x20]
mov dword [esp + 0x28], esp
mov ecx, esp
push eax
call fcn.004025a1
mov esi, reloc.OLEAUT32.dll_SysReAllocString
push esi
mov byte [esp + 0x878], 1
call fcn.0040e32f
test eax, eax
je 0x40f333
mov eax, dword [esp + 0x10]
push eax
mov dword [esp + 0x1c], eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f31c
push dword [esp + 0x18]
call fcn.0040f111
jmp 0x40f31e
mov al, 1
test al, al
je 0x40f333
mov ecx, ebx
lea eax, [esp + 0x10]
push eax
call fcn.0040262c
jmp 0x40f24e
lea eax, [esp + 0x10]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
mov ebx, str.Path
push ebx
call fcn.0040255d
push ecx
mov byte [esp + 0x874], 6
lea eax, [esp + 0x20]
mov dword [esp + 0x28], esp
mov ecx, esp
push eax
call fcn.004025a1
push esi
mov byte [esp + 0x878], 1
call fcn.0040e32f
test eax, eax
je 0x40f39f
mov eax, dword [esp + 0x10]
push eax
mov dword [esp + 0x1c], eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f393
push dword [esp + 0x18]
call fcn.0040f111
jmp 0x40f395
mov al, 1
test al, al
je 0x40f39f
mov ecx, dword [esp + 0x20]
jmp 0x40f324
lea eax, [esp + 0x10]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push edi
call fcn.0040255d
push ecx
mov byte [esp + 0x874], 7
lea eax, [esp + 0x20]
mov dword [esp + 0x28], esp
mov ecx, esp
push eax
call fcn.004025a1
push esi
mov byte [esp + 0x878], 1
call fcn.0040e44c
test eax, eax
je 0x40f3f9
mov edi, dword [esp + 0x10]
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f3f3
push edi
call fcn.0040f111
jmp 0x40f3f5
mov al, 1
test al, al
jne 0x40f399
lea eax, [esp + 0x10]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push ebx
call fcn.0040255d
push ecx
mov byte [esp + 0x874], 8
lea eax, [esp + 0x20]
mov dword [esp + 0x28], esp
mov ecx, esp
push eax
call fcn.004025a1
push esi
mov byte [esp + 0x878], 1
call fcn.0040e44c
test eax, eax
je 0x40f457
mov esi, dword [esp + 0x10]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f44d
push esi
call fcn.0040f111
jmp 0x40f44f
mov al, 1
test al, al
jne 0x40f399
xor bl, bl
jmp 0x40f53b
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x520938
lea edi, [esp + 0x18]
call fcn.0040255d
push ecx
mov byte [esp + 0x870], 9
lea eax, [esp + 0x1c]
mov dword [esp + 0x24], esp
mov ecx, esp
push eax
call fcn.004025a1
mov esi, reloc.OLEAUT32.dll_SysReAllocString
push esi
mov ecx, edi
mov byte [esp + 0x874], 1
call fcn.0040e1f1
test eax, eax
je 0x40f4c6
mov edi, dword [esp + 0x10]
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f4bc
push edi
call fcn.0040f111
jmp 0x40f4be
mov al, 1
test al, al
jne 0x40f322
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.Path
lea edi, [esp + 0x18]
call fcn.0040255d
push ecx
mov byte [esp + 0x870], 0xa
lea eax, [esp + 0x1c]
mov dword [esp + 0x24], esp
mov ecx, esp
push eax
call fcn.004025a1
push esi
mov ecx, edi
mov byte [esp + 0x874], 1
call fcn.0040e1f1
test eax, eax
je 0x40f457
mov esi, dword [esp + 0x10]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f523
push esi
call fcn.0040f111
jmp 0x40f525
mov al, 1
test al, al
je 0x40f457
lea eax, [esp + 0x10]
push eax
mov ecx, ebx
call fcn.0040262c
mov bl, 1
mov ecx, dword [esp + 0x10]
add ecx, 0xfffffff0
call fcn.00402883
mov ecx, dword [esp + 0x14]
add ecx, 0xfffffff0
call fcn.00402883
mov al, bl
jmp 0x40f268