Function at 0x14000f050
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 [0x1402aa768]
xor rax, rsp
mov qword [rbp + 0x2c0], rax
mov rsi, rcx
call fcn.14002e420
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.140028df4
mov rcx, rax
test rax, rax
jne 0x14000f0e3
mov ecx, 0x80004005
call fcn.140009a10
int3
mov rax, qword [rax]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
call fcn.140028df4
mov rcx, rax
test rax, rax
jne 0x14000f10a
mov ecx, 0x80004005
call fcn.140009a10
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.140028df4
mov rcx, rax
test rax, rax
jne 0x14000f158
mov ecx, 0x80004005
call fcn.140009a10
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.140009880
mov rdx, qword [rsp + 0x38]
mov rcx, rsi
call fcn.1400264cc
mov r8d, 0x104
lea rdx, [rbp + 0x1b0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea r8, [rbp + 0x1b0]
lea rdx, [0x140264d30]
lea rcx, [rsp + 0x30]
call fcn.140009880
mov rbx, qword [rsp + 0x30]
mov edi, dword [rbx - 0x10]
mov edx, VarDateFromDisp
mov rcx, rbx
call fcn.1401dd7e0
or r14, 0xffffffffffffffff
test rax, rax
jne 0x14000f1d5
mov eax, r14d
jmp 0x14000f1d7
sub eax, ebx
lea r8d, [rax + 1]
mov r9d, edi
lea rdx, [rsp + 0x58]
lea rcx, [rsp + 0x30]
call fcn.1400197c0
nop
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140009480
nop
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000f21b
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.1401d35d0
mov rbx, qword [rsp + 0x30]
mov r8, rbx
lea rdx, [0x140265aec]
lea rcx, [rbp - 0x70]
call fcn.1400199b0
mov r8, rbx
mov edx, 0x104
lea rcx, [rbp - 0x70]
call fcn.14000d250
lea rdx, [rbp - 0x70]
call fcn.140018da0
mov r12d, eax
cmp eax, 1
jle 0x14000f2ad
lea rdx, [rbp - 0x70]
call fcn.140019040
mov edi, eax
mov edx, eax
call fcn.140019300
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.140009c10
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.140009880
lea r8, [rbp + 0xa0]
lea rdx, [0x140264d30]
lea rcx, [rsp + 0x48]
call fcn.140009880
lea r8, str.MicrosoftWindowsApps_
lea rdx, str.Temp_
lea rcx, [rsp + 0x48]
call fcn.14000be10
lea rcx, [rsi + 0x26f9]
mov r8, qword [rsp + 0x48]
lea rdx, [0x140264d30]
call fcn.140009880
lea rdx, str.Asmedia_4242_Auto_Firmware_Upgrade_Tool_v4.12
lea rcx, [rsp + 0x38]
call fcn.140009880
mov rdx, qword [rsp + 0x38]
mov rcx, rsi
call fcn.1400264cc
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.14000f900
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.1400187f0
cmp al, 1
je 0x14000f3ad
xor r8d, r8d
xor edx, edx
lea rcx, str.Extract_DLL_fail._Please_close_the_tool_and_try_it_again.
call fcn.14002cac8
jmp 0x14000f74a
lea rcx, str.XL_
call fcn.140009d30
cmp eax, 1
je 0x14000f3d4
xor r8d, r8d
xor edx, edx
lea rcx, str.Load_DLL_fail._Please_close_the_tool_and_try_it_again.
call fcn.14002cac8
jmp 0x14000f74a
call qword [0x1402ab3b9]
mov rcx, rsi
call fcn.140018030
cmp al, 1
je 0x14000f3fc
xor r8d, r8d
xor edx, edx
lea rcx, str.Extract_IO_Driver_fail._Please_close_the_tool_and_try_it_again.
call fcn.14002cac8
jmp 0x14000f74a
call qword [0x1402ab3b1]
movzx edi, al
cmp al, 2
jne 0x14000f40f
call qword [0x1402ab3b1]
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.140009c10
dec dil
cmp dil, 1
jbe 0x14000f45a
call qword [0x1402ab3b9]
xor r8d, r8d
xor edx, edx
lea rcx, str.Load_IO_Driver_fail._Please_close_the_tool_and_try_it_again.
call fcn.14002cac8
mov ecx, r14d
call qword [sym.imp.USER32.dll_PostQuitMessage]
jmp 0x14000f74a
call qword [0x1402ab4c9]
call fcn.14000b4a0
mov rcx, rsi
call fcn.140017550
cmp byte [rsi + 0x106c], 0xff
jne 0x14000f4b0
cmp byte [rsi + 0x1076], 0xff
jne 0x14000f4b0
cmp byte [rsi + 0x1080], 0xff
jne 0x14000f4b0
cmp byte [rsi + 0x108a], 0xff
jne 0x14000f4b0
cmp byte [rsi + 0x1094], 0xff
jne 0x14000f4b0
xor r8d, r8d
xor edx, edx
lea rcx, str.Read_hardware_IO_fail._Please_close_the_tool_and_try_it_again.
call fcn.14002cac8
jmp 0x14000f74a
xor edx, edx
mov rcx, rsi
call fcn.140017480
mov rcx, rsi
call fcn.14000fc10
mov rcx, rsi
call fcn.14000ff40
mov rcx, rsi
call fcn.140014a30
call fcn.140028df4
mov rcx, rax
test rax, rax
jne 0x14000f4ea
mov ecx, 0x80004005
call fcn.140009a10
int3
mov rax, qword [rax]
call qword [rax + 0x18]
mov rdi, rax
add rax, 0x18
mov qword [rbp - 0x80], rax
call fcn.140028df4
mov rcx, rax
test rax, rax
jne 0x14000f513
mov ecx, 0x80004005
call fcn.140009a10
int3
mov rax, qword [rax]
call qword [rax + 0x18]
mov r12, rax
add rax, 0x18
mov qword [rbp - 0x78], rax
call fcn.140028df4
mov rcx, rax
test rax, rax
jne 0x14000f53c
mov ecx, 0x80004005
call fcn.140009a10
int3
mov rax, qword [rax]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x40], rbx
mov rcx, qword [0x1402bc480]
add rcx, 0x26e9
call fcn.14000bd60
mov rdx, rax
mov rcx, qword [0x1402bc480]
add rcx, 0x26e9
call fcn.140009480
mov r13, qword [0x1402bc480]
mov rcx, qword [r13 + 0x26e9]
cmp dword [rcx - 0x10], 0
jl 0x14000f6d0
lea rdx, [0x14026532c]
call fcn.1401dc5dc
test rax, rax
je 0x14000f6d0
sub eax, dword [r13 + 0x26e9]
js 0x14000f6d0
movzx eax, byte [rsi + 0x1031]
test al, al
je 0x14000f695
nop dword [rax]
movsxd rax, r15d
imul rbx, rax, 0x40e
lea rdx, [rsi + 0x12aa]
add rdx, rbx
lea r8, [0x140265c00]
lea rcx, [rsp + 0x70]
call fcn.14000a460
nop
lea r8, [rsi + 0x12b2]
add r8, rbx
mov rdx, rax
lea rcx, [rsp + 0x68]
call fcn.1400195d0
nop
lea r8, [0x140265bfc]
mov rdx, rax
lea rcx, [rsp + 0x60]
call fcn.14000a460
nop
mov rdx, qword [rax]
lea rcx, [rsp + 0x40]
call fcn.14000d220
nop
mov rdx, qword [rsp + 0x60]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000f641
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 0x14000f661
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 0x14000f680
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 0x14000f5c0
jmp 0x14000f6b6
lea rdx, str.can_not_found_device.
mov rax, r14
nop
inc rax
cmp byte [rdx + rax], 0
jne 0x14000f6a0
mov r8d, eax
lea rcx, [rsp + 0x40]
call fcn.140009300
mov rbx, qword [rsp + 0x40]
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.14002cac8
mov rcx, rsi
call fcn.1400178f0
mov byte [rsi + 0x169], 1
call fcn.140019380
mov edx, 5
mov rcx, rsi
call fcn.1400255cc
mov rcx, rax
xor edx, edx
call fcn.140026550
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x14000f70f
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 0x14000f72c
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 0x14000f745
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 0x14000f765
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 0x14000f785
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 0x14000f7a4
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.1401d0680
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