Function at 0x401f20
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, 0x98
mov r13, qword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov r14d, 1
mov rsi, qword [sym.imp.msvcrt.dll__errno]
lea rbx, [rsp + 0x70]
mov r15, rcx
nop
mov qword [rsp + 0x20], r14
mov r8d, 0x20
mov rcx, rbx
lea r9, str._llu
lea rdx, [0x00401550]
call fcn.0041e030
mov rdx, qword [r15]
lea rdi, [rsp + 0x50]
xor r9d, r9d
mov r8, qword [r15 + 8]
lea rax, [rdi + 0x10]
mov rcx, rdi
mov qword [rsp + 0x50], rax
add r8, rdx
call fcn.0048ee80
movabs rax, 0x7fffffffffffffff
sub rax, qword [rsp + 0x58]
cmp rax, 0xf
jbe 0x4022f4
lea rdx, str._read_the_rules_
mov r8d, 0x10
mov rcx, rdi
call fcn.004904d0
mov r9, qword [rsp + 0x50]
lea rdx, [rdi + 0x10]
mov rcx, qword [rsp + 0x58]
mov r8, qword [rsp + 0x78]
mov r10, qword [rsp + 0x60]
cmp r9, rdx
lea rax, [rcx + r8]
je 0x4021f8
cmp rax, r10
mov rdx, qword [rsp + 0x70]
jbe 0x40200f
lea r10, [rbx + 0x10]
cmp rdx, r10
je 0x402203
mov r10, qword [rsp + 0x80]
cmp rax, r10
jbe 0x4021e1
mov rcx, rdi
call fcn.004904d0
lea rbp, [rsp + 0x30]
lea rdx, [rbp + 0x10]
mov qword [rsp + 0x30], rdx
mov rcx, qword [rax]
lea rdx, [rax + 0x10]
cmp rcx, rdx
je 0x4021d2
mov qword [rsp + 0x30], rcx
mov rcx, qword [rax + 0x10]
mov qword [rsp + 0x40], rcx
mov rcx, qword [rax + 8]
add rdi, 0x10
mov byte [rax + 0x10], 0
mov qword [rsp + 0x38], rcx
mov qword [rax], rdx
mov rcx, qword [rsp + 0x50]
mov qword [rax + 8], 0
cmp rcx, rdi
je 0x40206e
call fcn.004a1d60
mov rcx, qword [rsp + 0x70]
lea rax, [rbx + 0x10]
cmp rcx, rax
je 0x402081
call fcn.004a1d60
mov r12, qword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov edi, 5
mov rcx, qword [rsp + 0x30]
call r12
cmp eax, 0xffffffff
mov rcx, qword [rsp + 0x30]
jne 0x4021b7
xor edx, edx
call r13
test eax, eax
je 0x4020bc
mov rcx, rbp
call fcn.00401920
test al, al
jne 0x402240
mov qword [rsp + 0x70], 0
mov dword [rsp + 0x78], 0x5f5e100
jmp 0x4020d7
call rsi
cmp dword [rax], 4
jne 0x4020e7
mov rdx, rbx
mov rcx, rbx
call fcn.0041bfb0
cmp eax, 0xffffffff
je 0x4020d0
sub edi, 1
jne 0x40208d
lea rcx, [0x004d10b8]
call fcn.00419370
test eax, eax
jne 0x402300
mov rcx, qword [0x004ac0f0]
mov r8d, 0x19
lea rdx, str.Failed_to_create_folder:
call fcn.0049c0f0
mov r8, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x30]
mov rcx, qword [0x004ac0f0]
call fcn.0049c0f0
mov r8d, 7
mov rcx, rax
mov rdi, rax
lea rdx, str._after
call fcn.0049c0f0
mov edx, 5
mov rcx, rdi
call fcn.00468550
mov r8d, 9
mov rcx, rax
mov rdi, rax
lea rdx, str._retries.
call fcn.0049c0f0
mov rax, qword [rdi]
mov rax, qword [rax - 0x18]
mov r12, qword [rdi + rax + 0xf0]
test r12, r12
je 0x402307
cmp byte [r12 + 0x38], 0
je 0x40220e
movsx edx, byte [r12 + 0x43]
mov rcx, rdi
call fcn.004664c0
mov rcx, rax
call fcn.004666b0
lea rcx, [0x004d10b8]
call fcn.00419610
mov rcx, qword [rsp + 0x30]
add rbp, 0x10
add r14, 1
cmp rcx, rbp
je 0x401f50
call fcn.004a1d60
jmp 0x401f50
movdqu xmm0, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x40], xmm0
jmp 0x402043
mov qword [rsp + 0x20], rcx
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.0048e8e0
jmp 0x402017
mov r10d, 0xf
jmp 0x401fe7
mov r10d, 0xf
jmp 0x402006
mov rcx, r12
call fcn.00427660
mov rax, qword [r12]
lea rcx, [0x004278a0]
mov edx, 0xa
mov rax, qword [rax + 0x30]
cmp rax, rcx
je 0x402196
mov rcx, r12
call rax
movsx edx, al
jmp 0x402196
lea rcx, [0x004d10b8]
call fcn.00419370
test eax, eax
jne 0x40230c
mov rcx, qword [0x004ac110]
mov r8d, 0x1e
lea rdx, str.Created_and_protected_folder:
call fcn.0049c0f0
mov r8, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x30]
mov rcx, qword [0x004ac110]
call fcn.0049c0f0
mov r12, rax
mov rax, qword [rax]
mov rax, qword [rax - 0x18]
mov rdi, qword [r12 + rax + 0xf0]
test rdi, rdi
je 0x402313
cmp byte [rdi + 0x38], 0
je 0x4022ca
movsx edx, byte [rdi + 0x43]
mov rcx, r12
call fcn.004664c0
mov rcx, rax
call fcn.004666b0
lea rcx, [0x004d10b8]
call fcn.00419610
mov rcx, qword [rsp + 0x30]
jmp 0x4021b7
mov rcx, rdi
call fcn.00427660
mov rax, qword [rdi]
lea rcx, [0x004278a0]
mov edx, 0xa
mov rax, qword [rax + 0x30]
cmp rax, rcx
je 0x4022a4
mov rcx, rdi
call rax
movsx edx, al
jmp 0x4022a4
lea rcx, [0x004a714f]
call fcn.0049cd90
mov ecx, eax
call fcn.0049ce30
call fcn.0049c8a0
mov ecx, eax
call fcn.0049ce30
call fcn.0049c8a0
lea rcx, [0x004d10b8]
mov rbx, rax
mov rsi, rdx
call fcn.00419610
mov rcx, qword [rsp + 0x30]
add rbp, 0x10
cmp rcx, rbp
je 0x40233d
call fcn.004a1d60
mov rcx, rbx
mov rdx, rsi
sub rdx, 1
jne 0x40244f
call fcn.004a1fa0
lea rcx, [0x004d10b8]
mov rbx, rax
call fcn.0048ab10
lea rcx, str.Error_creating_folder:
call fcn.0046c750
mov rcx, qword [0x004ac0f0]
lea rdx, str.Error_creating_folder:
mov r8, rax
call fcn.0049c0f0
mov rax, qword [rbx]
mov rcx, rbx
call qword [rax + 0x10]
mov rcx, qword [0x004ac0f0]
mov rdx, rax
call fcn.0049f7c0
lea rcx, str._at
mov rbx, rax
call fcn.0046c750
lea rdx, str._at
mov rcx, rbx
mov r8, rax
call fcn.0049c0f0
mov r8, qword [r15 + 8]
mov rcx, rbx
mov rdx, qword [r15]
call fcn.0049c0f0
mov rcx, rax
call fcn.0049d6b0
lea rcx, [0x004d10b8]
call fcn.00419610
call fcn.004a21c0
nop
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
call fcn.0040d780
mov rcx, rax
jmp 0x402343