Function at 0x413110
Capabilities:
Check if file exists

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46fb34
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x460
mov eax, dword [0x4a5010]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov ecx, dword [edi + 0x494]
lea eax, [ebp - 0x24]
xorps xmm0, xmm0
push eax
movq qword [ebp - 0x24], xmm0
call fcn.00406ce0
cmp dword [ebx + 8], 0
mov dword [ebp - 4], 0
jne case.0x413193.106
mov esi, dword [ebx + 0xc]
lea eax, [esi - 0x63]
cmp eax, 0xca
ja case.0x413193.106
movzx eax, byte [eax + 0x413738]
jmp dword [eax*4 + 0x4136ec]
call fcn.00415050
jmp case.0x413193.106
xor ecx, ecx
cmp dword [0x4a9f44], ecx
push 3
sete cl
xor eax, eax
push 0
push 0
test ecx, ecx
mov dword [0x4a9f44], ecx
push 0
setne al
push 0
add eax, 0xfffffffe
push eax
push dword [edi + 0x25c]
call dword [sym.imp.USER32.dll_SetWindowPos]
jmp case.0x413193.106
push 0x414
lea eax, [ebp - 0x450]
push 0
push eax
call fcn.00458500
add esp, 0xc
lea ecx, [ebp - 0x450]
call fcn.004323f0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x450]
push dword [edi + 0x25c]
call dword [sym.imp.soui.dll_public_virtual:_int___thiscall_SOUI::SHostDialog::DoModal_struct_HWND____]
lea ecx, [ebp - 0x450]
call fcn.00432550
jmp case.0x413193.106
call fcn.00414310
jmp case.0x413193.106
push 0x104
lea eax, [ebp - 0x140]
push 0
push eax
call fcn.00458500
add esp, 0xc
mov dword [ebp - 0x454], 0x104
lea eax, [ebp - 0x454]
mov edx, 0x1c
mov ecx, str.aHR0cDovL2FiY2thbnR1LmNvbS8
push eax
lea eax, [ebp - 0x140]
push eax
call fcn.0043b950
lea ecx, [ebp - 0x140]
mov dword [ebp - 0x18], 0
add esp, 8
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x413280
sub ecx, edx
lea esi, [ecx + 1]
cmp esi, 0x3fffffff
jle 0x413298
xor eax, eax
jmp 0x4132b0
lea eax, [esi + esi]
call fcn.0046b9f0
mov ecx, esp
lea edx, [ebp - 0x140]
push 3
push esi
call fcn.00421750
push eax
lea ecx, [ebp - 0x18]
call fcn.00401980
push 3
push 0
push 0
push dword [ebp - 0x18]
push 0x48ca18
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
lea ecx, [ebp - 0x18]
call fcn.00401960
jmp case.0x413193.106
push 0x208
lea eax, [ebp - 0x248]
push 0
push eax
call fcn.00458500
add esp, 0xc
lea eax, [ebp - 0x248]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [ebp - 0x248]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRemoveFileSpecW]
push str.Update.exe
lea eax, [ebp - 0x248]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp - 0x248]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je case.0x413193.106
push 1
push 0
push str._Update0
lea eax, [ebp - 0x248]
push eax
push 0x48ca18
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
jmp case.0x413193.106
lea ecx, [ebp - 0x18]
mov dword [ebp - 0x18], 0
call fcn.0041b440
mov byte [ebp - 4], 2
lea edx, [ebp - 0x18]
mov ecx, dword [0x4a9d0c]
call fcn.00439f70
mov esi, dword [ebp - 0x18]
cmp dword [esi - 0xc], 0
jle 0x4133bc
lea eax, [ebp - 0x18]
mov edx, 0x48ca50
push eax
lea ecx, [ebp - 0x454]
call fcn.0041ae50
add esp, 4
push eax
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 3
call fcn.0041bc30
lea ecx, [ebp - 0x454]
mov byte [ebp - 4], 2
call fcn.00401960
mov esi, dword [ebp - 0x18]
push 0x400
lea eax, [ebp - 0x440]
push 0
push eax
call fcn.00458500
add esp, 0xc
lea ecx, [ebp - 0x440]
push esi
call fcn.00426cb0
mov byte [ebp - 4], 4
lea ecx, [ebp - 0x440]
push dword [edi + 0x25c]
call dword [sym.imp.soui.dll_public_virtual:_int___thiscall_SOUI::SHostDialog::DoModal_struct_HWND____]
lea ecx, [ebp - 0x440]
call fcn.00426d90
lea ecx, [ebp - 0x18]
call fcn.00401960
jmp case.0x413193.106
push 0x20
call fcn.0043fb25
mov esi, eax
add esp, 4
mov dword [ebp - 0x454], esi
mov byte [ebp - 4], 5
mov ecx, esi
push dword [edi + 0x438]
call dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::EventCmd::constructor_class_SOUI::SObjectImpl_struct_SOUI::IObject___]
push esi
mov dword [esi], vtable.SOUI::EventCmd.1.0
mov dword [esi + 8], vtable.SOUI::EventCmd.0
mov byte [ebp - 4], 0
call dword [sym.imp.soui.dll_public:_static_class_SOUI::SNotifyCenter____cdecl_SOUI::SSingleton_class_SOUI::SNotifyCenter_::getSingleton_void_]
mov ecx, eax
call dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::SNotifyCenter::FireEventAsync_class_SOUI::EventArgs__]
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
jmp case.0x413193.106
mov ecx, edi
call fcn.004177d0
jmp case.0x413193.106
mov ecx, edi
call fcn.00414990
jmp case.0x413193.106
mov ecx, edi
call fcn.00416190
jmp case.0x413193.106
mov ecx, edi
call fcn.00416380
jmp case.0x413193.106
mov edi, dword [ebp - 0x24]
mov dword [ebp - 0x18], 0
cmp dword [edi + 0x14], 8
jb 0x4134a0
mov eax, dword [edi]
jmp 0x4134a2
mov eax, edi
push eax
lea ecx, [ebp - 0x18]
call fcn.00401980
mov byte [ebp - 4], 6
push dword [ebp - 0x18]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4134c9
lea ecx, [ebp - 0x18]
call fcn.00401960
jmp case.0x413193.106
push dword [edi + 0x1c]
call dword [sym.imp.FreeImage.dll__FreeImage_GetWidth_4]
push dword [edi + 0x1c]
mov esi, eax
call dword [sym.imp.FreeImage.dll__FreeImage_GetHeight_4]
mov edi, eax
xorps xmm0, xmm0
lea eax, [ebp - 0x34]
push eax
movups xmmword [ebp - 0x34], xmm0
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [ebp - 0x34]
cmp ecx, esi
mov ecx, 3
jbe 0x413513
mov eax, dword [ebp - 0x28]
xor edx, edx
sub eax, dword [ebp - 0x30]
cmp eax, edi
cmova ecx, edx
mov edx, ecx
lea ecx, [ebp - 0x18]
call fcn.0043a060
lea ecx, [ebp - 0x18]
call fcn.00401960
jmp case.0x413193.106
mov ecx, dword [ebp - 0x24]
cmp dword [ecx + 0x14], 8
jb 0x413535
mov ecx, dword [ecx]
call fcn.0043a2f0
jmp case.0x413193.106
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x18], 0
cmp dword [eax + 0x14], 8
jb 0x413551
mov eax, dword [eax]
push eax
lea ecx, [ebp - 0x18]
call fcn.00401980
xorps xmm0, xmm0
lea ecx, [ebp - 0x34]
movups xmmword [ebp - 0x34], xmm0
call fcn.00437970
mov byte [ebp - 4], 8
mov edx, 1
mov eax, dword [ebp - 0x18]
sub edx, dword [eax - 4]
mov ecx, dword [eax - 8]
or ecx, edx
jge 0x41358c
push 0
lea ecx, [ebp - 0x18]
call fcn.004023a0
mov eax, dword [ebp - 0x18]
push eax
lea ecx, [ebp - 0x46c]
call fcn.0041ad40
lea eax, [ebp - 0x46c]
mov byte [ebp - 4], 9
push eax
lea ecx, [ebp - 0x34]
call fcn.004379f0
lea ecx, [ebp - 0x46c]
mov byte [ebp - 4], 8
call fcn.00408680
xor eax, eax
lea ecx, [ebp - 0x34]
cmp esi, 0xcf
setne al
add eax, 2
mov dword [ebp - 0x454], eax
lea eax, [ebp - 0x454]
push eax
call fcn.00437d50
mov byte [ebp - 4], 7
mov ecx, dword [ebp - 0x28]
test ecx, ecx
je 0x4135ee
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
lea ecx, [ebp - 0x18]
call fcn.00401960
jmp case.0x413193.106
mov ecx, dword [edi + 0x494]
lea eax, [ebp - 0x1c]
xorps xmm0, xmm0
push eax
movq qword [ebp - 0x1c], xmm0
call fcn.00406ce0
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x1c]
cmp dword [edx + 0x14], 8
jb 0x413621
mov edx, dword [edx]
sub esp, 0x18
mov ecx, esp
call fcn.0043abf0
call fcn.0043a9f0
add esp, 0x18
lea ecx, [ebp - 0x1c]
call fcn.004072a0
jmp case.0x413193.106
mov ecx, edi
call fcn.00414e40
jmp case.0x413193.106
xor eax, eax
lea ecx, [edi + 0x474]
cmp esi, 0x12d
setne al
push eax
mov dword [ebp - 0x454], eax
call fcn.004368e0
mov eax, dword [ebp - 0x454]
mov ecx, 0x4a9d08
mov dword [0x4a9f48], eax
call fcn.00424990
push 0
push 0
push dword [0x4a9fa4]
lea eax, [ebp - 0x18]
mov dword [ebp - 0x18], 8
push eax
push 0x10
call dword [sym.imp.USER32.dll_BroadcastSystemMessageW]
mov dword [ebp - 4], 0xb
mov esi, dword [ebp - 0x20]
test esi, esi
je 0x4136c4
or edi, 0xffffffff
mov eax, edi
lock xadd dword [esi + 4], eax
jne 0x4136c4
mov eax, dword [esi]
mov ecx, esi
call dword [eax]
lock xadd dword [esi + 8], edi
dec edi
jne 0x4136c4
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
lea esp, [ebp - 0x47c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0043f53f
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 0xc