Function at 0x46d1cc
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 0x46d1fd
xor eax, eax
jmp 0x46d6fb
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 0x46d22d
push dword [ebp - 4]
call sub.ADVAPI32.DLL_RegCloseKey
xor eax, eax
jmp 0x46d6fb
xor edx, edx
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x14], edx
xor eax, eax
mov dword [ebp - 0x18], eax
jmp 0x46d6cc
mov dword [ebp - 0x24], 0x400
push 0x400
push 0
lea ecx, [ebp - 0x430]
push ecx
call fcn.0066cc88
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 0x46d6cc
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 0x46d6cc
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 0x46d6c4
mov ecx, dword [ebp - 0x2c]
test ecx, ecx
jne 0x46d6c4
mov dword [ebp - 0x24], 0x400
mov dword [ebp - 0x28], 1
push 0x400
push 0
lea eax, [ebp - 0x430]
push eax
call fcn.0066cc88
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 0x46d6c4
push 5
push str.SCSI_
lea ecx, [ebp - 0x430]
push ecx
call fcn.0066d09c
add esp, 0xc
test eax, eax
jne 0x46d6c4
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 0x46d6c4
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.0066cc88
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 0x46d3f3
lea eax, [ebp - 0x430]
push eax
call fcn.00674df8
pop ecx
mov edx, dword [ebp + 8]
xor ecx, ecx
mov cl, byte [edx + 9]
cmp eax, ecx
jne 0x46d3f3
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.0066cc88
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 0x46d45b
lea ecx, [ebp - 0x430]
push ecx
call fcn.00674df8
pop ecx
mov edx, dword [ebp + 8]
xor ecx, ecx
mov cl, byte [edx + 0xa]
cmp eax, ecx
jne 0x46d45b
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
cmp eax, 2
jne 0x46d62c
mov dword [ebp - 0x24], 0x400
mov dword [ebp - 0x28], 1
push 0x400
push 0
lea eax, [ebp - 0x430]
push eax
call fcn.0066cc88
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.0066ce38
pop ecx
mov ecx, dword [ebp - 0x30]
cmp eax, ecx
jae 0x46d4d7
lea eax, [ebp - 0x430]
push eax
call fcn.0066ce38
pop ecx
mov dword [ebp - 0x30], eax
mov edx, dword [ebp - 0x18]
test edx, edx
jne 0x46d4fe
push dword [ebp - 0x30]
mov ecx, dword [ebp + 8]
add ecx, 0x5a
push ecx
lea eax, [ebp - 0x430]
push eax
call fcn.0066d09c
add esp, 0xc
test eax, eax
jne 0x46d4fe
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.0066cc88
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.0066ce38
pop ecx
mov edx, dword [ebp - 0x30]
cmp eax, edx
jae 0x46d56e
lea eax, [ebp - 0x430]
push eax
call fcn.0066ce38
pop ecx
mov dword [ebp - 0x30], eax
mov ecx, dword [ebp - 0x18]
test ecx, ecx
jne 0x46d595
push dword [ebp - 0x30]
mov eax, dword [ebp + 8]
add eax, 0x63
push eax
lea edx, [ebp - 0x430]
push edx
call fcn.0066d09c
add esp, 0xc
test eax, eax
jne 0x46d595
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.0066cc88
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.0066ce38
pop ecx
mov edx, dword [ebp - 0x30]
cmp eax, edx
jae 0x46d605
lea ecx, [ebp - 0x430]
push ecx
call fcn.0066ce38
pop ecx
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x18]
test eax, eax
jne 0x46d62c
push dword [ebp - 0x30]
mov edx, dword [ebp + 8]
add edx, 0x76
push edx
lea ecx, [ebp - 0x430]
push ecx
call fcn.0066d09c
add esp, 0xc
test eax, eax
jne 0x46d62c
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
cmp eax, 5
jne 0x46d6bc
mov dword [ebp - 0x24], 0x400
mov dword [ebp - 0x28], 1
push 0x400
push 0
lea edx, [ebp - 0x430]
push edx
call fcn.0066cc88
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 0x46d6bc
movsx eax, byte [ebp - 0x430]
cmp eax, 0x61
jl 0x46d6a3
movsx edx, byte [ebp - 0x430]
cmp edx, 0x7a
jg 0x46d6a3
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 0x46d6e2
mov ecx, dword [ebp - 0x18]
cmp ecx, 0x103
jne 0x46d23f
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