// File: 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:
subq $0x438, %rsp            # imm = 0x438
movq %rdi, 0x430(%rsp)
movq %rsi, 0x428(%rsp)
movq %rdx, 0x420(%rsp)
movq 0x430(%rsp), %rax
movq %rax, 0x50(%rsp)
callq 0xbbd0
movl $0x0, (%rax)
movq 0x428(%rsp), %rdi
callq 0xb370
testb $0x1, %al
jne 0x921ad
jmp 0x92434
callq 0xb920
cmpl $0x0, %eax
jne 0x9242a
leaq 0x37f(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xbb30
movq 0x48(%rsp), %rdx
leaq 0x65ef(%rip), %rsi      # 0x987c8
leaq 0x380(%rsp), %rdi
callq 0x125d0
jmp 0x921e8
leaq 0x348(%rsp), %rdi
movl $0x8d, %esi
callq 0x14f00
jmp 0x921fc
leaq 0x3a0(%rsp), %rdi
leaq 0x380(%rsp), %rsi
leaq 0x348(%rsp), %rdx
callq 0x14520
jmp 0x9221b
leaq 0x2295(%rip), %rdx      # 0x944b7
leaq 0x3c0(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
callq 0x14610
jmp 0x92239
leaq 0x307(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0xbb30
movq 0x40(%rsp), %rdx
leaq 0x65e5(%rip), %rsi      # 0x9883c
leaq 0x308(%rsp), %rdi
callq 0x125d0
jmp 0x92266
leaq 0x2dd7(%rip), %rdx      # 0x95044
leaq 0x328(%rsp), %rdi
leaq 0x308(%rsp), %rsi
callq 0x14610
jmp 0x92284
leaq 0x3e0(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
leaq 0x328(%rsp), %rdx
callq 0x14520
jmp 0x922a3
leaq 0x65ce(%rip), %rdx      # 0x98878
leaq 0x400(%rsp), %rdi
leaq 0x3e0(%rsp), %rsi
callq 0x14610
jmp 0x922c1
leaq 0x400(%rsp), %rdi
callq 0x1f7f0
jmp 0x922d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x92418
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x9240b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x923fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x923f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x923d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x923ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x923bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x923b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
leaq 0x400(%rsp), %rdi
callq 0xbe38
leaq 0x3e0(%rsp), %rdi
callq 0xbe38
leaq 0x328(%rsp), %rdi
callq 0xbe38
leaq 0x308(%rsp), %rdi
callq 0xbe38
leaq 0x307(%rsp), %rdi
callq 0xbe10
leaq 0x3c0(%rsp), %rdi
callq 0xbe38
leaq 0x3a0(%rsp), %rdi
callq 0xbe38
leaq 0x348(%rsp), %rdi
callq 0xbe38
leaq 0x380(%rsp), %rdi
callq 0xbe38
leaq 0x37f(%rsp), %rdi
callq 0xbe10
jmp 0x928f9
movl $0x1, %edi
callq 0xb800
leaq 0x200(%rsp), %rdi
movq %rdi, 0x10(%rsp)
xorl %esi, %esi
movl %esi, 0x1c(%rsp)
movl $0x101, %edx            # imm = 0x101
callq 0xb3e0
movq 0x10(%rsp), %rdx
movq 0x50(%rsp), %rcx
movl 0x1c(%rsp), %eax
movq (%rcx), %rdi
movb %al, 0x2f(%rsp)
movl $0x271a, %esi           # imm = 0x271A
callq 0xba20
movq 0x50(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x428(%rsp), %rdi
callq 0xb190
movq 0x20(%rsp), %rdi
movq %rax, %rdx
movb 0x2f(%rsp), %al
movl $0x2712, %esi           # imm = 0x2712
callq 0xba20
movq 0x428(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x1df(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0xbb30
movq 0x38(%rsp), %rdx
leaq 0x63bd(%rip), %rsi      # 0x98888
leaq 0x1e0(%rsp), %rdi
callq 0x125d0
jmp 0x924da
movq 0x30(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x15930
movb %al, 0xf(%rsp)
jmp 0x924f2
leaq 0x1e0(%rsp), %rdi
callq 0xbe38
leaq 0x1df(%rsp), %rdi
callq 0xbe10
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x92516
jmp 0x92577
movq 0x50(%rsp), %rax
movq (%rax), %rdi
movl $0x55, %esi
xorl %edx, %edx
movb $0x0, %al
callq 0xba20
jmp 0x92577
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x92565
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
leaq 0x1e0(%rsp), %rdi
callq 0xbe38
leaq 0x1df(%rsp), %rdi
callq 0xbe10
jmp 0x928f9
movq 0x50(%rsp), %rax
movq (%rax), %rdi
callq 0xb810
movl %eax, 0x1d8(%rsp)
cmpl $0x0, 0x1d8(%rsp)
je 0x928f1
leaq 0x1c0(%rsp), %rdi
callq 0x912a0
movb $0x1, 0x5f(%rsp)
movl $0x10, %edi
callq 0xb490
movq %rax, (%rsp)
movq 0x420(%rsp), %rdx
leaq 0x62c7(%rip), %rsi      # 0x9888f
leaq 0xa0(%rsp), %rdi
callq 0x14bb0
jmp 0x925d7
leaq 0x62bf(%rip), %rdx      # 0x9889d
leaq 0xc0(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0x14610
jmp 0x925f5
movq 0x428(%rsp), %rdx
leaq 0xe0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x14df0
jmp 0x92614
leaq 0x628b(%rip), %rdx      # 0x988a6
leaq 0x100(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x14610
jmp 0x92632
movl 0x1d8(%rsp), %esi
leaq 0x80(%rsp), %rdi
callq 0x14f00
jmp 0x92648
leaq 0x120(%rsp), %rdi
leaq 0x100(%rsp), %rsi
leaq 0x80(%rsp), %rdx
callq 0x14520
jmp 0x92667
leaq 0x6241(%rip), %rdx      # 0x988af
leaq 0x140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x14610
jmp 0x92685
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rsi
leaq 0x200(%rsp), %rdx
callq 0x14610
jmp 0x926a4
leaq 0x620f(%rip), %rdx      # 0x988ba
leaq 0x180(%rsp), %rdi
leaq 0x160(%rsp), %rsi
callq 0x14610
jmp 0x926c2
leaq 0x60(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x18f60
jmp 0x926d6
leaq 0x1a0(%rsp), %rdi
leaq 0x180(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x14520
jmp 0x926f2
movq (%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0xb360
jmp 0x92705
movq (%rsp), %rdi
movb $0x0, 0x5f(%rsp)
movq 0x2e893(%rip), %rsi     # 0xc0fa8
movq 0x2e86c(%rip), %rdx     # 0xc0f88
callq 0xb770
jmp 0x92906
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x928d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x928c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x928b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x928a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x9289c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x9288f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x92882
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x92875
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x92868
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x9285b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
jmp 0x92851
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x370(%rsp)
movl %eax, 0x36c(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0xbe38
leaq 0x60(%rsp), %rdi
callq 0xbe38
leaq 0x180(%rsp), %rdi
callq 0xbe38
leaq 0x160(%rsp), %rdi
callq 0xbe38
leaq 0x140(%rsp), %rdi
callq 0xbe38
leaq 0x120(%rsp), %rdi
callq 0xbe38
leaq 0x80(%rsp), %rdi
callq 0xbe38
leaq 0x100(%rsp), %rdi
callq 0xbe38
leaq 0xe0(%rsp), %rdi
callq 0xbe38
leaq 0xc0(%rsp), %rdi
callq 0xbe38
leaq 0xa0(%rsp), %rdi
callq 0xbe38
testb $0x1, 0x5f(%rsp)
jne 0x928d9
jmp 0x928e2
movq (%rsp), %rdi
callq 0xba50
leaq 0x1c0(%rsp), %rdi
callq 0x128d0
jmp 0x928f9
addq $0x438, %rsp            # imm = 0x438
retq
movq 0x370(%rsp), %rdi
callq 0xb7b0
nopw %cs:(%rax,%rax)