Function at 0x440b10
Capabilities:
Enumerate devices by category

Disassembly:
sub esp, 0x230
mov eax, dword [0x5d480c]
xor eax, esp
mov dword [esp + 0x22c], eax
mov eax, dword [esp + 0x234]
mov ecx, dword [esp + 0x238]
push ebp
push edi
push 0x1fe
mov dword [esp + 0x24], eax
xor edi, edi
lea eax, [esp + 0x3a]
xor edx, edx
push edi
push eax
mov dword [esp + 0x24], ecx
xor ebp, ebp
mov word [esp + 0x40], dx
call fcn.00493420
add esp, 0xc
lea ecx, [esp + 0x14]
push ecx
push 0x58d8e8
push 1
push edi
push 0x58a920
mov dword [esp + 0x28], edi
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, edi
jl 0x440d1d
mov eax, dword [esp + 0x14]
push ebx
push edi
lea ecx, [esp + 0x18]
push ecx
mov dword [esp + 0x1c], edi
mov edx, dword [eax]
mov edx, dword [edx + 0xc]
push 0x58a940
push eax
call edx
mov ebx, eax
cmp ebx, edi
jne 0x440cef
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x20]
push edx
lea edx, [esp + 0x10]
push edx
mov dword [esp + 0x14], edi
mov ecx, dword [eax]
push 1
push eax
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
jne 0x440cdf
push esi
lea esp, [esp]
cmp ebp, edi
jne 0x440cde
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
lea edx, [esp + 0x14]
push edx
push 0x599c9c
push edi
push edi
push eax
mov eax, dword [ecx + 0x24]
call eax
mov ebx, eax
cmp ebx, edi
jl 0x440cbe
lea ecx, [esp + 0x2c]
push ecx
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov eax, dword [esp + 0x14]
mov edx, dword [eax]
mov edx, dword [edx + 0xc]
push edi
lea ecx, [esp + 0x30]
push ecx
push str.DevicePath
push eax
call edx
mov ebx, eax
cmp ebx, edi
jl 0x440c93
mov esi, dword [esp + 0x34]
movzx eax, word [esi]
xor edx, edx
cmp ax, di
je 0x440c5e
movzx eax, ax
xor ecx, ecx
cmp ax, 0x41
jb 0x440c49
cmp ax, 0x5a
ja 0x440c49
movzx eax, ax
add eax, 0x20
jmp 0x440c4c
movzx eax, ax
inc edx
mov word [esp + ecx + 0x3c], ax
lea ecx, [edx + edx]
movzx eax, word [ecx + esi]
cmp ax, di
jne 0x440c35
mov eax, dword [esp + 0x20]
push eax
lea ecx, [esp + 0x40]
push ecx
call fcn.00494ad6
add esp, 8
test eax, eax
je 0x440c93
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov edx, dword [eax]
mov edx, dword [edx + 0x20]
push ecx
push 0x58d958
push edi
push edi
push eax
call edx
mov ebx, eax
mov ebp, 1
lea eax, [esp + 0x2c]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14], edi
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
lea edx, [esp + 0x24]
push edx
lea edx, [esp + 0x14]
push edx
push 1
push eax
mov eax, dword [ecx + 0xc]
call eax
test eax, eax
je 0x440bd0
pop esi
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov dword [esp + 0x14], edi
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
cmp ebp, edi
je 0x440d19
mov eax, ebx
pop ebx
pop edi
pop ebp
mov ecx, dword [esp + 0x22c]
xor ecx, esp
call fcn.00493eee
add esp, 0x230
ret
or eax, 0xffffffff
pop ebx
mov ecx, dword [esp + 0x234]
pop edi
pop ebp
xor ecx, esp
call fcn.00493eee
add esp, 0x230
ret