Function at 0x140021dc0
Capabilities:
Check if file exists
Get file attributes
Query environment variable

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r14
push r15
lea rbp, [rsp - 0xa0]
sub rsp, 0x1a0
mov rax, qword [0x140089020]
xor rax, rsp
mov qword [rbp + 0x90], rax
mov rbx, rcx
mov qword [rsp + 0x28], rcx
xor r15d, r15d
mov edi, r15d
mov dword [rsp + 0x20], r15d
lea rcx, [rbp + 0x10]
call fcn.1400229a0
nop
mov r8, rax
lea rdx, str.SoftwareCaphyonAdvanced_Installer_
lea rcx, [rbp - 0x50]
call fcn.14002d8b0
nop
mov rdx, qword [rbp + 0x28]
cmp rdx, 8
jb 0x140021e65
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x10]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140021e60
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022734
call fcn.14003a0d0
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rbp + 0x20], xmm0
mov word [rbp + 0x10], r15w
xorps xmm0, xmm0
movups xmmword [rbp - 0x10], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp], xmm1
mov r8d, 0x13
lea rdx, str.WorkingDirectorySys
lea rcx, [rbp - 0x10]
call fcn.140003db0
nop
lea r9, [rbp - 0x10]
lea r8, [rbp - 0x50]
mov rdx, 0xffffffff80000001
lea rcx, [rbp + 0x30]
call fcn.14002b7b0
nop
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.1400031b0
nop
mov rdx, qword [rbp + 0x48]
cmp rdx, 8
jb 0x140021f04
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140021eff
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002273a
call fcn.14003a0d0
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rbp + 0x40], xmm0
mov word [rbp + 0x30], r15w
mov rdx, qword [rbp + 8]
cmp rdx, 8
jb 0x140021f56
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x10]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140021f51
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022740
call fcn.14003a0d0
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rbp], xmm0
mov word [rbp - 0x10], r15w
cmp qword [rsp + 0x40], 0
jne 0x140022182
xorps xmm0, xmm0
movups xmmword [rbp - 0x70], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp - 0x60], xmm1
mov r8d, 0x13
lea rdx, str.WorkingDirectorySys
lea rcx, [rbp - 0x70]
call fcn.140003db0
nop
lea r9, [rbp - 0x70]
lea r8, [rbp - 0x50]
mov rdx, 0xffffffff80000002
lea rcx, [rbp - 0x30]
call fcn.14002b7b0
mov rsi, rax
xorps xmm0, xmm0
movups xmmword [rsp + 0x50], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x60], xmm1
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rsp + 0x60], xmm0
mov word [rsp + 0x50], r15w
mov edi, 4
mov dword [rsp + 0x20], edi
mov rcx, rax
cmp qword [rax + 0x18], 8
jb 0x140021ff0
mov rcx, qword [rax]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
movsxd r14, eax
test eax, eax
je 0x14002204d
xor r8d, r8d
mov rdx, r14
lea rcx, [rsp + 0x50]
call fcn.1400035c0
lea rdx, [rsp + 0x50]
cmp qword [rsp + 0x68], 8
cmovae rdx, qword [rsp + 0x50]
cmp qword [rsi + 0x18], 8
jb 0x14002202d
mov rsi, qword [rsi]
mov r8d, r14d
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
xor r8d, r8d
lea eax, [r14 - 1]
movsxd rdx, eax
lea rcx, [rsp + 0x50]
call fcn.1400035c0
mov rdx, qword [rsp + 0x48]
cmp rdx, 8
jb 0x14002208f
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14002208a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022746
call fcn.14003a0d0
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x48], 7
mov word [rsp + 0x30], r15w
movups xmm0, xmmword [rsp + 0x50]
movups xmmword [rsp + 0x30], xmm0
movups xmm1, xmmword [rsp + 0x60]
movups xmmword [rsp + 0x40], xmm1
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rsp + 0x60], xmm0
mov word [rsp + 0x50], r15w
and edi, 0xfffffffb
mov dword [rsp + 0x20], edi
movdqu xmmword [rsp + 0x60], xmm0
mov word [rsp + 0x50], r15w
mov rdx, qword [rbp - 0x18]
cmp rdx, 8
jb 0x14002211e
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140022119
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002274c
call fcn.14003a0d0
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rbp - 0x20], xmm0
mov word [rbp - 0x30], r15w
mov rdx, qword [rbp - 0x58]
cmp rdx, 8
jb 0x140022170
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x70]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14002216b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022752
call fcn.14003a0d0
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rbp - 0x60], xmm0
mov word [rbp - 0x70], r15w
lea rcx, [rsp + 0x30]
cmp qword [rsp + 0x48], 8
cmovae rcx, qword [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x14002226b
test al, 0x10
je 0x14002226b
movups xmm0, xmmword [rsp + 0x30]
movups xmmword [rbx], xmm0
movups xmm1, xmmword [rsp + 0x40]
movups xmmword [rbx + 0x10], xmm1
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x48], 7
mov word [rsp + 0x30], r15w
or edi, 1
mov dword [rsp + 0x20], edi
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x48], 7
mov word [rsp + 0x30], r15w
mov rdx, qword [rbp - 0x38]
cmp rdx, 8
jb 0x14002222a
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x50]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140022225
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002272e
call fcn.14003a0d0
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rbp - 0x40], xmm0
mov word [rbp - 0x50], r15w
mov rax, rbx
mov rcx, qword [rbp + 0x90]
xor rcx, rsp
call fcn.14003a0b0
lea r11, [rsp + 0x1a0]
mov rbx, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rdi, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop rbp
ret
xorps xmm0, xmm0
movups xmmword [rbp - 0x70], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp - 0x60], xmm1
mov r8d, 0x13
lea rdx, str.WorkingDirectoryUwp
lea rcx, [rbp - 0x70]
call fcn.140003db0
nop
lea r9, [rbp - 0x70]
lea r8, [rbp - 0x50]
mov rdx, 0xffffffff80000001
lea rcx, [rbp + 0x50]
call fcn.14002b7b0
nop
mov rdx, rax
lea rcx, [rsp + 0x70]
call fcn.1400031b0
nop
mov rdx, qword [rbp + 0x68]
cmp rdx, 8
jb 0x1400222f8
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x50]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400222f3
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022758
call fcn.14003a0d0
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rbp + 0x60], xmm0
mov word [rbp + 0x50], r15w
mov rdx, qword [rbp - 0x58]
cmp rdx, 8
jb 0x14002234a
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x70]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140022345
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002275e
call fcn.14003a0d0
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rbp - 0x60], xmm0
mov word [rbp - 0x70], r15w
cmp qword [rbp - 0x80], 0
jne 0x140022575
xorps xmm0, xmm0
movups xmmword [rbp - 0x30], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp - 0x20], xmm1
mov r8d, 0x13
lea rdx, str.WorkingDirectoryUwp
lea rcx, [rbp - 0x30]
call fcn.140003db0
nop
lea r9, [rbp - 0x30]
lea r8, [rbp - 0x50]
mov rdx, 0xffffffff80000002
lea rcx, [rbp + 0x70]
call fcn.14002b7b0
mov rsi, rax
xorps xmm0, xmm0
movups xmmword [rsp + 0x50], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x60], xmm1
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rsp + 0x60], xmm0
mov word [rsp + 0x50], r15w
or edi, 0x10
mov dword [rsp + 0x20], edi
mov rcx, rax
cmp qword [rax + 0x18], 8
jb 0x1400223e1
mov rcx, qword [rax]
xor r8d, r8d
xor edx, edx
call qword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
movsxd r14, eax
test eax, eax
je 0x14002243e
xor r8d, r8d
mov rdx, r14
lea rcx, [rsp + 0x50]
call fcn.1400035c0
lea rdx, [rsp + 0x50]
cmp qword [rsp + 0x68], 8
cmovae rdx, qword [rsp + 0x50]
cmp qword [rsi + 0x18], 8
jb 0x14002241e
mov rsi, qword [rsi]
mov r8d, r14d
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_ExpandEnvironmentStringsW]
xor r8d, r8d
lea eax, [r14 - 1]
movsxd rdx, eax
lea rcx, [rsp + 0x50]
call fcn.1400035c0
mov rdx, qword [rbp - 0x78]
cmp rdx, 8
jb 0x14002247f
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x70]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14002247a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022764
call fcn.14003a0d0
mov qword [rbp - 0x80], r15
mov qword [rbp - 0x78], 7
mov word [rsp + 0x70], r15w
movups xmm0, xmmword [rsp + 0x50]
movups xmmword [rsp + 0x70], xmm0
movups xmm1, xmmword [rsp + 0x60]
movups xmmword [rbp - 0x80], xmm1
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rsp + 0x60], xmm0
mov word [rsp + 0x50], r15w
and edi, 0xffffffef
mov dword [rsp + 0x20], edi
movdqu xmmword [rsp + 0x60], xmm0
mov word [rsp + 0x50], r15w
mov rdx, qword [rbp + 0x88]
cmp rdx, 8
jb 0x14002250e
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x70]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140022509
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002276a
call fcn.14003a0d0
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rbp + 0x80], xmm0
mov word [rbp + 0x70], r15w
mov rdx, qword [rbp - 0x18]
cmp rdx, 8
jb 0x140022563
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14002255e
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022770
call fcn.14003a0d0
movdqa xmm0, xmmword [0x14007c4f0]
movdqu xmmword [rbp - 0x20], xmm0
mov word [rbp - 0x30], r15w
lea rcx, [rsp + 0x70]
cmp qword [rbp - 0x78], 8
cmovae rcx, qword [rsp + 0x70]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x140022622
test al, 0x10
je 0x140022622
movups xmm0, xmmword [rsp + 0x70]
movups xmmword [rbx], xmm0
movups xmm1, xmmword [rbp - 0x80]
movups xmmword [rbx + 0x10], xmm1
mov qword [rbp - 0x80], r15
mov qword [rbp - 0x78], 7
mov word [rsp + 0x70], r15w
or edi, 1
mov dword [rsp + 0x20], edi
mov qword [rbp - 0x80], r15
mov qword [rbp - 0x78], 7
mov word [rsp + 0x70], r15w
mov rdx, qword [rsp + 0x48]
cmp rdx, 8
jb 0x1400221d6
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140022618
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022728
call fcn.14003a0d0
jmp 0x1400221d6
xorps xmm0, xmm0
movups xmmword [rbx], xmm0
mov qword [rbx + 0x10], r15
mov qword [rbx + 0x18], 7
mov word [rbx], r15w
or edi, 1
mov dword [rsp + 0x20], edi
mov rdx, qword [rbp - 0x78]
cmp rdx, 8
jb 0x140022680
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x70]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14002267b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022776
call fcn.14003a0d0
mov qword [rbp - 0x80], r15
mov qword [rbp - 0x78], 7
mov word [rsp + 0x70], r15w
mov rdx, qword [rsp + 0x48]
cmp rdx, 8
jb 0x1400226d0
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400226cb
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140022728
call fcn.14003a0d0
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x48], 7
mov word [rsp + 0x30], r15w
mov rdx, qword [rbp - 0x38]
cmp rdx, 8
jb 0x14002222a
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x50]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140022225
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14002272e
jmp 0x140022225
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
nop
call fcn.14004638c
int3