Function at 0x4ec4ec
Capabilities:
Enumerate devices by category

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffeac
mov eax, 0x59ae14
push ebx
push esi
push edi
mov ebx, dword [ebp + 8]
call fcn.0054e578
lea edi, [ebp - 0xc4]
mov esi, 0x59abb0
mov ecx, 0xa
rep movsd dword es:[edi], dword [esi]
xor eax, eax
xor edx, edx
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x5c], edx
xor ecx, ecx
xor eax, eax
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x64], eax
xor edx, edx
xor ecx, ecx
mov dword [ebp - 0x68], edx
mov dword [ebp - 0x6c], ecx
xor eax, eax
xor edx, edx
mov dword [ebp - 0x70], eax
xor ecx, ecx
mov word [ebp - 0x40], 8
mov dword [ebp - 4], edx
mov dl, 1
inc dword [ebp - 0x34]
xor eax, eax
mov word [ebp - 0x40], 0x14
mov dword [ebp - 0x78], ecx
mov dword [ebp - 0x7c], eax
mov eax, dword [0x535998]
call fcn.004087f0
mov dword [ebp - 0x80], eax
mov eax, dword [ebx + 4]
test eax, eax
je 0x4ec579
push eax
mov edx, dword [eax]
call dword [edx + 8]
xor ecx, ecx
mov dword [ebx + 4], ecx
mov dl, 1
mov eax, dword [0x53565c]
call fcn.00440b60
mov dword [ebp - 0x54], eax
lea ecx, [ebp - 0x58]
push ecx
push 0x59bc74
push 1
push 0
push 0x59bce4
call sub.OLE32.DLL_CoCreateInstance
mov esi, eax
test esi, esi
jge 0x4ec5b5
mov word [ebp - 0x40], 0x14
mov esi, 0xfffffff6
jmp 0x4ecc55
push 0
lea eax, [ebp - 0x5c]
push eax
push 0x59bcd4
mov edx, dword [ebp - 0x58]
push edx
mov ecx, dword [edx]
call dword [ecx + 0xc]
mov esi, eax
test esi, esi
jge 0x4ec5df
mov word [ebp - 0x40], 0x14
mov esi, 0xfffffff5
jmp 0x4ecc55
cmp dword [ebp - 0x5c], 0
je 0x4ec725
jmp 0x4ec6f6
lea eax, [ebx + 4]
push eax
push 0x59bcb4
push 0
push 0
mov edx, dword [ebp - 0x60]
push edx
mov ecx, dword [edx]
call dword [ecx + 0x20]
mov esi, eax
test esi, esi
jl 0x4ec6f6
lea eax, [ebp - 0x64]
push eax
push 0x59bd24
push 0
push 0
mov edx, dword [ebp - 0x60]
push edx
mov ecx, dword [edx]
call dword [ecx + 0x24]
mov esi, eax
test esi, esi
jge 0x4ec645
mov eax, dword [ebx + 4]
test eax, eax
je 0x4ec6f6
push eax
mov edx, dword [eax]
call dword [edx + 8]
xor ecx, ecx
mov dword [ebx + 4], ecx
jmp 0x4ec6f6
lea eax, [ebp - 0xd4]
push eax
call sub.OLEAUT32.DLL_VariantInit
push 0
lea edx, [ebp - 0xd4]
push edx
push str.FriendlyName
mov ecx, dword [ebp - 0x64]
push ecx
mov eax, dword [ecx]
call dword [eax + 0xc]
mov esi, eax
test esi, esi
jge 0x4ec68e
lea eax, [ebp - 0xd4]
push eax
call sub.OLEAUT32.DLL_VariantClear
mov eax, dword [ebx + 4]
test eax, eax
je 0x4ec6f6
push eax
mov edx, dword [eax]
call dword [edx + 8]
xor ecx, ecx
mov dword [ebx + 4], ecx
jmp 0x4ec6f6
mov word [ebp - 0x40], 0x20
lea eax, [ebp - 8]
mov edx, dword [ebp - 0xcc]
call fcn.0055c2e0
inc dword [ebp - 0x34]
lea edx, [ebp - 8]
lea eax, [ebp - 4]
call fcn.0055c54c
dec dword [ebp - 0x34]
lea eax, [ebp - 8]
mov edx, 2
call fcn.0055c51c
lea ecx, [ebp - 0xd4]
push ecx
call sub.OLEAUT32.DLL_VariantClear
cmp dword [ebp - 0x64], 0
je 0x4ec6e0
mov eax, dword [ebp - 0x64]
push eax
mov edx, dword [eax]
call dword [edx + 8]
xor ecx, ecx
mov dword [ebp - 0x64], ecx
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x80]
mov ecx, dword [eax]
call dword [ecx + 0x34]
mov edx, dword [ebx + 4]
mov eax, dword [ebp - 0x54]
call fcn.00536c34
lea ecx, [ebp - 0x74]
push ecx
lea eax, [ebp - 0x60]
push eax
push 1
mov edx, dword [ebp - 0x5c]
push edx
mov ecx, dword [edx]
call dword [ecx + 0xc]
test eax, eax
je 0x4ec5ee
cmp dword [ebp - 0x60], 0
je 0x4ec725
mov eax, dword [ebp - 0x60]
push eax
mov edx, dword [eax]
call dword [edx + 8]
xor ecx, ecx
mov dword [ebp - 0x60], ecx
mov eax, dword [ebp - 0x54]
cmp dword [eax + 8], 0
jne 0x4ec73c
mov word [ebp - 0x40], 0x14
or esi, 0xffffffff
jmp 0x4ecc55
xor esi, esi
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
jle 0x4ec863
mov ecx, dword [sym.Project1.exe__CapxuanzeForm]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2dc]
call fcn.004fb470
mov word [ebp - 0x40], 0x14
xor esi, esi
jmp 0x4ec7c1
mov eax, dword [sym.Project1.exe__CapxuanzeForm]
mov edx, dword [eax]
xor eax, eax
mov ecx, dword [edx + 0x2dc]
mov edx, esi
add ecx, 0x1f0
mov dword [ebp - 0x84], ecx
lea ecx, [ebp - 0xc]
mov word [ebp - 0x40], 0x2c
mov dword [ebp - 0xc], eax
inc dword [ebp - 0x34]
mov eax, dword [ebp - 0x80]
mov edi, dword [eax]
call dword [edi + 0xc]
mov eax, dword [ebp - 0x84]
lea edx, [ebp - 0xc]
mov eax, dword [eax]
mov edx, dword [edx]
mov ecx, dword [eax]
call dword [ecx + 0x34]
dec dword [ebp - 0x34]
lea eax, [ebp - 0xc]
mov edx, 2
call fcn.0055c51c
inc esi
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp esi, eax
jl 0x4ec76a
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp eax, dword [0x59abdc]
je 0x4ec7e5
xor ecx, ecx
mov dword [0x59abd8], ecx
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp eax, dword [0x59abd8]
jg 0x4ec7fd
xor ecx, ecx
mov dword [0x59abd8], ecx
mov eax, dword [sym.Project1.exe__CapxuanzeForm]
mov edx, dword [eax]
mov eax, dword [edx + 0x2dc]
mov edx, dword [0x59abd8]
call fcn.004fb540
mov ecx, dword [sym.Project1.exe__CapxuanzeForm]
mov eax, dword [ecx]
mov edx, dword [eax]
call dword [edx + 0xd8]
mov ecx, dword [sym.Project1.exe__CapxuanzeForm]
mov eax, dword [ecx]
cmp byte [eax + 0x2e0], 0
jne 0x4ec843
mov word [ebp - 0x40], 0x14
xor esi, esi
jmp 0x4ecc55
mov eax, dword [eax + 0x2dc]
call fcn.004fb504
mov esi, eax
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
call dword [edx + 0x14]
mov dword [0x59abdc], eax
mov dword [0x59abd8], esi
mov edx, esi
mov eax, dword [ebp - 0x54]
call fcn.00536d90
mov dword [ebx + 4], eax
xor ecx, ecx
mov word [ebp - 0x40], 0x38
mov dword [ebp - 0x10], ecx
mov edx, esi
inc dword [ebp - 0x34]
lea ecx, [ebp - 0x10]
mov eax, dword [ebp - 0x80]
mov esi, dword [eax]
call dword [esi + 0xc]
lea edx, [ebp - 0x10]
lea eax, [ebp - 4]
call fcn.0055c54c
dec dword [ebp - 0x34]
lea eax, [ebp - 0x10]
mov edx, 2
call fcn.0055c51c
mov word [ebp - 0x40], 0x14
xor esi, esi
jmp 0x4ec8ca
mov edx, esi
mov eax, dword [ebp - 0x54]
call fcn.00536d90
cmp eax, dword [ebx + 4]
je 0x4ec8c9
test eax, eax
je 0x4ec8c9
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
inc esi
mov eax, dword [ebp - 0x54]
cmp esi, dword [eax + 8]
jl 0x4ec8b0
mov esi, dword [ebp - 0x54]
mov dword [ebp - 0x18], esi
test esi, esi
je 0x4ec8fa
mov eax, dword [esi]
mov dword [ebp - 0x14], eax
mov word [ebp - 0x40], 0x50
mov edx, 3
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax]
call dword [ecx - 4]
mov word [ebp - 0x40], 0x44
xor edx, edx
mov dword [ebp - 0x54], edx
lea eax, [ebp - 0x68]
push eax
push 0x59bc94
push 3
push 0
push 0x59bd04
call sub.OLE32.DLL_CoCreateInstance
mov esi, eax
test esi, esi
jge 0x4ec92c
mov word [ebp - 0x40], 0x14
mov esi, 0xfffffff1
jmp 0x4ecc55
lea eax, [ebp - 0x6c]
push eax
push 0x59bc84
mov edx, dword [ebx + 4]
push edx
push 0x59c780
push 0x59c790
mov ecx, dword [ebp - 0x68]
push ecx
mov eax, dword [ecx]
call dword [eax + 0x18]
mov esi, eax
test esi, esi
jge 0x4ec962
mov word [ebp - 0x40], 0x14
mov esi, 0xfffffff0
jmp 0x4ecc55
lea eax, [ebp - 0x7c]
lea edx, [ebp - 0x78]
push eax
push edx
mov ecx, dword [ebp - 0x6c]
push ecx
mov eax, dword [ecx]
call dword [eax + 0x14]
mov esi, eax
test esi, esi
jl 0x4ec982
cmp dword [ebp - 0x7c], 0x80
je 0x4ec992
mov word [ebp - 0x40], 0x14
mov esi, 0xffffffef
jmp 0x4ecc55
mov eax, dword [ebx]
push eax
call fcn.004e49d4
pop ecx
xor edi, edi
mov word [ebp - 0x40], 0x14
cmp edi, dword [ebp - 0x78]
jge 0x4ecb52
lea eax, [ebp - 0x154]
push eax
lea edx, [ebp - 0x70]
push edx
push edi
mov ecx, dword [ebp - 0x6c]
push ecx
mov eax, dword [ecx]
call dword [eax + 0x18]
mov esi, eax
test esi, esi
jge 0x4ec9d7
mov word [ebp - 0x40], 0x14
mov esi, 0xffffffee
jmp 0x4ecc55
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x88], eax
push 0x10
push 0x59c780
mov edx, dword [ebp - 0x88]
push edx
call fcn.0054e378
add esp, 0xc
test eax, eax
jne 0x4ecb48
mov ecx, dword [ebp - 0x70]
add ecx, 0x2c
mov dword [ebp - 0x8c], ecx
push 0x10
push 0x59c720
mov eax, dword [ebp - 0x8c]
push eax
call fcn.0054e378
add esp, 0xc
test eax, eax
jne 0x4ecb48
mov edx, dword [ebp - 0x70]
add edx, 0x10
mov dword [ebp - 0x90], edx
push 0x10
push 0x59c760
mov ecx, dword [ebp - 0x90]
push ecx
call fcn.0054e378
add esp, 0xc
test eax, eax
jne 0x4eca72
mov eax, dword [ebp - 0x70]
push eax
mov edx, dword [ebp - 0x12c]
push edx
mov ecx, dword [ebp - 0x130]
push ecx
push 0
mov eax, dword [ebx]
push eax
call fcn.004ecd9c
add esp, 0x14
jmp 0x4ecb48
mov edx, dword [ebp - 0x70]
add edx, 0x10
mov dword [ebp - 0x94], edx
push 0x10
push 0x59c770
mov ecx, dword [ebp - 0x94]
push ecx
call fcn.0054e378
add esp, 0xc
test eax, eax
jne 0x4ecabc
mov eax, dword [ebp - 0x70]
push eax
mov edx, dword [ebp - 0x12c]
push edx
mov ecx, dword [ebp - 0x130]
push ecx
push 1
mov eax, dword [ebx]
push eax
call fcn.004ecd9c
add esp, 0x14
jmp 0x4ecb48
mov edx, dword [ebp - 0x70]
add edx, 0x10
mov dword [ebp - 0x98], edx
push 0x10
push 0x59ab98
mov ecx, dword [ebp - 0x98]
push ecx
call fcn.0054e378
add esp, 0xc
test eax, eax
jne 0x4ecb03
mov eax, dword [ebp - 0x70]
push eax
mov edx, dword [ebp - 0x12c]
push edx
mov ecx, dword [ebp - 0x130]
push ecx
push 2
mov eax, dword [ebx]
push eax
call fcn.004ecd9c
add esp, 0x14
jmp 0x4ecb48
mov edx, dword [ebp - 0x70]
add edx, 0x10
mov dword [ebp - 0x9c], edx
push 0x10
push str.MJPG
mov ecx, dword [ebp - 0x9c]
push ecx
call fcn.0054e378
add esp, 0xc
test eax, eax
jne 0x4ecb48
mov eax, dword [ebp - 0x70]
push eax
mov edx, dword [ebp - 0x12c]
push edx
mov ecx, dword [ebp - 0x130]
push ecx
push 3
mov eax, dword [ebx]
push eax
call fcn.004ecd9c
add esp, 0x14
inc edi
cmp edi, dword [ebp - 0x78]
jl 0x4ec9ac
mov dword [ebx + 0x234], 0x140
mov dword [ebx + 0x238], 0xf0
mov word [ebp - 0x40], 0x14
xor edi, edi
mov eax, dword [ebx + 0x238]
push eax
lea eax, [ebp - 0xc4]
mov edx, dword [ebx + 0x234]
push edx
mov edx, edi
add edx, edx
mov word [ebp - 0x40], 0x5c
lea edx, [edx + edx*4]
add edx, eax
lea eax, [ebp - 0x1c]
call fcn.0055c210
inc dword [ebp - 0x34]
mov edx, dword [eax]
push edx
mov ecx, dword [ebx]
push ecx
call fcn.004ece40
add esp, 0x10
mov dword [ebp - 0x70], eax
dec dword [ebp - 0x34]
lea eax, [ebp - 0x1c]
mov edx, 2
call fcn.0055c51c
cmp dword [ebp - 0x70], 0
jne 0x4ecbc9
inc edi
cmp edi, 4
jl 0x4ecb6e
cmp dword [ebp - 0x70], 0
jne 0x4ecbdc
mov word [ebp - 0x40], 0x14
mov esi, 0xffffffed
jmp 0x4ecc55
mov eax, dword [ebp - 0x70]
mov edi, dword [eax + 0x44]
mov eax, dword [ebx + 0x234]
mov dword [edi + 0x34], eax
mov edx, dword [ebx + 0x238]
mov dword [edi + 0x38], edx
mov eax, 0x3e8
cdq
idiv dword [ebx + 0x210]
shl eax, 4
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
cdq
mov dword [edi + 0x28], eax
mov dword [edi + 0x2c], edx
mov ecx, dword [ebp - 0x70]
push ecx
mov eax, dword [ebp - 0x6c]
push eax
mov edx, dword [eax]
call dword [edx + 0xc]
test esi, esi
jge 0x4ecc34
mov word [ebp - 0x40], 0x14
mov esi, 0xffffffec
jmp 0x4ecc55
push 0x28
add edi, 0x30
push edi
mov eax, dword [ebx + 0x218]
push eax
call fcn.0054e0d4
mov byte [ebx + 0x230], 1
add esp, 0xc
mov esi, 1
mov eax, dword [ebx]
push eax
call fcn.004e49d4
cmp dword [ebp - 0x6c], 0
pop ecx
je 0x4ecc72
mov edx, dword [ebp - 0x6c]
push edx
mov ecx, dword [edx]
call dword [ecx + 8]
xor eax, eax
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x68], 0
je 0x4ecc86
mov edx, dword [ebp - 0x68]
push edx
mov ecx, dword [edx]
call dword [ecx + 8]
xor eax, eax
mov dword [ebp - 0x68], eax
cmp dword [ebp - 0x5c], 0
je 0x4ecc9a
mov edx, dword [ebp - 0x5c]
push edx
mov ecx, dword [edx]
call dword [ecx + 8]
xor eax, eax
mov dword [ebp - 0x5c], eax
cmp dword [ebp - 0x60], 0
je 0x4eccae
mov edx, dword [ebp - 0x60]
push edx
mov ecx, dword [edx]
call dword [ecx + 8]
xor eax, eax
mov dword [ebp - 0x60], eax
cmp dword [ebp - 0x64], 0
je 0x4eccc2
mov edx, dword [ebp - 0x64]
push edx
mov ecx, dword [edx]
call dword [ecx + 8]
xor eax, eax
mov dword [ebp - 0x64], eax
cmp dword [ebp - 0x80], 0
je 0x4eccf0
mov edi, dword [ebp - 0x80]
mov dword [ebp - 0x24], edi
test edi, edi
je 0x4eccf0
mov eax, dword [edi]
mov dword [ebp - 0x20], eax
mov word [ebp - 0x40], 0x74
mov edx, 3
mov eax, dword [ebp - 0x24]
mov ecx, dword [eax]
call dword [ecx - 4]
mov word [ebp - 0x40], 0x68
cmp dword [ebp - 0x54], 0
je 0x4ecd4a
mov word [ebp - 0x40], 0x14
xor edi, edi
jmp 0x4ecd1a
mov edx, edi
mov eax, dword [ebp - 0x54]
call fcn.00536d90
cmp eax, dword [ebx + 4]
je 0x4ecd19
test eax, eax
je 0x4ecd19
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
inc edi
mov eax, dword [ebp - 0x54]
cmp edi, dword [eax + 8]
jl 0x4ecd00
mov edi, dword [ebp - 0x54]
mov dword [ebp - 0x2c], edi
test edi, edi
je 0x4ecd4a
mov eax, dword [edi]
mov dword [ebp - 0x28], eax
mov word [ebp - 0x40], 0x8c
mov edx, 3
mov eax, dword [ebp - 0x2c]
mov ecx, dword [eax]
call dword [ecx - 4]
mov word [ebp - 0x40], 0x80
cmp esi, 1
je 0x4ecd61
mov eax, dword [ebx + 4]
test eax, eax
je 0x4ecd61
push eax
mov edx, dword [eax]
call dword [edx + 8]
xor ecx, ecx
mov dword [ebx + 4], ecx
cmp dword [ebp - 0x58], 0
je 0x4ecd75
mov eax, dword [ebp - 0x58]
push eax
mov edx, dword [eax]
call dword [edx + 8]
xor ecx, ecx
mov dword [ebp - 0x58], ecx
mov eax, esi
mov edx, 2
push eax
lea eax, [ebp - 4]
dec dword [ebp - 0x34]
call fcn.0055c51c
pop eax
mov edx, dword [ebp - 0x50]
mov dword fs:[0], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret