#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
struct t_gui_buffer {
  int dummy;
};

/* Variables and functions */
int /*<<< orphan*/ gui_input_clipboard_paste(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_complete_next(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_complete_previous(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_delete_beginning_of_line(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_delete_end_of_line(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_delete_line(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_delete_next_char(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_delete_next_word(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_delete_previous_char(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_delete_previous_word(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_grab_key(struct t_gui_buffer *, int, char *);
int /*<<< orphan*/ gui_input_grab_mouse(struct t_gui_buffer *, int);
int /*<<< orphan*/ gui_input_history_global_next(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_history_global_previous(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_history_local_next(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_history_local_previous(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_hotlist_clear(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_insert(struct t_gui_buffer *, char *);
int /*<<< orphan*/ gui_input_jump_last_buffer(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_jump_last_buffer_displayed(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_jump_next_visited_buffer(struct t_gui_buffer *);
int /*<<< orphan*/
gui_input_jump_previously_visited_buffer(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_jump_smart(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_move_beginning_of_line(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_move_end_of_line(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_move_next_char(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_move_next_word(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_move_previous_char(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_move_previous_word(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_redo(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_return(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_search_next(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_search_previous(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_search_stop(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_search_switch_case(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_search_switch_regex(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_search_switch_where(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_search_text(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_set_unread();
int /*<<< orphan*/ gui_input_set_unread_current(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_switch_active_buffer(struct t_gui_buffer *);
int /*<<< orphan*/
gui_input_switch_active_buffer_previous(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_transpose_chars(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_undo(struct t_gui_buffer *);
int /*<<< orphan*/ gui_input_zoom_merged_buffer(struct t_gui_buffer *);
scalar_t__ string_strcasecmp(char *, char *);
int command_input(void *data, struct t_gui_buffer *buffer, int argc,
                  char **argv, char **argv_eol) {
  (void)data;
  if (argc < 2)
    return -1;
  if (string_strcasecmp(argv[1], "clipboard_paste") == 0)
    gui_input_clipboard_paste(buffer);
  else if (string_strcasecmp(argv[1], "return") == 0)
    gui_input_return(buffer);
  else if (string_strcasecmp(argv[1], "complete_next") == 0)
    gui_input_complete_next(buffer);
  else if (string_strcasecmp(argv[1], "complete_previous") == 0)
    gui_input_complete_previous(buffer);
  else if (string_strcasecmp(argv[1], "search_text") == 0)
    gui_input_search_text(buffer);
  else if (string_strcasecmp(argv[1], "search_previous") == 0)
    gui_input_search_previous(buffer);
  else if (string_strcasecmp(argv[1], "search_next") == 0)
    gui_input_search_next(buffer);
  else if (string_strcasecmp(argv[1], "search_switch_case") == 0)
    gui_input_search_switch_case(buffer);
  else if (string_strcasecmp(argv[1], "search_switch_regex") == 0)
    gui_input_search_switch_regex(buffer);
  else if (string_strcasecmp(argv[1], "search_switch_where") == 0)
    gui_input_search_switch_where(buffer);
  else if (string_strcasecmp(argv[1], "search_stop") == 0)
    gui_input_search_stop(buffer);
  else if (string_strcasecmp(argv[1], "delete_previous_char") == 0)
    gui_input_delete_previous_char(buffer);
  else if (string_strcasecmp(argv[1], "delete_next_char") == 0)
    gui_input_delete_next_char(buffer);
  else if (string_strcasecmp(argv[1], "delete_previous_word") == 0)
    gui_input_delete_previous_word(buffer);
  else if (string_strcasecmp(argv[1], "delete_next_word") == 0)
    gui_input_delete_next_word(buffer);
  else if (string_strcasecmp(argv[1], "delete_beginning_of_line") == 0)
    gui_input_delete_beginning_of_line(buffer);
  else if (string_strcasecmp(argv[1], "delete_end_of_line") == 0)
    gui_input_delete_end_of_line(buffer);
  else if (string_strcasecmp(argv[1], "delete_line") == 0)
    gui_input_delete_line(buffer);
  else if (string_strcasecmp(argv[1], "transpose_chars") == 0)
    gui_input_transpose_chars(buffer);
  else if (string_strcasecmp(argv[1], "move_beginning_of_line") == 0)
    gui_input_move_beginning_of_line(buffer);
  else if (string_strcasecmp(argv[1], "move_end_of_line") == 0)
    gui_input_move_end_of_line(buffer);
  else if (string_strcasecmp(argv[1], "move_previous_char") == 0)
    gui_input_move_previous_char(buffer);
  else if (string_strcasecmp(argv[1], "move_next_char") == 0)
    gui_input_move_next_char(buffer);
  else if (string_strcasecmp(argv[1], "move_previous_word") == 0)
    gui_input_move_previous_word(buffer);
  else if (string_strcasecmp(argv[1], "move_next_word") == 0)
    gui_input_move_next_word(buffer);
  else if (string_strcasecmp(argv[1], "history_previous") == 0)
    gui_input_history_local_previous(buffer);
  else if (string_strcasecmp(argv[1], "history_next") == 0)
    gui_input_history_local_next(buffer);
  else if (string_strcasecmp(argv[1], "history_global_previous") == 0)
    gui_input_history_global_previous(buffer);
  else if (string_strcasecmp(argv[1], "history_global_next") == 0)
    gui_input_history_global_next(buffer);
  else if (string_strcasecmp(argv[1], "jump_smart") == 0)
    gui_input_jump_smart(buffer);
  else if (string_strcasecmp(argv[1], "jump_last_buffer") == 0)
    gui_input_jump_last_buffer(buffer);
  else if (string_strcasecmp(argv[1], "jump_last_buffer_displayed") == 0)
    gui_input_jump_last_buffer_displayed(buffer);
  else if (string_strcasecmp(argv[1], "jump_previously_visited_buffer") == 0)
    gui_input_jump_previously_visited_buffer(buffer);
  else if (string_strcasecmp(argv[1], "jump_next_visited_buffer") == 0)
    gui_input_jump_next_visited_buffer(buffer);
  else if (string_strcasecmp(argv[1], "hotlist_clear") == 0)
    gui_input_hotlist_clear(buffer);
  else if (string_strcasecmp(argv[1], "grab_key") == 0)
    gui_input_grab_key(buffer, 0, (argc > 2) ? argv[2] : NULL);
  else if (string_strcasecmp(argv[1], "grab_key_command") == 0)
    gui_input_grab_key(buffer, 1, (argc > 2) ? argv[2] : NULL);
  else if (string_strcasecmp(argv[1], "grab_mouse") == 0)
    gui_input_grab_mouse(buffer, 0);
  else if (string_strcasecmp(argv[1], "grab_mouse_area") == 0)
    gui_input_grab_mouse(buffer, 1);
  else if (string_strcasecmp(argv[1], "set_unread") == 0)
    gui_input_set_unread();
  else if (string_strcasecmp(argv[1], "set_unread_current_buffer") == 0)
    gui_input_set_unread_current(buffer);
  else if (string_strcasecmp(argv[1], "switch_active_buffer") == 0)
    gui_input_switch_active_buffer(buffer);
  else if (string_strcasecmp(argv[1], "zoom_merged_buffer") == 0)
    gui_input_zoom_merged_buffer(buffer);
  else if (string_strcasecmp(argv[1], "switch_active_buffer_previous") == 0)
    gui_input_switch_active_buffer_previous(buffer);
  else if (string_strcasecmp(argv[1], "insert") == 0) {
    if (argc > 2)
      gui_input_insert(buffer, argv_eol[2]);
  } else if (string_strcasecmp(argv[1], "undo") == 0)
    gui_input_undo(buffer);
  else if (string_strcasecmp(argv[1], "redo") == 0)
    gui_input_redo(buffer);
  else if (string_strcasecmp(argv[1], "paste_start") == 0) {
  } else if (string_strcasecmp(argv[1], "paste_stop") == 0) {
  } else
    return -1;
  return 0;
}


x86 assembly (clang, -O0):
<command_input>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
cmpl   $0x2,-0x1c(%rbp)
jge    2411 <command_input+0x31>
movl   $0xffffffff,-0x4(%rbp)
jmp    2df0 <command_input+0xa10>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xbe0(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    243d <command_input+0x5d>
mov    -0x18(%rbp),%rdi
call   2100 <gui_input_clipboard_paste@plt>
jmp    2de9 <command_input+0xa09>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xbc4(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2469 <command_input+0x89>
mov    -0x18(%rbp),%rdi
call   20b0 <gui_input_return@plt>
jmp    2de4 <command_input+0xa04>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb9f(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2495 <command_input+0xb5>
mov    -0x18(%rbp),%rdi
call   21a0 <gui_input_complete_next@plt>
jmp    2ddf <command_input+0x9ff>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb81(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    24c1 <command_input+0xe1>
mov    -0x18(%rbp),%rdi
call   2120 <gui_input_complete_previous@plt>
jmp    2dda <command_input+0x9fa>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb67(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    24ed <command_input+0x10d>
mov    -0x18(%rbp),%rdi
call   20f0 <gui_input_search_text@plt>
jmp    2dd5 <command_input+0x9f5>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb47(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2519 <command_input+0x139>
mov    -0x18(%rbp),%rdi
call   2270 <gui_input_search_previous@plt>
jmp    2dd0 <command_input+0x9f0>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb2b(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2545 <command_input+0x165>
mov    -0x18(%rbp),%rdi
call   21c0 <gui_input_search_next@plt>
jmp    2dcb <command_input+0x9eb>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb0b(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2571 <command_input+0x191>
mov    -0x18(%rbp),%rdi
call   2290 <gui_input_search_switch_case@plt>
jmp    2dc6 <command_input+0x9e6>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xaf2(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    259d <command_input+0x1bd>
mov    -0x18(%rbp),%rdi
call   2030 <gui_input_search_switch_regex@plt>
jmp    2dc1 <command_input+0x9e1>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xada(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    25c9 <command_input+0x1e9>
mov    -0x18(%rbp),%rdi
call   2190 <gui_input_search_switch_where@plt>
jmp    2dbc <command_input+0x9dc>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xac2(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    25f5 <command_input+0x215>
mov    -0x18(%rbp),%rdi
call   21d0 <gui_input_search_stop@plt>
jmp    2db7 <command_input+0x9d7>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xaa2(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2621 <command_input+0x241>
mov    -0x18(%rbp),%rdi
call   22f0 <gui_input_delete_previous_char@plt>
jmp    2db2 <command_input+0x9d2>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa8b(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    264d <command_input+0x26d>
mov    -0x18(%rbp),%rdi
call   20d0 <gui_input_delete_next_char@plt>
jmp    2dad <command_input+0x9cd>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa70(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2679 <command_input+0x299>
mov    -0x18(%rbp),%rdi
call   2060 <gui_input_delete_previous_word@plt>
jmp    2da8 <command_input+0x9c8>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa59(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    26a5 <command_input+0x2c5>
mov    -0x18(%rbp),%rdi
call   2170 <gui_input_delete_next_word@plt>
jmp    2da3 <command_input+0x9c3>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa3e(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    26d1 <command_input+0x2f1>
mov    -0x18(%rbp),%rdi
call   22a0 <gui_input_delete_beginning_of_line@plt>
jmp    2d9e <command_input+0x9be>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa2b(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    26fd <command_input+0x31d>
mov    -0x18(%rbp),%rdi
call   2080 <gui_input_delete_end_of_line@plt>
jmp    2d99 <command_input+0x9b9>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa12(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2729 <command_input+0x349>
mov    -0x18(%rbp),%rdi
call   2220 <gui_input_delete_line@plt>
jmp    2d94 <command_input+0x9b4>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x9f2(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2755 <command_input+0x375>
mov    -0x18(%rbp),%rdi
call   2130 <gui_input_transpose_chars@plt>
jmp    2d8f <command_input+0x9af>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x9d6(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2781 <command_input+0x3a1>
mov    -0x18(%rbp),%rdi
call   2260 <gui_input_move_beginning_of_line@plt>
jmp    2d8a <command_input+0x9aa>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x9c1(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    27ad <command_input+0x3cd>
mov    -0x18(%rbp),%rdi
call   2210 <gui_input_move_end_of_line@plt>
jmp    2d85 <command_input+0x9a5>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x9a6(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    27d9 <command_input+0x3f9>
mov    -0x18(%rbp),%rdi
call   2160 <gui_input_move_previous_char@plt>
jmp    2d80 <command_input+0x9a0>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x98d(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2805 <command_input+0x425>
mov    -0x18(%rbp),%rdi
call   2150 <gui_input_move_next_char@plt>
jmp    2d7b <command_input+0x99b>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x970(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2831 <command_input+0x451>
mov    -0x18(%rbp),%rdi
call   2090 <gui_input_move_previous_word@plt>
jmp    2d76 <command_input+0x996>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x957(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    285d <command_input+0x47d>
mov    -0x18(%rbp),%rdi
call   20c0 <gui_input_move_next_word@plt>
jmp    2d71 <command_input+0x991>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x93a(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2889 <command_input+0x4a9>
mov    -0x18(%rbp),%rdi
call   2180 <gui_input_history_local_previous@plt>
jmp    2d6c <command_input+0x98c>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x91f(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    28b5 <command_input+0x4d5>
mov    -0x18(%rbp),%rdi
call   2230 <gui_input_history_local_next@plt>
jmp    2d67 <command_input+0x987>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x900(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    28e1 <command_input+0x501>
mov    -0x18(%rbp),%rdi
call   20a0 <gui_input_history_global_previous@plt>
jmp    2d62 <command_input+0x982>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x8ec(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    290d <command_input+0x52d>
mov    -0x18(%rbp),%rdi
call   2240 <gui_input_history_global_next@plt>
jmp    2d5d <command_input+0x97d>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x8d4(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2939 <command_input+0x559>
mov    -0x18(%rbp),%rdi
call   2070 <gui_input_jump_smart@plt>
jmp    2d58 <command_input+0x978>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x8b3(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2965 <command_input+0x585>
mov    -0x18(%rbp),%rdi
call   20e0 <gui_input_jump_last_buffer@plt>
jmp    2d53 <command_input+0x973>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x898(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2991 <command_input+0x5b1>
mov    -0x18(%rbp),%rdi
call   2110 <gui_input_jump_last_buffer_displayed@plt>
jmp    2d4e <command_input+0x96e>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x887(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    29bd <command_input+0x5dd>
mov    -0x18(%rbp),%rdi
call   2300 <gui_input_jump_previously_visited_buffer@plt>
jmp    2d49 <command_input+0x969>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x87a(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    29e9 <command_input+0x609>
mov    -0x18(%rbp),%rdi
call   2280 <gui_input_jump_next_visited_buffer@plt>
jmp    2d44 <command_input+0x964>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x867(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2a15 <command_input+0x635>
mov    -0x18(%rbp),%rdi
call   22c0 <gui_input_hotlist_clear@plt>
jmp    2d3f <command_input+0x95f>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x849(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2a75 <command_input+0x695>
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
cmpl   $0x2,-0x1c(%rbp)
jle    2a56 <command_input+0x676>
mov    -0x28(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x40(%rbp)
jmp    2a61 <command_input+0x681>
xor    %eax,%eax
mov    %rax,-0x40(%rbp)
jmp    2a61 <command_input+0x681>
mov    -0x38(%rbp),%rdi
mov    -0x40(%rbp),%rdx
xor    %esi,%esi
call   21e0 <gui_input_grab_key@plt>
jmp    2d3a <command_input+0x95a>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x7f2(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2ad8 <command_input+0x6f8>
mov    -0x18(%rbp),%rax
mov    %rax,-0x48(%rbp)
cmpl   $0x2,-0x1c(%rbp)
jle    2ab6 <command_input+0x6d6>
mov    -0x28(%rbp),%rax
mov    0x10(%rax),%rax
mov    %rax,-0x50(%rbp)
jmp    2ac1 <command_input+0x6e1>
xor    %eax,%eax
mov    %rax,-0x50(%rbp)
jmp    2ac1 <command_input+0x6e1>
mov    -0x48(%rbp),%rdi
mov    -0x50(%rbp),%rdx
mov    $0x1,%esi
call   21e0 <gui_input_grab_key@plt>
jmp    2d35 <command_input+0x955>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x7a0(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2b06 <command_input+0x726>
mov    -0x18(%rbp),%rdi
xor    %esi,%esi
call   2140 <gui_input_grab_mouse@plt>
jmp    2d30 <command_input+0x950>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x77d(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2b37 <command_input+0x757>
mov    -0x18(%rbp),%rdi
mov    $0x1,%esi
call   2140 <gui_input_grab_mouse@plt>
jmp    2d2b <command_input+0x94b>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x75c(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2b61 <command_input+0x781>
mov    $0x0,%al
call   21b0 <gui_input_set_unread@plt>
jmp    2d26 <command_input+0x946>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x73d(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2b8d <command_input+0x7ad>
mov    -0x18(%rbp),%rdi
call   2040 <gui_input_set_unread_current@plt>
jmp    2d21 <command_input+0x941>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x72b(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2bb9 <command_input+0x7d9>
mov    -0x18(%rbp),%rdi
call   2200 <gui_input_switch_active_buffer@plt>
jmp    2d1c <command_input+0x93c>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x714(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2be5 <command_input+0x805>
mov    -0x18(%rbp),%rdi
call   2250 <gui_input_zoom_merged_buffer@plt>
jmp    2d17 <command_input+0x937>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x6fb(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2c11 <command_input+0x831>
mov    -0x18(%rbp),%rdi
call   22d0 <gui_input_switch_active_buffer_previous@plt>
jmp    2d12 <command_input+0x932>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x6ed(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2c4f <command_input+0x86f>
cmpl   $0x2,-0x1c(%rbp)
jle    2c4a <command_input+0x86a>
mov    -0x18(%rbp),%rdi
mov    -0x30(%rbp),%rax
mov    0x10(%rax),%rsi
call   22e0 <gui_input_insert@plt>
jmp    2d0d <command_input+0x92d>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x6b6(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2c7b <command_input+0x89b>
mov    -0x18(%rbp),%rdi
call   2050 <gui_input_undo@plt>
jmp    2d08 <command_input+0x928>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x68f(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2ca7 <command_input+0x8c7>
mov    -0x18(%rbp),%rdi
call   22b0 <gui_input_redo@plt>
jmp    2d03 <command_input+0x923>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x668(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2cca <command_input+0x8ea>
jmp    2cfe <command_input+0x91e>
mov    -0x28(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x651(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    2ced <command_input+0x90d>
jmp    2cf9 <command_input+0x919>
movl   $0xffffffff,-0x4(%rbp)
jmp    2df0 <command_input+0xa10>
jmp    2cfe <command_input+0x91e>
jmp    2d03 <command_input+0x923>
jmp    2d08 <command_input+0x928>
jmp    2d0d <command_input+0x92d>
jmp    2d12 <command_input+0x932>
jmp    2d17 <command_input+0x937>
jmp    2d1c <command_input+0x93c>
jmp    2d21 <command_input+0x941>
jmp    2d26 <command_input+0x946>
jmp    2d2b <command_input+0x94b>
jmp    2d30 <command_input+0x950>
jmp    2d35 <command_input+0x955>
jmp    2d3a <command_input+0x95a>
jmp    2d3f <command_input+0x95f>
jmp    2d44 <command_input+0x964>
jmp    2d49 <command_input+0x969>
jmp    2d4e <command_input+0x96e>
jmp    2d53 <command_input+0x973>
jmp    2d58 <command_input+0x978>
jmp    2d5d <command_input+0x97d>
jmp    2d62 <command_input+0x982>
jmp    2d67 <command_input+0x987>
jmp    2d6c <command_input+0x98c>
jmp    2d71 <command_input+0x991>
jmp    2d76 <command_input+0x996>
jmp    2d7b <command_input+0x99b>
jmp    2d80 <command_input+0x9a0>
jmp    2d85 <command_input+0x9a5>
jmp    2d8a <command_input+0x9aa>
jmp    2d8f <command_input+0x9af>
jmp    2d94 <command_input+0x9b4>
jmp    2d99 <command_input+0x9b9>
jmp    2d9e <command_input+0x9be>
jmp    2da3 <command_input+0x9c3>
jmp    2da8 <command_input+0x9c8>
jmp    2dad <command_input+0x9cd>
jmp    2db2 <command_input+0x9d2>
jmp    2db7 <command_input+0x9d7>
jmp    2dbc <command_input+0x9dc>
jmp    2dc1 <command_input+0x9e1>
jmp    2dc6 <command_input+0x9e6>
jmp    2dcb <command_input+0x9eb>
jmp    2dd0 <command_input+0x9f0>
jmp    2dd5 <command_input+0x9f5>
jmp    2dda <command_input+0x9fa>
jmp    2ddf <command_input+0x9ff>
jmp    2de4 <command_input+0xa04>
jmp    2de9 <command_input+0xa09>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<command_input>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    $0xffffffff,%ebp
cmp    $0x2,%edx
jl     2b4c <command_input+0x76c>
mov    %r8,%r14
mov    %rcx,%rbx
mov    %edx,%r12d
mov    %rsi,%r15
mov    0x8(%rcx),%rdi
lea    0xbf0(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     28d7 <command_input+0x4f7>
lea    0x8(%rbx),%r13
mov    0x0(%r13),%rdi
lea    0xbe3(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     28e4 <command_input+0x504>
mov    0x0(%r13),%rdi
lea    0xbd1(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     28f1 <command_input+0x511>
mov    0x0(%r13),%rdi
lea    0xbc6(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     28fe <command_input+0x51e>
mov    0x0(%r13),%rdi
lea    0xbbf(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     290b <command_input+0x52b>
mov    0x0(%r13),%rdi
lea    0xbb2(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2918 <command_input+0x538>
mov    0x0(%r13),%rdi
lea    0xba9(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2925 <command_input+0x545>
mov    0x0(%r13),%rdi
lea    0xb9c(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2932 <command_input+0x552>
mov    0x0(%r13),%rdi
lea    0xb96(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     293f <command_input+0x55f>
mov    0x0(%r13),%rdi
lea    0xb91(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     294c <command_input+0x56c>
mov    0x0(%r13),%rdi
lea    0xb8c(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2959 <command_input+0x579>
mov    0x0(%r13),%rdi
lea    0xb7f(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2966 <command_input+0x586>
mov    0x0(%r13),%rdi
lea    0xb7b(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2973 <command_input+0x593>
mov    0x0(%r13),%rdi
lea    0xb73(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2980 <command_input+0x5a0>
mov    0x0(%r13),%rdi
lea    0xb6f(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     298d <command_input+0x5ad>
mov    0x0(%r13),%rdi
lea    0xb67(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     299a <command_input+0x5ba>
mov    0x0(%r13),%rdi
lea    0xb67(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     29a7 <command_input+0x5c7>
mov    0x0(%r13),%rdi
lea    0xb61(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     29b4 <command_input+0x5d4>
mov    0x0(%r13),%rdi
lea    0xb54(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     29c1 <command_input+0x5e1>
mov    0x0(%r13),%rdi
lea    0xb4b(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     29ce <command_input+0x5ee>
mov    0x0(%r13),%rdi
lea    0xb49(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     29db <command_input+0x5fb>
mov    0x0(%r13),%rdi
lea    0xb41(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     29e8 <command_input+0x608>
mov    0x0(%r13),%rdi
lea    0xb3b(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     29f5 <command_input+0x615>
mov    0x0(%r13),%rdi
lea    0xb31(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a02 <command_input+0x622>
mov    0x0(%r13),%rdi
lea    0xb2b(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a0f <command_input+0x62f>
mov    0x0(%r13),%rdi
lea    0xb21(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a1c <command_input+0x63c>
mov    0x0(%r13),%rdi
lea    0xb19(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a29 <command_input+0x649>
mov    0x0(%r13),%rdi
lea    0xb0d(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a36 <command_input+0x656>
mov    0x0(%r13),%rdi
lea    0xb0c(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a43 <command_input+0x663>
mov    0x0(%r13),%rdi
lea    0xb07(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a50 <command_input+0x670>
mov    0x0(%r13),%rdi
lea    0xaf9(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a5d <command_input+0x67d>
mov    0x0(%r13),%rdi
lea    0xaf1(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a6a <command_input+0x68a>
mov    0x0(%r13),%rdi
lea    0xaf3(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a77 <command_input+0x697>
mov    0x0(%r13),%rdi
lea    0xaf9(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a84 <command_input+0x6a4>
mov    0x0(%r13),%rdi
lea    0xaf9(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a91 <command_input+0x6b1>
mov    0x0(%r13),%rdi
lea    0xaee(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2a9e <command_input+0x6be>
mov    0x0(%r13),%rdi
lea    0xade(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2aaa <command_input+0x6ca>
mov    0x0(%r13),%rdi
lea    0xad6(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2ac7 <command_input+0x6e7>
mov    0x0(%r13),%rdi
lea    0xac8(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2ae4 <command_input+0x704>
mov    0x0(%r13),%rdi
lea    0xabf(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2af3 <command_input+0x713>
mov    0x0(%r13),%rdi
lea    0xab1(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2afc <command_input+0x71c>
mov    0x0(%r13),%rdi
lea    0xab2(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2b06 <command_input+0x726>
mov    0x0(%r13),%rdi
lea    0xaae(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2b10 <command_input+0x730>
mov    0x0(%r13),%rdi
lea    0xaa8(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2b1a <command_input+0x73a>
mov    0x0(%r13),%rdi
lea    0xaad(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2b24 <command_input+0x744>
mov    0x0(%r13),%rdi
lea    0xa9b(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2b38 <command_input+0x758>
mov    0x0(%r13),%rdi
lea    0xa87(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2b42 <command_input+0x762>
mov    0x0(%r13),%rdi
lea    0xa73(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
je     2b4a <command_input+0x76a>
mov    0x0(%r13),%rdi
lea    0xa66(%rip),%rsi
call   21f0 <string_strcasecmp@plt>
test   %rax,%rax
jne    2b4c <command_input+0x76c>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2100 <gui_input_clipboard_paste@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   20b0 <gui_input_return@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   21a0 <gui_input_complete_next@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2120 <gui_input_complete_previous@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   20f0 <gui_input_search_text@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2270 <gui_input_search_previous@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   21c0 <gui_input_search_next@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2290 <gui_input_search_switch_case@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2030 <gui_input_search_switch_regex@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2190 <gui_input_search_switch_where@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   21d0 <gui_input_search_stop@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   22f0 <gui_input_delete_previous_char@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   20d0 <gui_input_delete_next_char@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2060 <gui_input_delete_previous_word@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2170 <gui_input_delete_next_word@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   22a0 <gui_input_delete_beginning_of_line@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2080 <gui_input_delete_end_of_line@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2220 <gui_input_delete_line@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2130 <gui_input_transpose_chars@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2260 <gui_input_move_beginning_of_line@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2210 <gui_input_move_end_of_line@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2160 <gui_input_move_previous_char@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2150 <gui_input_move_next_char@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2090 <gui_input_move_previous_word@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   20c0 <gui_input_move_next_word@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2180 <gui_input_history_local_previous@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2230 <gui_input_history_local_next@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   20a0 <gui_input_history_global_previous@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2240 <gui_input_history_global_next@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2070 <gui_input_jump_smart@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   20e0 <gui_input_jump_last_buffer@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2110 <gui_input_jump_last_buffer_displayed@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2300 <gui_input_jump_previously_visited_buffer@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2280 <gui_input_jump_next_visited_buffer@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   22c0 <gui_input_hotlist_clear@plt>
jmp    2b4a <command_input+0x76a>
cmp    $0x3,%r12d
jb     2ab6 <command_input+0x6d6>
mov    0x10(%rbx),%rdx
jmp    2ab8 <command_input+0x6d8>
cmp    $0x3,%r12d
jb     2ad3 <command_input+0x6f3>
mov    0x10(%rbx),%rdx
jmp    2ad5 <command_input+0x6f5>
xor    %edx,%edx
mov    %r15,%rdi
xor    %esi,%esi
call   21e0 <gui_input_grab_key@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
xor    %esi,%esi
call   2140 <gui_input_grab_mouse@plt>
jmp    2b4a <command_input+0x76a>
xor    %edx,%edx
mov    %r15,%rdi
mov    $0x1,%esi
call   21e0 <gui_input_grab_key@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
mov    $0x1,%esi
call   2140 <gui_input_grab_mouse@plt>
jmp    2b4a <command_input+0x76a>
xor    %eax,%eax
call   21b0 <gui_input_set_unread@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2040 <gui_input_set_unread_current@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2200 <gui_input_switch_active_buffer@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2250 <gui_input_zoom_merged_buffer@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   22d0 <gui_input_switch_active_buffer_previous@plt>
jmp    2b4a <command_input+0x76a>
cmp    $0x3,%r12d
jb     2b4a <command_input+0x76a>
mov    0x10(%r14),%rsi
mov    %r15,%rdi
call   22e0 <gui_input_insert@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   2050 <gui_input_undo@plt>
jmp    2b4a <command_input+0x76a>
mov    %r15,%rdi
call   22b0 <gui_input_redo@plt>
xor    %ebp,%ebp
mov    %ebp,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
%struct.t_gui_buffer = type { i32 }
@.str = [16 x i8] c"clipboard_paste\00"
@.str.1 = [7 x i8] c"return\00"
@.str.2 = [14 x i8] c"complete_next\00"
@.str.3 = [18 x i8] c"complete_previous\00"
@.str.4 = [12 x i8] c"search_text\00"
@.str.5 = [16 x i8] c"search_previous\00"
@.str.6 = [12 x i8] c"search_next\00"
@.str.7 = [19 x i8] c"search_switch_case\00"
@.str.8 = [20 x i8] c"search_switch_regex\00"
@.str.9 = [20 x i8] c"search_switch_where\00"
@.str.10 = [12 x i8] c"search_stop\00"
@.str.11 = [21 x i8] c"delete_previous_char\00"
@.str.12 = [17 x i8] c"delete_next_char\00"
@.str.13 = [21 x i8] c"delete_previous_word\00"
@.str.14 = [17 x i8] c"delete_next_word\00"
@.str.15 = [25 x i8] c"delete_beginning_of_line\00"
@.str.16 = [19 x i8] c"delete_end_of_line\00"
@.str.17 = [12 x i8] c"delete_line\00"
@.str.18 = [16 x i8] c"transpose_chars\00"
@.str.19 = [23 x i8] c"move_beginning_of_line\00"
@.str.20 = [17 x i8] c"move_end_of_line\00"
@.str.21 = [19 x i8] c"move_previous_char\00"
@.str.22 = [15 x i8] c"move_next_char\00"
@.str.23 = [19 x i8] c"move_previous_word\00"
@.str.24 = [15 x i8] c"move_next_word\00"
@.str.25 = [17 x i8] c"history_previous\00"
@.str.26 = [13 x i8] c"history_next\00"
@.str.27 = [24 x i8] c"history_global_previous\00"
@.str.28 = [20 x i8] c"history_global_next\00"
@.str.29 = [11 x i8] c"jump_smart\00"
@.str.30 = [17 x i8] c"jump_last_buffer\00"
@.str.31 = [27 x i8] c"jump_last_buffer_displayed\00"
@.str.32 = [31 x i8] c"jump_previously_visited_buffer\00"
@.str.33 = [25 x i8] c"jump_next_visited_buffer\00"
@.str.34 = [14 x i8] c"hotlist_clear\00"
@.str.35 = [9 x i8] c"grab_key\00"
@.str.36 = [17 x i8] c"grab_key_command\00"
@.str.37 = [11 x i8] c"grab_mouse\00"
@.str.38 = [16 x i8] c"grab_mouse_area\00"
@.str.39 = [11 x i8] c"set_unread\00"
@.str.40 = [26 x i8] c"set_unread_current_buffer\00"
@.str.41 = [21 x i8] c"switch_active_buffer\00"
@.str.42 = [19 x i8] c"zoom_merged_buffer\00"
@.str.43 = [30 x i8] c"switch_active_buffer_previous\00"
@.str.44 = [7 x i8] c"insert\00"
@.str.45 = [5 x i8] c"undo\00"
@.str.46 = [5 x i8] c"redo\00"
@.str.47 = [12 x i8] c"paste_start\00"
@.str.48 = [11 x i8] c"paste_stop\00"
define i32 @command_input(i8* %0, %struct.t_gui_buffer* %1, i32 %2, i8** %3, i8** %4) {
%6 = alloca i32
%7 = alloca i8*
%8 = alloca %struct.t_gui_buffer*
%9 = alloca i32
%10 = alloca i8**
%11 = alloca i8**
store i8* %0, i8** %7
store %struct.t_gui_buffer* %1, %struct.t_gui_buffer** %8
store i32 %2, i32* %9
store i8** %3, i8*** %10
store i8** %4, i8*** %11
%12 = load i8*, i8** %7
%13 = load i32, i32* %9
%14 = icmp slt i32 %13, 2
br i1 %14, label %15, label %16
15: ; preds = %5
store i32 -1, i32* %6
br label %527
16: ; preds = %5
%17 = load i8**, i8*** %10
%18 = getelementptr inbounds i8*, i8** %17, i64 1
%19 = load i8*, i8** %18
%20 = call i64 @string_strcasecmp(i8* %19, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0))
%21 = icmp eq i64 %20, 0
br i1 %21, label %22, label %25
22: ; preds = %16
%23 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%24 = call i32 @gui_input_clipboard_paste(%struct.t_gui_buffer* %23)
br label %526
25: ; preds = %16
%26 = load i8**, i8*** %10
%27 = getelementptr inbounds i8*, i8** %26, i64 1
%28 = load i8*, i8** %27
%29 = call i64 @string_strcasecmp(i8* %28, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0))
%30 = icmp eq i64 %29, 0
br i1 %30, label %31, label %34
31: ; preds = %25
%32 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%33 = call i32 @gui_input_return(%struct.t_gui_buffer* %32)
br label %525
34: ; preds = %25
%35 = load i8**, i8*** %10
%36 = getelementptr inbounds i8*, i8** %35, i64 1
%37 = load i8*, i8** %36
%38 = call i64 @string_strcasecmp(i8* %37, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0))
%39 = icmp eq i64 %38, 0
br i1 %39, label %40, label %43
40: ; preds = %34
%41 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%42 = call i32 @gui_input_complete_next(%struct.t_gui_buffer* %41)
br label %524
43: ; preds = %34
%44 = load i8**, i8*** %10
%45 = getelementptr inbounds i8*, i8** %44, i64 1
%46 = load i8*, i8** %45
%47 = call i64 @string_strcasecmp(i8* %46, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0))
%48 = icmp eq i64 %47, 0
br i1 %48, label %49, label %52
49: ; preds = %43
%50 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%51 = call i32 @gui_input_complete_previous(%struct.t_gui_buffer* %50)
br label %523
52: ; preds = %43
%53 = load i8**, i8*** %10
%54 = getelementptr inbounds i8*, i8** %53, i64 1
%55 = load i8*, i8** %54
%56 = call i64 @string_strcasecmp(i8* %55, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.4, i64 0, i64 0))
%57 = icmp eq i64 %56, 0
br i1 %57, label %58, label %61
58: ; preds = %52
%59 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%60 = call i32 @gui_input_search_text(%struct.t_gui_buffer* %59)
br label %522
61: ; preds = %52
%62 = load i8**, i8*** %10
%63 = getelementptr inbounds i8*, i8** %62, i64 1
%64 = load i8*, i8** %63
%65 = call i64 @string_strcasecmp(i8* %64, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.5, i64 0, i64 0))
%66 = icmp eq i64 %65, 0
br i1 %66, label %67, label %70
67: ; preds = %61
%68 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%69 = call i32 @gui_input_search_previous(%struct.t_gui_buffer* %68)
br label %521
70: ; preds = %61
%71 = load i8**, i8*** %10
%72 = getelementptr inbounds i8*, i8** %71, i64 1
%73 = load i8*, i8** %72
%74 = call i64 @string_strcasecmp(i8* %73, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.6, i64 0, i64 0))
%75 = icmp eq i64 %74, 0
br i1 %75, label %76, label %79
76: ; preds = %70
%77 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%78 = call i32 @gui_input_search_next(%struct.t_gui_buffer* %77)
br label %520
79: ; preds = %70
%80 = load i8**, i8*** %10
%81 = getelementptr inbounds i8*, i8** %80, i64 1
%82 = load i8*, i8** %81
%83 = call i64 @string_strcasecmp(i8* %82, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.7, i64 0, i64 0))
%84 = icmp eq i64 %83, 0
br i1 %84, label %85, label %88
85: ; preds = %79
%86 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%87 = call i32 @gui_input_search_switch_case(%struct.t_gui_buffer* %86)
br label %519
88: ; preds = %79
%89 = load i8**, i8*** %10
%90 = getelementptr inbounds i8*, i8** %89, i64 1
%91 = load i8*, i8** %90
%92 = call i64 @string_strcasecmp(i8* %91, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.8, i64 0, i64 0))
%93 = icmp eq i64 %92, 0
br i1 %93, label %94, label %97
94: ; preds = %88
%95 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%96 = call i32 @gui_input_search_switch_regex(%struct.t_gui_buffer* %95)
br label %518
97: ; preds = %88
%98 = load i8**, i8*** %10
%99 = getelementptr inbounds i8*, i8** %98, i64 1
%100 = load i8*, i8** %99
%101 = call i64 @string_strcasecmp(i8* %100, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.9, i64 0, i64 0))
%102 = icmp eq i64 %101, 0
br i1 %102, label %103, label %106
103: ; preds = %97
%104 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%105 = call i32 @gui_input_search_switch_where(%struct.t_gui_buffer* %104)
br label %517
106: ; preds = %97
%107 = load i8**, i8*** %10
%108 = getelementptr inbounds i8*, i8** %107, i64 1
%109 = load i8*, i8** %108
%110 = call i64 @string_strcasecmp(i8* %109, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0))
%111 = icmp eq i64 %110, 0
br i1 %111, label %112, label %115
112: ; preds = %106
%113 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%114 = call i32 @gui_input_search_stop(%struct.t_gui_buffer* %113)
br label %516
115: ; preds = %106
%116 = load i8**, i8*** %10
%117 = getelementptr inbounds i8*, i8** %116, i64 1
%118 = load i8*, i8** %117
%119 = call i64 @string_strcasecmp(i8* %118, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.11, i64 0, i64 0))
%120 = icmp eq i64 %119, 0
br i1 %120, label %121, label %124
121: ; preds = %115
%122 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%123 = call i32 @gui_input_delete_previous_char(%struct.t_gui_buffer* %122)
br label %515
124: ; preds = %115
%125 = load i8**, i8*** %10
%126 = getelementptr inbounds i8*, i8** %125, i64 1
%127 = load i8*, i8** %126
%128 = call i64 @string_strcasecmp(i8* %127, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.12, i64 0, i64 0))
%129 = icmp eq i64 %128, 0
br i1 %129, label %130, label %133
130: ; preds = %124
%131 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%132 = call i32 @gui_input_delete_next_char(%struct.t_gui_buffer* %131)
br label %514
133: ; preds = %124
%134 = load i8**, i8*** %10
%135 = getelementptr inbounds i8*, i8** %134, i64 1
%136 = load i8*, i8** %135
%137 = call i64 @string_strcasecmp(i8* %136, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.13, i64 0, i64 0))
%138 = icmp eq i64 %137, 0
br i1 %138, label %139, label %142
139: ; preds = %133
%140 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%141 = call i32 @gui_input_delete_previous_word(%struct.t_gui_buffer* %140)
br label %513
142: ; preds = %133
%143 = load i8**, i8*** %10
%144 = getelementptr inbounds i8*, i8** %143, i64 1
%145 = load i8*, i8** %144
%146 = call i64 @string_strcasecmp(i8* %145, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.14, i64 0, i64 0))
%147 = icmp eq i64 %146, 0
br i1 %147, label %148, label %151
148: ; preds = %142
%149 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%150 = call i32 @gui_input_delete_next_word(%struct.t_gui_buffer* %149)
br label %512
151: ; preds = %142
%152 = load i8**, i8*** %10
%153 = getelementptr inbounds i8*, i8** %152, i64 1
%154 = load i8*, i8** %153
%155 = call i64 @string_strcasecmp(i8* %154, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.15, i64 0, i64 0))
%156 = icmp eq i64 %155, 0
br i1 %156, label %157, label %160
157: ; preds = %151
%158 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%159 = call i32 @gui_input_delete_beginning_of_line(%struct.t_gui_buffer* %158)
br label %511
160: ; preds = %151
%161 = load i8**, i8*** %10
%162 = getelementptr inbounds i8*, i8** %161, i64 1
%163 = load i8*, i8** %162
%164 = call i64 @string_strcasecmp(i8* %163, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.16, i64 0, i64 0))
%165 = icmp eq i64 %164, 0
br i1 %165, label %166, label %169
166: ; preds = %160
%167 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%168 = call i32 @gui_input_delete_end_of_line(%struct.t_gui_buffer* %167)
br label %510
169: ; preds = %160
%170 = load i8**, i8*** %10
%171 = getelementptr inbounds i8*, i8** %170, i64 1
%172 = load i8*, i8** %171
%173 = call i64 @string_strcasecmp(i8* %172, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.17, i64 0, i64 0))
%174 = icmp eq i64 %173, 0
br i1 %174, label %175, label %178
175: ; preds = %169
%176 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%177 = call i32 @gui_input_delete_line(%struct.t_gui_buffer* %176)
br label %509
178: ; preds = %169
%179 = load i8**, i8*** %10
%180 = getelementptr inbounds i8*, i8** %179, i64 1
%181 = load i8*, i8** %180
%182 = call i64 @string_strcasecmp(i8* %181, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.18, i64 0, i64 0))
%183 = icmp eq i64 %182, 0
br i1 %183, label %184, label %187
184: ; preds = %178
%185 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%186 = call i32 @gui_input_transpose_chars(%struct.t_gui_buffer* %185)
br label %508
187: ; preds = %178
%188 = load i8**, i8*** %10
%189 = getelementptr inbounds i8*, i8** %188, i64 1
%190 = load i8*, i8** %189
%191 = call i64 @string_strcasecmp(i8* %190, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.19, i64 0, i64 0))
%192 = icmp eq i64 %191, 0
br i1 %192, label %193, label %196
193: ; preds = %187
%194 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%195 = call i32 @gui_input_move_beginning_of_line(%struct.t_gui_buffer* %194)
br label %507
196: ; preds = %187
%197 = load i8**, i8*** %10
%198 = getelementptr inbounds i8*, i8** %197, i64 1
%199 = load i8*, i8** %198
%200 = call i64 @string_strcasecmp(i8* %199, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.20, i64 0, i64 0))
%201 = icmp eq i64 %200, 0
br i1 %201, label %202, label %205
202: ; preds = %196
%203 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%204 = call i32 @gui_input_move_end_of_line(%struct.t_gui_buffer* %203)
br label %506
205: ; preds = %196
%206 = load i8**, i8*** %10
%207 = getelementptr inbounds i8*, i8** %206, i64 1
%208 = load i8*, i8** %207
%209 = call i64 @string_strcasecmp(i8* %208, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.21, i64 0, i64 0))
%210 = icmp eq i64 %209, 0
br i1 %210, label %211, label %214
211: ; preds = %205
%212 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%213 = call i32 @gui_input_move_previous_char(%struct.t_gui_buffer* %212)
br label %505
214: ; preds = %205
%215 = load i8**, i8*** %10
%216 = getelementptr inbounds i8*, i8** %215, i64 1
%217 = load i8*, i8** %216
%218 = call i64 @string_strcasecmp(i8* %217, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.22, i64 0, i64 0))
%219 = icmp eq i64 %218, 0
br i1 %219, label %220, label %223
220: ; preds = %214
%221 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%222 = call i32 @gui_input_move_next_char(%struct.t_gui_buffer* %221)
br label %504
223: ; preds = %214
%224 = load i8**, i8*** %10
%225 = getelementptr inbounds i8*, i8** %224, i64 1
%226 = load i8*, i8** %225
%227 = call i64 @string_strcasecmp(i8* %226, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.23, i64 0, i64 0))
%228 = icmp eq i64 %227, 0
br i1 %228, label %229, label %232
229: ; preds = %223
%230 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%231 = call i32 @gui_input_move_previous_word(%struct.t_gui_buffer* %230)
br label %503
232: ; preds = %223
%233 = load i8**, i8*** %10
%234 = getelementptr inbounds i8*, i8** %233, i64 1
%235 = load i8*, i8** %234
%236 = call i64 @string_strcasecmp(i8* %235, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.24, i64 0, i64 0))
%237 = icmp eq i64 %236, 0
br i1 %237, label %238, label %241
238: ; preds = %232
%239 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%240 = call i32 @gui_input_move_next_word(%struct.t_gui_buffer* %239)
br label %502
241: ; preds = %232
%242 = load i8**, i8*** %10
%243 = getelementptr inbounds i8*, i8** %242, i64 1
%244 = load i8*, i8** %243
%245 = call i64 @string_strcasecmp(i8* %244, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.25, i64 0, i64 0))
%246 = icmp eq i64 %245, 0
br i1 %246, label %247, label %250
247: ; preds = %241
%248 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%249 = call i32 @gui_input_history_local_previous(%struct.t_gui_buffer* %248)
br label %501
250: ; preds = %241
%251 = load i8**, i8*** %10
%252 = getelementptr inbounds i8*, i8** %251, i64 1
%253 = load i8*, i8** %252
%254 = call i64 @string_strcasecmp(i8* %253, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0))
%255 = icmp eq i64 %254, 0
br i1 %255, label %256, label %259
256: ; preds = %250
%257 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%258 = call i32 @gui_input_history_local_next(%struct.t_gui_buffer* %257)
br label %500
259: ; preds = %250
%260 = load i8**, i8*** %10
%261 = getelementptr inbounds i8*, i8** %260, i64 1
%262 = load i8*, i8** %261
%263 = call i64 @string_strcasecmp(i8* %262, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.27, i64 0, i64 0))
%264 = icmp eq i64 %263, 0
br i1 %264, label %265, label %268
265: ; preds = %259
%266 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%267 = call i32 @gui_input_history_global_previous(%struct.t_gui_buffer* %266)
br label %499
268: ; preds = %259
%269 = load i8**, i8*** %10
%270 = getelementptr inbounds i8*, i8** %269, i64 1
%271 = load i8*, i8** %270
%272 = call i64 @string_strcasecmp(i8* %271, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.28, i64 0, i64 0))
%273 = icmp eq i64 %272, 0
br i1 %273, label %274, label %277
274: ; preds = %268
%275 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%276 = call i32 @gui_input_history_global_next(%struct.t_gui_buffer* %275)
br label %498
277: ; preds = %268
%278 = load i8**, i8*** %10
%279 = getelementptr inbounds i8*, i8** %278, i64 1
%280 = load i8*, i8** %279
%281 = call i64 @string_strcasecmp(i8* %280, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.29, i64 0, i64 0))
%282 = icmp eq i64 %281, 0
br i1 %282, label %283, label %286
283: ; preds = %277
%284 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%285 = call i32 @gui_input_jump_smart(%struct.t_gui_buffer* %284)
br label %497
286: ; preds = %277
%287 = load i8**, i8*** %10
%288 = getelementptr inbounds i8*, i8** %287, i64 1
%289 = load i8*, i8** %288
%290 = call i64 @string_strcasecmp(i8* %289, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.30, i64 0, i64 0))
%291 = icmp eq i64 %290, 0
br i1 %291, label %292, label %295
292: ; preds = %286
%293 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%294 = call i32 @gui_input_jump_last_buffer(%struct.t_gui_buffer* %293)
br label %496
295: ; preds = %286
%296 = load i8**, i8*** %10
%297 = getelementptr inbounds i8*, i8** %296, i64 1
%298 = load i8*, i8** %297
%299 = call i64 @string_strcasecmp(i8* %298, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.31, i64 0, i64 0))
%300 = icmp eq i64 %299, 0
br i1 %300, label %301, label %304
301: ; preds = %295
%302 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%303 = call i32 @gui_input_jump_last_buffer_displayed(%struct.t_gui_buffer* %302)
br label %495
304: ; preds = %295
%305 = load i8**, i8*** %10
%306 = getelementptr inbounds i8*, i8** %305, i64 1
%307 = load i8*, i8** %306
%308 = call i64 @string_strcasecmp(i8* %307, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.32, i64 0, i64 0))
%309 = icmp eq i64 %308, 0
br i1 %309, label %310, label %313
310: ; preds = %304
%311 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%312 = call i32 @gui_input_jump_previously_visited_buffer(%struct.t_gui_buffer* %311)
br label %494
313: ; preds = %304
%314 = load i8**, i8*** %10
%315 = getelementptr inbounds i8*, i8** %314, i64 1
%316 = load i8*, i8** %315
%317 = call i64 @string_strcasecmp(i8* %316, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.33, i64 0, i64 0))
%318 = icmp eq i64 %317, 0
br i1 %318, label %319, label %322
319: ; preds = %313
%320 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%321 = call i32 @gui_input_jump_next_visited_buffer(%struct.t_gui_buffer* %320)
br label %493
322: ; preds = %313
%323 = load i8**, i8*** %10
%324 = getelementptr inbounds i8*, i8** %323, i64 1
%325 = load i8*, i8** %324
%326 = call i64 @string_strcasecmp(i8* %325, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.34, i64 0, i64 0))
%327 = icmp eq i64 %326, 0
br i1 %327, label %328, label %331
328: ; preds = %322
%329 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%330 = call i32 @gui_input_hotlist_clear(%struct.t_gui_buffer* %329)
br label %492
331: ; preds = %322
%332 = load i8**, i8*** %10
%333 = getelementptr inbounds i8*, i8** %332, i64 1
%334 = load i8*, i8** %333
%335 = call i64 @string_strcasecmp(i8* %334, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.35, i64 0, i64 0))
%336 = icmp eq i64 %335, 0
br i1 %336, label %337, label %349
337: ; preds = %331
%338 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%339 = load i32, i32* %9
%340 = icmp sgt i32 %339, 2
br i1 %340, label %341, label %345
341: ; preds = %337
%342 = load i8**, i8*** %10
%343 = getelementptr inbounds i8*, i8** %342, i64 2
%344 = load i8*, i8** %343
br label %346
345: ; preds = %337
br label %346
346: ; preds = %345, %341
%347 = phi i8* [ %344, %341 ], [ null, %345 ]
%348 = call i32 @gui_input_grab_key(%struct.t_gui_buffer* %338, i32 0, i8* %347)
br label %491
349: ; preds = %331
%350 = load i8**, i8*** %10
%351 = getelementptr inbounds i8*, i8** %350, i64 1
%352 = load i8*, i8** %351
%353 = call i64 @string_strcasecmp(i8* %352, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.36, i64 0, i64 0))
%354 = icmp eq i64 %353, 0
br i1 %354, label %355, label %367
355: ; preds = %349
%356 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%357 = load i32, i32* %9
%358 = icmp sgt i32 %357, 2
br i1 %358, label %359, label %363
359: ; preds = %355
%360 = load i8**, i8*** %10
%361 = getelementptr inbounds i8*, i8** %360, i64 2
%362 = load i8*, i8** %361
br label %364
363: ; preds = %355
br label %364
364: ; preds = %363, %359
%365 = phi i8* [ %362, %359 ], [ null, %363 ]
%366 = call i32 @gui_input_grab_key(%struct.t_gui_buffer* %356, i32 1, i8* %365)
br label %490
367: ; preds = %349
%368 = load i8**, i8*** %10
%369 = getelementptr inbounds i8*, i8** %368, i64 1
%370 = load i8*, i8** %369
%371 = call i64 @string_strcasecmp(i8* %370, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.37, i64 0, i64 0))
%372 = icmp eq i64 %371, 0
br i1 %372, label %373, label %376
373: ; preds = %367
%374 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%375 = call i32 @gui_input_grab_mouse(%struct.t_gui_buffer* %374, i32 0)
br label %489
376: ; preds = %367
%377 = load i8**, i8*** %10
%378 = getelementptr inbounds i8*, i8** %377, i64 1
%379 = load i8*, i8** %378
%380 = call i64 @string_strcasecmp(i8* %379, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.38, i64 0, i64 0))
%381 = icmp eq i64 %380, 0
br i1 %381, label %382, label %385
382: ; preds = %376
%383 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%384 = call i32 @gui_input_grab_mouse(%struct.t_gui_buffer* %383, i32 1)
br label %488
385: ; preds = %376
%386 = load i8**, i8*** %10
%387 = getelementptr inbounds i8*, i8** %386, i64 1
%388 = load i8*, i8** %387
%389 = call i64 @string_strcasecmp(i8* %388, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.39, i64 0, i64 0))
%390 = icmp eq i64 %389, 0
br i1 %390, label %391, label %393
391: ; preds = %385
%392 = call i32 (...) @gui_input_set_unread()
br label %487
393: ; preds = %385
%394 = load i8**, i8*** %10
%395 = getelementptr inbounds i8*, i8** %394, i64 1
%396 = load i8*, i8** %395
%397 = call i64 @string_strcasecmp(i8* %396, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.40, i64 0, i64 0))
%398 = icmp eq i64 %397, 0
br i1 %398, label %399, label %402
399: ; preds = %393
%400 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%401 = call i32 @gui_input_set_unread_current(%struct.t_gui_buffer* %400)
br label %486
402: ; preds = %393
%403 = load i8**, i8*** %10
%404 = getelementptr inbounds i8*, i8** %403, i64 1
%405 = load i8*, i8** %404
%406 = call i64 @string_strcasecmp(i8* %405, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.41, i64 0, i64 0))
%407 = icmp eq i64 %406, 0
br i1 %407, label %408, label %411
408: ; preds = %402
%409 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%410 = call i32 @gui_input_switch_active_buffer(%struct.t_gui_buffer* %409)
br label %485
411: ; preds = %402
%412 = load i8**, i8*** %10
%413 = getelementptr inbounds i8*, i8** %412, i64 1
%414 = load i8*, i8** %413
%415 = call i64 @string_strcasecmp(i8* %414, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.42, i64 0, i64 0))
%416 = icmp eq i64 %415, 0
br i1 %416, label %417, label %420
417: ; preds = %411
%418 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%419 = call i32 @gui_input_zoom_merged_buffer(%struct.t_gui_buffer* %418)
br label %484
420: ; preds = %411
%421 = load i8**, i8*** %10
%422 = getelementptr inbounds i8*, i8** %421, i64 1
%423 = load i8*, i8** %422
%424 = call i64 @string_strcasecmp(i8* %423, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.43, i64 0, i64 0))
%425 = icmp eq i64 %424, 0
br i1 %425, label %426, label %429
426: ; preds = %420
%427 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%428 = call i32 @gui_input_switch_active_buffer_previous(%struct.t_gui_buffer* %427)
br label %483
429: ; preds = %420
%430 = load i8**, i8*** %10
%431 = getelementptr inbounds i8*, i8** %430, i64 1
%432 = load i8*, i8** %431
%433 = call i64 @string_strcasecmp(i8* %432, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.44, i64 0, i64 0))
%434 = icmp eq i64 %433, 0
br i1 %434, label %435, label %445
435: ; preds = %429
%436 = load i32, i32* %9
%437 = icmp sgt i32 %436, 2
br i1 %437, label %438, label %444
438: ; preds = %435
%439 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%440 = load i8**, i8*** %11
%441 = getelementptr inbounds i8*, i8** %440, i64 2
%442 = load i8*, i8** %441
%443 = call i32 @gui_input_insert(%struct.t_gui_buffer* %439, i8* %442)
br label %444
444: ; preds = %438, %435
br label %482
445: ; preds = %429
%446 = load i8**, i8*** %10
%447 = getelementptr inbounds i8*, i8** %446, i64 1
%448 = load i8*, i8** %447
%449 = call i64 @string_strcasecmp(i8* %448, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.45, i64 0, i64 0))
%450 = icmp eq i64 %449, 0
br i1 %450, label %451, label %454
451: ; preds = %445
%452 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%453 = call i32 @gui_input_undo(%struct.t_gui_buffer* %452)
br label %481
454: ; preds = %445
%455 = load i8**, i8*** %10
%456 = getelementptr inbounds i8*, i8** %455, i64 1
%457 = load i8*, i8** %456
%458 = call i64 @string_strcasecmp(i8* %457, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.46, i64 0, i64 0))
%459 = icmp eq i64 %458, 0
br i1 %459, label %460, label %463
460: ; preds = %454
%461 = load %struct.t_gui_buffer*, %struct.t_gui_buffer** %8
%462 = call i32 @gui_input_redo(%struct.t_gui_buffer* %461)
br label %480
463: ; preds = %454
%464 = load i8**, i8*** %10
%465 = getelementptr inbounds i8*, i8** %464, i64 1
%466 = load i8*, i8** %465
%467 = call i64 @string_strcasecmp(i8* %466, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.47, i64 0, i64 0))
%468 = icmp eq i64 %467, 0
br i1 %468, label %469, label %470
469: ; preds = %463
br label %479
470: ; preds = %463
%471 = load i8**, i8*** %10
%472 = getelementptr inbounds i8*, i8** %471, i64 1
%473 = load i8*, i8** %472
%474 = call i64 @string_strcasecmp(i8* %473, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.48, i64 0, i64 0))
%475 = icmp eq i64 %474, 0
br i1 %475, label %476, label %477
476: ; preds = %470
br label %478
477: ; preds = %470
store i32 -1, i32* %6
br label %527
478: ; preds = %476
br label %479
479: ; preds = %478, %469
br label %480
480: ; preds = %479, %460
br label %481
481: ; preds = %480, %451
br label %482
482: ; preds = %481, %444
br label %483
483: ; preds = %482, %426
br label %484
484: ; preds = %483, %417
br label %485
485: ; preds = %484, %408
br label %486
486: ; preds = %485, %399
br label %487
487: ; preds = %486, %391
br label %488
488: ; preds = %487, %382
br label %489
489: ; preds = %488, %373
br label %490
490: ; preds = %489, %364
br label %491
491: ; preds = %490, %346
br label %492
492: ; preds = %491, %328
br label %493
493: ; preds = %492, %319
br label %494
494: ; preds = %493, %310
br label %495
495: ; preds = %494, %301
br label %496
496: ; preds = %495, %292
br label %497
497: ; preds = %496, %283
br label %498
498: ; preds = %497, %274
br label %499
499: ; preds = %498, %265
br label %500
500: ; preds = %499, %256
br label %501
501: ; preds = %500, %247
br label %502
502: ; preds = %501, %238
br label %503
503: ; preds = %502, %229
br label %504
504: ; preds = %503, %220
br label %505
505: ; preds = %504, %211
br label %506
506: ; preds = %505, %202
br label %507
507: ; preds = %506, %193
br label %508
508: ; preds = %507, %184
br label %509
509: ; preds = %508, %175
br label %510
510: ; preds = %509, %166
br label %511
511: ; preds = %510, %157
br label %512
512: ; preds = %511, %148
br label %513
513: ; preds = %512, %139
br label %514
514: ; preds = %513, %130
br label %515
515: ; preds = %514, %121
br label %516
516: ; preds = %515, %112
br label %517
517: ; preds = %516, %103
br label %518
518: ; preds = %517, %94
br label %519
519: ; preds = %518, %85
br label %520
520: ; preds = %519, %76
br label %521
521: ; preds = %520, %67
br label %522
522: ; preds = %521, %58
br label %523
523: ; preds = %522, %49
br label %524
524: ; preds = %523, %40
br label %525
525: ; preds = %524, %31
br label %526
526: ; preds = %525, %22
store i32 0, i32* %6
br label %527
527: ; preds = %526, %477, %15
%528 = load i32, i32* %6
ret i32 %528
}

LLVM IR (-O2):
%struct.t_gui_buffer = type { i32 }
@.str = [16 x i8] c"clipboard_paste\00"
@.str.1 = [7 x i8] c"return\00"
@.str.2 = [14 x i8] c"complete_next\00"
@.str.3 = [18 x i8] c"complete_previous\00"
@.str.4 = [12 x i8] c"search_text\00"
@.str.5 = [16 x i8] c"search_previous\00"
@.str.6 = [12 x i8] c"search_next\00"
@.str.7 = [19 x i8] c"search_switch_case\00"
@.str.8 = [20 x i8] c"search_switch_regex\00"
@.str.9 = [20 x i8] c"search_switch_where\00"
@.str.10 = [12 x i8] c"search_stop\00"
@.str.11 = [21 x i8] c"delete_previous_char\00"
@.str.12 = [17 x i8] c"delete_next_char\00"
@.str.13 = [21 x i8] c"delete_previous_word\00"
@.str.14 = [17 x i8] c"delete_next_word\00"
@.str.15 = [25 x i8] c"delete_beginning_of_line\00"
@.str.16 = [19 x i8] c"delete_end_of_line\00"
@.str.17 = [12 x i8] c"delete_line\00"
@.str.18 = [16 x i8] c"transpose_chars\00"
@.str.19 = [23 x i8] c"move_beginning_of_line\00"
@.str.20 = [17 x i8] c"move_end_of_line\00"
@.str.21 = [19 x i8] c"move_previous_char\00"
@.str.22 = [15 x i8] c"move_next_char\00"
@.str.23 = [19 x i8] c"move_previous_word\00"
@.str.24 = [15 x i8] c"move_next_word\00"
@.str.25 = [17 x i8] c"history_previous\00"
@.str.26 = [13 x i8] c"history_next\00"
@.str.27 = [24 x i8] c"history_global_previous\00"
@.str.28 = [20 x i8] c"history_global_next\00"
@.str.29 = [11 x i8] c"jump_smart\00"
@.str.30 = [17 x i8] c"jump_last_buffer\00"
@.str.31 = [27 x i8] c"jump_last_buffer_displayed\00"
@.str.32 = [31 x i8] c"jump_previously_visited_buffer\00"
@.str.33 = [25 x i8] c"jump_next_visited_buffer\00"
@.str.34 = [14 x i8] c"hotlist_clear\00"
@.str.35 = [9 x i8] c"grab_key\00"
@.str.36 = [17 x i8] c"grab_key_command\00"
@.str.37 = [11 x i8] c"grab_mouse\00"
@.str.38 = [16 x i8] c"grab_mouse_area\00"
@.str.39 = [11 x i8] c"set_unread\00"
@.str.40 = [26 x i8] c"set_unread_current_buffer\00"
@.str.41 = [21 x i8] c"switch_active_buffer\00"
@.str.42 = [19 x i8] c"zoom_merged_buffer\00"
@.str.43 = [30 x i8] c"switch_active_buffer_previous\00"
@.str.44 = [7 x i8] c"insert\00"
@.str.45 = [5 x i8] c"undo\00"
@.str.46 = [5 x i8] c"redo\00"
@.str.47 = [12 x i8] c"paste_start\00"
@.str.48 = [11 x i8] c"paste_stop\00"
define i32 @command_input(i8* nocapture readnone %0, %struct.t_gui_buffer* %1, i32 %2, i8** %3, i8** nocapture %4) {
%6 = icmp slt i32 %2, 2
br i1 %6, label %315, label %7
7: ; preds = %5
%8 = getelementptr inbounds i8*, i8** %3, i64 1
%9 = load i8*, i8** %8
%10 = tail call i64 @string_strcasecmp(i8* %9, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0))
%11 = icmp eq i64 %10, 0
br i1 %11, label %12, label %14
12: ; preds = %7
%13 = tail call i32 @gui_input_clipboard_paste(%struct.t_gui_buffer* %1)
br label %314
14: ; preds = %7
%15 = load i8*, i8** %8
%16 = tail call i64 @string_strcasecmp(i8* %15, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i64 0, i64 0))
%17 = icmp eq i64 %16, 0
br i1 %17, label %18, label %20
18: ; preds = %14
%19 = tail call i32 @gui_input_return(%struct.t_gui_buffer* %1)
br label %314
20: ; preds = %14
%21 = load i8*, i8** %8
%22 = tail call i64 @string_strcasecmp(i8* %21, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.2, i64 0, i64 0))
%23 = icmp eq i64 %22, 0
br i1 %23, label %24, label %26
24: ; preds = %20
%25 = tail call i32 @gui_input_complete_next(%struct.t_gui_buffer* %1)
br label %314
26: ; preds = %20
%27 = load i8*, i8** %8
%28 = tail call i64 @string_strcasecmp(i8* %27, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.3, i64 0, i64 0))
%29 = icmp eq i64 %28, 0
br i1 %29, label %30, label %32
30: ; preds = %26
%31 = tail call i32 @gui_input_complete_previous(%struct.t_gui_buffer* %1)
br label %314
32: ; preds = %26
%33 = load i8*, i8** %8
%34 = tail call i64 @string_strcasecmp(i8* %33, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.4, i64 0, i64 0))
%35 = icmp eq i64 %34, 0
br i1 %35, label %36, label %38
36: ; preds = %32
%37 = tail call i32 @gui_input_search_text(%struct.t_gui_buffer* %1)
br label %314
38: ; preds = %32
%39 = load i8*, i8** %8
%40 = tail call i64 @string_strcasecmp(i8* %39, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.5, i64 0, i64 0))
%41 = icmp eq i64 %40, 0
br i1 %41, label %42, label %44
42: ; preds = %38
%43 = tail call i32 @gui_input_search_previous(%struct.t_gui_buffer* %1)
br label %314
44: ; preds = %38
%45 = load i8*, i8** %8
%46 = tail call i64 @string_strcasecmp(i8* %45, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.6, i64 0, i64 0))
%47 = icmp eq i64 %46, 0
br i1 %47, label %48, label %50
48: ; preds = %44
%49 = tail call i32 @gui_input_search_next(%struct.t_gui_buffer* %1)
br label %314
50: ; preds = %44
%51 = load i8*, i8** %8
%52 = tail call i64 @string_strcasecmp(i8* %51, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.7, i64 0, i64 0))
%53 = icmp eq i64 %52, 0
br i1 %53, label %54, label %56
54: ; preds = %50
%55 = tail call i32 @gui_input_search_switch_case(%struct.t_gui_buffer* %1)
br label %314
56: ; preds = %50
%57 = load i8*, i8** %8
%58 = tail call i64 @string_strcasecmp(i8* %57, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.8, i64 0, i64 0))
%59 = icmp eq i64 %58, 0
br i1 %59, label %60, label %62
60: ; preds = %56
%61 = tail call i32 @gui_input_search_switch_regex(%struct.t_gui_buffer* %1)
br label %314
62: ; preds = %56
%63 = load i8*, i8** %8
%64 = tail call i64 @string_strcasecmp(i8* %63, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.9, i64 0, i64 0))
%65 = icmp eq i64 %64, 0
br i1 %65, label %66, label %68
66: ; preds = %62
%67 = tail call i32 @gui_input_search_switch_where(%struct.t_gui_buffer* %1)
br label %314
68: ; preds = %62
%69 = load i8*, i8** %8
%70 = tail call i64 @string_strcasecmp(i8* %69, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.10, i64 0, i64 0))
%71 = icmp eq i64 %70, 0
br i1 %71, label %72, label %74
72: ; preds = %68
%73 = tail call i32 @gui_input_search_stop(%struct.t_gui_buffer* %1)
br label %314
74: ; preds = %68
%75 = load i8*, i8** %8
%76 = tail call i64 @string_strcasecmp(i8* %75, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.11, i64 0, i64 0))
%77 = icmp eq i64 %76, 0
br i1 %77, label %78, label %80
78: ; preds = %74
%79 = tail call i32 @gui_input_delete_previous_char(%struct.t_gui_buffer* %1)
br label %314
80: ; preds = %74
%81 = load i8*, i8** %8
%82 = tail call i64 @string_strcasecmp(i8* %81, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.12, i64 0, i64 0))
%83 = icmp eq i64 %82, 0
br i1 %83, label %84, label %86
84: ; preds = %80
%85 = tail call i32 @gui_input_delete_next_char(%struct.t_gui_buffer* %1)
br label %314
86: ; preds = %80
%87 = load i8*, i8** %8
%88 = tail call i64 @string_strcasecmp(i8* %87, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.13, i64 0, i64 0))
%89 = icmp eq i64 %88, 0
br i1 %89, label %90, label %92
90: ; preds = %86
%91 = tail call i32 @gui_input_delete_previous_word(%struct.t_gui_buffer* %1)
br label %314
92: ; preds = %86
%93 = load i8*, i8** %8
%94 = tail call i64 @string_strcasecmp(i8* %93, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.14, i64 0, i64 0))
%95 = icmp eq i64 %94, 0
br i1 %95, label %96, label %98
96: ; preds = %92
%97 = tail call i32 @gui_input_delete_next_word(%struct.t_gui_buffer* %1)
br label %314
98: ; preds = %92
%99 = load i8*, i8** %8
%100 = tail call i64 @string_strcasecmp(i8* %99, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.15, i64 0, i64 0))
%101 = icmp eq i64 %100, 0
br i1 %101, label %102, label %104
102: ; preds = %98
%103 = tail call i32 @gui_input_delete_beginning_of_line(%struct.t_gui_buffer* %1)
br label %314
104: ; preds = %98
%105 = load i8*, i8** %8
%106 = tail call i64 @string_strcasecmp(i8* %105, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.16, i64 0, i64 0))
%107 = icmp eq i64 %106, 0
br i1 %107, label %108, label %110
108: ; preds = %104
%109 = tail call i32 @gui_input_delete_end_of_line(%struct.t_gui_buffer* %1)
br label %314
110: ; preds = %104
%111 = load i8*, i8** %8
%112 = tail call i64 @string_strcasecmp(i8* %111, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.17, i64 0, i64 0))
%113 = icmp eq i64 %112, 0
br i1 %113, label %114, label %116
114: ; preds = %110
%115 = tail call i32 @gui_input_delete_line(%struct.t_gui_buffer* %1)
br label %314
116: ; preds = %110
%117 = load i8*, i8** %8
%118 = tail call i64 @string_strcasecmp(i8* %117, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.18, i64 0, i64 0))
%119 = icmp eq i64 %118, 0
br i1 %119, label %120, label %122
120: ; preds = %116
%121 = tail call i32 @gui_input_transpose_chars(%struct.t_gui_buffer* %1)
br label %314
122: ; preds = %116
%123 = load i8*, i8** %8
%124 = tail call i64 @string_strcasecmp(i8* %123, i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.19, i64 0, i64 0))
%125 = icmp eq i64 %124, 0
br i1 %125, label %126, label %128
126: ; preds = %122
%127 = tail call i32 @gui_input_move_beginning_of_line(%struct.t_gui_buffer* %1)
br label %314
128: ; preds = %122
%129 = load i8*, i8** %8
%130 = tail call i64 @string_strcasecmp(i8* %129, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.20, i64 0, i64 0))
%131 = icmp eq i64 %130, 0
br i1 %131, label %132, label %134
132: ; preds = %128
%133 = tail call i32 @gui_input_move_end_of_line(%struct.t_gui_buffer* %1)
br label %314
134: ; preds = %128
%135 = load i8*, i8** %8
%136 = tail call i64 @string_strcasecmp(i8* %135, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.21, i64 0, i64 0))
%137 = icmp eq i64 %136, 0
br i1 %137, label %138, label %140
138: ; preds = %134
%139 = tail call i32 @gui_input_move_previous_char(%struct.t_gui_buffer* %1)
br label %314
140: ; preds = %134
%141 = load i8*, i8** %8
%142 = tail call i64 @string_strcasecmp(i8* %141, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.22, i64 0, i64 0))
%143 = icmp eq i64 %142, 0
br i1 %143, label %144, label %146
144: ; preds = %140
%145 = tail call i32 @gui_input_move_next_char(%struct.t_gui_buffer* %1)
br label %314
146: ; preds = %140
%147 = load i8*, i8** %8
%148 = tail call i64 @string_strcasecmp(i8* %147, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.23, i64 0, i64 0))
%149 = icmp eq i64 %148, 0
br i1 %149, label %150, label %152
150: ; preds = %146
%151 = tail call i32 @gui_input_move_previous_word(%struct.t_gui_buffer* %1)
br label %314
152: ; preds = %146
%153 = load i8*, i8** %8
%154 = tail call i64 @string_strcasecmp(i8* %153, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.24, i64 0, i64 0))
%155 = icmp eq i64 %154, 0
br i1 %155, label %156, label %158
156: ; preds = %152
%157 = tail call i32 @gui_input_move_next_word(%struct.t_gui_buffer* %1)
br label %314
158: ; preds = %152
%159 = load i8*, i8** %8
%160 = tail call i64 @string_strcasecmp(i8* %159, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.25, i64 0, i64 0))
%161 = icmp eq i64 %160, 0
br i1 %161, label %162, label %164
162: ; preds = %158
%163 = tail call i32 @gui_input_history_local_previous(%struct.t_gui_buffer* %1)
br label %314
164: ; preds = %158
%165 = load i8*, i8** %8
%166 = tail call i64 @string_strcasecmp(i8* %165, i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i64 0, i64 0))
%167 = icmp eq i64 %166, 0
br i1 %167, label %168, label %170
168: ; preds = %164
%169 = tail call i32 @gui_input_history_local_next(%struct.t_gui_buffer* %1)
br label %314
170: ; preds = %164
%171 = load i8*, i8** %8
%172 = tail call i64 @string_strcasecmp(i8* %171, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.27, i64 0, i64 0))
%173 = icmp eq i64 %172, 0
br i1 %173, label %174, label %176
174: ; preds = %170
%175 = tail call i32 @gui_input_history_global_previous(%struct.t_gui_buffer* %1)
br label %314
176: ; preds = %170
%177 = load i8*, i8** %8
%178 = tail call i64 @string_strcasecmp(i8* %177, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.28, i64 0, i64 0))
%179 = icmp eq i64 %178, 0
br i1 %179, label %180, label %182
180: ; preds = %176
%181 = tail call i32 @gui_input_history_global_next(%struct.t_gui_buffer* %1)
br label %314
182: ; preds = %176
%183 = load i8*, i8** %8
%184 = tail call i64 @string_strcasecmp(i8* %183, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.29, i64 0, i64 0))
%185 = icmp eq i64 %184, 0
br i1 %185, label %186, label %188
186: ; preds = %182
%187 = tail call i32 @gui_input_jump_smart(%struct.t_gui_buffer* %1)
br label %314
188: ; preds = %182
%189 = load i8*, i8** %8
%190 = tail call i64 @string_strcasecmp(i8* %189, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.30, i64 0, i64 0))
%191 = icmp eq i64 %190, 0
br i1 %191, label %192, label %194
192: ; preds = %188
%193 = tail call i32 @gui_input_jump_last_buffer(%struct.t_gui_buffer* %1)
br label %314
194: ; preds = %188
%195 = load i8*, i8** %8
%196 = tail call i64 @string_strcasecmp(i8* %195, i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.31, i64 0, i64 0))
%197 = icmp eq i64 %196, 0
br i1 %197, label %198, label %200
198: ; preds = %194
%199 = tail call i32 @gui_input_jump_last_buffer_displayed(%struct.t_gui_buffer* %1)
br label %314
200: ; preds = %194
%201 = load i8*, i8** %8
%202 = tail call i64 @string_strcasecmp(i8* %201, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.32, i64 0, i64 0))
%203 = icmp eq i64 %202, 0
br i1 %203, label %204, label %206
204: ; preds = %200
%205 = tail call i32 @gui_input_jump_previously_visited_buffer(%struct.t_gui_buffer* %1)
br label %314
206: ; preds = %200
%207 = load i8*, i8** %8
%208 = tail call i64 @string_strcasecmp(i8* %207, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.33, i64 0, i64 0))
%209 = icmp eq i64 %208, 0
br i1 %209, label %210, label %212
210: ; preds = %206
%211 = tail call i32 @gui_input_jump_next_visited_buffer(%struct.t_gui_buffer* %1)
br label %314
212: ; preds = %206
%213 = load i8*, i8** %8
%214 = tail call i64 @string_strcasecmp(i8* %213, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.34, i64 0, i64 0))
%215 = icmp eq i64 %214, 0
br i1 %215, label %216, label %218
216: ; preds = %212
%217 = tail call i32 @gui_input_hotlist_clear(%struct.t_gui_buffer* %1)
br label %314
218: ; preds = %212
%219 = load i8*, i8** %8
%220 = tail call i64 @string_strcasecmp(i8* %219, i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.35, i64 0, i64 0))
%221 = icmp eq i64 %220, 0
br i1 %221, label %222, label %230
222: ; preds = %218
%223 = icmp ugt i32 %2, 2
br i1 %223, label %224, label %227
224: ; preds = %222
%225 = getelementptr inbounds i8*, i8** %3, i64 2
%226 = load i8*, i8** %225
br label %227
227: ; preds = %222, %224
%228 = phi i8* [ %226, %224 ], [ null, %222 ]
%229 = tail call i32 @gui_input_grab_key(%struct.t_gui_buffer* %1, i32 0, i8* %228)
br label %314
230: ; preds = %218
%231 = load i8*, i8** %8
%232 = tail call i64 @string_strcasecmp(i8* %231, i8* getelementptr inbounds ([17 x i8], [17 x i8]* @.str.36, i64 0, i64 0))
%233 = icmp eq i64 %232, 0
br i1 %233, label %234, label %242
234: ; preds = %230
%235 = icmp ugt i32 %2, 2
br i1 %235, label %236, label %239
236: ; preds = %234
%237 = getelementptr inbounds i8*, i8** %3, i64 2
%238 = load i8*, i8** %237
br label %239
239: ; preds = %234, %236
%240 = phi i8* [ %238, %236 ], [ null, %234 ]
%241 = tail call i32 @gui_input_grab_key(%struct.t_gui_buffer* %1, i32 1, i8* %240)
br label %314
242: ; preds = %230
%243 = load i8*, i8** %8
%244 = tail call i64 @string_strcasecmp(i8* %243, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.37, i64 0, i64 0))
%245 = icmp eq i64 %244, 0
br i1 %245, label %246, label %248
246: ; preds = %242
%247 = tail call i32 @gui_input_grab_mouse(%struct.t_gui_buffer* %1, i32 0)
br label %314
248: ; preds = %242
%249 = load i8*, i8** %8
%250 = tail call i64 @string_strcasecmp(i8* %249, i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.38, i64 0, i64 0))
%251 = icmp eq i64 %250, 0
br i1 %251, label %252, label %254
252: ; preds = %248
%253 = tail call i32 @gui_input_grab_mouse(%struct.t_gui_buffer* %1, i32 1)
br label %314
254: ; preds = %248
%255 = load i8*, i8** %8
%256 = tail call i64 @string_strcasecmp(i8* %255, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.39, i64 0, i64 0))
%257 = icmp eq i64 %256, 0
br i1 %257, label %258, label %260
258: ; preds = %254
%259 = tail call i32 (...) @gui_input_set_unread()
br label %314
260: ; preds = %254
%261 = load i8*, i8** %8
%262 = tail call i64 @string_strcasecmp(i8* %261, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.40, i64 0, i64 0))
%263 = icmp eq i64 %262, 0
br i1 %263, label %264, label %266
264: ; preds = %260
%265 = tail call i32 @gui_input_set_unread_current(%struct.t_gui_buffer* %1)
br label %314
266: ; preds = %260
%267 = load i8*, i8** %8
%268 = tail call i64 @string_strcasecmp(i8* %267, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.41, i64 0, i64 0))
%269 = icmp eq i64 %268, 0
br i1 %269, label %270, label %272
270: ; preds = %266
%271 = tail call i32 @gui_input_switch_active_buffer(%struct.t_gui_buffer* %1)
br label %314
272: ; preds = %266
%273 = load i8*, i8** %8
%274 = tail call i64 @string_strcasecmp(i8* %273, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.42, i64 0, i64 0))
%275 = icmp eq i64 %274, 0
br i1 %275, label %276, label %278
276: ; preds = %272
%277 = tail call i32 @gui_input_zoom_merged_buffer(%struct.t_gui_buffer* %1)
br label %314
278: ; preds = %272
%279 = load i8*, i8** %8
%280 = tail call i64 @string_strcasecmp(i8* %279, i8* getelementptr inbounds ([30 x i8], [30 x i8]* @.str.43, i64 0, i64 0))
%281 = icmp eq i64 %280, 0
br i1 %281, label %282, label %284
282: ; preds = %278
%283 = tail call i32 @gui_input_switch_active_buffer_previous(%struct.t_gui_buffer* %1)
br label %314
284: ; preds = %278
%285 = load i8*, i8** %8
%286 = tail call i64 @string_strcasecmp(i8* %285, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.44, i64 0, i64 0))
%287 = icmp eq i64 %286, 0
br i1 %287, label %288, label %294
288: ; preds = %284
%289 = icmp ugt i32 %2, 2
br i1 %289, label %290, label %314
290: ; preds = %288
%291 = getelementptr inbounds i8*, i8** %4, i64 2
%292 = load i8*, i8** %291
%293 = tail call i32 @gui_input_insert(%struct.t_gui_buffer* %1, i8* %292)
br label %314
294: ; preds = %284
%295 = load i8*, i8** %8
%296 = tail call i64 @string_strcasecmp(i8* %295, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.45, i64 0, i64 0))
%297 = icmp eq i64 %296, 0
br i1 %297, label %298, label %300
298: ; preds = %294
%299 = tail call i32 @gui_input_undo(%struct.t_gui_buffer* %1)
br label %314
300: ; preds = %294
%301 = load i8*, i8** %8
%302 = tail call i64 @string_strcasecmp(i8* %301, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.46, i64 0, i64 0))
%303 = icmp eq i64 %302, 0
br i1 %303, label %304, label %306
304: ; preds = %300
%305 = tail call i32 @gui_input_redo(%struct.t_gui_buffer* %1)
br label %314
306: ; preds = %300
%307 = load i8*, i8** %8
%308 = tail call i64 @string_strcasecmp(i8* %307, i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.47, i64 0, i64 0))
%309 = icmp eq i64 %308, 0
br i1 %309, label %314, label %310
310: ; preds = %306
%311 = load i8*, i8** %8
%312 = tail call i64 @string_strcasecmp(i8* %311, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.48, i64 0, i64 0))
%313 = icmp eq i64 %312, 0
br i1 %313, label %314, label %315
314: ; preds = %18, %30, %42, %54, %66, %78, %90, %102, %114, %126, %138, %150, %162, %174, %186, %198, %210, %227, %246, %258, %270, %282, %298, %306, %310, %304, %288, %290, %276, %264, %252, %239, %216, %204, %192, %180, %168, %156, %144, %132, %120, %108, %96, %84, %72, %60, %48, %36, %24, %12
br label %315
315: ; preds = %310, %5, %314
%316 = phi i32 [ 0, %314 ], [ -1, %5 ], [ -1, %310 ]
ret i32 %316
}