// File: epfml[P]Bi-Sent2Vec/src/fasttext.cc
// Function: fasttext::FastText::sentenceVectors()
void FastText::sentenceVectors() {
  Vector vec(args_->dim);
  std::string sentence;
  Vector svec(args_->dim);
  std::string word;
  while (std::getline(std::cin, sentence)) {
    std::istringstream iss(sentence);
    svec.zero();
    int32_t count = 0;
    while(iss >> word) {
      getVector(vec, word);
      vec.mul(1.0 / vec.norm());
      svec.addVector(vec);
      count++;
    }
    svec.mul(1.0 / count);
    std::cout << sentence << " " << svec << std::endl;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x240, %rsp            # imm = 0x240
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0xe6e0
movslq 0x94(%rax), %rsi
leaq -0x18(%rbp), %rdi
callq 0x20c00
leaq -0x38(%rbp), %rdi
callq 0x5600
movq -0x208(%rbp), %rdi
callq 0xe6e0
movslq 0x94(%rax), %rsi
leaq -0x48(%rbp), %rdi
callq 0x20c00
jmp 0x2c956
leaq -0x78(%rbp), %rdi
callq 0x5600
movq 0x32672(%rip), %rdi     # 0x5efd8
leaq -0x38(%rbp), %rsi
callq 0x50d0
movq %rax, -0x210(%rbp)
jmp 0x2c978
movq -0x210(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x5530
movb %al, -0x211(%rbp)
jmp 0x2c996
movb -0x211(%rbp), %al
testb $0x1, %al
jne 0x2c9a5
jmp 0x2cb60
leaq -0x1f8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
movl $0x8, %edx
callq 0x5720
jmp 0x2c9bc
leaq -0x48(%rbp), %rdi
callq 0x20cb0
jmp 0x2c9c7
movl $0x0, -0x1fc(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x5560
movq %rax, -0x220(%rbp)
jmp 0x2c9ea
movq -0x220(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x5530
movb %al, -0x221(%rbp)
jmp 0x2ca08
movb -0x221(%rbp), %al
testb $0x1, %al
jne 0x2ca17
jmp 0x2cac9
movq -0x208(%rbp), %rdi
leaq -0x18(%rbp), %rsi
leaq -0x78(%rbp), %rdx
callq 0x27ec0
jmp 0x2ca2d
leaq -0x18(%rbp), %rdi
callq 0x20d00
movss %xmm0, -0x228(%rbp)
jmp 0x2ca40
movss -0x228(%rbp), %xmm0
cvtss2sd %xmm0, %xmm1
movsd 0x15e64(%rip), %xmm0    # 0x428b8
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
leaq -0x18(%rbp), %rdi
callq 0x20d80
jmp 0x2ca67
leaq -0x48(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x20de0
jmp 0x2ca76
movl -0x1fc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1fc(%rbp)
jmp 0x2c9d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2cb9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x2cb8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x5220
jmp 0x2cb8d
cvtsi2sdl -0x1fc(%rbp), %xmm1
movsd 0x15ddf(%rip), %xmm0    # 0x428b8
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
leaq -0x48(%rbp), %rdi
callq 0x20d80
jmp 0x2caec
movq 0x324c5(%rip), %rdi     # 0x5efb8
leaq -0x38(%rbp), %rsi
callq 0x53e0
movq %rax, -0x230(%rbp)
jmp 0x2cb05
movq -0x230(%rbp), %rdi
leaq 0x1602e(%rip), %rsi     # 0x42b41
callq 0x5420
movq %rax, -0x238(%rbp)
jmp 0x2cb21
movq -0x238(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x21440
movq %rax, -0x240(%rbp)
jmp 0x2cb3a
movq -0x240(%rbp), %rdi
movq 0x32448(%rip), %rsi     # 0x5ef90
callq 0x5460
jmp 0x2cb4f
leaq -0x1f8(%rbp), %rdi
callq 0x5220
jmp 0x2c95f
leaq -0x78(%rbp), %rdi
callq 0x58d8
leaq -0x48(%rbp), %rdi
callq 0x20c60
leaq -0x38(%rbp), %rdi
callq 0x58d8
leaq -0x18(%rbp), %rdi
callq 0x20c60
addq $0x240, %rsp            # imm = 0x240
popq %rbp
retq
leaq -0x78(%rbp), %rdi
callq 0x58d8
leaq -0x48(%rbp), %rdi
callq 0x20c60
leaq -0x38(%rbp), %rdi
callq 0x58d8
leaq -0x18(%rbp), %rdi
callq 0x20c60
movq -0x50(%rbp), %rdi
callq 0x57a0
nopw (%rax,%rax)