// File: demon386[P]git-store/./libs/filesystem/src/operations.cpp
// Function: boost::filesystem::detail::create_directories(boost::filesystem::path const&, boost::system::error_code*)
BOOST_FILESYSTEM_DECL
  bool create_directories(const path& p, system::error_code* ec)
  {
    error_code local_ec;
    file_status p_status = status(p, local_ec);

    if (p_status.type() == directory_file)
    {
      if (ec != 0)
        ec->clear();
      return false;
    }

    path parent = p.parent_path();
    BOOST_ASSERT_MSG(parent != p, "internal error: p == p.parent_path()");
    if (!parent.empty())
    {
      // determine if the parent exists
      file_status parent_status = status(parent, local_ec);

      // if the parent does not exist, create the parent
      if (parent_status.type() == file_not_found)
      {
        create_directories(parent, local_ec);
        if (local_ec)
        {
          if (ec == 0)
            BOOST_FILESYSTEM_THROW(filesystem_error(
              "boost::filesystem::create_directories", parent, local_ec));
          else
            *ec = local_ec;
          return false;
        }
      }
    }

    // create the directory
    return create_directory(p, ec);
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x4d4a0
movq -0x10(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x4d640
movq %rax, -0x30(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x4d670
cmpl $0x3, %eax
jne 0x49684
cmpq $0x0, -0x18(%rbp)
je 0x4967b
movq -0x18(%rbp), %rdi
callq 0x4d9e0
movb $0x0, -0x1(%rbp)
jmp 0x498ea
movq -0x10(%rbp), %rsi
leaq -0x50(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x50ae0
movq -0xb8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x4d920
movb %al, -0xa9(%rbp)
jmp 0x496b0
movb -0xa9(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xb9(%rbp)
jne 0x496c5
jmp 0x496cf
movb $0x1, %al
movb %al, -0xb9(%rbp)
jmp 0x496cf
movb -0xb9(%rbp), %al
testb $0x1, %al
jne 0x496db
jmp 0x496dd
jmp 0x4970d
leaq 0x19540(%rip), %rdi     # 0x62c24
leaq 0x1943c(%rip), %rsi     # 0x62b27
movl $0x3ad, %edx            # imm = 0x3AD
leaq 0x19565(%rip), %rcx     # 0x62c5c
callq 0xd400
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x498df
leaq -0x50(%rbp), %rdi
callq 0x4d570
movb %al, -0xba(%rbp)
jmp 0x4971e
movb -0xba(%rbp), %al
testb $0x1, %al
jne 0x498aa
jmp 0x4972e
leaq -0x50(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x4d640
movq %rax, -0xc8(%rbp)
jmp 0x49744
movq -0xc8(%rbp), %rax
movq %rax, -0x64(%rbp)
leaq -0x64(%rbp), %rdi
callq 0x4d670
movl %eax, -0xcc(%rbp)
jmp 0x49760
movl -0xcc(%rbp), %eax
cmpl $0x1, %eax
jne 0x498a8
leaq -0x50(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x4dc90
jmp 0x4977e
leaq -0x28(%rbp), %rdi
callq 0x4d830
cmpq $0x0, %rax
je 0x498a6
cmpq $0x0, -0x18(%rbp)
jne 0x49883
movb $0x1, -0xa1(%rbp)
movl $0x50, %edi
callq 0xd2b0
movq %rax, -0xe0(%rbp)
leaq -0x89(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0xdb50
movq -0xd8(%rbp), %rdx
leaq 0x194de(%rip), %rsi     # 0x62cb3
leaq -0x88(%rbp), %rdi
callq 0xd8b0
jmp 0x497e3
movq -0xe0(%rbp), %rdi
movups -0x28(%rbp), %xmm0
movaps %xmm0, -0xa0(%rbp)
movl -0xa0(%rbp), %ecx
movq -0x98(%rbp), %r8
leaq -0x88(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x4d6b0
movq -0xe0(%rbp), %rdi
movb $0x0, -0xa1(%rbp)
leaq 0x43d31(%rip), %rsi     # 0x8d558
leaq 0x3f92(%rip), %rdx      # 0x4d7c0
callq 0xdad0
jmp 0x49901
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
jmp 0x4985e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x58(%rbp)
movl %eax, -0x5c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xdca8
leaq -0x89(%rbp), %rdi
callq 0xd6b0
testb $0x1, -0xa1(%rbp)
jne 0x49875
jmp 0x49881
movq -0xe0(%rbp), %rdi
callq 0xd460
jmp 0x498df
movq -0x18(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, (%rax)
movq -0x20(%rbp), %rcx
movq %rcx, 0x8(%rax)
movb $0x0, -0x1(%rbp)
movl $0x1, -0xa8(%rbp)
jmp 0x498d4
jmp 0x498a8
jmp 0x498aa
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x49910
movb %al, -0xe1(%rbp)
jmp 0x498bf
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movl $0x1, -0xa8(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x4d550
jmp 0x498ea
leaq -0x50(%rbp), %rdi
callq 0x4d550
jmp 0x498f8
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xf0, %rsp
popq %rbp
retq
movq -0x58(%rbp), %rdi
callq 0xdb30
nopw %cs:(%rax,%rax)