Function at 0x486560
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x58e378
mov eax, dword fs:[0]
push eax
sub esp, 0x8c
push ebx
push esi
push edi
mov eax, dword [0x610304]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
lea ebx, [esi + 0x14]
xor edi, edi
cmp dword [ebx], edi
jne 0x486632
push ebx
push 0x66
call fcn.00485ca0
cmp dword [ebx], edi
jne 0x486632
mov dword [ebp - 0x10], str.unable_to_get_install_permit.__n
mov dword [ebp - 0x24], str.E:_txupdatecodingTXUpdate_servicelogicUpgradeLogic.cpp
mov dword [ebp - 0x20], str.CUpgradeLogic::StartInnerVerInstall
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x50], 0x1dd
mov dword [ebp - 0x4c], edi
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x54], 2
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x38]
push eax
mov dword [ebp - 0x40], edi
call dword [sym.imp.MSVCR80.dll__time64]
lea ecx, [ebp - 0x10]
push ecx
push 0x5a48f0
lea edx, [ebp - 0x58]
push 0x5ac4c8
push edx
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], edi
call sym.txupd.exe_void___cdecl_TXLog_DoTXLogVW_struct_tagLogObj___wchar_t_const___wchar_t_const___char__
push str.unable_to_get_install_permit.__n
call dword [sym.imp.MSVCR80.dll_wprintf]
add esp, 0x18
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.00481090
test eax, eax
je 0x4866d5
mov dword [ebp - 0x10], str.target_product_is_still_running__restart_update_caller.__n
mov dword [ebp - 0x24], str.E:_txupdatecodingTXUpdate_servicelogicUpgradeLogic.cpp
mov dword [ebp - 0x20], str.CUpgradeLogic::StartInnerVerInstall
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x50], 0x1e5
mov dword [ebp - 0x4c], edi
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x54], 2
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x38]
push eax
mov dword [ebp - 0x40], edi
call dword [sym.imp.MSVCR80.dll__time64]
lea ecx, [ebp - 0x10]
push ecx
push 0x5a48f0
lea edx, [ebp - 0x58]
push 0x5ac4c8
push edx
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], edi
call sym.txupd.exe_void___cdecl_TXLog_DoTXLogVW_struct_tagLogObj___wchar_t_const___wchar_t_const___char__
push str.target_product_is_still_running__restart_update_caller.__n
call dword [sym.imp.MSVCR80.dll_wprintf]
add esp, 0x18
push edi
push edi
mov ecx, esi
call fcn.00485900
call fcn.00480f30
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
call fcn.00490e60
test eax, eax
je 0x486a1e
call fcn.00490f90
test eax, eax
jne 0x486a1e
push edi
push str._txupd
mov ecx, 0x611268
call sym.txupd.exe_public:_int___thiscall_CTXStringW::Find_wchar_t_const___int_const
cmp eax, 0xffffffff
mov dword [ebp - 0x24], str.E:_txupdatecodingTXUpdate_servicelogicUpgradeLogic.cpp
mov dword [ebp - 0x20], str.CUpgradeLogic::StartInnerVerInstall
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x4c], edi
je 0x486813
mov dword [ebp - 0x10], str.run_txupd_with_admin_privilege_failed
mov dword [ebp - 0x50], 0x1f2
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x54], 2
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x44], eax
lea eax, [ebp - 0x38]
push eax
mov dword [ebp - 0x40], edi
call dword [sym.imp.MSVCR80.dll__time64]
lea ecx, [ebp - 0x10]
push ecx
push 0x5a48f0
lea edx, [ebp - 0x58]
push 0x5ac4c8
push edx
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], edi
call sym.txupd.exe_void___cdecl_TXLog_DoTXLogVW_struct_tagLogObj___wchar_t_const___wchar_t_const___char__
mov edi, dword [sym.imp.MSVCR80.dll_wprintf]
push str.run_txupd_with_admin_privilege_failed
call edi
add esp, 0x14
mov eax, esp
mov dword [ebp - 0x10], esp
push 0x34
push eax
call fcn.00484bc0
add esp, 8
push str.set_current_state:__s__n
push 0x5ac4c8
push 2
push str.CUpgradeLogic::SetCurrState
push 0x3b7
push str.E:_txupdatecodingTXUpdate_servicelogicUpgradeLogic.cpp
call fcn.0046fa20
lea ecx, [ebp - 0x10]
push 0x34
push ecx
call fcn.00484bc0
mov edx, dword [eax]
push edx
push str.set_current_state:__s__n
call edi
add esp, 0x2c
lea ecx, [ebp - 0x10]
call sym.txupd.exe_public:_void___thiscall_CTXStringW::destructor_void_
mov ecx, esi
mov dword [esi + 8], 0x34
call fcn.00484940
mov eax, dword [esi + 8]
push eax
push str.LAST_STATECODE
call fcn.00465dc0
add esp, 8
mov ecx, esi
call fcn.004855a0
push 4
push 4
mov ecx, esi
call fcn.00485900
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ebp - 0x10], str.restart_txupd.exe_with_administrator_privilege.__n
mov dword [ebp - 0x50], 0x1f7
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x54], 2
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea ecx, [ebp - 0x38]
push ecx
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], edi
call dword [sym.imp.MSVCR80.dll__time64]
lea edx, [ebp - 0x10]
push edx
push 0x5a48f0
lea eax, [ebp - 0x58]
push 0x5ac4c8
push eax
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], edi
call sym.txupd.exe_void___cdecl_TXLog_DoTXLogVW_struct_tagLogObj___wchar_t_const___wchar_t_const___char__
mov ebx, dword [sym.imp.MSVCR80.dll_wprintf]
push str.restart_txupd.exe_with_administrator_privilege.__n
call ebx
add esp, 0x18
push str.__txupd
mov ecx, 0x611268
call sym.txupd.exe_public:_void___thiscall_CTXStringW::Append_wchar_t_const__
mov ecx, 0x611268
call sym.txupd.exe_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const
push eax
call fcn.00480eb0
add esp, 4
test eax, eax
jne 0x486a01
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x4c7
mov dword [ebp - 0x10], eax
jne 0x48694d
mov dword [ebp - 0x10], str.run_installation_package_failed__user_cancel_in_UAC_MsgBox.__n
mov dword [ebp - 0x24], str.E:_txupdatecodingTXUpdate_servicelogicUpgradeLogic.cpp
mov dword [ebp - 0x20], str.CUpgradeLogic::StartInnerVerInstall
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x50], 0x1ff
mov dword [ebp - 0x4c], edi
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x54], 2
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea ecx, [ebp - 0x38]
push ecx
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x40], edi
call dword [sym.imp.MSVCR80.dll__time64]
lea edx, [ebp - 0x10]
push edx
push 0x5a48f0
lea eax, [ebp - 0x58]
push 0x5ac4c8
push eax
mov dword [ebp - 0x30], edi
mov dword [ebp - 0x2c], edi
call sym.txupd.exe_void___cdecl_TXLog_DoTXLogVW_struct_tagLogObj___wchar_t_const___wchar_t_const___char__
push str.run_installation_package_failed__user_cancel_in_UAC_MsgBox.__n
call ebx
push 6
push str.RET_INNER_FILEMERGE
call fcn.00465dc0
add esp, 0x20
push 4
push 4
mov ecx, esi
call fcn.00485900
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push eax
push str.run_txupd_with_admin_privilege_failed__last_error:_d_n
push 0x5ac4c8
push 2
push str.CUpgradeLogic::StartInnerVerInstall
push 0x206
push str.E:_txupdatecodingTXUpdate_servicelogicUpgradeLogic.cpp
call fcn.00452950
mov ecx, dword [ebp - 0x10]
push ecx
push str.run_txupd_with_admin_privilege_failed__last_error:_d_n
call ebx
add esp, 0x20
mov edx, esp
mov dword [ebp - 0x10], esp
push 0x34
push edx
call fcn.00484bc0
add esp, 8
push str.set_current_state:__s__n
push 0x5ac4c8
push 2
push str.CUpgradeLogic::SetCurrState
push 0x3b7
push str.E:_txupdatecodingTXUpdate_servicelogicUpgradeLogic.cpp
call fcn.0046fa20
lea eax, [ebp - 0x10]
push 0x34
push eax
call fcn.00484bc0
mov ecx, dword [eax]
push ecx
push str.set_current_state:__s__n
call ebx
add esp, 0x2c
lea ecx, [ebp - 0x10]
call sym.txupd.exe_public:_void___thiscall_CTXStringW::destructor_void_
mov ecx, esi
mov dword [esi + 8], 0x34
call fcn.00484940
mov edx, dword [esi + 8]
push edx
push str.LAST_STATECODE
call fcn.00465dc0
add esp, 8
mov ecx, esi
call fcn.004855a0
push 6
push str.RET_INNER_FILEMERGE
call fcn.00465dc0
add esp, 8
push 4
push 4
mov ecx, esi
call fcn.00485900
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x24]
push eax
call fcn.00481210
add esp, 4
mov dword [ebp - 0x18], edi
lea eax, [ebp - 0x18]
push eax
mov dword [ebp - 4], edi
call fcn.00483ae0
mov ecx, eax
call fcn.00482430
mov eax, dword [ebp - 0x18]
cmp eax, edi
jne 0x486afd
push ecx
mov ecx, esp
mov dword [ebp - 0x14], esp
push 0x16
push ecx
call fcn.00484bc0
add esp, 8
push str.set_current_state:__s__n
push 0x5ac4c8
push 2
push str.CUpgradeLogic::SetCurrState
push 0x3b7
push str.E:_txupdatecodingTXUpdate_servicelogicUpgradeLogic.cpp
call fcn.0046fa20
lea edx, [ebp - 0x10]
push 0x16
push edx
call fcn.00484bc0
mov eax, dword [eax]
push eax
push str.set_current_state:__s__n
call dword [sym.imp.MSVCR80.dll_wprintf]
add esp, 0x2c
lea ecx, [ebp - 0x10]
call sym.txupd.exe_public:_void___thiscall_CTXStringW::destructor_void_
mov ecx, esi
mov dword [esi + 8], 0x16
call fcn.00484940
mov ecx, dword [esi + 8]
push ecx
push str.LAST_STATECODE
call fcn.00465dc0
add esp, 8
mov ecx, esi
call fcn.004855a0
push 4
push 0xffffffffffffffed
mov ecx, esi
call fcn.00485b20
mov eax, dword [ebp - 0x18]
cmp eax, edi
mov dword [ebp - 4], 0xffffffff
je 0x486ca8
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push eax
lea ecx, [esi + 0x330]
call fcn.00476260
cmp eax, edi
push ecx
mov dword [ebp - 0x14], eax
mov ecx, esp
jne 0x486b87
mov dword [ebp - 0x14], esp
push 0x32
push ecx
call fcn.00484bc0
add esp, 8
push str.set_current_state:__s__n
push 0x5ac4c8
push 2
push str.CUpgradeLogic::SetCurrState
push 0x3b7
push str.E:_txupdatecodingTXUpdate_servicelogicUpgradeLogic.cpp
call fcn.0046fa20
lea edx, [ebp - 0x10]
push 0x32
push edx
call fcn.00484bc0
mov eax, dword [eax]
push eax
push str.set_current_state:__s__n
call dword [sym.imp.MSVCR80.dll_wprintf]
add esp, 0x2c
lea ecx, [ebp - 0x10]
call sym.txupd.exe_public:_void___thiscall_CTXStringW::destructor_void_
push 0x32
push str.LAST_STATECODE
mov dword [esi + 8], 0x32
call fcn.00465dc0
add esp, 8
mov ecx, esi
call fcn.004855a0
jmp 0x486c92
mov dword [ebp - 0x10], esp
push 0x34
push ecx
call fcn.00484bc0
add esp, 8
push str.set_current_state:__s__n
push 0x5ac4c8
push 2
push str.CUpgradeLogic::SetCurrState
push 0x3b7
push str.E:_txupdatecodingTXUpdate_servicelogicUpgradeLogic.cpp
call fcn.0046fa20
lea edx, [ebp - 0x10]
push 0x34
push edx
call fcn.00484bc0
mov eax, dword [eax]
mov ebx, dword [sym.imp.MSVCR80.dll_wprintf]
push eax
push str.set_current_state:__s__n
call ebx
add esp, 0x2c
lea ecx, [ebp - 0x10]
call sym.txupd.exe_public:_void___thiscall_CTXStringW::destructor_void_
mov ecx, esi
mov dword [esi + 8], 0x34
call fcn.00484940
mov ecx, dword [esi + 8]
push ecx
push str.LAST_STATECODE
call fcn.00465dc0
add esp, 8
mov ecx, esi
call fcn.004855a0
mov edx, dword [ebp - 0x14]
push 4
push edx
mov ecx, esi
call fcn.00485b20
mov dword [ebp - 0x14], str.fail____start_file_merging.__n
mov dword [ebp - 0x64], str.E:_txupdatecodingTXUpdate_servicelogicUpgradeLogic.cpp
mov dword [ebp - 0x60], str.CUpgradeLogic::StartInnerVerInstall
mov dword [ebp - 0x68], edi
mov dword [ebp - 0x5c], edi
mov dword [ebp - 0x90], 0x226
mov dword [ebp - 0x8c], edi
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x94], 2
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [ebp - 0x84], eax
lea eax, [ebp - 0x78]
push eax
mov dword [ebp - 0x80], edi
call dword [sym.imp.MSVCR80.dll__time64]
lea ecx, [ebp - 0x14]
push ecx
push 0x5a48f0
lea edx, [ebp - 0x98]
push 0x5ac4c8
push edx
mov dword [ebp - 0x70], edi
mov dword [ebp - 0x6c], edi
call sym.txupd.exe_void___cdecl_TXLog_DoTXLogVW_struct_tagLogObj___wchar_t_const___wchar_t_const___char__
push str.fail____start_file_merging.__n
call ebx
add esp, 0x18
mov eax, dword [ebp - 0x18]
cmp eax, edi
mov dword [ebp - 4], 0xffffffff
je 0x486ca8
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret