// File: /workspace/github_cpp_makefile_star2_O3/millanek[P]Dsuite/D.cpp
// Function: TestTrioInfo::mergeABBA_BABA_SiteCoordsOverChoms()
void TestTrioInfo::mergeABBA_BABA_SiteCoordsOverChoms() {
    int totalNumABBAsites = 0;
    for(std::map<string,std::vector<int>>::iterator it = ABBAsitePositionsPerChomosome.begin(); it != ABBAsitePositionsPerChomosome.end(); it++) {
        totalNumABBAsites = totalNumABBAsites + (int)it->second.size();
    } linearABBApos.reserve(totalNumABBAsites);
    
    int linearPosSoFar = 0;
    for(std::map<string,std::vector<int>>::iterator it = ABBAsitePositionsPerChomosome.begin(); it != ABBAsitePositionsPerChomosome.end(); it++) {
        for (std::vector<int>::size_type i = 0; i < it->second.size(); i++) {
            linearABBApos.push_back(it->second[i] + linearPosSoFar);
        }
    }
    
    int totalNumBABAsites = 0;
    for(std::map<string,std::vector<int>>::iterator it = BABAsitePositionsPerChomosome.begin(); it != BABAsitePositionsPerChomosome.end(); it++) {
        totalNumBABAsites = totalNumBABAsites + (int)it->second.size();
    } linearBABApos.reserve(totalNumBABAsites);
    
    linearPosSoFar = 0;
    for(std::map<string,std::vector<int>>::iterator it = BABAsitePositionsPerChomosome.begin(); it != BABAsitePositionsPerChomosome.end(); it++) {
        for (std::vector<int>::size_type i = 0; i < it->second.size(); i++) {
            linearBABApos.push_back(it->second[i] + linearPosSoFar);
        }
    }
    
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x18(%rdi), %rax
leaq 0x8(%rdi), %r13
xorl %r15d, %r15d
cmpq %r13, %rax
je 0x1283f
movq 0x48(%rax), %rcx
subq 0x40(%rax), %rcx
shrq $0x2, %rcx
addl %ecx, %r15d
movq %rax, %rdi
callq 0x72f0
cmpq %r13, %rax
jne 0x12820
movslq %r15d, %r15
leaq 0x30(%rbx), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x14a7c
movq 0x18(%rbx), %r15
cmpq %r13, %r15
je 0x128b7
leaq 0x4(%rsp), %r12
movq 0x40(%r15), %rax
cmpq %rax, 0x48(%r15)
je 0x128a7
xorl %ebp, %ebp
movl (%rax,%rbp,4), %ecx
movl %ecx, 0x4(%rsp)
movq 0x38(%rbx), %rsi
cmpq 0x40(%rbx), %rsi
je 0x12885
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x38(%rbx)
jmp 0x12894
movq %r14, %rdi
movq %r12, %rdx
callq 0xf7bc
movq 0x40(%r15), %rax
incq %rbp
movq 0x48(%r15), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %rcx, %rbp
jb 0x12868
movq %r15, %rdi
callq 0x72f0
movq %rax, %r15
cmpq %r13, %rax
jne 0x1285c
movq 0x60(%rbx), %rax
leaq 0x50(%rbx), %r13
xorl %r15d, %r15d
cmpq %r13, %rax
je 0x128e6
movq 0x48(%rax), %rcx
subq 0x40(%rax), %rcx
shrq $0x2, %rcx
addl %ecx, %r15d
movq %rax, %rdi
callq 0x72f0
cmpq %r13, %rax
jne 0x128c7
movslq %r15d, %r15
leaq 0x78(%rbx), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x14a7c
movq 0x60(%rbx), %r15
cmpq %r13, %r15
je 0x12964
movq %rsp, %r12
movq 0x40(%r15), %rax
cmpq %rax, 0x48(%r15)
je 0x12954
xorl %ebp, %ebp
movl (%rax,%rbp,4), %ecx
movl %ecx, (%rsp)
movq 0x80(%rbx), %rsi
cmpq 0x88(%rbx), %rsi
je 0x12932
movl %ecx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x80(%rbx)
jmp 0x12941
movq %r14, %rdi
movq %r12, %rdx
callq 0xf7bc
movq 0x40(%r15), %rax
incq %rbp
movq 0x48(%r15), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %rcx, %rbp
jb 0x1290d
movq %r15, %rdi
callq 0x72f0
movq %rax, %r15
cmpq %r13, %rax
jne 0x12901
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop