Function at 0x405df0
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46aeea
mov eax, dword fs:[0]
push eax
sub esp, 0x84
mov eax, dword [0x4846a0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov edx, dword [ebp + 8]
mov dword [ebp - 4], 0
mov eax, dword [0x4877e8]
mov ecx, dword [0x487874]
mov dword [0x487b4c], eax
mov eax, dword [ebp + 0xc]
mov dword [0x487ac4], edx
mov edx, dword [ebp + 0x18]
mov dword [0x4879c0], ecx
mov ecx, dword [ebp + 0x10]
mov dword [0x487ad0], eax
mov eax, dword [ebp + 0x1c]
mov dword [0x487b0c], edx
mov edx, dword [0x484034]
mov dword [0x487ac8], ecx
mov dword [0x487b10], eax
mov eax, dword [edx + 0xc]
mov ecx, 0x484034
mov dword [0x487acc], edi
call eax
add eax, 0x10
mov dword [ebp - 0x90], eax
mov byte [ebp - 4], 1
mov ecx, dword [ebp + 0x14]
mov esi, dword [0x487a10]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x405eed
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x405edf
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x405edf
call fcn.004267f0
mov dword [ebp - 0x84], eax
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x405ece
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [ebp - 0x84]
add ecx, 0x10
mov dword [0x487a10], ecx
jmp 0x405eed
mov ebx, dword [ecx - 0xc]
push ecx
push 0x487a10
call fcn.00401320
mov edx, dword [ebp + 8]
push 0x487a14
push edi
push edx
call fcn.0041d010
test al, al
jne 0x405fb6
mov eax, dword [0x487a98]
mov eax, dword [eax - 0xc]
lea ebx, [eax + eax]
lea edi, [ebx + 2]
push edi
call fcn.0044fa71
mov esi, eax
add esp, 4
test esi, esi
je 0x405f57
push edi
push 0
push esi
call fcn.004534e0
mov eax, dword [0x487a98]
add esp, 0xc
cmp dword [eax - 4], 1
jle 0x405f4b
mov ecx, dword [eax - 0xc]
push ecx
push 0x487a98
call fcn.004011f0
mov eax, dword [0x487a98]
push ebx
push eax
push ebx
push esi
call fcn.0044eef7
add esp, 0x10
xor edx, edx
mov eax, esi
mov word [ebp - 0x2c], dx
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x1c], 0
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x405f70
sub eax, edx
sar eax, 1
push eax
mov eax, esi
lea ecx, [ebp - 0x2c]
call fcn.00430450
mov byte [ebp - 4], 2
mov edi, dword [0x487aa0]
lea ebx, [ebp - 0x2c]
lea esi, [ebp - 0x80]
call fcn.00422b30
push 0x47ba08
mov eax, esi
push eax
mov dword [ebp - 0x80], vtable.windows_error.0
mov dword [ebp - 0x38], edi
call fcn.00453410
mov ecx, dword [0x487a10]
mov eax, dword [ecx - 0xc]
test eax, eax
jne 0x406031
mov esi, 0x487a10
mov ecx, 0x487a14
call fcn.0041ce90
mov eax, dword [0x487924]
add eax, 0xfffffff0
call fcn.004267f0
add eax, 0x10
mov dword [ebp - 0x84], eax
push 2
push 0x472140
lea ebx, [ebp - 0x84]
mov byte [ebp - 4], 3
call fcn.00424980
mov esi, dword [ebp - 0x84]
mov ecx, dword [0x487a14]
mov edx, esi
call fcn.0041c530
lea eax, [esi - 0x10]
mov byte [ebp - 4], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x406031
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [0x487a40]
cmp dword [ecx - 0xc], 0
jne 0x40604c
push 0x487a40
push 0x487a14
call fcn.0041d320
mov eax, 0x487924
mov edi, 0x487a24
call fcn.00421640
push 0xc
push str..updater.exe
mov ebx, edi
call fcn.00424980
mov eax, 0x487924
mov edi, 0x487a28
call fcn.00421640
push 1
push 0x472164
mov ebx, edi
call fcn.00424980
mov eax, dword [0x487940]
mov ecx, dword [eax - 0xc]
push ecx
push eax
call fcn.00424980
mov eax, 0x487924
mov edi, 0x487a2c
call fcn.00421640
push 0xc
push 0x472168
mov ebx, edi
call fcn.00424980
mov eax, 0x487918
mov edi, 0x487a30
call fcn.00421640
mov eax, 0x487918
mov edi, 0x487a34
call fcn.00421640
push 0x12
push str._Service_Installer
mov ebx, edi
call fcn.00424980
mov edx, dword [0x487a20]
mov eax, dword [edx - 0xc]
test eax, eax
jne 0x40621a
push 0x487a20
push 0x487a14
call fcn.0041d490
mov eax, dword [0x487a24]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x8c], esp
mov esi, esp
call fcn.004267f0
add eax, 0x10
mov dword [esi], eax
mov byte [ebp - 4], 4
mov eax, dword [0x487a20]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x88], esp
mov esi, esp
call fcn.004267f0
add eax, 0x10
mov dword [esi], eax
mov bl, 1
lea esi, [ebp - 0x84]
mov byte [ebp - 4], bl
call fcn.0041ccc0
mov edi, 0x487a38
mov byte [ebp - 4], 5
call fcn.00421640
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x84]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40617b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [0x487a2c]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x88], esp
mov esi, esp
call fcn.004267f0
add eax, 0x10
mov dword [esi], eax
mov byte [ebp - 4], 6
mov eax, dword [0x487a20]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x8c], esp
mov esi, esp
call fcn.004267f0
add eax, 0x10
mov dword [esi], eax
lea esi, [ebp - 0x84]
mov byte [ebp - 4], bl
call fcn.0041ccc0
mov edi, 0x487a3c
mov byte [ebp - 4], 7
call fcn.00421640
mov byte [ebp - 4], bl
mov eax, dword [ebp - 0x84]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4061f6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [0x487a20]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40621c
mov edx, dword [0x487a20]
push edx
mov ecx, 0x487980
call fcn.0041c2e0
jmp 0x40621c
mov bl, 1
mov eax, dword [0x487a10]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4062c4
mov eax, dword [0x487a10]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x88], esp
mov esi, esp
call fcn.004267f0
add eax, 0x10
mov ecx, 0x487980
mov dword [esi], eax
call fcn.0041be10
test al, al
jne 0x4062c4
mov eax, 0x487980
call fcn.0041bd50
xor ecx, ecx
mov word [ebp - 0x2c], cx
mov ecx, eax
mov dword [ebp - 0x18], 7
mov dword [ebp - 0x1c], 0
lea esi, [ecx + 2]
lea esp, [esp]
mov dx, word [ecx]
add ecx, 2
test dx, dx
jne 0x406280
sub ecx, esi
sar ecx, 1
push ecx
lea ecx, [ebp - 0x2c]
call fcn.00430450
mov byte [ebp - 4], 8
mov edi, dword [0x487aa0]
lea ebx, [ebp - 0x2c]
lea esi, [ebp - 0x80]
call fcn.00422b30
push 0x47ba08
mov edx, esi
push edx
mov dword [ebp - 0x80], vtable.windows_error.0
mov dword [ebp - 0x38], edi
call fcn.00453410
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x90]
add eax, 0xfffffff0
mov byte [0x487aa4], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4062f0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406316
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0044ee97
mov esp, ebp
pop ebp
ret 0x18