Function at 0x46eb89
Capabilities:
Enumerate devices by category

Disassembly:
push 0x40
mov eax, 0x480005
call fcn.00402847
mov dword [ebp - 0x1c], ecx
mov esi, dword [ebp + 8]
xor ebx, ebx
push 4
pop ecx
mov edi, 0x40f414
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
mov dword [ebp - 0x10], ebx
jne 0x46ebb5
push 0x46f8e8
jmp 0x46ebd2
mov esi, dword [ebp + 8]
push 4
pop ecx
mov edi, 0x40f424
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
jne 0x46ebcd
push 0x46f870
jmp 0x46ebd2
push 0x46f800
push 8
call fcn.004015a0
pop ecx
pop ecx
mov dword [ebp - 0x24], ebx
lea eax, [ebp - 0x24]
push eax
push 0x410e68
push 0x17
push ebx
push 0x411b30
mov dword [ebp - 4], ebx
call dword [sym.imp.ole32.dll_CoCreateInstance]
mov esi, eax
cmp esi, ebx
jge 0x46ec1c
push esi
push 0x46f758
push 1
call fcn.004015a0
add esp, 0xc
mov eax, dword [ebp - 0x24]
or dword [ebp - 4], 0xffffffff
cmp eax, ebx
jmp 0x46ef1c
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 0x46ec5d
push esi
push 0x46f6b0
push 1
call fcn.004015a0
mov eax, dword [ebp - 0x20]
add esp, 0xc
mov byte [ebp - 4], 0
cmp eax, ebx
je 0x46ec0e
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x46ec0e
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 0x46eef1
cmp dword [ebp - 0x28], 1
mov edi, dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov ebx, dword [ebp - 0x1c]
jne 0x46eef1
xor esi, esi
mov dword [ebp - 0x18], esi
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
lea edx, [ebp - 0x18]
push edx
push 0x413eb8
push esi
push esi
push eax
mov byte [ebp - 4], 3
call dword [ecx + 0x24]
cmp eax, esi
jge 0x46ecd3
mov eax, dword [ebp - 0x18]
mov byte [ebp - 4], 2
cmp eax, esi
je 0x46ecc9
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
cmp eax, esi
jmp 0x46f125
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 0x410ecc
push eax
mov byte [ebp - 4], 4
call dword [ecx + 0xc]
cmp eax, esi
jge 0x46ed17
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
push esi
lea edx, [ebp - 0x4c]
push edx
push 0x410f30
push eax
call dword [ecx + 0xc]
cmp eax, esi
jge 0x46ed17
lea eax, [ebp - 0x4c]
push eax
call edi
jmp 0x46ecb8
cmp dword [ebp + 0xc], esi
je 0x46ed45
push dword [ebp - 0x44]
push dword [ebp + 0xc]
call dword [sym.imp.msvcrt.dll_wcsstr]
pop ecx
pop ecx
test eax, eax
jne 0x46ed45
push dword [ebp + 0xc]
push dword [ebp - 0x44]
push 0x46f5d8
push 8
call fcn.004015a0
add esp, 0x10
jmp 0x46ed0f
push dword [ebp - 0x44]
push 0x46f548
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.0046a75b
test eax, eax
jne 0x46ef2e
push dword [ebp - 0x2c]
lea ecx, [ebx + 0x24]
call fcn.004028b8
mov esi, dword [eax]
mov eax, dword [esi + 4]
cmp eax, 0x80070037
jne 0x46ee7b
and dword [esi + 0x110], 0
cmp dword [esi + 0x38], 0
mov dword [esi + 4], 0x8000000a
je 0x46edb8
push 0x46f490
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.00468a03
test eax, eax
jge 0x46ede5
push 0x46f408
push 1
call fcn.004015a0
pop ecx
pop ecx
mov eax, dword [esi + 0x60]
test eax, eax
je 0x46edf0
mov ebx, eax
jmp 0x46ee03
push 0x40be3c
lea ecx, [ebp - 0x34]
call fcn.00407b85
or dword [ebp - 0x10], 1
mov ebx, dword [eax]
mov eax, dword [esi + 0x5c]
test eax, eax
jne 0x46ee1d
push 0x43bbd8
lea ecx, [ebp - 0x30]
call fcn.00407b85
or dword [ebp - 0x10], 2
mov eax, dword [eax]
test byte [esi + 0x10c], 1
mov ecx, 0x43bc4c
jne 0x46ee30
mov ecx, 0x43bc3c
push ebx
push eax
push dword [esi + 0x54]
push dword [esi + 0x58]
push ecx
push dword [esi]
push 0x46f390
push 8
call fcn.004015a0
add esp, 0x20
test byte [ebp - 0x10], 2
je 0x46ee5d
push dword [ebp - 0x30]
and dword [ebp - 0x10], 0xfffffffd
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
test byte [ebp - 0x10], 1
je 0x46ee70
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 0x46f10f
cmp dword [esi + 0xc], 0
jne 0x46ee70
cmp eax, 0xc0040597
jne 0x46ee70
cmp dword [esi + 0x38], 0
mov dword [esi + 4], 0x8000000a
je 0x46eeaa
push 0x46f490
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.00412e19
mov esi, eax
test esi, esi
jge 0x46ee70
push esi
push 0x46f300
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 0x46eef1
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
mov byte [ebp - 4], 1
test eax, eax
je 0x46ef02
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x20]
mov byte [ebp - 4], 0
test eax, eax
je 0x46ef13
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x24]
or dword [ebp - 4], 0xffffffff
test eax, eax
je 0x46ef24
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, esi
call fcn.00402881
ret 8
lea esi, [ebx + 0x24]
mov eax, dword [esi]
cmp eax, dword [ebx + 0x44]
ja 0x46ef5a
push 5
mov ecx, ebx
call fcn.0041324b
test eax, eax
jge 0x46ef5a
push eax
push 0x46f270
push 1
call fcn.004015a0
add esp, 0xc
jmp 0x46ee70
mov eax, dword [ebp - 0x1c]
push dword [eax + 0x44]
mov ecx, esi
call fcn.004028b8
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, 0x40f424
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
jne 0x46ef92
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax + 0x58]
mov dword [ebx + 0x64], ecx
inc dword [eax + 0x58]
jmp 0x46efaf
mov esi, dword [ebp + 8]
push 4
pop ecx
mov edi, 0x40f414
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
jne 0x46efaf
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.00411414
xor edi, edi
cmp eax, edi
jge 0x46efeb
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 0x46efe1
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
cmp eax, edi
jmp 0x46f125
push dword [ebx]
or dword [ebx + 0x10c], 0x40
push 0x46f1d8
push 1
mov dword [ebx + 0x110], edi
call fcn.004015a0
add esp, 0xc
cmp dword [ebx + 0x38], edi
je 0x46f023
push 0x46f490
push 4
call fcn.004015a0
pop ecx
pop ecx
mov dword [ebx + 0x50], 2
push 1
mov ecx, esi
call fcn.004124f5
push ebx
mov ecx, esi
call fcn.004134ee
cmp eax, edi
jl 0x46efc3
mov ecx, esi
call fcn.004106f0
test eax, eax
je 0x46f04b
push ebx
mov ecx, esi
call fcn.004690cf
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.00412e19
cmp eax, edi
jl 0x46efc6
mov eax, dword [ebx + 0x60]
cmp eax, edi
je 0x46f07e
mov edi, eax
jmp 0x46f091
push 0x40be3c
lea ecx, [ebp - 0x3c]
call fcn.00407b85
or dword [ebp - 0x10], 4
mov edi, dword [eax]
mov eax, dword [ebx + 0x5c]
test eax, eax
jne 0x46f0ab
push 0x43bbd8
lea ecx, [ebp - 0x38]
call fcn.00407b85
or dword [ebp - 0x10], 8
mov eax, dword [eax]
test byte [ebx + 0x10c], 1
mov ecx, 0x43bc4c
jne 0x46f0be
mov ecx, 0x43bc3c
push edi
push eax
push dword [ebx + 0x54]
push dword [ebx + 0x58]
push ecx
push dword [ebx]
push 0x46f160
push 8
call fcn.004015a0
add esp, 0x20
test byte [ebp - 0x10], 8
je 0x46f0eb
push dword [ebp - 0x38]
and dword [ebp - 0x10], 0xfffffff7
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
test byte [ebp - 0x10], 4
je 0x46f0fe
push dword [ebp - 0x3c]
and dword [ebp - 0x10], 0xfffffffb
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov ecx, esi
call fcn.004137ff
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 0x46f120
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [ebp - 0x14]
test eax, eax
mov byte [ebp - 4], 1
je 0x46f131
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 0x46ec84
jmp 0x46eef1