LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/my_str_to_wordtab.c
// Function: alloc_line
char		*alloc_line(const char *str, char sep, int *i)
{
  char		*line;
  int		tmp;
  int		len;

  tmp = *i;
  len = 0;
  while (str[*i] != '\0' && str[*i] != sep)
    {
      *i = *i + 1;
      len = len + 1;
    }
  if ((line = malloc(sizeof(char) * (len + 1))) == NULL)
    return (NULL);
  len = 0;
  while (tmp < *i)
    line[len++] = str[tmp++];
  line[len] = '\0';
  if (str[*i] != '\0')
    *i = *i + 1;
  return (line);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movl (%rdx), %r14d
movslq %r14d, %rax
leaq (%rdi,%rax), %r15
movb (%rdi,%rax), %al
testb %al, %al
sete %r13b
cmpb %sil, %al
sete %al
orb %r13b, %al
movl $0x1, %edi
movl %r14d, %ebp
jne 0x4c4f
movl %r14d, %ebp
incl %ebp
movl %ebp, (%rbx)
movb (%r15,%rdi), %al
incq %rdi
testb %al, %al
sete %r13b
je 0x4c4f
cmpb %sil, %al
jne 0x4c37
callq 0x2140
movq %rax, %r12
testq %rax, %rax
je 0x4c8d
cmpl %ebp, %r14d
jge 0x4c7d
notl %r14d
addl %ebp, %r14d
incq %r14
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x2120
movl %r14d, %eax
jmp 0x4c7f
xorl %eax, %eax
movb $0x0, (%r12,%rax)
testb %r13b, %r13b
jne 0x4c8d
incl %ebp
movl %ebp, (%rbx)
movq %r12, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/my_str_to_wordtab.c
// Function: my_str_to_wordtab
char		**my_str_to_wordtab(const char *str, char sep)
{
  char		**tab;
  int		words;
  int		i;
  int		j;

  i = 0;
  j = 0;
  if (str == NULL)
    return (NULL);
  words = count_words(str, sep);
  if ((tab = malloc(sizeof(char *) * (words + 1))) == NULL)
    return (NULL);
  while (i < words)
    {
      while (str[j] == sep)
	j = j + 1;
      if ((tab[i] = alloc_line(str, sep, &j)) == NULL)
	return (NULL);
      i = i + 1;
    }
  tab[i] = NULL;
  return (tab);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl $0x0, 0x4(%rsp)
testq %rdi, %rdi
je 0x4d2d
movl %esi, %ebp
movq %rdi, %r14
movsbl %bpl, %r15d
movl %r15d, %esi
callq 0x4b98
movl %eax, %r12d
cltq
leaq 0x8(,%rax,8), %rdi
callq 0x2140
testq %rax, %rax
je 0x4d2d
movq %rax, %rbx
testl %r12d, %r12d
jle 0x4d31
movl %r12d, %r13d
xorl %r12d, %r12d
movslq 0x4(%rsp), %rax
leal -0x1(%rax), %ecx
addq %r14, %rax
incl %ecx
leaq 0x1(%rax), %rdx
cmpb %bpl, (%rax)
movq %rdx, %rax
je 0x4cf8
movl %ecx, 0x4(%rsp)
movq %r14, %rdi
movl %r15d, %esi
leaq 0x4(%rsp), %rdx
callq 0x4c00
movq %rax, (%rbx,%r12,8)
testq %rax, %rax
je 0x4d2d
incq %r12
cmpq %r13, %r12
jne 0x4ced
jmp 0x4d34
xorl %ebx, %ebx
jmp 0x4d3c
xorl %r13d, %r13d
movq $0x0, (%rbx,%r13,8)
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/my_str_isalpha.c
// Function: my_str_isalpha
int		my_str_isalpha(char *str)
{
  int		i;

  i = 0;
  while (str[i] != '\0')
    {
      if ((str[i] < '0' || str[i] > '9')
	  && (str[i] < 'A' || str[i] > 'Z')
	  && (str[i] < 'a' || str[i] > 'z'))
	return (1);
      i += 1;
    }
  return (0);
}

// Assembly:
movb (%rdi), %cl
xorl %eax, %eax
testb %cl, %cl
je 0x4d77
incq %rdi
leal -0x3a(%rcx), %edx
cmpb $-0xb, %dl
ja 0x4d6e
andb $-0x21, %cl
addb $-0x5b, %cl
cmpb $-0x1b, %cl
jbe 0x4d78
movb (%rdi), %cl
incq %rdi
testb %cl, %cl
jne 0x4d5b
retq
movl $0x1, %eax
retq
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/my_strdup.c
// Function: my_strdup
char	*my_strdup(char *src)
{
  int	i;
  char	*copy;

  i = 0;
  if (src == NULL)
    return (NULL);
  if ((copy = malloc(sizeof(char) * (my_strlen(src) + 1))) == NULL)
    return (NULL);
  while (src[i] != '\0')
    {
      copy[i] = src[i];
      i = i + 1;
    }
  copy[i] = '\0';
  return (copy);
}

// Assembly:
testq %rdi, %rdi
je 0x4dc7
pushq %rbx
movq %rdi, %rbx
callq 0x4704
incl %eax
movslq %eax, %rdi
callq 0x2140
testq %rax, %rax
je 0x4dca
movb (%rbx), %dl
xorl %ecx, %ecx
testb %dl, %dl
je 0x4dc1
movb %dl, (%rax,%rcx)
movb 0x1(%rbx,%rcx), %dl
incq %rcx
jmp 0x4db1
movb $0x0, (%rax,%rcx)
jmp 0x4dcc
xorl %eax, %eax
retq
xorl %eax, %eax
popq %rbx
retq
nop
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/read_file.c
// Function: read_file
char		*read_file(char *path)
{
  char		*my_file;
  int		fd;
  char		buffer[2];

  buffer[1] = '\0';
  my_file = NULL;
  if ((fd = open(path, O_RDONLY)) == -1)
    {
      my_printf("%s: %s", path, NO_SUCH_FILE);
      return (NULL);
    }
  while (read(fd, buffer, 1) != 0)
    my_file = my_strcat(my_file, buffer, 1);
  close(fd);
  return (my_file);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %r15
movb $0x0, 0xf(%rsp)
xorl %esi, %esi
xorl %eax, %eax
callq 0x2160
cmpl $-0x1, %eax
je 0x4e3f
movl %eax, %ebx
leaq 0xe(%rsp), %rsi
movl $0x1, %edx
movl %eax, %edi
callq 0x2100
xorl %r14d, %r14d
testq %rax, %rax
je 0x4e36
leaq 0xe(%rsp), %r15
movq %r14, %rdi
movq %r15, %rsi
movl $0x1, %edx
callq 0x4f08
movq %rax, %r14
movl $0x1, %edx
movl %ebx, %edi
movq %r15, %rsi
callq 0x2100
testq %rax, %rax
jne 0x4e0f
movl %ebx, %edi
callq 0x20d0
jmp 0x4e5a
leaq 0x239e(%rip), %rdi      # 0x71e4
leaq 0x2221(%rip), %rdx      # 0x706e
xorl %r14d, %r14d
movq %r15, %rsi
xorl %eax, %eax
callq 0x5bb6
movq %r14, %rax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
nop
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/command_verif.c
// Function: pipe_verif
int		pipe_verif(t_info_shell *shell)
{
  int		i;
  char		*command;

  i = 0;
  command = shell->command;
  while (command[i] != '\0')
    {
      if (command[i] != '|')
        return (0);
      i += 1;
    }
  my_printf("%s", INVALID_NULL);
  shell->exit_value = 1;
  return (1);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rax
movzbl (%rax), %ecx
cmpl $0x7c, %ecx
jne 0x4e7c
incq %rax
jmp 0x4e6f
testl %ecx, %ecx
jne 0x4ea3
leaq 0x2361(%rip), %rdi      # 0x71e8
leaq 0x243d(%rip), %rsi      # 0x72cb
xorl %eax, %eax
callq 0x5bb6
movl $0x1, 0x3c(%rbx)
movl $0x1, %eax
jmp 0x4ea5
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/my_strcat.c
// Function: my_strcat
char		*my_strcat(char *dest, char *src, int bhv)
{
  size_t	i;
  size_t	j;
  char		*new;

  i = (dest != NULL) ? my_strlen(dest) : 0;
  j = (src != NULL) ? my_strlen(src) : 0;
  if ((new = malloc(sizeof(char) * (i + j + 1))) == NULL)
    return (NULL);
  i = 0;
  j = 0;
  if (dest != NULL)
    while (dest[i] != '\0')
      {
        new[i] = dest[i];
        i += 1;
      }
  new[i] = '\0';
  if (src != NULL)
    while (src[j] != '\0')
      new[i++] = src[j++];
  new[i] = '\0';
  if (bhv == 2)
    return (new);
  (bhv == 0) ? (free(dest), free(src)) : (free(dest));
  return (new);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
testq %rdi, %rdi
je 0x4f2c
movq %r14, %rdi
callq 0x4704
movslq %eax, %r15
incq %r15
jmp 0x4f32
movl $0x1, %r15d
testq %rbx, %rbx
je 0x4f43
movq %rbx, %rdi
callq 0x4704
cltq
jmp 0x4f45
xorl %eax, %eax
addq %rax, %r15
movq %r15, %rdi
callq 0x2140
movq %rax, %r15
testq %rax, %rax
je 0x4fc1
testq %r14, %r14
je 0x4f78
movb (%r14), %cl
testb %cl, %cl
je 0x4f78
xorl %eax, %eax
movb %cl, (%r15,%rax)
movb 0x1(%r14,%rax), %cl
incq %rax
testb %cl, %cl
jne 0x4f66
jmp 0x4f7a
xorl %eax, %eax
movb $0x0, (%r15,%rax)
testq %rbx, %rbx
je 0x4f9e
movb (%rbx), %cl
testb %cl, %cl
je 0x4f9e
leaq 0x1(%rbx), %rdx
movb %cl, (%r15,%rax)
incq %rax
movb (%rdx), %cl
incq %rdx
testb %cl, %cl
jne 0x4f8e
movb $0x0, (%r15,%rax)
cmpl $0x2, %ebp
je 0x4fc1
testl %ebp, %ebp
jne 0x4fb6
movq %r14, %rdi
callq 0x2030
jmp 0x4fb9
movq %r14, %rbx
movq %rbx, %rdi
callq 0x2030
movq %r15, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/command_normed.c
// Function: command_normed
char		*command_normed(char *command, char sep)
{
  int		i;
  int		j;
  char		*str;

  if ((str = malloc(sizeof(char) * my_strlen(command)
                    + my_count(command, sep) + 1)) == NULL)
    return (NULL);
  i = -1;
  j = 0;
  while (command[++i] != '\0')
    {
      if ((command[i] == sep) && i != 0 &&(command[i - 1] != ' '))
        str[j++] = ' ';
      str[j] = command[i];
      if ((command[i] == sep) && (command[i + 1] != ' ') && command[i + 1] != 0)
        str[j++ + 1] = ' ';
      j += 1;
    }
  str[j] = '\0';
  if ((str = clean_pipes(str, '|')) == NULL)
    return (NULL);
  if ((str = clean_pipes(str, '&')) == NULL)
    return (NULL);
  return (str);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movl %esi, %ebx
movq %rdi, %r14
callq 0x4704
movslq %eax, %r15
movq %r14, %rdi
movl %ebx, %esi
callq 0x47a0
cltq
leaq (%r15,%rax), %rdi
incq %rdi
callq 0x2140
testq %rax, %rax
je 0x508f
movb (%r14), %sil
xorl %ecx, %ecx
testb %sil, %sil
je 0x5067
xorl %edx, %edx
cmpb %bl, %sil
setne %dil
testq %rdx, %rdx
sete %r8b
orb %dil, %r8b
jne 0x5033
cmpb $0x20, -0x1(%r14,%rdx)
je 0x5033
movslq %ecx, %rdi
incl %ecx
movb $0x20, (%rax,%rdi)
movslq %ecx, %rdi
movb %sil, (%rax,%rdi)
cmpb %bl, %sil
jne 0x5055
movzbl 0x1(%r14,%rdx), %esi
testb $-0x21, %sil
je 0x5055
movb $0x20, 0x1(%rax,%rdi)
incq %rdi
movl %edi, %ecx
incl %ecx
movb 0x1(%r14,%rdx), %sil
incq %rdx
testb %sil, %sil
jne 0x500f
movslq %ecx, %rcx
movb $0x0, (%rax,%rcx)
movq %rax, %rdi
movl $0x7c, %esi
callq 0x5865
testq %rax, %rax
je 0x508f
movq %rax, %rdi
movl $0x26, %esi
popq %rbx
popq %r14
popq %r15
jmp 0x5865
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
nop
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/tab/tabulation.c
// Function: sort_dir
char		**sort_dir(char *command)
{
  int		i;
  int		j;
  int		size;
  char		**dir;
  char		**new_tab;

  i = 0;
  size = 0;
  j = 0;
  if (((dir = my_ls(".", &size)) == NULL)
      || ((new_tab = malloc(sizeof(char *) * size + 1)) == NULL))
    return (NULL);
  while (dir[i] != NULL)
    {
      if (my_find_str(dir[i], command) == 1)
	new_tab[j++] = my_strdup(dir[i]);
      i += 1;
    }
  new_tab[j] = NULL;
  free_all(NULL, dir);
  return (new_tab);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %r15
leaq 0xc(%rsp), %rsi
movl $0x0, (%rsi)
leaq 0x1f95(%rip), %rdi      # 0x704f
callq 0x51fd
testq %rax, %rax
je 0x5137
movq %rax, %r14
movslq 0xc(%rsp), %rax
leaq 0x1(,%rax,8), %rdi
callq 0x2140
testq %rax, %rax
je 0x5137
movq %rax, %rbx
movq (%r14), %rdi
xorl %r12d, %r12d
testq %rdi, %rdi
je 0x5123
movq %r14, %r13
addq $0x8, %r13
movq %r15, %rsi
callq 0x46c8
cmpl $0x1, %eax
jne 0x5113
movq -0x8(%r13), %rdi
callq 0x4d90
movslq %r12d, %rcx
incl %r12d
movq %rax, (%rbx,%rcx,8)
movq (%r13), %rdi
addq $0x8, %r13
testq %rdi, %rdi
jne 0x50f3
movslq %r12d, %r12
movq $0x0, (%rbx,%r12,8)
xorl %edi, %edi
movq %r14, %rsi
callq 0x4715
jmp 0x5139
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/tab/tabulation.c
// Function: tabulation
void		tabulation(char *command)
{
  char		**tab;
  int		i;

  i = 0;
  tab = sort_dir(command);
  if (my_tablen(tab) == 1)
    {
      while (command[i] == *tab[i])
	i += 1;
      while (*tab[i] != '\0')
	{
	  write(0, &(*tab[i]), 1);
	  i += 1;
	}
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rdi, %rbx
callq 0x5098
movq %rax, %r14
movq %rax, %rdi
callq 0x4788
cmpl $0x1, %eax
jne 0x51a3
movq $-0x1, %rax
movq %r14, %r15
movb 0x1(%rbx,%rax), %cl
movq (%r15), %rdx
addq $0x8, %r15
incq %rax
cmpb (%rdx), %cl
je 0x5171
movl %eax, %eax
movq (%r14,%rax,8), %rsi
cmpb $0x0, (%rsi)
je 0x51a3
movl $0x1, %edx
xorl %edi, %edi
callq 0x2070
movq (%r15), %rsi
addq $0x8, %r15
jmp 0x5189
popq %rbx
popq %r14
popq %r15
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/tab/my_ls.c
// Function: dir_len
int		dir_len(char *path, int nb)
{
  struct dirent *ptr;
  int		i;
  DIR		*dir;

  i = 0;
  if (((dir = opendir(path)) == NULL) || ((ptr = readdir(dir)) == NULL))
    return (84);
  while (ptr != NULL)
    {
      if (nb != 0)
	{
	  if ((ptr->d_name)[0] != '.')
	    i += 1;
	}
      else if (nb == 0)
	i += 1;
      ptr = readdir(dir);
    }
  return (i);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %esi, %ebx
callq 0x2080
movl $0x54, %ebp
testq %rax, %rax
je 0x51f6
movq %rax, %r14
movq %rax, %rdi
callq 0x2130
testq %rax, %rax
je 0x51f6
xorl %ebp, %ebp
testl %ebx, %ebx
je 0x51e2
xorl %ecx, %ecx
cmpb $0x2e, 0x13(%rax)
setne %cl
jmp 0x51e7
movl $0x1, %ecx
addl %ecx, %ebp
movq %r14, %rdi
callq 0x2130
testq %rax, %rax
jne 0x51d3
movl %ebp, %eax
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/tab/my_ls.c
// Function: my_ls
char		**my_ls(char *path, int *size)
{
  struct dirent *ptr;
  int		i;
  DIR		*dir;
  char		**tab;
  int		len;

  i = 0;
  if ((len = dir_len(path, 0) + 1) == 84)
    return (NULL);
  *size = len;
  if ((tab = malloc(sizeof(char *) * len + 1)) == NULL)
    return (NULL);
  if (((dir = opendir(path)) == NULL) || ((ptr = readdir(dir)) == NULL))
    return (NULL);
  while (ptr != NULL)
    {
      tab[i++] = my_strdup(ptr->d_name);
      ptr = readdir(dir);
    }
  closedir(dir);
  tab[i] = NULL;
  return (tab);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
movq %rsi, %r15
movq %rdi, %r14
xorl %ebx, %ebx
xorl %esi, %esi
callq 0x51ac
incl %eax
cmpl $0x54, %eax
je 0x5289
movl %eax, (%r15)
cltq
leaq 0x1(,%rax,8), %rdi
callq 0x2140
testq %rax, %rax
je 0x5287
movq %rax, %rbx
movq %r14, %rdi
callq 0x2080
testq %rax, %rax
je 0x5287
movq %rax, %r14
movq %rax, %rdi
callq 0x2130
testq %rax, %rax
je 0x5287
xorl %r15d, %r15d
addq $0x13, %rax
movq %rax, %rdi
callq 0x4d90
movq %rax, (%rbx,%r15,8)
incq %r15
movq %r14, %rdi
callq 0x2130
testq %rax, %rax
jne 0x5252
movq %r14, %rdi
callq 0x20f0
movl %r15d, %eax
movq $0x0, (%rbx,%rax,8)
jmp 0x5289
xorl %ebx, %ebx
movq %rbx, %rax
popq %rbx
popq %r14
popq %r15
retq
nop
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/command_bonus/repeat.c
// Function: repeat_check
int		repeat_check(t_info_shell *shell)
{
  int		i;

  i = my_tablen(shell->tab);
  if ((i == 1) || (i == 2))
    {
      my_printf("repeat: Too few arguments.\n");
      shell->exit_value = 1;
      return (84);
    }
  if (my_strcmp("repeat", shell->tab[0]) != 0)
    return (84);
  if (my_strisnum(shell->tab[1]) != 0)
    {
      my_printf("repeat: Badly formed number.\n");
      shell->exit_value = 1;
      return (84);
    }
  return (0);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0x18(%rdi), %rdi
callq 0x4788
decl %eax
cmpl $0x2, %eax
jae 0x52e7
leaq 0x2010(%rip), %rdi      # 0x72e2
xorl %eax, %eax
callq 0x5bb6
movl $0x1, 0x3c(%rbx)
movl $0x54, %eax
jmp 0x5305
movq 0x18(%rbx), %rax
movq (%rax), %rsi
leaq 0x1eda(%rip), %rdi      # 0x71cf
callq 0x4752
movl %eax, %ecx
movl $0x54, %eax
testl %ecx, %ecx
je 0x5307
popq %rbx
retq
movq 0x18(%rbx), %rax
movq 0x8(%rax), %rcx
movb (%rcx), %dl
xorl %eax, %eax
testb %dl, %dl
je 0x5305
incq %rcx
leaq 0x1fdd(%rip), %rdi      # 0x72fe
addb $-0x3a, %dl
cmpb $-0xb, %dl
jbe 0x52d2
movb (%rcx), %dl
incq %rcx
testb %dl, %dl
jne 0x5321
jmp 0x5305
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/command_bonus/repeat.c
// Function: cut_my_string
char		*cut_my_string(char *command)
{
  int		i;
  int		j;
  char		*new_command;

  new_command = malloc(sizeof(char) * my_strlen(command) + 1);
  i = 7;
  j = 0;
  while (command[i] != ' ')
    i += 1;
  while (command[i] != '\0')
    {
      new_command[j] = command[i];
      i += 1;
      j += 1;
    }
  new_command[j] = '\0';
  return (new_command);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x4704
movslq %eax, %rdi
incq %rdi
callq 0x2140
movl $0x6, %ecx
cmpb $0x20, 0x1(%rbx,%rcx)
leaq 0x1(%rcx), %rcx
jne 0x534d
movl %ecx, %edx
movb (%rbx,%rdx), %sil
testb %sil, %sil
je 0x537e
xorl %edx, %edx
movb %sil, (%rax,%rdx)
leaq (%rbx,%rdx), %rsi
incq %rdx
movb 0x1(%rcx,%rsi), %sil
testb %sil, %sil
jne 0x5365
movl %edx, %ecx
jmp 0x5380
xorl %ecx, %ecx
movb $0x0, (%rax,%rcx)
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/command_bonus/repeat.c
// Function: repeat
int		repeat(t_info_shell *shell)
{
  int		i;
  int		nb;
  char		**save_tab;
  char		*save_string;

  i = 0;
  if ((repeat_check(shell)) != 0)
    return (84);
  nb = atoi(shell->tab[1]);
  if ((nb == 0) || (nb < 0))
    return (0);
  save_tab = cut_my_tab(shell->tab);
  save_string = cut_my_string(shell->command);
  while (i < nb)
    {
      shell->command = save_string;
      shell->tab = save_tab;
      execution_in_chain(shell);
      i += 1;
    }
  return (0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x52b7
movl $0x54, %ebp
testl %eax, %eax
jne 0x542a
movq 0x18(%rbx), %r12
movq 0x8(%r12), %rdi
callq 0x2190
xorl %ebp, %ebp
testl %eax, %eax
jle 0x542a
movl %eax, %r14d
movq %r12, %rdi
callq 0x4788
movslq %eax, %rdi
shlq $0x3, %rdi
callq 0x2140
movq %rax, %r15
testq %rax, %rax
je 0x540b
movq 0x10(%r12), %rdi
testq %rdi, %rdi
je 0x5401
xorl %r13d, %r13d
callq 0x4d90
movq %rax, (%r15,%r13,8)
movq 0x18(%r12,%r13,8), %rdi
incq %r13
testq %rdi, %rdi
jne 0x53e6
movl %r13d, %eax
jmp 0x5403
xorl %eax, %eax
movq $0x0, (%r15,%rax,8)
movq (%rbx), %rdi
callq 0x5334
movq %rax, %r12
movq %r12, (%rbx)
movq %r15, 0x18(%rbx)
movq %rbx, %rdi
callq 0x330c
decl %r14d
jne 0x5416
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/command_bonus/which.c
// Function: verif_path
void		verif_path(t_info_shell *shell, int ptr)
{
  char		*path;

  if (my_strcmp(shell->tab[0], "echo") == 0)
    {
      my_printf("echo: shell built-in command.\n");
      ptr = 1;
    }
  if (ptr == 0)
    {
      if ((path = is_valid_command(shell)) != NULL)
	my_printf("%s\n", path);
      else
	{
	  my_printf("%s: %s", shell->tab[0], COMMAND_ERROR);
	  shell->exit_value = 1;
	}
    }
  ptr = 0;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
movq 0x18(%rdi), %rax
movq (%rax), %rdi
leaq 0x1eb3(%rip), %rsi      # 0x7337
callq 0x4752
testl %eax, %eax
je 0x5498
testl %ebp, %ebp
je 0x54ac
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x1e9d(%rip), %rdi      # 0x733c
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5bb6
movq %rbx, %rdi
callq 0x301a
testq %rax, %rax
je 0x54d0
leaq 0x1eef(%rip), %rdi      # 0x73af
movq %rax, %rsi
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x5bb6
movq 0x18(%rbx), %rax
movq (%rax), %rsi
leaq 0x1d06(%rip), %rdi      # 0x71e4
leaq 0x1d06(%rip), %rdx      # 0x71eb
xorl %eax, %eax
callq 0x5bb6
movl $0x1, 0x3c(%rbx)
jmp 0x5491
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/command_bonus/which.c
// Function: which
int		which(t_info_shell *shell)
{
  int		i;
  int		ptr;

  ptr = 0;
  if ((which_verif(shell)) != 0)
    return (84);
  while (1)
    {
      i = 0;
      if ((shell->tab = cut_my_tab(shell)) == NULL)
	break ;
      while (i < 10)
	{
	  if (my_strcmp(shell->tab[0], g_key[i].code) == 0)
	    {
	      my_printf("%s: shell built-in comand.\n", g_key[i].code);
	      ptr = 1;
	    }
	  i += 1;
	}
      verif_path(shell, ptr);
    }
  return (0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x543c
movl %eax, %ecx
movl $0x54, %eax
testl %ecx, %ecx
jne 0x55fa
movq 0x18(%rbx), %rdi
callq 0x4788
cltq
leaq 0x1(,%rax,8), %rdi
callq 0x2140
testq %rax, %rax
je 0x55f0
movq %rax, %r15
leaq 0x576e(%rip), %r12      # 0xacb0
leaq 0x1e12(%rip), %r14      # 0x735b
xorl %ebp, %ebp
movq 0x18(%rbx), %rax
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x55f0
xorl %r13d, %r13d
callq 0x4d90
movq %rax, (%r15,%r13,8)
movq 0x18(%rbx), %rax
movq 0x10(%rax,%r13,8), %rdi
incq %r13
testq %rdi, %rdi
jne 0x555f
movl %r13d, %eax
movq $0x0, (%r15,%rax,8)
movq %r15, 0x18(%rbx)
xorl %r13d, %r13d
movq 0x18(%rbx), %rax
movq (%rax), %rdi
movq (%r13,%r12), %r15
movq %r15, %rsi
callq 0x4752
testl %eax, %eax
jne 0x55b5
movq %r14, %rdi
movq %r15, %rsi
xorl %eax, %eax
callq 0x5bb6
movl $0x1, %ebp
addq $0x10, %r13
cmpq $0xa0, %r13
jne 0x558b
movq %rbx, %rdi
movl %ebp, %esi
callq 0x546e
movq 0x18(%rbx), %rdi
callq 0x4788
cltq
leaq 0x1(,%rax,8), %rdi
callq 0x2140
movq %rax, %r15
testq %rax, %rax
jne 0x554b
movq $0x0, 0x18(%rbx)
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/command_bonus/where.c
// Function: where
int		where(t_info_shell *shell)
{
  int		i;
  char		*path;

  if ((where_verif(shell)) != 0)
    return (84);
  while (1)
    {
      i = 0;
      if ((shell->tab = cut_my_tab(shell)) == NULL)
	break ;
      while (i < 10)
	{
	  if (my_strcmp(shell->tab[0], g_key[i].code) == 0)
	    my_printf("%s: shell built-in comand.\n", g_key[i].code);
	  i += 1;
	}
      if (my_strcmp(shell->tab[0], "echo") == 0)
	my_printf("echo is a shell built-in\n");
      if ((path = is_valid_command(shell)) != NULL)
	my_printf("%s\n%s\n", path, cut_string(path));
      else
	shell->exit_value = 1;
    }
  return (0);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x560c
movl %eax, %ecx
movl $0x54, %eax
testl %ecx, %ecx
jne 0x57d5
movq 0x18(%rbx), %rdi
callq 0x4788
cltq
leaq 0x1(,%rax,8), %rdi
callq 0x2140
testq %rax, %rax
je 0x57cb
movq %rax, %rbp
leaq 0x56c5(%rip), %r12      # 0xad50
leaq 0x1cc9(%rip), %r14      # 0x735b
leaq 0x1c9e(%rip), %r15      # 0x7337
movq 0x18(%rbx), %rax
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x57cb
xorl %r13d, %r13d
callq 0x4d90
movq %rax, (%rbp,%r13,8)
movq 0x18(%rbx), %rax
movq 0x10(%rax,%r13,8), %rdi
incq %r13
testq %rdi, %rdi
jne 0x56ad
movl %r13d, %eax
movq $0x0, (%rbp,%rax,8)
movq %rbp, 0x18(%rbx)
xorl %r13d, %r13d
movq 0x18(%rbx), %rax
movq (%rax), %rdi
movq (%r13,%r12), %rbp
movq %rbp, %rsi
callq 0x4752
testl %eax, %eax
jne 0x5700
movq %r14, %rdi
movq %rbp, %rsi
xorl %eax, %eax
callq 0x5bb6
addq $0x10, %r13
cmpq $0xa0, %r13
jne 0x56db
movq 0x18(%rbx), %rax
movq (%rax), %rdi
movq %r15, %rsi
callq 0x4752
testl %eax, %eax
jne 0x572e
leaq 0x1c6b(%rip), %rdi      # 0x7392
xorl %eax, %eax
callq 0x5bb6
movq %rbx, %rdi
callq 0x301a
testq %rax, %rax
je 0x5784
movq %rax, %rbp
movq %rax, %rdi
callq 0x4704
movslq %eax, %rdi
callq 0x2140
testq %rax, %rax
je 0x5793
xorl %edx, %edx
cmpb $0x2f, 0x1(%rbp,%rdx)
leaq 0x1(%rdx), %rdx
jne 0x5755
movl %edx, %ecx
movb (%rbp,%rcx), %cl
testb %cl, %cl
je 0x578d
leaq (%rdx,%rbp), %rsi
incq %rsi
xorl %edx, %edx
movb %cl, (%rax,%rdx)
movb (%rsi,%rdx), %cl
incq %rdx
testb %cl, %cl
jne 0x5773
movl %edx, %ecx
jmp 0x578f
movl $0x1, 0x3c(%rbx)
jmp 0x57a7
xorl %ecx, %ecx
movb $0x0, (%rax,%rcx)
leaq 0x1c12(%rip), %rdi      # 0x73ac
movq %rbp, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x5bb6
movq 0x18(%rbx), %rdi
callq 0x4788
cltq
leaq 0x1(,%rax,8), %rdi
callq 0x2140
movq %rax, %rbp
testq %rax, %rax
jne 0x5699
movq $0x0, 0x18(%rbx)
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/my_clean_pipes.c
// Function: add_a_space
char	*add_a_space(char *str, int pos)
{
  char	*new_str;
  int	i;

  i = 0;
  if ((new_str = malloc(sizeof(char)
			* (my_strlen(str) + 2))) == NULL)
    return (NULL);
  while (i != pos)
    {
      new_str[i] = str[i];
      i++;
    }
  new_str[i] = ' ';
  while (str[i] != 0)
    {
      new_str[i + 1] = str[i];
      i++;
    }
  new_str[i + 1] = 0;
  free(str);
  return (new_str);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
callq 0x4704
addl $0x2, %eax
movslq %eax, %rdi
callq 0x2140
movq %rax, %r14
testq %rax, %rax
je 0x5857
testl %ebp, %ebp
je 0x581f
movl %ebp, %r15d
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x2120
jmp 0x5822
xorl %r15d, %r15d
movb $0x20, (%r14,%r15)
movb (%rbx,%r15), %al
testb %al, %al
je 0x5846
leaq 0x1(%r15), %rcx
movb %al, 0x1(%r14,%r15)
movb 0x1(%rbx,%r15), %al
movq %rcx, %r15
testb %al, %al
jne 0x582f
jmp 0x5849
movq %r15, %rcx
movb $0x0, 0x1(%r14,%rcx)
movq %rbx, %rdi
callq 0x2030
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/my_clean_pipes.c
// Function: clean_pipes
char	*clean_pipes(char *str, char c)
{
  int	i;

  i = 0;
  while (str[i + 1] != 0)
    {
      if ((str[i] == c && str[i + 1] != c && str[i + 1] != ' '))
	if ((str = add_a_space(str, i + 1)) == NULL)
	  return (NULL);
      if ((i > 0 && str[i] == c && str[i - 1] != c && str[i - 1] != ' '))
	if ((str = add_a_space(str, i)) == NULL)
	  return (NULL);
      i++;
    }
  if ((str[i] == '|' && str[i + 1] == 0))
    if ((str = add_a_space(str, i)) == NULL)
      return (NULL);
  return (str);
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movq %rdi, %rax
movb 0x1(%rdi), %cl
testb %cl, %cl
je 0x58d1
movl %esi, %ebp
xorl %ebx, %ebx
cmpb $0x20, %cl
je 0x5896
cmpb %bpl, %cl
je 0x5896
cmpb %bpl, (%rax,%rbx)
jne 0x5896
leal 0x1(%rbx), %esi
movq %rax, %rdi
callq 0x57e4
testq %rax, %rax
je 0x58eb
testq %rbx, %rbx
je 0x58c4
cmpb %bpl, (%rax,%rbx)
jne 0x58c4
movb -0x1(%rax,%rbx), %cl
cmpb %bpl, %cl
sete %dl
cmpb $0x20, %cl
sete %cl
orb %dl, %cl
jne 0x58c4
movq %rax, %rdi
movl %ebx, %esi
callq 0x57e4
testq %rax, %rax
je 0x58eb
movb 0x2(%rax,%rbx), %cl
incq %rbx
testb %cl, %cl
jne 0x5876
jmp 0x58d3
xorl %ebx, %ebx
movl %ebx, %ecx
cmpb $0x7c, (%rax,%rcx)
jne 0x58ed
movq %rax, %rdi
movl %ebx, %esi
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0x57e4
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/my_magic_quote.c
// Function: special_strdup
char		*special_strdup(char *str)
{
  int		i;
  int		j;
  char		*new_str;

  if ((new_str = malloc(sizeof(char)
			* (my_strlen(str) - 2) + 1)) == NULL)
    return (NULL);
  i = 1;
  j = 0;
  while (str[i + 1] != '\0')
    {
      new_str[j] = str[i];
      i += 1;
      j += 1;
    }
  new_str[j] = '\0';
  return (new_str);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x4704
movslq %eax, %rdi
decq %rdi
callq 0x2140
testq %rax, %rax
je 0x5950
cmpb $0x0, 0x2(%rbx)
je 0x594a
xorl %ecx, %ecx
movb 0x1(%rbx,%rcx), %dl
movb %dl, (%rax,%rcx)
cmpb $0x0, 0x3(%rbx,%rcx)
leaq 0x1(%rcx), %rcx
jne 0x5934
movl %ecx, %ecx
jmp 0x594c
xorl %ecx, %ecx
movb $0x0, (%rax,%rcx)
popq %rbx
retq
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/my_magic_quote.c
// Function: check_magic_quote
int		check_magic_quote(t_info_shell *shell, char *str)
{
  char		**tab;
  char		**save;

  if ((tab = malloc(sizeof(char *) * 2)) == NULL)
    return (84);
  if ((tab[0] = special_strdup(str)) == NULL)
    return (84);
  tab[1] = NULL;
  save = shell->tab;
  shell->tab = tab;
  if (is_valid_command(shell) == NULL)
    my_printf("%s: %s", tab[0], COMMAND_ERROR);
  shell->tab = save;
  free_all(NULL, tab);
  return (0);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r12
movq %rdi, %rbx
movl $0x10, %edi
callq 0x2140
movl $0x54, %r15d
testq %rax, %rax
je 0x59ce
movq %rax, %r14
movq %r12, %rdi
callq 0x5913
movq %rax, (%r14)
testq %rax, %rax
je 0x59ce
movq $0x0, 0x8(%r14)
movq 0x18(%rbx), %r15
movq %r14, 0x18(%rbx)
movq %rbx, %rdi
callq 0x301a
testq %rax, %rax
jne 0x59bd
movq (%r14), %rsi
leaq 0x1835(%rip), %rdi      # 0x71e4
leaq 0x1835(%rip), %rdx      # 0x71eb
xorl %eax, %eax
callq 0x5bb6
movq %r15, 0x18(%rbx)
xorl %r15d, %r15d
xorl %edi, %edi
movq %r14, %rsi
callq 0x4715
movl %r15d, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/MaxenceEpitech[P]42sh/src/my_magic_quote.c
// Function: my_magic_quote
int		my_magic_quote(t_info_shell *shell)
{
  int		i;

  i = 0;
  while (shell->tab[i] != NULL)
    {
      if ((detect_magic_quote(shell->tab[i])) == 1)
	if ((check_magic_quote(shell, shell->tab[i])) == 84)
	  return (84);
      i += 1;
    }
  return (0);
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq 0x18(%rdi), %rax
movq (%rax), %rsi
testq %rsi, %rsi
je 0x5a28
movq %rdi, %rbx
xorl %r14d, %r14d
movq %rsi, %rcx
cmpb $0x0, (%rcx)
leaq 0x1(%rcx), %rcx
jne 0x59f6
cmpb $0x60, (%rsi)
jne 0x5a1b
cmpb $0x60, -0x2(%rcx)
jne 0x5a1b
movq %rbx, %rdi
callq 0x5952
cmpl $0x54, %eax
je 0x5a32
movq 0x18(%rbx), %rax
movq 0x8(%rax,%r14,8), %rsi
incq %r14
testq %rsi, %rsi
jne 0x59f3
xorl %eax, %eax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movl $0x54, %eax
jmp 0x5a2a
// File: /workspace/github_c_makefile_star2_O3/OhYee[P]computer_application_programming_experiment/utils/free/test/test_free.c
// Function: main
int  main() {
    boolean pass = T;

    mp_init(16 * sizeof(int), &err);

    int *array_1 = (int *)mp_new(sizeof(int) * 8);
    for (int i = 0; i < 8; ++i) {
        array_1[i] = i;
    }

    int *array_2 = (int *)mp_new(sizeof(int) * 8);
    for (int i = 0; i < 8; ++i) {
        array_2[i] = 10 + i;
    }

    int *array_3 = (int *)mp_new(sizeof(int) * 8);
    if (array_3 != NULL) {
        pass = F;
        print_err("want error, but it seems works good.\n");
    }

    for (int i = 0; i < 8; ++i) {
        if (array_1[i] != i) {
            pass = F;
            print_err("array_1[%d] = %d, excepted %d\n", i, array_1[i], i);
        }
    }
    for (int i = 0; i < 8; ++i) {
        if (array_2[i] != 10 + i) {
            pass = F;
            print_err("array_2[%d] = %d, excepted %d\n", i, array_2[i], 10 + i);
        }
    }

    if (pass) {
        print_ok("All testcase passed\n");
        return 0;
    } else {
        print_err("Some error\n");
        return 1;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
leaq -0x10(%rip), %rsi       # 0x16cc
movl $0x40, %edi
callq 0x13ef
movl $0x20, %edi
callq 0x1628
movq %rax, %r14
movaps 0xa66(%rip), %xmm0      # 0x2160
movups %xmm0, (%rax)
movaps 0xa6c(%rip), %xmm0      # 0x2170
movups %xmm0, 0x10(%rax)
movl $0x20, %edi
callq 0x1628
movq %rax, %rbx
movaps 0xa64(%rip), %xmm0      # 0x2180
movups %xmm0, (%rax)
movaps 0xa6a(%rip), %xmm0      # 0x2190
movups %xmm0, 0x10(%rax)
movl $0x20, %edi
callq 0x1628
leaq 0x8cd(%rip), %rcx       # 0x2008
movl (%rcx), %ebp
testq %rax, %rax
je 0x1754
leaq 0xa57(%rip), %rdi       # 0x21a0
xorl %eax, %eax
callq 0x1090
movl %ebp, %eax
jmp 0x175d
leaq 0x8a9(%rip), %rax       # 0x2004
movl (%rax), %eax
leaq 0xa62(%rip), %r15       # 0x21c6
xorl %r12d, %r12d
movl (%r14,%r12,4), %edx
cmpq %rdx, %r12
je 0x1782
movq %r15, %rdi
movl %r12d, %esi
movl %r12d, %ecx
xorl %eax, %eax
callq 0x1090
movl %ebp, %eax
incq %r12
cmpq $0x8, %r12
jne 0x1767
leaq 0xa53(%rip), %r14       # 0x21e5
xorl %r15d, %r15d
movl (%rbx,%r15,4), %edx
leaq 0xa(%r15), %rcx
cmpq %rdx, %rcx
je 0x17b5
leal 0xa(%r15), %ecx
movq %r14, %rdi
movl %r15d, %esi
xorl %eax, %eax
callq 0x1090
movl %ebp, %eax
incq %r15
cmpq $0x8, %r15
jne 0x1795
testl %eax, %eax
je 0x17d4
leaq 0xa3b(%rip), %rdi       # 0x2204
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x1321
jmp 0x17e7
leaq 0xa3e(%rip), %rdi       # 0x2219
xorl %eax, %eax
callq 0x1090
movl $0x1, %ebx
movl %ebx, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/samtools[P]htslib/vcfutils.c
// Function: bcf_remove_alleles
int bcf_remove_alleles(const bcf_hdr_t *header, bcf1_t *line, int rm_mask)
{
    int i;
    kbitset_t *rm_set = kbs_init(line->n_allele);
    for (i=1; i<line->n_allele; i++)
        if ( rm_mask & 1<<i ) kbs_insert(rm_set, i);

    bcf_remove_allele_set(header, line, rm_set);
    kbs_destroy(rm_set);

    return 0; // FIXME: check for errs in this function
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %edx, %ebp
movq %rsi, %r13
movq %rdi, 0x10(%rsp)
movq 0x18(%rsi), %r12
movq %r12, %r14
shrq $0x10, %r14
movzwl %r14w, %ebx
addl $0x3f, %ebx
shrl $0x6, %ebx
leal (,%rbx,8), %eax
movq %rax, 0x8(%rsp)
leaq 0x18(%rax), %rdi
callq 0x14810
movq %rax, %r15
testq %rax, %rax
je 0x7640c
movq %rbx, 0x8(%r15)
movq %rbx, (%r15)
movq %r15, %rdi
addq $0x10, %rdi
movq %r13, (%rsp)
xorl %r13d, %r13d
xorl %esi, %esi
movq 0x8(%rsp), %rdx
callq 0x14240
andl $0x3f, %r14d
movq $-0x1, %rax
movl %r14d, %ecx
shlq %cl, %rax
notq %rax
cmpq $0x1, %r14
sbbq %r13, %r13
orq %rax, %r13
movq %r13, 0x10(%r15,%rbx,8)
movq (%rsp), %r13
testl $0xfffe0000, %r12d      # imm = 0xFFFE0000
je 0x7643f
shrl $0x10, %r12d
movl $0x1, %ecx
btl %ecx, %ebp
jae 0x76437
movl $0x1, %eax
shlq %cl, %rax
movq %rcx, %rdx
shrq $0x6, %rdx
orq %rax, 0x10(%r15,%rdx,8)
incq %rcx
cmpq %rcx, %r12
jne 0x7641e
movq 0x10(%rsp), %rdi
movq %r13, %rsi
movq %r15, %rdx
callq 0x16080
movq %r15, %rdi
callq 0x14dd0
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/samtools[P]htslib/cram/cram_external.c
// Function: cram_container_get_coords
void cram_container_get_coords(cram_container *c,
                               int *refid, hts_pos_t *start, hts_pos_t *span) {
    if (refid)
        *refid = c->ref_seq_id;
    if (start)
        *start = c->ref_seq_start;
    if (span)
        *span  = c->ref_seq_span;
}

// Assembly:
testq %rsi, %rsi
je 0x8fec0
movl 0x4(%rdi), %eax
movl %eax, (%rsi)
testq %rdx, %rdx
je 0x8fecc
movq 0x8(%rdi), %rax
movq %rax, (%rdx)
testq %rcx, %rcx
je 0x8fed8
movq 0x10(%rdi), %rax
movq %rax, (%rcx)
retq
// File: /workspace/github_c_makefile_star2_O3/samtools[P]htslib/cram/cram_external.c
// Function: cram_block_compression_hdr_decoder2encoder
int cram_block_compression_hdr_decoder2encoder(cram_fd *fd,
                                               cram_block_compression_hdr *ch) {
    int i;

    if (!ch)
        return -1;

    for (i = 0; i < DS_END; i++) {
        cram_codec *co = ch->codecs[i];
        if (!co)
            continue;

        if (-1 == cram_codec_decoder2encoder(fd, co))
            return -1;
    }

    return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testq %rsi, %rsi
je 0x8ff5c
movq %rsi, %r14
movq %rdi, %r15
xorl %r12d, %r12d
movq 0x280(%r14,%r12,8), %rsi
testq %rsi, %rsi
je 0x8ff51
movq %r15, %rdi
callq 0x15280
cmpl $-0x1, %eax
je 0x8ff5c
incq %r12
cmpq $0x2f, %r12
jne 0x8ff37
xorl %ebx, %ebx
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
// File: /workspace/github_c_makefile_star2_O3/samtools[P]htslib/cram/cram_external.c
// Function: cram_cid2ds_free
void cram_cid2ds_free(cram_cid2ds_t *cid2ds) {
    if (cid2ds) {
        if (cid2ds->hash)
            kh_destroy(cid, cid2ds->hash);
        free(cid2ds->ds);
        free(cid2ds->ds_a);
        free(cid2ds);
    }
}

// Assembly:
testq %rdi, %rdi
je 0x8ffc2
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x10(%rdi), %r14
testq %r14, %r14
je 0x8ffa2
movq 0x18(%r14), %rdi
callq 0x14dd0
movq 0x10(%r14), %rdi
callq 0x14dd0
movq 0x20(%r14), %rdi
callq 0x14dd0
movq %r14, %rdi
callq 0x14dd0
movq (%rbx), %rdi
callq 0x14dd0
movq 0x18(%rbx), %rdi
callq 0x14dd0
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x14dd0
retq
// File: /workspace/github_c_makefile_star2_O3/samtools[P]htslib/cram/cram_external.c
// Function: cram_codec_iter_next
static cram_codec *cram_codec_iter_next(cram_codec_iter *iter,
                                        int *key) {
    cram_codec *cc = NULL;
    cram_block_compression_hdr *hdr = iter->hdr;

    if (!iter->is_tag) {
        // 1: Iterating through main data-series
        do {
            cc = hdr->codecs[iter->idx++];
        } while(!cc && iter->idx < DS_END);
        if (cc) {
            *key = cram_ds_to_key(iter->idx-1);
            return cc;
        }

        // Reset index for phase 2
        iter->idx = 0;
        iter->is_tag = 1;
    }

    do {
        if (!iter->curr_map)
            iter->curr_map = hdr->tag_encoding_map[iter->idx++];

        cc = iter->curr_map ? iter->curr_map->codec : NULL;
        if (cc) {
            *key = iter->curr_map->key;
            iter->curr_map = iter->curr_map->next;
            return cc;
        }
    } while (iter->idx < CRAM_MAP_HASH);

    // End of codecs
    return NULL;
}

// Assembly:
movq (%rdi), %rcx
cmpl $0x0, 0x14(%rdi)
je 0x90304
movq 0x8(%rdi), %rdx
testq %rdx, %rdx
jne 0x902ea
movslq 0x10(%rdi), %rdx
leal 0x1(%rdx), %eax
movl %eax, 0x10(%rdi)
movq 0x180(%rcx,%rdx,8), %rdx
movq %rdx, 0x8(%rdi)
testq %rdx, %rdx
je 0x902fd
movq 0x10(%rdx), %rax
testq %rax, %rax
jne 0x90345
movl 0x10(%rdi), %eax
cmpl $0x20, %eax
jl 0x902ca
jmp 0x90301
xorl %edx, %edx
jmp 0x902f6
xorl %eax, %eax
retq
movslq 0x10(%rdi), %rdx
movq %rdx, %r8
movq 0x280(%rcx,%rdx,8), %rax
incq %rdx
cmpq $0x2d, %r8
jg 0x90321
testq %rax, %rax
je 0x90308
movl %edx, 0x10(%rdi)
testq %rax, %rax
je 0x90352
addl $-0xc, %edx
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
cmpl $0x23, %edx
ja 0x90342
movl %edx, %ecx
leaq 0x44c01(%rip), %rdx     # 0xd4f40
movl (%rdx,%rcx,4), %ecx
movl %ecx, (%rsi)
retq
movl (%rdx), %ecx
movl %ecx, (%rsi)
movq 0x18(%rdx), %rcx
movq %rcx, 0x8(%rdi)
retq
movabsq $0x100000000, %rax      # imm = 0x100000000
movq %rax, 0x10(%rdi)
jmp 0x902c6
// File: /workspace/github_c_makefile_star2_O3/samtools[P]htslib/cram/cram_external.c
// Function: cram_cid2ds_query
int *cram_cid2ds_query(cram_cid2ds_t *c2d, int content_id, int *n) {
    *n = 0;
    if (!c2d || !c2d->hash)
        return NULL;

    khiter_t k = kh_get(cid, c2d->hash, content_id);
    if (k == kh_end(c2d->hash))
        return NULL;

    if (!c2d->ds_a) {
        c2d->ds_a = malloc(c2d->ds_idx * sizeof(int));
        if (!c2d->ds_a)
            return NULL;
    }

    int dsi = kh_value(c2d->hash, k); // initial ds array index from hash
    int idx = 0;
    while (dsi >= 0) {
        c2d->ds_a[idx++] = c2d->ds[dsi].data_series;
        dsi = c2d->ds[dsi].next;      // iterate over list within ds array
    }

    *n = idx;
    return c2d->ds_a;
}

// Assembly:
movl $0x0, (%rdx)
testq %rdi, %rdi
je 0x903fd
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
movq 0x10(%rdi), %r15
xorl %r12d, %r12d
testq %r15, %r15
je 0x90410
movq %rdx, %rbx
movl (%r15), %edx
testl %edx, %edx
je 0x9040b
leal -0x1(%rdx), %edi
movl %edi, %r8d
andl %esi, %r8d
movq 0x10(%r15), %r9
movl $0x1, %r10d
xorl %eax, %eax
movl %r8d, %r12d
movl %r12d, %ecx
shrl $0x4, %ecx
movl (%r9,%rcx,4), %r11d
leal (%r12,%r12), %ecx
andl $0x1e, %ecx
movl %r11d, %ebp
shrl %cl, %ebp
testb $0x2, %bpl
jne 0x90400
testb $0x1, %bpl
jne 0x903ed
movq 0x18(%r15), %r13
movl %r12d, %ebp
cmpl %esi, (%r13,%rbp,4)
je 0x90400
addl %r10d, %r12d
andl %edi, %r12d
incl %r10d
cmpl %r8d, %r12d
jne 0x903bd
jmp 0x9045f
xorl %eax, %eax
retq
shrl %cl, %r11d
testb $0x3, %r11b
cmovnel %edx, %r12d
cmpl %edx, %r12d
jne 0x90414
xorl %eax, %eax
jmp 0x9045f
movq 0x18(%r14), %rax
testq %rax, %rax
jne 0x90433
movslq 0xc(%r14), %rdi
shlq $0x2, %rdi
callq 0x14810
movq %rax, 0x18(%r14)
testq %rax, %rax
je 0x90410
movq 0x20(%r15), %rcx
movl %r12d, %edx
movl (%rcx,%rdx,8), %esi
testl %esi, %esi
js 0x9045b
movq (%r14), %rdx
xorl %ecx, %ecx
movl %esi, %esi
movl (%rdx,%rsi,8), %edi
movl %edi, (%rax,%rcx,4)
incq %rcx
movl 0x4(%rdx,%rsi,8), %esi
testl %esi, %esi
jns 0x90446
jmp 0x9045d
xorl %ecx, %ecx
movl %ecx, (%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/samtools[P]htslib/cram/cram_external.c
// Function: cram_describe_encodings
int cram_describe_encodings(cram_block_compression_hdr *hdr, kstring_t *ks) {
    cram_codec_iter citer;
    cram_codec_iter_init(hdr, &citer);
    cram_codec *codec;
    int key, r = 0;

    while ((codec = cram_codec_iter_next(&citer, &key))) {
        char key_s[4] = {0};
        int key_i = 0;
        if (key>>16) key_s[key_i++] = key>>16;
        key_s[key_i++] = (key>>8)&0xff;
        key_s[key_i++] = key&0xff;
        r |= ksprintf(ks, "\t%s\t", key_s) < 0;
        r |= cram_codec_describe(codec, ks) < 0;
        r |= kputc('\n', ks) < 0;
    }

    return r ? -1 : 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %rbx
leaq 0x10(%rsp), %rax
movq %rdi, (%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%rax)
leaq 0xc(%rsp), %rsi
movq %rax, %rdi
callq 0x902bd
testq %rax, %rax
je 0x905bb
movq %rax, %r14
leaq 0x44b22(%rip), %r15     # 0xd4fd0
leaq 0x8(%rsp), %r13
xorl %r12d, %r12d
movl $0x0, 0x8(%rsp)
movl 0xc(%rsp), %eax
movl $0x0, %ecx
cmpl $0x10000, %eax          # imm = 0x10000
jb 0x904dc
movl %eax, %ecx
shrl $0x10, %ecx
movb %cl, 0x8(%rsp)
movl $0x1, %ecx
movl %ecx, %ecx
rolw $0x8, %ax
movw %ax, 0x8(%rsp,%rcx)
movq %rbx, %rdi
movq %r15, %rsi
movq %r13, %rdx
xorl %eax, %eax
callq 0x14370
movl %eax, %ebp
movq %r14, %rdi
movq %rbx, %rsi
callq 0x15560
movl %eax, %r14d
movq (%rbx), %rcx
leaq 0x2(%rcx), %rax
cmpq %rax, 0x8(%rbx)
jae 0x9055a
movq %r15, %r13
movq %rax, %rcx
shrq $0x3e, %rcx
movq %rax, %rdx
shrq %rdx
testq %rcx, %rcx
movl $0x0, %r15d
cmoveq %rdx, %r15
addq %rax, %r15
movq 0x10(%rbx), %rdi
movq %r15, %rsi
callq 0x162c0
testq %rax, %rax
je 0x905a3
movq %rax, 0x10(%rbx)
movq %r15, 0x8(%rbx)
movq (%rbx), %rcx
movq %r13, %r15
leaq 0x8(%rsp), %r13
jmp 0x9055e
movq 0x10(%rbx), %rax
leaq 0x1(%rcx), %rdx
movq %rdx, (%rbx)
movb $0xa, (%rax,%rcx)
movq (%rbx), %rax
movq 0x10(%rbx), %rcx
movb $0x0, (%rcx,%rax)
movl $0xa, %eax
orl %ebp, %r14d
orl %eax, %r14d
shrl $0x1f, %r14d
orl %r14d, %r12d
leaq 0x10(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x902bd
movq %rax, %r14
testq %rax, %rax
jne 0x904b6
jmp 0x905b2
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movq %r13, %r15
leaq 0x8(%rsp), %r13
jmp 0x90579
xorl %eax, %eax
negl %r12d
sbbl %eax, %eax
jmp 0x905bd
xorl %eax, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/samtools[P]htslib/cram/cram_external.c
// Function: cram_slice_hdr_get_coords
void cram_slice_hdr_get_coords(cram_block_slice_hdr *h,
                               int *refid, hts_pos_t *start, hts_pos_t *span) {
    if (refid)
        *refid = h->ref_seq_id;
    if (start)
        *start = h->ref_seq_start;
    if (span)
        *span  = h->ref_seq_span;
}

// Assembly:
testq %rsi, %rsi
je 0x905de
movl 0x4(%rdi), %eax
movl %eax, (%rsi)
testq %rdx, %rdx
je 0x905ea
movq 0x8(%rdi), %rax
movq %rax, (%rdx)
testq %rcx, %rcx
je 0x905f6
movq 0x10(%rdi), %rax
movq %rax, (%rcx)
retq
// File: /workspace/github_c_makefile_star2_O3/samtools[P]htslib/cram/cram_external.c
// Function: cram_block_append
int cram_block_append(cram_block *b, const void *data, int size) {
    BLOCK_APPEND(b, data, size);
    return 0;

 block_err:
    return -1;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %edx, %ebp
movq %rsi, %r15
movq %rdi, %rbx
movslq %edx, %r14
movq 0x30(%rdi), %r12
addq %r14, %r12
movq 0x28(%rdi), %rax
cmpq %r12, %rax
ja 0x90697
leaq 0x320(%rax), %rcx
shrq $0x2, %rcx
addq %rcx, %rax
addq $0x320, %rax            # imm = 0x320
cmpq %r12, %rax
cmovaq %rax, %r12
movq 0x20(%rbx), %rdi
movq %r12, %rsi
callq 0x162c0
testq %rax, %rax
je 0x906b7
movq %r12, 0x28(%rbx)
movq %rax, 0x20(%rbx)
xorl %r12d, %r12d
testl %ebp, %ebp
je 0x906bd
movq 0x20(%rbx), %rdi
addq 0x30(%rbx), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x16530
addq %r14, 0x30(%rbx)
jmp 0x906bd
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
movl %r12d, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/samtools[P]htslib/cram/cram_external.c
// Function: cram_copy_slice
int cram_copy_slice(cram_fd *in, cram_fd *out, int32_t num_slice) {
    int32_t i, j;

    for (i = 0; i < num_slice; i++) {
        cram_block *blk;
        cram_block_slice_hdr *hdr;

        if (!(blk = cram_read_block(in)))
            return -1;
        if (!(hdr = cram_decode_slice_header(in, blk))) {
            cram_free_block(blk);
            return -1;
        }

        if (cram_write_block(out, blk) != 0) {
            cram_free_block(blk);
            return -1;
        }
        cram_free_block(blk);

        int num_blocks = cram_slice_hdr_get_num_blocks(hdr);
        for (j = 0; j < num_blocks; j++) {
            blk = cram_read_block(in);
            if (!blk || cram_write_block(out, blk) != 0) {
                if (blk) cram_free_block(blk);
                return -1;
            }
            cram_free_block(blk);
        }
        cram_free_slice_header(hdr);
    }

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %edx, 0x4(%rsp)
testl %edx, %edx
jle 0x909b8
movq %rsi, %r14
movq %rdi, %r15
xorl %ebp, %ebp
movq %r15, %rdi
callq 0x14900
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testq %rax, %rax
je 0x909d0
movq %rax, %r13
movq %r15, %rdi
movq %rax, %rsi
callq 0x16260
testq %rax, %rax
je 0x909c8
movq %rax, %r12
movq %r14, %rdi
movq %r13, %rsi
callq 0x15790
testl %eax, %eax
jne 0x909c8
movq %r13, %rdi
callq 0x15090
movl 0x28(%r12), %ebx
testl %ebx, %ebx
jle 0x909a4
movq %r15, %rdi
callq 0x14900
testq %rax, %rax
je 0x909bc
movq %rax, %r13
movq %r14, %rdi
movq %rax, %rsi
callq 0x15790
testl %eax, %eax
jne 0x909c3
movq %r13, %rdi
callq 0x15090
decl %ebx
jne 0x90979
movq %r12, %rdi
callq 0x158a0
incl %ebp
cmpl 0x4(%rsp), %ebp
jne 0x9092d
xorl %ebx, %ebx
jmp 0x909d0
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0x909d0
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq %r13, %rdi
callq 0x15090
movl %ebx, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/crcx[P]retroforth/tools/retro-extend.c
// Function: read_token
void read_token(FILE *file, char *token_buffer, int echo, int max) {
  int ch, count;
  ch = getc(file);
  if (echo != 0)
    putchar(ch);
  count = 0;
  while (not_eol(ch))
  {
    if ((ch == 8 || ch == 127) && count > 0) {
      count--;
      if (echo != 0) {
        putchar(8);
        putchar(32);
        putchar(8);
      }
    } else {
      token_buffer[count++] = ch;
    }
    if (count == max) {
      break;
    }
    ch = getc(file);
    if (echo != 0)
      putchar(ch);
  }
  token_buffer[count] = '\0';
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %ecx, %ebp
movl %edx, %r14d
movq %rsi, %rbx
movq %rdi, %r15
callq 0x1140
movl %eax, %r12d
testl %r14d, %r14d
je 0x13a2
movl %r12d, %edi
callq 0x1030
xorl %r13d, %r13d
leal 0x1(%r12), %eax
cmpl $0x21, %eax
ja 0x13c3
movabsq $0x200004803, %rcx      # imm = 0x200004803
btq %rax, %rcx
jb 0x145d
cmpl $0x8, %r12d
setne %al
cmpl $0x7f, %r12d
setne %cl
andb %al, %cl
testl %r13d, %r13d
setle %al
orb %cl, %al
jne 0x1415
decl %r13d
testl %r14d, %r14d
je 0x1445
movl $0x8, %edi
callq 0x1030
movl $0x20, %edi
callq 0x1030
movl $0x8, %edi
callq 0x1030
cmpl %ebp, %r13d
je 0x145a
movq %r15, %rdi
callq 0x1140
movl %eax, %r12d
jmp 0x1438
movslq %r13d, %rax
incl %r13d
movb %r12b, (%rbx,%rax)
cmpl %ebp, %r13d
je 0x145a
movq %r15, %rdi
callq 0x1140
movl %eax, %r12d
testl %r14d, %r14d
je 0x13a5
movl %r12d, %edi
callq 0x1030
jmp 0x13a5
cmpl %ebp, %r13d
je 0x145a
movq %r15, %rdi
callq 0x1140
movl %eax, %r12d
jmp 0x13a5
movl %ebp, %r13d
movslq %r13d, %rax
movb $0x0, (%rbx,%rax)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O3/crcx[P]retroforth/tools/retro-extend.c
// Function: evaluate
void evaluate(char *s) {
  if (strlen(s) == 0)
    return;
  string_inject(s, TIB);
  stack_push(TIB);
  execute(interpret);
}

// Assembly:
cmpb $0x0, (%rdi)
je 0x14b2
pushq %rax
movl 0x417d(%rip), %esi      # 0x55fc
callq 0x16e4
movl 0x4172(%rip), %eax      # 0x55fc
movslq 0x3d2f(%rip), %rcx      # 0x51c0
leaq 0x1(%rcx), %rdx
movl %edx, 0x3d25(%rip)      # 0x51c0
leaq 0x3d2e(%rip), %rdx      # 0x51d0
movl %eax, 0x4(%rdx,%rcx,4)
movl 0x206150(%rip), %edi    # 0x2075fc
popq %rax
jmp 0x18ea
retq