// File: /workspace/github_cpp_makefile_star2_O2/aalto-speech[P]ftk/src/Bigrams.cc
// Function: Bigrams::read_transitions(std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, double, 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, double>>>, 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, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, double, 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, double>>>>>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
int
Bigrams::read_transitions(transitions_t &transitions,
                          const string &filename)
{
    SimpleFileInput transfile(filename);

    string line;
    flt_type count;
    int num_trans = 0;
    while (transfile.getline(line)) {
        stringstream ss(line);
        string src, tgt;
        ss >> src;
        ss >> tgt;
        ss >> count;
        transitions[src][tgt] = count;
        num_trans++;
    }

    return num_trans;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x228, %rsp            # imm = 0x228
movq %rdi, -0x38(%rbp)
leaq -0xc8(%rbp), %rbx
movq %rbx, %rdi
callq 0x4460
leaq -0x30(%rbp), %rdi
movq %rbx, %rsi
callq 0x5688
leaq -0xc8(%rbp), %rdi
callq 0x46b8
leaq -0x98(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0xa8(%rbp), %r15
leaq -0x250(%rbp), %r12
leaq -0x88(%rbp), %r13
leaq -0x68(%rbp), %rbx
xorl %r14d, %r14d
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
movq %r15, %rsi
callq *(%rax)
testb %al, %al
je 0x20079
movq %r12, %rdi
movq %r15, %rsi
pushq $0x18
popq %rdx
callq 0x4520
leaq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
andq $0x0, -0x80(%rbp)
xorl %eax, %eax
movb %al, -0x78(%rbp)
leaq -0x58(%rbp), %rcx
movq %rcx, -0x68(%rbp)
andq $0x0, -0x60(%rbp)
movb %al, -0x58(%rbp)
movq %r12, %rdi
movq %r13, %rsi
callq 0x43f0
movq %r12, %rdi
movq %rbx, %rsi
callq 0x43f0
movq %r12, %rdi
leaq -0x48(%rbp), %rsi
callq 0x4240
movsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movq -0x38(%rbp), %rdi
movq %r13, %rsi
callq 0x19048
movq %rax, %rdi
movq %rbx, %rsi
callq 0x18d90
movsd -0x40(%rbp), %xmm0
movsd %xmm0, (%rax)
incl %r14d
movq %rbx, %rdi
callq 0x46b8
movq %r13, %rdi
callq 0x46b8
movq %r12, %rdi
callq 0x42b0
jmp 0x1ffc6
leaq -0xa8(%rbp), %rdi
callq 0x46b8
leaq -0x30(%rbp), %rdi
callq 0x577c
movl %r14d, %eax
addq $0x228, %rsp            # imm = 0x228
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0xc8(%rbp), %rdi
callq 0x46b8
jmp 0x200f4
jmp 0x200b6
movq %rax, %rbx
jmp 0x200df
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x46b8
leaq -0x88(%rbp), %rdi
callq 0x46b8
leaq -0x250(%rbp), %rdi
callq 0x42b0
leaq -0xa8(%rbp), %rdi
callq 0x46b8
leaq -0x30(%rbp), %rdi
callq 0x577c
movq %rbx, %rdi
callq 0x45f0