Function at 0x10010122
Capabilities:
Check if file exists
Create thread
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xad0
mov eax, dword [0x1002b1f0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
xor esi, esi
push edi
mov dword [ebp - 0xa88], esi
mov dword [ebp - 0xa88], ebp
xor ebx, ebx
inc ebx
push ebx
push dword [ebp - 0xa88]
push str.void___cdecl_StatMSNPugin_wchar_t__
call fcn.1000b484
mov edi, eax
add esp, 0xc
mov eax, 0x10022678
cmp edi, esi
jne 0x1001016a
mov edi, eax
push esi
push esi
push esi
push esi
push eax
push 0x1002265c
push edi
lea ecx, [ebp - 0xad0]
call fcn.1000a370
cmp edi, esi
jne 0x10010186
push ebp
pop ebp
xor eax, eax
push 0x3e
mov word [ebp - 0x44], ax
lea eax, [ebp - 0x42]
push esi
push eax
mov dword [ebp - 0xa90], esi
mov dword [ebp - 0xa94], esi
mov dword [ebp - 0xa98], esi
call sub.MSVCR90.dll_memset
lea eax, [ebp - 0x44]
push eax
push dword [ebp + 8]
call sym.XmpSetupHelper.dll_GetIXlPeerId
add esp, 0x14
test al, al
je 0x1001040b
lea ecx, [ebp - 0xa7c]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
lea eax, [ebp - 0xa80]
push eax
push str.SOFTWAREMicrosoftWindows_LiveMessenger
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0xa80], esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
test eax, eax
jne 0x1001037d
lea eax, [ebp - 0xa9c]
push eax
lea eax, [ebp - 0x244]
push eax
lea eax, [ebp - 0xa8c]
push eax
push esi
push str.InstallationDirectory
push dword [ebp - 0xa80]
mov dword [ebp - 0xa8c], ebx
mov dword [ebp - 0xa9c], 0x1ff
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x10010371
lea eax, [ebp - 0x244]
push eax
lea ecx, [ebp - 0xa7c]
call dword [0x1001b238]
lea ecx, [ebp - 0xa60]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
mov edi, dword [sym.imp.MSVCP90.dll_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t_____cdecl_std::operator_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t___const___wchar_t_const__]
push str.msnmsgr.exe
lea eax, [ebp - 0xa7c]
push eax
lea eax, [ebp - 0xab8]
push eax
call edi
add esp, 0xc
push eax
lea ecx, [ebp - 0xa60]
call dword [0x1001b26c]
lea ecx, [ebp - 0xab8]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
cmp dword [ebp - 0xa48], 8
mov eax, dword [ebp - 0xa5c]
jae 0x1001029c
lea eax, [ebp - 0xa5c]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push eax
call ebx
test eax, eax
je 0x10010365
push str.CRYPTNET.dll
lea eax, [ebp - 0xa7c]
push eax
lea eax, [ebp - 0xab8]
push eax
mov dword [ebp - 0xa90], 1
call edi
add esp, 0xc
push eax
lea ecx, [ebp - 0xa60]
call dword [0x1001b26c]
lea ecx, [ebp - 0xab8]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
cmp dword [ebp - 0xa48], 8
mov eax, dword [ebp - 0xa5c]
jae 0x100102fd
lea eax, [ebp - 0xa5c]
push eax
call ebx
test eax, eax
je 0x1001030e
mov dword [ebp - 0xa94], 1
push str.msimg32.dll
lea eax, [ebp - 0xa7c]
push eax
lea eax, [ebp - 0xab8]
push eax
call edi
add esp, 0xc
push eax
lea ecx, [ebp - 0xa60]
call dword [0x1001b26c]
lea ecx, [ebp - 0xab8]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
cmp dword [ebp - 0xa48], 8
mov eax, dword [ebp - 0xa5c]
jae 0x10010354
lea eax, [ebp - 0xa5c]
push eax
call ebx
test eax, eax
je 0x10010365
mov dword [ebp - 0xa98], 1
lea ecx, [ebp - 0xa60]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
push dword [ebp - 0xa80]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
push 0x7fe
mov word [ebp - 0xa44], ax
lea eax, [ebp - 0xa42]
push esi
push eax
call sub.MSVCR90.dll_memset
lea eax, [ebp - 0x44]
push eax
push dword [ebp - 0xa98]
lea eax, [ebp - 0xa44]
push dword [ebp - 0xa94]
push dword [ebp - 0xa90]
push str.http:__kkpgv2.stat.kankan.com_umsnplugin_instu1_du2_du3_du4_s
push eax
call dword [sym.imp.MSVCR90.dll__swprintf]
add esp, 0x24
lea eax, [ebp - 0xa44]
push eax
lea ecx, [ebp - 0xa8c]
call fcn.100052f3
lea eax, [ebp - 0xa84]
push eax
push esi
push dword [ebp - 0xa8c]
mov dword [ebp - 0xa84], esi
push 0x1000de52
push esi
push esi
call dword [sym.imp.KERNEL32.dll_CreateThread]
push esi
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
lea ecx, [ebp - 0xa7c]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
jmp 0x10010438
mov edi, 0x100224e0
push edi
call fcn.10005425
pop ecx
test eax, eax
jne 0x10010438
push ebx
push str.Get_IXlPeerId_failed.
push esi
push edi
call fcn.10009855
pop ecx
pop ecx
mov ecx, eax
call fcn.100016a4
mov ecx, eax
call fcn.1000a33f
lea ecx, [ebp - 0xad0]
call fcn.1000be71
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.10018dd2
leave
ret