Function at 0x10001560
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x244
mov eax, dword [0x10033a60]
xor eax, esp
mov dword [esp + 0x240], eax
push ebx
push esi
push edi
push 6
push 0
push str.HDAUDIO
push 0
call dword [sym.imp.SETUPAPI.dll_SetupDiGetClassDevsA]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x1000178f
lea eax, [esp + 0x1c]
push eax
push 0
push ebx
mov dword [esp + 0x28], 0x1c
mov dword [esp + 0x24], 0
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
je 0x10001788
push 0
push 0x100
lea ecx, [esp + 0x148]
push ecx
lea edx, [esp + 0x28]
push edx
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiGetDeviceInstanceIdA]
mov ecx, 0x14
mov esi, str.SystemCurrentControlSetHardware_ProfilesCurrentSystemCurrentControlSetEnum_
lea edi, [esp + 0x38]
rep movsd dword es:[edi], dword [esi]
lea eax, [esp + 0x140]
movsw word es:[edi], word [esi]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x100015f5
lea edi, [esp + 0x38]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
lea esp, [esp]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x10001610
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x38]
add edi, 0xffffffff
nop
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x10001630
mov ecx, 7
mov esi, str.DirectSoundDevice_Presence
rep movsd dword es:[edi], dword [esi]
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x3c]
push ecx
push 0x80000002
movsb byte es:[edi], byte [esi]
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x100017b0
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
push 4
lea edx, [esp + 0x18]
push edx
push 4
push eax
mov eax, dword [esp + 0x20]
push 0x1002a6e0
push eax
mov dword [esp + 0x2c], 1
call esi
test eax, eax
mov edx, dword [esp + 0x10]
jne 0x100017a9
push 4
lea ecx, [esp + 0x18]
push ecx
push 4
push eax
push 0x1002a6dc
push edx
call esi
test eax, eax
mov eax, dword [esp + 0x10]
push eax
jne 0x100017aa
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, 0x14
mov esi, str.SystemCurrentControlSetHardware_ProfilesCurrentSystemCurrentControlSetEnum_
lea edi, [esp + 0x38]
rep movsd dword es:[edi], dword [esi]
lea eax, [esp + 0x140]
movsw word es:[edi], word [esi]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x100016d4
lea edi, [esp + 0x38]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x100016e8
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x38]
add edi, 0xffffffff
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x10001707
mov ecx, 7
mov esi, str.DirectSoundMixer_Defaults
rep movsd dword es:[edi], dword [esi]
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x3c]
push edx
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyA]
test eax, eax
jne 0x100017b0
mov ecx, dword [esp + 0x10]
push 4
lea eax, [esp + 0x18]
push eax
push 4
push 0
push str.Acceleration
push ecx
mov dword [esp + 0x2c], 0xf
call dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
test eax, eax
jne 0x100017c7
mov edx, dword [esp + 0x10]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [esp + 0x18]
lea ecx, [esp + 0x1c]
add eax, 1
push ecx
push eax
push ebx
mov dword [esp + 0x24], eax
call dword [sym.imp.SETUPAPI.dll_SetupDiEnumDeviceInfo]
test eax, eax
jne 0x100015bf
push ebx
call dword [sym.imp.SETUPAPI.dll_SetupDiDestroyDeviceInfoList]
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x240]
xor ecx, esp
call fcn.1001524a
mov esp, ebp
pop ebp
ret
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x240]
xor ecx, esp
call fcn.1001524a
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x10]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [esp + 0x24c]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.1001524a
mov esp, ebp
pop ebp
ret