Function at 0x402c30
Capabilities:
Delete registry key
Delete registry value
Query or enumerate registry value

Disassembly:
sub esp, 0x2b0
mov eax, dword [0x42eb60]
xor eax, esp
mov dword [esp + 0x2ac], eax
push ebx
push ebp
push esi
mov esi, dword [esp + 0x2c0]
push edi
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
lea eax, [esp + 0x10]
push eax
push str.SystemCurrentControlSetServicesClass_
push 0x80000002
call edi
xor ebx, ebx
cmp dword [0x43000c], ebx
jne 0x402cba
cmp eax, ebx
jne 0x40329d
push str.MEDIA
push esi
call fcn.004125af
add esp, 8
test eax, eax
je 0x402c96
mov ecx, dword [esp + 0x10]
push esi
push ecx
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x2bc]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00411d2a
add esp, 0x2b0
ret
cmp eax, ebx
jne 0x40329d
push 0x3f
lea eax, [esp + 0x2d]
push ebx
push eax
mov byte [esp + 0x34], bl
call fcn.00412b50
mov ebp, dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcatA]
add esp, 0xc
xor esi, esi
mov dword [esp + 0x7c], str.0000
mov dword [esp + 0x80], str.0001
mov dword [esp + 0x84], str.0002
mov dword [esp + 0x88], str.0003
mov dword [esp + 0x8c], str.0004
mov dword [esp + 0x90], str.0005
mov dword [esp + 0x94], str.0006
mov dword [esp + 0x98], str.0007
mov dword [esp + 0x9c], str.0008
mov dword [esp + 0xa0], str.0009
mov dword [esp + 0xa4], str.0010
mov dword [esp + 0xa8], str.0011
mov dword [esp + 0xac], str.0012
mov dword [esp + 0xb0], str.0013
mov dword [esp + 0xb4], str.0014
mov dword [esp + 0xb8], str.0015
mov dword [esp + 0xbc], str.0016
mov dword [esp + 0xc0], str.0017
mov dword [esp + 0xc4], str.0018
mov dword [esp + 0xc8], str.0019
mov dword [esp + 0xcc], str.0020
mov dword [esp + 0xd0], str.0021
mov dword [esp + 0xd4], str.0022
mov dword [esp + 0xd8], str.0023
mov dword [esp + 0xdc], str.0024
mov dword [esp + 0xe0], str.0025
mov dword [esp + 0xe4], str.0026
mov dword [esp + 0xe8], str.0027
mov dword [esp + 0xec], str.0028
mov dword [esp + 0xf0], str.0029
mov dword [esp + 0xf4], str.0030
mov dword [esp + 0xf8], str.0031
mov dword [esp + 0x14], esi
jmp 0x402e56
mov edi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
push str.SystemCurrentControlSetServicesClassMEDIA_
lea ecx, [esp + 0x1c0]
push ecx
call ebp
mov esi, dword [esp + esi*4 + 0x7c]
push esi
lea edx, [esp + 0x1c0]
push edx
call ebx
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x1c0]
push ecx
push 0x80000002
call edi
test eax, eax
jne 0x403284
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x18]
push edx
lea eax, [esp + 0x2c]
push eax
xor edi, edi
push edi
push edi
push str.MatchingDeviceId
push ecx
mov dword [esp + 0x30], 0x40
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x403248
mov edx, dword [0x430014]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
je 0x402ee5
mov ecx, dword [0x430014]
cmp dword [ecx - 0xc], edi
jne 0x403243
mov edx, dword [0x430018]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov ecx, dword [0x430030]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov eax, dword [0x430074]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov edx, dword [0x43006c]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov ecx, dword [0x430040]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov eax, dword [0x430088]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov edx, dword [0x430084]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov ecx, dword [0x430038]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov eax, dword [0x430024]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov edx, dword [0x430068]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov ecx, dword [0x430058]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov eax, dword [0x430064]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov edx, dword [0x43008c]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov ecx, dword [0x430028]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov eax, dword [0x430070]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov edx, dword [0x430080]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov ecx, dword [0x430034]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov eax, dword [0x430090]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov edx, dword [0x430020]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov ecx, dword [0x43007c]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov eax, dword [0x43002c]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov edx, dword [0x430054]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov ecx, dword [0x430050]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov eax, dword [0x43004c]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov edx, dword [0x43003c]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov ecx, dword [0x430078]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov eax, dword [0x430094]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov edx, dword [0x430048]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov ecx, dword [0x430044]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov eax, dword [0x430060]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov edx, dword [0x43005c]
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.004125af
add esp, 8
test eax, eax
jne 0x403243
mov ecx, dword [0x43001c]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.004125af
add esp, 8
test eax, eax
je 0x403248
mov edi, 1
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
je 0x403284
push str.MEDIA_
lea ecx, [esp + 0x180]
push ecx
call ebp
push esi
lea edx, [esp + 0x180]
push edx
call ebx
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x17c]
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyA]
mov esi, dword [esp + 0x14]
add esi, 1
cmp esi, 0x20
mov dword [esp + 0x14], esi
jl 0x402e50
jmp 0x402c96
lea eax, [esp + 0x10]
push eax
push str.SOFTWAREMicrosoftWindows_NTCurrentVersionDrivers32
push 0x80000002
call edi
test eax, eax
jne 0x402ca1
cmp dword [0x43000c], ebx
je 0x402c96
xor esi, esi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x14], ebx
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ebp, 9
mov dword [esp + 0x18], esi
jmp 0x4032e0
test esi, esi
je 0x4032f6
cmp dword [esp + 0x14], 0
je 0x4032f6
cmp dword [esp + 0x1c], 0
jne 0x402c96
push 0x3f
lea ecx, [esp + 0x2d]
push 0
push ecx
mov byte [esp + 0x34], 0
call fcn.00412b50
add esp, 0xc
push str.midi
lea edx, [esp + 0x80]
push edx
mov dword [esp + 0x28], 0x40
call ebx
test ebp, ebp
jle 0x40334a
push 0xa
lea eax, [esp + 0x6c]
push eax
push ebp
call fcn.00412b1a
add esp, 0xc
lea ecx, [esp + 0x68]
push ecx
lea edx, [esp + 0x80]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [esp + 0x20]
push eax
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x2c]
push ecx
push 0
push 0
lea edx, [esp + 0x8c]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x40339f
test esi, esi
jne 0x40339f
mov edi, str.wdmaud.drv
lea esi, [esp + 0x28]
mov ecx, 0xb
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40339f
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x7c]
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
mov dword [esp + 0x18], 1
push str.mixer
lea edx, [esp + 0x80]
push edx
call ebx
test ebp, ebp
jle 0x4033d5
push 0xa
lea eax, [esp + 0x6c]
push eax
push ebp
call fcn.00412b1a
add esp, 0xc
lea ecx, [esp + 0x68]
push ecx
lea edx, [esp + 0x80]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [esp + 0x20]
push eax
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x2c]
push ecx
push 0
push 0
lea edx, [esp + 0x8c]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x40342c
cmp dword [esp + 0x1c], eax
jne 0x40342c
mov edi, str.wdmaud.drv
lea esi, [esp + 0x28]
mov ecx, 0xb
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40342c
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x7c]
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
mov dword [esp + 0x1c], 1
push str.wave
lea edx, [esp + 0x80]
push edx
call ebx
test ebp, ebp
jle 0x403462
push 0xa
lea eax, [esp + 0x6c]
push eax
push ebp
call fcn.00412b1a
add esp, 0xc
lea ecx, [esp + 0x68]
push ecx
lea edx, [esp + 0x80]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [esp + 0x20]
push eax
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x2c]
push ecx
push 0
push 0
lea edx, [esp + 0x8c]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x4034b9
cmp dword [esp + 0x14], eax
jne 0x4034b9
mov edi, str.wdmaud.drv
lea esi, [esp + 0x28]
mov ecx, 0xb
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x4034b9
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x7c]
push eax
push ecx
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueA]
mov dword [esp + 0x14], 1
test ebp, ebp
je 0x402c96
mov esi, dword [esp + 0x18]
sub ebp, 1
jmp 0x4032e0