Function at 0x4180f0
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push 0xffffffffffffffff
push 0x43c688
mov eax, dword fs:[0]
push eax
sub esp, 0xab0
mov eax, dword [0x4c3740]
xor eax, esp
mov dword [esp + 0xaa8], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4c3740]
xor eax, esp
push eax
lea eax, [esp + 0xac4]
mov dword fs:[0], eax
mov eax, dword [esp + 0xad4]
lea ecx, [esp + 0x14]
push ecx
push str.SOFTWAREMicrosoftWindows_NTCurrentVersionNetworkCards
xor ebx, ebx
push reloc.WS2_32.dll_bind
mov dword [esp + 0x38], eax
mov dword [esp + 0x20], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
test eax, eax
je 0x41815c
xor al, al
jmp 0x418475
mov eax, dword [esp + 0x14]
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
lea edx, [esp + 0x38]
push edx
push ebx
push ebx
push ebx
push eax
mov dword [esp + 0x4c], ebx
call dword [sym.imp.ADVAPI32.dll_RegQueryInfoKeyW]
test eax, eax
jne 0x418155
xor esi, esi
cmp dword [esp + 0x1c], ebx
mov dword [esp + 0x20], esi
jbe 0x418468
push 0x3fe
lea ecx, [esp + 0x2c2]
push ebx
push ecx
mov word [esp + 0x2c8], bx
call sub.MSVCR80.dll_memset
mov eax, dword [esp + 0x20]
add esp, 0xc
push 0x400
lea edx, [esp + 0x2c0]
push edx
push esi
push eax
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyW]
test eax, eax
jne 0x418457
push 0x3fe
lea ecx, [esp + 0x6c2]
push ebx
push ecx
mov word [esp + 0x6c8], bx
call sub.MSVCR80.dll_memset
add esp, 0xc
lea ecx, [esp + 0x34]
mov dword [esp + 0x28], 0x400
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
push str.SOFTWAREMicrosoftWindows_NTCurrentVersionNetworkCards
lea ecx, [esp + 0x38]
mov dword [esp + 0xad0], ebx
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator_wchar_t_const__]
push 0x4b37ec
lea ecx, [esp + 0x38]
call dword [0x43e29c]
lea edx, [esp + 0x2bc]
push edx
lea ecx, [esp + 0x38]
call dword [0x43e29c]
mov eax, dword [esp + 0x38]
mov edi, 8
cmp dword [esp + 0x4c], edi
mov dword [esp + 0x18], ebx
jae 0x41824b
lea eax, [esp + 0x38]
lea ecx, [esp + 0x18]
push ecx
push eax
push reloc.WS2_32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
test eax, eax
jne 0x418442
mov ecx, dword [esp + 0x18]
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x6c0]
push eax
push ebx
push ebx
push str.ServiceName
push ecx
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x418297
mov edx, dword [esp + 0x18]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x418442
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea ecx, [esp + 0x50]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void_]
push str.._
lea ecx, [esp + 0x54]
mov byte [esp + 0xad0], 1
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator_wchar_t_const__]
lea ecx, [esp + 0x6bc]
push ecx
lea ecx, [esp + 0x54]
call dword [0x43e29c]
cmp dword [esp + 0x68], edi
mov eax, dword [esp + 0x54]
jae 0x4182e3
lea eax, [esp + 0x54]
push ebx
push 0x80
push 3
push ebx
push 1
push bind
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebp, eax
cmp ebp, 0xffffffff
je 0x418431
push 0x1ff
lea edx, [esp + 0xc1]
push ebx
push edx
mov byte [esp + 0xc8], bl
call sub.MSVCR80.dll_memset
add esp, 0xc
push ebx
lea eax, [esp + 0x34]
push eax
push 0x200
lea ecx, [esp + 0xc8]
push ecx
push 4
lea edx, [esp + 0x38]
push edx
push 0x170002
push ebp
mov dword [esp + 0x44], 0x1010101
mov dword [esp + 0x50], ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
cmp eax, ebx
je 0x41842a
xor eax, eax
push 0x48
mov dword [esp + 0x71], eax
mov byte [esp + 0x75], al
lea eax, [esp + 0x76]
push ebx
push eax
call sub.MSVCR80.dll_memset
mov cx, word [esp + 0xcc]
movzx edx, byte [esp + 0xcd]
mov eax, dword [esp + 0xc8]
add esp, 0xc
push edx
mov word [esp + 0x74], cx
movzx ecx, cl
push ecx
mov edx, eax
mov ecx, eax
shr edx, 0x18
push edx
shr ecx, 0x10
mov dword [esp + 0x78], eax
movzx edx, cl
movzx ecx, byte [esp + 0xc8]
shr eax, 8
push edx
movzx eax, al
push eax
push ecx
push 0x4b4078
mov ecx, 0x18
lea edi, [esp + 0x8e]
call fcn.0040e120
movzx edx, byte [esp + 0x8d]
movzx eax, byte [esp + 0x8c]
movzx ecx, byte [esp + 0x8b]
add esp, 0x1c
push edx
movzx edx, byte [esp + 0x72]
push eax
movzx eax, byte [esp + 0x75]
push ecx
movzx ecx, byte [esp + 0x78]
push edx
push eax
push ecx
push str._0.2X__0.2X__0.2X__0.2X__0.2X__0.2X
mov eax, 0x30
lea edi, [esp + 0xa6]
call fcn.00417ea0
mov esi, dword [esp + 0x48]
add esp, 0x1c
lea eax, [esp + 0x6c]
call fcn.004185d0
mov esi, dword [esp + 0x20]
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0x50]
mov byte [esp + 0xacc], bl
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x34]
mov dword [esp + 0xacc], 0xffffffff
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
add esi, 1
cmp esi, dword [esp + 0x1c]
mov dword [esp + 0x20], esi
jb 0x41818e
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov al, 1
mov ecx, dword [esp + 0xac4]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xaa8]
xor ecx, esp
call fcn.00437634
add esp, 0xabc
ret