Function at 0x426070
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 0x4268d2
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 0x4261f5
mov rcx, qword [rsp + 0x68]
cmp rbx, rcx
je 0x4265d0
mov r8, qword [rsp + 0xb8]
mov rax, r8
sub rax, rdx
cmp rax, rdi
jae 0x4265d0
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 0x4261d0
cmp eax, 2
jne 0x426348
mov rax, qword [rsp + 0x68]
sub rax, qword [rsp + 0x50]
cmp byte [rsp + 0x149], 0
mov qword [rsp + 0x140], rax
je 0x4269bf
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 0x4262df
test rsi, rsi
je 0x4269cb
mov rax, rbx
sar rax, 1
cmp rax, 7
mov rdx, rax
mov qword [rsp + 0x80], rax
ja 0x426910
cmp rax, 1
jne 0x426880
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 0x426647
mov rcx, rbp
call sym.operator_delete_void_
mov rcx, qword [rsp + 0x90]
jmp 0x426647
cmp eax, 3
jne 0x4265d0
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 0x426382
cmp qword [rsp + 0x50], 0
je 0x4269b3
mov rax, qword [rsp + 0x58]
cmp rax, 7
mov qword [rsp + 0x78], rax
ja 0x426897
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 0x42696c
lea rax, [r11 - 1]
cmp rax, 0xe
jbe 0x42696c
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 0x4263e0
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 0x426570
movsx r10w, byte [rax]
mov word [rcx], r10w
lea r10, [rax + 1]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 1]
mov word [rcx + 2], r10w
lea r10, [rax + 2]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 2]
mov word [rcx + 4], r10w
lea r10, [rax + 3]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 3]
mov word [rcx + 6], r10w
lea r10, [rax + 4]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 4]
mov word [rcx + 8], r10w
lea r10, [rax + 5]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 5]
mov word [rcx + 0xa], r10w
lea r10, [rax + 6]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 6]
mov word [rcx + 0xc], r10w
lea r10, [rax + 7]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 7]
mov word [rcx + 0xe], r10w
lea r10, [rax + 8]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 8]
mov word [rcx + 0x10], r10w
lea r10, [rax + 9]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 9]
mov word [rcx + 0x12], r10w
lea r10, [rax + 0xa]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 0xa]
mov word [rcx + 0x14], r10w
lea r10, [rax + 0xb]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 0xb]
mov word [rcx + 0x16], r10w
lea r10, [rax + 0xc]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 0xc]
mov word [rcx + 0x18], r10w
lea r10, [rax + 0xd]
cmp rbx, r10
je 0x426570
movsx r10w, byte [rax + 0xd]
mov word [rcx + 0x1a], r10w
lea r10, [rax + 0xe]
cmp rbx, r10
je 0x426570
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 0x4265a8
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 0x4265fd
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 0x4268f1
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 0x426870
xor esi, esi
test al, 0x10
jne 0x426860
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 0x426860
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 0x426999
mov rax, rbx
sar rax, 1
cmp rax, 7
mov rdx, rax
mov qword [rsp + 0x88], rax
ja 0x426751
cmp rax, 1
jne 0x426743
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 0x4267a3
mov rcx, qword [rsp + 0xd0]
add rsi, 1
cmp rcx, r12
je 0x426680
call sym.operator_delete_void_
jmp 0x426680
test rax, rax
jne 0x4269ab
mov rcx, r12
jmp 0x426709
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 0x426709
call qword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
mov rcx, qword [rsp + 0xd0]
jne 0x4267d0
call r15
cmp eax, 0xffffffff
je 0x4267c8
test al, 0x10
jne 0x426724
mov rcx, qword [rsp + 0xd0]
add r14, 0x10
cmp rcx, r14
je 0x4267de
call sym.operator_delete_void_
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x90]
add rax, 0x10
cmp rcx, rax
je 0x4267f9
call sym.operator_delete_void_
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x118]
add rax, 0x38
cmp rcx, rax
je 0x426814
call sym.operator_delete_void_
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0xf8]
add rax, 0x18
cmp rcx, rax
je 0x42682f
call sym.operator_delete_void_
mov rcx, qword [rsp + 0xf0]
test rcx, rcx
je 0x426842
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 0x4267de
xor esi, esi
jmp 0x426664
test rax, rax
mov rax, qword [rsp + 0x40]
jne 0x4269a5
lea rcx, [rax + 0x10]
jmp 0x426318
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 0x42639f
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 0x42663f
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 0x426318
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 0x426980
jmp 0x426570
lea rcx, [0x0051c778]
call sym.std::__throw_logic_error_char_const_
add rax, 0x10
jmp 0x42693d
mov rax, r12
jmp 0x42677c
lea rcx, [0x0051c778]
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, [0x0051c778]
call sym.std::__throw_logic_error_char_const_
mov rcx, qword [rsp + 0xd0]
add rsi, 0x10
mov rbx, rax
cmp rcx, rsi
je 0x4269f0
call sym.operator_delete_void_
mov rcx, qword [rsp + 0xb0]
add r13, 0x10
cmp rcx, r13
je 0x426a06
call sym.operator_delete_void_
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x118]
add rax, 0x38
cmp rcx, rax
je 0x426a21
call sym.operator_delete_void_
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0xf8]
add rax, 0x18
cmp rcx, rax
je 0x426a3c
call sym.operator_delete_void_
mov rcx, qword [rsp + 0xf0]
test rcx, rcx
je 0x426a4f
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 0x426a70
call sym.operator_delete_void_
mov rdx, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x90]
add rdx, 0x10
cmp rcx, rdx
jne 0x426a01
jmp 0x426a06