Function at 0x40ead6
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x194
push ebx
push esi
push edi
xor edi, edi
mov dword [ebp - 0x20], ecx
xor eax, eax
mov dword [ebp - 0x10], 0x80
lea edx, [ebp - 0x194]
mov dword [ebp - 0x28], edi
lea ecx, [ebp - 0x90]
mov dword [ebp - 0x1c], edi
mov esi, edi
mov dword [ebp - 8], edi
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x90], 0x8e30890
mov dword [ebp - 0x8c], 0x8e308e9
mov dword [ebp - 0x88], 0x8d508e4
mov dword [ebp - 0x84], 0x8ec08dd
mov dword [ebp - 0x80], 0x90508d3
mov dword [ebp - 0x7c], 0x9020902
mov dword [ebp - 0x78], 0x8fe08f5
mov dword [ebp - 0x74], 0x8d30904
mov dword [ebp - 0x70], 0x8fe08ff
mov dword [ebp - 0x6c], 0x9020904
mov dword [ebp - 0x68], 0x8fc08ff
mov dword [ebp - 0x64], 0x8f508e3
mov dword [ebp - 0x60], 0x8ec0904
mov dword [ebp - 0x5c], 0x8f508e3
mov dword [ebp - 0x58], 0x9060902
mov dword [ebp - 0x54], 0x8f308f9
mov dword [ebp - 0x50], 0x90308f5
mov dword [ebp - 0x4c], 0x8fd08ec
mov dword [ebp - 0x48], 0x9030903
mov dword [ebp - 0x44], 0x8f208fd
mov dword [ebp - 0x40], 0x8ff08f9
mov dword [ebp - 0x3c], 0x8ec0903
mov dword [ebp - 0x38], 0x8f108d4
mov dword [ebp - 0x34], 0x8f10904
mov word [ebp - 0x30], ax
call fcn.0040e716
lea eax, [ebp - 0x14]
push eax
push 1
push edi
mov eax, edx
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov ebx, edi
test eax, eax
jne 0x40ee23
lea eax, [ebp - 8]
push eax
push edi
lea eax, [ebp - 0x1c]
push eax
push edi
push str.SMBiosData
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 4], eax
test eax, eax
jne 0x40ec54
cmp dword [ebp - 8], ebx
je 0x40ec4d
cmp dword [ebp - 0x1c], 3
jne 0x40ec4d
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push dword [ebp - 8]
mov dword [ebp - 0x28], eax
push edi
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
test esi, esi
jne 0x40ec33
mov dword [ebp - 4], 8
jmp 0x40ec54
lea eax, [ebp - 8]
push eax
push esi
push edi
push edi
push str.SMBiosData
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 4], eax
jmp 0x40ec54
mov dword [ebp - 4], 0x3f2
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
cmp dword [ebp - 4], ebx
jne 0x40ee0e
movzx edi, word [esi + 6]
movzx eax, word [esi + 4]
add edi, 8
add eax, 8
mov dword [ebp - 0x24], eax
cmp byte [edi + esi], 0x7f
je 0x40ee0c
cmp edi, eax
jae 0x40ee0c
movzx eax, byte [edi + esi + 1]
mov edx, edi
xor ecx, ecx
mov dword [ebp - 0x2c], edx
add edi, eax
inc ecx
mov dword [ebp - 0xc], ecx
mov al, byte [edx + esi]
cmp al, 1
jne 0x40ecef
cmp dword [ebp - 0x18], 0
jne 0x40ecef
movzx eax, byte [edx + esi + 4]
cmp eax, ecx
je 0x40ecc7
movzx eax, byte [edx + esi + 5]
cmp eax, ecx
je 0x40ecc7
movzx eax, byte [edx + esi + 6]
cmp eax, ecx
jne 0x40ed9c
push str.System_manufacturer
lea ebx, [edi + esi]
push ebx
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
mov ecx, dword [ebp - 0xc]
test eax, eax
jne 0x40ed9c
xor ebx, ebx
mov dword [ebp - 0x18], 1
jmp 0x40ed9c
cmp al, 2
jne 0x40ed1d
cmp dword [ebp - 0x18], 1
jne 0x40ed1d
movzx eax, byte [edx + esi + 4]
cmp eax, ecx
je 0x40ed18
movzx eax, byte [edx + esi + 5]
cmp eax, ecx
je 0x40ed18
movzx eax, byte [edx + esi + 6]
cmp eax, ecx
jne 0x40ed9c
lea ebx, [edi + esi]
jmp 0x40ed9c
cmp al, 3
jne 0x40ed9c
cmp ecx, 1
jne 0x40ed9c
movzx eax, byte [edx + esi + 5]
cmp eax, 7
ja 0x40ed67
je 0x40ed60
dec eax
sub eax, ecx
je 0x40ed59
sub eax, ecx
je 0x40ed52
sub eax, ecx
je 0x40ed4b
dec eax
sub eax, ecx
jne 0x40ed7b
mov ebx, 0x4b84a0
jmp 0x40eda0
mov ebx, 0x4b849c
jmp 0x40eda0
mov ebx, 0x4b8498
jmp 0x40eda0
mov ebx, 0x4b8494
jmp 0x40eda0
mov ebx, 0x4b84a4
jmp 0x40eda0
sub eax, 8
je 0x40ed97
sub eax, 1
je 0x40ed90
sub eax, 1
je 0x40ed89
sub eax, 4
je 0x40ed82
mov ebx, str.x2346789
jmp 0x40eda0
mov ebx, 0x4b84b4
jmp 0x40eda0
mov ebx, 0x4b84b0
jmp 0x40eda0
mov ebx, 0x4b84ac
jmp 0x40eda0
mov ebx, 0x4b84a8
test ebx, ebx
je 0x40ede6
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x40eda5
sub ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x94], eax
inc eax
cmp dword [ebp - 0x10], eax
jbe 0x40edd5
push ebx
mov ebx, dword [ebp - 0x20]
push 0x4b84b8
push ebx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
add ebx, eax
mov dword [ebp - 0x20], ebx
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp - 0x94]
xor ebx, ebx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x10], eax
inc ecx
mov dword [ebp - 0xc], ecx
mov al, byte [edi + esi]
inc edi
test al, al
jne 0x40edea
cmp byte [edi + esi], 0
mov eax, dword [ebp - 0x24]
je 0x40ee06
mov edx, dword [ebp - 0x2c]
cmp edi, eax
jb 0x40ec9b
inc edi
jmp 0x40ec77
xor edi, edi
test esi, esi
je 0x40ee1d
push esi
push edi
push dword [ebp - 0x28]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov edi, dword [ebp - 0x10]
mov eax, dword [ebp - 4]
push eax
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret