// File: /workspace/github_cpp_makefile_star2_O1/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 0x36a8
movl %edx, %ebx
testl %edx, %edx
je 0x36c7
movq %rdi, %r14
xorps %xmm0, %xmm0
leaq -0x40(%rbp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
subq %rax, %rsi
sarq $0x2, %rsi
callq 0x3c18
leaq 0x2e76(%rip), %rdi      # 0x63ea
callq 0x21f0
movl 0x48(%r14), %esi
leaq -0x68(%rbp), %rdi
callq 0x3a48
movq 0x30(%r14), %r13
leaq -0x68(%rbp), %r12
movl (%r13), %ecx
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x27e4
movq %r12, %rdi
callq 0x2912
xorps 0x2a81(%rip), %xmm0     # 0x6030
movl (%r13), %eax
movlps %xmm0, -0x50(%rbp)
movl %eax, -0x48(%rbp)
movq -0x38(%rbp), %rsi
cmpq -0x30(%rbp), %rsi
je 0x35d2
movups -0x50(%rbp), %xmm0
movups %xmm0, (%rsi)
addq $0x10, -0x38(%rbp)
jmp 0x35df
leaq -0x40(%rbp), %rdi
leaq -0x50(%rbp), %rdx
callq 0x4ae2
addq $0x4, %r13
cmpq 0x38(%r14), %r13
jne 0x358e
leaq -0x68(%rbp), %rdi
callq 0x3a80
movq -0x40(%rbp), %r15
movq -0x38(%rbp), %r12
cmpq %r12, %r15
je 0x362c
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 0x4c0a
movq %r15, %rdi
movq %r12, %rsi
callq 0x4cbd
movq -0x40(%rbp), %r13
addq $0x10, %r13
movl $0x1, %r15d
movq 0x597f(%rip), %r12      # 0x8fc0
leaq 0x2daf(%rip), %rdi      # 0x63f7
movl %r15d, %esi
xorl %eax, %eax
callq 0x2040
movq (%r12), %rsi
movl -0x8(%r13), %edx
movq %r14, %rdi
callq 0x3aca
movl $0xa, %edi
callq 0x21b0
cmpl %ebx, %r15d
jae 0x3681
leaq 0x10(%r13), %rax
incl %r15d
cmpq -0x38(%rbp), %r13
movq %rax, %r13
jne 0x3641
movl $0xa, %edi
callq 0x21b0
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x3699
callq 0x2140
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2a84(%rip), %rdi      # 0x6133
leaq 0x29a3(%rip), %rsi      # 0x6059
leaq 0x2cce(%rip), %rcx      # 0x638b
movl $0x276, %edx            # imm = 0x276
callq 0x20c0
leaq 0x2d13(%rip), %rdi      # 0x63e1
leaq 0x2984(%rip), %rsi      # 0x6059
leaq 0x2caf(%rip), %rcx      # 0x638b
movl $0x277, %edx            # imm = 0x277
callq 0x20c0
jmp 0x36ec
jmp 0x36ec
jmp 0x36f1
movq %rax, %rbx
jmp 0x36fd
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x3a80
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x370b
callq 0x2140
movq %rbx, %rdi
callq 0x2250
nop