// File: /workspace/github_c_makefile_star2_O0/cinemast[P]sudoku/sudoku.c
// Function: edit_line
static
int
edit_line (int      edit_field_y,
           int      edit_field_x,
           char *   edit_buffer,
           size_t   edit_buffer_size,
           size_t   edit_field_size)
{
    edit_t es;

    el_init (&es,
             edit_field_y,
             edit_field_x,
             edit_buffer,
             edit_buffer_size,
             edit_field_size);

    move(es.efy, es.efx);
    wclrtoeol(stdscr);
    /* Display the prompt character. */
    mvaddch(es.efy, es.x_0, es.prompt);

    /* Display the visible part of the pathname. */
    move(es.efy, es.x_1);
    mvaddstr(es.efy, es.x_1, &es.eb[es.m_1]);

    es.ch = VKEY_IGNORE;
    while ('\r' != es.ch && es.ch != '\n') {
        /* Break if Esc pressed
         * Esc should be pressed twice, otherwise we cannot get it.
         */
        if (es.ch == 0x1B) {
            /* Use the zero length to propagate the end condition. */
            es.ecn = 0;
            break;
        }
        if (el_is_silent_ignore_char(&es)) {
            /* Silently ignore these characters. */
        } else if (el_is_loud_ignore_char(&es)) {
            if (el_is_changeable_prompt_char(&es) && 
                el_is_cursor_at_rightmost_position(&es)) {
                /* change the prompt */
                el_process_change_prompt(&es);
            } else {
                /* Loudly ignore these characters. */
                beep();
            }
        } else if (VKEY_INSERT == es.ch) {
            /* toggle insert mode. */
            el_process_toggle_insert_mode(&es);
        } else if (VKEY_DELETE == es.ch) {
            /* delete character at the current position */
            el_process_delete_ch_at_current_position(&es);
        } else if (VKEY_LEFT == es.ch ||
                   VKEY_RIGHT == es.ch) {
            /* nondestructive left or right move */
            el_process_move_cursor_left_or_right(&es);
        } else if (VKEY_BACK == es.ch || 0x7F == es.ch) {
            /* destructive backspace */
            el_process_destructive_backspace(&es);
        } else if (isprint(es.ch)) {
            /* visible character */
            el_process_visible_char(&es);
        } else {
            beep();
        }
        move(es.efy, es.ecp - es.m_1 + es.x_1);
        wrefresh(stdscr);
        es.ch = getkey();
    }
    es.eb[es.ecn] = '\0';
    return es.ecn;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movq %rdx, -0x10(%rbp)
movq %rcx, -0x18(%rbp)
movq %r8, -0x20(%rbp)
movl -0x4(%rbp), %esi
movl -0x8(%rbp), %edx
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %r8
movq -0x20(%rbp), %r9
leaq -0x78(%rbp), %rdi
callq 0x8e80
movq 0x8379(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movl -0x5c(%rbp), %esi
movl -0x60(%rbp), %edx
callq 0x22b0
movq 0x8364(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
callq 0x22c0
movq 0x8355(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movl -0x5c(%rbp), %esi
movl -0x50(%rbp), %edx
callq 0x22b0
cmpl $-0x1, %eax
jne 0x8c98
jmp 0x8caa
movq 0x8339(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movl -0x34(%rbp), %esi
callq 0x22e0
movq 0x8327(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movl -0x5c(%rbp), %esi
movl -0x4c(%rbp), %edx
callq 0x22b0
movq 0x8312(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movl -0x5c(%rbp), %esi
movl -0x4c(%rbp), %edx
callq 0x22b0
cmpl $-0x1, %eax
jne 0x8cdb
jmp 0x8cfa
movq 0x82f6(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movq -0x78(%rbp), %rsi
movslq -0x38(%rbp), %rax
addq %rax, %rsi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x2330
movl $0x100, -0x24(%rbp)     # imm = 0x100
xorl %eax, %eax
movl $0xd, %ecx
cmpl -0x24(%rbp), %ecx
movb %al, -0x79(%rbp)
je 0x8d1a
cmpl $0xa, -0x24(%rbp)
setne %al
movb %al, -0x79(%rbp)
movb -0x79(%rbp), %al
testb $0x1, %al
jne 0x8d26
jmp 0x8e62
cmpl $0x1b, -0x24(%rbp)
jne 0x8d38
movl $0x0, -0x58(%rbp)
jmp 0x8e62
leaq -0x78(%rbp), %rdi
callq 0x9030
cmpl $0x0, %eax
je 0x8d4b
jmp 0x8e2b
leaq -0x78(%rbp), %rdi
callq 0x9080
cmpl $0x0, %eax
je 0x8d8a
leaq -0x78(%rbp), %rdi
callq 0x90d0
cmpl $0x0, %eax
je 0x8d80
leaq -0x78(%rbp), %rdi
callq 0x9140
cmpl $0x0, %eax
je 0x8d80
leaq -0x78(%rbp), %rdi
callq 0x9180
jmp 0x8d85
callq 0x20c0
jmp 0x8e29
movl $0x132, %eax            # imm = 0x132
cmpl -0x24(%rbp), %eax
jne 0x8da2
leaq -0x78(%rbp), %rdi
callq 0x91f0
jmp 0x8e27
movl $0x133, %eax            # imm = 0x133
cmpl -0x24(%rbp), %eax
jne 0x8db7
leaq -0x78(%rbp), %rdi
callq 0x9230
jmp 0x8e25
movl $0x144, %eax            # imm = 0x144
cmpl -0x24(%rbp), %eax
je 0x8dcb
movl $0x143, %eax            # imm = 0x143
cmpl -0x24(%rbp), %eax
jne 0x8dd6
leaq -0x78(%rbp), %rdi
callq 0x95e0
jmp 0x8e23
movl $0x8, %eax
cmpl -0x24(%rbp), %eax
je 0x8dea
movl $0x7f, %eax
cmpl -0x24(%rbp), %eax
jne 0x8df5
leaq -0x78(%rbp), %rdi
callq 0x9800
jmp 0x8e21
callq 0x2360
movq (%rax), %rax
movslq -0x24(%rbp), %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
je 0x8e1a
leaq -0x78(%rbp), %rdi
callq 0x9b80
jmp 0x8e1f
callq 0x20c0
jmp 0x8e21
jmp 0x8e23
jmp 0x8e25
jmp 0x8e27
jmp 0x8e29
jmp 0x8e2b
movq 0x81a6(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
movl -0x5c(%rbp), %esi
movl -0x54(%rbp), %edx
subl -0x38(%rbp), %edx
addl -0x4c(%rbp), %edx
callq 0x22b0
movq 0x818b(%rip), %rax      # 0x10fd8
movq (%rax), %rdi
callq 0x2170
callq 0x8040
movl %eax, -0x24(%rbp)
jmp 0x8d01
movq -0x78(%rbp), %rax
movslq -0x58(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movl -0x58(%rbp), %eax
addq $0x80, %rsp
popq %rbp
retq
nopw (%rax,%rax)