Function at 0x101ff74
Capabilities:
Enumerate devices by category

Disassembly:
push 0x2b0
mov eax, 0x10305da
call fcn.0102ada8
push 2
mov edi, ecx
xor esi, esi
push esi
mov dword [ebp - 0x2a4], edi
call dword [sym.imp.ole32.dll_CoInitializeEx]
cmp eax, esi
jl 0x10201cb
add edi, 0x28
push edi
mov dword [ebp - 0x2ac], edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov dword [ebp - 0x2a0], esi
lea eax, [ebp - 0x2a0]
push eax
push 0x1007c34
push 1
push esi
push 0x101b5bc
mov dword [ebp - 4], esi
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov ebx, eax
cmp ebx, esi
jl 0x10201a9
mov dword [ebp - 0x294], esi
mov eax, dword [ebp - 0x2a0]
mov ecx, dword [eax]
push esi
lea edx, [ebp - 0x294]
push edx
push 0x10019b8
push eax
mov byte [ebp - 4], 1
call dword [ecx + 0xc]
mov ebx, eax
cmp ebx, esi
jne 0x1020195
mov eax, dword [ebp - 0x294]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
mov ebx, eax
cmp ebx, esi
jl 0x1020195
jmp 0x1020163
mov dword [ebp - 0x298], esi
mov eax, dword [ebp - 0x29c]
mov ecx, dword [eax]
lea edx, [ebp - 0x298]
push edx
push 0x1007c24
push esi
push esi
push eax
mov byte [ebp - 4], 2
call dword [ecx + 0x24]
mov ebx, eax
cmp ebx, esi
jl 0x102013f
lea eax, [ebp - 0x2bc]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov eax, dword [ebp - 0x298]
mov ecx, dword [eax]
push esi
lea edx, [ebp - 0x2bc]
push edx
push 0x1001490
push eax
mov byte [ebp - 4], 3
call dword [ecx + 0xc]
mov ebx, eax
cmp ebx, esi
jl 0x102012e
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x2b4]
call dword [sym.imp.ole32.dll_CLSIDFromString]
mov ebx, eax
cmp ebx, esi
jl 0x102012e
mov ecx, dword [ebp - 0x2a4]
lea eax, [ebp - 0x20]
push eax
call fcn.0101fde2
cmp eax, esi
jne 0x102012e
push dword [ebp - 0x2b4]
push 0x1007bc8
push 0x1007b70
push 1
push 2
push 0x1035128
call fcn.0102c6ab
add esp, 0x18
lea ecx, [ebp - 0x290]
call fcn.0102176f
lea esi, [ebp - 0x20]
lea edi, [ebp - 0x50]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea ecx, [ebp - 0x290]
mov byte [ebp - 4], 4
movsd dword es:[edi], dword [esi]
call fcn.01021ca3
test eax, eax
jge 0x102011d
push eax
push dword [ebp - 0x2b4]
push 0x1007b18
push 0x1007b70
push 0
push 0x12
push 0x1035128
call fcn.0102c6ab
add esp, 0x1c
lea ecx, [ebp - 0x290]
mov byte [ebp - 4], 3
call fcn.010217dd
xor esi, esi
lea eax, [ebp - 0x2bc]
push eax
mov byte [ebp - 4], 2
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0x29c]
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp ebx, esi
mov eax, dword [ebp - 0x298]
mov byte [ebp - 4], 1
jl 0x102018b
cmp eax, esi
je 0x1020163
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x294]
mov ecx, dword [eax]
lea edx, [ebp - 0x2a8]
push edx
lea edx, [ebp - 0x29c]
push edx
push 1
push eax
call dword [ecx + 0xc]
mov ebx, eax
cmp ebx, esi
je 0x1020023
jmp 0x1020195
cmp eax, esi
je 0x1020195
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x294]
mov byte [ebp - 4], 0
cmp eax, esi
je 0x10201a9
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
push dword [ebp - 0x2ac]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov eax, dword [ebp - 0x2a0]
or dword [ebp - 4], 0xffffffff
cmp eax, esi
je 0x10201c9
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, ebx
call fcn.0102ae3a
ret