// File: /workspace/github_cpp_makefile_star2_O3/mitchblank[P]qiksolve/qiksolve.cpp
// Function: Dictionary::printInteractiveSuggestions(std::vector<unsigned int, std::allocator<unsigned int>> const&, unsigned int) const
void Dictionary::printInteractiveSuggestions(Words const& active_words, unsigned const show) const
{
	assert(!active_words.empty());
	assert(show > 0);
	vector<pair<double, Word>> suggestions;
	suggestions.reserve(active_words.size());
	puts("Suggestions:");
	{
		DividedWordList dl(wordLength());
		auto it = keys_.cbegin();
		do {
			dl.build(*this, active_words, *it);
			suggestions.push_back(make_pair(-dl.entropy(), *it));
		} while (++it != keys_.cend());
	}
	sort(suggestions.begin(), suggestions.end());
	{
		auto it = suggestions.cbegin();
		unsigned i = 0;
		do {
			printf("\t%2u: ", ++i);
			describeWord(stdout, it->second);
			putchar('\n');
		} while (++it != suggestions.cend() && i < show);
	}
	putchar('\n');
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r15
movq (%rsi), %rax
movq 0x8(%rsi), %rsi
cmpq %rsi, %rax
je 0x3678
movl %edx, %ebx
testl %edx, %edx
je 0x3697
movq %rdi, %r14
xorps %xmm0, %xmm0
leaq -0x40(%rbp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
subq %rax, %rsi
sarq $0x2, %rsi
callq 0x3bec
leaq 0x2ea6(%rip), %rdi      # 0x63ea
callq 0x21e0
movl 0x48(%r14), %esi
leaq -0x68(%rbp), %rdi
callq 0x3a22
movq 0x30(%r14), %r13
leaq -0x68(%rbp), %r12
movl (%r13), %ecx
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x27c2
movq %r12, %rdi
callq 0x28fa
xorps 0x2ac1(%rip), %xmm0     # 0x6040
movl (%r13), %eax
movlps %xmm0, -0x50(%rbp)
movl %eax, -0x48(%rbp)
movq -0x38(%rbp), %rsi
cmpq -0x30(%rbp), %rsi
je 0x35a2
movups -0x50(%rbp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, -0x38(%rbp)
jmp 0x35af
leaq -0x40(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x4a9a
addq $0x4, %r13
cmpq 0x38(%r14), %r13
jne 0x355e
leaq -0x68(%rbp), %rdi
callq 0x3a5a
movq -0x40(%rbp), %r15
movq -0x38(%rbp), %r12
cmpq %r12, %r15
je 0x3600
movq %r12, %rax
subq %r15, %rax
sarq $0x4, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r15, %rdi
movq %r12, %rsi
callq 0x4bc2
movq %r15, %rdi
movq %r12, %rsi
callq 0x4c75
movq -0x40(%rbp), %r15
addq $0x10, %r15
movl $0x1, %r12d
movq 0x59af(%rip), %r13      # 0x8fc0
leaq 0x2ddf(%rip), %rdi      # 0x63f7
movl %r12d, %esi
xorl %eax, %eax
callq 0x2040
movq (%r13), %rsi
movl -0x8(%r15), %edx
movq %r14, %rdi
callq 0x3aae
movl $0xa, %edi
callq 0x21b0
cmpl %ebx, %r12d
jae 0x3651
leaq 0x10(%r15), %rax
incl %r12d
cmpq -0x38(%rbp), %r15
movq %rax, %r15
jne 0x3611
movl $0xa, %edi
callq 0x21b0
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x3669
callq 0x2140
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2ab4(%rip), %rdi      # 0x6133
leaq 0x29d3(%rip), %rsi      # 0x6059
leaq 0x2cfe(%rip), %rcx      # 0x638b
movl $0x276, %edx            # imm = 0x276
callq 0x20c0
leaq 0x2d43(%rip), %rdi      # 0x63e1
leaq 0x29b4(%rip), %rsi      # 0x6059
leaq 0x2cdf(%rip), %rcx      # 0x638b
movl $0x277, %edx            # imm = 0x277
callq 0x20c0
jmp 0x36bc
jmp 0x36bc
jmp 0x36c1
movq %rax, %rbx
jmp 0x36cd
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x3a5a
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x36db
callq 0x2140
movq %rbx, %rdi
callq 0x2240
nop