Function at 0x10007a00
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 0x10007a30
cmp word [ebp - 0x20c], 0
mov edx, ecx
je 0x10007a59
nop
add edx, 2
cmp word [edx], 0
jne 0x10007a50
xor eax, eax
nop
lea esi, [esi]
movzx ebx, word [eax + 0x10019022]
mov word [edx + eax], bx
add eax, 2
test bx, bx
jne 0x10007a60
cmp word [ebp - 0x20c], 0
mov edx, ecx
je 0x10007a89
nop
add edx, 2
cmp word [edx], 0
jne 0x10007a80
xor eax, eax
nop
lea esi, [esi]
movzx ebx, word [eax + 0x10025910]
mov word [edx + eax], bx
add eax, 2
test bx, bx
jne 0x10007a90
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 0x10007b50
test byte [0x10016114], 2
jne 0x10007b10
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], 0x10016114
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 0x10007ba7
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 0x10007bf2
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 0x10007c3d
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 0x10007dc0
mov edi, dword [sym.imp.advapi32.dll_RegNotifyChangeKeyValue]
jmp 0x10007d54
mov dword [esp], 0x100160e0
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
mov eax, dword [0x10025008]
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 [0x10025008]
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 [0x1002500c]
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 [0x1002500c]
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], 0x100160e0
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 0x10007c90
test byte [0x10016114], 2
jne 0x10007dd0
mov eax, dword [ebp - 0x414]
mov dword [esp], eax
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov eax, 1
mov dword [0x10025004], 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 0x10007c83
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], 0x10016114
mov dword [esp], 1
call sym._wine_dbg_log.constprop.0_3
jmp 0x10007d93