Function at 0x14001ad10
Capabilities:
Get common file path
Resume thread
Suspend thread

Disassembly:
mov qword [rsp + 0x10], rdx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x1d0
mov qword [rsp + 0xb0], 0xfffffffffffffffe
mov qword [rsp + 0x210], rbx
mov r13, rdx
mov r12, rcx
or r14, 0xffffffffffffffff
mov ebp, r14d
xor edx, edx
call fcn.14001be00
call fcn.1400280cc
mov rcx, rax
xor r15d, r15d
mov eax, r15d
test rcx, rcx
setne al
test eax, eax
jne 0x14001ad72
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x228], rax
cmp dword [r12 + 0x170], 0
je 0x14001ae5d
mov rdx, qword [r13]
lea rdi, [rdx - 0x18]
lea rbx, [rax - 0x18]
cmp rdi, rbx
je 0x14001afce
cmp dword [rbx + 0x10], 0
jl 0x14001ae47
mov rcx, qword [rdi]
cmp rcx, qword [rbx]
jne 0x14001ae47
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi + 0x10], 0
jl 0x14001addc
cmp rax, qword [rdi]
jne 0x14001addc
mov rsi, rdi
lock add dword [rdi + 0x10], 1
jmp 0x14001ae1b
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi + 8]
call qword [rax]
mov rsi, rax
test rax, rax
jne 0x14001adf8
call fcn.140003050
int3
mov eax, dword [rdi + 8]
mov dword [rsi + 8], eax
mov eax, dword [rdi + 8]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
lea r8, [rdi + 0x18]
add rdx, rdx
lea rcx, [rsi + 0x18]
call fcn.1400525a0
mov eax, r14d
lock xadd dword [rbx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001ae36
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rsi + 0x18]
mov qword [rsp + 0x228], rax
jmp 0x14001afce
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x228]
call fcn.1400036f0
jmp 0x14001afce
mov rdi, qword [r12 + 0x190]
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi - 8], 0
jl 0x14001ae89
cmp rax, qword [rdi - 0x18]
jne 0x14001ae89
lea rbx, [rdi - 0x18]
lock add dword [rdi - 8], 1
jmp 0x14001aec7
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi - 0x10]
call qword [rax]
mov rbx, rax
test rax, rax
jne 0x14001aea5
call fcn.140003050
int3
mov eax, dword [rdi - 0x10]
mov dword [rbx + 8], eax
mov eax, dword [rdi - 0x10]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
mov r8, rdi
add rdx, rdx
lea rcx, [rbx + 0x18]
call fcn.1400525a0
lea rax, [rbx + 0x18]
mov qword [rsp + 0x60], rax
lea r8, [rsp + 0x60]
lea rdx, [rsp + 0x50]
mov rcx, r12
call fcn.14001b830
nop
mov rdx, qword [rax]
lea rdi, [rdx - 0x18]
mov rbx, qword [rsp + 0x228]
add rbx, 0xffffffffffffffe8
cmp rdi, rbx
je 0x14001afad
cmp dword [rbx + 0x10], 0
jl 0x14001af9b
mov rcx, qword [rdi]
cmp rcx, qword [rbx]
jne 0x14001af9b
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi + 0x10], 0
jl 0x14001af33
cmp rax, qword [rdi]
jne 0x14001af33
mov rsi, rdi
lock add dword [rdi + 0x10], 1
jmp 0x14001af72
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi + 8]
call qword [rax]
mov rsi, rax
test rax, rax
jne 0x14001af4f
call fcn.140003050
int3
mov eax, dword [rdi + 8]
mov dword [rsi + 8], eax
mov eax, dword [rdi + 8]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
lea r8, [rdi + 0x18]
add rdx, rdx
lea rcx, [rsi + 0x18]
call fcn.1400525a0
mov eax, r14d
lock xadd dword [rbx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001af8d
mov rcx, qword [rbx]
mov rax, qword [rcx]
mov rdx, rbx
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rsi + 0x18]
mov qword [rsp + 0x228], rax
jmp 0x14001afad
mov r8d, dword [rdx - 0x10]
lea rcx, [rsp + 0x228]
call fcn.1400036f0
nop
mov rdx, qword [rsp + 0x50]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001afce
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rcx, [rsp + 0xf0]
call fcn.14002c380
lea rax, [0x14007e618]
mov qword [rsp + 0xf0], rax
mov qword [rsp + 0x1b0], r15
mov dword [rsp + 0x198], r15d
mov qword [rsp + 0x1a0], r15
mov rsi, qword [rsp + 0x228]
add rsi, 0xffffffffffffffe8
mov qword [rsp + 0x48], rsi
mov rcx, qword [rsi]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rsi + 0x10], 0
jl 0x14001b034
cmp rax, qword [rsi]
jne 0x14001b034
mov rdi, rsi
lock add dword [rsi + 0x10], 1
jmp 0x14001b073
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rsi + 8]
call qword [rax]
mov rdi, rax
test rax, rax
jne 0x14001b050
call fcn.140003050
int3
mov eax, dword [rsi + 8]
mov dword [rdi + 8], eax
mov eax, dword [rsi + 8]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
lea r8, [rsi + 0x18]
add rdx, rdx
lea rcx, [rdi + 0x18]
call fcn.1400525a0
add rdi, 0x18
mov qword [rsp + 0x58], rdi
call fcn.1400280cc
mov rcx, rax
mov eax, r15d
test rcx, rcx
setne al
test eax, eax
jne 0x14001b09c
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
mov rbx, rax
cmp qword [rsp + 0x1b0], 0
je 0x14001b0b7
mov edi, 1
jmp 0x14001b0d2
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov qword [rsp + 0x1b0], rax
mov edi, r15d
test rax, rax
setne dil
mov rdx, rbx
mov eax, r14d
lock xadd dword [rbx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001b0ed
mov rcx, qword [rbx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdx, qword [rsp + 0x58]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001b10e
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
test edi, edi
je 0x14001b65f
call fcn.1400280cc
mov rcx, rax
mov eax, r15d
test rcx, rcx
setne al
test eax, eax
jne 0x14001b136
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x38], rax
lea rdx, str.Download_Navigator
test rdx, 0xffffffffffff0000
jne 0x14001b176
movzx edi, dx
mov ecx, edi
call fcn.1400280b8
test rax, rax
je 0x14001b193
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x38]
call fcn.140003060
jmp 0x14001b193
xor eax, eax
mov rcx, r14
mov rdi, rdx
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsp + 0x38]
call fcn.1400036f0
nop
call fcn.1400280cc
mov rcx, rax
mov eax, r15d
test rcx, rcx
setne al
test eax, eax
jne 0x14001b1b3
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
add rax, 0x18
mov qword [rsp + 0x30], rax
call fcn.1400280cc
mov rcx, rax
mov eax, r15d
test rcx, rcx
setne al
test eax, eax
jne 0x14001b1e2
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x40], rbx
mov edx, 1
sub edx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, 0x104
or eax, edx
jge 0x14001b219
mov edx, 0x104
lea rcx, [rsp + 0x40]
call fcn.140003380
mov rbx, qword [rsp + 0x40]
mov rdx, rbx
mov ecx, 0x104
call qword [sym.imp.KERNEL32.dll_GetTempPathW]
test rbx, rbx
jne 0x14001b231
mov ecx, r15d
jmp 0x14001b24b
xor eax, eax
mov rcx, r14
mov rdi, rbx
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
test ecx, ecx
js 0x14001b647
cmp ecx, dword [rbx - 0xc]
jg 0x14001b647
mov dword [rbx - 0x10], ecx
movsxd rax, ecx
mov word [rbx + rax*2], 0
lea rdx, [rsp + 0x40]
lea rcx, [rsp + 0x30]
call fcn.1400073a0
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001b28c
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rbx, qword [rsp + 0x30]
mov esi, dword [rbx - 0x10]
lea eax, [rsi - 1]
test eax, eax
js 0x14001b63c
cmp eax, esi
jg 0x14001b63c
cdqe
cmp word [rbx + rax*2], 0x5c
je 0x14001b33c
xor eax, eax
mov rcx, r14
lea r13, [0x14007e0bc]
mov rdi, r13
repne scasw ax, word [rdi]
not rcx
lea r15, [rcx - 1]
mov rbp, r13
sub rbp, rbx
sar rbp, 1
lea edi, [rsi + rcx - 1]
mov edx, 1
sub edx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, edx
jge 0x14001b2fc
mov edx, edi
lea rcx, [rsp + 0x30]
call fcn.140003380
mov rbx, qword [rsp + 0x30]
cmp rbp, rsi
ja 0x14001b305
lea r13, [rbx + rbp*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rbx + rsi*2]
mov r9, rdx
mov r8, r13
call fcn.1400525a0
test edi, edi
js 0x14001b331
cmp edi, dword [rbx - 0xc]
jg 0x14001b331
mov dword [rbx - 0x10], edi
movsxd rax, edi
mov word [rbx + rax*2], 0
jmp 0x14001b33c
mov ecx, 0x80070057
call fcn.140003280
int3
xor eax, eax
mov rcx, r14
lea rbp, str.EPSONSoftwareUpdateDownloadNavigator
mov rdi, rbp
repne scasw ax, word [rdi]
not rcx
lea r15, [rcx - 1]
mov rsi, rbp
sub rsi, rbx
sar rsi, 1
mov r13d, dword [rbx - 0x10]
lea edi, [r13 + rcx - 1]
mov edx, 1
sub edx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, edi
or eax, edx
jge 0x14001b389
mov edx, edi
lea rcx, [rsp + 0x30]
call fcn.140003380
mov rbx, qword [rsp + 0x30]
cmp rsi, r13
ja 0x14001b392
lea rbp, [rbx + rsi*2]
movsxd rdx, r15d
add rdx, rdx
lea rcx, [rbx + r13*2]
mov r9, rdx
mov r8, rbp
call fcn.1400525a0
test edi, edi
js 0x14001b631
cmp edi, dword [rbx - 0xc]
jg 0x14001b631
mov dword [rbx - 0x10], edi
movsxd rax, edi
mov word [rbx + rax*2], 0
lea rcx, [r12 + 0x180]
call fcn.140008720
lea rcx, [r12 + 0x180]
call fcn.140008270
mov dword [rsp + 0xa0], 0x3d
mov rax, qword [r12 + 0x180]
mov qword [rsp + 0x80], rax
mov rax, qword [r12 + 0x250]
mov qword [rsp + 0x88], rax
mov rax, qword [rsp + 0x38]
mov qword [rsp + 0x70], rax
xor r15d, r15d
mov qword [rsp + 0x78], r15
lea rax, str.PRINKPRAIOPRLFPPRSW
mov qword [rsp + 0xa8], rax
lea rax, [0x140009440]
mov qword [rsp + 0x90], rax
mov rax, qword [r12 + 0x300]
test rax, rax
je 0x14001b454
mov rax, qword [rax + 0x40]
mov qword [rsp + 0x98], rax
jmp 0x14001b45c
mov qword [rsp + 0x98], r15
mov dword [rsp + 0x198], 7
lea rax, [rsp + 0x70]
mov qword [rsp + 0x1a0], rax
mov qword [rsp + 0x28], r15
mov dword [rsp + 0x20], 4
xor r9d, r9d
xor r8d, r8d
lea rdx, [rsp + 0xf0]
lea rcx, [0x1400093e0]
call fcn.14003a7f8
mov r13, rax
mov dword [rax + 0x50], r15d
mov rcx, qword [rax + 0x58]
call qword [sym.imp.KERNEL32.dll_ResumeThread]
mov dword [r12 + 0x2f8], r15d
cmp dword [r12 + 0x2f8], r15d
je 0x14001b4f3
mov rcx, qword [rsp + 0x1b0]
test rcx, rcx
je 0x14001b4df
lea rdx, str.DL_Cancel
call qword [sym.imp.KERNEL32.dll_GetProcAddress]
test rax, rax
je 0x14001b4df
call rax
mov dword [r12 + 0x2f8], r15d
mov dword [r12 + 0x2fc], 1
mov dword [rsp + 0x20], 0x4ff
mov r9d, 0xa
xor r8d, r8d
lea rdx, [r13 + 0x58]
lea ecx, [r9 - 9]
call qword [sym.imp.USER32.dll_MsgWaitForMultipleObjects]
mov edi, eax
mov rcx, qword [r13 + 0x58]
call qword [sym.imp.KERNEL32.dll_SuspendThread]
cmp edi, 0x102
jne 0x14001b532
mov rcx, qword [r13 + 0x58]
call qword [sym.imp.KERNEL32.dll_ResumeThread]
jmp 0x14001b4b4
mov rcx, qword [r13 + 0x58]
call qword [sym.imp.KERNEL32.dll_ResumeThread]
cmp edi, 1
jne 0x14001b5b3
mov dword [rsp + 0x20], edi
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0xb8]
call qword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
je 0x14001b4b4
nop
nop
nop
nop
lea rcx, [rsp + 0xb8]
call qword [sym.imp.USER32.dll_TranslateMessage]
lea rcx, [rsp + 0xb8]
call qword [sym.imp.USER32.dll_DispatchMessageW]
mov dword [rsp + 0x20], 1
xor r9d, r9d
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0xb8]
call qword [sym.imp.USER32.dll_PeekMessageW]
test eax, eax
jne 0x14001b570
jmp 0x14001b4b4
mov dword [rsp + 0x220], r15d
lea rdx, [rsp + 0x220]
mov rcx, qword [r13 + 0x58]
call qword [sym.imp.KERNEL32.dll_GetExitCodeThread]
mov ebp, dword [rsp + 0x220]
mov rax, qword [r13]
mov edx, 1
mov rcx, r13
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
lea rdx, [rbx - 0x18]
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001b601
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [rsp + 0x38]
add rdx, 0xffffffffffffffe8
mov eax, r14d
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001b652
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rsi, qword [rsp + 0x48]
mov r13, qword [rsp + 0x218]
jmp 0x14001b65f
mov ecx, 0x80070057
call fcn.140003280
int3
mov ecx, 0x80070057
call fcn.140003280
nop
mov ecx, 0x80070057
call fcn.140003280
nop
mov rsi, qword [rsp + 0x48]
mov r13, qword [rsp + 0x218]
mov rcx, qword [r12 + 0x300]
test rcx, rcx
je 0x14001b69c
cmp qword [rcx + 0x40], 0
je 0x14001b67c
mov rax, qword [rcx]
call qword [rax + 0xc0]
mov rcx, qword [r12 + 0x300]
test rcx, rcx
je 0x14001b694
mov rax, qword [rcx]
mov edx, 1
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov qword [r12 + 0x300], r15
lea rax, [0x14007e618]
mov qword [rsp + 0xf0], rax
mov rcx, qword [rsp + 0x1b0]
test rcx, rcx
je 0x14001b6c6
call qword [sym.imp.KERNEL32.dll_FreeLibrary]
mov qword [rsp + 0x1b0], r15
lea rcx, [rsp + 0xf0]
call fcn.14002ee74
nop
mov eax, r14d
lock xadd dword [rsi + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x14001b6f0
mov rcx, qword [rsi]
mov rax, qword [rcx]
mov rdx, rsi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
nop
mov rdx, qword [r13]
sub rdx, 0x18
lock xadd dword [rdx + 0x10], r14d
add r14d, 0xffffffff
test r14d, r14d
jg 0x14001b710
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov eax, ebp
mov rbx, qword [rsp + 0x210]
add rsp, 0x1d0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret