Function at 0x40a020
Capabilities:
Query or enumerate registry value
Set registry value

Disassembly:
sub esp, 0x20
mov dword [esp + 0x18], ecx
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x14]
push eax
push ecx
push 0
push 1
push 0
push 0x42bd90
push 0
push str.SoftwareAnalog_DevicesSMax4PNPSettings
push 0x80000001
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x40a05d
mov edx, dword [esp + 0x14]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push esi
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
lea eax, [esp + 4]
push edi
push eax
push 0x101
push 0
push str.SoftwareAnalog_DevicesSMax4PNPSettings
push 0x80000002
call esi
lea ecx, [esp + 0xc]
mov edi, eax
push ecx
push 0xf003f
push 0
push str.SoftwareAnalog_DevicesSMax4PNPSettings
push 0x80000001
call esi
test edi, edi
jne 0x40a4b5
test eax, eax
jne 0x40a4b5
mov eax, dword [esp + 0xc]
push ebx
lea edx, [esp + 0x14]
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
push ebp
mov edi, dword [esp + 0x10]
push edx
lea ecx, [esp + 0x20]
lea edx, [esp + 0x24]
push ecx
push edx
push 0
mov ebp, 4
push str.DisableDriverNotLoadedDlg
push eax
mov ebx, eax
mov dword [esp + 0x30], ebp
call esi
test eax, eax
je 0x40a119
lea eax, [esp + 0x18]
lea ecx, [esp + 0x1c]
push eax
lea edx, [esp + 0x24]
push ecx
push edx
push 0
push str.DisableDriverNotLoadedDlg
push edi
call esi
test eax, eax
jne 0x40a119
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x1c]
push eax
push ecx
push edx
push 0
push str.DisableDriverNotLoadedDlg
push ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x18]
mov edi, dword [esp + 0x10]
push ecx
lea edx, [esp + 0x24]
lea ecx, [esp + 0x20]
push edx
push ecx
push 0
push str.Dont_Show_Driver_Not_Loaded_Dlg
push eax
mov ebx, eax
mov dword [esp + 0x30], ebp
call esi
test eax, eax
je 0x40a17e
lea edx, [esp + 0x18]
lea eax, [esp + 0x20]
push edx
lea ecx, [esp + 0x20]
push eax
push ecx
push 0
push str.Dont_Show_Driver_Not_Loaded_Dlg
push edi
call esi
test eax, eax
jne 0x40a17e
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x20]
push edx
push eax
push ecx
push 0
push str.Dont_Show_Driver_Not_Loaded_Dlg
push ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x18]
mov edi, dword [esp + 0x10]
push edx
lea ecx, [esp + 0x24]
lea edx, [esp + 0x20]
push ecx
push edx
push 0
push str.NotSMaxWarnRecord
push eax
mov ebx, eax
mov dword [esp + 0x30], ebp
call esi
test eax, eax
je 0x40a1e3
lea eax, [esp + 0x18]
lea ecx, [esp + 0x20]
push eax
lea edx, [esp + 0x20]
push ecx
push edx
push 0
push str.NotSMaxWarnRecord
push edi
call esi
test eax, eax
jne 0x40a1e3
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x20]
push eax
push ecx
push edx
push 0
push str.NotSMaxWarnRecord
push ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x18]
mov edi, dword [esp + 0x10]
push ecx
lea edx, [esp + 0x24]
lea ecx, [esp + 0x20]
push edx
push ecx
push 0
push str.NotSMaxWarnPlayback
push eax
mov ebx, eax
mov dword [esp + 0x30], ebp
call esi
test eax, eax
je 0x40a248
lea edx, [esp + 0x18]
lea eax, [esp + 0x20]
push edx
lea ecx, [esp + 0x20]
push eax
push ecx
push 0
push str.NotSMaxWarnPlayback
push edi
call esi
test eax, eax
jne 0x40a248
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x20]
push edx
push eax
push ecx
push 0
push str.NotSMaxWarnPlayback
push ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x18]
mov edi, dword [esp + 0x10]
push edx
lea ecx, [esp + 0x24]
lea edx, [esp + 0x20]
push ecx
push edx
push 0
push str.DetectDevices
push eax
mov ebx, eax
mov dword [esp + 0x30], ebp
call esi
test eax, eax
je 0x40a2ad
lea eax, [esp + 0x18]
lea ecx, [esp + 0x20]
push eax
lea edx, [esp + 0x20]
push ecx
push edx
push 0
push str.DetectDevices
push edi
call esi
test eax, eax
jne 0x40a2ad
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x20]
push eax
push ecx
push edx
push 0
push str.DetectDevices
push ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x18]
mov edi, dword [esp + 0x10]
push ecx
lea edx, [esp + 0x24]
lea ecx, [esp + 0x20]
push edx
push ecx
push 0
push str.ShowDisconnect
push eax
mov ebx, eax
mov dword [esp + 0x30], ebp
call esi
test eax, eax
je 0x40a312
lea edx, [esp + 0x18]
lea eax, [esp + 0x20]
push edx
lea ecx, [esp + 0x20]
push eax
push ecx
push 0
push str.ShowDisconnect
push edi
call esi
test eax, eax
jne 0x40a312
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x20]
push edx
push eax
push ecx
push 0
push str.ShowDisconnect
push ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x18]
mov edi, dword [esp + 0x10]
push edx
lea ecx, [esp + 0x24]
lea edx, [esp + 0x20]
push ecx
push edx
push 0
push str.DetectOnStartup
push eax
mov ebx, eax
mov dword [esp + 0x30], ebp
call esi
test eax, eax
je 0x40a377
lea eax, [esp + 0x18]
lea ecx, [esp + 0x20]
push eax
lea edx, [esp + 0x20]
push ecx
push edx
push 0
push str.DetectOnStartup
push edi
call esi
test eax, eax
jne 0x40a377
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x20]
push eax
push ecx
push edx
push 0
push str.DetectOnStartup
push ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x18]
mov edi, dword [esp + 0x10]
push ecx
lea edx, [esp + 0x24]
lea ecx, [esp + 0x20]
push edx
push ecx
push 0
push str.Saved_Speaker_Configuration
push eax
mov ebx, eax
mov dword [esp + 0x30], ebp
call esi
test eax, eax
je 0x40a3dc
lea edx, [esp + 0x18]
lea eax, [esp + 0x20]
push edx
lea ecx, [esp + 0x20]
push eax
push ecx
push 0
push str.Saved_Speaker_Configuration
push edi
call esi
test eax, eax
jne 0x40a3dc
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
lea eax, [esp + 0x20]
push edx
push eax
push ecx
push 0
push str.Saved_Speaker_Configuration
push ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x18]
mov edi, dword [esp + 0x10]
push edx
lea ecx, [esp + 0x24]
lea edx, [esp + 0x20]
push ecx
push edx
push 0
push str.AutoChangeSpkrConfig
push eax
mov ebx, eax
mov dword [esp + 0x30], ebp
call esi
test eax, eax
je 0x40a441
lea eax, [esp + 0x18]
lea ecx, [esp + 0x20]
push eax
lea edx, [esp + 0x20]
push ecx
push edx
push 0
push str.AutoChangeSpkrConfig
push edi
call esi
test eax, eax
jne 0x40a441
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x20]
push eax
push ecx
push edx
push 0
push str.AutoChangeSpkrConfig
push ebx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x28]
push str.NumRearJacks
push eax
push ecx
mov ecx, esi
call fcn.0040a4d0
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push str.ControlStatus_FID
push edx
push eax
mov ecx, esi
call fcn.0040a4d0
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push str.Show_Connection_Wizard
push ecx
push edx
mov ecx, esi
call fcn.0040a4d0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push str.Dont_Show_Warnings
push eax
push ecx
mov ecx, esi
call fcn.0040a4d0
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
push str.Show_on_Taksbar
push edx
push eax
mov ecx, esi
call fcn.0040a4d0
pop ebp
pop ebx
mov ecx, dword [esp + 8]
mov esi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push ecx
call esi
mov edx, dword [esp + 0xc]
push edx
call esi
pop edi
pop esi
add esp, 0x20
ret