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

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffbd0
lea eax, [ebp - 4]
push eax
push 1
push 0
push str.Config_ManagerEnum
push reloc.OLEAUT32.DLL_SysStringLen
call sub.ADVAPI32.DLL_RegOpenKeyExA
mov dword [ebp - 0x18], eax
mov edx, dword [ebp - 0x18]
test edx, edx
je 0x46cf15
xor eax, eax
jmp 0x46d413
lea edx, [ebp - 8]
push edx
push 1
push 0
push str.Enum
push SysStringLen
call sub.ADVAPI32.DLL_RegOpenKeyExA
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x18]
test ecx, ecx
je 0x46cf45
push dword [ebp - 4]
call sub.ADVAPI32.DLL_RegCloseKey
xor eax, eax
jmp 0x46d413
xor edx, edx
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x14], edx
xor eax, eax
mov dword [ebp - 0x18], eax
jmp 0x46d3e4
mov dword [ebp - 0x24], 0x400
push 0x400
push 0
lea ecx, [ebp - 0x430]
push ecx
call fcn.0066c86c
add esp, 0xc
push 0
push 0
push 0
push 0
lea eax, [ebp - 0x24]
push eax
lea edx, [ebp - 0x430]
push edx
mov ecx, dword [ebp - 0x14]
inc dword [ebp - 0x14]
push ecx
push dword [ebp - 4]
call sub.ADVAPI32.DLL_RegEnumKeyExA
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
test eax, eax
jne 0x46d3e4
lea edx, [ebp - 0xc]
push edx
push 1
push 0
lea ecx, [ebp - 0x430]
push ecx
push dword [ebp - 4]
call sub.ADVAPI32.DLL_RegOpenKeyExA
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x18]
test eax, eax
jne 0x46d3e4
mov dword [ebp - 0x24], 4
mov dword [ebp - 0x28], 4
lea edx, [ebp - 0x24]
push edx
lea ecx, [ebp - 0x2c]
push ecx
lea eax, [ebp - 0x28]
push eax
push 0
push str.Problem
push dword [ebp - 0xc]
call sub.ADVAPI32.DLL_RegQueryValueExA
mov dword [ebp - 0x18], eax
mov edx, dword [ebp - 0x18]
test edx, edx
jne 0x46d3dc
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
jne 0x46d3dc
mov dword [ebp - 0x24], 0x400
mov dword [ebp - 0x28], 1
push 0x400
push 0
lea eax, [ebp - 0x430]
push eax
call fcn.0066c86c
add esp, 0xc
lea edx, [ebp - 0x24]
push edx
lea ecx, [ebp - 0x430]
push ecx
lea eax, [ebp - 0x28]
push eax
push 0
push str.HardwareKey
push dword [ebp - 0xc]
call sub.ADVAPI32.DLL_RegQueryValueExA
mov dword [ebp - 0x18], eax
mov edx, dword [ebp - 0x18]
test edx, edx
jne 0x46d3dc
push 5
push str.SCSI_
lea ecx, [ebp - 0x430]
push ecx
call fcn.0066cc80
add esp, 0xc
test eax, eax
jne 0x46d3dc
lea eax, [ebp - 0x10]
push eax
push 1
push 0
lea edx, [ebp - 0x430]
push edx
push dword [ebp - 8]
call sub.ADVAPI32.DLL_RegOpenKeyExA
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x18]
test ecx, ecx
jne 0x46d3dc
xor eax, eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], 0x400
mov dword [ebp - 0x28], 1
push 0x400
push 0
lea edx, [ebp - 0x430]
push edx
call fcn.0066c86c
add esp, 0xc
lea ecx, [ebp - 0x24]
push ecx
lea eax, [ebp - 0x430]
push eax
lea edx, [ebp - 0x28]
push edx
push 0
push str.SCSITargetID
push dword [ebp - 0x10]
call sub.ADVAPI32.DLL_RegQueryValueExA
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x18]
test ecx, ecx
jne 0x46d10b
lea eax, [ebp - 0x430]
push eax
call fcn.006749dc
pop ecx
mov edx, dword [ebp + 8]
xor ecx, ecx
mov cl, byte [edx + 9]
cmp eax, ecx
jne 0x46d10b
inc dword [ebp - 0x20]
mov dword [ebp - 0x24], 0x400
mov dword [ebp - 0x28], 1
push 0x400
push 0
lea eax, [ebp - 0x430]
push eax
call fcn.0066c86c
add esp, 0xc
lea edx, [ebp - 0x24]
push edx
lea ecx, [ebp - 0x430]
push ecx
lea eax, [ebp - 0x28]
push eax
push 0
push str.SCSILun
push dword [ebp - 0x10]
call sub.ADVAPI32.DLL_RegQueryValueExA
mov dword [ebp - 0x18], eax
mov edx, dword [ebp - 0x18]
test edx, edx
jne 0x46d173
lea ecx, [ebp - 0x430]
push ecx
call fcn.006749dc
pop ecx
mov edx, dword [ebp + 8]
xor ecx, ecx
mov cl, byte [edx + 0xa]
cmp eax, ecx
jne 0x46d173
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
cmp eax, 2
jne 0x46d344
mov dword [ebp - 0x24], 0x400
mov dword [ebp - 0x28], 1
push 0x400
push 0
lea eax, [ebp - 0x430]
push eax
call fcn.0066c86c
add esp, 0xc
lea edx, [ebp - 0x24]
push edx
lea ecx, [ebp - 0x430]
push ecx
lea eax, [ebp - 0x28]
push eax
push 0
push str.Manufacturer
push dword [ebp - 0x10]
call sub.ADVAPI32.DLL_RegQueryValueExA
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x30], 8
lea edx, [ebp - 0x430]
push edx
call fcn.0066ca1c
pop ecx
mov ecx, dword [ebp - 0x30]
cmp eax, ecx
jae 0x46d1ef
lea eax, [ebp - 0x430]
push eax
call fcn.0066ca1c
pop ecx
mov dword [ebp - 0x30], eax
mov edx, dword [ebp - 0x18]
test edx, edx
jne 0x46d216
push dword [ebp - 0x30]
mov ecx, dword [ebp + 8]
add ecx, 0x5a
push ecx
lea eax, [ebp - 0x430]
push eax
call fcn.0066cc80
add esp, 0xc
test eax, eax
jne 0x46d216
inc dword [ebp - 0x20]
mov dword [ebp - 0x24], 0x400
mov dword [ebp - 0x28], 1
push 0x400
push 0
lea edx, [ebp - 0x430]
push edx
call fcn.0066c86c
add esp, 0xc
lea ecx, [ebp - 0x24]
push ecx
lea eax, [ebp - 0x430]
push eax
lea edx, [ebp - 0x28]
push edx
push 0
push str.ProductId
push dword [ebp - 0x10]
call sub.ADVAPI32.DLL_RegQueryValueExA
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x30], 0x12
lea ecx, [ebp - 0x430]
push ecx
call fcn.0066ca1c
pop ecx
mov edx, dword [ebp - 0x30]
cmp eax, edx
jae 0x46d286
lea eax, [ebp - 0x430]
push eax
call fcn.0066ca1c
pop ecx
mov dword [ebp - 0x30], eax
mov ecx, dword [ebp - 0x18]
test ecx, ecx
jne 0x46d2ad
push dword [ebp - 0x30]
mov eax, dword [ebp + 8]
add eax, 0x63
push eax
lea edx, [ebp - 0x430]
push edx
call fcn.0066cc80
add esp, 0xc
test eax, eax
jne 0x46d2ad
inc dword [ebp - 0x20]
mov dword [ebp - 0x24], 0x400
mov dword [ebp - 0x28], 1
push 0x400
push 0
lea ecx, [ebp - 0x430]
push ecx
call fcn.0066c86c
add esp, 0xc
lea eax, [ebp - 0x24]
push eax
lea edx, [ebp - 0x430]
push edx
lea ecx, [ebp - 0x28]
push ecx
push 0
push str.RevisionLevel
push dword [ebp - 0x10]
call sub.ADVAPI32.DLL_RegQueryValueExA
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x30], 3
lea eax, [ebp - 0x430]
push eax
call fcn.0066ca1c
pop ecx
mov edx, dword [ebp - 0x30]
cmp eax, edx
jae 0x46d31d
lea ecx, [ebp - 0x430]
push ecx
call fcn.0066ca1c
pop ecx
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x18]
test eax, eax
jne 0x46d344
push dword [ebp - 0x30]
mov edx, dword [ebp + 8]
add edx, 0x76
push edx
lea ecx, [ebp - 0x430]
push ecx
call fcn.0066cc80
add esp, 0xc
test eax, eax
jne 0x46d344
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
cmp eax, 5
jne 0x46d3d4
mov dword [ebp - 0x24], 0x400
mov dword [ebp - 0x28], 1
push 0x400
push 0
lea edx, [ebp - 0x430]
push edx
call fcn.0066c86c
add esp, 0xc
lea ecx, [ebp - 0x24]
push ecx
lea eax, [ebp - 0x430]
push eax
lea edx, [ebp - 0x28]
push edx
push 0
push str.CurrentDriveLetterAssignment
push dword [ebp - 0x10]
call sub.ADVAPI32.DLL_RegQueryValueExA
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x18]
test ecx, ecx
jne 0x46d3d4
movsx eax, byte [ebp - 0x430]
cmp eax, 0x61
jl 0x46d3bb
movsx edx, byte [ebp - 0x430]
cmp edx, 0x7a
jg 0x46d3bb
add byte [ebp - 0x430], 0xe0
mov cl, byte [ebp - 0x430]
add cl, 0xbf
mov eax, dword [ebp + 8]
mov byte [eax + 0x9a], cl
mov dword [ebp - 0x1c], 1
push dword [ebp - 0x10]
call sub.ADVAPI32.DLL_RegCloseKey
push dword [ebp - 0xc]
call sub.ADVAPI32.DLL_RegCloseKey
mov edx, dword [ebp - 0x1c]
test edx, edx
jne 0x46d3fa
mov ecx, dword [ebp - 0x18]
cmp ecx, 0x103
jne 0x46cf57
push dword [ebp - 8]
call sub.ADVAPI32.DLL_RegCloseKey
push dword [ebp - 4]
call sub.ADVAPI32.DLL_RegCloseKey
mov eax, dword [ebp + 8]
mov al, byte [eax + 0x9a]
mov esp, ebp
pop ebp
ret