// File: 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
movq %rsp, %rbp
subq $0x210, %rsp            # imm = 0x210
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x70(%rbp)
movq 0x1fb42(%rip), %rdi     # 0x48ff0
movq 0x1fafb(%rip), %rsi     # 0x48fb0
callq 0x4300
movq %rax, %rdi
leaq 0xb503(%rip), %rsi      # 0x349c7
callq 0x42b0
movq %rax, %rdi
movq 0x1fadd(%rip), %rsi     # 0x48fb0
callq 0x4300
xorps %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
movq 0x1fb09(%rip), %rdi     # 0x48ff0
leaq 0xb4fb(%rip), %rsi      # 0x349e9
callq 0x42b0
movq -0x70(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
movq 0x10(%rax), %rdi
callq 0x1f1f0
movq %rax, -0x18(%rbp)
movq -0x70(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x1f250
movq %rax, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x1f220
testb $0x1, %al
jne 0x29533
jmp 0x298bd
leaq -0x18(%rbp), %rdi
callq 0x1f280
movq %rax, %rsi
leaq -0x30(%rbp), %rdi
callq 0x1df40
movq 0x1faa1(%rip), %rdi     # 0x48ff0
leaq 0xb4ad(%rip), %rsi      # 0x34a03
callq 0x42b0
movq %rax, -0x78(%rbp)
jmp 0x29561
leaq -0x30(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1deb0
movq %rax, -0x80(%rbp)
jmp 0x29578
movq -0x80(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x1df20
movsd %xmm0, -0x88(%rbp)
jmp 0x29593
movsd -0x88(%rbp), %xmm0
movq -0x78(%rbp), %rdi
callq 0x4550
movq %rax, -0x90(%rbp)
jmp 0x295ad
movq -0x90(%rbp), %rdi
leaq 0xb450(%rip), %rsi      # 0x34a0b
callq 0x42b0
movq %rax, -0x98(%rbp)
jmp 0x295c9
leaq -0x30(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1deb0
movq %rax, -0xa0(%rbp)
jmp 0x295e3
movq -0xa0(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x27670
movq -0x98(%rbp), %rdi
movq %rax, %rsi
callq 0x42b0
movq %rax, -0xa8(%rbp)
jmp 0x2960f
movq -0xa8(%rbp), %rdi
leaq 0xb3f5(%rip), %rsi      # 0x34a12
callq 0x42b0
movq %rax, -0xb0(%rbp)
jmp 0x2962b
leaq -0x30(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1deb0
movq %rax, -0xb8(%rbp)
jmp 0x29645
movq -0xb8(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x1e0b0
movw %ax, -0xba(%rbp)
jmp 0x29662
movq -0xb0(%rbp), %rdi
movw -0xba(%rbp), %ax
movswl %ax, %esi
callq 0x4290
movq %rax, -0xc8(%rbp)
jmp 0x29681
movq -0xc8(%rbp), %rdi
leaq 0xb389(%rip), %rsi      # 0x34a18
callq 0x42b0
movq %rax, -0xd0(%rbp)
jmp 0x2969d
leaq -0x30(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1e1e0
movq %rax, -0xd8(%rbp)
jmp 0x296b7
movq -0xd8(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x1df20
movsd %xmm0, -0xe0(%rbp)
jmp 0x296d5
movsd -0xe0(%rbp), %xmm0
movq -0xd0(%rbp), %rdi
callq 0x4550
movq %rax, -0xe8(%rbp)
jmp 0x296f2
movq -0xe8(%rbp), %rdi
leaq 0xb30b(%rip), %rsi      # 0x34a0b
callq 0x42b0
movq %rax, -0xf0(%rbp)
jmp 0x2970e
leaq -0x30(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1e1e0
movq %rax, -0xf8(%rbp)
jmp 0x29728
movq -0xf8(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x27670
movq -0xf0(%rbp), %rdi
movq %rax, %rsi
callq 0x42b0
movq %rax, -0x100(%rbp)
jmp 0x29754
movq -0x100(%rbp), %rdi
leaq 0xb2b0(%rip), %rsi      # 0x34a12
callq 0x42b0
movq %rax, -0x108(%rbp)
jmp 0x29770
leaq -0x30(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1e1e0
movq %rax, -0x110(%rbp)
jmp 0x2978a
movq -0x110(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x1e0b0
movw %ax, -0x112(%rbp)
jmp 0x297a7
movq -0x108(%rbp), %rdi
movw -0x112(%rbp), %ax
movswl %ax, %esi
callq 0x4290
movq %rax, -0x120(%rbp)
jmp 0x297c6
movq -0x120(%rbp), %rdi
leaq 0xb24e(%rip), %rsi      # 0x34a22
callq 0x42b0
movq %rax, -0x128(%rbp)
jmp 0x297e2
leaq -0x30(%rbp), %rdi
callq 0x1de60
movq -0x128(%rbp), %rdi
movzbl 0x10(%rax), %esi
andl $0x1, %esi
callq 0x4500
movq %rax, -0x130(%rbp)
jmp 0x29807
movq -0x130(%rbp), %rdi
leaq 0xb213(%rip), %rsi      # 0x34a28
callq 0x42b0
movq %rax, -0x138(%rbp)
jmp 0x29823
leaq -0x30(%rbp), %rdi
callq 0x1de60
movq -0x138(%rbp), %rdi
movl 0x14(%rax), %esi
callq 0x44d0
movq %rax, -0x140(%rbp)
jmp 0x29844
movq -0x140(%rbp), %rdi
movq 0x1f75e(%rip), %rsi     # 0x48fb0
callq 0x4300
jmp 0x29859
leaq -0x30(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1e050
movsd %xmm0, -0x148(%rbp)
jmp 0x29874
movsd -0x148(%rbp), %xmm0
addsd -0x10(%rbp), %xmm0
movsd %xmm0, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x1e090
leaq -0x18(%rbp), %rdi
xorl %esi, %esi
callq 0x2bf80
movq %rax, -0x48(%rbp)
jmp 0x2950c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x1e090
jmp 0x29cda
movq 0x1f72c(%rip), %rdi     # 0x48ff0
leaq 0xb164(%rip), %rsi      # 0x34a2f
callq 0x42b0
movq -0x70(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
movq 0x18(%rax), %rdi
callq 0x1df80
movq %rax, -0x50(%rbp)
movl $0x0, -0x54(%rbp)
movq -0x70(%rbp), %rcx
movl -0x54(%rbp), %eax
cmpl 0x20(%rcx), %eax
jae 0x29c1b
leaq -0x50(%rbp), %rdi
callq 0x1dfe0
movq %rax, %rsi
leaq -0x68(%rbp), %rdi
callq 0x1df40
movq 0x1f6d4(%rip), %rdi     # 0x48ff0
leaq 0xb127(%rip), %rsi      # 0x34a4a
callq 0x42b0
movq %rax, -0x150(%rbp)
jmp 0x29931
leaq -0x68(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1deb0
movq %rax, -0x158(%rbp)
jmp 0x2994b
movq -0x158(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x1df20
movsd %xmm0, -0x160(%rbp)
jmp 0x29969
movsd -0x160(%rbp), %xmm0
movq -0x150(%rbp), %rdi
callq 0x4550
movq %rax, -0x168(%rbp)
jmp 0x29986
movq -0x168(%rbp), %rdi
leaq 0xb077(%rip), %rsi      # 0x34a0b
callq 0x42b0
movq %rax, -0x170(%rbp)
jmp 0x299a2
leaq -0x68(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1deb0
movq %rax, -0x178(%rbp)
jmp 0x299bc
movq -0x178(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x27670
movq -0x170(%rbp), %rdi
movq %rax, %rsi
callq 0x42b0
movq %rax, -0x180(%rbp)
jmp 0x299e8
movq -0x180(%rbp), %rdi
leaq 0xb01c(%rip), %rsi      # 0x34a12
callq 0x42b0
movq %rax, -0x188(%rbp)
jmp 0x29a04
leaq -0x68(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1deb0
movq %rax, -0x190(%rbp)
jmp 0x29a1e
movq -0x190(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x1e0b0
movw %ax, -0x192(%rbp)
jmp 0x29a3b
movq -0x188(%rbp), %rdi
movw -0x192(%rbp), %ax
movswl %ax, %esi
callq 0x4290
movq %rax, -0x1a0(%rbp)
jmp 0x29a5a
movq -0x1a0(%rbp), %rdi
leaq 0xafea(%rip), %rsi      # 0x34a52
callq 0x42b0
movq %rax, -0x1a8(%rbp)
jmp 0x29a76
leaq -0x68(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1e1e0
movq %rax, -0x1b0(%rbp)
jmp 0x29a90
movq -0x1b0(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x1df20
movsd %xmm0, -0x1b8(%rbp)
jmp 0x29aae
movsd -0x1b8(%rbp), %xmm0
movq -0x1a8(%rbp), %rdi
callq 0x4550
movq %rax, -0x1c0(%rbp)
jmp 0x29acb
movq -0x1c0(%rbp), %rdi
leaq 0xaf32(%rip), %rsi      # 0x34a0b
callq 0x42b0
movq %rax, -0x1c8(%rbp)
jmp 0x29ae7
leaq -0x68(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1e1e0
movq %rax, -0x1d0(%rbp)
jmp 0x29b01
movq -0x1d0(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x27670
movq -0x1c8(%rbp), %rdi
movq %rax, %rsi
callq 0x42b0
movq %rax, -0x1d8(%rbp)
jmp 0x29b2d
movq -0x1d8(%rbp), %rdi
leaq 0xaed7(%rip), %rsi      # 0x34a12
callq 0x42b0
movq %rax, -0x1e0(%rbp)
jmp 0x29b49
leaq -0x68(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1e1e0
movq %rax, -0x1e8(%rbp)
jmp 0x29b63
movq -0x1e8(%rbp), %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x1e0b0
movw %ax, -0x1ea(%rbp)
jmp 0x29b80
movq -0x1e0(%rbp), %rdi
movw -0x1ea(%rbp), %ax
movswl %ax, %esi
callq 0x4290
movq %rax, -0x1f8(%rbp)
jmp 0x29b9f
movq -0x1f8(%rbp), %rdi
movq 0x1f403(%rip), %rsi     # 0x48fb0
callq 0x4300
jmp 0x29bb4
leaq -0x68(%rbp), %rdi
callq 0x1de60
movq %rax, %rdi
callq 0x1e050
movsd %xmm0, -0x200(%rbp)
jmp 0x29bcf
movsd -0x200(%rbp), %xmm0
addsd -0x10(%rbp), %xmm0
movsd %xmm0, -0x10(%rbp)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x1e070
leaq -0x68(%rbp), %rdi
callq 0x1e090
jmp 0x298f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x1e090
jmp 0x29cda
movq 0x1f3ce(%rip), %rdi     # 0x48ff0
leaq 0xae3e(%rip), %rsi      # 0x34a67
callq 0x42b0
movq -0x70(%rbp), %rdi
movq %rax, -0x210(%rbp)
addq $0x40, %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x1df20
movq -0x210(%rbp), %rdi
callq 0x4550
movq %rax, %rdi
movq 0x1f350(%rip), %rsi     # 0x48fb0
callq 0x4300
movq 0x1f384(%rip), %rdi     # 0x48ff0
leaq 0xade9(%rip), %rsi      # 0x34a5c
callq 0x42b0
movq -0x70(%rbp), %rdi
movq %rax, -0x208(%rbp)
addq $0x38, %rdi
callq 0x1ded0
movq %rax, %rdi
callq 0x1df20
movq -0x208(%rbp), %rdi
callq 0x4550
movq %rax, %rdi
movq 0x1f306(%rip), %rsi     # 0x48fb0
callq 0x4300
movq 0x1f33a(%rip), %rdi     # 0x48ff0
leaq 0xadb1(%rip), %rsi      # 0x34a6e
callq 0x42b0
movq %rax, %rdi
movq 0x1f2e4(%rip), %rsi     # 0x48fb0
callq 0x4300
addq $0x210, %rsp            # imm = 0x210
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x44e0
nopw %cs:(%rax,%rax)