// File: /workspace/github_cpp_makefile_star2_O1/YerevaNN[P]pmi/pmi.cpp
// Function: model::dump(std::ostream&)
void model::dump(std::ostream& out){
    lock();
    
    report("Dumping...");
    report("\b\b\b Dictionary...");
    size dictionarySize = words.size();
    out.write((const char*)&dictionarySize, sizeof(dictionarySize));
    for(auto w : words) {
        std::string s = w;
        s.resize(wordMaxLength, 0);
        out.write(s.c_str(), wordMaxLength);
    }
    report("\b\b\b Matrix...");
    size matrixSize = lockedCount.size();
    out.write((const char *)&matrixSize, sizeof(matrixSize));
    for(auto i : lockedCount) {
        pair key = i.first;
        out.write((const char*)&key, sizeof(key));
        occurences val = i.second;
        out.write((const char*)&val, sizeof(val));
    }
    report("Done\n");
    return;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rsi, %rbx
movq %rdi, %r12
callq 0x3184
movq 0x6d48(%rip), %r14      # 0x8fc8
movq (%r14), %rcx
leaq 0x3dff(%rip), %rdi      # 0x6089
pushq $0xa
popq %rsi
pushq $0x1
popq %r15
movq %r15, %rdx
callq 0x2240
movq (%r14), %rdi
callq 0x2160
movq (%r14), %rcx
leaq 0x3de9(%rip), %rdi      # 0x6094
pushq $0x11
popq %rsi
movq %r15, %rdx
callq 0x2240
movq (%r14), %rdi
callq 0x2160
movq 0x48(%r12), %rax
subq 0x40(%r12), %rax
sarq $0x5, %rax
leaq 0x60(%rsp), %rsi
movq %rax, (%rsi)
pushq $0x8
popq %rdx
movq %rbx, %rdi
callq 0x2190
movq 0x40(%r12), %r14
movq %r12, 0x58(%rsp)
movq 0x48(%r12), %r15
cmpq %r15, %r14
je 0x239a
leaq 0x48(%rsp), %rbp
leaq 0x38(%rsp), %r12
pushq $0x40
popq %r13
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x31e6
movq %rbp, 0x38(%rsp)
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x31e6
movq %r12, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x2060
movq 0x38(%rsp), %rsi
movq %rbx, %rdi
movq %r13, %rdx
callq 0x2190
movq 0x38(%rsp), %rdi
cmpq %rbp, %rdi
je 0x2371
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x2130
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x238d
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2130
addq $0x20, %r14
cmpq %r15, %r14
jne 0x2305
movq 0x6c27(%rip), %r14      # 0x8fc8
movq (%r14), %rcx
leaq 0x3cfb(%rip), %rdi      # 0x60a6
pushq $0xd
popq %rsi
pushq $0x1
popq %rdx
callq 0x2240
movq (%r14), %rdi
callq 0x2160
movq 0x58(%rsp), %r14
movq 0x98(%r14), %rax
subq 0x90(%r14), %rax
sarq $0x5, %rax
leaq 0x38(%rsp), %rsi
movq %rax, (%rsi)
pushq $0x8
popq %rdx
movq %rbx, %rdi
callq 0x2190
movq 0x90(%r14), %rbp
movq 0x98(%r14), %r14
cmpq %r14, %rbp
je 0x243d
leaq 0xc(%rsp), %r12
pushq $0x4
popq %r13
movaps (%rbp), %xmm0
movl 0x10(%rbp), %r15d
movaps %xmm0, 0x10(%rsp)
movq %rbx, %rdi
leaq 0x10(%rsp), %rsi
pushq $0x10
popq %rdx
callq 0x2190
movl %r15d, 0xc(%rsp)
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x2190
addq $0x20, %rbp
cmpq %r14, %rbp
jne 0x2404
movq 0x6b84(%rip), %rbx      # 0x8fc8
movq (%rbx), %rcx
leaq 0x3c28(%rip), %rdi      # 0x6076
pushq $0x5
popq %rsi
pushq $0x1
popq %rdx
callq 0x2240
movq (%rbx), %rdi
callq 0x2160
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x248f
movq %rax, %rbx
movq 0x38(%rsp), %rdi
cmpq %rbp, %rdi
je 0x248f
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x2130
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x24ab
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2130
movq %rbx, %rdi
callq 0x2220
nop