Function at 0x40f3ac
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x78
push ebx
push esi
mov esi, dword [sym.imp.MSVCRT.dll_strstr]
push edi
mov ebx, ecx
push str._step_list
mov dword [ebp - 8], ebx
push dword [ebx + 0x60]
call esi
pop ecx
mov dword [ebp - 4], eax
test eax, eax
pop ecx
je 0x40f935
mov edi, 0x441880
mov eax, dword [ebp - 4]
push str._step
inc eax
push eax
call esi
pop ecx
mov dword [ebp - 4], eax
test eax, eax
pop ecx
je 0x40f677
lea ecx, [ebp - 0x2c]
call fcn.00414590
lea ecx, [ebp - 0x18]
call fcn.00414590
lea ecx, [ebp - 0x20]
call fcn.00414590
push 0x43fb34
lea ecx, [ebp - 0x68]
call fcn.004146d0
push dword [ebp - 4]
lea ecx, [ebp - 0x60]
call fcn.004146d0
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x60]
push eax
call fcn.0040e8f7
add esp, 0xc
test eax, eax
je 0x40f4d1
push str.name
lea ecx, [ebp - 0x10]
call fcn.004146d0
push dword [ebp - 4]
lea ecx, [ebp - 0x48]
call fcn.004146d0
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x48]
push eax
call fcn.0040e8f7
mov ebx, eax
add esp, 0xc
neg ebx
sbb bl, bl
lea ecx, [ebp - 0x48]
inc bl
call fcn.004146c0
lea ecx, [ebp - 0x10]
call fcn.004146c0
test bl, bl
jne 0x40f4d1
push 0x43fa9c
lea ecx, [ebp - 0x58]
call fcn.004146d0
push dword [ebp - 4]
lea ecx, [ebp - 0x50]
call fcn.004146d0
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.0040e8f7
mov ebx, eax
add esp, 0xc
neg ebx
sbb bl, bl
lea ecx, [ebp - 0x50]
inc bl
call fcn.004146c0
lea ecx, [ebp - 0x58]
call fcn.004146c0
test bl, bl
je 0x40f4d3
mov bl, 1
lea ecx, [ebp - 0x60]
call fcn.004146c0
lea ecx, [ebp - 0x68]
call fcn.004146c0
test bl, bl
jne 0x40f65f
push 0x43f8cc
push dword [ebp - 4]
call esi
push 0x43fd08
mov ebx, eax
push dword [ebp - 4]
call esi
add esp, 0x10
cmp eax, ebx
jbe 0x40f5c7
mov ebx, dword [ebp - 4]
push str.__step_
push ebx
call esi
pop ecx
mov dword [ebp - 0x30], eax
test eax, eax
pop ecx
je 0x40f65f
and dword [ebp - 0x24], 0
inc ebx
push str._constraint
push ebx
call esi
mov ebx, eax
pop ecx
test ebx, ebx
pop ecx
je 0x40f5a1
cmp ebx, dword [ebp - 0x30]
ja 0x40f5a1
lea ecx, [ebp - 0x38]
call fcn.00414590
push str.test
lea ecx, [ebp - 0x78]
call fcn.004146d0
push ebx
lea ecx, [ebp - 0x70]
call fcn.004146d0
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x70]
push eax
call fcn.0040e8f7
add esp, 0xc
lea ecx, [ebp - 0x70]
call fcn.004146c0
lea ecx, [ebp - 0x78]
call fcn.004146c0
mov ecx, dword [ebp - 8]
lea eax, [ebp - 0x38]
push eax
call fcn.0040d556
test eax, eax
jl 0x40f597
mov dword [ebp - 0x24], 1
lea ecx, [ebp - 0x38]
call fcn.004146c0
jmp 0x40f528
cmp dword [ebp - 0x24], 0
jne 0x40f5c7
lea ecx, [ebp - 0x20]
call fcn.004146c0
lea ecx, [ebp - 0x18]
call fcn.004146c0
lea ecx, [ebp - 0x2c]
call fcn.004146c0
mov ebx, dword [ebp - 8]
jmp 0x40f3dc
mov ebx, dword [ebp - 8]
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebx + 0x7c]
push eax
call fcn.0040f93c
pop ecx
test al, al
pop ecx
je 0x40f5a7
lea esi, [ebx + 0x408]
lea eax, [ebp - 0x2c]
push eax
mov ecx, esi
call fcn.0040ba43
test eax, eax
jne 0x40f65f
lea eax, [ebp - 0x2c]
mov ecx, esi
push eax
call fcn.0040bb61
mov esi, eax
lea eax, [ebp - 0x18]
push eax
lea ecx, [esi + 0xc]
call fcn.00414770
and dword [esi], 0
lea eax, [ebp - 0x20]
push eax
lea ecx, [esi + 0x14]
call fcn.00414770
lea eax, [ebp - 0x2c]
lea ecx, [esi + 4]
push eax
call fcn.00414770
and dword [esi + 0x1c], 0
push edi
lea ecx, [esi + 0x20]
call fcn.004147e0
push edi
lea ecx, [esi + 0x28]
call fcn.004147e0
lea ecx, [ebp - 0x20]
call fcn.004146c0
lea ecx, [ebp - 0x18]
call fcn.004146c0
lea ecx, [ebp - 0x2c]
call fcn.004146c0
mov esi, dword [sym.imp.MSVCRT.dll_strstr]
jmp 0x40f5bf
lea ecx, [ebp - 0x20]
call fcn.004146c0
lea ecx, [ebp - 0x18]
call fcn.004146c0
lea ecx, [ebp - 0x2c]
jmp 0x40f930
lea ecx, [ebx + 0x7c]
push 0x2c
mov dword [ebp - 0x24], ecx
call fcn.004148d0
test eax, eax
mov dword [ebp - 0x14], eax
jle 0x40f935
lea esi, [ebx + 0x8c]
push edi
mov ecx, esi
mov dword [ebp - 0x28], esi
call fcn.004147e0
lea ecx, [ebx + 0x84]
push edi
mov dword [ebp - 0x30], ecx
call fcn.004147e0
push edi
lea ecx, [ebp - 0x40]
call fcn.004146d0
push 1
pop eax
cmp dword [ebp - 0x14], eax
mov dword [ebp - 4], eax
jl 0x40f8ce
lea eax, [ebx + 0x408]
mov dword [ebp - 0x1c], eax
push dword [ebp - 4]
mov ecx, dword [ebp - 0x24]
lea eax, [ebp - 0x38]
push 0x2c
push eax
call fcn.00414910
mov ecx, dword [ebp - 0x1c]
lea eax, [ebp - 0x38]
push eax
call fcn.0040ba43
test eax, eax
jne 0x40f72c
cmp byte [esi + 7], 0xff
mov eax, esi
jne 0x40f6fb
mov eax, dword [esi]
push edi
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x40f714
push 0x43e4e0
mov ecx, esi
call fcn.00414c30
lea eax, [ebp - 0x38]
mov ecx, esi
push eax
call fcn.00414c90
lea ecx, [ebp - 0x38]
call fcn.004146c0
jmp 0x40f8bf
mov ecx, dword [ebp - 0x1c]
lea eax, [ebp - 0x38]
push eax
call fcn.0040bb61
mov esi, eax
add ebx, 0x38
push str.RUP_
lea eax, [ebp - 0x78]
push ebx
push eax
call fcn.00414850
lea eax, [esi + 0x14]
push eax
lea eax, [ebp - 0x78]
push eax
lea eax, [ebp - 0x70]
push eax
call fcn.00414810
add esp, 0x18
cmp byte [eax + 7], 0xff
jne 0x40f768
mov eax, dword [eax]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
mov ebx, eax
lea ecx, [ebp - 0x70]
neg ebx
sbb bl, bl
inc bl
call fcn.004146c0
lea ecx, [ebp - 0x78]
call fcn.004146c0
test bl, bl
jne 0x40f925
lea ebx, [esi + 0x28]
push edi
mov ecx, ebx
call fcn.004147e0
push dword [ebp - 0x28]
lea ecx, [esi + 0x20]
call fcn.00414770
mov eax, dword [ebp - 4]
inc eax
cmp eax, dword [ebp - 0x14]
mov dword [ebp - 0xc], eax
jg 0x40f816
jmp 0x40f7b6
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x24]
push eax
lea eax, [ebp - 0x48]
push 0x2c
push eax
call fcn.00414910
mov ecx, dword [ebp - 0x1c]
lea eax, [ebp - 0x48]
push eax
call fcn.0040ba43
test eax, eax
jne 0x40f803
cmp byte [ebx + 7], 0xff
mov eax, ebx
jne 0x40f7df
mov eax, dword [ebx]
push edi
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x40f7f8
push 0x43e4e0
mov ecx, ebx
call fcn.00414c30
lea eax, [ebp - 0x48]
mov ecx, ebx
push eax
call fcn.00414c90
lea ecx, [ebp - 0x48]
call fcn.004146c0
inc dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp eax, dword [ebp - 0x14]
jle 0x40f7b3
lea eax, [ebp - 0x40]
lea ebx, [esi + 0xc]
push eax
push ebx
call fcn.0040551f
pop ecx
test eax, eax
pop ecx
je 0x40f849
push ebx
lea ecx, [ebp - 0x40]
call fcn.00414770
cmp byte [ebx + 7], 0xff
jne 0x40f83a
mov ebx, dword [ebx]
mov eax, dword [ebp - 8]
push ebx
lea ecx, [eax + 0x3b0]
call fcn.004155a0
mov eax, dword [ebp - 8]
add eax, 0x3b0
test eax, eax
je 0x40f85a
mov eax, dword [eax + 0x10]
jmp 0x40f85c
xor eax, eax
dec eax
mov dword [esi + 0x1c], eax
mov esi, dword [ebp - 0x30]
mov ecx, esi
call fcn.00414740
test eax, eax
jbe 0x40f890
push 0x43e4e0
lea eax, [ebp - 0x68]
push esi
push eax
call fcn.00414850
add esp, 0xc
mov ecx, esi
push eax
call fcn.00414770
lea ecx, [ebp - 0x68]
call fcn.004146c0
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x60]
push esi
push eax
call fcn.00414810
add esp, 0xc
mov ecx, esi
push eax
call fcn.00414770
lea ecx, [ebp - 0x60]
call fcn.004146c0
lea ecx, [ebp - 0x38]
call fcn.004146c0
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 0x28]
inc dword [ebp - 4]
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 0x14]
jle 0x40f6d0
push dword [ebp - 0x24]
lea eax, [ebp - 0x78]
push str.Original_Page_List_
push eax
call fcn.00414890
add esp, 0xc
mov ecx, ebx
push eax
call fcn.0040521a
lea ecx, [ebp - 0x78]
call fcn.004146c0
push dword [ebp - 0x30]
lea eax, [ebp - 0x78]
push str.Current_Page_List_
push eax
call fcn.00414890
add esp, 0xc
mov ecx, ebx
push eax
call fcn.0040521a
lea ecx, [ebp - 0x78]
call fcn.004146c0
lea ecx, [ebp - 0x40]
call fcn.004146c0
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret
lea ecx, [ebp - 0x38]
call fcn.004146c0
lea ecx, [ebp - 0x40]
call fcn.004146c0
mov eax, 0x8000aaa0
jmp 0x40f920