Function at 0x4502a0
Capabilities:
Check if file exists

Disassembly:
push 0xffffffffffffffff
push 0x495798
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4bea30]
xor eax, esp
push eax
lea eax, [esp + 0x24]
mov dword fs:[0], eax
mov esi, ecx
mov ebp, dword [esp + 0x34]
push str.LoadDownloadLibraryDependOnItem
push 0x4ab404
call fcn.0042af10
add esp, 8
push ebp
call fcn.0044fc80
test eax, eax
je 0x450307
push 1
push str.LoadDownloadLibraryDependOnItem
push 0x4ab404
call fcn.0042b190
add esp, 0xc
mov eax, 1
jmp 0x4505bc
xor edi, edi
call fcn.0045525d
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x450323
push 0x80004005
call fcn.004022b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], edi
mov edx, dword [esi]
mov edx, dword [edx + 0x28]
lea eax, [esp + 0x18]
push eax
push edi
mov ecx, esi
call edx
test eax, eax
je 0x45057f
call fcn.0045525d
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x450368
push 0x80004005
call fcn.004022b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov byte [esp + 0x2c], 1
call fcn.00434a50
mov edi, eax
call fcn.00430330
push edi
lea ecx, [esp + 0x38]
call fcn.00404740
push edi
mov byte [esp + 0x30], 2
call fcn.0045505b
mov ecx, dword [esp + 0x1c]
add esp, 4
push ecx
lea edi, [esp + 0x18]
mov eax, 1
call fcn.00430810
add esp, 4
test eax, eax
je 0x4503f0
mov eax, dword [ebp + 8]
mov edx, edi
push edx
push eax
call fcn.00435540
call fcn.00433870
mov ebx, dword [esp + 0x14]
lea ecx, [esp + 0x34]
push ecx
call fcn.004339c0
mov edx, dword [esp + 0x38]
add esp, 4
push edx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4504de
call fcn.0045525d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x45040a
push 0x80004005
call fcn.004022b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov ebx, 3
mov byte [esp + 0x2c], bl
call fcn.0045525d
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x45043d
push 0x80004005
call fcn.004022b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov byte [esp + 0x2c], 4
mov ecx, dword [esp + 0x18]
push ecx
lea edi, [esp + 0x24]
mov eax, 2
call fcn.00430810
mov esi, dword [esp + 0x24]
add esp, 4
test eax, eax
je 0x450499
mov edx, dword [esp + 0x18]
push edx
lea edi, [esp + 0x20]
mov eax, ebx
call fcn.00430810
add esp, 4
test eax, eax
je 0x450499
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x34]
push eax
push ecx
push ebp
mov ecx, esi
call fcn.0044fe10
mov byte [esp + 0x2c], bl
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4504bd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esi - 0x10]
mov byte [esp + 0x2c], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4504de
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [ebp + 0x40], 0
mov esi, 1
jne 0x450500
mov ecx, dword [esp + 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
xor edx, edx
test eax, eax
setne dl
mov dword [ebp + 0x40], eax
mov esi, edx
call dword [sym.imp.KERNEL32.dll_GetLastError]
test esi, esi
mov edi, esi
je 0x450535
mov ecx, dword [esp + 0x34]
mov eax, dword [ebp + 8]
push ecx
push eax
mov eax, str._IDEA_
mov ecx, 1
call fcn.00435f90
mov esi, dword [esp + 0x34]
push str.IDEA
call fcn.0042b470
add esp, 4
mov byte [esp + 0x2c], 1
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x45055a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c], 0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x45057f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push edi
push str.LoadDownloadLibraryDependOnItem
push 0x4ab404
call fcn.0042b190
mov dword [esp + 0x38], 0xffffffff
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4505ba
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, edi
mov ecx, dword [esp + 0x24]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1c
ret 4