Function at 0x404a80
Capabilities:
Check if file exists

Disassembly:
push 0xffffffffffffffff
push 0x421258
mov eax, dword fs:[0]
push eax
sub esp, 0x68
mov eax, dword [0x42b1d0]
xor eax, esp
mov dword [esp + 0x64], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x42b1d0]
xor eax, esp
push eax
lea eax, [esp + 0x7c]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x8c]
mov edi, ecx
push str.InstallPatch_run..
mov dword [esp + 0x20], edi
call fcn.004124a0
add esp, 4
lea ecx, [esp + 0x5c]
call fcn.0040fd30
xor eax, eax
mov dword [esp + 0x84], eax
push eax
push 0x423d93
lea ecx, [esp + 0x48]
mov dword [esp + 0x60], 0xf
mov dword [esp + 0x5c], eax
mov byte [esp + 0x4c], al
call fcn.00401c30
mov byte [esp + 0x84], 1
mov esi, dword [edi + 0xa0]
cmp esi, dword [edi + 0xa4]
jbe 0x404b18
call fcn.00413a68
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 0x94]
mov edi, esi
mov dword [esp + 0x18], 0
cmp ebp, 4
ja case.default.0x404b31
jmp dword [ebp*4 + 0x40505c]
mov dword [esp + 0x18], str.winxp_sp0
jmp case.default.0x404b31
mov dword [esp + 0x18], str.winxp_sp1
jmp case.default.0x404b31
mov dword [esp + 0x18], str.winxp_sp2
jmp case.default.0x404b31
mov dword [esp + 0x18], str.winxp_sp3
jmp case.default.0x404b31
mov dword [esp + 0x18], str.WinVistaOrHigher
mov ebp, 0x10
lea ecx, [ecx]
mov esi, dword [eax + 0xa4]
cmp dword [eax + 0xa0], esi
jbe 0x404b87
call fcn.00413a68
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x94]
test ebx, ebx
je 0x404b95
cmp ebx, eax
je 0x404b9a
call fcn.00413a68
cmp edi, esi
je 0x404fef
push 0
push 0x423d93
lea ecx, [esp + 0x2c]
mov dword [esp + 0x44], 0xf
mov dword [esp + 0x40], 0
mov byte [esp + 0x30], 0
call fcn.00401c30
push 0
push 0x423d93
lea ecx, [esp + 0x48]
mov byte [esp + 0x8c], 2
call fcn.00401c30
push 0
lea eax, [esp + 0x60]
push eax
or eax, 0xffffffff
lea esi, [esp + 0x48]
call fcn.00401b40
test ebx, ebx
jne 0x404c29
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404c07
call fcn.00413a68
cmp dword [edi + 0x70], 0
je 0x404c2d
mov byte [esp + 0x84], 1
cmp dword [esp + 0x3c], ebp
jb 0x404fca
mov ecx, dword [esp + 0x28]
push ecx
jmp 0x404fc2
mov eax, dword [ebx]
jmp 0x404bfd
test ebx, ebx
jne 0x404c4c
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404c42
call fcn.00413a68
cmp dword [edi + 0x18], ebp
jb 0x404c50
mov eax, dword [edi + 4]
jmp 0x404c53
mov eax, dword [ebx]
jmp 0x404c38
lea eax, [edi + 4]
mov edx, dword [esp + 0x18]
push edx
push eax
call fcn.00413540
add esp, 8
test eax, eax
jne 0x404c8f
test ebx, ebx
jne 0x404f97
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404c7e
call fcn.00413a68
cmp dword [edi + 0x50], ebp
jb 0x404f9e
mov eax, dword [edi + 0x3c]
jmp 0x404fa1
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
test esi, esi
je 0x404e2e
lea ecx, [esp + 0x20]
push ecx
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call esi
test eax, eax
je 0x404e2e
cmp dword [esp + 0x20], 0
je 0x404e2e
test ebx, ebx
jne 0x404cf0
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404ce6
call fcn.00413a68
cmp dword [edi + 0x34], ebp
jb 0x404cf4
mov eax, dword [edi + 0x20]
jmp 0x404cf7
mov eax, dword [ebx]
jmp 0x404cdc
lea eax, [edi + 0x20]
push 0x424984
push eax
call fcn.00413540
add esp, 8
test eax, eax
je 0x404c65
test ebx, ebx
jne 0x404d79
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404d22
call fcn.00413a68
push 0
lea edx, [edi + 0x38]
push edx
or eax, 0xffffffff
lea esi, [esp + 0x48]
call fcn.00401b40
push 1
push 0x423ddc
mov eax, esi
call fcn.00401740
mov eax, dword [esp + 0x44]
cmp dword [esp + 0x58], ebp
jae 0x404d50
lea eax, [esp + 0x44]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
mov eax, dword [esp + 0x44]
jne 0x404d7d
cmp dword [esp + 0x58], ebp
jae 0x404d69
lea eax, [esp + 0x44]
push eax
push str._s_is_not_exist
call fcn.00412560
jmp 0x404fac
mov eax, dword [ebx]
jmp 0x404d18
cmp dword [esp + 0x58], ebp
jae 0x404d87
lea eax, [esp + 0x44]
push eax
push str.install_patch__s
call fcn.004124a0
add esp, 8
push 1
push 0x4249ac
lea ecx, [esp + 0x2c]
call fcn.00401c30
push 0
lea ecx, [esp + 0x44]
push ecx
or eax, 0xffffffff
lea esi, [esp + 0x2c]
call fcn.00401b40
push 2
push 0x4249b0
mov eax, esi
call fcn.00401740
test ebx, ebx
jne 0x404e26
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404ddb
call fcn.00413a68
push 0
lea edx, [edi + 0x54]
push edx
or eax, 0xffffffff
lea esi, [esp + 0x2c]
call fcn.00401b40
mov esi, dword [esp + 0x28]
cmp dword [esp + 0x3c], ebp
jae 0x404dfb
lea esi, [esp + 0x28]
push 1
call fcn.004102a0
add esp, 4
test ebx, ebx
jne 0x404e2a
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404e1a
call fcn.00413a68
mov dword [edi + 0x70], 1
jmp 0x404faf
mov eax, dword [ebx]
jmp 0x404dd1
mov eax, dword [ebx]
jmp 0x404e10
test ebx, ebx
jne 0x404e4d
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404e43
call fcn.00413a68
cmp dword [edi + 0x34], ebp
jb 0x404e51
mov eax, dword [edi + 0x20]
jmp 0x404e54
mov eax, dword [ebx]
jmp 0x404e39
lea eax, [edi + 0x20]
push 0x4249b4
push eax
call fcn.00413540
add esp, 8
test eax, eax
je 0x404f8f
test ebx, ebx
jne 0x404ee2
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404e7f
call fcn.00413a68
push 0
lea ecx, [edi + 0x38]
push ecx
or eax, 0xffffffff
lea esi, [esp + 0x48]
call fcn.00401b40
mov eax, dword [esp + 0x44]
cmp dword [esp + 0x58], ebp
jae 0x404e9f
lea eax, [esp + 0x44]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x404ee6
mov eax, dword [esp + 0x44]
cmp dword [esp + 0x58], ebp
jae 0x404eb8
lea eax, [esp + 0x44]
push eax
push str._s_is_not_exist
call fcn.00412560
add esp, 8
mov byte [esp + 0x84], 1
cmp dword [esp + 0x3c], ebp
jb 0x404fca
mov edx, dword [esp + 0x28]
push edx
jmp 0x404fc2
mov eax, dword [ebx]
jmp 0x404e75
push 1
push 0x4249ac
lea ecx, [esp + 0x2c]
call fcn.00401c30
push 0
lea eax, [esp + 0x44]
push eax
or eax, 0xffffffff
lea esi, [esp + 0x2c]
call fcn.00401b40
push 2
push 0x4249b0
mov eax, esi
call fcn.00401740
test ebx, ebx
jne 0x404f87
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404f2c
call fcn.00413a68
push 0
lea ecx, [edi + 0x54]
push ecx
or eax, 0xffffffff
lea esi, [esp + 0x2c]
call fcn.00401b40
mov esi, dword [esp + 0x28]
cmp dword [esp + 0x3c], ebp
jae 0x404f4c
lea esi, [esp + 0x28]
push 1
call fcn.004102a0
add esp, 4
test ebx, ebx
jne 0x404f8b
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404f6b
call fcn.00413a68
mov byte [esp + 0x84], 1
mov dword [edi + 0x70], 1
cmp dword [esp + 0x3c], ebp
jb 0x404fca
mov edx, dword [esp + 0x28]
push edx
jmp 0x404fc2
mov eax, dword [ebx]
jmp 0x404f22
mov eax, dword [ebx]
jmp 0x404f61
test ebx, ebx
je 0x404c6d
mov eax, dword [ebx]
jmp 0x404c74
lea eax, [edi + 0x3c]
push eax
push str.this_patch__s_need_not_install...
call fcn.004124a0
add esp, 8
mov byte [esp + 0x84], 1
cmp dword [esp + 0x3c], ebp
jb 0x404fca
mov eax, dword [esp + 0x28]
push eax
call fcn.0041288e
add esp, 4
test ebx, ebx
jne 0x404feb
call fcn.00413a68
xor eax, eax
cmp edi, dword [eax + 0x10]
jb 0x404fdf
call fcn.00413a68
mov eax, dword [esp + 0x1c]
add edi, 0x74
jmp 0x404b70
mov eax, dword [ebx]
jmp 0x404fd5
push str.InstallPatch_exit..
call fcn.004124a0
add esp, 4
cmp dword [esp + 0x58], ebp
jb 0x40500f
mov ecx, dword [esp + 0x44]
push ecx
call fcn.0041288e
add esp, 4
mov dword [esp + 0x58], 0xf
mov dword [esp + 0x54], 0
mov byte [esp + 0x44], 0
cmp dword [esp + 0x74], ebp
jb 0x405037
mov edx, dword [esp + 0x60]
push edx
call fcn.0041288e
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0x7c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x64]
xor ecx, esp
call fcn.00412899
add esp, 0x74
ret 4