Function at 0x100404480
Capabilities:
Create directory

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x438
lea rdx, [0x10040e1f3]
mov rsi, rcx
call fcn.10040a510
test eax, eax
je 0x100404b4f
mov rax, qword [rsi]
mov edx, dword [rax - 8]
lea rcx, [rax - 0x18]
lea r8, [rax - 8]
test edx, edx
js 0x1004049c0
cmp rcx, qword [sym.imp.cygstdc_6.dll_std::string::_Rep::_S_empty_rep_storage]
jne 0x100404b20
lea r12, [rsp + 0x250]
lea r13, [0x10040e015]
mov r8d, 1
mov rdx, r13
mov rcx, r12
mov qword [rsp + 0x250], rax
call fcn.10040a478
lea rdx, [0x100414010]
mov rcx, r12
call fcn.10040a470
mov rdx, qword [rax]
mov rbx, qword [sym.imp.cygstdc_6.dll_std::string::_Rep::_S_empty_rep_storage]
mov qword [rsp + 0x48], rdx
lea rdx, [rbx + 0x18]
mov qword [rax], rdx
mov rax, qword [rsp + 0x250]
lea rcx, [rax - 0x18]
cmp rcx, rbx
jne 0x100404aa0
mov rax, qword [rsi]
mov edx, dword [rax - 8]
lea rcx, [rax - 0x18]
lea r8, [rax - 8]
test edx, edx
js 0x1004049f0
cmp rcx, rbx
jne 0x100404b30
mov r8d, 1
mov rdx, r13
mov rcx, r12
mov qword [rsp + 0x250], rax
call fcn.10040a478
lea rdx, [0x100414008]
mov rcx, r12
call fcn.10040a470
mov rdx, qword [rax]
mov qword [rsp + 0x50], rdx
lea rdx, [rbx + 0x18]
mov qword [rax], rdx
mov rax, qword [rsp + 0x250]
lea rcx, [rax - 0x18]
cmp rcx, rbx
jne 0x100404ac8
mov rax, qword [rsi]
mov edx, dword [rax - 8]
lea rcx, [rax - 0x18]
lea r8, [rax - 8]
test edx, edx
js 0x1004049d8
cmp rcx, rbx
jne 0x100404b10
mov r8d, 1
mov rdx, r13
mov rcx, r12
mov qword [rsp + 0x250], rax
call fcn.10040a478
lea rdx, [section..bss]
mov rcx, r12
call fcn.10040a470
mov rdx, qword [rax]
mov qword [rsp + 0x58], rdx
lea rdx, [rbx + 0x18]
mov qword [rax], rdx
mov rax, qword [rsp + 0x250]
lea rcx, [rax - 0x18]
cmp rcx, rbx
jne 0x100404a50
mov rcx, qword [rsi]
mov edx, 0x1ff
lea r13, [rsp + 0x50]
call sub.cygwin1.dll_mkdir
test eax, eax
jne 0x100404bc7
mov rcx, qword [rsp + 0x50]
mov edx, 0x1ff
lea r13, [rsp + 0x50]
call sub.cygwin1.dll_mkdir
test eax, eax
jne 0x100404e9f
lea r15, [rsp + 0x148]
mov rcx, r15
mov r14, qword [rsp + 0x58]
call fcn.10040a3a0
mov rax, qword [sym.imp.cygstdc_6.dll_vtable_for_std::basic_ios_char__std::char_traits_char___]
xor edx, edx
add rax, 0x10
mov qword [rsp + 0x148], rax
mov rax, qword [sym.imp.cygstdc_6.dll_VTT_for_std::basic_ofstream_char__std::char_traits_char___]
mov word [rsp + 0x228], dx
mov rdi, qword [rax + 8]
lea rsi, [rsp + 0x70]
mov rcx, qword [rdi - 0x18]
mov rbp, qword [rax + 0x10]
add rcx, rsi
mov qword [rsp + 0x220], 0
mov qword [rsp + 0x230], 0
mov qword [rsp + 0x238], 0
mov qword [rsp + 0x240], 0
mov qword [rsp + 0x248], 0
mov qword [rsp + 0x70], rdi
mov qword [rcx], rbp
xor edx, edx
mov qword [rsp + 0x30], rsi
call fcn.10040a390
mov rsi, qword [sym.imp.cygstdc_6.dll_vtable_for_std::basic_ofstream_char__std::char_traits_char___]
lea r13, [rsp + 0x78]
lea rax, [rsi + 0x18]
mov qword [rsp + 0x70], rax
mov rcx, r13
lea rax, [rsi + 0x40]
mov qword [rsp + 0x148], rax
call fcn.10040a418
mov rdx, r13
mov rcx, r15
call fcn.10040a390
mov r8d, 0x10
mov rdx, r14
mov rcx, r13
call fcn.10040a428
mov rdx, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x30]
add rcx, qword [rdx - 0x18]
test rax, rax
je 0x100404a20
xor edx, edx
call fcn.10040a388
test byte [rsp + 0x168], 5
jne 0x100404d76
mov rcx, qword [rsp + 0x30]
xor edx, edx
lea r14, [rsp + 0x58]
call fcn.10040a4c0
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0x38], rax
lea rax, [rsp + 0x328]
mov rcx, rax
mov qword [rsp + 0x28], rax
call fcn.10040a3a0
mov r10, qword [sym.imp.cygstdc_6.dll_vtable_for_std::basic_ios_char__std::char_traits_char___]
mov qword [rsp + 0x400], 0
lea rax, [r10 + 0x10]
mov qword [rsp + 0x328], rax
xor eax, eax
mov word [rsp + 0x408], ax
mov qword [rsp + 0x410], 0
mov qword [rsp + 0x418], 0
mov r9, qword [rdi - 0x18]
mov qword [rsp + 0x420], 0
add r9, r12
mov qword [rsp + 0x428], 0
mov qword [rsp + 0x250], rdi
mov qword [r9], rbp
mov rcx, r9
xor edx, edx
call fcn.10040a390
lea rax, [rsi + 0x18]
lea r14, [rsp + 0x258]
mov qword [rsp + 0x250], rax
mov rcx, r14
lea rax, [rsi + 0x40]
mov qword [rsp + 0x328], rax
call fcn.10040a418
mov rcx, qword [rsp + 0x28]
mov rdx, r14
call fcn.10040a390
mov rdx, qword [rsp + 0x38]
mov r8d, 0x10
mov rcx, r14
call fcn.10040a428
mov rdx, qword [rsp + 0x250]
mov rcx, qword [rdx - 0x18]
add rcx, r12
test rax, rax
je 0x100404a08
xor edx, edx
call fcn.10040a388
test byte [rsp + 0x348], 5
jne 0x100404cf9
lea rax, [rsi + 0x18]
mov qword [rsp + 0x250], rax
lea rax, [rsi + 0x40]
mov qword [rsp + 0x328], rax
mov rax, qword [sym.imp.cygstdc_6.dll_vtable_for_std::basic_filebuf_char__std::char_traits_char___]
mov rcx, r14
add rax, 0x10
mov qword [rsp + 0x258], rax
call fcn.10040a420
lea rcx, [rsp + 0x2a0]
call fcn.10040a430
mov r14, qword [sym.imp.cygstdc_6.dll_vtable_for_std::basic_streambuf_char__std::char_traits_char___]
lea rcx, [rsp + 0x290]
lea rax, [r14 + 0x10]
mov qword [rsp + 0x258], rax
call fcn.10040a3b8
mov rax, qword [rdi - 0x18]
mov qword [rsp + 0x250], rdi
mov qword [rsp + rax + 0x250], rbp
mov rax, qword [sym.imp.cygstdc_6.dll_vtable_for_std::basic_ios_char__std::char_traits_char___]
mov rcx, qword [rsp + 0x28]
add rax, 0x10
mov qword [rsp + 0x328], rax
call fcn.10040a398
lea rax, [rsi + 0x18]
mov qword [rsp + 0x70], rax
mov rax, qword [sym.imp.cygstdc_6.dll_vtable_for_std::basic_filebuf_char__std::char_traits_char___]
add rsi, 0x40
add rax, 0x10
mov rcx, r13
mov qword [rsp + 0x148], rsi
mov qword [rsp + 0x78], rax
call fcn.10040a420
lea rcx, [rsp + 0xc0]
call fcn.10040a430
lea rax, [r14 + 0x10]
lea rcx, [rsp + 0xb0]
mov qword [rsp + 0x78], rax
call fcn.10040a3b8
mov rax, qword [rdi - 0x18]
mov qword [rsp + 0x70], rdi
mov qword [rsp + rax + 0x70], rbp
mov rax, qword [sym.imp.cygstdc_6.dll_vtable_for_std::basic_ios_char__std::char_traits_char___]
mov rcx, r15
add rax, 0x10
mov qword [rsp + 0x148], rax
call fcn.10040a398
mov rax, qword [rsp + 0x58]
lea rcx, [rax - 0x18]
cmp rcx, rbx
jne 0x100404af0
mov rax, qword [rsp + 0x50]
lea rcx, [rax - 0x18]
cmp rcx, rbx
jne 0x100404a30
mov rax, qword [rsp + 0x48]
lea rcx, [rax - 0x18]
cmp rcx, rbx
jne 0x100404a78
add rsp, 0x438
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea rdx, [rsp + 0x70]
xor r8d, r8d
call fcn.10040a498
jmp 0x1004044cd
lea rdx, [rsp + 0x68]
xor r8d, r8d
call fcn.10040a498
jmp 0x1004045b9
lea rdx, [rsp + 0x60]
xor r8d, r8d
call fcn.10040a498
jmp 0x10040454e
mov edx, dword [rcx + 0x20]
or edx, 4
call fcn.10040a388
jmp 0x100404855
mov edx, dword [rcx + 0x20]
or edx, 4
call fcn.10040a388
jmp 0x10040473b
mov edx, 0xffffffff
lock xadd dword [rax - 8], edx
test edx, edx
jg 0x100404991
mov rdx, r12
call fcn.10040a4a8
jmp 0x100404991
mov edx, 0xffffffff
lock xadd dword [rax - 8], edx
test edx, edx
jg 0x100404605
lea rdx, [rsp + 0x70]
call fcn.10040a4a8
jmp 0x100404605
mov edx, 0xffffffff
lock xadd dword [rax - 8], edx
test edx, edx
jg 0x1004049a3
mov rdx, r12
call fcn.10040a4a8
jmp 0x1004049a3
mov edx, 0xffffffff
lock xadd dword [rax - 8], edx
test edx, edx
jg 0x10040452f
lea rdx, [rsp + 0x70]
call fcn.10040a4a8
jmp 0x10040452f
mov edx, 0xffffffff
lock xadd dword [rax - 8], edx
test edx, edx
jg 0x10040459a
lea rdx, [rsp + 0x70]
call fcn.10040a4a8
jmp 0x10040459a
mov edx, 0xffffffff
lock xadd dword [rax - 8], edx
test edx, edx
jg 0x10040497f
mov rdx, r12
call fcn.10040a4a8
jmp 0x10040497f
lock inc dword [r8]
jmp 0x1004045b9
lock inc dword [r8]
jmp 0x1004044cd
lock inc dword [r8]
jmp 0x10040454e
mov ecx, 0x10
call sub.cygstdc_6.dll___cxa_allocate_exception
mov rcx, rax
lea rdx, str.Path_to_db_is_empty
mov r12, rax
call fcn.10040a408
lea r8, [0x10040a3f8]
lea rdx, sym.imp.cygstdc_6.dll_vtable_for_std::basic_ifstream_char__std::char_traits_char___
mov rcx, r12
call sub.cygstdc_6.dll___cxa_throw
mov rbx, rax
mov rcx, r12
vzeroupper
call fcn.10040a438
lea r13, [rsp + 0x50]
lea r15, [rsp + 0x48]
mov rcx, r13
call fcn.10040a438
mov rcx, r15
call fcn.10040a438
mov rcx, rbx
call sub.cyggcc_s_seh_1.dll__Unwind_Resume
mov r13, rax
mov rcx, r12
vzeroupper
call sub.cygstdc_6.dll___cxa_free_exception
mov rcx, r13
call sub.cyggcc_s_seh_1.dll__Unwind_Resume
mov ecx, 0x10
call sub.cygstdc_6.dll___cxa_allocate_exception
mov r8, rsi
lea rdx, str.Cannot_create
mov rcx, r12
mov r14, rax
call fcn.10040b150
mov rdx, r12
mov rcx, r14
call fcn.10040a400
mov rcx, r12
call fcn.10040a438
lea r8, [0x10040a3f8]
lea rdx, sym.imp.cygstdc_6.dll_vtable_for_std::basic_ifstream_char__std::char_traits_char___
mov rcx, r14
call sub.cygstdc_6.dll___cxa_throw
mov rbx, rax
mov rcx, r12
vzeroupper
call fcn.10040a438
lea r15, [rsp + 0x48]
jmp 0x100404ba1
mov rcx, r14
call fcn.10040a438
jmp 0x100404b99
mov rcx, qword [rsp + 0x30]
lea r13, [rsp + 0x50]
call fcn.10040a3e8
jmp 0x100404c39
mov ecx, 0x10
lea rsi, [rsp + 0x60]
lea r15, [rsp + 0x48]
call sub.cygstdc_6.dll___cxa_allocate_exception
mov r8, r15
lea rdx, str.Cannot_open
mov rcx, rsi
mov r14, rax
call fcn.10040b150
lea rdx, str._to_open
mov rcx, rsi
call fcn.10040a480
mov rdx, qword [rax]
add rbx, 0x18
mov qword [rsp + 0x68], rdx
mov qword [rax], rbx
lea r13, [rsp + 0x68]
mov rdx, r13
mov rcx, r14
call fcn.10040a400
mov rcx, r13
call fcn.10040a438
mov rcx, rsi
call fcn.10040a438
lea r8, [0x10040a3f8]
lea rdx, sym.imp.cygstdc_6.dll_vtable_for_std::basic_ifstream_char__std::char_traits_char___
mov rcx, r14
call sub.cygstdc_6.dll___cxa_throw
mov ecx, 0x10
lea r13, [rsp + 0x68]
lea r14, [rsp + 0x58]
call sub.cygstdc_6.dll___cxa_allocate_exception
mov r8, r14
lea rdx, str.Cannot_open
mov rcx, r13
mov r15, rax
call fcn.10040b150
lea rdx, str._to_open
mov rcx, r13
call fcn.10040a480
mov rdx, qword [rax]
add rbx, 0x18
mov qword [rsp + 0x250], rdx
mov qword [rax], rbx
mov rdx, r12
mov rcx, r15
call fcn.10040a400
mov rcx, r12
call fcn.10040a438
mov rcx, r13
call fcn.10040a438
lea r8, [0x10040a3f8]
lea rdx, sym.imp.cygstdc_6.dll_vtable_for_std::basic_ifstream_char__std::char_traits_char___
mov rcx, r15
call sub.cygstdc_6.dll___cxa_throw
mov rbx, rax
vzeroupper
jmp 0x100404e17
mov rcx, r12
call fcn.10040a3e8
lea r14, [rsp + 0x58]
jmp 0x100404cc8
mov ecx, 0x10
call sub.cygstdc_6.dll___cxa_allocate_exception
mov r8, r13
lea rdx, str.Cannot_create
mov rcx, r12
mov r14, rax
call fcn.10040b150
mov rdx, r12
mov rcx, r14
call fcn.10040a400
mov rcx, r12
call fcn.10040a438
lea r8, [0x10040a3f8]
lea rdx, sym.imp.cygstdc_6.dll_vtable_for_std::basic_ifstream_char__std::char_traits_char___
mov rcx, r14
call sub.cygstdc_6.dll___cxa_throw
mov rbx, rax
lea r13, [rsp + 0x50]
lea r15, [rsp + 0x48]
vzeroupper
jmp 0x100404b99