LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O1/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 0x21167
movl $0x1, %ebp
xorl %r13d, %r13d
leaq 0x108de(%rip), %r15     # 0x319fd
shlq $0x5, %r13
movq (%rax,%r13), %rsi
movq 0x8(%rax,%r13), %rdx
movq %rbx, %rdi
callq 0x5110
movl %ebp, %r13d
movq 0x8(%r14), %rax
subq (%r14), %rax
sarq $0x5, %rax
cmpq %r13, %rax
je 0x21152
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5700
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
incl %ebp
cmpq %r13, %rcx
ja 0x2111f
leaq 0x116ec(%rip), %rax     # 0x3285a
leaq 0x117fe(%rip), %rsi     # 0x32973
cmpb $0x0, 0x38(%r14)
cmovneq %rax, %rsi
movq %rbx, %rdi
callq 0x5700
movq 0x20(%r14), %rdx
leaq 0x38(%rsp), %rax
testq %rdx, %rdx
je 0x211ab
movq %rax, -0x10(%rax)
movq 0x18(%r14), %rsi
addq %rsi, %rdx
leaq 0x28(%rsp), %rdi
callq 0x82cc
jmp 0x211c7
movq %rax, -0x10(%rax)
leaq 0x116c0(%rip), %rsi     # 0x32876
leaq 0x116c8(%rip), %rdx     # 0x32885
leaq 0x28(%rsp), %rdi
callq 0x823c
leaq 0x11698(%rip), %rcx     # 0x32866
leaq 0x28(%rsp), %rdi
movl $0xf, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x5410
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x21209
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x21210
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x5110
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x21251
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53c0
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x2126c
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x53c0
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2129d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53c0
jmp 0x2129d
movq %rax, %r14
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x212c1
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x53c0
jmp 0x212c1
jmp 0x212be
jmp 0x212be
movq %rax, %r14
movq (%rbx), %rdi
cmpq %r12, %rdi
je 0x212d5
movq (%r12), %rsi
incq %rsi
callq 0x53c0
movq %r14, %rdi
callq 0x5670
nop
// File: /workspace/github_cpp_makefile_star2_O1/GAStudyGroup[P]GPX2/src/opt/Opt.cpp
// Function: Opt::optimize(std::vector<int, std::allocator<int>>&)
vector<int> Opt::optimize(vector<int> &tour){
    Opt obj;

    bool run{false};
    long unsigned int routeSize{tour.size()};
    do{
        run = false;
        for(unsigned i=1;i<routeSize-2;i++){
            edge baseEdge(i-1,i);
            for(unsigned j=i+1;j<routeSize-1;j++){
                edge comparingEdge(j,j+1);
                if(!obj.adjacent(baseEdge,comparingEdge)){
                    if(obj.isBetter(baseEdge,comparingEdge,tour)){
                        reverse(tour.begin()+baseEdge.second,tour.begin()+comparingEdge.first+1);
                        run = true;
                        break;
                    }
                }
            }
            if(run){
                break;
            }
        }
    }while(run);

    return(tour);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rsi, %rbx
movq 0x8(%rsi), %r13
subq (%rsi), %r13
movq %rdi, 0x20(%rsp)
sarq $0x2, %r13
leaq -0x2(%r13), %rax
movq %rax, 0x8(%rsp)
cmpq $0x2, %rax
jb 0x21d30
decq %r13
movl $0x1, %ebp
xorl %eax, %eax
movl %eax, 0x4(%rsp)
leal -0x1(%rbp), %r15d
movl %r15d, 0x18(%rsp)
movl %ebp, 0x1c(%rsp)
movslq %ebp, %rax
movq %rax, 0x30(%rsp)
leaq (,%rax,4), %rax
movq %rax, 0x28(%rsp)
movl %ebp, %r14d
movl %r14d, %eax
leal 0x1(%rax), %r14d
cmpq %r14, %r13
jbe 0x21d01
addl $0x2, %eax
movl %r14d, 0x10(%rsp)
movl %eax, 0x14(%rsp)
cmpl %r14d, %r15d
sete %cl
cmpl %eax, %r15d
sete %dl
orb %cl, %dl
movb $0x1, %r12b
jne 0x21cf8
cmpl %r14d, %ebp
sete %cl
cmpl %eax, %ebp
sete %al
orb %cl, %al
jne 0x21cf8
leaq 0x18(%rsp), %rsi
leaq 0x10(%rsp), %rdx
movq %rbx, %rcx
callq 0x21d74
testb %al, %al
je 0x21cf8
movq (%rbx), %rcx
movq 0x30(%rsp), %rax
leaq (%rcx,%rax,4), %rdx
movslq %r14d, %rax
leaq (%rcx,%rax,4), %rsi
addq $0x4, %rsi
cmpq %rsi, %rdx
sete %dl
cmpl %ebp, %r14d
setle %sil
movb $0x1, %dil
movl %edi, 0x4(%rsp)
orb %dl, %sil
jne 0x21cf5
leaq (%rcx,%rax,4), %rax
movq 0x28(%rsp), %rdx
addq %rdx, %rcx
addq $0x4, %rcx
movl -0x4(%rcx), %edx
movl (%rax), %esi
movl %esi, -0x4(%rcx)
movl %edx, (%rax)
addq $-0x4, %rax
leaq 0x4(%rcx), %rdx
cmpq %rax, %rcx
movq %rdx, %rcx
jb 0x21cdb
xorl %r12d, %r12d
testb %r12b, %r12b
jne 0x21c43
movl 0x4(%rsp), %eax
testb $0x1, %al
jne 0x21d16
incl %ebp
cmpq %rbp, 0x8(%rsp)
ja 0x21c1a
cmpq $0x2, 0x8(%rsp)
jb 0x21d30
movl $0x1, %ebp
testb $0x1, %al
movl $0x0, %eax
jne 0x21c1a
movq 0x20(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
callq 0xb05c
movq %r14, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/GAStudyGroup[P]GPX2/src/opt/Opt.cpp
// Function: Opt::isBetter(std::pair<int, int>&, std::pair<int, int>&, std::vector<int, std::allocator<int>>&)
bool Opt::isBetter(edge &e1, edge &e2, vector<int> &t){
    int oldDistance = distance(t[e1.first],t[e1.second])
        +
        distance(t[e2.first],t[e2.second]);
    
    int newDistance = distance(t[e1.first],t[e2.first])
        +
        distance(t[e1.second],t[e2.second]);

    if(oldDistance>newDistance){
        return(true);
    }else{
        return(false);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rcx, %r14
movq %rdx, %rbx
movq %rsi, %r15
movslq (%rsi), %rax
movq (%rcx), %rcx
movl (%rcx,%rax,4), %edi
movslq 0x4(%rsi), %rax
movl (%rcx,%rax,4), %esi
callq 0xf232
movl %eax, %ebp
movslq (%rbx), %rax
movq (%r14), %rcx
movl (%rcx,%rax,4), %edi
movslq 0x4(%rbx), %rax
movl (%rcx,%rax,4), %esi
callq 0xf232
movl %eax, %r12d
addl %ebp, %r12d
movslq (%r15), %rax
movq (%r14), %rcx
movl (%rcx,%rax,4), %edi
movslq (%rbx), %rax
movl (%rcx,%rax,4), %esi
callq 0xf232
movl %eax, %ebp
movslq 0x4(%r15), %rax
movq (%r14), %rcx
movl (%rcx,%rax,4), %edi
movslq 0x4(%rbx), %rax
movl (%rcx,%rax,4), %esi
callq 0xf232
addl %ebp, %eax
cmpl %eax, %r12d
setg %al
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/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 0x228d0
movsd %xmm0, 0x8(%rsp)
movq 0x8(%rbx), %rax
movl -0x4(%rax), %edi
movl %ebp, %esi
callq 0xf232
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0xf46e(%rip), %xmm1     # 0x31318
divsd %xmm0, %xmm1
movsd %xmm1, 0x10(%rsp)
leaq 0x20925(%rip), %r15     # 0x427e0
movsd (%r15), %xmm1
movsd 0x8(%rsp), %xmm0
callq 0x5660
movsd %xmm0, 0x20(%rsp)
leaq 0x20910(%rip), %r12     # 0x427e8
movsd (%r12), %xmm1
movsd 0x10(%rsp), %xmm0
callq 0x5660
movsd %xmm0, 0x18(%rsp)
leaq 0x21d7a(%rip), %rsi     # 0x43c70
leaq 0x30(%rsp), %r14
movq %r14, %rdi
callq 0xecfe
movq (%r14), %r13
movq 0x8(%r14), %rbp
xorpd %xmm0, %xmm0
cmpq %rbp, %r13
je 0x21fc9
movsd %xmm0, 0x8(%rsp)
leaq 0x4(%rsp), %r14
movl (%r13), %eax
movl %eax, 0x4(%rsp)
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
movq %r14, %rdx
callq 0x226f5
movq 0x8(%rbx), %rcx
cmpq %rcx, %rax
jne 0x21fba
movl -0x4(%rcx), %edi
movl 0x4(%rsp), %esi
callq 0x228d0
movsd %xmm0, 0x10(%rsp)
movq 0x8(%rbx), %rax
movl -0x4(%rax), %edi
movl 0x4(%rsp), %esi
callq 0xf232
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0xf3a5(%rip), %xmm1     # 0x31318
divsd %xmm0, %xmm1
movsd %xmm1, 0x28(%rsp)
movsd (%r15), %xmm1
movsd 0x10(%rsp), %xmm0
callq 0x5660
movsd %xmm0, 0x10(%rsp)
movsd (%r12), %xmm1
movsd 0x28(%rsp), %xmm0
callq 0x5660
mulsd 0x10(%rsp), %xmm0
movsd 0x8(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0x8(%rsp)
addq $0x4, %r13
cmpq %rbp, %r13
jne 0x21f22
jmp 0x21fcf
movsd %xmm0, 0x8(%rsp)
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x21fe6
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x53c0
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 0x22009
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0x22023
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x53c0
movq %rbx, %rdi
callq 0x5670
nop
// File: /workspace/github_cpp_makefile_star2_O1/GAStudyGroup[P]GPX2/src/cross/AntColony/Constants.cpp
// Function: AntMap::constainsEdge(std::vector<int, std::allocator<int>> const&, int, int)
bool AntMap::constainsEdge(const vector<int>& path,int a, int b){
    //find a position in ant`s path
    long int aIndex{find(path.begin(),path.end(),a)-path.begin()};
    //if b is next in position them ant path contains the AB edge
    return path[(aIndex+1)%Globals::TOUR_SIZE]==b;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %ebx
movq %rdi, %r14
leaq 0x4(%rsp), %rdx
movl %esi, (%rdx)
movq (%rdi), %rdi
movq 0x8(%r14), %rsi
callq 0x22e08
movq (%r14), %rcx
subq %rcx, %rax
sarq $0x2, %rax
incq %rax
leaq 0x21199(%rip), %rdx     # 0x43c88
movl (%rdx), %esi
cqto
idivq %rsi
cmpl %ebx, (%rcx,%rdx,4)
sete %al
addq $0x8, %rsp
popq %rbx
popq %r14
retq
// File: /workspace/github_cpp_makefile_star2_O1/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 0x210dc(%rip), %r12     # 0x43c88
cmpl $0x0, (%r12)
je 0x22c29
movl $0x1, %ebp
movq 0x1f3e1(%rip), %rbx     # 0x41fa0
leaq 0xe7d2(%rip), %r15      # 0x31398
cmpl $0x0, (%r12)
je 0x22c0d
movslq %ebp, %r13
movl $0x1, %r14d
movq 0x210bb(%rip), %rax     # 0x43c98
movq -0x8(%rax,%r13,8), %rax
movslq %r14d, %r14
movsd -0x8(%rax,%r14,8), %xmm0
movq %rbx, %rdi
callq 0x55c0
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x5440
incl %r14d
cmpl (%r12), %r14d
jbe 0x22bd6
movl $0x1, %edx
movq %rbx, %rdi
leaq 0xfbe7(%rip), %rsi      # 0x32803
callq 0x5440
incl %ebp
cmpl (%r12), %ebp
jbe 0x22bc6
movq 0x1f370(%rip), %rbx     # 0x41fa0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5390
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_O1/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 0x2100e(%rip), %r15     # 0x43c88
movl (%r15), %r14d
leaq (,%r14,8), %rbx
movq %rbx, %rdi
callq 0x5030
movq %rax, 0x21004(%rip)     # 0x43c98
testq %r14, %r14
je 0x22cb7
xorl %r12d, %r12d
movq %rbx, %rdi
callq 0x5030
movq 0x20fed(%rip), %rcx     # 0x43c98
movq %rax, (%rcx,%r12,8)
incq %r12
cmpq %r12, %r14
jne 0x22c9c
cmpl $0x0, (%r15)
je 0x22d2d
movl $0x1, %ebx
xorl %r12d, %r12d
movl (%r15), %ebp
testl %ebp, %ebp
je 0x22d23
movslq %ebx, %r13
movl $0x1, %r14d
leal (%r12,%r14), %eax
xorpd %xmm0, %xmm0
cmpl $0x1, %eax
je 0x22d03
movl %ebx, %edi
movl %r14d, %esi
callq 0xf232
imull %ebp, %eax
xorps %xmm1, %xmm1
cvtsi2sd %rax, %xmm1
movsd 0xe619(%rip), %xmm0     # 0x31318
divsd %xmm1, %xmm0
movq 0x20f8e(%rip), %rax     # 0x43c98
movq -0x8(%rax,%r13,8), %rax
movslq %r14d, %rcx
movsd %xmm0, -0x8(%rax,%rcx,8)
incl %r14d
movl (%r15), %ebp
cmpl %ebp, %r14d
jbe 0x22cd5
incl %ebx
decl %r12d
cmpl (%r15), %ebx
jbe 0x22cc5
leaq 0x20f3c(%rip), %rsi     # 0x43c70
movq %rsp, %rbx
movq %rbx, %rdi
callq 0xecfe
leaq 0x20f62(%rip), %rdi     # 0x43ca8
movq %rbx, %rsi
callq 0x2231e
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x22d64
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x53c0
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 0x22d8c
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x53c0
movq %rbx, %rdi
callq 0x5670
// File: /workspace/github_cpp_makefile_star2_O1/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 0x244bd
movl %esi, %ebp
cmpl %ebp, (%r14)
je 0x2448b
cmpl %ebp, 0x4(%r14)
jne 0x244b4
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x244a9
movl 0x8(%r14), %eax
movl %eax, 0x8(%rsi)
movq (%r14), %rax
movq %rax, (%rsi)
addq $0xc, 0x8(%rbx)
jmp 0x244b4
movq %rbx, %rdi
movq %r14, %rdx
callq 0x26222
addq $0xc, %r14
cmpq %r15, %r14
jne 0x24480
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 0x244e2
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x53c0
movq %r14, %rdi
callq 0x5670
// File: /workspace/github_cpp_makefile_star2_O1/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 0x2a6c8
movq (%rax), %rcx
movq 0x8(%rax), %rax
cmpq %rax, %rcx
je 0x247ab
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movl 0x4(%rcx), %edi
cmpl %edx, %edi
jle 0x2479e
movl (%rcx), %esi
movl %edi, %edx
addq $0x8, %rcx
cmpq %rax, %rcx
jne 0x24793
movl %esi, %ecx
jmp 0x247b5
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_O1/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 0x2e902
movq 0x18(%rbx), %r12
movq %rbx, (%rsp)
leaq 0x8(%rbx), %r13
cmpq %r13, %r12
je 0x27f45
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 0x2b290
testb %al, %al
je 0x27f1d
movl %ebp, 0x8(%rsp)
movq %rbx, 0x10(%rsp)
movq 0x18(%rsp), %rdi
jmp 0x27f2b
movl %ebp, 0x8(%rsp)
movq %rbx, 0x10(%rsp)
movq 0x20(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x2546a
movq %r12, %rdi
callq 0x52a0
movq %rax, %r12
cmpq %r13, %rax
jne 0x27ef1
movq (%rsp), %rdi
callq 0x261f4
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/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 0x2807b
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 0x247c1
testb %al, %al
je 0x2806d
movq %r14, %rdi
callq 0x23ce9
movq 0x20(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x244ea
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rbp
movq %r15, %rdx
movq 0x10(%rsp), %rcx
movq 0x8(%rsp), %r8
callq 0x23eb0
movq 0x78(%rbx), %r12
cmpq %r13, %r12
je 0x28045
movq 0x28(%r12), %r15
movq %r15, %rdi
callq 0x2a6e4
movq (%rax), %rsi
movq %rax, %rdi
callq 0x2994e
movq %r15, %rdi
callq 0x2a6c8
movq (%rax), %rcx
cmpq %rcx, 0x8(%rax)
je 0x28035
movq %rcx, 0x8(%rax)
movq %r12, %rdi
callq 0x52a0
movq %rax, %r12
cmpq %r13, %rax
jne 0x28008
movq 0x18(%rsp), %rdi
movq %r14, %rsi
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rcx
callq 0x23c14
cmpq $0x1, 0x88(%rbx)
movq %rbp, %r15
ja 0x27fb9
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/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 0x2c74f
leaq 0x108(%rbx), %r13
movq %r13, %rdi
callq 0x2c74f
leaq 0x90(%rbx), %r15
movq %r15, %rdi
callq 0x2c74f
movq %rbx, %rdi
callq 0x2c6bd
leaq 0x30(%rbx), %r12
movq %r12, %rdi
callq 0x2c6bd
leaq 0x60(%rbx), %rbp
movq %rbp, %rdi
callq 0x2c6bd
movq 0x138(%rbx), %rax
cmpq %rax, 0x140(%rbx)
je 0x28b46
movq %rax, 0x140(%rbx)
movq %r12, %rdi
callq 0x261f4
movq 0x138(%rbx), %rdi
testq %rdi, %rdi
je 0x28b69
movq 0x148(%rbx), %rsi
subq %rdi, %rsi
callq 0x53c0
movq %r13, %rdi
callq 0x28e8c
movq %r14, %rdi
callq 0x28e8c
movq 0xc0(%rbx), %rdi
testq %rdi, %rdi
je 0x28b94
movq 0xd0(%rbx), %rsi
subq %rdi, %rsi
callq 0x53c0
movq %r15, %rdi
callq 0x28e8c
movq %rbp, %rdi
callq 0x25456
movq %r12, %rdi
callq 0x25456
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x25456
movq %rax, %rdi
callq 0x80d0
// File: /workspace/github_cpp_makefile_star2_O1/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 0x29dc3
addq $0x20, %rdi
leaq (%rax,%rax,4), %rax
leaq (%rcx,%rax,8), %rsi
jmp 0x2a59e
pushq %rax
movl $0x1, %edi
callq 0x5480
// File: /workspace/github_cpp_makefile_star2_O1/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 0x8a38(%rip), %rsi      # 0x328a1
movl $0xa, %edx
callq 0x5440
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 0x82cc
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq %rbx, %rdi
callq 0x5440
leaq 0x8959(%rip), %rsi      # 0x32803
movl $0x1, %edx
movq %rax, %rdi
callq 0x5440
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x29ece
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53c0
leaq 0x89d7(%rip), %rsi      # 0x328ac
movl $0x8, %edx
movq %rbx, %rdi
callq 0x5440
movq 0x20(%r13), %r12
movq %r13, 0x30(%rsp)
movq 0x28(%r13), %r13
cmpq %r13, %r12
je 0x29fa6
leaq 0x8904(%rip), %rbp      # 0x32803
movq %r15, 0x8(%rsp)
movq (%r12), %rsi
movq 0x8(%r12), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x82cc
movsd 0x20(%r12), %xmm0
movsd %xmm0, 0x28(%rsp)
movl $0x4, %edx
movq %rbx, %rdi
leaq 0x897f(%rip), %rsi      # 0x328b5
callq 0x5440
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbx, %rdi
callq 0x5440
movq %rax, %r14
movl $0x9, %edx
movq %rax, %rdi
leaq 0x895b(%rip), %rsi      # 0x328ba
callq 0x5440
movsd 0x28(%rsp), %xmm0
movq %r14, %rdi
callq 0x55c0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x5440
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x29f99
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53c0
addq $0x28, %r12
cmpq %r13, %r12
jne 0x29eff
leaq 0x8917(%rip), %rsi      # 0x328c4
movl $0xb, %edx
movq %rbx, %rdi
callq 0x5440
movq 0x30(%rsp), %rax
movzbl 0x38(%rax), %esi
movq %rbx, %rdi
callq 0x5600
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 0x29fe7
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2a001
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x53c0
movq %rbx, %rdi
callq 0x5670
nop
// File: /workspace/github_cpp_makefile_star2_O1/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 0x2c73c
movq 0x28(%r14), %r15
testq %r15, %r15
je 0x2c724
movq 0x68(%r15), %rdi
testq %rdi, %rdi
je 0x2c6f3
movq 0x78(%r15), %rsi
subq %rdi, %rsi
callq 0x53c0
leaq 0x50(%r15), %rdi
callq 0x251fa
leaq 0x38(%r15), %rdi
callq 0x181e0
leaq 0x20(%r15), %rdi
callq 0x81e0
leaq 0x8(%r15), %rdi
callq 0x81e0
movl $0x80, %esi
movq %r15, %rdi
callq 0x53c0
movq $0x0, 0x28(%r14)
movq %r14, %rdi
callq 0x52a0
movq %rax, %r14
cmpq %r12, %rax
jne 0x2c6d5
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x261f4
// File: /workspace/github_cpp_makefile_star2_O1/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 0x2c7b5
movq 0x40(%r14), %r15
testq %r15, %r15
je 0x2c79d
leaq 0x20(%r15), %rdi
callq 0x28d9e
movq (%r15), %rdi
leaq 0x10(%r15), %rax
cmpq %rax, %rdi
je 0x2c790
movq (%rax), %rsi
incq %rsi
callq 0x53c0
movl $0x40, %esi
movq %r15, %rdi
callq 0x53c0
movq $0x0, 0x40(%r14)
movq %r14, %rdi
callq 0x52a0
movq %rax, %r14
cmpq %r12, %rax
jne 0x2c767
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
jmp 0x28dfa
// File: /workspace/github_cpp_makefile_star2_O1/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 %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq 0x18(%rsi), %r12
addq $0x8, %r14
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
cmpq %r14, %r12
je 0x2c83f
movq %rdi, %r15
movq 0x28(%r12), %rdi
callq 0x2a6bc
movq (%rax), %r13
movq 0x28(%r12), %rdi
callq 0x2a6bc
movq 0x8(%rax), %rsi
movq %r13, %rdi
movq %r15, %rdx
callq 0x218f9
movq %rax, %r13
movq 0x28(%r12), %rdi
callq 0x2a6bc
cmpq 0x8(%rax), %r13
je 0x2c829
movl 0x20(%r12), %ebp
jne 0x2c83d
movq %r12, %rdi
callq 0x52a0
movq %rax, %r12
cmpq %r14, %rax
jne 0x2c7eb
jmp 0x2c83f
movl %ebp, %ebx
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/iZhangHui[P]CppPrimer/CH17_SpecializedLibraryFacilities/examples/no-skipws.cc
// Function: main
int main()
{
	char ch;
	cin >> noskipws;  // set cin so that it reads whitespace
	while (cin >> ch)
		cout << ch;
	cin >> skipws;    // reset cin to the default state 
	                  // so that it ignores whitespace

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq 0x2e1f(%rip), %rbx      # 0x3fe0
movq (%rbx), %rax
movq -0x18(%rax), %rax
andl $0xffffefff, 0x18(%rbx,%rax) # imm = 0xFFFFEFFF
leaq -0x29(%rbp), %rsi
movq %rbx, %rdi
callq 0x1050
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x122f
movq 0x2ddf(%rip), %r14      # 0x3fd0
leaq -0x2a(%rbp), %r15
movq 0x2de4(%rip), %r12      # 0x3fe0
leaq -0x29(%rbp), %r13
movb -0x29(%rbp), %al
movb %al, -0x2a(%rbp)
movl $0x1, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x1040
movq %r12, %rdi
movq %r13, %rsi
callq 0x1050
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
je 0x1200
movq (%rbx), %rax
movq -0x18(%rax), %rax
orl $0x1000, 0x18(%rbx,%rax) # imm = 0x1000
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/smuething[P]dune-cxx11/25-unordered_set.cc
// Function: main
int main()
{
  std::unordered_set<double> s;
  s.insert(3.7);
  assert(s.count(3.7) > 0);
  return 0;
}

// Assembly:
pushq %rbx
subq $0x50, %rsp
leaq 0x48(%rsp), %rax
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
movabsq $0x400d99999999999a, %rbx # imm = 0x400D99999999999A
leaq 0x10(%rsp), %rsi
movq %rbx, (%rsi)
leaq 0x18(%rsp), %rdi
leaq 0x8(%rsp), %rdx
movq %rdi, (%rdx)
callq 0x1342
leaq 0x8(%rsp), %rsi
movq %rbx, (%rsi)
leaq 0x18(%rsp), %rdi
callq 0x16d4
testq %rax, %rax
je 0x1291
leaq 0x18(%rsp), %rdi
callq 0x12c8
xorl %eax, %eax
addq $0x50, %rsp
popq %rbx
retq
leaq 0xd6c(%rip), %rdi       # 0x2004
leaq 0xd76(%rip), %rsi       # 0x2015
leaq 0xd83(%rip), %rcx       # 0x2029
movl $0x8, %edx
callq 0x1080
jmp 0x12b2
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x12c8
movq %rbx, %rdi
callq 0x10f0
nop
// File: /workspace/github_cpp_makefile_star2_O1/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 0x1ff5c(%rip), %rsi     # 0x270e0
leaq 0x60(%rsp), %rax
movl $0x10, %ecx
movq %rax, %rdi
rep  movsq (%rsi), %es:(%rdi)
movaps 0x1ff15(%rip), %xmm0    # 0x270b0
leaq 0x40(%rsp), %rdx
movaps %xmm0, 0x10(%rdx)
movaps 0x1fef5(%rip), %xmm0    # 0x270a0
movaps %xmm0, (%rdx)
leaq 0x20(%rsp), %rcx
movl $0x4, %edi
movq %rax, %rsi
callq 0x26968
leaq 0x1feb9(%rip), %r12     # 0x27080
xorl %r14d, %r14d
leaq 0x1fe6e(%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 0x1fe3c(%rip), %rsi     # 0x27031
leaq 0x1fe3e(%rip), %rdx     # 0x2703a
movq %r13, %rcx
movsd 0x1fe01(%rip), %xmm2    # 0x27008
callq 0xa5de
cmpb $0x0, 0x8(%rsp)
jne 0x72cd
movq %rbx, %rdi
callq 0x9de4
movq (%rsp), %rdi
addq $0x10, %rdi
movl $0xb, %edx
leaq 0x1fe12(%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 0x1fdf5(%rip), %rsi     # 0x27051
callq 0x6510
movq 0x10(%rsp), %rax
leaq 0x21868(%rip), %r8      # 0x28ad5
testq %rax, %rax
je 0x7275
movq (%rax), %r8
movq %r15, %rdi
movl $0x1, %esi
leaq 0x1fdd8(%rip), %rdx     # 0x2705c
movl $0x37, %ecx
callq 0x7caa
movq %r15, %rdi
movq %rbx, %rsi
callq 0x7d48
movq %r15, %rdi
callq 0x7d16
cmpq $0x0, (%rsp)
je 0x72cd
movl $0x1, %edi
callq 0x7ca6
testb %al, %al
je 0x72c5
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x72c5
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, (%rsp)
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x7608
incq %r14
addq $0x8, %r12
cmpq $0x4, %r14
jne 0x71de
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x7314
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x7d16
jmp 0x731f
movq %rax, %rbx
jmp 0x7327
jmp 0x731c
movq %rax, %rdi
callq 0x75c6
movq %rax, %rbx
movq %rsp, %rdi
callq 0x751a
leaq 0x8(%rsp), %rdi
callq 0x752c
movq %rbx, %rdi
callq 0x68e0
nop
// File: /workspace/github_cpp_makefile_star2_O1/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 0x1fd8e(%rip), %rsi     # 0x270e0
leaq 0x60(%rsp), %rax
movl $0x10, %ecx
movq %rax, %rdi
rep  movsq (%rsi), %es:(%rdi)
movaps 0x1fd47(%rip), %xmm0    # 0x270b0
leaq 0x40(%rsp), %rdx
movaps %xmm0, 0x10(%rdx)
movaps 0x1fd27(%rip), %xmm0    # 0x270a0
movaps %xmm0, (%rdx)
leaq 0x20(%rsp), %rcx
movsd 0x1fc7f(%rip), %xmm0    # 0x27008
movl $0x4, %edi
movq %rax, %rsi
movl $0x64, %r8d
callq 0x26a04
leaq 0x1fd1d(%rip), %r12     # 0x270c0
xorl %r14d, %r14d
leaq 0x1fc92(%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 0x1fca1(%rip), %rsi     # 0x27072
leaq 0x1fca3(%rip), %rdx     # 0x2707b
movq %r13, %rcx
movsd 0x1fc25(%rip), %xmm2    # 0x27008
callq 0xa5de
cmpb $0x0, 0x8(%rsp)
jne 0x74a9
movq %rbx, %rdi
callq 0x9de4
movq (%rsp), %rdi
addq $0x10, %rdi
movl $0xb, %edx
leaq 0x1fc36(%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 0x1fc19(%rip), %rsi     # 0x27051
callq 0x6510
movq 0x10(%rsp), %rax
leaq 0x2168c(%rip), %r8      # 0x28ad5
testq %rax, %rax
je 0x7451
movq (%rax), %r8
movq %r15, %rdi
movl $0x1, %esi
leaq 0x1fbfc(%rip), %rdx     # 0x2705c
movl $0x4d, %ecx
callq 0x7caa
movq %r15, %rdi
movq %rbx, %rsi
callq 0x7d48
movq %r15, %rdi
callq 0x7d16
cmpq $0x0, (%rsp)
je 0x74a9
movl $0x1, %edi
callq 0x7ca6
testb %al, %al
je 0x74a1
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x74a1
movq (%rdi), %rax
callq *0x8(%rax)
movq $0x0, (%rsp)
leaq 0x10(%rsp), %rdi
xorl %esi, %esi
callq 0x7608
incq %r14
addq $0x8, %r12
cmpq $0x4, %r14
jne 0x73ba
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x74f0
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x7d16
jmp 0x74fb
movq %rax, %rbx
jmp 0x7503
jmp 0x74f8
movq %rax, %rdi
callq 0x75c6
movq %rax, %rbx
movq %rsp, %rdi
callq 0x751a
leaq 0x8(%rsp), %rdi
callq 0x752c
movq %rbx, %rdi
callq 0x68e0
nop
// File: /workspace/github_cpp_makefile_star2_O1/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 0x765a
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
movl $0x1, %edi
callq 0x7ca6
testb %al, %al
je 0x7652
movq (%r14), %r15
testq %r15, %r15
je 0x7652
movq (%r15), %rdi
leaq 0x10(%r15), %rax
cmpq %rax, %rdi
je 0x7645
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_O1/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 0x153c0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x6700
movq 0x2f8c8(%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 0x7768
movq 0x2f8b6(%rip), %rbx     # 0x36fc0
leaq 0x1fb4c(%rip), %rsi     # 0x2725d
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x6510
movl 0x4(%rsp), %esi
movq %rbx, %rdi
callq 0x68a0
movq %rax, %rbx
leaq 0x1fb46(%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 0x7e2e
movq %rax, %rdi
callq 0xe266
movq %rax, %rbx
movq 0x8(%rax), %rsi
movq %rax, %rdi
callq 0x134f8
movq %rax, %r14
movl $0x18, %edi
callq 0x6400
movl 0x8(%rsp), %ecx
leaq 0x2ec64(%rip), %rdx     # 0x36400
movq %rdx, (%rax)
movl %ecx, 0x8(%rax)
movq %r14, 0x10(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x134f0
callq 0x7e2e
movq %rax, %rdi
callq 0x137e6
callq 0x6320
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r14
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/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 0x1c671
movq (%r14), %r14
movq %r14, %rdi
callq 0x65c0
testq %rax, %rax
je 0x791d
leaq 0x222e7(%rip), %rsi     # 0x29bf7
movq %rax, %rdi
callq 0x66d0
testl %eax, %eax
setne %bl
leaq 0x18(%rsp), %rax
cmpq %rax, %r14
je 0x7937
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_O1/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 0x30(%rsp), %r14
movq %r14, %rdi
callq 0x1c671
movq (%r14), %rdi
callq 0x65c0
testq %rax, %rax
je 0x7ab6
movq %rax, %r15
movl %ebx, 0x4(%rsp)
leaq 0x10(%rsp), %rdi
callq 0x9de4
movq 0x10(%rsp), %r14
leaq 0x10(%r14), %r12
leaq 0x21ae1(%rip), %rsi     # 0x294c8
movl $0x15, %edx
movq %r12, %rdi
callq 0x6510
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movq %r12, %rdi
callq 0x6510
leaq 0x10(%rsp), %rdi
leaq 0x4(%rsp), %rdx
movq %r15, %rsi
callq 0x14d08
movl %eax, %ebp
testq %r14, %r14
je 0x7a31
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq $0x0, 0x10(%rsp)
testb %bpl, %bpl
je 0x7a3c
movl 0x4(%rsp), %ebx
jmp 0x7ab6
leaq 0x8(%rsp), %rdi
callq 0x9de4
movq 0x8(%rsp), %r14
leaq 0x10(%r14), %rdi
movl %ebx, %esi
callq 0x68a0
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq 0xa059
leaq 0x20(%rsp), %r15
movq -0x10(%r15), %rsi
leaq 0x21a6b(%rip), %rdi     # 0x294de
xorl %eax, %eax
callq 0x6080
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0x7a90
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x6430
testq %r14, %r14
je 0x7aa7
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
movq 0x2f4da(%rip), %rax     # 0x36f88
movq (%rax), %rdi
callq 0x6560
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7ad1
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6430
movl %ebx, %eax
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x7afe
movq %rax, %rbx
testq %r14, %r14
je 0x7b1d
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq $0x0, 0x8(%rsp)
jmp 0x7b1d
movq %rax, %rbx
jmp 0x7b1d
movq %rax, %rbx
testq %r14, %r14
je 0x7b1d
movq (%r14), %rax
movq %r14, %rdi
callq *0x8(%rax)
movq $0x0, 0x10(%rsp)
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7b38
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x6430
movq %rbx, %rdi
callq 0x68e0
// File: /workspace/github_cpp_makefile_star2_O1/WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::Random::Generate(unsigned int)
UInt32 Random::Generate(UInt32 range) {
  // These constants are the same as are used in glibc's rand(3).
  state_ = (1103515245U*state_ + 12345U) % kMaxRange;

  GTEST_CHECK_(range > 0)
      << "Cannot generate a number in the range [0, 0).";
  GTEST_CHECK_(range <= kMaxRange)
      << "Generation of a number in [0, " << range << ") was requested, "
      << "but this can only generate numbers in [0, " << kMaxRange << ").";

  // Converting via modulus introduces a bit of downward bias, but
  // it's simple, and a linear congruential generator isn't too good
  // to begin with.
  return state_ % range;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movl %esi, %ebx
movq %rdi, %r14
imull $0x41c64e6d, (%rdi), %eax # imm = 0x41C64E6D
addl $0x3039, %eax           # imm = 0x3039
andl $0x7fffffff, %eax       # imm = 0x7FFFFFFF
movl %eax, (%rdi)
testl %esi, %esi
jne 0x7bb9
leaq 0x20726(%rip), %rdx     # 0x28291
leaq 0xc(%rsp), %rdi
movl $0x3, %esi
movl $0x6f3, %ecx            # imm = 0x6F3
callq 0x1c270
movq 0x2f46a(%rip), %rdi     # 0x36ff0
leaq 0x20719(%rip), %rsi     # 0x282a6
movl $0x1c, %edx
callq 0x6510
movq 0x2f452(%rip), %rdi     # 0x36ff0
leaq 0x2071e(%rip), %rsi     # 0x282c3
movl $0x2d, %edx
callq 0x6510
leaq 0xc(%rsp), %rdi
callq 0x1c3b2
cmpl $0x80000001, %ebx       # imm = 0x80000001
jb 0x7c74
leaq 0x206c5(%rip), %rdx     # 0x28291
leaq 0x8(%rsp), %rdi
movl $0x3, %esi
movl $0x6f5, %ecx            # imm = 0x6F5
callq 0x1c270
movq 0x2f409(%rip), %rdi     # 0x36ff0
leaq 0x20703(%rip), %rsi     # 0x282f1
movl $0x25, %edx
callq 0x6510
movq 0x2f3f1(%rip), %rdi     # 0x36ff0
leaq 0x20711(%rip), %rsi     # 0x28317
movl $0x1e, %edx
callq 0x6510
movl %ebx, %esi
movq 0x2f3d7(%rip), %rdi     # 0x36ff0
callq 0x6290
movq %rax, %r15
leaq 0x2070e(%rip), %rsi     # 0x28336
movl $0x11, %edx
movq %rax, %rdi
callq 0x6510
leaq 0x2070c(%rip), %rsi     # 0x28348
movl $0x2a, %edx
movq %r15, %rdi
callq 0x6510
movl $0x80000000, %esi       # imm = 0x80000000
movq %r15, %rdi
callq 0x6290
leaq 0x20691(%rip), %rsi     # 0x282ee
movl $0x2, %edx
movq %rax, %rdi
callq 0x6510
leaq 0x8(%rsp), %rdi
callq 0x1c3b2
movl (%r14), %eax
xorl %edx, %edx
divl %ebx
movl %edx, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0xc(%rsp), %rdi
jmp 0x7c99
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x1c3b2
movq %rbx, %rdi
callq 0x68e0
// File: /workspace/github_cpp_makefile_star2_O1/WeihuaZhu[P]hpc_prog2/./gtest/gtest-all.cc
// Function: testing::internal::AssertHelper::operator=(testing::Message const&) const
void AssertHelper::operator=(const Message& message) const {
  UnitTest::GetInstance()->
    AddTestPartResult(data_->type, data_->file, data_->line,
                      AppendUserMessage(data_->message, message),
                      UnitTest::GetInstance()->impl()
                      ->CurrentOsStackTraceExceptTop(1)
                      // Skips the stack frame for this function itself.
                      );  // NOLINT
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r15
movq %rdi, %rbx
callq 0x7e2e
movq (%rbx), %rsi
movl (%rsi), %ebx
movq 0x8(%rsi), %r14
movl 0x10(%rsi), %ebp
addq $0x18, %rsi
leaq 0x28(%rsp), %rdi
movq %r15, %rdx
callq 0x8270
callq 0x7e2e
leaq 0x8(%rsp), %rdi
callq 0x83b0
leaq 0x2f8d0(%rip), %rdi     # 0x37660
leaq 0x28(%rsp), %r8
leaq 0x8(%rsp), %r9
movl %ebx, %esi
movq %r14, %rdx
movl %ebp, %ecx
callq 0x7e9e
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7dc1
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6430
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7ddc
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x6430
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7e0a
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6430
jmp 0x7e0a
movq %rax, %rbx
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7e25
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x6430
movq %rbx, %rdi
callq 0x68e0
nop