// File: 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
subq $0x280, %rsp            # imm = 0x280
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0x248(%rbp)
callq 0x41a0
movq -0x248(%rbp), %rsi
leaq -0x18(%rbp), %rdi
callq 0x75a0
jmp 0x5e629
leaq -0x38(%rbp), %rdi
callq 0x4828
leaq -0x68(%rbp), %rdi
callq 0x4560
movl $0x0, -0x74(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x586a0
movb %al, -0x249(%rbp)
jmp 0x5e657
movb -0x249(%rbp), %al
testb $0x1, %al
jne 0x5e666
jmp 0x5e7ce
movl $0x10, %edi
movl $0x8, %esi
callq 0x13950
movl %eax, -0x250(%rbp)
jmp 0x5e67d
movl -0x250(%rbp), %edx
leaq -0x200(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x4630
jmp 0x5e695
leaq -0x220(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0x4560
leaq -0x240(%rbp), %rdi
callq 0x4560
movq -0x258(%rbp), %rsi
leaq -0x200(%rbp), %rdi
callq 0x44b0
jmp 0x5e6c9
leaq -0x200(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x44b0
jmp 0x5e6de
leaq -0x200(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x4350
jmp 0x5e6f0
movsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x268(%rbp)
movq -0x8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x48700
movq %rax, -0x260(%rbp)
jmp 0x5e716
movq -0x260(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x47db0
movq %rax, -0x270(%rbp)
jmp 0x5e732
movq -0x270(%rbp), %rax
movsd -0x268(%rbp), %xmm0
movsd %xmm0, (%rax)
movl -0x74(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x74(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x4828
leaq -0x220(%rbp), %rdi
callq 0x4828
leaq -0x200(%rbp), %rdi
callq 0x4310
jmp 0x5e642
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x4828
jmp 0x5e80a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x5e7f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x4828
leaq -0x220(%rbp), %rdi
callq 0x4828
leaq -0x200(%rbp), %rdi
callq 0x4310
jmp 0x5e7f8
movl -0x74(%rbp), %eax
movl %eax, -0x274(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x4828
leaq -0x18(%rbp), %rdi
callq 0x77b0
movl -0x274(%rbp), %eax
addq $0x280, %rsp            # imm = 0x280
popq %rbp
retq
leaq -0x68(%rbp), %rdi
callq 0x4828
leaq -0x18(%rbp), %rdi
callq 0x77b0
movq -0x40(%rbp), %rdi
callq 0x46e0
nopw %cs:(%rax,%rax)