// File: /workspace/github_cpp_makefile_star2_O2/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 %rbx
subq $0x4d8, %rsp            # imm = 0x4D8
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x7a8f(%rip), %rsi      # 0xb004
leaq 0x48(%rsp), %rdi
leaq 0x2a0(%rsp), %rdx
callq 0x30c0
leaq 0x68(%rsp), %rdi
callq 0x3ce8
leaq 0x90(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x3160
leaq 0x7af0(%rip), %rsi      # 0xb09a
leaq 0x8(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x30c0
leaq 0xb0(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x3160
leaq 0x7ad4(%rip), %rsi      # 0xb0a6
leaq 0x28(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x30c0
leaq 0xf8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x3160
leaq 0x2a0(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x3cfe
leaq 0x28(%rsp), %rdi
callq 0x32c0
leaq 0x8(%rsp), %rdi
callq 0x32c0
leaq 0x68(%rsp), %rdi
callq 0x3d1e
leaq 0x7a83(%rip), %rsi      # 0xb0ad
leaq 0x68(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x30c0
leaq 0x2a0(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x3ea6
movq %rax, %r14
leaq 0x7a61(%rip), %rsi      # 0xb0b6
leaq 0x8(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x30c0
addq $0x120, %r14            # imm = 0x120
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x3160
leaq 0x8(%rsp), %rdi
callq 0x32c0
leaq 0x68(%rsp), %rdi
callq 0x32c0
leaq 0x2a0(%rsp), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x3f32
movq %rax, %rbx
leaq 0x4c0(%rsp), %rsi
leaq 0x8(%rsp), %rdi
callq 0x4068
movq 0xd916(%rip), %rdi      # 0x10fd0
leaq 0x7a4d(%rip), %rsi      # 0xb10e
callq 0x3230
movq %rax, %r14
leaq 0x79df(%rip), %rsi      # 0xb0af
leaq 0x68(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x30c0
leaq 0x68(%rsp), %rsi
movq %rbx, %rdi
callq 0x40c4
movq %r14, %rdi
movq %rax, %rsi
callq 0x31f0
movq %rax, %rdi
callq 0x3110
leaq 0x68(%rsp), %rdi
callq 0x32c0
movq 0xd8c0(%rip), %rdi      # 0x10fd0
callq 0x3110
leaq 0x79fb(%rip), %rsi      # 0xb117
movq %rax, %rdi
callq 0x3230
movq %rax, %rdi
callq 0x3110
movq 0x8(%rsp), %rbx
movq 0xd898(%rip), %r14      # 0x10fd0
leaq 0x79ed(%rip), %r15      # 0xb12c
cmpq 0x10(%rsp), %rbx
je 0x376a
movq %r14, %rdi
movq %r15, %rsi
callq 0x3230
movq %rax, %rdi
movq %rbx, %rsi
callq 0x31f0
movq %rax, %rdi
callq 0x3110
addq $0x20, %rbx
jmp 0x373f
leaq 0x8(%rsp), %rdi
callq 0x4162
xorl %ebx, %ebx
leaq 0x2a0(%rsp), %rdi
callq 0x3d1e
leaq 0x48(%rsp), %rdi
callq 0x32c0
movl %ebx, %eax
addq $0x4d8, %rsp            # imm = 0x4D8
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3816
jmp 0x37bb
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x32c0
jmp 0x37cb
jmp 0x37c8
jmp 0x37e9
jmp 0x3807
movq %rax, %rbx
jmp 0x3823
movq %rdx, %r14
movq %rax, %rbx
jmp 0x384f
jmp 0x383f
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x32c0
jmp 0x37da
movq %rax, %rbx
leaq 0x2a0(%rsp), %rdi
callq 0x3d1e
jmp 0x3819
movq %rax, %rbx
jmp 0x37fb
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x32c0
leaq 0x8(%rsp), %rdi
callq 0x32c0
jmp 0x380a
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x3d1e
jmp 0x3819
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x32c0
movq %rbx, %rdi
callq 0x33b0
movq %rdx, %r14
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x32c0
jmp 0x3845
jmp 0x383f
movq %rdx, %r14
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x4162
cmpl $0x1, %r14d
jne 0x37da
movq %rbx, %rdi
callq 0x30d0
movl (%rax), %ebx
movq 0xd76a(%rip), %rdi      # 0x10fd0
leaq 0x78c5(%rip), %rsi      # 0xb132
callq 0x3230
movq %rax, %rdi
movl %ebx, %esi
callq 0x3390
movq %rax, %rdi
callq 0x3110
callq 0x3360
jmp 0x3776
movq %rax, %rbx
callq 0x3360
jmp 0x37da
movq %rax, %rdi
callq 0x3d13