// File: /workspace/github_c_makefile_star2_O0/cinemast[P]sudoku/sudoku.c
// Function: el_process_delete_ch_at_current_position
static
void
el_process_delete_ch_at_current_position (edit_t *    ep)
{
    /* check if there is a character to delete at the current position */
    if (ep->m_0 <= ep->ecp && ep->ecp < ep->ecn) {
        /* delete character at the current position */
        --ep->ecn;
        if (ep->ecp < ep->ecn && ep->ecn > ep->m_0) {
            int first_invisible = ep->m_1 + ep->x_mv;
            int is_scroll_from_left = (ep->m_0 < ep->m_1 &&
                                       ep->ecn < first_invisible);
            /* The character is in middle of the string:
             *  remove the character at the cursor from the buffer
             */
            memmove(&(ep->eb[ep->ecp]),
                    &(ep->eb[ep->ecp + 1]),
                    (ep->ecn - ep->ecp) + 1);

            /* partial display of the right side
             * scroll left if it is not the last character,
             * or scroll right if it was the last
             */
            if (is_scroll_from_left) {
                /* Decrease the left limit, show one more from left. */
                --ep->m_1;
                /* redisplay the left side */
                if (ep->x_mv < ep->ecn - ep->m_1) {
                    /* partial display of the right side */
                    char che = ep->eb[ep->ecp];
                    ep->eb[ep->ecp] = 0;
                    mvaddstr(ep->efy, ep->x_1, &(ep->eb[ep->m_1]));
                    ep->eb[ep->ecp] = che;
                    el_show_actual_char(ep);
                } else {
                    mvaddstr(ep->efy, ep->x_1, &(ep->eb[ep->m_1]));
                }
            } else {
                /* redisplay the right side */
                if (ep->x_mv < ep->ecn - ep->m_1) {
                    /* partial display of the right side */
                    int first_invisible = ep->m_1 + ep->x_mv;
                    char che = ep->eb[first_invisible];
                    ep->eb[first_invisible] = 0;

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

                    ep->eb[first_invisible] = che;
                } else {
                    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->x_mv > ep->ecn - ep->m_1) {
            /* clear the deleted last character on the display */
            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
jg 0x95c9
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x95c9
movq -0x8(%rbp), %rax
movl 0x20(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x20(%rax)
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x954c
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x3c(%rcx), %eax
jle 0x954c
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), %ecx
movq -0x8(%rbp), %rdx
xorl %eax, %eax
cmpl 0x40(%rdx), %ecx
movb %al, -0x1a(%rbp)
jge 0x92cf
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
cmpl -0xc(%rbp), %eax
setl %al
movb %al, -0x1a(%rbp)
movb -0x1a(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x10(%rbp)
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)
je 0x9430
movq -0x8(%rbp), %rax
movl 0x40(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x40(%rax)
movq -0x8(%rbp), %rax
movl 0x38(%rax), %eax
movq -0x8(%rbp), %rcx
movl 0x20(%rcx), %ecx
movq -0x8(%rbp), %rdx
subl 0x40(%rdx), %ecx
cmpl %ecx, %eax
jge 0x93e1
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 0x7c5a(%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 0x939b
jmp 0x93c1
movq 0x7c36(%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 -0x8(%rbp), %rdi
callq 0x9d90
jmp 0x942b
movq 0x7bf0(%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 0x9405
jmp 0x942b
movq 0x7bcc(%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
jmp 0x9543
movq -0x8(%rbp), %rax
movl 0x38(%rax), %eax
movq -0x8(%rbp), %rcx
movl 0x20(%rcx), %ecx
movq -0x8(%rbp), %rdx
subl 0x40(%rdx), %ecx
cmpl %ecx, %eax
jge 0x94e9
movq -0x8(%rbp), %rax
movl 0x40(%rax), %eax
movq -0x8(%rbp), %rcx
addl 0x38(%rcx), %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movslq -0x18(%rbp), %rcx
movb (%rax,%rcx), %al
movb %al, -0x19(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movslq -0x18(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq 0x7b53(%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 0x94b0
jmp 0x94d6
movq 0x7b21(%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 -0x19(%rbp), %dl
movq -0x8(%rbp), %rax
movq (%rax), %rax
movslq -0x18(%rbp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x9541
movq 0x7ae8(%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 0x951b
jmp 0x9541
movq 0x7ab6(%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
jmp 0x9543
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 0x38(%rax), %eax
movq -0x8(%rbp), %rcx
movl 0x20(%rcx), %ecx
movq -0x8(%rbp), %rdx
subl 0x40(%rdx), %ecx
cmpl %ecx, %eax
jle 0x95be
movq 0x7a59(%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 0x95aa
jmp 0x95be
movq 0x7a27(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movl $0x20, %esi
callq 0x22e0
movq -0x8(%rbp), %rdi
callq 0x9ef0
jmp 0x95ce
callq 0x20c0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)