// File: helchr[P]reMap/main.cpp
// Function: printSolution(Solver::Solution const&, unsigned long)
void printSolution(const Solver::Solution& s, size_t offset)
{
    if(s.exists)
    {
        std::cout << "Involved bits: ";
        for (auto b : s.involvedBits)
        {
            std::cout << offset + b << " ";
        }
        std::cout << std::endl;
        std::cout << "Uninvolved bits: ";
        for (auto b : s.uninvolvedBits)
        {
            std::cout << offset + b << " ";
        }
        std::cout << std::endl;
        std::cout << "Unknown bits: ";
        for (auto b : s.unknownBits)
        {
            std::cout << offset + b << " ";
        }
        std::cout << std::endl;
    }
    else
    {
        std::cout << "No solution exists" << std::endl;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
testb $0x1, (%rax)
je 0xa226
movq 0x3bf5c(%rip), %rdi     # 0x45fb0
leaq 0x29166(%rip), %rsi     # 0x331c1
callq 0x6570
movq -0x8(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0xcdf0
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0xce20
movq %rax, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0xce50
testb $0x1, %al
jne 0xa099
jmp 0xa0d7
leaq -0x20(%rbp), %rdi
callq 0xce80
movq (%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rsi
addq -0x30(%rbp), %rsi
movq 0x3bef8(%rip), %rdi     # 0x45fb0
callq 0x6150
movq %rax, %rdi
leaq 0x29375(%rip), %rsi     # 0x3343c
callq 0x6570
leaq -0x20(%rbp), %rdi
callq 0xceb0
jmp 0xa086
movq 0x3bed2(%rip), %rdi     # 0x45fb0
movq 0x3be83(%rip), %rsi     # 0x45f68
callq 0x65b0
movq 0x3bebf(%rip), %rdi     # 0x45fb0
leaq 0x290d9(%rip), %rsi     # 0x331d1
callq 0x6570
movq -0x8(%rbp), %rax
addq $0x38, %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0xcdf0
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rdi
callq 0xce20
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0xce50
testb $0x1, %al
jne 0xa136
jmp 0xa174
leaq -0x40(%rbp), %rdi
callq 0xce80
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rsi
addq -0x50(%rbp), %rsi
movq 0x3be5b(%rip), %rdi     # 0x45fb0
callq 0x6150
movq %rax, %rdi
leaq 0x292d8(%rip), %rsi     # 0x3343c
callq 0x6570
leaq -0x40(%rbp), %rdi
callq 0xceb0
jmp 0xa123
movq 0x3be35(%rip), %rdi     # 0x45fb0
movq 0x3bde6(%rip), %rsi     # 0x45f68
callq 0x65b0
movq 0x3be22(%rip), %rdi     # 0x45fb0
leaq 0x2904e(%rip), %rsi     # 0x331e3
callq 0x6570
movq -0x8(%rbp), %rax
addq $0x68, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
callq 0xcdf0
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rdi
callq 0xce20
movq %rax, -0x68(%rbp)
leaq -0x60(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0xce50
testb $0x1, %al
jne 0xa1d3
jmp 0xa211
leaq -0x60(%rbp), %rdi
callq 0xce80
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rsi
addq -0x70(%rbp), %rsi
movq 0x3bdbe(%rip), %rdi     # 0x45fb0
callq 0x6150
movq %rax, %rdi
leaq 0x2923b(%rip), %rsi     # 0x3343c
callq 0x6570
leaq -0x60(%rbp), %rdi
callq 0xceb0
jmp 0xa1c0
movq 0x3bd98(%rip), %rdi     # 0x45fb0
movq 0x3bd49(%rip), %rsi     # 0x45f68
callq 0x65b0
jmp 0xa248
movq 0x3bd83(%rip), %rdi     # 0x45fb0
leaq 0x28fbe(%rip), %rsi     # 0x331f2
callq 0x6570
movq %rax, %rdi
movq 0x3bd25(%rip), %rsi     # 0x45f68
callq 0x65b0
addq $0x70, %rsp
popq %rbp
retq
nop