// File: /workspace/github_cpp_makefile_star2_O3/gchen98[P]macs/datastructures.cpp
// Function: GraphBuilder::printDataStructures()
void GraphBuilder::printDataStructures(){
    cerr<<endl<<"*** Begin printing structures ***"<<endl;

    double trueLen = 0.0;
    cerr<<"Full ARG (list of edges)\n";
    trueLen = 0.0;
    for (EdgePtrList::iterator it=pEdgeListInARG->begin();it!=pEdgeListInARG->end();it++){
        EdgePtr curEdge = *it;
        cerr<<"low:ht:"<<curEdge->getBottomNodeRef()->getHeight()<<
        ",type:"<<curEdge->getBottomNodeRef()->getTypeStr()<<
        ",pop:"<<curEdge->getBottomNodeRef()->getPopulation()<<
        ";high:ht:"<<curEdge->getTopNodeRef()->getHeight()<<
        ",type:"<<curEdge->getTopNodeRef()->getTypeStr()<<
        ",pop:"<<curEdge->getTopNodeRef()->getPopulation()<<
        ",del:"<<curEdge->bDeleted<<
//        ",length:"<<curEdge->getLength()<<
        ";hist:"<<curEdge->iGraphIteration<<endl;
        trueLen+=curEdge->getLength();
    }


    cerr<<"Last tree (list of edges)\n";
//    it;
    trueLen = 0.0;
    EdgePtrVector::iterator it=pEdgeVectorInTree->begin();
    unsigned int count=0;
    while(count<iTotalTreeEdges){
//    for (EdgePtrVector::iterator it=pEdgeVectorInTree->begin();it!=pEdgeVectorInTree->end();++it){
        EdgePtr curEdge = *it;
        cerr<<"low_ht:"<<curEdge->getBottomNodeRef()->getHeight()<<
        ",type:"<<curEdge->getBottomNodeRef()->getTypeStr()<<
        ",pop:"<<curEdge->getBottomNodeRef()->getPopulation()<<
        ";high_ht:"<<curEdge->getTopNodeRef()->getHeight()<<
        ",type:"<<curEdge->getTopNodeRef()->getTypeStr()<<
        ",pop:"<<curEdge->getTopNodeRef()->getPopulation()<<endl;
//        ",intree:"<<curEdge->bInCurrentTree<<endl;
//        ",length:"<<curEdge->getLength()<<
//        ";hist:"<<curEdge->iGraphIteration<<endl;
        trueLen+=curEdge->getLength();
        ++count;
        ++it;
    }
    cerr<<"MRCA: "<<localMRCA->getHeight()<<endl;
    cerr<<"Graph grandMRCA: "<<grandMRCA->getHeight()<<endl;
//    cerr<<"true length:"<<trueLen<<endl;

    cerr<<"*** Done printing structures ***"<<endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq 0xce84(%rip), %r14      # 0x1fff0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
movq %rax, %r15
leaq 0x6717(%rip), %rsi      # 0x198b4
movl $0x21, %edx
movq %rax, %rdi
callq 0x32a0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %esi
movq %r15, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x66fe(%rip), %rsi      # 0x198d6
movl $0x19, %edx
movq %r14, %rdi
callq 0x32a0
movq 0x10(%rbx), %rax
movq (%rax), %r15
cmpq %rax, %r15
je 0x1347b
leaq 0x6448(%rip), %r13      # 0x19644
leaq 0x66fc(%rip), %rbp      # 0x198ff
movq 0x10(%r15), %rax
movq %rax, 0x8(%rsp)
movq 0x18(%r15), %rax
movq %rax, 0x10(%rsp)
testq %rax, %rax
je 0x1321e
lock
incl 0x8(%rax)
movl $0x7, %edx
movq 0xcdc6(%rip), %rdi      # 0x1fff0
leaq 0x66bf(%rip), %rsi      # 0x198f0
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x20(%rax), %rax
testq %rax, %rax
je 0x137f7
movsd 0x70(%rax), %xmm0
movq 0xcd93(%rip), %rdi      # 0x1fff0
callq 0x3360
movq %rax, %r12
movl $0x6, %edx
movq %rax, %rdi
leaq 0x6684(%rip), %rsi      # 0x198f8
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x20(%rax), %rax
testq %rax, %rax
je 0x137f7
movl 0x64(%rax), %eax
movq %r13, %r14
cmpq $0x4, %rax
ja 0x132ab
leaq 0xc8c9(%rip), %rcx      # 0x1fb70
movq (%rcx,%rax,8), %r14
movq %r14, %rdi
callq 0x30e0
movq %r12, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x32a0
movl $0x5, %edx
movq %r12, %rdi
movq %rbp, %rsi
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x20(%rax), %rax
testq %rax, %rax
je 0x137f7
movswl 0x62(%rax), %esi
movq %r12, %rdi
callq 0x3210
movq %rax, %r12
movl $0x9, %edx
movq %rax, %rdi
leaq 0x65fb(%rip), %rsi      # 0x19905
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x18(%rax), %rax
testq %rax, %rax
je 0x137f7
movsd 0x70(%rax), %xmm0
movq %r12, %rdi
callq 0x3360
movq %rax, %r12
movl $0x6, %edx
movq %rax, %rdi
leaq 0x65af(%rip), %rsi      # 0x198f8
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x18(%rax), %rax
testq %rax, %rax
je 0x137f7
movl 0x64(%rax), %eax
movq %r13, %r14
cmpq $0x4, %rax
ja 0x13380
leaq 0xc7f4(%rip), %rcx      # 0x1fb70
movq (%rcx,%rax,8), %r14
movq %r14, %rdi
callq 0x30e0
movq %r12, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x32a0
movl $0x5, %edx
movq %r12, %rdi
movq %rbp, %rsi
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x18(%rax), %rax
testq %rax, %rax
je 0x137f7
movswl 0x62(%rax), %esi
movq %r12, %rdi
callq 0x3210
movq %rax, %r12
movl $0x5, %edx
movq %rax, %rdi
leaq 0x6530(%rip), %rsi      # 0x1990f
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movzbl 0x10(%rax), %esi
movq %r12, %rdi
callq 0x33a0
movq %rax, %r12
movl $0x6, %edx
movq %rax, %rdi
leaq 0x6505(%rip), %rsi      # 0x19915
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movl 0x14(%rax), %esi
movq %r12, %rdi
callq 0x33e0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %esi
movq %r12, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
cmpq $0x0, 0x8(%rsp)
je 0x137d8
leaq 0x10(%rsp), %rdi
callq 0x10d5e
movq (%r15), %r15
cmpq 0x10(%rbx), %r15
jne 0x13203
movq 0xcb6e(%rip), %rdi      # 0x1fff0
leaq 0x6493(%rip), %rsi      # 0x1991c
movl $0x1a, %edx
callq 0x32a0
movq %rbx, %r13
cmpl $0x0, 0x20(%rbx)
je 0x136d3
movq 0x18(%r13), %rax
movq (%rax), %rbx
xorl %r15d, %r15d
leaq 0x644e(%rip), %rbp      # 0x198ff
movq (%rbx), %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rbx), %rax
movq %rax, 0x10(%rsp)
testq %rax, %rax
je 0x134cb
lock
incl 0x8(%rax)
movl $0x7, %edx
movq 0xcb19(%rip), %rdi      # 0x1fff0
leaq 0x6459(%rip), %rsi      # 0x19937
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x20(%rax), %rax
testq %rax, %rax
je 0x137f7
movsd 0x70(%rax), %xmm0
movq 0xcae6(%rip), %rdi      # 0x1fff0
callq 0x3360
movq %rax, %r12
movl $0x6, %edx
movq %rax, %rdi
leaq 0x63d7(%rip), %rsi      # 0x198f8
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x20(%rax), %rax
testq %rax, %rax
je 0x137f7
movl 0x64(%rax), %eax
leaq 0x60f9(%rip), %r14      # 0x19644
cmpq $0x4, %rax
ja 0x1355c
leaq 0xc618(%rip), %rcx      # 0x1fb70
movq (%rcx,%rax,8), %r14
movq %r14, %rdi
callq 0x30e0
movq %r12, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x32a0
movl $0x5, %edx
movq %r12, %rdi
movq %rbp, %rsi
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x20(%rax), %rax
testq %rax, %rax
je 0x137f7
movswl 0x62(%rax), %esi
movq %r12, %rdi
callq 0x3210
movq %rax, %r12
movl $0x9, %edx
movq %rax, %rdi
leaq 0x6384(%rip), %rsi      # 0x1993f
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x18(%rax), %rax
testq %rax, %rax
je 0x137f7
movsd 0x70(%rax), %xmm0
movq %r12, %rdi
callq 0x3360
movq %rax, %r12
movl $0x6, %edx
movq %rax, %rdi
leaq 0x62fe(%rip), %rsi      # 0x198f8
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x18(%rax), %rax
testq %rax, %rax
je 0x137f7
movl 0x64(%rax), %eax
leaq 0x6020(%rip), %r14      # 0x19644
cmpq $0x4, %rax
ja 0x13635
leaq 0xc53f(%rip), %rcx      # 0x1fb70
movq (%rcx,%rax,8), %r14
movq %r14, %rdi
callq 0x30e0
movq %r12, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x32a0
movl $0x5, %edx
movq %r12, %rdi
movq %rbp, %rsi
callq 0x32a0
movq 0x8(%rsp), %rax
testq %rax, %rax
je 0x137d8
movq 0x18(%rax), %rax
testq %rax, %rax
je 0x137f7
movswl 0x62(%rax), %esi
movq %r12, %rdi
callq 0x3210
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %esi
movq %r12, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
cmpq $0x0, 0x8(%rsp)
je 0x137d8
incl %r15d
addq $0x10, %rbx
leaq 0x10(%rsp), %rdi
callq 0x10d5e
cmpl 0x20(%r13), %r15d
jb 0x134b1
movq 0xc916(%rip), %rdi      # 0x1fff0
leaq 0x6273(%rip), %rsi      # 0x19954
movl $0x6, %edx
callq 0x32a0
movq 0x40(%r13), %rax
testq %rax, %rax
je 0x137f7
movsd 0x70(%rax), %xmm0
movq 0xc8ec(%rip), %r14      # 0x1fff0
movq %r14, %rdi
callq 0x3360
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %esi
movq %r15, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x620c(%rip), %rsi      # 0x19949
movl $0x11, %edx
movq %r14, %rdi
callq 0x32a0
movq 0x38(%r13), %rax
testq %rax, %rax
je 0x137f7
movsd 0x70(%rax), %xmm0
movq %r14, %rdi
callq 0x3360
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
leaq 0x61c6(%rip), %rsi      # 0x1995b
movl $0x20, %edx
movq %r14, %rdi
callq 0x32a0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x3240
movsbl %al, %esi
movq %r14, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x31b0
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x5319(%rip), %rdi      # 0x18af8
leaq 0x5c80(%rip), %rsi      # 0x19466
leaq 0x5ca5(%rip), %rcx      # 0x19492
movl $0x2d8, %edx            # imm = 0x2D8
callq 0x3170
leaq 0x52fa(%rip), %rdi      # 0x18af8
leaq 0x52fb(%rip), %rsi      # 0x18b00
leaq 0x5cef(%rip), %rcx      # 0x194fb
movl $0xc7, %edx
callq 0x3170
jmp 0x13818
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x10d5e
movq %rbx, %rdi
callq 0x33f0
nop