Function at 0x14004d4f0
Capabilities:
Check if file exists
Get common file path
Get file attributes
Get program files directory
Get system information on windows
Resolve function by parsing pe exports

Disassembly:
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x10000]
mov eax, 0x10100
call fcn.1402ed7b0
sub rsp, rax
mov qword [rbp - 0x60], 0xfffffffffffffffe
mov qword [rsp + 0x10138], rbx
mov qword [rsp + 0x10140], rsi
movaps xmmword [rsp + 0x100f0], xmm6
mov rax, qword [0x14044f8c0]
xor rax, rsp
mov qword [rbp + 0xffe0], rax
mov rsi, rcx
mov rcx, qword [rcx + 8]
test rcx, rcx
je 0x14004d556
mov rax, qword [rcx]
call qword [rax + 0x28]
jmp 0x14004dcb6
mov rdx, qword [rsi + 0x10]
test rdx, rdx
je 0x14004dcb6
xor r15d, r15d
mov edi, r15d
mov ebx, r15d
lea r12d, [r15 + 1]
cmp dword [rdx + 0x574], ebx
jbe 0x14004d5ce
mov r14d, 0x200
nop
lea rcx, [rdx + 0x568]
mov edx, ebx
call fcn.14009dc90
test eax, eax
je 0x14004d5bb
mov rdx, qword [rsi + 0x10]
mov eax, ebx
imul rcx, rax, 0xa8
movzx eax, word [rcx + rdx + 0x5ac]
test r14w, ax
jne 0x14004d5bb
test al, 8
je 0x14004d5bb
test byte [rcx + rdx + 0x5a4], r12b
je 0x14004d5cb
inc ebx
mov rdx, qword [rsi + 0x10]
cmp ebx, dword [rdx + 0x574]
jae 0x14004d5ce
jmp 0x14004d580
mov edi, r12d
test edi, edi
jne 0x14004d5da
or dword [rdx + 8], 0x40
mov rdx, qword [rsi + 0x10]
test dword [rdx + 0x88], 0x20000
je 0x14004d5f2
mov rcx, rsi
call fcn.14004e320
mov rdx, qword [rsi + 0x10]
test dword [rdx + 8], 0x1000000
je 0x14004d68b
mov rbx, qword [rdx + 0x1ad8]
test rbx, rbx
je 0x14004d68b
nop
mov rdi, rbx
test rbx, rbx
je 0x14004dcf7
mov rbx, qword [rbx]
mov rdi, qword [rdi + 0x10]
test rdi, rdi
je 0x14004d682
cmp dword [rdi + 0xc8], 9
je 0x14004d63d
test dword [rdi + 0x1cc], 0x401
je 0x14004d682
mov ecx, LoadRegTypeLib
call fcn.140153a34
mov qword [rsp + 0x50], rax
test rax, rax
je 0x14004d66e
movups xmm0, xmmword [rdi + 0xb8]
movaps xmmword [rbp - 0x50], xmm0
lea r8, [rbp - 0x50]
mov rdx, qword [rdi + 0x28]
mov rcx, rax
call fcn.140112cc0
jmp 0x14004d671
mov rax, r15
test rax, rax
je 0x14004d682
lea rcx, [rsi + 0x30]
mov rdx, rax
call fcn.1401555ec
test rbx, rbx
jne 0x14004d610
mov rdx, qword [rsi + 0x10]
mov r9d, r15d
mov r8, qword [rdx + 0x1ad8]
mov r14, 0xffffffffffffffff
test r8, r8
je 0x14004d810
nop word [rax + rax]
mov rcx, r8
test r8, r8
je 0x14004dd08
mov r8, qword [r8]
mov rcx, qword [rcx + 0x10]
test rcx, rcx
je 0x14004d72e
mov eax, dword [rcx + 0xc8]
sub eax, 8
cmp eax, 1
ja 0x14004d71a
cmp dword [rcx + 0x50], 0
je 0x14004d71a
mov eax, dword [rcx + 0x1cc]
bt eax, 0xc
jb 0x14004d708
mov edx, dword [rcx + 0x1d0]
bt edx, 0x1d
jb 0x14004d708
test byte [rcx + 0x1d4], 1
je 0x14004d703
bt eax, 0xb
jb 0x14004d708
test dl, 0x40
je 0x14004d71a
test eax, 0x401
je 0x14004d71a
mov rax, qword [rsi + 0x10]
or dword [rax + 8], 0x20000
mov eax, dword [rcx + 0x1d0]
and eax, 0x100001
cmp eax, 0x100001
cmove r9d, r12d
test r8, r8
jne 0x14004d6b0
test r9d, r9d
je 0x14004d810
lea rax, [rsp + 0x58]
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x50]
mov qword [rsp + 0x68], rax
call fcn.140162c14
mov rcx, rax
test rax, rax
je 0x14004dcec
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x58], rax
lea rbx, [0x140393240]
mov rdx, rbx
lea rcx, [rsp + 0x58]
call fcn.1400168b0
test al, al
jne 0x14004d7ab
mov rax, r14
nop
inc rax
cmp word [rbx + rax*2], 0
jne 0x14004d790
mov r8d, eax
mov rdx, rbx
lea rcx, [rsp + 0x58]
call fcn.140016ad0
nop
call fcn.140162c14
mov rcx, rax
test rax, rax
je 0x14004dcfd
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x50], rax
lea rbx, str.RAVBg64.exe
mov rdx, rbx
lea rcx, [rsp + 0x50]
call fcn.1400168b0
test al, al
jne 0x14004d801
mov rax, r14
inc rax
cmp word [rbx + rax*2], 0
jne 0x14004d7e6
mov r8d, eax
mov rdx, rbx
lea rcx, [rsp + 0x50]
call fcn.140016ad0
nop
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x50]
call fcn.140040db0
mov rax, qword [rsi + 0x10]
test dword [rax + 0x34], 0x100
je 0x14004d95a
xor r9d, r9d
lea r8, str.SpdifFinished
lea rdx, str.DefLevel
lea rcx, [0x14046a640]
call fcn.140169d48
test eax, eax
jne 0x14004d95a
mov rax, qword [rsi + 0x10]
mov rcx, qword [rax + 0x1ad8]
test rcx, rcx
je 0x14004d95a
mov rax, rcx
mov rcx, qword [rcx]
mov rax, qword [rax + 0x10]
test rax, rax
je 0x14004d851
cmp dword [rax + 0xc8], 8
jne 0x14004d851
mov rax, qword [rax + 0xd8]
mov rbx, qword [rax + 0x10]
test rbx, rbx
je 0x14004d95a
cmp dword [rbx + 0x3c], 0
je 0x14004d95a
movups xmm6, xmmword [0x1403920e0]
mov dword [rsp + 0x40], r15d
mov rax, qword [rbx]
lea rdx, [rsp + 0x40]
mov rcx, rbx
call qword [rax + 0x40]
test eax, eax
je 0x14004d939
mov ecx, dword [rsp + 0x40]
mov eax, 4
mul rcx
cmovo rax, r14
mov rcx, rax
call fcn.140153a84
mov rdi, rax
test rax, rax
je 0x14004d939
mov r9d, r15d
mov r8d, dword [rsp + 0x40]
test r8d, r8d
je 0x14004d8f7
nop
mov edx, r9d
mov dword [rax + rdx*4], 0x32
inc r9d
mov r8d, dword [rsp + 0x40]
cmp r9d, r8d
jb 0x14004d8e0
movdqa xmmword [rbp - 0x40], xmm6
mov rax, qword [rbx]
lea r9, [rbp - 0x40]
mov rdx, rdi
mov rcx, rbx
call qword [rax + 0x50]
mov ebx, eax
mov rcx, rdi
call fcn.140153a7c
test ebx, ebx
je 0x14004d939
mov r9d, r12d
lea r8, str.SpdifFinished
lea rdx, str.DefLevel
lea rcx, [0x14046a640]
call fcn.14016a2dc
jmp 0x14004d95a
lea r9, str.Set_SPDIF_Vol_to_50_failed.
lea r8, str.Warning
lea rdx, str.DefLevel
lea rcx, [0x14046a640]
call fcn.14016a39c
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x88]
mov rbx, qword [rsi + 0x10]
test dword [rbx + 0xb0], 0x4000000
je 0x14004d9c4
add rbx, 0x568
je 0x14004d9c4
movsxd rdx, dword [rbx + 0x24]
cmp edx, 0xffffffff
je 0x14004d9a1
imul rcx, rdx, 0xa8
cmp dword [rcx + rbx + 0xcc], 0
je 0x14004d9a1
mov rcx, rbx
call fcn.14009e030
movsxd rdx, dword [rbx + 0x2c]
cmp edx, 0xffffffff
je 0x14004d9c4
imul r8, rdx, 0xa8
cmp dword [r8 + rbx + 0xcc], 0
je 0x14004d9c4
mov rcx, rbx
call fcn.14009e030
xor edx, edx
xor ecx, ecx
call fcn.140058e80
xor edx, edx
mov ecx, r12d
call fcn.140058e80
xor eax, eax
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], rax
mov qword [rbp - 0x80], rax
mov qword [rbp - 0x78], rax
mov qword [rbp - 0x70], rax
mov qword [rbp - 0x68], rax
lea rcx, [rsp + 0x70]
call qword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov edx, 0x7fff
lea rcx, [rbp - 0x20]
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryW]
test eax, eax
je 0x14004dbb5
lea rcx, [rbp - 0x20]
mov rax, r14
nop dword [rax]
lea rax, [rax + 1]
cmp word [rcx + rax*2], 0
jne 0x14004da20
cmp word [rbp + rax*2 - 0x22], 0x5c
jne 0x14004da4d
lea rax, [rax*2 - 2]
cmp rax, 0xfffe
jae 0x14004dce6
mov word [rbp + rax - 0x20], r15w
mov edx, 0x7fff
lea rcx, [rbp - 0x20]
cmp word [rsp + 0x70], 9
lea r8, str.RTKVAA64.EXE
je 0x14004da6c
lea r8, str.RTKVADDA.EXE
call fcn.1402f38d4
lea rax, [rsp + 0x48]
mov qword [rsp + 0x68], rax
call fcn.140162c14
mov rcx, rax
test rax, rax
je 0x14004dd0e
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x48], rax
lea rdx, [rbp - 0x20]
lea rcx, [rsp + 0x48]
call fcn.1400168b0
test al, al
jne 0x14004dad0
lea rcx, [rbp - 0x20]
mov rax, r14
inc rax
cmp word [rcx + rax*2], 0
jne 0x14004dab4
mov r8d, eax
lea rdx, [rbp - 0x20]
lea rcx, [rsp + 0x48]
call fcn.140016ad0
nop
mov rcx, qword [rsp + 0x48]
movzx eax, word [rcx]
cmp ax, word [0x140393240]
jne 0x14004dae7
lea rdx, [rcx - 0x18]
jmp 0x14004daff
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
cmp eax, 0xffffffff
jne 0x14004db86
lock xadd dword [rdx + 0x10], r14d
sub r14d, 1
jg 0x14004db14
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor edx, edx
mov r8d, 0xfffe
lea rcx, [rbp - 0x20]
call fcn.1402ef020
lea rax, [rbp - 0x20]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea edx, [r9 + 0x26]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x14004db9b
lea r8, str.RealtekAudioAP
mov edx, 0x7fff
lea rcx, [rbp - 0x20]
call fcn.1402f38d4
mov edx, 0x7fff
lea rcx, [rbp - 0x20]
cmp word [rsp + 0x70], 9
jne 0x14004db78
lea r8, str.RTKVAA64.EXE
call fcn.1402f38d4
jmp 0x14004db9b
lea r8, str.RTKVADDA.EXE
call fcn.1402f38d4
jmp 0x14004db9b
lock xadd dword [rdx + 0x10], r14d
sub r14d, 1
jg 0x14004db9b
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rcx, [rbp - 0x20]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x14004dbb5
mov rax, qword [rsi + 0x10]
or dword [rax + 8], 0x20000000
mov rax, qword [rsi + 0x10]
test dword [rax + 0xbc], 0x400
je 0x14004dc18
mov dword [rsp + 0x68], r15d
mov rcx, qword [rax + 0x4d0]
test rcx, rcx
je 0x14004dc18
mov dword [rsp + 0x60], r15d
movups xmm0, xmmword [str._alsC]
movaps xmmword [rbp - 0x30], xmm0
lea rax, [rsp + 0x60]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], 4
lea rax, [rsp + 0x68]
mov qword [rsp + 0x20], rax
mov r9d, r12d
mov r8d, 0x21
lea rdx, [rbp - 0x30]
call fcn.14003b1f0
mov rax, qword [rsi + 0x10]
test dword [rax + 0xc], 0x2000
je 0x14004dc2d
mov rcx, rsi
call fcn.140051600
mov rax, qword [rsi + 0x10]
test dword [rax + 0x18], 0x400
je 0x14004dc5f
mov rax, qword [rax + 0x1ad8]
test rax, rax
je 0x14004dc5f
mov rdx, rax
mov rax, qword [rax]
mov rdx, qword [rdx + 0x10]
test rdx, rdx
je 0x14004dc3d
cmp dword [rdx + 0xc8], 1
jne 0x14004dc3d
call fcn.140041df0
mov rbx, qword [rsi + 0x10]
cmp dword [rbx + 0x38], 0
jge 0x14004dcb6
mov rax, qword [rbx + 0x1aa8]
cmp dword [rax + 0x38], 0
jge 0x14004dcb6
mov r9d, r12d
lea r8, str.AutoSelectChannelByJackConf
lea rdx, str.General
lea rcx, [0x14046a640]
call fcn.140169d48
test eax, eax
je 0x14004dcb6
mov rax, qword [rbx + 0x1aa8]
test dword [rax + 0x194], 0x100
je 0x14004dcb6
lea rcx, [rbx + 0x568]
call fcn.14009ed20
mov rcx, qword [rbp + 0xffe0]
xor rcx, rsp
call fcn.1402ecc20
lea r11, [rsp + 0x10100]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
movaps xmm6, xmmword [r11 - 0x10]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret
call fcn.1402ed414
int3
mov ecx, 0x80004005
call fcn.140012800
int3
call fcn.140161be4
nop
mov ecx, 0x80004005
call fcn.140012800
nop
call fcn.140161be4
int3
mov ecx, 0x80004005
call fcn.140012800
int3