Function at 0x46ea1a
Capabilities:
Enumerate devices by category

Disassembly:
push 0x40
mov eax, 0x47ff2d
call fcn.004026ff
mov dword [ebp - 0x1c], ecx
mov esi, dword [ebp + 8]
xor ebx, ebx
push 4
pop ecx
mov edi, 0x40ea44
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
mov dword [ebp - 0x10], ebx
jne 0x46ea46
push 0x46f778
jmp 0x46ea63
mov esi, dword [ebp + 8]
push 4
pop ecx
mov edi, 0x40ea54
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
jne 0x46ea5e
push 0x46f700
jmp 0x46ea63
push 0x46f690
push 8
call fcn.004015a0
pop ecx
pop ecx
mov dword [ebp - 0x24], ebx
lea eax, [ebp - 0x24]
push eax
push 0x410498
push 0x17
push ebx
push 0x411160
mov dword [ebp - 4], ebx
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov esi, eax
cmp esi, ebx
jge 0x46eaad
push esi
push 0x46f5e8
push 1
call fcn.004015a0
add esp, 0xc
mov eax, dword [ebp - 0x24]
or dword [ebp - 4], 0xffffffff
cmp eax, ebx
jmp 0x46edad
mov dword [ebp - 0x20], ebx
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
push ebx
lea edx, [ebp - 0x20]
push edx
push dword [ebp + 8]
mov byte [ebp - 4], 1
push eax
call dword [ecx + 0xc]
mov esi, eax
cmp esi, ebx
je 0x46eaee
push esi
push 0x46f540
push 1
call fcn.004015a0
mov eax, dword [ebp - 0x20]
add esp, 0xc
mov byte [ebp - 4], 0
cmp eax, ebx
je 0x46ea9f
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x46ea9f
mov dword [ebp - 0x14], ebx
mov eax, dword [ebp - 0x20]
lea edx, [ebp - 0x28]
push edx
lea edx, [ebp - 0x14]
push edx
push 1
mov dword [ebp - 0x28], ebx
mov ecx, dword [eax]
push eax
mov byte [ebp - 4], 2
call dword [ecx + 0xc]
mov esi, eax
cmp esi, ebx
jl 0x46ed82
cmp dword [ebp - 0x28], 1
mov edi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov ebx, dword [ebp - 0x1c]
jne 0x46ed82
xor esi, esi
mov dword [ebp - 0x18], esi
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
lea edx, [ebp - 0x18]
push edx
push 0x4134b0
push esi
push esi
push eax
mov byte [ebp - 4], 3
call dword [ecx + 0x24]
cmp eax, esi
jge 0x46eb64
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 2
cmp eax, esi
je 0x46eb5a
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
cmp eax, esi
jmp 0x46efb6
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
push esi
lea edx, [ebp - 0x4c]
push edx
push 0x4104fc
push eax
mov byte [ebp - 4], 4
call dword [ecx + 0xc]
cmp eax, esi
jge 0x46eba8
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
push esi
lea edx, [ebp - 0x4c]
push edx
push 0x410560
push eax
call dword [ecx + 0xc]
cmp eax, esi
jge 0x46eba8
lea eax, [ebp - 0x4c]
push eax
call edi
jmp 0x46eb49
cmp dword [ebp + 0xc], esi
je 0x46ebd6
push dword [ebp - 0x44]
push dword [ebp + 0xc]
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
jne 0x46ebd6
push dword [ebp + 0xc]
push dword [ebp - 0x44]
push 0x46f468
push 8
call fcn.004015a0
add esp, 0x10
jmp 0x46eba0
push dword [ebp - 0x44]
push 0x46f3d8
push 8
call fcn.004015a0
or dword [ebp - 0x2c], 0xffffffff
add esp, 0xc
lea eax, [ebp - 0x2c]
push eax
push dword [ebp - 0x44]
mov ecx, ebx
push dword [ebp + 8]
call fcn.0046a6fb
test eax, eax
jne 0x46edbf
push dword [ebp - 0x2c]
lea ecx, [ebx + 0x24]
call fcn.00402770
mov esi, dword [eax]
mov eax, dword [esi + 4]
cmp eax, 0x80070037
jne 0x46ed0c
and dword [esi + 0x110], 0
cmp dword [esi + 0x38], 0
mov dword [esi + 4], 0x8000000a
je 0x46ec49
push 0x46f320
push 4
call fcn.004015a0
pop ecx
pop ecx
mov dword [esi + 0x50], 2
or dword [esi + 0x10c], 0x80
push 1
push 1
push 0x8000
push esi
mov ecx, ebx
call fcn.0046899f
test eax, eax
jge 0x46ec76
push 0x46f298
push 1
call fcn.004015a0
pop ecx
pop ecx
mov eax, dword [esi + 0x60]
test eax, eax
je 0x46ec81
mov ebx, eax
jmp 0x46ec94
push 0x40b46c
lea ecx, [ebp - 0x34]
call fcn.00417f25
or dword [ebp - 0x10], 1
mov ebx, dword [eax]
mov eax, dword [esi + 0x5c]
test eax, eax
jne 0x46ecae
push 0x43bac8
lea ecx, [ebp - 0x30]
call fcn.00417f25
or dword [ebp - 0x10], 2
mov eax, dword [eax]
test byte [esi + 0x10c], 1
mov ecx, 0x43bb3c
jne 0x46ecc1
mov ecx, 0x43bb2c
push ebx
push eax
push dword [esi + 0x54]
push dword [esi + 0x58]
push ecx
push dword [esi]
push 0x46f220
push 8
call fcn.004015a0
add esp, 0x20
test byte [ebp - 0x10], 2
je 0x46ecee
push dword [ebp - 0x30]
and dword [ebp - 0x10], 0xfffffffd
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
test byte [ebp - 0x10], 1
je 0x46ed01
push dword [ebp - 0x34]
and dword [ebp - 0x10], 0xfffffffe
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
lea eax, [ebp - 0x4c]
push eax
call edi
jmp 0x46efa0
cmp dword [esi + 0xc], 0
jne 0x46ed01
cmp eax, 0xc0040597
jne 0x46ed01
cmp dword [esi + 0x38], 0
mov dword [esi + 4], 0x8000000a
je 0x46ed3b
push 0x46f320
push 4
call fcn.004015a0
pop ecx
pop ecx
mov dword [esi + 0x50], 2
or dword [esi + 0x10c], 0x80
push 1
push 1
push 1
push dword [ebp - 0x2c]
mov ecx, ebx
call fcn.00412441
mov esi, eax
test esi, esi
jge 0x46ed01
push esi
push 0x46f190
push 1
call fcn.004015a0
add esp, 0xc
lea eax, [ebp - 0x4c]
push eax
call edi
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 2
test eax, eax
je 0x46ed82
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 1
test eax, eax
je 0x46ed93
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x20]
mov byte [ebp - 4], 0
test eax, eax
je 0x46eda4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x24]
or dword [ebp - 4], 0xffffffff
test eax, eax
je 0x46edb5
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, esi
call fcn.00402739
ret 8
lea esi, [ebx + 0x24]
mov eax, dword [esi]
cmp eax, dword [ebx + 0x44]
ja 0x46edeb
push 5
mov ecx, ebx
call fcn.00412873
test eax, eax
jge 0x46edeb
push eax
push 0x46f100
push 1
call fcn.004015a0
add esp, 0xc
jmp 0x46ed01
mov eax, dword [ebp - 0x1c]
push dword [eax + 0x44]
mov ecx, esi
call fcn.00402770
mov ebx, dword [eax]
mov esi, dword [ebp + 8]
lea edi, [ebx + 0x78]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [ebp + 8]
push 4
pop ecx
mov edi, 0x40ea54
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
jne 0x46ee23
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax + 0x58]
mov dword [ebx + 0x64], ecx
inc dword [eax + 0x58]
jmp 0x46ee40
mov esi, dword [ebp + 8]
push 4
pop ecx
mov edi, 0x40ea44
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
jne 0x46ee40
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax + 0x54]
mov dword [ebx + 0x64], ecx
inc dword [eax + 0x54]
push dword [ebp - 0x14]
mov esi, dword [ebp - 0x1c]
push ebx
mov ecx, esi
call fcn.00410a44
xor edi, edi
cmp eax, edi
jge 0x46ee7c
mov dword [ebx + 4], eax
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 2
cmp eax, edi
je 0x46ee72
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
cmp eax, edi
jmp 0x46efb6
push dword [ebx]
or dword [ebx + 0x10c], 0x40
push 0x46f068
push 1
mov dword [ebx + 0x110], edi
call fcn.004015a0
add esp, 0xc
cmp dword [ebx + 0x38], edi
je 0x46eeb4
push 0x46f320
push 4
call fcn.004015a0
pop ecx
pop ecx
mov dword [ebx + 0x50], 2
push 1
mov ecx, esi
call fcn.00411b21
push ebx
mov ecx, esi
call fcn.00412b16
cmp eax, edi
jl 0x46ee54
mov ecx, esi
call fcn.0040fd20
test eax, eax
je 0x46eedc
push ebx
mov ecx, esi
call fcn.0046906f
or dword [ebx + 0x10c], 0x80
mov eax, dword [esi + 0x44]
push edi
push 2
lea ecx, [eax + 1]
push 1
mov dword [esi + 0x44], ecx
push eax
mov ecx, esi
call fcn.00412441
cmp eax, edi
jl 0x46ee57
mov eax, dword [ebx + 0x60]
cmp eax, edi
je 0x46ef0f
mov edi, eax
jmp 0x46ef22
push 0x40b46c
lea ecx, [ebp - 0x3c]
call fcn.00417f25
or dword [ebp - 0x10], 4
mov edi, dword [eax]
mov eax, dword [ebx + 0x5c]
test eax, eax
jne 0x46ef3c
push 0x43bac8
lea ecx, [ebp - 0x38]
call fcn.00417f25
or dword [ebp - 0x10], 8
mov eax, dword [eax]
test byte [ebx + 0x10c], 1
mov ecx, 0x43bb3c
jne 0x46ef4f
mov ecx, 0x43bb2c
push edi
push eax
push dword [ebx + 0x54]
push dword [ebx + 0x58]
push ecx
push dword [ebx]
push 0x46eff0
push 8
call fcn.004015a0
add esp, 0x20
test byte [ebp - 0x10], 8
je 0x46ef7c
push dword [ebp - 0x38]
and dword [ebp - 0x10], 0xfffffff7
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
test byte [ebp - 0x10], 4
je 0x46ef8f
push dword [ebp - 0x3c]
and dword [ebp - 0x10], 0xfffffffb
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov ecx, esi
call fcn.00412e27
lea eax, [ebp - 0x4c]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 2
test eax, eax
je 0x46efb1
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
test eax, eax
mov byte [ebp - 4], 1
je 0x46efc2
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
and dword [ebp - 0x14], 0
mov eax, dword [ebp - 0x20]
and dword [ebp - 0x28], 0
mov ecx, dword [eax]
lea edx, [ebp - 0x28]
push edx
lea edx, [ebp - 0x14]
push edx
push 1
push eax
mov byte [ebp - 4], 2
call dword [ecx + 0xc]
mov esi, eax
test esi, esi
jge 0x46eb15
jmp 0x46ed82