Function at 0x406360
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
mov ecx, dword [0x5f0448]
sub esp, 0x28
push edi
call fcn.0040bd90
mov edi, dword [ebp + 8]
test edi, edi
je 0x406bbf
push ebx
mov bl, byte [0x5ea020]
push esi
mov esi, dword [0x5f0060]
movzx eax, bl
cmp eax, esi
jne 0x4064d8
cmp bl, 0xc
ja 0x4064d6
mov ebx, dword [0x5f06e8]
or ebx, dword [0x5f06e4]
or ebx, dword [0x5f06e0]
test bl, 0x20
je 0x4063d5
lea eax, [esi - 1]
push eax
push 0x5f0065
push 0x5f0064
call fcn.00553240
mov al, byte [edi + 4]
add esp, 0xc
mov byte [esi + 0x5f0063], al
test bl, 0x10
je 0x4063f8
lea eax, [esi - 1]
push eax
push 0x5f0071
push 0x5f0070
call fcn.00553240
mov al, byte [edi]
add esp, 0xc
mov byte [esi + 0x5f006f], al
test bl, 2
je 0x40641c
lea eax, [esi - 1]
push eax
push 0x5f007d
push 0x5f007c
call fcn.00553240
mov al, byte [edi + 8]
add esp, 0xc
mov byte [esi + 0x5f007b], al
mov bl, byte [0x5ea020]
mov cl, byte [0x5f0088]
cmp cl, 0xff
je 0x406707
xor esi, esi
mov dword [ebp - 8], 0x5f0088
mov dword [ebp + 8], esi
nop dword [eax]
cmp bl, cl
jb 0x4066ee
cmp bl, 0xc
ja 0x4066ee
movzx edx, cl
mov eax, 0xff
mov ecx, dword [0x5f06e0]
test cl, 0x20
je 0x406551
movzx ecx, bl
lea esi, [esi + 0x5f0090]
sub ecx, edx
mov edi, edx
add ecx, 0x5f0064
sub edi, 4
jb 0x406491
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x40649a
add ecx, 4
add esi, 4
sub edi, 4
jae 0x406480
cmp edi, 0xfffffffc
je 0x406541
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x4064cf
cmp edi, 0xfffffffd
je 0x406541
mov al, byte [ecx + 1]
cmp al, byte [esi + 1]
jne 0x4064cf
cmp edi, 0xfffffffe
je 0x406541
mov al, byte [ecx + 2]
cmp al, byte [esi + 2]
jne 0x4064cf
cmp edi, 0xffffffff
je 0x406541
mov al, byte [ecx + 3]
cmp al, byte [esi + 3]
je 0x406541
sbb eax, eax
or eax, 1
jmp 0x406543
cmp eax, esi
jb 0x4064e5
cmp bl, 0xff
jne 0x406422
jmp 0x4064ea
cmp bl, 0xff
jne 0x4064f2
inc bl
mov byte [0x5ea020], bl
cmp bl, 0xc
jae 0x406422
mov ecx, dword [0x5f06e8]
or ecx, dword [0x5f06e4]
or ecx, dword [0x5f06e0]
mov al, byte [edi + 4]
movzx edx, bl
mov byte [edx + 0x5f0064], al
test cl, 0x10
je 0x406526
mov al, byte [edi]
mov byte [edx + 0x5f0070], al
test cl, 2
je 0x406534
mov al, byte [edi + 8]
mov byte [edx + 0x5f007c], al
inc bl
mov byte [0x5ea020], bl
jmp 0x406422
xor eax, eax
test eax, eax
jne 0x4066ee
mov ecx, dword [0x5f06e0]
test cl, 0x10
je 0x4065cb
mov eax, dword [ebp + 8]
mov edi, edx
movzx ecx, bl
sub ecx, edx
add ecx, 0x5f0070
lea esi, [eax + 0x5f00f0]
sub edi, 4
jb 0x406582
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x406587
add ecx, 4
add esi, 4
sub edi, 4
jae 0x406571
cmp edi, 0xfffffffc
je 0x4065bb
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x4065b4
cmp edi, 0xfffffffd
je 0x4065bb
mov al, byte [ecx + 1]
cmp al, byte [esi + 1]
jne 0x4065b4
cmp edi, 0xfffffffe
je 0x4065bb
mov al, byte [ecx + 2]
cmp al, byte [esi + 2]
jne 0x4065b4
cmp edi, 0xffffffff
je 0x4065bb
mov al, byte [ecx + 3]
cmp al, byte [esi + 3]
je 0x4065bb
sbb eax, eax
or eax, 1
jmp 0x4065bd
xor eax, eax
test eax, eax
jne 0x4066ee
mov ecx, dword [0x5f06e0]
test cl, 2
je 0x40663c
mov eax, dword [ebp + 8]
movzx ecx, bl
sub ecx, edx
add ecx, 0x5f007c
lea esi, [eax + 0x5f0150]
sub edx, 4
jb 0x406601
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [esi]
jne 0x406606
add ecx, 4
add esi, 4
sub edx, 4
jae 0x4065f0
cmp edx, 0xfffffffc
je 0x40663a
mov al, byte [ecx]
cmp al, byte [esi]
jne 0x406633
cmp edx, 0xfffffffd
je 0x40663a
mov al, byte [ecx + 1]
cmp al, byte [esi + 1]
jne 0x406633
cmp edx, 0xfffffffe
je 0x40663a
mov al, byte [ecx + 2]
cmp al, byte [esi + 2]
jne 0x406633
cmp edx, 0xffffffff
je 0x40663a
mov al, byte [ecx + 3]
cmp al, byte [esi + 3]
je 0x40663a
sbb eax, eax
or eax, 1
jmp 0x40663c
xor eax, eax
test eax, eax
jne 0x4066ee
push str.Hit_cap_HotKey_n
push 0x1d
call fcn.00401fa0
add esp, 8
cmp dword [0x5f0424], 0
je 0x406661
call fcn.0040a710
cmp dword [0x5f0450], 0
je 0x4066c6
push 0x5f04d8
call fcn.00416cd0
add esp, 4
mov esi, eax
push str.CnxtNotificationClient
push 0
call dword [sym.imp.USER32.dll_FindWindowW]
mov edx, dword [0x5f0448]
xor ecx, ecx
cmp dword [edx + 0x1a8], ecx
sete cl
mov dword [edx + 0x1a8], ecx
test esi, esi
je 0x4066ba
test eax, eax
je 0x4066ba
mov ecx, dword [0x5f0448]
push 0xc8
push 0x108
call fcn.0040afc0
push 1
call fcn.0040ba40
add esp, 4
jmp 0x4066e8
mov ecx, dword [0x5f0448]
xor eax, eax
cmp dword [ecx + 0x1a8], eax
sete al
mov dword [ecx + 0x1a8], eax
mov ecx, dword [0x5f0448]
call fcn.00408680
mov bl, byte [0x5ea020]
mov ecx, dword [ebp - 8]
add dword [ebp + 8], 0xc
inc ecx
mov esi, dword [ebp + 8]
mov dword [ebp - 8], ecx
mov cl, byte [ecx]
cmp cl, 0xff
jne 0x406440
mov cl, byte [0x5f01b0]
cmp cl, 0xff
je 0x40690e
xor edx, edx
mov dword [ebp - 8], 0x5f01b0
mov dword [ebp + 8], edx
cmp bl, cl
jb 0x4068f5
cmp bl, 0xc
ja 0x4068f5
mov ebx, dword [0x5f06e4]
mov eax, 0xff
movzx edi, cl
test bl, 0x20
je 0x4067b6
movzx ecx, byte [0x5ea020]
lea edx, [edx + 0x5f01b8]
sub ecx, edi
mov esi, edi
add ecx, 0x5f0064
sub esi, 4
jb 0x406773
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x406778
add ecx, 4
add edx, 4
sub esi, 4
jae 0x406762
cmp esi, 0xfffffffc
je 0x4067ac
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x4067a5
cmp esi, 0xfffffffd
je 0x4067ac
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x4067a5
cmp esi, 0xfffffffe
je 0x4067ac
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x4067a5
cmp esi, 0xffffffff
je 0x4067ac
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x4067ac
sbb eax, eax
or eax, 1
jmp 0x4067ae
xor eax, eax
test eax, eax
jne 0x4068ef
test bl, 0x10
je 0x406834
movzx ecx, byte [0x5ea020]
mov esi, edi
mov eax, dword [ebp + 8]
sub ecx, edi
add ecx, 0x5f0070
lea edx, [eax + 0x5f0218]
sub esi, 4
jb 0x4067f1
nop word [eax + eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x4067f6
add ecx, 4
add edx, 4
sub esi, 4
jae 0x4067e0
cmp esi, 0xfffffffc
je 0x40682a
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x406823
cmp esi, 0xfffffffd
je 0x40682a
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x406823
cmp esi, 0xfffffffe
je 0x40682a
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x406823
cmp esi, 0xffffffff
je 0x40682a
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x40682a
sbb eax, eax
or eax, 1
jmp 0x40682c
xor eax, eax
test eax, eax
jne 0x4068ef
test bl, 2
je 0x406861
xor ecx, ecx
test edi, edi
je 0x406861
mov bl, byte [0x5ea020]
movzx eax, bl
sub eax, edi
lea eax, [eax + 0x5f007c]
cmp byte [eax + ecx], 0
jl 0x4068f5
inc ecx
cmp ecx, edi
jb 0x406850
jmp 0x406869
test eax, eax
jne 0x4068ef
push str.Hit_spk_HotKey_n
push 0x1d
call fcn.00401fa0
add esp, 8
cmp dword [0x5f0428], 0
je 0x406886
call fcn.0040a710
cmp dword [0x5f0450], 0
je 0x4068ef
push 0x5f04d8
call fcn.00416cd0
add esp, 4
mov esi, eax
push str.CnxtNotificationClient
push 0
call dword [sym.imp.USER32.dll_FindWindowW]
push dword [0x5f0404]
mov edi, eax
push str.gpio_update_delay__d_ms_n
push 0x1d
call fcn.00401fa0
add esp, 0xc
test esi, esi
je 0x4068e5
test edi, edi
je 0x4068e5
mov eax, dword [0x5f0404]
mov ecx, dword [0x5f0448]
add eax, 0xc8
push eax
push 0x10a
call fcn.0040afc0
push 0
call fcn.0040ba40
add esp, 4
mov bl, byte [0x5ea020]
mov ecx, dword [ebp - 8]
add dword [ebp + 8], 0xc
inc ecx
mov edx, dword [ebp + 8]
mov dword [ebp - 8], ecx
mov cl, byte [ecx]
cmp cl, 0xff
jne 0x406722
mov cl, byte [0x5f02d8]
cmp cl, 0xff
je 0x406bbd
xor edx, edx
mov dword [ebp - 0x10], 0x5f02d8
mov dword [ebp + 8], edx
nop dword [eax]
cmp bl, cl
jb 0x406ba4
cmp bl, 0xc
ja 0x406ba4
movzx edi, cl
mov eax, 0xff
mov ecx, dword [0x5f06e8]
test cl, 0x20
je 0x4069ca
movzx ecx, bl
lea edx, [edx + 0x5f02e0]
sub ecx, edi
mov esi, edi
add ecx, 0x5f0064
sub esi, 4
jb 0x406981
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x406986
add ecx, 4
add edx, 4
sub esi, 4
jae 0x406970
cmp esi, 0xfffffffc
je 0x4069ba
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x4069b3
cmp esi, 0xfffffffd
je 0x4069ba
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x4069b3
cmp esi, 0xfffffffe
je 0x4069ba
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x4069b3
cmp esi, 0xffffffff
je 0x4069ba
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x4069ba
sbb eax, eax
or eax, 1
jmp 0x4069bc
xor eax, eax
test eax, eax
jne 0x406ba4
mov ecx, dword [0x5f06e8]
test cl, 0x10
je 0x406a4a
mov eax, dword [ebp + 8]
mov esi, edi
movzx ecx, bl
sub ecx, edi
add ecx, 0x5f0070
lea edx, [eax + 0x5f0340]
sub esi, 4
jb 0x406a01
nop
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x406a06
add ecx, 4
add edx, 4
sub esi, 4
jae 0x4069f0
cmp esi, 0xfffffffc
je 0x406a3a
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x406a33
cmp esi, 0xfffffffd
je 0x406a3a
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x406a33
cmp esi, 0xfffffffe
je 0x406a3a
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x406a33
cmp esi, 0xffffffff
je 0x406a3a
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x406a3a
sbb eax, eax
or eax, 1
jmp 0x406a3c
xor eax, eax
test eax, eax
jne 0x406ba4
mov ecx, dword [0x5f06e8]
test cl, 2
je 0x406ab4
mov eax, dword [ebp + 8]
movzx ecx, bl
sub ecx, edi
add ecx, 0x5f007c
lea edx, [eax + 0x5f03a0]
sub edi, 4
jb 0x406a79
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x406a7e
add ecx, 4
add edx, 4
sub edi, 4
jae 0x406a68
cmp edi, 0xfffffffc
je 0x406ab2
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x406aab
cmp edi, 0xfffffffd
je 0x406ab2
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x406aab
cmp edi, 0xfffffffe
je 0x406ab2
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x406aab
cmp edi, 0xffffffff
je 0x406ab2
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x406ab2
sbb eax, eax
or eax, 1
jmp 0x406ab4
xor eax, eax
test eax, eax
jne 0x406ba4
push str.Hit_NoiseCancel_HotKey_n
push 0x1d
call fcn.00401fa0
add esp, 8
cmp dword [0x5f0450], 0
je 0x406b9e
lea eax, [ebp - 8]
mov dword [ebp - 8], 0
push eax
push str.SOFTWAREConexantMicTray
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
mov dword [ebp - 4], 0
mov dword [ebp - 0xc], 4
test eax, eax
jne 0x406b90
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 4]
push eax
push 0
push 0
push str.NoiseCancellation
push dword [ebp - 8]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
je 0x406b2b
xor eax, eax
jmp 0x406b33
xor eax, eax
cmp dword [ebp - 4], eax
sete al
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x18], eax
lea eax, [ebp - 4]
push 1
push 0x58a850
mov dword [ebp - 0x1c], 4
mov dword [ebp - 0x28], 0x58d9d0
mov dword [ebp - 0x24], str.NoiseCancellation
mov dword [ebp - 0x20], eax
call fcn.00411960
mov esi, eax
add esp, 8
cmp esi, 0xffffffff
je 0x406b89
push 0
lea eax, [ebp - 0x14]
push eax
push 0
push 0
push 0x14
lea eax, [ebp - 0x28]
push eax
push 0x22082c
push esi
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 8]
test eax, eax
je 0x406b9e
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov bl, byte [0x5ea020]
mov ecx, dword [ebp - 0x10]
add dword [ebp + 8], 0xc
inc ecx
mov edx, dword [ebp + 8]
mov dword [ebp - 0x10], ecx
mov cl, byte [ecx]
cmp cl, 0xff
jne 0x406930
pop esi
pop ebx
mov ecx, dword [0x5f0448]
call fcn.0040afb0
mov eax, 1
pop edi
mov esp, ebp
pop ebp
ret 4