// File: /workspace/github_cpp_makefile_star2_O2/wichtounet[P]articles/src/boost_po/v1.cpp
// Function: main
int main(int argc, const char* argv[]){
    po::options_description description("MyTool Usage");

    description.add_options()
        ("help,h", "Display this help message")
        ("compression,c", po::value<int>()->default_value(5)->implicit_value(10),"Compression level")
        ("input-files", po::value<std::vector<std::string>>(), "Input files")
        ("version,v", "Display the version number");

    po::positional_options_description p;
    p.add("input-files", -1);

    po::variables_map vm;
    po::store(po::command_line_parser(argc, argv).options(description).positional(p).run(), vm);
    po::notify(vm);

    if(vm.count("help")){
        std::cout << description;

        return 0;
    }

    if(vm.count("version")){
        std::cout << "MyTool Version 1.0" << std::endl;

        return 0;
    }

    if(vm.count("compression")){
        std::cout << "Compression level " << vm["compression"].as<int>() << std::endl;
    }

    if(vm.count("input-files")){
        std::vector<std::string> files = vm["input-files"].as<std::vector<std::string>>();
        for(std::string file : files){
            std::cout << "Input file " << file << std::endl;
        }
    }

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x4a47(%rip), %rsi      # 0xa020
leaq 0xe8(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x50c0
movq 0xa9b6(%rip), %rax      # 0xffa8
movl (%rax), %edx
movl %edx, %ecx
shrl %ecx
leaq 0x188(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x5320
leaq 0xe8(%rsp), %rdi
callq 0x5498
leaq 0x188(%rsp), %rdi
callq 0x5290
leaq 0xe8(%rsp), %rdi
movq %rax, (%rdi)
leaq 0x49f4(%rip), %rsi      # 0xa02d
leaq 0x49f4(%rip), %rdx      # 0xa034
callq 0x5430
movq %rax, %r14
callq 0x5a89
leaq 0x38(%rsp), %rsi
movl $0x5, (%rsi)
movq %rax, %rdi
callq 0x5a90
leaq 0xb0(%rsp), %rsi
movl $0xa, (%rsi)
movq %rax, %rdi
callq 0x5b02
leaq 0x49d1(%rip), %rsi      # 0xa04e
leaq 0x49d8(%rip), %rcx      # 0xa05c
movq %r14, %rdi
movq %rax, %rdx
callq 0x5460
movq %rax, %r14
callq 0x5b74
leaq 0x49d0(%rip), %rsi      # 0xa06e
leaq 0x49d5(%rip), %rcx      # 0xa07a
movq %r14, %rdi
movq %rax, %rdx
callq 0x5460
leaq 0x49cf(%rip), %rsi      # 0xa086
leaq 0x49d2(%rip), %rdx      # 0xa090
movq %rax, %rdi
callq 0x5430
leaq 0xb0(%rsp), %rdi
callq 0x52e0
leaq 0x4994(%rip), %rsi      # 0xa06e
leaq 0xb0(%rsp), %rdi
pushq $-0x1
popq %rdx
callq 0x5260
leaq 0xe8(%rsp), %rdi
callq 0x50e0
leaq 0x38(%rsp), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x5b7c
leaq 0x38(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x5c0c
leaq 0xb0(%rsp), %rsi
movq %rax, %rdi
movq %rax, %rbx
callq 0x53b0
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x5c2a
leaq 0x10(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
xorl %edx, %edx
callq 0x53f0
leaq 0x10(%rsp), %rdi
callq 0x5ddc
leaq 0x38(%rsp), %rdi
callq 0x5cba
leaq 0xe8(%rsp), %rdi
callq 0x5150
leaq 0x4937(%rip), %rsi      # 0xa0ab
leaq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x50c0
leaq 0xf8(%rsp), %rbx
leaq 0x38(%rsp), %rsi
movq %rbx, %rdi
callq 0x5cda
leaq 0x38(%rsp), %rdi
movq %rax, %r14
callq 0x5498
testq %r14, %r14
je 0x57c3
movq 0xa817(%rip), %rdi      # 0xffc8
leaq 0x188(%rsp), %rsi
callq 0x5070
jmp 0x5990
leaq 0x48e6(%rip), %rsi      # 0xa0b0
leaq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x50c0
leaq 0x38(%rsp), %rsi
movq %rbx, %rdi
callq 0x5cda
leaq 0x38(%rsp), %rdi
movq %rax, %r14
callq 0x5498
testq %r14, %r14
je 0x5818
movq 0xa7c9(%rip), %rdi      # 0xffc8
leaq 0x48b2(%rip), %rsi      # 0xa0b8
callq 0x5230
movq %rax, %rdi
callq 0x5110
jmp 0x5990
leaq 0x48ac(%rip), %rsi      # 0xa0cb
leaq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x50c0
leaq 0x38(%rsp), %rsi
movq %rbx, %rdi
callq 0x5cda
leaq 0x38(%rsp), %rdi
movq %rax, %r14
callq 0x5498
testq %r14, %r14
je 0x58af
movq 0xa774(%rip), %rdi      # 0xffc8
leaq 0x487c(%rip), %rsi      # 0xa0d7
callq 0x5230
leaq 0x4864(%rip), %rsi      # 0xa0cb
leaq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rdx
movq %rax, %r14
callq 0x50c0
leaq 0xe8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5270
movq %rax, %rdi
callq 0x99c2
movl (%rax), %esi
movq %r14, %rdi
callq 0x53e0
movq %rax, %rdi
callq 0x5110
leaq 0x38(%rsp), %rdi
callq 0x5498
leaq 0x47b8(%rip), %rsi      # 0xa06e
leaq 0x38(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x50c0
leaq 0x38(%rsp), %rsi
movq %rbx, %rdi
callq 0x5cda
leaq 0x38(%rsp), %rdi
movq %rax, %rbx
callq 0x5498
testq %rbx, %rbx
je 0x5990
leaq 0x477f(%rip), %rsi      # 0xa06e
leaq 0x38(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x50c0
leaq 0xe8(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5270
movq %rax, %rdi
callq 0x9a53
leaq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x5cf4
leaq 0x38(%rsp), %rbx
movq %rbx, %rdi
callq 0x5498
movq 0x10(%rsp), %r14
movq 0x18(%rsp), %r13
movq 0xa685(%rip), %r15      # 0xffc8
leaq 0x47a0(%rip), %r12      # 0xa0ea
cmpq %r13, %r14
je 0x5986
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5310
movq %r15, %rdi
movq %r12, %rsi
callq 0x5230
movq %rax, %rdi
movq %rbx, %rsi
callq 0x5200
movq %rax, %rdi
callq 0x5110
movq %rbx, %rdi
callq 0x5498
addq $0x20, %r14
jmp 0x594a
leaq 0x10(%rsp), %rdi
callq 0x5d4a
leaq 0xe8(%rsp), %rdi
callq 0x5d6c
leaq 0xb0(%rsp), %rdi
callq 0x5d9e
leaq 0x188(%rsp), %rdi
callq 0x5db4
xorl %eax, %eax
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5a23
jmp 0x5a23
jmp 0x59df
jmp 0x5a23
jmp 0x59df
jmp 0x5a23
jmp 0x59df
jmp 0x59df
jmp 0x59df
jmp 0x5a23
leaq 0x38(%rsp), %rdi
movq %rax, %rbx
callq 0x5498
jmp 0x5a5a
jmp 0x5a23
leaq 0x10(%rsp), %rdi
movq %rax, %rbx
callq 0x5ddc
jmp 0x5a30
jmp 0x5a23
jmp 0x5a03
movq %rax, %rbx
jmp 0x5a67
jmp 0x5a3e
jmp 0x5a3e
leaq 0xe8(%rsp), %rdi
movq %rax, %rbx
callq 0x5498
jmp 0x5a81
movq %rax, %rbx
jmp 0x5a81
movq %rax, %rbx
jmp 0x5a5a
movq %rax, %rbx
jmp 0x5a50
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x5cba
jmp 0x5a5a
jmp 0x5a3e
movq %rax, %rbx
jmp 0x5a74
leaq 0x38(%rsp), %rdi
movq %rax, %rbx
callq 0x5498
leaq 0x10(%rsp), %rdi
callq 0x5d4a
leaq 0xe8(%rsp), %rdi
callq 0x5d6c
leaq 0xb0(%rsp), %rdi
callq 0x5d9e
leaq 0x188(%rsp), %rdi
callq 0x5db4
movq %rbx, %rdi
callq 0x5400