Function at 0x401ca9
Capabilities:
Enumerate devices by category

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push ebx
push esi
push edi
xor ebx, ebx
xor edi, edi
call fcn.00401a22
cmp eax, ebx
jne 0x401ccf
push str.Cannot_instantiate_graph_builder
call fcn.00403fc7
pop ecx
jmp 0x40201c
lea eax, [ebp - 0xc]
push eax
push 0x406ae0
push 1
push ebx
push 0x406ad0
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, ebx
jne 0x40201c
mov eax, dword [ebp - 0xc]
lea edx, [ebp - 8]
push ebx
push edx
mov ecx, dword [eax]
push 0x406ac0
push eax
call dword [ecx + 0xc]
mov esi, eax
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
cmp esi, ebx
jne 0x40201c
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov dword [0x408984], ebx
mov eax, dword [ebp - 8]
lea edx, [ebp - 0x14]
push edx
lea edx, [ebp - 4]
mov ecx, dword [eax]
push edx
push 1
push eax
call dword [ecx + 0xc]
mov esi, eax
cmp esi, ebx
jne 0x401dd7
cmp edi, dword [0x4089b4]
je 0x401d54
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
inc edi
jmp 0x401d23
mov eax, dword [ebp - 4]
lea edx, [ebp - 0x10]
push edx
push 0x406bd0
mov byte [0x4089d4], bl
mov ecx, dword [eax]
push ebx
push ebx
push eax
call dword [ecx + 0x24]
cmp eax, ebx
jl 0x401db7
mov eax, dword [ebp - 0x10]
lea edx, [ebp - 0x28]
push ebx
mov word [ebp - 0x28], 8
mov ecx, dword [eax]
push edx
push str.FriendlyName
push eax
call dword [ecx + 0xc]
cmp eax, ebx
jne 0x401dae
push ebx
push ebx
push 0x50
push 0x4089d4
push 0xffffffffffffffff
push dword [ebp - 0x20]
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
push dword [ebp - 0x20]
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [ebp - 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 4]
push 0x408984
push 0x406ab0
push ebx
mov ecx, dword [eax]
push ebx
push eax
call dword [ecx + 0x20]
mov esi, eax
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
cmp dword [0x408984], ebx
jne 0x401df3
push esi
push str.Error__x:_Cannot_create_video_capture_filter
jmp 0x402010
call fcn.00401a52
cmp eax, ebx
jne 0x401e03
push str.Cannot_instantiate_filtergraph
jmp 0x401e1d
mov eax, dword [0x408960]
push dword [0x40898c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
cmp eax, ebx
je 0x401e27
push str.Cannot_give_graph_to_builder
call fcn.00403fc7
jmp 0x402016
mov eax, dword [0x40898c]
push ebx
push dword [0x408984]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
cmp eax, ebx
je 0x401e48
push eax
push str.Error__x:_Cannot_add_vidcap_to_filtergraph
jmp 0x402010
mov eax, dword [0x408960]
push 0x408970
push 0x406aa0
mov esi, 0x406a90
push dword [0x408984]
mov ecx, dword [eax]
push esi
push eax
call dword [ecx + 0x18]
mov eax, dword [0x408960]
push 0x40897c
push 0x406a80
push dword [0x408984]
mov ecx, dword [eax]
push esi
push eax
call dword [ecx + 0x18]
cmp eax, ebx
je 0x401e96
push eax
push str.Error__x:_Cannot_find_VCapture:IAMStreamConfig
call fcn.00403fc7
pop ecx
pop ecx
mov eax, dword [0x40897c]
mov dword [0x4089b0], 1
cmp eax, ebx
je 0x401f0a
mov ecx, dword [eax]
lea edx, [ebp - 0x18]
push edx
push eax
call dword [ecx + 0x10]
test eax, eax
jne 0x401f0a
mov eax, dword [ebp - 0x18]
push 0x10
pop ecx
mov edi, 0x406a70
lea esi, [eax + 0x2c]
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x401ee3
mov ecx, dword [eax + 0x44]
mov eax, dword [ecx + 0x38]
cmp eax, ebx
jg 0x401ed7
neg eax
push eax
push dword [ecx + 0x34]
call fcn.00401a82
mov eax, dword [ebp - 0x18]
push 0x10
mov edi, str.vids
pop ecx
mov esi, eax
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x401eff
mov dword [0x4089b0], ebx
mov dword [0x4089ac], ebx
push eax
call fcn.00404dc2
mov esi, 0x406a90
mov eax, dword [0x408960]
push 0x408974
push 0x406a50
push dword [0x408984]
mov ecx, dword [eax]
push esi
push eax
call dword [ecx + 0x18]
cmp dword [0x4089b0], ebx
je 0x40204b
lea eax, [ebp - 0xc]
push eax
push 0x406ae0
push 1
push ebx
push 0x406ad0
call dword [sym.imp.ole32.dll_CoCreateInstance]
cmp eax, ebx
jne 0x402017
mov eax, dword [ebp - 0xc]
lea edx, [ebp - 8]
push ebx
push edx
mov ecx, dword [eax]
push 0x406a40
push eax
mov dword [ebp - 0x10], ebx
call dword [ecx + 0xc]
mov edi, eax
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
cmp edi, ebx
je 0x401f81
mov dword [0x4089ac], ebx
jmp 0x40204b
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
mov dword [0x408988], ebx
mov eax, dword [ebp - 8]
lea edx, [ebp - 0x14]
push edx
lea edx, [ebp - 4]
mov ecx, dword [eax]
push edx
push 1
push eax
call dword [ecx + 0xc]
cmp eax, ebx
jne 0x401fd9
mov eax, dword [ebp - 0x10]
cmp eax, dword [0x4089b8]
mov eax, dword [ebp - 4]
mov ecx, dword [eax]
je 0x401fc0
push eax
call dword [ecx + 8]
inc dword [ebp - 0x10]
jmp 0x401f90
push 0x408988
push 0x406ab0
push ebx
push ebx
push eax
call dword [ecx + 0x20]
mov eax, dword [ebp - 4]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [ebp - 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov ecx, dword [0x408988]
cmp ecx, ebx
jne 0x401ff9
mov dword [0x4089ac], ebx
push str.Cannot_create_audio_capture_filter
jmp 0x402045
mov eax, dword [0x40898c]
push ebx
push ecx
push eax
mov edx, dword [eax]
call dword [edx + 0xc]
cmp eax, ebx
je 0x402020
push eax
push str.Error__x:_Cannot_add_audcap_to_filtergraph
call fcn.00403fc7
pop ecx
pop ecx
call fcn.00402053
xor eax, eax
jmp 0x40204e
mov eax, dword [0x408960]
push 0x408978
push 0x406a80
push dword [0x408988]
mov ecx, dword [eax]
push esi
push eax
call dword [ecx + 0x18]
cmp eax, ebx
je 0x40204b
push str.Cannot_find_ACapture:IAMStreamConfig
call fcn.00403fc7
pop ecx
push 1
pop eax
pop edi
pop esi
pop ebx
leave
ret