Function at 0x403150
Capabilities:
Enumerate devices by category

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x41328e
push eax
mov dword fs:[0], esp
sub esp, 0x158
push ebx
push ebp
push esi
xor ebx, ebx
push edi
xor edi, edi
mov dword [0x41bbc4], ebx
call fcn.00402e40
test eax, eax
jne 0x40319e
mov eax, dword [0x41be38]
mov ecx, dword [eax*4 + 0x416004]
push ecx
call fcn.00406ee0
add esp, 4
xor eax, eax
jmp 0x403878
mov ebp, dword [sym.imp.ole32.dll_CoCreateInstance]
lea edx, [esp + 0x1c]
push edx
push 0x4145e8
push 1
push ebx
push 0x414708
call ebp
test eax, eax
je 0x4031c3
xor eax, eax
jmp 0x403878
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x14]
push ebx
push edx
mov ecx, dword [eax]
push 0x4146f8
push eax
call dword [ecx + 0xc]
mov esi, eax
mov eax, dword [esp + 0x1c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
cmp esi, ebx
je 0x4031ef
xor eax, eax
jmp 0x403878
mov eax, dword [esp + 0x14]
push eax
mov edx, dword [eax]
call dword [edx + 0x14]
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x20]
push edx
lea edx, [esp + 0x14]
mov dword [0x41bb94], ebx
mov ecx, dword [eax]
push edx
push 1
push eax
call dword [ecx + 0xc]
mov esi, eax
cmp esi, ebx
jne 0x4032e3
cmp edi, dword [0x41bbcc]
je 0x403253
mov eax, dword [esp + 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x20]
push ecx
lea ecx, [esp + 0x14]
mov edx, dword [eax]
push ecx
push 1
push eax
inc edi
call dword [edx + 0xc]
mov esi, eax
cmp esi, ebx
je 0x40321f
jmp 0x4032e3
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x24]
push ecx
push 0x4147d0
mov byte [0x41bbec], 0
mov edx, dword [eax]
push ebx
push ebx
push eax
call dword [edx + 0x24]
test eax, eax
jl 0x4032c1
mov eax, dword [esp + 0x24]
lea ecx, [esp + 0x3c]
push ebx
mov word [esp + 0x40], 8
mov edx, dword [eax]
push ecx
push str.FriendlyName
push eax
call dword [edx + 0xc]
test eax, eax
jne 0x4032b7
mov edx, dword [esp + 0x44]
push ebx
push ebx
push 0x50
push 0x41bbec
push 0xffffffffffffffff
push edx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov eax, dword [esp + 0x44]
push eax
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
mov eax, dword [esp + 0x24]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esp + 0x10]
push 0x41bb94
push 0x4145d8
push ebx
mov edx, dword [eax]
push ebx
push eax
call dword [edx + 0x20]
mov esi, eax
mov eax, dword [esp + 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esp + 0x14]
push eax
mov edx, dword [eax]
call dword [edx + 8]
mov eax, dword [0x41bb94]
cmp eax, ebx
jne 0x403308
mov eax, dword [0x41be38]
push esi
mov ecx, dword [eax*4 + 0x416008]
jmp 0x4037ae
push eax
call fcn.00402bf0
add esp, 4
test eax, eax
jne 0x403337
mov edx, dword [0x41be38]
mov eax, dword [edx*4 + 0x41600c]
push eax
call fcn.00406ee0
add esp, 4
call fcn.004038a0
xor eax, eax
jmp 0x403878
call fcn.00402e70
cmp eax, ebx
jne 0x403362
mov ecx, dword [0x41be38]
mov edx, dword [ecx*4 + 0x41600c]
push edx
call fcn.00406ee0
add esp, 4
call fcn.004038a0
xor eax, eax
jmp 0x403878
mov eax, dword [0x41bb70]
mov edx, dword [0x41bb9c]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0xc]
test eax, eax
je 0x403399
mov eax, dword [0x41be38]
mov ecx, dword [eax*4 + 0x416010]
push ecx
call fcn.00406ee0
add esp, 4
call fcn.004038a0
xor eax, eax
jmp 0x403878
mov eax, dword [0x41bb9c]
mov ecx, dword [0x41bb94]
push ebx
push ecx
mov edx, dword [eax]
push eax
call dword [edx + 0xc]
cmp eax, ebx
je 0x4033d3
mov edx, dword [0x41be38]
push eax
mov eax, dword [edx*4 + 0x416014]
push eax
call fcn.00406ee0
add esp, 8
call fcn.004038a0
xor eax, eax
jmp 0x403878
push 0x41bcd0
push 0x4145d8
push 1
push ebx
push 0x4145f8
call ebp
test eax, eax
je 0x403402
mov ecx, dword [str.Error]
mov edx, dword [str.Error_to_load_the_effect_filter]
push 1
push ecx
push edx
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov edx, dword [0x41bb94]
mov eax, dword [0x41bb70]
push 0x41bb80
push 0x414588
mov ecx, dword [eax]
push edx
push 0x414758
push 0x4146b8
push eax
call dword [ecx + 0x18]
test eax, eax
je 0x403452
mov edx, dword [0x41bb94]
mov eax, dword [0x41bb70]
push 0x41bb80
push 0x414588
mov ecx, dword [eax]
push edx
push 0x414778
push 0x4146b8
push eax
call dword [ecx + 0x18]
mov edx, dword [0x41bb94]
mov eax, dword [0x41bb70]
push 0x41bb8c
push 0x4145a8
mov ecx, dword [eax]
push edx
push 0x414758
push 0x4146b8
push eax
call dword [ecx + 0x18]
cmp eax, ebx
je 0x4034bc
mov edx, dword [0x41bb94]
mov eax, dword [0x41bb70]
push 0x41bb8c
push 0x4145a8
mov ecx, dword [eax]
push edx
push 0x414778
push 0x4146b8
push eax
call dword [ecx + 0x18]
cmp eax, ebx
je 0x4034bc
push eax
mov eax, dword [0x41be38]
mov ecx, dword [eax*4 + 0x416018]
push ecx
call fcn.00406ee0
add esp, 8
mov eax, dword [0x41bb8c]
mov dword [0x41bbc8], 1
cmp eax, ebx
je 0x403536
mov edx, dword [eax]
lea ecx, [esp + 0x30]
push ecx
push eax
call dword [edx + 0x10]
test eax, eax
jne 0x403536
mov eax, dword [esp + 0x30]
mov ecx, 4
mov edi, 0x4146d8
xor edx, edx
lea esi, [eax + 0x2c]
repe cmpsd dword [esi], dword es:[edi]
jne 0x403512
mov ecx, dword [eax + 0x44]
mov eax, dword [ecx + 0x38]
cmp eax, ebx
jg 0x403501
neg eax
push eax
mov eax, dword [ecx + 0x34]
push eax
call fcn.00402ea0
mov eax, dword [esp + 0x38]
add esp, 8
mov ecx, 4
mov edi, 0x414778
mov esi, eax
xor edx, edx
repe cmpsd dword [esi], dword es:[edi]
je 0x403530
mov dword [0x41bbc8], ebx
mov dword [0x41bbbc], ebx
push eax
call fcn.00412d0f
mov edx, dword [0x41bb94]
mov eax, dword [0x41bb70]
push 0x41bb84
push 0x414578
mov ecx, dword [eax]
push edx
push 0x414778
push 0x4146b8
push eax
call dword [ecx + 0x18]
mov eax, dword [0x41bb94]
xor esi, esi
lea edx, [esp + 0x2c]
mov dword [esp + 0x18], ebx
mov dword [0x41bcac], esi
mov ecx, dword [eax]
push edx
push eax
xor ebp, ebp
call dword [ecx + 0x28]
test eax, eax
jl 0x403693
mov eax, dword [esp + 0x2c]
lea edx, [esp + 0x38]
push edx
lea edx, [esp + 0x1c]
mov ecx, dword [eax]
push edx
push 1
push eax
call dword [ecx + 0xc]
test eax, eax
jne 0x403689
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x60]
push edx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x20]
test eax, eax
jne 0x403677
cmp dword [esp + 0x64], esi
jne 0x40366d
mov eax, dword [esp + 0x18]
lea edx, [esp + 0x28]
push edx
push 0x414518
mov ecx, dword [eax]
push eax
call dword [ecx]
test eax, eax
jne 0x40361d
mov eax, dword [esp + 0x28]
lea edx, [esp + 0x4c]
push edx
lea edx, [esp + 0x54]
mov ecx, dword [eax]
push 0x10
push edx
push esi
push esi
push esi
push 0x4146c8
push eax
call dword [ecx + 0x10]
test eax, eax
jne 0x403613
mov ecx, 4
mov edi, 0x414698
lea esi, [esp + 0x50]
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
jne 0x403613
mov ebx, 1
mov eax, dword [esp + 0x28]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
xor esi, esi
cmp ebx, esi
je 0x40366d
push 0x34
call sub.msvcrt.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [esp + 0x24], eax
cmp eax, esi
mov dword [esp + 0x170], esi
je 0x40364a
mov edx, dword [esp + 0x18]
mov ecx, eax
push edx
call fcn.0040ed10
jmp 0x40364c
xor eax, eax
push 0x41bcb4
mov ecx, eax
mov dword [esp + 0x174], 0xffffffff
mov dword [0x41bcac], eax
call fcn.0040f370
mov ebp, 1
mov eax, dword [esp + 0x60]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esp + 0x18]
push eax
mov edx, dword [eax]
call dword [edx + 8]
cmp ebp, esi
je 0x403582
mov eax, dword [esp + 0x2c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
cmp dword [0x41bbc8], esi
je 0x403803
lea edx, [esp + 0x1c]
push edx
push 0x4145e8
push 1
push esi
push 0x414708
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jne 0x4037b7
mov eax, dword [esp + 0x1c]
lea edx, [esp + 0x14]
push esi
push edx
mov ecx, dword [eax]
push 0x4146e8
push eax
call dword [ecx + 0xc]
mov edi, eax
mov eax, dword [esp + 0x1c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
xor ebx, ebx
cmp edi, ebx
je 0x4036f1
mov dword [0x41bbbc], ebx
jmp 0x403803
mov eax, dword [esp + 0x14]
push eax
mov edx, dword [eax]
call dword [edx + 0x14]
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x20]
push edx
lea edx, [esp + 0x14]
mov dword [0x41bb98], ebx
mov ecx, dword [eax]
push edx
push 1
push eax
call dword [ecx + 0xc]
test eax, eax
jne 0x403767
mov eax, dword [0x41bbd0]
cmp esi, eax
mov eax, dword [esp + 0x10]
je 0x40374b
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x20]
push ecx
lea ecx, [esp + 0x14]
mov edx, dword [eax]
push ecx
push 1
push eax
inc esi
call dword [edx + 0xc]
test eax, eax
je 0x40371b
jmp 0x403767
mov edx, dword [eax]
push 0x41bb98
push 0x4145d8
push ebx
push ebx
push eax
call dword [edx + 0x20]
mov eax, dword [esp + 0x10]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov eax, dword [esp + 0x14]
push eax
mov edx, dword [eax]
call dword [edx + 8]
mov ecx, dword [0x41bb98]
cmp ecx, ebx
jne 0x403790
mov eax, dword [0x41be38]
mov dword [0x41bbbc], ebx
mov ecx, dword [eax*4 + 0x41601c]
push ecx
jmp 0x4037fb
mov eax, dword [0x41bb9c]
push ebx
push ecx
push eax
mov edx, dword [eax]
call dword [edx + 0xc]
cmp eax, ebx
je 0x4037c3
push eax
mov eax, dword [0x41be38]
mov ecx, dword [eax*4 + 0x416020]
push ecx
call fcn.00406ee0
add esp, 8
call fcn.004038a0
xor eax, eax
jmp 0x403878
mov ecx, dword [0x41bb98]
mov eax, dword [0x41bb70]
push 0x41bb88
push 0x4145a8
mov edx, dword [eax]
push ecx
push 0x414768
push 0x4146b8
push eax
call dword [edx + 0x18]
test eax, eax
je 0x403803
mov edx, dword [0x41be38]
mov eax, dword [edx*4 + 0x416024]
push eax
call fcn.00406ee0
add esp, 4
mov eax, dword [0x41bb70]
lea edx, [esp + 0x34]
push edx
mov edx, dword [0x41bb94]
mov ecx, dword [eax]
push 0
push 0
push 0
push 0x414688
push 1
push edx
push eax
call dword [ecx + 0x2c]
test eax, eax
je 0x403853
mov eax, dword [0x41bb70]
lea edx, [esp + 0x34]
push edx
mov edx, dword [0x41bb94]
mov ecx, dword [eax]
push 0
push 0
push 0
push 0x414678
push 1
push edx
push eax
call dword [ecx + 0x2c]
test eax, eax
jne 0x403869
mov eax, dword [esp + 0x34]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov dword [0x41bbc4], 1
jmp 0x403873
mov dword [0x41bbc0], 0
mov eax, 1
mov ecx, dword [esp + 0x168]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x164
ret