Function at 0x47fae0
Capabilities:
Accept command line arguments
Check if file exists
Create process on windows
Hide graphical window
Set current directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x1384
call fcn.0058d800
mov eax, dword [0x62f570]
xor eax, esp
mov dword [esp + 0x1380], eax
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
push edx
push ecx
push eax
push edi
mov dword [esp + 0x48], edi
call fcn.00554ddd
call fcn.00553a48
xor ebx, ebx
push ebx
mov dword [eax + 0x10], 0x5f5b7c
call dword [sym.imp.ole32.dll_OleInitialize]
push 7
call sub.CrashReport.dll_Ordinal_1_1
lea eax, [esp + 0x3c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
cmp dword [esp + 0x3c], 2
mov esi, eax
jl 0x47fb80
mov ecx, dword [esi + 4]
push str._install
push ecx
call fcn.00584cce
add esp, 8
test eax, eax
jne 0x47fb80
lea eax, [ebx + 1]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1380]
xor ecx, esp
call fcn.0057ffd2
mov esp, ebp
pop ebp
ret 0x10
cmp dword [esp + 0x3c], 3
jl 0x47fbcb
mov edx, dword [esi + 4]
push str._preview_wmplayer
push edx
call fcn.00584cce
add esp, 8
test eax, eax
jne 0x47fbcb
mov eax, dword [esi + 8]
push 0xa
push ebx
push eax
call fcn.00584b2c
add esp, 0xc
mov esi, eax
mov ecx, edi
call fcn.0047f880
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1380]
xor ecx, esp
call fcn.0057ffd2
mov esp, ebp
pop ebp
ret 0x10
push esi
call dword [sym.imp.KERNEL32.dll_LocalFree]
push 1
call dword [sym.imp.Register.dll_SetDelayDays]
add esp, 4
push ebx
push ebx
push ebx
push str.Glarysoft_File_Recovery_Pro
call dword [sym.imp.Register.dll_AutoCheckLogin]
add esp, 0x10
push 0xc
mov edx, str.Glarysoft_File_Recovery
mov esi, 0x640a4c
call fcn.00479880
mov ecx, dword [0x640a5c]
cmp ecx, ebx
je 0x47fc29
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
push 0xffffffffffffffff
call eax
mov ecx, dword [0x640a5c]
mov edx, dword [ecx]
mov eax, dword [edx + 0x14]
mov esi, dword [0x640a54]
call eax
cmp esi, ebx
jne 0x47fc5f
call fcn.00479c10
push eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x47fc5f
call fcn.00479c10
push eax
call dword [sym.imp.USER32.dll_SetForegroundWindow]
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1380]
xor ecx, esp
call fcn.0057ffd2
mov esp, ebp
pop ebp
ret 0x10
push 0x5f53f4
call dword [sym.imp.USER32.dll_RegisterWindowMessageW]
push str.user32.dll
mov dword [0x640778], eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
cmp eax, ebx
je 0x47fca4
push str.ChangeWindowMessageFilter
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
cmp esi, ebx
je 0x47fca4
mov ecx, dword [0x640778]
push 1
push ecx
call esi
push 1
push 0x111
call esi
push 0x1088
mov dword [esp + 0x44], ebx
call fcn.0053a82a
add esp, 4
cmp eax, ebx
je 0x47fcc7
push eax
call fcn.004833c0
mov esi, eax
mov dword [esp + 0x14], esi
jmp 0x47fccd
mov dword [esp + 0x14], ebx
mov esi, ebx
push 0x206
lea eax, [esp + 0x1186]
xor edx, edx
push ebx
push eax
mov word [esp + 0x118c], dx
call fcn.00589f50
add esp, 0xc
push 0x208
lea ecx, [esp + 0x1184]
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea edx, [esp + 0x1180]
push 0x5c
push edx
mov edi, 0x5f59cc
call fcn.0058444b
lea ecx, [eax + 2]
add esp, 8
sub ecx, edi
lea ecx, [ecx]
movzx eax, word [edi]
mov word [ecx + edi], ax
add edi, 2
cmp ax, bx
jne 0x47fd20
lea eax, [esp + 0x1180]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
lea ecx, [esp + 0x18]
push ecx
mov ecx, esi
mov dword [esp + 0x28], ebx
mov dword [esp + 0x1c], ebx
call fcn.004832f0
lea edx, [esp + 0x24]
push edx
mov ecx, esi
call fcn.004831e0
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
mov edx, dword [esp + 0x24]
mov eax, dword [eax + 0x10]
push edx
call eax
push 0xe8
call fcn.0053a82a
mov edi, eax
add esp, 4
cmp edi, ebx
je 0x47fdb8
mov ecx, dword [sym.imp.soui.dll_const_SOUI::SObjectDefaultRegister::vftable]
mov eax, dword [esp + 0x38]
push ebx
lea edx, [esp + 0x48]
push edx
push str.SOUIHOST
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x24]
push eax
push ecx
mov ecx, edi
call dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::SApplication::constructor_struct_SOUI::IRenderFactory___struct_HINSTANCE_____wchar_t_const___struct_SOUI::ISystemObjectRegister_const___int_]
mov dword [edi], vtable.SOUI::SApplication.0
mov dword [edi + 4], vtable.SOUI::SApplication.1.0
mov eax, edi
jmp 0x47fdba
xor eax, eax
lea ecx, [eax + 4]
mov dword [0x6407b0], eax
call fcn.004819d0
mov ecx, dword [0x6407b0]
add ecx, 4
call fcn.00481a20
mov ecx, dword [0x6407b0]
add ecx, 4
call fcn.00481a70
mov ecx, dword [0x6407b0]
add ecx, 4
call fcn.00481ac0
mov ecx, dword [0x6407b0]
add ecx, 4
call fcn.00481b10
mov ecx, dword [0x6407b0]
add ecx, 4
call fcn.00481b60
mov ecx, dword [0x6407b0]
add ecx, 4
call fcn.00481bb0
mov ecx, dword [0x6407b0]
add ecx, 4
call fcn.00481c00
mov ecx, dword [0x6407b0]
add ecx, 4
call fcn.00481c50
mov ecx, dword [0x6407b0]
add ecx, 4
call fcn.00481ca0
mov ecx, dword [0x6407b0]
add ecx, 4
call fcn.00481cf0
mov ecx, dword [0x6407b0]
add ecx, 4
call fcn.00481d40
push 8
call fcn.0053a82a
add esp, 4
cmp eax, ebx
je 0x47fe86
mov dword [eax], vtable.SOUI::TObjRefImpl_struct_SOUI::IRealWndHandler_.0
mov dword [eax + 4], 1
mov dword [eax], vtable.SOUI::CRealWndHandler.0
mov esi, eax
jmp 0x47fe88
xor esi, esi
mov ecx, dword [0x6407b0]
push esi
call dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::SApplication::SetRealWndHandler_struct_SOUI::IRealWndHandler__]
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, esi
call eax
push str.soui_sys_resource.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov esi, eax
cmp esi, ebx
je 0x47fef6
lea ecx, [esp + 0x28]
push ecx
push ebx
mov dword [esp + 0x30], ebx
call dword [sym.imp.soui.dll_int___cdecl_SOUI::CreateResProvider_enum_SOUI::BUILTIN_RESTYPE__struct_IObjRef___]
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
add esp, 8
push ebx
push esi
call eax
mov ecx, dword [esp + 0x28]
push ecx
mov ecx, dword [0x6407b0]
call dword [sym.imp.soui.dll_public:_unsigned_int___thiscall_SOUI::SApplication::LoadSystemNamedResource_struct_SOUI::IResProvider__]
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov ecx, dword [esp + 0x28]
cmp ecx, ebx
je 0x47fef6
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x14]
lea ecx, [esp + 0x1c]
push ecx
mov ecx, esi
mov dword [esp + 0x20], ebx
call fcn.00483150
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x58], edx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x5c], str.uires.zip
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x68], 0x5e1790
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
push ebx
lea edx, [esp + 0x58]
push edx
call eax
mov ecx, dword [0x6407b0]
push 1
push 0xb4
push 0x5e9b38
call dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::SApplication::InitXmlNamedID_struct_SOUI::TNAMEDVALUE_int__const___int__int_]
mov ecx, dword [esp + 0x1c]
push str.uidef:xml_init
push ecx
mov ecx, dword [0x6407b0]
add ecx, 0x10
call dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::SResProviderMgr::AddResProvider_struct_SOUI::IResProvider___wchar_t_const__]
lea edx, [esp + 0xff8]
push edx
mov dword [esp + 0x24], ebx
call fcn.004262c0
lea eax, [esp + 0x20]
push eax
mov ecx, esi
call fcn.004830c0
mov eax, dword [esp + 0x20]
cmp eax, ebx
je 0x47ffbf
mov ecx, dword [0x6407b0]
push eax
call dword [sym.imp.soui.dll_public:_void___thiscall_SOUI::SApplication::SetTranslator_struct_SOUI::ITranslatorMgr__]
push ebx
push ebx
lea ecx, [esp + 0x1000]
call fcn.004263c0
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx]
mov edx, dword [edx + 0x18]
lea eax, [esp + 0xff8]
push eax
call edx
lea ecx, [esp + 0x10b8]
call dword [sym.imp.utilities.dll_public:_void___thiscall_pugi::xml_document::constructor_void_]
mov ecx, dword [0x6407b0]
push str.LAYOUT
push str.XML_MESSAGE
lea eax, [esp + 0x10c0]
push eax
call dword [sym.imp.soui.dll_public:_int___thiscall_SOUI::SApplication::LoadXmlDocment_class_pugi::xml_document___wchar_t_const___wchar_t_const__]
test eax, eax
je 0x480012
push ebx
push str.SOUI
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x10c4]
call dword [sym.imp.utilities.dll_public:_class_pugi::xml_node___thiscall_pugi::xml_node::child_wchar_t_const___bool_]
mov edx, dword [eax]
push edx
call dword [sym.imp.soui.dll_int___cdecl_SOUI::SetMsgTemplate_class_pugi::xml_node_]
add esp, 4
lea ecx, [esp + 0x10b8]
call dword [sym.imp.utilities.dll_public:_void___thiscall_pugi::xml_document::destructor_void_]
push ebx
call fcn.005546b4
add esp, 4
call fcn.004812c0
test eax, eax
je 0x480045
push ebx
push ebx
push ebx
push ebx
push ebx
push 0x47f9b0
call fcn.0053d75c
jmp 0x48028c
call fcn.0053a8e1
cmp eax, ebx
jne 0x480058
push 0x80004005
call fcn.004015b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
mov edi, eax
add edi, 0x10
mov dword [esp + 0x34], edi
call fcn.0053a8e1
cmp eax, ebx
jne 0x48007d
push 0x80004005
call fcn.004015b0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
mov dword [esp + 0x2c], 0x10000
mov edx, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
mov ebx, eax
add ebx, 0x10
sub edx, 0x8000
or ecx, edx
mov dword [esp + 0x30], ebx
jge 0x4800be
push 0x8000
lea ecx, [esp + 0x38]
call fcn.004062b0
mov edi, dword [esp + 0x34]
mov esi, dword [sym.imp.Config.dll_Ordinal_11]
lea eax, [esp + 0x2c]
push eax
push edi
push 0
push str.UpdateFile
push 0x5e1594
push reloc.OLEAUT32.dll_SysReAllocString
call esi
mov dword [esp + 0x44], 0x10000
mov edx, dword [ebx - 8]
mov ecx, 1
sub ecx, dword [ebx - 4]
sub edx, 0x8000
add esp, 0x18
or ecx, edx
mov dword [esp + 0x48], eax
jge 0x480113
push 0x8000
lea ecx, [esp + 0x34]
call fcn.004062b0
mov ebx, dword [esp + 0x30]
lea eax, [esp + 0x2c]
push eax
push ebx
push 0
push str.UpdateVer
push 0x5e1594
push reloc.OLEAUT32.dll_SysReAllocString
call esi
mov eax, dword [edi - 8]
push eax
push edi
call fcn.0058429c
add esp, 0x20
test eax, eax
jl 0x48043d
cmp eax, dword [edi - 8]
jg 0x48043d
mov dword [edi - 0xc], eax
xor ecx, ecx
mov word [edi + eax*2], cx
mov eax, dword [ebx - 8]
push eax
push ebx
call fcn.0058429c
add esp, 8
test eax, eax
jl 0x48043d
cmp eax, dword [ebx - 8]
jg 0x48043d
xor edx, edx
mov dword [ebx - 0xc], eax
mov word [ebx + eax*2], dx
cmp dword [esp + 0x48], edx
jne 0x48024e
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x48024e
lea esi, [esp + 0x4c]
call fcn.00480a70
mov eax, dword [eax]
push 0x24
push eax
push str.2302007
push 0
call fcn.004261c0
add esp, 0x10
cmp eax, 6
mov ecx, esi
sete byte [esp + 0x13]
call fcn.00401590
cmp byte [esp + 0x13], 0
je 0x48024e
push 1
push 0
push 0
push edi
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
lea ecx, [esp + 0x30]
call fcn.00401590
lea ecx, [esp + 0x34]
call fcn.00401590
lea ecx, [esp + 0xff8]
call fcn.00426360
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x480208
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x480217
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x480226
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x480235
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1380]
xor ecx, esp
call fcn.0057ffd2
mov esp, ebp
pop ebp
ret 0x10
add ebx, 0xfffffff0
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x48026a
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
add edi, 0xfffffff0
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x480286
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov esi, dword [esp + 0x14]
xor ebx, ebx
call fcn.00553a48
mov ecx, dword [esp + 0x38]
lea edx, [esp + 0xbe8]
push edx
mov dword [eax + 8], ecx
call fcn.00402170
push ebx
lea ecx, [esp + 0xbec]
call dword [sym.imp.soui.dll_public_virtual:_int___thiscall_SOUI::SHostDialog::DoModal_struct_HWND____]
cmp eax, 1
jne 0x4803a3
call fcn.00428310
push ebx
push 0x47f290
mov esi, 0x640f48
call fcn.00485eb0
lea eax, [esp + 0x70]
push eax
call fcn.004317e0
lea ecx, [esp + 0x4dc]
push ecx
lea ebx, [esp + 0xf98]
call fcn.00413d40
push 0
push 0
push 0
push 0
call dword [sym.imp.USER32.dll_GetActiveWindow]
push eax
lea ecx, [esp + 0x84]
call dword [sym.imp.soui.dll_public:_struct_HWND______thiscall_SOUI::SHostWnd::Create_struct_HWND_____int__int__int__int_]
mov edx, dword [esp + 0x2b8]
push 0
push 0
push pe_nt_image_headers32
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [esp + 0x2b8]
push eax
lea ecx, [esp + 0x2b0]
call dword [sym.imp.soui.dll_public:_int___thiscall_SOUI::CSimpleWnd::CenterWindow_struct_HWND____]
mov ecx, dword [esp + 0x2b8]
push 1
push ecx
call dword [sym.imp.USER32.dll_ShowWindow]
mov edx, dword [esp + 0x2b8]
push edx
call fcn.00479b60
mov eax, dword [esp + 0x2b8]
mov ecx, dword [0x6407b0]
push eax
call dword [sym.imp.soui.dll_public:_int___thiscall_SOUI::SApplication::Run_struct_HWND____]
mov ecx, dword [0x634724]
push ecx
mov dword [esp + 0x44], eax
mov dword [0x634728], 1
call dword [sym.imp.WS2_32.dll_closesocket]
push 0x7d0
call dword [sym.imp.KERNEL32.dll_Sleep]
call fcn.00428750
lea edx, [esp + 0x70]
push edx
call fcn.00431ba0
mov esi, dword [esp + 0x14]
xor ebx, ebx
lea ecx, [esp + 0xbe8]
call fcn.00402270
mov ecx, dword [0x6407b0]
cmp ecx, ebx
je 0x4803c1
mov eax, dword [ecx]
mov edx, dword [eax]
push 1
call edx
lea ecx, [esp + 0xff8]
call fcn.00426360
mov ecx, dword [esp + 0x20]
cmp ecx, ebx
je 0x4803dc
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
mov ecx, dword [esp + 0x1c]
cmp ecx, ebx
je 0x4803eb
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
mov ecx, dword [esp + 0x18]
cmp ecx, ebx
je 0x4803fa
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
mov ecx, dword [esp + 0x24]
cmp ecx, ebx
je 0x480409
mov eax, dword [ecx]
mov edx, dword [eax + 4]
call edx
cmp esi, ebx
je 0x48041c
push esi
call fcn.0047f7b0
push esi
call fcn.0053a859
add esp, 4
call dword [sym.imp.ole32.dll_OleUninitialize]
mov ecx, dword [esp + 0x138c]
mov eax, dword [esp + 0x40]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0057ffd2
mov esp, ebp
pop ebp
ret 0x10
push 0x80070057
call fcn.004015b0
int3