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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x120
mov eax, dword [0x447400]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov ecx, 0xc
mov esi, str.HARDWAREDESCRIPTIONSystemMultifunctionAdapter
lea edi, [ebp - 0x84]
rep movsd dword es:[edi], dword [esi]
push 0x4f
lea eax, [ebp - 0x53]
push 0
push eax
mov byte [ebp - 0x105], 1
movsb byte es:[edi], byte [esi]
call fcn.00429f70
push 0xa000
mov dword [ebp - 0x114], 0
mov dword [ebp - 0x11c], 0
mov dword [ebp - 0x110], 0
mov dword [ebp - 0x10c], 0
mov dword [ebp - 0x118], 0
call fcn.004297e1
mov esi, eax
add esp, 0x10
test esi, esi
jne 0x401688
pop edi
pop esi
xor al, al
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004287a4
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x10c]
push eax
push 0x20019
push 0
lea eax, [ebp - 0x84]
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x401875
push eax
push eax
push eax
push eax
mov dword [ebp - 0x120], eax
lea eax, [ebp - 0x114]
push eax
lea eax, [ebp - 0x104]
push eax
push 0
push dword [ebp - 0x10c]
mov dword [ebp - 0x114], 0x80
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
cmp eax, 0x103
je 0x401869
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x40178e
lea eax, [ebp - 0x118]
push eax
push 1
push 0
lea eax, [ebp - 0x104]
push eax
push dword [ebp - 0x10c]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
test eax, eax
jne 0x40178e
lea eax, [ebp - 0x110]
push eax
push esi
lea eax, [ebp - 0x11c]
push eax
push 0
push str.Identifier
push dword [ebp - 0x118]
mov dword [ebp - 0x110], 0x1000
call edi
test eax, eax
jne 0x40178e
push esi
push str.ACPI_BIOS
call fcn.00429562
add esp, 8
test eax, eax
jne 0x40178e
lea eax, [ebp - 0x110]
push eax
push esi
lea eax, [ebp - 0x11c]
push eax
push 0
push str.Configuration_Data
push dword [ebp - 0x118]
mov dword [ebp - 0x110], 0xa000
call edi
test eax, eax
jne 0x40178e
cmp dword [ebp - 0x11c], 9
je 0x4017d8
mov eax, dword [ebp - 0x120]
push 0
push 0
push 0
push 0
lea ecx, [ebp - 0x114]
push ecx
lea ecx, [ebp - 0x104]
inc eax
push ecx
push eax
push dword [ebp - 0x10c]
mov dword [ebp - 0x120], eax
mov dword [ebp - 0x114], 0x80
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExA]
cmp eax, 0x103
jne 0x4016f1
jmp 0x401869
movsx eax, byte [esi + 0x24]
and eax, 0xff
add dword [ebx], eax
adc dword [ebx + 4], 0
movsx eax, byte [esi + 0x25]
and eax, 0xff
shl eax, 8
add dword [ebx], eax
adc dword [ebx + 4], 0
movsx eax, byte [esi + 0x26]
and eax, 0xff
shl eax, 0x10
add dword [ebx], eax
adc dword [ebx + 4], 0
movsx eax, byte [esi + 0x27]
shl eax, 0x18
add dword [ebx], eax
mov eax, dword [ebx]
adc dword [ebx + 4], 0
or eax, dword [ebx + 4]
jne 0x401869
movsx eax, byte [esi + 0x20]
and eax, 0xff
mov dword [ebx], eax
mov dword [ebx + 4], 0
movsx eax, byte [esi + 0x21]
and eax, 0xff
shl eax, 8
add dword [ebx], eax
mov byte [ebp - 0x105], 0
adc dword [ebx + 4], 0
movsx eax, byte [esi + 0x22]
and eax, 0xff
shl eax, 0x10
add dword [ebx], eax
adc dword [ebx + 4], 0
movsx eax, byte [esi + 0x23]
shl eax, 0x18
add dword [ebx], eax
adc dword [ebx + 4], 0
push dword [ebp - 0x10c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push esi
call fcn.004297a9
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 0x105]
add esp, 4
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.004287a4
mov esp, ebp
pop ebp
ret