// File: /workspace/github_c_makefile_star2_O0/cinemast[P]sudoku/sudoku.c
// Function: request_hint
void request_hint (void)
{
    ++req_hints;
    if (have_hint) {
        clear_hints();
    }
    if (-1 == num_hints) {
        last_hint = -1;
        num_hints = findhints();
    }
    if (0 == num_hints) {
        set_status("No hints available!");
    } else {
        int i, idx;
        int n = 0;

        if (1 < num_hints) {
            do {
                i = rand() % num_hints;
            } while (i == last_hint);
        } else {
            i = 0;
        }
        idx = GET_INDEX(possible[last_hint = i]);

        /* Count # possible ways of expressing hint */
        if (0 != (HINT_ROW & possible[i])) {
            ++n;
        }
        if (0 != (HINT_COLUMN & possible[i])) {
            ++n;
        }
        if (0 != (HINT_BLOCK & possible[i])) {
            ++n;
        }
        assert(0 < n);
        if (1 < n) {
            n = 1 + rand() % n;
        }
        if (0 != (HINT_ROW & possible[i])) {
            if (0 == --n) {
                row_hint(ROW(idx));
            }
        }
        if (0 != (HINT_COLUMN & possible[i])) {
            if (0 == --n) {
                column_hint(COLUMN(idx));
            }
        }
        if (0 != (HINT_BLOCK & possible[i])) {
            if (0 == --n) {
                block_hint(IDX_BLOCK(ROW(idx), COLUMN(idx)));
            }
        }
        if (opt_spoilerhint) {
            /* Useful for testing... */
            sprintf(statusline, "%d @ row %d, column %d",
                        GET_DIGIT(possible[i]),
                        ROW(idx)+1, COLUMN(idx)+1);
            set_status(statusline);
        } else if (10 < req_hints || 2 * num_hints < req_hints) {
            sprintf(statusline, "(try the digit %d)",
                        GET_DIGIT(possible[i]));
            set_status(statusline);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl 0xe4c6(%rip), %eax      # 0x11354
addl $0x1, %eax
movl %eax, 0xe4bd(%rip)      # 0x11354
cmpl $0x0, 0xe4ba(%rip)      # 0x11358
je 0x2ea5
callq 0x3190
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpl 0xe4ac(%rip), %eax      # 0x1135c
jne 0x2ec7
movl $0xffffffff, 0xe4a4(%rip) # imm = 0xFFFFFFFF
callq 0x2480
movl %eax, 0xe495(%rip)      # 0x1135c
xorl %eax, %eax
cmpl 0xe48d(%rip), %eax      # 0x1135c
jne 0x2ee2
leaq 0x9dff(%rip), %rdi      # 0xccd7
callq 0x32f0
jmp 0x317b
movl $0x0, -0xc(%rbp)
movl $0x1, %eax
cmpl 0xe468(%rip), %eax      # 0x1135c
jge 0x2f14
jmp 0x2ef8
callq 0x2350
cltd
idivl 0xe458(%rip)            # 0x1135c
movl %edx, -0x4(%rbp)
movl -0x4(%rbp), %eax
cmpl 0xe450(%rip), %eax      # 0x11360
je 0x2ef8
jmp 0x2f1b
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
movl %eax, 0xe43c(%rip)      # 0x11360
movslq %eax, %rcx
leaq 0xe2e2(%rip), %rax      # 0x11210
movl (%rax,%rcx,4), %eax
andl $0x7f, %eax
movl %eax, -0x8(%rbp)
movslq -0x4(%rbp), %rcx
leaq 0xe2ce(%rip), %rax      # 0x11210
movl (%rax,%rcx,4), %ecx
andl $0x1000000, %ecx        # imm = 0x1000000
xorl %eax, %eax
cmpl %ecx, %eax
je 0x2f5a
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
movslq -0x4(%rbp), %rcx
leaq 0xe2ab(%rip), %rax      # 0x11210
movl (%rax,%rcx,4), %ecx
andl $0x2000000, %ecx        # imm = 0x2000000
xorl %eax, %eax
cmpl %ecx, %eax
je 0x2f7d
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
movslq -0x4(%rbp), %rcx
leaq 0xe288(%rip), %rax      # 0x11210
movl (%rax,%rcx,4), %ecx
andl $0x4000000, %ecx        # imm = 0x4000000
xorl %eax, %eax
cmpl %ecx, %eax
je 0x2fa0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
xorl %eax, %eax
cmpl -0xc(%rbp), %eax
jge 0x2fa9
jmp 0x2fc8
leaq 0x9d3b(%rip), %rdi      # 0xcceb
leaq 0x9d3a(%rip), %rsi      # 0xccf1
movl $0xdfb, %edx            # imm = 0xDFB
leaq 0x9d37(%rip), %rcx      # 0xccfa
callq 0x2150
movl $0x1, %eax
cmpl -0xc(%rbp), %eax
jge 0x2fe1
callq 0x2350
cltd
idivl -0xc(%rbp)
addl $0x1, %edx
movl %edx, -0xc(%rbp)
movslq -0x4(%rbp), %rcx
leaq 0xe224(%rip), %rax      # 0x11210
movl (%rax,%rcx,4), %ecx
andl $0x1000000, %ecx        # imm = 0x1000000
xorl %eax, %eax
cmpl %ecx, %eax
je 0x301e
movl -0xc(%rbp), %ecx
addl $-0x1, %ecx
movl %ecx, -0xc(%rbp)
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x301c
movl -0x8(%rbp), %eax
movl $0x9, %ecx
cltd
idivl %ecx
movl %eax, %edi
callq 0x3380
jmp 0x301e
movslq -0x4(%rbp), %rcx
leaq 0xe1e7(%rip), %rax      # 0x11210
movl (%rax,%rcx,4), %ecx
andl $0x2000000, %ecx        # imm = 0x2000000
xorl %eax, %eax
cmpl %ecx, %eax
je 0x305b
movl -0xc(%rbp), %ecx
addl $-0x1, %ecx
movl %ecx, -0xc(%rbp)
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x3059
movl -0x8(%rbp), %eax
movl $0x9, %ecx
cltd
idivl %ecx
movl %edx, %edi
callq 0x3430
jmp 0x305b
movslq -0x4(%rbp), %rcx
leaq 0xe1aa(%rip), %rax      # 0x11210
movl (%rax,%rcx,4), %ecx
andl $0x4000000, %ecx        # imm = 0x4000000
xorl %eax, %eax
cmpl %ecx, %eax
je 0x30b8
movl -0xc(%rbp), %ecx
addl $-0x1, %ecx
movl %ecx, -0xc(%rbp)
xorl %eax, %eax
cmpl %ecx, %eax
jne 0x30b6
movl -0x8(%rbp), %eax
movl $0x9, %ecx
cltd
idivl %ecx
movl $0x3, %ecx
cltd
idivl %ecx
imull $0x3, %eax, %edi
movl -0x8(%rbp), %eax
movl $0x9, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl $0x3, %ecx
cltd
idivl %ecx
addl %eax, %edi
callq 0x34f0
jmp 0x30b8
cmpl $0x0, 0xe2a5(%rip)      # 0x11364
je 0x3122
movslq -0x4(%rbp), %rcx
leaq 0xe144(%rip), %rax      # 0x11210
movl (%rax,%rcx,4), %eax
andl $0xf0000, %eax          # imm = 0xF0000
sarl $0x10, %eax
movl %eax, -0x10(%rbp)
movl -0x8(%rbp), %eax
movl $0x9, %ecx
cltd
idivl %ecx
movl %eax, %ecx
addl $0x1, %ecx
movl -0x8(%rbp), %eax
movl $0x9, %esi
cltd
idivl %esi
movl %edx, %r8d
movl -0x10(%rbp), %edx
addl $0x1, %r8d
leaq 0xe26a(%rip), %rdi      # 0x11370
leaq 0x9c05(%rip), %rsi      # 0xcd12
movb $0x0, %al
callq 0x2300
leaq 0xe255(%rip), %rdi      # 0x11370
callq 0x32f0
jmp 0x3179
movl $0xa, %eax
cmpl 0xe227(%rip), %eax      # 0x11354
jl 0x313f
movl 0xe227(%rip), %eax      # 0x1135c
shll %eax
cmpl 0xe217(%rip), %eax      # 0x11354
jge 0x3177
movslq -0x4(%rbp), %rcx
leaq 0xe0c6(%rip), %rax      # 0x11210
movl (%rax,%rcx,4), %edx
andl $0xf0000, %edx          # imm = 0xF0000
sarl $0x10, %edx
leaq 0xe213(%rip), %rdi      # 0x11370
leaq 0x9bc5(%rip), %rsi      # 0xcd29
movb $0x0, %al
callq 0x2300
leaq 0xe1fe(%rip), %rdi      # 0x11370
callq 0x32f0
jmp 0x3179
jmp 0x317b
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)