// File: /workspace/github_cpp_makefile_star2_O1/myint[P]optparse/test2.cpp
// Function: main
int main(int argc, char *argv[])
{
    const std::string version =
        "%prog 1.0\nCopyright (C) 2017\n"
        "This is free software: you are free to change and redistribute it.\n"
        "There is NO WARRANTY, to the extent permitted by law.";

    optparse::OptionParserExcept parser = optparse::OptionParserExcept().version(version)
          .description("Description")
          .epilog("Epilog");

    parser.add_option("--string")
        .help("This is a really long text... very long indeed! "
              "It must be wrapped on normal terminals.");

    try
    {
        const optparse::Values &options = parser.parse_args(argc, argv);
        const std::vector<std::string> args = parser.args();

        std::cout << "string: " << options["string"] << std::endl;

        std::cout << std::endl << "leftover arguments: " << std::endl;
        for (std::vector<std::string>::const_iterator it = args.begin(); it != args.end(); ++it)
        {
            std::cout << "arg: " << *it << std::endl;
        }
    }
    catch (int ret_code)
    {
        std::cout << "OptionParser has thrown " << ret_code << std::endl;
        return ret_code;
    }

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4d8, %rsp            # imm = 0x4D8
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x58(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x89dd(%rip), %rsi      # 0xc020
leaq 0x8a6b(%rip), %rdx      # 0xc0b5
leaq 0x48(%rsp), %rdi
callq 0x6aea
leaq 0x68(%rsp), %rdi
callq 0x484e
leaq 0xd6c3(%rip), %r14      # 0x10d28
leaq 0x90(%rsp), %rdi
movq %r14, -0x28(%rdi)
leaq 0x48(%rsp), %rsi
callq 0x3150
leaq 0x18(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x8a2b(%rip), %rsi      # 0xc0b6
leaq 0x8a2f(%rip), %rdx      # 0xc0c1
leaq 0x8(%rsp), %rdi
callq 0x6aea
leaq 0xb0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x3150
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x8a04(%rip), %rsi      # 0xc0c2
leaq 0x8a03(%rip), %rdx      # 0xc0c8
leaq 0x28(%rsp), %rdi
callq 0x6aea
leaq 0xf8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x3150
leaq 0x2a0(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x5216
movq %r14, 0x2a0(%rsp)
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x370a
callq 0x3210
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x3719
callq 0x3210
leaq 0x68(%rsp), %rdi
callq 0x4232
leaq 0x78(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x8996(%rip), %rsi      # 0xc0c9
leaq 0x8997(%rip), %rdx      # 0xc0d1
leaq 0x68(%rsp), %rdi
callq 0x6aea
leaq 0x2a0(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x4492
movq %rax, %r14
leaq 0x8(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x896a(%rip), %rsi      # 0xc0d2
leaq 0x89ba(%rip), %rdx      # 0xc129
callq 0x6aea
addq $0x120, %r14            # imm = 0x120
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x3150
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x3797
callq 0x3210
movq 0x68(%rsp), %rdi
cmpq %r15, %rdi
je 0x37a6
callq 0x3210
leaq 0x2a0(%rsp), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x4540
movq %rax, %rbx
leaq 0x4c0(%rsp), %rsi
leaq 0x8(%rsp), %rdi
callq 0x46dc
movq 0xd7fc(%rip), %rdi      # 0x10fd0
leaq 0x894f(%rip), %rsi      # 0xc12a
movl $0x8, %edx
callq 0x32a0
leaq 0x68(%rsp), %rdi
movq %r15, (%rdi)
leaq 0x88d7(%rip), %rsi      # 0xc0cb
leaq 0x88d6(%rip), %rdx      # 0xc0d1
callq 0x6aea
leaq 0x68(%rsp), %rsi
movq %rbx, %rdi
callq 0x4760
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0xd7b5(%rip), %rbx      # 0x10fd0
movq %rbx, %rdi
callq 0x32a0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3230
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq 0x68(%rsp), %rdi
cmpq %r15, %rdi
je 0x385c
callq 0x3210
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x3230
movsbl %al, %esi
movq 0xd756(%rip), %rdi      # 0x10fd0
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq %rax, %rbx
leaq 0x88a2(%rip), %rsi      # 0xc133
movl $0x14, %edx
movq %rax, %rdi
callq 0x32a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3230
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
movq 0x8(%rsp), %r13
cmpq 0x10(%rsp), %r13
je 0x3934
movq 0xd6f8(%rip), %rbx      # 0x10fd0
leaq 0x8869(%rip), %r14      # 0xc148
movl $0x5, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32a0
movq (%r13), %rsi
movq 0x8(%r13), %rdx
movq %rbx, %rdi
callq 0x32a0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3230
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3190
addq $0x20, %r13
cmpq 0x10(%rsp), %r13
jne 0x38df
leaq 0x8(%rsp), %rdi
callq 0x480a
xorl %ebx, %ebx
leaq 0x2a0(%rsp), %rdi
callq 0x4232
movq 0x48(%rsp), %rdi
cmpq %r12, %rdi
je 0x395c
callq 0x3210
movl %ebx, %eax
addq $0x4d8, %rsp            # imm = 0x4D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3a33
jmp 0x3a00
jmp 0x39cb
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x3995
callq 0x3210
jmp 0x3995
jmp 0x3992
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r15, %rdi
je 0x39a9
callq 0x3210
jmp 0x39a9
movq %rax, %rbx
leaq 0x2a0(%rsp), %rdi
callq 0x4232
jmp 0x3a03
jmp 0x39ba
movq %rax, %rbx
jmp 0x39e5
jmp 0x39c1
movq %rax, %rbx
jmp 0x39f4
movq %rax, %rbx
jmp 0x3a12
movq %rdx, %r14
movq %rax, %rbx
jmp 0x3a43
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x39e5
callq 0x3210
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x39f4
callq 0x3210
leaq 0x68(%rsp), %rdi
callq 0x4232
jmp 0x3a03
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r12, %rdi
je 0x3a12
callq 0x3210
movq %rbx, %rdi
callq 0x3410
movq %rdx, %r14
movq %rax, %rbx
movq 0x68(%rsp), %rdi
cmpq %r15, %rdi
je 0x3a39
callq 0x3210
jmp 0x3a39
jmp 0x3a33
movq %rdx, %r14
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x480a
cmpl $0x1, %r14d
jne 0x39a9
movq %rbx, %rdi
callq 0x30e0
movl (%rax), %ebx
movq 0xd572(%rip), %rdi      # 0x10fd0
leaq 0x86e9(%rip), %rsi      # 0xc14e
movl $0x18, %edx
callq 0x32a0
movq 0xd55a(%rip), %rdi      # 0x10fd0
movl %ebx, %esi
callq 0x33e0
movq %rax, %rdi
callq 0x3110
callq 0x33b0
jmp 0x3940
movq %rax, %rbx
callq 0x33b0
jmp 0x39a9
movq %rax, %rdi
callq 0x4226