Function at 0x10007f40
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x42c
mov dword [esp + 4], str.wine_mmdevapi_notification
mov dword [esp], 0xfffffffe
call dword [sym.imp.kernel32.dll_SetThreadDescription]
xor eax, eax
lea ecx, [ebp - 0x20c]
sub esp, 8
lea esi, [esi]
movzx edx, word [eax + str.SoftwareWineDrivers]
mov word [ecx + eax], dx
add eax, 2
test dx, dx
jne 0x10007f70
cmp word [ebp - 0x20c], 0
mov edx, ecx
je 0x10007f99
nop
add edx, 2
cmp word [edx], 0
jne 0x10007f90
xor eax, eax
nop
lea esi, [esi]
movzx ebx, word [eax + 0x1001b022]
mov word [edx + eax], bx
add eax, 2
test bx, bx
jne 0x10007fa0
cmp word [ebp - 0x20c], 0
mov edx, ecx
je 0x10007fc9
nop
add edx, 2
cmp word [edx], 0
jne 0x10007fc0
xor eax, eax
nop
lea esi, [esi]
movzx ebx, word [eax + 0x10027910]
mov word [edx + eax], bx
add eax, 2
test bx, bx
jne 0x10007fd0
lea eax, [ebp - 0x414]
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0x2000000
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], ecx
mov dword [esp], 0x80000001
call dword [sym.imp.advapi32.dll_RegCreateKeyExW]
sub esp, 0x24
test eax, eax
je 0x10008090
test byte [0x10018114], 2
jne 0x10008050
lea esp, [ebp - 0xc]
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 0xc], str.RegCreateKeyEx_failed:__lu_n
mov dword [esp + 8], str.notif_thread_proc
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x10018114
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_3
lea esp, [ebp - 0xc]
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret 4
mov eax, dword [ebp - 0x414]
lea ebx, [ebp - 0x410]
lea esi, [ebp - 0x40c]
mov dword [ebp - 0x410], pe_nt_image_headers32
mov dword [esp + 0x14], ebx
mov edi, dword [sym.imp.advapi32.dll_RegQueryValueExW]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.DefaultOutput
mov dword [esp], eax
call edi
sub esp, 0x18
test eax, eax
je 0x100080e7
xor eax, eax
mov word [ebp - 0x40c], ax
lea eax, [ebp - 0x38c]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x414]
mov dword [ebp - 0x410], pe_nt_image_headers32
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.DefaultVoiceOutput
mov dword [esp], eax
call edi
sub esp, 0x18
test eax, eax
je 0x10008132
xor ecx, ecx
mov word [ebp - 0x38c], cx
lea eax, [ebp - 0x30c]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x414]
mov dword [ebp - 0x410], pe_nt_image_headers32
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.DefaultInput
mov dword [esp], eax
call edi
sub esp, 0x18
test eax, eax
je 0x1000817d
xor edx, edx
mov word [ebp - 0x30c], dx
mov eax, dword [ebp - 0x414]
mov dword [esp + 0x14], ebx
lea ebx, [ebp - 0x28c]
mov dword [ebp - 0x410], pe_nt_image_headers32
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], str.DefaultVoiceInput
mov dword [esp], eax
call edi
sub esp, 0x18
test eax, eax
jne 0x10008300
mov edi, dword [sym.imp.advapi32.dll_RegNotifyChangeKeyValue]
jmp 0x10008294
mov dword [esp], 0x100180e0
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov eax, dword [0x10027008]
mov ecx, dword [ebp - 0x414]
xor edx, edx
sub esp, 4
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], esi
mov dword [esp], str.DefaultOutput
call sym._notify_if_changed
mov eax, dword [0x10027008]
mov ecx, dword [ebp - 0x414]
mov dword [esp], str.DefaultVoiceOutput
mov edx, 2
mov dword [esp + 8], eax
lea eax, [ebp - 0x38c]
mov dword [esp + 4], eax
xor eax, eax
call sym._notify_if_changed
mov eax, dword [0x1002700c]
mov dword [esp], str.DefaultInput
xor edx, edx
mov ecx, dword [ebp - 0x414]
mov dword [esp + 8], eax
lea eax, [ebp - 0x30c]
mov dword [esp + 4], eax
mov eax, 1
call sym._notify_if_changed
mov eax, dword [0x1002700c]
mov dword [esp + 4], ebx
mov edx, 2
mov dword [esp], str.DefaultVoiceInput
mov ecx, dword [ebp - 0x414]
mov dword [esp + 8], eax
mov eax, 1
call sym._notify_if_changed
mov dword [esp], 0x100180e0
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
sub esp, 4
mov eax, dword [ebp - 0x414]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 4
mov dword [esp + 4], 0
mov dword [esp], eax
call edi
sub esp, 0x14
test eax, eax
je 0x100081d0
test byte [0x10018114], 2
jne 0x10008310
mov eax, dword [ebp - 0x414]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov eax, 1
mov dword [0x10027004], 0
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 4
xor eax, eax
mov word [ebp - 0x28c], ax
jmp 0x100081c3
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x34]
mov dword [esp + 0xc], str.RegNotifyChangeKeyValue_failed:__lu_n
mov dword [esp + 8], str.notif_thread_proc
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0x10018114
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_3
jmp 0x100082d3