// File: /workspace/github_c_makefile_star2_O0/cinemast[P]sudoku/sudoku.c
// Function: el_process_visible_char
static
void
el_process_visible_char (edit_t *    ep)
{
    if (ep->ecn < (int)ep->ebs - 1) {
        /* There is enough room in the input buffer. */
        if (ep->ecp < ep->ecn) {
            /* In the middle of the text. */
            assert(ep->ecp >= ep->m_1 && ep->m_1 >= ep->m_0);
            el_put_visible_char_in_the_middle (ep);
        } else if (ep->ecp == ep->ecn) {
            /* At the end of the text, insert and overwrite does the same. */
            int first_invisible = ep->m_1 + ep->x_mv;

            if (ep->ecp >= first_invisible) {
                if (ep->ecp == first_invisible) {
                    /* Scroll left. */
                    ++ep->m_1;
                    ep->eb[ep->ecp] = (char)ep->ch;
                    ep->ecn = ++ep->ecp;
                    ep->eb[ep->ecn] = '\0';
                    /* Display it. */
                    mvaddstr(ep->efy,
                             ep->x_1,
                             &(ep->eb[ep->m_1]));
                } else {    
                    /* Attempt to write way beyond the end of the visible area.
                     * This should never happen.
                     */
                    beep();
                }
            } else {
                /* There is enough room on the display. */
                ep->eb[ep->ecp] = (char)ep->ch;
                el_show_actual_char(ep);
                ep->ecn = ++ep->ecp;
                ep->eb[ep->ecn] = '\0';
            }
            /* Make sure that the proper markers displayed. */
            el_adjust_markers (ep);
        } else {
            /* Attempt to write beyond the end of the text.
             * This should never happen.
             */
            beep();
        }
    } else {
        /* The input buffer is full, no more character can be stored.
         * This might happen.
         */
        beep();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movl 0x20(%rax), %eax
movq -0x8(%rbp), %rcx
movq 0x8(%rcx), %rcx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0x9d4b
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jge 0x9c05
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x40(%rcx), %eax
jl 0x9bd8
movq -0x8(%rbp), %rax
movl 0x40(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x3c(%rcx), %eax
jl 0x9bd8
jmp 0x9bf7
leaq 0x41dc(%rip), %rdi      # 0xddbb
leaq 0x310b(%rip), %rsi      # 0xccf1
movl $0xb5a, %edx            # imm = 0xB5A
leaq 0x41f2(%rip), %rcx      # 0xdde4
callq 0x2150
movq -0x8(%rbp), %rdi
callq 0xa0b0
jmp 0x9d49
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x8(%rbp), %rcx
cmpl 0x20(%rcx), %eax
jne 0x9d42
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 0x24(%rax), %eax
cmpl -0xc(%rbp), %eax
jl 0x9cec
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
cmpl -0xc(%rbp), %eax
jne 0x9ce5
movq -0x8(%rbp), %rax
movl 0x40(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x40(%rax)
movq -0x8(%rbp), %rax
movl 0x54(%rax), %eax
movb %al, %dl
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x24(%rcx), %rcx
movb %dl, (%rax,%rcx)
movq -0x8(%rbp), %rax
movl 0x24(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x24(%rax)
movq -0x8(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x20(%rcx), %rcx
movb $0x0, (%rax,%rcx)
movq 0x7338(%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 0x9cbd
jmp 0x9ce3
movq 0x7314(%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 0x9cea
callq 0x20c0
jmp 0x9d37
movq -0x8(%rbp), %rax
movl 0x54(%rax), %eax
movb %al, %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
movq -0x8(%rbp), %rax
movl 0x24(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x24(%rax)
movq -0x8(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rbp), %rcx
movslq 0x20(%rcx), %rcx
movb $0x0, (%rax,%rcx)
movq -0x8(%rbp), %rdi
callq 0x9ef0
jmp 0x9d47
callq 0x20c0
jmp 0x9d49
jmp 0x9d50
callq 0x20c0
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)