LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/args/Arg.cpp
// Function: Arg::split(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, char)
vector<string> Arg::split(const string s, char c) {
    vector<string> tokens;
    string token;
    istringstream tokenStream(s);
    while (getline(tokenStream, token, c)) {
        if (!token.empty()) {
            tokens.push_back(token);
        }
    }
    return tokens;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1a0, %rsp            # imm = 0x1A0
movl %ecx, %ebp
movq %rdi, %rbx
xorl %eax, %eax
movq %rax, 0x10(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
leaq 0x10(%rsp), %r12
movq %r12, -0x10(%r12)
movq %rax, -0x8(%r12)
movb $0x0, (%r12)
leaq 0x20(%rsp), %rdi
movq %rdx, %rsi
movl $0x8, %edx
callq 0x5600
movsbl %bpl, %ebp
leaq 0x20(%rsp), %r14
movq %rsp, %r15
movq %r14, %rdi
movq %r15, %rsi
movl %ebp, %edx
callq 0x5690
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x1faaa
cmpq $0x0, 0x8(%rsp)
je 0x1fa7a
movq %rbx, %rdi
movq %r15, %rsi
callq 0x1aa0a
jmp 0x1fa7a
movq 0x224c7(%rip), %rsi     # 0x41f78
leaq 0x20(%rsp), %rdi
callq 0x5530
leaq 0x98(%rsp), %rdi
callq 0x5130
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x1fade
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbx, %rax
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
jmp 0x1fb17
movq %rax, %r14
movq 0x22478(%rip), %rsi     # 0x41f78
leaq 0x20(%rsp), %rdi
callq 0x5530
leaq 0x98(%rsp), %rdi
callq 0x5130
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x1fb2d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbx, %rdi
callq 0x8206
movq %r14, %rdi
callq 0x5660
nop
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/args/Arg.cpp
// Function: Arg::validateArguments()
void Arg::validateArguments(){
    //programmer error, name or alias repeated
    nameConflict();
    
    processInput();
    if(helpSetted && isSet("help")){
        throw std::runtime_error(help());
    }else{
        processRequired();
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rdi, %r14
callq 0x1fc54
movq %r14, %rdi
callq 0x20038
cmpb $0x1, 0x48(%r14)
jne 0x1fbab
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x12c37(%rip), %rsi     # 0x327a6
leaq 0x12c34(%rip), %rdx     # 0x327aa
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x8264
movq %r14, %rdi
movq %rbx, %rsi
callq 0x205b4
movl %eax, %ebx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1fba7
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
testb %bl, %bl
jne 0x1fbbe
movq %r14, %rdi
callq 0x20880
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x51c0
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
movq %r14, %rsi
callq 0x2063c
movb $0x1, %bpl
leaq 0x28(%rsp), %rsi
movq %rbx, %rdi
callq 0x55c0
xorl %ebp, %ebp
movq 0x223f7(%rip), %rsi     # 0x41fe8
movq 0x22388(%rip), %rdx     # 0x41f80
movq %rbx, %rdi
callq 0x5620
movq %rax, %r14
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1fc1e
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x53b0
testb %bpl, %bpl
jne 0x1fc28
jmp 0x1fc4c
movq %rax, %r14
movq %rbx, %rdi
callq 0x52c0
jmp 0x1fc4c
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1fc4c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %r14, %rdi
callq 0x5660
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/args/Arg.cpp
// Function: Arg::isSet(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool Arg::isSet(string arg){
    Argument *a = getArgument(arg);
    if(a!=nullptr){
        return(a->isSet());
    }
    return false;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rsi), %rax
movq 0x8(%rsi), %rdx
addq %rax, %rdx
movq %rsp, %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x82fa
movq %rbx, %rdi
movq %r14, %rsi
callq 0x20c20
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x20605
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
testq %rbx, %rbx
je 0x2060f
movb 0x39(%rbx), %al
jmp 0x20611
xorl %eax, %eax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x20634
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbx, %rdi
callq 0x5660
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/args/Arg.cpp
// Function: Arg::help[abi:cxx11]()
string Arg::help(){
    string tmp{};

    tmp += programName+"\n\n";
    tmp += "Options:\n";

    for(Argument a : arguments){
        tmp += a.to_string();
        tmp += "\n\n";
    }

    return(tmp);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x10(%rdi), %rax
movq %rax, 0x80(%rsp)
movq %rax, (%rdi)
movq $0x0, 0x8(%rdi)
movb $0x0, 0x10(%rdi)
leaq 0x30(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x28(%rsi), %rsi
movq 0x30(%r15), %rdx
addq %rsi, %rdx
leaq 0x20(%rsp), %rdi
callq 0x82fa
leaq 0x1216e(%rip), %rsi     # 0x32802
leaq 0x20(%rsp), %rdi
callq 0x56f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %rbx, %rdi
callq 0x5110
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
je 0x206c7
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x53b0
leaq 0x12137(%rip), %rsi     # 0x32805
movq %rbx, %rdi
callq 0x56f0
movq (%r15), %r14
movq 0x8(%r15), %r12
cmpq %r12, %r14
je 0x207c7
leaq 0x48(%rsp), %rbp
leaq 0x70(%rsp), %r15
leaq 0x20(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0x17d42
movq %rbp, 0x38(%rsp)
movq 0x18(%r14), %rsi
movq 0x20(%r14), %rdx
addq %rsi, %rdx
leaq 0x38(%rsp), %rdi
callq 0x82fa
movzwl 0x38(%r14), %eax
movw %ax, 0x58(%rsp)
movq %r15, 0x60(%rsp)
movq 0x40(%r14), %rsi
movq 0x48(%r14), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %rdi
callq 0x82fa
movq %rsp, %rdi
movq %r13, %rsi
callq 0x2119a
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x5110
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x20775
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbx, %rdi
leaq 0x12083(%rip), %rsi     # 0x32802
callq 0x56f0
movq 0x60(%rsp), %rdi
cmpq %r15, %rdi
je 0x2079b
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x38(%rsp), %rdi
cmpq %rbp, %rdi
je 0x207b2
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %r13, %rdi
callq 0x8206
addq $0x60, %r14
cmpq %r12, %r14
jne 0x206f5
movq %rbx, %rax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x207fe
jmp 0x207e0
movq %rax, %r14
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
je 0x2085d
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x2085d
jmp 0x207fe
movq %rax, %r14
jmp 0x2085d
movq %rax, %r14
jmp 0x20822
movq %rax, %r14
movq 0x38(%rsp), %rdi
cmpq %rbp, %rdi
je 0x20822
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x53b0
leaq 0x20(%rsp), %rdi
callq 0x8206
jmp 0x2085d
jmp 0x20850
movq %rax, %r14
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x20853
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x20853
movq %rax, %r14
leaq 0x20(%rsp), %rdi
callq 0x2111e
movq (%rbx), %rdi
movq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x20878
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movq %r14, %rdi
callq 0x5660
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/args/Arg.cpp
// Function: Arg::getArgument(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Arg::Argument* Arg::getArgument(string arg){
    vector<string> argV = split(arg,'|');
    for(string s : argV){
        for(Argument &a : arguments){
            for(string name : a.getArg()){
                if(name == s){
                    return(&a);
                } 
            }
        }
    }
    
    return(nullptr);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rdi, 0x30(%rsp)
leaq 0xa8(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rsi), %rax
movq 0x8(%rsi), %rdx
addq %rax, %rdx
leaq 0x98(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x82fa
leaq 0x80(%rsp), %rdi
movq %r14, %rdx
movl $0x7c, %ecx
callq 0x1fa28
movq 0x98(%rsp), %rdi
cmpq %r15, %rdi
je 0x20c91
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x80(%rsp), %rcx
movq 0x88(%rsp), %rax
movq %rax, 0x28(%rsp)
cmpq %rax, %rcx
je 0x20dfd
leaq 0x18(%rsp), %rbx
leaq 0x70(%rsp), %r12
leaq 0x48(%rsp), %r14
movq %rbx, 0x8(%rsp)
movq (%rcx), %rsi
movq %rcx, 0x38(%rsp)
movq 0x8(%rcx), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x82fa
movq 0x30(%rsp), %rax
movq (%rax), %rbp
movq 0x8(%rax), %rax
movq %rax, 0x40(%rsp)
cmpq %rax, %rbp
je 0x20db4
movq %r14, %rdi
movq %rbp, %rsi
callq 0x17d42
movq 0x48(%rsp), %rbx
movq 0x50(%rsp), %r13
cmpq %r13, %rbx
je 0x20d98
movq %r12, 0x60(%rsp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %rdi
callq 0x82fa
movq 0x68(%rsp), %rdx
cmpq 0x10(%rsp), %rdx
jne 0x20d64
movq 0x60(%rsp), %r15
testq %rdx, %rdx
je 0x20d6e
movq 0x8(%rsp), %rsi
movq %r15, %rdi
callq 0x53d0
testl %eax, %eax
sete %r14b
movq (%rsp), %rax
cmoveq %rbp, %rax
movq %rax, (%rsp)
jmp 0x20d75
movq 0x60(%rsp), %r15
xorl %r14d, %r14d
jmp 0x20d75
movb $0x1, %r14b
movq %rbp, (%rsp)
cmpq %r12, %r15
je 0x20d8a
movq 0x70(%rsp), %rsi
incq %rsi
movq %r15, %rdi
callq 0x53b0
testb %r14b, %r14b
jne 0x20db9
addq $0x20, %rbx
jmp 0x20d0b
leaq 0x48(%rsp), %r14
movq %r14, %rdi
callq 0x8206
addq $0x60, %rbp
cmpq 0x40(%rsp), %rbp
jne 0x20cf6
movb $0x1, %bpl
jmp 0x20dc8
leaq 0x48(%rsp), %r14
movq %r14, %rdi
callq 0x8206
xorl %ebp, %ebp
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rbx
cmpq %rbx, %rdi
je 0x20de4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
testb %bpl, %bpl
je 0x20e01
movq 0x38(%rsp), %rcx
addq $0x20, %rcx
cmpq 0x28(%rsp), %rcx
jne 0x20cbe
xorl %ebx, %ebx
jmp 0x20e05
movq (%rsp), %rbx
leaq 0x80(%rsp), %rdi
callq 0x8206
movq %rbx, %rax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r15, %rdi
je 0x20e89
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x20e89
movq %rax, %rbx
jmp 0x20e7c
movq %rax, %rbx
jmp 0x20e60
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x8206
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x20e7c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
leaq 0x80(%rsp), %rdi
callq 0x8206
movq %rbx, %rdi
callq 0x5660
nop
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/args/Arg.cpp
// Function: Arg::getOption(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
string Arg::getOption(string arg){
    Argument *a = getArgument(arg);
    if(a!=nullptr){
        return(a->getOption());
    }
    return {};
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rdx), %rsi
movq 0x8(%rdx), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x82fa
movq %r14, %rdi
movq %r15, %rsi
callq 0x20c20
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x20ee9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
leaq 0x10(%rbx), %rax
testq %r14, %r14
je 0x20f0a
movq %rax, (%rbx)
movq 0x40(%r14), %rsi
movq 0x48(%r14), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x82fa
jmp 0x20f19
movq %rax, (%rbx)
movq $0x0, 0x8(%rbx)
movb $0x0, 0x10(%rbx)
movq %rbx, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x20f42
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbx, %rdi
callq 0x5660
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/args/Arg.hpp
// Function: Arg::Argument::to_string[abi:cxx11]()
string to_string(){
                    string tmp{};
                    for(unsigned i=0;i<arg.size();i++){
                        tmp += arg[i];
                        if(i+1 != arg.size()){
                            tmp += "|";
                        }
                    }
                    tmp += ((required)?("\n\tRequired."):(""));
                    tmp += "\n\tDescription: "+((description.empty())?("no description."):(description));
                    return(tmp);
                }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x10(%rdi), %r12
movq %r12, (%rdi)
movq $0x0, 0x8(%rdi)
movb $0x0, 0x10(%rdi)
movq (%rsi), %rax
cmpq %rax, 0x8(%rsi)
je 0x21224
movl $0x1, %ebp
xorl %r13d, %r13d
leaq 0x10824(%rip), %r15     # 0x319fd
shlq $0x5, %r13
movq (%rax,%r13), %rsi
movq 0x8(%rax,%r13), %rdx
movq %rbx, %rdi
callq 0x5110
movl %ebp, %r13d
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
cmpq %r13, %rcx
je 0x2121d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x56f0
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
incl %ebp
cmpq %r13, %rcx
ja 0x211d9
leaq 0x1162f(%rip), %rax     # 0x3285a
leaq 0x11741(%rip), %rsi     # 0x32973
cmpb $0x0, 0x38(%r14)
cmovneq %rax, %rsi
movq %rbx, %rdi
callq 0x56f0
movq 0x20(%r14), %rdx
leaq 0x18(%rsp), %rax
testq %rdx, %rdx
je 0x21268
movq %rax, -0x10(%rax)
movq 0x18(%r14), %rsi
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x82fa
jmp 0x21284
movq %rax, -0x10(%rax)
leaq 0x11603(%rip), %rsi     # 0x32876
leaq 0x1160b(%rip), %rdx     # 0x32885
leaq 0x8(%rsp), %rdi
callq 0x8264
leaq 0x115db(%rip), %rcx     # 0x32866
leaq 0x8(%rsp), %rdi
movl $0xf, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x5400
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x212c6
movq %rsi, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x212d0
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq %r15, %rsi
movq 0x8(%rax), %rdx
movq %rdx, 0x30(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rbx, %rdi
callq 0x5110
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x21307
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x53b0
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x21322
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x21353
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x21353
movq %rax, %r14
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x21377
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x21377
jmp 0x21374
jmp 0x21374
movq %rax, %r14
movq (%rbx), %rdi
cmpq %r12, %rdi
je 0x2138b
movq (%r12), %rsi
incq %rsi
callq 0x53b0
movq %r14, %rdi
callq 0x5660
nop
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/AntColony/Ant.cpp
// Function: Ant::calcChance(int)
double Ant::calcChance(int nextCity){
    double pheromoneNext = AntMap::getPheromoneLevel(path.back(),nextCity);
    double niNext = 1.0/distance(path.back(),nextCity);
    double top = ((pow(pheromoneNext,AntConstants::alfa))*(pow(niNext,AntConstants::beta)));

    double bottom = 0.0;
    {
        double pheromoneTmp = 0.0;
        double niTmp = 0.0;
        for(unsigned city : Globals::map.getCityList()){
            if(find(path.begin(),path.end(),city) == path.end()){
                pheromoneTmp = AntMap::getPheromoneLevel(path.back(),city);
                niTmp = 1.0/distance(path.back(),city);
                bottom += ((pow(pheromoneTmp,AntConstants::alfa))*(pow(niTmp,AntConstants::beta)));
            }
        }   
    }
    return top/bottom;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movl %esi, %ebp
movq %rdi, %rbx
movq 0x8(%rdi), %rax
movl -0x4(%rax), %edi
callq 0x2292c
movsd %xmm0, 0x8(%rsp)
movq 0x8(%rbx), %rax
movl -0x4(%rax), %edi
movl %ebp, %esi
callq 0xf23e
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0xf408(%rip), %xmm1     # 0x31318
divsd %xmm0, %xmm1
movsd %xmm1, 0x10(%rsp)
leaq 0x208af(%rip), %r12     # 0x427d0
movsd (%r12), %xmm1
movsd 0x8(%rsp), %xmm0
callq 0x5650
movsd %xmm0, 0x20(%rsp)
leaq 0x20899(%rip), %r13     # 0x427d8
movsd (%r13), %xmm1
movsd 0x10(%rsp), %xmm0
callq 0x5650
movsd %xmm0, 0x18(%rsp)
leaq 0x21d03(%rip), %rsi     # 0x43c60
leaq 0x30(%rsp), %r15
movq %r15, %rdi
callq 0xece6
movq (%r15), %r14
movq 0x8(%r15), %rbp
xorpd %xmm0, %xmm0
cmpq %rbp, %r14
je 0x22035
movsd %xmm0, 0x8(%rsp)
leaq 0x4(%rsp), %r15
movl (%r14), %eax
movl %eax, 0x4(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
movq %r15, %rdx
callq 0x22744
movq 0x8(%rbx), %rcx
cmpq %rcx, %rax
jne 0x22021
movl -0x4(%rcx), %edi
movl 0x4(%rsp), %esi
callq 0x2292c
movsd %xmm0, 0x10(%rsp)
movq 0x8(%rbx), %rax
movl -0x4(%rax), %edi
movl 0x4(%rsp), %esi
callq 0xf23e
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0xf33f(%rip), %xmm1     # 0x31318
divsd %xmm0, %xmm1
movsd %xmm1, 0x28(%rsp)
movsd (%r12), %xmm1
movsd 0x10(%rsp), %xmm0
callq 0x5650
movsd %xmm0, 0x10(%rsp)
movsd (%r13), %xmm1
movsd 0x28(%rsp), %xmm0
callq 0x5650
mulsd 0x10(%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rsp)
addq $0x4, %r14
cmpq %rbp, %r14
jne 0x21f89
movq 0x30(%rsp), %r14
jmp 0x2203b
movsd %xmm0, 0x8(%rsp)
testq %r14, %r14
je 0x22050
movq 0x40(%rsp), %rsi
subq %r14, %rsi
movq %r14, %rdi
callq 0x53b0
movsd 0x20(%rsp), %xmm0
mulsd 0x18(%rsp), %xmm0
divsd 0x8(%rsp), %xmm0
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x22073
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x2208d
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x53b0
movq %rbx, %rdi
callq 0x5660
nop
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/AntColony/Constants.cpp
// Function: AntMap::printPheromoneMap()
void AntMap::printPheromoneMap(){
    for(unsigned i=1;i<=Globals::TOUR_SIZE;i++){
        for(unsigned j=1;j<=Globals::TOUR_SIZE;j++){
            cout<<AntMap::getPheromoneLevel(i,j)<<" ";
        }
        cout<<"\n";
    }
    cout<<endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
leaq 0x21063(%rip), %r12     # 0x43c78
cmpl $0x0, (%r12)
je 0x22c96
movl $0x1, %eax
movq 0x1f378(%rip), %rbx     # 0x41fa0
leaq 0xe769(%rip), %r15      # 0x31398
movl $0x1, %ebp
testl %eax, %eax
je 0x22c78
movslq %ebp, %r13
movl $0x1, %r14d
movq 0x21040(%rip), %rax     # 0x43c88
movq -0x8(%rax,%r13,8), %rax
movslq %r14d, %r14
movsd -0x8(%rax,%r14,8), %xmm0
movq %rbx, %rdi
callq 0x55b0
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x5430
incl %r14d
cmpl (%r12), %r14d
jbe 0x22c41
movl $0x1, %edx
movq %rbx, %rdi
leaq 0xfb7c(%rip), %rsi      # 0x32803
callq 0x5430
incl %ebp
movl (%r12), %eax
cmpl %eax, %ebp
jbe 0x22c34
movq 0x1f303(%rip), %rbx     # 0x41fa0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5380
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5290
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/AntColony/Constants.cpp
// Function: AntMap::initMap()
void AntMap::initMap(){
    //Creating and initializing matrix of pheromones
    AntMap::pheromoneMap = new double*[Globals::TOUR_SIZE];
    for(unsigned i=0;i<Globals::TOUR_SIZE;i++){
        AntMap::pheromoneMap[i] = new double[Globals::TOUR_SIZE];
    }

    //initialized with 1/(numberOfAnts*(distance of i to j))
    for(unsigned i=1;i<=Globals::TOUR_SIZE;i++){
        for(unsigned j=1;j<=Globals::TOUR_SIZE;j++){
            AntMap::setPheromoneLevel(i,j,i!=j?(1.0/(Globals::TOUR_SIZE*distance(i,j))):(0.0));
        }
    }

    AntMap::bestAntYet.setPath(Globals::map.getCityList());
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
leaq 0x20f91(%rip), %rax     # 0x43c78
movl (%rax), %r13d
leaq (,%r13,8), %rbx
movq %rbx, %rdi
callq 0x5030
movq %rax, 0x20f87(%rip)     # 0x43c88
testq %r13, %r13
je 0x22dab
xorl %r14d, %r14d
movq %rbx, %rdi
callq 0x5030
movq 0x20f6c(%rip), %rcx     # 0x43c88
movq %rax, (%rcx,%r14,8)
incq %r14
cmpq %r14, %r13
jne 0x22d0d
testl %r13d, %r13d
je 0x22dab
movl $0x1, %ebx
xorl %r12d, %r12d
movl $0x0, %ebp
testl %r13d, %r13d
je 0x22d9f
movslq %ebx, %r15
movl $0x1, %r14d
movl %r13d, %ebp
leal (%r12,%r14), %eax
xorpd %xmm0, %xmm0
cmpl $0x1, %eax
je 0x22d82
movl %ebx, %edi
movl %r14d, %esi
callq 0xf23e
imull %ebp, %eax
xorps %xmm1, %xmm1
cvtsi2sd %rax, %xmm1
movsd 0xe5a3(%rip), %xmm0     # 0x31318
divsd %xmm1, %xmm0
leaq 0x20ef8(%rip), %rax     # 0x43c78
movl (%rax), %ebp
movq 0x20eff(%rip), %rax     # 0x43c88
movq -0x8(%rax,%r15,8), %rax
movslq %r14d, %rcx
movsd %xmm0, -0x8(%rax,%rcx,8)
incl %r14d
cmpl %ebp, %r14d
jbe 0x22d4b
incl %ebx
decl %r12d
movl %ebp, %r13d
cmpl %ebp, %ebx
jbe 0x22d35
leaq 0x20eae(%rip), %rsi     # 0x43c60
movq %rsp, %rbx
movq %rbx, %rdi
callq 0xece6
leaq 0x20ed4(%rip), %rdi     # 0x43c98
movq %rbx, %rsi
callq 0x22370
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x22de2
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x53b0
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x22e0a
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x53b0
movq %rbx, %rdi
callq 0x5660
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/gpx/sources/GPX2Fusion.cpp
// Function: GPX2Fusion::fusionsWithPartition(int, std::vector<GPX2Structs::UnfeasibleConnection, std::allocator<GPX2Structs::UnfeasibleConnection>>&)
vector<GPX2Structs::UnfeasibleConnection> GPX2Fusion::fusionsWithPartition(const int id, vector<GPX2Structs::UnfeasibleConnection>& connections)
{
    vector<GPX2Structs::UnfeasibleConnection> instances;
    for (const auto& con : connections) {
        if (con.partitionId1 == id || con.partitionId2 == id) {
            instances.push_back(con);
        }
    }
    return (instances);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq (%rdx), %r14
movq 0x8(%rdx), %r15
cmpq %r15, %r14
je 0x2465d
movl %esi, %ebp
cmpl %ebp, (%r14)
je 0x2462b
cmpl %ebp, 0x4(%r14)
jne 0x24654
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x24649
movl 0x8(%r14), %eax
movl %eax, 0x8(%rsi)
movq (%r14), %rax
movq %rax, (%rsi)
addq $0xc, 0x8(%rbx)
jmp 0x24654
movq %rbx, %rdi
movq %r14, %rdx
callq 0x26400
addq $0xc, %r14
cmpq %r15, %r14
jne 0x24620
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x24682
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x53b0
movq %r14, %rdi
callq 0x5660
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/gpx/sources/GPX2Fusion.cpp
// Function: GPX2Fusion::whichPartitionToFuseWith(Partition*)
GPX2Structs::UnfeasibleConnection GPX2Fusion::whichPartitionToFuseWith(Partition* partition)
{ // Retorna um par com a partição que contém mais conexões e o total de conexões

    int partitionId{ -1 }, max{ -1 };
    for (auto p : partition->getConnections()) {
        if (p.second > max) {
            max = p.second;
            partitionId = p.first;
        }
    }
    return (GPX2Structs::UnfeasibleConnection(partitionId, max, max));
}

// Assembly:
pushq %rax
callq 0x2a8dc
movq (%rax), %rcx
movq 0x8(%rax), %rax
cmpq %rax, %rcx
je 0x2496b
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl 0x4(%rcx), %edi
cmpl %edx, %edi
jle 0x2495e
movl (%rcx), %esi
movl %edi, %edx
addq $0x8, %rcx
cmpq %rax, %rcx
jne 0x24953
movl %esi, %ecx
jmp 0x24975
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movq %rdx, %rax
shlq $0x20, %rax
orq %rcx, %rax
popq %rcx
retq
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/gpx/sources/GPX2.cpp
// Function: GPX2::checkAllPartitions()
void GPX2::checkAllPartitions()
{
    GPX2Support::setAllEntryAndExits(candidatePartitions,red,blue);

    for(auto cpart : candidatePartitions){
        if(GPX2Support::checkPartition(cpart.second,red,blue)){
            feasiblePartitions.insert(make_pair(cpart.first,cpart.second));
        }else{
            unfeasiblePartitions.insert(make_pair(cpart.first,cpart.second));
        }
    }
    candidatePartitions.clear();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
leaq 0xd8(%rdi), %r14
leaq 0x108(%rdi), %r15
movq %r14, %rsi
movq %r15, %rdx
callq 0x2eb64
movq 0x18(%rbx), %r12
movq %rbx, (%rsp)
leaq 0x8(%rbx), %r13
cmpq %r13, %r12
je 0x28137
movq (%rsp), %rax
leaq 0x60(%rax), %rcx
movq %rcx, 0x20(%rsp)
addq $0x30, %rax
movq %rax, 0x18(%rsp)
movl 0x20(%r12), %ebp
movq 0x28(%r12), %rbx
movq %rbx, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x2b4ac
testb %al, %al
je 0x2810f
movl %ebp, 0x8(%rsp)
movq %rbx, 0x10(%rsp)
movq 0x18(%rsp), %rdi
jmp 0x2811d
movl %ebp, 0x8(%rsp)
movq %rbx, 0x10(%rsp)
movq 0x20(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x25644
movq %r12, %rdi
callq 0x52a0
movq %rax, %r12
cmpq %r13, %rax
jne 0x280e3
movq (%rsp), %rdi
callq 0x263d2
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/gpx/sources/GPX2.cpp
// Function: GPX2::fusion()
void GPX2::fusion()
{// Method to execute the GPX2's Fusion, it will check amongst the unfeasibe partitions and try to transform them to feasible ones
    bool atLeastOneConnected{ false };
    //Keps executing while there are still more than one partition to try to fuse them
    while ((unfeasiblePartitions.size() > 1)) {
        //Check how many partitions are connected, the fusion only happens if the partitions are connected by at least one node
        atLeastOneConnected = GPX2Fusion::unfeasiblePartitionsConnected(unfeasiblePartitions, unitedGraph);
        if (!atLeastOneConnected) {
            break;
        }
        // Counts how many times that one partition connects with other unfeasible partition, that is, the nodes that have a path that goes from one partition to another
        GPX2Fusion::countConnectedPartitions(unfeasiblePartitions);

        // Generates the fusion pairs that will be tried, this method already validates them
        GPX2Fusion::generateFusionPairs(fuseWith, unfeasiblePartitions);

        GPX2Fusion::fusePartitions(fuseWith,
                        unfeasiblePartitions,
                        unitedGraph,
                        red,
                        blue);

        for (auto part : unfeasiblePartitions) {
            part.second->getConnectedTo().clear();
            part.second->getConnections().clear();
        }

        //Checks if the generated partition is feasible, in that case it will be put in the feasible partition list
        GPX2Fusion::checkUnfeasiblePartitions(feasiblePartitions,
                                                unfeasiblePartitions,
                                                red,
                                                blue);
    }
}

// Assembly:
cmpq $0x2, 0x88(%rdi)
jb 0x2826d
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
leaq 0x60(%rdi), %r14
leaq 0x90(%rdi), %r15
leaq 0xc0(%rdi), %rax
movq %rax, 0x20(%rsp)
leaq 0xd8(%rdi), %rax
movq %rax, 0x10(%rsp)
leaq 0x108(%rdi), %rax
movq %rax, 0x8(%rsp)
leaq 0x68(%rdi), %r13
leaq 0x30(%rdi), %rax
movq %rax, 0x18(%rsp)
movq %r14, %rdi
movq %r15, %rsi
callq 0x24981
testb %al, %al
je 0x2825f
movq %r14, %rdi
callq 0x23e7d
movq 0x20(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x2468a
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rbp
movq %r15, %rdx
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %r8
callq 0x24044
movq 0x78(%rbx), %r12
cmpq %r13, %r12
je 0x28237
movq 0x28(%r12), %r15
movq %r15, %rdi
callq 0x2a8f8
movq (%rax), %rsi
movq %rax, %rdi
callq 0x29b56
movq %r15, %rdi
callq 0x2a8dc
movq (%rax), %rcx
cmpq %rcx, 0x8(%rax)
je 0x28227
movq %rcx, 0x8(%rax)
movq %r12, %rdi
callq 0x52a0
movq %rax, %r12
cmpq %r13, %rax
jne 0x281fa
movq 0x18(%rsp), %rdi
movq %r14, %rsi
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rcx
callq 0x23da8
cmpq $0x1, 0x88(%rbx)
movq %rbp, %r15
ja 0x281ab
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/gpx/sources/GPX2.cpp
// Function: GPX2::~GPX2()
GPX2::~GPX2()
{
    GPX2Support::deleteNodeMap(red);
    GPX2Support::deleteNodeMap(blue);
    GPX2Support::deleteNodeMap(unitedGraph);
    GPX2Support::deletePartitionMap(candidatePartitions);
    GPX2Support::deletePartitionMap(feasiblePartitions);
    GPX2Support::deletePartitionMap(unfeasiblePartitions);
    partitionsChoosen.clear();
    feasiblePartitions.clear();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0xd8(%rdi), %r14
movq %r14, %rdi
callq 0x2c964
leaq 0x108(%rbx), %r13
movq %r13, %rdi
callq 0x2c964
leaq 0x90(%rbx), %r15
movq %r15, %rdi
callq 0x2c964
movq %rbx, %rdi
callq 0x2c8d2
leaq 0x30(%rbx), %r12
movq %r12, %rdi
callq 0x2c8d2
leaq 0x60(%rbx), %rbp
movq %rbp, %rdi
callq 0x2c8d2
movq 0x138(%rbx), %rax
cmpq %rax, 0x140(%rbx)
je 0x28d36
movq %rax, 0x140(%rbx)
movq %r12, %rdi
callq 0x263d2
movq 0x138(%rbx), %rdi
testq %rdi, %rdi
je 0x28d59
movq 0x148(%rbx), %rsi
subq %rdi, %rsi
callq 0x53b0
movq %r13, %rdi
callq 0x29084
movq %r14, %rdi
callq 0x29084
movq 0xc0(%rbx), %rdi
testq %rdi, %rdi
je 0x28d84
movq 0xd0(%rbx), %rsi
subq %rdi, %rsi
callq 0x53b0
movq %r15, %rdi
callq 0x29084
movq %rbp, %rdi
callq 0x25630
movq %r12, %rdi
callq 0x25630
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x25630
movq %rax, %rdi
callq 0x80f0
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/gpx/sources/Node.cpp
// Function: Node::deleteEdge(unsigned int)
void Node::deleteEdge(unsigned i)
{
    if (i <= edges.size()) {
        edges.erase(edges.begin() + i);
    } else {
        exit(EXIT_FAILURE);
    }
}

// Assembly:
movl %esi, %eax
movq 0x20(%rdi), %rcx
movq 0x28(%rdi), %rdx
subq %rcx, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rsi # imm = 0xCCCCCCCCCCCCCCCD
imulq %rdx, %rsi
cmpq %rax, %rsi
jb 0x29fd7
addq $0x20, %rdi
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rsi
jmp 0x2a7ae
pushq %rax
movl $0x1, %edi
callq 0x5470
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/gpx/sources/Node.cpp
// Function: operator<<(std::ostream&, Node&)
ostream& operator<<(ostream &output, Node &cn){
    output<<"=====\nID: "<<cn.getId()<<"\n";
    output<<"edges: \n";
    for(Node::node n : cn.getEdges()){
        output<<"\tid "<<n.first<<" | dist: "<<n.second<<"\n";
    }
    output<<"is access: "<<cn.getAccess();
    output.flush();
    return(output);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rsi, %r13
movq %rdi, %rbx
leaq 0x8824(%rip), %rsi      # 0x328a1
movl $0xa, %edx
callq 0x5430
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r13), %rsi
movq 0x8(%r13), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x82fa
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq %rbx, %rdi
callq 0x5430
leaq 0x8745(%rip), %rsi      # 0x32803
movl $0x1, %edx
movq %rax, %rdi
callq 0x5430
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2a0e2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
leaq 0x87c3(%rip), %rsi      # 0x328ac
movl $0x8, %edx
movq %rbx, %rdi
callq 0x5430
movq 0x20(%r13), %r12
movq %r13, 0x30(%rsp)
movq 0x28(%r13), %r13
cmpq %r13, %r12
je 0x2a1ba
leaq 0x86f0(%rip), %rbp      # 0x32803
movq %r15, 0x8(%rsp)
movq (%r12), %rsi
movq 0x8(%r12), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x82fa
movsd 0x20(%r12), %xmm0
movsd %xmm0, 0x28(%rsp)
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x876b(%rip), %rsi      # 0x328b5
callq 0x5430
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x5430
movq %rax, %r14
movl $0x9, %edx
movq %rax, %rdi
leaq 0x8747(%rip), %rsi      # 0x328ba
callq 0x5430
movsd 0x28(%rsp), %xmm0
movq %r14, %rdi
callq 0x55b0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x5430
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2a1ad
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
addq $0x28, %r12
cmpq %r13, %r12
jne 0x2a113
leaq 0x8703(%rip), %rsi      # 0x328c4
movl $0xb, %edx
movq %rbx, %rdi
callq 0x5430
movq 0x30(%rsp), %rax
movzbl 0x38(%rax), %esi
movq %rbx, %rdi
callq 0x55f0
movq %rbx, %rdi
callq 0x5290
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2a1fb
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2a215
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbx, %rdi
callq 0x5660
nop
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/gpx/sources/GPX2Support.cpp
// Function: GPX2Support::deletePartitionMap(std::map<int, Partition*, std::less<int>, std::allocator<std::pair<int const, Partition*>>>&)
void GPX2Support::deletePartitionMap(GPX2Structs::PartitionMap& m)
{
    // deallocate the pointers and set them to null, then clear the map

    for (auto& it : m) {
        delete it.second;
        it.second = nullptr;
    }
    m.clear();
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x18(%rdi), %r14
leaq 0x8(%rdi), %r12
cmpq %r12, %r14
je 0x2c951
movq 0x28(%r14), %r15
testq %r15, %r15
je 0x2c92c
movq 0x68(%r15), %rdi
testq %rdi, %rdi
je 0x2c908
movq 0x78(%r15), %rsi
subq %rdi, %rsi
callq 0x53b0
leaq 0x50(%r15), %rdi
callq 0x253d4
leaq 0x38(%r15), %rdi
callq 0x181f0
leaq 0x20(%r15), %rdi
callq 0x8206
leaq 0x8(%r15), %rdi
callq 0x8206
movl $0x80, %esi
movq %r15, %rdi
callq 0x53b0
movq $0x0, 0x28(%r14)
movq %r14, %rdi
callq 0x52a0
movq %rax, %r14
cmpq %r12, %rax
jne 0x2c8ea
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x263d2
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/gpx/sources/GPX2Support.cpp
// Function: GPX2Support::deleteNodeMap(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, Node*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, Node*>>>&)
void GPX2Support::deleteNodeMap(GPX2Structs::NodeMap& m)
{ // deletar o mapa completamente,
    // desalocando os ponteiros tb
    for (auto& it : m) {
        delete it.second;
        it.second = nullptr;
    }
    m.clear();
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x18(%rdi), %r14
leaq 0x8(%rdi), %r12
cmpq %r12, %r14
je 0x2c9ca
movq 0x40(%r14), %r15
testq %r15, %r15
je 0x2c9a5
leaq 0x20(%r15), %rdi
callq 0x28f94
movq (%r15), %rdi
leaq 0x10(%r15), %rax
cmpq %rax, %rdi
je 0x2c9a5
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movl $0x40, %esi
movq %r15, %rdi
callq 0x53b0
movq $0x0, 0x40(%r14)
movq %r14, %rdi
callq 0x52a0
movq %rax, %r14
cmpq %r12, %rax
jne 0x2c97c
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x28ff2
// File: /workspace/github_cpp_makefile_star2_O3/GAStudyGroup[P]GPX2/src/cross/gpx/sources/GPX2Support.cpp
// Function: GPX2Support::whichPartition(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::map<int, Partition*, std::less<int>, std::allocator<std::pair<int const, Partition*>>>)
int GPX2Support::whichPartition(const string id, GPX2Structs::PartitionMap partitions)
{ // Procura em qual partição está a cidade procurada, retorna o ID da partição
    for (auto& p : partitions) {
        if (find(p.second->getNodes().begin(), p.second->getNodes().end(), id) != p.second->getNodes().end()) {
            return (p.first);
        }
    }
    return (-1);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rsi, %r14
movq 0x18(%rsi), %r12
addq $0x8, %r14
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
cmpq %r14, %r12
je 0x2ca4e
movq %rdi, %r15
movq 0x28(%r12), %rdi
callq 0x2a8d0
movq (%rax), %r13
movq 0x28(%r12), %rdi
callq 0x2a8d0
movq 0x8(%rax), %rsi
movq %r13, %rdi
movq %r15, %rdx
callq 0x219d3
movq %rax, %r13
movq 0x28(%r12), %rdi
callq 0x2a8d0
cmpq 0x8(%rax), %r13
jne 0x2ca49
movq %r12, %rdi
callq 0x52a0
movq %rax, %r12
cmpq %r14, %rax
jne 0x2c9fe
jmp 0x2ca4e
movl 0x20(%r12), %ebx
movl %ebx, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O3/WeihuaZhu[P]hpc_prog2/seq_tests.cpp
// Function: SequentialTest_MatrixVectorMult1_Test::TestBody()
TEST(SequentialTest, MatrixVectorMult1) {
    // simple 4 by 4 input matrix
    double A[4*4] = {10., -1., 2., 0.,
                           -1., 11., -1., 3.,
                           2., -1., 10., -1.,
                           0.0, 3., -1., 8.};
    double x[4] =  {6., 25., -11., 15.};
    double y[4];
    double expected_y[4] = {13.,  325., -138.,  206.};
    int n = 4;

    // testing sequential matrix multiplication
    matrix_vector_mult(n, &A[0], &x[0], &y[0]);

    // checking if all values are correct (up to some error value)
    for (int i = 0; i < n; ++i)
    {
        EXPECT_NEAR(expected_y[i], y[i], 1e-10) << " element y[" << i << "] is wrong";
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe8, %rsp
leaq 0x1ff7c(%rip), %rsi     # 0x270e0
leaq 0x60(%rsp), %rax
movl $0x10, %ecx
movq %rax, %rdi
rep  movsq (%rsi), %es:(%rdi)
movaps 0x1ff35(%rip), %xmm0    # 0x270b0
leaq 0x40(%rsp), %rdx
movaps %xmm0, 0x10(%rdx)
movaps 0x1ff15(%rip), %xmm0    # 0x270a0
movaps %xmm0, (%rdx)
leaq 0x20(%rsp), %rcx
movl $0x4, %edi
movq %rax, %rsi
callq 0x2636c
leaq 0x1fed9(%rip), %r12     # 0x27080
xorl %r14d, %r14d
leaq 0x1fe8e(%rip), %r13     # 0x2703f
leaq 0x8(%rsp), %rbp
movq %rsp, %rbx
leaq 0x18(%rsp), %r15
movsd (%r12), %xmm0
movsd 0x20(%rsp,%r14,8), %xmm1
movq %rbp, %rdi
leaq 0x1fe5c(%rip), %rsi     # 0x27031
leaq 0x1fe5e(%rip), %rdx     # 0x2703a
movq %r13, %rcx
movsd 0x1fe21(%rip), %xmm2    # 0x27008
callq 0xa4c3
cmpb $0x0, 0x8(%rsp)
jne 0x72a5
movq %rbx, %rdi
callq 0x9d20
movq (%rsp), %rdi
addq $0x10, %rdi
movl $0xb, %edx
leaq 0x1fe32(%rip), %rsi     # 0x27045
callq 0x6510
movq (%rsp), %rdi
addq $0x10, %rdi
movl %r14d, %esi
callq 0x68a0
movq (%rsp), %rdi
addq $0x10, %rdi
movl $0xa, %edx
leaq 0x1fe15(%rip), %rsi     # 0x27051
callq 0x6510
movq 0x10(%rsp), %rax
leaq 0x21888(%rip), %r8      # 0x28ad5
testq %rax, %rax
je 0x7255
movq (%rax), %r8
movq %r15, %rdi
movl $0x1, %esi
leaq 0x1fdf8(%rip), %rdx     # 0x2705c
movl $0x37, %ecx
callq 0x7c46
movq %r15, %rdi
movq %rbx, %rsi
callq 0x7ce2
movq %r15, %rdi
callq 0x7cb2
cmpq $0x0, (%rsp)
je 0x72a5
movl $0x1, %edi
callq 0x7c43
testb %al, %al
je 0x72a5
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x72a5
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x75d8
incq %r14
addq $0x8, %r12
cmpq $0x4, %r14
jne 0x71be
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x72ec
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x7cb2
jmp 0x72f7
movq %rax, %rbx
jmp 0x72ff
jmp 0x72f4
movq %rax, %rdi
callq 0x7596
movq %rax, %rbx
movq %rsp, %rdi
callq 0x74ea
leaq 0x8(%rsp), %rdi
callq 0x74fc
movq %rbx, %rdi
callq 0x68e0
nop
// File: /workspace/github_cpp_makefile_star2_O3/WeihuaZhu[P]hpc_prog2/seq_tests.cpp
// Function: SequentialTest_Jacobi1_Test::TestBody()
TEST(SequentialTest, Jacobi1) {
    // simple 4 by 4 input matrix
    double A[4*4] = {10., -1., 2., 0.,
                           -1., 11., -1., 3.,
                           2., -1., 10., -1.,
                           0.0, 3., -1., 8.};
    double b[4] =  {6., 25., -11., 15.};
    double x[4];
    double expected_x[4] = {1.0,  2.0, -1.0, 1.0};
    int n = 4;

    // testing sequential matrix multiplication
    jacobi(n, A, b, x);

    // checking if all values are correct (up to some error value)
    for (int i = 0; i < n; ++i)
    {
        EXPECT_NEAR(expected_x[i], x[i], 1e-10) << " element y[" << i << "] is wrong";
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe8, %rsp
leaq 0x1fdb6(%rip), %rsi     # 0x270e0
leaq 0x60(%rsp), %rax
movl $0x10, %ecx
movq %rax, %rdi
rep  movsq (%rsi), %es:(%rdi)
movaps 0x1fd6f(%rip), %xmm0    # 0x270b0
leaq 0x40(%rsp), %rdx
movaps %xmm0, 0x10(%rdx)
movaps 0x1fd4f(%rip), %xmm0    # 0x270a0
movaps %xmm0, (%rdx)
leaq 0x20(%rsp), %rcx
movsd 0x1fca7(%rip), %xmm0    # 0x27008
movl $0x4, %edi
movq %rax, %rsi
movl $0x64, %r8d
callq 0x26406
leaq 0x1fd45(%rip), %r12     # 0x270c0
xorl %r14d, %r14d
leaq 0x1fcba(%rip), %r13     # 0x2703f
leaq 0x8(%rsp), %rbp
movq %rsp, %rbx
leaq 0x18(%rsp), %r15
movsd (%r12), %xmm0
movsd 0x20(%rsp,%r14,8), %xmm1
movq %rbp, %rdi
leaq 0x1fcc9(%rip), %rsi     # 0x27072
leaq 0x1fccb(%rip), %rdx     # 0x2707b
movq %r13, %rcx
movsd 0x1fc4d(%rip), %xmm2    # 0x27008
callq 0xa4c3
cmpb $0x0, 0x8(%rsp)
jne 0x7479
movq %rbx, %rdi
callq 0x9d20
movq (%rsp), %rdi
addq $0x10, %rdi
movl $0xb, %edx
leaq 0x1fc5e(%rip), %rsi     # 0x27045
callq 0x6510
movq (%rsp), %rdi
addq $0x10, %rdi
movl %r14d, %esi
callq 0x68a0
movq (%rsp), %rdi
addq $0x10, %rdi
movl $0xa, %edx
leaq 0x1fc41(%rip), %rsi     # 0x27051
callq 0x6510
movq 0x10(%rsp), %rax
leaq 0x216b4(%rip), %r8      # 0x28ad5
testq %rax, %rax
je 0x7429
movq (%rax), %r8
movq %r15, %rdi
movl $0x1, %esi
leaq 0x1fc24(%rip), %rdx     # 0x2705c
movl $0x4d, %ecx
callq 0x7c46
movq %r15, %rdi
movq %rbx, %rsi
callq 0x7ce2
movq %r15, %rdi
callq 0x7cb2
cmpq $0x0, (%rsp)
je 0x7479
movl $0x1, %edi
callq 0x7c43
testb %al, %al
je 0x7479
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x7479
movq (%rdi), %rax
callq *0x8(%rax)
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x75d8
incq %r14
addq $0x8, %r12
cmpq $0x4, %r14
jne 0x7392
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x74c0
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x7cb2
jmp 0x74cb
movq %rax, %rbx
jmp 0x74d3
jmp 0x74c8
movq %rax, %rdi
callq 0x7596
movq %rax, %rbx
movq %rsp, %rdi
callq 0x74ea
leaq 0x8(%rsp), %rdi
callq 0x74fc
movq %rbx, %rdi
callq 0x68e0
nop
// File: /workspace/github_cpp_makefile_star2_O3/WeihuaZhu[P]hpc_prog2/./gtest/gtest.h
// Function: testing::internal::scoped_ptr<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>::reset(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*)
void reset(T* p = NULL) {
    if (p != ptr_) {
      if (IsTrue(sizeof(T) > 0)) {  // Makes sure T is a complete type.
        delete ptr_;
      }
      ptr_ = p;
    }
  }

// Assembly:
cmpq %rsi, (%rdi)
je 0x762a
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movl $0x1, %edi
callq 0x7c43
testb %al, %al
je 0x7622
movq (%r14), %r15
testq %r15, %r15
je 0x7615
movq (%r15), %rdi
leaq 0x10(%r15), %rax
cmpq %rax, %rdi
je 0x7615
movq (%rax), %rsi
incq %rsi
callq 0x6430
movl $0x20, %esi
movq %r15, %rdi
callq 0x6430
movq %rbx, (%r14)
popq %rbx
popq %r14
popq %r15
retq
nop
// File: /workspace/github_cpp_makefile_star2_O3/WeihuaZhu[P]hpc_prog2/mpi_gtest.cpp
// Function: main
int main(int argc, char* argv[]) {
    int result = 0;

    ::testing::InitGoogleTest(&argc, argv);
    MPI_Init(&argc, &argv);

    // get processor rank
    int rank, p;
    MPI_Comm_size(MPI_COMM_WORLD, &p);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);

    if (rank == 0)
      std::cout << "Running GTEST with MPI with " << p << " processes." << std::endl;

    // set up wrapped test listener
    ::testing::TestEventListeners& listeners =
      ::testing::UnitTest::GetInstance()->listeners();
    ::testing::TestEventListener* default_listener =  listeners.Release(listeners.default_result_printer());
    listeners.Append(new mpi_gtest::MpiTestEventListener(rank, default_listener));

    // running tests
    result = RUN_ALL_TESTS();

    // clean up MPI
    MPI_Finalize();

    // return good status no matter what
    return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
leaq 0xc(%rsp), %rbx
movl %edi, (%rbx)
leaq 0x10(%rsp), %r14
movq %rsi, (%r14)
movq %rbx, %rdi
callq 0x15036
movq %rbx, %rdi
movq %r14, %rsi
callq 0x6700
movq 0x2f8f8(%rip), %rbx     # 0x36fa8
leaq 0x4(%rsp), %rsi
movq %rbx, %rdi
callq 0x6550
leaq 0x8(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x66f0
cmpl $0x0, (%r14)
jne 0x7738
movq 0x2f8e6(%rip), %rbx     # 0x36fc0
leaq 0x1fb7c(%rip), %rsi     # 0x2725d
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x6510
movl 0x4(%rsp), %esi
movq %rbx, %rdi
callq 0x68a0
movq %rax, %rbx
leaq 0x1fb76(%rip), %rsi     # 0x2727a
movl $0xb, %edx
movq %rax, %rdi
callq 0x6510
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x63e0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x6050
movq %rax, %rdi
callq 0x62a0
callq 0x7dc8
movq %rax, %rdi
callq 0xe0a4
movq %rax, %rbx
movq 0x8(%rax), %rsi
movq %rax, %rdi
callq 0x1319a
movq %rax, %r14
movl $0x18, %edi
callq 0x6400
movl 0x8(%rsp), %ecx
leaq 0x2ec94(%rip), %rdx     # 0x36400
movq %rdx, (%rax)
movl %ecx, 0x8(%rax)
movq %r14, 0x10(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x13192
callq 0x7dc8
movq %rax, %rdi
callq 0x13490
callq 0x6320
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_cpp_makefile_star2_O3/WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::BoolFromGTestEnv(char const*, bool)
bool BoolFromGTestEnv(const char* flag, bool default_value) {
  const std::string env_var = FlagToEnvVar(flag);
  const char* const string_value = posix::GetEnv(env_var.c_str());
  return string_value == NULL ?
      default_value : strcmp(string_value, "0") != 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x28, %rsp
movl %esi, %ebx
movq %rdi, %rsi
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x1c227
movq (%r14), %r14
movq %r14, %rdi
callq 0x65c0
testq %rax, %rax
je 0x78e7
movb $0x1, %bl
cmpb $0x30, (%rax)
jne 0x78e7
cmpb $0x0, 0x1(%rax)
setne %bl
leaq 0x18(%rsp), %rax
cmpq %rax, %r14
je 0x7901
movq 0x18(%rsp), %rsi
incq %rsi
movq %r14, %rdi
callq 0x6430
movl %ebx, %eax
addq $0x28, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_cpp_makefile_star2_O3/WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::Int32FromGTestEnv(char const*, int)
Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) {
  const std::string env_var = FlagToEnvVar(flag);
  const char* const string_value = posix::GetEnv(env_var.c_str());
  if (string_value == NULL) {
    // The environment variable is not set.
    return default_value;
  }

  Int32 result = default_value;
  if (!ParseInt32(Message() << "Environment variable " << env_var,
                  string_value, &result)) {
    printf("The default value %s is used.\n",
           (Message() << default_value).GetString().c_str());
    fflush(stdout);
    return default_value;
  }

  return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x50, %rsp
movl %esi, %ebx
movq %rdi, %rsi
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x1c227
movq (%r14), %r14
movq %r14, %rdi
callq 0x65c0
testq %rax, %rax
je 0x7a76
movq %rax, %r15
movl %ebx, 0x4(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x9d20
movq 0x30(%rsp), %r14
leaq 0x10(%r14), %r12
leaq 0x21b14(%rip), %rsi     # 0x294c8
movl $0x15, %edx
movq %r12, %rdi
callq 0x6510
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %r12, %rdi
callq 0x6510
leaq 0x30(%rsp), %rdi
leaq 0x4(%rsp), %rdx
movq %r15, %rsi
callq 0x149a0
movl %eax, %ebp
testq %r14, %r14
je 0x79f5
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
testb %bpl, %bpl
je 0x7a00
movl 0x4(%rsp), %ebx
jmp 0x7a71
leaq 0x8(%rsp), %rdi
callq 0x9d20
movq 0x8(%rsp), %r14
leaq 0x10(%r14), %rdi
movl %ebx, %esi
callq 0x68a0
leaq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0x9f89
leaq 0x40(%rsp), %r15
movq -0x10(%r15), %rsi
leaq 0x21aa7(%rip), %rdi     # 0x294de
xorl %eax, %eax
callq 0x6080
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0x7a54
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6430
testq %r14, %r14
je 0x7a62
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq 0x2f51f(%rip), %rax     # 0x36f88
movq (%rax), %rdi
callq 0x6560
movq 0x10(%rsp), %r14
leaq 0x20(%rsp), %rax
cmpq %rax, %r14
je 0x7a90
movq 0x20(%rsp), %rsi
incq %rsi
movq %r14, %rdi
callq 0x6430
movl %ebx, %eax
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x7aa3
jmp 0x7aa8
movq %rax, %rbx
jmp 0x7ab9
movq %rax, %rbx
testq %r14, %r14
je 0x7ab9
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7ad4
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x6430
movq %rbx, %rdi
callq 0x68e0