// File: grame-cncm[P]digraph/./dglib/arrow.hh
// Function: arrow_traits<std::pair<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, 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, int>>>, int>>::combine(std::pair<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, 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, int>>>, int> const&, std::pair<std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int, 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, int>>>, int> const&)
static multidep combine(const multidep& X, const multidep& Y)
    {
        // std::cerr << "combine " << label(X) << " + " << label(Y) << std::endl;
        multidep M;
        auto     itx = X.first.begin();
        auto     ity = Y.first.begin();
        while ((itx != X.first.end()) && (ity != Y.first.end())) {
            if (itx->first < ity->first) {
                M.first[itx->first] = itx->second;
                itx++;
            } else if (ity->first < itx->first) {
                M.first[ity->first] = ity->second;
                ity++;
            } else {
                M.first[ity->first] = std::min(itx->second, ity->second);
                itx++;
                ity++;
            }
        }
        while (itx != X.first.end()) {
            M.first[itx->first] = itx->second;
            itx++;
        }
        while (ity != Y.first.end()) {
            M.first[ity->first] = ity->second;
            ity++;
        }
        M.second = std::min(X.second, Y.second);
        // std::cerr << "combine " << label(X) << " + " << label(Y) << " = " << label(M) <<
        // std::endl;
        return M;
    }

