Function at 0x404104
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
and dword [ebp - 4], 0
push ebx
push esi
mov esi, 0x516a
push edi
mov dword [ebp - 0x10], ecx
push esi
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov ebx, dword [sym.imp.MSVCRT.dll_wcslen]
mov edi, eax
test edi, edi
pop ecx
je 0x404222
push esi
xor esi, esi
push esi
push edi
call sub.MSVCRT.dll_memset
add esp, 0xc
lea eax, [ebp - 8]
mov dword [ebp - 8], 0x28b4
mov dword [ebp - 0xc], 1
push eax
lea eax, [ebp - 0xc]
push edi
push eax
push str.homepage
push str.Software360360se3
push SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
test eax, eax
jne 0x404215
cmp word [edi], si
je 0x404215
mov al, byte [ebp + 0xb]
push esi
lea ecx, [ebp - 0x20]
mov byte [ebp - 0x20], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
mov al, byte [ebp + 0xb]
push esi
lea ecx, [ebp - 0x30]
mov byte [ebp - 0x30], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
push edi
call ebx
pop ecx
push eax
push edi
lea ecx, [ebp - 0x30]
call dword [sym.imp.MSVCP60.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__::assign_unsigned_short_int_const___unsigned_int_]
mov ecx, dword [ebp - 0x10]
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x30]
push eax
call fcn.004043f3
push 1
lea ecx, [ebp - 0x30]
mov esi, eax
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
test esi, esi
je 0x40420a
mov esi, dword [ebp + 0xc]
lea eax, [esi + esi]
push eax
push 0
push dword [ebp + 8]
call sub.MSVCRT.dll_memset
mov eax, dword [ebp - 0x18]
add esp, 0xc
inc eax
cmp eax, esi
jb 0x4041e8
mov eax, esi
mov ecx, dword [ebp - 0x1c]
test ecx, ecx
jne 0x4041f5
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_short_int_const__private:_static_unsigned_short_int_const____cdecl_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Nullstr_void_::_2::_C]
push eax
push ecx
push dword [ebp + 8]
call dword [sym.imp.MSVCRT.dll_wcsncpy]
add esp, 0xc
mov dword [ebp - 4], 1
push 1
lea ecx, [ebp - 0x20]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::_Tidy_bool_]
push edi
call fcn.0043259a
cmp dword [ebp - 4], 0
pop ecx
jne 0x40425a
mov eax, dword [ebp + 0xc]
add eax, eax
push eax
push 0
push dword [ebp + 8]
call sub.MSVCRT.dll_memset
mov esi, str.se:blank
push esi
call ebx
mov ecx, eax
mov eax, dword [ebp + 0xc]
add esp, 0x10
inc ecx
cmp ecx, eax
jae 0x40424c
push esi
call ebx
pop ecx
inc eax
push eax
push esi
push dword [ebp + 8]
call dword [sym.imp.MSVCRT.dll_wcsncpy]
add esp, 0xc
push 1
pop eax
pop edi
pop esi
pop ebx
leave
ret 8