Function at 0x40f158
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4cd9e1
mov eax, dword fs:[0]
push eax
sub esp, 0x850
mov eax, dword [0x55f6c0]
xor eax, esp
mov dword [esp + 0x848], eax
push ebx
push esi
push edi
mov eax, dword [0x55f6c0]
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.0040253e
and dword [esp + 0x868], 0
call fcn.0048b151
push eax
lea ecx, [esp + 0x14]
call fcn.00402821
push 0
push 0x5c
mov ecx, ebx
mov byte [esp + 0x870], 1
call fcn.00411abf
cmp eax, 0xffffffff
je 0x40f2c9
mov edi, dword [ebx]
mov esi, 0x82c
push esi
lea eax, [esp + 0x28]
push 0
push eax
call fcn.004ae4c0
add esp, 0xc
test edi, edi
je 0x40f204
push edi
lea eax, [esp + 0x28]
call fcn.0040c81f
lea eax, [esp + 0x43e]
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x86c], 2
call fcn.0040253e
push eax
lea eax, [esp + 0x23a]
push eax
lea eax, [esp + 0x24]
push eax
mov byte [esp + 0x874], 3
call fcn.0040c60b
add esp, 0xc
push eax
mov ecx, ebx
mov byte [esp + 0x86c], 4
call fcn.0040260d
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 0x40f2c1
push esi
lea eax, [esp + 0x28]
push 0
push eax
call fcn.004ae4c0
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.004aa923
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.00402582
lea ecx, [esp + 0x18]
call fcn.00406d1b
call fcn.00460c64
test al, al
je 0x40f493
lea eax, [esp + 0x10]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
mov edi, 0x5229b8
push edi
call fcn.0040253e
push ecx
mov byte [esp + 0x874], 5
lea eax, [esp + 0x20]
mov dword [esp + 0x28], esp
mov ecx, esp
push eax
call fcn.00402582
mov esi, reloc.OLEAUT32.dll_SysReAllocString
push esi
mov byte [esp + 0x878], 1
call fcn.0040e364
test eax, eax
je 0x40f368
mov eax, dword [esp + 0x10]
push eax
mov dword [esp + 0x1c], eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f351
push dword [esp + 0x18]
call fcn.0040f146
jmp 0x40f353
mov al, 1
test al, al
je 0x40f368
mov ecx, ebx
lea eax, [esp + 0x10]
push eax
call fcn.0040260d
jmp 0x40f283
lea eax, [esp + 0x10]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
mov ebx, str.Path
push ebx
call fcn.0040253e
push ecx
mov byte [esp + 0x874], 6
lea eax, [esp + 0x20]
mov dword [esp + 0x28], esp
mov ecx, esp
push eax
call fcn.00402582
push esi
mov byte [esp + 0x878], 1
call fcn.0040e364
test eax, eax
je 0x40f3d4
mov eax, dword [esp + 0x10]
push eax
mov dword [esp + 0x1c], eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f3c8
push dword [esp + 0x18]
call fcn.0040f146
jmp 0x40f3ca
mov al, 1
test al, al
je 0x40f3d4
mov ecx, dword [esp + 0x20]
jmp 0x40f359
lea eax, [esp + 0x10]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push edi
call fcn.0040253e
push ecx
mov byte [esp + 0x874], 7
lea eax, [esp + 0x20]
mov dword [esp + 0x28], esp
mov ecx, esp
push eax
call fcn.00402582
push esi
mov byte [esp + 0x878], 1
call fcn.0040e481
test eax, eax
je 0x40f42e
mov edi, dword [esp + 0x10]
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f428
push edi
call fcn.0040f146
jmp 0x40f42a
mov al, 1
test al, al
jne 0x40f3ce
lea eax, [esp + 0x10]
push eax
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push ebx
call fcn.0040253e
push ecx
mov byte [esp + 0x874], 8
lea eax, [esp + 0x20]
mov dword [esp + 0x28], esp
mov ecx, esp
push eax
call fcn.00402582
push esi
mov byte [esp + 0x878], 1
call fcn.0040e481
test eax, eax
je 0x40f48c
mov esi, dword [esp + 0x10]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f482
push esi
call fcn.0040f146
jmp 0x40f484
mov al, 1
test al, al
jne 0x40f3ce
xor bl, bl
jmp 0x40f570
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push 0x5229b8
lea edi, [esp + 0x18]
call fcn.0040253e
push ecx
mov byte [esp + 0x870], 9
lea eax, [esp + 0x1c]
mov dword [esp + 0x24], esp
mov ecx, esp
push eax
call fcn.00402582
mov esi, reloc.OLEAUT32.dll_SysReAllocString
push esi
mov ecx, edi
mov byte [esp + 0x874], 1
call fcn.0040e226
test eax, eax
je 0x40f4fb
mov edi, dword [esp + 0x10]
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f4f1
push edi
call fcn.0040f146
jmp 0x40f4f3
mov al, 1
test al, al
jne 0x40f357
push ecx
mov ecx, esp
mov dword [esp + 0x1c], esp
push str.Path
lea edi, [esp + 0x18]
call fcn.0040253e
push ecx
mov byte [esp + 0x870], 0xa
lea eax, [esp + 0x1c]
mov dword [esp + 0x24], esp
mov ecx, esp
push eax
call fcn.00402582
push esi
mov ecx, edi
mov byte [esp + 0x874], 1
call fcn.0040e226
test eax, eax
je 0x40f48c
mov esi, dword [esp + 0x10]
push esi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x40f558
push esi
call fcn.0040f146
jmp 0x40f55a
mov al, 1
test al, al
je 0x40f48c
lea eax, [esp + 0x10]
push eax
mov ecx, ebx
call fcn.0040260d
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 0x40f29d