Function at 0x470450
Capabilities:
Delete registry value
Resolve function by parsing pe exports
Set registry value

Disassembly:
push 0xffffffffffffffff
push 0x4f6300
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x536ed4]
xor eax, esp
push eax
lea eax, [esp + 0x50]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x64]
cmp ebp, 0x21
ja 0x470b73
mov ecx, dword [esp + 0x60]
lea eax, [ebp + ebp*2]
lea edi, [ecx + eax*4]
xor esi, esi
cmp dword [edi + 0x58], esi
je 0x470b73
mov dword [esp + 0x64], esi
mov dword [esp + 0x58], esi
call fcn.004bb047
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x4704bc
push 0x80004005
call fcn.00401730
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
push ebp
push str.SoftwareRealtekAudioGUI_INFORMATIONJackInfomation
lea ecx, [esp + 0x24]
push str._sJack_d
push ecx
mov byte [esp + 0x68], 1
call fcn.00401af0
mov ebx, dword [esp + 0x2c]
add esp, 0x10
push reloc.OLEAUT32.dll_SysReAllocString
mov ecx, 0x2001f
mov edx, ebx
lea esi, [esp + 0x68]
call fcn.0042c080
test eax, eax
je 0x47052f
push ebx
push reloc.OLEAUT32.dll_SysReAllocString
mov edx, 0x2001f
call fcn.0043d980
test eax, eax
je 0x47052f
lea ecx, [esp + 0x1c]
call fcn.00401fb0
mov ecx, esi
call fcn.0042c0e0
jmp 0x470b73
mov esi, dword [edi + 0x5c]
mov edx, dword [esp + 0x60]
mov eax, dword [edx + 0x20c]
mov dword [esp + 0x28], esi
imul esi, esi, 0xac
movzx ecx, byte [esi + eax + 0xc0]
shr ecx, 1
and ecx, 1
push str.JackStatus
lea edx, [esp + 0x68]
mov edi, ecx
push edx
lea ecx, [esp + 0x4c]
mov dword [esp + 0x4c], 0
call fcn.0043d940
mov ecx, dword [esp + 0x64]
push 4
xor ebx, ebx
cmp eax, 2
lea eax, [esp + 0x44]
push eax
push 4
push 0
push str.JackStatus
push ecx
sete bl
mov dword [esp + 0x58], edi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edx, dword [esp + 0x60]
mov eax, dword [edx + 0x20c]
mov ecx, dword [esp + 0x28]
mov edx, dword [eax + ecx*4 + 0x34]
mov ecx, dword [esp + 0x64]
push 4
lea eax, [esp + 0x44]
push eax
push 4
push 0
push str.JackStatusChangedWhenPowerDown
push ecx
mov dword [esp + 0x58], edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test ebx, ebx
mov ebx, dword [esp + 0x64]
je 0x4705f3
test edi, edi
je 0x4705f3
push 4
lea edx, [esp + 0x44]
push edx
push 4
push 0
push str.JackStatusChangedWhenPowerDown
push ebx
mov dword [esp + 0x58], 1
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov ecx, dword [esp + 0x60]
lea eax, [ebp + ebp*2 + 0x18]
mov edx, dword [ecx + eax*4]
mov ebp, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push 4
lea eax, [esp + 0x44]
push eax
push 4
xor edi, edi
push edi
push str.JackIconTypeColor
push ebx
mov dword [esp + 0x58], edx
call ebp
mov ecx, dword [esp + 0x60]
mov edx, dword [ecx + 0x20c]
mov ecx, dword [esi + edx + 0x144]
lea eax, [esi + edx]
mov edx, dword [eax + 0x154]
mov eax, dword [eax + 0x15c]
mov dword [esp + 0x48], edx
add edx, 1
mov dword [esp + 0x18], eax
shl edx, 8
and eax, 0xf
and edx, 0xf00
shl eax, 0xc
push 4
or edx, eax
lea eax, [esp + 0x44]
push eax
push 4
push edi
push str.JackWidgetId
or edx, ecx
push ebx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x58], edx
call ebp
mov ecx, dword [esp + 0x60]
mov ecx, dword [ecx + 0x20c]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x28]
lea edx, [esp + 0x30]
lea esi, [esp + 0x2c]
call fcn.0046ee30
cmp dword [esp + 0x18], 0
je 0x4706c0
mov edx, dword [esp + 0x60]
mov eax, dword [edx + 0x20c]
mov edx, dword [eax + 0x1644]
mov ecx, dword [eax + 0x1640]
mov ebp, dword [eax + 0x1648]
mov dword [esp + 0x3c], edx
jmp 0x4706e0
mov eax, dword [esp + 0x60]
mov eax, dword [eax + 0x20c]
mov edx, dword [eax + 0x1638]
mov ecx, dword [eax + 0x1634]
mov ebp, dword [eax + 0x163c]
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0x2c]
xor edx, edx
cmp dword [esp + 0x20], ecx
mov dword [esp + 0x24], ebp
sete dl
cmp eax, 2
mov dword [esp + 0x4c], edx
jne 0x470718
mov ecx, dword [esp + 0x30]
cmp ecx, 0xa
je 0x470708
cmp ecx, 0xb
jne 0x470718
xor esi, esi
mov dword [esp + 0x34], 1
mov dword [esp + 0x38], esi
jmp 0x470736
xor esi, esi
cmp eax, 8
mov dword [esp + 0x34], esi
je 0x47072e
cmp eax, 0xa
je 0x47072e
mov dword [esp + 0x38], esi
jmp 0x470736
mov dword [esp + 0x38], 1
cmp edx, esi
je 0x470746
push str.EndpointIdForHiddenJack
push ebx
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
mov ebx, dword [esp + 0x48]
mov dword [esp + 0x40], esi
mov edi, edi
mov eax, dword [esp + 0x60]
mov ecx, dword [eax + 0x50]
mov edi, dword [ecx + 0x1b70]
test edi, edi
je 0x4708e2
mov eax, edi
mov ecx, dword [eax + 8]
test ecx, ecx
mov edi, dword [edi]
je 0x470852
cmp dword [esp + 0x4c], 0
je 0x470814
cmp dword [esp + 0x34], 0
jne 0x4707da
cmp dword [esp + 0x38], 0
je 0x470814
cmp ebx, dword [ecx + 0xcc]
jne 0x470852
mov eax, dword [esp + 0x18]
cmp eax, dword [ecx + 0xc0]
jne 0x470852
mov esi, dword [ecx + 0x264]
xor eax, eax
test esi, esi
jbe 0x470852
lea edx, [ecx + 0x268]
cmp dword [edx], ebp
je 0x470929
add eax, 1
add edx, 4
cmp eax, esi
jb 0x4707c3
jmp 0x470852
cmp ebx, dword [ecx + 0xcc]
jne 0x470852
mov edx, dword [esp + 0x18]
cmp edx, dword [ecx + 0xc0]
jne 0x470852
mov esi, dword [ecx + 0x264]
xor eax, eax
test esi, esi
jbe 0x470852
mov ebp, dword [esp + 0x20]
lea edx, [ecx + 0x268]
cmp dword [edx], ebp
je 0x470863
add eax, 1
add edx, 4
cmp eax, esi
jb 0x470804
jmp 0x470852
cmp ebx, dword [ecx + 0xcc]
jne 0x470852
mov edx, dword [esp + 0x18]
cmp edx, dword [ecx + 0xc0]
jne 0x470852
mov esi, dword [ecx + 0x264]
xor eax, eax
test esi, esi
jbe 0x470852
mov ebp, dword [esp + 0x20]
lea edx, [ecx + 0x268]
mov edi, edi
cmp dword [edx], ebp
je 0x470976
add eax, 1
add edx, 4
cmp eax, esi
jb 0x470840
test edi, edi
je 0x4708e2
mov ebp, dword [esp + 0x24]
jmp 0x470765
mov ecx, dword [ecx + 0x90]
push str.EndpointId
lea eax, [esp + 0x68]
push eax
mov esi, ecx
call fcn.004481c0
mov ecx, dword [esp + 0x60]
mov edx, dword [ecx + 0x50]
mov edi, dword [edx + 0x1b70]
test edi, edi
je 0x4708e2
mov ebp, dword [esp + 0x3c]
nop
test edi, edi
mov eax, edi
je 0x470988
mov esi, dword [eax + 8]
test esi, esi
mov edi, dword [edi]
je 0x4708de
cmp ebx, dword [esi + 0xcc]
jne 0x4708de
mov eax, dword [esp + 0x18]
cmp eax, dword [esi + 0xc0]
jne 0x4708de
mov edx, dword [esi + 0x264]
xor eax, eax
test edx, edx
jbe 0x4708de
lea ecx, [esi + 0x268]
lea esp, [esp]
cmp dword [ecx], ebp
je 0x470917
add eax, 1
add ecx, 4
cmp eax, edx
jb 0x4708d0
test edi, edi
jne 0x470890
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [esp + 0x60]
mov eax, dword [ecx + 0x50]
add eax, 0x1b68
call fcn.004852a0
mov eax, dword [esp + 0x40]
add eax, 1
cmp eax, 2
mov dword [esp + 0x40], eax
jge 0x470940
mov ebp, dword [esp + 0x24]
jmp 0x470750
mov esi, dword [esi + 0x90]
push str.EndpointIdForHiddenJack
lea edx, [esp + 0x68]
push edx
jmp 0x47093b
mov ecx, dword [ecx + 0x90]
push str.EndpointId
lea eax, [esp + 0x68]
push eax
mov esi, ecx
call fcn.004481c0
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x28]
lea ebx, [esi + 0x210]
mov dword [ebx + 0x1c], eax
call fcn.004727d0
push ebx
call fcn.00472cd0
call fcn.004bb047
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x47098d
push 0x80004005
call fcn.00401730
mov ecx, dword [ecx + 0x90]
push str.EndpointId
lea edx, [esp + 0x68]
push edx
jmp 0x470939
call fcn.004bb5cf
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov byte [esp + 0x58], 2
call fcn.004bb047
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4709bc
push 0x80004005
call fcn.00401730
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x58], 3
call fcn.00401f00
lea ecx, [esp + 0x28]
call fcn.00401f00
mov esi, dword [esi + 0x254]
test esi, esi
je 0x470a5f
lea ecx, [ecx]
mov edx, dword [esp + 0x18]
mov eax, esi
mov eax, dword [eax + 8]
mov esi, dword [esi]
movzx cx, ah
mov ch, al
shr eax, 0x10
mov ebp, eax
mov eax, dword [edx - 0xc]
xor ebx, ebx
test eax, eax
setne bl
movzx ecx, cx
mov eax, 0x511eb8
test ebx, ebx
jne 0x470a21
mov eax, 0x50148c
movzx ecx, cx
push ecx
push eax
push str._s_04x
lea edi, [esp + 0x24]
call fcn.00404b40
add esp, 0xc
test ebx, ebx
mov eax, 0x511eb8
jne 0x470a45
mov eax, 0x50148c
movzx edx, bp
push edx
push eax
push str._s_d
lea edi, [esp + 0x34]
call fcn.00404b40
add esp, 0xc
test esi, esi
jne 0x4709f0
xor eax, eax
cmp dword [esp + 0x18], eax
setne al
test eax, eax
jne 0x470a76
push 0x80004005
call fcn.00401730
mov esi, dword [esp + 0x18]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrlenW]
push esi
call ebp
mov edi, dword [esp + 0x64]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
lea eax, [eax + eax + 2]
push eax
push esi
push 1
push 0
push str.JackListTypeSequence
push edi
call ebx
mov esi, dword [esp + 0x28]
xor eax, eax
test esi, esi
setne al
test eax, eax
jne 0x470ab8
push 0x80004005
call fcn.00401730
push esi
call ebp
lea ecx, [eax + eax + 2]
push ecx
push esi
push 1
push 0
push str.JackListName
push edi
call ebx
mov edx, dword [esp + 0x60]
mov eax, dword [edx + 0x26c]
push 4
lea ecx, [esp + 0x64]
push ecx
push 4
push 0
push str.JackListCurrSelectIndex
push edi
mov dword [esp + 0x78], eax
call ebx
test edi, edi
mov ebx, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
je 0x470b01
push edi
call ebx
xor edi, edi
mov dword [esp + 0x64], edi
add esi, 0xfffffff0
mov byte [esp + 0x58], 2
lea edx, [esi + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x470b22
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov byte [esp + 0x58], 1
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x470b47
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x58], 0
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x470b6c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test edi, edi
je 0x470b73
push edi
call ebx
mov ecx, dword [esp + 0x50]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret 8