// File: /workspace/github_cpp_makefile_star2_O3/epfml[P]Bi-Sent2Vec/src/fasttext.cc
// Function: fasttext::FastText::predict(std::istream&, int, std::vector<std::pair<float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>, std::allocator<std::pair<float, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>&) const
void FastText::predict(std::istream& in, int32_t k,
                       std::vector<std::pair<real,std::string>>& predictions) const {
  std::vector<int32_t> words, labels;
  dict_->getLine(in, words, labels, model_->rng);
  if (words.empty()) return;
  Vector hidden(args_->dim);
  Vector output(dict_->nlabels());
  std::vector<std::pair<real,int32_t>> modelPredictions;
  model_->predict(words, k, modelPredictions, hidden, output);
  predictions.clear();
  for (auto it = modelPredictions.cbegin(); it != modelPredictions.cend(); it++) {
    predictions.push_back(std::make_pair(it->first, dict_->getLabel(it->second)));
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rcx, %rbx
movl %edx, %ebp
movq %rdi, %r14
xorps %xmm0, %xmm0
leaq 0x40(%rsp), %rdx
movaps %xmm0, (%rdx)
xorl %eax, %eax
movq %rax, 0x10(%rdx)
leaq 0xa0(%rsp), %rcx
movq %rax, 0x10(%rcx)
movaps %xmm0, (%rcx)
movq 0x10(%rdi), %rdi
movl $0x110, %r8d            # imm = 0x110
addq 0x60(%r14), %r8
callq 0x8716
movq 0x40(%rsp), %rax
cmpq 0x48(%rsp), %rax
je 0x154e9
movq (%r14), %rax
movslq 0x94(%rax), %rsi
leaq 0x90(%rsp), %rdi
callq 0xf1ac
movq 0x10(%r14), %rdi
callq 0x6558
movslq %eax, %rsi
leaq 0x80(%rsp), %rdi
callq 0xf1ac
xorps %xmm0, %xmm0
leaq 0x20(%rsp), %rcx
movaps %xmm0, (%rcx)
movq $0x0, 0x10(%rcx)
movq 0x60(%r14), %rdi
leaq 0x40(%rsp), %rsi
leaq 0x90(%rsp), %r8
leaq 0x80(%rsp), %r9
movl %ebp, %edx
callq 0x1014c
movq (%rbx), %rsi
movq %rbx, %rdi
callq 0x1af76
movq 0x20(%rsp), %r15
cmpq 0x28(%rsp), %r15
je 0x154ba
leaq 0x70(%rsp), %r12
leaq 0x10(%rsp), %rbp
leaq 0x58(%rsp), %r13
movq 0x10(%r14), %rsi
movl 0x4(%r15), %edx
movq %rsp, %rdi
callq 0x8778
movss (%r15), %xmm0
movss %xmm0, 0x58(%rsp)
movq %r12, 0x60(%rsp)
movq (%rsp), %rax
cmpq %rbp, %rax
je 0x15449
movq %rax, 0x60(%rsp)
movq 0x10(%rsp), %rax
movq %rax, 0x70(%rsp)
jmp 0x15452
movups (%rbp), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rsp), %rax
movq %rax, 0x68(%rsp)
movq %rbp, (%rsp)
movq $0x0, 0x8(%rsp)
movb $0x0, 0x10(%rsp)
movq %rbx, %rdi
movq %r13, %rsi
callq 0x1afc8
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x15490
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x4300
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x154a6
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x4300
addq $0x8, %r15
cmpq 0x28(%rsp), %r15
jne 0x1540f
movq 0x20(%rsp), %r15
testq %r15, %r15
je 0x154cf
movq 0x30(%rsp), %rsi
subq %r15, %rsi
movq %r15, %rdi
callq 0x4300
leaq 0x80(%rsp), %rdi
callq 0xf1d6
leaq 0x90(%rsp), %rdi
callq 0xf1d6
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x15506
movq 0xb0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4300
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x1551d
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x4300
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x1553d
jmp 0x15533
movq %rax, %rbx
jmp 0x155a3
movq %rax, %rbx
jmp 0x15596
movq %rax, %rbx
jmp 0x15572
movq %rax, %rbx
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x1555c
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x4300
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x15572
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x4300
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x15589
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x4300
leaq 0x80(%rsp), %rdi
callq 0xf1d6
leaq 0x90(%rsp), %rdi
callq 0xf1d6
movq 0xa0(%rsp), %rdi
testq %rdi, %rdi
je 0x155c0
movq 0xb0(%rsp), %rsi
subq %rdi, %rsi
callq 0x4300
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x155d7
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x4300
movq %rbx, %rdi
callq 0x45b0
nop