Function at 0x14000f360
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 [0x1402cb768]
xor rax, rsp
mov qword [rbp + 0x2c0], rax
mov rsi, rcx
call fcn.140036888
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.1400311c4
mov rcx, rax
test rax, rax
jne 0x14000f3f3
mov ecx, 0x80004005
call fcn.140009c20
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
call fcn.1400311c4
mov rcx, rax
test rax, rax
jne 0x14000f41a
mov ecx, 0x80004005
call fcn.140009c20
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.1400311c4
mov rcx, rax
test rax, rax
jne 0x14000f468
mov ecx, 0x80004005
call fcn.140009c20
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.140009a90
mov rdx, qword [rsp + 0x38]
mov rcx, rsi
call fcn.14002e84c
mov r8d, 0x104
lea rdx, [rbp + 0x1b0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea r8, [rbp + 0x1b0]
lea rdx, [0x140281500]
lea rcx, [rsp + 0x30]
call fcn.140009a90
mov rbx, qword [rsp + 0x30]
mov edi, dword [rbx - 0x10]
mov edx, VarDateFromDisp
mov rcx, rbx
call fcn.1401e91c4
or r14, 0xffffffffffffffff
test rax, rax
jne 0x14000f4e5
mov eax, r14d
jmp 0x14000f4e7
sub eax, ebx
lea r8d, [rax + 1]
mov r9d, edi
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x30]
call fcn.140019cd0
nop
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140009690
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000f52b
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.1401de4e0
mov rbx, qword [rsp + 0x30]
mov r8, rbx
lea rdx, [0x1402822fc]
lea rcx, [rbp - 0x70]
call fcn.140019ec0
mov r8, rbx
mov edx, 0x104
lea rcx, [rbp - 0x70]
call fcn.14000d560
lea rdx, [rbp - 0x70]
call fcn.1400192b0
mov r12d, eax
cmp eax, 1
jle 0x14000f5bd
lea rdx, [rbp - 0x70]
call fcn.140019550
mov edi, eax
mov edx, eax
call fcn.140019810
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.140009e20
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.140009a90
lea r8, [rbp + 0xa0]
lea rdx, [0x140281500]
lea rcx, [rsp + 0x48]
call fcn.140009a90
lea r8, str.MicrosoftWindowsApps_
lea rdx, str.Temp_
lea rcx, [rsp + 0x48]
call fcn.14000c0b0
lea rcx, [rsi + 0x26f9]
mov r8, qword [rsp + 0x48]
lea rdx, [0x140281500]
call fcn.140009a90
lea rdx, str.Asmedia_4242_Auto_Firmware_Upgrade_Tool_v4.12
lea rcx, [rsp + 0x38]
call fcn.140009a90
mov rdx, qword [rsp + 0x38]
mov rcx, rsi
call fcn.14002e84c
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.14000fc40
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.140018d00
cmp al, 1
je 0x14000f6bd
xor r8d, r8d
xor edx, edx
lea rcx, str.Extract_DLL_fail._Please_close_the_tool_and_try_it_again.
call fcn.140034e9c
jmp 0x14000fa8a
lea rcx, vtable.CLoadDLL.0
call fcn.140009f40
xor edx, edx
cmp eax, 1
je 0x14000f6e4
xor r8d, r8d
lea rcx, str.Load_DLL_fail._Please_close_the_tool_and_try_it_again.
call fcn.140034e9c
jmp 0x14000fa8a
call fcn.14001b4e0
test eax, eax
jne 0x14000f6fe
xor r8d, r8d
xor edx, edx
lea rcx, str.Disable_PowerSaving_fail.
call fcn.140034e9c
call fcn.14001ce50
call qword [0x1402cc459]
mov rcx, rsi
call fcn.1400183d0
cmp al, 1
je 0x14000f72b
xor r8d, r8d
xor edx, edx
lea rcx, str.Extract_IO_Driver_fail._Please_close_the_tool_and_try_it_again.
call fcn.140034e9c
jmp 0x14000fa8a
call qword [0x1402cc451]
movzx edi, al
cmp al, 2
jne 0x14000f743
call fcn.14001dcb0
call qword [0x1402cc451]
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.140009e20
dec dil
cmp dil, 1
jbe 0x14000f78e
call qword [0x1402cc459]
xor r8d, r8d
xor edx, edx
lea rcx, str.Load_IO_Driver_fail._Please_close_the_tool_and_try_it_again.
call fcn.140034e9c
mov ecx, r14d
call qword [sym.imp.USER32.dll_PostQuitMessage]
jmp 0x14000fa8a
call fcn.14001d7a0
call qword [0x1402cc569]
call fcn.14001cde0
call fcn.14000b6b0
mov rcx, rsi
call fcn.140017890
cmp byte [rsi + 0x106c], 0xff
jne 0x14000f7ee
cmp byte [rsi + 0x1076], 0xff
jne 0x14000f7ee
cmp byte [rsi + 0x1080], 0xff
jne 0x14000f7ee
cmp byte [rsi + 0x108a], 0xff
jne 0x14000f7ee
cmp byte [rsi + 0x1094], 0xff
jne 0x14000f7ee
xor r8d, r8d
xor edx, edx
lea rcx, str.Read_hardware_IO_fail._Please_close_the_tool_and_try_it_again.
call fcn.140034e9c
jmp 0x14000fa8a
xor edx, edx
mov rcx, rsi
call fcn.1400177c0
mov rcx, rsi
call fcn.14000ff50
mov rcx, rsi
call fcn.140010280
mov rcx, rsi
call fcn.140014d70
call fcn.1400311c4
mov rcx, rax
test rax, rax
jne 0x14000f828
mov ecx, 0x80004005
call fcn.140009c20
int3
mov rax, qword [rax]
call qword [rax + 0x18]
mov rdi, rax
add rax, 0x18
mov qword [rbp - 0x80], rax
call fcn.1400311c4
mov rcx, rax
test rax, rax
jne 0x14000f851
mov ecx, 0x80004005
call fcn.140009c20
int3
mov rax, qword [rax]
call qword [rax + 0x18]
mov r12, rax
add rax, 0x18
mov qword [rbp - 0x78], rax
call fcn.1400311c4
mov rcx, rax
test rax, rax
jne 0x14000f87a
mov ecx, 0x80004005
call fcn.140009c20
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x40], rbx
mov rcx, qword [0x1402de1f0]
add rcx, 0x26e9
call fcn.14000c000
mov rdx, rax
mov rcx, qword [0x1402de1f0]
add rcx, 0x26e9
call fcn.140009690
mov r13, qword [0x1402de1f0]
mov rcx, qword [r13 + 0x26e9]
cmp dword [rcx - 0x10], 0
jl 0x14000fa10
lea rdx, [0x140281b3c]
call fcn.1401e7f5c
test rax, rax
je 0x14000fa10
sub eax, dword [r13 + 0x26e9]
js 0x14000fa10
movzx eax, byte [rsi + 0x1031]
test al, al
je 0x14000f9d5
nop dword [rax + rax]
movsxd rax, r15d
imul rbx, rax, 0x40e
lea rdx, [rsi + 0x12aa]
add rdx, rbx
lea r8, [0x140282410]
lea rcx, [rsp + 0x70]
call fcn.14000a670
nop
lea r8, [rsi + 0x12b2]
add r8, rbx
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.140019ae0
nop
lea r8, [0x14028240c]
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.14000a670
nop
mov rdx, qword [rax]
lea rcx, [rsp + 0x40]
call fcn.14000d530
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000f981
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 0x14000f9a1
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 0x14000f9c0
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 0x14000f900
jmp 0x14000f9f6
lea rdx, str.can_not_found_device.
mov rax, r14
nop
inc rax
cmp byte [rdx + rax], 0
jne 0x14000f9e0
mov r8d, eax
lea rcx, [rsp + 0x40]
call fcn.140009510
mov rbx, qword [rsp + 0x40]
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.140034e9c
mov rcx, rsi
call fcn.140017c50
mov byte [rsi + 0x169], 1
call fcn.140019890
mov edx, 5
mov rcx, rsi
call fcn.14002d954
mov rcx, rax
xor edx, edx
call fcn.14002e8d0
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000fa4f
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 0x14000fa6c
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 0x14000fa85
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 0x14000faa5
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 0x14000fac5
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 0x14000fae4
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.1401d87c0
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