Function at 0x425f30
Capabilities:
Check if file exists
Create directory
Get file attributes

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x158
mov qword [rsp + 0x1a0], rcx
mov ecx, 0x20
call sym.operator_new_unsigned_long_long_
xor edx, edx
mov rcx, rax
mov rsi, rax
call sym.std::codecvt_wchar_t__char__int_::codecvt_unsigned_long_long_
lea rax, method.std.codecvt_utf8_wchar_t__1114111ul___std::codecvt_mode_0_::codecvt_utf8__
xor r8d, r8d
xor r9d, r9d
mov qword [rsi + 0x18], 0x10ffff
mov qword [rsi], rax
lea rax, [rsp + 0x108]
xor r10d, r10d
mov qword [rsp + 0xf8], rax
lea rax, [rsp + 0x128]
mov qword [rsp + 0x118], rax
mov rax, qword [rsp + 0x1a0]
lea rdi, [rsp + 0xf0]
mov qword [rsp + 0x48], rdi
lea r13, [rsp + 0xb0]
mov qword [rsp + 0xf0], rsi
mov qword [rsp + 0x100], 0
mov rdi, qword [rax]
mov byte [rsp + 0x108], 0
mov qword [rsp + 0x120], 0
mov rax, qword [rax + 8]
mov word [rsp + 0x128], r8w
mov dword [rsp + 0x138], 0
mov rbx, rdi
mov qword [rsp + 0x50], rdi
add rbx, rax
mov qword [rsp + 0x58], rax
mov word [rsp + 0x148], r9w
lea rax, [r13 + 0x10]
cmp rdi, rbx
mov qword [rsp + 0x140], 0
mov qword [rsp + 0xb0], rax
mov qword [rsp + 0xb8], 0
mov word [rsp + 0xc0], r10w
je 0x426792
mov qword [rsp + 0x68], rdi
lea r15, [rsp + 0x70]
mov rcx, rsi
xor r12d, r12d
call sym.std::__codecvt_utf8_base_wchar_t_::do_max_length___const
lea r14, [rsp + 0x68]
mov rcx, qword [rsp + 0x68]
lea edi, [rax + 1]
mov rax, qword [rsp + 0x48]
mov r8, qword [rsp + 0xb8]
movsxd rdi, edi
add rax, 0x48
mov qword [rsp + 0x40], rax
jmp 0x4260b5
mov rcx, qword [rsp + 0x68]
cmp rbx, rcx
je 0x426490
mov r8, qword [rsp + 0xb8]
mov rax, r8
sub rax, rdx
cmp rax, rdi
jae 0x426490
mov rdx, rbx
sub rdx, rcx
mov rcx, r13
imul rdx, rdi
add rdx, r8
xor r8d, r8d
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___::resize_unsigned_long_long__wchar_t_
mov rdx, qword [rsp + 0xb0]
mov r9, rbx
mov rcx, qword [rsp + 0xb8]
mov r10, qword [rsi]
mov qword [rsp + 0x38], r15
mov qword [rsp + 0x20], r14
mov r8, qword [rsp + 0x68]
lea rax, [rdx + r12*2]
lea rdx, [rdx + rcx*2]
mov qword [rsp + 0x70], rax
mov rcx, rsi
mov qword [rsp + 0x30], rdx
mov rdx, qword [rsp + 0x40]
mov qword [rsp + 0x28], rax
call qword [r10 + 0x20]
mov rbp, qword [rsp + 0xb0]
mov rdx, qword [rsp + 0x70]
sub rdx, rbp
sar rdx, 1
cmp eax, 1
mov r12, rdx
je 0x426090
cmp eax, 2
jne 0x426208
mov rax, qword [rsp + 0x68]
sub rax, qword [rsp + 0x50]
cmp byte [rsp + 0x149], 0
mov qword [rsp + 0x140], rax
je 0x42687f
lea rax, [rsp + 0x90]
mov rsi, qword [rsp + 0x118]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x90], rax
mov rax, qword [rsp + 0x120]
lea rbx, [rax + rax]
mov rax, rsi
add rax, rbx
je 0x42619f
test rsi, rsi
je 0x42688b
mov rax, rbx
sar rax, 1
cmp rax, 7
mov rdx, rax
mov qword [rsp + 0x80], rax
ja 0x4267d0
cmp rax, 1
jne 0x426740
movzx eax, word [rsi]
mov word [rsp + 0xa0], ax
mov rax, qword [rsp + 0x40]
lea rcx, [rax + 0x10]
add r13, 0x10
mov qword [rsp + 0x98], rdx
xor edx, edx
cmp rbp, r13
mov word [rcx + rbx], dx
je 0x426507
mov rcx, rbp
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x90]
jmp 0x426507
cmp eax, 3
jne 0x426490
mov rax, qword [rsp + 0xb8]
lea rsi, [rsp + 0xd0]
test rbx, rbx
lea rdi, [rax + rax]
lea rax, [rsi + 0x10]
mov qword [rsp + 0xd0], rax
je 0x426242
cmp qword [rsp + 0x50], 0
je 0x426873
mov rax, qword [rsp + 0x58]
cmp rax, 7
mov qword [rsp + 0x78], rax
ja 0x426757
lea r9, [rsi + 0x10]
mov r8, rax
xor edx, edx
mov r11, qword [rsp + 0x58]
mov r10, qword [rsp + 0x50]
lea rax, [r9 + r11*2]
cmp r10, rax
setae cl
cmp r9, rbx
setae al
or cl, al
je 0x42682c
lea rax, [r11 - 1]
cmp rax, 0xe
jbe 0x42682c
and r11, 0xfffffffffffffff0
xor ecx, ecx
pxor xmm3, xmm3
mov rax, r11
nop dword [rax]
movdqu xmm0, xmmword [r10 + rcx]
movdqa xmm1, xmm3
pcmpgtb xmm1, xmm0
movdqa xmm2, xmm0
punpcklbw xmm2, xmm1
punpckhbw xmm0, xmm1
movups xmmword [r9 + rcx*2], xmm2
movups xmmword [r9 + rcx*2 + 0x10], xmm0
add rcx, 0x10
cmp rcx, rax
jne 0x4262a0
mov r11, qword [rsp + 0x58]
mov rax, qword [rsp + 0x50]
mov r10, r11
and r10, 0xfffffffffffffff0
lea rcx, [r9 + r10*2]
add rax, r10
cmp r11, r10
je 0x426430
movsx r10w, byte [rax]
mov word [rcx], r10w
lea r10, [rax + 1]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 1]
mov word [rcx + 2], r10w
lea r10, [rax + 2]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 2]
mov word [rcx + 4], r10w
lea r10, [rax + 3]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 3]
mov word [rcx + 6], r10w
lea r10, [rax + 4]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 4]
mov word [rcx + 8], r10w
lea r10, [rax + 5]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 5]
mov word [rcx + 0xa], r10w
lea r10, [rax + 6]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 6]
mov word [rcx + 0xc], r10w
lea r10, [rax + 7]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 7]
mov word [rcx + 0xe], r10w
lea r10, [rax + 8]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 8]
mov word [rcx + 0x10], r10w
lea r10, [rax + 9]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 9]
mov word [rcx + 0x12], r10w
lea r10, [rax + 0xa]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 0xa]
mov word [rcx + 0x14], r10w
lea r10, [rax + 0xb]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 0xb]
mov word [rcx + 0x16], r10w
lea r10, [rax + 0xc]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 0xc]
mov word [rcx + 0x18], r10w
lea r10, [rax + 0xd]
cmp rbx, r10
je 0x426430
movsx r10w, byte [rax + 0xd]
mov word [rcx + 0x1a], r10w
lea r10, [rax + 0xe]
cmp rbx, r10
je 0x426430
movsx ax, byte [rax + 0xe]
mov word [rcx + 0x1c], ax
nop
xor ecx, ecx
sar rdi, 1
mov qword [rsp + 0xd8], r8
mov word [r9 + r8*2], cx
mov rcx, r13
mov qword [rsp + 0x20], r8
mov r8, rdi
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___::_M_replace_unsigned_long_long__unsigned_long_long__wchar_t_const__unsigned_long_long_
mov rcx, qword [rsp + 0xd0]
add rsi, 0x10
cmp rcx, rsi
je 0x426468
call sym.operator_delete_void_
mov rax, qword [rsp + 0x58]
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0x140], rax
mov rax, qword [rsp + 0xb8]
jmp 0x4264bd
xor r8d, r8d
mov rcx, r13
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___::resize_unsigned_long_long__wchar_t_
mov rax, qword [rsp + 0x68]
sub rax, qword [rsp + 0x50]
mov rcx, qword [rsp + 0xb0]
mov qword [rsp + 0x140], rax
mov rax, qword [rsp + 0xb8]
lea rdi, [rsp + 0x90]
add r13, 0x10
lea rdx, [rsp + 0xa0]
cmp rcx, r13
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x90], rdx
je 0x4267b1
mov rdx, qword [rsp + 0xc0]
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0xa0], rdx
mov qword [rsp + 0x98], rax
mov r15, qword [sym.imp.KERNEL32.dll_GetFileAttributesW]
call r15
cmp eax, 0xffffffff
je 0x426730
xor esi, esi
test al, 0x10
jne 0x426720
mov r13, qword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea r14, [rsp + 0xd0]
lea r12, [r14 + 0x10]
nop word [rax + rax]
mov rcx, qword [rsp + 0x1a0]
mov r8, rsi
mov edx, 0x5c
call sym.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___::find_char__unsigned_long_long__const
cmp rax, 0xffffffffffffffff
mov rsi, rax
je 0x426720
mov rbx, qword [rsp + 0x98]
mov qword [rsp + 0xd0], r12
mov rbp, qword [rsp + 0x90]
cmp rax, rbx
cmovbe rbx, rax
mov rax, rbp
add rbx, rbx
add rax, rbx
setne dil
test rbp, rbp
sete al
and dil, al
jne 0x426859
mov rax, rbx
sar rax, 1
cmp rax, 7
mov rdx, rax
mov qword [rsp + 0x88], rax
ja 0x426611
cmp rax, 1
jne 0x426603
movzx eax, word [rbp]
mov rcx, r12
mov word [rsp + 0xe0], ax
xor eax, eax
mov qword [rsp + 0xd8], rdx
xor edx, edx
mov word [rcx + rbx], ax
call r13
test eax, eax
je 0x426663
mov rcx, qword [rsp + 0xd0]
add rsi, 1
cmp rcx, r12
je 0x426540
call sym.operator_delete_void_
jmp 0x426540
test rax, rax
jne 0x42686b
mov rcx, r12
jmp 0x4265c9
lea rdx, [rsp + 0x88]
xor r8d, r8d
mov rcx, r14
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___::_M_create_unsigned_long_long__unsigned_long_long_
mov rdx, qword [rsp + 0x88]
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xe0], rdx
mov r8, rbx
mov rdx, rbp
mov rcx, rax
call sym.memcpy
mov rdx, qword [rsp + 0x88]
mov rcx, qword [rsp + 0xd0]
lea rbx, [rdx + rdx]
jmp 0x4265c9
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
mov rcx, qword [rsp + 0xd0]
jne 0x426690
call r15
cmp eax, 0xffffffff
je 0x426688
test al, 0x10
jne 0x4265e4
mov rcx, qword [rsp + 0xd0]
add r14, 0x10
cmp rcx, r14
je 0x42669e
call sym.operator_delete_void_
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x90]
add rax, 0x10
cmp rcx, rax
je 0x4266b9
call sym.operator_delete_void_
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x118]
add rax, 0x38
cmp rcx, rax
je 0x4266d4
call sym.operator_delete_void_
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0xf8]
add rax, 0x18
cmp rcx, rax
je 0x4266ef
call sym.operator_delete_void_
mov rcx, qword [rsp + 0xf0]
test rcx, rcx
je 0x426702
mov rax, qword [rcx]
call qword [rax + 8]
mov eax, edi
add rsp, 0x158
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov edi, 1
jmp 0x42669e
xor esi, esi
jmp 0x426524
test rax, rax
mov rax, qword [rsp + 0x40]
jne 0x426865
lea rcx, [rax + 0x10]
jmp 0x4261d8
lea rdx, [rsp + 0x78]
xor r8d, r8d
mov rcx, rsi
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___::_M_create_unsigned_long_long__unsigned_long_long_
mov r8, qword [rsp + 0x78]
mov rdx, rbp
mov r9, rax
mov qword [rsp + 0xd0], rax
sub rdx, qword [rsp + 0xb0]
mov qword [rsp + 0xe0], r8
sar rdx, 1
jmp 0x42625f
lea rax, [rsp + 0x90]
mov qword [rsp + 0x40], rax
lea rax, [rsp + 0xa0]
mov qword [rsp + 0x90], rax
xor eax, eax
mov rdi, qword [rsp + 0x40]
movdqa xmm4, xmmword [rsp + 0xc0]
movaps xmmword [rsp + 0xa0], xmm4
lea rcx, [rdi + 0x10]
jmp 0x4264ff
mov rcx, qword [rsp + 0x40]
lea rdx, [rsp + 0x80]
xor r8d, r8d
call sym.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___::_M_create_unsigned_long_long__unsigned_long_long_
mov rdx, qword [rsp + 0x80]
mov qword [rsp + 0x90], rax
mov qword [rsp + 0xa0], rdx
mov r8, rbx
mov rdx, rsi
mov rcx, rax
call sym.memcpy
mov rdx, qword [rsp + 0x80]
mov rbp, qword [rsp + 0xb0]
mov rcx, qword [rsp + 0x90]
lea rbx, [rdx + rdx]
jmp 0x4261d8
mov r10, qword [rsp + 0x58]
xor eax, eax
mov r11, qword [rsp + 0x50]
nop dword [rax + rax]
movsx cx, byte [r11 + rax]
mov word [r9 + rax*2], cx
add rax, 1
cmp r10, rax
jne 0x426840
jmp 0x426430
lea rcx, [0x00519298]
call sym.std::__throw_logic_error_char_const_
add rax, 0x10
jmp 0x4267fd
mov rax, r12
jmp 0x42663c
lea rcx, [0x00519298]
call sym.std::__throw_logic_error_char_const_
lea rcx, str.wstring_convert::from_bytes
call sym.std::__throw_range_error_char_const_
lea rcx, [0x00519298]
call sym.std::__throw_logic_error_char_const_
mov rcx, qword [rsp + 0xd0]
add rsi, 0x10
mov rbx, rax
cmp rcx, rsi
je 0x4268b0
call sym.operator_delete_void_
mov rcx, qword [rsp + 0xb0]
add r13, 0x10
cmp rcx, r13
je 0x4268c6
call sym.operator_delete_void_
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x118]
add rax, 0x38
cmp rcx, rax
je 0x4268e1
call sym.operator_delete_void_
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0xf8]
add rax, 0x18
cmp rcx, rax
je 0x4268fc
call sym.operator_delete_void_
mov rcx, qword [rsp + 0xf0]
test rcx, rcx
je 0x42690f
mov rax, qword [rcx]
call qword [rax + 8]
mov rcx, rbx
call sym._Unwind_Resume
mov rcx, qword [rsp + 0xd0]
add r14, 0x10
mov rbx, rax
cmp rcx, r14
je 0x426930
call sym.operator_delete_void_
mov rdx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x90]
add rdx, 0x10
cmp rcx, rdx
jne 0x4268c1
jmp 0x4268c6