Function at 0x40f4b0
Capabilities:
Check if file exists
Create process on windows
Get common file path
Move file
Print debug messages

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x50124c
mov eax, dword fs:[0]
push eax
sub esp, 0xccc
mov eax, dword [0x5470bc]
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 esi, dword [ebp + 8]
push str.CInstallCtrl::UnInstallOldDll____r_n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 7
xor eax, eax
mov dword [ebp - 0xc7c], 7
push 0x533754
lea ecx, [ebp - 0xc90]
mov dword [ebp - 0xc80], 0
mov word [ebp - 0xc90], ax
call fcn.004020c0
push esi
lea eax, [ebp - 0xc90]
mov dword [ebp - 4], 0
push eax
lea eax, [ebp - 0xcc0]
push eax
call fcn.00408810
add esp, 0xc
push 0x532e58
push eax
lea eax, [ebp - 0xca8]
mov byte [ebp - 4], 1
push eax
call fcn.00408660
add esp, 0xc
push eax
mov byte [ebp - 4], 2
call fcn.004055a0
mov ecx, eax
call fcn.004056d0
mov eax, dword [ebp - 0xc94]
cmp eax, 8
jb 0x40f582
inc eax
lea ecx, [ebp - 0xca8]
push eax
push dword [ebp - 0xca8]
call fcn.004024e0
xor eax, eax
mov dword [ebp - 0xc94], 7
mov word [ebp - 0xca8], ax
mov eax, dword [ebp - 0xcac]
mov dword [ebp - 0xc98], 0
cmp eax, 8
jb 0x40f5bd
inc eax
lea ecx, [ebp - 0xcc0]
push eax
push dword [ebp - 0xcc0]
call fcn.004024e0
xor eax, eax
mov dword [ebp - 4], 0xffffffff
mov word [ebp - 0xcc0], ax
mov eax, dword [ebp - 0xc7c]
mov dword [ebp - 0xcac], 7
mov dword [ebp - 0xcb0], 0
cmp eax, 8
jb 0x40f5ff
inc eax
lea ecx, [ebp - 0xc90]
push eax
push dword [ebp - 0xc90]
call fcn.004024e0
push esi
lea eax, [edi + 4]
push eax
lea eax, [ebp - 0xc3c]
push eax
call fcn.00412af0
add esp, 0xc
mov dword [ebp - 4], 3
lea eax, [ebp - 0xc3c]
cmp dword [ebp - 0xc28], 8
cmovae eax, dword [ebp - 0xc3c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x40f7ab
cmp dword [ebp - 0xc28], 8
lea eax, [ebp - 0xc3c]
cmovae eax, dword [ebp - 0xc3c]
push eax
lea eax, [ebp - 0xc24]
push str._u__s___s_
push eax
call fcn.00412ec0
add esp, 0xc
lea eax, [ebp - 0xc74]
push 0x38
push 0
push eax
call fcn.004d8530
add esp, 0xc
mov dword [ebp - 0xc78], 0x3c
lea eax, [ebp - 0xc24]
mov dword [ebp - 0xc74], 0x40
mov dword [ebp - 0xc64], eax
lea eax, [ebp - 0xc78]
mov dword [ebp - 0xc70], 0
push eax
mov dword [ebp - 0xc6c], 0
mov dword [ebp - 0xc68], str.regsvr32.exe
mov dword [ebp - 0xc60], 0
mov dword [ebp - 0xc5c], 5
mov dword [ebp - 0xc58], 0
call dword [sym.imp.SHELL32.dll_ShellExecuteExW]
push 0xbb8
push dword [ebp - 0xc40]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0x208
lea eax, [ebp - 0x21c]
push 0
push eax
call fcn.004d8530
add esp, 0xc
lea eax, [ebp - 0x21c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
push 0x208
lea eax, [ebp - 0x424]
push 0
push eax
call fcn.004d8530
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
lea eax, [ebp - 0xcd8]
push eax
call fcn.004045b0
add esp, 8
cmp dword [eax + 0x14], 8
jb 0x40f74f
mov eax, dword [eax]
push eax
lea eax, [ebp - 0x21c]
push eax
lea eax, [ebp - 0x424]
push str._s_s.dll
push eax
call fcn.00408e20
mov eax, dword [ebp - 0xcc4]
add esp, 0x10
cmp eax, 8
jb 0x40f789
inc eax
lea ecx, [ebp - 0xcd8]
push eax
push dword [ebp - 0xcd8]
call fcn.004024e0
cmp dword [ebp - 0xc28], 8
lea ecx, [ebp - 0x424]
lea eax, [ebp - 0xc3c]
cmovae eax, dword [ebp - 0xc3c]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileW]
mov eax, dword [ebp - 0xc28]
cmp eax, 8
jb 0x40f7c9
inc eax
lea ecx, [ebp - 0xc3c]
push eax
push dword [ebp - 0xc3c]
call fcn.004024e0
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.004264c2
mov esp, ebp
pop ebp
ret 4