Function at 0x4ec140
Capabilities:
Enumerate devices by category

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffeac
mov eax, 0x598900
push ebx
push esi
push edi
mov ebx, dword [ebp + 8]
call fcn.0054c16c
lea edi, [ebp - 0xc4]
mov esi, 0x59869c
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 [0x5348a0]
call fcn.004087f0
mov dword [ebp - 0x80], eax
mov eax, dword [ebx + 4]
test eax, eax
je 0x4ec1cd
push eax
mov edx, dword [eax]
call dword [edx + 8]
xor ecx, ecx
mov dword [ebx + 4], ecx
mov dl, 1
mov eax, dword [0x534564]
call fcn.00440b10
mov dword [ebp - 0x54], eax
lea ecx, [ebp - 0x58]
push ecx
push 0x59939c
push 1
push 0
push 0x59933c
call sub.OLE32.DLL_CoCreateInstance
mov esi, eax
test esi, esi
jge 0x4ec209
mov word [ebp - 0x40], 0x14
mov esi, 0xfffffff6
jmp 0x4ec8a9
push 0
lea eax, [ebp - 0x5c]
push eax
push 0x59934c
mov edx, dword [ebp - 0x58]
push edx
mov ecx, dword [edx]
call dword [ecx + 0xc]
mov esi, eax
test esi, esi
jge 0x4ec233
mov word [ebp - 0x40], 0x14
mov esi, 0xfffffff5
jmp 0x4ec8a9
cmp dword [ebp - 0x5c], 0
je 0x4ec379
jmp 0x4ec34a
lea eax, [ebx + 4]
push eax
push 0x59937c
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 0x4ec34a
lea eax, [ebp - 0x64]
push eax
push 0x59a128
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 0x4ec299
mov eax, dword [ebx + 4]
test eax, eax
je 0x4ec34a
push eax
mov edx, dword [eax]
call dword [edx + 8]
xor ecx, ecx
mov dword [ebx + 4], ecx
jmp 0x4ec34a
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 0x4ec2e2
lea eax, [ebp - 0xd4]
push eax
call sub.OLEAUT32.DLL_VariantClear
mov eax, dword [ebx + 4]
test eax, eax
je 0x4ec34a
push eax
mov edx, dword [eax]
call dword [edx + 8]
xor ecx, ecx
mov dword [ebx + 4], ecx
jmp 0x4ec34a
mov word [ebp - 0x40], 0x20
lea eax, [ebp - 8]
mov edx, dword [ebp - 0xcc]
call fcn.00559e4c
inc dword [ebp - 0x34]
lea edx, [ebp - 8]
lea eax, [ebp - 4]
call fcn.0055a0b8
dec dword [ebp - 0x34]
lea eax, [ebp - 8]
mov edx, 2
call fcn.0055a088
lea ecx, [ebp - 0xd4]
push ecx
call sub.OLEAUT32.DLL_VariantClear
cmp dword [ebp - 0x64], 0
je 0x4ec334
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.00535b3c
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 0x4ec242
cmp dword [ebp - 0x60], 0
je 0x4ec379
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 0x4ec390
mov word [ebp - 0x40], 0x14
or esi, 0xffffffff
jmp 0x4ec8a9
xor esi, esi
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
jle 0x4ec4b7
mov ecx, dword [sym.Project1.exe__CapxuanzeForm]
mov eax, dword [ecx]
mov eax, dword [eax + 0x2dc]
call fcn.004fa3a8
mov word [ebp - 0x40], 0x14
xor esi, esi
jmp 0x4ec415
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.0055a088
inc esi
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp esi, eax
jl 0x4ec3be
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp eax, dword [0x5986c8]
je 0x4ec439
xor ecx, ecx
mov dword [0x5986c4], ecx
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
call dword [edx + 0x14]
cmp eax, dword [0x5986c4]
jg 0x4ec451
xor ecx, ecx
mov dword [0x5986c4], ecx
mov eax, dword [sym.Project1.exe__CapxuanzeForm]
mov edx, dword [eax]
mov eax, dword [edx + 0x2dc]
mov edx, dword [0x5986c4]
call fcn.004fa478
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 0x4ec497
mov word [ebp - 0x40], 0x14
xor esi, esi
jmp 0x4ec8a9
mov eax, dword [eax + 0x2dc]
call fcn.004fa43c
mov esi, eax
mov eax, dword [ebp - 0x80]
mov edx, dword [eax]
call dword [edx + 0x14]
mov dword [0x5986c8], eax
mov dword [0x5986c4], esi
mov edx, esi
mov eax, dword [ebp - 0x54]
call fcn.00535c98
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.0055a0b8
dec dword [ebp - 0x34]
lea eax, [ebp - 0x10]
mov edx, 2
call fcn.0055a088
mov word [ebp - 0x40], 0x14
xor esi, esi
jmp 0x4ec51e
mov edx, esi
mov eax, dword [ebp - 0x54]
call fcn.00535c98
cmp eax, dword [ebx + 4]
je 0x4ec51d
test eax, eax
je 0x4ec51d
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
inc esi
mov eax, dword [ebp - 0x54]
cmp esi, dword [eax + 8]
jl 0x4ec504
mov esi, dword [ebp - 0x54]
mov dword [ebp - 0x18], esi
test esi, esi
je 0x4ec54e
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 0x59938c
push 3
push 0
push 0x5992fc
call sub.OLE32.DLL_CoCreateInstance
mov esi, eax
test esi, esi
jge 0x4ec580
mov word [ebp - 0x40], 0x14
mov esi, 0xfffffff1
jmp 0x4ec8a9
lea eax, [ebp - 0x6c]
push eax
push 0x59936c
mov edx, dword [ebx + 4]
push edx
push 0x59941c
push 0x59942c
mov ecx, dword [ebp - 0x68]
push ecx
mov eax, dword [ecx]
call dword [eax + 0x18]
mov esi, eax
test esi, esi
jge 0x4ec5b6
mov word [ebp - 0x40], 0x14
mov esi, 0xfffffff0
jmp 0x4ec8a9
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 0x4ec5d6
cmp dword [ebp - 0x7c], 0x80
je 0x4ec5e6
mov word [ebp - 0x40], 0x14
mov esi, 0xffffffef
jmp 0x4ec8a9
mov eax, dword [ebx]
push eax
call fcn.004e4628
pop ecx
xor edi, edi
mov word [ebp - 0x40], 0x14
cmp edi, dword [ebp - 0x78]
jge 0x4ec7a6
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 0x4ec62b
mov word [ebp - 0x40], 0x14
mov esi, 0xffffffee
jmp 0x4ec8a9
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x88], eax
push 0x10
push 0x59941c
mov edx, dword [ebp - 0x88]
push edx
call fcn.0054bf6c
add esp, 0xc
test eax, eax
jne 0x4ec79c
mov ecx, dword [ebp - 0x70]
add ecx, 0x2c
mov dword [ebp - 0x8c], ecx
push 0x10
push 0x59935c
mov eax, dword [ebp - 0x8c]
push eax
call fcn.0054bf6c
add esp, 0xc
test eax, eax
jne 0x4ec79c
mov edx, dword [ebp - 0x70]
add edx, 0x10
mov dword [ebp - 0x90], edx
push 0x10
push 0x5993fc
mov ecx, dword [ebp - 0x90]
push ecx
call fcn.0054bf6c
add esp, 0xc
test eax, eax
jne 0x4ec6c6
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.004ec9f0
add esp, 0x14
jmp 0x4ec79c
mov edx, dword [ebp - 0x70]
add edx, 0x10
mov dword [ebp - 0x94], edx
push 0x10
push 0x59940c
mov ecx, dword [ebp - 0x94]
push ecx
call fcn.0054bf6c
add esp, 0xc
test eax, eax
jne 0x4ec710
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.004ec9f0
add esp, 0x14
jmp 0x4ec79c
mov edx, dword [ebp - 0x70]
add edx, 0x10
mov dword [ebp - 0x98], edx
push 0x10
push 0x598684
mov ecx, dword [ebp - 0x98]
push ecx
call fcn.0054bf6c
add esp, 0xc
test eax, eax
jne 0x4ec757
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.004ec9f0
add esp, 0x14
jmp 0x4ec79c
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.0054bf6c
add esp, 0xc
test eax, eax
jne 0x4ec79c
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.004ec9f0
add esp, 0x14
inc edi
cmp edi, dword [ebp - 0x78]
jl 0x4ec600
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.00559dd8
inc dword [ebp - 0x34]
mov edx, dword [eax]
push edx
mov ecx, dword [ebx]
push ecx
call fcn.004eca94
add esp, 0x10
mov dword [ebp - 0x70], eax
dec dword [ebp - 0x34]
lea eax, [ebp - 0x1c]
mov edx, 2
call fcn.0055a088
cmp dword [ebp - 0x70], 0
jne 0x4ec81d
inc edi
cmp edi, 4
jl 0x4ec7c2
cmp dword [ebp - 0x70], 0
jne 0x4ec830
mov word [ebp - 0x40], 0x14
mov esi, 0xffffffed
jmp 0x4ec8a9
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 0x4ec888
mov word [ebp - 0x40], 0x14
mov esi, 0xffffffec
jmp 0x4ec8a9
push 0x28
add edi, 0x30
push edi
mov eax, dword [ebx + 0x218]
push eax
call fcn.0054bcc8
mov byte [ebx + 0x230], 1
add esp, 0xc
mov esi, 1
mov eax, dword [ebx]
push eax
call fcn.004e4628
cmp dword [ebp - 0x6c], 0
pop ecx
je 0x4ec8c6
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 0x4ec8da
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 0x4ec8ee
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 0x4ec902
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 0x4ec916
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 0x4ec944
mov edi, dword [ebp - 0x80]
mov dword [ebp - 0x24], edi
test edi, edi
je 0x4ec944
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 0x4ec99e
mov word [ebp - 0x40], 0x14
xor edi, edi
jmp 0x4ec96e
mov edx, edi
mov eax, dword [ebp - 0x54]
call fcn.00535c98
cmp eax, dword [ebx + 4]
je 0x4ec96d
test eax, eax
je 0x4ec96d
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
inc edi
mov eax, dword [ebp - 0x54]
cmp edi, dword [eax + 8]
jl 0x4ec954
mov edi, dword [ebp - 0x54]
mov dword [ebp - 0x2c], edi
test edi, edi
je 0x4ec99e
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 0x4ec9b5
mov eax, dword [ebx + 4]
test eax, eax
je 0x4ec9b5
push eax
mov edx, dword [eax]
call dword [edx + 8]
xor ecx, ecx
mov dword [ebx + 4], ecx
cmp dword [ebp - 0x58], 0
je 0x4ec9c9
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.0055a088
pop eax
mov edx, dword [ebp - 0x50]
mov dword fs:[0], edx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret