// File: /workspace/github_c_makefile_star2_O0/cinemast[P]sudoku/sudoku.c
// Function: el_process_destructive_backspace
static
void
el_process_destructive_backspace (edit_t *   ep)
{
    if (ep->m_0 < ep->ecp) {
        int first_invisible = ep->m_1 + ep->x_mv;
        int is_scroll_from_left = (ep->m_0 < ep->m_1);
        assert(ep->ecn >= ep->ecp);
        --ep->ecn;
        --ep->ecp;
        if (is_scroll_from_left) {
            /* Decrease the left limit, show one more from left. */
            --ep->m_1;
            --first_invisible;
        }
        if (ep->ecp <= ep->ecn && ep->ecn > ep->m_0) {
            /* Remove the deleted character. */

            memmove(&(ep->eb[ep->ecp]),
                    &(ep->eb[ep->ecp + 1]),
                    (ep->ecn - ep->ecp) + 1);

            if (is_scroll_from_left ||
                first_invisible < ep->ecn) {
                /* There is still a hidden part on the right side.
                 * Remove the highlight and show the modified string.
                 */
                if (is_scroll_from_left) {
                    /* scroll from left, redraw the left side */
                    char chk = ep->eb[ep->ecp];
                    ep->eb[ep->ecp] = 0;

                    mvaddstr(ep->efy,
                             ep->x_1,
                             &(ep->eb[ep->m_1]));

                    ep->eb[ep->ecp] = chk;

                    mvaddch(ep->efy,
                            ep->x_1 + ep->ecp - ep->m_1,
                            chk);

                } else {
                    /* Learn the first invisible character and replace
                     * it with a terminating 0.
                     */
                    char chr = ep->eb[first_invisible];
                    ep->eb[first_invisible] = 0;
                    /* Scroll from right, redraw the right side. */
                    mvaddstr(ep->efy,
                            ep->ecp - ep->m_1 + ep->x_1,
                            &(ep->eb[ep->ecp]));
                    /* Restore the hidden character in the buffer. */
                    ep->eb[first_invisible] = chr;
                }
            } else {
                /* The whole string is visible redraw the right side. */
                mvaddstr(ep->efy,
                        ep->ecp - ep->m_1 + ep->x_1,
                        &(ep->eb[ep->ecp]));
            }

            /* Higliht the char in overwrite mode at the current position */
            el_highlight_in_overwrite_mode(ep);
        }

        ep->eb[ep->ecn] = '\0';
        if (ep->ecn <= first_invisible) {
            /* Clear the earlier last character position if it is visible */
            mvaddch(ep->efy,
                    ep->ecn - ep->m_1 + ep->x_1,
                    ' ');
        }
        /* Make sure that the proper markers displayed. */
        el_adjust_markers (ep);
    } else {
        beep();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl 0x3c(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x24(%rcx), %eax
jge 0x9b67
movq -0x8(%rbp), %rax
movl 0x40(%rax), %eax
movq -0x8(%rbp), %rcx
addl 0x38(%rcx), %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl 0x3c(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x40(%rcx), %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x24(%rcx), %eax
jl 0x985c
jmp 0x987b
leaq 0x4515(%rip), %rdi      # 0xdd78
leaq 0x3487(%rip), %rsi      # 0xccf1
movl $0xaca, %edx            # imm = 0xACA
leaq 0x4515(%rip), %rcx      # 0xdd8b
callq 0x2150
movq -0x8(%rbp), %rax
movl 0x20(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x20(%rax)
movq -0x8(%rbp), %rax
movl 0x24(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x24(%rax)
cmpl $0x0, -0x10(%rbp)
je 0x98b1
movq -0x8(%rbp), %rax
movl 0x40(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x40(%rax)
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jg 0x9af7
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x3c(%rcx), %eax
jle 0x9af7
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movslq 0x24(%rax), %rax
addq %rax, %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rsi
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
addl $0x1, %eax
cltq
addq %rax, %rsi
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
movq -0x8(%rbp), %rcx
subl 0x24(%rcx), %eax
addl $0x1, %eax
movslq %eax, %rdx
callq 0x2260
cmpl $0x0, -0x10(%rbp)
jne 0x9930
movl -0xc(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x9a96
cmpl $0x0, -0x10(%rbp)
je 0x9a0b
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x24(%rcx), %rcx
movb (%rax,%rcx), %al
movb %al, -0x11(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x24(%rcx), %rcx
movb $0x0, (%rax,%rcx)
movq 0x766f(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %esi
movq -0x8(%rbp), %rax
movl 0x2c(%rax), %edx
callq 0x22b0
cmpl $-0x1, %eax
jne 0x9986
jmp 0x99ac
movq 0x764b(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rsi
movq -0x8(%rbp), %rax
movslq 0x40(%rax), %rax
addq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x2330
movb -0x11(%rbp), %dl
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x24(%rcx), %rcx
movb %dl, (%rax,%rcx)
movq 0x7610(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %esi
movq -0x8(%rbp), %rax
movl 0x2c(%rax), %edx
movq -0x8(%rbp), %rax
addl 0x24(%rax), %edx
movq -0x8(%rbp), %rax
subl 0x40(%rax), %edx
callq 0x22b0
cmpl $-0x1, %eax
jne 0x99f3
jmp 0x9a06
movq 0x75de(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movsbl -0x11(%rbp), %esi
callq 0x22e0
jmp 0x9a94
movq -0x8(%rbp), %rax
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x12(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq 0x75a6(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %esi
movq -0x8(%rbp), %rax
movl 0x24(%rax), %edx
movq -0x8(%rbp), %rax
subl 0x40(%rax), %edx
movq -0x8(%rbp), %rax
addl 0x2c(%rax), %edx
callq 0x22b0
cmpl $-0x1, %eax
jne 0x9a5d
jmp 0x9a83
movq 0x7574(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rsi
movq -0x8(%rbp), %rax
movslq 0x24(%rax), %rax
addq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x2330
movb -0x12(%rbp), %dl
movq -0x8(%rbp), %rax
movq (%rax), %rax
movslq -0xc(%rbp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x9aee
movq 0x753b(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %esi
movq -0x8(%rbp), %rax
movl 0x24(%rax), %edx
movq -0x8(%rbp), %rax
subl 0x40(%rax), %edx
movq -0x8(%rbp), %rax
addl 0x2c(%rax), %edx
callq 0x22b0
cmpl $-0x1, %eax
jne 0x9ac8
jmp 0x9aee
movq 0x7509(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq (%rax), %rsi
movq -0x8(%rbp), %rax
movslq 0x24(%rax), %rax
addq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x2330
movq -0x8(%rbp), %rdi
callq 0x9e90
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x20(%rcx), %rcx
movb $0x0, (%rax,%rcx)
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
cmpl -0xc(%rbp), %eax
jg 0x9b5c
movq 0x74bb(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %esi
movq -0x8(%rbp), %rax
movl 0x20(%rax), %edx
movq -0x8(%rbp), %rax
subl 0x40(%rax), %edx
movq -0x8(%rbp), %rax
addl 0x2c(%rax), %edx
callq 0x22b0
cmpl $-0x1, %eax
jne 0x9b48
jmp 0x9b5c
movq 0x7489(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movl $0x20, %esi
callq 0x22e0
movq -0x8(%rbp), %rdi
callq 0x9ef0
jmp 0x9b6c
callq 0x20c0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)