Function at 0x14000dec0
Capabilities:
Get common file path

Disassembly:
mov rax, rsp
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x2f8]
sub rsp, 0x3d0
mov qword [rsp + 0x78], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
mov rax, qword [0x1402c8768]
xor rax, rsp
mov qword [rbp + 0x2c0], rax
mov rsi, rcx
call fcn.140034d00
mov r9, qword [rsi + 0x161]
mov edx, 0x80
lea r8d, [rdx - 0x7f]
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_SendMessageA]
mov r9, qword [rsi + 0x161]
xor r8d, r8d
mov edx, 0x80
mov rcx, qword [rsi + 0x40]
call qword [sym.imp.USER32.dll_SendMessageA]
call fcn.14002ef9c
mov rcx, rax
test rax, rax
jne 0x14000df53
mov ecx, 0x80004005
call fcn.1400093e0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
call fcn.14002ef9c
mov rcx, rax
test rax, rax
jne 0x14000df7a
mov ecx, 0x80004005
call fcn.1400093e0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x48], rax
xor r15d, r15d
mov dword [rsi + 0xf2e], r15d
mov byte [rsi + 0x1031], r15b
mov byte [rsi + 0x25fe], r15b
mov byte [rsi + 0x26e7], r15b
mov byte [rsi + 0x169], r15b
call fcn.14002ef9c
mov rcx, rax
test rax, rax
jne 0x14000dfc7
mov ecx, 0x80004005
call fcn.1400093e0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
lea rdx, str.Asmedia_4242_Firmware_Upgrade_Tool_v4.6
lea rcx, [rsp + 0x38]
call fcn.140009250
mov rdx, qword [rsp + 0x38]
mov rcx, rsi
call fcn.14002c73c
mov r8d, 0x104
lea rdx, [rbp + 0x1b0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea r8, [rbp + 0x1b0]
lea rdx, [0x14027f4f0]
lea rcx, [rsp + 0x30]
call fcn.140009250
mov rbx, qword [rsp + 0x30]
mov edi, dword [rbx - 0x10]
mov edx, VarDateFromDisp
mov rcx, rbx
call fcn.1401e6e50
or r14, 0xffffffffffffffff
test rax, rax
jne 0x14000e044
mov eax, r14d
jmp 0x14000e046
sub eax, ebx
lea r8d, [rax + 1]
mov r9d, edi
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x30]
call fcn.140018410
nop
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140008e50
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000e08a
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
xor edx, edx
mov r8d, 0x104
lea rcx, [rbp - 0x70]
call fcn.1401dc410
mov rbx, qword [rsp + 0x30]
mov r8, rbx
lea rdx, [0x14027fe58]
lea rcx, [rbp - 0x70]
call fcn.140018600
mov r8, rbx
mov edx, 0x104
lea rcx, [rbp - 0x70]
call fcn.14000bf60
lea rdx, [rbp - 0x70]
call fcn.1400179f0
mov r12d, eax
cmp eax, 1
jle 0x14000e11c
lea rdx, [rbp - 0x70]
call fcn.140017c90
mov edi, eax
mov edx, eax
call fcn.140017f50
mov ecx, 0x3e8
call qword [sym.imp.KERNEL32.dll_Sleep]
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x20], edi
mov r9d, r12d
mov r8d, LoadRegTypeLib
lea rdx, str.CsupdDlg::OnInitDialog
lea rcx, str._r_n_s:_d:_OnInitDialog:_iProcessCount:__d___dwProcessID_:__d_dwErrorCode__d
call fcn.1400095e0
lea rdx, [rbp + 0xa0]
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetTempPathA]
lea rcx, [rsi + 0x26f0]
lea r8, [rbp + 0xa0]
lea rdx, str._ssupd_
call fcn.140009250
lea r8, [rbp + 0xa0]
lea rdx, [0x14027f4f0]
lea rcx, [rsp + 0x48]
call fcn.140009250
lea r8, str.MicrosoftWindowsApps_
lea rdx, str.Temp_
lea rcx, [rsp + 0x48]
call fcn.14000bc60
lea rcx, [rsi + 0x26f8]
mov r8, qword [rsp + 0x48]
lea rdx, [0x14027f4f0]
call fcn.140009250
lea rdx, str.Asmedia_4242_Auto_Firmware_Upgrade_Tool_v4.6
lea rcx, [rsp + 0x38]
call fcn.140009250
mov rdx, qword [rsp + 0x38]
mov rcx, rsi
call fcn.14002c73c
xor r9d, r9d
mov edx, 0xf1
lea r8d, [r9 + 1]
mov rcx, qword [rsi + 0x263f]
call qword [sym.imp.USER32.dll_SendMessageA]
mov byte [rsi + 0x25fe], 1
mov byte [rsi + 0x26e7], 1
mov edx, 1
mov rcx, rsi
call fcn.14000e7a0
lea rdx, [rsi + 0xf32]
xor eax, eax
mov byte [rdx], al
mov ecx, 0xff
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov rcx, rsi
call fcn.1400174d0
cmp al, 1
je 0x14000e21a
xor r8d, r8d
xor edx, edx
lea rcx, str.Extract_DLL_fail._Please_close_the_tool_and_try_it_again.
call fcn.140032c64
jmp 0x14000e5ea
lea rcx, vtable.CLoadDLL.0
call fcn.140009700
xor edx, edx
cmp eax, 1
je 0x14000e241
xor r8d, r8d
lea rcx, str.Load_DLL_fail._Please_close_the_tool_and_try_it_again.
call fcn.140032c64
jmp 0x14000e5ea
call fcn.140019c20
test eax, eax
jne 0x14000e25b
xor r8d, r8d
xor edx, edx
lea rcx, str.Disable_PowerSaving_fail.
call fcn.140032c64
call fcn.14001b590
call qword [0x1402c9459]
mov rcx, rsi
call fcn.140016b60
cmp al, 1
je 0x14000e288
xor r8d, r8d
xor edx, edx
lea rcx, str.Extract_IO_Driver_fail._Please_close_the_tool_and_try_it_again.
call fcn.140032c64
jmp 0x14000e5ea
call qword [0x1402c9451]
movzx edi, al
cmp al, 2
jne 0x14000e2a0
call fcn.14001bfe0
call qword [0x1402c9451]
movsx r9d, dil
mov r8d, 0x102
lea rdx, str.CsupdDlg::OnInitDialog
lea rcx, str._r_n_s:_d:_g_LoaDll.LoadAsmIODriver_return__bRes_d
call fcn.1400095e0
dec dil
cmp dil, 1
jbe 0x14000e2eb
call qword [0x1402c9459]
xor r8d, r8d
xor edx, edx
lea rcx, str.Load_IO_Driver_fail._Please_close_the_tool_and_try_it_again.
call fcn.140032c64
mov ecx, r14d
call qword [sym.imp.USER32.dll_PostQuitMessage]
jmp 0x14000e5ea
call fcn.14001bad0
call qword [0x1402c9569]
call fcn.14001b520
call fcn.14000ae70
mov rcx, rsi
call fcn.1400160c0
cmp byte [rsi + 0x106c], 0xff
jne 0x14000e34b
cmp byte [rsi + 0x1076], 0xff
jne 0x14000e34b
cmp byte [rsi + 0x1080], 0xff
jne 0x14000e34b
cmp byte [rsi + 0x108a], 0xff
jne 0x14000e34b
cmp byte [rsi + 0x1094], 0xff
jne 0x14000e34b
xor r8d, r8d
xor edx, edx
lea rcx, str.Read_hardware_IO_fail._Please_close_the_tool_and_try_it_again.
call fcn.140032c64
jmp 0x14000e5ea
xor edx, edx
mov rcx, rsi
call fcn.140015ff0
mov rcx, rsi
call fcn.14000eab0
mov rcx, rsi
call fcn.14000ede0
mov rcx, rsi
call fcn.1400136e0
call fcn.14002ef9c
mov rcx, rax
test rax, rax
jne 0x14000e385
mov ecx, 0x80004005
call fcn.1400093e0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
mov rdi, rax
add rax, 0x18
mov qword [rbp - 0x80], rax
call fcn.14002ef9c
mov rcx, rax
test rax, rax
jne 0x14000e3ae
mov ecx, 0x80004005
call fcn.1400093e0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
mov r12, rax
add rax, 0x18
mov qword [rbp - 0x78], rax
call fcn.14002ef9c
mov rcx, rax
test rax, rax
jne 0x14000e3d7
mov ecx, 0x80004005
call fcn.1400093e0
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x40], rbx
mov rcx, qword [0x1402db120]
add rcx, 0x26e8
call fcn.14000bbb0
mov rdx, rax
mov rcx, qword [0x1402db120]
add rcx, 0x26e8
call fcn.140008e50
mov r13, qword [0x1402db120]
mov rcx, qword [r13 + 0x26e8]
cmp dword [rcx - 0x10], 0
jl 0x14000e570
lea rdx, [0x14027f61c]
call fcn.1401e5f34
test rax, rax
je 0x14000e570
sub eax, dword [r13 + 0x26e8]
js 0x14000e570
movzx eax, byte [rsi + 0x1031]
test al, al
je 0x14000e535
nop dword [rax + rax]
movsxd rax, r15d
imul rbx, rax, 0x40e
lea rdx, [rsi + 0x12aa]
add rdx, rbx
lea r8, [0x14027ff70]
lea rcx, [rsp + 0x70]
call fcn.140009e30
nop
lea r8, [rsi + 0x12b2]
add r8, rbx
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.140018220
nop
lea r8, [0x14027ff6c]
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.140009e30
nop
mov rdx, qword [rax]
lea rcx, [rsp + 0x40]
call fcn.14000cf70
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000e4e1
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x68]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000e501
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x70]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000e520
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
inc r15d
movzx eax, byte [rsi + 0x1031]
cmp r15d, eax
jl 0x14000e460
jmp 0x14000e556
lea rdx, str.can_not_found_device.
mov rax, r14
nop
inc rax
cmp byte [rdx + rax], 0
jne 0x14000e540
mov r8d, eax
lea rcx, [rsp + 0x40]
call fcn.140008cd0
mov rbx, qword [rsp + 0x40]
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.140032c64
mov rcx, rsi
call fcn.140016460
mov byte [rsi + 0x169], 1
call fcn.140017fd0
mov edx, 5
mov rcx, rsi
call fcn.14002b83c
mov rcx, rax
xor edx, edx
call fcn.14002c7c0
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000e5af
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov eax, r14d
lock xadd dword [r12 + 0x10], eax
sub eax, 1
jg 0x14000e5cc
mov rcx, qword [r12]
mov rax, qword [rcx]
mov rdx, r12
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov eax, r14d
lock xadd dword [rdi + 0x10], eax
sub eax, 1
jg 0x14000e5e5
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x30]
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000e605
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x48]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000e625
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], r14d
sub r14d, 1
jg 0x14000e644
mov rcx, qword [rdx]
mov r8, qword [rcx]
call qword [rreloc.OLEAUT32.dll_VariantClear + 8]
mov eax, 1
mov rcx, qword [rbp + 0x2c0]
xor rcx, rsp
call fcn.1401d66f0
lea r11, [rsp + 0x3d0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret