// File: /workspace/github_cpp_makefile_star2_O2/Kingsford-Group[P]ghost2/src/spectralToDistance.hpp
// Function: distanceWorker(std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const, std::vector<LevelInfo, std::allocator<LevelInfo>>>, boost::unordered::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::vector<LevelInfo, std::allocator<LevelInfo>>, boost::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::equal_to<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, std::vector<LevelInfo, std::allocator<LevelInfo>>>>>*, D_alpha**, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, ProgressBar*)
void distanceWorker(spectramap::value_type n, spectramap* m2,
    D_alpha** result, string* out, ProgressBar *pbar)
{
  auto end = m2->end();
  string name = n.first;
  vector<LevelInfo> info = n.second;
  ostringstream res;
  int i=0;
  for(auto it = m2->begin(); it != end; ++it){
    double topo = DTopo(&info[0], &(it->second)[0], min(info.size(), it->second.size()));
    res << name << "\t" << it->first << "\t" << topo << "\n";
    D_alpha* d = new D_alpha(name, it->first, topo);
    result[i++] = d;
  }
  pbar->update();
  *out = res.str();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x228, %rsp            # imm = 0x228
movq %r8, %r13
movq %rcx, %r12
movq %rdx, %r15
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0xe7a0
addq $0x20, %r14
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
callq 0x19a58
movq %r13, 0x10(%rsp)
movq %r12, 0x8(%rsp)
leaq 0xb0(%rsp), %rdi
callq 0xe780
movq %rbx, %rdi
callq 0x38e80
movq %rax, %r12
pushq $0x50
popq %rbp
leaq 0x90(%rsp), %rbx
testq %r12, %r12
je 0x12f2b
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rax
subq %rdi, %rax
cqto
idivq %rbp
movq %rax, %rcx
movq 0x30(%r12), %rsi
movq 0x38(%r12), %rax
subq %rsi, %rax
cqto
idivq %rbp
cmpl %eax, %ecx
cmovgel %eax, %ecx
movl %ecx, %edx
callq 0x12d35
movsd %xmm0, (%rsp)
leaq 0xb0(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xe4a0
movq %rax, %rdi
leaq 0x2da3f(%rip), %rsi     # 0x408c7
callq 0xe540
leaq 0x10(%r12), %r13
movq %rax, %rdi
movq %r13, %rsi
callq 0xe4a0
movq %rax, %rdi
leaq 0x2da20(%rip), %rsi     # 0x408c7
callq 0xe540
movq %rax, %rdi
movsd (%rsp), %xmm0
callq 0xe940
movq %rax, %rdi
leaq 0x2d7c0(%rip), %rsi     # 0x40683
callq 0xe540
movq %rbp, %r14
movq %rbp, %rdi
callq 0xe560
movq %rax, %rbp
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xe7a0
movq %rbx, %rdi
movq %r13, %rsi
callq 0xe7a0
movq %rbp, %rdi
leaq 0x50(%rsp), %r13
movq %r13, %rsi
movq %rbx, %rdx
movsd (%rsp), %xmm0
callq 0x19ab2
movq %rbx, %rdi
callq 0xe290
movq %r13, %rdi
callq 0xe290
movq %rbp, (%r15)
movq (%r12), %r12
addq $0x8, %r15
movq %r14, %rbp
jmp 0x12e2b
movq 0x10(%rsp), %rdi
callq 0x107b0
leaq 0xb8(%rsp), %rsi
leaq 0x70(%rsp), %rdi
callq 0xe910
movq 0x8(%rsp), %rdi
leaq 0x70(%rsp), %rbx
movq %rbx, %rsi
callq 0xe6b0
movq %rbx, %rdi
callq 0xe290
leaq 0xb0(%rsp), %rdi
callq 0xe160
leaq 0x18(%rsp), %rdi
callq 0x19a18
leaq 0x30(%rsp), %rdi
callq 0xe290
addq $0x228, %rsp            # imm = 0x228
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x12fd5
jmp 0x12fd5
movq %rax, %rbx
jmp 0x12fe5
movq %rax, %rbx
jmp 0x12fef
jmp 0x12fd5
movq %rax, %rbx
jmp 0x12fc8
movq %rax, %rbx
jmp 0x12fbe
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0xe290
leaq 0x50(%rsp), %rdi
callq 0xe290
pushq $0x50
popq %rsi
movq %rbp, %rdi
callq 0xe590
jmp 0x12fd8
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0xe160
leaq 0x18(%rsp), %rdi
callq 0x19a18
leaq 0x30(%rsp), %rdi
callq 0xe290
movq %rbx, %rdi
callq 0xe9f0