Function at 0x14001d310
Capabilities:
Create directory
Get common file path
Set current directory

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rsi
push rdi
push r12
sub rsp, 0x28
mov r12, rcx
mov edx, 0x208
mov ecx, 0x40
mov ebx, 0x104
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
test rax, rax
mov rdi, rax
je 0x14001d3ba
mov esi, 0x208
mov rdx, rdi
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
cmp eax, ebx
jb 0x14001d387
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GlobalHandle]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GlobalFree]
add esi, 0x208
mov ecx, 0x40
mov edx, esi
add ebx, 0x104
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
test rax, rax
mov rdi, rax
jne 0x14001d343
jmp 0x14001d3ba
test rdi, rdi
je 0x14001d3ba
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov rcx, rdi
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GlobalHandle]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GlobalFree]
test ebx, ebx
jne 0x14001da26
xor edx, edx
mov rcx, r12
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x14001da26
test r12, r12
mov qword [rsp + 0x58], rbp
mov qword [rsp + 0x60], r13
je 0x14001d41a
mov ecx, 0x7fffffff
mov rax, r12
xor edx, edx
cmp word [rax], dx
je 0x14001d3fe
add rax, 2
sub rcx, 1
jne 0x14001d3e6
mov edx, 0x80070057
xor eax, eax
jmp 0x14001d414
test rcx, rcx
jne 0x14001d40c
mov edx, 0x80070057
xor eax, eax
jmp 0x14001d414
mov eax, 0x7fffffff
sub rax, rcx
test edx, edx
jns 0x14001d421
jmp 0x14001d41f
mov edx, 0x80070057
xor eax, eax
xor r13d, r13d
test edx, edx
mov ecx, 0x40
cmovns r13, rax
add r13, 1
lea edx, [r13 + r13]
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
test rax, rax
mov rbp, rax
je 0x14001d9f5
test r12, r12
mov qword [rsp + 0x68], r14
mov qword [rsp + 0x20], r15
je 0x14001d49c
mov edx, 0x7fffffff
mov rcx, r12
xor r8d, r8d
cmp word [rcx], r8w
je 0x14001d47e
add rcx, 2
sub rdx, 1
jne 0x14001d464
xor eax, eax
mov r8d, 0x80070057
jmp 0x14001d495
test rdx, rdx
jne 0x14001d48d
xor eax, eax
mov r8d, 0x80070057
jmp 0x14001d495
mov eax, 0x7fffffff
sub rax, rdx
test r8d, r8d
jns 0x14001d4a4
jmp 0x14001d4a2
mov r8d, 0x80070057
xor eax, eax
xor r12d, r12d
test r8d, r8d
mov ecx, 0x40
cmovns r12, rax
add r12, 0x104
lea eax, [r12 + r12]
mov edx, eax
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
mov rdx, rbx
mov ecx, 0x40
mov r14, rax
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
test r13, r13
mov r15, rax
je 0x14001d531
cmp r13, 0x7fffffff
ja 0x14001d531
mov r9, qword [rsp + 0x50]
mov r8d, 0x7ffffffe
mov rdx, r13
sub r8, r13
sub r9, rbp
mov rcx, rbp
lea rax, [r8 + rdx]
test rax, rax
je 0x14001d523
movzx eax, word [r9 + rcx]
test ax, ax
je 0x14001d523
mov word [rcx], ax
add rcx, 2
sub rdx, 1
jne 0x14001d501
jmp 0x14001d528
test rdx, rdx
jne 0x14001d52c
sub rcx, 2
mov word [rcx], 0
mov word [r15], 0
mov word [r14], 0
nop
cmp r13, 0x7fffffff
ja 0x14001d57f
xor edx, edx
test r13, r13
mov rcx, r13
mov rax, rbp
je 0x14001d565
cmp word [rax], dx
je 0x14001d572
add rax, 2
sub rcx, 1
jne 0x14001d556
mov edx, 0x80070057
xor eax, eax
test edx, edx
jns 0x14001d586
jmp 0x14001d584
test rcx, rcx
je 0x14001d565
mov rax, r13
sub rax, rcx
jmp 0x14001d56c
mov edx, 0x80070057
xor eax, eax
xor ebx, ebx
test edx, edx
cmovns rbx, rax
cmp r12, 0x7fffffff
ja 0x14001d5d1
xor r8d, r8d
test r12, r12
mov rcx, r12
mov rax, r15
je 0x14001d5b5
cmp word [rax], r8w
je 0x14001d5c4
add rax, 2
sub rcx, 1
jne 0x14001d5a5
xor edx, edx
mov r8d, 0x80070057
test r8d, r8d
jns 0x14001d5d9
jmp 0x14001d5d7
test rcx, rcx
je 0x14001d5b5
mov rdx, r12
sub rdx, rcx
jmp 0x14001d5bd
mov r8d, 0x80070057
xor edx, edx
xor eax, eax
test r8d, r8d
cmovns rax, rdx
test rax, rax
jne 0x14001d6b4
cmp word [rbp], 0
mov rax, rbp
je 0x14001d610
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
cmp word [rax], 0
jne 0x14001d5f5
cmp rbp, rax
ja 0x14001d63b
nop
nop
movzx ecx, word [rax]
cmp cx, 0x2f
je 0x14001d63b
cmp cx, 0x5c
je 0x14001d63b
cmp cx, 0x3a
je 0x14001d63b
cmp rax, rbp
je 0x14001d69c
mov rdx, rax
mov rcx, rbp
call qword [sym.imp.USER32.dll_CharPrevW]
cmp rbp, rax
jbe 0x14001d610
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
mov r8, rax
test r12, r12
je 0x14001d7c3
cmp r12, 0x7fffffff
ja 0x14001d7c3
mov r9d, 0x7ffffffe
mov rdx, r12
mov rcx, r15
sub r9, r12
sub r8, r15
nop
lea rax, [r9 + rdx]
test rax, rax
je 0x14001d6a1
movzx eax, word [r8 + rcx]
test ax, ax
je 0x14001d6a1
mov word [rcx], ax
add rcx, 2
sub rdx, 1
jne 0x14001d670
sub rcx, 2
mov word [rcx], dx
jmp 0x14001d7c3
mov r8, rbp
jmp 0x14001d647
test rdx, rdx
jne 0x14001d6aa
sub rcx, 2
mov word [rcx], 0
jmp 0x14001d7c3
cmp word [rbp], 0
mov rax, rbp
je 0x14001d6d4
nop
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
cmp word [rax], 0
jne 0x14001d6c0
cmp rbp, rax
ja 0x14001d6ff
movzx ecx, word [rax]
cmp cx, 0x2f
je 0x14001d6ff
cmp cx, 0x5c
je 0x14001d6ff
cmp cx, 0x3a
je 0x14001d6ff
cmp rax, rbp
je 0x14001d752
mov rdx, rax
mov rcx, rbp
call qword [sym.imp.USER32.dll_CharPrevW]
cmp rbp, rax
jbe 0x14001d6d4
mov rcx, rax
call qword [sym.imp.USER32.dll_CharNextW]
mov r8, rax
test r12, r12
je 0x14001d765
cmp r12, 0x7fffffff
ja 0x14001d765
mov r9d, 0x7ffffffe
mov rdx, r12
mov rcx, r14
sub r9, r12
sub r8, r14
nop
nop
lea rax, [r9 + rdx]
test rax, rax
je 0x14001d757
movzx eax, word [r8 + rcx]
test ax, ax
je 0x14001d757
mov word [rcx], ax
add rcx, 2
sub rdx, 1
jne 0x14001d730
jmp 0x14001d75c
mov r8, rbp
jmp 0x14001d70b
test rdx, rdx
jne 0x14001d760
sub rcx, 2
mov word [rcx], 0
mov rdx, r15
mov rcx, r14
call fcn.1400202c0
test r12, r12
je 0x14001d7c3
cmp r12, 0x7fffffff
ja 0x14001d7c3
mov r8d, 0x7ffffffe
mov r9, r14
mov rdx, r12
sub r8, r12
sub r9, r15
mov rcx, r15
lea rax, [r8 + rdx]
test rax, rax
je 0x14001d7b5
movzx eax, word [r9 + rcx]
test ax, ax
je 0x14001d7b5
mov word [rcx], ax
add rcx, 2
sub rdx, 1
jne 0x14001d793
jmp 0x14001d7ba
test rdx, rdx
jne 0x14001d7be
sub rcx, 2
mov word [rcx], 0
mov rcx, rbp
call fcn.1400201b0
cmp r13, 0x7fffffff
ja 0x14001d80e
xor r8d, r8d
test r13, r13
mov rcx, r13
mov rax, rbp
je 0x14001d7f2
cmp word [rax], r8w
je 0x14001d801
add rax, 2
sub rcx, 1
jne 0x14001d7e2
xor edx, edx
mov r8d, 0x80070057
test r8d, r8d
jns 0x14001d816
jmp 0x14001d814
test rcx, rcx
je 0x14001d7f2
mov rdx, r13
sub rdx, rcx
jmp 0x14001d7fa
mov r8d, 0x80070057
xor edx, edx
xor eax, eax
test r8d, r8d
cmovns rax, rdx
cmp rbx, rax
jbe 0x14001d90e
movzx eax, word [rbp + 2]
cmp ax, 0x3a
jne 0x14001d839
cmp word [rbp], 0
jne 0x14001d855
movzx ecx, word [rbp]
cmp cx, 0x2f
je 0x14001d849
cmp cx, 0x5c
jne 0x14001d860
cmp ax, 0x2f
je 0x14001d855
cmp ax, 0x5c
jne 0x14001d860
cmp word [rbp + 4], 0
je 0x14001d90e
mov edx, 0x208
mov ecx, 0x40
mov ebx, 0x104
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
test rax, rax
mov rdi, rax
je 0x14001d540
mov esi, 0x208
nop
nop
nop
mov rdx, rdi
mov ecx, ebx
call qword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
cmp eax, ebx
jb 0x14001d8d7
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GlobalHandle]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GlobalFree]
add esi, 0x208
mov ecx, 0x40
mov edx, esi
add ebx, 0x104
call qword [sym.imp.KERNEL32.dll_GlobalAlloc]
test rax, rax
mov rdi, rax
jne 0x14001d890
jmp 0x14001d540
test rdi, rdi
je 0x14001d540
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov rcx, rdi
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_GlobalHandle]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GlobalFree]
test ebx, ebx
je 0x14001d540
mov rdi, r15
cmp word [rdi], 0
je 0x14001d938
movzx eax, word [rdi]
cmp ax, 0x2f
je 0x14001d938
cmp ax, 0x5c
je 0x14001d938
mov rcx, rdi
call qword [sym.imp.USER32.dll_CharNextW]
mov rdi, rax
cmp word [rax], 0
jne 0x14001d917
test r12, r12
je 0x14001d990
cmp r12, 0x7fffffff
ja 0x14001d990
mov r8d, 0x7ffffffe
mov r9, rbp
mov rdx, r12
sub r8, r12
sub r9, r14
mov rcx, r14
nop
nop
lea rax, [r8 + rdx]
test rax, rax
je 0x14001d982
movzx eax, word [r9 + rcx]
test ax, ax
je 0x14001d982
mov word [rcx], ax
add rcx, 2
sub rdx, 1
jne 0x14001d960
jmp 0x14001d987
test rdx, rdx
jne 0x14001d98b
sub rcx, 2
mov word [rcx], 0
movzx ebx, word [rdi]
mov rdx, r15
mov rcx, r14
mov word [rdi], 0
call fcn.1400202c0
mov word [rdi], bx
add rdi, 2
test bx, bx
je 0x14001d9c2
xor edx, edx
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x14001d911
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_GlobalHandle]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_GlobalHandle]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GlobalFree]
mov r12, qword [rsp + 0x50]
mov r15, qword [rsp + 0x20]
mov r14, qword [rsp + 0x68]
mov rcx, rbp
call qword [sym.imp.KERNEL32.dll_GlobalHandle]
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_GlobalFree]
xor edx, edx
mov rcx, r12
mov r13, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x58]
add rsp, 0x28
pop r12
pop rdi
pop rsi
pop rbx
jmp qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov eax, 1
add rsp, 0x28
pop r12
pop rdi
pop rsi
pop rbx
ret