Function at 0x424d09
Capabilities:
Accept command line arguments
Check if file exists
Get common file path
Read .ini file
Set current directory

Disassembly:
push ebp
lea ebp, [esp - 0x1c50]
mov eax, 0x1c50
call fcn.00425ec0
push 0xffffffffffffffff
push 0x431e23
mov eax, dword fs:[0]
push eax
sub esp, 0xc
mov eax, dword [0x4490e8]
xor eax, ebp
mov dword [ebp + 0x1c4c], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x14], ecx
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov ecx, 0x800
push ecx
push eax
push ecx
lea eax, [ebp + 0x1c]
push eax
call dword [sym.imp.MSVCR90.dll_wcsncpy_s]
lea eax, [ebp + 0x1c]
push eax
call dword [sym.imp.MSVCR90.dll__wcsupr]
lea eax, [ebp + 0x1c]
push str._NOLIVEUPDATE
push eax
call dword [sym.imp.MSVCR90.dll_wcsstr]
xor edi, edi
add esp, 0x1c
cmp eax, edi
jne 0x4250d3
xor eax, eax
mov ebx, 0x206
push ebx
mov word [ebp + 0x1224], ax
lea eax, [ebp + 0x1226]
push edi
push eax
call sub.MSVCR90.dll_memset
xor eax, eax
push ebx
mov word [ebp + 0x1a44], ax
lea eax, [ebp + 0x1a46]
push edi
push eax
call sub.MSVCR90.dll_memset
lea eax, [ebp + 0x1224]
push eax
call fcn.00416133
add esp, 0x1c
mov esi, 0x104
push esi
lea eax, [ebp + 0x1a44]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 0x44baf0
push esi
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push esi
lea eax, [ebp + 0x1a44]
push eax
mov edi, 0x44b8e8
push edi
call dword [sym.imp.MSVCR90.dll_wcsncpy]
add esp, 0xc
push 0x439f20
push edi
mov edi, dword [sym.imp.SHLWAPI.dll_PathAppendW]
call edi
push 0x44b8e8
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
sub esp, 0x1c
lea eax, [ebp + 0x1a44]
mov ecx, esp
mov dword [ebp - 0x10], esp
push eax
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
lea eax, [ebp]
push eax
call fcn.00411bee
and dword [ebp - 4], 0
push esi
lea eax, [ebp + 0x1224]
push eax
lea eax, [ebp + 0x101c]
push eax
call dword [sym.imp.MSVCR90.dll_wcsncpy]
add esp, 0x2c
push str.....TPdownload_interface.dll
lea eax, [ebp + 0x101c]
push eax
call edi
xor eax, eax
push ebx
push eax
mov word [ebp + 0x142c], ax
lea eax, [ebp + 0x142e]
push eax
call sub.MSVCR90.dll_memset
push esi
lea eax, [ebp + 0x1a44]
push eax
lea eax, [ebp + 0x142c]
push esi
push eax
call dword [sym.imp.MSVCR90.dll_wcsncpy_s]
add esp, 0x1c
push str...XLLiveUD.exe
lea eax, [ebp + 0x142c]
push eax
call edi
lea eax, [ebp + 0x142c]
push eax
call fcn.004010cd
push 2
push 1
push 0x4244f8
lea eax, [ebp + 0x101c]
push eax
lea ecx, [ebp]
call dword [sym.imp.MSVCP90.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
push 0x439540
push str.xl_video_pc
push str.eGxfdmlkZW9fcGMACgAB
call fcn.0040103c
xor eax, eax
push ebx
push eax
mov word [ebp + 0x183c], ax
lea eax, [ebp + 0x183e]
push eax
mov dword [ebp - 0x18], 0xf
mov dword [ebp - 0x10], 0xb4
call sub.MSVCR90.dll_memset
push esi
lea eax, [ebp + 0x1a44]
push eax
lea eax, [ebp + 0x183c]
push esi
push eax
call dword [sym.imp.MSVCR90.dll_wcsncpy_s]
add esp, 0x1c
push str...xmp.ini
lea eax, [ebp + 0x183c]
push eax
call edi
lea eax, [ebp + 0x183c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x424f71
lea eax, [ebp + 0x183c]
push eax
push 0xf
push str.AutoUpdate
push str.TimerSetting
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov dword [ebp - 0x18], eax
lea eax, [ebp + 0x183c]
push eax
push 0xb4
push str.AutoUpdateWithXar
push str.TimerSetting
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov dword [ebp - 0x10], eax
xor eax, eax
push ebx
push eax
mov word [ebp + 0x1634], ax
lea eax, [ebp + 0x1636]
push eax
call sub.MSVCR90.dll_memset
push esi
lea eax, [ebp + 0x1a44]
push eax
lea eax, [ebp + 0x1634]
push esi
push eax
call dword [sym.imp.MSVCR90.dll_wcsncpy_s]
add esp, 0x1c
push str.......xarliveupdatexlliveupdate.ini
lea eax, [ebp + 0x1634]
push eax
call edi
mov esi, str.CThunderUpdate::Init
push esi
call fcn.0041240d
pop ecx
test eax, eax
jne 0x424fed
push 1
lea eax, [ebp + 0x1634]
push eax
push str.szConfigPath:
push dword [ebp - 0x14]
push esi
call fcn.00410c48
pop ecx
pop ecx
mov ecx, eax
call fcn.004138f2
mov ecx, eax
call fcn.00416d4b
mov ecx, eax
call fcn.00413815
lea eax, [ebp + 0x1634]
push eax
push 0
push str.value
push str.LoadLiveUDNoDelay
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push esi
mov edi, eax
call fcn.0041240d
pop ecx
test eax, eax
jne 0x42503b
push 1
push edi
push str.dwLoadLiveUDNoDelay:
push dword [ebp - 0x14]
push esi
call fcn.00410c48
pop ecx
pop ecx
mov ecx, eax
call fcn.004138f2
mov ecx, eax
call fcn.00416ccd
mov ecx, eax
call fcn.00413815
test edi, edi
je 0x425044
xor edi, edi
inc edi
jmp 0x425047
mov edi, dword [ebp - 0x10]
push esi
call fcn.0041240d
mov ebx, dword [ebp - 0x18]
pop ecx
test eax, eax
jne 0x425091
push 1
push edi
push str.__uiElapseXarUpdate:
push ebx
push str.uiElapseAutoUpdate:
push dword [ebp - 0x14]
push esi
call fcn.00410c48
pop ecx
pop ecx
mov ecx, eax
call fcn.004138f2
mov ecx, eax
call fcn.0042074d
mov ecx, eax
call fcn.004138f2
mov ecx, eax
call fcn.0042074d
mov ecx, eax
call fcn.00413815
mov esi, dword [sym.imp.USER32.dll_SetTimer]
imul ebx, ebx, 0x3e8
push 0x424c0f
push ebx
push 2
push 0
call esi
imul edi, edi, 0x3e8
push 0x4242dc
push edi
push 3
push 0
call esi
push 0x44baf0
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
xor eax, eax
inc eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x1c4c]
xor ecx, ebp
call fcn.00425cba
add ebp, 0x1c50
leave
ret
call fcn.00420836
mov ecx, eax
jmp 0x424d09