// File: /workspace/github_cpp_makefile_star2_O3/epfml[P]Bi-Sent2Vec/src/fasttext.cc
// Function: fasttext::FastText::printVocabularyVectors(bool)
void FastText::printVocabularyVectors(bool input_matrix) {
  std::vector<std::string> words = getVocab();
  std::shared_ptr<Matrix> matrix = input_matrix ? input_ : output_;
  Vector vec(args_->dim);
  std::string word;
  for(int i = 0; i < words.size(); i++) {
    word = words[i];
    const std::vector<int32_t> &ngrams = dict_->getNgrams(word);
    vec.zero();
    for (auto it = ngrams.begin(); it != ngrams.end(); ++it) {
      vec.addRow(*matrix, *it);
    }
    if (ngrams.size() > 0) {
      vec.mul(1.0 / ngrams.size());
    }
    std::cout << word << " " << " " << vec << std::endl;
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movl %esi, %ebx
movq %rdi, %r14
movq 0x10(%rdi), %rsi
leaq 0x50(%rsp), %rdi
callq 0x6dd0
xorb $0x1, %bl
movzbl %bl, %eax
shll $0x4, %eax
movq 0x20(%r14,%rax), %r15
movq %r14, 0x10(%rsp)
movq 0x28(%r14,%rax), %rcx
testq %rcx, %rcx
je 0x16541
movq 0x13a85(%rip), %rax     # 0x29fb8
cmpb $0x0, (%rax)
je 0x1653d
incl 0x8(%rcx)
jmp 0x16541
lock
incl 0x8(%rcx)
movq %rcx, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rax
movslq 0x94(%rax), %rsi
leaq 0x68(%rsp), %rdi
callq 0xf1ac
leaq 0x40(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x50(%rsp), %rax
cmpq %rax, 0x58(%rsp)
je 0x16708
xorl %r12d, %r12d
leaq 0x30(%rsp), %rbx
leaq 0x68(%rsp), %rbp
movq %r12, %rsi
shlq $0x5, %rsi
addq %rax, %rsi
movq %rbx, %rdi
callq 0x41a0
movq 0x10(%rsp), %rax
movq 0x10(%rax), %rsi
leaq 0x18(%rsp), %rdi
movq %rbx, %r13
movq %rbx, %rdx
callq 0x65be
movq %rbp, %rdi
callq 0xf1e8
movq 0x18(%rsp), %rbx
cmpq 0x20(%rsp), %rbx
je 0x1663f
movq %rbx, %r14
negq %r14
movslq (%rbx), %rdx
movq %rbp, %rdi
movq %r15, %rsi
callq 0xf302
addq $0x4, %rbx
addq $-0x4, %r14
cmpq 0x20(%rsp), %rbx
jne 0x165d5
movq 0x18(%rsp), %rax
cmpq %rax, %rbx
je 0x1663f
addq %r14, %rax
negq %rax
sarq $0x2, %rax
movq %rax, %xmm0
punpckldq 0x82fd(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x8305(%rip), %xmm0     # 0x1e920
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd 0x82c9(%rip), %xmm0     # 0x1e8f8
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq %rbp, %rdi
callq 0xf238
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movq 0x13970(%rip), %rdi     # 0x29fc0
callq 0x4350
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x84fb(%rip), %rsi      # 0x1eb62
callq 0x4350
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x84e7(%rip), %rsi      # 0x1eb62
callq 0x4350
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xf605
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x42d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4040
movq %rax, %rdi
callq 0x4200
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x166cc
movq 0x28(%rsp), %rsi
subq %rdi, %rsi
callq 0x4300
incq %r12
movq 0x50(%rsp), %rax
movq 0x58(%rsp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
cmpq %r12, %rcx
movq %r13, %rbx
ja 0x16590
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x16708
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4300
leaq 0x68(%rsp), %rdi
callq 0xf1d6
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x16721
callq 0xa8a0
leaq 0x50(%rsp), %rdi
callq 0xa678
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x16788
jmp 0x16741
movq %rax, %rbx
jmp 0x16762
jmp 0x16748
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x16762
movq 0x28(%rsp), %rsi
subq %rdi, %rsi
callq 0x4300
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x1677e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4300
leaq 0x68(%rsp), %rdi
callq 0xf1d6
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x16797
callq 0xa8a0
leaq 0x50(%rsp), %rdi
callq 0xa678
movq %rbx, %rdi
callq 0x45b0
nop