Function at 0x4109e6
Capabilities:
Enumerate devices by category

Disassembly:
mov eax, 0x439bfc
call fcn.00434408
sub esp, 0x48
push ebx
push esi
xor esi, esi
push edi
mov dword [ebp - 0x50], esi
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x44], esi
mov dword [ebp - 4], 1
mov edi, dword [sym.imp.USER32.dll_CreatePopupMenu]
call edi
mov ebx, dword [sym.imp.USER32.dll_AppendMenuW]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp + 0xc]
cmp eax, esi
mov esi, dword [ebp + 8]
jl 0x410dd0
lea ecx, [esi + 0x43c]
call fcn.0041b7ea
test byte [eax + 4], 1
jne 0x410a49
push str.Remove
push 0x65
push 0
push dword [ebp - 0x18]
call ebx
mov eax, dword [ebp + 0xc]
lea ecx, [esi + 0x43c]
call fcn.0041b7ea
cmp dword [eax], 3
je 0x410a6f
mov eax, dword [ebp + 0xc]
lea ecx, [esi + 0x43c]
call fcn.0041b7ea
cmp dword [eax], 2
jne 0x410a7d
push str.Properties...
push 0x66
push 0
push dword [ebp - 0x18]
call ebx
mov eax, dword [ebp + 0xc]
lea ecx, [esi + 0x43c]
call fcn.0041b7ea
cmp dword [eax], 3
jne 0x410d45
mov eax, dword [ebp + 0xc]
lea ecx, [esi + 0x43c]
call fcn.0041b7ea
add eax, 0xc
mov eax, dword [eax]
call fcn.0043254e
cmp al, 0x56
mov byte [ebp - 0x34], al
je 0x410abd
cmp al, 0x41
jne 0x410d45
jmp 0x410acb
push str.Preview
push 0x67
push 0
push dword [ebp - 0x18]
call ebx
mov eax, dword [ebp + 0xc]
lea ecx, [esi + 0x43c]
call fcn.0041b7ea
add esi, 0x420
push esi
add eax, 0xc
lea esi, [ebp - 0x2c]
call fcn.0040a5c6
xor esi, esi
mov byte [ebp - 4], 2
cmp dword [ebp - 0x2c], esi
je 0x410bc5
push str.Encode
push 0x68
push 8
push dword [ebp - 0x18]
call ebx
mov edi, dword [ebp - 0x2c]
lea ecx, [ebp - 0x24]
push ecx
push 0x43f004
mov dword [ebp - 0x24], esi
mov eax, dword [edi]
push edi
mov byte [ebp - 0x11], 0
call dword [eax]
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x24]
cmp eax, esi
je 0x410b4d
mov ecx, dword [eax]
lea edx, [ebp - 0x40]
push edx
push eax
call dword [ecx + 0xc]
test eax, eax
jl 0x410b4d
cmp dword [ebp - 0x40], esi
jbe 0x410b42
mov byte [ebp - 0x11], 1
push dword [ebp - 0x3c]
call dword [sym.imp.ole32.dll_CoTaskMemFree]
jmp 0x410b98
lea ecx, [ebp - 0x28]
push ecx
push 0x43f014
mov dword [ebp - 0x28], esi
mov eax, dword [edi]
push edi
call dword [eax]
cmp dword [ebp - 0x28], esi
je 0x410b69
mov byte [ebp - 0x11], 1
jmp 0x410b8b
lea ecx, [ebp - 0x30]
push ecx
push 0x43ef94
mov dword [ebp - 0x30], esi
mov eax, dword [edi]
push edi
call dword [eax]
mov eax, dword [ebp - 0x30]
cmp eax, esi
je 0x410b8b
mov ecx, dword [eax]
push eax
mov byte [ebp - 0x11], 1
call dword [ecx + 8]
mov eax, dword [ebp - 0x28]
cmp eax, esi
je 0x410b98
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp byte [ebp - 0x11], 0
je 0x410bab
push str.Encoder_settings...
push 0x69
push esi
push dword [ebp - 0x18]
call ebx
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x24]
cmp eax, esi
je 0x410d34
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x410d34
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x28], esi
lea eax, [ebp - 0x30]
push eax
push 0x43f034
push 0x17
push esi
push 0x43a630
mov byte [ebp - 4], 5
call dword [sym.imp.ole32.dll_CoCreateInstance]
test eax, eax
jl 0x410d0f
cmp byte [ebp - 0x34], 0x41
mov dword [ebp - 0x24], 0x43a650
je 0x410c02
mov dword [ebp - 0x24], 0x43a640
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax]
push esi
lea edx, [ebp - 0x28]
push edx
push dword [ebp - 0x24]
push eax
call dword [ecx + 0xc]
test eax, eax
jl 0x410d0f
call edi
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x1c], esi
mov byte [ebp - 4], 7
jmp 0x410cc0
push dword [ebp - 0x34]
mov ecx, dword [ebp - 0x1c]
lea eax, [ebp - 0x38]
push eax
call fcn.00432e93
pop ecx
pop ecx
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x38]
cmp dword [eax - 0xc], esi
je 0x410ca5
push eax
mov eax, dword [ebp - 0x24]
add eax, 0x3e8
push eax
push esi
push dword [ebp - 0x20]
call ebx
mov esi, dword [ebp - 0x4c]
cmp esi, dword [ebp - 0x48]
mov edi, dword [ebp - 0x1c]
mov dword [ebp - 0x3c], esi
jb 0x410c80
lea eax, [esi + 1]
lea esi, [ebp - 0x50]
call fcn.0041bd44
test al, al
je 0x410d98
mov esi, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x3c]
lea eax, [eax + ecx*4]
test eax, eax
je 0x410c99
test edi, edi
mov dword [eax], edi
je 0x410c99
mov eax, dword [edi]
push edi
call dword [eax + 4]
mov eax, dword [ebp - 0x38]
inc esi
inc dword [ebp - 0x24]
mov dword [ebp - 0x4c], esi
xor esi, esi
lea ecx, [eax - 0x10]
mov byte [ebp - 4], 7
call fcn.004036ec
cmp dword [ebp - 0x1c], esi
je 0x410cc0
push esi
lea eax, [ebp - 0x1c]
push eax
call fcn.004012ce
mov eax, dword [ebp - 0x28]
mov ecx, dword [eax]
push esi
lea edx, [ebp - 0x1c]
push edx
push 1
push eax
call dword [ecx + 0xc]
test eax, eax
je 0x410c2f
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x1c]
cmp eax, esi
je 0x410ce9
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp dword [ebp - 0x24], esi
jle 0x410d01
mov eax, dword [ebp - 0x20]
push str.Encode
push eax
push 0x10
push dword [ebp - 0x18]
mov dword [ebp - 0x20], esi
call ebx
cmp dword [ebp - 0x20], esi
je 0x410d0f
push dword [ebp - 0x20]
call dword [sym.imp.USER32.dll_DestroyMenu]
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x28]
cmp eax, esi
je 0x410d20
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x30]
cmp eax, esi
je 0x410d31
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov edi, dword [ebp - 0x2c]
cmp edi, esi
mov byte [ebp - 4], 1
je 0x410d42
mov eax, dword [edi]
push edi
call dword [eax + 8]
mov esi, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
lea edi, [esi + 0x43c]
mov ecx, edi
call fcn.0041b7ea
cmp dword [eax], 3
jne 0x410db5
mov eax, dword [ebp + 0xc]
mov ecx, edi
call fcn.0041b7ea
add eax, 0xc
mov eax, dword [eax]
call fcn.0043254e
cmp al, 0x53
jne 0x410db5
mov edi, esi
call fcn.0040fb22
test al, al
je 0x410da2
mov ecx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
add ecx, 0x43c
call fcn.0041b7ea
mov eax, dword [eax + 4]
and eax, 4
add eax, eax
jmp 0x410da5
push 0x8007000e
call fcn.004010ef
xor eax, eax
inc eax
push str.Hardsub
push 0x6a
push eax
push dword [ebp - 0x18]
call ebx
mov esi, dword [ebp + 8]
push dword [ebp - 0x18]
call dword [sym.imp.USER32.dll_GetMenuItemCount]
test eax, eax
jle 0x410dd0
push 0
push 0
push 0x800
push dword [ebp - 0x18]
call ebx
push str.Add_source...
push 1
xor edi, edi
push edi
push dword [ebp - 0x18]
call ebx
push str.Add_attachment...
push 2
push edi
push dword [ebp - 0x18]
call ebx
push dword [esi + 4]
lea eax, [ebp - 0x18]
push dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 0x10]
call fcn.00414967
cmp eax, 0x67
ja 0x410e4c
je 0x410e40
mov ecx, eax
dec ecx
je 0x410e37
dec ecx
je 0x410e2e
sub ecx, 0x63
je 0x410e22
dec ecx
jne 0x410e59
push dword [ebp + 0xc]
call fcn.00410400
jmp 0x410eab
push dword [ebp + 0xc]
mov ebx, esi
call fcn.004101fd
jmp 0x410eab
mov ecx, esi
call fcn.004100f5
jmp 0x410eab
mov edi, esi
call fcn.0040fdda
jmp 0x410eab
push dword [ebp + 0xc]
mov edi, esi
call fcn.00410496
jmp 0x410eab
mov ecx, eax
sub ecx, 0x68
je 0x410ea0
dec ecx
je 0x410e94
dec ecx
je 0x410e88
cmp eax, 0x3e8
jb 0x410eab
mov ecx, dword [ebp - 0x4c]
lea edx, [ecx + 0x3e8]
cmp eax, edx
jae 0x410eab
add eax, 0xfffffc18
cmp eax, ecx
jb 0x410e80
push 0x80070057
jmp 0x410d9d
mov ecx, dword [ebp - 0x50]
push dword [ecx + eax*4]
jmp 0x410ea1
mov ebx, dword [ebp + 0xc]
mov ecx, esi
call fcn.00410901
jmp 0x410eab
push dword [ebp + 0xc]
mov ecx, esi
call fcn.004105db
jmp 0x410eab
push edi
push dword [ebp + 0xc]
mov ecx, esi
call fcn.004107ec
xor edi, edi
cmp dword [ebp - 0x18], edi
je 0x410ece
push dword [ebp - 0x18]
mov esi, dword [sym.imp.USER32.dll_DestroyMenu]
call esi
test eax, eax
je 0x410ec4
mov dword [ebp - 0x18], edi
cmp dword [ebp - 0x18], edi
je 0x410ece
push dword [ebp - 0x18]
call esi
lea ebx, [ebp - 0x50]
call fcn.0041b816
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret 0x10