Function at 0x4349c0
Capabilities:
Check if file exists
Get common file path
Get file attributes
Set current directory

Disassembly:
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x668
mov rbp, rsp
mov rbx, rcx
mov esi, edx
cmp word [rbx], 0x5c
jne 0x4349ec
cmp word [rbx + 2], 0x5c
jne 0x4349ec
mov eax, 0x23bd
jmp 0x434cdb
mov ecx, 0x104
lea rdx, [rbp + 0x3c]
call sub.kernel32.dll_GetCurrentDirectoryW
movzx rax, word [rbp + 0x3c]
movzx rcx, word [rbp + 0x3c]
sub cx, 0x61
cmp cx, 0x1a
jae 0x434a18
movzx rax, word [rbp + 0x3c]
and ax, 0xffdf
mov word [rbp + 0x658], 0x3d
lea rcx, [0x00434cf0]
mov qword [rbp + 0x28], rcx
movzx rcx, word [rbx]
cmp cx, 0xff
ja 0x434a48
mov rdx, qword [rbp + 0x28]
movzx rcx, cx
bt qword [rdx], rcx
setb cl
jmp 0x434a4b
xor rcx, rcx
test cl, cl
je 0x434a59
cmp word [rbx + 2], 0x3a
sete cl
jmp 0x434a5c
xor rcx, rcx
test cl, cl
je 0x434a87
movzx rax, word [rbx]
movzx rcx, word [rbx]
sub cx, 0x61
cmp cx, 0x1a
jae 0x434a7a
movzx rax, word [rbx]
and ax, 0xffdf
mov word [rbp + 0x65a], ax
add rbx, 4
jmp 0x434a8e
mov word [rbp + 0x65a], ax
mov word [rbp + 0x65c], 0x3a
mov word [rbp + 0x65e], 0
mov rax, rbx
mov rcx, rax
call fcn.0040aa60
mov edi, eax
cmp word [rbx], 0x5c
jne 0x434b04
add edi, 2
mov edi, edi
cvtsi2sd xmm0, rdi
comisd xmm0, xmmword [0x00434ce8]
jbe 0x434ad2
mov eax, 0xce
jmp 0x434cdb
movzx rax, word [rbp + 0x65a]
mov word [rbp + 0x246], ax
movzx rax, word [rbp + 0x65c]
mov word [rbp + 0x248], ax
lea rcx, [rbp + 0x24a]
mov rdx, rbx
call fcn.00429d70
jmp 0x434bc8
lea rcx, [rbp + 0x658]
call fcn.00432270
mov qword [rbp + 0x30], rax
cmp qword [rbp + 0x30], 0
je 0x434b2d
lea rcx, [rbp + 0x246]
mov rdx, qword [rbp + 0x30]
call fcn.00429d70
jmp 0x434b54
movzx rax, word [rbp + 0x65a]
mov word [rbp + 0x246], ax
movzx rax, word [rbp + 0x65c]
mov word [rbp + 0x248], ax
mov word [rbp + 0x24a], 0
lea rax, [rbp + 0x246]
mov rcx, rax
call fcn.0040aa60
mov eax, eax
lea rax, [rbp + rax*2 + 0x246]
mov qword [rbp + 0x30], rax
mov rax, qword [rbp + 0x30]
mov word [rax], 0x5c
add qword [rbp + 0x30], 2
mov edi, edi
mov rax, qword [rbp + 0x30]
lea rcx, [rbp + 0x246]
neg rcx
lea rax, [rax + rcx]
mov ecx, 2
cqo
idiv rcx
lea rax, [rdi + rax]
cvtsi2sd xmm0, rax
comisd xmm0, xmmword [0x00434ce8]
jbe 0x434bbc
mov eax, 0xce
jmp 0x434cdb
mov rcx, qword [rbp + 0x30]
mov rdx, rbx
call fcn.00429d70
mov word [rbp + 0x244], 0
lea rcx, [rbp + 0x246]
mov edx, 0x104
lea r8, [rbp + 0x3c]
lea r9, [rbp + 0x30]
call sub.kernel32.dll_GetFullPathNameW
test eax, eax
jne 0x434bfa
mov eax, 5
jmp 0x434cdb
cmp qword [rbp + 0x30], 0
jne 0x434c18
lea rax, [rbp + 0x3c]
mov rcx, rax
call fcn.0040aa60
mov eax, eax
lea rax, [rbp + rax*2 + 0x3c]
mov qword [rbp + 0x30], rax
mov rax, qword [rbp + 0x30]
cmp word [rax], 0
jne 0x434c45
lea rax, [rbp + 0x42]
cmp qword [rbp + 0x30], rax
jbe 0x434c45
mov rax, qword [rbp + 0x30]
cmp word [rax - 2], 0x5c
jne 0x434c45
sub qword [rbp + 0x30], 2
mov rax, qword [rbp + 0x30]
mov word [rax], 0
mov rax, qword [0x004895e8]
cmp byte [rax], 0
je 0x434c5d
lea rcx, [rbp + 0x3c]
xor rdx, rdx
call fcn.00434820
test sil, sil
je 0x434cad
lea rcx, [rbp + 0x3c]
call sub.kernel32.dll_GetFileAttributesW
cmp eax, 0xffffffff
je 0x434c7a
mov ecx, eax
test ecx, 0x410
jne 0x434c99
cmp eax, 0xffffffff
jne 0x434c91
call sub.kernel32.dll_GetLastError_2
cmp eax, 2
jne 0x434cdb
mov eax, 3
jmp 0x434cdb
mov eax, 0x10b
jmp 0x434cdb
lea rcx, [rbp + 0x3c]
call sub.kernel32.dll_SetCurrentDirectoryW
test eax, eax
jne 0x434cad
call sub.kernel32.dll_GetLastError_2
jmp 0x434cdb
lea rcx, [rbp + 0x658]
lea rdx, [rbp + 0x3c]
call fcn.004325e0
test eax, eax
je 0x434cc9
mov eax, 8
jmp 0x434cdb
mov rcx, qword [0x00489cd8]
xor rdx, rdx
call fcn.00434760
xor rax, rax
lea rsp, [rbp + 0x668]
pop rbx
pop rsi
pop rdi
pop rbp
ret