Function at 0x403ae0
Capabilities:
Check if file exists

Disassembly:
push 0xffffffffffffffff
push 0x421a8e
mov eax, dword fs:[0]
push eax
sub esp, 0xa8
mov eax, dword [0x42c070]
xor eax, esp
mov dword [esp + 0xa0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x42c070]
xor eax, esp
push eax
lea eax, [esp + 0xbc]
mov dword fs:[0], eax
mov esi, ecx
mov ebp, dword [esp + 0xcc]
push str.InstallPatch_run..
mov dword [esp + 0x1c], ebp
call fcn.00412950
add esp, 4
lea ecx, [esp + 0x58]
call fcn.00410080
xor ebx, ebx
mov dword [esp + 0xc4], ebx
push ebx
push 0x424da5
lea ecx, [esp + 0x44]
mov dword [esp + 0x5c], 0xf
mov dword [esp + 0x58], ebx
mov byte [esp + 0x48], bl
call fcn.00407f80
push 0x3f
lea eax, [esp + 0x79]
push ebx
mov byte [esp + 0xcc], 1
push eax
mov byte [esp + 0x80], bl
call fcn.00418e90
add esp, 0xc
cmp esi, 4
ja case.default.0x403b8a
jmp dword [esi*4 + 0x404154]
push 0x3f
push str.winxp_sp0
lea ecx, [esp + 0x7c]
push 0x40
push ecx
call fcn.0041464f
add esp, 0x10
jmp 0x403c16
push 0x3f
push str.winxp_sp1
lea edx, [esp + 0x7c]
push 0x40
push edx
call fcn.0041464f
add esp, 0x10
jmp 0x403c16
push 0x3f
push str.winxp_sp2
lea eax, [esp + 0x7c]
push 0x40
push eax
call fcn.0041464f
add esp, 0x10
jmp 0x403c16
push 0x3f
push str.winxp_sp3
lea ecx, [esp + 0x7c]
push 0x40
push ecx
call fcn.0041464f
add esp, 0x10
jmp 0x403c16
push 0x3f
push str.WinVistaOrHigher
lea edx, [esp + 0x7c]
push 0x40
push edx
call fcn.0041464f
add esp, 0x10
jmp 0x403c16
push str.InstallPatch_OS_is_other_system...
call fcn.00412950
add esp, 4
lea eax, [esp + 0x74]
push 0x40
push eax
call fcn.0041377b
mov edi, dword [ebp + 0xa0]
add esp, 8
cmp edi, dword [ebp + 0xa4]
jbe 0x403c38
call fcn.00414207
mov eax, dword [esp + 0x18]
mov ebp, dword [eax + 0x94]
mov esi, dword [eax + 0xa4]
cmp dword [eax + 0xa0], esi
jbe 0x403c59
call fcn.00414207
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x94]
cmp ebp, ebx
je 0x403c67
cmp ebp, eax
je 0x403c6c
call fcn.00414207
cmp edi, esi
je 0x4040e0
push ebx
push 0x424da5
lea ecx, [esp + 0x28]
mov dword [esp + 0x40], 0xf
mov dword [esp + 0x3c], ebx
mov byte [esp + 0x2c], bl
call fcn.00407f80
push ebx
push 0x424da5
lea ecx, [esp + 0x44]
mov byte [esp + 0xcc], 2
call fcn.00407f80
push ebx
lea ecx, [esp + 0x5c]
push ecx
or eax, 0xffffffff
lea esi, [esp + 0x44]
call fcn.00407540
cmp ebp, ebx
jne 0x403ce8
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x403cd1
call fcn.00414207
cmp dword [edi + 0x70], ebx
je 0x403ced
mov byte [esp + 0xc4], 1
cmp dword [esp + 0x38], 0x10
jmp 0x4040ab
mov eax, dword [ebp]
jmp 0x403cc7
cmp ebp, ebx
jne 0x403d11
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x403d02
call fcn.00414207
mov esi, 0x10
cmp dword [edi + 0x18], esi
jb 0x403d16
mov eax, dword [edi + 4]
jmp 0x403d19
mov eax, dword [ebp]
jmp 0x403cf8
lea eax, [edi + 4]
lea ecx, [esp + 0x74]
push ecx
push eax
call fcn.004139d0
add esp, 8
test eax, eax
jne 0x403d55
cmp ebp, ebx
jne 0x404086
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x403d44
call fcn.00414207
cmp dword [edi + 0x50], esi
jb 0x40408e
mov eax, dword [edi + 0x3c]
jmp 0x404091
push str.IsWow64Process
push str.kernel32
call dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
cmp esi, ebx
je 0x403f0f
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
test eax, eax
je 0x403f0f
cmp dword [esp + 0x1c], 1
jne 0x403f0f
cmp ebp, ebx
jne 0x403dbb
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x403dac
call fcn.00414207
mov esi, 0x10
cmp dword [edi + 0x34], esi
jb 0x403dc0
mov eax, dword [edi + 0x20]
jmp 0x403dc3
mov eax, dword [ebp]
jmp 0x403da2
lea eax, [edi + 0x20]
push 0x4256e0
push eax
call fcn.004139d0
add esp, 8
test eax, eax
je 0x403d2b
cmp ebp, ebx
jne 0x403e4a
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x403dee
call fcn.00414207
push ebx
lea ecx, [edi + 0x38]
push ecx
or eax, 0xffffffff
lea esi, [esp + 0x44]
call fcn.00407540
push 1
push 0x4256e4
mov eax, esi
call fcn.00407630
cmp dword [esp + 0x54], 0x10
mov eax, dword [esp + 0x40]
jae 0x403e1c
lea eax, [esp + 0x40]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
mov eax, dword [esp + 0x40]
jne 0x403e4f
mov esi, 0x10
cmp dword [esp + 0x54], esi
jae 0x403e3a
lea eax, [esp + 0x40]
push eax
push str._s_is_not_exist
call fcn.004129d0
jmp 0x40409c
mov eax, dword [ebp]
jmp 0x403de4
cmp dword [esp + 0x54], 0x10
jae 0x403e5a
lea eax, [esp + 0x40]
push eax
push str.install_patch__s
call fcn.00412950
add esp, 8
push 1
push 0x42570c
lea ecx, [esp + 0x28]
call fcn.00407f80
push ebx
lea eax, [esp + 0x40]
push eax
or eax, 0xffffffff
lea esi, [esp + 0x28]
call fcn.00407540
push 2
push 0x425710
mov eax, esi
call fcn.00407630
cmp ebp, ebx
jne 0x403f05
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x403ead
call fcn.00414207
push ebx
lea ecx, [edi + 0x54]
push ecx
or eax, 0xffffffff
lea esi, [esp + 0x28]
call fcn.00407540
cmp dword [esp + 0x38], 0x10
mov esi, dword [esp + 0x24]
jae 0x403ecd
lea esi, [esp + 0x24]
push 1
call fcn.004106a0
add esp, 4
cmp ebp, ebx
jne 0x403f0a
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x403eec
call fcn.00414207
mov byte [esp + 0xc4], 1
cmp dword [esp + 0x38], 0x10
mov dword [edi + 0x70], 1
jmp 0x4040ab
mov eax, dword [ebp]
jmp 0x403ea3
mov eax, dword [ebp]
jmp 0x403ee2
cmp ebp, ebx
jne 0x403f33
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x403f24
call fcn.00414207
mov esi, 0x10
cmp dword [edi + 0x34], esi
jb 0x403f38
mov eax, dword [edi + 0x20]
jmp 0x403f3b
mov eax, dword [ebp]
jmp 0x403f1a
lea eax, [edi + 0x20]
push 0x425714
push eax
call fcn.004139d0
add esp, 8
test eax, eax
je 0x40407e
cmp ebp, ebx
jne 0x403fce
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x403f66
call fcn.00414207
push ebx
lea eax, [edi + 0x38]
push eax
or eax, 0xffffffff
lea esi, [esp + 0x44]
call fcn.00407540
cmp dword [esp + 0x54], 0x10
mov eax, dword [esp + 0x40]
jae 0x403f86
lea eax, [esp + 0x40]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x403fd3
mov eax, dword [esp + 0x40]
mov esi, 0x10
cmp dword [esp + 0x54], esi
jae 0x403fa4
lea eax, [esp + 0x40]
push eax
push str._s_is_not_exist
call fcn.004129d0
add esp, 8
mov byte [esp + 0xc4], 1
cmp dword [esp + 0x38], esi
jb 0x4040ba
mov ecx, dword [esp + 0x24]
push ecx
jmp 0x4040b2
mov eax, dword [ebp]
jmp 0x403f5c
push 1
push 0x42570c
lea ecx, [esp + 0x28]
call fcn.00407f80
push ebx
lea edx, [esp + 0x40]
push edx
or eax, 0xffffffff
lea esi, [esp + 0x28]
call fcn.00407540
push 2
push 0x425710
mov eax, esi
call fcn.00407630
cmp ebp, ebx
jne 0x404074
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404018
call fcn.00414207
push ebx
lea eax, [edi + 0x54]
push eax
or eax, 0xffffffff
lea esi, [esp + 0x28]
call fcn.00407540
cmp dword [esp + 0x38], 0x10
mov esi, dword [esp + 0x24]
jae 0x404038
lea esi, [esp + 0x24]
push 1
call fcn.004106a0
add esp, 4
cmp ebp, ebx
jne 0x404079
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404057
call fcn.00414207
mov byte [esp + 0xc4], 1
cmp dword [esp + 0x38], 0x10
mov dword [edi + 0x70], 1
jb 0x4040ba
mov ecx, dword [esp + 0x24]
push ecx
jmp 0x4040b2
mov eax, dword [ebp]
jmp 0x40400e
mov eax, dword [ebp]
jmp 0x40404d
cmp ebp, ebx
je 0x403d33
mov eax, dword [ebp]
jmp 0x403d3a
lea eax, [edi + 0x3c]
push eax
push str.this_patch__s_need_not_install...
call fcn.00412950
add esp, 8
mov byte [esp + 0xc4], 1
cmp dword [esp + 0x38], esi
jb 0x4040ba
mov edx, dword [esp + 0x24]
push edx
call fcn.0041300c
add esp, 4
cmp ebp, ebx
jne 0x4040db
call fcn.00414207
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x4040cf
call fcn.00414207
mov eax, dword [esp + 0x18]
add edi, 0x74
jmp 0x403c42
mov eax, dword [ebp]
jmp 0x4040c5
push str.InstallPatch_exit..
call fcn.00412950
mov esi, 0x10
add esp, 4
cmp dword [esp + 0x54], esi
jb 0x404105
mov eax, dword [esp + 0x40]
push eax
call fcn.0041300c
add esp, 4
mov dword [esp + 0x54], 0xf
mov dword [esp + 0x50], ebx
mov byte [esp + 0x40], bl
cmp dword [esp + 0x70], esi
jb 0x404128
mov ecx, dword [esp + 0x5c]
push ecx
call fcn.0041300c
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0xbc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xa0]
xor ecx, esp
call fcn.00413017
add esp, 0xb4
ret 4