Function at 0x4c0746
Capabilities:
Create process on windows
Query or enumerate registry value
Read .ini file

Disassembly:
mov eax, 0x4f50bc
call fcn.004e1580
sub esp, 0x2c4
push ebx
push esi
lea eax, [ebp - 0x48]
push edi
mov ebx, ecx
push eax
call fcn.004d14df
mov dword [esp], str.xmp.ini
push eax
lea eax, [ebp - 0x28]
xor edi, edi
push eax
mov dword [ebp - 4], edi
call sub.MFC42.DLL_operator_2
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 2
call sub.MFC42.DLL_CString::CString
mov esi, dword [ebp + 8]
mov dword [ebp - 0x18], edi
cmp esi, edi
je 0x4c079e
mov eax, dword [esi]
lea ecx, [ebp - 0x18]
push ecx
push 0x52b448
push esi
call dword [eax]
cmp esi, edi
mov byte [ebp - 4], 3
mov dword [ebp - 0x14], edi
je 0x4c07b7
mov eax, dword [esi]
lea ecx, [ebp - 0x14]
push ecx
push 0x52b438
push esi
call dword [eax]
cmp esi, edi
mov byte [ebp - 4], 4
mov dword [ebp - 0x30], edi
je 0x4c07d0
mov eax, dword [esi]
lea ecx, [ebp - 0x30]
push ecx
push 0x52c6d8
push esi
call dword [eax]
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x10], edi
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 7
cmp eax, edi
je 0x4c07ed
mov ecx, dword [eax]
lea edx, [ebp - 0x1c]
push edx
push eax
call dword [ecx + 0x2c]
jmp 0x4c07fa
mov eax, dword [ebp - 0x14]
lea edx, [ebp - 0x1c]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x20]
mov eax, dword [ebp - 0x18]
cmp eax, edi
je 0x4c080d
mov ecx, dword [eax]
lea edx, [ebp - 0x10]
push edx
push eax
call dword [ecx + 0x34]
jmp 0x4c081a
mov eax, dword [ebp - 0x14]
lea edx, [ebp - 0x10]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x24]
push dword [ebp - 0x1c]
lea ecx, [ebp - 0x40]
call sub.MFC42.DLL_CString::CString_2
push dword [eax]
lea eax, [ebp - 0x24]
mov byte [ebp - 4], 8
push eax
call fcn.004d166f
pop ecx
pop ecx
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 0xa
call sub.MFC42.DLL_CString::CString
push str..rmvb
lea ecx, [ebp - 0x34]
call sub.MFC42.DLL_CString::CString_4
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 0xb
call sub.MFC42.DLL_CString::CString_3
push dword [ebp - 0x28]
mov esi, dword [ebp - 0x34]
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 0xc
push 0x3ff
push 0x400
call sub.MFC42.DLL_CString::GetBuffer
push eax
push esi
mov edi, str.setup
push str.format
push edi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
lea ecx, [ebp - 0x24]
call sub.MFC42.DLL_CString::MakeLower
xor esi, esi
lea ecx, [ebp - 0x20]
push esi
push dword [ebp - 0x24]
call sub.MFC42.DLL_CString::Find
cmp eax, esi
jge 0x4c0912
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 0xb
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0xa
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 7
call sub.MFC42.DLL_CString::CString
push dword [ebp - 0x10]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
call esi
push dword [ebp - 0x1c]
call esi
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 4
test eax, eax
je 0x4c08e9
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 3
test eax, eax
je 0x4c08fa
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 2
test eax, eax
je 0x4c090b
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
xor bl, bl
jmp 0x4c0c55
lea ecx, [ebp + 8]
call sub.MFC42.DLL_CString::CString_3
push dword [ebp - 0x10]
lea ecx, [ebx + 0xfb0]
mov byte [ebp - 4], 0xd
mov dword [ebp - 0x2c], esi
mov dword [ebx + 0xfb4], 1
call sub.MFC42.DLL_CString::operator
lea eax, [ebp - 0x44]
push eax
push 0x20019
push esi
mov esi, reloc.BugReport.dll_Ordinal_2
push str.SOFTWAREThunder_NetworkXmp
push esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x4c0af1
lea eax, [ebp - 0x3c]
mov dword [ebp - 0x3c], 0xff
push eax
lea eax, [ebp - 0x148]
push eax
lea eax, [ebp - 0x38]
push eax
push 0
push str.Path
mov dword [ebp - 0x38], 1
push dword [ebp - 0x44]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x4c09b2
lea eax, [ebp - 0x148]
push eax
lea eax, [ebp + 8]
push 0x52ca10
push eax
call sub.MFC42.DLL_CString::Format_1
push 0
push dword [ebp + 8]
call fcn.004d1e1a
add esp, 0x14
mov dword [ebp - 0x2c], eax
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor esi, esi
cmp dword [ebp - 0x2c], esi
je 0x4c0af3
push dword [ebp - 0x10]
lea ecx, [ebp - 0x2c]
call sub.MFC42.DLL_CString::CString_2
lea eax, [ebp - 0x2c]
mov byte [ebp - 4], 0xe
push eax
lea eax, [ebp - 0x3c]
push 0x52b244
push eax
call sub.MFC42.DLL_operator
push str.__openfrom:1
push eax
lea eax, [ebp - 0x38]
mov byte [ebp - 4], 0xf
push eax
call sub.MFC42.DLL_operator_2
push eax
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 0x10
call sub.MFC42.DLL_CString::operator_1
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 0xf
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], 0xe
call sub.MFC42.DLL_CString::CString
push 1
push str.MakeXmpDefaultPlayer
push str.Other
call fcn.00430e04
mov ecx, eax
call fcn.00431542
cmp eax, esi
je 0x4c0a5f
push 1
push esi
push dword [ebp - 0x2c]
push dword [ebp + 8]
push str.open
push esi
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 0xd
call sub.MFC42.DLL_CString::CString
jmp 0x4c0be0
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 0xd
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0xc
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 0xb
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0xa
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 7
call sub.MFC42.DLL_CString::CString
push dword [ebp - 0x10]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
call esi
push dword [ebp - 0x1c]
call esi
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 4
test eax, eax
je 0x4c0abc
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 3
test eax, eax
je 0x4c0acd
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 2
test eax, eax
je 0x4c0ade
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString
xor al, al
jmp 0x4c0c63
xor esi, esi
cmp dword [ebx + 0xfa8], 1
je 0x4c0b79
mov ecx, ebx
call fcn.004c05f7
test eax, eax
jne 0x4c0b79
push esi
push str.NeverPrompt
push str.PromptXmp
call fcn.00430e04
mov ecx, eax
call fcn.0043152b
test eax, eax
jne 0x4c0a6b
push dword [ebp - 0x28]
push esi
push str.enable
push edi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
cmp eax, esi
je 0x4c0a6b
push esi
lea ecx, [ebp - 0x2d0]
call fcn.00460c77
lea ecx, [ebp - 0x2d0]
mov byte [ebp - 4], 0x14
call sub.MFC42.DLL_CDialog::DoModal
cmp eax, 2
mov byte [ebp - 4], 0xd
lea ecx, [ebp - 0x2d0]
jne 0x4c0b72
call fcn.004403d8
jmp 0x4c0a6b
call fcn.004403d8
jmp 0x4c0be0
push esi
lea ecx, [ebp - 0xe8]
call fcn.0045dfc6
lea ecx, [ebp - 0xe8]
mov byte [ebp - 4], 0x11
call sub.MFC42.DLL_CDialog::DoModal
cmp eax, 2
mov dword [ebx + 0xfb4], eax
jne 0x4c0bc2
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 0x12
call sub.MFC42.DLL_CStatic::CStatic
lea ecx, [ebp - 0xe8]
mov byte [ebp - 4], 0xd
call sub.MFC42.DLL_CDialog::CDialog
jmp 0x4c0a6b
lea ecx, [ebp - 0x88]
mov byte [ebp - 4], 0x13
call sub.MFC42.DLL_CStatic::CStatic
lea ecx, [ebp - 0xe8]
mov byte [ebp - 4], 0xd
call sub.MFC42.DLL_CDialog::CDialog
lea ecx, [ebp + 8]
mov byte [ebp - 4], 0xc
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x20]
mov byte [ebp - 4], 0xb
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x34]
mov byte [ebp - 4], 0xa
call sub.MFC42.DLL_CString::CString
lea ecx, [ebp - 0x24]
mov byte [ebp - 4], 7
call sub.MFC42.DLL_CString::CString
push dword [ebp - 0x10]
mov esi, dword [sym.imp.OLEAUT32.dll_SysStringLen]
call esi
push dword [ebp - 0x1c]
call esi
mov eax, dword [ebp - 0x30]
mov byte [ebp - 4], 4
test eax, eax
je 0x4c0c31
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 3
test eax, eax
je 0x4c0c42
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 2
test eax, eax
je 0x4c0c53
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov bl, 1
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
call sub.MFC42.DLL_CString::CString
mov al, bl
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 4