Function at 0x1400032ec
Capabilities:
Check if file exists
Create directory
Get common file path
Get file attributes

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x80
xor r12d, r12d
mov r14d, edx
mov r13d, r12d
mov rsi, rcx
call fcn.1400052f0
mov rdi, rax
cmp word [rax], 0x22
jne 0x140003349
mov rcx, rax
call fcn.14001a758
cmp word [rdi + rax*2 - 2], 0x22
jne 0x140003349
mov rcx, rdi
call fcn.14001a758
lea rcx, [rdi + 2]
mov word [rdi + rax*2 - 2], r12w
jmp 0x14000334c
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov ebp, eax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov rcx, rdi
mov ebx, eax
call fcn.14001b038
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_SetLastError]
cmp ebp, 0xffffffff
jne 0x140003674
call qword [sym.imp.KERNEL32.dll_GetLastError]
add eax, 0xfffffffe
cmp eax, 1
ja 0x140003661
test r14d, r14d
jne 0x140003398
lea r8, str._s_does_not_exist
jmp 0x140003685
call fcn.1400029b0
mov r14, rax
mov edi, 3
test rax, rax
je 0x1400033ef
lea edx, [rdi - 2]
lea rcx, [rsp + 0x58]
call qword [sym.imp.ADVAPI32.dll_InitializeSecurityDescriptor]
test eax, eax
je 0x1400033ef
xor r8d, r8d
lea rcx, [rsp + 0x58]
mov rdx, r14
call qword [sym.imp.ADVAPI32.dll_SetSecurityDescriptorOwner]
test eax, eax
je 0x1400033ef
lea rax, [rsp + 0x58]
mov dword [rsp + 0x40], 0x18
mov qword [rsp + 0x48], rax
lea r13, [rsp + 0x40]
mov dword [rsp + 0x50], r12d
jmp 0x14000340e
xor ecx, ecx
call fcn.140007e4c
mov r9, rax
lea r8, str.Could_not_set_security_descriptor:__s
lea rdx, str.check_dir
mov ecx, edi
call fcn.1400082ac
mov rcx, rsi
call fcn.1400052f0
mov r8, r13
mov rdx, rax
xor ecx, ecx
mov rbp, rax
call qword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r15d, eax
test rbp, rbp
je 0x14000343f
mov rcx, rbp
call fcn.14001b038
mov ecx, r15d
call qword [sym.imp.KERNEL32.dll_SetLastError]
cmp ebx, 0xa1
jne 0x140003602
mov ebx, 0x104
mov ecx, ebx
call fcn.14001b04c
mov rbp, rax
test rax, rax
jne 0x140003495
lea r8, str.Could_not_allocate_buffer_to_convert_relative_path
mov ecx, edi
lea rdx, str.check_dir
call fcn.1400082ac
test r14, r14
je 0x14000348b
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_LocalFree]
mov eax, 0xfffffff5
jmp 0x14000369e
mov edx, 2
mov rcx, rbx
call fcn.14001b030
mov rdx, rax
mov ecx, ebx
mov r15, rax
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r12d, eax
test ebx, ebx
je 0x1400034f9
and qword [rsp + 0x38], 0
or r9d, 0xffffffff
and qword [rsp + 0x30], 0
mov r8, r15
mov dword [rsp + 0x28], 0x104
xor edx, edx
mov ecx, 0xfde9
mov qword [rsp + 0x20], rbp
call qword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
test eax, eax
jne 0x1400034f9
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r12d, eax
test r15, r15
je 0x140003506
mov rcx, r15
call fcn.14001b038
mov ecx, r12d
call qword [sym.imp.KERNEL32.dll_SetLastError]
lea r12, [0x1403862f4]
mov rcx, r12
call fcn.14001ad10
mov rcx, rbp
mov rbx, rax
call fcn.14001ad10
mov r15d, 0x103
mov ecx, r15d
sub rcx, rax
lea rax, [rbx + 1]
cmp rax, rcx
jae 0x14000354c
mov rcx, r12
call fcn.14001ad10
lea r8, [rax + 1]
jmp 0x14000355a
mov rcx, rbp
call fcn.14001ad10
mov r8, r15
sub r8, rax
mov rdx, r12
mov rcx, rbp
call fcn.14001add0
test rsi, rsi
jne 0x14000356e
xor ebx, ebx
jmp 0x140003579
mov rcx, rsi
call fcn.14001ad10
mov rbx, rax
mov rcx, rbp
call fcn.14001ad10
mov rcx, r15
sub rcx, rax
lea rax, [rbx + 1]
cmp rax, rcx
jae 0x1400035a7
test rsi, rsi
jne 0x140003599
xor eax, eax
jmp 0x1400035a1
mov rcx, rsi
call fcn.14001ad10
lea r15, [rax + 1]
jmp 0x1400035b2
mov rcx, rbp
call fcn.14001ad10
sub r15, rax
mov r8, r15
mov rdx, rsi
mov rcx, rbp
call fcn.14001add0
mov rcx, rbp
call fcn.1400052f0
mov r8, r13
mov rdx, rax
xor ecx, ecx
mov r15, rax
call qword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r12d, eax
test r15, r15
je 0x1400035f1
mov rcx, r15
call fcn.14001b038
mov ecx, r12d
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov rcx, rbp
call fcn.14001b038
test r14, r14
je 0x140003610
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_LocalFree]
test ebx, ebx
je 0x14000367a
cmp ebx, 0xce
je 0x140003642
xor ecx, ecx
call fcn.140007e4c
mov r9, rsi
mov qword [rsp + 0x20], rax
lea r8, str.Unable_to_create_directory__s___s_
mov ecx, edi
lea rdx, str.check_dir
call fcn.1400082ac
jmp 0x140003699
mov r9, rsi
lea r8, str.Directory_name__s_is_too_long
lea rdx, str.check_dir
mov ecx, edi
call fcn.1400082ac
mov eax, 0xfffffffe
jmp 0x14000369e
xor ecx, ecx
call fcn.140007e4c
mov r9, rax
lea r8, str.Unable_to_read_file_attributes__s
jmp 0x140003688
test bpl, 0x10
je 0x14000367e
xor eax, eax
jmp 0x14000369e
lea r8, str._s_is_a_file__not_a_directory
mov r9, rsi
lea rdx, str.check_dir
mov ecx, 3
call fcn.1400082ac
mov eax, 0xfffffffd
lea r11, [rsp + 0x80]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret