Function at 0x4018b8
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xac
push ebx
push esi
push edi
lea eax, [ebp - 0x24]
push eax
push 0x20019
xor edi, edi
push edi
mov esi, str.HARDWAREDESCRIPTIONSystemBIOS
push esi
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
je 0x40190e
push esi
push ecx
push str.Failed_to_open_registry_key:
push 0x41e8b0
call fcn.004036c2
add esp, 0xc
push eax
call fcn.004036c2
pop ecx
pop ecx
push eax
call fcn.00401c50
xor al, al
jmp 0x401bba
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0xa8]
push eax
push edi
push edi
push str.SystemManufacturer
push dword [ebp - 0x24]
mov dword [ebp - 0x28], 0x80
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
je 0x401956
push str.Failed_to_query_value:_SystemManufacturer
push 0x41e8b0
call fcn.004036c2
pop ecx
pop ecx
push eax
call fcn.00401c50
push dword [ebp - 0x24]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jmp 0x401907
push dword [ebp - 0x24]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp - 0xa8]
mov dword [ebp - 0xc], 0xf
mov dword [ebp - 0x10], edi
mov byte [ebp - 0x20], 0
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x401976
sub eax, ecx
push eax
lea eax, [ebp - 0xa8]
push eax
lea ecx, [ebp - 0x20]
call fcn.00402e52
mov ebx, dword [ebp - 0x10]
cmp ebx, edi
jbe 0x4019eb
cmp ebx, 6
jb 0x4019eb
mov eax, dword [ebp - 0x20]
add ebx, 0xfffffffb
cmp dword [ebp - 0xc], 0x10
jae 0x4019aa
lea eax, [ebp - 0x20]
push ebx
push 0x56
push eax
mov dword [ebp - 4], eax
call fcn.00405020
add esp, 0xc
cmp eax, edi
je 0x4019eb
push 3
pop ecx
mov edi, str.VMware
mov esi, eax
xor edx, edx
repe cmpsw word [esi], word es:[edi]
je 0x401a14
mov ecx, dword [ebp - 4]
sub ecx, eax
lea ebx, [ebx + ecx - 1]
push ebx
inc eax
push 0x56
push eax
mov dword [ebp - 4], eax
call fcn.00405020
add esp, 0xc
test eax, eax
jne 0x4019bd
or eax, 0xffffffff
cmp eax, 0xffffffff
jne 0x401bac
mov ebx, dword [ebp - 0x10]
test ebx, ebx
je 0x401a51
cmp ebx, 7
jb 0x401a51
mov eax, dword [ebp - 0x20]
add ebx, 0xfffffffa
cmp dword [ebp - 0xc], 0x10
jae 0x401a3e
lea eax, [ebp - 0x20]
jmp 0x401a3e
cmp dword [ebp - 0xc], 0x10
mov ecx, dword [ebp - 0x20]
jae 0x401a20
lea ecx, [ebp - 0x20]
sub eax, ecx
jmp 0x4019ee
push 7
pop ecx
mov edi, str.Virtual
mov esi, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x401a7a
mov ecx, dword [ebp - 4]
sub ecx, eax
lea ebx, [ebx + ecx - 1]
inc eax
push ebx
push 0x56
push eax
mov dword [ebp - 4], eax
call fcn.00405020
add esp, 0xc
test eax, eax
jne 0x401a24
or eax, 0xffffffff
cmp eax, 0xffffffff
jne 0x401bac
mov ebx, dword [ebp - 0x10]
test ebx, ebx
je 0x401ab7
cmp ebx, 0x15
jb 0x401ab7
mov eax, dword [ebp - 0x20]
add ebx, 0xffffffec
cmp dword [ebp - 0xc], 0x10
jae 0x401aa4
lea eax, [ebp - 0x20]
jmp 0x401aa4
cmp dword [ebp - 0xc], 0x10
mov ecx, dword [ebp - 0x20]
jae 0x401a86
lea ecx, [ebp - 0x20]
sub eax, ecx
jmp 0x401a54
push 0x15
pop ecx
mov edi, str.Microsoft_Corporation
mov esi, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x401ae0
mov ecx, dword [ebp - 4]
sub ecx, eax
lea ebx, [ebx + ecx - 1]
inc eax
push ebx
push 0x4d
push eax
mov dword [ebp - 4], eax
call fcn.00405020
add esp, 0xc
test eax, eax
jne 0x401a8a
or eax, 0xffffffff
cmp eax, 0xffffffff
jne 0x401bac
mov ebx, dword [ebp - 0x10]
test ebx, ebx
je 0x401b1d
cmp ebx, 0xc
jb 0x401b1d
mov eax, dword [ebp - 0x20]
add ebx, 0xfffffff5
cmp dword [ebp - 0xc], 0x10
jae 0x401b0a
lea eax, [ebp - 0x20]
jmp 0x401b0a
cmp dword [ebp - 0xc], 0x10
mov ecx, dword [ebp - 0x20]
jae 0x401aec
lea ecx, [ebp - 0x20]
sub eax, ecx
jmp 0x401aba
push 3
pop ecx
mov edi, str.innotek_GmbH
mov esi, eax
xor edx, edx
repe cmpsd dword [esi], dword es:[edi]
je 0x401b46
mov ecx, dword [ebp - 4]
sub ecx, eax
lea ebx, [ebx + ecx - 1]
inc eax
push ebx
push 0x69
push eax
mov dword [ebp - 4], eax
call fcn.00405020
add esp, 0xc
test eax, eax
jne 0x401af0
or eax, 0xffffffff
cmp eax, 0xffffffff
jne 0x401bac
mov ebx, dword [ebp - 0x10]
test ebx, ebx
je 0x401b83
cmp ebx, 0x25
jb 0x401b83
mov eax, dword [ebp - 0x20]
add ebx, 0xffffffdc
cmp dword [ebp - 0xc], 0x10
jae 0x401b70
lea eax, [ebp - 0x20]
jmp 0x401b70
cmp dword [ebp - 0xc], 0x10
mov ecx, dword [ebp - 0x20]
jae 0x401b52
lea ecx, [ebp - 0x20]
sub eax, ecx
jmp 0x401b20
push 0x25
pop ecx
mov edi, str.Parallels_Software_International_Inc.
mov esi, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x401b9c
mov ecx, dword [ebp - 4]
sub ecx, eax
lea ebx, [ebx + ecx - 1]
inc eax
push ebx
push 0x50
push eax
mov dword [ebp - 4], eax
call fcn.00405020
add esp, 0xc
test eax, eax
jne 0x401b56
or eax, 0xffffffff
cmp eax, 0xffffffff
jne 0x401bac
push 0
push 1
lea ecx, [ebp - 0x20]
call fcn.004029e9
jmp 0x401907
cmp dword [ebp - 0xc], 0x10
mov ecx, dword [ebp - 0x20]
jae 0x401ba8
lea ecx, [ebp - 0x20]
sub eax, ecx
jmp 0x401b86
push 0
push 1
lea ecx, [ebp - 0x20]
call fcn.004029e9
mov al, 1
pop edi
pop esi
pop ebx
leave
ret