Function at 0x14000d1d0
Capabilities:
Get common file path
Get program files directory
Set current directory

Disassembly:
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x468
mov rax, qword [0x14012df80]
xor rax, rsp
mov qword [rsp + 0x450], rax
mov rax, qword [rcx + 0x1a0]
mov rsi, rcx
mov r8d, 0x104
mov rdx, qword [rax + 0x150]
mov qword [rcx + 0x198], rdx
lea rdx, [rsp + 0x30]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x14000d243
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0x30]
repne scasw ax, word [rdi]
lea rdx, [rsp + 0x30]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsi + 0x128]
call fcn.140003940
mov r8, qword [rsi + 0x128]
mov rcx, qword [rsi + 0x190]
lea rdx, [rsp + 0x30]
mov r9d, 0x104
call fcn.140013370
test eax, eax
je 0x14000d296
lea rcx, [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0x30]
lea rdx, [rsp + 0x30]
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsi + 0x100]
call fcn.140003940
lea rcx, [rsp + 0x20]
xor edi, edi
call qword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x14000d379
lea r8, [rsp + 0x28]
lea edx, [rdi + 0x2d]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jne 0x14000d344
mov rcx, qword [rsp + 0x28]
lea rdx, [rsp + 0x240]
call qword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
lea rdi, [rsp + 0x240]
lea rax, [rsp + 0x30]
xor r8d, r8d
mov edx, 0x104
lea rcx, [rsp + 0x30]
sub rdi, rax
lea rax, [rdx + 0x7ffffefa]
test rax, rax
je 0x14000d317
movzx eax, word [rdi + rcx]
test ax, ax
je 0x14000d317
mov word [rcx], ax
add rcx, 2
sub rdx, 1
jne 0x14000d2f3
jmp 0x14000d31c
test rdx, rdx
jne 0x14000d326
sub rcx, 2
mov r8d, 0x8007007a
mov rdx, qword [rsp + 0x28]
mov word [rcx], 0
mov rcx, qword [rsp + 0x20]
mov rax, qword [rcx]
xor edi, edi
test r8d, r8d
sete dil
call qword [rax + 0x28]
mov rcx, qword [rsp + 0x20]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test edi, edi
je 0x14000d379
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0x30]
repne scasw ax, word [rdi]
lea rdx, [rsp + 0x30]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsi + 0xf8]
call fcn.140003940
lea rcx, [rsp + 0x28]
xor edi, edi
call qword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x14000d466
lea r8, [rsp + 0x20]
lea edx, [rdi + 0x25]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jne 0x14000d431
mov rcx, qword [rsp + 0x20]
lea rdx, [rsp + 0x240]
call qword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
lea rdi, [rsp + 0x240]
lea rax, [rsp + 0x30]
xor r8d, r8d
mov edx, 0x104
lea rcx, [rsp + 0x30]
sub rdi, rax
nop
nop
nop
lea rax, [rdx + 0x7ffffefa]
test rax, rax
je 0x14000d404
movzx eax, word [rcx + rdi]
test ax, ax
je 0x14000d404
mov word [rcx], ax
add rcx, 2
sub rdx, 1
jne 0x14000d3e0
jmp 0x14000d409
test rdx, rdx
jne 0x14000d413
sub rcx, 2
mov r8d, 0x8007007a
mov rdx, qword [rsp + 0x20]
mov word [rcx], 0
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx]
xor edi, edi
test r8d, r8d
sete dil
call qword [rax + 0x28]
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test edi, edi
je 0x14000d466
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0x30]
repne scasw ax, word [rdi]
lea rdx, [rsp + 0x30]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsi + 0xf0]
call fcn.140003940
lea rcx, [rsp + 0x28]
xor edi, edi
call qword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x14000d549
lea r8, [rsp + 0x20]
lea edx, [rdi + 0x24]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jne 0x14000d514
mov rcx, qword [rsp + 0x20]
lea rdx, [rsp + 0x240]
call qword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
lea rdi, [rsp + 0x240]
lea rax, [rsp + 0x30]
xor r8d, r8d
mov edx, 0x104
lea rcx, [rsp + 0x30]
sub rdi, rax
lea rax, [rdx + 0x7ffffefa]
test rax, rax
je 0x14000d4e7
movzx eax, word [rcx + rdi]
test ax, ax
je 0x14000d4e7
mov word [rcx], ax
add rcx, 2
sub rdx, 1
jne 0x14000d4c3
jmp 0x14000d4ec
test rdx, rdx
jne 0x14000d4f6
sub rcx, 2
mov r8d, 0x8007007a
mov rdx, qword [rsp + 0x20]
mov word [rcx], 0
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx]
xor edi, edi
test r8d, r8d
sete dil
call qword [rax + 0x28]
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test edi, edi
je 0x14000d549
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0x30]
repne scasw ax, word [rdi]
lea rdx, [rsp + 0x30]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsi + 0x108]
call fcn.140003940
lea rcx, [rsp + 0x28]
xor edi, edi
call qword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x14000d636
lea r8, [rsp + 0x20]
lea edx, [rdi + 0x26]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jne 0x14000d601
mov rcx, qword [rsp + 0x20]
lea rdx, [rsp + 0x240]
call qword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
lea rdi, [rsp + 0x240]
lea rax, [rsp + 0x30]
xor r8d, r8d
mov edx, 0x104
lea rcx, [rsp + 0x30]
sub rdi, rax
nop
nop
nop
lea rax, [rdx + 0x7ffffefa]
test rax, rax
je 0x14000d5d4
movzx eax, word [rcx + rdi]
test ax, ax
je 0x14000d5d4
mov word [rcx], ax
add rcx, 2
sub rdx, 1
jne 0x14000d5b0
jmp 0x14000d5d9
test rdx, rdx
jne 0x14000d5e3
sub rcx, 2
mov r8d, 0x8007007a
mov rdx, qword [rsp + 0x20]
mov word [rcx], 0
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx]
xor edi, edi
test r8d, r8d
sete dil
call qword [rax + 0x28]
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test edi, edi
je 0x14000d636
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0x30]
repne scasw ax, word [rdi]
lea rdx, [rsp + 0x30]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsi + 0x110]
call fcn.140003940
mov rcx, qword [rsi + 0x190]
lea rdx, [rsp + 0x30]
mov r8d, 0x34
call fcn.140014250
test eax, eax
je 0x14000d677
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0x30]
repne scasw ax, word [rdi]
lea rdx, [rsp + 0x30]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsi + 0x118]
call fcn.140003940
lea rcx, [rsp + 0x28]
xor edi, edi
call qword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x14000d75a
lea r8, [rsp + 0x20]
lea edx, [rdi + 0x17]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jne 0x14000d725
mov rcx, qword [rsp + 0x20]
lea rdx, [rsp + 0x240]
call qword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
lea rdi, [rsp + 0x240]
lea rax, [rsp + 0x30]
xor r8d, r8d
mov edx, 0x104
lea rcx, [rsp + 0x30]
sub rdi, rax
lea rax, [rdx + 0x7ffffefa]
test rax, rax
je 0x14000d6f8
movzx eax, word [rcx + rdi]
test ax, ax
je 0x14000d6f8
mov word [rcx], ax
add rcx, 2
sub rdx, 1
jne 0x14000d6d4
jmp 0x14000d6fd
test rdx, rdx
jne 0x14000d707
sub rcx, 2
mov r8d, 0x8007007a
mov rdx, qword [rsp + 0x20]
mov word [rcx], 0
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx]
xor edi, edi
test r8d, r8d
sete dil
call qword [rax + 0x28]
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test edi, edi
je 0x14000d75a
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0x30]
repne scasw ax, word [rdi]
lea rdx, [rsp + 0x30]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsi + 0x120]
call fcn.140003940
mov rcx, qword [rsi + 0x190]
lea rdx, [rsp + 0x30]
mov r8d, reloc.OLEAUT32.dll_SafeArrayUnaccessData
call fcn.140014250
test eax, eax
je 0x14000d79b
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0x30]
repne scasw ax, word [rdi]
lea rdx, [rsp + 0x30]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsi + 0x130]
call fcn.140003940
lea rcx, [rsp + 0x28]
xor edi, edi
call qword [sym.imp.SHELL32.dll_SHGetMalloc]
test eax, eax
jne 0x14000d886
lea r8, [rsp + 0x20]
lea edx, [rdi + 0x23]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jne 0x14000d851
mov rcx, qword [rsp + 0x20]
lea rdx, [rsp + 0x240]
call qword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
lea rdi, [rsp + 0x240]
lea rax, [rsp + 0x30]
xor r8d, r8d
mov edx, 0x104
lea rcx, [rsp + 0x30]
sub rdi, rax
nop
nop
lea rax, [rdx + 0x7ffffefa]
test rax, rax
je 0x14000d824
movzx eax, word [rcx + rdi]
test ax, ax
je 0x14000d824
mov word [rcx], ax
add rcx, 2
sub rdx, 1
jne 0x14000d800
jmp 0x14000d829
test rdx, rdx
jne 0x14000d833
sub rcx, 2
mov r8d, 0x8007007a
mov rdx, qword [rsp + 0x20]
mov word [rcx], 0
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx]
xor edi, edi
test r8d, r8d
sete dil
call qword [rax + 0x28]
mov rcx, qword [rsp + 0x28]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetDim]
test edi, edi
je 0x14000d886
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0x30]
repne scasw ax, word [rdi]
lea rdx, [rsp + 0x30]
not rcx
lea r8d, [rcx - 1]
lea rcx, [rsi + 0x168]
call fcn.140003940
or rcx, 0xffffffffffffffff
lea rbp, str.SetupUtilityVersion7.epson.co.jp
xor eax, eax
mov rdi, rbp
lea rbx, [rsi + 0x170]
mov rdx, rbp
repne scasw ax, word [rdi]
not rcx
lea r8d, [rcx - 1]
mov rcx, rbx
call fcn.140003940
mov edx, dword [rsi]
shr rdx, 0x17
test dl, 1
jne 0x14000da60
mov r8, qword [rsi + 0x128]
mov rcx, qword [rsi + 0x190]
lea rdx, [rsp + 0x240]
mov r9d, 0x104
mov word [rsp + 0x240], 0
call fcn.140013710
mov edx, 0x7fffffff
lea rax, [rsp + 0x240]
mov rcx, rdx
nop
cmp word [rax], 0
je 0x14000da7c
add rax, 2
sub rcx, 1
jne 0x14000d900
xor edx, edx
movsxd r8, edx
lea rcx, [rsp + 0x240]
lea rdx, str.setup.exe
call fcn.1400ce2c0
test eax, eax
je 0x14000da60
or rcx, 0xffffffffffffffff
xor eax, eax
lea rdi, [rsp + 0x240]
repne scasw ax, word [rdi]
lea rdx, [rsp + 0x240]
mov qword [rsp + 0x4a0], r13
not rcx
lea r8d, [rcx - 1]
mov rcx, rbx
call fcn.140003940
mov rax, qword [rbx]
mov r13d, 1
movsxd rdi, dword [rax - 0x10]
mov ecx, r13d
sub ecx, dword [rax - 8]
mov eax, dword [rax - 0xc]
sub eax, edi
or ecx, eax
jge 0x14000d98b
mov edx, edi
mov rcx, rbx
call fcn.140003510
mov rcx, qword [rbx]
lea eax, [rdi + 1]
movsxd rdx, eax
call fcn.1400ce5c0
test edi, edi
js 0x14000da98
mov rax, qword [rbx]
cmp edi, dword [rax - 0xc]
jg 0x14000da98
mov dword [rax - 0x10], edi
mov rax, qword [rbx]
or rcx, 0xffffffffffffffff
mov word [rax + rdi*2], 0
xor eax, eax
mov qword [rsp + 0x498], r12
mov rdi, rbp
mov rsi, rbp
mov qword [rsp + 0x460], r14
repne scasw ax, word [rdi]
mov rax, qword [rbx]
mov r12d, dword [rax - 0x10]
sub r13d, dword [rax - 8]
sub rsi, rax
mov eax, dword [rax - 0xc]
not rcx
sar rsi, 1
lea edi, [r12 + rcx - 1]
lea r14, [rcx - 1]
sub eax, edi
or r13d, eax
jge 0x14000da09
mov edx, edi
mov rcx, rbx
call fcn.140003510
mov rax, qword [rbx]
mov rcx, r12
mov r12, qword [rsp + 0x498]
cmp rsi, rcx
ja 0x14000da20
lea rbp, [rax + rsi*2]
movsxd rdx, r14d
lea rcx, [rax + rcx*2]
mov r8, rbp
add rdx, rdx
mov r9, rdx
call fcn.1400cd500
test edi, edi
mov r14, qword [rsp + 0x460]
js 0x14000da8d
mov rax, qword [rbx]
cmp edi, dword [rax - 0xc]
jg 0x14000da8d
mov r13, qword [rsp + 0x4a0]
mov dword [rax - 0x10], edi
mov rax, qword [rbx]
movsxd rcx, edi
mov word [rax + rcx*2], 0
mov rcx, qword [rsp + 0x450]
xor rcx, rsp
call fcn.1400cd6e0
add rsp, 0x468
pop rdi
pop rsi
pop rbp
pop rbx
ret
test rcx, rcx
je 0x14000d914
sub rdx, rcx
jmp 0x14000d916
mov ecx, 0x80070057
call fcn.1400034f0
int3
mov ecx, 0x80070057
call fcn.1400034f0
int3