// File: /workspace/github_cpp_makefile_star2_O3/mgo1977[P]c---parsing-argument-options/example1.cc
// Function: main
int main(int argc, char** argv) {

    /*
     * This is a simple example, to show the usage of this tool.
     * These are the main steps to use:
     *
     *  a. create all options, between set of the existing ones you have:
     *  b. Now, the easy part: create the parser, add the options and parse it
     *
     *  Please, take a look at the documentation in the header file "Parser.h"
     *  for a full description of each option
     *
     */

    BoolOption    debug         ('d', "debug",      false, "enables the debug mode");
    StringOption  username      ('u', "username",   true , "set the username");
    IntegerOption port          ('p', "port",       false, 23, "server port");
    FloatOption   portability   ('n', "portability",false, "smart option...");
    StringListOption  book      ('j', "book",       false, "book of interest. could be more than one");

    // default value is the limit of the type. for int types => (sizeof(int) * 1024)
    std::list<int> defaultPortRange;
    defaultPortRange.push_back(1);
    defaultPortRange.push_back(sizeof(int)*1024);
    IntegerRange  portRange     ('r', "portrange",  false, defaultPortRange, "range of ports");

    Parser parser;

    parser.addOption(debug)
          .addOption(username)
          .addOption(port)
          .addOption(portability)
          .addOption(book)
          .addOption(portRange);

    vector<string> otherArguments = parser.parse(argc, argv);

    if ( debug.isSet() ) {
        cout << "debug flag was set" << endl;
    }

    // username is mandatory, so we don't need to check it
    cout << "username was set to '" << username.getValue() << "'" << endl;

    // port has a default value, so we can choose not to check it
    // and work with the default value transparently
    cout << "port was set to '" << port.getValue() << "'" << endl;


    if ( portability.isSet() ) {
        cout << "portability was set to '" << portability.getValue() << "'" << endl;
    }

    if ( book.isSet() ) {
        std::list<std::string> values = book.getValue();

        cout << "book was set with " << values.size() << " entries: ";

        for(std::list<string>::iterator entry = values.begin();
            entry != values.end();
            ++entry
        ) {
            if ( entry != values.begin() )
                cout << ", ";

            cout << "'" << *entry << "'";
        }

        cout << endl;

    }

    //if ( portRange.isSet() ) {
        std::list<int> list = portRange.getValue();
        if ( list.size() > 0 ) {
            cout << "Range seted from '" << list.front() << "' to '" << list.back() << "'." << endl;
        } else {
            cout << "is null" << std::endl;
        }
    //}
 
    // if other arguments were specified, we can easily access them
    if ( ! otherArguments.empty() ) {

        cout << "otherArguments: ";

        for(vector<string>::iterator argIter = otherArguments.begin();
            argIter != otherArguments.end();
            ++argIter
        ) {

            if ( argIter != otherArguments.begin() )
                cout << ", ";

            cout << "'" << *argIter << "'";

        }

        cout << endl;

    }


}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3d8, %rsp            # imm = 0x3D8
movq %rsi, %r13
movl %edi, %ebx
leaq 0x2a6c(%rip), %rdx      # 0x70d5
leaq 0x2a6b(%rip), %r9       # 0x70db
leaq -0x400(%rbp), %r14
movq %r14, %rdi
movl $0x64, %esi
xorl %ecx, %ecx
xorl %r8d, %r8d
callq 0x5906
movb $0x0, 0x5a(%r14)
leaq 0x5593(%rip), %rax      # 0x9c28
movq %rax, (%r14)
leaq 0x2a5b(%rip), %rdx      # 0x70fa
leaq 0x2a4c(%rip), %r9       # 0x70f2
leaq -0x118(%rbp), %rdi
movl $0x75, %esi
movl $0x1, %ecx
movl $0x1, %r8d
callq 0x5906
leaq 0x562f(%rip), %rax      # 0x9cf8
leaq -0xa8(%rbp), %rcx
movq %rax, -0x70(%rcx)
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x88(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x2a12(%rip), %rdx      # 0x710a
leaq 0x2a04(%rip), %r9       # 0x7103
leaq -0x1e8(%rbp), %rdi
movl $0x70, %esi
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x5906
leaq 0x5609(%rip), %rax      # 0x9d28
movq %rax, -0x1e8(%rbp)
movl $0x17, -0x188(%rbp)
leaq 0x29d8(%rip), %rdx      # 0x710f
leaq 0x29dd(%rip), %r9       # 0x711b
leaq -0x180(%rbp), %rdi
movl $0x6e, %esi
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x5906
leaq 0x55fa(%rip), %rax      # 0x9d58
movq %rax, -0x180(%rbp)
leaq 0x29bf(%rip), %rdx      # 0x712b
leaq 0x29bd(%rip), %r9       # 0x7130
leaq -0x308(%rbp), %rdi
movl $0x6a, %esi
xorl %ecx, %ecx
movl $0x1, %r8d
callq 0x5906
leaq 0x5535(%rip), %rax      # 0x9cc8
leaq -0x2a8(%rbp), %rcx
movq %rax, -0x60(%rcx)
movq %rcx, 0x8(%rcx)
movq %rcx, (%rcx)
xorl %eax, %eax
movq %rax, 0x10(%rcx)
leaq -0x290(%rbp), %rcx
movq %rcx, 0x8(%rcx)
movq %rcx, (%rcx)
movq %rax, 0x10(%rcx)
leaq -0x60(%rbp), %r15
movq %r15, 0x8(%r15)
movq %r15, (%r15)
movq %rax, 0x10(%r15)
movl $0x18, %edi
callq 0x31c0
movl $0x1, 0x10(%rax)
movq %rax, %rdi
movq %r15, %rsi
callq 0x3040
incq 0x10(%r15)
movl $0x18, %edi
callq 0x31c0
movl $0x1000, 0x10(%rax)     # imm = 0x1000
movq %rax, %rdi
movq %r15, %rsi
callq 0x3040
incq 0x10(%r15)
leaq 0x2946(%rip), %rdx      # 0x7159
leaq 0x2949(%rip), %r9       # 0x7163
leaq -0x278(%rbp), %r12
movq %r12, %rdi
movl $0x72, %esi
xorl %ecx, %ecx
movq %r15, %r8
callq 0x6aa8
leaq 0x554e(%rip), %rax      # 0x9d88
movq %rax, -0x278(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x54ac
leaq -0x340(%rbp), %r15
leaq -0x48(%rbp), %rsi
movq %r14, (%rsi)
movq %r15, %rdi
callq 0x5b46
leaq -0x48(%rbp), %rsi
leaq -0x118(%rbp), %rax
movq %rax, (%rsi)
movq %r15, %rdi
callq 0x5b46
leaq -0x48(%rbp), %rsi
leaq -0x1e8(%rbp), %rax
movq %rax, (%rsi)
movq %r15, %rdi
callq 0x5b46
leaq -0x48(%rbp), %rsi
leaq -0x180(%rbp), %rax
movq %rax, (%rsi)
movq %r15, %rdi
callq 0x5b46
leaq -0x48(%rbp), %rsi
leaq -0x308(%rbp), %rax
movq %rax, (%rsi)
movq %r15, %rdi
callq 0x5b46
leaq -0x48(%rbp), %rsi
movq %r12, (%rsi)
movq %r15, %rdi
callq 0x5b46
leaq -0x78(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
movl %ebx, %edx
movq %r13, %rcx
callq 0x34dc
cmpb $0x1, -0x3a8(%rbp)
leaq -0x60(%rbp), %r13
jne 0x4932
movq 0x56dd(%rip), %rbx      # 0x9fd0
leaq 0x2878(%rip), %rsi      # 0x7172
movl $0x12, %edx
movq %rbx, %rdi
callq 0x3210
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq 0x56ab(%rip), %rdi      # 0x9fd0
callq 0x3030
movq %rax, %rdi
callq 0x3110
movq 0x5697(%rip), %rdi      # 0x9fd0
leaq 0x2845(%rip), %rsi      # 0x7185
movl $0x15, %edx
callq 0x3210
leaq -0x38(%rbp), %r14
leaq -0xb8(%rbp), %rax
leaq -0x98(%rbp), %rcx
cmpb $0x0, -0x28(%rcx)
cmoveq %rcx, %rax
movq %r14, -0x10(%r14)
movq (%rax), %rsi
leaq -0xb0(%rbp), %rax
leaq -0x90(%rbp), %rcx
cmovneq %rax, %rcx
movq (%rcx), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %rdi
callq 0x630c
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
movq 0x5635(%rip), %rdi      # 0x9fd0
callq 0x3210
movq %rax, %rbx
leaq 0x284b(%rip), %rsi      # 0x71f5
movl $0x1, %edx
movq %rax, %rdi
callq 0x3210
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3110
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
je 0x49f3
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x31d0
movq 0x55d6(%rip), %rdi      # 0x9fd0
leaq 0x279a(%rip), %rsi      # 0x719b
movl $0x11, %edx
callq 0x3210
movzbl -0x190(%rbp), %eax
xorl $0x1, %eax
movl -0x18c(%rbp,%rax,4), %esi
movq 0x55ad(%rip), %rdi      # 0x9fd0
callq 0x3300
movq %rax, %rbx
leaq 0x27c3(%rip), %rsi      # 0x71f5
movl $0x1, %edx
movq %rax, %rdi
callq 0x3210
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3110
cmpb $0x1, -0x128(%rbp)
jne 0x4ae4
movq 0x555a(%rip), %rdi      # 0x9fd0
leaq 0x2730(%rip), %rsi      # 0x71ad
movl $0x18, %edx
callq 0x3210
movzbl -0x128(%rbp), %eax
xorl $0x1, %eax
cvtss2sd -0x124(%rbp,%rax,4), %xmm0
movq 0x552f(%rip), %rdi      # 0x9fd0
callq 0x32d0
movq %rax, %rbx
leaq 0x2745(%rip), %rsi      # 0x71f5
movl $0x1, %edx
movq %rax, %rdi
callq 0x3210
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3110
cmpb $0x1, -0x2b0(%rbp)
jne 0x4be1
leaq -0x48(%rbp), %rbx
movq %rbx, %rdi
leaq -0x2a8(%rbp), %rsi
callq 0x6d68
movq 0x54c5(%rip), %rdi      # 0x9fd0
leaq 0x26b4(%rip), %rsi      # 0x71c6
movl $0x12, %edx
callq 0x3210
movq -0x38(%rbp), %rsi
movq 0x54a9(%rip), %rdi      # 0x9fd0
callq 0x3100
leaq 0x26a6(%rip), %rsi      # 0x71d9
movl $0xa, %edx
movq %rax, %rdi
callq 0x3210
movq 0x5489(%rip), %r14      # 0x9fd0
leaq 0x26a7(%rip), %r12      # 0x71f5
leaq 0x2522(%rip), %r15      # 0x7077
movq %rbx, %r13
movq (%r13), %r13
cmpq %rbx, %r13
je 0x4ba9
cmpq -0x48(%rbp), %r13
je 0x4b77
movl $0x2, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x3210
movl $0x1, %edx
movq %r14, %rdi
movq %r12, %rsi
callq 0x3210
movq 0x10(%r13), %rsi
movq 0x18(%r13), %rdx
movq %r14, %rdi
callq 0x3210
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x3210
jmp 0x4b58
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq 0x5409(%rip), %rdi      # 0x9fd0
callq 0x3030
movq %rax, %rdi
callq 0x3110
leaq -0x48(%rbp), %rdi
callq 0x5cc8
leaq -0x60(%rbp), %r13
leaq -0x200(%rbp), %r15
cmpb $0x0, -0x20(%r15)
leaq -0x218(%rbp), %rax
movq %r15, %rsi
cmovneq %rax, %rsi
leaq -0x48(%rbp), %r12
movq %r12, %rdi
callq 0x6cc2
cmpq $0x0, -0x38(%rbp)
je 0x4c8c
movq 0x53bb(%rip), %rdi      # 0x9fd0
leaq 0x25c8(%rip), %rsi      # 0x71e4
movl $0x12, %edx
callq 0x3210
movq -0x48(%rbp), %rax
movl 0x10(%rax), %esi
movq 0x539c(%rip), %rdi      # 0x9fd0
callq 0x3300
movq %rax, %rbx
leaq 0x25b4(%rip), %rsi      # 0x71f7
movl $0x6, %edx
movq %rax, %rdi
callq 0x3210
movq -0x40(%rbp), %rax
movl 0x10(%rax), %esi
movq %rbx, %rdi
callq 0x3300
movq %rax, %rbx
leaq 0x2595(%rip), %rsi      # 0x71fe
movl $0x2, %edx
movq %rax, %rdi
callq 0x3210
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31b0
jmp 0x4cbb
movq 0x533d(%rip), %rbx      # 0x9fd0
leaq 0x2567(%rip), %rsi      # 0x7201
movl $0x7, %edx
movq %rbx, %rdi
callq 0x3210
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3110
movq -0x78(%rbp), %rax
cmpq -0x70(%rbp), %rax
je 0x4d9c
movq 0x52ed(%rip), %rdi      # 0x9fd0
leaq 0x251f(%rip), %rsi      # 0x7209
movl $0x10, %edx
callq 0x3210
movq -0x78(%rbp), %rbx
cmpq -0x70(%rbp), %rbx
je 0x4d62
movq 0x52cb(%rip), %r14      # 0x9fd0
leaq 0x24e9(%rip), %r13      # 0x71f5
leaq 0x2364(%rip), %r15      # 0x7077
cmpq -0x78(%rbp), %rbx
je 0x4d29
movl $0x2, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x3210
movl $0x1, %edx
movq %r14, %rdi
movq %r13, %rsi
callq 0x3210
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
movq %r14, %rdi
callq 0x3210
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x3210
addq $0x20, %rbx
cmpq -0x70(%rbp), %rbx
jne 0x4d13
movq 0x5267(%rip), %rdi      # 0x9fd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x31b0
leaq -0x60(%rbp), %r13
leaq -0x200(%rbp), %r15
movsbl %al, %esi
movq 0x5241(%rip), %rdi      # 0x9fd0
callq 0x3030
movq %rax, %rdi
callq 0x3110
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x4dba
movq (%rdi), %rbx
movl $0x18, %esi
callq 0x31d0
movq %rbx, %rdi
cmpq %r12, %rbx
jne 0x4da5
leaq -0x78(%rbp), %rdi
callq 0x5320
leaq -0x318(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4de2
movq -0x318(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x340(%rbp), %rdi
testq %rdi, %rdi
leaq 0x4f05(%rip), %r12      # 0x9cf8
je 0x4e04
movq -0x330(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
leaq 0x4e75(%rip), %rbx      # 0x9c80
leaq -0x358(%rbp), %rax
movq %rbx, -0x48(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4e2e
movq -0x358(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x380(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4e4d
movq -0x380(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq 0x4e44(%rip), %rax      # 0x9c98
movq %rax, -0x278(%rbp)
movq -0x200(%rbp), %rdi
cmpq %r15, %rdi
je 0x4e7c
movq (%rdi), %r14
movl $0x18, %esi
callq 0x31d0
movq %r14, %rdi
cmpq %r15, %r14
jne 0x4e67
movq -0x218(%rbp), %rdi
leaq -0x218(%rbp), %rax
cmpq %rax, %rdi
je 0x4eab
movq (%rdi), %r14
movl $0x18, %esi
callq 0x31d0
movq %r14, %rdi
leaq -0x218(%rbp), %rax
cmpq %rax, %r14
jne 0x4e8f
leaq -0x230(%rbp), %rax
movq %rbx, -0x48(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4ece
movq -0x230(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x258(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4eed
movq -0x258(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x60(%rbp), %rdi
cmpq %r13, %rdi
je 0x4f0b
movq (%rdi), %r14
movl $0x18, %esi
callq 0x31d0
movq %r14, %rdi
cmpq %r13, %r14
jne 0x4ef6
leaq -0x2c0(%rbp), %r14
leaq 0x4daf(%rip), %rax      # 0x9cc8
movq %rax, -0x48(%r14)
leaq -0x290(%rbp), %rdi
callq 0x5cc8
leaq -0x2a8(%rbp), %rdi
callq 0x5cc8
movq %rbx, -0x48(%r14)
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x4f51
movq -0x2c0(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x2e8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4f70
movq -0x2e8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x138(%rbp), %rax
movq %rbx, -0x48(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4f93
movq -0x138(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x160(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4fb2
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x1a0(%rbp), %rax
movq %rbx, -0x48(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4fd5
movq -0x1a0(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x1c8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4ff4
movq -0x1c8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq %r12, -0x118(%rbp)
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0x501d
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x503f
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0xd0(%rbp), %rax
movq %rbx, -0x48(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5062
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0xf8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5081
movq -0xf8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x3b8(%rbp), %rax
movq %rbx, -0x48(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x50a4
movq -0x3b8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x3e0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x50c3
movq -0x3e0(%rbp), %rsi
incq %rsi
callq 0x31d0
xorl %eax, %eax
addq $0x3d8, %rsp            # imm = 0x3D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5148
jmp 0x5148
jmp 0x5148
jmp 0x513d
movq %rax, %rbx
leaq -0x60(%rbp), %r15
jmp 0x5195
jmp 0x50ed
movq %rax, %rbx
leaq -0x60(%rbp), %r15
jmp 0x51a1
movq %rax, %rbx
jmp 0x51a1
movq %rax, %rbx
jmp 0x51cb
movq %rax, %rbx
jmp 0x51d7
movq %rax, %rbx
jmp 0x51e3
movq %rax, %rbx
jmp 0x51ef
jmp 0x5170
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r14, %rdi
je 0x517c
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x517c
movq %rax, %rbx
leaq -0x60(%rbp), %r15
jmp 0x5189
jmp 0x514d
movq %rax, %rbx
jmp 0x517c
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x517c
movq (%rdi), %r14
movl $0x18, %esi
callq 0x31d0
movq %r14, %rdi
cmpq %r12, %r14
jne 0x5159
jmp 0x517c
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
callq 0x5cc8
leaq -0x60(%rbp), %r15
leaq -0x78(%rbp), %rdi
callq 0x5320
leaq -0x3a0(%rbp), %rdi
callq 0x5564
leaq -0x278(%rbp), %rdi
callq 0x55e4
movq -0x60(%rbp), %rdi
cmpq %r15, %rdi
je 0x51bf
movq (%rdi), %r14
movl $0x18, %esi
callq 0x31d0
movq %r14, %rdi
cmpq %r15, %r14
jne 0x51aa
leaq -0x308(%rbp), %rdi
callq 0x568e
leaq -0x180(%rbp), %rdi
callq 0x578a
leaq -0x1e8(%rbp), %rdi
callq 0x578a
leaq -0x118(%rbp), %rdi
callq 0x56fa
leaq -0x400(%rbp), %rdi
callq 0x578a
movq %rbx, %rdi
callq 0x3320
nop