Function at 0x440a33
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
lea ebp, [esp - 0x2020]
mov eax, 0x2020
call fcn.004980c0
push 0xffffffffffffffff
push 0x4cc2b9
mov eax, dword fs:[0]
push eax
sub esp, 0xc
mov eax, dword [0x517774]
xor eax, ebp
mov dword [ebp + 0x201c], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0x202c]
mov edi, dword [ebp + 0x2038]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x2030]
mov esi, ecx
mov dword [ebp - 0x10], eax
call fcn.00427de3
test eax, eax
je 0x440afc
call fcn.0043fb48
mov eax, dword [0x529950]
xor ebx, ebx
cmp eax, ebx
je 0x440ad8
mov ecx, dword [esi + 4]
cmp ecx, ebx
jne 0x440aae
xor ecx, ecx
jmp 0x440ab1
mov ecx, dword [ecx + 4]
push edi
push dword [ebp + 0x2034]
add esi, 8
push dword [ebp - 0x10]
push dword [ebp - 0x18]
push dword [ebp + 0x2028]
push esi
push ecx
call eax
cmp eax, ebx
je 0x440ad8
push ebx
call dword [sym.imp.KERNEL32.dll_SetLastError]
jmp 0x440af3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
cmp esi, 0x7a
jne 0x440af5
cmp edi, ebx
je 0x440af5
mov eax, dword [ebp + 0x2034]
cmp eax, dword [edi]
jb 0x440af5
xor esi, esi
mov eax, esi
jmp 0x440c91
xor ebx, ebx
push ebx
lea ecx, [ebp]
mov dword [ebp + 0x18], 0xf
call fcn.00401260
lea eax, [ebp]
push eax
mov ecx, esi
mov dword [ebp - 4], ebx
mov dword [ebp - 0x14], ebx
call fcn.004409bb
test eax, eax
je 0x440b4f
cmp edi, ebx
je 0x440b29
mov dword [edi], ebx
cmp dword [ebp - 0x10], ebx
je 0x440b40
push dword [ebp + 0x2034]
push ebx
push dword [ebp - 0x10]
call fcn.00497680
add esp, 0xc
xor esi, esi
push ebx
push 1
lea ecx, [ebp]
call fcn.00401a30
jmp 0x440af5
cmp dword [ebp + 0x18], 0x10
mov eax, dword [ebp + 4]
jae 0x440b5b
lea eax, [ebp + 4]
push eax
push str.Enum_s
lea eax, [ebp + 0x1c]
push 0x2000
push eax
call fcn.00497562
mov eax, dword [ebp + 0x2028]
add esp, 0x10
cmp eax, 0x12
ja case.0x440b81.3
jmp dword [eax*4 + 0x440cb7]
mov esi, str.Capabilities
jmp 0x440bf6
mov esi, str.Class
jmp 0x440bf6
mov esi, str.ClassGUID
jmp 0x440bf6
mov esi, str.CompatibleIDs
jmp 0x440bf6
mov esi, str.ConfigFlags
jmp 0x440bf6
mov esi, str.DeviceDesc
jmp 0x440bf6
mov esi, str.Driver
jmp 0x440bf6
mov esi, str.FriendlyName
jmp 0x440bf6
mov esi, str.HardwareID
jmp 0x440bf6
mov esi, str.LocationInformation
jmp 0x440bf6
mov esi, str.LowerFilters
jmp 0x440bf6
mov esi, 0x4e1968
jmp 0x440bf6
mov esi, str.PhysicalDeviceObjectName
jmp 0x440bf6
mov esi, str.Service
jmp 0x440bf6
mov esi, str.UiNumber
jmp 0x440bf6
mov esi, str.UpperFilters
push ebx
lea eax, [ebp - 0x14]
push eax
push 0x20019
push ebx
lea eax, [ebp + 0x1c]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call fcn.00429833
add esp, 0x18
cmp eax, ebx
je 0x440c1d
mov esi, eax
jmp 0x440b42
lea eax, [ebp + 0x2034]
push eax
push dword [ebp - 0x10]
push dword [ebp - 0x18]
push ebx
push esi
push dword [ebp - 0x14]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push dword [ebp - 0x14]
mov esi, eax
call fcn.00429cef
pop ecx
cmp esi, 2
je 0x440b23
mov eax, 0xea
cmp esi, ebx
je 0x440c5a
cmp esi, eax
jne 0x440b42
cmp edi, ebx
je 0x440c66
mov ecx, dword [ebp + 0x2034]
mov dword [edi], ecx
cmp esi, eax
je 0x440c73
cmp dword [ebp - 0x10], ebx
jne 0x440b42
push 0x7a
pop esi
jmp 0x440b42
push 0xd
call dword [sym.imp.KERNEL32.dll_SetLastError]
push ebx
push 1
lea ecx, [ebp]
call fcn.00401a30
push 0xd
pop eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x201c]
xor ecx, ebp
call fcn.004974ba
add ebp, 0x2020
leave
ret 0x14