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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [rsp - 0x900]
sub rsp, 0xa00
mov rax, qword [0x140084a00]
xor rax, rsp
mov qword [rbp + 0x8f0], rax
mov rbx, rcx
xor r15d, r15d
mov r8d, 0x104
lea rdx, [rbp + 0xb0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
test eax, eax
je 0x14000366b
lea rax, [rbp + 0x2c0]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea edx, [r15 + 0x1a]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x14000366b
lea rax, [rbp + 0x4d0]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea edx, [r15 + 0x1c]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x14000366b
lea rax, [rbp + 0x6e0]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea edx, [r15 + 0x23]
xor ecx, ecx
call qword [sym.imp.SHELL32.dll_SHGetFolderPathW]
test eax, eax
js 0x14000366b
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp + 0x70], xmm0
mov qword [rbp + 0x80], rax
lea rdx, [rbp + 0x2c0]
lea rcx, [rbp - 0x78]
call fcn.1400037f0
nop
mov rdx, rax
lea rcx, [rbp - 0x10]
call fcn.140003ad0
nop
lea rdx, [rbp + 0x4d0]
lea rcx, [rsp + 0x68]
call fcn.1400037f0
nop
mov rdx, rax
lea rcx, [rbp + 0x10]
call fcn.140003ad0
nop
lea rdx, [rbp + 0x6e0]
lea rcx, [rsp + 0x48]
call fcn.1400037f0
nop
mov rdx, rax
lea rcx, [rbp + 0x30]
call fcn.140003ad0
nop
xorps xmm0, xmm0
movdqu xmmword [rbp + 0x70], xmm0
mov qword [rbp + 0x80], r15
lea ecx, [r15 + 0x60]
call fcn.14003d190
mov rdi, rax
mov qword [rbp + 0x70], rax
mov qword [rbp + 0x78], rax
lea rcx, [rax + 0x60]
mov qword [rbp + 0x80], rcx
lea rax, [rbp + 0x70]
mov qword [rsp + 0x40], rax
lea rsi, [rbp - 0x10]
xorps xmm0, xmm0
movups xmmword [rbp + 0x50], xmm0
mov qword [rbp + 0x50], rdi
mov qword [rbp + 0x58], rdi
lea rax, [rbp + 0x70]
mov qword [rbp + 0x60], rax
mov rdx, rsi
mov rcx, rdi
call fcn.140003930
add rdi, 0x20
mov qword [rbp + 0x58], rdi
add rsi, 0x20
lea rax, [rbp + 0x50]
cmp rsi, rax
jne 0x1400031c5
mov rdx, rdi
mov rcx, rdi
call fcn.140003ba0
mov qword [rbp + 0x78], rdi
lea r9, [0x1400036e0]
mov edx, 0x20
lea r8d, [rdx - 0x1d]
lea rcx, [rbp - 0x10]
call fcn.14003d1cc
nop
mov rdx, qword [rsp + 0x60]
cmp rdx, 7
jbe 0x140003250
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x48]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14000324b
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14000369e
call fcn.14003d2a4
movdqa xmm0, xmmword [0x140078cb0]
movdqu xmmword [rsp + 0x58], xmm0
mov word [rsp + 0x48], r15w
mov rdx, qword [rbp - 0x80]
cmp rdx, 7
jbe 0x1400032a5
lea rdx, [rdx*2 + 2]
mov rcx, qword [rsp + 0x68]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400032a0
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400036a4
call fcn.14003d2a4
movdqa xmm0, xmmword [0x140078cb0]
movdqu xmmword [rsp + 0x78], xmm0
mov word [rsp + 0x68], r15w
mov rdx, qword [rbp - 0x60]
cmp rdx, 7
jbe 0x1400032f9
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x78]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400032f4
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400036aa
call fcn.14003d2a4
movdqa xmm0, xmmword [0x140078cb0]
movdqu xmmword [rbp - 0x68], xmm0
mov word [rbp - 0x78], r15w
xor ecx, ecx
call fcn.14002450c
mov rcx, rax
call fcn.1400244f4
xor r14b, r14b
mov rsi, r15
mov rdi, qword [rbp + 0x78]
mov rax, rdi
mov rcx, qword [rbp + 0x70]
sub rax, rcx
sar rax, 5
test rax, rax
je 0x1400035ce
movabs r12, 0x7ffffffffffffffe
nop word [rax + rax]
sub rdi, rcx
sar rdi, 5
call fcn.1400244c8
cdqe
xor edx, edx
div rdi
shl rdx, 5
add rdx, qword [rbp + 0x70]
lea rcx, [rbp + 0x50]
call fcn.140003930
nop
lea rcx, [rbp + 0x50]
cmp qword [rbp + 0x68], 7
cmova rcx, qword [rbp + 0x50]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea rcx, [rbp + 0x50]
cmp qword [rbp + 0x68], 7
cmova rcx, qword [rbp + 0x50]
mov edx, 2
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov edx, 0x5c
lea rcx, [rbp + 0xb0]
call fcn.14003f300
lea rdx, [rax + 2]
lea rcx, [rbp + 0x88]
call fcn.1400037f0
nop
mov rax, r12
mov rcx, qword [rbp + 0x60]
sub rax, rcx
cmp rax, 1
jb 0x140003698
lea r9, [rbp + 0x50]
cmp qword [rbp + 0x68], 7
cmova r9, qword [rbp + 0x50]
mov qword [rsp + 0x30], 1
mov qword [rsp + 0x20], rcx
lea rcx, [rbp - 0x38]
call fcn.140003c40
nop
lea rdx, [rbp + 0x88]
cmp qword [rbp + 0xa0], 7
cmova rdx, qword [rbp + 0x88]
mov r8, qword [rbp + 0x98]
lea rcx, [rbp - 0x38]
call fcn.140003d80
movups xmm0, xmmword [rax]
movups xmmword [rbp - 0x58], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp - 0x48], xmm1
mov qword [rax + 0x10], r15
mov qword [rax + 0x18], 7
mov word [rax], r15w
lea rdx, [rbp - 0x58]
mov rcx, rbx
call fcn.140003750
mov rdx, qword [rbp - 0x40]
cmp rdx, 7
jbe 0x140003493
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x58]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14000348d
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400036b0
call fcn.14003d2a4
nop
mov rdx, qword [rbp - 0x20]
cmp rdx, 7
jbe 0x1400034d3
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp - 0x38]
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400034ce
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400036b6
call fcn.14003d2a4
mov rcx, rbx
cmp qword [rbx + 0x18], 7
jbe 0x1400034e0
mov rcx, qword [rbx]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x140003529
mov rdx, rbx
cmp qword [rbx + 0x18], 7
jbe 0x1400034f8
mov rdx, qword [rbx]
lea rcx, [rbp + 0xb0]
call qword [sym.imp.KERNEL32.dll_MoveFileW]
test eax, eax
je 0x140003529
mov rcx, rbx
cmp qword [rbx + 0x18], 7
jbe 0x140003516
mov rcx, qword [rbx]
mov edx, 2
call qword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
jne 0x1400035e0
mov rdx, qword [rbp + 0xa0]
cmp rdx, 7
jbe 0x140003570
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x88]
cmp rdx, 0x1000
mov rax, rcx
jb 0x14000356a
mov rcx, qword [rcx - 8]
sub rax, rcx
add rdx, 0x27
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400036bc
call fcn.14003d2a4
nop
mov rdx, qword [rbp + 0x68]
cmp rdx, 7
jbe 0x1400035b0
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x50]
cmp rdx, 0x1000
mov rax, rcx
jb 0x1400035ab
mov rcx, qword [rcx - 8]
sub rax, rcx
add rdx, 0x27
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400036c2
call fcn.14003d2a4
inc rsi
mov rdi, qword [rbp + 0x78]
mov rax, rdi
mov rcx, qword [rbp + 0x70]
sub rax, rcx
sar rax, 5
cmp rsi, rax
jb 0x140003350
lea rcx, [rbp + 0x70]
call fcn.140003a60
movzx eax, r14b
jmp 0x14000366d
mov r14b, 1
mov rdx, qword [rbp + 0xa0]
cmp rdx, 7
jbe 0x14000362a
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x88]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140003624
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400036bc
call fcn.14003d2a4
nop
mov rdx, qword [rbp + 0x68]
cmp rdx, 7
jbe 0x1400035ce
lea rdx, [rdx*2 + 2]
mov rcx, qword [rbp + 0x50]
mov rax, rcx
cmp rdx, 0x1000
jb 0x140003661
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1400036c2
call fcn.14003d2a4
jmp 0x1400035ce
xor al, al
mov rcx, qword [rbp + 0x8f0]
xor rcx, rsp
call fcn.14003d170
lea r11, [rsp + 0xa00]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret
call fcn.140003020
nop
call fcn.14002498c
nop
call fcn.14002498c
nop
call fcn.14002498c
nop
call fcn.14002498c
nop
call fcn.14002498c
nop
call fcn.14002498c
nop
call fcn.14002498c
int3