// File: demon386[P]git-store/./libs/filesystem/src/operations.cpp
// Function: boost::filesystem::detail::last_write_time(boost::filesystem::path const&, long, boost::system::error_code*)
BOOST_FILESYSTEM_DECL
  void last_write_time(const path& p, const std::time_t new_time,
                        system::error_code* ec)
  {
#   ifdef BOOST_POSIX_API

    struct stat path_stat;
    if (error(::stat(p.c_str(), &path_stat)!= 0,
      p, ec, "boost::filesystem::last_write_time"))
        return;
    ::utimbuf buf;
    buf.actime = path_stat.st_atime; // utime()updates access time too:-(
    buf.modtime = new_time;
    error(::utime(p.c_str(), &buf)!= 0 ? BOOST_ERRNO : 0,
      p, ec, "boost::filesystem::last_write_time");

#   else

    handle_wrapper hw(
      create_file_handle(p.c_str(), FILE_WRITE_ATTRIBUTES,
        FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
        OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0));

    if (error(hw.handle == INVALID_HANDLE_VALUE ? BOOST_ERRNO : 0,
      p, ec, "boost::filesystem::last_write_time"))
        return;

    FILETIME lwt;
    to_FILETIME(new_time, lwt);

    error(::SetFileTime(hw.handle, 0, 0, &lwt)== 0 ? BOOST_ERRNO : 0,
      p, ec, "boost::filesystem::last_write_time");
#   endif
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x4dc70
movq %rax, %rdi
leaq -0xa8(%rbp), %rsi
callq 0xdae0
testl %eax, %eax
setne %al
movzbl %al, %eax
movl %eax, -0x134(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x128(%rbp)
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0xdb50
movq -0x120(%rbp), %rdx
leaq 0x181f5(%rip), %rsi     # 0x62e09
leaq -0xc8(%rbp), %rdi
callq 0xd8b0
jmp 0x4ac22
movq -0x128(%rbp), %rdx
movq -0x130(%rbp), %rsi
movl -0x134(%rbp), %edi
leaq -0xc8(%rbp), %rcx
callq 0x4a0b0
movb %al, -0x135(%rbp)
jmp 0x4ac4a
leaq -0xc8(%rbp), %rdi
callq 0xdca8
leaq -0xc9(%rbp), %rdi
callq 0xd6b0
movb -0x135(%rbp), %al
testb $0x1, %al
jne 0x4ac6e
jmp 0x4acb6
jmp 0x4ad8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x4aca5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0xdca8
leaq -0xc9(%rbp), %rdi
callq 0xd6b0
jmp 0x4add4
movq -0x60(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x4dc70
movq %rax, %rdi
leaq -0xf0(%rbp), %rsi
callq 0xd300
cmpl $0x0, %eax
je 0x4acf8
callq 0xd070
movl (%rax), %eax
movl %eax, -0x13c(%rbp)
jmp 0x4ad02
xorl %eax, %eax
movl %eax, -0x13c(%rbp)
jmp 0x4ad02
movl -0x13c(%rbp), %eax
movl %eax, -0x15c(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x150(%rbp)
leaq -0x111(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0xdb50
movq -0x148(%rbp), %rdx
leaq 0x180c4(%rip), %rsi     # 0x62e09
leaq -0x110(%rbp), %rdi
callq 0xd8b0
jmp 0x4ad53
movq -0x150(%rbp), %rdx
movq -0x158(%rbp), %rsi
movl -0x15c(%rbp), %edi
leaq -0x110(%rbp), %rcx
callq 0x4a0b0
jmp 0x4ad75
leaq -0x110(%rbp), %rdi
callq 0xdca8
leaq -0x111(%rbp), %rdi
callq 0xd6b0
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
jmp 0x4adc8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xd8(%rbp)
movl %eax, -0xdc(%rbp)
leaq -0x110(%rbp), %rdi
callq 0xdca8
leaq -0x111(%rbp), %rdi
callq 0xd6b0
movq -0xd8(%rbp), %rdi
callq 0xdb30