Function at 0x40f230
Capabilities:
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x42c860
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov eax, 0x208c
call fcn.0042aea0
push ebx
push esi
push edi
mov esi, ecx
xor ebx, ebx
xor eax, eax
mov word [esp + 0x88], bx
mov ecx, 0x400
lea edi, [esp + 0x8a]
rep stosd dword es:[edi], eax
push 0x800
lea eax, [esp + 0x8c]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea ecx, [esp + 0x88]
push ecx
lea ecx, [esp + 0x54]
mov word [esp + eax*2 + 0x8c], bx
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_unsigned_short_int_const__]
mov edx, dword [sym.imp.MSVCP71.dll_unsigned_int_const_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::npos]
mov eax, dword [edx]
push eax
push 0x5c
lea ecx, [esp + 0x58]
mov dword [esp + 0x20ac], ebx
call dword [sym.imp.MSVCP71.dll_public:_unsigned_int___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::rfind_unsigned_short_int__unsigned_int_const]
push eax
push ebx
lea ecx, [esp + 0x74]
push ecx
lea ecx, [esp + 0x5c]
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int_____thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::substr_unsigned_int__unsigned_int_]
push eax
lea ecx, [esp + 0x54]
mov byte [esp + 0x20a8], 1
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::operator_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
lea ecx, [esp + 0x6c]
mov byte [esp + 0x20a4], bl
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
lea edx, [esp + 0x50]
push edx
lea ecx, [esp + 0x38]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
push str.Common.ini
lea ecx, [esp + 0x38]
mov byte [esp + 0x20a8], 2
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::operator_unsigned_short_int_const__]
xor eax, eax
mov ecx, 0x400
lea edi, [esp + 0x1092]
mov word [esp + 0x1090], bx
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0x4c]
mov edi, 8
cmp eax, edi
mov eax, dword [esp + 0x38]
jae 0x40f347
lea eax, [esp + 0x38]
push eax
push 0x800
lea eax, [esp + 0x1098]
push eax
push 0x43532c
push str.ServiceName
push 0x435300
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push str.SoftwareCyberlinkMediaServer2.2
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_unsigned_short_int_const__]
push 0x4352fc
lea ecx, [esp + 0x1c]
mov byte [esp + 0x20a8], 3
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::operator_unsigned_short_int_const__]
lea ecx, [esp + 0x1090]
push ecx
lea ecx, [esp + 0x1c]
call dword [sym.imp.MSVCP71.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::operator_unsigned_short_int_const__]
cmp dword [esp + 0x30], edi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xc], ebx
jae 0x40f3b4
lea eax, [esp + 0x1c]
lea edx, [esp + 0xc]
push edx
push 0x20019
push ebx
push eax
push reloc.WS2_32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, ebx
jne 0x40f402
mov edx, dword [esp + 0xc]
lea eax, [esp + 0x10]
push eax
push 0x443dd8
lea ecx, [esp + 0x1c]
push ecx
push ebx
push str.DumpMsg
push edx
mov dword [esp + 0x28], 4
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov eax, dword [esp + 0xc]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x18]
mov byte [esp + 0x20a4], 2
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
lea ecx, [esp + 0x34]
mov byte [esp + 0x20a4], bl
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
lea ecx, [esp + 0x50]
mov dword [esp + 0x20a4], 0xffffffff
call dword [sym.imp.MSVCP71.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
mov ecx, dword [esp + 0x209c]
pop edi
mov eax, esi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret