LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/read_root.c
// Function: read_get_esc_seq_id
int		read_get_esc_seq_id(t_term *term, int c)
{
	int		res_read;
	char	*str;
	int		i;

	str = NULL;
	if (!ft_strappend(&str, c))
		return (-1);
	while ((res_read = read(STDIN_FILENO, &c, 1)) && (i = -1))
	{
		if (res_read == -1 || !ft_strappend(&str, c))
		{
			free(str);
			return (-1);
		}
		while (++i < NUMBER_SPECIAL_KEYS)
		{
			if (!ft_strncmp(str, term->array_esc_seq[i], ft_strlen(str) + 1))
			{
				free(str);
				return (i);
			}
		}
	}
	free(str);
	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq $0x0, -0x20(%rbp)
movl -0x14(%rbp), %eax
leaq -0x20(%rbp), %rdi
movsbl %al, %esi
callq 0x10460
cmpl $0x0, %eax
jne 0x7c37
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x7d12
jmp 0x7c39
xorl %edi, %edi
leaq -0x14(%rbp), %rsi
movl $0x1, %edx
callq 0x2120
movl %eax, %ecx
movl %ecx, -0x18(%rbp)
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x25(%rbp)
je 0x7c64
movl $0xffffffff, -0x24(%rbp) # imm = 0xFFFFFFFF
movb $0x1, %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %al
testb $0x1, %al
jne 0x7c70
jmp 0x7d02
cmpl $-0x1, -0x18(%rbp)
je 0x7c8a
movl -0x14(%rbp), %eax
leaq -0x20(%rbp), %rdi
movsbl %al, %esi
callq 0x10460
cmpl $0x0, %eax
jne 0x7c9c
movq -0x20(%rbp), %rdi
callq 0x2230
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x7d12
jmp 0x7c9e
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
cmpl $0xe, %eax
jge 0x7cfd
movq -0x20(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rdi
callq 0xfb10
movq -0x38(%rbp), %rdi
movq -0x30(%rbp), %rsi
movq %rax, %rdx
addq $0x1, %rdx
callq 0xfb60
cmpl $0x0, %eax
jne 0x7cfb
movq -0x20(%rbp), %rdi
callq 0x2230
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x7d12
jmp 0x7c9e
jmp 0x7c39
movq -0x20(%rbp), %rdi
callq 0x2230
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/read_process_char.c
// Function: read_process_add_char
void	read_process_add_char(t_control *control, char c)
{
	if (!(ft_strcadd(&(control->term->line), c, \
					control->term->inline_position + 1)))
	{
		control->quit = 1;
		return ;
	}
	control->term->inline_position++;
	control->term->line_len++;
	if (!terminfo_insert_char(control, c))
	{
		control->quit = 1;
		return ;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movb -0x9(%rbp), %al
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
movl 0xc(%rcx), %ecx
addl $0x1, %ecx
movslq %ecx, %rdx
movsbl %al, %esi
callq 0x10630
cmpl $0x0, %eax
jne 0x7d6b
movq -0x8(%rbp), %rax
movb (%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, (%rax)
jmp 0x7dad
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl 0xc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rdi
movsbl -0x9(%rbp), %esi
callq 0x6920
cmpl $0x0, %eax
jne 0x7dad
movq -0x8(%rbp), %rax
movb (%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, (%rax)
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/read_process_char.c
// Function: read_process_del_char
void	read_process_del_char(t_control *control)
{
	if (control->term->inline_position == -1)
		return ;
	ft_strcdel(control->term->line, control->term->inline_position);
	if (!terminfo_del_char(control))
		return ;
	control->term->inline_position--;
	control->term->line_len--;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
cmpl $-0x1, 0xc(%rax)
jne 0x7ddc
jmp 0x7e2a
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq 0xc(%rax), %rsi
callq 0x10760
movq -0x8(%rbp), %rdi
callq 0x68d0
cmpl $0x0, %eax
jne 0x7e08
jmp 0x7e2a
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl 0xc(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0xc(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x8(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x8(%rax)
addq $0x10, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/read_process_char.c
// Function: read_process_special_key
void	read_process_special_key(t_control *control, int i)
{
	if (i == KEY_RIGHT_ID)
		terminfo_cursor_move_right(control);
	else if (i == KEY_LEFT_ID)
		terminfo_cursor_move_left(control);
	else if (i == KEY_HOME_ID)
		read_process_control_combo(control, CTRL_A_COMBO);
	else if (i == KEY_END_ID)
		read_process_control_combo(control, CTRL_E_COMBO);
	else if (i == KEY_UP_CTRL_ID)
		terminfo_cursor_move_up(control, &control->term->cursor);
	else if (i == KEY_DOWN_CTRL_ID)
		terminfo_cursor_move_down(control, &control->term->cursor);
	else if (i == KEY_RIGHT_CTRL_ID)
		terminfo_cursor_move_next_word(control);
	else if (i == KEY_LEFT_CTRL_ID)
		terminfo_cursor_move_previous_word(control);
	else if (i == KEY_UP_ID)
		history_search(control, 1);
	else if (i == KEY_DOWN_ID)
		history_search(control, 0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
cmpl $0x82, -0xc(%rbp)
jne 0x7e56
movq -0x8(%rbp), %rdi
callq 0x5e00
jmp 0x7f4c
cmpl $0x83, -0xc(%rbp)
jne 0x7e6d
movq -0x8(%rbp), %rdi
callq 0x5fe0
jmp 0x7f4a
cmpl $0x85, -0xc(%rbp)
jne 0x7e89
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x7f60
jmp 0x7f48
cmpl $0x87, -0xc(%rbp)
jne 0x7ea5
movq -0x8(%rbp), %rdi
movl $0x5, %esi
callq 0x7f60
jmp 0x7f46
cmpl $0x8a, -0xc(%rbp)
jne 0x7ec5
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
addq $0x10, %rsi
callq 0x61c0
jmp 0x7f44
cmpl $0x8b, -0xc(%rbp)
jne 0x7ee5
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
addq $0x10, %rsi
callq 0x62d0
jmp 0x7f42
cmpl $0x8c, -0xc(%rbp)
jne 0x7ef9
movq -0x8(%rbp), %rdi
callq 0x6530
jmp 0x7f40
cmpl $0x8d, -0xc(%rbp)
jne 0x7f0d
movq -0x8(%rbp), %rdi
callq 0x6720
jmp 0x7f3e
cmpl $0x81, -0xc(%rbp)
jne 0x7f26
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x8530
jmp 0x7f3c
cmpl $0x84, -0xc(%rbp)
jne 0x7f3a
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x8530
jmp 0x7f3c
jmp 0x7f3e
jmp 0x7f40
jmp 0x7f42
jmp 0x7f44
jmp 0x7f46
jmp 0x7f48
jmp 0x7f4a
jmp 0x7f4c
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/read_process_char.c
// Function: read_process_control_combo
void	read_process_control_combo(t_control *control, char c)
{
	if (c == CTRL_A_COMBO)
	{
		if (!terminfo_cursor_move_endl(control, 1))
			return ;
		control->term->inline_position = -1;
		control->term->cursor = control->term->cursor_start;
	}
	else if (c == CTRL_E_COMBO)
	{
		if (!terminfo_cursor_move_endl(control, 0))
			return ;
		control->term->inline_position = control->term->line_len - 1;
	}
	else if (c == CTRL_P_COMBO)
	{
		terminfo_clipboard_paste(control, &control->term->clipboard);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movsbl -0x9(%rbp), %eax
cmpl $0x1, %eax
jne 0x7fbc
movq -0x8(%rbp), %rdi
movl $0x1, %esi
callq 0x6480
cmpl $0x0, %eax
jne 0x7f93
jmp 0x8014
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl $0xffffffff, 0xc(%rax)  # imm = 0xFFFFFFFF
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq 0x20(%rcx), %rcx
movq %rcx, 0x10(%rax)
jmp 0x8014
movsbl -0x9(%rbp), %eax
cmpl $0x5, %eax
jne 0x7ff2
movq -0x8(%rbp), %rdi
xorl %esi, %esi
callq 0x6480
cmpl $0x0, %eax
jne 0x7fd7
jmp 0x8014
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x8(%rax), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movl %ecx, 0xc(%rax)
jmp 0x8012
movsbl -0x9(%rbp), %eax
cmpl $0x10, %eax
jne 0x8010
movq -0x8(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
addq $0x60, %rsi
callq 0x7800
jmp 0x8012
jmp 0x8014
addq $0x10, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/historic_root.c
// Function: history_root
int			history_root(t_control *control, t_history *history)
{
	if (!control->term->line)
	{
		if (!(control->term->line = ft_strdup("")))
		{
			control->quit = 1;
			return (0);
		}
	}
	if (!history_update_line(control, history))
		return (0);
	if (history_decide_discard_new_link(control))
		return (0);
//	debug_history_list(control->history)
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cmpq $0x0, (%rax)
jne 0x8074
leaq 0x917a(%rip), %rdi      # 0x111bf
callq 0xf950
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq %rax, (%rcx)
cmpq $0x0, %rax
jne 0x8072
movq -0x10(%rbp), %rax
movb (%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, (%rax)
movl $0x0, -0x4(%rbp)
jmp 0x80ad
jmp 0x8074
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x8240
cmpl $0x0, %eax
jne 0x808f
movl $0x0, -0x4(%rbp)
jmp 0x80ad
movq -0x10(%rbp), %rdi
callq 0x8400
cmpl $0x0, %eax
je 0x80a6
movl $0x0, -0x4(%rbp)
jmp 0x80ad
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/historic_root.c
// Function: history_init_struct
t_history	*history_init_struct(void)
{
	t_history *hist;

	if (!(hist = (t_history*)malloc(sizeof(t_history))))
		return (NULL);
	hist->size = 0;
	hist->max_size = 255;
	hist->head = NULL;
	return (hist);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movl $0x18, %edi
callq 0x2180
movq %rax, -0x10(%rbp)
cmpq $0x0, %rax
jne 0x80e6
movq $0x0, -0x8(%rbp)
jmp 0x810f
movq -0x10(%rbp), %rax
movl $0x0, (%rax)
movq -0x10(%rbp), %rax
movl $0xff, 0x10(%rax)
movq -0x10(%rbp), %rax
movq $0x0, 0x8(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/historic_root.c
// Function: history_add_new_link
int			history_add_new_link(t_control *control)
{
	t_dlist	*history_new;
	char	*str;

	if (!(str = ft_strdup("")))
	{
		control->quit = 1;
		return (0);
	}
	if (!(history_new = ft_dlstnew(str)))
	{
		free(str);
		control->quit = 1;
		return (0);
	}
	ft_dlstadd_front(&(control->history->head), history_new);
	control->history->size++;
	if (control->history->size > control->history->max_size)
	{
		control->history->size--;
		ft_dlstpop_back(&control->history->head, history_del_content);
	}
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
leaq 0x905c(%rip), %rdi      # 0x111bf
callq 0xf950
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x818c
movq -0x10(%rbp), %rax
movb (%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, (%rax)
movl $0x0, -0x4(%rbp)
jmp 0x8228
movq -0x20(%rbp), %rdi
callq 0x10940
movq %rax, -0x18(%rbp)
cmpq $0x0, %rax
jne 0x81bf
movq -0x20(%rbp), %rdi
callq 0x2230
movq -0x10(%rbp), %rax
movb (%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, (%rax)
movl $0x0, -0x4(%rbp)
jmp 0x8228
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0x8, %rdi
movq -0x18(%rbp), %rsi
callq 0x109a0
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %eax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rcx
cmpl 0x10(%rcx), %eax
jle 0x8221
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0x8, %rdi
leaq -0xfc(%rip), %rsi       # 0x8120
callq 0x10b70
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/historic_update.c
// Function: history_update_line
int	history_update_line(t_control *control, t_history *history)
{
	char *current_hist;
	char *str;

	current_hist = (char *)(history->head->content);
	if (control->lexer_end.backslash)
		current_hist[ft_strlen(current_hist) - 1] = '\0';
	if (control->lexer_end.quote || control->lexer_end.add_semi)
	{
		if (!history_update_line_insert_sep(control, history))
			return (0);
	}
	else
	{
		if (!(str = ft_strjoin_free(current_hist, control->term->line, 1)))
		{
			control->quit = 1;
			return (0);
		}
		history->head->content = str;
	}
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movb 0x28(%rax), %al
shrb $0x2, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x8293
movq -0x20(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x20(%rbp), %rdi
callq 0xfb10
movq %rax, %rcx
movq -0x30(%rbp), %rax
subq $0x1, %rcx
movb $0x0, (%rax,%rcx)
movq -0x10(%rbp), %rax
movb 0x28(%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0x82ba
movq -0x10(%rbp), %rax
movb 0x28(%rax), %al
shrb $0x4, %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x82d7
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x8330
cmpl $0x0, %eax
jne 0x82d5
movl $0x0, -0x4(%rbp)
jmp 0x8327
jmp 0x8320
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rsi
movl $0x1, %edx
callq 0xfab0
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
jne 0x8311
movq -0x10(%rbp), %rax
movb (%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, (%rax)
movl $0x0, -0x4(%rbp)
jmp 0x8327
movq -0x28(%rbp), %rcx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, (%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/historic_update.c
// Function: history_update_line_insert_sep
int	history_update_line_insert_sep(t_control *control, t_history *history)
{
	char *str;
	char c;

	if (control->lexer_end.quote)
		c = '\n';
	else
		c = ';';
	str = (char *)(history->head->content);
	if (!ft_strappend(&str, c))
	{
		control->quit = 1;
		return (0);
	}
	if (!(str = ft_strjoin_free(str, control->term->line, 1)))
	{
		control->quit = 1;
		free(str);
		return (0);
	}
	history->head->content = str;
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movb 0x28(%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x8359
movb $0xa, -0x21(%rbp)
jmp 0x835d
movb $0x3b, -0x21(%rbp)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
leaq -0x20(%rbp), %rdi
movsbl -0x21(%rbp), %esi
callq 0x10460
cmpl $0x0, %eax
jne 0x8395
movq -0x10(%rbp), %rax
movb (%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, (%rax)
movl $0x0, -0x4(%rbp)
jmp 0x83ee
movq -0x20(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rsi
movl $0x1, %edx
callq 0xfab0
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x83d8
movq -0x10(%rbp), %rax
movb (%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, (%rax)
movq -0x20(%rbp), %rdi
callq 0x2230
movl $0x0, -0x4(%rbp)
jmp 0x83ee
movq -0x20(%rbp), %rcx
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rax
movq %rcx, (%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/historic_update.c
// Function: history_decide_discard_new_link
int	history_decide_discard_new_link(t_control *control)
{
	char	*str;
	int		i;
	int		len;

	str = (char *)(control->history->head->content);
	if (!str || !(len = ft_strlen(str)) || control->ctrl_c)
	{
		control->history->size--;
		ft_dlstpop_front(&control->history->head, history_del_content);
		control->ctrl_c = 1;
		return (1);
	}
	i = 0;
	while (str[i] && str[i] == ' ')
		i++;
	if (i == len)
	{
		control->history->size--;
		ft_dlstpop_front(&control->history->head, history_del_content);
		control->ctrl_c = 1;
		return (1);
	}
	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x8449
movq -0x18(%rbp), %rdi
callq 0xfb10
movl %eax, -0x20(%rbp)
cmpl $0x0, %eax
je 0x8449
movq -0x10(%rbp), %rax
movb (%rax), %al
shrb %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
je 0x848a
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0x8, %rdi
leaq -0x34b(%rip), %rsi      # 0x8120
callq 0x10b00
movq -0x10(%rbp), %rax
movb (%rax), %cl
andb $-0x3, %cl
orb $0x2, %cl
movb %cl, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0x851d
movl $0x0, -0x1c(%rbp)
movq -0x18(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x21(%rbp)
je 0x84bc
movq -0x18(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x20, %eax
sete %al
movb %al, -0x21(%rbp)
movb -0x21(%rbp), %al
testb $0x1, %al
jne 0x84c5
jmp 0x84d0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x8491
movl -0x1c(%rbp), %eax
cmpl -0x20(%rbp), %eax
jne 0x8516
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl (%rax), %ecx
addl $-0x1, %ecx
movl %ecx, (%rax)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0x8, %rdi
leaq -0x3da(%rip), %rsi      # 0x8120
callq 0x10b00
movq -0x10(%rbp), %rax
movb (%rax), %cl
andb $-0x3, %cl
orb $0x2, %cl
movb %cl, (%rax)
movl $0x1, -0x4(%rbp)
jmp 0x851d
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/historic_search.c
// Function: history_search
void	history_search(t_control *control, int direction)
{
	t_int_pair cursor_end;

	if (!history_swap_line_in_term_struct(control, direction))
		return ;
	if (!terminfo_refresh_screen_from_start(control))
		return ;
	cursor_end = terminfo_cursor_get_endl(control);
	control->term->cursor = cursor_end;
	terminfo_cursor_move(control, cursor_end.x, cursor_end.y);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x85a0
cmpl $0x0, %eax
jne 0x8552
jmp 0x8596
movq -0x8(%rbp), %rdi
callq 0x59b0
cmpl $0x0, %eax
jne 0x8562
jmp 0x8596
movq -0x8(%rbp), %rdi
callq 0x5d40
movq %rax, -0x1c(%rbp)
movq -0x1c(%rbp), %rax
movq %rax, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x14(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x10(%rbp), %edx
callq 0x6120
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/historic_search.c
// Function: history_swap_line_in_term_struct
int		history_swap_line_in_term_struct(t_control *control, int up)
{
	t_dlist	*new_link;
	char	*old_str;

	if (up == 1)
		new_link = control->term->current_history_link->next;
	else
		new_link = control->term->current_history_link->previous;
	if (!new_link)
		return (0);
	old_str = control->term->line;
	if (!(control->term->line = ft_strdup((char *)(new_link->content))))
	{
		control->quit = 1;
		return (0);
	}
	ft_free((void **)&old_str);
	control->term->current_history_link = new_link;
	control->term->line_len = ft_strlen((char*)(new_link->content));
	control->term->inline_position = control->term->line_len - 1;
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpl $0x1, -0x14(%rbp)
jne 0x85cb
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x58(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
jmp 0x85df
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x58(%rax), %rax
movq 0x10(%rax), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
jne 0x85f2
movl $0x0, -0x4(%rbp)
jmp 0x8687
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0xf950
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rcx
movq %rax, (%rcx)
cmpq $0x0, %rax
jne 0x8635
movq -0x10(%rbp), %rax
movb (%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, (%rax)
movl $0x0, -0x4(%rbp)
jmp 0x8687
leaq -0x28(%rbp), %rdi
callq 0x10600
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rcx, 0x58(%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0xfb10
movl %eax, %ecx
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl %ecx, 0x8(%rax)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl 0x8(%rax), %ecx
subl $0x1, %ecx
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movl %ecx, 0xc(%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/control_structure.c
// Function: control_init_struct
int		control_init_struct(t_control *control)
{
	extern char **environ;

	ft_bzero(control, sizeof(*control));
	control->parent_pid = getpid();
	if (!(control->history = history_init_struct()) ||
		!(control->term = terminfo_init_database()) ||
		!(control->env = env_build_linked_list(environ)))
		return (0);
	if (!control_load_start_prompts(&control->env, \
				"\033[93m⚡\033[5;92m mli_&_charmstr \033[0;93m⚡\033[m ", \
				"🍝 > "))
		return (0);
	if (!env_shlvl_update(&control->env, control))
		return (0);
	if (!(control->cwd = getcwd(NULL, 0)))
		return (0);
	if ((control->truefd[STDIN_FILENO] = dup(STDIN_FILENO)) == -1 ||
		(control->truefd[STDOUT_FILENO] = dup(STDOUT_FILENO)) == -1 ||
		(control->truefd[STDERR_FILENO] = dup(STDERR_FILENO)) == -1)
		return (0);
	if (tcgetattr(STDIN_FILENO, &control->termios_default) == -1)
		return (0);
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movl $0x80, %esi
callq 0xe940
callq 0x2060
movl %eax, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x8(%rax)
callq 0x80c0
movq -0x10(%rbp), %rcx
movq %rax, 0x10(%rcx)
cmpq $0x0, %rax
je 0x86fb
callq 0x5550
movq -0x10(%rbp), %rcx
movq %rax, 0x18(%rcx)
cmpq $0x0, %rax
je 0x86fb
movq 0xe903(%rip), %rax      # 0x16fe8
movq (%rax), %rdi
callq 0x3ba0
movq -0x10(%rbp), %rcx
movq %rax, 0x20(%rcx)
cmpq $0x0, %rax
jne 0x8707
movl $0x0, -0x4(%rbp)
jmp 0x87e4
movq -0x10(%rbp), %rdi
addq $0x20, %rdi
leaq 0x8bda(%rip), %rsi      # 0x112f0
leaq 0x8c01(%rip), %rdx      # 0x1131e
callq 0x87f0
cmpl $0x0, %eax
jne 0x8733
movl $0x0, -0x4(%rbp)
jmp 0x87e4
movq -0x10(%rbp), %rdi
addq $0x20, %rdi
movq -0x10(%rbp), %rsi
callq 0x3ee0
cmpl $0x0, %eax
jne 0x8755
movl $0x0, -0x4(%rbp)
jmp 0x87e4
xorl %eax, %eax
movl %eax, %esi
movq %rsi, %rdi
callq 0x20e0
movq -0x10(%rbp), %rcx
movq %rax, 0x78(%rcx)
cmpq $0x0, %rax
jne 0x8778
movl $0x0, -0x4(%rbp)
jmp 0x87e4
xorl %edi, %edi
callq 0x20c0
movq -0x10(%rbp), %rcx
movl %eax, 0x30(%rcx)
cmpl $-0x1, %eax
je 0x87b7
movl $0x1, %edi
callq 0x20c0
movq -0x10(%rbp), %rcx
movl %eax, 0x34(%rcx)
cmpl $-0x1, %eax
je 0x87b7
movl $0x2, %edi
callq 0x20c0
movq -0x10(%rbp), %rcx
movl %eax, 0x38(%rcx)
cmpl $-0x1, %eax
jne 0x87c0
movl $0x0, -0x4(%rbp)
jmp 0x87e4
movq -0x10(%rbp), %rsi
addq $0x3c, %rsi
xorl %edi, %edi
callq 0x21c0
cmpl $-0x1, %eax
jne 0x87dd
movl $0x0, -0x4(%rbp)
jmp 0x87e4
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/control_structure.c
// Function: control_load_start_prompts
int	control_load_start_prompts(t_list **env, char *ps1, char *ps2)
{
	unset_in_env_list(env, "PS1");
	unset_in_env_list(env, "PS2");
	 if (!export_builtin_new_env("PS1", ps1, env))
			return (0);
	 if (!export_builtin_new_env("PS2", ps2, env))
			return (0);
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x8a29(%rip), %rsi      # 0x11238
callq 0x4090
movq -0x10(%rbp), %rdi
leaq 0x8a15(%rip), %rsi      # 0x11234
callq 0x4090
movq -0x18(%rbp), %rsi
movq -0x10(%rbp), %rdx
leaq 0x8a05(%rip), %rdi      # 0x11238
callq 0x4480
cmpl $0x0, %eax
jne 0x8846
movl $0x0, -0x4(%rbp)
jmp 0x886f
movq -0x20(%rbp), %rsi
movq -0x10(%rbp), %rdx
leaq 0x89df(%rip), %rdi      # 0x11234
callq 0x4480
cmpl $0x0, %eax
jne 0x8868
movl $0x0, -0x4(%rbp)
jmp 0x886f
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/control_structure.c
// Function: control_free_struct
void	control_free_struct(t_control *control)
{
	terminfo_free_struct(control->term);
	ft_dlstclear(&(control->history->head), history_del_content);
	ft_free((void **)&control->history);
	ft_free((void **)&control->cwd);
	ft_lstclear(&control->env, env_del_struct);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x5740
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
addq $0x8, %rdi
leaq -0x78c(%rip), %rsi      # 0x8120
callq 0x10a00
movq -0x8(%rbp), %rdi
addq $0x10, %rdi
callq 0x10600
movq -0x8(%rbp), %rdi
addq $0x78, %rdi
callq 0x10600
movq -0x8(%rbp), %rdi
addq $0x20, %rdi
leaq -0x4b9a(%rip), %rsi     # 0x3d40
callq 0x10090
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_root.c
// Function: ast_add
void		ast_add(t_btree **ast, t_btree *add)
{
	if (add == NULL)
		return ;
	if (*ast == NULL)
		*ast = add;
	else if ((*ast)->left == NULL)
		(*ast)->left = add;
	else if ((*ast)->item == NULL)
	{
		(*ast)->item = add->item;
		ft_free((void **)&add);
	}
	else if ((*ast)->right == NULL)
		(*ast)->right = add;
	else
	{
		add->left = *ast;
		*ast = add;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x892c
jmp 0x89cd
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x8946
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
jmp 0x89cd
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, (%rax)
jne 0x8963
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rcx, (%rax)
jmp 0x89cb
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, 0x10(%rax)
jne 0x898f
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x10(%rax)
leaq -0x10(%rbp), %rdi
callq 0x10600
jmp 0x89c9
movq -0x8(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, 0x8(%rax)
jne 0x89ae
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x8(%rax)
jmp 0x89c7
movq -0x8(%rbp), %rax
movq (%rax), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
movq -0x10(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
jmp 0x89c9
jmp 0x89cb
jmp 0x89cd
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_root.c
// Function: parser_be_subshell
int			parser_be_subshell(t_btree **new)
{
	t_btree *tmp;
	t_token *token;

	tmp = NULL;
	if (!(token = ft_memalloc(sizeof(t_token))))
		return (-1);
	token->id = SUBSHELL;
	if ((*new)->item != NULL)
	{
		if (!(tmp = btree_new(token)))
		{
			ft_free((void **)&token);
			return (-1);
		}
		tmp->left = *new;
		*new = tmp;
	}
	else
		(*new)->item = token;
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq $0x0, -0x18(%rbp)
movl $0x20, %edi
callq 0x104f0
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x8a41
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x8ab0
movq -0x20(%rbp), %rax
movl $0xe, 0x8(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0x8a9a
movq -0x20(%rbp), %rdi
callq 0x10e10
movq %rax, -0x18(%rbp)
cmpq $0x0, %rax
jne 0x8a7f
leaq -0x20(%rbp), %rdi
callq 0x10600
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x8ab0
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x18(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, (%rax)
jmp 0x8aa9
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rcx, 0x10(%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_root.c
// Function: parser_next_child
int			parser_next_child(t_dlist **dlst, t_list **tklst, t_btree **new)
{
//	printf("ENTER WITH : [%d]\t'%s'\n",
//		token_id((*tklst)->content), ((t_token *)(*tklst)->content)->str);
	if (parser_is_cmd_start(tklst_id(*tklst)))
		return (parser_cmd(tklst, new));
	if (parser_do_subtree(token_id((*tklst)->content)))
	{
		*tklst = (*tklst)->next;
		if (!*tklst)
			return (0);
		if (!((*dlst)->next = ft_dlstnew(NULL)))
			return (-1);
		(*dlst)->next->previous = *dlst;
		if (!(*new = parser_create_ast((*dlst)->next, tklst)))
			return (-1);
		if (parser_be_subshell(new) == -1)
			return (-1);
		ft_free((void **)&((*dlst)->next));
//	printf("\nNEW CONTAINS\n");
//		btree_debug(*new, parser_disp);
	}
	else
	{
		if (!(*new = btree_new((*tklst)->content)))
			return (-1);
	}
	if (*tklst)
		*tklst = (*tklst)->next;
//	if ((*new)->item)
//		printf("New is : [%d]\t'%s'\n", token_id((*new)->item), ((t_token *)(*new)->item)->str);
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rdi
callq 0x9330
movl %eax, %edi
callq 0x9100
cmpl $0x0, %eax
je 0x8b01
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x9240
movl %eax, -0x4(%rbp)
jmp 0x8c21
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0x9300
movl %eax, %edi
callq 0x89e0
cmpl $0x0, %eax
je 0x8bd7
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x8b48
movl $0x0, -0x4(%rbp)
jmp 0x8c21
xorl %eax, %eax
movl %eax, %edi
callq 0x10940
movq -0x10(%rbp), %rcx
movq (%rcx), %rcx
movq %rax, 0x8(%rcx)
cmpq $0x0, %rax
jne 0x8b6e
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x8c21
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x8c30
movq -0x20(%rbp), %rcx
movq %rax, (%rcx)
cmpq $0x0, %rax
jne 0x8bae
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x8c21
movq -0x20(%rbp), %rdi
callq 0x8a10
cmpl $-0x1, %eax
jne 0x8bc5
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x8c21
movq -0x10(%rbp), %rax
movq (%rax), %rdi
addq $0x8, %rdi
callq 0x10600
jmp 0x8bfe
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0x10e10
movq -0x20(%rbp), %rcx
movq %rax, (%rcx)
cmpq $0x0, %rax
jne 0x8bfc
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x8c21
jmp 0x8bfe
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
je 0x8c1a
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_root.c
// Function: parser_create_ast
t_btree		*parser_create_ast(t_dlist *dlst, t_list **tklst)
{
	t_btree		*new;
	int			state;

	if (!(dlst->content = btree_new(NULL)))
		return (NULL);
	while (*tklst && token_id((*tklst)->content) != RBRACE)
	{
//		printf("%d\n", token_id(tklst->content));
		if ((state = parser_next_child(&dlst, tklst, &new)) == 1)
			ast_add((t_btree **)&dlst->content, new);
		else if (state == -1)
			return (NULL);
		else if (parser_handle_semi(&dlst, tklst) == -1)
			return (NULL);
	}
	return (dlst->content);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x10e10
movq -0x10(%rbp), %rcx
movq %rax, (%rcx)
cmpq $0x0, %rax
jne 0x8c63
movq $0x0, -0x8(%rbp)
jmp 0x8cfd
jmp 0x8c65
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpq $0x0, (%rcx)
movb %al, -0x25(%rbp)
je 0x8c8c
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0x9300
cmpl $0x7, %eax
setne %al
movb %al, -0x25(%rbp)
movb -0x25(%rbp), %al
testb $0x1, %al
jne 0x8c95
jmp 0x8cf2
movq -0x18(%rbp), %rsi
leaq -0x10(%rbp), %rdi
leaq -0x20(%rbp), %rdx
callq 0x8ac0
movl %eax, -0x24(%rbp)
cmpl $0x1, %eax
jne 0x8cbd
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x8910
jmp 0x8ced
cmpl $-0x1, -0x24(%rbp)
jne 0x8ccd
movq $0x0, -0x8(%rbp)
jmp 0x8cfd
movq -0x18(%rbp), %rsi
leaq -0x10(%rbp), %rdi
callq 0x8d10
cmpl $-0x1, %eax
jne 0x8ce9
movq $0x0, -0x8(%rbp)
jmp 0x8cfd
jmp 0x8ceb
jmp 0x8ced
jmp 0x8c65
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_root.c
// Function: parser_handle_semi
int			parser_handle_semi(t_dlist **dlst, t_list **tklst)
{
	t_btree		*new;

	if (!(*tklst && token_id((*tklst)->content) == SEMI &&
		(tklst_id((*tklst)->next) != RBRACE) && (*tklst = (*tklst)->next)))
		return (0);
	if (!((*dlst)->next = ft_dlstnew(NULL)))
		return (-1);
	(*dlst)->next->previous = *dlst;
	if (!(new = parser_create_ast((*dlst)->next, tklst)))
		return (-1);
	ft_free((void **)&((*dlst)->next));
	ast_add((t_btree **)&(*dlst)->content, new);
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
je 0x8d6b
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0x9300
cmpl $0x1, %eax
jne 0x8d6b
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rdi
callq 0x9330
cmpl $0x7, %eax
je 0x8d6b
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq -0x18(%rbp), %rcx
movq %rax, (%rcx)
cmpq $0x0, %rax
jne 0x8d77
movl $0x0, -0x4(%rbp)
jmp 0x8dfe
xorl %eax, %eax
movl %eax, %edi
callq 0x10940
movq -0x10(%rbp), %rcx
movq (%rcx), %rcx
movq %rax, 0x8(%rcx)
cmpq $0x0, %rax
jne 0x8d9a
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x8dfe
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x8c30
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x8dd7
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x8dfe
movq -0x10(%rbp), %rax
movq (%rax), %rdi
addq $0x8, %rdi
callq 0x10600
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x8910
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_root.c
// Function: tkcmp_braces
int			tkcmp_braces(t_token *token)
{
	int id;

	id = token_id(token);
	if (id == LBRACE || id == RBRACE)
		return (0);
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9300
movl %eax, -0x14(%rbp)
cmpl $0x6, -0x14(%rbp)
je 0x8e34
cmpl $0x7, -0x14(%rbp)
jne 0x8e3d
movl $0x0, -0x4(%rbp)
jmp 0x8e44
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_root.c
// Function: parser_btree_reverse_pipe
void		parser_btree_reverse_pipe(t_btree **ast)
{
	int		id;
	t_btree	*lchild;

	lchild = (*ast)->left;
	while (btree_id(lchild) == PIPE)
		lchild = lchild->left;
	if ((id = btree_id(lchild)) == -1)
		return ;
	if (id == LIST || id == SUBSHELL)
		return ;
	(*ast)->left = lchild->right;
	lchild->right = *ast;
	*ast = lchild;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x9370
cmpl $0x2, %eax
jne 0x8e85
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x18(%rbp)
jmp 0x8e6a
movq -0x18(%rbp), %rdi
callq 0x9370
movl %eax, -0xc(%rbp)
cmpl $-0x1, %eax
jne 0x8e98
jmp 0x8ed2
cmpl $0xf, -0xc(%rbp)
je 0x8ea4
cmpl $0xe, -0xc(%rbp)
jne 0x8ea6
jmp 0x8ed2
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_root.c
// Function: parser_pipe_priority
void		parser_pipe_priority(t_btree **ast)
{
	if (!ast || !*ast)
		return ;
	parser_pipe_priority(&(*ast)->left);
	parser_pipe_priority(&(*ast)->right);
	if (btree_id(*ast) == PIPE)
		parser_btree_reverse_pipe(ast);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x8efd
movq -0x8(%rbp), %rax
cmpq $0x0, (%rax)
jne 0x8eff
jmp 0x8f35
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x8ee0
movq -0x8(%rbp), %rax
movq (%rax), %rdi
addq $0x8, %rdi
callq 0x8ee0
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x9370
cmpl $0x2, %eax
jne 0x8f35
movq -0x8(%rbp), %rdi
callq 0x8e50
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_root.c
// Function: parser_root
t_btree		*parser_root(t_list *tklst, t_control *control)
{
	t_dlist		*dlst;
	t_btree		*ast;
	t_list		*tkcpy;

	ast = NULL;
	if (!(tkcpy = tklst))
		return (NULL);
//	debug_tokens_list(tklst);
	if ((dlst = ft_memalloc(sizeof(*dlst))) &&
		(ast = parser_create_ast(dlst, &tkcpy)))
	{
//		btree_debug(ast, parser_disp);
		ft_lstremove_if(&tklst, NULL, tkcmp_braces, del_token);
		ft_lstclear(&tklst, NULL);
		ft_dlstclear(&dlst, NULL);
		parser_pipe_priority(&ast);
//		btree_debug(ast, parser_disp);
	}
	else
	{
		printf("AST FAILED\n");
		control->quit = 1;
		ft_lstclear(&tklst, del_token);
		ft_dlstclearback_addr(&dlst, (void (*)(void **))&del_ast);
	}
//	parser_LIST_to_CMD_root(ast, control);
	return (ast);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
jne 0x8f73
movq $0x0, -0x8(%rbp)
jmp 0x9022
movl $0x18, %edi
callq 0x104f0
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
je 0x8fde
movq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8c30
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
je 0x8fde
leaq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
leaq -0x19d(%rip), %rdx      # 0x8e10
leaq -0x6674(%rip), %rcx     # 0x2940
callq 0x10ca0
leaq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10090
leaq -0x20(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10a00
leaq -0x28(%rbp), %rdi
callq 0x8ee0
jmp 0x901a
leaq 0x8341(%rip), %rdi      # 0x11326
movb $0x0, %al
callq 0x20b0
movq -0x18(%rbp), %rax
movb (%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, (%rax)
leaq -0x10(%rbp), %rdi
leaq -0x66c5(%rip), %rsi     # 0x2940
callq 0x10090
leaq -0x20(%rbp), %rdi
leaq -0x725(%rip), %rsi      # 0x88f0
callq 0x10c00
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_cmd.c
// Function: parser_cmd_state
int		parser_cmd_state(t_btree *new, t_list **tklst)
{
	if (tklst_id(*tklst) == AND)
	{
		if (!(new->right = btree_new((*tklst)->content)))
			return (0);
		(*tklst) = (*tklst)->next;
	}
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rdi
callq 0x9330
cmpl $0x4, %eax
jne 0x9089
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0x10e10
movq -0x10(%rbp), %rcx
movq %rax, 0x8(%rcx)
cmpq $0x0, %rax
jne 0x9077
movl $0x0, -0x4(%rbp)
jmp 0x9090
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_cmd.c
// Function: parser_is_cmd_param
int		parser_is_cmd_param(int tkid)
{
	if (tkid == -1)
		return (0);
	if (tkid == TOKEN || tkid == D_QUOTE || tkid == S_QUOTE ||
		tkid == LESS || tkid == DLESS || tkid == GREAT || tkid == DGREAT ||
		tkid == AND)
		return (1);
	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl %edi, -0x8(%rbp)
cmpl $-0x1, -0x8(%rbp)
jne 0x90b6
movl $0x0, -0x4(%rbp)
jmp 0x90f6
cmpl $0x0, -0x8(%rbp)
je 0x90e6
cmpl $0x9, -0x8(%rbp)
je 0x90e6
cmpl $0x8, -0x8(%rbp)
je 0x90e6
cmpl $0xa, -0x8(%rbp)
je 0x90e6
cmpl $0xb, -0x8(%rbp)
je 0x90e6
cmpl $0xc, -0x8(%rbp)
je 0x90e6
cmpl $0xd, -0x8(%rbp)
je 0x90e6
cmpl $0x4, -0x8(%rbp)
jne 0x90ef
movl $0x1, -0x4(%rbp)
jmp 0x90f6
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_cmd.c
// Function: parser_is_cmd_start
int		parser_is_cmd_start(int tkid)
{
	if (tkid == -1)
		return (0);
	if (tkid == TOKEN || tkid == D_QUOTE || tkid == S_QUOTE ||
		tkid == LESS || tkid == DLESS || tkid == GREAT || tkid == DGREAT ||
		tkid == AND)
		return (1);
	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl %edi, -0x8(%rbp)
cmpl $-0x1, -0x8(%rbp)
jne 0x9116
movl $0x0, -0x4(%rbp)
jmp 0x9156
cmpl $0x0, -0x8(%rbp)
je 0x9146
cmpl $0x9, -0x8(%rbp)
je 0x9146
cmpl $0x8, -0x8(%rbp)
je 0x9146
cmpl $0xa, -0x8(%rbp)
je 0x9146
cmpl $0xb, -0x8(%rbp)
je 0x9146
cmpl $0xc, -0x8(%rbp)
je 0x9146
cmpl $0xd, -0x8(%rbp)
je 0x9146
cmpl $0x4, -0x8(%rbp)
jne 0x914f
movl $0x1, -0x4(%rbp)
jmp 0x9156
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_cmd.c
// Function: parser_cmdlst
int		parser_cmdlst(t_list **args, t_list **tklst)
{
	t_list *tmp;

	if (!(tmp = ft_lstnew((*tklst)->content)))
		return (0);
	ft_lstadd_back(args, tmp);
	while (((*tklst) = (*tklst)->next) && parser_is_cmd_param(tklst_id(*tklst))
			&& (tmp = ft_lstnew((*tklst)->content)))
		ft_lstadd_back(args, tmp);
	if (!tmp)
	{
		ft_lstclear(args, NULL);
		return (0);
	}
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0x10180
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x9195
movl $0x0, -0x4(%rbp)
jmp 0x9237
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xfff0
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x8(%rax), %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, -0x21(%rbp)
je 0x91fb
movq -0x18(%rbp), %rax
movq (%rax), %rdi
callq 0x9330
movl %eax, %edi
callq 0x90a0
movl %eax, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x21(%rbp)
je 0x91fb
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rdi
callq 0x10180
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
setne %al
movb %al, -0x21(%rbp)
movb -0x21(%rbp), %al
testb $0x1, %al
jne 0x9204
jmp 0x9213
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xfff0
jmp 0x91a2
cmpq $0x0, -0x20(%rbp)
jne 0x9230
movq -0x10(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10090
movl $0x0, -0x4(%rbp)
jmp 0x9237
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_cmd.c
// Function: parser_cmd
int		parser_cmd(t_list **tklst, t_btree **new)
{
	if (!(*new = btree_new(NULL)))
		return (-1);
	if (!((*new)->item = lexer_init_token()))
	{
		ft_free((void **)new);
		return (-1);
	}
	((t_token *)((*new)->item))->id = LIST;
	if (!parser_cmdlst((t_list **)&((t_token *)((*new)->item))->str, tklst))
	{
		ft_free((void **)&(*new)->item);
		ft_free((void **)new);
		return (-1);
	}
	return (1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x10e10
movq -0x18(%rbp), %rcx
movq %rax, (%rcx)
cmpq $0x0, %rax
jne 0x926f
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x92eb
callq 0x29b0
movq -0x18(%rbp), %rcx
movq (%rcx), %rcx
movq %rax, 0x10(%rcx)
cmpq $0x0, %rax
jne 0x9297
movq -0x18(%rbp), %rdi
callq 0x10600
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x92eb
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movl $0xf, 0x8(%rax)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rsi
callq 0x9160
cmpl $0x0, %eax
jne 0x92e4
movq -0x18(%rbp), %rax
movq (%rax), %rdi
addq $0x10, %rdi
callq 0x10600
movq -0x18(%rbp), %rdi
callq 0x10600
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x92eb
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: /workspace/github_c_makefile_star2_O0/charMstr[P]minishell/sources/parser_utils.c
// Function: parser_disp
void		parser_disp(t_token *node, t_btree *parent)
{
	int		i;
	int		fd;
	char	*str;

	fd = 1;
	if (token_id(node) == LIST)
		str = (char	[5]){'l', 's', 't', 47 \
			+ ft_lstsize((t_list *)node->str), '\0'};
	else if (token_id(node) == SUBSHELL)
		str = "shell";
	else
		str = (node ? node->str : "null");
	i = -1;
	ft_putstr_fd("[", fd);
	while (++i < SIZE_LEAF - 2 && str[i])
		ft_putchar_fd(str[i], fd);
	while (i++ < SIZE_LEAF - 2)
		ft_putchar_fd(' ', fd);
	ft_putstr_fd("]", fd);
	(void)parent;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x1, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x9300
cmpl $0xf, %eax
jne 0x9401
movb $0x6c, -0x25(%rbp)
movb $0x73, -0x24(%rbp)
movb $0x74, -0x23(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x101e0
addl $0x2f, %eax
movb %al, -0x22(%rbp)
movb $0x0, -0x21(%rbp)
leaq -0x25(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x9447
movq -0x8(%rbp), %rdi
callq 0x9300
cmpl $0xe, %eax
jne 0x941c
leaq 0x7f1c(%rip), %rax      # 0x11332
movq %rax, -0x20(%rbp)
jmp 0x9445
cmpq $0x0, -0x8(%rbp)
je 0x9430
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x30(%rbp)
jmp 0x943d
leaq 0x7f01(%rip), %rax      # 0x11338
movq %rax, -0x30(%rbp)
jmp 0x943d
movq -0x30(%rbp), %rax
movq %rax, -0x20(%rbp)
jmp 0x9447
movl $0xffffffff, -0x14(%rbp) # imm = 0xFFFFFFFF
movl -0x18(%rbp), %esi
leaq 0x7ee5(%rip), %rdi      # 0x1133d
callq 0xf020
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, -0x14(%rbp)
xorl %eax, %eax
cmpl $0x4, %ecx
movb %al, -0x31(%rbp)
jge 0x9485
movq -0x20(%rbp), %rax
movslq -0x14(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x31(%rbp)
movb -0x31(%rbp), %al
testb $0x1, %al
jne 0x948e
jmp 0x94a6
movq -0x20(%rbp), %rax
movslq -0x14(%rbp), %rcx
movb (%rax,%rcx), %al
movl -0x18(%rbp), %esi
movsbl %al, %edi
callq 0xef10
jmp 0x945d
jmp 0x94a8
movl -0x14(%rbp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, -0x14(%rbp)
cmpl $0x4, %eax
jge 0x94c7
movl -0x18(%rbp), %esi
movl $0x20, %edi
callq 0xef10
jmp 0x94a8
movl -0x18(%rbp), %esi
leaq 0x7f8a(%rip), %rdi      # 0x1145b
callq 0xf020
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)