// File: gdaws[P]process-monitor/program_arguments.cpp
// Function: program_arguments::parser::parse(int, char const**)
void parser::parse(int argc, const char ** argv)
{
    bool print_help = false;
    set_options_group(NULL);
    add_option('h', "help", "display this help and exit", print_help);
    
    std::vector<std::string> error_messages;
    
    for(int i = 1; i < argc; i++)
    {
        const char * arg = argv[i];
        
        if(arg[0] == '-')
        {
            if(arg[1] == '-')
            {
                const char * name_begin = arg + 2;
                const char * value = strstr(name_begin, "=");
                const char * name_end = 
                    (value ? value : name_begin + strlen(name_begin));
                
                verbose_names_iterator iter = 
                    m_verbose_names.find(std::string(name_begin, name_end));
                
                if(iter == m_verbose_names.end())
                {
                    std::stringstream format;
                    format<<"unknown option  '--"
                          <<std::string(name_begin, name_end)
                          <<"'";
                    error_messages.push_back(format.str());
                    continue;
                }
                
                option * opt = &(iter->second);
                
                if(value)
                {
                    if(!opt->value_name)
                    {
                        std::stringstream format;
                        format<<"option '--"
                              <<std::string(name_begin, name_end)
                              <<"' doesn't allow an argument";
                        error_messages.push_back(format.str());
                        continue;
                    }
                }
                else
                {
                    if(opt->value_name)
                    {
                        std::stringstream format;
                        format<<"option  '--"
                              <<std::string(name_begin, name_end)
                              <<"' requires an argument";
                        error_messages.push_back(format.str());
                        continue;
                    }
                }
                
                opt->binding->parse_value(value + 1);
            }
            else
            {
                names_iterator iter = m_names.find(arg[1]);
                
                if(iter == m_names.end())
                {
                    std::stringstream format;
                    format<<"unknown option  '-"<<arg[1]<<"'";
                    error_messages.push_back(format.str());
                    continue;
                }
                
                option * opt = &(iter->second);
                
                const char * value = "=";
                
                if(opt->value_name)
                {
                    value = argv[++i];
                    
                    if(!value || value[0] == '-')
                    {
                        std::stringstream format;
                        format<<"option  '-"<<arg[1]
                              <<"' requires an argument";
                        error_messages.push_back(format.str());
                        continue;
                    }
                }
                
                opt->binding->parse_value(value);
            }
        }
        else
        {
            if(m_next_argument == m_arguments.end())
            {
                if(m_argument_repeat_last)
                {
                    m_next_argument = m_arguments.begin() + 
                        (m_arguments.size() - m_argument_repeat_last);
                }
                else
                {
                    error_messages.push_back("too many arguments");
                    continue;
                }
            }
            
            (*m_next_argument).binding->parse_value(arg);
            m_next_argument++;
        }
    }
    
    if(print_help)
    {
        help(argv[0]);
        exit(0);
    }
    
    if(m_next_argument < m_arguments.end()  - m_argument_repeat_last)
    {
        for(; m_next_argument != m_arguments.end(); m_next_argument++)
        {
            std::stringstream format;
            format<<"missing "<<uppercase(m_next_argument->value_name)
                  <<" argument";
            error_messages.push_back(format.str());
        }
    }
    
    if(error_messages.size())
    {
        for(std::vector<std::string>::const_iterator iter 
                = error_messages.begin(); iter != error_messages.end(); iter++)
        {
            std::cerr<<argv[0]<<": "<<*iter<<std::endl;
        }
        exit(1);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd40, %rsp            # imm = 0xD40
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xc10(%rbp)
movb $0x0, -0x19(%rbp)
xorl %eax, %eax
movl %eax, %esi
callq 0x4a90
movq -0xc10(%rbp), %rdi
movl $0x68, %esi
leaq 0xa515(%rip), %rdx      # 0xf076
leaq 0xa513(%rip), %rcx      # 0xf07b
leaq -0x19(%rbp), %r8
movl $0x1, %r9d
callq 0x4760
leaq -0x38(%rbp), %rdi
callq 0x3d30
movl $0x1, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x56b4
movq -0x18(%rbp), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x5502
movq -0x48(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2d, %eax
jne 0x524f
movq -0x48(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
leaq 0xa4bb(%rip), %rsi      # 0xf096
callq 0x3090
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x4bf8
movq -0x58(%rbp), %rax
movq %rax, -0xc18(%rbp)
jmp 0x4c20
movq -0x50(%rbp), %rax
movq %rax, -0xc20(%rbp)
movq -0x50(%rbp), %rdi
callq 0x3100
movq %rax, %rcx
movq -0xc20(%rbp), %rax
addq %rcx, %rax
movq %rax, -0xc18(%rbp)
movq -0xc10(%rbp), %rax
movq -0xc18(%rbp), %rcx
movq %rcx, -0x60(%rbp)
addq $0x30, %rax
movq %rax, -0xc40(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0xc38(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0xc30(%rbp)
leaq -0x89(%rbp), %rdi
movq %rdi, -0xc28(%rbp)
callq 0x3440
movq -0xc38(%rbp), %rsi
movq -0xc30(%rbp), %rdx
movq -0xc28(%rbp), %rcx
leaq -0x88(%rbp), %rdi
callq 0x6e20
jmp 0x4c89
movq -0xc40(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x6df0
movq %rax, -0xc48(%rbp)
jmp 0x4ca5
movq -0xc48(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x3160
leaq -0x89(%rbp), %rdi
callq 0x32e0
movq -0xc10(%rbp), %rdi
addq $0x30, %rdi
callq 0x6ec0
movq %rax, -0xa8(%rbp)
leaq -0x68(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x6e90
testb $0x1, %al
jne 0x4cf8
jmp 0x4ed8
leaq -0x230(%rbp), %rdi
callq 0x31a0
jmp 0x4d06
leaq -0x220(%rbp), %rdi
leaq 0xa384(%rip), %rsi      # 0xf098
callq 0x3270
movq %rax, -0xc50(%rbp)
jmp 0x4d22
movq -0x50(%rbp), %rax
movq %rax, -0xc68(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0xc60(%rbp)
leaq -0x251(%rbp), %rdi
movq %rdi, -0xc58(%rbp)
callq 0x3440
movq -0xc68(%rbp), %rsi
movq -0xc60(%rbp), %rdx
movq -0xc58(%rbp), %rcx
leaq -0x250(%rbp), %rdi
callq 0x6e20
jmp 0x4d6e
movq -0xc50(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0x3230
movq %rax, -0xc70(%rbp)
jmp 0x4d8a
movq -0xc70(%rbp), %rdi
leaq 0xa314(%rip), %rsi      # 0xf0ac
callq 0x3270
jmp 0x4d9f
leaq -0x250(%rbp), %rdi
callq 0x3160
leaq -0x251(%rbp), %rdi
callq 0x32e0
leaq -0x278(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x3260
jmp 0x4dcc
leaq -0x38(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x6ef0
jmp 0x4dde
leaq -0x278(%rbp), %rdi
callq 0x3160
leaq -0x230(%rbp), %rdi
callq 0x31c0
jmp 0x56a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x4e2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x3160
leaq -0x89(%rbp), %rdi
callq 0x32e0
jmp 0x5a72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x5a72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x4ec7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x4e9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x250(%rbp), %rdi
callq 0x3160
leaq -0x251(%rbp), %rdi
callq 0x32e0
jmp 0x4ec7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x3160
leaq -0x230(%rbp), %rdi
callq 0x31c0
jmp 0x5a72
leaq -0x68(%rbp), %rdi
callq 0x6f20
addq $0x20, %rax
movq %rax, -0x280(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x5094
movq -0x280(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x508f
leaq -0x408(%rbp), %rdi
callq 0x31a0
jmp 0x4f17
leaq -0x3f8(%rbp), %rdi
leaq 0xa189(%rip), %rsi      # 0xf0ae
callq 0x3270
movq %rax, -0xc78(%rbp)
jmp 0x4f33
movq -0x50(%rbp), %rax
movq %rax, -0xc90(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0xc88(%rbp)
leaq -0x429(%rbp), %rdi
movq %rdi, -0xc80(%rbp)
callq 0x3440
movq -0xc90(%rbp), %rsi
movq -0xc88(%rbp), %rdx
movq -0xc80(%rbp), %rcx
leaq -0x428(%rbp), %rdi
callq 0x6e20
jmp 0x4f7f
movq -0xc78(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0x3230
movq %rax, -0xc98(%rbp)
jmp 0x4f9b
movq -0xc98(%rbp), %rdi
leaq 0xa110(%rip), %rsi      # 0xf0b9
callq 0x3270
jmp 0x4fb0
leaq -0x428(%rbp), %rdi
callq 0x3160
leaq -0x429(%rbp), %rdi
callq 0x32e0
leaq -0x450(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x3260
jmp 0x4fdd
leaq -0x38(%rbp), %rdi
leaq -0x450(%rbp), %rsi
callq 0x6ef0
jmp 0x4fef
leaq -0x450(%rbp), %rdi
callq 0x3160
leaq -0x408(%rbp), %rdi
callq 0x31c0
jmp 0x56a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x507e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x5052
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x3160
leaq -0x429(%rbp), %rdi
callq 0x32e0
jmp 0x507e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x450(%rbp), %rdi
callq 0x3160
leaq -0x408(%rbp), %rdi
callq 0x31c0
jmp 0x5a72
jmp 0x522e
movq -0x280(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x522c
leaq -0x5d8(%rbp), %rdi
callq 0x31a0
jmp 0x50b4
leaq -0x5c8(%rbp), %rdi
leaq 0x9fde(%rip), %rsi      # 0xf0a0
callq 0x3270
movq %rax, -0xca0(%rbp)
jmp 0x50d0
movq -0x50(%rbp), %rax
movq %rax, -0xcb8(%rbp)
movq -0x60(%rbp), %rax
movq %rax, -0xcb0(%rbp)
leaq -0x5f9(%rbp), %rdi
movq %rdi, -0xca8(%rbp)
callq 0x3440
movq -0xcb8(%rbp), %rsi
movq -0xcb0(%rbp), %rdx
movq -0xca8(%rbp), %rcx
leaq -0x5f8(%rbp), %rdi
callq 0x6e20
jmp 0x511c
movq -0xca0(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
callq 0x3230
movq %rax, -0xcc0(%rbp)
jmp 0x5138
movq -0xcc0(%rbp), %rdi
leaq 0x9f8f(%rip), %rsi      # 0xf0d5
callq 0x3270
jmp 0x514d
leaq -0x5f8(%rbp), %rdi
callq 0x3160
leaq -0x5f9(%rbp), %rdi
callq 0x32e0
leaq -0x620(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0x3260
jmp 0x517a
leaq -0x38(%rbp), %rdi
leaq -0x620(%rbp), %rsi
callq 0x6ef0
jmp 0x518c
leaq -0x620(%rbp), %rdi
callq 0x3160
leaq -0x5d8(%rbp), %rdi
callq 0x31c0
jmp 0x56a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x521b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x51ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x5f8(%rbp), %rdi
callq 0x3160
leaq -0x5f9(%rbp), %rdi
callq 0x32e0
jmp 0x521b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x620(%rbp), %rdi
callq 0x3160
leaq -0x5d8(%rbp), %rdi
callq 0x31c0
jmp 0x5a72
jmp 0x522e
movq -0x280(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x58(%rbp), %rsi
incq %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x524a
jmp 0x54fd
movq -0xc10(%rbp), %rdi
movq -0x48(%rbp), %rsi
incq %rsi
callq 0x6f40
movq %rax, -0xcc8(%rbp)
jmp 0x526b
movq -0xc10(%rbp), %rdi
movq -0xcc8(%rbp), %rax
movq %rax, -0x628(%rbp)
callq 0x6fa0
movq %rax, -0x630(%rbp)
leaq -0x628(%rbp), %rdi
leaq -0x630(%rbp), %rsi
callq 0x6f70
testb $0x1, %al
jne 0x52a8
jmp 0x538b
leaq -0x7b8(%rbp), %rdi
callq 0x31a0
jmp 0x52b6
leaq -0x7a8(%rbp), %rdi
leaq 0x9e28(%rip), %rsi      # 0xf0ec
callq 0x3270
movq %rax, -0xcd0(%rbp)
jmp 0x52d2
movq -0xcd0(%rbp), %rdi
movq -0x48(%rbp), %rax
movsbl 0x1(%rax), %esi
callq 0x3320
movq %rax, -0xcd8(%rbp)
jmp 0x52ef
movq -0xcd8(%rbp), %rdi
leaq 0x9daf(%rip), %rsi      # 0xf0ac
callq 0x3270
jmp 0x5304
leaq -0x7d8(%rbp), %rdi
leaq -0x7b8(%rbp), %rsi
callq 0x3260
jmp 0x5319
leaq -0x38(%rbp), %rdi
leaq -0x7d8(%rbp), %rsi
callq 0x6ef0
jmp 0x532b
leaq -0x7d8(%rbp), %rdi
callq 0x3160
leaq -0x7b8(%rbp), %rdi
callq 0x31c0
jmp 0x56a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x537a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x7d8(%rbp), %rdi
callq 0x3160
leaq -0x7b8(%rbp), %rdi
callq 0x31c0
jmp 0x5a72
leaq -0x628(%rbp), %rdi
callq 0x6fd0
addq $0x8, %rax
movq %rax, -0x7e0(%rbp)
leaq 0x9ced(%rip), %rax      # 0xf096
movq %rax, -0x7e8(%rbp)
movq -0x7e0(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x54df
movq -0x18(%rbp), %rax
movl -0x3c(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, -0x3c(%rbp)
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x7e8(%rbp)
cmpq $0x0, -0x7e8(%rbp)
je 0x53fa
movq -0x7e8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x54dd
leaq -0x970(%rbp), %rdi
callq 0x31a0
jmp 0x5408
leaq -0x960(%rbp), %rdi
leaq 0x9cde(%rip), %rsi      # 0xf0f4
callq 0x3270
movq %rax, -0xce0(%rbp)
jmp 0x5424
movq -0xce0(%rbp), %rdi
movq -0x48(%rbp), %rax
movsbl 0x1(%rax), %esi
callq 0x3320
movq %rax, -0xce8(%rbp)
jmp 0x5441
movq -0xce8(%rbp), %rdi
leaq 0x9c86(%rip), %rsi      # 0xf0d5
callq 0x3270
jmp 0x5456
leaq -0x990(%rbp), %rdi
leaq -0x970(%rbp), %rsi
callq 0x3260
jmp 0x546b
leaq -0x38(%rbp), %rdi
leaq -0x990(%rbp), %rsi
callq 0x6ef0
jmp 0x547d
leaq -0x990(%rbp), %rdi
callq 0x3160
leaq -0x970(%rbp), %rdi
callq 0x31c0
jmp 0x56a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x54cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x990(%rbp), %rdi
callq 0x3160
leaq -0x970(%rbp), %rdi
callq 0x31c0
jmp 0x5a72
jmp 0x54df
movq -0x7e0(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x7e8(%rbp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x54fb
jmp 0x54fd
jmp 0x56a4
movq -0xc10(%rbp), %rdi
movq %rdi, %rax
addq $0x90, %rax
movq %rax, -0xcf0(%rbp)
addq $0x78, %rdi
callq 0x7030
movq -0xcf0(%rbp), %rdi
movq %rax, -0x998(%rbp)
leaq -0x998(%rbp), %rsi
callq 0x6ff0
testb $0x1, %al
jne 0x5545
jmp 0x5663
movq -0xc10(%rbp), %rax
cmpl $0x0, 0x98(%rax)
je 0x55c0
movq -0xc10(%rbp), %rdi
addq $0x78, %rdi
callq 0x6dc0
movq -0xc10(%rbp), %rdi
movq %rax, -0x9a8(%rbp)
addq $0x78, %rdi
callq 0x70a0
movq %rax, %rsi
movq -0xc10(%rbp), %rax
movslq 0x98(%rax), %rax
subq %rax, %rsi
leaq -0x9a8(%rbp), %rdi
callq 0x7060
movq %rax, %rcx
movq -0xc10(%rbp), %rax
movq %rcx, -0x9a0(%rbp)
movq -0x9a0(%rbp), %rcx
movq %rcx, 0x90(%rax)
jmp 0x5661
leaq -0x9c9(%rbp), %rdi
movq %rdi, -0xcf8(%rbp)
callq 0x3440
movq -0xcf8(%rbp), %rdx
leaq 0x9b1e(%rip), %rsi      # 0xf0ff
leaq -0x9c8(%rbp), %rdi
callq 0x6b40
jmp 0x55ef
leaq -0x38(%rbp), %rdi
leaq -0x9c8(%rbp), %rsi
callq 0x6ef0
jmp 0x5601
leaq -0x9c8(%rbp), %rdi
callq 0x3160
leaq -0x9c9(%rbp), %rdi
callq 0x32e0
jmp 0x56a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x5650
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x9c8(%rbp), %rdi
callq 0x3160
leaq -0x9c9(%rbp), %rdi
callq 0x32e0
jmp 0x5a72
jmp 0x5663
movq -0xc10(%rbp), %rdi
addq $0x90, %rdi
callq 0x70c0
movq 0x8(%rax), %rdi
movq -0x48(%rbp), %rsi
movq (%rdi), %rax
movq (%rax), %rax
callq *%rax
jmp 0x5688
movq -0xc10(%rbp), %rdi
addq $0x90, %rdi
xorl %esi, %esi
callq 0x70e0
movq %rax, -0x9d8(%rbp)
jmp 0x56a6
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x4b87
testb $0x1, -0x19(%rbp)
je 0x56d6
movq -0xc10(%rbp), %rdi
movq -0x18(%rbp), %rax
movq (%rax), %rsi
callq 0x5a90
jmp 0x56cf
xorl %edi, %edi
callq 0x3330
movq -0xc10(%rbp), %rdi
movq %rdi, %rax
addq $0x90, %rax
movq %rax, -0xd00(%rbp)
addq $0x78, %rdi
callq 0x7030
movq %rax, %rcx
movq -0xc10(%rbp), %rax
movq %rcx, -0x9e8(%rbp)
movslq 0x98(%rax), %rsi
leaq -0x9e8(%rbp), %rdi
callq 0x7160
movq -0xd00(%rbp), %rdi
movq %rax, -0x9e0(%rbp)
leaq -0x9e0(%rbp), %rsi
callq 0x7120
testb $0x1, %al
jne 0x573d
jmp 0x5967
jmp 0x573f
movq -0xc10(%rbp), %rdi
movq %rdi, %rax
addq $0x90, %rax
movq %rax, -0xd08(%rbp)
addq $0x78, %rdi
callq 0x7030
movq -0xd08(%rbp), %rdi
movq %rax, -0x9f0(%rbp)
leaq -0x9f0(%rbp), %rsi
callq 0x71a0
testb $0x1, %al
jne 0x5782
jmp 0x5965
leaq -0xb78(%rbp), %rdi
callq 0x31a0
jmp 0x5790
leaq -0xb68(%rbp), %rdi
leaq 0x9974(%rip), %rsi      # 0xf112
callq 0x3270
movq %rax, -0xd10(%rbp)
jmp 0x57ac
movq -0xc10(%rbp), %rdi
addq $0x90, %rdi
callq 0x71e0
movq (%rax), %rax
movq %rax, -0xd20(%rbp)
leaq -0xbb9(%rbp), %rdi
movq %rdi, -0xd18(%rbp)
callq 0x3440
movq -0xd20(%rbp), %rsi
movq -0xd18(%rbp), %rdx
leaq -0xbb8(%rbp), %rdi
callq 0x6b40
jmp 0x57f8
leaq -0xb98(%rbp), %rdi
leaq -0xbb8(%rbp), %rsi
callq 0x62e0
jmp 0x580d
movq -0xd10(%rbp), %rdi
leaq -0xb98(%rbp), %rsi
callq 0x3230
movq %rax, -0xd28(%rbp)
jmp 0x5829
movq -0xd28(%rbp), %rdi
leaq 0x98ab(%rip), %rsi      # 0xf0e2
callq 0x3270
jmp 0x583e
leaq -0xb98(%rbp), %rdi
callq 0x3160
leaq -0xbb8(%rbp), %rdi
callq 0x3160
leaq -0xbb9(%rbp), %rdi
callq 0x32e0
leaq -0xbe0(%rbp), %rdi
leaq -0xb78(%rbp), %rsi
callq 0x3260
jmp 0x5877
leaq -0x38(%rbp), %rdi
leaq -0xbe0(%rbp), %rsi
callq 0x6ef0
jmp 0x5889
leaq -0xbe0(%rbp), %rdi
callq 0x3160
leaq -0xb78(%rbp), %rdi
callq 0x31c0
movq -0xc10(%rbp), %rdi
addq $0x90, %rdi
xorl %esi, %esi
callq 0x70e0
movq %rax, -0xbe8(%rbp)
jmp 0x573f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x5954
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x5928
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
jmp 0x591c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0xb98(%rbp), %rdi
callq 0x3160
leaq -0xbb8(%rbp), %rdi
callq 0x3160
leaq -0xbb9(%rbp), %rdi
callq 0x32e0
jmp 0x5954
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0xbe0(%rbp), %rdi
callq 0x3160
leaq -0xb78(%rbp), %rdi
callq 0x31c0
jmp 0x5a72
jmp 0x5967
leaq -0x38(%rbp), %rdi
callq 0x3d50
cmpq $0x0, %rax
je 0x5a60
leaq -0x38(%rbp), %rdi
callq 0x7200
movq %rax, -0xbf8(%rbp)
leaq -0xbf0(%rbp), %rdi
leaq -0xbf8(%rbp), %rsi
callq 0x7230
leaq -0x38(%rbp), %rdi
callq 0x72b0
movq %rax, -0xc00(%rbp)
leaq -0xbf0(%rbp), %rdi
leaq -0xc00(%rbp), %rsi
callq 0x7270
testb $0x1, %al
jne 0x59c9
jmp 0x5a56
movq -0x18(%rbp), %rax
movq (%rax), %rsi
movq 0x11619(%rip), %rdi     # 0x16ff0
callq 0x3270
movq %rax, -0xd30(%rbp)
jmp 0x59e5
movq -0xd30(%rbp), %rdi
leaq 0x972d(%rip), %rsi      # 0xf120
callq 0x3270
movq %rax, -0xd38(%rbp)
jmp 0x5a01
leaq -0xbf0(%rbp), %rdi
callq 0x72e0
movq -0xd38(%rbp), %rdi
movq %rax, %rsi
callq 0x3230
movq %rax, -0xd40(%rbp)
jmp 0x5a25
movq -0xd40(%rbp), %rdi
movq 0x1157d(%rip), %rsi     # 0x16fb0
callq 0x32b0
jmp 0x5a3a
jmp 0x5a3c
leaq -0xbf0(%rbp), %rdi
xorl %esi, %esi
callq 0x7300
movq %rax, -0xc08(%rbp)
jmp 0x599d
movl $0x1, %edi
callq 0x3330
leaq -0x38(%rbp), %rdi
callq 0x3d90
addq $0xd40, %rsp            # imm = 0xD40
popq %rbp
retq
leaq -0x38(%rbp), %rdi
callq 0x3d90
movq -0x98(%rbp), %rdi
callq 0x3430
nopw (%rax,%rax)