Function at 0x41b2c0
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x50e07c
mov eax, dword fs:[0]
push eax
sub esp, 0x7dc
mov eax, dword [0x55e2f4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
xor ebx, ebx
mov dword [ebp - 0x688], ebx
call fcn.0041bd20
xor eax, eax
mov dword [ebp - 0x52c], 7
mov dword [ebp - 0x530], ebx
mov word [ebp - 0x540], ax
cmp word [0x567358], ax
jne 0x41b321
xor ecx, ecx
jmp 0x41b33f
mov ecx, 0x567358
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41b330
sub ecx, edx
sar ecx, 1
push ecx
push 0x567358
lea ecx, [ebp - 0x540]
call fcn.004051a0
push 0
push 0x516968
push dword [ebp - 0x530]
lea ecx, [ebp - 0x540]
mov dword [ebp - 4], 0
push 0
call fcn.00408610
test eax, eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x52c]
setne byte [ebp - 0x675]
cmp eax, 8
jb 0x41b39f
inc eax
lea ecx, [ebp - 0x540]
push eax
push dword [ebp - 0x540]
call fcn.004052a0
cmp byte [ebp - 0x675], 0
jne 0x41bcc5
push 7
xor eax, eax
mov dword [ebp - 0x514], 7
push 0x519638
lea ecx, [ebp - 0x528]
mov dword [ebp - 0x518], 0
mov word [ebp - 0x528], ax
call fcn.004051a0
lea eax, [ebp - 0x674]
mov dword [ebp - 4], 1
push eax
mov dword [ebp - 0x674], 0x11c
call dword [sym.imp.KERNEL32.DLL_GetVersionExW]
mov esi, dword [ebp - 0x55c]
mov al, byte [ebp - 0x55a]
and esi, 0x200
cmp al, 3
je 0x41b417
cmp al, 2
je 0x41b417
xor edi, edi
jmp 0x41b41c
mov edi, 1
push 0x258
lea eax, [ebp - 0x470]
push 0
push eax
call fcn.004e46b0
add esp, 0xc
mov dword [ebp - 0x680], 0x258
lea eax, [ebp - 0x684]
push eax
push 1
push 0
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x41b4a0
lea eax, [ebp - 0x680]
push eax
lea eax, [ebp - 0x470]
push eax
push 0
push 0
push 0x5196a4
push dword [ebp - 0x684]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x41b48b
cmp dword [ebp - 0x680], 1
jae 0x41b494
xor eax, eax
mov word [ebp - 0x470], ax
push dword [ebp - 0x684]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [0x567560]
add eax, 0xfffffff9
cmp eax, 0xc
ja case.default.0x41b4b1
jmp dword [eax*4 + 0x41bce8]
push str.2000
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
push 0x5196c8
lea ecx, [ebp - 0x528]
call fcn.0041ad40
test esi, esi
mov ecx, str._Professional
mov eax, str._Home
cmove eax, ecx
lea ecx, [ebp - 0x528]
push eax
call fcn.0041ad40
jmp 0x41b793
push str.2003
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
push str.2003_R2
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
push str.Vista
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
push str.2008
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
push str.2008_R2
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
push 0x51973c
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
push 0x519740
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
push 0x51974c
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
push 0x519750
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
push 0x519760
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
push 0x519768
lea ecx, [ebp - 0x528]
call fcn.0041ad40
jmp 0x41b793
mov dword [ebp - 0x738], 0x519628
mov dword [ebp - 0x728], 0x519630
push 0
lea eax, [ebp - 0x720]
mov byte [ebp - 4], 2
xorps xmm0, xmm0
mov dword [ebp - method.std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__.virtual_0], vtable.std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__.0
mov ebx, 1
mov dword [ebp - 0x6d4], 0x50
push eax
lea ecx, [ebp - 0x6d0]
mov dword [ebp - 0x688], ebx
movlpd qword [ebp - 0x730], xmm0
call fcn.0041df60
lea eax, [ebp - 0x728]
mov dword [ebp - 0x67c], eax
mov eax, dword [ebp - 0x728]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__.virtual_0], vtable.std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov eax, dword [ebp - 0x728]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x72c], eax
mov eax, dword [ebp - 0x738]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__.virtual_0], vtable.std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov eax, dword [ebp - 0x738]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x20]
mov dword [ebp + ecx - 0x73c], eax
mov eax, dword [ebp - 0x738]
mov dword [ebp - 4], 7
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_stringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.virtual_0], vtable.std::basic_stringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
mov eax, dword [ebp - 0x738]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x73c], eax
lea eax, [ebp - 0x720]
mov ecx, eax
mov dword [ebp - 0x67c], eax
call fcn.0041a6a0
mov dword [ebp - method.std::basic_stringbuf_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.virtual_0], vtable.std::basic_stringbuf_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
mov dword [ebp - 0x6e8], 0
mov dword [ebp - 0x6e4], 0
push dword [0x567350]
lea ecx, [ebp - 0x728]
mov byte [ebp - 4], 9
push 0x516c70
push dword [0x56734c]
call fcn.0041ab00
push eax
call fcn.00419ee0
add esp, 8
mov ecx, eax
call fcn.0041ab00
lea eax, [ebp - 0x540]
push eax
lea ecx, [ebp - 0x738]
call fcn.0041e900
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x528]
mov byte [ebp - 4], 0xa
call fcn.00404ed0
mov eax, dword [ebp - 0x52c]
cmp eax, 8
jb 0x41b767
inc eax
lea ecx, [ebp - 0x540]
push eax
push dword [ebp - 0x540]
call fcn.004052a0
lea ecx, [ebp - 0x6d0]
call fcn.0041a950
lea eax, [ebp - 0x6d0]
mov byte [ebp - 4], 0xd
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.004e13b9
add esp, 4
mov byte [ebp - 4], 1
test edi, edi
je 0x41b7a9
push 7
push str._Server
lea ecx, [ebp - 0x528]
call fcn.00404fa0
call fcn.0041bd20
call fcn.0041bd20
mov eax, dword [0x56734c]
shl eax, 8
or eax, dword [0x567350]
shl eax, 8
or eax, dword [0x567354]
cmp eax, 0x60000
jl 0x41b8a9
test esi, esi
je 0x41b7e3
push str._Home
jmp 0x41b89e
lea eax, [ebp - 0x470]
push str.Standard
push eax
call fcn.004e480a
add esp, 8
test eax, eax
je 0x41b805
push str._Standard
jmp 0x41b89e
lea eax, [ebp - 0x470]
push str.Professional
push eax
call fcn.004e480a
add esp, 8
test eax, eax
je 0x41b824
push str._Professional
jmp 0x41b89e
lea eax, [ebp - 0x470]
push str.Business
push eax
call fcn.004e480a
add esp, 8
test eax, eax
je 0x41b843
push str._Business
jmp 0x41b89e
lea eax, [ebp - 0x470]
push str.Enterprise
push eax
call fcn.004e480a
add esp, 8
test eax, eax
je 0x41b862
push str._Enterprise
jmp 0x41b89e
lea eax, [ebp - 0x470]
push str.Datacenter
push eax
call fcn.004e480a
add esp, 8
test eax, eax
je 0x41b881
push str._Datacenter
jmp 0x41b89e
lea eax, [ebp - 0x470]
push str.Ultimate
push eax
call fcn.004e480a
add esp, 8
test eax, eax
je 0x41b8a9
push str._Ultimate
lea ecx, [ebp - 0x528]
call fcn.0041ad40
push 0x58
call dword [sym.imp.USER32.dll_GetSystemMetrics]
test eax, eax
je 0x41b8c9
push 8
push str._Starter
lea ecx, [ebp - 0x528]
call fcn.00404fa0
jmp 0x41b8f1
lea eax, [ebp - 0x470]
push str.Basic
push eax
call fcn.004e480a
add esp, 8
test eax, eax
je 0x41b8f1
push str._Basic
lea ecx, [ebp - 0x528]
call fcn.0041ad40
cmp dword [0x567354], 0
jle 0x41baa0
mov dword [ebp - 0x7e8], 0x519628
mov dword [ebp - 0x7d8], 0x519630
push 0
lea eax, [ebp - 0x7d0]
mov byte [ebp - 4], 0xe
xorps xmm0, xmm0
mov dword [ebp - method.std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__.virtual_0], vtable.std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__.0
or ebx, 0x10
mov dword [ebp - 0x784], 0x50
push eax
lea ecx, [ebp - 0x780]
mov dword [ebp - 0x688], ebx
movlpd qword [ebp - 0x7e0], xmm0
call fcn.0041df60
lea eax, [ebp - 0x7d8]
mov dword [ebp - 0x67c], eax
mov eax, dword [ebp - 0x7d8]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__.virtual_0], vtable.std::basic_ostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov eax, dword [ebp - 0x7d8]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x7dc], eax
mov eax, dword [ebp - 0x7e8]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__.virtual_0], vtable.std::basic_iostream_wchar_t__struct_std::char_traits_wchar_t__.0
mov eax, dword [ebp - 0x7e8]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x20]
mov dword [ebp + ecx - 0x7ec], eax
mov eax, dword [ebp - 0x7e8]
mov dword [ebp - 4], 0x13
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_stringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.virtual_0], vtable.std::basic_stringstream_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
mov eax, dword [ebp - 0x7e8]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x7ec], eax
lea eax, [ebp - 0x7d0]
mov ecx, eax
mov dword [ebp - 0x67c], eax
call fcn.0041a6a0
mov dword [ebp - method.std::basic_stringbuf_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.virtual_0], vtable.std::basic_stringbuf_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__.0
mov dword [ebp - 0x798], 0
mov dword [ebp - 0x794], 0
push dword [0x567354]
lea eax, [ebp - 0x7d8]
mov byte [ebp - 4], 0x15
push 0x5198a4
push eax
call fcn.00419ee0
add esp, 8
mov ecx, eax
call fcn.0041ab00
lea eax, [ebp - 0x558]
push eax
lea ecx, [ebp - 0x7e8]
call fcn.0041e900
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x528]
mov byte [ebp - 4], 0x16
call fcn.00404ed0
mov eax, dword [ebp - 0x544]
cmp eax, 8
jb 0x41ba74
inc eax
lea ecx, [ebp - 0x558]
push eax
push dword [ebp - 0x558]
call fcn.004052a0
lea ecx, [ebp - 0x780]
call fcn.0041a950
lea eax, [ebp - 0x780]
mov byte [ebp - 4], 0x19
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.004e13b9
add esp, 4
mov byte [ebp - 4], 1
push 0x208
lea eax, [ebp - 0x218]
push 0
push eax
call fcn.004e46b0
lea ecx, [ebp - 0x660]
add esp, 0xc
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41bac0
sub ecx, edx
mov esi, 0x104
sar ecx, 1
je 0x41bba7
mov ecx, esi
lea eax, [ebp - 0x218]
cmp word [eax], 0
je 0x41baf2
add eax, 2
sub ecx, 1
jne 0x41bae2
jmp 0x41bb3f
test ecx, ecx
je 0x41bb3f
mov edx, esi
lea eax, [ebp - 0x218]
sub edx, ecx
mov ecx, esi
lea eax, [eax + edx*2]
sub ecx, edx
je 0x41bb37
add edx, 0x7ffffefb
mov ebx, 0x5170a0
add edx, ecx
sub ebx, eax
test edx, edx
je 0x41bb33
movzx edi, word [ebx + eax]
test di, di
je 0x41bb33
mov word [eax], di
dec edx
add eax, 2
sub ecx, 1
jne 0x41bb18
jmp 0x41bb37
test ecx, ecx
jne 0x41bb3a
sub eax, 2
xor ecx, ecx
mov word [eax], cx
mov ecx, esi
lea eax, [ebp - 0x218]
cmp word [eax], 0
je 0x41bb57
add eax, 2
sub ecx, 1
jne 0x41bb47
jmp 0x41bba7
test ecx, ecx
je 0x41bba7
mov edx, esi
lea eax, [ebp - 0x218]
sub edx, ecx
mov ecx, esi
lea eax, [eax + edx*2]
sub ecx, edx
je 0x41bb9f
add edx, 0x7ffffefb
lea ebx, [ebp - 0x660]
add edx, ecx
sub ebx, eax
nop
test edx, edx
je 0x41bb9b
movzx edi, word [ebx + eax]
test di, di
je 0x41bb9b
mov word [eax], di
dec edx
add eax, 2
sub ecx, 1
jne 0x41bb80
jmp 0x41bb9f
test ecx, ecx
jne 0x41bba2
sub eax, 2
xor ecx, ecx
mov word [eax], cx
push dword [ebp - 0x668]
lea eax, [ebp - 0x510]
push str.__build__d_
push 0x50
push eax
call fcn.0041c2e0
add esp, 0x10
lea eax, [ebp - 0x218]
mov ecx, esi
nop dword [eax + eax]
cmp word [eax], 0
je 0x41bbe0
add eax, 2
sub ecx, 1
jne 0x41bbd0
jmp 0x41bc2c
test ecx, ecx
je 0x41bc2c
mov edx, esi
lea eax, [ebp - 0x218]
sub edx, ecx
lea eax, [eax + edx*2]
sub esi, edx
je 0x41bc24
lea ecx, [edx + 0x7ffffefb]
lea edi, [ebp - 0x510]
add ecx, esi
sub edi, eax
test ecx, ecx
je 0x41bc20
movzx edx, word [edi + eax]
test dx, dx
je 0x41bc20
mov word [eax], dx
dec ecx
add eax, 2
sub esi, 1
jne 0x41bc05
jmp 0x41bc24
test esi, esi
jne 0x41bc27
sub eax, 2
xor ecx, ecx
mov word [eax], cx
cmp word [ebp - 0x218], 0
jne 0x41bc3a
xor ecx, ecx
jmp 0x41bc52
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41bc43
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x218]
push eax
lea ecx, [ebp - 0x528]
call fcn.00404fa0
call fcn.0041bf70
lea ecx, [ebp - 0x528]
push 6
test eax, eax
je 0x41bc7d
push str._64Bit
jmp 0x41bc82
push str._32Bit
call fcn.00404fa0
cmp dword [ebp - 0x514], 8
lea eax, [ebp - 0x528]
cmovae eax, dword [ebp - 0x528]
push eax
push 0x567358
call dword [sym.imp.KERNEL32.DLL_lstrcpyW]
mov eax, dword [ebp - 0x514]
cmp eax, 8
jb 0x41bcc5
inc eax
lea ecx, [ebp - 0x528]
push eax
push dword [ebp - 0x528]
call fcn.004052a0
mov eax, 0x567358
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004e1f40
mov esp, ebp
pop ebp
ret