// File: /workspace/github_c_makefile_star2_O0/cinemast[P]sudoku/sudoku.c
// Function: pairs
static
void
pairs (int el, int (*idx_fn)(int, int))
{
    int i, j, k, mask, idx;
    for (i = 0; i < 8; ++i) {
        if (7 == digits[i]) { /* 2 digits unknown */
            for (j = i + 1; j < 9; ++j) {
                idx = (*idx_fn)(el, i);
                if (STATE(idx) == STATE((*idx_fn)(el, j))) {
                    /* Found a row/column pair - mask other entries */
                    mask = STATE_MASK ^ (STATE_MASK & board[idx]);
                    for (k = 0; k < i; ++k) {
                        board[(*idx_fn)(el, k)] |= mask;
                    }
                    for (k = i + 1; k < j; ++k) {
                        board[(*idx_fn)(el, k)] |= mask;
                    }
                    for (k = j + 1; k < 9; ++k) {
                        board[(*idx_fn)(el, k)] |= mask;
                    }
                    digits[j] = -1; /* now processed */
                }
            }
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
cmpl $0x8, -0x14(%rbp)
jge 0x2960
movslq -0x14(%rbp), %rdx
movl $0x7, %eax
leaq 0xfe30(%rip), %rcx      # 0x12600
cmpl (%rcx,%rdx,4), %eax
jne 0x2950
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
cmpl $0x9, -0x18(%rbp)
jge 0x294e
movq -0x10(%rbp), %rax
movl -0x4(%rbp), %edi
movl -0x14(%rbp), %esi
callq *%rax
movl %eax, -0x24(%rbp)
movslq -0x24(%rbp), %rcx
leaq 0xfcaa(%rip), %rax      # 0x124b0
movl (%rax,%rcx,4), %eax
andl $0xff80, %eax           # imm = 0xFF80
movl %eax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movl -0x4(%rbp), %edi
movl -0x18(%rbp), %esi
callq *%rax
movl %eax, %ecx
movl -0x28(%rbp), %eax
movslq %ecx, %rdx
leaq 0xfc84(%rip), %rcx      # 0x124b0
movl (%rcx,%rdx,4), %ecx
andl $0xff80, %ecx           # imm = 0xFF80
cmpl %ecx, %eax
jne 0x293e
movslq -0x24(%rbp), %rcx
leaq 0xfc68(%rip), %rax      # 0x124b0
movl (%rax,%rcx,4), %eax
andl $0xff80, %eax           # imm = 0xFF80
xorl $0xff80, %eax           # imm = 0xFF80
movl %eax, -0x20(%rbp)
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x289e
movl -0x20(%rbp), %eax
movl %eax, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movl -0x4(%rbp), %edi
movl -0x1c(%rbp), %esi
callq *%rax
movl -0x2c(%rbp), %edx
movslq %eax, %rcx
leaq 0xfc2a(%rip), %rax      # 0x124b0
orl (%rax,%rcx,4), %edx
leaq 0xfc20(%rip), %rax      # 0x124b0
movl %edx, (%rax,%rcx,4)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x285f
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x18(%rbp), %eax
jge 0x28e6
movl -0x20(%rbp), %eax
movl %eax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movl -0x4(%rbp), %edi
movl -0x1c(%rbp), %esi
callq *%rax
movl -0x30(%rbp), %edx
movslq %eax, %rcx
leaq 0xfbe2(%rip), %rax      # 0x124b0
orl (%rax,%rcx,4), %edx
leaq 0xfbd8(%rip), %rax      # 0x124b0
movl %edx, (%rax,%rcx,4)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x28a7
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
cmpl $0x9, -0x1c(%rbp)
jge 0x292c
movl -0x20(%rbp), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movl -0x4(%rbp), %edi
movl -0x1c(%rbp), %esi
callq *%rax
movl -0x34(%rbp), %edx
movslq %eax, %rcx
leaq 0xfb9c(%rip), %rax      # 0x124b0
orl (%rax,%rcx,4), %edx
leaq 0xfb92(%rip), %rax      # 0x124b0
movl %edx, (%rax,%rcx,4)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x28ef
movslq -0x18(%rbp), %rcx
leaq 0xfcc9(%rip), %rax      # 0x12600
movl $0xffffffff, (%rax,%rcx,4) # imm = 0xFFFFFFFF
jmp 0x2940
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x27e2
jmp 0x2950
jmp 0x2952
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x27b6
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)