// File: /workspace/github_cpp_makefile_star2_O2/ncbi[P]amr/curl_easy.cpp
// Function: CURL_sp::Curl::process(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void Curl::process (const string &url,
                    const string &error_msg_action)
{
  QC_ASSERT (! url. empty ());  

  char err [CURL_ERROR_SIZE + 1] = "";
  curl_easy_setopt (eh, CURLOPT_ERRORBUFFER, err);
  
  curl_easy_setopt (eh, CURLOPT_URL, url. c_str ());
  if (isLeft (url, "ftp://"))
    curl_easy_setopt (eh, CURLOPT_FTP_USE_EPSV, 0);

  const CURLcode cc = curl_easy_perform (eh);
  if (cc)
  {
    const SoftwareVersion ver (CURL_sp::getLibVersion ());
    throw runtime_error ("CURL: Cannot " + error_msg_action
                         + "\n  from " + url 
                         + "\n  code=" + to_string ((int) cc) 
                         + "\n  error: " + err
                         + "\n  version: " + ver. str ()
                         );
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x290, %rsp            # imm = 0x290
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
callq 0xa970
andl $0x0, (%rax)
cmpq $0x0, 0x8(%r14)
je 0x3dafd
leaq 0x180(%rsp), %r12
movl $0x101, %edx            # imm = 0x101
movq %r12, %rdi
xorl %esi, %esi
callq 0xa270
movq (%rbx), %rdi
movl $0x271a, %esi           # imm = 0x271A
movq %r12, %rdx
xorl %eax, %eax
callq 0xa800
movq (%rbx), %rdi
movq (%r14), %rdx
movl $0x2712, %esi           # imm = 0x2712
xorl %eax, %eax
callq 0xa800
leaq 0x5cd7(%rip), %rsi      # 0x43778
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0xe1e4
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0xf1a8
movl %eax, %ebp
leaq 0x8(%rsp), %rdi
callq 0xab20
testb %bpl, %bpl
je 0x3dadd
movq (%rbx), %rdi
pushq $0x55
popq %rsi
xorl %edx, %edx
xorl %eax, %eax
callq 0xa800
movq (%rbx), %rdi
callq 0xa630
testl %eax, %eax
jne 0x3dbd7
addq $0x290, %rsp            # imm = 0x290
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
callq 0xa770
testl %eax, %eax
jne 0x3dd1e
leaq 0x5ba7(%rip), %rsi      # 0x436b8
leaq 0xa8(%rsp), %rdi
leaq 0x108(%rsp), %rdx
callq 0xe1e4
leaq 0x88(%rsp), %rdi
movl $0x8d, %esi
callq 0xee49
leaq 0xc8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0xea95
leaq 0x195b(%rip), %rdx      # 0x3f4b7
leaq 0x28(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0xeafc
leaq 0x5bb7(%rip), %rsi      # 0x4372c
leaq 0x48(%rsp), %rdi
leaq 0xe8(%rsp), %rdx
callq 0xe1e4
leaq 0x23de(%rip), %rdx      # 0x3ff6c
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0xeafc
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0xea95
leaq 0x5bb0(%rip), %rdx      # 0x43768
leaq 0x180(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xeafc
leaq 0x180(%rsp), %rdi
callq 0x1235c
movl %eax, %ebp
leaq 0x168(%rsp), %rdi
callq 0x3d308
pushq $0x10
popq %rdi
callq 0xa320
movq %rax, %rbx
leaq 0x5b87(%rip), %rsi      # 0x4377f
leaq 0xe8(%rsp), %rdi
movq %r15, %rdx
callq 0xece3
leaq 0x5b7e(%rip), %rdx      # 0x4378d
leaq 0x108(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0xeafc
leaq 0x48(%rsp), %rdi
leaq 0x108(%rsp), %rsi
movq %r14, %rdx
callq 0xeddc
leaq 0x5b56(%rip), %rdx      # 0x43796
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0xeafc
leaq 0x148(%rsp), %rdi
movl %ebp, %esi
callq 0xee49
leaq 0x88(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0x148(%rsp), %rdx
callq 0xea95
leaq 0x5b20(%rip), %rdx      # 0x4379f
leaq 0xa8(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0xeafc
leaq 0xc8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
leaq 0x180(%rsp), %rdx
callq 0xeafc
leaq 0x5af2(%rip), %rdx      # 0x437aa
leaq 0x28(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0xeafc
leaq 0x128(%rsp), %rdi
leaq 0x168(%rsp), %rsi
callq 0x10246
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
leaq 0x128(%rsp), %rdx
callq 0xea95
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0xa220
xorl %ebp, %ebp
movq 0x202a1(%rip), %rsi     # 0x5dfb0
movq 0x2027a(%rip), %rdx     # 0x5df90
movq %rbx, %rdi
callq 0xa590
pushq $0x1
popq %rdi
callq 0xa620
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0xab20
jmp 0x3dd3b
movq %rax, %r14
movb $0x1, %bpl
leaq 0x128(%rsp), %rdi
callq 0xab20
jmp 0x3dd50
movq %rax, %r14
movb $0x1, %bpl
leaq 0x28(%rsp), %rdi
callq 0xab20
jmp 0x3dd62
movq %rax, %r14
movb $0x1, %bpl
leaq 0xc8(%rsp), %rdi
callq 0xab20
jmp 0x3dd98
movq %rax, %r14
leaq 0x180(%rsp), %rdi
callq 0xab20
jmp 0x3dd86
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0xab20
jmp 0x3ddaa
movq %rax, %r14
movb $0x1, %bpl
leaq 0xa8(%rsp), %rdi
callq 0xab20
jmp 0x3ddbc
movq %rax, %r14
leaq 0x68(%rsp), %rdi
callq 0xab20
jmp 0x3ddce
movq %rax, %r14
movb $0x1, %bpl
leaq 0x88(%rsp), %rdi
callq 0xab20
jmp 0x3dde0
movq %rax, %r14
leaq 0x48(%rsp), %rdi
callq 0xab20
jmp 0x3ddf2
movq %rax, %r14
movb $0x1, %bpl
leaq 0x148(%rsp), %rdi
callq 0xab20
jmp 0x3de04
movq %rax, %r14
leaq 0x28(%rsp), %rdi
callq 0xab20
jmp 0x3de13
movq %rax, %r14
movb $0x1, %bpl
leaq 0x68(%rsp), %rdi
callq 0xab20
jmp 0x3de28
movq %rax, %r14
leaq 0xc8(%rsp), %rdi
callq 0xab20
jmp 0x3de37
movq %rax, %r14
movb $0x1, %bpl
leaq 0x48(%rsp), %rdi
callq 0xab20
jmp 0x3de4c
movq %rax, %r14
leaq 0x88(%rsp), %rdi
callq 0xab20
jmp 0x3de5e
movq %rax, %r14
movb $0x1, %bpl
leaq 0x108(%rsp), %rdi
callq 0xab20
jmp 0x3de6e
movq %rax, %r14
leaq 0xa8(%rsp), %rdi
jmp 0x3de99
movq %rax, %r14
movb $0x1, %bpl
leaq 0xe8(%rsp), %rdi
callq 0xab20
testb %bpl, %bpl
jne 0x3de87
jmp 0x3dea3
jmp 0x3dea0
movq %rax, %r14
movq %rbx, %rdi
callq 0xa830
jmp 0x3dea3
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0xab20
jmp 0x3dea3
movq %rax, %r14
movq %r14, %rdi
callq 0xa5d0
nop