Function at 0x460c63
Capabilities:
Enumerate devices by category

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x124
mov eax, dword [0x4b26f0]
xor eax, ebp
mov dword [ebp - 4], eax
or dword [ebp - 0x10c], 0xffffffff
lea eax, [ebp - 0x104]
push esi
push edi
push eax
push 0x493958
push 1
xor esi, esi
mov dword [ebp - 0x108], SysReAllocString
push esi
mov edi, ecx
xorps xmm0, xmm0
push 0x4938f8
mov dword [ebp - 0xf4], edi
movlpd qword [ebp - 0x124], xmm0
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x461028
mov eax, dword [ebp - 0x104]
lea edx, [ebp - 0x100]
push esi
push edx
push 0x493908
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
test eax, eax
js 0x461028
cmp eax, 1
je 0x461018
mov eax, dword [ebp - 0x100]
lea edx, [ebp - 0xf8]
push esi
push edx
mov dword [edi + 0x1c], esi
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0xc]
test eax, eax
jne 0x461018
push ebx
mov eax, dword [ebp - 0xf8]
lea edx, [ebp - 0xfc]
push edx
push 0x48d38c
push esi
mov ecx, dword [eax]
push esi
push eax
call dword [ecx + 0x24]
test eax, eax
js 0x460fed
lea eax, [ebp - 0x11c]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantClear]
mov eax, dword [ebp - 0xfc]
lea edx, [ebp - 0x11c]
push esi
push edx
push 0x48d328
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
test eax, eax
jns 0x460d79
mov eax, dword [ebp - 0xfc]
lea edx, [ebp - 0x11c]
push esi
push edx
push str.FriendlyName
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
test eax, eax
js 0x460fd4
mov eax, dword [edi + 0x1c]
mov edx, dword [ebp - 0x114]
imul ebx, eax, 0x30
add ebx, dword [edi + 0x14]
inc eax
mov dword [edi + 0x1c], eax
movzx eax, word [edx]
test ax, ax
je 0x460db1
mov ecx, eax
mov eax, dword [ebx + 0x14]
mov word [eax + esi*2], cx
mov ecx, dword [ebx + 0x10]
mov al, byte [edx]
lea edx, [edx + 2]
mov byte [esi + ecx], al
inc esi
movzx ecx, word [edx]
test cx, cx
jne 0x460d96
mov ecx, dword [edi + 4]
lea edx, [ebx + 0x18]
push edx
push dword [ebx + 0x14]
mov eax, dword [ecx]
push 0
push dword [ebp - 0xf8]
push ecx
call dword [eax + 0x48]
test eax, eax
jne 0x461028
lea esi, [ebx + 0x1c]
push esi
push 0x493968
push 1
push eax
push 0x48d2f0
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x461028
mov ecx, dword [esi]
lea edx, [ebx + 0x24]
push edx
push 0x48d2e0
push ecx
mov eax, dword [ecx]
call dword [eax]
test eax, eax
jne 0x461028
xor ecx, ecx
movzx eax, word [ecx + 0x48d35c]
lea ecx, [ecx + 2]
mov word [ebp + ecx - 0xaa], ax
test ax, ax
jne 0x460e0a
mov ecx, dword [ebx + 0x14]
lea edx, [ebp - 0xa2]
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [edx], ax
lea edx, [edx + 2]
test ax, ax
jne 0x460e2a
mov eax, dword [edi + 4]
lea edx, [ebp - 0xa8]
push edx
push dword [esi]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
push 0x48
lea eax, [ebp - 0xf0]
push 0
push eax
call fcn.004653c0
mov esi, str.vids
lea edi, [ebp - 0xf0]
add esp, 0xc
lea edx, [ebp - 0xf0]
movsd dword es:[edi], dword [esi]
push edx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, 0x4938c8
lea edi, [ebp - 0xe0]
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 eax, dword [ebx + 0x24]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x10]
test eax, eax
jne 0x461028
mov eax, dword [ebx + 0x24]
push 0
push dword [ebx + 0x2c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x24]
test eax, eax
jne 0x461028
lea esi, [ebx + 0x20]
push esi
push 0x493968
push 1
push eax
push 0x48d300
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
js 0x461028
xor ecx, ecx
movzx eax, word [ecx + 0x48d364]
lea ecx, [ecx + 2]
mov word [ebp + ecx - 0xaa], ax
test ax, ax
jne 0x460ecd
mov ecx, dword [ebx + 0x14]
lea edx, [ebp - 0xa2]
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [edx], ax
lea edx, [edx + 2]
test ax, ax
jne 0x460eed
mov edi, dword [ebp - 0xf4]
lea edx, [ebp - 0xa8]
push edx
push dword [esi]
mov eax, dword [edi + 4]
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
push dword [esi]
mov eax, dword [edi + 8]
mov esi, str.vids
push dword [ebx + 0x1c]
push dword [ebx + 0x18]
mov ecx, dword [eax]
push esi
push 0x493938
push eax
call dword [ecx + 0x1c]
mov eax, dword [edi + 8]
lea edx, [ebp - 0x10c]
push 2
push 1
push edx
mov ecx, dword [eax]
lea edx, [ebp - 0x124]
push edx
push dword [ebx + 0x18]
push esi
push 0x493928
push eax
call dword [ecx + 0x20]
test eax, eax
js 0x461028
and dword [ebx], 0
and dword [ebx + 4], 0
push 0x48
call fcn.0046273d
mov esi, eax
pop ecx
test esi, esi
je 0x460f82
push 0x48
push 0
push esi
call fcn.004653c0
add esp, 0xc
jmp 0x460f84
xor esi, esi
mov eax, dword [ebx + 0x24]
push esi
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
test eax, eax
jne 0x460fbf
mov edx, 0x493918
xor ecx, ecx
mov eax, dword [esi + ecx*4 + 0x2c]
cmp eax, dword [edx + ecx*4]
jne 0x460fb6
inc ecx
cmp ecx, 4
jne 0x460f99
mov ecx, dword [esi + 0x44]
mov eax, dword [ecx + 0x34]
mov dword [ebx], eax
mov eax, dword [ecx + 0x38]
mov dword [ebx + 4], eax
push dword [esi + 0x44]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
push esi
call fcn.004645c4
mov eax, dword [edi + 4]
xor esi, esi
mov dword [ebx + 0x28], eax
mov eax, dword [edi + 0x1c]
pop ecx
mov dword [ebx + 0xc], eax
lea eax, [ebp - 0x11c]
push eax
call dword [sym.imp.OLEAUT32.dll_VariantCopy]
mov eax, dword [ebp - 0xfc]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0xf8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 0x100]
lea edx, [ebp - 0xf8]
push esi
push edx
push 1
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
test eax, eax
je 0x460d0c
pop ebx
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.00462f14
mov esp, ebp
pop ebp
ret
mov dword [ebp - 0xf4], eax
lea eax, [ebp - 0xf4]
push 0x495ea0
push eax
call fcn.00462f23
int3