Function at 0x140004ab0
Capabilities:
Check if file exists
Copy file
Create directory
Get common file path
Set file attributes

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rsi
mov qword [rax + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rax - 0x248]
sub rsp, 0x320
movaps xmmword [rax - 0x38], xmm6
movaps xmmword [rax - 0x48], xmm7
mov rax, qword [0x14000e040]
xor rax, rsp
mov qword [rbp + 0x1f0], rax
mov qword [rsp + 0x60], rcx
xor r14d, r14d
lea rax, [rbp - 0x30]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x1c
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
je 0x140004b1e
xor al, al
jmp 0x1400050ac
lea rcx, [rbp - 0x78]
call fcn.140005100
mov r13, rax
xorps xmm0, xmm0
movups xmmword [rsp + 0x30], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x40], xmm1
lea rax, [rbp - 0x30]
mov rdi, 0xffffffffffffffff
mov rbx, rdi
nop dword [rax]
inc rbx
cmp byte [rax + rbx], 0
jne 0x140004b50
movabs r15, 0x7fffffffffffffff
cmp rbx, r15
ja 0x1400050f8
movabs rax, 0x8000000000000000
mov ecx, 0x16
cmp rbx, 0xf
ja 0x140004baa
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x48], 0xf
mov r8, rbx
lea rdx, [rbp - 0x30]
lea rcx, [rsp + 0x30]
call sub.VCRUNTIME140.dll_memcpy
mov byte [rsp + rbx + 0x30], 0
jmp 0x140004c38
mov rsi, rbx
or rsi, 0xf
cmp rsi, r15
jbe 0x140004bd9
mov rsi, r15
add rax, 0x27
mov rcx, rax
call fcn.140009ae0
test rax, rax
je 0x140004c06
lea r12, [rax + 0x27]
and r12, 0xffffffffffffffe0
mov qword [r12 - 8], rax
jmp 0x140004c15
cmp rsi, rcx
cmovb rsi, rcx
lea rcx, [rsi + 1]
test rcx, rcx
jne 0x140004bee
mov r12, r14
jmp 0x140004c15
cmp rcx, 0x1000
jb 0x140004c0d
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x1400050ec
jmp 0x140004bbd
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.140009ae0
mov r12, rax
mov qword [rsp + 0x30], r12
mov qword [rsp + 0x40], rbx
mov qword [rsp + 0x48], rsi
mov r8, rbx
lea rdx, [rbp - 0x30]
mov rcx, r12
call sub.VCRUNTIME140.dll_memcpy
mov byte [r12 + rbx], 0
mov r9, r13
lea r8, [rsp + 0x30]
lea rcx, [rbp - 0x58]
call fcn.140008f50
nop
mov rdx, qword [rsp + 0x48]
cmp rdx, 0xf
jbe 0x140004c8b
inc rdx
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004c85
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140004c85
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.140009d64
nop
mov rdx, qword [rbp - 0x60]
cmp rdx, 0xf
jbe 0x140004cc9
inc rdx
mov rcx, qword [rbp - 0x78]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004cc4
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140004cc4
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.140009d64
movdqa xmm0, xmmword [0x14000b5a0]
movdqu xmmword [rbp - 0x68], xmm0
mov byte [rbp - 0x78], 0
lea rcx, [rbp - 0x58]
cmp qword [rbp - 0x40], 0xf
cmova rcx, qword [rbp - 0x58]
call qword [sym.imp.SHLWAPI.dll_PathFileExistsA]
test eax, eax
jne 0x140004d29
lea rcx, [rbp - 0x58]
cmp qword [rbp - 0x40], 0xf
cmova rcx, qword [rbp - 0x58]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
je 0x140005065
lea rcx, [rbp - 0x58]
cmp qword [rbp - 0x40], 0xf
cmova rcx, qword [rbp - 0x58]
mov edx, 2
call qword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea rcx, [rsp + 0x30]
call fcn.140005320
mov rbx, rax
mov r13, qword [rbp - 0x48]
lea r12, [rbp - 0x58]
cmp qword [rbp - 0x40], 0xf
cmova r12, qword [rbp - 0x58]
mov r8, qword [rax + 0x10]
mov rcx, qword [rax + 0x18]
mov rax, rcx
sub rax, r8
cmp r13, rax
ja 0x140004de5
lea rax, [r8 + r13]
mov qword [rbx + 0x10], rax
mov rsi, rbx
cmp rcx, 0xf
jbe 0x140004d73
mov rsi, qword [rbx]
lea rax, [r12 + r13]
mov qword [rsp + 0x58], rax
cmp rax, rsi
jbe 0x140004da3
lea rax, [rsi + r8]
cmp r12, rax
ja 0x140004da3
cmp rsi, r12
ja 0x140004d96
mov qword [rsp + 0x50], r14
jmp 0x140004da8
mov rax, rsi
sub rax, r12
mov qword [rsp + 0x50], rax
jmp 0x140004da8
mov qword [rsp + 0x50], r13
inc r8
lea rcx, [rsi + r13]
mov rdx, rsi
call sub.VCRUNTIME140.dll_memmove
mov r8, qword [rsp + 0x50]
mov rdx, r12
mov rcx, rsi
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rsp + 0x50]
sub r13, rax
mov rdx, qword [rsp + 0x58]
add rdx, rax
lea rcx, [rsi + rax]
mov r8, r13
call sub.VCRUNTIME140.dll_memcpy
jmp 0x140004dfd
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], r12
mov rdx, r13
mov rcx, rbx
call fcn.1400092b0
mov rbx, rax
movups xmm6, xmmword [rbx]
movups xmmword [rsp + 0x68], xmm6
movups xmm7, xmmword [rbx + 0x10]
movups xmmword [rsp + 0x78], xmm7
mov qword [rbx + 0x10], r14
mov qword [rbx + 0x18], 0xf
mov byte [rbx], 0
lea rax, [rsp + 0x68]
mov rbx, qword [rsp + 0x60]
cmp rbx, rax
je 0x140004e75
mov rdx, qword [rbx + 0x18]
cmp rdx, 0xf
jbe 0x140004e62
mov rcx, qword [rbx]
inc rdx
cmp rdx, 0x1000
jb 0x140004e5d
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x140004ea8
mov rcx, r8
call fcn.140009d64
movups xmmword [rbx], xmm6
movups xmmword [rbx + 0x10], xmm7
mov edx, 0xf
mov byte [rsp + 0x68], 0
jmp 0x140004e79
mov rdx, qword [rbp - 0x80]
cmp rdx, 0xf
jbe 0x140004eb5
inc rdx
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004eaf
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140004eaf
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.140009d64
nop
mov rdx, qword [rsp + 0x48]
cmp rdx, 0xf
jbe 0x140004ef5
inc rdx
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140004ef0
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x140004ef0
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.140009d64
cmp qword [rbx + 0x18], 0xf
jbe 0x140004eff
mov rbx, qword [rbx]
mov r8d, 0x104
lea rdx, [rbp + 0xe0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
xorps xmm0, xmm0
movups xmmword [rsp + 0x30], xmm0
lea rax, [rbp + 0xe0]
inc rdi
cmp byte [rax + rdi], 0
jne 0x140004f23
cmp rdi, r15
ja 0x1400050e6
cmp rdi, 0xf
ja 0x140004f67
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x48], 0xf
mov r8, rdi
lea rdx, [rbp + 0xe0]
lea rcx, [rsp + 0x30]
call sub.VCRUNTIME140.dll_memcpy
mov byte [rsp + rdi + 0x30], 0
jmp 0x140005002
mov rax, rdi
or rax, 0xf
cmp rax, r15
jbe 0x140004f9c
movabs rax, 0x8000000000000000
add rax, 0x27
mov rcx, rax
call fcn.140009ae0
test rax, rax
je 0x140004fcd
lea r14, [rax + 0x27]
and r14, 0xffffffffffffffe0
mov qword [r14 - 8], rax
jmp 0x140004fdc
mov r15, rax
cmp rax, 0x16
mov eax, 0x16
cmovb r15, rax
lea rcx, [r15 + 1]
test rcx, rcx
je 0x140004fdc
cmp rcx, 0x1000
jb 0x140004fd4
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x1400050f2
jmp 0x140004f81
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.140009ae0
mov r14, rax
mov qword [rsp + 0x30], r14
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x48], r15
mov r8, rdi
lea rdx, [rbp + 0xe0]
mov rcx, r14
call sub.VCRUNTIME140.dll_memcpy
mov byte [r14 + rdi], 0
lea rcx, [rsp + 0x30]
cmp qword [rsp + 0x48], 0xf
cmova rcx, qword [rsp + 0x30]
xor r8d, r8d
mov rdx, rbx
call qword [sym.imp.KERNEL32.dll_CopyFileA]
mov ebx, eax
mov rdx, qword [rsp + 0x48]
cmp rdx, 0xf
jbe 0x140005061
inc rdx
mov rcx, qword [rsp + 0x30]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14000505c
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x14000505c
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.140009d64
test ebx, ebx
jne 0x140005069
xor bl, bl
jmp 0x14000506b
mov bl, 1
mov rdx, qword [rbp - 0x40]
cmp rdx, 0xf
jbe 0x1400050a9
inc rdx
mov rcx, qword [rbp - 0x58]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400050a4
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
jbe 0x1400050a4
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
int3
call fcn.140009d64
movzx eax, bl
mov rcx, qword [rbp + 0x1f0]
xor rcx, rsp
call fcn.140009ac0
lea r11, [rsp + 0x320]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.140001200
nop
call fcn.140001160
nop
call fcn.140001160
nop
call fcn.140001200
int3