// Assembly:
subq $0x148, %rsp            # imm = 0x148
movq %rdi, 0xa8(%rsp)
movq %rdi, %rax
movq %rax, 0xb0(%rsp)
movq %rdi, 0x140(%rsp)
movq %rsi, 0x138(%rsp)
movq %rdx, 0x130(%rsp)
movb $0x0, 0x12f(%rsp)
callq 0x8230
movq 0x138(%rsp), %rdi
callq 0x8270
movq %rax, 0x120(%rsp)
movq 0x130(%rsp), %rdi
callq 0x8270
movq %rax, 0x118(%rsp)
movq 0x138(%rsp), %rdi
callq 0x82c0
movq %rax, 0x110(%rsp)
leaq 0x120(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x82a0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0xa7(%rsp)
jne 0x62e5
jmp 0x6316
movq 0x130(%rsp), %rdi
callq 0x82c0
movq %rax, 0x108(%rsp)
leaq 0x118(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x82a0
movb %al, 0xa7(%rsp)
movb 0xa7(%rsp), %al
testb $0x1, %al
jne 0x6326
jmp 0x6537
leaq 0x120(%rsp), %rdi
callq 0x82f0
movq %rax, 0x98(%rsp)
leaq 0x118(%rsp), %rdi
callq 0x82f0
movq 0x98(%rsp), %rdi
movq %rax, %rsi
callq 0x5060
testb $0x1, %al
jne 0x6361
jmp 0x63fa
leaq 0x120(%rsp), %rdi
movq %rdi, 0x80(%rsp)
callq 0x82f0
movq 0x80(%rsp), %rdi
movl 0x20(%rax), %eax
movl %eax, 0x8c(%rsp)
callq 0x82f0
movq 0xa8(%rsp), %rdi
movq %rax, %rsi
callq 0x8310
movq %rax, 0x90(%rsp)
jmp 0x63a7
movq 0x90(%rsp), %rax
movl 0x8c(%rsp), %ecx
movl %ecx, (%rax)
leaq 0x120(%rsp), %rdi
xorl %esi, %esi
callq 0x8400
movq %rax, 0xf0(%rsp)
jmp 0x6532
movq 0xa8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x100(%rsp)
movl %eax, 0xfc(%rsp)
callq 0x2c20
jmp 0x66c2
leaq 0x118(%rsp), %rdi
callq 0x82f0
movq %rax, 0x78(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x82f0
movq 0x78(%rsp), %rdi
movq %rax, %rsi
callq 0x5060
testb $0x1, %al
jne 0x642c
jmp 0x648d
leaq 0x118(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x82f0
movq 0x60(%rsp), %rdi
movl 0x20(%rax), %eax
movl %eax, 0x6c(%rsp)
callq 0x82f0
movq 0xa8(%rsp), %rdi
movq %rax, %rsi
callq 0x8310
movq %rax, 0x70(%rsp)
jmp 0x6466
movq 0x70(%rsp), %rax
movl 0x6c(%rsp), %ecx
movl %ecx, (%rax)
leaq 0x118(%rsp), %rdi
xorl %esi, %esi
callq 0x8400
movq %rax, 0xe8(%rsp)
jmp 0x6530
leaq 0x120(%rsp), %rdi
callq 0x82f0
addq $0x20, %rax
movq %rax, 0x50(%rsp)
leaq 0x118(%rsp), %rdi
callq 0x82f0
movq 0x50(%rsp), %rdi
movq %rax, %rsi
addq $0x20, %rsi
callq 0x8440
movq %rax, 0x58(%rsp)
jmp 0x64c8
movq 0x58(%rsp), %rax
movl (%rax), %eax
movl %eax, 0x44(%rsp)
leaq 0x118(%rsp), %rdi
callq 0x82f0
movq 0xa8(%rsp), %rdi
movq %rax, %rsi
callq 0x8310
movq %rax, 0x48(%rsp)
jmp 0x64f7
movq 0x48(%rsp), %rax
movl 0x44(%rsp), %ecx
movl %ecx, (%rax)
leaq 0x120(%rsp), %rdi
xorl %esi, %esi
callq 0x8400
movq %rax, 0xe0(%rsp)
leaq 0x118(%rsp), %rdi
xorl %esi, %esi
callq 0x8400
movq %rax, 0xd8(%rsp)
jmp 0x6532
jmp 0x62a9
jmp 0x6539
movq 0x138(%rsp), %rdi
callq 0x82c0
movq %rax, 0xd0(%rsp)
leaq 0x120(%rsp), %rdi
leaq 0xd0(%rsp), %rsi
callq 0x82a0
testb $0x1, %al
jne 0x6569
jmp 0x65ca
leaq 0x120(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x82f0
movq 0x28(%rsp), %rdi
movl 0x20(%rax), %eax
movl %eax, 0x34(%rsp)
callq 0x82f0
movq 0xa8(%rsp), %rdi
movq %rax, %rsi
callq 0x8310
movq %rax, 0x38(%rsp)
jmp 0x65a3
movq 0x38(%rsp), %rax
movl 0x34(%rsp), %ecx
movl %ecx, (%rax)
leaq 0x120(%rsp), %rdi
xorl %esi, %esi
callq 0x8400
movq %rax, 0xc8(%rsp)
jmp 0x6539
jmp 0x65cc
movq 0x130(%rsp), %rdi
callq 0x82c0
movq %rax, 0xc0(%rsp)
leaq 0x118(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0x82a0
testb $0x1, %al
jne 0x65fc
jmp 0x665d
leaq 0x118(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x82f0
movq 0x10(%rsp), %rdi
movl 0x20(%rax), %eax
movl %eax, 0x1c(%rsp)
callq 0x82f0
movq 0xa8(%rsp), %rdi
movq %rax, %rsi
callq 0x8310
movq %rax, 0x20(%rsp)
jmp 0x6636
movq 0x20(%rsp), %rax
movl 0x1c(%rsp), %ecx
movl %ecx, (%rax)
leaq 0x118(%rsp), %rdi
xorl %esi, %esi
callq 0x8400
movq %rax, 0xb8(%rsp)
jmp 0x65cc
movq 0x138(%rsp), %rdi
addq $0x30, %rdi
movq 0x130(%rsp), %rsi
addq $0x30, %rsi
callq 0x8440
movq %rax, 0x8(%rsp)
jmp 0x6681
movq 0xa8(%rsp), %rax
movq 0x8(%rsp), %rcx
movl (%rcx), %ecx
movl %ecx, 0x30(%rax)
movb $0x1, 0x12f(%rsp)
testb $0x1, 0x12f(%rsp)
jne 0x66b2
movq 0xa8(%rsp), %rdi
callq 0x2c20
movq 0xb0(%rsp), %rax
addq $0x148, %rsp            # imm = 0x148
retq
movq 0x100(%rsp), %rdi
callq 0x2290
nop