Function at 0x403d10
Capabilities:
Check if file exists
Copy file
Get common file path

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2a48
call fcn.00439c50
mov eax, dword [0x483ca0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov edi, ecx
lea ebx, [edi + 0x1828]
push ebx
push str.m_sSetupDirectory:__s
push 0x2c9
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
add esp, 0x1c
mov ecx, edi
call fcn.00405090
cmp byte [edi + 0x2028], 0
je 0x403f14
lea eax, [ebp - 0x1a04]
push eax
push 0x200
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
push 0x200
lea eax, [ebp - 0x604]
push eax
lea eax, [ebp - 0x1a04]
push eax
call fcn.0040f9f0
lea ecx, [ebp - 0x604]
add esp, 0xc
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x403da1
sub ecx, edx
je 0x403dca
cmp byte [ebp + ecx - 0x605], 0x5c
jne 0x403dca
dec ecx
cmp ecx, 0x200
jae 0x4044a1
mov byte [ebp + ecx - 0x604], al
push str.rsp1024hcmd.txt
lea eax, [ebp - 0x604]
push eax
lea eax, [ebp - 0x404]
push 0x461410
push eax
call fcn.0043a459
push 0x200
lea eax, [ebp - 0x1604]
push eax
lea eax, [ebp - 0x404]
push eax
call fcn.0040fa60
lea eax, [ebp - 0x1604]
push 0x462720
push eax
call fcn.0043a8ac
mov esi, eax
add esp, 0x24
test esi, esi
je 0x403e36
lea ecx, [edi + 0x61c]
push ecx
push 0x462724
push esi
call fcn.0043a98b
push esi
call fcn.0043a309
add esp, 0x10
jmp 0x403e61
lea eax, [ebp - 0x404]
push eax
push str.Filed_to_open_file_to_write:__s
push 0x2e6
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
add esp, 0x1c
lea eax, [edi + 0x21c]
push eax
push str.__client_name
push str.__called_by_downloader
lea esi, [edi + 0x141c]
push esi
lea eax, [ebp - 0xc04]
push str.__s___s__s__s
push eax
call fcn.0043a459
push 0x46140c
lea eax, [ebp - 0x1c04]
push eax
lea eax, [ebp - 0xa04]
push eax
push esi
call fcn.0040dd20
lea eax, [ebp - 0x2a0c]
push eax
lea eax, [ebp - 0xa04]
push eax
lea eax, [ebp - 0xc04]
push eax
call fcn.0040e0c0
add esp, 0x34
push 0x7d0
call dword [sym.imp.KERNEL32.dll_Sleep]
push str.m_bIsV4Client_is_true._Exit_now
push 0x2f4
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
mov ecx, dword [edi + 0x1624]
add esp, 0x18
mov eax, dword [ecx]
push 0
push 0
push 0x179b
call dword [eax + 4]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004396df
mov esp, ebp
pop ebp
ret
push str.m_bIsV4Client_is_false.
push 0x2fb
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
push str.rsp1024hcmd.txt
push ebx
lea eax, [ebp - 0xe04]
push 0x461410
push eax
call fcn.0043a459
push 0x200
lea eax, [ebp - 0x2204]
push eax
lea eax, [ebp - 0xe04]
push eax
call fcn.0040fa60
lea eax, [ebp - 0x2204]
push 0x462720
push eax
call fcn.0043a8ac
mov esi, eax
add esp, 0x3c
test esi, esi
je 0x403f9b
lea ecx, [edi + 0x61c]
push ecx
push 0x462724
push esi
call fcn.0043a98b
push esi
call fcn.0043a309
add esp, 0x10
jmp 0x403fc6
lea eax, [ebp - 0xe04]
push eax
push str.Filed_to_open_file_to_write:__s
push 0x30c
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
add esp, 0x1c
push 0x200
lea eax, [ebp - 0x2a04]
push eax
push ebx
call fcn.0040fa60
add esp, 0xc
cmp byte [edi + 0x3029], 0
je 0x40411c
push str.m_bCalledByClientToSyncVersion_is_true
push 0x314
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
push str.TMServiceCache.txt
push 0x4613f0
lea eax, [edi + 0xe1c]
push eax
lea eax, [ebp - 0xc04]
push str._s_s_s
push eax
call fcn.0043a459
push 0x200
lea eax, [ebp - 0x1a04]
push eax
lea eax, [ebp - 0xc04]
push eax
call fcn.0040fa60
push str.TMServiceCache.txt
push ebx
lea eax, [ebp - 0xa04]
push 0x461410
push eax
call fcn.0043a459
add esp, 0x48
lea eax, [ebp - 0x1604]
push 0x200
push eax
lea eax, [ebp - 0xa04]
push eax
call fcn.0040fa60
add esp, 0xc
lea eax, [ebp - 0x1604]
push 0
push eax
lea eax, [ebp - 0x1a04]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
push ebx
lea eax, [ebp - 0x404]
push str._sWorkingDirectory.txt
push eax
call fcn.0043a459
push 0x200
lea eax, [ebp - 0x1e04]
push eax
lea eax, [ebp - 0x404]
push eax
call fcn.0040fa60
lea eax, [ebp - 0x1e04]
push 0x462720
push eax
call fcn.0043a8ac
mov esi, eax
add esp, 0x20
test esi, esi
je 0x4040ef
lea eax, [edi + 0xe1c]
push eax
push str.___WorkingDirectory____s____WorkingDirectory____n
push esi
call fcn.0043a98b
push esi
call fcn.0043a309
add esp, 0x10
jmp 0x404140
lea eax, [ebp - 0x404]
push eax
push str.Filed_to_open_file_to_write:__s
push 0x332
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
add esp, 0x1c
jmp 0x404140
push str.m_bCalledByClientToSyncVersion_is_false
push 0x336
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
add esp, 0x18
lea esi, [edi + 0x21c]
mov ecx, str.MXmeeting
mov eax, esi
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x404170
test dl, dl
je 0x40416c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x404170
add eax, 2
add ecx, 2
test dl, dl
jne 0x404150
xor eax, eax
jmp 0x404175
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4042e7
push str.It_is_MXmeeting
push 0x33f
push str.SetupHandler.cpp
push eax
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
push str.TMLauncher.exe
push ebx
lea eax, [ebp - 0x204]
push 0x461410
push eax
call fcn.0043a459
push 0x200
lea eax, [ebp - 0x1204]
push eax
lea eax, [ebp - 0x204]
push eax
call fcn.0040fa60
push 0x3c
lea eax, [ebp - 0x2a48]
push 0
push eax
call fcn.00438b10
add esp, 0x40
mov dword [ebp - 0x2a48], 0x3c
mov dword [ebp - 0x2a40], 0
call fcn.0040d390
test al, al
mov dword [ebp - 0x2a2c], 0
mov edx, str.open
mov dword [ebp - 0x2a44], 0x40
mov ecx, str.runas
mov dword [ebp - 0x2a34], 0x46283c
cmove ecx, edx
lea eax, [ebp - 0x1204]
mov dword [ebp - 0x2a3c], ecx
mov dword [ebp - 0x2a38], eax
call fcn.0040d240
test al, al
jne 0x40428d
lea eax, [ebp - 0x2a48]
push eax
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
test eax, eax
je 0x40428d
lea eax, [ebp - 0x204]
push eax
push str.ShellExecuteEx___sInstaller___s
push 0x356
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
add esp, 0x1c
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004396df
mov esp, ebp
pop ebp
ret
call fcn.0040d240
test al, al
je 0x4042bc
push str.It_is_XP
push 0x35c
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
add esp, 0x18
jmp 0x4042e7
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.ShellExecuteEx___InstallService.exe_failed__GetLastError_____d
push 0x35e
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
add esp, 0x1c
mov eax, str.MXmeeting
lea esp, [esp]
mov cl, byte [esi]
cmp cl, byte [eax]
jne 0x404310
test cl, cl
je 0x40430c
mov cl, byte [esi + 1]
cmp cl, byte [eax + 1]
jne 0x404310
add esi, 2
add eax, 2
test cl, cl
jne 0x4042f0
xor eax, eax
jmp 0x404315
sbb eax, eax
or eax, 1
test eax, eax
lea eax, [ebp - 0x204]
jne 0x404338
push str.TMInstaller
push ebx
push str._s_s.exe
push eax
call fcn.0043a459
add esp, 0x10
jmp 0x4043b8
push str.TMLauncher.exe
push ebx
push 0x461410
push eax
call fcn.0043a459
push 0x200
lea eax, [ebp - 0x1204]
push eax
lea eax, [ebp - 0x204]
push eax
call fcn.0040fa60
add esp, 0x1c
lea eax, [ebp - 0x1204]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x4043b8
lea eax, [ebp - 0x204]
push eax
push str.Failed_to_find_sInstaller___s
push 0x36d
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
push str.TMInstaller
push ebx
lea eax, [ebp - 0x204]
push str._s_s.exe
push eax
call fcn.0043a459
add esp, 0x2c
lea eax, [ebp - 0x204]
push eax
push str.sInstaller___s
push 0x372
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
push 0x200
lea eax, [ebp - 0x1204]
push eax
lea eax, [ebp - 0x204]
push eax
call fcn.0040fa60
push 0x200
lea eax, [ebp - 0x2604]
push eax
lea esi, [edi + 0x2029]
push esi
call fcn.0040fa60
push 0x1ff
lea eax, [ebp - 0x803]
mov byte [ebp - 0x804], 0
push 0
push eax
call fcn.00438b10
add esp, 0x40
mov dword [ebp - 0x2a08], 0
lea eax, [ebp - 0x204]
push esi
push eax
lea eax, [ebp - 0x804]
push str.__s___s
push eax
call fcn.0043a459
lea eax, [ebp - 0x2a08]
push eax
lea eax, [ebp - 0x804]
push ebx
push eax
call fcn.0040e0c0
push ebx
lea eax, [ebp - 0x804]
push eax
push str.StartProcess_sStartProcess___s__m_sSetupDirectory___s_
push 0x383
push str.SetupHandler.cpp
push 0
push str.SetupHandler::CallToInstall
push dword [0x4868e8]
call fcn.0040a4c0
mov ecx, dword [ebp - 4]
add esp, 0x3c
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.004396df
mov esp, ebp
pop ebp
ret
call fcn.004383dd
int3