Function at 0x1020466
Capabilities:
Enumerate devices by category

Disassembly:
push 0x2b0
mov eax, 0x1030a4e
call fcn.0102b282
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 0x10206bd
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 0x1007ef4
push 1
push esi
push 0x101b87c
mov dword [ebp - 4], esi
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov ebx, eax
cmp ebx, esi
jl 0x102069b
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 0x1020687
mov eax, dword [ebp - 0x294]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x14]
mov ebx, eax
cmp ebx, esi
jl 0x1020687
jmp 0x1020655
mov dword [ebp - 0x298], esi
mov eax, dword [ebp - 0x29c]
mov ecx, dword [eax]
lea edx, [ebp - 0x298]
push edx
push 0x1007ee4
push esi
push esi
push eax
mov byte [ebp - 4], 2
call dword [ecx + 0x24]
mov ebx, eax
cmp ebx, esi
jl 0x1020631
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 0x1020620
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0x2b4]
call dword [sym.imp.ole32.dll_CLSIDFromString]
mov ebx, eax
cmp ebx, esi
jl 0x1020620
mov ecx, dword [ebp - 0x2a4]
lea eax, [ebp - 0x20]
push eax
call fcn.010202d4
cmp eax, esi
jne 0x1020620
push dword [ebp - 0x2b4]
push 0x1007e88
push 0x1007e30
push 1
push 2
push 0x1035128
call fcn.0102ca9a
add esp, 0x18
lea ecx, [ebp - 0x290]
call fcn.01021c61
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.01022195
test eax, eax
jge 0x102060f
push eax
push dword [ebp - 0x2b4]
push 0x1007dd8
push 0x1007e30
push 0
push 0x12
push 0x1035128
call fcn.0102ca9a
add esp, 0x1c
lea ecx, [ebp - 0x290]
mov byte [ebp - 4], 3
call fcn.01021ccf
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 0x102067d
cmp eax, esi
je 0x1020655
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 0x1020515
jmp 0x1020687
cmp eax, esi
je 0x1020687
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x294]
mov byte [ebp - 4], 0
cmp eax, esi
je 0x102069b
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 0x10206bb
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, ebx
call fcn.0102b314
ret