// File: /workspace/github_cpp_makefile_star2_O1/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 0x6d9c
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 0x1646f
movq 0x13b57(%rip), %rax     # 0x29fb8
cmpb $0x0, (%rax)
je 0x1646b
incl 0x8(%rcx)
jmp 0x1646f
lock
incl 0x8(%rcx)
movq %rcx, 0x8(%rsp)
movq 0x10(%rsp), %rax
movq (%rax), %rax
movslq 0x94(%rax), %rsi
leaq 0x68(%rsp), %rdi
callq 0xef90
leaq 0x40(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x50(%rsp), %rax
cmpq %rax, 0x58(%rsp)
je 0x16604
xorl %r12d, %r12d
leaq 0x30(%rsp), %rbx
leaq 0x68(%rsp), %rbp
leaq 0x869d(%rip), %r13      # 0x1eb62
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, %r14
movq %rbx, %rdx
callq 0x65ba
movq %rbp, %rdi
callq 0xefcc
movq 0x18(%rsp), %rbx
movq 0x20(%rsp), %rax
cmpq %rax, %rbx
je 0x1651b
movslq (%rbx), %rdx
movq %rbp, %rdi
movq %r15, %rsi
callq 0xf0e6
addq $0x4, %rbx
jmp 0x164fd
subq 0x18(%rsp), %rax
je 0x1655f
sarq $0x2, %rax
movq %rax, %xmm0
punpckldq 0x83dd(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x83e5(%rip), %xmm0     # 0x1e920
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movsd 0x83a1(%rip), %xmm0     # 0x1e8f0
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq %rbp, %rdi
callq 0xf01c
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movq 0x13a50(%rip), %rdi     # 0x29fc0
callq 0x4350
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x4350
movl $0x1, %edx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4350
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xf3e9
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 0x165e4
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 %r14, %rbx
ja 0x164c5
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x16620
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4300
leaq 0x68(%rsp), %rdi
callq 0xefba
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x16639
callq 0xa86c
leaq 0x50(%rsp), %rdi
callq 0xa654
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x166a0
jmp 0x16659
movq %rax, %rbx
jmp 0x1667a
jmp 0x16660
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1667a
movq 0x28(%rsp), %rsi
subq %rdi, %rsi
callq 0x4300
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x16696
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x4300
leaq 0x68(%rsp), %rdi
callq 0xefba
movq 0x8(%rsp), %rdi
testq %rdi, %rdi
je 0x166af
callq 0xa86c
leaq 0x50(%rsp), %rdi
callq 0xa654
movq %rbx, %rdi
callq 0x45b0
nop