Function at 0x140006690
Capabilities:
Check if file exists
Create directory
Get common file path
Get disk information
Get disk size
Get file attributes
Set file attributes

Disassembly:
mov rax, rsp
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov qword [rax + 0x20], r12
push rbp
push r14
push r15
lea rbp, [rax - 0x78]
sub rsp, 0x160
mov rax, qword [section..data]
xor rax, rsp
mov qword [rbp + 0x50], rax
lea rcx, [0x140001300]
xor r8d, r8d
xor edx, edx
call fcn.140005298
mov ecx, 0x40
lea edx, [rax + 1]
mov esi, eax
call qword [sym.imp.KERNEL32.dll_LocalAlloc]
xor ebx, ebx
mov rdi, rax
test rax, rax
jne 0x14000672b
xor r9d, r9d
xor r8d, r8d
mov edx, 0x4b5
xor ecx, ecx
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], FDICopy
call fcn.140004fd8
call qword [sym.imp.KERNEL32.dll_GetLastError]
movzx ecx, ax
or ecx, 0x80070000
test eax, eax
cmovle ecx, eax
mov dword [0x14000be5c], ecx
xor eax, eax
jmp 0x140006aba
lea rcx, [0x140001300]
mov r8d, esi
mov rdx, rax
call fcn.140005298
test eax, eax
jne 0x140006774
xor r9d, r9d
xor r8d, r8d
mov edx, 0x4b1
xor ecx, ecx
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], FDICopy
call fcn.140004fd8
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov dword [0x14000be5c], 0x80070714
jmp 0x140006724
lea rdx, [0x1400012d0]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_lstrcmpA]
mov ecx, dword [0x14000be40]
mov r14d, 1
test eax, eax
cmove ecx, r14d
mov dword [0x14000be40], ecx
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov al, byte [0x14000acde]
test al, al
je 0x1400067fe
cmp al, 0x5c
jne 0x1400067be
cmp byte [0x14000acdf], al
mov r8d, ebx
je 0x1400067c1
mov r8d, r14d
lea rcx, [0x14000acde]
xor edx, edx
call fcn.1400064bc
test eax, eax
je 0x1400067db
mov eax, r14d
jmp 0x140006aba
xor r9d, r9d
xor r8d, r8d
mov edx, 0x4be
xor ecx, ecx
mov dword [rsp + 0x28], ebx
mov dword [rsp + 0x20], FDICopy
call fcn.140004fd8
jmp 0x140006724
cmp dword [0x14000abc4], ebx
jne 0x140006a94
cmp dword [0x14000be40], ebx
jne 0x140006a94
lea r15, [0x14000b5f0]
mov r12d, 0x104
mov rdx, r15
mov ecx, r12d
call qword [sym.imp.KERNEL32.dll_GetTempPathA]
test eax, eax
je 0x14000686a
mov r8d, 3
mov edx, r14d
mov rcx, r15
call fcn.1400064bc
test eax, eax
jne 0x1400067d3
mov rcx, r15
call fcn.140002758
test eax, eax
jne 0x14000686a
mov r8d, r14d
mov edx, r14d
mov rcx, r15
call fcn.1400064bc
test eax, eax
jne 0x1400067d3
lea rsi, [0x1400013c4]
lea rax, [rsp + 0x40]
sub rsi, rax
mov rdx, r12
lea rcx, [rsp + 0x40]
lea rax, [rdx + 0x7ffffefa]
test rax, rax
je 0x14000689e
mov al, byte [rsi + rcx]
test al, al
je 0x14000689e
mov byte [rcx], al
add rcx, r14
sub rdx, r14
jne 0x140006881
test rdx, rdx
jne 0x1400068a6
sub rcx, r14
mov byte [rcx], bl
cmp byte [rsp + 0x40], 0x5a
jg 0x140006a66
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetDriveTypeA]
mov edi, eax
cmp eax, 6
je 0x1400068ca
cmp eax, 3
jne 0x1400068de
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x14000695f
cmp edi, 2
jne 0x14000694f
mov cl, byte [rsp + 0x40]
lea eax, [rcx - 0x41]
cmp al, r14b
jbe 0x140006953
mov dword [rsp + 0x38], ebx
mov dword [rsp + 0x34], ebx
mov dword [rsp + 0x3c], ebx
mov dword [rsp + 0x30], ebx
test cl, cl
je 0x140006953
lea rax, [rsp + 0x30]
lea r9, [rsp + 0x3c]
lea r8, [rsp + 0x34]
lea rdx, [rsp + 0x38]
lea rcx, [rsp + 0x40]
mov qword [rsp + 0x20], rax
call qword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
test eax, eax
je 0x14000694f
mov ecx, dword [rsp + 0x34]
mov edx, dword [rsp + 0x30]
mov r8d, 0x400
imul ecx, dword [rsp + 0x38]
call qword [sym.imp.KERNEL32.dll_MulDiv]
test eax, eax
je 0x14000694f
cmp eax, 0x19000
jae 0x14000695f
mov cl, byte [rsp + 0x40]
add cl, r14b
mov byte [rsp + 0x40], cl
jmp 0x140006a5d
xor r8d, r8d
lea rcx, [rsp + 0x40]
lea edx, [r8 + 3]
call fcn.140006c54
test eax, eax
jne 0x140006996
lea rcx, [rsp + 0x40]
call fcn.140002758
test eax, eax
jne 0x14000694f
lea rcx, [rsp + 0x40]
xor r8d, r8d
mov edx, r14d
call fcn.140006c54
test eax, eax
je 0x14000694f
lea rcx, [rsp + 0x40]
call fcn.140002758
test eax, eax
je 0x1400069b2
lea rcx, [rsp + 0x40]
mov edx, r12d
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea r8, [0x1400013c8]
lea rcx, [rsp + 0x40]
mov edx, r12d
call fcn.140007b48
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x1400069e5
lea rcx, [rsp + 0x40]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_CreateDirectoryA]
jmp 0x1400069e8
and eax, 0x10
test eax, eax
jne 0x1400069fd
mov cl, byte [rsp + 0x40]
mov byte [rsp + 0x43], bl
add cl, r14b
mov byte [rsp + 0x40], cl
jmp 0x140006a5d
lea rcx, [rsp + 0x40]
mov edx, 2
call qword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea r8, [rsp + 0x40]
mov rdx, r12
sub r8, r15
mov rcx, r15
lea rax, [rdx + 0x7ffffefa]
test rax, rax
je 0x140006a39
mov al, byte [r8 + rcx]
test al, al
je 0x140006a39
mov byte [rcx], al
add rcx, r14
sub rdx, r14
jne 0x140006a1b
test rdx, rdx
jne 0x140006a41
sub rcx, r14
mov byte [rcx], bl
xor r8d, r8d
mov edx, r14d
mov rcx, r15
call fcn.1400064bc
test eax, eax
jne 0x1400067d3
mov cl, byte [rsp + 0x40]
cmp cl, 0x5a
jle 0x1400068b3
lea rcx, [rsp + 0x40]
mov edx, r12d
call qword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
mov edx, 3
lea rcx, [rsp + 0x40]
lea r8d, [rdx + 1]
call fcn.140006c54
test eax, eax
je 0x140006724
jmp 0x140006879
lea r9, [0x140003940]
xor r8d, r8d
mov edx, 0x7d2
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], rbx
call fcn.140007a10
test rax, rax
setne bl
mov eax, ebx
mov rcx, qword [rbp + 0x50]
xor rcx, rsp
call fcn.140008340
lea r11, [rsp + 0x160]
mov rbx, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rdi, qword [r11 + 0x30]
mov r12, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop rbp
ret