Function at 0x14000e3f0
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 [0x1402c9768]
xor rax, rsp
mov qword [rbp + 0x2c0], rax
mov rsi, rcx
call fcn.140035a7c
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.14002fe48
mov rcx, rax
test rax, rax
jne 0x14000e483
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.14002fe48
mov rcx, rax
test rax, rax
jne 0x14000e4aa
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 word [rsi + 0x26e7], r15w
mov byte [rsi + 0x169], r15b
call fcn.14002fe48
mov rcx, rax
test rax, rax
jne 0x14000e4f8
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.12
lea rcx, [rsp + 0x38]
call fcn.140009250
mov rdx, qword [rsp + 0x38]
mov rcx, rsi
call fcn.14002d520
mov r8d, 0x104
lea rdx, [rbp + 0x1b0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea r8, [rbp + 0x1b0]
lea rdx, [0x1402804f0]
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.1401e7e84
or r14, 0xffffffffffffffff
test rax, rax
jne 0x14000e575
mov eax, r14d
jmp 0x14000e577
sub eax, ebx
lea r8d, [rax + 1]
mov r9d, edi
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x30]
call fcn.140018da0
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 0x14000e5bb
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.1401dd1a0
mov rbx, qword [rsp + 0x30]
mov r8, rbx
lea rdx, [0x140280f0c]
lea rcx, [rbp - 0x70]
call fcn.140018f90
mov r8, rbx
mov edx, 0x104
lea rcx, [rbp - 0x70]
call fcn.14000c5f0
lea rdx, [rbp - 0x70]
call fcn.140018380
mov r12d, eax
cmp eax, 1
jle 0x14000e64d
lea rdx, [rbp - 0x70]
call fcn.140018620
mov edi, eax
mov edx, eax
call fcn.1400188e0
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 + 0x26f1]
lea r8, [rbp + 0xa0]
lea rdx, str._ssupd_
call fcn.140009250
lea r8, [rbp + 0xa0]
lea rdx, [0x1402804f0]
lea rcx, [rsp + 0x48]
call fcn.140009250
lea r8, str.MicrosoftWindowsApps_
lea rdx, str.Temp_
lea rcx, [rsp + 0x48]
call fcn.14000c190
lea rcx, [rsi + 0x26f9]
mov r8, qword [rsp + 0x48]
lea rdx, [0x1402804f0]
call fcn.140009250
lea rdx, str.Asmedia_4242_Auto_Firmware_Upgrade_Tool_v4.12
lea rcx, [rsp + 0x38]
call fcn.140009250
mov rdx, qword [rsp + 0x38]
mov rcx, rsi
call fcn.14002d520
xor r9d, r9d
mov edx, 0xf1
lea r8d, [r9 + 1]
mov rcx, qword [rsi + 0x263f]
call qword [sym.imp.USER32.dll_SendMessageA]
mov word [rsi + 0x26e7], 0x101
mov byte [rsi + 0x25fe], 1
mov edx, 1
mov rcx, rsi
call fcn.14000ecd0
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.140017dd0
cmp al, 1
je 0x14000e74d
xor r8d, r8d
xor edx, edx
lea rcx, str.Extract_DLL_fail._Please_close_the_tool_and_try_it_again.
call fcn.140033ae0
jmp 0x14000eb1a
lea rcx, vtable.CLoadDLL.0
call fcn.140009700
xor edx, edx
cmp eax, 1
je 0x14000e774
xor r8d, r8d
lea rcx, str.Load_DLL_fail._Please_close_the_tool_and_try_it_again.
call fcn.140033ae0
jmp 0x14000eb1a
call fcn.14001a5b0
test eax, eax
jne 0x14000e78e
xor r8d, r8d
xor edx, edx
lea rcx, str.Disable_PowerSaving_fail.
call fcn.140033ae0
call fcn.14001bf20
call qword [0x1402ca459]
mov rcx, rsi
call fcn.140017460
cmp al, 1
je 0x14000e7bb
xor r8d, r8d
xor edx, edx
lea rcx, str.Extract_IO_Driver_fail._Please_close_the_tool_and_try_it_again.
call fcn.140033ae0
jmp 0x14000eb1a
call qword [0x1402ca451]
movzx edi, al
cmp al, 2
jne 0x14000e7d3
call fcn.14001c9a0
call qword [0x1402ca451]
movsx r9d, dil
mov r8d, 0x104
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 0x14000e81e
call qword [0x1402ca459]
xor r8d, r8d
xor edx, edx
lea rcx, str.Load_IO_Driver_fail._Please_close_the_tool_and_try_it_again.
call fcn.140033ae0
mov ecx, r14d
call qword [sym.imp.USER32.dll_PostQuitMessage]
jmp 0x14000eb1a
call fcn.14001c490
call qword [0x1402ca569]
call fcn.14001beb0
call fcn.14000ae70
mov rcx, rsi
call fcn.140016920
cmp byte [rsi + 0x106c], 0xff
jne 0x14000e87e
cmp byte [rsi + 0x1076], 0xff
jne 0x14000e87e
cmp byte [rsi + 0x1080], 0xff
jne 0x14000e87e
cmp byte [rsi + 0x108a], 0xff
jne 0x14000e87e
cmp byte [rsi + 0x1094], 0xff
jne 0x14000e87e
xor r8d, r8d
xor edx, edx
lea rcx, str.Read_hardware_IO_fail._Please_close_the_tool_and_try_it_again.
call fcn.140033ae0
jmp 0x14000eb1a
xor edx, edx
mov rcx, rsi
call fcn.140016850
mov rcx, rsi
call fcn.14000efe0
mov rcx, rsi
call fcn.14000f310
mov rcx, rsi
call fcn.140013e00
call fcn.14002fe48
mov rcx, rax
test rax, rax
jne 0x14000e8b8
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.14002fe48
mov rcx, rax
test rax, rax
jne 0x14000e8e1
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.14002fe48
mov rcx, rax
test rax, rax
jne 0x14000e90a
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 [0x1402dc120]
add rcx, 0x26e9
call fcn.14000c0e0
mov rdx, rax
mov rcx, qword [0x1402dc120]
add rcx, 0x26e9
call fcn.140008e50
mov r13, qword [0x1402dc120]
mov rcx, qword [r13 + 0x26e9]
cmp dword [rcx - 0x10], 0
jl 0x14000eaa0
lea rdx, [0x140280630]
call fcn.1401e6c1c
test rax, rax
je 0x14000eaa0
sub eax, dword [r13 + 0x26e9]
js 0x14000eaa0
movzx eax, byte [rsi + 0x1031]
test al, al
je 0x14000ea65
nop dword [rax + rax]
movsxd rax, r15d
imul rbx, rax, 0x40e
lea rdx, [rsi + 0x12aa]
add rdx, rbx
lea r8, [0x140281020]
lea rcx, [rsp + 0x70]
call fcn.140009e30
nop
lea r8, [rsi + 0x12b2]
add r8, rbx
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.140018bb0
nop
lea r8, [0x14028101c]
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.140009e30
nop
mov rdx, qword [rax]
lea rcx, [rsp + 0x40]
call fcn.14000c5c0
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000ea11
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 0x14000ea31
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 0x14000ea50
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 0x14000e990
jmp 0x14000ea86
lea rdx, str.can_not_found_device.
mov rax, r14
nop
inc rax
cmp byte [rdx + rax], 0
jne 0x14000ea70
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.140033ae0
mov rcx, rsi
call fcn.140016ce0
mov byte [rsi + 0x169], 1
call fcn.140018960
mov edx, 5
mov rcx, rsi
call fcn.14002c620
mov rcx, rax
xor edx, edx
call fcn.14002d5a4
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000eadf
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 0x14000eafc
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 0x14000eb15
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 0x14000eb35
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 0x14000eb55
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 0x14000eb74
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.1401d7480
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