#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();
int /*<<< orphan*/ gui_input_complete_next();
int /*<<< orphan*/ gui_input_complete_previous();
int /*<<< orphan*/ gui_input_delete_beginning_of_line();
int /*<<< orphan*/ gui_input_delete_end_of_line();
int /*<<< orphan*/ gui_input_delete_line();
int /*<<< orphan*/ gui_input_delete_next_char();
int /*<<< orphan*/ gui_input_delete_next_word();
int /*<<< orphan*/ gui_input_delete_previous_char();
int /*<<< orphan*/ gui_input_delete_previous_word();
int /*<<< orphan*/ gui_input_grab_key();
int /*<<< orphan*/ gui_input_grab_key_command();
int /*<<< orphan*/ gui_input_history_global_next();
int /*<<< orphan*/ gui_input_history_global_previous();
int /*<<< orphan*/ gui_input_history_next();
int /*<<< orphan*/ gui_input_history_previous();
int /*<<< orphan*/ gui_input_hotlist_clear();
int /*<<< orphan*/ gui_input_insert(char *);
int /*<<< orphan*/ gui_input_jump_last_buffer();
int /*<<< orphan*/ gui_input_jump_next_visited_buffer();
int /*<<< orphan*/ gui_input_jump_previously_visited_buffer();
int /*<<< orphan*/ gui_input_jump_smart();
int /*<<< orphan*/ gui_input_move_beginning_of_line();
int /*<<< orphan*/ gui_input_move_end_of_line();
int /*<<< orphan*/ gui_input_move_next_char();
int /*<<< orphan*/ gui_input_move_next_word();
int /*<<< orphan*/ gui_input_move_previous_char();
int /*<<< orphan*/ gui_input_move_previous_word();
int /*<<< orphan*/ gui_input_return();
int /*<<< orphan*/ gui_input_scroll_unread();
int /*<<< orphan*/ gui_input_search_text();
int /*<<< orphan*/ gui_input_set_unread();
int /*<<< orphan*/ gui_input_set_unread_current_buffer();
int /*<<< orphan*/ gui_input_switch_active_buffer();
int /*<<< orphan*/ gui_input_transpose_chars();
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;
  (void)buffer;
  if (argc > 1) {
    if (string_strcasecmp(argv[1], "return") == 0)
      gui_input_return();
    else if (string_strcasecmp(argv[1], "complete_next") == 0)
      gui_input_complete_next();
    else if (string_strcasecmp(argv[1], "complete_previous") == 0)
      gui_input_complete_previous();
    else if (string_strcasecmp(argv[1], "search_text") == 0)
      gui_input_search_text();
    else if (string_strcasecmp(argv[1], "delete_previous_char") == 0)
      gui_input_delete_previous_char();
    else if (string_strcasecmp(argv[1], "delete_next_char") == 0)
      gui_input_delete_next_char();
    else if (string_strcasecmp(argv[1], "delete_previous_word") == 0)
      gui_input_delete_previous_word();
    else if (string_strcasecmp(argv[1], "delete_next_word") == 0)
      gui_input_delete_next_word();
    else if (string_strcasecmp(argv[1], "delete_beginning_of_line") == 0)
      gui_input_delete_beginning_of_line();
    else if (string_strcasecmp(argv[1], "delete_end_of_line") == 0)
      gui_input_delete_end_of_line();
    else if (string_strcasecmp(argv[1], "delete_line") == 0)
      gui_input_delete_line();
    else if (string_strcasecmp(argv[1], "clipboard_paste") == 0)
      gui_input_clipboard_paste();
    else if (string_strcasecmp(argv[1], "transpose_chars") == 0)
      gui_input_transpose_chars();
    else if (string_strcasecmp(argv[1], "move_beginning_of_line") == 0)
      gui_input_move_beginning_of_line();
    else if (string_strcasecmp(argv[1], "move_end_of_line") == 0)
      gui_input_move_end_of_line();
    else if (string_strcasecmp(argv[1], "move_previous_char") == 0)
      gui_input_move_previous_char();
    else if (string_strcasecmp(argv[1], "move_next_char") == 0)
      gui_input_move_next_char();
    else if (string_strcasecmp(argv[1], "move_previous_word") == 0)
      gui_input_move_previous_word();
    else if (string_strcasecmp(argv[1], "move_next_word") == 0)
      gui_input_move_next_word();
    else if (string_strcasecmp(argv[1], "history_previous") == 0)
      gui_input_history_previous();
    else if (string_strcasecmp(argv[1], "history_next") == 0)
      gui_input_history_next();
    else if (string_strcasecmp(argv[1], "history_global_previous") == 0)
      gui_input_history_global_previous();
    else if (string_strcasecmp(argv[1], "history_global_next") == 0)
      gui_input_history_global_next();
    else if (string_strcasecmp(argv[1], "jump_smart") == 0)
      gui_input_jump_smart();
    else if (string_strcasecmp(argv[1], "jump_last_buffer") == 0)
      gui_input_jump_last_buffer();
    else if (string_strcasecmp(argv[1], "jump_previously_visited_buffer") == 0)
      gui_input_jump_previously_visited_buffer();
    else if (string_strcasecmp(argv[1], "jump_next_visited_buffer") == 0)
      gui_input_jump_next_visited_buffer();
    else if (string_strcasecmp(argv[1], "hotlist_clear") == 0)
      gui_input_hotlist_clear();
    else if (string_strcasecmp(argv[1], "grab_key") == 0)
      gui_input_grab_key();
    else if (string_strcasecmp(argv[1], "grab_key_command") == 0)
      gui_input_grab_key_command();
    else if (string_strcasecmp(argv[1], "scroll_unread") == 0)
      gui_input_scroll_unread();
    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();
    else if (string_strcasecmp(argv[1], "insert") == 0) {
      if (argc > 2)
        gui_input_insert(argv_eol[2]);
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<command_input>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
cmpl   $0x1,-0x14(%rbp)
jle    19e2 <command_input+0x6a2>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc8c(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    138f <command_input+0x4f>
mov    $0x0,%al
call   1090 <gui_input_return@plt>
jmp    19dd <command_input+0x69d>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc69(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    13b9 <command_input+0x79>
mov    $0x0,%al
call   1160 <gui_input_complete_next@plt>
jmp    19d8 <command_input+0x698>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc4d(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    13e3 <command_input+0xa3>
mov    $0x0,%al
call   1110 <gui_input_complete_previous@plt>
jmp    19d3 <command_input+0x693>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc35(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    140d <command_input+0xcd>
mov    $0x0,%al
call   10f0 <gui_input_search_text@plt>
jmp    19ce <command_input+0x68e>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc17(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1437 <command_input+0xf7>
mov    $0x0,%al
call   1250 <gui_input_delete_previous_char@plt>
jmp    19c9 <command_input+0x689>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xc02(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1461 <command_input+0x121>
mov    $0x0,%al
call   10d0 <gui_input_delete_next_char@plt>
jmp    19c4 <command_input+0x684>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xbe9(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    148b <command_input+0x14b>
mov    $0x0,%al
call   1040 <gui_input_delete_previous_word@plt>
jmp    19bf <command_input+0x67f>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xbd4(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    14b5 <command_input+0x175>
mov    $0x0,%al
call   1150 <gui_input_delete_next_word@plt>
jmp    19ba <command_input+0x67a>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xbbb(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    14df <command_input+0x19f>
mov    $0x0,%al
call   1210 <gui_input_delete_beginning_of_line@plt>
jmp    19b5 <command_input+0x675>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xbaa(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1509 <command_input+0x1c9>
mov    $0x0,%al
call   1060 <gui_input_delete_end_of_line@plt>
jmp    19b0 <command_input+0x670>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb93(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1533 <command_input+0x1f3>
mov    $0x0,%al
call   11d0 <gui_input_delete_line@plt>
jmp    19ab <command_input+0x66b>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb75(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    155d <command_input+0x21d>
mov    $0x0,%al
call   1100 <gui_input_clipboard_paste@plt>
jmp    19a6 <command_input+0x666>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb5b(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1587 <command_input+0x247>
mov    $0x0,%al
call   1120 <gui_input_transpose_chars@plt>
jmp    19a1 <command_input+0x661>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb41(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    15b1 <command_input+0x271>
mov    $0x0,%al
call   11f0 <gui_input_move_beginning_of_line@plt>
jmp    199c <command_input+0x65c>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb2e(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    15db <command_input+0x29b>
mov    $0x0,%al
call   11c0 <gui_input_move_end_of_line@plt>
jmp    1997 <command_input+0x657>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xb15(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1605 <command_input+0x2c5>
mov    $0x0,%al
call   1140 <gui_input_move_previous_char@plt>
jmp    1992 <command_input+0x652>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xafe(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    162f <command_input+0x2ef>
mov    $0x0,%al
call   1130 <gui_input_move_next_char@plt>
jmp    198d <command_input+0x64d>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xae3(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1659 <command_input+0x319>
mov    $0x0,%al
call   1070 <gui_input_move_previous_word@plt>
jmp    1988 <command_input+0x648>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xacc(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1683 <command_input+0x343>
mov    $0x0,%al
call   10b0 <gui_input_move_next_word@plt>
jmp    1983 <command_input+0x643>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xab1(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    16ad <command_input+0x36d>
mov    $0x0,%al
call   1180 <gui_input_history_previous@plt>
jmp    197e <command_input+0x63e>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa98(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    16d7 <command_input+0x397>
mov    $0x0,%al
call   10c0 <gui_input_history_next@plt>
jmp    1979 <command_input+0x639>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa7b(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1701 <command_input+0x3c1>
mov    $0x0,%al
call   1080 <gui_input_history_global_previous@plt>
jmp    1974 <command_input+0x634>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa69(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    172b <command_input+0x3eb>
mov    $0x0,%al
call   11e0 <gui_input_history_global_next@plt>
jmp    196f <command_input+0x62f>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa53(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1755 <command_input+0x415>
mov    $0x0,%al
call   1050 <gui_input_jump_smart@plt>
jmp    196a <command_input+0x62a>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa34(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    177f <command_input+0x43f>
mov    $0x0,%al
call   10e0 <gui_input_jump_last_buffer@plt>
jmp    1965 <command_input+0x625>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa1b(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    17a9 <command_input+0x469>
mov    $0x0,%al
call   1260 <gui_input_jump_previously_visited_buffer@plt>
jmp    1960 <command_input+0x620>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0xa10(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    17d3 <command_input+0x493>
mov    $0x0,%al
call   1200 <gui_input_jump_next_visited_buffer@plt>
jmp    195b <command_input+0x61b>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x9ff(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    17fd <command_input+0x4bd>
mov    $0x0,%al
call   1230 <gui_input_hotlist_clear@plt>
jmp    1956 <command_input+0x616>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x9e3(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1827 <command_input+0x4e7>
mov    $0x0,%al
call   1190 <gui_input_grab_key@plt>
jmp    1951 <command_input+0x611>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x9c2(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1851 <command_input+0x511>
mov    $0x0,%al
call   10a0 <gui_input_grab_key_command@plt>
jmp    194c <command_input+0x60c>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x9a9(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    187b <command_input+0x53b>
mov    $0x0,%al
call   1220 <gui_input_scroll_unread@plt>
jmp    1947 <command_input+0x607>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x98d(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    18a5 <command_input+0x565>
mov    $0x0,%al
call   1170 <gui_input_set_unread@plt>
jmp    1942 <command_input+0x602>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x96e(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    18cf <command_input+0x58f>
mov    $0x0,%al
call   1030 <gui_input_set_unread_current_buffer@plt>
jmp    193d <command_input+0x5fd>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x95e(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    18f9 <command_input+0x5b9>
mov    $0x0,%al
call   11b0 <gui_input_switch_active_buffer@plt>
jmp    1938 <command_input+0x5f8>
mov    -0x20(%rbp),%rax
mov    0x8(%rax),%rdi
lea    0x949(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x0,%rax
jne    1933 <command_input+0x5f3>
cmpl   $0x2,-0x14(%rbp)
jle    192e <command_input+0x5ee>
mov    -0x28(%rbp),%rax
mov    0x10(%rax),%rdi
call   1240 <gui_input_insert@plt>
jmp    1933 <command_input+0x5f3>
jmp    1938 <command_input+0x5f8>
jmp    193d <command_input+0x5fd>
jmp    1942 <command_input+0x602>
jmp    1947 <command_input+0x607>
jmp    194c <command_input+0x60c>
jmp    1951 <command_input+0x611>
jmp    1956 <command_input+0x616>
jmp    195b <command_input+0x61b>
jmp    1960 <command_input+0x620>
jmp    1965 <command_input+0x625>
jmp    196a <command_input+0x62a>
jmp    196f <command_input+0x62f>
jmp    1974 <command_input+0x634>
jmp    1979 <command_input+0x639>
jmp    197e <command_input+0x63e>
jmp    1983 <command_input+0x643>
jmp    1988 <command_input+0x648>
jmp    198d <command_input+0x64d>
jmp    1992 <command_input+0x652>
jmp    1997 <command_input+0x657>
jmp    199c <command_input+0x65c>
jmp    19a1 <command_input+0x661>
jmp    19a6 <command_input+0x666>
jmp    19ab <command_input+0x66b>
jmp    19b0 <command_input+0x670>
jmp    19b5 <command_input+0x675>
jmp    19ba <command_input+0x67a>
jmp    19bf <command_input+0x67f>
jmp    19c4 <command_input+0x684>
jmp    19c9 <command_input+0x689>
jmp    19ce <command_input+0x68e>
jmp    19d3 <command_input+0x693>
jmp    19d8 <command_input+0x698>
jmp    19dd <command_input+0x69d>
jmp    19e2 <command_input+0x6a2>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<command_input>:
push   %rbp
push   %r14
push   %rbx
cmp    $0x2,%edx
jl     1822 <command_input+0x4e2>
mov    %r8,%r14
mov    %rcx,%rbx
mov    %edx,%ebp
mov    0x8(%rcx),%rdi
lea    0xca0(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     16b9 <command_input+0x379>
add    $0x8,%rbx
mov    (%rbx),%rdi
lea    0xc8b(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     16c5 <command_input+0x385>
mov    (%rbx),%rdi
lea    0xc81(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     16d1 <command_input+0x391>
mov    (%rbx),%rdi
lea    0xc7b(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     16dd <command_input+0x39d>
mov    (%rbx),%rdi
lea    0xc6f(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     16e9 <command_input+0x3a9>
mov    (%rbx),%rdi
lea    0xc6c(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     16f5 <command_input+0x3b5>
mov    (%rbx),%rdi
lea    0xc65(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1701 <command_input+0x3c1>
mov    (%rbx),%rdi
lea    0xc62(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     170d <command_input+0x3cd>
mov    (%rbx),%rdi
lea    0xc5b(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1719 <command_input+0x3d9>
mov    (%rbx),%rdi
lea    0xc5c(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1725 <command_input+0x3e5>
mov    (%rbx),%rdi
lea    0xc57(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1731 <command_input+0x3f1>
mov    (%rbx),%rdi
lea    0xc4b(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     173d <command_input+0x3fd>
mov    (%rbx),%rdi
lea    0xc43(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1749 <command_input+0x409>
mov    (%rbx),%rdi
lea    0xc3b(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1755 <command_input+0x415>
mov    (%rbx),%rdi
lea    0xc3a(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1761 <command_input+0x421>
mov    (%rbx),%rdi
lea    0xc33(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     176d <command_input+0x42d>
mov    (%rbx),%rdi
lea    0xc2e(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1779 <command_input+0x439>
mov    (%rbx),%rdi
lea    0xc25(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1785 <command_input+0x445>
mov    (%rbx),%rdi
lea    0xc20(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1791 <command_input+0x451>
mov    (%rbx),%rdi
lea    0xc17(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     179d <command_input+0x45d>
mov    (%rbx),%rdi
lea    0xc10(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     17a6 <command_input+0x466>
mov    (%rbx),%rdi
lea    0xc05(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     17af <command_input+0x46f>
mov    (%rbx),%rdi
lea    0xc05(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     17b8 <command_input+0x478>
mov    (%rbx),%rdi
lea    0xc01(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     17c1 <command_input+0x481>
mov    (%rbx),%rdi
lea    0xbf4(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     17ca <command_input+0x48a>
mov    (%rbx),%rdi
lea    0xbed(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     17d3 <command_input+0x493>
mov    (%rbx),%rdi
lea    0xbf4(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     17dc <command_input+0x49c>
mov    (%rbx),%rdi
lea    0xbf5(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     17e5 <command_input+0x4a5>
mov    (%rbx),%rdi
lea    0xbeb(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     17ee <command_input+0x4ae>
mov    (%rbx),%rdi
lea    0xbdc(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     17f7 <command_input+0x4b7>
mov    (%rbx),%rdi
lea    0xbd5(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1800 <command_input+0x4c0>
mov    (%rbx),%rdi
lea    0xbcb(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1809 <command_input+0x4c9>
mov    (%rbx),%rdi
lea    0xbbe(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     1812 <command_input+0x4d2>
mov    (%rbx),%rdi
lea    0xbc0(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
test   %rax,%rax
je     181b <command_input+0x4db>
mov    (%rbx),%rdi
lea    0xbbd(%rip),%rsi
call   11a0 <string_strcasecmp@plt>
cmp    $0x3,%ebp
jb     1822 <command_input+0x4e2>
test   %rax,%rax
jne    1822 <command_input+0x4e2>
mov    0x10(%r14),%rdi
call   1240 <gui_input_insert@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1090 <gui_input_return@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1160 <gui_input_complete_next@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1110 <gui_input_complete_previous@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   10f0 <gui_input_search_text@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1250 <gui_input_delete_previous_char@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   10d0 <gui_input_delete_next_char@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1040 <gui_input_delete_previous_word@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1150 <gui_input_delete_next_word@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1210 <gui_input_delete_beginning_of_line@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1060 <gui_input_delete_end_of_line@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   11d0 <gui_input_delete_line@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1100 <gui_input_clipboard_paste@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1120 <gui_input_transpose_chars@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   11f0 <gui_input_move_beginning_of_line@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   11c0 <gui_input_move_end_of_line@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1140 <gui_input_move_previous_char@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1130 <gui_input_move_next_char@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1070 <gui_input_move_previous_word@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   10b0 <gui_input_move_next_word@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1180 <gui_input_history_previous@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   10c0 <gui_input_history_next@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1080 <gui_input_history_global_previous@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   11e0 <gui_input_history_global_next@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1050 <gui_input_jump_smart@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   10e0 <gui_input_jump_last_buffer@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1260 <gui_input_jump_previously_visited_buffer@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1200 <gui_input_jump_next_visited_buffer@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1230 <gui_input_hotlist_clear@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1190 <gui_input_grab_key@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   10a0 <gui_input_grab_key_command@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1220 <gui_input_scroll_unread@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1170 <gui_input_set_unread@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   1030 <gui_input_set_unread_current_buffer@plt>
jmp    1822 <command_input+0x4e2>
xor    %eax,%eax
call   11b0 <gui_input_switch_active_buffer@plt>
xor    %eax,%eax
pop    %rbx
pop    %r14
pop    %rbp
ret

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

LLVM IR (-O2):
%struct.t_gui_buffer = type { i32 }
@.str = [7 x i8] c"return\00"
@.str.1 = [14 x i8] c"complete_next\00"
@.str.2 = [18 x i8] c"complete_previous\00"
@.str.3 = [12 x i8] c"search_text\00"
@.str.4 = [21 x i8] c"delete_previous_char\00"
@.str.5 = [17 x i8] c"delete_next_char\00"
@.str.6 = [21 x i8] c"delete_previous_word\00"
@.str.7 = [17 x i8] c"delete_next_word\00"
@.str.8 = [25 x i8] c"delete_beginning_of_line\00"
@.str.9 = [19 x i8] c"delete_end_of_line\00"
@.str.10 = [12 x i8] c"delete_line\00"
@.str.11 = [16 x i8] c"clipboard_paste\00"
@.str.12 = [16 x i8] c"transpose_chars\00"
@.str.13 = [23 x i8] c"move_beginning_of_line\00"
@.str.14 = [17 x i8] c"move_end_of_line\00"
@.str.15 = [19 x i8] c"move_previous_char\00"
@.str.16 = [15 x i8] c"move_next_char\00"
@.str.17 = [19 x i8] c"move_previous_word\00"
@.str.18 = [15 x i8] c"move_next_word\00"
@.str.19 = [17 x i8] c"history_previous\00"
@.str.20 = [13 x i8] c"history_next\00"
@.str.21 = [24 x i8] c"history_global_previous\00"
@.str.22 = [20 x i8] c"history_global_next\00"
@.str.23 = [11 x i8] c"jump_smart\00"
@.str.24 = [17 x i8] c"jump_last_buffer\00"
@.str.25 = [31 x i8] c"jump_previously_visited_buffer\00"
@.str.26 = [25 x i8] c"jump_next_visited_buffer\00"
@.str.27 = [14 x i8] c"hotlist_clear\00"
@.str.28 = [9 x i8] c"grab_key\00"
@.str.29 = [17 x i8] c"grab_key_command\00"
@.str.30 = [14 x i8] c"scroll_unread\00"
@.str.31 = [11 x i8] c"set_unread\00"
@.str.32 = [26 x i8] c"set_unread_current_buffer\00"
@.str.33 = [21 x i8] c"switch_active_buffer\00"
@.str.34 = [7 x i8] c"insert\00"
define i32 @command_input(i8* nocapture readnone %0, %struct.t_gui_buffer* nocapture readnone %1, i32 %2, i8** %3, i8** nocapture %4) {
%6 = icmp sgt i32 %2, 1
br i1 %6, label %7, label %222
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 ([7 x i8], [7 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_return()
br label %222
14: ; preds = %7
%15 = load i8*, i8** %8
%16 = tail call i64 @string_strcasecmp(i8* %15, i8* getelementptr inbounds ([14 x i8], [14 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_complete_next()
br label %222
20: ; preds = %14
%21 = load i8*, i8** %8
%22 = tail call i64 @string_strcasecmp(i8* %21, i8* getelementptr inbounds ([18 x i8], [18 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_previous()
br label %222
26: ; preds = %20
%27 = load i8*, i8** %8
%28 = tail call i64 @string_strcasecmp(i8* %27, i8* getelementptr inbounds ([12 x i8], [12 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_search_text()
br label %222
32: ; preds = %26
%33 = load i8*, i8** %8
%34 = tail call i64 @string_strcasecmp(i8* %33, i8* getelementptr inbounds ([21 x i8], [21 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_delete_previous_char()
br label %222
38: ; preds = %32
%39 = load i8*, i8** %8
%40 = tail call i64 @string_strcasecmp(i8* %39, i8* getelementptr inbounds ([17 x i8], [17 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_delete_next_char()
br label %222
44: ; preds = %38
%45 = load i8*, i8** %8
%46 = tail call i64 @string_strcasecmp(i8* %45, i8* getelementptr inbounds ([21 x i8], [21 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_delete_previous_word()
br label %222
50: ; preds = %44
%51 = load i8*, i8** %8
%52 = tail call i64 @string_strcasecmp(i8* %51, i8* getelementptr inbounds ([17 x i8], [17 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_delete_next_word()
br label %222
56: ; preds = %50
%57 = load i8*, i8** %8
%58 = tail call i64 @string_strcasecmp(i8* %57, i8* getelementptr inbounds ([25 x i8], [25 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_delete_beginning_of_line()
br label %222
62: ; preds = %56
%63 = load i8*, i8** %8
%64 = tail call i64 @string_strcasecmp(i8* %63, i8* getelementptr inbounds ([19 x i8], [19 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_delete_end_of_line()
br label %222
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_delete_line()
br label %222
74: ; preds = %68
%75 = load i8*, i8** %8
%76 = tail call i64 @string_strcasecmp(i8* %75, i8* getelementptr inbounds ([16 x i8], [16 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_clipboard_paste()
br label %222
80: ; preds = %74
%81 = load i8*, i8** %8
%82 = tail call i64 @string_strcasecmp(i8* %81, i8* getelementptr inbounds ([16 x i8], [16 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_transpose_chars()
br label %222
86: ; preds = %80
%87 = load i8*, i8** %8
%88 = tail call i64 @string_strcasecmp(i8* %87, i8* getelementptr inbounds ([23 x i8], [23 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_move_beginning_of_line()
br label %222
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_move_end_of_line()
br label %222
98: ; preds = %92
%99 = load i8*, i8** %8
%100 = tail call i64 @string_strcasecmp(i8* %99, i8* getelementptr inbounds ([19 x i8], [19 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_move_previous_char()
br label %222
104: ; preds = %98
%105 = load i8*, i8** %8
%106 = tail call i64 @string_strcasecmp(i8* %105, i8* getelementptr inbounds ([15 x i8], [15 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_move_next_char()
br label %222
110: ; preds = %104
%111 = load i8*, i8** %8
%112 = tail call i64 @string_strcasecmp(i8* %111, i8* getelementptr inbounds ([19 x i8], [19 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_move_previous_word()
br label %222
116: ; preds = %110
%117 = load i8*, i8** %8
%118 = tail call i64 @string_strcasecmp(i8* %117, i8* getelementptr inbounds ([15 x i8], [15 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_move_next_word()
br label %222
122: ; preds = %116
%123 = load i8*, i8** %8
%124 = tail call i64 @string_strcasecmp(i8* %123, i8* getelementptr inbounds ([17 x i8], [17 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_history_previous()
br label %222
128: ; preds = %122
%129 = load i8*, i8** %8
%130 = tail call i64 @string_strcasecmp(i8* %129, i8* getelementptr inbounds ([13 x i8], [13 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_history_next()
br label %222
134: ; preds = %128
%135 = load i8*, i8** %8
%136 = tail call i64 @string_strcasecmp(i8* %135, i8* getelementptr inbounds ([24 x i8], [24 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_history_global_previous()
br label %222
140: ; preds = %134
%141 = load i8*, i8** %8
%142 = tail call i64 @string_strcasecmp(i8* %141, i8* getelementptr inbounds ([20 x i8], [20 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_history_global_next()
br label %222
146: ; preds = %140
%147 = load i8*, i8** %8
%148 = tail call i64 @string_strcasecmp(i8* %147, i8* getelementptr inbounds ([11 x i8], [11 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_jump_smart()
br label %222
152: ; preds = %146
%153 = load i8*, i8** %8
%154 = tail call i64 @string_strcasecmp(i8* %153, i8* getelementptr inbounds ([17 x i8], [17 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_jump_last_buffer()
br label %222
158: ; preds = %152
%159 = load i8*, i8** %8
%160 = tail call i64 @string_strcasecmp(i8* %159, i8* getelementptr inbounds ([31 x i8], [31 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_jump_previously_visited_buffer()
br label %222
164: ; preds = %158
%165 = load i8*, i8** %8
%166 = tail call i64 @string_strcasecmp(i8* %165, i8* getelementptr inbounds ([25 x i8], [25 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_jump_next_visited_buffer()
br label %222
170: ; preds = %164
%171 = load i8*, i8** %8
%172 = tail call i64 @string_strcasecmp(i8* %171, i8* getelementptr inbounds ([14 x i8], [14 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_hotlist_clear()
br label %222
176: ; preds = %170
%177 = load i8*, i8** %8
%178 = tail call i64 @string_strcasecmp(i8* %177, i8* getelementptr inbounds ([9 x i8], [9 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_grab_key()
br label %222
182: ; preds = %176
%183 = load i8*, i8** %8
%184 = tail call i64 @string_strcasecmp(i8* %183, i8* getelementptr inbounds ([17 x i8], [17 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_grab_key_command()
br label %222
188: ; preds = %182
%189 = load i8*, i8** %8
%190 = tail call i64 @string_strcasecmp(i8* %189, i8* getelementptr inbounds ([14 x i8], [14 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_scroll_unread()
br label %222
194: ; preds = %188
%195 = load i8*, i8** %8
%196 = tail call i64 @string_strcasecmp(i8* %195, i8* getelementptr inbounds ([11 x i8], [11 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_set_unread()
br label %222
200: ; preds = %194
%201 = load i8*, i8** %8
%202 = tail call i64 @string_strcasecmp(i8* %201, i8* getelementptr inbounds ([26 x i8], [26 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_set_unread_current_buffer()
br label %222
206: ; preds = %200
%207 = load i8*, i8** %8
%208 = tail call i64 @string_strcasecmp(i8* %207, i8* getelementptr inbounds ([21 x i8], [21 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_switch_active_buffer()
br label %222
212: ; preds = %206
%213 = load i8*, i8** %8
%214 = tail call i64 @string_strcasecmp(i8* %213, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.34, i64 0, i64 0))
%215 = icmp eq i64 %214, 0
%216 = icmp ugt i32 %2, 2
%217 = and i1 %216, %215
br i1 %217, label %218, label %222
218: ; preds = %212
%219 = getelementptr inbounds i8*, i8** %4, i64 2
%220 = load i8*, i8** %219
%221 = tail call i32 @gui_input_insert(i8* %220)
br label %222
222: ; preds = %12, %24, %36, %48, %60, %72, %84, %96, %108, %120, %132, %144, %156, %168, %180, %192, %204, %212, %218, %210, %198, %186, %174, %162, %150, %138, %126, %114, %102, %90, %78, %66, %54, %42, %30, %18, %5
ret i32 0
}