// File: /workspace/github_cpp_makefile_star2_O3/lianxings[P]ftp_benchmark/ftp_benchmark.cc
// Function: ftp2local_dispatcher(ftpInfo*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void ftp2local_dispatcher(ftpInfo * pFtp, string ftpPath, string localPath) 
{
    // normalize directory path format
    normalize_dir_format(localPath, ftpPath);

    // connect to ftp server and login
    ftplib * ftpClient = new ftplib();
    int ret = connect_and_login_ftp (ftpClient, pFtp, 0);
    if (ret < 0) {
        if (ret == -2)
            fprintf(stderr, "login ftp server %s failed.\n", pFtp->ftpServer);
        goto error_out;
    }

    ftp2local_dispatcher_core(pFtp, ftpClient, ftpPath, localPath);

error_out:
    exitFlag = 1;
    tasksExecuteCV.notify_all();
    ftpClient->Quit();
    delete ftpClient;
    return;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x688, %rsp            # imm = 0x688
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %r13
movq %rdx, %rdi
callq 0xdddf
movl $0x8, %edi
callq 0x43f0
movq %rax, %rbx
movq %rax, %rdi
callq 0xe220
movq %rbx, %rdi
movq %r13, %rsi
callq 0x5c9b
testl %eax, %eax
js 0x800f
leaq 0x130(%rsp), %rax
movq %rax, -0x10(%rax)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq 0x120(%rsp), %rdi
callq 0xd3a8
leaq 0x98(%rsp), %rax
movq %rax, -0x10(%rax)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x88(%rsp), %rdi
callq 0xd3a8
movl $0x400, %edi            # imm = 0x400
callq 0x4500
movq %rax, 0x30(%rsp)
movq $0x0, 0x78(%rsp)
leaq 0x220(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x210(%rsp), %rdi
callq 0xd3a8
leaq 0x210(%rsp), %rdi
callq 0xdc34
movl %eax, %ebp
movq 0x210(%rsp), %rdi
cmpq %r12, %rdi
je 0x7660
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x4400
testl %ebp, %ebp
je 0x805a
movq 0x120(%rsp), %rsi
movq %rbx, %rdi
callq 0xfd48
testl %eax, %eax
je 0x806c
leaq 0x88(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0xdddf
xorps %xmm0, %xmm0
leaq 0x230(%rsp), %rdi
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0xc3a8
movq %r13, 0x118(%rsp)
leaq 0x1e0(%rsp), %rax
movq %rax, -0x10(%rax)
xorl %ecx, %ecx
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
leaq 0x200(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
leaq 0x1d0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x4200
leaq 0x1f0(%rsp), %rdi
leaq 0x88(%rsp), %rsi
callq 0x4200
leaq 0x230(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0xc520
movq 0x240(%rsp), %rcx
movq 0x260(%rsp), %rax
cmpq %rcx, %rax
je 0x7f9f
leaq 0xb8(%rsp), %r12
xorl %r13d, %r13d
movq 0x250(%rsp), %r8
movq 0x278(%rsp), %rdx
movl 0x258(%rsp), %esi
movl %edx, %edi
subl %esi, %edi
negq %rdx
movl $0x0, %edx
sbbl %edx, %edx
leal (%rdi,%rdx,8), %edx
andl $-0x8, %edx
subq 0x268(%rsp), %rax
shrq $0x6, %rax
subq %rcx, %r8
shrq $0x6, %r8
addl %eax, %r8d
addl %edx, %r8d
movq %r8, 0x1c8(%rsp)
testl %r8d, %r8d
jle 0x7f86
xorl %eax, %eax
movl %eax, 0x84(%rsp)
movq 0x240(%rsp), %r14
leaq 0x1d0(%rsp), %rdi
movq %r14, %rsi
callq 0x4200
addq $0x20, %r14
leaq 0x1f0(%rsp), %rdi
movq %r14, %rsi
callq 0x4200
leaq 0x230(%rsp), %rdi
callq 0xc80c
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x1d0(%rsp), %rsi
movq 0x1d8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0xd3a8
leaq 0x280(%rsp), %r14
leaq 0x48(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x1f0(%rsp), %rsi
movq 0x1f8(%rsp), %rdx
addq %rsi, %rdx
leaq 0x38(%rsp), %rdi
callq 0xd3a8
movq 0x58(%rsp), %rdx
movq %r14, %rdi
leaq 0xb534(%rip), %rsi      # 0x12d7b
xorl %eax, %eax
callq 0x40a0
movq %r14, %rdi
callq 0x4180
movl $0x1, %edi
movq %r14, %rsi
movq %rax, %rdx
callq 0x4140
leaq 0x1a8(%rsp), %rdi
leaq 0x58(%rsp), %rsi
callq 0xdfca
movq 0x1a8(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
leaq 0x38(%rsp), %rdi
callq 0x4110
movq 0x40(%rsp), %rsi
subq $0x1, %rsi
jb 0x8088
movq 0x38(%rsp), %rdi
cmpb $0x2f, (%rdi,%rsi)
je 0x78c0
leaq 0x38(%rsp), %rdi
movl $0x2f, %esi
callq 0x4320
movq 0x38(%rsp), %rdi
callq 0x4580
testq %rax, %rax
jne 0x78e1
movq 0x38(%rsp), %rdi
movl $0x1ff, %esi            # imm = 0x1FF
callq 0x41a0
testl %eax, %eax
js 0x7f68
movq (%rbx), %rax
movq $0x0, 0x1b0(%rax)
leaq 0x198(%rsp), %rax
movq %rax, 0x188(%rsp)
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
addq %rsi, %rdx
leaq 0x188(%rsp), %rdi
callq 0xd3a8
leaq 0x188(%rsp), %rdi
movl $0x2, %esi
movl $0x41, %edx
movq %rbx, %rcx
movq 0x118(%rsp), %r8
leaq 0x78(%rsp), %r9
callq 0x5e39
movl %eax, %r14d
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0x7968
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x4400
testl %r14d, %r14d
js 0x7e61
movq 0x78(%rsp), %rcx
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movl $0x400, %edx            # imm = 0x400
callq 0xfa88
testl %eax, %eax
jle 0x7e4c
leaq 0x108(%rsp), %rax
movq %rax, 0xf8(%rsp)
movq %r13, 0x100(%rsp)
movb %r13b, 0x108(%rsp)
leaq 0x178(%rsp), %rax
movq %rax, 0x168(%rsp)
movq %r13, 0x170(%rsp)
movb %r13b, 0x178(%rsp)
movq 0x30(%rsp), %rdi
leaq 0xf8(%rsp), %r14
movq %r14, %rsi
leaq 0x168(%rsp), %rdx
callq 0xde90
movq %rbx, %rbp
movq %r12, %rbx
movq %r14, %rdi
leaq 0xb30f(%rip), %rsi      # 0x12d0c
callq 0x40f0
movl $0x7, %r12d
testl %eax, %eax
je 0x7df2
movq %r14, %rdi
leaq 0xb2f1(%rip), %rsi      # 0x12d0b
callq 0x40f0
testl %eax, %eax
je 0x7df2
movl $0x1, %ecx
movq %r14, %rdi
leaq 0xb2d6(%rip), %rsi      # 0x12d0c
movq $-0x1, %rdx
callq 0x4770
cmpq $-0x1, %rax
je 0x7aa8
incq %rax
leaq 0xa8(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movq %rax, %rdx
movq $-0x1, %rcx
callq 0x4410
movq %r15, %rdi
leaq 0xa895(%rip), %rsi      # 0x12307
callq 0x40f0
movl %eax, %r14d
movq 0xa8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x7a97
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x4400
testl %r14d, %r14d
leaq 0xf8(%rsp), %r14
je 0x7df2
movq 0x30(%rsp), %rax
movzbl (%rax), %eax
cmpl $0x2d, %eax
je 0x7b18
cmpl $0x64, %eax
jne 0x7def
leaq 0x8(%rsp), %r15
movq %r15, %rdi
leaq 0x58(%rsp), %rsi
movq %r14, %rdx
callq 0xbe5a
movq %r15, %rdi
leaq 0xb356(%rip), %rsi      # 0x12e33
callq 0x4740
movq %rbx, %r12
movq %rbx, 0xa8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7cc3
movq %rdx, 0xa8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb8(%rsp)
jmp 0x7ccb
movq 0x168(%rsp), %rdi
callq 0x45f0
movq %r14, %rdx
movl %eax, %r14d
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %r13, 0x10(%rsp)
movb %r13b, 0x18(%rsp)
movq %r13, 0x28(%rsp)
leaq 0x150(%rsp), %rax
movq %rax, 0x140(%rsp)
movq %r13, 0x148(%rsp)
movb %r13b, 0x150(%rsp)
movq %r13, 0x160(%rsp)
leaq 0xa8(%rsp), %r12
movq %r12, %rdi
leaq 0x58(%rsp), %rsi
callq 0xbe5a
leaq 0x8(%rsp), %rdi
movq %r12, %rsi
callq 0x44c0
movq 0xa8(%rsp), %rdi
movq %rbx, %r12
cmpq %rbx, %rdi
je 0x7bae
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x4400
leaq 0xa8(%rsp), %r15
movq %r15, %rdi
leaq 0x38(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0xbe5a
leaq 0x140(%rsp), %rdi
movq %r15, %rsi
callq 0x44c0
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x7bf8
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x4400
movslq %r14d, %r12
movq %r12, 0x160(%rsp)
movq %r12, 0x28(%rsp)
movq %rbx, 0xa8(%rsp)
movq %r13, 0xb0(%rsp)
movb %r13b, 0xb8(%rsp)
movq %r13, 0xc8(%rsp)
leaq 0xe0(%rsp), %rax
movq %rax, 0xd0(%rsp)
movq %r13, 0xd8(%rsp)
movb %r13b, 0xe0(%rsp)
movq %r13, 0xf0(%rsp)
leaq 0xa8(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x4200
movq 0x28(%rsp), %rax
movq %rax, 0xc8(%rsp)
leaq 0xd0(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x4200
movq 0x160(%rsp), %rax
movq %rax, 0xf0(%rsp)
leaq 0xa8(%rsp), %rdi
callq 0xbd0f
movl %eax, %r14d
testl %eax, %eax
js 0x7d96
lock
incq 0x10844(%rip)           # 0x184f8
addq %r12, 0x10875(%rip)     # 0x18530
xorl %r12d, %r12d
jmp 0x7d9c
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0xb0(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x7d02
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4400
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x38(%rsp), %rsi
movq 0x40(%rsp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xd3a8
leaq 0x1d0(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x4200
leaq 0x1f0(%rsp), %rdi
movq %r15, %rsi
callq 0x4200
leaq 0x230(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0xc520
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x7d77
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x7def
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x4400
jmp 0x7def
movl $0x8, %r12d
leaq 0xa8(%rsp), %rdi
callq 0xbe24
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0x7dce
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x7dea
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4400
testl %r14d, %r14d
js 0x7df2
xorl %r12d, %r12d
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x7e17
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0x7e3c
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x4400
cmpl $0x8, %r12d
movq %rbx, %r12
movq %rbp, %rbx
jne 0x7971
xorl %r14d, %r14d
movq 0x78(%rsp), %rsi
movq %rbx, %rdi
callq 0xf9cc
jmp 0x7ee8
movq 0x58(%rsp), %rdx
cmpl $-0x1, %r14d
je 0x7e92
movq 0x118(%rsp), %rax
movq (%rax), %rcx
leaq 0x280(%rsp), %r14
movq %r14, %rdi
leaq 0xaf43(%rip), %rsi      # 0x12dcc
xorl %eax, %eax
callq 0x40a0
jmp 0x7eab
leaq 0x280(%rsp), %r14
movq %r14, %rdi
leaq 0xaeed(%rip), %rsi      # 0x12d91
xorl %eax, %eax
callq 0x40a0
movq %r14, %rdi
callq 0x4180
movq 0x10626(%rip), %rcx     # 0x184e0
movl $0x1, %esi
movq %r14, %rdi
movq %rax, %rdx
callq 0x4750
movq %r14, %rdi
callq 0x4180
movq %r14, %rsi
movl $0x6, %r14d
movl $0x2, %edi
movq %rax, %rdx
callq 0x4140
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0x7f0d
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x7f29
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x7f45
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x4400
cmpl $0x6, %r14d
movl 0x84(%rsp), %eax
je 0x7f57
testl %r14d, %r14d
jne 0x7f80
incl %eax
cmpl 0x1c8(%rsp), %eax
jne 0x77a2
jmp 0x7f86
leaq 0x88(%rsp), %rdi
callq 0x489b
movl $0x1, %r14d
jmp 0x7ee8
testb $0x3, %r14b
jne 0x7fa9
movq 0x240(%rsp), %rcx
movq 0x260(%rsp), %rax
cmpq %rcx, %rax
jne 0x774b
movq 0x30(%rsp), %rdi
callq 0x44a0
leaq 0x1d0(%rsp), %rdi
callq 0xc372
leaq 0x230(%rsp), %rdi
callq 0xcb9e
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x7fe8
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
je 0x8014
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x4400
jmp 0x8014
cmpl $-0x2, %eax
je 0x807e
movl $0x1, %eax
xchgl %eax, 0x104c9(%rip)     # 0x184e8
leaq 0x1047a(%rip), %rdi     # 0x184a0
callq 0x4690
movq %rbx, %rdi
callq 0x104b6
movq %rbx, %rdi
callq 0xe318
movl $0x8, %esi
movq %rbx, %rdi
callq 0x4400
addq $0x688, %rsp            # imm = 0x688
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x88(%rsp), %rdi
callq 0x48e3
jmp 0x7fc3
leaq 0x120(%rsp), %rdi
callq 0x48bf
jmp 0x7fc3
movq %r13, %rdi
callq 0x4907
jmp 0x8014
leaq 0xb207(%rip), %rdi      # 0x13296
xorl %edx, %edx
xorl %eax, %eax
callq 0x4590
movq %rax, %r14
movq 0x210(%rsp), %rdi
cmpq %r12, %rdi
je 0x82aa
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x4400
jmp 0x82aa
movq %rax, %r14
jmp 0x82cf
movq %rax, %r14
movl $0x8, %esi
movq %rbx, %rdi
jmp 0x82ef
jmp 0x814b
movq %rax, %r14
jmp 0x82aa
movq %rax, %r14
jmp 0x81c2
jmp 0x81e1
jmp 0x80fa
movq %rax, %r14
jmp 0x818d
movq %rax, %r14
jmp 0x8168
movq %rax, %r14
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0x8233
movq 0x198(%rsp), %rsi
jmp 0x8226
jmp 0x814b
movq %rax, %r14
jmp 0x8274
jmp 0x8134
movq %rax, %r14
jmp 0x8258
jmp 0x8230
jmp 0x8230
jmp 0x8230
movq %rax, %r14
jmp 0x8290
jmp 0x81e1
movq %rax, %r14
leaq 0xa8(%rsp), %rdi
callq 0xbe24
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0x818d
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x81e4
movq 0x18(%rsp), %rsi
jmp 0x81d7
movq %rax, %r14
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x81c2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
je 0x81e4
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x4400
jmp 0x81e4
movq %rax, %r14
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x8209
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0x8233
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x4400
jmp 0x8233
movq %rax, %r14
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0x8258
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0x8274
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x8290
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x4400
leaq 0x1d0(%rsp), %rdi
callq 0xc372
leaq 0x230(%rsp), %rdi
callq 0xcb9e
leaq 0x98(%rsp), %rax
movq 0x88(%rsp), %rdi
cmpq %rax, %rdi
je 0x82cf
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x4400
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
je 0x82f4
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x4400
movq %r14, %rdi
callq 0x46e0