Function at 0x4c2620
Capabilities:
Copy file
Create process on windows
Get common file path
Terminate process

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x59c
mov eax, dword [0x5f8310]
xor eax, ebp
mov dword [ebp - 4], eax
lea eax, [ebp - 0x114]
push eax
push 0x20019
push 0
push str.CLSID3B7C8860_D78F_101B_B9B5_04021C009402
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [ebp - 0x11c], eax
cmp dword [ebp - 0x11c], 0
jne 0x4c2677
mov ecx, dword [ebp - 0x114]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, 1
jmp 0x4c28bc
push 0x104
push 0
lea edx, [ebp - 0x550]
push edx
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0x104
push 0
lea eax, [ebp - 0x448]
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0x104
push 0
lea ecx, [ebp - 0x110]
push ecx
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0x104
push 0
lea edx, [ebp - 0x340]
push edx
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0x104
push 0
lea eax, [ebp - 0x238]
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
push 0x104
lea ecx, [ebp - 0x238]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea edx, [ebp - 0x238]
push edx
call sub.MSVCR90.dll_strlen
add esp, 4
mov dword [ebp - 0x118], eax
mov eax, dword [ebp - 0x118]
sub eax, 1
mov dword [ebp - 0x59c], eax
jmp 0x4c272e
mov ecx, dword [ebp - 0x59c]
sub ecx, 1
mov dword [ebp - 0x59c], ecx
cmp dword [ebp - 0x59c], 0
jle 0x4c275e
mov edx, dword [ebp - 0x59c]
movsx eax, byte [ebp + edx - 0x238]
cmp eax, 0x5c
jne 0x4c274e
jmp 0x4c275e
mov ecx, dword [ebp - 0x59c]
mov byte [ebp + ecx - 0x238], 0
jmp 0x4c271f
push 0x104
lea edx, [ebp - 0x340]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea eax, [ebp - 0x340]
push eax
lea ecx, [ebp - 0x448]
push ecx
call fcn.004c5be0
add esp, 8
push 0x5a59b4
lea edx, [ebp - 0x448]
push edx
call sub.MSVCR90.dll_strcat
add esp, 8
lea eax, [ebp - 0x238]
push eax
lea ecx, [ebp - 0x550]
push ecx
call fcn.004c5be0
add esp, 8
push 0x5a59c4
lea edx, [ebp - 0x550]
push edx
call sub.MSVCR90.dll_strcat
add esp, 8
push 0
lea eax, [ebp - 0x448]
push eax
lea ecx, [ebp - 0x550]
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
lea edx, [ebp - 0x340]
push edx
lea eax, [ebp - 0x448]
push eax
call fcn.004c5be0
add esp, 8
push str._regsvr32__s
lea ecx, [ebp - 0x448]
push ecx
call sub.MSVCR90.dll_strcat
add esp, 8
lea edx, [ebp - 0x448]
push edx
lea eax, [ebp - 0x110]
push eax
call fcn.004c5be0
add esp, 8
push str.RICHTX32.OCX
lea ecx, [ebp - 0x448]
push ecx
call sub.MSVCR90.dll_strcat
add esp, 8
push 0x44
push 0
lea edx, [ebp - 0x598]
push edx
call sub.MSVCR90.dll_memset
add esp, 0xc
mov dword [ebp - 0x598], 0x44
lea eax, [ebp - 0x12c]
push eax
lea ecx, [ebp - 0x598]
push ecx
push 0
push 0
push 0x20
push 0
push 0
push 0
lea edx, [ebp - 0x448]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
test eax, eax
je 0x4c28a5
mov eax, dword [ebp - 0x128]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0xffffffffffffffff
mov ecx, dword [ebp - 0x12c]
push ecx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0
mov edx, dword [ebp - 0x12c]
push edx
call dword [sym.imp.KERNEL32.dll_TerminateProcess]
jmp 0x4c28b7
push 0
push 0
push str.error_regsvr____n
call sub.mfc90.dll_Ordinal_1183
xor eax, eax
jmp 0x4c28bc
mov eax, 1
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.005795a6
mov esp, ebp
pop ebp
ret