
char * command_word_completion_function(char *hint_text,int state)

{
  char cVar1;
  alias_t *paVar2;
  SHELL_VAR *pSVar3;
  alias_t **ppaVar4;
  SHELL_VAR **ppSVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  char *pcVar10;
  char *pcVar11;
  size_t sVar12;
  char *pcVar13;
  ulong uVar14;
  long lVar15;
  uint uVar16;
  builtin *pbVar17;
  long in_FS_OFFSET;
  byte bVar18;
  char *f;
  long local_40;
  
  bVar18 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (state == 0) {
    rl_filename_stat_hook = bash_command_name_stat_hook;
    if ((command_word_completion_function::dequoted_hint != (char *)0x0) &&
       (command_word_completion_function::dequoted_hint != command_word_completion_function::hint))
    {
      free(command_word_completion_function::dequoted_hint);
    }
    if (command_word_completion_function::hint != (char *)0x0) {
      free(command_word_completion_function::hint);
    }
    command_word_completion_function::searching_path = 0;
    command_word_completion_function::mapping_over = 0;
    iVar6 = absolute_pathname(hint_text);
    if (iVar6 == 0) {
      iVar6 = absolute_program(hint_text);
      uVar16 = 0;
      if ((iVar6 == 0) && (uVar16 = 0, *hint_text != '~')) {
        iVar6 = test_for_directory(hint_text);
        uVar16 = (uint)(iVar6 != 0);
      }
    }
    else {
      uVar16 = 0;
    }
    command_word_completion_function::val = (char *)0x0;
    command_word_completion_function::hint_is_dir = uVar16;
    pcVar10 = rl_variable_value("completion-ignore-case");
    command_word_completion_function::igncase = 0;
    if ((*pcVar10 == 'o') && (pcVar10[1] == 'n')) {
      command_word_completion_function::igncase = (int)(pcVar10[2] == '\0');
    }
    if (command_word_completion_function::glob_matches != (char **)0x0) {
      free(command_word_completion_function::glob_matches);
      command_word_completion_function::glob_matches = (char **)0x0;
    }
    command_word_completion_function::globpat = completion_glob_pattern(hint_text);
    if ((command_word_completion_function::globpat == 0) &&
       (iVar6 = absolute_program(hint_text), iVar6 == 0)) {
      uVar14 = 0xffffffffffffffff;
      pcVar10 = hint_text;
      do {
        if (uVar14 == 0) break;
        uVar14 = uVar14 - 1;
        cVar1 = *pcVar10;
        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar10 = (char *)xmalloc(~uVar14);
      command_word_completion_function::hint = strcpy(pcVar10,hint_text);
      lVar15 = -1;
      pcVar10 = command_word_completion_function::hint;
      do {
        if (lVar15 == 0) break;
        lVar15 = lVar15 + -1;
        cVar1 = *pcVar10;
        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
      } while (cVar1 != '\0');
      command_word_completion_function::hint_len = ~(uint)lVar15 - 1;
      command_word_completion_function::dequoted_hint = command_word_completion_function::hint;
      if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {
        command_word_completion_function::dequoted_hint =
             bash_dequote_filename(command_word_completion_function::hint,0);
      }
      command_word_completion_function::path = get_string_value("PATH");
      dot_in_path = 0;
      command_word_completion_function::path_index = 0;
      command_word_completion_function::local_index = 0;
      if (command_word_completion_function::varlist != (SHELL_VAR **)0x0) {
        free(command_word_completion_function::varlist);
      }
      command_word_completion_function::varlist = all_visible_functions();
      if (command_word_completion_function::alias_list != (alias_t **)0x0) {
        free(command_word_completion_function::alias_list);
      }
      command_word_completion_function::alias_list = all_aliases();
      goto LAB_00180925;
    }
    if (*hint_text == '~') {
      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);
      uVar14 = 0xffffffffffffffff;
      pcVar10 = hint_text;
      do {
        if (uVar14 == 0) break;
        uVar14 = uVar14 - 1;
        cVar1 = *pcVar10;
        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar10 = (char *)xmalloc(~uVar14);
      pcVar10 = strcpy(pcVar10,hint_text);
      command_word_completion_function::directory_part = pcVar10;
      pcVar11 = strchr(pcVar10,0x2f);
      if (pcVar11 == (char *)0x0) {
        free(pcVar10);
        command_word_completion_function::directory_part = (char *)0x0;
      }
      else {
        *pcVar11 = '\0';
      }
    }
    else if (dircomplete_expand == 0) {
      uVar14 = 0xffffffffffffffff;
      pcVar10 = hint_text;
      do {
        if (uVar14 == 0) break;
        uVar14 = uVar14 - 1;
        cVar1 = *pcVar10;
        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar10 = (char *)xmalloc(~uVar14);
      command_word_completion_function::hint = strcpy(pcVar10,hint_text);
    }
    else {
      uVar14 = 0xffffffffffffffff;
      pcVar10 = hint_text;
      do {
        if (uVar14 == 0) break;
        uVar14 = uVar14 - 1;
        cVar1 = *pcVar10;
        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar10 = (char *)xmalloc(~uVar14);
      command_word_completion_function::hint = strcpy(pcVar10,hint_text);
      bash_directory_completion_hook(&command_word_completion_function::hint);
    }
    command_word_completion_function::dequoted_hint = command_word_completion_function::hint;
    if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {
      pcVar10 = bash_dequote_filename(command_word_completion_function::hint,0);
      command_word_completion_function::dequoted_hint = pcVar10;
      free(command_word_completion_function::hint);
      command_word_completion_function::hint = pcVar10;
    }
    lVar15 = -1;
    pcVar10 = command_word_completion_function::hint;
    do {
      if (lVar15 == 0) break;
      lVar15 = lVar15 + -1;
      cVar1 = *pcVar10;
      pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
    } while (cVar1 != '\0');
    command_word_completion_function::hint_len = ~(uint)lVar15 - 1;
    if (command_word_completion_function::filename_hint != (char *)0x0) {
      free(command_word_completion_function::filename_hint);
    }
    pcVar10 = command_word_completion_function::hint;
    uVar14 = 0xffffffffffffffff;
    pcVar11 = command_word_completion_function::hint;
    do {
      if (uVar14 == 0) break;
      uVar14 = uVar14 - 1;
      cVar1 = *pcVar11;
      pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;
    } while (cVar1 != '\0');
    pcVar11 = (char *)xmalloc(~uVar14);
    command_word_completion_function::fnhint = strcpy(pcVar11,pcVar10);
    command_word_completion_function::istate = 0;
    command_word_completion_function::filename_hint = command_word_completion_function::fnhint;
    if (command_word_completion_function::globpat == 0) {
      if ((dircomplete_expand != 0) &&
         (iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0)) {
        dircomplete_expand = 0;
        set_directory_hook();
        dircomplete_expand = 1;
      }
      command_word_completion_function::mapping_over = 4;
LAB_00180a7a:
      while( true ) {
        pcVar10 = rl_filename_completion_function
                            (command_word_completion_function::fnhint,
                             command_word_completion_function::istate);
        command_word_completion_function::val = pcVar10;
        if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {
          set_directory_hook();
        }
        command_word_completion_function::istate = 1;
        if (pcVar10 == (char *)0x0) break;
        iVar6 = absolute_program(command_word_completion_function::hint);
        if (iVar6 == 0) {
          pcVar10 = strrchr(command_word_completion_function::val,0x2f);
          pcVar11 = command_word_completion_function::val;
          if (pcVar10 != (char *)0x0) {
            pcVar10 = pcVar10 + 1;
            if (command_word_completion_function::igncase == 0) {
              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,
                              (long)command_word_completion_function::hint_len);
            }
            else {
              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,
                                  (long)command_word_completion_function::hint_len);
            }
            pcVar11 = command_word_completion_function::val;
            if (iVar6 == 0) {
              uVar14 = 0xffffffffffffffff;
              pcVar11 = pcVar10;
              do {
                if (uVar14 == 0) break;
                uVar14 = uVar14 - 1;
                cVar1 = *pcVar11;
                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;
              } while (cVar1 != '\0');
              pcVar11 = (char *)xmalloc(~uVar14);
              pcVar10 = strcpy(pcVar11,pcVar10);
              goto LAB_001812ba;
            }
          }
        }
        else {
          if (command_word_completion_function::igncase == 0) {
            iVar6 = strncmp(command_word_completion_function::val,
                            command_word_completion_function::hint,
                            (long)command_word_completion_function::hint_len);
          }
          else {
            iVar6 = strncasecmp(command_word_completion_function::val,
                                command_word_completion_function::hint,
                                (long)command_word_completion_function::hint_len);
          }
          pcVar10 = command_word_completion_function::val;
          if (*hint_text == '~') {
            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,
                                          command_word_completion_function::directory_part);
          }
          else {
            uVar14 = 0xffffffffffffffff;
            pcVar11 = command_word_completion_function::val;
            do {
              if (uVar14 == 0) break;
              uVar14 = uVar14 - 1;
              cVar1 = *pcVar11;
              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;
            } while (cVar1 != '\0');
            pcVar11 = (char *)xmalloc(~uVar14);
            pcVar10 = strcpy(pcVar11,pcVar10);
          }
          pcVar13 = command_word_completion_function::val;
          if (iVar6 == 0) {
LAB_001812ba:
            iVar6 = command_word_completion_function::searching_path;
            pcVar13 = command_word_completion_function::val;
            uVar14 = 0xffffffffffffffff;
            pcVar11 = command_word_completion_function::val;
            do {
              if (uVar14 == 0) break;
              uVar14 = uVar14 - 1;
              cVar1 = *pcVar11;
              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;
            } while (cVar1 != '\0');
            pcVar11 = (char *)xmalloc(~uVar14);
            f = strcpy(pcVar11,pcVar13);
            bash_directory_completion_hook(&f);
            if (iVar6 == 0) {
              iVar6 = executable_or_directory(f);
            }
            else {
              iVar6 = executable_file(f);
            }
            free(f);
            pcVar11 = command_word_completion_function::val;
            if (iVar6 != 0) {
              if (command_word_completion_function::val != pcVar13) {
                free(pcVar13);
              }
              free(pcVar11);
              command_word_completion_function::val = "";
              goto LAB_00181336;
            }
          }
          free(pcVar10);
          pcVar11 = command_word_completion_function::val;
          if (command_word_completion_function::val != pcVar13) {
            free(pcVar13);
          }
        }
        free(pcVar11);
      }
      iVar6 = absolute_program(command_word_completion_function::hint);
      if (iVar6 == 0) {
LAB_00180e1e:
        command_word_completion_function::istate =
             (int)(command_word_completion_function::val != (char *)0x0);
        if (command_word_completion_function::val == (char *)0x0) {
          if (command_word_completion_function::path == (char *)0x0) {
            pcVar10 = (char *)0x0;
            goto LAB_00181336;
          }
          pcVar10 = (char *)0x0;
          if ((command_word_completion_function::path[command_word_completion_function::path_index]
               == '\0') ||
             (pcVar10 = extract_colon_unit(command_word_completion_function::path,
                                           &command_word_completion_function::path_index),
             pcVar10 == (char *)0x0)) goto LAB_00181336;
          command_word_completion_function::searching_path = 1;
          if (*pcVar10 == '\0') {
            free(pcVar10);
            pcVar10 = (char *)xmalloc(2);
            pcVar10[0] = '.';
            pcVar10[1] = '\0';
          }
          pcVar11 = pcVar10;
          if (*pcVar10 == '~') {
            pcVar11 = bash_tilde_expand(pcVar10,0);
            free(pcVar10);
          }
          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {
            dot_in_path = 1;
          }
          if ((command_word_completion_function::fnhint != (char *)0x0) &&
             (command_word_completion_function::fnhint !=
              command_word_completion_function::filename_hint)) {
            free(command_word_completion_function::fnhint);
          }
          if (command_word_completion_function::filename_hint != (char *)0x0) {
            free(command_word_completion_function::filename_hint);
          }
          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);
          command_word_completion_function::filename_hint = pcVar10;
          pcVar13 = strpbrk(pcVar10,"\"\'\\");
          if (pcVar13 != (char *)0x0) {
            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);
          }
          command_word_completion_function::fnhint = pcVar10;
          free(pcVar11);
        }
        goto LAB_00180a7a;
      }
      pcVar10 = (char *)0x0;
      goto LAB_00181336;
    }
    command_word_completion_function::mapping_over = 5;
LAB_00180787:
    glob_ignore_case = command_word_completion_function::igncase;
    command_word_completion_function::glob_matches =
         shell_glob_filename(command_word_completion_function::hint);
    glob_ignore_case = L'\0';
    if ((command_word_completion_function::glob_matches == &glob_error_return) ||
       (command_word_completion_function::glob_matches == (char **)0x0)) {
      command_word_completion_function::glob_matches = (char **)0x0;
      pcVar10 = (char *)0x0;
      goto LAB_00181336;
    }
    command_word_completion_function::local_index = 0;
    if ((command_word_completion_function::glob_matches[1] != (char *)0x0) &&
       (rl_completion_type == L'\t')) {
      pcVar10 = (char *)0x0;
      goto LAB_00181336;
    }
  }
  else {
LAB_00180925:
    pcVar10 = command_word_completion_function::hint;
    iVar7 = command_word_completion_function::igncase;
    iVar6 = command_word_completion_function::hint_len;
    ppaVar4 = command_word_completion_function::alias_list;
    if (command_word_completion_function::mapping_over == 1) {
LAB_00180bdc:
      pcVar10 = command_word_completion_function::hint;
      iVar6 = command_word_completion_function::hint_len;
      sVar12 = (size_t)command_word_completion_function::hint_len;
      do {
        pcVar11 = word_token_alist[command_word_completion_function::local_index].word;
        if (pcVar11 == (char *)0x0) {
          command_word_completion_function::local_index = 0;
          command_word_completion_function::mapping_over =
               command_word_completion_function::mapping_over + 1;
          goto LAB_00180c72;
        }
        command_word_completion_function::local_index =
             command_word_completion_function::local_index + 1;
      } while ((iVar6 != 0) &&
              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))));
      uVar14 = 0xffffffffffffffff;
      pcVar10 = pcVar11;
      do {
        if (uVar14 == 0) break;
        uVar14 = uVar14 - 1;
        cVar1 = *pcVar10;
        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar10 = (char *)xmalloc(~uVar14);
      pcVar10 = strcpy(pcVar10,pcVar11);
      goto LAB_00181336;
    }
    if (command_word_completion_function::mapping_over < 2) {
      if (command_word_completion_function::mapping_over == 0) {
        sVar12 = (size_t)command_word_completion_function::hint_len;
        do {
          while( true ) {
            if ((ppaVar4 == (alias_t **)0x0) ||
               (paVar2 = ppaVar4[command_word_completion_function::local_index],
               paVar2 == (alias_t *)0x0)) {
              command_word_completion_function::local_index = 0;
              command_word_completion_function::mapping_over = 1;
              goto LAB_00180bdc;
            }
            command_word_completion_function::local_index =
                 command_word_completion_function::local_index + 1;
            pcVar11 = paVar2->name;
            if (iVar7 == 0) break;
            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);
            if (iVar8 == 0) {
              uVar14 = 0xffffffffffffffff;
              pcVar10 = pcVar11;
              goto code_r0x00180ba8;
            }
          }
        } while ((iVar6 != 0) &&
                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));
        uVar14 = 0xffffffffffffffff;
        pcVar10 = pcVar11;
        do {
          if (uVar14 == 0) break;
          uVar14 = uVar14 - 1;
          cVar1 = *pcVar10;
          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
        } while (cVar1 != '\0');
        pcVar10 = (char *)xmalloc(~uVar14);
        pcVar10 = strcpy(pcVar10,pcVar11);
        goto LAB_00181336;
      }
    }
    else {
      if (command_word_completion_function::mapping_over == 2) {
LAB_00180c72:
        pcVar10 = command_word_completion_function::hint;
        iVar7 = command_word_completion_function::igncase;
        iVar6 = command_word_completion_function::hint_len;
        ppSVar5 = command_word_completion_function::varlist;
        sVar12 = (size_t)command_word_completion_function::hint_len;
        do {
          while( true ) {
            if ((ppSVar5 == (SHELL_VAR **)0x0) ||
               (pSVar3 = ppSVar5[command_word_completion_function::local_index],
               pSVar3 == (SHELL_VAR *)0x0)) {
              command_word_completion_function::local_index = 0;
              command_word_completion_function::mapping_over =
                   command_word_completion_function::mapping_over + 1;
              goto LAB_0018094c;
            }
            command_word_completion_function::local_index =
                 command_word_completion_function::local_index + 1;
            pcVar11 = pSVar3->name;
            if (iVar7 == 0) break;
            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);
            if (iVar8 == 0) {
              uVar14 = 0xffffffffffffffff;
              pcVar10 = pcVar11;
              goto code_r0x00180d3c;
            }
          }
        } while ((iVar6 != 0) &&
                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));
        uVar14 = 0xffffffffffffffff;
        pcVar10 = pcVar11;
        do {
          if (uVar14 == 0) break;
          uVar14 = uVar14 - 1;
          cVar1 = *pcVar10;
          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
        } while (cVar1 != '\0');
        pcVar10 = (char *)xmalloc(~uVar14);
        pcVar10 = strcpy(pcVar10,pcVar11);
        goto LAB_00181336;
      }
      if (command_word_completion_function::mapping_over == 3) {
LAB_0018094c:
        pcVar10 = command_word_completion_function::hint;
        iVar7 = command_word_completion_function::hint_len;
        iVar6 = num_shell_builtins;
        if (command_word_completion_function::local_index < num_shell_builtins) {
          sVar12 = (size_t)command_word_completion_function::hint_len;
          pbVar17 = shell_builtins + command_word_completion_function::local_index;
          do {
            iVar8 = command_word_completion_function::local_index;
            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&
               ((iVar7 == 0 ||
                ((*pbVar17->name == *pcVar10 &&
                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {
              command_word_completion_function::local_index = iVar8 + 1;
              pcVar10 = pbVar17->name;
              uVar14 = 0xffffffffffffffff;
              pcVar11 = pcVar10;
              goto code_r0x00180dd3;
            }
            command_word_completion_function::local_index = iVar8 + 1;
            pbVar17 = pbVar17 + 1;
          } while (command_word_completion_function::local_index != iVar6);
        }
        command_word_completion_function::local_index = 0;
        command_word_completion_function::mapping_over =
             command_word_completion_function::mapping_over + 1;
      }
    }
    if (command_word_completion_function::globpat == 0) {
      if (command_word_completion_function::hint_is_dir == 0) goto LAB_00180e1e;
      command_word_completion_function::hint_is_dir = 0;
      uVar14 = 0xffffffffffffffff;
      pcVar10 = hint_text;
      do {
        if (uVar14 == 0) break;
        uVar14 = uVar14 - 1;
        cVar1 = *pcVar10;
        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar10 = (char *)xmalloc(~uVar14);
      pcVar10 = strcpy(pcVar10,hint_text);
      goto LAB_00181336;
    }
    if (state == 0) goto LAB_00180787;
  }
  command_word_completion_function::val =
       command_word_completion_function::glob_matches[command_word_completion_function::local_index]
  ;
  while (command_word_completion_function::local_index =
              command_word_completion_function::local_index + 1,
        command_word_completion_function::val != (char *)0x0) {
    iVar6 = executable_or_directory(command_word_completion_function::val);
    if (iVar6 != 0) {
      pcVar10 = command_word_completion_function::val;
      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))
      {
        pcVar10 = maybe_restore_tilde(command_word_completion_function::val,
                                      command_word_completion_function::directory_part);
        free(command_word_completion_function::val);
        command_word_completion_function::val = pcVar10;
      }
      goto LAB_00181336;
    }
    free(command_word_completion_function::val);
    command_word_completion_function::val =
         command_word_completion_function::glob_matches
         [command_word_completion_function::local_index];
  }
  glob_ignore_case = L'\0';
  pcVar10 = (char *)0x0;
  goto LAB_00181336;
  while( true ) {
    uVar14 = uVar14 - 1;
    cVar1 = *pcVar10;
    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
    if (cVar1 == '\0') break;
code_r0x00180ba8:
    if (uVar14 == 0) break;
  }
  pcVar10 = (char *)xmalloc(~uVar14);
  pcVar10 = strcpy(pcVar10,pcVar11);
  goto LAB_00181336;
  while( true ) {
    uVar14 = uVar14 - 1;
    cVar1 = *pcVar10;
    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;
    if (cVar1 == '\0') break;
code_r0x00180d3c:
    if (uVar14 == 0) break;
  }
  pcVar10 = (char *)xmalloc(~uVar14);
  pcVar10 = strcpy(pcVar10,pcVar11);
  goto LAB_00181336;
  while( true ) {
    uVar14 = uVar14 - 1;
    cVar1 = *pcVar11;
    pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;
    if (cVar1 == '\0') break;
code_r0x00180dd3:
    if (uVar14 == 0) break;
  }
  pcVar11 = (char *)xmalloc(~uVar14);
  pcVar10 = strcpy(pcVar11,pcVar10);
LAB_00181336:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return pcVar10;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}



char * command_word_completion_function(char *param_1,int param_2)

{
  char cVar1;
  void *pvVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  char *pcVar7;
  char *pcVar8;
  size_t sVar9;
  char *pcVar10;
  ulong uVar11;
  long lVar12;
  uint uVar13;
  undefined8 *puVar14;
  long in_FS_OFFSET;
  byte bVar15;
  char *local_48;
  long local_40;
  
  bVar15 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_2 == 0) {
    rl_filename_stat_hook = FUN_0017d349;
    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {
      free(DAT_00215ca0);
    }
    if (DAT_00215c98 != (char *)0x0) {
      free(DAT_00215c98);
    }
    DAT_00215c90 = 0;
    DAT_00215c8c = 0;
    iVar4 = absolute_pathname(param_1);
    if (iVar4 == 0) {
      iVar4 = absolute_program(param_1);
      uVar13 = 0;
      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {
        iVar4 = FUN_0017bd1e(param_1);
        uVar13 = (uint)(iVar4 != 0);
      }
    }
    else {
      uVar13 = 0;
    }
    DAT_00215c80 = (char *)0x0;
    DAT_00215c88 = uVar13;
    pcVar7 = (char *)rl_variable_value("completion-ignore-case");
    DAT_00215c7c = 0;
    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {
      DAT_00215c7c = (uint)(pcVar7[2] == '\0');
    }
    if (DAT_00215d50 != (undefined8 *)0x0) {
      free(DAT_00215d50);
      DAT_00215d50 = (undefined8 *)0x0;
    }
    DAT_00215c78 = FUN_0017dd63(param_1);
    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {
      uVar11 = 0xffffffffffffffff;
      pcVar7 = param_1;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      DAT_00215c98 = strcpy(pcVar7,param_1);
      lVar12 = -1;
      pcVar7 = DAT_00215c98;
      do {
        if (lVar12 == 0) break;
        lVar12 = lVar12 + -1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      DAT_00215c68 = ~(uint)lVar12 - 1;
      DAT_00215ca0 = DAT_00215c98;
      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {
        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);
      }
      DAT_00215c48 = get_string_value("PATH");
      DAT_00215d74 = 0;
      DAT_00215c44 = 0;
      DAT_00215c40 = 0;
      if (DAT_00215c38 != (void *)0x0) {
        free(DAT_00215c38);
      }
      DAT_00215c38 = (void *)all_visible_functions();
      if (DAT_00215c30 != (void *)0x0) {
        free(DAT_00215c30);
      }
      DAT_00215c30 = (void *)all_aliases();
      goto LAB_00180925;
    }
    if (*param_1 == '~') {
      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);
      uVar11 = 0xffffffffffffffff;
      pcVar7 = param_1;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      pcVar7 = strcpy(pcVar7,param_1);
      DAT_00215c70 = pcVar7;
      pcVar8 = strchr(pcVar7,0x2f);
      if (pcVar8 == (char *)0x0) {
        free(pcVar7);
        DAT_00215c70 = (char *)0x0;
      }
      else {
        *pcVar8 = '\0';
      }
    }
    else if (dircomplete_expand == 0) {
      uVar11 = 0xffffffffffffffff;
      pcVar7 = param_1;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      DAT_00215c98 = strcpy(pcVar7,param_1);
    }
    else {
      uVar11 = 0xffffffffffffffff;
      pcVar7 = param_1;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      DAT_00215c98 = strcpy(pcVar7,param_1);
      FUN_0017d87c(&DAT_00215c98);
    }
    DAT_00215ca0 = DAT_00215c98;
    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {
      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);
      DAT_00215ca0 = pcVar7;
      free(DAT_00215c98);
      DAT_00215c98 = pcVar7;
    }
    lVar12 = -1;
    pcVar7 = DAT_00215c98;
    do {
      if (lVar12 == 0) break;
      lVar12 = lVar12 + -1;
      cVar1 = *pcVar7;
      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
    } while (cVar1 != '\0');
    DAT_00215c68 = ~(uint)lVar12 - 1;
    if (DAT_00215c60 != (char *)0x0) {
      free(DAT_00215c60);
    }
    pcVar7 = DAT_00215c98;
    uVar11 = 0xffffffffffffffff;
    pcVar8 = DAT_00215c98;
    do {
      if (uVar11 == 0) break;
      uVar11 = uVar11 - 1;
      cVar1 = *pcVar8;
      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;
    } while (cVar1 != '\0');
    pcVar8 = (char *)xmalloc(~uVar11);
    DAT_00215c58 = strcpy(pcVar8,pcVar7);
    DAT_00215c50 = 0;
    DAT_00215c60 = DAT_00215c58;
    if (DAT_00215c78 == 0) {
      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {
        dircomplete_expand = 0;
        set_directory_hook();
        dircomplete_expand = 1;
      }
      DAT_00215c8c = 4;
LAB_00180a7a:
      while( true ) {
        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);
        DAT_00215c80 = pcVar7;
        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {
          set_directory_hook();
        }
        DAT_00215c50 = 1;
        if (pcVar7 == (char *)0x0) break;
        iVar4 = absolute_program(DAT_00215c98);
        if (iVar4 == 0) {
          pcVar7 = strrchr(DAT_00215c80,0x2f);
          pcVar8 = DAT_00215c80;
          if (pcVar7 != (char *)0x0) {
            pcVar7 = pcVar7 + 1;
            if (DAT_00215c7c == 0) {
              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);
            }
            else {
              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);
            }
            pcVar8 = DAT_00215c80;
            if (iVar4 == 0) {
              uVar11 = 0xffffffffffffffff;
              pcVar8 = pcVar7;
              do {
                if (uVar11 == 0) break;
                uVar11 = uVar11 - 1;
                cVar1 = *pcVar8;
                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;
              } while (cVar1 != '\0');
              pcVar8 = (char *)xmalloc(~uVar11);
              pcVar7 = strcpy(pcVar8,pcVar7);
              goto LAB_001812ba;
            }
          }
        }
        else {
          if (DAT_00215c7c == 0) {
            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);
          }
          else {
            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);
          }
          pcVar7 = DAT_00215c80;
          if (*param_1 == '~') {
            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);
          }
          else {
            uVar11 = 0xffffffffffffffff;
            pcVar8 = DAT_00215c80;
            do {
              if (uVar11 == 0) break;
              uVar11 = uVar11 - 1;
              cVar1 = *pcVar8;
              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;
            } while (cVar1 != '\0');
            pcVar8 = (char *)xmalloc(~uVar11);
            pcVar7 = strcpy(pcVar8,pcVar7);
          }
          pcVar10 = DAT_00215c80;
          if (iVar4 == 0) {
LAB_001812ba:
            iVar4 = DAT_00215c90;
            pcVar10 = DAT_00215c80;
            uVar11 = 0xffffffffffffffff;
            pcVar8 = DAT_00215c80;
            do {
              if (uVar11 == 0) break;
              uVar11 = uVar11 - 1;
              cVar1 = *pcVar8;
              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;
            } while (cVar1 != '\0');
            pcVar8 = (char *)xmalloc(~uVar11);
            local_48 = strcpy(pcVar8,pcVar10);
            FUN_0017d87c(&local_48);
            if (iVar4 == 0) {
              iVar4 = executable_or_directory(local_48);
            }
            else {
              iVar4 = executable_file(local_48);
            }
            free(local_48);
            pcVar8 = DAT_00215c80;
            if (iVar4 != 0) {
              if (DAT_00215c80 != pcVar10) {
                free(pcVar10);
              }
              free(pcVar8);
              DAT_00215c80 = "";
              goto LAB_00181336;
            }
          }
          free(pcVar7);
          pcVar8 = DAT_00215c80;
          if (DAT_00215c80 != pcVar10) {
            free(pcVar10);
          }
        }
        free(pcVar8);
      }
      iVar4 = absolute_program(DAT_00215c98);
      if (iVar4 == 0) {
LAB_00180e1e:
        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);
        if (DAT_00215c80 == (char *)0x0) {
          if (DAT_00215c48 == 0) {
            pcVar7 = (char *)0x0;
            goto LAB_00181336;
          }
          pcVar7 = (char *)0x0;
          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||
             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0
             )) goto LAB_00181336;
          DAT_00215c90 = 1;
          if (*pcVar7 == '\0') {
            free(pcVar7);
            pcVar7 = (char *)xmalloc(2);
            pcVar7[0] = '.';
            pcVar7[1] = '\0';
          }
          pcVar8 = pcVar7;
          if (*pcVar7 == '~') {
            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);
            free(pcVar7);
          }
          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {
            DAT_00215d74 = 1;
          }
          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {
            free(DAT_00215c58);
          }
          if (DAT_00215c60 != (char *)0x0) {
            free(DAT_00215c60);
          }
          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);
          DAT_00215c60 = pcVar7;
          pcVar10 = strpbrk(pcVar7,"\"\'\\");
          if (pcVar10 != (char *)0x0) {
            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);
          }
          DAT_00215c58 = pcVar7;
          free(pcVar8);
        }
        goto LAB_00180a7a;
      }
      pcVar7 = (char *)0x0;
      goto LAB_00181336;
    }
    DAT_00215c8c = 5;
LAB_00180787:
    glob_ignore_case = DAT_00215c7c;
    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);
    glob_ignore_case = 0;
    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {
      DAT_00215d50 = (undefined8 *)0x0;
      pcVar7 = (char *)0x0;
      goto LAB_00181336;
    }
    DAT_00215c40 = 0;
    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {
      pcVar7 = (char *)0x0;
      goto LAB_00181336;
    }
  }
  else {
LAB_00180925:
    pcVar7 = DAT_00215c98;
    uVar13 = DAT_00215c7c;
    iVar4 = DAT_00215c68;
    pvVar2 = DAT_00215c30;
    if (DAT_00215c8c == 1) {
LAB_00180bdc:
      pcVar7 = DAT_00215c98;
      iVar4 = DAT_00215c68;
      sVar9 = (size_t)DAT_00215c68;
      do {
        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];
        if (pcVar8 == (char *)0x0) {
          DAT_00215c40 = 0;
          DAT_00215c8c = DAT_00215c8c + 1;
          goto LAB_00180c72;
        }
        DAT_00215c40 = DAT_00215c40 + 1;
      } while ((iVar4 != 0) &&
              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));
      uVar11 = 0xffffffffffffffff;
      pcVar7 = pcVar8;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      pcVar7 = strcpy(pcVar7,pcVar8);
      goto LAB_00181336;
    }
    if (DAT_00215c8c < 2) {
      if (DAT_00215c8c == 0) {
        sVar9 = (size_t)DAT_00215c68;
        do {
          while( true ) {
            if ((pvVar2 == (void *)0x0) ||
               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),
               puVar14 == (undefined8 *)0x0)) {
              DAT_00215c40 = 0;
              DAT_00215c8c = 1;
              goto LAB_00180bdc;
            }
            DAT_00215c40 = DAT_00215c40 + 1;
            pcVar8 = (char *)*puVar14;
            if (uVar13 == 0) break;
            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);
            if (iVar5 == 0) {
              uVar11 = 0xffffffffffffffff;
              pcVar7 = pcVar8;
              goto code_r0x00180ba8;
            }
          }
        } while ((iVar4 != 0) &&
                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));
        uVar11 = 0xffffffffffffffff;
        pcVar7 = pcVar8;
        do {
          if (uVar11 == 0) break;
          uVar11 = uVar11 - 1;
          cVar1 = *pcVar7;
          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
        } while (cVar1 != '\0');
        pcVar7 = (char *)xmalloc(~uVar11);
        pcVar7 = strcpy(pcVar7,pcVar8);
        goto LAB_00181336;
      }
    }
    else {
      if (DAT_00215c8c == 2) {
LAB_00180c72:
        pcVar7 = DAT_00215c98;
        uVar13 = DAT_00215c7c;
        iVar4 = DAT_00215c68;
        pvVar2 = DAT_00215c38;
        sVar9 = (size_t)DAT_00215c68;
        do {
          while( true ) {
            if ((pvVar2 == (void *)0x0) ||
               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),
               puVar14 == (undefined8 *)0x0)) {
              DAT_00215c40 = 0;
              DAT_00215c8c = DAT_00215c8c + 1;
              goto LAB_0018094c;
            }
            DAT_00215c40 = DAT_00215c40 + 1;
            pcVar8 = (char *)*puVar14;
            if (uVar13 == 0) break;
            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);
            if (iVar5 == 0) {
              uVar11 = 0xffffffffffffffff;
              pcVar7 = pcVar8;
              goto code_r0x00180d3c;
            }
          }
        } while ((iVar4 != 0) &&
                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));
        uVar11 = 0xffffffffffffffff;
        pcVar7 = pcVar8;
        do {
          if (uVar11 == 0) break;
          uVar11 = uVar11 - 1;
          cVar1 = *pcVar7;
          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
        } while (cVar1 != '\0');
        pcVar7 = (char *)xmalloc(~uVar11);
        pcVar7 = strcpy(pcVar7,pcVar8);
        goto LAB_00181336;
      }
      if (DAT_00215c8c == 3) {
LAB_0018094c:
        pcVar7 = DAT_00215c98;
        iVar5 = DAT_00215c68;
        iVar4 = num_shell_builtins;
        if (DAT_00215c40 < num_shell_builtins) {
          sVar9 = (size_t)DAT_00215c68;
          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);
          do {
            iVar3 = DAT_00215c40;
            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&
               ((iVar5 == 0 ||
                ((*(char *)*puVar14 == *pcVar7 &&
                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {
              DAT_00215c40 = iVar3 + 1;
              pcVar7 = (char *)*puVar14;
              uVar11 = 0xffffffffffffffff;
              pcVar8 = pcVar7;
              goto code_r0x00180dd3;
            }
            DAT_00215c40 = iVar3 + 1;
            puVar14 = puVar14 + 6;
          } while (DAT_00215c40 != iVar4);
        }
        DAT_00215c40 = 0;
        DAT_00215c8c = DAT_00215c8c + 1;
      }
    }
    if (DAT_00215c78 == 0) {
      if (DAT_00215c88 == 0) goto LAB_00180e1e;
      DAT_00215c88 = 0;
      uVar11 = 0xffffffffffffffff;
      pcVar7 = param_1;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      pcVar7 = strcpy(pcVar7,param_1);
      goto LAB_00181336;
    }
    if (param_2 == 0) goto LAB_00180787;
  }
  DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];
  while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {
    iVar4 = executable_or_directory();
    if (iVar4 != 0) {
      pcVar7 = DAT_00215c80;
      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {
        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);
        free(DAT_00215c80);
        DAT_00215c80 = pcVar7;
      }
      goto LAB_00181336;
    }
    free(DAT_00215c80);
    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];
  }
  glob_ignore_case = 0;
  pcVar7 = (char *)0x0;
  goto LAB_00181336;
  while( true ) {
    uVar11 = uVar11 - 1;
    cVar1 = *pcVar7;
    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
    if (cVar1 == '\0') break;
code_r0x00180ba8:
    if (uVar11 == 0) break;
  }
  pcVar7 = (char *)xmalloc(~uVar11);
  pcVar7 = strcpy(pcVar7,pcVar8);
  goto LAB_00181336;
  while( true ) {
    uVar11 = uVar11 - 1;
    cVar1 = *pcVar7;
    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
    if (cVar1 == '\0') break;
code_r0x00180d3c:
    if (uVar11 == 0) break;
  }
  pcVar7 = (char *)xmalloc(~uVar11);
  pcVar7 = strcpy(pcVar7,pcVar8);
  goto LAB_00181336;
  while( true ) {
    uVar11 = uVar11 - 1;
    cVar1 = *pcVar8;
    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;
    if (cVar1 == '\0') break;
code_r0x00180dd3:
    if (uVar11 == 0) break;
  }
  pcVar8 = (char *)xmalloc(~uVar11);
  pcVar7 = strcpy(pcVar8,pcVar7);
LAB_00181336:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return pcVar7;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOV R12,RDI
MOV EAX,ESI
MOV dword ptr [RSP + 0x14],ESI
MOV RSI,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x28],RSI
XOR ESI,ESI
TEST EAX,EAX
JNZ 0x00180925
LEA RAX,[0x17d349]
MOV qword ptr [0x00216858],RAX
MOV RDI,qword ptr [0x00215ca0]
TEST RDI,RDI
JZ 0x001805e1
CMP RDI,qword ptr [0x00215c98]
JZ 0x001805e1
CALL 0x0012d080
MOV RDI,qword ptr [0x00215c98]
TEST RDI,RDI
JZ 0x001805f2
CALL 0x0012d080
MOV dword ptr [0x00215c90],0x0
MOV dword ptr [0x00215c8c],0x0
MOV RDI,R12
CALL 0x0013cbb7
MOV EBX,EAX
TEST EAX,EAX
JZ 0x001807f5
MOV EBX,dword ptr [RSP + 0x14]
MOV dword ptr [0x00215c88],EBX
MOV qword ptr [0x00215c80],0x0
LEA RDI,[0x1d63a0]
CALL 0x001bbdb7
MOV EDX,dword ptr [RSP + 0x14]
CMP byte ptr [RAX],0x6f
JZ 0x00180827
MOV dword ptr [0x00215c7c],EDX
MOV RDI,qword ptr [0x00215d50]
TEST RDI,RDI
JZ 0x00180668
CALL 0x0012d080
MOV qword ptr [0x00215d50],0x0
MOV RDI,R12
CALL 0x0017dd63
MOV dword ptr [0x00215c78],EAX
TEST EAX,EAX
JZ 0x00180840
CMP byte ptr [R12],0x7e
JZ 0x00180991
CMP dword ptr [0x00215c08],0x0
JZ 0x00180a08
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,R12
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,R12
MOV RDI,RAX
CALL 0x0012d160
MOV qword ptr [0x00215c98],RAX
LEA RDI,[0x215c98]
CALL 0x0017d87c
MOV RDI,qword ptr [0x00215c98]
MOV qword ptr [0x00215ca0],RDI
CMP dword ptr [0x0021c804],0x0
JZ 0x001806f4
CMP dword ptr [0x0021c7f4],0x0
JZ 0x00180a3b
MOV RDI,qword ptr [0x00215c98]
MOV RCX,-0x1
MOV EAX,0x0
SCASB.REPNE RDI
MOV RAX,RCX
NOT RAX
SUB RAX,0x1
MOV dword ptr [0x00215c68],EAX
MOV RDI,qword ptr [0x00215c60]
TEST RDI,RDI
JZ 0x0018072a
CALL 0x0012d080
MOV RBX,qword ptr [0x00215c98]
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,RBX
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,RBX
MOV RDI,RAX
CALL 0x0012d160
MOV qword ptr [0x00215c60],RAX
MOV qword ptr [0x00215c58],RAX
MOV dword ptr [0x00215c50],0x0
CMP dword ptr [0x00215c78],0x0
JZ 0x00180a67
MOV dword ptr [0x00215c8c],0x5
MOV EAX,dword ptr [0x00215c7c]
MOV dword ptr [0x002161c0],EAX
MOV RDI,qword ptr [0x00215c98]
CALL 0x00171967
MOV qword ptr [0x00215d50],RAX
MOV dword ptr [0x002161c0],0x0
LEA RDX,[0x21c6a8]
CMP RAX,RDX
JZ 0x00180fa5
TEST RAX,RAX
JZ 0x00180fa5
MOV dword ptr [0x00215c40],0x0
CMP qword ptr [RAX + 0x8],0x0
JZ 0x00180f2c
CMP dword ptr [0x00216828],0x9
JNZ 0x00180f2c
MOV EBX,0x0
JMP 0x00181336
MOV RDI,R12
CALL 0x0013cc11
TEST EAX,EAX
JNZ 0x0018061c
MOV EBX,EAX
CMP byte ptr [R12],0x7e
JZ 0x0018061c
MOV RDI,R12
CALL 0x0017bd1e
TEST EAX,EAX
SETNZ BL
MOVZX EBX,BL
JMP 0x0018061c
CMP byte ptr [RAX + 0x1],0x6e
JNZ 0x00180646
CMP byte ptr [RAX + 0x2],0x0
SETZ DL
MOVZX EDX,DL
JMP 0x00180646
MOV RDI,R12
CALL 0x0013cc11
TEST EAX,EAX
JNZ 0x0018067e
MOV RBP,-0x1
MOV EBX,0x0
MOV RCX,RBP
MOV RDI,R12
MOV EAX,EBX
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,R12
MOV RDI,RAX
CALL 0x0012d160
MOV RDX,RAX
MOV qword ptr [0x00215c98],RAX
MOV qword ptr [0x00215ca0],RAX
MOV RCX,RBP
MOV RDI,RAX
MOV EAX,EBX
SCASB.REPNE RDI
NOT RCX
LEA RAX,[RCX + RBP*0x1]
MOV dword ptr [0x00215c68],EAX
CMP dword ptr [0x0021c804],0x0
JZ 0x001808ba
CMP dword ptr [0x0021c7f4],0x0
JZ 0x00180abd
LEA RDI,[0x1e5c9e]
CALL 0x0014af0e
MOV qword ptr [0x00215c48],RAX
MOV dword ptr [0x00215d74],0x0
MOV dword ptr [0x00215c44],0x0
MOV dword ptr [0x00215c40],0x0
MOV RDI,qword ptr [0x00215c38]
TEST RDI,RDI
JZ 0x001808fc
CALL 0x0012d080
CALL 0x0014bd0e
MOV qword ptr [0x00215c38],RAX
MOV RDI,qword ptr [0x00215c30]
TEST RDI,RDI
JZ 0x00180919
CALL 0x0012d080
CALL 0x00173fb3
MOV qword ptr [0x00215c30],RAX
MOV EAX,dword ptr [0x00215c8c]
CMP EAX,0x1
JZ 0x00180bdc
JLE 0x00180ad6
CMP EAX,0x2
JZ 0x00180c72
CMP EAX,0x3
JNZ 0x00180e04
MOV EBP,dword ptr [0x00215c40]
MOV R14D,dword ptr [0x0020bdc4]
CMP R14D,EBP
JLE 0x00180df3
MOV EAX,dword ptr [0x00215c68]
MOV dword ptr [RSP + 0x8],EAX
MOV R15,qword ptr [0x00215c98]
CDQE
MOV qword ptr [RSP + 0x18],RAX
MOVSXD RAX,EBP
LEA RBX,[RAX + RAX*0x2]
SHL RBX,0x4
ADD RBX,qword ptr [0x0020bdc8]
JMP 0x00180d84
MOV ESI,0x0
MOV RDI,R12
CALL 0x0013d232
MOV qword ptr [0x00215c98],RAX
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,R12
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,R12
MOV RDI,RAX
CALL 0x0012d160
MOV RBX,RAX
MOV qword ptr [0x00215c70],RAX
MOV ESI,0x2f
MOV RDI,RAX
CALL 0x0012d400
TEST RAX,RAX
JZ 0x001809f0
MOV byte ptr [RAX],0x0
JMP 0x001806d0
MOV RDI,RBX
CALL 0x0012d080
MOV qword ptr [0x00215c70],0x0
JMP 0x001806d0
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,R12
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,R12
MOV RDI,RAX
CALL 0x0012d160
MOV qword ptr [0x00215c98],RAX
JMP 0x001806d0
MOV ESI,0x0
CALL 0x0017ac3b
MOV RBX,RAX
MOV qword ptr [0x00215ca0],RAX
MOV RDI,qword ptr [0x00215c98]
CALL 0x0012d080
MOV qword ptr [0x00215c98],RBX
JMP 0x001806f4
CMP dword ptr [0x00215c08],0x0
JNZ 0x00180a96
MOV dword ptr [0x00215c8c],0x4
MOV R14,-0x1
MOV R13D,0x0
LEA RAX,[RSP + 0x20]
MOV qword ptr [RSP + 0x8],RAX
JMP 0x001811f3
MOV RDI,RAX
CALL 0x0013cb73
TEST EAX,EAX
JZ 0x00180a70
MOV dword ptr [0x00215c08],0x0
CALL 0x0017f322
MOV dword ptr [0x00215c08],0x1
JMP 0x00180a70
MOV ESI,0x0
MOV RDI,RDX
CALL 0x0017ac3b
MOV qword ptr [0x00215ca0],RAX
JMP 0x001808ba
TEST EAX,EAX
JNZ 0x00180e04
MOV RBP,qword ptr [0x00215c30]
MOV R14D,dword ptr [0x00215c7c]
MOV R15D,dword ptr [0x00215c68]
MOVSXD RAX,R15D
MOV qword ptr [RSP + 0x8],RAX
MOV R13,qword ptr [0x00215c98]
JMP 0x00180b1c
MOV RDX,qword ptr [RSP + 0x8]
MOV RSI,R13
MOV RDI,RBX
CALL 0x0012d7b0
TEST EAX,EAX
JZ 0x00180b9e
TEST RBP,RBP
JZ 0x00180bc8
MOV EAX,dword ptr [0x00215c40]
MOVSXD RDX,EAX
MOV RDX,qword ptr [RBP + RDX*0x8]
TEST RDX,RDX
JZ 0x00180bc8
ADD EAX,0x1
MOV dword ptr [0x00215c40],EAX
MOV RBX,qword ptr [RDX]
TEST R14D,R14D
JNZ 0x00180b04
TEST R15D,R15D
JZ 0x00180b6f
MOVZX EAX,byte ptr [R13]
CMP byte ptr [RBX],AL
JNZ 0x00180b1c
MOV RDX,qword ptr [RSP + 0x8]
MOV RSI,R13
MOV RDI,RBX
CALL 0x0012d140
TEST EAX,EAX
JNZ 0x00180b1c
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,RBX
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,RBX
MOV RDI,RAX
CALL 0x0012d160
MOV RBX,RAX
JMP 0x00181336
MOV RCX,-0x1
MOV RDI,RBX
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,RBX
MOV RDI,RAX
CALL 0x0012d160
MOV RBX,RAX
JMP 0x00181336
MOV dword ptr [0x00215c40],0x0
MOV dword ptr [0x00215c8c],0x1
MOV R13D,dword ptr [0x00215c68]
MOV RBP,qword ptr [0x00215c98]
MOVSXD R15,R13D
LEA R14,[0x20a960]
MOV EAX,dword ptr [0x00215c40]
MOVSXD RDX,EAX
SHL RDX,0x4
MOV RBX,qword ptr [R14 + RDX*0x1]
TEST RBX,RBX
JZ 0x00180c61
ADD EAX,0x1
MOV dword ptr [0x00215c40],EAX
TEST R13D,R13D
JZ 0x00180c32
MOVZX EAX,byte ptr [RBP]
CMP byte ptr [RBX],AL
JNZ 0x00180bf4
MOV RDX,R15
MOV RSI,RBP
MOV RDI,RBX
CALL 0x0012d140
TEST EAX,EAX
JNZ 0x00180bf4
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,RBX
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,RBX
MOV RDI,RAX
CALL 0x0012d160
MOV RBX,RAX
JMP 0x00181336
MOV dword ptr [0x00215c40],0x0
ADD dword ptr [0x00215c8c],0x1
MOV RBP,qword ptr [0x00215c38]
MOV R14D,dword ptr [0x00215c7c]
MOV R15D,dword ptr [0x00215c68]
MOVSXD RAX,R15D
MOV qword ptr [RSP + 0x8],RAX
MOV R13,qword ptr [0x00215c98]
JMP 0x00180cb0
MOV RDX,qword ptr [RSP + 0x8]
MOV RSI,R13
MOV RDI,RBX
CALL 0x0012d7b0
TEST EAX,EAX
JZ 0x00180d32
TEST RBP,RBP
JZ 0x00180d5c
MOV EAX,dword ptr [0x00215c40]
MOVSXD RDX,EAX
MOV RDX,qword ptr [RBP + RDX*0x8]
TEST RDX,RDX
JZ 0x00180d5c
ADD EAX,0x1
MOV dword ptr [0x00215c40],EAX
MOV RBX,qword ptr [RDX]
TEST R14D,R14D
JNZ 0x00180c98
TEST R15D,R15D
JZ 0x00180d03
MOVZX EAX,byte ptr [R13]
CMP byte ptr [RBX],AL
JNZ 0x00180cb0
MOV RDX,qword ptr [RSP + 0x8]
MOV RSI,R13
MOV RDI,RBX
CALL 0x0012d140
TEST EAX,EAX
JNZ 0x00180cb0
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,RBX
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,RBX
MOV RDI,RAX
CALL 0x0012d160
MOV RBX,RAX
JMP 0x00181336
MOV RCX,-0x1
MOV RDI,RBX
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,RBX
MOV RDI,RAX
CALL 0x0012d160
MOV RBX,RAX
JMP 0x00181336
MOV dword ptr [0x00215c40],0x0
ADD dword ptr [0x00215c8c],0x1
JMP 0x0018094c
ADD EBP,0x1
MOV dword ptr [0x00215c40],EBP
ADD RBX,0x30
CMP EBP,R14D
JZ 0x00180df3
MOV R13,RBX
CMP qword ptr [RBX + 0x8],0x0
JZ 0x00180d72
TEST byte ptr [RBX + 0x10],0x1
JZ 0x00180d72
CMP dword ptr [RSP + 0x8],0x0
JZ 0x00180db7
MOV RDI,qword ptr [RBX]
MOVZX EAX,byte ptr [R15]
CMP byte ptr [RDI],AL
JNZ 0x00180d72
MOV RDX,qword ptr [RSP + 0x18]
MOV RSI,R15
CALL 0x0012d140
TEST EAX,EAX
JNZ 0x00180d72
ADD EBP,0x1
MOV dword ptr [0x00215c40],EBP
MOV RBX,qword ptr [R13]
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,RBX
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,RBX
MOV RDI,RAX
CALL 0x0012d160
MOV RBX,RAX
JMP 0x00181336
MOV dword ptr [0x00215c40],0x0
ADD dword ptr [0x00215c8c],0x1
CMP dword ptr [0x00215c78],0x0
JNZ 0x00180f21
CMP dword ptr [0x00215c88],0x0
JNZ 0x00180ffd
MOV RBX,qword ptr [0x00215c80]
TEST RBX,RBX
SETNZ AL
MOVZX EAX,AL
MOV dword ptr [0x00215c50],EAX
JNZ 0x00180a7a
MOV RDI,qword ptr [0x00215c48]
TEST RDI,RDI
JZ 0x00181358
MOVSXD RAX,dword ptr [0x00215c44]
CMP byte ptr [RDI + RAX*0x1],0x0
JZ 0x00181336
LEA RSI,[0x215c44]
CALL 0x0013cfa4
MOV RBX,RAX
TEST RAX,RAX
JZ 0x00181336
MOV dword ptr [0x00215c90],0x1
CMP byte ptr [RAX],0x0
JZ 0x00181036
CMP byte ptr [RBX],0x7e
JZ 0x00181055
CMP byte ptr [RBX],0x2e
JZ 0x00181075
MOV RDI,qword ptr [0x00215c58]
TEST RDI,RDI
JZ 0x00180eb2
CMP RDI,qword ptr [0x00215c60]
JZ 0x00180eb2
CALL 0x0012d080
MOV RDI,qword ptr [0x00215c60]
TEST RDI,RDI
JZ 0x00180ec3
CALL 0x0012d080
MOV EDX,0x0
MOV RSI,qword ptr [0x00215c98]
MOV RDI,RBX
CALL 0x001a8f89
MOV RBP,RAX
MOV qword ptr [0x00215c60],RAX
LEA RSI,[0x1d63b7]
MOV RDI,RAX
CALL 0x0012d870
TEST RAX,RAX
JZ 0x0018108e
MOV EDX,0x0
LEA RSI,[0x215d80]
MOV RDI,RBP
CALL 0x001aae7b
MOV qword ptr [0x00215c58],RAX
MOV RDI,RBX
CALL 0x0012d080
JMP 0x00180a7a
CMP dword ptr [RSP + 0x14],0x0
JZ 0x00180787
MOV EAX,dword ptr [0x00215c40]
LEA EDX,[RAX + 0x1]
MOV dword ptr [0x00215c40],EDX
CDQE
MOV RDX,qword ptr [0x00215d50]
MOV RDI,qword ptr [RDX + RAX*0x8]
MOV qword ptr [0x00215c80],RDI
TEST RDI,RDI
JZ 0x00180f91
CALL 0x0018314d
TEST EAX,EAX
JNZ 0x00180fba
MOV RDI,qword ptr [0x00215c80]
CALL 0x0012d080
MOV EAX,dword ptr [0x00215c40]
LEA EDX,[RAX + 0x1]
MOV dword ptr [0x00215c40],EDX
CDQE
MOV RDX,qword ptr [0x00215d50]
MOV RDI,qword ptr [RDX + RAX*0x8]
MOV qword ptr [0x00215c80],RDI
TEST RDI,RDI
JNZ 0x00180f54
MOV dword ptr [0x002161c0],0x0
MOV EBX,0x0
JMP 0x00181336
MOV qword ptr [0x00215d50],0x0
MOV EBX,0x0
JMP 0x00181336
CMP byte ptr [R12],0x7e
JZ 0x00180fcd
MOV RBX,qword ptr [0x00215c80]
JMP 0x00181336
MOV RSI,qword ptr [0x00215c70]
TEST RSI,RSI
JZ 0x00180fc1
MOV RDI,qword ptr [0x00215c80]
CALL 0x0017b4b4
MOV RBX,RAX
MOV RDI,qword ptr [0x00215c80]
CALL 0x0012d080
MOV qword ptr [0x00215c80],RBX
JMP 0x00180fc1
MOV dword ptr [0x00215c88],0x0
MOV RCX,-0x1
MOV EAX,0x0
MOV RDI,R12
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,R12
MOV RDI,RAX
CALL 0x0012d160
MOV RBX,RAX
JMP 0x00181336
MOV RDI,RAX
CALL 0x0012d080
MOV EDI,0x2
CALL 0x00188151
MOV word ptr [RAX],0x2e
MOV RBX,RAX
JMP 0x00180e86
MOV ESI,0x0
MOV RDI,RBX
CALL 0x0013d232
MOV RBP,RAX
MOV RDI,RBX
CALL 0x0012d080
MOV RBX,RBP
JMP 0x00180e8f
CMP byte ptr [RBX + 0x1],0x0
JNZ 0x00180e98
MOV dword ptr [0x00215d74],0x1
JMP 0x00180e98
MOV qword ptr [0x00215c58],RBP
JMP 0x00180f14
CMP dword ptr [0x00215c08],0x0
JZ 0x0018121c
CALL 0x0017f322
JMP 0x0018121c
MOV RDI,qword ptr [0x00215c98]
CALL 0x0013cc11
TEST EAX,EAX
JZ 0x00180e1e
JMP 0x00181336
MOVSXD RDX,dword ptr [0x00215c68]
MOV RSI,qword ptr [0x00215c98]
MOV RDI,qword ptr [0x00215c80]
CALL 0x0012d7b0
TEST EAX,EAX
SETZ R15B
MOVZX R15D,R15B
JMP 0x00181274
MOV RSI,qword ptr [0x00215c70]
MOV RDI,qword ptr [0x00215c80]
CALL 0x0017b4b4
MOV RBX,RAX
JMP 0x001812aa
MOV ESI,0x2f
MOV RDI,qword ptr [0x00215c80]
CALL 0x0012d450
TEST RAX,RAX
JZ 0x00181153
LEA RBX,[RAX + 0x1]
CMP dword ptr [0x00215c7c],0x0
JNZ 0x0018115f
MOVSXD RDX,dword ptr [0x00215c68]
MOV RSI,qword ptr [0x00215c98]
MOV RDI,RBX
CALL 0x0012d140
TEST EAX,EAX
SETZ AL
MOVZX EAX,AL
TEST EAX,EAX
JNZ 0x0018117f
MOV RBX,qword ptr [0x00215c80]
JMP 0x001811eb
MOVSXD RDX,dword ptr [0x00215c68]
MOV RSI,qword ptr [0x00215c98]
MOV RDI,RBX
CALL 0x0012d7b0
TEST EAX,EAX
SETZ AL
MOVZX EAX,AL
JMP 0x0018114f
MOV RCX,R14
MOV RDI,RBX
MOV EAX,R13D
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,RBX
MOV RDI,RAX
CALL 0x0012d160
MOV RBX,RAX
MOV RBP,qword ptr [0x00215c80]
JMP 0x001812ba
MOV RDI,qword ptr [RSP + 0x20]
CALL 0x0018314d
MOV R15D,EAX
MOV RDI,qword ptr [RSP + 0x20]
CALL 0x0012d080
TEST R15D,R15D
JNZ 0x0018130c
MOV RDI,RBX
CALL 0x0012d080
MOV RBX,qword ptr [0x00215c80]
CMP RBX,RBP
JZ 0x001811eb
MOV RDI,RBP
CALL 0x0012d080
MOV RDI,RBX
CALL 0x0012d080
MOV ESI,dword ptr [0x00215c50]
MOV RDI,qword ptr [0x00215c58]
CALL 0x001b593b
MOV RBX,RAX
MOV qword ptr [0x00215c80],RAX
CMP dword ptr [0x00215c8c],0x4
JZ 0x0018109a
MOV dword ptr [0x00215c50],0x1
TEST RBX,RBX
JZ 0x001810b1
MOV RDI,qword ptr [0x00215c98]
CALL 0x0013cc11
TEST EAX,EAX
JZ 0x0018110e
CMP dword ptr [0x00215c7c],0x0
JNZ 0x001810ca
MOVSXD RDX,dword ptr [0x00215c68]
MOV RSI,qword ptr [0x00215c98]
MOV RDI,qword ptr [0x00215c80]
CALL 0x0012d140
TEST EAX,EAX
SETZ R15B
MOVZX R15D,R15B
CMP byte ptr [R12],0x7e
JZ 0x001810f3
MOV RBX,qword ptr [0x00215c80]
MOV RCX,R14
MOV RDI,RBX
MOV EAX,R13D
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,RBX
MOV RDI,RAX
CALL 0x0012d160
MOV RBX,RAX
MOV RBP,qword ptr [0x00215c80]
TEST R15D,R15D
JZ 0x001811cf
MOV R15D,dword ptr [0x00215c90]
MOV RCX,R14
MOV RDI,RBP
MOV EAX,R13D
SCASB.REPNE RDI
NOT RCX
MOV RDI,RCX
CALL 0x00188151
MOV RSI,RBP
MOV RDI,RAX
CALL 0x0012d160
MOV qword ptr [RSP + 0x20],RAX
MOV RDI,qword ptr [RSP + 0x8]
CALL 0x0017d87c
TEST R15D,R15D
JZ 0x001811af
MOV RDI,qword ptr [RSP + 0x20]
CALL 0x00182e90
MOV R15D,EAX
JMP 0x001811bc
MOV R12,qword ptr [0x00215c80]
CMP R12,RBP
JZ 0x00181320
MOV RDI,RBP
CALL 0x0012d080
MOV RDI,R12
CALL 0x0012d080
LEA RAX,[0x1eabcd]
MOV qword ptr [0x00215c80],RAX
MOV RAX,RBX
MOV RSI,qword ptr [RSP + 0x28]
XOR RSI,qword ptr FS:[0x28]
JNZ 0x0018135d
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RBX,RDI
JMP 0x00181336
CALL 0x0012d3b0
(translation_unit "char * command_word_completion_function(char *param_1,int param_2)\n\n{\n  char cVar1;\n  void *pvVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  char *pcVar8;\n  size_t sVar9;\n  char *pcVar10;\n  ulong uVar11;\n  long lVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  long in_FS_OFFSET;\n  byte bVar15;\n  char *local_48;\n  long local_40;\n  \n  bVar15 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }\n  DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }\n  glob_ignore_case = 0;\n  pcVar7 = (char *)0x0;\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }\n  pcVar8 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar8,pcVar7);\nLAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "char * command_word_completion_function(char *param_1,int param_2)\n\n{\n  char cVar1;\n  void *pvVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  char *pcVar8;\n  size_t sVar9;\n  char *pcVar10;\n  ulong uVar11;\n  long lVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  long in_FS_OFFSET;\n  byte bVar15;\n  char *local_48;\n  long local_40;\n  \n  bVar15 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }\n  DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }\n  glob_ignore_case = 0;\n  pcVar7 = (char *)0x0;\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }\n  pcVar8 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar8,pcVar7);\nLAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (pointer_declarator "* command_word_completion_function(char *param_1,int param_2)" * (function_declarator "command_word_completion_function(char *param_1,int param_2)" identifier (parameter_list "(char *param_1,int param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  char cVar1;\n  void *pvVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  char *pcVar8;\n  size_t sVar9;\n  char *pcVar10;\n  ulong uVar11;\n  long lVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  long in_FS_OFFSET;\n  byte bVar15;\n  char *local_48;\n  long local_40;\n  \n  bVar15 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }\n  DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }\n  glob_ignore_case = 0;\n  pcVar7 = (char *)0x0;\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }\n  pcVar8 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar8,pcVar7);\nLAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "char *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }" { (expression_statement "rl_filename_stat_hook = FUN_0017d349;" (assignment_expression "rl_filename_stat_hook = FUN_0017d349" identifier = identifier) ;) (if_statement "if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }" if (parenthesized_expression "((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98))" ( (binary_expression "(DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)" (parenthesized_expression "(DAT_00215ca0 != (char *)0x0)" ( (binary_expression "DAT_00215ca0 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(DAT_00215ca0 != DAT_00215c98)" ( (binary_expression "DAT_00215ca0 != DAT_00215c98" identifier != identifier) ))) )) (compound_statement "{\n      free(DAT_00215ca0);\n    }" { (expression_statement "free(DAT_00215ca0);" (call_expression "free(DAT_00215ca0)" identifier (argument_list "(DAT_00215ca0)" ( identifier ))) ;) })) (if_statement "if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }" if (parenthesized_expression "(DAT_00215c98 != (char *)0x0)" ( (binary_expression "DAT_00215c98 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(DAT_00215c98);\n    }" { (expression_statement "free(DAT_00215c98);" (call_expression "free(DAT_00215c98)" identifier (argument_list "(DAT_00215c98)" ( identifier ))) ;) })) (expression_statement "DAT_00215c90 = 0;" (assignment_expression "DAT_00215c90 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c8c = 0;" (assignment_expression "DAT_00215c8c = 0" identifier = number_literal) ;) (expression_statement "iVar4 = absolute_pathname(param_1);" (assignment_expression "iVar4 = absolute_pathname(param_1)" identifier = (call_expression "absolute_pathname(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }" { (expression_statement "iVar4 = absolute_program(param_1);" (assignment_expression "iVar4 = absolute_program(param_1)" identifier = (call_expression "absolute_program(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (if_statement "if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }" if (parenthesized_expression "((iVar4 == 0) && (uVar13 = 0, *param_1 != '~'))" ( (binary_expression "(iVar4 == 0) && (uVar13 = 0, *param_1 != '~')" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar13 = 0, *param_1 != '~')" ( (comma_expression "uVar13 = 0, *param_1 != '~'" (assignment_expression "uVar13 = 0" identifier = number_literal) , (binary_expression "*param_1 != '~'" (pointer_expression "*param_1" * identifier) != (char_literal "'~'" ' character '))) ))) )) (compound_statement "{\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }" { (expression_statement "iVar4 = FUN_0017bd1e(param_1);" (assignment_expression "iVar4 = FUN_0017bd1e(param_1)" identifier = (call_expression "FUN_0017bd1e(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar13 = (uint)(iVar4 != 0);" (assignment_expression "uVar13 = (uint)(iVar4 != 0)" identifier = (call_expression "(uint)(iVar4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )))) ;) })) }) (else_clause "else {\n      uVar13 = 0;\n    }" else (compound_statement "{\n      uVar13 = 0;\n    }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) }))) (expression_statement "DAT_00215c80 = (char *)0x0;" (assignment_expression "DAT_00215c80 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "DAT_00215c88 = uVar13;" (assignment_expression "DAT_00215c88 = uVar13" identifier = identifier) ;) (expression_statement "pcVar7 = (char *)rl_variable_value("completion-ignore-case");" (assignment_expression "pcVar7 = (char *)rl_variable_value("completion-ignore-case")" identifier = (cast_expression "(char *)rl_variable_value("completion-ignore-case")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "rl_variable_value("completion-ignore-case")" identifier (argument_list "("completion-ignore-case")" ( (string_literal ""completion-ignore-case"" " string_content ") ))))) ;) (expression_statement "DAT_00215c7c = 0;" (assignment_expression "DAT_00215c7c = 0" identifier = number_literal) ;) (if_statement "if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }" if (parenthesized_expression "((*pcVar7 == 'o') && (pcVar7[1] == 'n'))" ( (binary_expression "(*pcVar7 == 'o') && (pcVar7[1] == 'n')" (parenthesized_expression "(*pcVar7 == 'o')" ( (binary_expression "*pcVar7 == 'o'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar7[1] == 'n')" ( (binary_expression "pcVar7[1] == 'n'" (subscript_expression "pcVar7[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }" { (expression_statement "DAT_00215c7c = (uint)(pcVar7[2] == '\0');" (assignment_expression "DAT_00215c7c = (uint)(pcVar7[2] == '\0')" identifier = (call_expression "(uint)(pcVar7[2] == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar7[2] == '\0')" ( (binary_expression "pcVar7[2] == '\0'" (subscript_expression "pcVar7[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )))) ;) })) (if_statement "if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }" if (parenthesized_expression "(DAT_00215d50 != (undefined8 *)0x0)" ( (binary_expression "DAT_00215d50 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }" { (expression_statement "free(DAT_00215d50);" (call_expression "free(DAT_00215d50)" identifier (argument_list "(DAT_00215d50)" ( identifier ))) ;) (expression_statement "DAT_00215d50 = (undefined8 *)0x0;" (assignment_expression "DAT_00215d50 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "DAT_00215c78 = FUN_0017dd63(param_1);" (assignment_expression "DAT_00215c78 = FUN_0017dd63(param_1)" identifier = (call_expression "FUN_0017dd63(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }" if (parenthesized_expression "((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0))" ( (binary_expression "(DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)" (parenthesized_expression "(DAT_00215c78 == 0)" ( (binary_expression "DAT_00215c78 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar4 = absolute_program(param_1), iVar4 == 0)" ( (comma_expression "iVar4 = absolute_program(param_1), iVar4 == 0" (assignment_expression "iVar4 = absolute_program(param_1)" identifier = (call_expression "absolute_program(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "DAT_00215c98 = strcpy(pcVar7,param_1);" (assignment_expression "DAT_00215c98 = strcpy(pcVar7,param_1)" identifier = (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier )))) ;) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;) (do_statement "do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (lVar12 == 0) break;" if (parenthesized_expression "(lVar12 == 0)" ( (binary_expression "lVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" identifier = (binary_expression "lVar12 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_00215c68 = ~(uint)lVar12 - 1;" (assignment_expression "DAT_00215c68 = ~(uint)lVar12 - 1" identifier = (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" ~ (cast_expression "(uint)lVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (expression_statement "DAT_00215ca0 = DAT_00215c98;" (assignment_expression "DAT_00215ca0 = DAT_00215c98" identifier = identifier) ;) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }" if (parenthesized_expression "((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0))" ( (binary_expression "(rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)" (parenthesized_expression "(rl_completion_found_quote != 0)" ( (binary_expression "rl_completion_found_quote != 0" identifier != number_literal) )) && (parenthesized_expression "(rl_completion_quote_character == 0)" ( (binary_expression "rl_completion_quote_character == 0" identifier == number_literal) ))) )) (compound_statement "{\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }" { (expression_statement "DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);" (assignment_expression "DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0)" identifier = (cast_expression "(char *)FUN_0017ac3b(DAT_00215c98,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ac3b(DAT_00215c98,0)" identifier (argument_list "(DAT_00215c98,0)" ( identifier , number_literal ))))) ;) })) (expression_statement "DAT_00215c48 = get_string_value("PATH");" (assignment_expression "DAT_00215c48 = get_string_value("PATH")" identifier = (call_expression "get_string_value("PATH")" identifier (argument_list "("PATH")" ( (string_literal ""PATH"" " string_content ") )))) ;) (expression_statement "DAT_00215d74 = 0;" (assignment_expression "DAT_00215d74 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c44 = 0;" (assignment_expression "DAT_00215c44 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (if_statement "if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }" if (parenthesized_expression "(DAT_00215c38 != (void *)0x0)" ( (binary_expression "DAT_00215c38 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(DAT_00215c38);\n      }" { (expression_statement "free(DAT_00215c38);" (call_expression "free(DAT_00215c38)" identifier (argument_list "(DAT_00215c38)" ( identifier ))) ;) })) (expression_statement "DAT_00215c38 = (void *)all_visible_functions();" (assignment_expression "DAT_00215c38 = (void *)all_visible_functions()" identifier = (cast_expression "(void *)all_visible_functions()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "all_visible_functions()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }" if (parenthesized_expression "(DAT_00215c30 != (void *)0x0)" ( (binary_expression "DAT_00215c30 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(DAT_00215c30);\n      }" { (expression_statement "free(DAT_00215c30);" (call_expression "free(DAT_00215c30)" identifier (argument_list "(DAT_00215c30)" ( identifier ))) ;) })) (expression_statement "DAT_00215c30 = (void *)all_aliases();" (assignment_expression "DAT_00215c30 = (void *)all_aliases()" identifier = (cast_expression "(void *)all_aliases()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "all_aliases()" identifier (argument_list "()" ( ))))) ;) (goto_statement "goto LAB_00180925;" goto statement_identifier ;) })) (if_statement "if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" if (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }" { (expression_statement "DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);" (assignment_expression "DAT_00215c98 = (char *)bash_tilde_expand(param_1,0)" identifier = (cast_expression "(char *)bash_tilde_expand(param_1,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bash_tilde_expand(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal ))))) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,param_1);" (assignment_expression "pcVar7 = strcpy(pcVar7,param_1)" identifier = (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier )))) ;) (expression_statement "DAT_00215c70 = pcVar7;" (assignment_expression "DAT_00215c70 = pcVar7" identifier = identifier) ;) (expression_statement "pcVar8 = strchr(pcVar7,0x2f);" (assignment_expression "pcVar8 = strchr(pcVar7,0x2f)" identifier = (call_expression "strchr(pcVar7,0x2f)" identifier (argument_list "(pcVar7,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }" { (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) (expression_statement "DAT_00215c70 = (char *)0x0;" (assignment_expression "DAT_00215c70 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        *pcVar8 = '\0';\n      }" else (compound_statement "{\n        *pcVar8 = '\0';\n      }" { (expression_statement "*pcVar8 = '\0';" (assignment_expression "*pcVar8 = '\0'" (pointer_expression "*pcVar8" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) }) (else_clause "else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" else (if_statement "if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" if (parenthesized_expression "(dircomplete_expand == 0)" ( (binary_expression "dircomplete_expand == 0" identifier == number_literal) )) (compound_statement "{\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "DAT_00215c98 = strcpy(pcVar7,param_1);" (assignment_expression "DAT_00215c98 = strcpy(pcVar7,param_1)" identifier = (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier )))) ;) }) (else_clause "else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" else (compound_statement "{\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "DAT_00215c98 = strcpy(pcVar7,param_1);" (assignment_expression "DAT_00215c98 = strcpy(pcVar7,param_1)" identifier = (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier )))) ;) (expression_statement "FUN_0017d87c(&DAT_00215c98);" (call_expression "FUN_0017d87c(&DAT_00215c98)" identifier (argument_list "(&DAT_00215c98)" ( (pointer_expression "&DAT_00215c98" & identifier) ))) ;) }))))) (expression_statement "DAT_00215ca0 = DAT_00215c98;" (assignment_expression "DAT_00215ca0 = DAT_00215c98" identifier = identifier) ;) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }" if (parenthesized_expression "((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0))" ( (binary_expression "(rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)" (parenthesized_expression "(rl_completion_found_quote != 0)" ( (binary_expression "rl_completion_found_quote != 0" identifier != number_literal) )) && (parenthesized_expression "(rl_completion_quote_character == 0)" ( (binary_expression "rl_completion_quote_character == 0" identifier == number_literal) ))) )) (compound_statement "{\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }" { (expression_statement "pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);" (assignment_expression "pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0)" identifier = (cast_expression "(char *)FUN_0017ac3b(DAT_00215c98,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ac3b(DAT_00215c98,0)" identifier (argument_list "(DAT_00215c98,0)" ( identifier , number_literal ))))) ;) (expression_statement "DAT_00215ca0 = pcVar7;" (assignment_expression "DAT_00215ca0 = pcVar7" identifier = identifier) ;) (expression_statement "free(DAT_00215c98);" (call_expression "free(DAT_00215c98)" identifier (argument_list "(DAT_00215c98)" ( identifier ))) ;) (expression_statement "DAT_00215c98 = pcVar7;" (assignment_expression "DAT_00215c98 = pcVar7" identifier = identifier) ;) })) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;) (do_statement "do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    }" { (if_statement "if (lVar12 == 0) break;" if (parenthesized_expression "(lVar12 == 0)" ( (binary_expression "lVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" identifier = (binary_expression "lVar12 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_00215c68 = ~(uint)lVar12 - 1;" (assignment_expression "DAT_00215c68 = ~(uint)lVar12 - 1" identifier = (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" ~ (cast_expression "(uint)lVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (if_statement "if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }" if (parenthesized_expression "(DAT_00215c60 != (char *)0x0)" ( (binary_expression "DAT_00215c60 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(DAT_00215c60);\n    }" { (expression_statement "free(DAT_00215c60);" (call_expression "free(DAT_00215c60)" identifier (argument_list "(DAT_00215c60)" ( identifier ))) ;) })) (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = DAT_00215c98;" (assignment_expression "pcVar8 = DAT_00215c98" identifier = identifier) ;) (do_statement "do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "DAT_00215c58 = strcpy(pcVar8,pcVar7);" (assignment_expression "DAT_00215c58 = strcpy(pcVar8,pcVar7)" identifier = (call_expression "strcpy(pcVar8,pcVar7)" identifier (argument_list "(pcVar8,pcVar7)" ( identifier , identifier )))) ;) (expression_statement "DAT_00215c50 = 0;" (assignment_expression "DAT_00215c50 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c60 = DAT_00215c58;" (assignment_expression "DAT_00215c60 = DAT_00215c58" identifier = identifier) ;) (if_statement "if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(DAT_00215c78 == 0)" ( (binary_expression "DAT_00215c78 == 0" identifier == number_literal) )) (compound_statement "{\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" { (if_statement "if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }" if (parenthesized_expression "((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0))" ( (binary_expression "(dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)" (parenthesized_expression "(dircomplete_expand != 0)" ( (binary_expression "dircomplete_expand != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)" ( (comma_expression "iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0" (assignment_expression "iVar4 = path_dot_or_dotdot(DAT_00215c58)" identifier = (call_expression "path_dot_or_dotdot(DAT_00215c58)" identifier (argument_list "(DAT_00215c58)" ( identifier )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }" { (expression_statement "dircomplete_expand = 0;" (assignment_expression "dircomplete_expand = 0" identifier = number_literal) ;) (expression_statement "set_directory_hook();" (call_expression "set_directory_hook()" identifier (argument_list "()" ( ))) ;) (expression_statement "dircomplete_expand = 1;" (assignment_expression "dircomplete_expand = 1" identifier = number_literal) ;) })) (expression_statement "DAT_00215c8c = 4;" (assignment_expression "DAT_00215c8c = 4" identifier = number_literal) ;) (labeled_statement "LAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }" statement_identifier : (while_statement "while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }" { (expression_statement "pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);" (assignment_expression "pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50)" identifier = (cast_expression "(char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "rl_filename_completion_function(DAT_00215c58,DAT_00215c50)" identifier (argument_list "(DAT_00215c58,DAT_00215c50)" ( identifier , identifier ))))) ;) (expression_statement "DAT_00215c80 = pcVar7;" (assignment_expression "DAT_00215c80 = pcVar7" identifier = identifier) ;) (if_statement "if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }" if (parenthesized_expression "((DAT_00215c8c == 4) && (dircomplete_expand != 0))" ( (binary_expression "(DAT_00215c8c == 4) && (dircomplete_expand != 0)" (parenthesized_expression "(DAT_00215c8c == 4)" ( (binary_expression "DAT_00215c8c == 4" identifier == number_literal) )) && (parenthesized_expression "(dircomplete_expand != 0)" ( (binary_expression "dircomplete_expand != 0" identifier != number_literal) ))) )) (compound_statement "{\n          set_directory_hook();\n        }" { (expression_statement "set_directory_hook();" (call_expression "set_directory_hook()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "DAT_00215c50 = 1;" (assignment_expression "DAT_00215c50 = 1" identifier = number_literal) ;) (if_statement "if (pcVar7 == (char *)0x0) break;" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = absolute_program(DAT_00215c98);" (assignment_expression "iVar4 = absolute_program(DAT_00215c98)" identifier = (call_expression "absolute_program(DAT_00215c98)" identifier (argument_list "(DAT_00215c98)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }" { (expression_statement "pcVar7 = strrchr(DAT_00215c80,0x2f);" (assignment_expression "pcVar7 = strrchr(DAT_00215c80,0x2f)" identifier = (call_expression "strrchr(DAT_00215c80,0x2f)" identifier (argument_list "(DAT_00215c80,0x2f)" ( identifier , number_literal )))) ;) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }" if (parenthesized_expression "(pcVar7 != (char *)0x0)" ( (binary_expression "pcVar7 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }" { (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" if (parenthesized_expression "(DAT_00215c7c == 0)" ( (binary_expression "DAT_00215c7c == 0" identifier == number_literal) )) (compound_statement "{\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" { (expression_statement "iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" identifier = (call_expression "strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" identifier (argument_list "(pcVar7,DAT_00215c98,(long)DAT_00215c68)" ( identifier , identifier , (cast_expression "(long)DAT_00215c68" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) ;) }) (else_clause "else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" else (compound_statement "{\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" { (expression_statement "iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" identifier = (call_expression "strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" identifier (argument_list "(pcVar7,DAT_00215c98,(long)DAT_00215c68)" ( identifier , identifier , (cast_expression "(long)DAT_00215c68" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) ;) }))) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" identifier = identifier) ;) (do_statement "do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');" do (compound_statement "{\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar8,pcVar7);" (assignment_expression "pcVar7 = strcpy(pcVar8,pcVar7)" identifier = (call_expression "strcpy(pcVar8,pcVar7)" identifier (argument_list "(pcVar8,pcVar7)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_001812ba;" goto statement_identifier ;) })) })) }) (else_clause "else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }" else (compound_statement "{\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }" { (if_statement "if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" if (parenthesized_expression "(DAT_00215c7c == 0)" ( (binary_expression "DAT_00215c7c == 0" identifier == number_literal) )) (compound_statement "{\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" { (expression_statement "iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" identifier = (call_expression "strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" identifier (argument_list "(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" ( identifier , identifier , (cast_expression "(long)DAT_00215c68" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) ;) }) (else_clause "else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" else (compound_statement "{\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" { (expression_statement "iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" identifier = (call_expression "strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" identifier (argument_list "(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" ( identifier , identifier , (cast_expression "(long)DAT_00215c68" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) ;) }))) (expression_statement "pcVar7 = DAT_00215c80;" (assignment_expression "pcVar7 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }" if (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }" { (expression_statement "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);" (assignment_expression "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70)" identifier = (cast_expression "(char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b4b4(DAT_00215c80,DAT_00215c70)" identifier (argument_list "(DAT_00215c80,DAT_00215c70)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }" else (compound_statement "{\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (do_statement "do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar8,pcVar7);" (assignment_expression "pcVar7 = strcpy(pcVar8,pcVar7)" identifier = (call_expression "strcpy(pcVar8,pcVar7)" identifier (argument_list "(pcVar8,pcVar7)" ( identifier , identifier )))) ;) }))) (expression_statement "pcVar10 = DAT_00215c80;" (assignment_expression "pcVar10 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }" { (labeled_statement "LAB_001812ba:\n            iVar4 = DAT_00215c90;" statement_identifier : (expression_statement "iVar4 = DAT_00215c90;" (assignment_expression "iVar4 = DAT_00215c90" identifier = identifier) ;)) (expression_statement "pcVar10 = DAT_00215c80;" (assignment_expression "pcVar10 = DAT_00215c80" identifier = identifier) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (do_statement "do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "local_48 = strcpy(pcVar8,pcVar10);" (assignment_expression "local_48 = strcpy(pcVar8,pcVar10)" identifier = (call_expression "strcpy(pcVar8,pcVar10)" identifier (argument_list "(pcVar8,pcVar10)" ( identifier , identifier )))) ;) (expression_statement "FUN_0017d87c(&local_48);" (call_expression "FUN_0017d87c(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) ))) ;) (if_statement "if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar4 = executable_or_directory(local_48);\n            }" { (expression_statement "iVar4 = executable_or_directory(local_48);" (assignment_expression "iVar4 = executable_or_directory(local_48)" identifier = (call_expression "executable_or_directory(local_48)" identifier (argument_list "(local_48)" ( identifier )))) ;) }) (else_clause "else {\n              iVar4 = executable_file(local_48);\n            }" else (compound_statement "{\n              iVar4 = executable_file(local_48);\n            }" { (expression_statement "iVar4 = executable_file(local_48);" (assignment_expression "iVar4 = executable_file(local_48)" identifier = (call_expression "executable_file(local_48)" identifier (argument_list "(local_48)" ( identifier )))) ;) }))) (expression_statement "free(local_48);" (call_expression "free(local_48)" identifier (argument_list "(local_48)" ( identifier ))) ;) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }" { (if_statement "if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }" if (parenthesized_expression "(DAT_00215c80 != pcVar10)" ( (binary_expression "DAT_00215c80 != pcVar10" identifier != identifier) )) (compound_statement "{\n                free(pcVar10);\n              }" { (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) })) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) (expression_statement "DAT_00215c80 = "";" (assignment_expression "DAT_00215c80 = """ identifier = (string_literal """" " ")) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) })) (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }" if (parenthesized_expression "(DAT_00215c80 != pcVar10)" ( (binary_expression "DAT_00215c80 != pcVar10" identifier != identifier) )) (compound_statement "{\n            free(pcVar10);\n          }" { (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) })) }))) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) }))) (expression_statement "iVar4 = absolute_program(DAT_00215c98);" (assignment_expression "iVar4 = absolute_program(DAT_00215c98)" identifier = (call_expression "absolute_program(DAT_00215c98)" identifier (argument_list "(DAT_00215c98)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }" { (labeled_statement "LAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);" statement_identifier : (expression_statement "DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);" (assignment_expression "DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0)" identifier = (call_expression "(uint)(DAT_00215c80 != (char *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_00215c80 != (char *)0x0)" ( (binary_expression "DAT_00215c80 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;)) (if_statement "if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }" if (parenthesized_expression "(DAT_00215c80 == (char *)0x0)" ( (binary_expression "DAT_00215c80 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }" { (if_statement "if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }" if (parenthesized_expression "(DAT_00215c48 == 0)" ( (binary_expression "DAT_00215c48 == 0" identifier == number_literal) )) (compound_statement "{\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }" { (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;" if (parenthesized_expression "((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             ))" ( (binary_expression "(*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )" (parenthesized_expression "(*(char *)(DAT_00215c48 + DAT_00215c44) == '\0')" ( (binary_expression "*(char *)(DAT_00215c48 + DAT_00215c44) == '\0'" (pointer_expression "*(char *)(DAT_00215c48 + DAT_00215c44)" * (cast_expression "(char *)(DAT_00215c48 + DAT_00215c44)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00215c48 + DAT_00215c44)" ( (binary_expression "DAT_00215c48 + DAT_00215c44" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )" ( (comma_expression "pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0" (assignment_expression "pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44)" identifier = (cast_expression "(char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "extract_colon_unit(DAT_00215c48,&DAT_00215c44)" identifier (argument_list "(DAT_00215c48,&DAT_00215c44)" ( identifier , (pointer_expression "&DAT_00215c44" & identifier) ))))) , (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00181336;" goto statement_identifier ;)) (expression_statement "DAT_00215c90 = 1;" (assignment_expression "DAT_00215c90 = 1" identifier = number_literal) ;) (if_statement "if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }" if (parenthesized_expression "(*pcVar7 == '\0')" ( (binary_expression "*pcVar7 == '\0'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }" { (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) (expression_statement "pcVar7 = (char *)xmalloc(2);" (assignment_expression "pcVar7 = (char *)xmalloc(2)" identifier = (cast_expression "(char *)xmalloc(2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(2)" identifier (argument_list "(2)" ( number_literal ))))) ;) (expression_statement "pcVar7[0] = '.';" (assignment_expression "pcVar7[0] = '.'" (subscript_expression "pcVar7[0]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "pcVar7[1] = '\0';" (assignment_expression "pcVar7[1] = '\0'" (subscript_expression "pcVar7[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" identifier = identifier) ;) (if_statement "if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }" if (parenthesized_expression "(*pcVar7 == '~')" ( (binary_expression "*pcVar7 == '~'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }" { (expression_statement "pcVar8 = (char *)bash_tilde_expand(pcVar7,0);" (assignment_expression "pcVar8 = (char *)bash_tilde_expand(pcVar7,0)" identifier = (cast_expression "(char *)bash_tilde_expand(pcVar7,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bash_tilde_expand(pcVar7,0)" identifier (argument_list "(pcVar7,0)" ( identifier , number_literal ))))) ;) (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) })) (if_statement "if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }" if (parenthesized_expression "((*pcVar8 == '.') && (pcVar8[1] == '\0'))" ( (binary_expression "(*pcVar8 == '.') && (pcVar8[1] == '\0')" (parenthesized_expression "(*pcVar8 == '.')" ( (binary_expression "*pcVar8 == '.'" (pointer_expression "*pcVar8" * identifier) == (char_literal "'.'" ' character ')) )) && (parenthesized_expression "(pcVar8[1] == '\0')" ( (binary_expression "pcVar8[1] == '\0'" (subscript_expression "pcVar8[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            DAT_00215d74 = 1;\n          }" { (expression_statement "DAT_00215d74 = 1;" (assignment_expression "DAT_00215d74 = 1" identifier = number_literal) ;) })) (if_statement "if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }" if (parenthesized_expression "((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60))" ( (binary_expression "(DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)" (parenthesized_expression "(DAT_00215c58 != (char *)0x0)" ( (binary_expression "DAT_00215c58 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(DAT_00215c58 != DAT_00215c60)" ( (binary_expression "DAT_00215c58 != DAT_00215c60" identifier != identifier) ))) )) (compound_statement "{\n            free(DAT_00215c58);\n          }" { (expression_statement "free(DAT_00215c58);" (call_expression "free(DAT_00215c58)" identifier (argument_list "(DAT_00215c58)" ( identifier ))) ;) })) (if_statement "if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }" if (parenthesized_expression "(DAT_00215c60 != (char *)0x0)" ( (binary_expression "DAT_00215c60 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free(DAT_00215c60);\n          }" { (expression_statement "free(DAT_00215c60);" (call_expression "free(DAT_00215c60)" identifier (argument_list "(DAT_00215c60)" ( identifier ))) ;) })) (expression_statement "pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);" (assignment_expression "pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0)" identifier = (cast_expression "(char *)sh_makepath(pcVar8,DAT_00215c98,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sh_makepath(pcVar8,DAT_00215c98,0)" identifier (argument_list "(pcVar8,DAT_00215c98,0)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "DAT_00215c60 = pcVar7;" (assignment_expression "DAT_00215c60 = pcVar7" identifier = identifier) ;) (expression_statement "pcVar10 = strpbrk(pcVar7,"\"\'\\");" (assignment_expression "pcVar10 = strpbrk(pcVar7,"\"\'\\")" identifier = (call_expression "strpbrk(pcVar7,"\"\'\\")" identifier (argument_list "(pcVar7,"\"\'\\")" ( identifier , (string_literal ""\"\'\\"" " escape_sequence escape_sequence escape_sequence ") )))) ;) (if_statement "if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }" if (parenthesized_expression "(pcVar10 != (char *)0x0)" ( (binary_expression "pcVar10 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }" { (expression_statement "pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);" (assignment_expression "pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0)" identifier = (cast_expression "(char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sh_backslash_quote(pcVar7,&DAT_00215d80,0)" identifier (argument_list "(pcVar7,&DAT_00215d80,0)" ( identifier , (pointer_expression "&DAT_00215d80" & identifier) , number_literal ))))) ;) })) (expression_statement "DAT_00215c58 = pcVar7;" (assignment_expression "DAT_00215c58 = pcVar7" identifier = identifier) ;) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) })) (goto_statement "goto LAB_00180a7a;" goto statement_identifier ;) })) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (expression_statement "DAT_00215c8c = 5;" (assignment_expression "DAT_00215c8c = 5" identifier = number_literal) ;) (labeled_statement "LAB_00180787:\n    glob_ignore_case = DAT_00215c7c;" statement_identifier : (expression_statement "glob_ignore_case = DAT_00215c7c;" (assignment_expression "glob_ignore_case = DAT_00215c7c" identifier = identifier) ;)) (expression_statement "DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);" (assignment_expression "DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98)" identifier = (cast_expression "(undefined8 *)shell_glob_filename(DAT_00215c98)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "shell_glob_filename(DAT_00215c98)" identifier (argument_list "(DAT_00215c98)" ( identifier ))))) ;) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" identifier = number_literal) ;) (if_statement "if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" if (parenthesized_expression "((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0))" ( (binary_expression "(DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)" (parenthesized_expression "(DAT_00215d50 == &glob_error_return)" ( (binary_expression "DAT_00215d50 == &glob_error_return" identifier == (pointer_expression "&glob_error_return" & identifier)) )) || (parenthesized_expression "(DAT_00215d50 == (undefined8 *)0x0)" ( (binary_expression "DAT_00215d50 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" { (expression_statement "DAT_00215d50 = (undefined8 *)0x0;" (assignment_expression "DAT_00215d50 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (if_statement "if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" if (parenthesized_expression "((DAT_00215d50[1] != 0) && (rl_completion_type == 9))" ( (binary_expression "(DAT_00215d50[1] != 0) && (rl_completion_type == 9)" (parenthesized_expression "(DAT_00215d50[1] != 0)" ( (binary_expression "DAT_00215d50[1] != 0" (subscript_expression "DAT_00215d50[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(rl_completion_type == 9)" ( (binary_expression "rl_completion_type == 9" identifier == number_literal) ))) )) (compound_statement "{\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" { (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }" else (compound_statement "{\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }" { (labeled_statement "LAB_00180925:\n    pcVar7 = DAT_00215c98;" statement_identifier : (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;)) (expression_statement "uVar13 = DAT_00215c7c;" (assignment_expression "uVar13 = DAT_00215c7c" identifier = identifier) ;) (expression_statement "iVar4 = DAT_00215c68;" (assignment_expression "iVar4 = DAT_00215c68" identifier = identifier) ;) (expression_statement "pvVar2 = DAT_00215c30;" (assignment_expression "pvVar2 = DAT_00215c30" identifier = identifier) ;) (if_statement "if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(DAT_00215c8c == 1)" ( (binary_expression "DAT_00215c8c == 1" identifier == number_literal) )) (compound_statement "{\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }" { (labeled_statement "LAB_00180bdc:\n      pcVar7 = DAT_00215c98;" statement_identifier : (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;)) (expression_statement "iVar4 = DAT_00215c68;" (assignment_expression "iVar4 = DAT_00215c68" identifier = identifier) ;) (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" identifier = (cast_expression "(size_t)DAT_00215c68" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (do_statement "do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));" do (compound_statement "{\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      }" { (expression_statement "pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];" (assignment_expression "pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2]" identifier = (subscript_expression "(&word_token_alist)[(long)DAT_00215c40 * 2]" (parenthesized_expression "(&word_token_alist)" ( (pointer_expression "&word_token_alist" & identifier) )) [ (binary_expression "(long)DAT_00215c40 * 2" (cast_expression "(long)DAT_00215c40" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) ])) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }" { (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c8c = DAT_00215c8c + 1;" (assignment_expression "DAT_00215c8c = DAT_00215c8c + 1" identifier = (binary_expression "DAT_00215c8c + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00180c72;" goto statement_identifier ;) })) (expression_statement "DAT_00215c40 = DAT_00215c40 + 1;" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" identifier = (binary_expression "DAT_00215c40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))))" ( (binary_expression "(iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" ( (parenthesized_expression "(*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))" ( (binary_expression "*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (binary_expression "*pcVar8 != *pcVar7" (pointer_expression "*pcVar8" * identifier) != (pointer_expression "*pcVar7" * identifier)) || (parenthesized_expression "(iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" ( (comma_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0" (assignment_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9)" identifier = (call_expression "strncmp(pcVar8,pcVar7,sVar9)" identifier (argument_list "(pcVar8,pcVar7,sVar9)" ( identifier , identifier , identifier )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) ))) )) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" identifier = (call_expression "strcpy(pcVar7,pcVar8)" identifier (argument_list "(pcVar7,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (if_statement "if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }" if (parenthesized_expression "(DAT_00215c8c < 2)" ( (binary_expression "DAT_00215c8c < 2" identifier < number_literal) )) (compound_statement "{\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }" { (if_statement "if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" if (parenthesized_expression "(DAT_00215c8c == 0)" ( (binary_expression "DAT_00215c8c == 0" identifier == number_literal) )) (compound_statement "{\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" { (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" identifier = (cast_expression "(size_t)DAT_00215c68" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (do_statement "do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));" do (compound_statement "{\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        }" { (while_statement "while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }" { (if_statement "if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }" if (parenthesized_expression "((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0))" ( (binary_expression "(pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" (parenthesized_expression "(pvVar2 == (void *)0x0)" ( (binary_expression "pvVar2 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" ( (comma_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0" (assignment_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" identifier = (pointer_expression "*(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" * (cast_expression "(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)pvVar2 + (long)DAT_00215c40 * 8)" ( (binary_expression "(long)pvVar2 + (long)DAT_00215c40 * 8" (cast_expression "(long)pvVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)DAT_00215c40 * 8" (cast_expression "(long)DAT_00215c40" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) , (binary_expression "puVar14 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }" { (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c8c = 1;" (assignment_expression "DAT_00215c8c = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00180bdc;" goto statement_identifier ;) })) (expression_statement "DAT_00215c40 = DAT_00215c40 + 1;" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" identifier = (binary_expression "DAT_00215c40 + 1" identifier + number_literal)) ;) (expression_statement "pcVar8 = (char *)*puVar14;" (assignment_expression "pcVar8 = (char *)*puVar14" identifier = (cast_expression "(char *)*puVar14" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (if_statement "if (uVar13 == 0) break;" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);" (assignment_expression "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9)" identifier = (call_expression "strncasecmp(pcVar8,pcVar7,sVar9)" identifier (argument_list "(pcVar8,pcVar7,sVar9)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" identifier = identifier) ;) (goto_statement "goto code_r0x00180ba8;" goto statement_identifier ;) })) })) }) while (parenthesized_expression "((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))))" ( (binary_expression "(iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" ( (parenthesized_expression "(*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))" ( (binary_expression "*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (binary_expression "*pcVar8 != *pcVar7" (pointer_expression "*pcVar8" * identifier) != (pointer_expression "*pcVar7" * identifier)) || (parenthesized_expression "(iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" ( (comma_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0" (assignment_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9)" identifier = (call_expression "strncmp(pcVar8,pcVar7,sVar9)" identifier (argument_list "(pcVar8,pcVar7,sVar9)" ( identifier , identifier , identifier )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) ))) )) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" identifier = identifier) ;) (do_statement "do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');" do (compound_statement "{\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" identifier = (call_expression "strcpy(pcVar7,pcVar8)" identifier (argument_list "(pcVar7,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }" else (compound_statement "{\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }" { (if_statement "if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" if (parenthesized_expression "(DAT_00215c8c == 2)" ( (binary_expression "DAT_00215c8c == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" { (labeled_statement "LAB_00180c72:\n        pcVar7 = DAT_00215c98;" statement_identifier : (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;)) (expression_statement "uVar13 = DAT_00215c7c;" (assignment_expression "uVar13 = DAT_00215c7c" identifier = identifier) ;) (expression_statement "iVar4 = DAT_00215c68;" (assignment_expression "iVar4 = DAT_00215c68" identifier = identifier) ;) (expression_statement "pvVar2 = DAT_00215c38;" (assignment_expression "pvVar2 = DAT_00215c38" identifier = identifier) ;) (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" identifier = (cast_expression "(size_t)DAT_00215c68" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (do_statement "do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));" do (compound_statement "{\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        }" { (while_statement "while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }" { (if_statement "if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }" if (parenthesized_expression "((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0))" ( (binary_expression "(pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" (parenthesized_expression "(pvVar2 == (void *)0x0)" ( (binary_expression "pvVar2 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" ( (comma_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0" (assignment_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" identifier = (pointer_expression "*(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" * (cast_expression "(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)pvVar2 + (long)DAT_00215c40 * 8)" ( (binary_expression "(long)pvVar2 + (long)DAT_00215c40 * 8" (cast_expression "(long)pvVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)DAT_00215c40 * 8" (cast_expression "(long)DAT_00215c40" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) , (binary_expression "puVar14 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }" { (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c8c = DAT_00215c8c + 1;" (assignment_expression "DAT_00215c8c = DAT_00215c8c + 1" identifier = (binary_expression "DAT_00215c8c + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0018094c;" goto statement_identifier ;) })) (expression_statement "DAT_00215c40 = DAT_00215c40 + 1;" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" identifier = (binary_expression "DAT_00215c40 + 1" identifier + number_literal)) ;) (expression_statement "pcVar8 = (char *)*puVar14;" (assignment_expression "pcVar8 = (char *)*puVar14" identifier = (cast_expression "(char *)*puVar14" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (if_statement "if (uVar13 == 0) break;" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);" (assignment_expression "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9)" identifier = (call_expression "strncasecmp(pcVar8,pcVar7,sVar9)" identifier (argument_list "(pcVar8,pcVar7,sVar9)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" identifier = identifier) ;) (goto_statement "goto code_r0x00180d3c;" goto statement_identifier ;) })) })) }) while (parenthesized_expression "((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))))" ( (binary_expression "(iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" ( (parenthesized_expression "(*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))" ( (binary_expression "*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (binary_expression "*pcVar8 != *pcVar7" (pointer_expression "*pcVar8" * identifier) != (pointer_expression "*pcVar7" * identifier)) || (parenthesized_expression "(iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" ( (comma_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0" (assignment_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9)" identifier = (call_expression "strncmp(pcVar8,pcVar7,sVar9)" identifier (argument_list "(pcVar8,pcVar7,sVar9)" ( identifier , identifier , identifier )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) ))) )) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" identifier = identifier) ;) (do_statement "do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');" do (compound_statement "{\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" identifier = (call_expression "strcpy(pcVar7,pcVar8)" identifier (argument_list "(pcVar7,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (if_statement "if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }" if (parenthesized_expression "(DAT_00215c8c == 3)" ( (binary_expression "DAT_00215c8c == 3" identifier == number_literal) )) (compound_statement "{\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }" { (labeled_statement "LAB_0018094c:\n        pcVar7 = DAT_00215c98;" statement_identifier : (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;)) (expression_statement "iVar5 = DAT_00215c68;" (assignment_expression "iVar5 = DAT_00215c68" identifier = identifier) ;) (expression_statement "iVar4 = num_shell_builtins;" (assignment_expression "iVar4 = num_shell_builtins" identifier = identifier) ;) (if_statement "if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }" if (parenthesized_expression "(DAT_00215c40 < num_shell_builtins)" ( (binary_expression "DAT_00215c40 < num_shell_builtins" identifier < identifier) )) (compound_statement "{\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }" { (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" identifier = (cast_expression "(size_t)DAT_00215c68" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (expression_statement "puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);" (assignment_expression "puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30)" identifier = (cast_expression "(undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(shell_builtins + (long)DAT_00215c40 * 0x30)" ( (binary_expression "shell_builtins + (long)DAT_00215c40 * 0x30" identifier + (binary_expression "(long)DAT_00215c40 * 0x30" (cast_expression "(long)DAT_00215c40" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (do_statement "do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);" do (compound_statement "{\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          }" { (expression_statement "iVar3 = DAT_00215c40;" (assignment_expression "iVar3 = DAT_00215c40" identifier = identifier) ;) (if_statement "if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }" if (parenthesized_expression "(((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0))))))" ( (binary_expression "((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))" (parenthesized_expression "((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0))" ( (binary_expression "(puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)" (parenthesized_expression "(puVar14[1] != 0)" ( (binary_expression "puVar14[1] != 0" (subscript_expression "puVar14[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "((*(byte *)(puVar14 + 2) & 1) != 0)" ( (binary_expression "(*(byte *)(puVar14 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar14 + 2) & 1)" ( (binary_expression "*(byte *)(puVar14 + 2) & 1" (pointer_expression "*(byte *)(puVar14 + 2)" * (cast_expression "(byte *)(puVar14 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 2)" ( (binary_expression "puVar14 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))" ( (parenthesized_expression "(iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0))))" ( (binary_expression "iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))" (binary_expression "iVar5 == 0" identifier == number_literal) || (parenthesized_expression "((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))" ( (parenthesized_expression "(*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0))" ( (binary_expression "*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)" (binary_expression "*(char *)*puVar14 == *pcVar7" (pointer_expression "*(char *)*puVar14" * (cast_expression "(char *)*puVar14" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) == (pointer_expression "*pcVar7" * identifier)) && (parenthesized_expression "(iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)" ( (comma_expression "iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0" (assignment_expression "iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9)" identifier = (call_expression "strncmp((char *)*puVar14,pcVar7,sVar9)" identifier (argument_list "((char *)*puVar14,pcVar7,sVar9)" ( (cast_expression "(char *)*puVar14" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier)) , identifier , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) ))) )) ))) )) (compound_statement "{\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }" { (expression_statement "DAT_00215c40 = iVar3 + 1;" (assignment_expression "DAT_00215c40 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "pcVar7 = (char *)*puVar14;" (assignment_expression "pcVar7 = (char *)*puVar14" identifier = (cast_expression "(char *)*puVar14" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" identifier = identifier) ;) (goto_statement "goto code_r0x00180dd3;" goto statement_identifier ;) })) (expression_statement "DAT_00215c40 = iVar3 + 1;" (assignment_expression "DAT_00215c40 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar14 + 6;" (assignment_expression "puVar14 = puVar14 + 6" identifier = (binary_expression "puVar14 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(DAT_00215c40 != iVar4)" ( (binary_expression "DAT_00215c40 != iVar4" identifier != identifier) )) ;) })) (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c8c = DAT_00215c8c + 1;" (assignment_expression "DAT_00215c8c = DAT_00215c8c + 1" identifier = (binary_expression "DAT_00215c8c + 1" identifier + number_literal)) ;) })) }))) (if_statement "if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(DAT_00215c78 == 0)" ( (binary_expression "DAT_00215c78 == 0" identifier == number_literal) )) (compound_statement "{\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }" { (if_statement "if (DAT_00215c88 == 0) goto LAB_00180e1e;" if (parenthesized_expression "(DAT_00215c88 == 0)" ( (binary_expression "DAT_00215c88 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00180e1e;" goto statement_identifier ;)) (expression_statement "DAT_00215c88 = 0;" (assignment_expression "DAT_00215c88 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,param_1);" (assignment_expression "pcVar7 = strcpy(pcVar7,param_1)" identifier = (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (if_statement "if (param_2 == 0) goto LAB_00180787;" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00180787;" goto statement_identifier ;)) }))) (expression_statement "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];" (assignment_expression "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40]" identifier = (cast_expression "(char *)DAT_00215d50[DAT_00215c40]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "DAT_00215d50[DAT_00215c40]" identifier [ identifier ]))) ;) (while_statement "while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }" while (parenthesized_expression "(DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0)" ( (comma_expression "DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" identifier = (binary_expression "DAT_00215c40 + 1" identifier + number_literal)) , (binary_expression "DAT_00215c80 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }" { (expression_statement "iVar4 = executable_or_directory();" (assignment_expression "iVar4 = executable_or_directory()" identifier = (call_expression "executable_or_directory()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }" { (expression_statement "pcVar7 = DAT_00215c80;" (assignment_expression "pcVar7 = DAT_00215c80" identifier = identifier) ;) (if_statement "if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }" if (parenthesized_expression "((*param_1 == '~') && (DAT_00215c70 != (char *)0x0))" ( (binary_expression "(*param_1 == '~') && (DAT_00215c70 != (char *)0x0)" (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) && (parenthesized_expression "(DAT_00215c70 != (char *)0x0)" ( (binary_expression "DAT_00215c70 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }" { (expression_statement "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);" (assignment_expression "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80)" identifier = (cast_expression "(char *)FUN_0017b4b4(DAT_00215c80)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b4b4(DAT_00215c80)" identifier (argument_list "(DAT_00215c80)" ( identifier ))))) ;) (expression_statement "free(DAT_00215c80);" (call_expression "free(DAT_00215c80)" identifier (argument_list "(DAT_00215c80)" ( identifier ))) ;) (expression_statement "DAT_00215c80 = pcVar7;" (assignment_expression "DAT_00215c80 = pcVar7" identifier = identifier) ;) })) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (expression_statement "free(DAT_00215c80);" (call_expression "free(DAT_00215c80)" identifier (argument_list "(DAT_00215c80)" ( identifier ))) ;) (expression_statement "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];" (assignment_expression "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40]" identifier = (cast_expression "(char *)DAT_00215d50[DAT_00215c40]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "DAT_00215d50[DAT_00215c40]" identifier [ identifier ]))) ;) })) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" identifier = number_literal) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }" { (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00180ba8:\n    if (uVar11 == 0) break;" statement_identifier : (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" identifier = (call_expression "strcpy(pcVar7,pcVar8)" identifier (argument_list "(pcVar7,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }" { (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00180d3c:\n    if (uVar11 == 0) break;" statement_identifier : (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" identifier = (call_expression "strcpy(pcVar7,pcVar8)" identifier (argument_list "(pcVar7,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }" { (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00180dd3:\n    if (uVar11 == 0) break;" statement_identifier : (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar8,pcVar7);" (assignment_expression "pcVar7 = strcpy(pcVar8,pcVar7)" identifier = (call_expression "strcpy(pcVar8,pcVar7)" identifier (argument_list "(pcVar8,pcVar7)" ( identifier , identifier )))) ;) (labeled_statement "LAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return pcVar7;\n  }" { (return_statement "return pcVar7;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "char * command_word_completion_function(char *hint_text,int state)\n\n{\n  char cVar1;\n  alias_t *paVar2;\n  SHELL_VAR *pSVar3;\n  alias_t **ppaVar4;\n  SHELL_VAR **ppSVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  char *pcVar13;\n  ulong uVar14;\n  long lVar15;\n  uint uVar16;\n  builtin *pbVar17;\n  long in_FS_OFFSET;\n  byte bVar18;\n  char *f;\n  long local_40;\n  \n  bVar18 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (state == 0) {\n    rl_filename_stat_hook = bash_command_name_stat_hook;\n    if ((command_word_completion_function::dequoted_hint != (char *)0x0) &&\n       (command_word_completion_function::dequoted_hint != command_word_completion_function::hint))\n    {\n      free(command_word_completion_function::dequoted_hint);\n    }\n    if (command_word_completion_function::hint != (char *)0x0) {\n      free(command_word_completion_function::hint);\n    }\n    command_word_completion_function::searching_path = 0;\n    command_word_completion_function::mapping_over = 0;\n    iVar6 = absolute_pathname(hint_text);\n    if (iVar6 == 0) {\n      iVar6 = absolute_program(hint_text);\n      uVar16 = 0;\n      if ((iVar6 == 0) && (uVar16 = 0, *hint_text != '~')) {\n        iVar6 = test_for_directory(hint_text);\n        uVar16 = (uint)(iVar6 != 0);\n      }\n    }\n    else {\n      uVar16 = 0;\n    }\n    command_word_completion_function::val = (char *)0x0;\n    command_word_completion_function::hint_is_dir = uVar16;\n    pcVar10 = rl_variable_value("completion-ignore-case");\n    command_word_completion_function::igncase = 0;\n    if ((*pcVar10 == 'o') && (pcVar10[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar10[2] == '\0');\n    }\n    if (command_word_completion_function::glob_matches != (char **)0x0) {\n      free(command_word_completion_function::glob_matches);\n      command_word_completion_function::glob_matches = (char **)0x0;\n    }\n    command_word_completion_function::globpat = completion_glob_pattern(hint_text);\n    if ((command_word_completion_function::globpat == 0) &&\n       (iVar6 = absolute_program(hint_text), iVar6 == 0)) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      lVar15 = -1;\n      pcVar10 = command_word_completion_function::hint;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n      command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n      if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n        command_word_completion_function::dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0);\n      }\n      command_word_completion_function::path = get_string_value("PATH");\n      dot_in_path = 0;\n      command_word_completion_function::path_index = 0;\n      command_word_completion_function::local_index = 0;\n      if (command_word_completion_function::varlist != (SHELL_VAR **)0x0) {\n        free(command_word_completion_function::varlist);\n      }\n      command_word_completion_function::varlist = all_visible_functions();\n      if (command_word_completion_function::alias_list != (alias_t **)0x0) {\n        free(command_word_completion_function::alias_list);\n      }\n      command_word_completion_function::alias_list = all_aliases();\n      goto LAB_00180925;\n    }\n    if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      command_word_completion_function::directory_part = pcVar10;\n      pcVar11 = strchr(pcVar10,0x2f);\n      if (pcVar11 == (char *)0x0) {\n        free(pcVar10);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar11 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n    }\n    else {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      bash_directory_completion_hook(&command_word_completion_function::hint);\n    }\n    command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n    if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n      pcVar10 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar10;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar10;\n    }\n    lVar15 = -1;\n    pcVar10 = command_word_completion_function::hint;\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      cVar1 = *pcVar10;\n      pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');\n    command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n    if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n    }\n    pcVar10 = command_word_completion_function::hint;\n    uVar14 = 0xffffffffffffffff;\n    pcVar11 = command_word_completion_function::hint;\n    do {\n      if (uVar14 == 0) break;\n      uVar14 = uVar14 - 1;\n      cVar1 = *pcVar11;\n      pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar11 = (char *)xmalloc(~uVar14);\n    command_word_completion_function::fnhint = strcpy(pcVar11,pcVar10);\n    command_word_completion_function::istate = 0;\n    command_word_completion_function::filename_hint = command_word_completion_function::fnhint;\n    if (command_word_completion_function::globpat == 0) {\n      if ((dircomplete_expand != 0) &&\n         (iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      command_word_completion_function::mapping_over = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate);\n        command_word_completion_function::val = pcVar10;\n        if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        command_word_completion_function::istate = 1;\n        if (pcVar10 == (char *)0x0) break;\n        iVar6 = absolute_program(command_word_completion_function::hint);\n        if (iVar6 == 0) {\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }\n        free(pcVar11);\n      }\n      iVar6 = absolute_program(command_word_completion_function::hint);\n      if (iVar6 == 0) {\nLAB_00180e1e:\n        command_word_completion_function::istate =\n             (int)(command_word_completion_function::val != (char *)0x0);\n        if (command_word_completion_function::val == (char *)0x0) {\n          if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar10 = (char *)0x0;\n          if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;\n          command_word_completion_function::searching_path = 1;\n          if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }\n          pcVar11 = pcVar10;\n          if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }\n          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }\n          if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }\n          if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }\n          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);\n          command_word_completion_function::filename_hint = pcVar10;\n          pcVar13 = strpbrk(pcVar10,"\"\'\\");\n          if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }\n          command_word_completion_function::fnhint = pcVar10;\n          free(pcVar11);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    command_word_completion_function::mapping_over = 5;\nLAB_00180787:\n    glob_ignore_case = command_word_completion_function::igncase;\n    command_word_completion_function::glob_matches =\n         shell_glob_filename(command_word_completion_function::hint);\n    glob_ignore_case = L'\0';\n    if ((command_word_completion_function::glob_matches == &glob_error_return) ||\n       (command_word_completion_function::glob_matches == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    command_word_completion_function::local_index = 0;\n    if ((command_word_completion_function::glob_matches[1] != (char *)0x0) &&\n       (rl_completion_type == L'\t')) {\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar10 = command_word_completion_function::hint;\n    iVar7 = command_word_completion_function::igncase;\n    iVar6 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_00180bdc:\n      pcVar10 = command_word_completion_function::hint;\n      iVar6 = command_word_completion_function::hint_len;\n      sVar12 = (size_t)command_word_completion_function::hint_len;\n      do {\n        pcVar11 = word_token_alist[command_word_completion_function::local_index].word;\n        if (pcVar11 == (char *)0x0) {\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }\n        command_word_completion_function::local_index =\n             command_word_completion_function::local_index + 1;\n      } while ((iVar6 != 0) &&\n              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))));\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = pcVar11;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,pcVar11);\n      goto LAB_00181336;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::igncase;\n        iVar6 = command_word_completion_function::hint_len;\n        ppSVar5 = command_word_completion_function::varlist;\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::hint_len;\n        iVar6 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }\n        command_word_completion_function::local_index = 0;\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_00180e1e;\n      command_word_completion_function::hint_is_dir = 0;\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      goto LAB_00181336;\n    }\n    if (state == 0) goto LAB_00180787;\n  }\n  command_word_completion_function::val =\n       command_word_completion_function::glob_matches[command_word_completion_function::local_index]\n  ;\n  while (command_word_completion_function::local_index =\n              command_word_completion_function::local_index + 1,\n        command_word_completion_function::val != (char *)0x0) {\n    iVar6 = executable_or_directory(command_word_completion_function::val);\n    if (iVar6 != 0) {\n      pcVar10 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part);\n        free(command_word_completion_function::val);\n        command_word_completion_function::val = pcVar10;\n      }\n      goto LAB_00181336;\n    }\n    free(command_word_completion_function::val);\n    command_word_completion_function::val =\n         command_word_completion_function::glob_matches\n         [command_word_completion_function::local_index];\n  }\n  glob_ignore_case = L'\0';\n  pcVar10 = (char *)0x0;\n  goto LAB_00181336;\n  while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar10;\n    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar14 == 0) break;\n  }\n  pcVar10 = (char *)xmalloc(~uVar14);\n  pcVar10 = strcpy(pcVar10,pcVar11);\n  goto LAB_00181336;\n  while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar10;\n    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar14 == 0) break;\n  }\n  pcVar10 = (char *)xmalloc(~uVar14);\n  pcVar10 = strcpy(pcVar10,pcVar11);\n  goto LAB_00181336;\n  while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar11;\n    pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar14 == 0) break;\n  }\n  pcVar11 = (char *)xmalloc(~uVar14);\n  pcVar10 = strcpy(pcVar11,pcVar10);\nLAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar10;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}\n\n" (function_definition "char * command_word_completion_function(char *hint_text,int state)\n\n{\n  char cVar1;\n  alias_t *paVar2;\n  SHELL_VAR *pSVar3;\n  alias_t **ppaVar4;\n  SHELL_VAR **ppSVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  char *pcVar13;\n  ulong uVar14;\n  long lVar15;\n  uint uVar16;\n  builtin *pbVar17;\n  long in_FS_OFFSET;\n  byte bVar18;\n  char *f;\n  long local_40;\n  \n  bVar18 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (state == 0) {\n    rl_filename_stat_hook = bash_command_name_stat_hook;\n    if ((command_word_completion_function::dequoted_hint != (char *)0x0) &&\n       (command_word_completion_function::dequoted_hint != command_word_completion_function::hint))\n    {\n      free(command_word_completion_function::dequoted_hint);\n    }\n    if (command_word_completion_function::hint != (char *)0x0) {\n      free(command_word_completion_function::hint);\n    }\n    command_word_completion_function::searching_path = 0;\n    command_word_completion_function::mapping_over = 0;\n    iVar6 = absolute_pathname(hint_text);\n    if (iVar6 == 0) {\n      iVar6 = absolute_program(hint_text);\n      uVar16 = 0;\n      if ((iVar6 == 0) && (uVar16 = 0, *hint_text != '~')) {\n        iVar6 = test_for_directory(hint_text);\n        uVar16 = (uint)(iVar6 != 0);\n      }\n    }\n    else {\n      uVar16 = 0;\n    }\n    command_word_completion_function::val = (char *)0x0;\n    command_word_completion_function::hint_is_dir = uVar16;\n    pcVar10 = rl_variable_value("completion-ignore-case");\n    command_word_completion_function::igncase = 0;\n    if ((*pcVar10 == 'o') && (pcVar10[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar10[2] == '\0');\n    }\n    if (command_word_completion_function::glob_matches != (char **)0x0) {\n      free(command_word_completion_function::glob_matches);\n      command_word_completion_function::glob_matches = (char **)0x0;\n    }\n    command_word_completion_function::globpat = completion_glob_pattern(hint_text);\n    if ((command_word_completion_function::globpat == 0) &&\n       (iVar6 = absolute_program(hint_text), iVar6 == 0)) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      lVar15 = -1;\n      pcVar10 = command_word_completion_function::hint;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n      command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n      if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n        command_word_completion_function::dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0);\n      }\n      command_word_completion_function::path = get_string_value("PATH");\n      dot_in_path = 0;\n      command_word_completion_function::path_index = 0;\n      command_word_completion_function::local_index = 0;\n      if (command_word_completion_function::varlist != (SHELL_VAR **)0x0) {\n        free(command_word_completion_function::varlist);\n      }\n      command_word_completion_function::varlist = all_visible_functions();\n      if (command_word_completion_function::alias_list != (alias_t **)0x0) {\n        free(command_word_completion_function::alias_list);\n      }\n      command_word_completion_function::alias_list = all_aliases();\n      goto LAB_00180925;\n    }\n    if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      command_word_completion_function::directory_part = pcVar10;\n      pcVar11 = strchr(pcVar10,0x2f);\n      if (pcVar11 == (char *)0x0) {\n        free(pcVar10);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar11 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n    }\n    else {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      bash_directory_completion_hook(&command_word_completion_function::hint);\n    }\n    command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n    if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n      pcVar10 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar10;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar10;\n    }\n    lVar15 = -1;\n    pcVar10 = command_word_completion_function::hint;\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      cVar1 = *pcVar10;\n      pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');\n    command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n    if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n    }\n    pcVar10 = command_word_completion_function::hint;\n    uVar14 = 0xffffffffffffffff;\n    pcVar11 = command_word_completion_function::hint;\n    do {\n      if (uVar14 == 0) break;\n      uVar14 = uVar14 - 1;\n      cVar1 = *pcVar11;\n      pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar11 = (char *)xmalloc(~uVar14);\n    command_word_completion_function::fnhint = strcpy(pcVar11,pcVar10);\n    command_word_completion_function::istate = 0;\n    command_word_completion_function::filename_hint = command_word_completion_function::fnhint;\n    if (command_word_completion_function::globpat == 0) {\n      if ((dircomplete_expand != 0) &&\n         (iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      command_word_completion_function::mapping_over = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate);\n        command_word_completion_function::val = pcVar10;\n        if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        command_word_completion_function::istate = 1;\n        if (pcVar10 == (char *)0x0) break;\n        iVar6 = absolute_program(command_word_completion_function::hint);\n        if (iVar6 == 0) {\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }\n        free(pcVar11);\n      }\n      iVar6 = absolute_program(command_word_completion_function::hint);\n      if (iVar6 == 0) {\nLAB_00180e1e:\n        command_word_completion_function::istate =\n             (int)(command_word_completion_function::val != (char *)0x0);\n        if (command_word_completion_function::val == (char *)0x0) {\n          if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar10 = (char *)0x0;\n          if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;\n          command_word_completion_function::searching_path = 1;\n          if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }\n          pcVar11 = pcVar10;\n          if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }\n          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }\n          if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }\n          if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }\n          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);\n          command_word_completion_function::filename_hint = pcVar10;\n          pcVar13 = strpbrk(pcVar10,"\"\'\\");\n          if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }\n          command_word_completion_function::fnhint = pcVar10;\n          free(pcVar11);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    command_word_completion_function::mapping_over = 5;\nLAB_00180787:\n    glob_ignore_case = command_word_completion_function::igncase;\n    command_word_completion_function::glob_matches =\n         shell_glob_filename(command_word_completion_function::hint);\n    glob_ignore_case = L'\0';\n    if ((command_word_completion_function::glob_matches == &glob_error_return) ||\n       (command_word_completion_function::glob_matches == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    command_word_completion_function::local_index = 0;\n    if ((command_word_completion_function::glob_matches[1] != (char *)0x0) &&\n       (rl_completion_type == L'\t')) {\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar10 = command_word_completion_function::hint;\n    iVar7 = command_word_completion_function::igncase;\n    iVar6 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_00180bdc:\n      pcVar10 = command_word_completion_function::hint;\n      iVar6 = command_word_completion_function::hint_len;\n      sVar12 = (size_t)command_word_completion_function::hint_len;\n      do {\n        pcVar11 = word_token_alist[command_word_completion_function::local_index].word;\n        if (pcVar11 == (char *)0x0) {\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }\n        command_word_completion_function::local_index =\n             command_word_completion_function::local_index + 1;\n      } while ((iVar6 != 0) &&\n              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))));\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = pcVar11;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,pcVar11);\n      goto LAB_00181336;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::igncase;\n        iVar6 = command_word_completion_function::hint_len;\n        ppSVar5 = command_word_completion_function::varlist;\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::hint_len;\n        iVar6 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }\n        command_word_completion_function::local_index = 0;\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_00180e1e;\n      command_word_completion_function::hint_is_dir = 0;\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      goto LAB_00181336;\n    }\n    if (state == 0) goto LAB_00180787;\n  }\n  command_word_completion_function::val =\n       command_word_completion_function::glob_matches[command_word_completion_function::local_index]\n  ;\n  while (command_word_completion_function::local_index =\n              command_word_completion_function::local_index + 1,\n        command_word_completion_function::val != (char *)0x0) {\n    iVar6 = executable_or_directory(command_word_completion_function::val);\n    if (iVar6 != 0) {\n      pcVar10 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part);\n        free(command_word_completion_function::val);\n        command_word_completion_function::val = pcVar10;\n      }\n      goto LAB_00181336;\n    }\n    free(command_word_completion_function::val);\n    command_word_completion_function::val =\n         command_word_completion_function::glob_matches\n         [command_word_completion_function::local_index];\n  }\n  glob_ignore_case = L'\0';\n  pcVar10 = (char *)0x0;\n  goto LAB_00181336;\n  while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar10;\n    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar14 == 0) break;\n  }\n  pcVar10 = (char *)xmalloc(~uVar14);\n  pcVar10 = strcpy(pcVar10,pcVar11);\n  goto LAB_00181336;\n  while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar10;\n    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar14 == 0) break;\n  }\n  pcVar10 = (char *)xmalloc(~uVar14);\n  pcVar10 = strcpy(pcVar10,pcVar11);\n  goto LAB_00181336;\n  while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar11;\n    pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar14 == 0) break;\n  }\n  pcVar11 = (char *)xmalloc(~uVar14);\n  pcVar10 = strcpy(pcVar11,pcVar10);\nLAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar10;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" primitive_type (pointer_declarator "* command_word_completion_function(char *hint_text,int state)" * (function_declarator "command_word_completion_function(char *hint_text,int state)" identifier (parameter_list "(char *hint_text,int state)" ( (parameter_declaration "char *hint_text" primitive_type (pointer_declarator "*hint_text" * identifier)) , (parameter_declaration "int state" primitive_type identifier) )))) (compound_statement "{\n  char cVar1;\n  alias_t *paVar2;\n  SHELL_VAR *pSVar3;\n  alias_t **ppaVar4;\n  SHELL_VAR **ppSVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  char *pcVar10;\n  char *pcVar11;\n  size_t sVar12;\n  char *pcVar13;\n  ulong uVar14;\n  long lVar15;\n  uint uVar16;\n  builtin *pbVar17;\n  long in_FS_OFFSET;\n  byte bVar18;\n  char *f;\n  long local_40;\n  \n  bVar18 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (state == 0) {\n    rl_filename_stat_hook = bash_command_name_stat_hook;\n    if ((command_word_completion_function::dequoted_hint != (char *)0x0) &&\n       (command_word_completion_function::dequoted_hint != command_word_completion_function::hint))\n    {\n      free(command_word_completion_function::dequoted_hint);\n    }\n    if (command_word_completion_function::hint != (char *)0x0) {\n      free(command_word_completion_function::hint);\n    }\n    command_word_completion_function::searching_path = 0;\n    command_word_completion_function::mapping_over = 0;\n    iVar6 = absolute_pathname(hint_text);\n    if (iVar6 == 0) {\n      iVar6 = absolute_program(hint_text);\n      uVar16 = 0;\n      if ((iVar6 == 0) && (uVar16 = 0, *hint_text != '~')) {\n        iVar6 = test_for_directory(hint_text);\n        uVar16 = (uint)(iVar6 != 0);\n      }\n    }\n    else {\n      uVar16 = 0;\n    }\n    command_word_completion_function::val = (char *)0x0;\n    command_word_completion_function::hint_is_dir = uVar16;\n    pcVar10 = rl_variable_value("completion-ignore-case");\n    command_word_completion_function::igncase = 0;\n    if ((*pcVar10 == 'o') && (pcVar10[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar10[2] == '\0');\n    }\n    if (command_word_completion_function::glob_matches != (char **)0x0) {\n      free(command_word_completion_function::glob_matches);\n      command_word_completion_function::glob_matches = (char **)0x0;\n    }\n    command_word_completion_function::globpat = completion_glob_pattern(hint_text);\n    if ((command_word_completion_function::globpat == 0) &&\n       (iVar6 = absolute_program(hint_text), iVar6 == 0)) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      lVar15 = -1;\n      pcVar10 = command_word_completion_function::hint;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n      command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n      if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n        command_word_completion_function::dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0);\n      }\n      command_word_completion_function::path = get_string_value("PATH");\n      dot_in_path = 0;\n      command_word_completion_function::path_index = 0;\n      command_word_completion_function::local_index = 0;\n      if (command_word_completion_function::varlist != (SHELL_VAR **)0x0) {\n        free(command_word_completion_function::varlist);\n      }\n      command_word_completion_function::varlist = all_visible_functions();\n      if (command_word_completion_function::alias_list != (alias_t **)0x0) {\n        free(command_word_completion_function::alias_list);\n      }\n      command_word_completion_function::alias_list = all_aliases();\n      goto LAB_00180925;\n    }\n    if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      command_word_completion_function::directory_part = pcVar10;\n      pcVar11 = strchr(pcVar10,0x2f);\n      if (pcVar11 == (char *)0x0) {\n        free(pcVar10);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar11 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n    }\n    else {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      bash_directory_completion_hook(&command_word_completion_function::hint);\n    }\n    command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n    if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n      pcVar10 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar10;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar10;\n    }\n    lVar15 = -1;\n    pcVar10 = command_word_completion_function::hint;\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      cVar1 = *pcVar10;\n      pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');\n    command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n    if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n    }\n    pcVar10 = command_word_completion_function::hint;\n    uVar14 = 0xffffffffffffffff;\n    pcVar11 = command_word_completion_function::hint;\n    do {\n      if (uVar14 == 0) break;\n      uVar14 = uVar14 - 1;\n      cVar1 = *pcVar11;\n      pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar11 = (char *)xmalloc(~uVar14);\n    command_word_completion_function::fnhint = strcpy(pcVar11,pcVar10);\n    command_word_completion_function::istate = 0;\n    command_word_completion_function::filename_hint = command_word_completion_function::fnhint;\n    if (command_word_completion_function::globpat == 0) {\n      if ((dircomplete_expand != 0) &&\n         (iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      command_word_completion_function::mapping_over = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate);\n        command_word_completion_function::val = pcVar10;\n        if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        command_word_completion_function::istate = 1;\n        if (pcVar10 == (char *)0x0) break;\n        iVar6 = absolute_program(command_word_completion_function::hint);\n        if (iVar6 == 0) {\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }\n        free(pcVar11);\n      }\n      iVar6 = absolute_program(command_word_completion_function::hint);\n      if (iVar6 == 0) {\nLAB_00180e1e:\n        command_word_completion_function::istate =\n             (int)(command_word_completion_function::val != (char *)0x0);\n        if (command_word_completion_function::val == (char *)0x0) {\n          if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar10 = (char *)0x0;\n          if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;\n          command_word_completion_function::searching_path = 1;\n          if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }\n          pcVar11 = pcVar10;\n          if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }\n          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }\n          if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }\n          if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }\n          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);\n          command_word_completion_function::filename_hint = pcVar10;\n          pcVar13 = strpbrk(pcVar10,"\"\'\\");\n          if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }\n          command_word_completion_function::fnhint = pcVar10;\n          free(pcVar11);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    command_word_completion_function::mapping_over = 5;\nLAB_00180787:\n    glob_ignore_case = command_word_completion_function::igncase;\n    command_word_completion_function::glob_matches =\n         shell_glob_filename(command_word_completion_function::hint);\n    glob_ignore_case = L'\0';\n    if ((command_word_completion_function::glob_matches == &glob_error_return) ||\n       (command_word_completion_function::glob_matches == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    command_word_completion_function::local_index = 0;\n    if ((command_word_completion_function::glob_matches[1] != (char *)0x0) &&\n       (rl_completion_type == L'\t')) {\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar10 = command_word_completion_function::hint;\n    iVar7 = command_word_completion_function::igncase;\n    iVar6 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_00180bdc:\n      pcVar10 = command_word_completion_function::hint;\n      iVar6 = command_word_completion_function::hint_len;\n      sVar12 = (size_t)command_word_completion_function::hint_len;\n      do {\n        pcVar11 = word_token_alist[command_word_completion_function::local_index].word;\n        if (pcVar11 == (char *)0x0) {\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }\n        command_word_completion_function::local_index =\n             command_word_completion_function::local_index + 1;\n      } while ((iVar6 != 0) &&\n              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))));\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = pcVar11;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,pcVar11);\n      goto LAB_00181336;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::igncase;\n        iVar6 = command_word_completion_function::hint_len;\n        ppSVar5 = command_word_completion_function::varlist;\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::hint_len;\n        iVar6 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }\n        command_word_completion_function::local_index = 0;\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_00180e1e;\n      command_word_completion_function::hint_is_dir = 0;\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      goto LAB_00181336;\n    }\n    if (state == 0) goto LAB_00180787;\n  }\n  command_word_completion_function::val =\n       command_word_completion_function::glob_matches[command_word_completion_function::local_index]\n  ;\n  while (command_word_completion_function::local_index =\n              command_word_completion_function::local_index + 1,\n        command_word_completion_function::val != (char *)0x0) {\n    iVar6 = executable_or_directory(command_word_completion_function::val);\n    if (iVar6 != 0) {\n      pcVar10 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part);\n        free(command_word_completion_function::val);\n        command_word_completion_function::val = pcVar10;\n      }\n      goto LAB_00181336;\n    }\n    free(command_word_completion_function::val);\n    command_word_completion_function::val =\n         command_word_completion_function::glob_matches\n         [command_word_completion_function::local_index];\n  }\n  glob_ignore_case = L'\0';\n  pcVar10 = (char *)0x0;\n  goto LAB_00181336;\n  while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar10;\n    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar14 == 0) break;\n  }\n  pcVar10 = (char *)xmalloc(~uVar14);\n  pcVar10 = strcpy(pcVar10,pcVar11);\n  goto LAB_00181336;\n  while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar10;\n    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar14 == 0) break;\n  }\n  pcVar10 = (char *)xmalloc(~uVar14);\n  pcVar10 = strcpy(pcVar10,pcVar11);\n  goto LAB_00181336;\n  while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar11;\n    pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar14 == 0) break;\n  }\n  pcVar11 = (char *)xmalloc(~uVar14);\n  pcVar10 = strcpy(pcVar11,pcVar10);\nLAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar10;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "alias_t *paVar2;" type_identifier (pointer_declarator "*paVar2" * identifier) ;) (declaration "SHELL_VAR *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "alias_t **ppaVar4;" type_identifier (pointer_declarator "**ppaVar4" * (pointer_declarator "*ppaVar4" * identifier)) ;) (declaration "SHELL_VAR **ppSVar5;" type_identifier (pointer_declarator "**ppSVar5" * (pointer_declarator "*ppSVar5" * identifier)) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "size_t sVar12;" primitive_type identifier ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "builtin *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar18;" type_identifier identifier ;) (declaration "char *f;" primitive_type (pointer_declarator "*f" * identifier) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar18 = 0;" (assignment_expression "bVar18 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (state == 0) {\n    rl_filename_stat_hook = bash_command_name_stat_hook;\n    if ((command_word_completion_function::dequoted_hint != (char *)0x0) &&\n       (command_word_completion_function::dequoted_hint != command_word_completion_function::hint))\n    {\n      free(command_word_completion_function::dequoted_hint);\n    }\n    if (command_word_completion_function::hint != (char *)0x0) {\n      free(command_word_completion_function::hint);\n    }\n    command_word_completion_function::searching_path = 0;\n    command_word_completion_function::mapping_over = 0;\n    iVar6 = absolute_pathname(hint_text);\n    if (iVar6 == 0) {\n      iVar6 = absolute_program(hint_text);\n      uVar16 = 0;\n      if ((iVar6 == 0) && (uVar16 = 0, *hint_text != '~')) {\n        iVar6 = test_for_directory(hint_text);\n        uVar16 = (uint)(iVar6 != 0);\n      }\n    }\n    else {\n      uVar16 = 0;\n    }\n    command_word_completion_function::val = (char *)0x0;\n    command_word_completion_function::hint_is_dir = uVar16;\n    pcVar10 = rl_variable_value("completion-ignore-case");\n    command_word_completion_function::igncase = 0;\n    if ((*pcVar10 == 'o') && (pcVar10[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar10[2] == '\0');\n    }\n    if (command_word_completion_function::glob_matches != (char **)0x0) {\n      free(command_word_completion_function::glob_matches);\n      command_word_completion_function::glob_matches = (char **)0x0;\n    }\n    command_word_completion_function::globpat = completion_glob_pattern(hint_text);\n    if ((command_word_completion_function::globpat == 0) &&\n       (iVar6 = absolute_program(hint_text), iVar6 == 0)) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      lVar15 = -1;\n      pcVar10 = command_word_completion_function::hint;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n      command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n      if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n        command_word_completion_function::dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0);\n      }\n      command_word_completion_function::path = get_string_value("PATH");\n      dot_in_path = 0;\n      command_word_completion_function::path_index = 0;\n      command_word_completion_function::local_index = 0;\n      if (command_word_completion_function::varlist != (SHELL_VAR **)0x0) {\n        free(command_word_completion_function::varlist);\n      }\n      command_word_completion_function::varlist = all_visible_functions();\n      if (command_word_completion_function::alias_list != (alias_t **)0x0) {\n        free(command_word_completion_function::alias_list);\n      }\n      command_word_completion_function::alias_list = all_aliases();\n      goto LAB_00180925;\n    }\n    if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      command_word_completion_function::directory_part = pcVar10;\n      pcVar11 = strchr(pcVar10,0x2f);\n      if (pcVar11 == (char *)0x0) {\n        free(pcVar10);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar11 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n    }\n    else {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      bash_directory_completion_hook(&command_word_completion_function::hint);\n    }\n    command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n    if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n      pcVar10 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar10;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar10;\n    }\n    lVar15 = -1;\n    pcVar10 = command_word_completion_function::hint;\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      cVar1 = *pcVar10;\n      pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');\n    command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n    if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n    }\n    pcVar10 = command_word_completion_function::hint;\n    uVar14 = 0xffffffffffffffff;\n    pcVar11 = command_word_completion_function::hint;\n    do {\n      if (uVar14 == 0) break;\n      uVar14 = uVar14 - 1;\n      cVar1 = *pcVar11;\n      pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar11 = (char *)xmalloc(~uVar14);\n    command_word_completion_function::fnhint = strcpy(pcVar11,pcVar10);\n    command_word_completion_function::istate = 0;\n    command_word_completion_function::filename_hint = command_word_completion_function::fnhint;\n    if (command_word_completion_function::globpat == 0) {\n      if ((dircomplete_expand != 0) &&\n         (iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      command_word_completion_function::mapping_over = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate);\n        command_word_completion_function::val = pcVar10;\n        if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        command_word_completion_function::istate = 1;\n        if (pcVar10 == (char *)0x0) break;\n        iVar6 = absolute_program(command_word_completion_function::hint);\n        if (iVar6 == 0) {\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }\n        free(pcVar11);\n      }\n      iVar6 = absolute_program(command_word_completion_function::hint);\n      if (iVar6 == 0) {\nLAB_00180e1e:\n        command_word_completion_function::istate =\n             (int)(command_word_completion_function::val != (char *)0x0);\n        if (command_word_completion_function::val == (char *)0x0) {\n          if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar10 = (char *)0x0;\n          if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;\n          command_word_completion_function::searching_path = 1;\n          if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }\n          pcVar11 = pcVar10;\n          if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }\n          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }\n          if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }\n          if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }\n          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);\n          command_word_completion_function::filename_hint = pcVar10;\n          pcVar13 = strpbrk(pcVar10,"\"\'\\");\n          if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }\n          command_word_completion_function::fnhint = pcVar10;\n          free(pcVar11);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    command_word_completion_function::mapping_over = 5;\nLAB_00180787:\n    glob_ignore_case = command_word_completion_function::igncase;\n    command_word_completion_function::glob_matches =\n         shell_glob_filename(command_word_completion_function::hint);\n    glob_ignore_case = L'\0';\n    if ((command_word_completion_function::glob_matches == &glob_error_return) ||\n       (command_word_completion_function::glob_matches == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    command_word_completion_function::local_index = 0;\n    if ((command_word_completion_function::glob_matches[1] != (char *)0x0) &&\n       (rl_completion_type == L'\t')) {\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar10 = command_word_completion_function::hint;\n    iVar7 = command_word_completion_function::igncase;\n    iVar6 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_00180bdc:\n      pcVar10 = command_word_completion_function::hint;\n      iVar6 = command_word_completion_function::hint_len;\n      sVar12 = (size_t)command_word_completion_function::hint_len;\n      do {\n        pcVar11 = word_token_alist[command_word_completion_function::local_index].word;\n        if (pcVar11 == (char *)0x0) {\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }\n        command_word_completion_function::local_index =\n             command_word_completion_function::local_index + 1;\n      } while ((iVar6 != 0) &&\n              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))));\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = pcVar11;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,pcVar11);\n      goto LAB_00181336;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::igncase;\n        iVar6 = command_word_completion_function::hint_len;\n        ppSVar5 = command_word_completion_function::varlist;\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::hint_len;\n        iVar6 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }\n        command_word_completion_function::local_index = 0;\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_00180e1e;\n      command_word_completion_function::hint_is_dir = 0;\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      goto LAB_00181336;\n    }\n    if (state == 0) goto LAB_00180787;\n  }" if (parenthesized_expression "(state == 0)" ( (binary_expression "state == 0" identifier == number_literal) )) (compound_statement "{\n    rl_filename_stat_hook = bash_command_name_stat_hook;\n    if ((command_word_completion_function::dequoted_hint != (char *)0x0) &&\n       (command_word_completion_function::dequoted_hint != command_word_completion_function::hint))\n    {\n      free(command_word_completion_function::dequoted_hint);\n    }\n    if (command_word_completion_function::hint != (char *)0x0) {\n      free(command_word_completion_function::hint);\n    }\n    command_word_completion_function::searching_path = 0;\n    command_word_completion_function::mapping_over = 0;\n    iVar6 = absolute_pathname(hint_text);\n    if (iVar6 == 0) {\n      iVar6 = absolute_program(hint_text);\n      uVar16 = 0;\n      if ((iVar6 == 0) && (uVar16 = 0, *hint_text != '~')) {\n        iVar6 = test_for_directory(hint_text);\n        uVar16 = (uint)(iVar6 != 0);\n      }\n    }\n    else {\n      uVar16 = 0;\n    }\n    command_word_completion_function::val = (char *)0x0;\n    command_word_completion_function::hint_is_dir = uVar16;\n    pcVar10 = rl_variable_value("completion-ignore-case");\n    command_word_completion_function::igncase = 0;\n    if ((*pcVar10 == 'o') && (pcVar10[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar10[2] == '\0');\n    }\n    if (command_word_completion_function::glob_matches != (char **)0x0) {\n      free(command_word_completion_function::glob_matches);\n      command_word_completion_function::glob_matches = (char **)0x0;\n    }\n    command_word_completion_function::globpat = completion_glob_pattern(hint_text);\n    if ((command_word_completion_function::globpat == 0) &&\n       (iVar6 = absolute_program(hint_text), iVar6 == 0)) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      lVar15 = -1;\n      pcVar10 = command_word_completion_function::hint;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n      command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n      if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n        command_word_completion_function::dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0);\n      }\n      command_word_completion_function::path = get_string_value("PATH");\n      dot_in_path = 0;\n      command_word_completion_function::path_index = 0;\n      command_word_completion_function::local_index = 0;\n      if (command_word_completion_function::varlist != (SHELL_VAR **)0x0) {\n        free(command_word_completion_function::varlist);\n      }\n      command_word_completion_function::varlist = all_visible_functions();\n      if (command_word_completion_function::alias_list != (alias_t **)0x0) {\n        free(command_word_completion_function::alias_list);\n      }\n      command_word_completion_function::alias_list = all_aliases();\n      goto LAB_00180925;\n    }\n    if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      command_word_completion_function::directory_part = pcVar10;\n      pcVar11 = strchr(pcVar10,0x2f);\n      if (pcVar11 == (char *)0x0) {\n        free(pcVar10);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar11 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n    }\n    else {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      bash_directory_completion_hook(&command_word_completion_function::hint);\n    }\n    command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n    if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n      pcVar10 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar10;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar10;\n    }\n    lVar15 = -1;\n    pcVar10 = command_word_completion_function::hint;\n    do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      cVar1 = *pcVar10;\n      pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');\n    command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n    if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n    }\n    pcVar10 = command_word_completion_function::hint;\n    uVar14 = 0xffffffffffffffff;\n    pcVar11 = command_word_completion_function::hint;\n    do {\n      if (uVar14 == 0) break;\n      uVar14 = uVar14 - 1;\n      cVar1 = *pcVar11;\n      pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar11 = (char *)xmalloc(~uVar14);\n    command_word_completion_function::fnhint = strcpy(pcVar11,pcVar10);\n    command_word_completion_function::istate = 0;\n    command_word_completion_function::filename_hint = command_word_completion_function::fnhint;\n    if (command_word_completion_function::globpat == 0) {\n      if ((dircomplete_expand != 0) &&\n         (iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      command_word_completion_function::mapping_over = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate);\n        command_word_completion_function::val = pcVar10;\n        if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        command_word_completion_function::istate = 1;\n        if (pcVar10 == (char *)0x0) break;\n        iVar6 = absolute_program(command_word_completion_function::hint);\n        if (iVar6 == 0) {\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }\n        free(pcVar11);\n      }\n      iVar6 = absolute_program(command_word_completion_function::hint);\n      if (iVar6 == 0) {\nLAB_00180e1e:\n        command_word_completion_function::istate =\n             (int)(command_word_completion_function::val != (char *)0x0);\n        if (command_word_completion_function::val == (char *)0x0) {\n          if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar10 = (char *)0x0;\n          if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;\n          command_word_completion_function::searching_path = 1;\n          if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }\n          pcVar11 = pcVar10;\n          if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }\n          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }\n          if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }\n          if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }\n          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);\n          command_word_completion_function::filename_hint = pcVar10;\n          pcVar13 = strpbrk(pcVar10,"\"\'\\");\n          if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }\n          command_word_completion_function::fnhint = pcVar10;\n          free(pcVar11);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    command_word_completion_function::mapping_over = 5;\nLAB_00180787:\n    glob_ignore_case = command_word_completion_function::igncase;\n    command_word_completion_function::glob_matches =\n         shell_glob_filename(command_word_completion_function::hint);\n    glob_ignore_case = L'\0';\n    if ((command_word_completion_function::glob_matches == &glob_error_return) ||\n       (command_word_completion_function::glob_matches == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    command_word_completion_function::local_index = 0;\n    if ((command_word_completion_function::glob_matches[1] != (char *)0x0) &&\n       (rl_completion_type == L'\t')) {\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }" { (expression_statement "rl_filename_stat_hook = bash_command_name_stat_hook;" (assignment_expression "rl_filename_stat_hook = bash_command_name_stat_hook" identifier = identifier) ;) (if_statement "if ((command_word_completion_function::dequoted_hint != (char *)0x0) &&\n       (command_word_completion_function::dequoted_hint != command_word_completion_function::hint))\n    {\n      free(command_word_completion_function::dequoted_hint);\n    }" if (parenthesized_expression "((command_word_completion_function::dequoted_hint != (char *)0x0) &&\n       (command_word_completion_function::dequoted_hint != command_word_completion_function::hint))" ( (binary_expression "(command_word_completion_function::dequoted_hint != (char *)0x0) &&\n       (command_word_completion_function::dequoted_hint != command_word_completion_function::hint)" (parenthesized_expression "(command_word_completion_function::dequoted_hint != (char *)0x0)" ( (binary_expression "command_word_completion_function::dequoted_hint != (char *)0x0" identifier (ERROR "::dequoted_hint" : : identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(command_word_completion_function::dequoted_hint != command_word_completion_function::hint)" ( (binary_expression "command_word_completion_function::dequoted_hint != command_word_completion_function" identifier (ERROR "::dequoted_hint" : : identifier) != identifier) (ERROR "::hint" : : identifier) ))) )) (compound_statement "{\n      free(command_word_completion_function::dequoted_hint);\n    }" { (labeled_statement "free(command_word_completion_function::dequoted_hint);" statement_identifier (ERROR "(command_word_completion_function:" ( (type_descriptor "command_word_completion_function" type_identifier) :) : (expression_statement "dequoted_hint);" identifier (ERROR ")" )) ;)) })) (if_statement "if (command_word_completion_function::hint != (char *)0x0) {\n      free(command_word_completion_function::hint);\n    }" if (parenthesized_expression "(command_word_completion_function::hint != (char *)0x0)" ( (binary_expression "command_word_completion_function::hint != (char *)0x0" identifier (ERROR "::hint" : : identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(command_word_completion_function::hint);\n    }" { (labeled_statement "free(command_word_completion_function::hint);" statement_identifier (ERROR "(command_word_completion_function:" ( (type_descriptor "command_word_completion_function" type_identifier) :) : (expression_statement "hint);" identifier (ERROR ")" )) ;)) })) (labeled_statement "command_word_completion_function::searching_path = 0;" statement_identifier : (ERROR ":" :) (expression_statement "searching_path = 0;" (assignment_expression "searching_path = 0" identifier = number_literal) ;)) (labeled_statement "command_word_completion_function::mapping_over = 0;" statement_identifier : (ERROR ":" :) (expression_statement "mapping_over = 0;" (assignment_expression "mapping_over = 0" identifier = number_literal) ;)) (expression_statement "iVar6 = absolute_pathname(hint_text);" (assignment_expression "iVar6 = absolute_pathname(hint_text)" identifier = (call_expression "absolute_pathname(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) ;) (if_statement "if (iVar6 == 0) {\n      iVar6 = absolute_program(hint_text);\n      uVar16 = 0;\n      if ((iVar6 == 0) && (uVar16 = 0, *hint_text != '~')) {\n        iVar6 = test_for_directory(hint_text);\n        uVar16 = (uint)(iVar6 != 0);\n      }\n    }\n    else {\n      uVar16 = 0;\n    }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar6 = absolute_program(hint_text);\n      uVar16 = 0;\n      if ((iVar6 == 0) && (uVar16 = 0, *hint_text != '~')) {\n        iVar6 = test_for_directory(hint_text);\n        uVar16 = (uint)(iVar6 != 0);\n      }\n    }" { (expression_statement "iVar6 = absolute_program(hint_text);" (assignment_expression "iVar6 = absolute_program(hint_text)" identifier = (call_expression "absolute_program(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (if_statement "if ((iVar6 == 0) && (uVar16 = 0, *hint_text != '~')) {\n        iVar6 = test_for_directory(hint_text);\n        uVar16 = (uint)(iVar6 != 0);\n      }" if (parenthesized_expression "((iVar6 == 0) && (uVar16 = 0, *hint_text != '~'))" ( (binary_expression "(iVar6 == 0) && (uVar16 = 0, *hint_text != '~')" (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar16 = 0, *hint_text != '~')" ( (comma_expression "uVar16 = 0, *hint_text != '~'" (assignment_expression "uVar16 = 0" identifier = number_literal) , (binary_expression "*hint_text != '~'" (pointer_expression "*hint_text" * identifier) != (char_literal "'~'" ' character '))) ))) )) (compound_statement "{\n        iVar6 = test_for_directory(hint_text);\n        uVar16 = (uint)(iVar6 != 0);\n      }" { (expression_statement "iVar6 = test_for_directory(hint_text);" (assignment_expression "iVar6 = test_for_directory(hint_text)" identifier = (call_expression "test_for_directory(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) ;) (expression_statement "uVar16 = (uint)(iVar6 != 0);" (assignment_expression "uVar16 = (uint)(iVar6 != 0)" identifier = (call_expression "(uint)(iVar6 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )))) ;) })) }) (else_clause "else {\n      uVar16 = 0;\n    }" else (compound_statement "{\n      uVar16 = 0;\n    }" { (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) }))) (labeled_statement "command_word_completion_function::val = (char *)0x0;" statement_identifier : (ERROR ":" :) (expression_statement "val = (char *)0x0;" (assignment_expression "val = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (labeled_statement "command_word_completion_function::hint_is_dir = uVar16;" statement_identifier : (ERROR ":" :) (expression_statement "hint_is_dir = uVar16;" (assignment_expression "hint_is_dir = uVar16" identifier = identifier) ;)) (expression_statement "pcVar10 = rl_variable_value("completion-ignore-case");" (assignment_expression "pcVar10 = rl_variable_value("completion-ignore-case")" identifier = (call_expression "rl_variable_value("completion-ignore-case")" identifier (argument_list "("completion-ignore-case")" ( (string_literal ""completion-ignore-case"" " string_content ") )))) ;) (labeled_statement "command_word_completion_function::igncase = 0;" statement_identifier : (ERROR ":" :) (expression_statement "igncase = 0;" (assignment_expression "igncase = 0" identifier = number_literal) ;)) (if_statement "if ((*pcVar10 == 'o') && (pcVar10[1] == 'n')) {\n      command_word_completion_function::igncase = (int)(pcVar10[2] == '\0');\n    }" if (parenthesized_expression "((*pcVar10 == 'o') && (pcVar10[1] == 'n'))" ( (binary_expression "(*pcVar10 == 'o') && (pcVar10[1] == 'n')" (parenthesized_expression "(*pcVar10 == 'o')" ( (binary_expression "*pcVar10 == 'o'" (pointer_expression "*pcVar10" * identifier) == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar10[1] == 'n')" ( (binary_expression "pcVar10[1] == 'n'" (subscript_expression "pcVar10[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      command_word_completion_function::igncase = (int)(pcVar10[2] == '\0');\n    }" { (labeled_statement "command_word_completion_function::igncase = (int)(pcVar10[2] == '\0');" statement_identifier : (ERROR ":" :) (expression_statement "igncase = (int)(pcVar10[2] == '\0');" (assignment_expression "igncase = (int)(pcVar10[2] == '\0')" identifier = (cast_expression "(int)(pcVar10[2] == '\0')" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar10[2] == '\0')" ( (binary_expression "pcVar10[2] == '\0'" (subscript_expression "pcVar10[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )))) ;)) })) (if_statement "if (command_word_completion_function::glob_matches != (char **)0x0) {\n      free(command_word_completion_function::glob_matches);\n      command_word_completion_function::glob_matches = (char **)0x0;\n    }" if (parenthesized_expression "(command_word_completion_function::glob_matches != (char **)0x0)" ( (binary_expression "command_word_completion_function::glob_matches != (char **)0x0" identifier (ERROR "::glob_matches" : : identifier) != (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n      free(command_word_completion_function::glob_matches);\n      command_word_completion_function::glob_matches = (char **)0x0;\n    }" { (labeled_statement "free(command_word_completion_function::glob_matches);" statement_identifier (ERROR "(command_word_completion_function:" ( (type_descriptor "command_word_completion_function" type_identifier) :) : (expression_statement "glob_matches);" identifier (ERROR ")" )) ;)) (labeled_statement "command_word_completion_function::glob_matches = (char **)0x0;" statement_identifier : (ERROR ":" :) (expression_statement "glob_matches = (char **)0x0;" (assignment_expression "glob_matches = (char **)0x0" identifier = (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;)) })) (labeled_statement "command_word_completion_function::globpat = completion_glob_pattern(hint_text);" statement_identifier : (ERROR ":" :) (expression_statement "globpat = completion_glob_pattern(hint_text);" (assignment_expression "globpat = completion_glob_pattern(hint_text)" identifier = (call_expression "completion_glob_pattern(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) ;)) (if_statement "if ((command_word_completion_function::globpat == 0) &&\n       (iVar6 = absolute_program(hint_text), iVar6 == 0)) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      lVar15 = -1;\n      pcVar10 = command_word_completion_function::hint;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n      command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n      if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n        command_word_completion_function::dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0);\n      }\n      command_word_completion_function::path = get_string_value("PATH");\n      dot_in_path = 0;\n      command_word_completion_function::path_index = 0;\n      command_word_completion_function::local_index = 0;\n      if (command_word_completion_function::varlist != (SHELL_VAR **)0x0) {\n        free(command_word_completion_function::varlist);\n      }\n      command_word_completion_function::varlist = all_visible_functions();\n      if (command_word_completion_function::alias_list != (alias_t **)0x0) {\n        free(command_word_completion_function::alias_list);\n      }\n      command_word_completion_function::alias_list = all_aliases();\n      goto LAB_00180925;\n    }" if (parenthesized_expression "((command_word_completion_function::globpat == 0) &&\n       (iVar6 = absolute_program(hint_text), iVar6 == 0))" ( (binary_expression "(command_word_completion_function::globpat == 0) &&\n       (iVar6 = absolute_program(hint_text), iVar6 == 0)" (parenthesized_expression "(command_word_completion_function::globpat == 0)" ( (binary_expression "command_word_completion_function::globpat == 0" identifier (ERROR "::globpat" : : identifier) == number_literal) )) && (parenthesized_expression "(iVar6 = absolute_program(hint_text), iVar6 == 0)" ( (comma_expression "iVar6 = absolute_program(hint_text), iVar6 == 0" (assignment_expression "iVar6 = absolute_program(hint_text)" identifier = (call_expression "absolute_program(hint_text)" identifier (argument_list "(hint_text)" ( identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      lVar15 = -1;\n      pcVar10 = command_word_completion_function::hint;\n      do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      command_word_completion_function::hint_len = ~(uint)lVar15 - 1;\n      command_word_completion_function::dequoted_hint = command_word_completion_function::hint;\n      if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n        command_word_completion_function::dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0);\n      }\n      command_word_completion_function::path = get_string_value("PATH");\n      dot_in_path = 0;\n      command_word_completion_function::path_index = 0;\n      command_word_completion_function::local_index = 0;\n      if (command_word_completion_function::varlist != (SHELL_VAR **)0x0) {\n        free(command_word_completion_function::varlist);\n      }\n      command_word_completion_function::varlist = all_visible_functions();\n      if (command_word_completion_function::alias_list != (alias_t **)0x0) {\n        free(command_word_completion_function::alias_list);\n      }\n      command_word_completion_function::alias_list = all_aliases();\n      goto LAB_00180925;\n    }" { (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar10 = hint_text;" (assignment_expression "pcVar10 = hint_text" identifier = identifier) ;) (do_statement "do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar10 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar10 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (labeled_statement "command_word_completion_function::hint = strcpy(pcVar10,hint_text);" statement_identifier : (ERROR ":" :) (expression_statement "hint = strcpy(pcVar10,hint_text);" (assignment_expression "hint = strcpy(pcVar10,hint_text)" identifier = (call_expression "strcpy(pcVar10,hint_text)" identifier (argument_list "(pcVar10,hint_text)" ( identifier , identifier )))) ;)) (expression_statement "lVar15 = -1;" (assignment_expression "lVar15 = -1" identifier = number_literal) ;) (expression_statement "pcVar10 = command_word_completion_function::hint;" (assignment_expression "pcVar10 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;) (do_statement "do {\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (lVar15 == 0) break;\n        lVar15 = lVar15 + -1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (labeled_statement "command_word_completion_function::hint_len = ~(uint)lVar15 - 1;" statement_identifier : (ERROR ":" :) (expression_statement "hint_len = ~(uint)lVar15 - 1;" (assignment_expression "hint_len = ~(uint)lVar15 - 1" identifier = (binary_expression "~(uint)lVar15 - 1" (unary_expression "~(uint)lVar15" ~ (cast_expression "(uint)lVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;)) (labeled_statement "command_word_completion_function::dequoted_hint = command_word_completion_function::hint;" statement_identifier (ERROR "::dequoted_hint = command_word_completion_function:" : : (assignment_expression "dequoted_hint = command_word_completion_function" identifier = identifier) :) : (expression_statement "hint;" identifier ;)) (if_statement "if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n        command_word_completion_function::dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0);\n      }" if (parenthesized_expression "((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0'))" ( (binary_expression "(rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')" (parenthesized_expression "(rl_completion_found_quote != L'\0')" ( (binary_expression "rl_completion_found_quote != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) && (parenthesized_expression "(rl_completion_quote_character == L'\0')" ( (binary_expression "rl_completion_quote_character == L'\0'" identifier == (char_literal "L'\0'" L' escape_sequence ')) ))) )) (compound_statement "{\n        command_word_completion_function::dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0);\n      }" { (labeled_statement "command_word_completion_function::dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0);" statement_identifier : (ERROR ":" :) (expression_statement "dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0);" (assignment_expression "dequoted_hint =\n             bash_dequote_filename(command_word_completion_function::hint,0)" identifier = (call_expression "bash_dequote_filename(command_word_completion_function::hint,0)" identifier (argument_list "(command_word_completion_function::hint,0)" ( identifier (ERROR "::hint" : : identifier) , number_literal )))) ;)) })) (labeled_statement "command_word_completion_function::path = get_string_value("PATH");" statement_identifier : (ERROR ":" :) (expression_statement "path = get_string_value("PATH");" (assignment_expression "path = get_string_value("PATH")" identifier = (call_expression "get_string_value("PATH")" identifier (argument_list "("PATH")" ( (string_literal ""PATH"" " string_content ") )))) ;)) (expression_statement "dot_in_path = 0;" (assignment_expression "dot_in_path = 0" identifier = number_literal) ;) (labeled_statement "command_word_completion_function::path_index = 0;" statement_identifier : (ERROR ":" :) (expression_statement "path_index = 0;" (assignment_expression "path_index = 0" identifier = number_literal) ;)) (labeled_statement "command_word_completion_function::local_index = 0;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = 0;" (assignment_expression "local_index = 0" identifier = number_literal) ;)) (if_statement "if (command_word_completion_function::varlist != (SHELL_VAR **)0x0) {\n        free(command_word_completion_function::varlist);\n      }" if (parenthesized_expression "(command_word_completion_function::varlist != (SHELL_VAR **)0x0)" ( (binary_expression "command_word_completion_function::varlist != (SHELL_VAR **)0x0" identifier (ERROR "::varlist" : : identifier) != (cast_expression "(SHELL_VAR **)0x0" ( (type_descriptor "SHELL_VAR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        free(command_word_completion_function::varlist);\n      }" { (labeled_statement "free(command_word_completion_function::varlist);" statement_identifier (ERROR "(command_word_completion_function:" ( (type_descriptor "command_word_completion_function" type_identifier) :) : (expression_statement "varlist);" identifier (ERROR ")" )) ;)) })) (labeled_statement "command_word_completion_function::varlist = all_visible_functions();" statement_identifier : (ERROR ":" :) (expression_statement "varlist = all_visible_functions();" (assignment_expression "varlist = all_visible_functions()" identifier = (call_expression "all_visible_functions()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (command_word_completion_function::alias_list != (alias_t **)0x0) {\n        free(command_word_completion_function::alias_list);\n      }" if (parenthesized_expression "(command_word_completion_function::alias_list != (alias_t **)0x0)" ( (binary_expression "command_word_completion_function::alias_list != (alias_t **)0x0" identifier (ERROR "::alias_list" : : identifier) != (cast_expression "(alias_t **)0x0" ( (type_descriptor "alias_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        free(command_word_completion_function::alias_list);\n      }" { (labeled_statement "free(command_word_completion_function::alias_list);" statement_identifier (ERROR "(command_word_completion_function:" ( (type_descriptor "command_word_completion_function" type_identifier) :) : (expression_statement "alias_list);" identifier (ERROR ")" )) ;)) })) (labeled_statement "command_word_completion_function::alias_list = all_aliases();" statement_identifier : (ERROR ":" :) (expression_statement "alias_list = all_aliases();" (assignment_expression "alias_list = all_aliases()" identifier = (call_expression "all_aliases()" identifier (argument_list "()" ( )))) ;)) (goto_statement "goto LAB_00180925;" goto statement_identifier ;) })) (if_statement "if (*hint_text == '~') {\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      command_word_completion_function::directory_part = pcVar10;\n      pcVar11 = strchr(pcVar10,0x2f);\n      if (pcVar11 == (char *)0x0) {\n        free(pcVar10);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar11 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n    }\n    else {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      bash_directory_completion_hook(&command_word_completion_function::hint);\n    }" if (parenthesized_expression "(*hint_text == '~')" ( (binary_expression "*hint_text == '~'" (pointer_expression "*hint_text" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n      command_word_completion_function::hint = bash_tilde_expand(hint_text,0);\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      command_word_completion_function::directory_part = pcVar10;\n      pcVar11 = strchr(pcVar10,0x2f);\n      if (pcVar11 == (char *)0x0) {\n        free(pcVar10);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar11 = '\0';\n      }\n    }" { (labeled_statement "command_word_completion_function::hint = bash_tilde_expand(hint_text,0);" statement_identifier : (ERROR ":" :) (expression_statement "hint = bash_tilde_expand(hint_text,0);" (assignment_expression "hint = bash_tilde_expand(hint_text,0)" identifier = (call_expression "bash_tilde_expand(hint_text,0)" identifier (argument_list "(hint_text,0)" ( identifier , number_literal )))) ;)) (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar10 = hint_text;" (assignment_expression "pcVar10 = hint_text" identifier = identifier) ;) (do_statement "do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar10 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar10 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (expression_statement "pcVar10 = strcpy(pcVar10,hint_text);" (assignment_expression "pcVar10 = strcpy(pcVar10,hint_text)" identifier = (call_expression "strcpy(pcVar10,hint_text)" identifier (argument_list "(pcVar10,hint_text)" ( identifier , identifier )))) ;) (labeled_statement "command_word_completion_function::directory_part = pcVar10;" statement_identifier : (ERROR ":" :) (expression_statement "directory_part = pcVar10;" (assignment_expression "directory_part = pcVar10" identifier = identifier) ;)) (expression_statement "pcVar11 = strchr(pcVar10,0x2f);" (assignment_expression "pcVar11 = strchr(pcVar10,0x2f)" identifier = (call_expression "strchr(pcVar10,0x2f)" identifier (argument_list "(pcVar10,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar11 == (char *)0x0) {\n        free(pcVar10);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }\n      else {\n        *pcVar11 = '\0';\n      }" if (parenthesized_expression "(pcVar11 == (char *)0x0)" ( (binary_expression "pcVar11 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(pcVar10);\n        command_word_completion_function::directory_part = (char *)0x0;\n      }" { (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (labeled_statement "command_word_completion_function::directory_part = (char *)0x0;" statement_identifier : (ERROR ":" :) (expression_statement "directory_part = (char *)0x0;" (assignment_expression "directory_part = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) }) (else_clause "else {\n        *pcVar11 = '\0';\n      }" else (compound_statement "{\n        *pcVar11 = '\0';\n      }" { (expression_statement "*pcVar11 = '\0';" (assignment_expression "*pcVar11 = '\0'" (pointer_expression "*pcVar11" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) }) (else_clause "else if (dircomplete_expand == 0) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n    }\n    else {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      bash_directory_completion_hook(&command_word_completion_function::hint);\n    }" else (if_statement "if (dircomplete_expand == 0) {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n    }\n    else {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      bash_directory_completion_hook(&command_word_completion_function::hint);\n    }" if (parenthesized_expression "(dircomplete_expand == 0)" ( (binary_expression "dircomplete_expand == 0" identifier == number_literal) )) (compound_statement "{\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n    }" { (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar10 = hint_text;" (assignment_expression "pcVar10 = hint_text" identifier = identifier) ;) (do_statement "do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar10 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar10 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (labeled_statement "command_word_completion_function::hint = strcpy(pcVar10,hint_text);" statement_identifier : (ERROR ":" :) (expression_statement "hint = strcpy(pcVar10,hint_text);" (assignment_expression "hint = strcpy(pcVar10,hint_text)" identifier = (call_expression "strcpy(pcVar10,hint_text)" identifier (argument_list "(pcVar10,hint_text)" ( identifier , identifier )))) ;)) }) (else_clause "else {\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      bash_directory_completion_hook(&command_word_completion_function::hint);\n    }" else (compound_statement "{\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      command_word_completion_function::hint = strcpy(pcVar10,hint_text);\n      bash_directory_completion_hook(&command_word_completion_function::hint);\n    }" { (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar10 = hint_text;" (assignment_expression "pcVar10 = hint_text" identifier = identifier) ;) (do_statement "do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar10 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar10 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (labeled_statement "command_word_completion_function::hint = strcpy(pcVar10,hint_text);" statement_identifier : (ERROR ":" :) (expression_statement "hint = strcpy(pcVar10,hint_text);" (assignment_expression "hint = strcpy(pcVar10,hint_text)" identifier = (call_expression "strcpy(pcVar10,hint_text)" identifier (argument_list "(pcVar10,hint_text)" ( identifier , identifier )))) ;)) (expression_statement "bash_directory_completion_hook(&command_word_completion_function::hint);" (call_expression "bash_directory_completion_hook(&command_word_completion_function::hint)" identifier (argument_list "(&command_word_completion_function::hint)" ( (pointer_expression "&command_word_completion_function" & identifier) (ERROR "::hint" : : identifier) ))) ;) }))))) (labeled_statement "command_word_completion_function::dequoted_hint = command_word_completion_function::hint;" statement_identifier (ERROR "::dequoted_hint = command_word_completion_function:" : : (assignment_expression "dequoted_hint = command_word_completion_function" identifier = identifier) :) : (expression_statement "hint;" identifier ;)) (if_statement "if ((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')) {\n      pcVar10 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar10;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar10;\n    }" if (parenthesized_expression "((rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0'))" ( (binary_expression "(rl_completion_found_quote != L'\0') && (rl_completion_quote_character == L'\0')" (parenthesized_expression "(rl_completion_found_quote != L'\0')" ( (binary_expression "rl_completion_found_quote != L'\0'" identifier != (char_literal "L'\0'" L' escape_sequence ')) )) && (parenthesized_expression "(rl_completion_quote_character == L'\0')" ( (binary_expression "rl_completion_quote_character == L'\0'" identifier == (char_literal "L'\0'" L' escape_sequence ')) ))) )) (compound_statement "{\n      pcVar10 = bash_dequote_filename(command_word_completion_function::hint,0);\n      command_word_completion_function::dequoted_hint = pcVar10;\n      free(command_word_completion_function::hint);\n      command_word_completion_function::hint = pcVar10;\n    }" { (expression_statement "pcVar10 = bash_dequote_filename(command_word_completion_function::hint,0);" (assignment_expression "pcVar10 = bash_dequote_filename(command_word_completion_function::hint,0)" identifier = (call_expression "bash_dequote_filename(command_word_completion_function::hint,0)" identifier (argument_list "(command_word_completion_function::hint,0)" ( identifier (ERROR "::hint" : : identifier) , number_literal )))) ;) (labeled_statement "command_word_completion_function::dequoted_hint = pcVar10;" statement_identifier : (ERROR ":" :) (expression_statement "dequoted_hint = pcVar10;" (assignment_expression "dequoted_hint = pcVar10" identifier = identifier) ;)) (macro_type_specifier "free(command_word_completion_function::hint)" identifier ( (type_descriptor "command_word_completion_function" type_identifier) (ERROR "::hint" : : identifier) )) ; (labeled_statement "command_word_completion_function::hint = pcVar10;" statement_identifier : (ERROR ":" :) (expression_statement "hint = pcVar10;" (assignment_expression "hint = pcVar10" identifier = identifier) ;)) })) (expression_statement "lVar15 = -1;" (assignment_expression "lVar15 = -1" identifier = number_literal) ;) (expression_statement "pcVar10 = command_word_completion_function::hint;" (assignment_expression "pcVar10 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;) (do_statement "do {\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      cVar1 = *pcVar10;\n      pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (lVar15 == 0) break;\n      lVar15 = lVar15 + -1;\n      cVar1 = *pcVar10;\n      pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    }" { (if_statement "if (lVar15 == 0) break;" if (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar15 = lVar15 + -1;" (assignment_expression "lVar15 = lVar15 + -1" identifier = (binary_expression "lVar15 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (labeled_statement "command_word_completion_function::hint_len = ~(uint)lVar15 - 1;" statement_identifier : (ERROR ":" :) (expression_statement "hint_len = ~(uint)lVar15 - 1;" (assignment_expression "hint_len = ~(uint)lVar15 - 1" identifier = (binary_expression "~(uint)lVar15 - 1" (unary_expression "~(uint)lVar15" ~ (cast_expression "(uint)lVar15" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;)) (if_statement "if (command_word_completion_function::filename_hint != (char *)0x0) {\n      free(command_word_completion_function::filename_hint);\n    }" if (parenthesized_expression "(command_word_completion_function::filename_hint != (char *)0x0)" ( (binary_expression "command_word_completion_function::filename_hint != (char *)0x0" identifier (ERROR "::filename_hint" : : identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(command_word_completion_function::filename_hint);\n    }" { (labeled_statement "free(command_word_completion_function::filename_hint);" statement_identifier (ERROR "(command_word_completion_function:" ( (type_descriptor "command_word_completion_function" type_identifier) :) : (expression_statement "filename_hint);" identifier (ERROR ")" )) ;)) })) (expression_statement "pcVar10 = command_word_completion_function::hint;" (assignment_expression "pcVar10 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;) (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar11 = command_word_completion_function::hint;" (assignment_expression "pcVar11 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;) (do_statement "do {\n      if (uVar14 == 0) break;\n      uVar14 = uVar14 - 1;\n      cVar1 = *pcVar11;\n      pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar14 == 0) break;\n      uVar14 = uVar14 - 1;\n      cVar1 = *pcVar11;\n      pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar11;" (assignment_expression "cVar1 = *pcVar11" identifier = (pointer_expression "*pcVar11" * identifier)) ;) (expression_statement "pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar11 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar11 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar11 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar11 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (labeled_statement "command_word_completion_function::fnhint = strcpy(pcVar11,pcVar10);" statement_identifier : (ERROR ":" :) (expression_statement "fnhint = strcpy(pcVar11,pcVar10);" (assignment_expression "fnhint = strcpy(pcVar11,pcVar10)" identifier = (call_expression "strcpy(pcVar11,pcVar10)" identifier (argument_list "(pcVar11,pcVar10)" ( identifier , identifier )))) ;)) (labeled_statement "command_word_completion_function::istate = 0;" statement_identifier : (ERROR ":" :) (expression_statement "istate = 0;" (assignment_expression "istate = 0" identifier = number_literal) ;)) (labeled_statement "command_word_completion_function::filename_hint = command_word_completion_function::fnhint;" statement_identifier (ERROR "::filename_hint = command_word_completion_function:" : : (assignment_expression "filename_hint = command_word_completion_function" identifier = identifier) :) : (expression_statement "fnhint;" identifier ;)) (if_statement "if (command_word_completion_function::globpat == 0) {\n      if ((dircomplete_expand != 0) &&\n         (iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      command_word_completion_function::mapping_over = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate);\n        command_word_completion_function::val = pcVar10;\n        if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        command_word_completion_function::istate = 1;\n        if (pcVar10 == (char *)0x0) break;\n        iVar6 = absolute_program(command_word_completion_function::hint);\n        if (iVar6 == 0) {\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }\n        free(pcVar11);\n      }\n      iVar6 = absolute_program(command_word_completion_function::hint);\n      if (iVar6 == 0) {\nLAB_00180e1e:\n        command_word_completion_function::istate =\n             (int)(command_word_completion_function::val != (char *)0x0);\n        if (command_word_completion_function::val == (char *)0x0) {\n          if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar10 = (char *)0x0;\n          if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;\n          command_word_completion_function::searching_path = 1;\n          if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }\n          pcVar11 = pcVar10;\n          if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }\n          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }\n          if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }\n          if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }\n          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);\n          command_word_completion_function::filename_hint = pcVar10;\n          pcVar13 = strpbrk(pcVar10,"\"\'\\");\n          if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }\n          command_word_completion_function::fnhint = pcVar10;\n          free(pcVar11);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(command_word_completion_function::globpat == 0)" ( (binary_expression "command_word_completion_function::globpat == 0" identifier (ERROR "::globpat" : : identifier) == number_literal) )) (compound_statement "{\n      if ((dircomplete_expand != 0) &&\n         (iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      command_word_completion_function::mapping_over = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate);\n        command_word_completion_function::val = pcVar10;\n        if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        command_word_completion_function::istate = 1;\n        if (pcVar10 == (char *)0x0) break;\n        iVar6 = absolute_program(command_word_completion_function::hint);\n        if (iVar6 == 0) {\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }\n        free(pcVar11);\n      }\n      iVar6 = absolute_program(command_word_completion_function::hint);\n      if (iVar6 == 0) {\nLAB_00180e1e:\n        command_word_completion_function::istate =\n             (int)(command_word_completion_function::val != (char *)0x0);\n        if (command_word_completion_function::val == (char *)0x0) {\n          if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar10 = (char *)0x0;\n          if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;\n          command_word_completion_function::searching_path = 1;\n          if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }\n          pcVar11 = pcVar10;\n          if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }\n          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }\n          if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }\n          if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }\n          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);\n          command_word_completion_function::filename_hint = pcVar10;\n          pcVar13 = strpbrk(pcVar10,"\"\'\\");\n          if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }\n          command_word_completion_function::fnhint = pcVar10;\n          free(pcVar11);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }" { (if_statement "if ((dircomplete_expand != 0) &&\n         (iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }" if (parenthesized_expression "((dircomplete_expand != 0) &&\n         (iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0))" ( (binary_expression "(dircomplete_expand != 0) &&\n         (iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0)" (parenthesized_expression "(dircomplete_expand != 0)" ( (binary_expression "dircomplete_expand != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0)" ( (comma_expression "iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint), iVar6 != 0" (assignment_expression "iVar6 = path_dot_or_dotdot(command_word_completion_function::fnhint)" identifier = (call_expression "path_dot_or_dotdot(command_word_completion_function::fnhint)" identifier (argument_list "(command_word_completion_function::fnhint)" ( identifier (ERROR "::fnhint" : : identifier) )))) , (binary_expression "iVar6 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }" { (expression_statement "dircomplete_expand = 0;" (assignment_expression "dircomplete_expand = 0" identifier = number_literal) ;) (expression_statement "set_directory_hook();" (call_expression "set_directory_hook()" identifier (argument_list "()" ( ))) ;) (expression_statement "dircomplete_expand = 1;" (assignment_expression "dircomplete_expand = 1" identifier = number_literal) ;) })) (labeled_statement "command_word_completion_function::mapping_over = 4;" statement_identifier : (ERROR ":" :) (expression_statement "mapping_over = 4;" (assignment_expression "mapping_over = 4" identifier = number_literal) ;)) (labeled_statement "LAB_00180a7a:\n      while( true ) {\n        pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate);\n        command_word_completion_function::val = pcVar10;\n        if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        command_word_completion_function::istate = 1;\n        if (pcVar10 == (char *)0x0) break;\n        iVar6 = absolute_program(command_word_completion_function::hint);\n        if (iVar6 == 0) {\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }\n        free(pcVar11);\n      }" statement_identifier : (while_statement "while( true ) {\n        pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate);\n        command_word_completion_function::val = pcVar10;\n        if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        command_word_completion_function::istate = 1;\n        if (pcVar10 == (char *)0x0) break;\n        iVar6 = absolute_program(command_word_completion_function::hint);\n        if (iVar6 == 0) {\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }\n        free(pcVar11);\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate);\n        command_word_completion_function::val = pcVar10;\n        if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        command_word_completion_function::istate = 1;\n        if (pcVar10 == (char *)0x0) break;\n        iVar6 = absolute_program(command_word_completion_function::hint);\n        if (iVar6 == 0) {\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }\n        free(pcVar11);\n      }" { (expression_statement "pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate);" (assignment_expression "pcVar10 = rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate)" identifier = (call_expression "rl_filename_completion_function\n                            (command_word_completion_function::fnhint,\n                             command_word_completion_function::istate)" identifier (argument_list "(command_word_completion_function::fnhint,\n                             command_word_completion_function::istate)" ( identifier (ERROR "::fnhint" : : identifier) , identifier (ERROR "::istate" : : identifier) )))) ;) (labeled_statement "command_word_completion_function::val = pcVar10;" statement_identifier : (ERROR ":" :) (expression_statement "val = pcVar10;" (assignment_expression "val = pcVar10" identifier = identifier) ;)) (if_statement "if ((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }" if (parenthesized_expression "((command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0))" ( (binary_expression "(command_word_completion_function::mapping_over == 4) && (dircomplete_expand != 0)" (parenthesized_expression "(command_word_completion_function::mapping_over == 4)" ( (binary_expression "command_word_completion_function::mapping_over == 4" identifier (ERROR "::mapping_over" : : identifier) == number_literal) )) && (parenthesized_expression "(dircomplete_expand != 0)" ( (binary_expression "dircomplete_expand != 0" identifier != number_literal) ))) )) (compound_statement "{\n          set_directory_hook();\n        }" { (expression_statement "set_directory_hook();" (call_expression "set_directory_hook()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "command_word_completion_function::istate = 1;" statement_identifier : (ERROR ":" :) (expression_statement "istate = 1;" (assignment_expression "istate = 1" identifier = number_literal) ;)) (if_statement "if (pcVar10 == (char *)0x0) break;" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "iVar6 = absolute_program(command_word_completion_function::hint);" (assignment_expression "iVar6 = absolute_program(command_word_completion_function::hint)" identifier = (call_expression "absolute_program(command_word_completion_function::hint)" identifier (argument_list "(command_word_completion_function::hint)" ( identifier (ERROR "::hint" : : identifier) )))) ;) (if_statement "if (iVar6 == 0) {\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          pcVar10 = strrchr(command_word_completion_function::val,0x2f);\n          pcVar11 = command_word_completion_function::val;\n          if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }\n        }" { (expression_statement "pcVar10 = strrchr(command_word_completion_function::val,0x2f);" (assignment_expression "pcVar10 = strrchr(command_word_completion_function::val,0x2f)" identifier = (call_expression "strrchr(command_word_completion_function::val,0x2f)" identifier (argument_list "(command_word_completion_function::val,0x2f)" ( identifier (ERROR "::val" : : identifier) , number_literal )))) ;) (expression_statement "pcVar11 = command_word_completion_function::val;" (assignment_expression "pcVar11 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (if_statement "if (pcVar10 != (char *)0x0) {\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }" if (parenthesized_expression "(pcVar10 != (char *)0x0)" ( (binary_expression "pcVar10 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar10 = pcVar10 + 1;\n            if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }\n          }" { (expression_statement "pcVar10 = pcVar10 + 1;" (assignment_expression "pcVar10 = pcVar10 + 1" identifier = (binary_expression "pcVar10 + 1" identifier + number_literal)) ;) (if_statement "if (command_word_completion_function::igncase == 0) {\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }\n            else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }" if (parenthesized_expression "(command_word_completion_function::igncase == 0)" ( (binary_expression "command_word_completion_function::igncase == 0" identifier (ERROR "::igncase" : : identifier) == number_literal) )) (compound_statement "{\n              iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);\n            }" { (expression_statement "iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len);" (assignment_expression "iVar6 = strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len)" identifier = (call_expression "strncmp(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len)" identifier (argument_list "(pcVar10,command_word_completion_function::hint,\n                              (long)command_word_completion_function::hint_len)" ( identifier , identifier (ERROR "::hint" : : identifier) , (cast_expression "(long)command_word_completion_function" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) (ERROR "::hint_len" : : identifier) )))) ;) }) (else_clause "else {\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }" else (compound_statement "{\n              iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);\n            }" { (expression_statement "iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len);" (assignment_expression "iVar6 = strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len)" identifier = (call_expression "strncasecmp(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len)" identifier (argument_list "(pcVar10,command_word_completion_function::hint,\n                                  (long)command_word_completion_function::hint_len)" ( identifier , identifier (ERROR "::hint" : : identifier) , (cast_expression "(long)command_word_completion_function" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) (ERROR "::hint_len" : : identifier) )))) ;) }))) (expression_statement "pcVar11 = command_word_completion_function::val;" (assignment_expression "pcVar11 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (if_statement "if (iVar6 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar11 = (char *)xmalloc(~uVar14);\n              pcVar10 = strcpy(pcVar11,pcVar10);\n              goto LAB_001812ba;\n            }" { (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" identifier = identifier) ;) (do_statement "do {\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              } while (cVar1 != '\0');" do (compound_statement "{\n                if (uVar14 == 0) break;\n                uVar14 = uVar14 - 1;\n                cVar1 = *pcVar11;\n                pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n              }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar11;" (assignment_expression "cVar1 = *pcVar11" identifier = (pointer_expression "*pcVar11" * identifier)) ;) (expression_statement "pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar11 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar11 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar11 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar11 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (expression_statement "pcVar10 = strcpy(pcVar11,pcVar10);" (assignment_expression "pcVar10 = strcpy(pcVar11,pcVar10)" identifier = (call_expression "strcpy(pcVar11,pcVar10)" identifier (argument_list "(pcVar11,pcVar10)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_001812ba;" goto statement_identifier ;) })) })) }) (else_clause "else {\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }" else (compound_statement "{\n          if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }\n          pcVar10 = command_word_completion_function::val;\n          if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }\n          pcVar13 = command_word_completion_function::val;\n          if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar10);\n          pcVar11 = command_word_completion_function::val;\n          if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }\n        }" { (if_statement "if (command_word_completion_function::igncase == 0) {\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }\n          else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }" if (parenthesized_expression "(command_word_completion_function::igncase == 0)" ( (binary_expression "command_word_completion_function::igncase == 0" identifier (ERROR "::igncase" : : identifier) == number_literal) )) (compound_statement "{\n            iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);\n          }" { (expression_statement "iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len);" (assignment_expression "iVar6 = strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len)" identifier = (call_expression "strncmp(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len)" identifier (argument_list "(command_word_completion_function::val,\n                            command_word_completion_function::hint,\n                            (long)command_word_completion_function::hint_len)" ( identifier (ERROR "::val" : : identifier) , identifier (ERROR "::hint" : : identifier) , (cast_expression "(long)command_word_completion_function" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) (ERROR "::hint_len" : : identifier) )))) ;) }) (else_clause "else {\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }" else (compound_statement "{\n            iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);\n          }" { (expression_statement "iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len);" (assignment_expression "iVar6 = strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len)" identifier = (call_expression "strncasecmp(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len)" identifier (argument_list "(command_word_completion_function::val,\n                                command_word_completion_function::hint,\n                                (long)command_word_completion_function::hint_len)" ( identifier (ERROR "::val" : : identifier) , identifier (ERROR "::hint" : : identifier) , (cast_expression "(long)command_word_completion_function" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) (ERROR "::hint_len" : : identifier) )))) ;) }))) (expression_statement "pcVar10 = command_word_completion_function::val;" (assignment_expression "pcVar10 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (if_statement "if (*hint_text == '~') {\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }\n          else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }" if (parenthesized_expression "(*hint_text == '~')" ( (binary_expression "*hint_text == '~'" (pointer_expression "*hint_text" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n            pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);\n          }" { (expression_statement "pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part);" (assignment_expression "pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part)" identifier = (call_expression "maybe_restore_tilde(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part)" identifier (argument_list "(command_word_completion_function::val,\n                                          command_word_completion_function::directory_part)" ( identifier (ERROR "::val" : : identifier) , identifier (ERROR "::directory_part" : : identifier) )))) ;) }) (else_clause "else {\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }" else (compound_statement "{\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            pcVar10 = strcpy(pcVar11,pcVar10);\n          }" { (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar11 = command_word_completion_function::val;" (assignment_expression "pcVar11 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (do_statement "do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar11;" (assignment_expression "cVar1 = *pcVar11" identifier = (pointer_expression "*pcVar11" * identifier)) ;) (expression_statement "pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar11 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar11 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar11 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar11 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (expression_statement "pcVar10 = strcpy(pcVar11,pcVar10);" (assignment_expression "pcVar10 = strcpy(pcVar11,pcVar10)" identifier = (call_expression "strcpy(pcVar11,pcVar10)" identifier (argument_list "(pcVar11,pcVar10)" ( identifier , identifier )))) ;) }))) (expression_statement "pcVar13 = command_word_completion_function::val;" (assignment_expression "pcVar13 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (if_statement "if (iVar6 == 0) {\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;\n            pcVar13 = command_word_completion_function::val;\n            uVar14 = 0xffffffffffffffff;\n            pcVar11 = command_word_completion_function::val;\n            do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar11 = (char *)xmalloc(~uVar14);\n            f = strcpy(pcVar11,pcVar13);\n            bash_directory_completion_hook(&f);\n            if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }\n            free(f);\n            pcVar11 = command_word_completion_function::val;\n            if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }\n          }" { (labeled_statement "LAB_001812ba:\n            iVar6 = command_word_completion_function::searching_path;" statement_identifier : (expression_statement "iVar6 = command_word_completion_function::searching_path;" (assignment_expression "iVar6 = command_word_completion_function" identifier = identifier) (ERROR "::searching_path" : : identifier) ;)) (expression_statement "pcVar13 = command_word_completion_function::val;" (assignment_expression "pcVar13 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar11 = command_word_completion_function::val;" (assignment_expression "pcVar11 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (do_statement "do {\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar14 == 0) break;\n              uVar14 = uVar14 - 1;\n              cVar1 = *pcVar11;\n              pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n            }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar11;" (assignment_expression "cVar1 = *pcVar11" identifier = (pointer_expression "*pcVar11" * identifier)) ;) (expression_statement "pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar11 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar11 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar11 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar11 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (expression_statement "f = strcpy(pcVar11,pcVar13);" (assignment_expression "f = strcpy(pcVar11,pcVar13)" identifier = (call_expression "strcpy(pcVar11,pcVar13)" identifier (argument_list "(pcVar11,pcVar13)" ( identifier , identifier )))) ;) (expression_statement "bash_directory_completion_hook(&f);" (call_expression "bash_directory_completion_hook(&f)" identifier (argument_list "(&f)" ( (pointer_expression "&f" & identifier) ))) ;) (if_statement "if (iVar6 == 0) {\n              iVar6 = executable_or_directory(f);\n            }\n            else {\n              iVar6 = executable_file(f);\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar6 = executable_or_directory(f);\n            }" { (expression_statement "iVar6 = executable_or_directory(f);" (assignment_expression "iVar6 = executable_or_directory(f)" identifier = (call_expression "executable_or_directory(f)" identifier (argument_list "(f)" ( identifier )))) ;) }) (else_clause "else {\n              iVar6 = executable_file(f);\n            }" else (compound_statement "{\n              iVar6 = executable_file(f);\n            }" { (expression_statement "iVar6 = executable_file(f);" (assignment_expression "iVar6 = executable_file(f)" identifier = (call_expression "executable_file(f)" identifier (argument_list "(f)" ( identifier )))) ;) }))) (expression_statement "free(f);" (call_expression "free(f)" identifier (argument_list "(f)" ( identifier ))) ;) (expression_statement "pcVar11 = command_word_completion_function::val;" (assignment_expression "pcVar11 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (if_statement "if (iVar6 != 0) {\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n              if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }\n              free(pcVar11);\n              command_word_completion_function::val = "";\n              goto LAB_00181336;\n            }" { (if_statement "if (command_word_completion_function::val != pcVar13) {\n                free(pcVar13);\n              }" if (parenthesized_expression "(command_word_completion_function::val != pcVar13)" ( (binary_expression "command_word_completion_function::val != pcVar13" identifier (ERROR "::val" : : identifier) != identifier) )) (compound_statement "{\n                free(pcVar13);\n              }" { (expression_statement "free(pcVar13);" (call_expression "free(pcVar13)" identifier (argument_list "(pcVar13)" ( identifier ))) ;) })) (expression_statement "free(pcVar11);" (call_expression "free(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;) (labeled_statement "command_word_completion_function::val = "";" statement_identifier : (ERROR ":" :) (expression_statement "val = "";" (assignment_expression "val = """ identifier = (string_literal """" " ")) ;)) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) })) (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "pcVar11 = command_word_completion_function::val;" (assignment_expression "pcVar11 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (if_statement "if (command_word_completion_function::val != pcVar13) {\n            free(pcVar13);\n          }" if (parenthesized_expression "(command_word_completion_function::val != pcVar13)" ( (binary_expression "command_word_completion_function::val != pcVar13" identifier (ERROR "::val" : : identifier) != identifier) )) (compound_statement "{\n            free(pcVar13);\n          }" { (expression_statement "free(pcVar13);" (call_expression "free(pcVar13)" identifier (argument_list "(pcVar13)" ( identifier ))) ;) })) }))) (expression_statement "free(pcVar11);" (call_expression "free(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;) }))) (expression_statement "iVar6 = absolute_program(command_word_completion_function::hint);" (assignment_expression "iVar6 = absolute_program(command_word_completion_function::hint)" identifier = (call_expression "absolute_program(command_word_completion_function::hint)" identifier (argument_list "(command_word_completion_function::hint)" ( identifier (ERROR "::hint" : : identifier) )))) ;) (if_statement "if (iVar6 == 0) {\nLAB_00180e1e:\n        command_word_completion_function::istate =\n             (int)(command_word_completion_function::val != (char *)0x0);\n        if (command_word_completion_function::val == (char *)0x0) {\n          if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar10 = (char *)0x0;\n          if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;\n          command_word_completion_function::searching_path = 1;\n          if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }\n          pcVar11 = pcVar10;\n          if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }\n          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }\n          if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }\n          if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }\n          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);\n          command_word_completion_function::filename_hint = pcVar10;\n          pcVar13 = strpbrk(pcVar10,"\"\'\\");\n          if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }\n          command_word_completion_function::fnhint = pcVar10;\n          free(pcVar11);\n        }\n        goto LAB_00180a7a;\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00180e1e:\n        command_word_completion_function::istate =\n             (int)(command_word_completion_function::val != (char *)0x0);\n        if (command_word_completion_function::val == (char *)0x0) {\n          if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar10 = (char *)0x0;\n          if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;\n          command_word_completion_function::searching_path = 1;\n          if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }\n          pcVar11 = pcVar10;\n          if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }\n          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }\n          if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }\n          if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }\n          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);\n          command_word_completion_function::filename_hint = pcVar10;\n          pcVar13 = strpbrk(pcVar10,"\"\'\\");\n          if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }\n          command_word_completion_function::fnhint = pcVar10;\n          free(pcVar11);\n        }\n        goto LAB_00180a7a;\n      }" { (labeled_statement "LAB_00180e1e:\n        command_word_completion_function::istate =\n             (int)(command_word_completion_function::val != (char *)0x0);" statement_identifier : (labeled_statement "command_word_completion_function::istate =\n             (int)(command_word_completion_function::val != (char *)0x0);" statement_identifier : (ERROR ":" :) (expression_statement "istate =\n             (int)(command_word_completion_function::val != (char *)0x0);" (assignment_expression "istate =\n             (int)(command_word_completion_function::val != (char *)0x0)" identifier = (cast_expression "(int)(command_word_completion_function::val != (char *)0x0)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(command_word_completion_function::val != (char *)0x0)" ( (binary_expression "command_word_completion_function::val != (char *)0x0" identifier (ERROR "::val" : : identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;))) (if_statement "if (command_word_completion_function::val == (char *)0x0) {\n          if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar10 = (char *)0x0;\n          if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;\n          command_word_completion_function::searching_path = 1;\n          if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }\n          pcVar11 = pcVar10;\n          if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }\n          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }\n          if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }\n          if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }\n          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);\n          command_word_completion_function::filename_hint = pcVar10;\n          pcVar13 = strpbrk(pcVar10,"\"\'\\");\n          if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }\n          command_word_completion_function::fnhint = pcVar10;\n          free(pcVar11);\n        }" if (parenthesized_expression "(command_word_completion_function::val == (char *)0x0)" ( (binary_expression "command_word_completion_function::val == (char *)0x0" identifier (ERROR "::val" : : identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar10 = (char *)0x0;\n          if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;\n          command_word_completion_function::searching_path = 1;\n          if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }\n          pcVar11 = pcVar10;\n          if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }\n          if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }\n          if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }\n          if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }\n          pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);\n          command_word_completion_function::filename_hint = pcVar10;\n          pcVar13 = strpbrk(pcVar10,"\"\'\\");\n          if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }\n          command_word_completion_function::fnhint = pcVar10;\n          free(pcVar11);\n        }" { (if_statement "if (command_word_completion_function::path == (char *)0x0) {\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }" if (parenthesized_expression "(command_word_completion_function::path == (char *)0x0)" ( (binary_expression "command_word_completion_function::path == (char *)0x0" identifier (ERROR "::path" : : identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar10 = (char *)0x0;\n            goto LAB_00181336;\n          }" { (expression_statement "pcVar10 = (char *)0x0;" (assignment_expression "pcVar10 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (expression_statement "pcVar10 = (char *)0x0;" (assignment_expression "pcVar10 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)) goto LAB_00181336;" if (parenthesized_expression "((command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0))" ( (binary_expression "(command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0') ||\n             (pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)" (parenthesized_expression "(command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0')" ( (binary_expression "command_word_completion_function::path[command_word_completion_function::path_index]\n               == '\0'" (subscript_expression "command_word_completion_function::path[command_word_completion_function::path_index]" identifier (ERROR "::path" : : identifier) [ identifier (ERROR "::path_index" : : identifier) ]) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0)" ( (comma_expression "pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index),\n             pcVar10 == (char *)0x0" (assignment_expression "pcVar10 = extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index)" identifier = (call_expression "extract_colon_unit(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index)" identifier (argument_list "(command_word_completion_function::path,\n                                           &command_word_completion_function::path_index)" ( identifier (ERROR "::path" : : identifier) , (pointer_expression "&command_word_completion_function" & identifier) (ERROR "::path_index" : : identifier) )))) , (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00181336;" goto statement_identifier ;)) (labeled_statement "command_word_completion_function::searching_path = 1;" statement_identifier : (ERROR ":" :) (expression_statement "searching_path = 1;" (assignment_expression "searching_path = 1" identifier = number_literal) ;)) (if_statement "if (*pcVar10 == '\0') {\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }" if (parenthesized_expression "(*pcVar10 == '\0')" ( (binary_expression "*pcVar10 == '\0'" (pointer_expression "*pcVar10" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            free(pcVar10);\n            pcVar10 = (char *)xmalloc(2);\n            pcVar10[0] = '.';\n            pcVar10[1] = '\0';\n          }" { (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "pcVar10 = (char *)xmalloc(2);" (assignment_expression "pcVar10 = (char *)xmalloc(2)" identifier = (cast_expression "(char *)xmalloc(2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(2)" identifier (argument_list "(2)" ( number_literal ))))) ;) (expression_statement "pcVar10[0] = '.';" (assignment_expression "pcVar10[0] = '.'" (subscript_expression "pcVar10[0]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "pcVar10[1] = '\0';" (assignment_expression "pcVar10[1] = '\0'" (subscript_expression "pcVar10[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" identifier = identifier) ;) (if_statement "if (*pcVar10 == '~') {\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }" if (parenthesized_expression "(*pcVar10 == '~')" ( (binary_expression "*pcVar10 == '~'" (pointer_expression "*pcVar10" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n            pcVar11 = bash_tilde_expand(pcVar10,0);\n            free(pcVar10);\n          }" { (expression_statement "pcVar11 = bash_tilde_expand(pcVar10,0);" (assignment_expression "pcVar11 = bash_tilde_expand(pcVar10,0)" identifier = (call_expression "bash_tilde_expand(pcVar10,0)" identifier (argument_list "(pcVar10,0)" ( identifier , number_literal )))) ;) (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) })) (if_statement "if ((*pcVar11 == '.') && (pcVar11[1] == '\0')) {\n            dot_in_path = 1;\n          }" if (parenthesized_expression "((*pcVar11 == '.') && (pcVar11[1] == '\0'))" ( (binary_expression "(*pcVar11 == '.') && (pcVar11[1] == '\0')" (parenthesized_expression "(*pcVar11 == '.')" ( (binary_expression "*pcVar11 == '.'" (pointer_expression "*pcVar11" * identifier) == (char_literal "'.'" ' character ')) )) && (parenthesized_expression "(pcVar11[1] == '\0')" ( (binary_expression "pcVar11[1] == '\0'" (subscript_expression "pcVar11[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            dot_in_path = 1;\n          }" { (expression_statement "dot_in_path = 1;" (assignment_expression "dot_in_path = 1" identifier = number_literal) ;) })) (if_statement "if ((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)) {\n            free(command_word_completion_function::fnhint);\n          }" if (parenthesized_expression "((command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint))" ( (binary_expression "(command_word_completion_function::fnhint != (char *)0x0) &&\n             (command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)" (parenthesized_expression "(command_word_completion_function::fnhint != (char *)0x0)" ( (binary_expression "command_word_completion_function::fnhint != (char *)0x0" identifier (ERROR "::fnhint" : : identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(command_word_completion_function::fnhint !=\n              command_word_completion_function::filename_hint)" ( (binary_expression "command_word_completion_function::fnhint !=\n              command_word_completion_function" identifier (ERROR "::fnhint" : : identifier) != identifier) (ERROR "::filename_hint" : : identifier) ))) )) (compound_statement "{\n            free(command_word_completion_function::fnhint);\n          }" { (labeled_statement "free(command_word_completion_function::fnhint);" statement_identifier (ERROR "(command_word_completion_function:" ( (type_descriptor "command_word_completion_function" type_identifier) :) : (expression_statement "fnhint);" identifier (ERROR ")" )) ;)) })) (if_statement "if (command_word_completion_function::filename_hint != (char *)0x0) {\n            free(command_word_completion_function::filename_hint);\n          }" if (parenthesized_expression "(command_word_completion_function::filename_hint != (char *)0x0)" ( (binary_expression "command_word_completion_function::filename_hint != (char *)0x0" identifier (ERROR "::filename_hint" : : identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free(command_word_completion_function::filename_hint);\n          }" { (labeled_statement "free(command_word_completion_function::filename_hint);" statement_identifier (ERROR "(command_word_completion_function:" ( (type_descriptor "command_word_completion_function" type_identifier) :) : (expression_statement "filename_hint);" identifier (ERROR ")" )) ;)) })) (expression_statement "pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0);" (assignment_expression "pcVar10 = sh_makepath(pcVar11,command_word_completion_function::hint,0)" identifier = (call_expression "sh_makepath(pcVar11,command_word_completion_function::hint,0)" identifier (argument_list "(pcVar11,command_word_completion_function::hint,0)" ( identifier , identifier (ERROR "::hint" : : identifier) , number_literal )))) ;) (labeled_statement "command_word_completion_function::filename_hint = pcVar10;" statement_identifier : (ERROR ":" :) (expression_statement "filename_hint = pcVar10;" (assignment_expression "filename_hint = pcVar10" identifier = identifier) ;)) (expression_statement "pcVar13 = strpbrk(pcVar10,"\"\'\\");" (assignment_expression "pcVar13 = strpbrk(pcVar10,"\"\'\\")" identifier = (call_expression "strpbrk(pcVar10,"\"\'\\")" identifier (argument_list "(pcVar10,"\"\'\\")" ( identifier , (string_literal ""\"\'\\"" " escape_sequence escape_sequence escape_sequence ") )))) ;) (if_statement "if (pcVar13 != (char *)0x0) {\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }" if (parenthesized_expression "(pcVar13 != (char *)0x0)" ( (binary_expression "pcVar13 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);\n          }" { (expression_statement "pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0);" (assignment_expression "pcVar10 = sh_backslash_quote(pcVar10,filename_bstab,0)" identifier = (call_expression "sh_backslash_quote(pcVar10,filename_bstab,0)" identifier (argument_list "(pcVar10,filename_bstab,0)" ( identifier , identifier , number_literal )))) ;) })) (labeled_statement "command_word_completion_function::fnhint = pcVar10;" statement_identifier : (ERROR ":" :) (expression_statement "fnhint = pcVar10;" (assignment_expression "fnhint = pcVar10" identifier = identifier) ;)) (expression_statement "free(pcVar11);" (call_expression "free(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;) })) (goto_statement "goto LAB_00180a7a;" goto statement_identifier ;) })) (expression_statement "pcVar10 = (char *)0x0;" (assignment_expression "pcVar10 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (labeled_statement "command_word_completion_function::mapping_over = 5;" statement_identifier : (ERROR ":" :) (expression_statement "mapping_over = 5;" (assignment_expression "mapping_over = 5" identifier = number_literal) ;)) (labeled_statement "LAB_00180787:\n    glob_ignore_case = command_word_completion_function::igncase;" statement_identifier : (expression_statement "glob_ignore_case = command_word_completion_function::igncase;" (assignment_expression "glob_ignore_case = command_word_completion_function" identifier = identifier) (ERROR "::igncase" : : identifier) ;)) (labeled_statement "command_word_completion_function::glob_matches =\n         shell_glob_filename(command_word_completion_function::hint);" statement_identifier : (ERROR ":" :) (expression_statement "glob_matches =\n         shell_glob_filename(command_word_completion_function::hint);" (assignment_expression "glob_matches =\n         shell_glob_filename(command_word_completion_function::hint)" identifier = (call_expression "shell_glob_filename(command_word_completion_function::hint)" identifier (argument_list "(command_word_completion_function::hint)" ( identifier (ERROR "::hint" : : identifier) )))) ;)) (expression_statement "glob_ignore_case = L'\0';" (assignment_expression "glob_ignore_case = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) (if_statement "if ((command_word_completion_function::glob_matches == &glob_error_return) ||\n       (command_word_completion_function::glob_matches == (char **)0x0)) {\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }" if (parenthesized_expression "((command_word_completion_function::glob_matches == &glob_error_return) ||\n       (command_word_completion_function::glob_matches == (char **)0x0))" ( (binary_expression "(command_word_completion_function::glob_matches == &glob_error_return) ||\n       (command_word_completion_function::glob_matches == (char **)0x0)" (parenthesized_expression "(command_word_completion_function::glob_matches == &glob_error_return)" ( (binary_expression "command_word_completion_function::glob_matches == &glob_error_return" identifier (ERROR "::glob_matches" : : identifier) == (pointer_expression "&glob_error_return" & identifier)) )) || (parenthesized_expression "(command_word_completion_function::glob_matches == (char **)0x0)" ( (binary_expression "command_word_completion_function::glob_matches == (char **)0x0" identifier (ERROR "::glob_matches" : : identifier) == (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ))) )) (compound_statement "{\n      command_word_completion_function::glob_matches = (char **)0x0;\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }" { (labeled_statement "command_word_completion_function::glob_matches = (char **)0x0;" statement_identifier : (ERROR ":" :) (expression_statement "glob_matches = (char **)0x0;" (assignment_expression "glob_matches = (char **)0x0" identifier = (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;)) (expression_statement "pcVar10 = (char *)0x0;" (assignment_expression "pcVar10 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (labeled_statement "command_word_completion_function::local_index = 0;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = 0;" (assignment_expression "local_index = 0" identifier = number_literal) ;)) (if_statement "if ((command_word_completion_function::glob_matches[1] != (char *)0x0) &&\n       (rl_completion_type == L'\t')) {\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }" if (parenthesized_expression "((command_word_completion_function::glob_matches[1] != (char *)0x0) &&\n       (rl_completion_type == L'\t'))" ( (binary_expression "(command_word_completion_function::glob_matches[1] != (char *)0x0) &&\n       (rl_completion_type == L'\t')" (parenthesized_expression "(command_word_completion_function::glob_matches[1] != (char *)0x0)" ( (binary_expression "command_word_completion_function::glob_matches[1] != (char *)0x0" (subscript_expression "command_word_completion_function::glob_matches[1]" identifier (ERROR "::glob_matches" : : identifier) [ number_literal ]) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(rl_completion_type == L'\t')" ( (binary_expression "rl_completion_type == L'\t'" identifier == (char_literal "L'\t'" L' escape_sequence ')) ))) )) (compound_statement "{\n      pcVar10 = (char *)0x0;\n      goto LAB_00181336;\n    }" { (expression_statement "pcVar10 = (char *)0x0;" (assignment_expression "pcVar10 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00180925:\n    pcVar10 = command_word_completion_function::hint;\n    iVar7 = command_word_completion_function::igncase;\n    iVar6 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_00180bdc:\n      pcVar10 = command_word_completion_function::hint;\n      iVar6 = command_word_completion_function::hint_len;\n      sVar12 = (size_t)command_word_completion_function::hint_len;\n      do {\n        pcVar11 = word_token_alist[command_word_completion_function::local_index].word;\n        if (pcVar11 == (char *)0x0) {\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }\n        command_word_completion_function::local_index =\n             command_word_completion_function::local_index + 1;\n      } while ((iVar6 != 0) &&\n              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))));\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = pcVar11;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,pcVar11);\n      goto LAB_00181336;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::igncase;\n        iVar6 = command_word_completion_function::hint_len;\n        ppSVar5 = command_word_completion_function::varlist;\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::hint_len;\n        iVar6 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }\n        command_word_completion_function::local_index = 0;\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_00180e1e;\n      command_word_completion_function::hint_is_dir = 0;\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      goto LAB_00181336;\n    }\n    if (state == 0) goto LAB_00180787;\n  }" else (compound_statement "{\nLAB_00180925:\n    pcVar10 = command_word_completion_function::hint;\n    iVar7 = command_word_completion_function::igncase;\n    iVar6 = command_word_completion_function::hint_len;\n    ppaVar4 = command_word_completion_function::alias_list;\n    if (command_word_completion_function::mapping_over == 1) {\nLAB_00180bdc:\n      pcVar10 = command_word_completion_function::hint;\n      iVar6 = command_word_completion_function::hint_len;\n      sVar12 = (size_t)command_word_completion_function::hint_len;\n      do {\n        pcVar11 = word_token_alist[command_word_completion_function::local_index].word;\n        if (pcVar11 == (char *)0x0) {\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }\n        command_word_completion_function::local_index =\n             command_word_completion_function::local_index + 1;\n      } while ((iVar6 != 0) &&\n              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))));\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = pcVar11;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,pcVar11);\n      goto LAB_00181336;\n    }\n    if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::igncase;\n        iVar6 = command_word_completion_function::hint_len;\n        ppSVar5 = command_word_completion_function::varlist;\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::hint_len;\n        iVar6 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }\n        command_word_completion_function::local_index = 0;\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n      }\n    }\n    if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_00180e1e;\n      command_word_completion_function::hint_is_dir = 0;\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      goto LAB_00181336;\n    }\n    if (state == 0) goto LAB_00180787;\n  }" { (labeled_statement "LAB_00180925:\n    pcVar10 = command_word_completion_function::hint;" statement_identifier : (expression_statement "pcVar10 = command_word_completion_function::hint;" (assignment_expression "pcVar10 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;)) (expression_statement "iVar7 = command_word_completion_function::igncase;" (assignment_expression "iVar7 = command_word_completion_function" identifier = identifier) (ERROR "::igncase" : : identifier) ;) (expression_statement "iVar6 = command_word_completion_function::hint_len;" (assignment_expression "iVar6 = command_word_completion_function" identifier = identifier) (ERROR "::hint_len" : : identifier) ;) (expression_statement "ppaVar4 = command_word_completion_function::alias_list;" (assignment_expression "ppaVar4 = command_word_completion_function" identifier = identifier) (ERROR "::alias_list" : : identifier) ;) (if_statement "if (command_word_completion_function::mapping_over == 1) {\nLAB_00180bdc:\n      pcVar10 = command_word_completion_function::hint;\n      iVar6 = command_word_completion_function::hint_len;\n      sVar12 = (size_t)command_word_completion_function::hint_len;\n      do {\n        pcVar11 = word_token_alist[command_word_completion_function::local_index].word;\n        if (pcVar11 == (char *)0x0) {\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }\n        command_word_completion_function::local_index =\n             command_word_completion_function::local_index + 1;\n      } while ((iVar6 != 0) &&\n              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))));\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = pcVar11;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,pcVar11);\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(command_word_completion_function::mapping_over == 1)" ( (binary_expression "command_word_completion_function::mapping_over == 1" identifier (ERROR "::mapping_over" : : identifier) == number_literal) )) (compound_statement "{\nLAB_00180bdc:\n      pcVar10 = command_word_completion_function::hint;\n      iVar6 = command_word_completion_function::hint_len;\n      sVar12 = (size_t)command_word_completion_function::hint_len;\n      do {\n        pcVar11 = word_token_alist[command_word_completion_function::local_index].word;\n        if (pcVar11 == (char *)0x0) {\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }\n        command_word_completion_function::local_index =\n             command_word_completion_function::local_index + 1;\n      } while ((iVar6 != 0) &&\n              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))));\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = pcVar11;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,pcVar11);\n      goto LAB_00181336;\n    }" { (labeled_statement "LAB_00180bdc:\n      pcVar10 = command_word_completion_function::hint;" statement_identifier : (expression_statement "pcVar10 = command_word_completion_function::hint;" (assignment_expression "pcVar10 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;)) (expression_statement "iVar6 = command_word_completion_function::hint_len;" (assignment_expression "iVar6 = command_word_completion_function" identifier = identifier) (ERROR "::hint_len" : : identifier) ;) (expression_statement "sVar12 = (size_t)command_word_completion_function::hint_len;" (assignment_expression "sVar12 = (size_t)command_word_completion_function" identifier = (cast_expression "(size_t)command_word_completion_function" ( (type_descriptor "size_t" primitive_type) ) identifier)) (ERROR "::hint_len" : : identifier) ;) (do_statement "do {\n        pcVar11 = word_token_alist[command_word_completion_function::local_index].word;\n        if (pcVar11 == (char *)0x0) {\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }\n        command_word_completion_function::local_index =\n             command_word_completion_function::local_index + 1;\n      } while ((iVar6 != 0) &&\n              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))));" do (compound_statement "{\n        pcVar11 = word_token_alist[command_word_completion_function::local_index].word;\n        if (pcVar11 == (char *)0x0) {\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }\n        command_word_completion_function::local_index =\n             command_word_completion_function::local_index + 1;\n      }" { (expression_statement "pcVar11 = word_token_alist[command_word_completion_function::local_index].word;" (assignment_expression "pcVar11 = word_token_alist[command_word_completion_function::local_index].word" identifier = (field_expression "word_token_alist[command_word_completion_function::local_index].word" (subscript_expression "word_token_alist[command_word_completion_function::local_index]" identifier [ identifier (ERROR "::local_index" : : identifier) ]) . field_identifier)) ;) (if_statement "if (pcVar11 == (char *)0x0) {\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }" if (parenthesized_expression "(pcVar11 == (char *)0x0)" ( (binary_expression "pcVar11 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          command_word_completion_function::local_index = 0;\n          command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;\n          goto LAB_00180c72;\n        }" { (labeled_statement "command_word_completion_function::local_index = 0;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = 0;" (assignment_expression "local_index = 0" identifier = number_literal) ;)) (labeled_statement "command_word_completion_function::mapping_over =\n               command_word_completion_function::mapping_over + 1;" statement_identifier (ERROR "::mapping_over =\n               command_word_completion_function:" : : (assignment_expression "mapping_over =\n               command_word_completion_function" identifier = identifier) :) : (expression_statement "mapping_over + 1;" (binary_expression "mapping_over + 1" identifier + number_literal) ;)) (goto_statement "goto LAB_00180c72;" goto statement_identifier ;) })) (labeled_statement "command_word_completion_function::local_index =\n             command_word_completion_function::local_index + 1;" statement_identifier (ERROR "::local_index =\n             command_word_completion_function:" : : (assignment_expression "local_index =\n             command_word_completion_function" identifier = identifier) :) : (expression_statement "local_index + 1;" (binary_expression "local_index + 1" identifier + number_literal) ;)) }) while (parenthesized_expression "((iVar6 != 0) &&\n              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))))" ( (binary_expression "(iVar6 != 0) &&\n              ((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0)))" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0)))" ( (parenthesized_expression "(*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0))" ( (binary_expression "*pcVar11 != *pcVar10 || (iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0)" (binary_expression "*pcVar11 != *pcVar10" (pointer_expression "*pcVar11" * identifier) != (pointer_expression "*pcVar10" * identifier)) || (parenthesized_expression "(iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0)" ( (comma_expression "iVar7 = strncmp(pcVar11,pcVar10,sVar12), iVar7 != 0" (assignment_expression "iVar7 = strncmp(pcVar11,pcVar10,sVar12)" identifier = (call_expression "strncmp(pcVar11,pcVar10,sVar12)" identifier (argument_list "(pcVar11,pcVar10,sVar12)" ( identifier , identifier , identifier )))) , (binary_expression "iVar7 != 0" identifier != number_literal)) ))) )) ))) )) ;) (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar10 = pcVar11;" (assignment_expression "pcVar10 = pcVar11" identifier = identifier) ;) (do_statement "do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar10 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar10 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (expression_statement "pcVar10 = strcpy(pcVar10,pcVar11);" (assignment_expression "pcVar10 = strcpy(pcVar10,pcVar11)" identifier = (call_expression "strcpy(pcVar10,pcVar11)" identifier (argument_list "(pcVar10,pcVar11)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (if_statement "if (command_word_completion_function::mapping_over < 2) {\n      if (command_word_completion_function::mapping_over == 0) {\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::igncase;\n        iVar6 = command_word_completion_function::hint_len;\n        ppSVar5 = command_word_completion_function::varlist;\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::hint_len;\n        iVar6 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }\n        command_word_completion_function::local_index = 0;\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n      }\n    }" if (parenthesized_expression "(command_word_completion_function::mapping_over < 2)" ( (binary_expression "command_word_completion_function::mapping_over < 2" identifier (ERROR "::mapping_over" : : identifier) < number_literal) )) (compound_statement "{\n      if (command_word_completion_function::mapping_over == 0) {\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n    }" { (if_statement "if (command_word_completion_function::mapping_over == 0) {\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }" if (parenthesized_expression "(command_word_completion_function::mapping_over == 0)" ( (binary_expression "command_word_completion_function::mapping_over == 0" identifier (ERROR "::mapping_over" : : identifier) == number_literal) )) (compound_statement "{\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }" { (expression_statement "sVar12 = (size_t)command_word_completion_function::hint_len;" (assignment_expression "sVar12 = (size_t)command_word_completion_function" identifier = (cast_expression "(size_t)command_word_completion_function" ( (type_descriptor "size_t" primitive_type) ) identifier)) (ERROR "::hint_len" : : identifier) ;) (do_statement "do {\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));" do (compound_statement "{\n          while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }\n        }" { (while_statement "while( true ) {\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = paVar2->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }\n          }" { (if_statement "if ((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }" if (parenthesized_expression "((ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0))" ( (binary_expression "(ppaVar4 == (alias_t **)0x0) ||\n               (paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)" (parenthesized_expression "(ppaVar4 == (alias_t **)0x0)" ( (binary_expression "ppaVar4 == (alias_t **)0x0" identifier == (cast_expression "(alias_t **)0x0" ( (type_descriptor "alias_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) || (parenthesized_expression "(paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0)" ( (comma_expression "paVar2 = ppaVar4[command_word_completion_function::local_index],\n               paVar2 == (alias_t *)0x0" (assignment_expression "paVar2 = ppaVar4[command_word_completion_function::local_index]" identifier = (subscript_expression "ppaVar4[command_word_completion_function::local_index]" identifier [ identifier (ERROR "::local_index" : : identifier) ])) , (binary_expression "paVar2 == (alias_t *)0x0" identifier == (cast_expression "(alias_t *)0x0" ( (type_descriptor "alias_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over = 1;\n              goto LAB_00180bdc;\n            }" { (labeled_statement "command_word_completion_function::local_index = 0;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = 0;" (assignment_expression "local_index = 0" identifier = number_literal) ;)) (labeled_statement "command_word_completion_function::mapping_over = 1;" statement_identifier : (ERROR ":" :) (expression_statement "mapping_over = 1;" (assignment_expression "mapping_over = 1" identifier = number_literal) ;)) (goto_statement "goto LAB_00180bdc;" goto statement_identifier ;) })) (labeled_statement "command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;" statement_identifier (ERROR "::local_index =\n                 command_word_completion_function:" : : (assignment_expression "local_index =\n                 command_word_completion_function" identifier = identifier) :) : (expression_statement "local_index + 1;" (binary_expression "local_index + 1" identifier + number_literal) ;)) (expression_statement "pcVar11 = paVar2->name;" (assignment_expression "pcVar11 = paVar2->name" identifier = (field_expression "paVar2->name" identifier -> field_identifier)) ;) (if_statement "if (iVar7 == 0) break;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);" (assignment_expression "iVar8 = strncasecmp(pcVar11,pcVar10,sVar12)" identifier = (call_expression "strncasecmp(pcVar11,pcVar10,sVar12)" identifier (argument_list "(pcVar11,pcVar10,sVar12)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180ba8;\n            }" { (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar10 = pcVar11;" (assignment_expression "pcVar10 = pcVar11" identifier = identifier) ;) (goto_statement "goto code_r0x00180ba8;" goto statement_identifier ;) })) })) }) while (parenthesized_expression "((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))))" ( (binary_expression "(iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0)))" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0)))" ( (parenthesized_expression "(*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))" ( (binary_expression "*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0)" (binary_expression "*pcVar11 != *pcVar10" (pointer_expression "*pcVar11" * identifier) != (pointer_expression "*pcVar10" * identifier)) || (parenthesized_expression "(iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0)" ( (comma_expression "iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0" (assignment_expression "iVar8 = strncmp(pcVar11,pcVar10,sVar12)" identifier = (call_expression "strncmp(pcVar11,pcVar10,sVar12)" identifier (argument_list "(pcVar11,pcVar10,sVar12)" ( identifier , identifier , identifier )))) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) ))) )) ;) (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar10 = pcVar11;" (assignment_expression "pcVar10 = pcVar11" identifier = identifier) ;) (do_statement "do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');" do (compound_statement "{\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar10 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar10 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (expression_statement "pcVar10 = strcpy(pcVar10,pcVar11);" (assignment_expression "pcVar10 = strcpy(pcVar10,pcVar11)" identifier = (call_expression "strcpy(pcVar10,pcVar11)" identifier (argument_list "(pcVar10,pcVar11)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::igncase;\n        iVar6 = command_word_completion_function::hint_len;\n        ppSVar5 = command_word_completion_function::varlist;\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::hint_len;\n        iVar6 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }\n        command_word_completion_function::local_index = 0;\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n      }\n    }" else (compound_statement "{\n      if (command_word_completion_function::mapping_over == 2) {\nLAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::igncase;\n        iVar6 = command_word_completion_function::hint_len;\n        ppSVar5 = command_word_completion_function::varlist;\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }\n      if (command_word_completion_function::mapping_over == 3) {\nLAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::hint_len;\n        iVar6 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }\n        command_word_completion_function::local_index = 0;\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n      }\n    }" { (if_statement "if (command_word_completion_function::mapping_over == 2) {\nLAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::igncase;\n        iVar6 = command_word_completion_function::hint_len;\n        ppSVar5 = command_word_completion_function::varlist;\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }" if (parenthesized_expression "(command_word_completion_function::mapping_over == 2)" ( (binary_expression "command_word_completion_function::mapping_over == 2" identifier (ERROR "::mapping_over" : : identifier) == number_literal) )) (compound_statement "{\nLAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::igncase;\n        iVar6 = command_word_completion_function::hint_len;\n        ppSVar5 = command_word_completion_function::varlist;\n        sVar12 = (size_t)command_word_completion_function::hint_len;\n        do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));\n        uVar14 = 0xffffffffffffffff;\n        pcVar10 = pcVar11;\n        do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar10 = (char *)xmalloc(~uVar14);\n        pcVar10 = strcpy(pcVar10,pcVar11);\n        goto LAB_00181336;\n      }" { (labeled_statement "LAB_00180c72:\n        pcVar10 = command_word_completion_function::hint;" statement_identifier : (expression_statement "pcVar10 = command_word_completion_function::hint;" (assignment_expression "pcVar10 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;)) (expression_statement "iVar7 = command_word_completion_function::igncase;" (assignment_expression "iVar7 = command_word_completion_function" identifier = identifier) (ERROR "::igncase" : : identifier) ;) (expression_statement "iVar6 = command_word_completion_function::hint_len;" (assignment_expression "iVar6 = command_word_completion_function" identifier = identifier) (ERROR "::hint_len" : : identifier) ;) (expression_statement "ppSVar5 = command_word_completion_function::varlist;" (assignment_expression "ppSVar5 = command_word_completion_function" identifier = identifier) (ERROR "::varlist" : : identifier) ;) (expression_statement "sVar12 = (size_t)command_word_completion_function::hint_len;" (assignment_expression "sVar12 = (size_t)command_word_completion_function" identifier = (cast_expression "(size_t)command_word_completion_function" ( (type_descriptor "size_t" primitive_type) ) identifier)) (ERROR "::hint_len" : : identifier) ;) (do_statement "do {\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))));" do (compound_statement "{\n          while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }\n        }" { (while_statement "while( true ) {\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }\n            command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;\n            pcVar11 = pSVar3->name;\n            if (iVar7 == 0) break;\n            iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);\n            if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }\n          }" { (if_statement "if ((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)) {\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }" if (parenthesized_expression "((ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0))" ( (binary_expression "(ppSVar5 == (SHELL_VAR **)0x0) ||\n               (pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)" (parenthesized_expression "(ppSVar5 == (SHELL_VAR **)0x0)" ( (binary_expression "ppSVar5 == (SHELL_VAR **)0x0" identifier == (cast_expression "(SHELL_VAR **)0x0" ( (type_descriptor "SHELL_VAR **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) || (parenthesized_expression "(pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0)" ( (comma_expression "pSVar3 = ppSVar5[command_word_completion_function::local_index],\n               pSVar3 == (SHELL_VAR *)0x0" (assignment_expression "pSVar3 = ppSVar5[command_word_completion_function::local_index]" identifier = (subscript_expression "ppSVar5[command_word_completion_function::local_index]" identifier [ identifier (ERROR "::local_index" : : identifier) ])) , (binary_expression "pSVar3 == (SHELL_VAR *)0x0" identifier == (cast_expression "(SHELL_VAR *)0x0" ( (type_descriptor "SHELL_VAR *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              command_word_completion_function::local_index = 0;\n              command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;\n              goto LAB_0018094c;\n            }" { (labeled_statement "command_word_completion_function::local_index = 0;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = 0;" (assignment_expression "local_index = 0" identifier = number_literal) ;)) (labeled_statement "command_word_completion_function::mapping_over =\n                   command_word_completion_function::mapping_over + 1;" statement_identifier (ERROR "::mapping_over =\n                   command_word_completion_function:" : : (assignment_expression "mapping_over =\n                   command_word_completion_function" identifier = identifier) :) : (expression_statement "mapping_over + 1;" (binary_expression "mapping_over + 1" identifier + number_literal) ;)) (goto_statement "goto LAB_0018094c;" goto statement_identifier ;) })) (labeled_statement "command_word_completion_function::local_index =\n                 command_word_completion_function::local_index + 1;" statement_identifier (ERROR "::local_index =\n                 command_word_completion_function:" : : (assignment_expression "local_index =\n                 command_word_completion_function" identifier = identifier) :) : (expression_statement "local_index + 1;" (binary_expression "local_index + 1" identifier + number_literal) ;)) (expression_statement "pcVar11 = pSVar3->name;" (assignment_expression "pcVar11 = pSVar3->name" identifier = (field_expression "pSVar3->name" identifier -> field_identifier)) ;) (if_statement "if (iVar7 == 0) break;" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = strncasecmp(pcVar11,pcVar10,sVar12);" (assignment_expression "iVar8 = strncasecmp(pcVar11,pcVar10,sVar12)" identifier = (call_expression "strncasecmp(pcVar11,pcVar10,sVar12)" identifier (argument_list "(pcVar11,pcVar10,sVar12)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar8 == 0) {\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar14 = 0xffffffffffffffff;\n              pcVar10 = pcVar11;\n              goto code_r0x00180d3c;\n            }" { (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar10 = pcVar11;" (assignment_expression "pcVar10 = pcVar11" identifier = identifier) ;) (goto_statement "goto code_r0x00180d3c;" goto statement_identifier ;) })) })) }) while (parenthesized_expression "((iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))))" ( (binary_expression "(iVar6 != 0) &&\n                ((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0)))" (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0)))" ( (parenthesized_expression "(*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0))" ( (binary_expression "*pcVar11 != *pcVar10 || (iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0)" (binary_expression "*pcVar11 != *pcVar10" (pointer_expression "*pcVar11" * identifier) != (pointer_expression "*pcVar10" * identifier)) || (parenthesized_expression "(iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0)" ( (comma_expression "iVar8 = strncmp(pcVar11,pcVar10,sVar12), iVar8 != 0" (assignment_expression "iVar8 = strncmp(pcVar11,pcVar10,sVar12)" identifier = (call_expression "strncmp(pcVar11,pcVar10,sVar12)" identifier (argument_list "(pcVar11,pcVar10,sVar12)" ( identifier , identifier , identifier )))) , (binary_expression "iVar8 != 0" identifier != number_literal)) ))) )) ))) )) ;) (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar10 = pcVar11;" (assignment_expression "pcVar10 = pcVar11" identifier = identifier) ;) (do_statement "do {\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        } while (cVar1 != '\0');" do (compound_statement "{\n          if (uVar14 == 0) break;\n          uVar14 = uVar14 - 1;\n          cVar1 = *pcVar10;\n          pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n        }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar10 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar10 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (expression_statement "pcVar10 = strcpy(pcVar10,pcVar11);" (assignment_expression "pcVar10 = strcpy(pcVar10,pcVar11)" identifier = (call_expression "strcpy(pcVar10,pcVar11)" identifier (argument_list "(pcVar10,pcVar11)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (if_statement "if (command_word_completion_function::mapping_over == 3) {\nLAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::hint_len;\n        iVar6 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }\n        command_word_completion_function::local_index = 0;\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n      }" if (parenthesized_expression "(command_word_completion_function::mapping_over == 3)" ( (binary_expression "command_word_completion_function::mapping_over == 3" identifier (ERROR "::mapping_over" : : identifier) == number_literal) )) (compound_statement "{\nLAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;\n        iVar7 = command_word_completion_function::hint_len;\n        iVar6 = num_shell_builtins;\n        if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }\n        command_word_completion_function::local_index = 0;\n        command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;\n      }" { (labeled_statement "LAB_0018094c:\n        pcVar10 = command_word_completion_function::hint;" statement_identifier : (expression_statement "pcVar10 = command_word_completion_function::hint;" (assignment_expression "pcVar10 = command_word_completion_function" identifier = identifier) (ERROR "::hint" : : identifier) ;)) (expression_statement "iVar7 = command_word_completion_function::hint_len;" (assignment_expression "iVar7 = command_word_completion_function" identifier = identifier) (ERROR "::hint_len" : : identifier) ;) (expression_statement "iVar6 = num_shell_builtins;" (assignment_expression "iVar6 = num_shell_builtins" identifier = identifier) ;) (if_statement "if (command_word_completion_function::local_index < num_shell_builtins) {\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }" if (parenthesized_expression "(command_word_completion_function::local_index < num_shell_builtins)" ( (binary_expression "command_word_completion_function::local_index < num_shell_builtins" identifier (ERROR "::local_index" : : identifier) < identifier) )) (compound_statement "{\n          sVar12 = (size_t)command_word_completion_function::hint_len;\n          pbVar17 = shell_builtins + command_word_completion_function::local_index;\n          do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);\n        }" { (expression_statement "sVar12 = (size_t)command_word_completion_function::hint_len;" (assignment_expression "sVar12 = (size_t)command_word_completion_function" identifier = (cast_expression "(size_t)command_word_completion_function" ( (type_descriptor "size_t" primitive_type) ) identifier)) (ERROR "::hint_len" : : identifier) ;) (expression_statement "pbVar17 = shell_builtins + command_word_completion_function::local_index;" (assignment_expression "pbVar17 = shell_builtins + command_word_completion_function" identifier = (binary_expression "shell_builtins + command_word_completion_function" identifier + identifier)) (ERROR "::local_index" : : identifier) ;) (do_statement "do {\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          } while (command_word_completion_function::local_index != iVar6);" do (compound_statement "{\n            iVar8 = command_word_completion_function::local_index;\n            if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }\n            command_word_completion_function::local_index = iVar8 + 1;\n            pbVar17 = pbVar17 + 1;\n          }" { (expression_statement "iVar8 = command_word_completion_function::local_index;" (assignment_expression "iVar8 = command_word_completion_function" identifier = identifier) (ERROR "::local_index" : : identifier) ;) (if_statement "if (((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))) {\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }" if (parenthesized_expression "(((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0))))))" ( (binary_expression "((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)) &&\n               ((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))" (parenthesized_expression "((pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0))" ( (binary_expression "(pbVar17->function != (sh_builtin_func_t *)0x0) && ((pbVar17->flags & 1) != 0)" (parenthesized_expression "(pbVar17->function != (sh_builtin_func_t *)0x0)" ( (binary_expression "pbVar17->function != (sh_builtin_func_t *)0x0" (field_expression "pbVar17->function" identifier -> field_identifier) != (cast_expression "(sh_builtin_func_t *)0x0" ( (type_descriptor "sh_builtin_func_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((pbVar17->flags & 1) != 0)" ( (binary_expression "(pbVar17->flags & 1) != 0" (parenthesized_expression "(pbVar17->flags & 1)" ( (binary_expression "pbVar17->flags & 1" (field_expression "pbVar17->flags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))))" ( (parenthesized_expression "(iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0))))" ( (binary_expression "iVar7 == 0 ||\n                ((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))" (binary_expression "iVar7 == 0" identifier == number_literal) || (parenthesized_expression "((*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)))" ( (parenthesized_expression "(*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0))" ( (binary_expression "*pbVar17->name == *pcVar10 &&\n                 (iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)" (binary_expression "*pbVar17->name == *pcVar10" (pointer_expression "*pbVar17->name" * (field_expression "pbVar17->name" identifier -> field_identifier)) == (pointer_expression "*pcVar10" * identifier)) && (parenthesized_expression "(iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0)" ( (comma_expression "iVar9 = strncmp(pbVar17->name,pcVar10,sVar12), iVar9 == 0" (assignment_expression "iVar9 = strncmp(pbVar17->name,pcVar10,sVar12)" identifier = (call_expression "strncmp(pbVar17->name,pcVar10,sVar12)" identifier (argument_list "(pbVar17->name,pcVar10,sVar12)" ( (field_expression "pbVar17->name" identifier -> field_identifier) , identifier , identifier )))) , (binary_expression "iVar9 == 0" identifier == number_literal)) ))) )) ))) )) ))) )) (compound_statement "{\n              command_word_completion_function::local_index = iVar8 + 1;\n              pcVar10 = pbVar17->name;\n              uVar14 = 0xffffffffffffffff;\n              pcVar11 = pcVar10;\n              goto code_r0x00180dd3;\n            }" { (labeled_statement "command_word_completion_function::local_index = iVar8 + 1;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = iVar8 + 1;" (assignment_expression "local_index = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;)) (expression_statement "pcVar10 = pbVar17->name;" (assignment_expression "pcVar10 = pbVar17->name" identifier = (field_expression "pbVar17->name" identifier -> field_identifier)) ;) (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar11 = pcVar10;" (assignment_expression "pcVar11 = pcVar10" identifier = identifier) ;) (goto_statement "goto code_r0x00180dd3;" goto statement_identifier ;) })) (labeled_statement "command_word_completion_function::local_index = iVar8 + 1;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = iVar8 + 1;" (assignment_expression "local_index = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;)) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(command_word_completion_function::local_index != iVar6)" ( (binary_expression "command_word_completion_function::local_index != iVar6" identifier (ERROR "::local_index" : : identifier) != identifier) )) ;) })) (labeled_statement "command_word_completion_function::local_index = 0;" statement_identifier : (ERROR ":" :) (expression_statement "local_index = 0;" (assignment_expression "local_index = 0" identifier = number_literal) ;)) (labeled_statement "command_word_completion_function::mapping_over =\n             command_word_completion_function::mapping_over + 1;" statement_identifier (ERROR "::mapping_over =\n             command_word_completion_function:" : : (assignment_expression "mapping_over =\n             command_word_completion_function" identifier = identifier) :) : (expression_statement "mapping_over + 1;" (binary_expression "mapping_over + 1" identifier + number_literal) ;)) })) }))) (if_statement "if (command_word_completion_function::globpat == 0) {\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_00180e1e;\n      command_word_completion_function::hint_is_dir = 0;\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(command_word_completion_function::globpat == 0)" ( (binary_expression "command_word_completion_function::globpat == 0" identifier (ERROR "::globpat" : : identifier) == number_literal) )) (compound_statement "{\n      if (command_word_completion_function::hint_is_dir == 0) goto LAB_00180e1e;\n      command_word_completion_function::hint_is_dir = 0;\n      uVar14 = 0xffffffffffffffff;\n      pcVar10 = hint_text;\n      do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar10 = (char *)xmalloc(~uVar14);\n      pcVar10 = strcpy(pcVar10,hint_text);\n      goto LAB_00181336;\n    }" { (if_statement "if (command_word_completion_function::hint_is_dir == 0) goto LAB_00180e1e;" if (parenthesized_expression "(command_word_completion_function::hint_is_dir == 0)" ( (binary_expression "command_word_completion_function::hint_is_dir == 0" identifier (ERROR "::hint_is_dir" : : identifier) == number_literal) )) (goto_statement "goto LAB_00180e1e;" goto statement_identifier ;)) (labeled_statement "command_word_completion_function::hint_is_dir = 0;" statement_identifier : (ERROR ":" :) (expression_statement "hint_is_dir = 0;" (assignment_expression "hint_is_dir = 0" identifier = number_literal) ;)) (expression_statement "uVar14 = 0xffffffffffffffff;" (assignment_expression "uVar14 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar10 = hint_text;" (assignment_expression "pcVar10 = hint_text" identifier = identifier) ;) (do_statement "do {\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar14 == 0) break;\n        uVar14 = uVar14 - 1;\n        cVar1 = *pcVar10;\n        pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n      }" { (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar10 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar10 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (expression_statement "pcVar10 = strcpy(pcVar10,hint_text);" (assignment_expression "pcVar10 = strcpy(pcVar10,hint_text)" identifier = (call_expression "strcpy(pcVar10,hint_text)" identifier (argument_list "(pcVar10,hint_text)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (if_statement "if (state == 0) goto LAB_00180787;" if (parenthesized_expression "(state == 0)" ( (binary_expression "state == 0" identifier == number_literal) )) (goto_statement "goto LAB_00180787;" goto statement_identifier ;)) }))) (labeled_statement "command_word_completion_function::val =\n       command_word_completion_function::glob_matches[command_word_completion_function::local_index]\n  ;" statement_identifier (ERROR "::val =\n       command_word_completion_function::glob_matches[command_word_completion_function:" : : (assignment_expression "val =\n       command_word_completion_function" identifier = identifier) : : identifier [ identifier :) : (expression_statement "local_index]\n  ;" identifier (ERROR "]" ]) ;)) (while_statement "while (command_word_completion_function::local_index =\n              command_word_completion_function::local_index + 1,\n        command_word_completion_function::val != (char *)0x0) {\n    iVar6 = executable_or_directory(command_word_completion_function::val);\n    if (iVar6 != 0) {\n      pcVar10 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part);\n        free(command_word_completion_function::val);\n        command_word_completion_function::val = pcVar10;\n      }\n      goto LAB_00181336;\n    }\n    free(command_word_completion_function::val);\n    command_word_completion_function::val =\n         command_word_completion_function::glob_matches\n         [command_word_completion_function::local_index];\n  }" while (parenthesized_expression "(command_word_completion_function::local_index =\n              command_word_completion_function::local_index + 1,\n        command_word_completion_function::val != (char *)0x0)" ( (ERROR "command_word_completion_function::local_index =\n              command_word_completion_function::local_index + 1,\n        command_word_completion_function::" identifier : : (assignment_expression "local_index =\n              command_word_completion_function" identifier = identifier) : : (comma_expression "local_index + 1,\n        command_word_completion_function" (binary_expression "local_index + 1" identifier + number_literal) , identifier) : :) (binary_expression "val != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar6 = executable_or_directory(command_word_completion_function::val);\n    if (iVar6 != 0) {\n      pcVar10 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part);\n        free(command_word_completion_function::val);\n        command_word_completion_function::val = pcVar10;\n      }\n      goto LAB_00181336;\n    }\n    free(command_word_completion_function::val);\n    command_word_completion_function::val =\n         command_word_completion_function::glob_matches\n         [command_word_completion_function::local_index];\n  }" { (expression_statement "iVar6 = executable_or_directory(command_word_completion_function::val);" (assignment_expression "iVar6 = executable_or_directory(command_word_completion_function::val)" identifier = (call_expression "executable_or_directory(command_word_completion_function::val)" identifier (argument_list "(command_word_completion_function::val)" ( identifier (ERROR "::val" : : identifier) )))) ;) (if_statement "if (iVar6 != 0) {\n      pcVar10 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part);\n        free(command_word_completion_function::val);\n        command_word_completion_function::val = pcVar10;\n      }\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar10 = command_word_completion_function::val;\n      if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part);\n        free(command_word_completion_function::val);\n        command_word_completion_function::val = pcVar10;\n      }\n      goto LAB_00181336;\n    }" { (expression_statement "pcVar10 = command_word_completion_function::val;" (assignment_expression "pcVar10 = command_word_completion_function" identifier = identifier) (ERROR "::val" : : identifier) ;) (if_statement "if ((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))\n      {\n        pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part);\n        free(command_word_completion_function::val);\n        command_word_completion_function::val = pcVar10;\n      }" if (parenthesized_expression "((*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0))" ( (binary_expression "(*hint_text == '~') && (command_word_completion_function::directory_part != (char *)0x0)" (parenthesized_expression "(*hint_text == '~')" ( (binary_expression "*hint_text == '~'" (pointer_expression "*hint_text" * identifier) == (char_literal "'~'" ' character ')) )) && (parenthesized_expression "(command_word_completion_function::directory_part != (char *)0x0)" ( (binary_expression "command_word_completion_function::directory_part != (char *)0x0" identifier (ERROR "::directory_part" : : identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part);\n        free(command_word_completion_function::val);\n        command_word_completion_function::val = pcVar10;\n      }" { (expression_statement "pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part);" (assignment_expression "pcVar10 = maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part)" identifier = (call_expression "maybe_restore_tilde(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part)" identifier (argument_list "(command_word_completion_function::val,\n                                      command_word_completion_function::directory_part)" ( identifier (ERROR "::val" : : identifier) , identifier (ERROR "::directory_part" : : identifier) )))) ;) (labeled_statement "free(command_word_completion_function::val);" statement_identifier (ERROR "(command_word_completion_function:" ( (type_descriptor "command_word_completion_function" type_identifier) :) : (expression_statement "val);" identifier (ERROR ")" )) ;)) (labeled_statement "command_word_completion_function::val = pcVar10;" statement_identifier : (ERROR ":" :) (expression_statement "val = pcVar10;" (assignment_expression "val = pcVar10" identifier = identifier) ;)) })) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (macro_type_specifier "free(command_word_completion_function::val)" identifier ( (type_descriptor "command_word_completion_function" type_identifier) (ERROR "::val" : : identifier) )) ; (labeled_statement "command_word_completion_function::val =\n         command_word_completion_function::glob_matches\n         [command_word_completion_function::local_index];" statement_identifier (ERROR "::val =\n         command_word_completion_function::glob_matches\n         [command_word_completion_function:" : : (assignment_expression "val =\n         command_word_completion_function" identifier = identifier) : : identifier [ identifier :) : (expression_statement "local_index];" identifier (ERROR "]" ]) ;)) })) (expression_statement "glob_ignore_case = L'\0';" (assignment_expression "glob_ignore_case = L'\0'" identifier = (char_literal "L'\0'" L' escape_sequence ')) ;) (expression_statement "pcVar10 = (char *)0x0;" (assignment_expression "pcVar10 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar10;\n    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar14 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar10;\n    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar14 == 0) break;\n  }" { (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00180ba8:\n    if (uVar14 == 0) break;" statement_identifier : (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "pcVar10 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar10 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (expression_statement "pcVar10 = strcpy(pcVar10,pcVar11);" (assignment_expression "pcVar10 = strcpy(pcVar10,pcVar11)" identifier = (call_expression "strcpy(pcVar10,pcVar11)" identifier (argument_list "(pcVar10,pcVar11)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar10;\n    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar14 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar10;\n    pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar14 == 0) break;\n  }" { (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar10;" (assignment_expression "cVar1 = *pcVar10" identifier = (pointer_expression "*pcVar10" * identifier)) ;) (expression_statement "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar10 = pcVar10 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar10 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar10 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00180d3c:\n    if (uVar14 == 0) break;" statement_identifier : (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "pcVar10 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar10 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (expression_statement "pcVar10 = strcpy(pcVar10,pcVar11);" (assignment_expression "pcVar10 = strcpy(pcVar10,pcVar11)" identifier = (call_expression "strcpy(pcVar10,pcVar11)" identifier (argument_list "(pcVar10,pcVar11)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar11;\n    pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar14 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar14 = uVar14 - 1;\n    cVar1 = *pcVar11;\n    pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar14 == 0) break;\n  }" { (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar11;" (assignment_expression "cVar1 = *pcVar11" identifier = (pointer_expression "*pcVar11" * identifier)) ;) (expression_statement "pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1;" (assignment_expression "pcVar11 = pcVar11 + (ulong)bVar18 * -2 + 1" identifier = (binary_expression "pcVar11 + (ulong)bVar18 * -2 + 1" (binary_expression "pcVar11 + (ulong)bVar18 * -2" identifier + (binary_expression "(ulong)bVar18 * -2" (cast_expression "(ulong)bVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00180dd3:\n    if (uVar14 == 0) break;" statement_identifier : (if_statement "if (uVar14 == 0) break;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "pcVar11 = (char *)xmalloc(~uVar14);" (assignment_expression "pcVar11 = (char *)xmalloc(~uVar14)" identifier = (cast_expression "(char *)xmalloc(~uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar14)" identifier (argument_list "(~uVar14)" ( (unary_expression "~uVar14" ~ identifier) ))))) ;) (expression_statement "pcVar10 = strcpy(pcVar11,pcVar10);" (assignment_expression "pcVar10 = strcpy(pcVar11,pcVar10)" identifier = (call_expression "strcpy(pcVar11,pcVar10)" identifier (argument_list "(pcVar11,pcVar10)" ( identifier , identifier )))) ;) (labeled_statement "LAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar10;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar10;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return pcVar10;\n  }" { (return_statement "return pcVar10;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "char * command_word_completion_function(char *param_1,int param_2)\n\n{\n  char cVar1;\n  void *pvVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  char *pcVar8;\n  size_t sVar9;\n  char *pcVar10;\n  ulong uVar11;\n  long lVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  long in_FS_OFFSET;\n  byte bVar15;\n  char *local_48;\n  long local_40;\n  \n  bVar15 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }\n  DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }\n  glob_ignore_case = 0;\n  pcVar7 = (char *)0x0;\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }\n  pcVar8 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar8,pcVar7);\nLAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }\n                    \n  __stack_chk_fail();\n}\n\n" (function_definition "char * command_word_completion_function(char *param_1,int param_2)\n\n{\n  char cVar1;\n  void *pvVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  char *pcVar8;\n  size_t sVar9;\n  char *pcVar10;\n  ulong uVar11;\n  long lVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  long in_FS_OFFSET;\n  byte bVar15;\n  char *local_48;\n  long local_40;\n  \n  bVar15 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }\n  DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }\n  glob_ignore_case = 0;\n  pcVar7 = (char *)0x0;\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }\n  pcVar8 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar8,pcVar7);\nLAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }\n                    \n  __stack_chk_fail();\n}" primitive_type (pointer_declarator "* command_word_completion_function(char *param_1,int param_2)" * (function_declarator "command_word_completion_function(char *param_1,int param_2)" identifier (parameter_list "(char *param_1,int param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) )))) (compound_statement "{\n  char cVar1;\n  void *pvVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  char *pcVar8;\n  size_t sVar9;\n  char *pcVar10;\n  ulong uVar11;\n  long lVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  long in_FS_OFFSET;\n  byte bVar15;\n  char *local_48;\n  long local_40;\n  \n  bVar15 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }\n  DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }\n  glob_ignore_case = 0;\n  pcVar7 = (char *)0x0;\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }\n  pcVar8 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar8,pcVar7);\nLAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }\n                    \n  __stack_chk_fail();\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "char *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }" { (expression_statement "rl_filename_stat_hook = FUN_0017d349;" (assignment_expression "rl_filename_stat_hook = FUN_0017d349" identifier = identifier) ;) (if_statement "if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }" if (parenthesized_expression "((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98))" ( (binary_expression "(DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)" (parenthesized_expression "(DAT_00215ca0 != (char *)0x0)" ( (binary_expression "DAT_00215ca0 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(DAT_00215ca0 != DAT_00215c98)" ( (binary_expression "DAT_00215ca0 != DAT_00215c98" identifier != identifier) ))) )) (compound_statement "{\n      free(DAT_00215ca0);\n    }" { (expression_statement "free(DAT_00215ca0);" (call_expression "free(DAT_00215ca0)" identifier (argument_list "(DAT_00215ca0)" ( identifier ))) ;) })) (if_statement "if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }" if (parenthesized_expression "(DAT_00215c98 != (char *)0x0)" ( (binary_expression "DAT_00215c98 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(DAT_00215c98);\n    }" { (expression_statement "free(DAT_00215c98);" (call_expression "free(DAT_00215c98)" identifier (argument_list "(DAT_00215c98)" ( identifier ))) ;) })) (expression_statement "DAT_00215c90 = 0;" (assignment_expression "DAT_00215c90 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c8c = 0;" (assignment_expression "DAT_00215c8c = 0" identifier = number_literal) ;) (expression_statement "iVar4 = absolute_pathname(param_1);" (assignment_expression "iVar4 = absolute_pathname(param_1)" identifier = (call_expression "absolute_pathname(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }" { (expression_statement "iVar4 = absolute_program(param_1);" (assignment_expression "iVar4 = absolute_program(param_1)" identifier = (call_expression "absolute_program(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (if_statement "if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }" if (parenthesized_expression "((iVar4 == 0) && (uVar13 = 0, *param_1 != '~'))" ( (binary_expression "(iVar4 == 0) && (uVar13 = 0, *param_1 != '~')" (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar13 = 0, *param_1 != '~')" ( (comma_expression "uVar13 = 0, *param_1 != '~'" (assignment_expression "uVar13 = 0" identifier = number_literal) , (binary_expression "*param_1 != '~'" (pointer_expression "*param_1" * identifier) != (char_literal "'~'" ' character '))) ))) )) (compound_statement "{\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }" { (expression_statement "iVar4 = FUN_0017bd1e(param_1);" (assignment_expression "iVar4 = FUN_0017bd1e(param_1)" identifier = (call_expression "FUN_0017bd1e(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar13 = (uint)(iVar4 != 0);" (assignment_expression "uVar13 = (uint)(iVar4 != 0)" identifier = (call_expression "(uint)(iVar4 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )))) ;) })) }) (else_clause "else {\n      uVar13 = 0;\n    }" else (compound_statement "{\n      uVar13 = 0;\n    }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) }))) (expression_statement "DAT_00215c80 = (char *)0x0;" (assignment_expression "DAT_00215c80 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "DAT_00215c88 = uVar13;" (assignment_expression "DAT_00215c88 = uVar13" identifier = identifier) ;) (expression_statement "pcVar7 = (char *)rl_variable_value("completion-ignore-case");" (assignment_expression "pcVar7 = (char *)rl_variable_value("completion-ignore-case")" identifier = (cast_expression "(char *)rl_variable_value("completion-ignore-case")" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "rl_variable_value("completion-ignore-case")" identifier (argument_list "("completion-ignore-case")" ( (string_literal ""completion-ignore-case"" " string_content ") ))))) ;) (expression_statement "DAT_00215c7c = 0;" (assignment_expression "DAT_00215c7c = 0" identifier = number_literal) ;) (if_statement "if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }" if (parenthesized_expression "((*pcVar7 == 'o') && (pcVar7[1] == 'n'))" ( (binary_expression "(*pcVar7 == 'o') && (pcVar7[1] == 'n')" (parenthesized_expression "(*pcVar7 == 'o')" ( (binary_expression "*pcVar7 == 'o'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar7[1] == 'n')" ( (binary_expression "pcVar7[1] == 'n'" (subscript_expression "pcVar7[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }" { (expression_statement "DAT_00215c7c = (uint)(pcVar7[2] == '\0');" (assignment_expression "DAT_00215c7c = (uint)(pcVar7[2] == '\0')" identifier = (call_expression "(uint)(pcVar7[2] == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pcVar7[2] == '\0')" ( (binary_expression "pcVar7[2] == '\0'" (subscript_expression "pcVar7[2]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )))) ;) })) (if_statement "if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }" if (parenthesized_expression "(DAT_00215d50 != (undefined8 *)0x0)" ( (binary_expression "DAT_00215d50 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }" { (expression_statement "free(DAT_00215d50);" (call_expression "free(DAT_00215d50)" identifier (argument_list "(DAT_00215d50)" ( identifier ))) ;) (expression_statement "DAT_00215d50 = (undefined8 *)0x0;" (assignment_expression "DAT_00215d50 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "DAT_00215c78 = FUN_0017dd63(param_1);" (assignment_expression "DAT_00215c78 = FUN_0017dd63(param_1)" identifier = (call_expression "FUN_0017dd63(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }" if (parenthesized_expression "((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0))" ( (binary_expression "(DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)" (parenthesized_expression "(DAT_00215c78 == 0)" ( (binary_expression "DAT_00215c78 == 0" identifier == number_literal) )) && (parenthesized_expression "(iVar4 = absolute_program(param_1), iVar4 == 0)" ( (comma_expression "iVar4 = absolute_program(param_1), iVar4 == 0" (assignment_expression "iVar4 = absolute_program(param_1)" identifier = (call_expression "absolute_program(param_1)" identifier (argument_list "(param_1)" ( identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "DAT_00215c98 = strcpy(pcVar7,param_1);" (assignment_expression "DAT_00215c98 = strcpy(pcVar7,param_1)" identifier = (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier )))) ;) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;) (do_statement "do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (lVar12 == 0) break;" if (parenthesized_expression "(lVar12 == 0)" ( (binary_expression "lVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" identifier = (binary_expression "lVar12 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_00215c68 = ~(uint)lVar12 - 1;" (assignment_expression "DAT_00215c68 = ~(uint)lVar12 - 1" identifier = (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" ~ (cast_expression "(uint)lVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (expression_statement "DAT_00215ca0 = DAT_00215c98;" (assignment_expression "DAT_00215ca0 = DAT_00215c98" identifier = identifier) ;) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }" if (parenthesized_expression "((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0))" ( (binary_expression "(rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)" (parenthesized_expression "(rl_completion_found_quote != 0)" ( (binary_expression "rl_completion_found_quote != 0" identifier != number_literal) )) && (parenthesized_expression "(rl_completion_quote_character == 0)" ( (binary_expression "rl_completion_quote_character == 0" identifier == number_literal) ))) )) (compound_statement "{\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }" { (expression_statement "DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);" (assignment_expression "DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0)" identifier = (cast_expression "(char *)FUN_0017ac3b(DAT_00215c98,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ac3b(DAT_00215c98,0)" identifier (argument_list "(DAT_00215c98,0)" ( identifier , number_literal ))))) ;) })) (expression_statement "DAT_00215c48 = get_string_value("PATH");" (assignment_expression "DAT_00215c48 = get_string_value("PATH")" identifier = (call_expression "get_string_value("PATH")" identifier (argument_list "("PATH")" ( (string_literal ""PATH"" " string_content ") )))) ;) (expression_statement "DAT_00215d74 = 0;" (assignment_expression "DAT_00215d74 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c44 = 0;" (assignment_expression "DAT_00215c44 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (if_statement "if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }" if (parenthesized_expression "(DAT_00215c38 != (void *)0x0)" ( (binary_expression "DAT_00215c38 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(DAT_00215c38);\n      }" { (expression_statement "free(DAT_00215c38);" (call_expression "free(DAT_00215c38)" identifier (argument_list "(DAT_00215c38)" ( identifier ))) ;) })) (expression_statement "DAT_00215c38 = (void *)all_visible_functions();" (assignment_expression "DAT_00215c38 = (void *)all_visible_functions()" identifier = (cast_expression "(void *)all_visible_functions()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "all_visible_functions()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }" if (parenthesized_expression "(DAT_00215c30 != (void *)0x0)" ( (binary_expression "DAT_00215c30 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(DAT_00215c30);\n      }" { (expression_statement "free(DAT_00215c30);" (call_expression "free(DAT_00215c30)" identifier (argument_list "(DAT_00215c30)" ( identifier ))) ;) })) (expression_statement "DAT_00215c30 = (void *)all_aliases();" (assignment_expression "DAT_00215c30 = (void *)all_aliases()" identifier = (cast_expression "(void *)all_aliases()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "all_aliases()" identifier (argument_list "()" ( ))))) ;) (goto_statement "goto LAB_00180925;" goto statement_identifier ;) })) (if_statement "if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" if (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }" { (expression_statement "DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);" (assignment_expression "DAT_00215c98 = (char *)bash_tilde_expand(param_1,0)" identifier = (cast_expression "(char *)bash_tilde_expand(param_1,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bash_tilde_expand(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal ))))) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,param_1);" (assignment_expression "pcVar7 = strcpy(pcVar7,param_1)" identifier = (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier )))) ;) (expression_statement "DAT_00215c70 = pcVar7;" (assignment_expression "DAT_00215c70 = pcVar7" identifier = identifier) ;) (expression_statement "pcVar8 = strchr(pcVar7,0x2f);" (assignment_expression "pcVar8 = strchr(pcVar7,0x2f)" identifier = (call_expression "strchr(pcVar7,0x2f)" identifier (argument_list "(pcVar7,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }" { (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) (expression_statement "DAT_00215c70 = (char *)0x0;" (assignment_expression "DAT_00215c70 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        *pcVar8 = '\0';\n      }" else (compound_statement "{\n        *pcVar8 = '\0';\n      }" { (expression_statement "*pcVar8 = '\0';" (assignment_expression "*pcVar8 = '\0'" (pointer_expression "*pcVar8" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) }) (else_clause "else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" else (if_statement "if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" if (parenthesized_expression "(dircomplete_expand == 0)" ( (binary_expression "dircomplete_expand == 0" identifier == number_literal) )) (compound_statement "{\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "DAT_00215c98 = strcpy(pcVar7,param_1);" (assignment_expression "DAT_00215c98 = strcpy(pcVar7,param_1)" identifier = (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier )))) ;) }) (else_clause "else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" else (compound_statement "{\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "DAT_00215c98 = strcpy(pcVar7,param_1);" (assignment_expression "DAT_00215c98 = strcpy(pcVar7,param_1)" identifier = (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier )))) ;) (expression_statement "FUN_0017d87c(&DAT_00215c98);" (call_expression "FUN_0017d87c(&DAT_00215c98)" identifier (argument_list "(&DAT_00215c98)" ( (pointer_expression "&DAT_00215c98" & identifier) ))) ;) }))))) (expression_statement "DAT_00215ca0 = DAT_00215c98;" (assignment_expression "DAT_00215ca0 = DAT_00215c98" identifier = identifier) ;) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }" if (parenthesized_expression "((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0))" ( (binary_expression "(rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)" (parenthesized_expression "(rl_completion_found_quote != 0)" ( (binary_expression "rl_completion_found_quote != 0" identifier != number_literal) )) && (parenthesized_expression "(rl_completion_quote_character == 0)" ( (binary_expression "rl_completion_quote_character == 0" identifier == number_literal) ))) )) (compound_statement "{\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }" { (expression_statement "pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);" (assignment_expression "pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0)" identifier = (cast_expression "(char *)FUN_0017ac3b(DAT_00215c98,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017ac3b(DAT_00215c98,0)" identifier (argument_list "(DAT_00215c98,0)" ( identifier , number_literal ))))) ;) (expression_statement "DAT_00215ca0 = pcVar7;" (assignment_expression "DAT_00215ca0 = pcVar7" identifier = identifier) ;) (expression_statement "free(DAT_00215c98);" (call_expression "free(DAT_00215c98)" identifier (argument_list "(DAT_00215c98)" ( identifier ))) ;) (expression_statement "DAT_00215c98 = pcVar7;" (assignment_expression "DAT_00215c98 = pcVar7" identifier = identifier) ;) })) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" identifier = number_literal) ;) (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;) (do_statement "do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    }" { (if_statement "if (lVar12 == 0) break;" if (parenthesized_expression "(lVar12 == 0)" ( (binary_expression "lVar12 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" identifier = (binary_expression "lVar12 + -1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "DAT_00215c68 = ~(uint)lVar12 - 1;" (assignment_expression "DAT_00215c68 = ~(uint)lVar12 - 1" identifier = (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" ~ (cast_expression "(uint)lVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) - number_literal)) ;) (if_statement "if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }" if (parenthesized_expression "(DAT_00215c60 != (char *)0x0)" ( (binary_expression "DAT_00215c60 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free(DAT_00215c60);\n    }" { (expression_statement "free(DAT_00215c60);" (call_expression "free(DAT_00215c60)" identifier (argument_list "(DAT_00215c60)" ( identifier ))) ;) })) (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = DAT_00215c98;" (assignment_expression "pcVar8 = DAT_00215c98" identifier = identifier) ;) (do_statement "do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');" do (compound_statement "{\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "DAT_00215c58 = strcpy(pcVar8,pcVar7);" (assignment_expression "DAT_00215c58 = strcpy(pcVar8,pcVar7)" identifier = (call_expression "strcpy(pcVar8,pcVar7)" identifier (argument_list "(pcVar8,pcVar7)" ( identifier , identifier )))) ;) (expression_statement "DAT_00215c50 = 0;" (assignment_expression "DAT_00215c50 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c60 = DAT_00215c58;" (assignment_expression "DAT_00215c60 = DAT_00215c58" identifier = identifier) ;) (if_statement "if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(DAT_00215c78 == 0)" ( (binary_expression "DAT_00215c78 == 0" identifier == number_literal) )) (compound_statement "{\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" { (if_statement "if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }" if (parenthesized_expression "((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0))" ( (binary_expression "(dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)" (parenthesized_expression "(dircomplete_expand != 0)" ( (binary_expression "dircomplete_expand != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)" ( (comma_expression "iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0" (assignment_expression "iVar4 = path_dot_or_dotdot(DAT_00215c58)" identifier = (call_expression "path_dot_or_dotdot(DAT_00215c58)" identifier (argument_list "(DAT_00215c58)" ( identifier )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }" { (expression_statement "dircomplete_expand = 0;" (assignment_expression "dircomplete_expand = 0" identifier = number_literal) ;) (expression_statement "set_directory_hook();" (call_expression "set_directory_hook()" identifier (argument_list "()" ( ))) ;) (expression_statement "dircomplete_expand = 1;" (assignment_expression "dircomplete_expand = 1" identifier = number_literal) ;) })) (expression_statement "DAT_00215c8c = 4;" (assignment_expression "DAT_00215c8c = 4" identifier = number_literal) ;) (labeled_statement "LAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }" statement_identifier : (while_statement "while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }" { (expression_statement "pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);" (assignment_expression "pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50)" identifier = (cast_expression "(char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "rl_filename_completion_function(DAT_00215c58,DAT_00215c50)" identifier (argument_list "(DAT_00215c58,DAT_00215c50)" ( identifier , identifier ))))) ;) (expression_statement "DAT_00215c80 = pcVar7;" (assignment_expression "DAT_00215c80 = pcVar7" identifier = identifier) ;) (if_statement "if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }" if (parenthesized_expression "((DAT_00215c8c == 4) && (dircomplete_expand != 0))" ( (binary_expression "(DAT_00215c8c == 4) && (dircomplete_expand != 0)" (parenthesized_expression "(DAT_00215c8c == 4)" ( (binary_expression "DAT_00215c8c == 4" identifier == number_literal) )) && (parenthesized_expression "(dircomplete_expand != 0)" ( (binary_expression "dircomplete_expand != 0" identifier != number_literal) ))) )) (compound_statement "{\n          set_directory_hook();\n        }" { (expression_statement "set_directory_hook();" (call_expression "set_directory_hook()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "DAT_00215c50 = 1;" (assignment_expression "DAT_00215c50 = 1" identifier = number_literal) ;) (if_statement "if (pcVar7 == (char *)0x0) break;" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = absolute_program(DAT_00215c98);" (assignment_expression "iVar4 = absolute_program(DAT_00215c98)" identifier = (call_expression "absolute_program(DAT_00215c98)" identifier (argument_list "(DAT_00215c98)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }" { (expression_statement "pcVar7 = strrchr(DAT_00215c80,0x2f);" (assignment_expression "pcVar7 = strrchr(DAT_00215c80,0x2f)" identifier = (call_expression "strrchr(DAT_00215c80,0x2f)" identifier (argument_list "(DAT_00215c80,0x2f)" ( identifier , number_literal )))) ;) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }" if (parenthesized_expression "(pcVar7 != (char *)0x0)" ( (binary_expression "pcVar7 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }" { (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (if_statement "if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" if (parenthesized_expression "(DAT_00215c7c == 0)" ( (binary_expression "DAT_00215c7c == 0" identifier == number_literal) )) (compound_statement "{\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" { (expression_statement "iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" identifier = (call_expression "strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" identifier (argument_list "(pcVar7,DAT_00215c98,(long)DAT_00215c68)" ( identifier , identifier , (cast_expression "(long)DAT_00215c68" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) ;) }) (else_clause "else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" else (compound_statement "{\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" { (expression_statement "iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" identifier = (call_expression "strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" identifier (argument_list "(pcVar7,DAT_00215c98,(long)DAT_00215c68)" ( identifier , identifier , (cast_expression "(long)DAT_00215c68" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) ;) }))) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" identifier = identifier) ;) (do_statement "do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');" do (compound_statement "{\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar8,pcVar7);" (assignment_expression "pcVar7 = strcpy(pcVar8,pcVar7)" identifier = (call_expression "strcpy(pcVar8,pcVar7)" identifier (argument_list "(pcVar8,pcVar7)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_001812ba;" goto statement_identifier ;) })) })) }) (else_clause "else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }" else (compound_statement "{\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }" { (if_statement "if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" if (parenthesized_expression "(DAT_00215c7c == 0)" ( (binary_expression "DAT_00215c7c == 0" identifier == number_literal) )) (compound_statement "{\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" { (expression_statement "iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" identifier = (call_expression "strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" identifier (argument_list "(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" ( identifier , identifier , (cast_expression "(long)DAT_00215c68" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) ;) }) (else_clause "else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" else (compound_statement "{\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" { (expression_statement "iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" identifier = (call_expression "strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" identifier (argument_list "(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" ( identifier , identifier , (cast_expression "(long)DAT_00215c68" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) )))) ;) }))) (expression_statement "pcVar7 = DAT_00215c80;" (assignment_expression "pcVar7 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }" if (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }" { (expression_statement "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);" (assignment_expression "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70)" identifier = (cast_expression "(char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b4b4(DAT_00215c80,DAT_00215c70)" identifier (argument_list "(DAT_00215c80,DAT_00215c70)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }" else (compound_statement "{\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (do_statement "do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar8,pcVar7);" (assignment_expression "pcVar7 = strcpy(pcVar8,pcVar7)" identifier = (call_expression "strcpy(pcVar8,pcVar7)" identifier (argument_list "(pcVar8,pcVar7)" ( identifier , identifier )))) ;) }))) (expression_statement "pcVar10 = DAT_00215c80;" (assignment_expression "pcVar10 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }" { (labeled_statement "LAB_001812ba:\n            iVar4 = DAT_00215c90;" statement_identifier : (expression_statement "iVar4 = DAT_00215c90;" (assignment_expression "iVar4 = DAT_00215c90" identifier = identifier) ;)) (expression_statement "pcVar10 = DAT_00215c80;" (assignment_expression "pcVar10 = DAT_00215c80" identifier = identifier) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (do_statement "do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');" do (compound_statement "{\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "local_48 = strcpy(pcVar8,pcVar10);" (assignment_expression "local_48 = strcpy(pcVar8,pcVar10)" identifier = (call_expression "strcpy(pcVar8,pcVar10)" identifier (argument_list "(pcVar8,pcVar10)" ( identifier , identifier )))) ;) (expression_statement "FUN_0017d87c(&local_48);" (call_expression "FUN_0017d87c(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) ))) ;) (if_statement "if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar4 = executable_or_directory(local_48);\n            }" { (expression_statement "iVar4 = executable_or_directory(local_48);" (assignment_expression "iVar4 = executable_or_directory(local_48)" identifier = (call_expression "executable_or_directory(local_48)" identifier (argument_list "(local_48)" ( identifier )))) ;) }) (else_clause "else {\n              iVar4 = executable_file(local_48);\n            }" else (compound_statement "{\n              iVar4 = executable_file(local_48);\n            }" { (expression_statement "iVar4 = executable_file(local_48);" (assignment_expression "iVar4 = executable_file(local_48)" identifier = (call_expression "executable_file(local_48)" identifier (argument_list "(local_48)" ( identifier )))) ;) }))) (expression_statement "free(local_48);" (call_expression "free(local_48)" identifier (argument_list "(local_48)" ( identifier ))) ;) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }" { (if_statement "if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }" if (parenthesized_expression "(DAT_00215c80 != pcVar10)" ( (binary_expression "DAT_00215c80 != pcVar10" identifier != identifier) )) (compound_statement "{\n                free(pcVar10);\n              }" { (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) })) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) (expression_statement "DAT_00215c80 = "";" (assignment_expression "DAT_00215c80 = """ identifier = (string_literal """" " ")) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) })) (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" identifier = identifier) ;) (if_statement "if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }" if (parenthesized_expression "(DAT_00215c80 != pcVar10)" ( (binary_expression "DAT_00215c80 != pcVar10" identifier != identifier) )) (compound_statement "{\n            free(pcVar10);\n          }" { (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" identifier (argument_list "(pcVar10)" ( identifier ))) ;) })) }))) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) }))) (expression_statement "iVar4 = absolute_program(DAT_00215c98);" (assignment_expression "iVar4 = absolute_program(DAT_00215c98)" identifier = (call_expression "absolute_program(DAT_00215c98)" identifier (argument_list "(DAT_00215c98)" ( identifier )))) ;) (if_statement "if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }" { (labeled_statement "LAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);" statement_identifier : (expression_statement "DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);" (assignment_expression "DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0)" identifier = (call_expression "(uint)(DAT_00215c80 != (char *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_00215c80 != (char *)0x0)" ( (binary_expression "DAT_00215c80 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;)) (if_statement "if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }" if (parenthesized_expression "(DAT_00215c80 == (char *)0x0)" ( (binary_expression "DAT_00215c80 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }" { (if_statement "if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }" if (parenthesized_expression "(DAT_00215c48 == 0)" ( (binary_expression "DAT_00215c48 == 0" identifier == number_literal) )) (compound_statement "{\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }" { (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;" if (parenthesized_expression "((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             ))" ( (binary_expression "(*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )" (parenthesized_expression "(*(char *)(DAT_00215c48 + DAT_00215c44) == '\0')" ( (binary_expression "*(char *)(DAT_00215c48 + DAT_00215c44) == '\0'" (pointer_expression "*(char *)(DAT_00215c48 + DAT_00215c44)" * (cast_expression "(char *)(DAT_00215c48 + DAT_00215c44)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00215c48 + DAT_00215c44)" ( (binary_expression "DAT_00215c48 + DAT_00215c44" identifier + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )" ( (comma_expression "pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0" (assignment_expression "pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44)" identifier = (cast_expression "(char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "extract_colon_unit(DAT_00215c48,&DAT_00215c44)" identifier (argument_list "(DAT_00215c48,&DAT_00215c44)" ( identifier , (pointer_expression "&DAT_00215c44" & identifier) ))))) , (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00181336;" goto statement_identifier ;)) (expression_statement "DAT_00215c90 = 1;" (assignment_expression "DAT_00215c90 = 1" identifier = number_literal) ;) (if_statement "if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }" if (parenthesized_expression "(*pcVar7 == '\0')" ( (binary_expression "*pcVar7 == '\0'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }" { (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) (expression_statement "pcVar7 = (char *)xmalloc(2);" (assignment_expression "pcVar7 = (char *)xmalloc(2)" identifier = (cast_expression "(char *)xmalloc(2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(2)" identifier (argument_list "(2)" ( number_literal ))))) ;) (expression_statement "pcVar7[0] = '.';" (assignment_expression "pcVar7[0] = '.'" (subscript_expression "pcVar7[0]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "pcVar7[1] = '\0';" (assignment_expression "pcVar7[1] = '\0'" (subscript_expression "pcVar7[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" identifier = identifier) ;) (if_statement "if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }" if (parenthesized_expression "(*pcVar7 == '~')" ( (binary_expression "*pcVar7 == '~'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'~'" ' character ')) )) (compound_statement "{\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }" { (expression_statement "pcVar8 = (char *)bash_tilde_expand(pcVar7,0);" (assignment_expression "pcVar8 = (char *)bash_tilde_expand(pcVar7,0)" identifier = (cast_expression "(char *)bash_tilde_expand(pcVar7,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bash_tilde_expand(pcVar7,0)" identifier (argument_list "(pcVar7,0)" ( identifier , number_literal ))))) ;) (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) })) (if_statement "if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }" if (parenthesized_expression "((*pcVar8 == '.') && (pcVar8[1] == '\0'))" ( (binary_expression "(*pcVar8 == '.') && (pcVar8[1] == '\0')" (parenthesized_expression "(*pcVar8 == '.')" ( (binary_expression "*pcVar8 == '.'" (pointer_expression "*pcVar8" * identifier) == (char_literal "'.'" ' character ')) )) && (parenthesized_expression "(pcVar8[1] == '\0')" ( (binary_expression "pcVar8[1] == '\0'" (subscript_expression "pcVar8[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            DAT_00215d74 = 1;\n          }" { (expression_statement "DAT_00215d74 = 1;" (assignment_expression "DAT_00215d74 = 1" identifier = number_literal) ;) })) (if_statement "if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }" if (parenthesized_expression "((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60))" ( (binary_expression "(DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)" (parenthesized_expression "(DAT_00215c58 != (char *)0x0)" ( (binary_expression "DAT_00215c58 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(DAT_00215c58 != DAT_00215c60)" ( (binary_expression "DAT_00215c58 != DAT_00215c60" identifier != identifier) ))) )) (compound_statement "{\n            free(DAT_00215c58);\n          }" { (expression_statement "free(DAT_00215c58);" (call_expression "free(DAT_00215c58)" identifier (argument_list "(DAT_00215c58)" ( identifier ))) ;) })) (if_statement "if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }" if (parenthesized_expression "(DAT_00215c60 != (char *)0x0)" ( (binary_expression "DAT_00215c60 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free(DAT_00215c60);\n          }" { (expression_statement "free(DAT_00215c60);" (call_expression "free(DAT_00215c60)" identifier (argument_list "(DAT_00215c60)" ( identifier ))) ;) })) (expression_statement "pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);" (assignment_expression "pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0)" identifier = (cast_expression "(char *)sh_makepath(pcVar8,DAT_00215c98,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sh_makepath(pcVar8,DAT_00215c98,0)" identifier (argument_list "(pcVar8,DAT_00215c98,0)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "DAT_00215c60 = pcVar7;" (assignment_expression "DAT_00215c60 = pcVar7" identifier = identifier) ;) (expression_statement "pcVar10 = strpbrk(pcVar7,"\"\'\\");" (assignment_expression "pcVar10 = strpbrk(pcVar7,"\"\'\\")" identifier = (call_expression "strpbrk(pcVar7,"\"\'\\")" identifier (argument_list "(pcVar7,"\"\'\\")" ( identifier , (string_literal ""\"\'\\"" " escape_sequence escape_sequence escape_sequence ") )))) ;) (if_statement "if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }" if (parenthesized_expression "(pcVar10 != (char *)0x0)" ( (binary_expression "pcVar10 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }" { (expression_statement "pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);" (assignment_expression "pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0)" identifier = (cast_expression "(char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "sh_backslash_quote(pcVar7,&DAT_00215d80,0)" identifier (argument_list "(pcVar7,&DAT_00215d80,0)" ( identifier , (pointer_expression "&DAT_00215d80" & identifier) , number_literal ))))) ;) })) (expression_statement "DAT_00215c58 = pcVar7;" (assignment_expression "DAT_00215c58 = pcVar7" identifier = identifier) ;) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" identifier (argument_list "(pcVar8)" ( identifier ))) ;) })) (goto_statement "goto LAB_00180a7a;" goto statement_identifier ;) })) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (expression_statement "DAT_00215c8c = 5;" (assignment_expression "DAT_00215c8c = 5" identifier = number_literal) ;) (labeled_statement "LAB_00180787:\n    glob_ignore_case = DAT_00215c7c;" statement_identifier : (expression_statement "glob_ignore_case = DAT_00215c7c;" (assignment_expression "glob_ignore_case = DAT_00215c7c" identifier = identifier) ;)) (expression_statement "DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);" (assignment_expression "DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98)" identifier = (cast_expression "(undefined8 *)shell_glob_filename(DAT_00215c98)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "shell_glob_filename(DAT_00215c98)" identifier (argument_list "(DAT_00215c98)" ( identifier ))))) ;) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" identifier = number_literal) ;) (if_statement "if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" if (parenthesized_expression "((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0))" ( (binary_expression "(DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)" (parenthesized_expression "(DAT_00215d50 == &glob_error_return)" ( (binary_expression "DAT_00215d50 == &glob_error_return" identifier == (pointer_expression "&glob_error_return" & identifier)) )) || (parenthesized_expression "(DAT_00215d50 == (undefined8 *)0x0)" ( (binary_expression "DAT_00215d50 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" { (expression_statement "DAT_00215d50 = (undefined8 *)0x0;" (assignment_expression "DAT_00215d50 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (if_statement "if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" if (parenthesized_expression "((DAT_00215d50[1] != 0) && (rl_completion_type == 9))" ( (binary_expression "(DAT_00215d50[1] != 0) && (rl_completion_type == 9)" (parenthesized_expression "(DAT_00215d50[1] != 0)" ( (binary_expression "DAT_00215d50[1] != 0" (subscript_expression "DAT_00215d50[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(rl_completion_type == 9)" ( (binary_expression "rl_completion_type == 9" identifier == number_literal) ))) )) (compound_statement "{\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" { (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }" else (compound_statement "{\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }" { (labeled_statement "LAB_00180925:\n    pcVar7 = DAT_00215c98;" statement_identifier : (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;)) (expression_statement "uVar13 = DAT_00215c7c;" (assignment_expression "uVar13 = DAT_00215c7c" identifier = identifier) ;) (expression_statement "iVar4 = DAT_00215c68;" (assignment_expression "iVar4 = DAT_00215c68" identifier = identifier) ;) (expression_statement "pvVar2 = DAT_00215c30;" (assignment_expression "pvVar2 = DAT_00215c30" identifier = identifier) ;) (if_statement "if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(DAT_00215c8c == 1)" ( (binary_expression "DAT_00215c8c == 1" identifier == number_literal) )) (compound_statement "{\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }" { (labeled_statement "LAB_00180bdc:\n      pcVar7 = DAT_00215c98;" statement_identifier : (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;)) (expression_statement "iVar4 = DAT_00215c68;" (assignment_expression "iVar4 = DAT_00215c68" identifier = identifier) ;) (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" identifier = (cast_expression "(size_t)DAT_00215c68" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (do_statement "do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));" do (compound_statement "{\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      }" { (expression_statement "pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];" (assignment_expression "pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2]" identifier = (subscript_expression "(&word_token_alist)[(long)DAT_00215c40 * 2]" (parenthesized_expression "(&word_token_alist)" ( (pointer_expression "&word_token_alist" & identifier) )) [ (binary_expression "(long)DAT_00215c40 * 2" (cast_expression "(long)DAT_00215c40" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal) ])) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }" { (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c8c = DAT_00215c8c + 1;" (assignment_expression "DAT_00215c8c = DAT_00215c8c + 1" identifier = (binary_expression "DAT_00215c8c + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00180c72;" goto statement_identifier ;) })) (expression_statement "DAT_00215c40 = DAT_00215c40 + 1;" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" identifier = (binary_expression "DAT_00215c40 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))))" ( (binary_expression "(iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" ( (parenthesized_expression "(*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))" ( (binary_expression "*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (binary_expression "*pcVar8 != *pcVar7" (pointer_expression "*pcVar8" * identifier) != (pointer_expression "*pcVar7" * identifier)) || (parenthesized_expression "(iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" ( (comma_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0" (assignment_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9)" identifier = (call_expression "strncmp(pcVar8,pcVar7,sVar9)" identifier (argument_list "(pcVar8,pcVar7,sVar9)" ( identifier , identifier , identifier )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) ))) )) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" identifier = (call_expression "strcpy(pcVar7,pcVar8)" identifier (argument_list "(pcVar7,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (if_statement "if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }" if (parenthesized_expression "(DAT_00215c8c < 2)" ( (binary_expression "DAT_00215c8c < 2" identifier < number_literal) )) (compound_statement "{\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }" { (if_statement "if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" if (parenthesized_expression "(DAT_00215c8c == 0)" ( (binary_expression "DAT_00215c8c == 0" identifier == number_literal) )) (compound_statement "{\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" { (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" identifier = (cast_expression "(size_t)DAT_00215c68" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (do_statement "do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));" do (compound_statement "{\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        }" { (while_statement "while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }" { (if_statement "if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }" if (parenthesized_expression "((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0))" ( (binary_expression "(pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" (parenthesized_expression "(pvVar2 == (void *)0x0)" ( (binary_expression "pvVar2 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" ( (comma_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0" (assignment_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" identifier = (pointer_expression "*(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" * (cast_expression "(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)pvVar2 + (long)DAT_00215c40 * 8)" ( (binary_expression "(long)pvVar2 + (long)DAT_00215c40 * 8" (cast_expression "(long)pvVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)DAT_00215c40 * 8" (cast_expression "(long)DAT_00215c40" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) , (binary_expression "puVar14 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }" { (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c8c = 1;" (assignment_expression "DAT_00215c8c = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00180bdc;" goto statement_identifier ;) })) (expression_statement "DAT_00215c40 = DAT_00215c40 + 1;" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" identifier = (binary_expression "DAT_00215c40 + 1" identifier + number_literal)) ;) (expression_statement "pcVar8 = (char *)*puVar14;" (assignment_expression "pcVar8 = (char *)*puVar14" identifier = (cast_expression "(char *)*puVar14" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (if_statement "if (uVar13 == 0) break;" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);" (assignment_expression "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9)" identifier = (call_expression "strncasecmp(pcVar8,pcVar7,sVar9)" identifier (argument_list "(pcVar8,pcVar7,sVar9)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" identifier = identifier) ;) (goto_statement "goto code_r0x00180ba8;" goto statement_identifier ;) })) })) }) while (parenthesized_expression "((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))))" ( (binary_expression "(iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" ( (parenthesized_expression "(*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))" ( (binary_expression "*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (binary_expression "*pcVar8 != *pcVar7" (pointer_expression "*pcVar8" * identifier) != (pointer_expression "*pcVar7" * identifier)) || (parenthesized_expression "(iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" ( (comma_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0" (assignment_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9)" identifier = (call_expression "strncmp(pcVar8,pcVar7,sVar9)" identifier (argument_list "(pcVar8,pcVar7,sVar9)" ( identifier , identifier , identifier )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) ))) )) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" identifier = identifier) ;) (do_statement "do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');" do (compound_statement "{\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" identifier = (call_expression "strcpy(pcVar7,pcVar8)" identifier (argument_list "(pcVar7,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }" else (compound_statement "{\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }" { (if_statement "if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" if (parenthesized_expression "(DAT_00215c8c == 2)" ( (binary_expression "DAT_00215c8c == 2" identifier == number_literal) )) (compound_statement "{\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" { (labeled_statement "LAB_00180c72:\n        pcVar7 = DAT_00215c98;" statement_identifier : (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;)) (expression_statement "uVar13 = DAT_00215c7c;" (assignment_expression "uVar13 = DAT_00215c7c" identifier = identifier) ;) (expression_statement "iVar4 = DAT_00215c68;" (assignment_expression "iVar4 = DAT_00215c68" identifier = identifier) ;) (expression_statement "pvVar2 = DAT_00215c38;" (assignment_expression "pvVar2 = DAT_00215c38" identifier = identifier) ;) (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" identifier = (cast_expression "(size_t)DAT_00215c68" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (do_statement "do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));" do (compound_statement "{\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        }" { (while_statement "while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }" { (if_statement "if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }" if (parenthesized_expression "((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0))" ( (binary_expression "(pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" (parenthesized_expression "(pvVar2 == (void *)0x0)" ( (binary_expression "pvVar2 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" ( (comma_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0" (assignment_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" identifier = (pointer_expression "*(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" * (cast_expression "(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)pvVar2 + (long)DAT_00215c40 * 8)" ( (binary_expression "(long)pvVar2 + (long)DAT_00215c40 * 8" (cast_expression "(long)pvVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(long)DAT_00215c40 * 8" (cast_expression "(long)DAT_00215c40" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) , (binary_expression "puVar14 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }" { (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c8c = DAT_00215c8c + 1;" (assignment_expression "DAT_00215c8c = DAT_00215c8c + 1" identifier = (binary_expression "DAT_00215c8c + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_0018094c;" goto statement_identifier ;) })) (expression_statement "DAT_00215c40 = DAT_00215c40 + 1;" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" identifier = (binary_expression "DAT_00215c40 + 1" identifier + number_literal)) ;) (expression_statement "pcVar8 = (char *)*puVar14;" (assignment_expression "pcVar8 = (char *)*puVar14" identifier = (cast_expression "(char *)*puVar14" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (if_statement "if (uVar13 == 0) break;" if (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);" (assignment_expression "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9)" identifier = (call_expression "strncasecmp(pcVar8,pcVar7,sVar9)" identifier (argument_list "(pcVar8,pcVar7,sVar9)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }" { (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" identifier = identifier) ;) (goto_statement "goto code_r0x00180d3c;" goto statement_identifier ;) })) })) }) while (parenthesized_expression "((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))))" ( (binary_expression "(iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" ( (parenthesized_expression "(*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))" ( (binary_expression "*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (binary_expression "*pcVar8 != *pcVar7" (pointer_expression "*pcVar8" * identifier) != (pointer_expression "*pcVar7" * identifier)) || (parenthesized_expression "(iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" ( (comma_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0" (assignment_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9)" identifier = (call_expression "strncmp(pcVar8,pcVar7,sVar9)" identifier (argument_list "(pcVar8,pcVar7,sVar9)" ( identifier , identifier , identifier )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) ))) )) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" identifier = identifier) ;) (do_statement "do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');" do (compound_statement "{\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" identifier = (call_expression "strcpy(pcVar7,pcVar8)" identifier (argument_list "(pcVar7,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (if_statement "if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }" if (parenthesized_expression "(DAT_00215c8c == 3)" ( (binary_expression "DAT_00215c8c == 3" identifier == number_literal) )) (compound_statement "{\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }" { (labeled_statement "LAB_0018094c:\n        pcVar7 = DAT_00215c98;" statement_identifier : (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" identifier = identifier) ;)) (expression_statement "iVar5 = DAT_00215c68;" (assignment_expression "iVar5 = DAT_00215c68" identifier = identifier) ;) (expression_statement "iVar4 = num_shell_builtins;" (assignment_expression "iVar4 = num_shell_builtins" identifier = identifier) ;) (if_statement "if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }" if (parenthesized_expression "(DAT_00215c40 < num_shell_builtins)" ( (binary_expression "DAT_00215c40 < num_shell_builtins" identifier < identifier) )) (compound_statement "{\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }" { (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" identifier = (cast_expression "(size_t)DAT_00215c68" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (expression_statement "puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);" (assignment_expression "puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30)" identifier = (cast_expression "(undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(shell_builtins + (long)DAT_00215c40 * 0x30)" ( (binary_expression "shell_builtins + (long)DAT_00215c40 * 0x30" identifier + (binary_expression "(long)DAT_00215c40 * 0x30" (cast_expression "(long)DAT_00215c40" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (do_statement "do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);" do (compound_statement "{\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          }" { (expression_statement "iVar3 = DAT_00215c40;" (assignment_expression "iVar3 = DAT_00215c40" identifier = identifier) ;) (if_statement "if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }" if (parenthesized_expression "(((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0))))))" ( (binary_expression "((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))" (parenthesized_expression "((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0))" ( (binary_expression "(puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)" (parenthesized_expression "(puVar14[1] != 0)" ( (binary_expression "puVar14[1] != 0" (subscript_expression "puVar14[1]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "((*(byte *)(puVar14 + 2) & 1) != 0)" ( (binary_expression "(*(byte *)(puVar14 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar14 + 2) & 1)" ( (binary_expression "*(byte *)(puVar14 + 2) & 1" (pointer_expression "*(byte *)(puVar14 + 2)" * (cast_expression "(byte *)(puVar14 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + 2)" ( (binary_expression "puVar14 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))" ( (parenthesized_expression "(iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0))))" ( (binary_expression "iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))" (binary_expression "iVar5 == 0" identifier == number_literal) || (parenthesized_expression "((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))" ( (parenthesized_expression "(*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0))" ( (binary_expression "*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)" (binary_expression "*(char *)*puVar14 == *pcVar7" (pointer_expression "*(char *)*puVar14" * (cast_expression "(char *)*puVar14" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) == (pointer_expression "*pcVar7" * identifier)) && (parenthesized_expression "(iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)" ( (comma_expression "iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0" (assignment_expression "iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9)" identifier = (call_expression "strncmp((char *)*puVar14,pcVar7,sVar9)" identifier (argument_list "((char *)*puVar14,pcVar7,sVar9)" ( (cast_expression "(char *)*puVar14" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier)) , identifier , identifier )))) , (binary_expression "iVar6 == 0" identifier == number_literal)) ))) )) ))) )) ))) )) (compound_statement "{\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }" { (expression_statement "DAT_00215c40 = iVar3 + 1;" (assignment_expression "DAT_00215c40 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "pcVar7 = (char *)*puVar14;" (assignment_expression "pcVar7 = (char *)*puVar14" identifier = (cast_expression "(char *)*puVar14" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar14" * identifier))) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" identifier = identifier) ;) (goto_statement "goto code_r0x00180dd3;" goto statement_identifier ;) })) (expression_statement "DAT_00215c40 = iVar3 + 1;" (assignment_expression "DAT_00215c40 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar14 = puVar14 + 6;" (assignment_expression "puVar14 = puVar14 + 6" identifier = (binary_expression "puVar14 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(DAT_00215c40 != iVar4)" ( (binary_expression "DAT_00215c40 != iVar4" identifier != identifier) )) ;) })) (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" identifier = number_literal) ;) (expression_statement "DAT_00215c8c = DAT_00215c8c + 1;" (assignment_expression "DAT_00215c8c = DAT_00215c8c + 1" identifier = (binary_expression "DAT_00215c8c + 1" identifier + number_literal)) ;) })) }))) (if_statement "if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(DAT_00215c78 == 0)" ( (binary_expression "DAT_00215c78 == 0" identifier == number_literal) )) (compound_statement "{\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }" { (if_statement "if (DAT_00215c88 == 0) goto LAB_00180e1e;" if (parenthesized_expression "(DAT_00215c88 == 0)" ( (binary_expression "DAT_00215c88 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00180e1e;" goto statement_identifier ;)) (expression_statement "DAT_00215c88 = 0;" (assignment_expression "DAT_00215c88 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" identifier = identifier) ;) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" do (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" { (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,param_1);" (assignment_expression "pcVar7 = strcpy(pcVar7,param_1)" identifier = (call_expression "strcpy(pcVar7,param_1)" identifier (argument_list "(pcVar7,param_1)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (if_statement "if (param_2 == 0) goto LAB_00180787;" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00180787;" goto statement_identifier ;)) }))) (expression_statement "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];" (assignment_expression "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40]" identifier = (cast_expression "(char *)DAT_00215d50[DAT_00215c40]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "DAT_00215d50[DAT_00215c40]" identifier [ identifier ]))) ;) (while_statement "while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }" while (parenthesized_expression "(DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0)" ( (comma_expression "DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" identifier = (binary_expression "DAT_00215c40 + 1" identifier + number_literal)) , (binary_expression "DAT_00215c80 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }" { (expression_statement "iVar4 = executable_or_directory();" (assignment_expression "iVar4 = executable_or_directory()" identifier = (call_expression "executable_or_directory()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }" { (expression_statement "pcVar7 = DAT_00215c80;" (assignment_expression "pcVar7 = DAT_00215c80" identifier = identifier) ;) (if_statement "if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }" if (parenthesized_expression "((*param_1 == '~') && (DAT_00215c70 != (char *)0x0))" ( (binary_expression "(*param_1 == '~') && (DAT_00215c70 != (char *)0x0)" (parenthesized_expression "(*param_1 == '~')" ( (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" * identifier) == (char_literal "'~'" ' character ')) )) && (parenthesized_expression "(DAT_00215c70 != (char *)0x0)" ( (binary_expression "DAT_00215c70 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }" { (expression_statement "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);" (assignment_expression "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80)" identifier = (cast_expression "(char *)FUN_0017b4b4(DAT_00215c80)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0017b4b4(DAT_00215c80)" identifier (argument_list "(DAT_00215c80)" ( identifier ))))) ;) (expression_statement "free(DAT_00215c80);" (call_expression "free(DAT_00215c80)" identifier (argument_list "(DAT_00215c80)" ( identifier ))) ;) (expression_statement "DAT_00215c80 = pcVar7;" (assignment_expression "DAT_00215c80 = pcVar7" identifier = identifier) ;) })) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) })) (expression_statement "free(DAT_00215c80);" (call_expression "free(DAT_00215c80)" identifier (argument_list "(DAT_00215c80)" ( identifier ))) ;) (expression_statement "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];" (assignment_expression "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40]" identifier = (cast_expression "(char *)DAT_00215d50[DAT_00215c40]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "DAT_00215d50[DAT_00215c40]" identifier [ identifier ]))) ;) })) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" identifier = number_literal) ;) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }" { (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00180ba8:\n    if (uVar11 == 0) break;" statement_identifier : (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" identifier = (call_expression "strcpy(pcVar7,pcVar8)" identifier (argument_list "(pcVar7,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }" { (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00180d3c:\n    if (uVar11 == 0) break;" statement_identifier : (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" identifier = (call_expression "strcpy(pcVar7,pcVar8)" identifier (argument_list "(pcVar7,pcVar8)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00181336;" goto statement_identifier ;) (while_statement "while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }" { (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" identifier = (pointer_expression "*pcVar8" * identifier)) ;) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" identifier = (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" identifier + (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (if_statement "if (cVar1 == '\0') break;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00180dd3:\n    if (uVar11 == 0) break;" statement_identifier : (if_statement "if (uVar11 == 0) break;" if (parenthesized_expression "(uVar11 == 0)" ( (binary_expression "uVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) })) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" identifier = (cast_expression "(char *)xmalloc(~uVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(~uVar11)" identifier (argument_list "(~uVar11)" ( (unary_expression "~uVar11" ~ identifier) ))))) ;) (expression_statement "pcVar7 = strcpy(pcVar8,pcVar7);" (assignment_expression "pcVar7 = strcpy(pcVar8,pcVar7)" identifier = (call_expression "strcpy(pcVar8,pcVar7)" identifier (argument_list "(pcVar8,pcVar7)" ( identifier , identifier )))) ;) (labeled_statement "LAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }" statement_identifier : (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }" if (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" identifier == (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n    return pcVar7;\n  }" { (return_statement "return pcVar7;" return identifier ;) }))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (pointer_expression * IDENT) != (char_literal ' character '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) - LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) }))))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) )))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) )))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (string_literal " ")) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' character ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != IDENT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " escape_sequence escape_sequence escape_sequence ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT ))))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) || (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT) ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) != (pointer_expression * IDENT)) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) != (pointer_expression * IDENT)) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) != (pointer_expression * IDENT)) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) == (pointer_expression * IDENT)) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , IDENT , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ IDENT ]))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ IDENT ]))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "char * command_word_completion_function(char *param_1,int param_2)\n\n{\n  char cVar1;\n  void *pvVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  char *pcVar8;\n  size_t sVar9;\n  char *pcVar10;\n  ulong uVar11;\n  long lVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  long in_FS_OFFSET;\n  byte bVar15;\n  char *local_48;\n  long local_40;\n  \n  bVar15 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }\n  DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }\n  glob_ignore_case = 0;\n  pcVar7 = (char *)0x0;\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }\n  pcVar8 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar8,pcVar7);\nLAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }\n                    \n  __stack_chk_fail();\n}" (primitive_type "char") (pointer_declarator "* command_word_completion_function(char *param_1,int param_2)" (* "*") (function_declarator "command_word_completion_function(char *param_1,int param_2)" (identifier "command_word_completion_function") (parameter_list "(char *param_1,int param_2)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")")))) (compound_statement "{\n  char cVar1;\n  void *pvVar2;\n  int iVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  char *pcVar7;\n  char *pcVar8;\n  size_t sVar9;\n  char *pcVar10;\n  ulong uVar11;\n  long lVar12;\n  uint uVar13;\n  undefined8 *puVar14;\n  long in_FS_OFFSET;\n  byte bVar15;\n  char *local_48;\n  long local_40;\n  \n  bVar15 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }\n  DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }\n  glob_ignore_case = 0;\n  pcVar7 = (char *)0x0;\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }\n  pcVar7 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar7,pcVar8);\n  goto LAB_00181336;\n  while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }\n  pcVar8 = (char *)xmalloc(~uVar11);\n  pcVar7 = strcpy(pcVar8,pcVar7);\nLAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }\n                    \n  __stack_chk_fail();\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "void *pvVar2;" (primitive_type "void") (pointer_declarator "*pvVar2" (* "*") (identifier "pvVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "size_t sVar9;" (primitive_type "size_t") (identifier "sVar9") (; ";")) (declaration "char *pcVar10;" (primitive_type "char") (pointer_declarator "*pcVar10" (* "*") (identifier "pcVar10")) (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "long lVar12;" (sized_type_specifier "long" (long "long")) (identifier "lVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "undefined8 *puVar14;" (type_identifier "undefined8") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "byte bVar15;" (type_identifier "byte") (identifier "bVar15") (; ";")) (declaration "char *local_48;" (primitive_type "char") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (param_2 == 0) {\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }\n  else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    rl_filename_stat_hook = FUN_0017d349;\n    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }\n    if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }\n    DAT_00215c90 = 0;\n    DAT_00215c8c = 0;\n    iVar4 = absolute_pathname(param_1);\n    if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }\n    DAT_00215c80 = (char *)0x0;\n    DAT_00215c88 = uVar13;\n    pcVar7 = (char *)rl_variable_value("completion-ignore-case");\n    DAT_00215c7c = 0;\n    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }\n    if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }\n    DAT_00215c78 = FUN_0017dd63(param_1);\n    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }\n    if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }\n    DAT_00215ca0 = DAT_00215c98;\n    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }\n    lVar12 = -1;\n    pcVar7 = DAT_00215c98;\n    do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    DAT_00215c68 = ~(uint)lVar12 - 1;\n    if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }\n    pcVar7 = DAT_00215c98;\n    uVar11 = 0xffffffffffffffff;\n    pcVar8 = DAT_00215c98;\n    do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');\n    pcVar8 = (char *)xmalloc(~uVar11);\n    DAT_00215c58 = strcpy(pcVar8,pcVar7);\n    DAT_00215c50 = 0;\n    DAT_00215c60 = DAT_00215c58;\n    if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c8c = 5;\nLAB_00180787:\n    glob_ignore_case = DAT_00215c7c;\n    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);\n    glob_ignore_case = 0;\n    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n    DAT_00215c40 = 0;\n    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }\n  }" ({ "{") (expression_statement "rl_filename_stat_hook = FUN_0017d349;" (assignment_expression "rl_filename_stat_hook = FUN_0017d349" (identifier "rl_filename_stat_hook") (= "=") (identifier "FUN_0017d349")) (; ";")) (if_statement "if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {\n      free(DAT_00215ca0);\n    }" (if "if") (parenthesized_expression "((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98))" (( "(") (binary_expression "(DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)" (parenthesized_expression "(DAT_00215ca0 != (char *)0x0)" (( "(") (binary_expression "DAT_00215ca0 != (char *)0x0" (identifier "DAT_00215ca0") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(DAT_00215ca0 != DAT_00215c98)" (( "(") (binary_expression "DAT_00215ca0 != DAT_00215c98" (identifier "DAT_00215ca0") (!= "!=") (identifier "DAT_00215c98")) () ")"))) () ")")) (compound_statement "{\n      free(DAT_00215ca0);\n    }" ({ "{") (expression_statement "free(DAT_00215ca0);" (call_expression "free(DAT_00215ca0)" (identifier "free") (argument_list "(DAT_00215ca0)" (( "(") (identifier "DAT_00215ca0") () ")"))) (; ";")) (} "}"))) (if_statement "if (DAT_00215c98 != (char *)0x0) {\n      free(DAT_00215c98);\n    }" (if "if") (parenthesized_expression "(DAT_00215c98 != (char *)0x0)" (( "(") (binary_expression "DAT_00215c98 != (char *)0x0" (identifier "DAT_00215c98") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      free(DAT_00215c98);\n    }" ({ "{") (expression_statement "free(DAT_00215c98);" (call_expression "free(DAT_00215c98)" (identifier "free") (argument_list "(DAT_00215c98)" (( "(") (identifier "DAT_00215c98") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_00215c90 = 0;" (assignment_expression "DAT_00215c90 = 0" (identifier "DAT_00215c90") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00215c8c = 0;" (assignment_expression "DAT_00215c8c = 0" (identifier "DAT_00215c8c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = absolute_pathname(param_1);" (assignment_expression "iVar4 = absolute_pathname(param_1)" (identifier "iVar4") (= "=") (call_expression "absolute_pathname(param_1)" (identifier "absolute_pathname") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }\n    else {\n      uVar13 = 0;\n    }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar4 = absolute_program(param_1);\n      uVar13 = 0;\n      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }\n    }" ({ "{") (expression_statement "iVar4 = absolute_program(param_1);" (assignment_expression "iVar4 = absolute_program(param_1)" (identifier "iVar4") (= "=") (call_expression "absolute_program(param_1)" (identifier "absolute_program") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }" (if "if") (parenthesized_expression "((iVar4 == 0) && (uVar13 = 0, *param_1 != '~'))" (( "(") (binary_expression "(iVar4 == 0) && (uVar13 = 0, *param_1 != '~')" (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar13 = 0, *param_1 != '~')" (( "(") (comma_expression "uVar13 = 0, *param_1 != '~'" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (, ",") (binary_expression "*param_1 != '~'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (char_literal "'~'" (' "'") (character "~") (' "'")))) () ")"))) () ")")) (compound_statement "{\n        iVar4 = FUN_0017bd1e(param_1);\n        uVar13 = (uint)(iVar4 != 0);\n      }" ({ "{") (expression_statement "iVar4 = FUN_0017bd1e(param_1);" (assignment_expression "iVar4 = FUN_0017bd1e(param_1)" (identifier "iVar4") (= "=") (call_expression "FUN_0017bd1e(param_1)" (identifier "FUN_0017bd1e") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar13 = (uint)(iVar4 != 0);" (assignment_expression "uVar13 = (uint)(iVar4 != 0)" (identifier "uVar13") (= "=") (call_expression "(uint)(iVar4 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      uVar13 = 0;\n    }" (else "else") (compound_statement "{\n      uVar13 = 0;\n    }" ({ "{") (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "DAT_00215c80 = (char *)0x0;" (assignment_expression "DAT_00215c80 = (char *)0x0" (identifier "DAT_00215c80") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "DAT_00215c88 = uVar13;" (assignment_expression "DAT_00215c88 = uVar13" (identifier "DAT_00215c88") (= "=") (identifier "uVar13")) (; ";")) (expression_statement "pcVar7 = (char *)rl_variable_value("completion-ignore-case");" (assignment_expression "pcVar7 = (char *)rl_variable_value("completion-ignore-case")" (identifier "pcVar7") (= "=") (cast_expression "(char *)rl_variable_value("completion-ignore-case")" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "rl_variable_value("completion-ignore-case")" (identifier "rl_variable_value") (argument_list "("completion-ignore-case")" (( "(") (string_literal ""completion-ignore-case"" (" """) (string_content "completion-ignore-case") (" """)) () ")"))))) (; ";")) (expression_statement "DAT_00215c7c = 0;" (assignment_expression "DAT_00215c7c = 0" (identifier "DAT_00215c7c") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }" (if "if") (parenthesized_expression "((*pcVar7 == 'o') && (pcVar7[1] == 'n'))" (( "(") (binary_expression "(*pcVar7 == 'o') && (pcVar7[1] == 'n')" (parenthesized_expression "(*pcVar7 == 'o')" (( "(") (binary_expression "*pcVar7 == 'o'" (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) (== "==") (char_literal "'o'" (' "'") (character "o") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar7[1] == 'n')" (( "(") (binary_expression "pcVar7[1] == 'n'" (subscript_expression "pcVar7[1]" (identifier "pcVar7") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'n'" (' "'") (character "n") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      DAT_00215c7c = (uint)(pcVar7[2] == '\0');\n    }" ({ "{") (expression_statement "DAT_00215c7c = (uint)(pcVar7[2] == '\0');" (assignment_expression "DAT_00215c7c = (uint)(pcVar7[2] == '\0')" (identifier "DAT_00215c7c") (= "=") (call_expression "(uint)(pcVar7[2] == '\0')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(pcVar7[2] == '\0')" (( "(") (binary_expression "pcVar7[2] == '\0'" (subscript_expression "pcVar7[2]" (identifier "pcVar7") ([ "[") (number_literal "2") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) (; ";")) (} "}"))) (if_statement "if (DAT_00215d50 != (undefined8 *)0x0) {\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }" (if "if") (parenthesized_expression "(DAT_00215d50 != (undefined8 *)0x0)" (( "(") (binary_expression "DAT_00215d50 != (undefined8 *)0x0" (identifier "DAT_00215d50") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      free(DAT_00215d50);\n      DAT_00215d50 = (undefined8 *)0x0;\n    }" ({ "{") (expression_statement "free(DAT_00215d50);" (call_expression "free(DAT_00215d50)" (identifier "free") (argument_list "(DAT_00215d50)" (( "(") (identifier "DAT_00215d50") () ")"))) (; ";")) (expression_statement "DAT_00215d50 = (undefined8 *)0x0;" (assignment_expression "DAT_00215d50 = (undefined8 *)0x0" (identifier "DAT_00215d50") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "DAT_00215c78 = FUN_0017dd63(param_1);" (assignment_expression "DAT_00215c78 = FUN_0017dd63(param_1)" (identifier "DAT_00215c78") (= "=") (call_expression "FUN_0017dd63(param_1)" (identifier "FUN_0017dd63") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }" (if "if") (parenthesized_expression "((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0))" (( "(") (binary_expression "(DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)" (parenthesized_expression "(DAT_00215c78 == 0)" (( "(") (binary_expression "DAT_00215c78 == 0" (identifier "DAT_00215c78") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = absolute_program(param_1), iVar4 == 0)" (( "(") (comma_expression "iVar4 = absolute_program(param_1), iVar4 == 0" (assignment_expression "iVar4 = absolute_program(param_1)" (identifier "iVar4") (= "=") (call_expression "absolute_program(param_1)" (identifier "absolute_program") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (, ",") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      lVar12 = -1;\n      pcVar7 = DAT_00215c98;\n      do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      DAT_00215c68 = ~(uint)lVar12 - 1;\n      DAT_00215ca0 = DAT_00215c98;\n      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }\n      DAT_00215c48 = get_string_value("PATH");\n      DAT_00215d74 = 0;\n      DAT_00215c44 = 0;\n      DAT_00215c40 = 0;\n      if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }\n      DAT_00215c38 = (void *)all_visible_functions();\n      if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }\n      DAT_00215c30 = (void *)all_aliases();\n      goto LAB_00180925;\n    }" ({ "{") (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" (identifier "pcVar7") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" (do "do") (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" (identifier "pcVar7") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "DAT_00215c98 = strcpy(pcVar7,param_1);" (assignment_expression "DAT_00215c98 = strcpy(pcVar7,param_1)" (identifier "DAT_00215c98") (= "=") (call_expression "strcpy(pcVar7,param_1)" (identifier "strcpy") (argument_list "(pcVar7,param_1)" (( "(") (identifier "pcVar7") (, ",") (identifier "param_1") () ")")))) (; ";")) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" (identifier "lVar12") (= "=") (number_literal "-1")) (; ";")) (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" (identifier "pcVar7") (= "=") (identifier "DAT_00215c98")) (; ";")) (do_statement "do {\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" (do "do") (compound_statement "{\n        if (lVar12 == 0) break;\n        lVar12 = lVar12 + -1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" ({ "{") (if_statement "if (lVar12 == 0) break;" (if "if") (parenthesized_expression "(lVar12 == 0)" (( "(") (binary_expression "lVar12 == 0" (identifier "lVar12") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" (identifier "lVar12") (= "=") (binary_expression "lVar12 + -1" (identifier "lVar12") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "DAT_00215c68 = ~(uint)lVar12 - 1;" (assignment_expression "DAT_00215c68 = ~(uint)lVar12 - 1" (identifier "DAT_00215c68") (= "=") (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" (~ "~") (cast_expression "(uint)lVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar12"))) (- "-") (number_literal "1"))) (; ";")) (expression_statement "DAT_00215ca0 = DAT_00215c98;" (assignment_expression "DAT_00215ca0 = DAT_00215c98" (identifier "DAT_00215ca0") (= "=") (identifier "DAT_00215c98")) (; ";")) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }" (if "if") (parenthesized_expression "((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0))" (( "(") (binary_expression "(rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)" (parenthesized_expression "(rl_completion_found_quote != 0)" (( "(") (binary_expression "rl_completion_found_quote != 0" (identifier "rl_completion_found_quote") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(rl_completion_quote_character == 0)" (( "(") (binary_expression "rl_completion_quote_character == 0" (identifier "rl_completion_quote_character") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      }" ({ "{") (expression_statement "DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);" (assignment_expression "DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0)" (identifier "DAT_00215ca0") (= "=") (cast_expression "(char *)FUN_0017ac3b(DAT_00215c98,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017ac3b(DAT_00215c98,0)" (identifier "FUN_0017ac3b") (argument_list "(DAT_00215c98,0)" (( "(") (identifier "DAT_00215c98") (, ",") (number_literal "0") () ")"))))) (; ";")) (} "}"))) (expression_statement "DAT_00215c48 = get_string_value("PATH");" (assignment_expression "DAT_00215c48 = get_string_value("PATH")" (identifier "DAT_00215c48") (= "=") (call_expression "get_string_value("PATH")" (identifier "get_string_value") (argument_list "("PATH")" (( "(") (string_literal ""PATH"" (" """) (string_content "PATH") (" """)) () ")")))) (; ";")) (expression_statement "DAT_00215d74 = 0;" (assignment_expression "DAT_00215d74 = 0" (identifier "DAT_00215d74") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00215c44 = 0;" (assignment_expression "DAT_00215c44 = 0" (identifier "DAT_00215c44") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" (identifier "DAT_00215c40") (= "=") (number_literal "0")) (; ";")) (if_statement "if (DAT_00215c38 != (void *)0x0) {\n        free(DAT_00215c38);\n      }" (if "if") (parenthesized_expression "(DAT_00215c38 != (void *)0x0)" (( "(") (binary_expression "DAT_00215c38 != (void *)0x0" (identifier "DAT_00215c38") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(DAT_00215c38);\n      }" ({ "{") (expression_statement "free(DAT_00215c38);" (call_expression "free(DAT_00215c38)" (identifier "free") (argument_list "(DAT_00215c38)" (( "(") (identifier "DAT_00215c38") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_00215c38 = (void *)all_visible_functions();" (assignment_expression "DAT_00215c38 = (void *)all_visible_functions()" (identifier "DAT_00215c38") (= "=") (cast_expression "(void *)all_visible_functions()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "all_visible_functions()" (identifier "all_visible_functions") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (DAT_00215c30 != (void *)0x0) {\n        free(DAT_00215c30);\n      }" (if "if") (parenthesized_expression "(DAT_00215c30 != (void *)0x0)" (( "(") (binary_expression "DAT_00215c30 != (void *)0x0" (identifier "DAT_00215c30") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(DAT_00215c30);\n      }" ({ "{") (expression_statement "free(DAT_00215c30);" (call_expression "free(DAT_00215c30)" (identifier "free") (argument_list "(DAT_00215c30)" (( "(") (identifier "DAT_00215c30") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_00215c30 = (void *)all_aliases();" (assignment_expression "DAT_00215c30 = (void *)all_aliases()" (identifier "DAT_00215c30") (= "=") (cast_expression "(void *)all_aliases()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "all_aliases()" (identifier "all_aliases") (argument_list "()" (( "(") () ")"))))) (; ";")) (goto_statement "goto LAB_00180925;" (goto "goto") (statement_identifier "LAB_00180925") (; ";")) (} "}"))) (if_statement "if (*param_1 == '~') {\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }\n    else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" (if "if") (parenthesized_expression "(*param_1 == '~')" (( "(") (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (char_literal "'~'" (' "'") (character "~") (' "'"))) () ")")) (compound_statement "{\n      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      DAT_00215c70 = pcVar7;\n      pcVar8 = strchr(pcVar7,0x2f);\n      if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }\n    }" ({ "{") (expression_statement "DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);" (assignment_expression "DAT_00215c98 = (char *)bash_tilde_expand(param_1,0)" (identifier "DAT_00215c98") (= "=") (cast_expression "(char *)bash_tilde_expand(param_1,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bash_tilde_expand(param_1,0)" (identifier "bash_tilde_expand") (argument_list "(param_1,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" (identifier "pcVar7") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" (do "do") (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" (identifier "pcVar7") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "pcVar7 = strcpy(pcVar7,param_1);" (assignment_expression "pcVar7 = strcpy(pcVar7,param_1)" (identifier "pcVar7") (= "=") (call_expression "strcpy(pcVar7,param_1)" (identifier "strcpy") (argument_list "(pcVar7,param_1)" (( "(") (identifier "pcVar7") (, ",") (identifier "param_1") () ")")))) (; ";")) (expression_statement "DAT_00215c70 = pcVar7;" (assignment_expression "DAT_00215c70 = pcVar7" (identifier "DAT_00215c70") (= "=") (identifier "pcVar7")) (; ";")) (expression_statement "pcVar8 = strchr(pcVar7,0x2f);" (assignment_expression "pcVar8 = strchr(pcVar7,0x2f)" (identifier "pcVar8") (= "=") (call_expression "strchr(pcVar7,0x2f)" (identifier "strchr") (argument_list "(pcVar7,0x2f)" (( "(") (identifier "pcVar7") (, ",") (number_literal "0x2f") () ")")))) (; ";")) (if_statement "if (pcVar8 == (char *)0x0) {\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }\n      else {\n        *pcVar8 = '\0';\n      }" (if "if") (parenthesized_expression "(pcVar8 == (char *)0x0)" (( "(") (binary_expression "pcVar8 == (char *)0x0" (identifier "pcVar8") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(pcVar7);\n        DAT_00215c70 = (char *)0x0;\n      }" ({ "{") (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" (identifier "free") (argument_list "(pcVar7)" (( "(") (identifier "pcVar7") () ")"))) (; ";")) (expression_statement "DAT_00215c70 = (char *)0x0;" (assignment_expression "DAT_00215c70 = (char *)0x0" (identifier "DAT_00215c70") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n        *pcVar8 = '\0';\n      }" (else "else") (compound_statement "{\n        *pcVar8 = '\0';\n      }" ({ "{") (expression_statement "*pcVar8 = '\0';" (assignment_expression "*pcVar8 = '\0'" (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")))) (} "}")) (else_clause "else if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" (else "else") (if_statement "if (dircomplete_expand == 0) {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }\n    else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" (if "if") (parenthesized_expression "(dircomplete_expand == 0)" (( "(") (binary_expression "dircomplete_expand == 0" (identifier "dircomplete_expand") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n    }" ({ "{") (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" (identifier "pcVar7") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" (do "do") (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" (identifier "pcVar7") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "DAT_00215c98 = strcpy(pcVar7,param_1);" (assignment_expression "DAT_00215c98 = strcpy(pcVar7,param_1)" (identifier "DAT_00215c98") (= "=") (call_expression "strcpy(pcVar7,param_1)" (identifier "strcpy") (argument_list "(pcVar7,param_1)" (( "(") (identifier "pcVar7") (, ",") (identifier "param_1") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" (else "else") (compound_statement "{\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      DAT_00215c98 = strcpy(pcVar7,param_1);\n      FUN_0017d87c(&DAT_00215c98);\n    }" ({ "{") (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" (identifier "pcVar7") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" (do "do") (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" (identifier "pcVar7") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "DAT_00215c98 = strcpy(pcVar7,param_1);" (assignment_expression "DAT_00215c98 = strcpy(pcVar7,param_1)" (identifier "DAT_00215c98") (= "=") (call_expression "strcpy(pcVar7,param_1)" (identifier "strcpy") (argument_list "(pcVar7,param_1)" (( "(") (identifier "pcVar7") (, ",") (identifier "param_1") () ")")))) (; ";")) (expression_statement "FUN_0017d87c(&DAT_00215c98);" (call_expression "FUN_0017d87c(&DAT_00215c98)" (identifier "FUN_0017d87c") (argument_list "(&DAT_00215c98)" (( "(") (pointer_expression "&DAT_00215c98" (& "&") (identifier "DAT_00215c98")) () ")"))) (; ";")) (} "}")))))) (expression_statement "DAT_00215ca0 = DAT_00215c98;" (assignment_expression "DAT_00215ca0 = DAT_00215c98" (identifier "DAT_00215ca0") (= "=") (identifier "DAT_00215c98")) (; ";")) (if_statement "if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }" (if "if") (parenthesized_expression "((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0))" (( "(") (binary_expression "(rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)" (parenthesized_expression "(rl_completion_found_quote != 0)" (( "(") (binary_expression "rl_completion_found_quote != 0" (identifier "rl_completion_found_quote") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(rl_completion_quote_character == 0)" (( "(") (binary_expression "rl_completion_quote_character == 0" (identifier "rl_completion_quote_character") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);\n      DAT_00215ca0 = pcVar7;\n      free(DAT_00215c98);\n      DAT_00215c98 = pcVar7;\n    }" ({ "{") (expression_statement "pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);" (assignment_expression "pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0)" (identifier "pcVar7") (= "=") (cast_expression "(char *)FUN_0017ac3b(DAT_00215c98,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017ac3b(DAT_00215c98,0)" (identifier "FUN_0017ac3b") (argument_list "(DAT_00215c98,0)" (( "(") (identifier "DAT_00215c98") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "DAT_00215ca0 = pcVar7;" (assignment_expression "DAT_00215ca0 = pcVar7" (identifier "DAT_00215ca0") (= "=") (identifier "pcVar7")) (; ";")) (expression_statement "free(DAT_00215c98);" (call_expression "free(DAT_00215c98)" (identifier "free") (argument_list "(DAT_00215c98)" (( "(") (identifier "DAT_00215c98") () ")"))) (; ";")) (expression_statement "DAT_00215c98 = pcVar7;" (assignment_expression "DAT_00215c98 = pcVar7" (identifier "DAT_00215c98") (= "=") (identifier "pcVar7")) (; ";")) (} "}"))) (expression_statement "lVar12 = -1;" (assignment_expression "lVar12 = -1" (identifier "lVar12") (= "=") (number_literal "-1")) (; ";")) (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" (identifier "pcVar7") (= "=") (identifier "DAT_00215c98")) (; ";")) (do_statement "do {\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');" (do "do") (compound_statement "{\n      if (lVar12 == 0) break;\n      lVar12 = lVar12 + -1;\n      cVar1 = *pcVar7;\n      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    }" ({ "{") (if_statement "if (lVar12 == 0) break;" (if "if") (parenthesized_expression "(lVar12 == 0)" (( "(") (binary_expression "lVar12 == 0" (identifier "lVar12") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar12 = lVar12 + -1;" (assignment_expression "lVar12 = lVar12 + -1" (identifier "lVar12") (= "=") (binary_expression "lVar12 + -1" (identifier "lVar12") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "DAT_00215c68 = ~(uint)lVar12 - 1;" (assignment_expression "DAT_00215c68 = ~(uint)lVar12 - 1" (identifier "DAT_00215c68") (= "=") (binary_expression "~(uint)lVar12 - 1" (unary_expression "~(uint)lVar12" (~ "~") (cast_expression "(uint)lVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar12"))) (- "-") (number_literal "1"))) (; ";")) (if_statement "if (DAT_00215c60 != (char *)0x0) {\n      free(DAT_00215c60);\n    }" (if "if") (parenthesized_expression "(DAT_00215c60 != (char *)0x0)" (( "(") (binary_expression "DAT_00215c60 != (char *)0x0" (identifier "DAT_00215c60") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      free(DAT_00215c60);\n    }" ({ "{") (expression_statement "free(DAT_00215c60);" (call_expression "free(DAT_00215c60)" (identifier "free") (argument_list "(DAT_00215c60)" (( "(") (identifier "DAT_00215c60") () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" (identifier "pcVar7") (= "=") (identifier "DAT_00215c98")) (; ";")) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar8 = DAT_00215c98;" (assignment_expression "pcVar8 = DAT_00215c98" (identifier "pcVar8") (= "=") (identifier "DAT_00215c98")) (; ";")) (do_statement "do {\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    } while (cVar1 != '\0');" (do "do") (compound_statement "{\n      if (uVar11 == 0) break;\n      uVar11 = uVar11 - 1;\n      cVar1 = *pcVar8;\n      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" (identifier "cVar1") (= "=") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8"))) (; ";")) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" (identifier "pcVar8") (= "=") (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" (identifier "pcVar8") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" (identifier "pcVar8") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "DAT_00215c58 = strcpy(pcVar8,pcVar7);" (assignment_expression "DAT_00215c58 = strcpy(pcVar8,pcVar7)" (identifier "DAT_00215c58") (= "=") (call_expression "strcpy(pcVar8,pcVar7)" (identifier "strcpy") (argument_list "(pcVar8,pcVar7)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar7") () ")")))) (; ";")) (expression_statement "DAT_00215c50 = 0;" (assignment_expression "DAT_00215c50 = 0" (identifier "DAT_00215c50") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00215c60 = DAT_00215c58;" (assignment_expression "DAT_00215c60 = DAT_00215c58" (identifier "DAT_00215c60") (= "=") (identifier "DAT_00215c58")) (; ";")) (if_statement "if (DAT_00215c78 == 0) {\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" (if "if") (parenthesized_expression "(DAT_00215c78 == 0)" (( "(") (binary_expression "DAT_00215c78 == 0" (identifier "DAT_00215c78") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }\n      DAT_00215c8c = 4;\nLAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }\n      iVar4 = absolute_program(DAT_00215c98);\n      if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" ({ "{") (if_statement "if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }" (if "if") (parenthesized_expression "((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0))" (( "(") (binary_expression "(dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)" (parenthesized_expression "(dircomplete_expand != 0)" (( "(") (binary_expression "dircomplete_expand != 0" (identifier "dircomplete_expand") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)" (( "(") (comma_expression "iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0" (assignment_expression "iVar4 = path_dot_or_dotdot(DAT_00215c58)" (identifier "iVar4") (= "=") (call_expression "path_dot_or_dotdot(DAT_00215c58)" (identifier "path_dot_or_dotdot") (argument_list "(DAT_00215c58)" (( "(") (identifier "DAT_00215c58") () ")")))) (, ",") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        dircomplete_expand = 0;\n        set_directory_hook();\n        dircomplete_expand = 1;\n      }" ({ "{") (expression_statement "dircomplete_expand = 0;" (assignment_expression "dircomplete_expand = 0" (identifier "dircomplete_expand") (= "=") (number_literal "0")) (; ";")) (expression_statement "set_directory_hook();" (call_expression "set_directory_hook()" (identifier "set_directory_hook") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "dircomplete_expand = 1;" (assignment_expression "dircomplete_expand = 1" (identifier "dircomplete_expand") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "DAT_00215c8c = 4;" (assignment_expression "DAT_00215c8c = 4" (identifier "DAT_00215c8c") (= "=") (number_literal "4")) (; ";")) (labeled_statement "LAB_00180a7a:\n      while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }" (statement_identifier "LAB_00180a7a") (: ":") (while_statement "while( true ) {\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);\n        DAT_00215c80 = pcVar7;\n        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }\n        DAT_00215c50 = 1;\n        if (pcVar7 == (char *)0x0) break;\n        iVar4 = absolute_program(DAT_00215c98);\n        if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }\n        free(pcVar8);\n      }" ({ "{") (expression_statement "pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);" (assignment_expression "pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50)" (identifier "pcVar7") (= "=") (cast_expression "(char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "rl_filename_completion_function(DAT_00215c58,DAT_00215c50)" (identifier "rl_filename_completion_function") (argument_list "(DAT_00215c58,DAT_00215c50)" (( "(") (identifier "DAT_00215c58") (, ",") (identifier "DAT_00215c50") () ")"))))) (; ";")) (expression_statement "DAT_00215c80 = pcVar7;" (assignment_expression "DAT_00215c80 = pcVar7" (identifier "DAT_00215c80") (= "=") (identifier "pcVar7")) (; ";")) (if_statement "if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {\n          set_directory_hook();\n        }" (if "if") (parenthesized_expression "((DAT_00215c8c == 4) && (dircomplete_expand != 0))" (( "(") (binary_expression "(DAT_00215c8c == 4) && (dircomplete_expand != 0)" (parenthesized_expression "(DAT_00215c8c == 4)" (( "(") (binary_expression "DAT_00215c8c == 4" (identifier "DAT_00215c8c") (== "==") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "(dircomplete_expand != 0)" (( "(") (binary_expression "dircomplete_expand != 0" (identifier "dircomplete_expand") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          set_directory_hook();\n        }" ({ "{") (expression_statement "set_directory_hook();" (call_expression "set_directory_hook()" (identifier "set_directory_hook") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "DAT_00215c50 = 1;" (assignment_expression "DAT_00215c50 = 1" (identifier "DAT_00215c50") (= "=") (number_literal "1")) (; ";")) (if_statement "if (pcVar7 == (char *)0x0) break;" (if "if") (parenthesized_expression "(pcVar7 == (char *)0x0)" (( "(") (binary_expression "pcVar7 == (char *)0x0" (identifier "pcVar7") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = absolute_program(DAT_00215c98);" (assignment_expression "iVar4 = absolute_program(DAT_00215c98)" (identifier "iVar4") (= "=") (call_expression "absolute_program(DAT_00215c98)" (identifier "absolute_program") (argument_list "(DAT_00215c98)" (( "(") (identifier "DAT_00215c98") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }\n        else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          pcVar7 = strrchr(DAT_00215c80,0x2f);\n          pcVar8 = DAT_00215c80;\n          if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }\n        }" ({ "{") (expression_statement "pcVar7 = strrchr(DAT_00215c80,0x2f);" (assignment_expression "pcVar7 = strrchr(DAT_00215c80,0x2f)" (identifier "pcVar7") (= "=") (call_expression "strrchr(DAT_00215c80,0x2f)" (identifier "strrchr") (argument_list "(DAT_00215c80,0x2f)" (( "(") (identifier "DAT_00215c80") (, ",") (number_literal "0x2f") () ")")))) (; ";")) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" (identifier "pcVar8") (= "=") (identifier "DAT_00215c80")) (; ";")) (if_statement "if (pcVar7 != (char *)0x0) {\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }" (if "if") (parenthesized_expression "(pcVar7 != (char *)0x0)" (( "(") (binary_expression "pcVar7 != (char *)0x0" (identifier "pcVar7") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            pcVar7 = pcVar7 + 1;\n            if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            pcVar8 = DAT_00215c80;\n            if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }\n          }" ({ "{") (expression_statement "pcVar7 = pcVar7 + 1;" (assignment_expression "pcVar7 = pcVar7 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + 1" (identifier "pcVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (DAT_00215c7c == 0) {\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }\n            else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" (if "if") (parenthesized_expression "(DAT_00215c7c == 0)" (( "(") (binary_expression "DAT_00215c7c == 0" (identifier "DAT_00215c7c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" ({ "{") (expression_statement "iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" (identifier "iVar4") (= "=") (call_expression "strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" (identifier "strncmp") (argument_list "(pcVar7,DAT_00215c98,(long)DAT_00215c68)" (( "(") (identifier "pcVar7") (, ",") (identifier "DAT_00215c98") (, ",") (cast_expression "(long)DAT_00215c68" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00215c68")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" (else "else") (compound_statement "{\n              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);\n            }" ({ "{") (expression_statement "iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" (identifier "iVar4") (= "=") (call_expression "strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68)" (identifier "strncasecmp") (argument_list "(pcVar7,DAT_00215c98,(long)DAT_00215c68)" (( "(") (identifier "pcVar7") (, ",") (identifier "DAT_00215c98") (, ",") (cast_expression "(long)DAT_00215c68" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00215c68")) () ")")))) (; ";")) (} "}")))) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" (identifier "pcVar8") (= "=") (identifier "DAT_00215c80")) (; ";")) (if_statement "if (iVar4 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');\n              pcVar8 = (char *)xmalloc(~uVar11);\n              pcVar7 = strcpy(pcVar8,pcVar7);\n              goto LAB_001812ba;\n            }" ({ "{") (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" (identifier "pcVar8") (= "=") (identifier "pcVar7")) (; ";")) (do_statement "do {\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              } while (cVar1 != '\0');" (do "do") (compound_statement "{\n                if (uVar11 == 0) break;\n                uVar11 = uVar11 - 1;\n                cVar1 = *pcVar8;\n                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n              }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" (identifier "cVar1") (= "=") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8"))) (; ";")) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" (identifier "pcVar8") (= "=") (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" (identifier "pcVar8") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" (identifier "pcVar8") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "pcVar7 = strcpy(pcVar8,pcVar7);" (assignment_expression "pcVar7 = strcpy(pcVar8,pcVar7)" (identifier "pcVar7") (= "=") (call_expression "strcpy(pcVar8,pcVar7)" (identifier "strcpy") (argument_list "(pcVar8,pcVar7)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar7") () ")")))) (; ";")) (goto_statement "goto LAB_001812ba;" (goto "goto") (statement_identifier "LAB_001812ba") (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }" (else "else") (compound_statement "{\n          if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          pcVar7 = DAT_00215c80;\n          if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }\n          pcVar10 = DAT_00215c80;\n          if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }\n          free(pcVar7);\n          pcVar8 = DAT_00215c80;\n          if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }\n        }" ({ "{") (if_statement "if (DAT_00215c7c == 0) {\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }\n          else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" (if "if") (parenthesized_expression "(DAT_00215c7c == 0)" (( "(") (binary_expression "DAT_00215c7c == 0" (identifier "DAT_00215c7c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" ({ "{") (expression_statement "iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" (identifier "iVar4") (= "=") (call_expression "strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" (identifier "strncmp") (argument_list "(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" (( "(") (identifier "DAT_00215c80") (, ",") (identifier "DAT_00215c98") (, ",") (cast_expression "(long)DAT_00215c68" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00215c68")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" (else "else") (compound_statement "{\n            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);\n          }" ({ "{") (expression_statement "iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);" (assignment_expression "iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" (identifier "iVar4") (= "=") (call_expression "strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" (identifier "strncasecmp") (argument_list "(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68)" (( "(") (identifier "DAT_00215c80") (, ",") (identifier "DAT_00215c98") (, ",") (cast_expression "(long)DAT_00215c68" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00215c68")) () ")")))) (; ";")) (} "}")))) (expression_statement "pcVar7 = DAT_00215c80;" (assignment_expression "pcVar7 = DAT_00215c80" (identifier "pcVar7") (= "=") (identifier "DAT_00215c80")) (; ";")) (if_statement "if (*param_1 == '~') {\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }\n          else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }" (if "if") (parenthesized_expression "(*param_1 == '~')" (( "(") (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (char_literal "'~'" (' "'") (character "~") (' "'"))) () ")")) (compound_statement "{\n            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);\n          }" ({ "{") (expression_statement "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);" (assignment_expression "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70)" (identifier "pcVar7") (= "=") (cast_expression "(char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017b4b4(DAT_00215c80,DAT_00215c70)" (identifier "FUN_0017b4b4") (argument_list "(DAT_00215c80,DAT_00215c70)" (( "(") (identifier "DAT_00215c80") (, ",") (identifier "DAT_00215c70") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }" (else "else") (compound_statement "{\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            pcVar7 = strcpy(pcVar8,pcVar7);\n          }" ({ "{") (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" (identifier "pcVar8") (= "=") (identifier "DAT_00215c80")) (; ";")) (do_statement "do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');" (do "do") (compound_statement "{\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" (identifier "cVar1") (= "=") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8"))) (; ";")) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" (identifier "pcVar8") (= "=") (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" (identifier "pcVar8") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" (identifier "pcVar8") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "pcVar7 = strcpy(pcVar8,pcVar7);" (assignment_expression "pcVar7 = strcpy(pcVar8,pcVar7)" (identifier "pcVar7") (= "=") (call_expression "strcpy(pcVar8,pcVar7)" (identifier "strcpy") (argument_list "(pcVar8,pcVar7)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar7") () ")")))) (; ";")) (} "}")))) (expression_statement "pcVar10 = DAT_00215c80;" (assignment_expression "pcVar10 = DAT_00215c80" (identifier "pcVar10") (= "=") (identifier "DAT_00215c80")) (; ";")) (if_statement "if (iVar4 == 0) {\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001812ba:\n            iVar4 = DAT_00215c90;\n            pcVar10 = DAT_00215c80;\n            uVar11 = 0xffffffffffffffff;\n            pcVar8 = DAT_00215c80;\n            do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');\n            pcVar8 = (char *)xmalloc(~uVar11);\n            local_48 = strcpy(pcVar8,pcVar10);\n            FUN_0017d87c(&local_48);\n            if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }\n            free(local_48);\n            pcVar8 = DAT_00215c80;\n            if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }\n          }" ({ "{") (labeled_statement "LAB_001812ba:\n            iVar4 = DAT_00215c90;" (statement_identifier "LAB_001812ba") (: ":") (expression_statement "iVar4 = DAT_00215c90;" (assignment_expression "iVar4 = DAT_00215c90" (identifier "iVar4") (= "=") (identifier "DAT_00215c90")) (; ";"))) (expression_statement "pcVar10 = DAT_00215c80;" (assignment_expression "pcVar10 = DAT_00215c80" (identifier "pcVar10") (= "=") (identifier "DAT_00215c80")) (; ";")) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" (identifier "pcVar8") (= "=") (identifier "DAT_00215c80")) (; ";")) (do_statement "do {\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            } while (cVar1 != '\0');" (do "do") (compound_statement "{\n              if (uVar11 == 0) break;\n              uVar11 = uVar11 - 1;\n              cVar1 = *pcVar8;\n              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n            }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" (identifier "cVar1") (= "=") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8"))) (; ";")) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" (identifier "pcVar8") (= "=") (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" (identifier "pcVar8") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" (identifier "pcVar8") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "local_48 = strcpy(pcVar8,pcVar10);" (assignment_expression "local_48 = strcpy(pcVar8,pcVar10)" (identifier "local_48") (= "=") (call_expression "strcpy(pcVar8,pcVar10)" (identifier "strcpy") (argument_list "(pcVar8,pcVar10)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar10") () ")")))) (; ";")) (expression_statement "FUN_0017d87c(&local_48);" (call_expression "FUN_0017d87c(&local_48)" (identifier "FUN_0017d87c") (argument_list "(&local_48)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")"))) (; ";")) (if_statement "if (iVar4 == 0) {\n              iVar4 = executable_or_directory(local_48);\n            }\n            else {\n              iVar4 = executable_file(local_48);\n            }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar4 = executable_or_directory(local_48);\n            }" ({ "{") (expression_statement "iVar4 = executable_or_directory(local_48);" (assignment_expression "iVar4 = executable_or_directory(local_48)" (identifier "iVar4") (= "=") (call_expression "executable_or_directory(local_48)" (identifier "executable_or_directory") (argument_list "(local_48)" (( "(") (identifier "local_48") () ")")))) (; ";")) (} "}")) (else_clause "else {\n              iVar4 = executable_file(local_48);\n            }" (else "else") (compound_statement "{\n              iVar4 = executable_file(local_48);\n            }" ({ "{") (expression_statement "iVar4 = executable_file(local_48);" (assignment_expression "iVar4 = executable_file(local_48)" (identifier "iVar4") (= "=") (call_expression "executable_file(local_48)" (identifier "executable_file") (argument_list "(local_48)" (( "(") (identifier "local_48") () ")")))) (; ";")) (} "}")))) (expression_statement "free(local_48);" (call_expression "free(local_48)" (identifier "free") (argument_list "(local_48)" (( "(") (identifier "local_48") () ")"))) (; ";")) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" (identifier "pcVar8") (= "=") (identifier "DAT_00215c80")) (; ";")) (if_statement "if (iVar4 != 0) {\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }\n              free(pcVar8);\n              DAT_00215c80 = "";\n              goto LAB_00181336;\n            }" ({ "{") (if_statement "if (DAT_00215c80 != pcVar10) {\n                free(pcVar10);\n              }" (if "if") (parenthesized_expression "(DAT_00215c80 != pcVar10)" (( "(") (binary_expression "DAT_00215c80 != pcVar10" (identifier "DAT_00215c80") (!= "!=") (identifier "pcVar10")) () ")")) (compound_statement "{\n                free(pcVar10);\n              }" ({ "{") (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" (identifier "free") (argument_list "(pcVar10)" (( "(") (identifier "pcVar10") () ")"))) (; ";")) (} "}"))) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" (identifier "free") (argument_list "(pcVar8)" (( "(") (identifier "pcVar8") () ")"))) (; ";")) (expression_statement "DAT_00215c80 = "";" (assignment_expression "DAT_00215c80 = """ (identifier "DAT_00215c80") (= "=") (string_literal """" (" """) (" """))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (} "}"))) (} "}"))) (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" (identifier "free") (argument_list "(pcVar7)" (( "(") (identifier "pcVar7") () ")"))) (; ";")) (expression_statement "pcVar8 = DAT_00215c80;" (assignment_expression "pcVar8 = DAT_00215c80" (identifier "pcVar8") (= "=") (identifier "DAT_00215c80")) (; ";")) (if_statement "if (DAT_00215c80 != pcVar10) {\n            free(pcVar10);\n          }" (if "if") (parenthesized_expression "(DAT_00215c80 != pcVar10)" (( "(") (binary_expression "DAT_00215c80 != pcVar10" (identifier "DAT_00215c80") (!= "!=") (identifier "pcVar10")) () ")")) (compound_statement "{\n            free(pcVar10);\n          }" ({ "{") (expression_statement "free(pcVar10);" (call_expression "free(pcVar10)" (identifier "free") (argument_list "(pcVar10)" (( "(") (identifier "pcVar10") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" (identifier "free") (argument_list "(pcVar8)" (( "(") (identifier "pcVar8") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar4 = absolute_program(DAT_00215c98);" (assignment_expression "iVar4 = absolute_program(DAT_00215c98)" (identifier "iVar4") (= "=") (call_expression "absolute_program(DAT_00215c98)" (identifier "absolute_program") (argument_list "(DAT_00215c98)" (( "(") (identifier "DAT_00215c98") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);\n        if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }\n        goto LAB_00180a7a;\n      }" ({ "{") (labeled_statement "LAB_00180e1e:\n        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);" (statement_identifier "LAB_00180e1e") (: ":") (expression_statement "DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);" (assignment_expression "DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0)" (identifier "DAT_00215c50") (= "=") (call_expression "(uint)(DAT_00215c80 != (char *)0x0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(DAT_00215c80 != (char *)0x0)" (( "(") (binary_expression "DAT_00215c80 != (char *)0x0" (identifier "DAT_00215c80") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")))) (; ";"))) (if_statement "if (DAT_00215c80 == (char *)0x0) {\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }" (if "if") (parenthesized_expression "(DAT_00215c80 == (char *)0x0)" (( "(") (binary_expression "DAT_00215c80 == (char *)0x0" (identifier "DAT_00215c80") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }\n          pcVar7 = (char *)0x0;\n          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;\n          DAT_00215c90 = 1;\n          if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }\n          pcVar8 = pcVar7;\n          if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }\n          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }\n          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }\n          if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }\n          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);\n          DAT_00215c60 = pcVar7;\n          pcVar10 = strpbrk(pcVar7,"\"\'\\");\n          if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }\n          DAT_00215c58 = pcVar7;\n          free(pcVar8);\n        }" ({ "{") (if_statement "if (DAT_00215c48 == 0) {\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }" (if "if") (parenthesized_expression "(DAT_00215c48 == 0)" (( "(") (binary_expression "DAT_00215c48 == 0" (identifier "DAT_00215c48") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            pcVar7 = (char *)0x0;\n            goto LAB_00181336;\n          }" ({ "{") (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" (identifier "pcVar7") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (} "}"))) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" (identifier "pcVar7") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )) goto LAB_00181336;" (if "if") (parenthesized_expression "((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             ))" (( "(") (binary_expression "(*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||\n             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )" (parenthesized_expression "(*(char *)(DAT_00215c48 + DAT_00215c44) == '\0')" (( "(") (binary_expression "*(char *)(DAT_00215c48 + DAT_00215c44) == '\0'" (pointer_expression "*(char *)(DAT_00215c48 + DAT_00215c44)" (* "*") (cast_expression "(char *)(DAT_00215c48 + DAT_00215c44)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00215c48 + DAT_00215c44)" (( "(") (binary_expression "DAT_00215c48 + DAT_00215c44" (identifier "DAT_00215c48") (+ "+") (identifier "DAT_00215c44")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0\n             )" (( "(") (comma_expression "pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0" (assignment_expression "pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44)" (identifier "pcVar7") (= "=") (cast_expression "(char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "extract_colon_unit(DAT_00215c48,&DAT_00215c44)" (identifier "extract_colon_unit") (argument_list "(DAT_00215c48,&DAT_00215c44)" (( "(") (identifier "DAT_00215c48") (, ",") (pointer_expression "&DAT_00215c44" (& "&") (identifier "DAT_00215c44")) () ")"))))) (, ",") (binary_expression "pcVar7 == (char *)0x0" (identifier "pcVar7") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";"))) (expression_statement "DAT_00215c90 = 1;" (assignment_expression "DAT_00215c90 = 1" (identifier "DAT_00215c90") (= "=") (number_literal "1")) (; ";")) (if_statement "if (*pcVar7 == '\0') {\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }" (if "if") (parenthesized_expression "(*pcVar7 == '\0')" (( "(") (binary_expression "*pcVar7 == '\0'" (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            free(pcVar7);\n            pcVar7 = (char *)xmalloc(2);\n            pcVar7[0] = '.';\n            pcVar7[1] = '\0';\n          }" ({ "{") (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" (identifier "free") (argument_list "(pcVar7)" (( "(") (identifier "pcVar7") () ")"))) (; ";")) (expression_statement "pcVar7 = (char *)xmalloc(2);" (assignment_expression "pcVar7 = (char *)xmalloc(2)" (identifier "pcVar7") (= "=") (cast_expression "(char *)xmalloc(2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(2)" (identifier "xmalloc") (argument_list "(2)" (( "(") (number_literal "2") () ")"))))) (; ";")) (expression_statement "pcVar7[0] = '.';" (assignment_expression "pcVar7[0] = '.'" (subscript_expression "pcVar7[0]" (identifier "pcVar7") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'.'" (' "'") (character ".") (' "'"))) (; ";")) (expression_statement "pcVar7[1] = '\0';" (assignment_expression "pcVar7[1] = '\0'" (subscript_expression "pcVar7[1]" (identifier "pcVar7") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}"))) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" (identifier "pcVar8") (= "=") (identifier "pcVar7")) (; ";")) (if_statement "if (*pcVar7 == '~') {\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }" (if "if") (parenthesized_expression "(*pcVar7 == '~')" (( "(") (binary_expression "*pcVar7 == '~'" (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) (== "==") (char_literal "'~'" (' "'") (character "~") (' "'"))) () ")")) (compound_statement "{\n            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);\n            free(pcVar7);\n          }" ({ "{") (expression_statement "pcVar8 = (char *)bash_tilde_expand(pcVar7,0);" (assignment_expression "pcVar8 = (char *)bash_tilde_expand(pcVar7,0)" (identifier "pcVar8") (= "=") (cast_expression "(char *)bash_tilde_expand(pcVar7,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bash_tilde_expand(pcVar7,0)" (identifier "bash_tilde_expand") (argument_list "(pcVar7,0)" (( "(") (identifier "pcVar7") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" (identifier "free") (argument_list "(pcVar7)" (( "(") (identifier "pcVar7") () ")"))) (; ";")) (} "}"))) (if_statement "if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {\n            DAT_00215d74 = 1;\n          }" (if "if") (parenthesized_expression "((*pcVar8 == '.') && (pcVar8[1] == '\0'))" (( "(") (binary_expression "(*pcVar8 == '.') && (pcVar8[1] == '\0')" (parenthesized_expression "(*pcVar8 == '.')" (( "(") (binary_expression "*pcVar8 == '.'" (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar8[1] == '\0')" (( "(") (binary_expression "pcVar8[1] == '\0'" (subscript_expression "pcVar8[1]" (identifier "pcVar8") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            DAT_00215d74 = 1;\n          }" ({ "{") (expression_statement "DAT_00215d74 = 1;" (assignment_expression "DAT_00215d74 = 1" (identifier "DAT_00215d74") (= "=") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {\n            free(DAT_00215c58);\n          }" (if "if") (parenthesized_expression "((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60))" (( "(") (binary_expression "(DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)" (parenthesized_expression "(DAT_00215c58 != (char *)0x0)" (( "(") (binary_expression "DAT_00215c58 != (char *)0x0" (identifier "DAT_00215c58") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(DAT_00215c58 != DAT_00215c60)" (( "(") (binary_expression "DAT_00215c58 != DAT_00215c60" (identifier "DAT_00215c58") (!= "!=") (identifier "DAT_00215c60")) () ")"))) () ")")) (compound_statement "{\n            free(DAT_00215c58);\n          }" ({ "{") (expression_statement "free(DAT_00215c58);" (call_expression "free(DAT_00215c58)" (identifier "free") (argument_list "(DAT_00215c58)" (( "(") (identifier "DAT_00215c58") () ")"))) (; ";")) (} "}"))) (if_statement "if (DAT_00215c60 != (char *)0x0) {\n            free(DAT_00215c60);\n          }" (if "if") (parenthesized_expression "(DAT_00215c60 != (char *)0x0)" (( "(") (binary_expression "DAT_00215c60 != (char *)0x0" (identifier "DAT_00215c60") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            free(DAT_00215c60);\n          }" ({ "{") (expression_statement "free(DAT_00215c60);" (call_expression "free(DAT_00215c60)" (identifier "free") (argument_list "(DAT_00215c60)" (( "(") (identifier "DAT_00215c60") () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);" (assignment_expression "pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0)" (identifier "pcVar7") (= "=") (cast_expression "(char *)sh_makepath(pcVar8,DAT_00215c98,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "sh_makepath(pcVar8,DAT_00215c98,0)" (identifier "sh_makepath") (argument_list "(pcVar8,DAT_00215c98,0)" (( "(") (identifier "pcVar8") (, ",") (identifier "DAT_00215c98") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "DAT_00215c60 = pcVar7;" (assignment_expression "DAT_00215c60 = pcVar7" (identifier "DAT_00215c60") (= "=") (identifier "pcVar7")) (; ";")) (expression_statement "pcVar10 = strpbrk(pcVar7,"\"\'\\");" (assignment_expression "pcVar10 = strpbrk(pcVar7,"\"\'\\")" (identifier "pcVar10") (= "=") (call_expression "strpbrk(pcVar7,"\"\'\\")" (identifier "strpbrk") (argument_list "(pcVar7,"\"\'\\")" (( "(") (identifier "pcVar7") (, ",") (string_literal ""\"\'\\"" (" """) (escape_sequence "\"") (escape_sequence "\'") (escape_sequence "\\") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar10 != (char *)0x0) {\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }" (if "if") (parenthesized_expression "(pcVar10 != (char *)0x0)" (( "(") (binary_expression "pcVar10 != (char *)0x0" (identifier "pcVar10") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);\n          }" ({ "{") (expression_statement "pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);" (assignment_expression "pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0)" (identifier "pcVar7") (= "=") (cast_expression "(char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "sh_backslash_quote(pcVar7,&DAT_00215d80,0)" (identifier "sh_backslash_quote") (argument_list "(pcVar7,&DAT_00215d80,0)" (( "(") (identifier "pcVar7") (, ",") (pointer_expression "&DAT_00215d80" (& "&") (identifier "DAT_00215d80")) (, ",") (number_literal "0") () ")"))))) (; ";")) (} "}"))) (expression_statement "DAT_00215c58 = pcVar7;" (assignment_expression "DAT_00215c58 = pcVar7" (identifier "DAT_00215c58") (= "=") (identifier "pcVar7")) (; ";")) (expression_statement "free(pcVar8);" (call_expression "free(pcVar8)" (identifier "free") (argument_list "(pcVar8)" (( "(") (identifier "pcVar8") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00180a7a;" (goto "goto") (statement_identifier "LAB_00180a7a") (; ";")) (} "}"))) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" (identifier "pcVar7") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (} "}"))) (expression_statement "DAT_00215c8c = 5;" (assignment_expression "DAT_00215c8c = 5" (identifier "DAT_00215c8c") (= "=") (number_literal "5")) (; ";")) (labeled_statement "LAB_00180787:\n    glob_ignore_case = DAT_00215c7c;" (statement_identifier "LAB_00180787") (: ":") (expression_statement "glob_ignore_case = DAT_00215c7c;" (assignment_expression "glob_ignore_case = DAT_00215c7c" (identifier "glob_ignore_case") (= "=") (identifier "DAT_00215c7c")) (; ";"))) (expression_statement "DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);" (assignment_expression "DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98)" (identifier "DAT_00215d50") (= "=") (cast_expression "(undefined8 *)shell_glob_filename(DAT_00215c98)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "shell_glob_filename(DAT_00215c98)" (identifier "shell_glob_filename") (argument_list "(DAT_00215c98)" (( "(") (identifier "DAT_00215c98") () ")"))))) (; ";")) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" (identifier "glob_ignore_case") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" (if "if") (parenthesized_expression "((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0))" (( "(") (binary_expression "(DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)" (parenthesized_expression "(DAT_00215d50 == &glob_error_return)" (( "(") (binary_expression "DAT_00215d50 == &glob_error_return" (identifier "DAT_00215d50") (== "==") (pointer_expression "&glob_error_return" (& "&") (identifier "glob_error_return"))) () ")")) (|| "||") (parenthesized_expression "(DAT_00215d50 == (undefined8 *)0x0)" (( "(") (binary_expression "DAT_00215d50 == (undefined8 *)0x0" (identifier "DAT_00215d50") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n      DAT_00215d50 = (undefined8 *)0x0;\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" ({ "{") (expression_statement "DAT_00215d50 = (undefined8 *)0x0;" (assignment_expression "DAT_00215d50 = (undefined8 *)0x0" (identifier "DAT_00215d50") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" (identifier "pcVar7") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (} "}"))) (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" (identifier "DAT_00215c40") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" (if "if") (parenthesized_expression "((DAT_00215d50[1] != 0) && (rl_completion_type == 9))" (( "(") (binary_expression "(DAT_00215d50[1] != 0) && (rl_completion_type == 9)" (parenthesized_expression "(DAT_00215d50[1] != 0)" (( "(") (binary_expression "DAT_00215d50[1] != 0" (subscript_expression "DAT_00215d50[1]" (identifier "DAT_00215d50") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(rl_completion_type == 9)" (( "(") (binary_expression "rl_completion_type == 9" (identifier "rl_completion_type") (== "==") (number_literal "9")) () ")"))) () ")")) (compound_statement "{\n      pcVar7 = (char *)0x0;\n      goto LAB_00181336;\n    }" ({ "{") (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" (identifier "pcVar7") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }" (else "else") (compound_statement "{\nLAB_00180925:\n    pcVar7 = DAT_00215c98;\n    uVar13 = DAT_00215c7c;\n    iVar4 = DAT_00215c68;\n    pvVar2 = DAT_00215c30;\n    if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }\n    if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }\n    if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }\n    if (param_2 == 0) goto LAB_00180787;\n  }" ({ "{") (labeled_statement "LAB_00180925:\n    pcVar7 = DAT_00215c98;" (statement_identifier "LAB_00180925") (: ":") (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" (identifier "pcVar7") (= "=") (identifier "DAT_00215c98")) (; ";"))) (expression_statement "uVar13 = DAT_00215c7c;" (assignment_expression "uVar13 = DAT_00215c7c" (identifier "uVar13") (= "=") (identifier "DAT_00215c7c")) (; ";")) (expression_statement "iVar4 = DAT_00215c68;" (assignment_expression "iVar4 = DAT_00215c68" (identifier "iVar4") (= "=") (identifier "DAT_00215c68")) (; ";")) (expression_statement "pvVar2 = DAT_00215c30;" (assignment_expression "pvVar2 = DAT_00215c30" (identifier "pvVar2") (= "=") (identifier "DAT_00215c30")) (; ";")) (if_statement "if (DAT_00215c8c == 1) {\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }" (if "if") (parenthesized_expression "(DAT_00215c8c == 1)" (( "(") (binary_expression "DAT_00215c8c == 1" (identifier "DAT_00215c8c") (== "==") (number_literal "1")) () ")")) (compound_statement "{\nLAB_00180bdc:\n      pcVar7 = DAT_00215c98;\n      iVar4 = DAT_00215c68;\n      sVar9 = (size_t)DAT_00215c68;\n      do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = pcVar8;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,pcVar8);\n      goto LAB_00181336;\n    }" ({ "{") (labeled_statement "LAB_00180bdc:\n      pcVar7 = DAT_00215c98;" (statement_identifier "LAB_00180bdc") (: ":") (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" (identifier "pcVar7") (= "=") (identifier "DAT_00215c98")) (; ";"))) (expression_statement "iVar4 = DAT_00215c68;" (assignment_expression "iVar4 = DAT_00215c68" (identifier "iVar4") (= "=") (identifier "DAT_00215c68")) (; ";")) (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" (identifier "sVar9") (= "=") (cast_expression "(size_t)DAT_00215c68" (( "(") (type_descriptor "size_t" (primitive_type "size_t")) () ")") (identifier "DAT_00215c68"))) (; ";")) (do_statement "do {\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      } while ((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));" (do "do") (compound_statement "{\n        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];\n        if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }\n        DAT_00215c40 = DAT_00215c40 + 1;\n      }" ({ "{") (expression_statement "pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];" (assignment_expression "pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2]" (identifier "pcVar8") (= "=") (subscript_expression "(&word_token_alist)[(long)DAT_00215c40 * 2]" (parenthesized_expression "(&word_token_alist)" (( "(") (pointer_expression "&word_token_alist" (& "&") (identifier "word_token_alist")) () ")")) ([ "[") (binary_expression "(long)DAT_00215c40 * 2" (cast_expression "(long)DAT_00215c40" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00215c40")) (* "*") (number_literal "2")) (] "]"))) (; ";")) (if_statement "if (pcVar8 == (char *)0x0) {\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }" (if "if") (parenthesized_expression "(pcVar8 == (char *)0x0)" (( "(") (binary_expression "pcVar8 == (char *)0x0" (identifier "pcVar8") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          DAT_00215c40 = 0;\n          DAT_00215c8c = DAT_00215c8c + 1;\n          goto LAB_00180c72;\n        }" ({ "{") (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" (identifier "DAT_00215c40") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00215c8c = DAT_00215c8c + 1;" (assignment_expression "DAT_00215c8c = DAT_00215c8c + 1" (identifier "DAT_00215c8c") (= "=") (binary_expression "DAT_00215c8c + 1" (identifier "DAT_00215c8c") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00180c72;" (goto "goto") (statement_identifier "LAB_00180c72") (; ";")) (} "}"))) (expression_statement "DAT_00215c40 = DAT_00215c40 + 1;" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" (identifier "DAT_00215c40") (= "=") (binary_expression "DAT_00215c40 + 1" (identifier "DAT_00215c40") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))))" (( "(") (binary_expression "(iVar4 != 0) &&\n              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (( "(") (parenthesized_expression "(*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))" (( "(") (binary_expression "*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (binary_expression "*pcVar8 != *pcVar7" (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) (!= "!=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (|| "||") (parenthesized_expression "(iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (( "(") (comma_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0" (assignment_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9)" (identifier "iVar5") (= "=") (call_expression "strncmp(pcVar8,pcVar7,sVar9)" (identifier "strncmp") (argument_list "(pcVar8,pcVar7,sVar9)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar7") (, ",") (identifier "sVar9") () ")")))) (, ",") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (; ";")) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" (identifier "pcVar7") (= "=") (identifier "pcVar8")) (; ";")) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" (do "do") (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" (identifier "pcVar7") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" (identifier "pcVar7") (= "=") (call_expression "strcpy(pcVar7,pcVar8)" (identifier "strcpy") (argument_list "(pcVar7,pcVar8)" (( "(") (identifier "pcVar7") (, ",") (identifier "pcVar8") () ")")))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (} "}"))) (if_statement "if (DAT_00215c8c < 2) {\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }\n    else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }" (if "if") (parenthesized_expression "(DAT_00215c8c < 2)" (( "(") (binary_expression "DAT_00215c8c < 2" (identifier "DAT_00215c8c") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n    }" ({ "{") (if_statement "if (DAT_00215c8c == 0) {\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" (if "if") (parenthesized_expression "(DAT_00215c8c == 0)" (( "(") (binary_expression "DAT_00215c8c == 0" (identifier "DAT_00215c8c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" ({ "{") (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" (identifier "sVar9") (= "=") (cast_expression "(size_t)DAT_00215c68" (( "(") (type_descriptor "size_t" (primitive_type "size_t")) () ")") (identifier "DAT_00215c68"))) (; ";")) (do_statement "do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));" (do "do") (compound_statement "{\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }\n        }" ({ "{") (while_statement "while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }\n          }" ({ "{") (if_statement "if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }" (if "if") (parenthesized_expression "((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0))" (( "(") (binary_expression "(pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" (parenthesized_expression "(pvVar2 == (void *)0x0)" (( "(") (binary_expression "pvVar2 == (void *)0x0" (identifier "pvVar2") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" (( "(") (comma_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0" (assignment_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" (identifier "puVar14") (= "=") (pointer_expression "*(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" (* "*") (cast_expression "(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((long)pvVar2 + (long)DAT_00215c40 * 8)" (( "(") (binary_expression "(long)pvVar2 + (long)DAT_00215c40 * 8" (cast_expression "(long)pvVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar2")) (+ "+") (binary_expression "(long)DAT_00215c40 * 8" (cast_expression "(long)DAT_00215c40" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00215c40")) (* "*") (number_literal "8"))) () ")"))))) (, ",") (binary_expression "puVar14 == (undefined8 *)0x0" (identifier "puVar14") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n              DAT_00215c40 = 0;\n              DAT_00215c8c = 1;\n              goto LAB_00180bdc;\n            }" ({ "{") (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" (identifier "DAT_00215c40") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00215c8c = 1;" (assignment_expression "DAT_00215c8c = 1" (identifier "DAT_00215c8c") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00180bdc;" (goto "goto") (statement_identifier "LAB_00180bdc") (; ";")) (} "}"))) (expression_statement "DAT_00215c40 = DAT_00215c40 + 1;" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" (identifier "DAT_00215c40") (= "=") (binary_expression "DAT_00215c40 + 1" (identifier "DAT_00215c40") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar8 = (char *)*puVar14;" (assignment_expression "pcVar8 = (char *)*puVar14" (identifier "pcVar8") (= "=") (cast_expression "(char *)*puVar14" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) (; ";")) (if_statement "if (uVar13 == 0) break;" (if "if") (parenthesized_expression "(uVar13 == 0)" (( "(") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);" (assignment_expression "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9)" (identifier "iVar5") (= "=") (call_expression "strncasecmp(pcVar8,pcVar7,sVar9)" (identifier "strncasecmp") (argument_list "(pcVar8,pcVar7,sVar9)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar7") (, ",") (identifier "sVar9") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180ba8;\n            }" ({ "{") (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" (identifier "pcVar7") (= "=") (identifier "pcVar8")) (; ";")) (goto_statement "goto code_r0x00180ba8;" (goto "goto") (statement_identifier "code_r0x00180ba8") (; ";")) (} "}"))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))))" (( "(") (binary_expression "(iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (( "(") (parenthesized_expression "(*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))" (( "(") (binary_expression "*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (binary_expression "*pcVar8 != *pcVar7" (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) (!= "!=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (|| "||") (parenthesized_expression "(iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (( "(") (comma_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0" (assignment_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9)" (identifier "iVar5") (= "=") (call_expression "strncmp(pcVar8,pcVar7,sVar9)" (identifier "strncmp") (argument_list "(pcVar8,pcVar7,sVar9)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar7") (, ",") (identifier "sVar9") () ")")))) (, ",") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (; ";")) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" (identifier "pcVar7") (= "=") (identifier "pcVar8")) (; ";")) (do_statement "do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');" (do "do") (compound_statement "{\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" (identifier "pcVar7") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" (identifier "pcVar7") (= "=") (call_expression "strcpy(pcVar7,pcVar8)" (identifier "strcpy") (argument_list "(pcVar7,pcVar8)" (( "(") (identifier "pcVar7") (, ",") (identifier "pcVar8") () ")")))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }" (else "else") (compound_statement "{\n      if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }\n      if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }\n    }" ({ "{") (if_statement "if (DAT_00215c8c == 2) {\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" (if "if") (parenthesized_expression "(DAT_00215c8c == 2)" (( "(") (binary_expression "DAT_00215c8c == 2" (identifier "DAT_00215c8c") (== "==") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00180c72:\n        pcVar7 = DAT_00215c98;\n        uVar13 = DAT_00215c7c;\n        iVar4 = DAT_00215c68;\n        pvVar2 = DAT_00215c38;\n        sVar9 = (size_t)DAT_00215c68;\n        do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));\n        uVar11 = 0xffffffffffffffff;\n        pcVar7 = pcVar8;\n        do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');\n        pcVar7 = (char *)xmalloc(~uVar11);\n        pcVar7 = strcpy(pcVar7,pcVar8);\n        goto LAB_00181336;\n      }" ({ "{") (labeled_statement "LAB_00180c72:\n        pcVar7 = DAT_00215c98;" (statement_identifier "LAB_00180c72") (: ":") (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" (identifier "pcVar7") (= "=") (identifier "DAT_00215c98")) (; ";"))) (expression_statement "uVar13 = DAT_00215c7c;" (assignment_expression "uVar13 = DAT_00215c7c" (identifier "uVar13") (= "=") (identifier "DAT_00215c7c")) (; ";")) (expression_statement "iVar4 = DAT_00215c68;" (assignment_expression "iVar4 = DAT_00215c68" (identifier "iVar4") (= "=") (identifier "DAT_00215c68")) (; ";")) (expression_statement "pvVar2 = DAT_00215c38;" (assignment_expression "pvVar2 = DAT_00215c38" (identifier "pvVar2") (= "=") (identifier "DAT_00215c38")) (; ";")) (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" (identifier "sVar9") (= "=") (cast_expression "(size_t)DAT_00215c68" (( "(") (type_descriptor "size_t" (primitive_type "size_t")) () ")") (identifier "DAT_00215c68"))) (; ";")) (do_statement "do {\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        } while ((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));" (do "do") (compound_statement "{\n          while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }\n        }" ({ "{") (while_statement "while( true ) {\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }\n            DAT_00215c40 = DAT_00215c40 + 1;\n            pcVar8 = (char *)*puVar14;\n            if (uVar13 == 0) break;\n            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);\n            if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }\n          }" ({ "{") (if_statement "if ((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)) {\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }" (if "if") (parenthesized_expression "((pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0))" (( "(") (binary_expression "(pvVar2 == (void *)0x0) ||\n               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" (parenthesized_expression "(pvVar2 == (void *)0x0)" (( "(") (binary_expression "pvVar2 == (void *)0x0" (identifier "pvVar2") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0)" (( "(") (comma_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),\n               puVar14 == (undefined8 *)0x0" (assignment_expression "puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" (identifier "puVar14") (= "=") (pointer_expression "*(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" (* "*") (cast_expression "(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "((long)pvVar2 + (long)DAT_00215c40 * 8)" (( "(") (binary_expression "(long)pvVar2 + (long)DAT_00215c40 * 8" (cast_expression "(long)pvVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar2")) (+ "+") (binary_expression "(long)DAT_00215c40 * 8" (cast_expression "(long)DAT_00215c40" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00215c40")) (* "*") (number_literal "8"))) () ")"))))) (, ",") (binary_expression "puVar14 == (undefined8 *)0x0" (identifier "puVar14") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n              DAT_00215c40 = 0;\n              DAT_00215c8c = DAT_00215c8c + 1;\n              goto LAB_0018094c;\n            }" ({ "{") (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" (identifier "DAT_00215c40") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00215c8c = DAT_00215c8c + 1;" (assignment_expression "DAT_00215c8c = DAT_00215c8c + 1" (identifier "DAT_00215c8c") (= "=") (binary_expression "DAT_00215c8c + 1" (identifier "DAT_00215c8c") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_0018094c;" (goto "goto") (statement_identifier "LAB_0018094c") (; ";")) (} "}"))) (expression_statement "DAT_00215c40 = DAT_00215c40 + 1;" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" (identifier "DAT_00215c40") (= "=") (binary_expression "DAT_00215c40 + 1" (identifier "DAT_00215c40") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar8 = (char *)*puVar14;" (assignment_expression "pcVar8 = (char *)*puVar14" (identifier "pcVar8") (= "=") (cast_expression "(char *)*puVar14" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) (; ";")) (if_statement "if (uVar13 == 0) break;" (if "if") (parenthesized_expression "(uVar13 == 0)" (( "(") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);" (assignment_expression "iVar5 = strncasecmp(pcVar8,pcVar7,sVar9)" (identifier "iVar5") (= "=") (call_expression "strncasecmp(pcVar8,pcVar7,sVar9)" (identifier "strncasecmp") (argument_list "(pcVar8,pcVar7,sVar9)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar7") (, ",") (identifier "sVar9") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) {\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar11 = 0xffffffffffffffff;\n              pcVar7 = pcVar8;\n              goto code_r0x00180d3c;\n            }" ({ "{") (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" (identifier "pcVar7") (= "=") (identifier "pcVar8")) (; ";")) (goto_statement "goto code_r0x00180d3c;" (goto "goto") (statement_identifier "code_r0x00180d3c") (; ";")) (} "}"))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))))" (( "(") (binary_expression "(iVar4 != 0) &&\n                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)))" (( "(") (parenthesized_expression "(*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))" (( "(") (binary_expression "*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (binary_expression "*pcVar8 != *pcVar7" (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) (!= "!=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (|| "||") (parenthesized_expression "(iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0)" (( "(") (comma_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0" (assignment_expression "iVar5 = strncmp(pcVar8,pcVar7,sVar9)" (identifier "iVar5") (= "=") (call_expression "strncmp(pcVar8,pcVar7,sVar9)" (identifier "strncmp") (argument_list "(pcVar8,pcVar7,sVar9)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar7") (, ",") (identifier "sVar9") () ")")))) (, ",") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (; ";")) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = pcVar8;" (assignment_expression "pcVar7 = pcVar8" (identifier "pcVar7") (= "=") (identifier "pcVar8")) (; ";")) (do_statement "do {\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        } while (cVar1 != '\0');" (do "do") (compound_statement "{\n          if (uVar11 == 0) break;\n          uVar11 = uVar11 - 1;\n          cVar1 = *pcVar7;\n          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n        }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" (identifier "pcVar7") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" (identifier "pcVar7") (= "=") (call_expression "strcpy(pcVar7,pcVar8)" (identifier "strcpy") (argument_list "(pcVar7,pcVar8)" (( "(") (identifier "pcVar7") (, ",") (identifier "pcVar8") () ")")))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (} "}"))) (if_statement "if (DAT_00215c8c == 3) {\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }" (if "if") (parenthesized_expression "(DAT_00215c8c == 3)" (( "(") (binary_expression "DAT_00215c8c == 3" (identifier "DAT_00215c8c") (== "==") (number_literal "3")) () ")")) (compound_statement "{\nLAB_0018094c:\n        pcVar7 = DAT_00215c98;\n        iVar5 = DAT_00215c68;\n        iVar4 = num_shell_builtins;\n        if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }\n        DAT_00215c40 = 0;\n        DAT_00215c8c = DAT_00215c8c + 1;\n      }" ({ "{") (labeled_statement "LAB_0018094c:\n        pcVar7 = DAT_00215c98;" (statement_identifier "LAB_0018094c") (: ":") (expression_statement "pcVar7 = DAT_00215c98;" (assignment_expression "pcVar7 = DAT_00215c98" (identifier "pcVar7") (= "=") (identifier "DAT_00215c98")) (; ";"))) (expression_statement "iVar5 = DAT_00215c68;" (assignment_expression "iVar5 = DAT_00215c68" (identifier "iVar5") (= "=") (identifier "DAT_00215c68")) (; ";")) (expression_statement "iVar4 = num_shell_builtins;" (assignment_expression "iVar4 = num_shell_builtins" (identifier "iVar4") (= "=") (identifier "num_shell_builtins")) (; ";")) (if_statement "if (DAT_00215c40 < num_shell_builtins) {\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }" (if "if") (parenthesized_expression "(DAT_00215c40 < num_shell_builtins)" (( "(") (binary_expression "DAT_00215c40 < num_shell_builtins" (identifier "DAT_00215c40") (< "<") (identifier "num_shell_builtins")) () ")")) (compound_statement "{\n          sVar9 = (size_t)DAT_00215c68;\n          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);\n          do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);\n        }" ({ "{") (expression_statement "sVar9 = (size_t)DAT_00215c68;" (assignment_expression "sVar9 = (size_t)DAT_00215c68" (identifier "sVar9") (= "=") (cast_expression "(size_t)DAT_00215c68" (( "(") (type_descriptor "size_t" (primitive_type "size_t")) () ")") (identifier "DAT_00215c68"))) (; ";")) (expression_statement "puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);" (assignment_expression "puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30)" (identifier "puVar14") (= "=") (cast_expression "(undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(shell_builtins + (long)DAT_00215c40 * 0x30)" (( "(") (binary_expression "shell_builtins + (long)DAT_00215c40 * 0x30" (identifier "shell_builtins") (+ "+") (binary_expression "(long)DAT_00215c40 * 0x30" (cast_expression "(long)DAT_00215c40" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_00215c40")) (* "*") (number_literal "0x30"))) () ")")))) (; ";")) (do_statement "do {\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          } while (DAT_00215c40 != iVar4);" (do "do") (compound_statement "{\n            iVar3 = DAT_00215c40;\n            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }\n            DAT_00215c40 = iVar3 + 1;\n            puVar14 = puVar14 + 6;\n          }" ({ "{") (expression_statement "iVar3 = DAT_00215c40;" (assignment_expression "iVar3 = DAT_00215c40" (identifier "iVar3") (= "=") (identifier "DAT_00215c40")) (; ";")) (if_statement "if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }" (if "if") (parenthesized_expression "(((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0))))))" (( "(") (binary_expression "((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&\n               ((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))" (parenthesized_expression "((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0))" (( "(") (binary_expression "(puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)" (parenthesized_expression "(puVar14[1] != 0)" (( "(") (binary_expression "puVar14[1] != 0" (subscript_expression "puVar14[1]" (identifier "puVar14") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(puVar14 + 2) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(puVar14 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(puVar14 + 2) & 1)" (( "(") (binary_expression "*(byte *)(puVar14 + 2) & 1" (pointer_expression "*(byte *)(puVar14 + 2)" (* "*") (cast_expression "(byte *)(puVar14 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar14 + 2)" (( "(") (binary_expression "puVar14 + 2" (identifier "puVar14") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))" (( "(") (parenthesized_expression "(iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0))))" (( "(") (binary_expression "iVar5 == 0 ||\n                ((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))" (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "((*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))" (( "(") (parenthesized_expression "(*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0))" (( "(") (binary_expression "*(char *)*puVar14 == *pcVar7 &&\n                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)" (binary_expression "*(char *)*puVar14 == *pcVar7" (pointer_expression "*(char *)*puVar14" (* "*") (cast_expression "(char *)*puVar14" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) (== "==") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (&& "&&") (parenthesized_expression "(iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)" (( "(") (comma_expression "iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0" (assignment_expression "iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9)" (identifier "iVar6") (= "=") (call_expression "strncmp((char *)*puVar14,pcVar7,sVar9)" (identifier "strncmp") (argument_list "((char *)*puVar14,pcVar7,sVar9)" (( "(") (cast_expression "(char *)*puVar14" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14"))) (, ",") (identifier "pcVar7") (, ",") (identifier "sVar9") () ")")))) (, ",") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              DAT_00215c40 = iVar3 + 1;\n              pcVar7 = (char *)*puVar14;\n              uVar11 = 0xffffffffffffffff;\n              pcVar8 = pcVar7;\n              goto code_r0x00180dd3;\n            }" ({ "{") (expression_statement "DAT_00215c40 = iVar3 + 1;" (assignment_expression "DAT_00215c40 = iVar3 + 1" (identifier "DAT_00215c40") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar7 = (char *)*puVar14;" (assignment_expression "pcVar7 = (char *)*puVar14" (identifier "pcVar7") (= "=") (cast_expression "(char *)*puVar14" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar14" (* "*") (identifier "puVar14")))) (; ";")) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar8 = pcVar7;" (assignment_expression "pcVar8 = pcVar7" (identifier "pcVar8") (= "=") (identifier "pcVar7")) (; ";")) (goto_statement "goto code_r0x00180dd3;" (goto "goto") (statement_identifier "code_r0x00180dd3") (; ";")) (} "}"))) (expression_statement "DAT_00215c40 = iVar3 + 1;" (assignment_expression "DAT_00215c40 = iVar3 + 1" (identifier "DAT_00215c40") (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar14 = puVar14 + 6;" (assignment_expression "puVar14 = puVar14 + 6" (identifier "puVar14") (= "=") (binary_expression "puVar14 + 6" (identifier "puVar14") (+ "+") (number_literal "6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(DAT_00215c40 != iVar4)" (( "(") (binary_expression "DAT_00215c40 != iVar4" (identifier "DAT_00215c40") (!= "!=") (identifier "iVar4")) () ")")) (; ";")) (} "}"))) (expression_statement "DAT_00215c40 = 0;" (assignment_expression "DAT_00215c40 = 0" (identifier "DAT_00215c40") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00215c8c = DAT_00215c8c + 1;" (assignment_expression "DAT_00215c8c = DAT_00215c8c + 1" (identifier "DAT_00215c8c") (= "=") (binary_expression "DAT_00215c8c + 1" (identifier "DAT_00215c8c") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}")))) (if_statement "if (DAT_00215c78 == 0) {\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }" (if "if") (parenthesized_expression "(DAT_00215c78 == 0)" (( "(") (binary_expression "DAT_00215c78 == 0" (identifier "DAT_00215c78") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (DAT_00215c88 == 0) goto LAB_00180e1e;\n      DAT_00215c88 = 0;\n      uVar11 = 0xffffffffffffffff;\n      pcVar7 = param_1;\n      do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');\n      pcVar7 = (char *)xmalloc(~uVar11);\n      pcVar7 = strcpy(pcVar7,param_1);\n      goto LAB_00181336;\n    }" ({ "{") (if_statement "if (DAT_00215c88 == 0) goto LAB_00180e1e;" (if "if") (parenthesized_expression "(DAT_00215c88 == 0)" (( "(") (binary_expression "DAT_00215c88 == 0" (identifier "DAT_00215c88") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00180e1e;" (goto "goto") (statement_identifier "LAB_00180e1e") (; ";"))) (expression_statement "DAT_00215c88 = 0;" (assignment_expression "DAT_00215c88 = 0" (identifier "DAT_00215c88") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar11 = 0xffffffffffffffff;" (assignment_expression "uVar11 = 0xffffffffffffffff" (identifier "uVar11") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "pcVar7 = param_1;" (assignment_expression "pcVar7 = param_1" (identifier "pcVar7") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      } while (cVar1 != '\0');" (do "do") (compound_statement "{\n        if (uVar11 == 0) break;\n        uVar11 = uVar11 - 1;\n        cVar1 = *pcVar7;\n        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n      }" ({ "{") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" (identifier "pcVar7") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "pcVar7 = strcpy(pcVar7,param_1);" (assignment_expression "pcVar7 = strcpy(pcVar7,param_1)" (identifier "pcVar7") (= "=") (call_expression "strcpy(pcVar7,param_1)" (identifier "strcpy") (argument_list "(pcVar7,param_1)" (( "(") (identifier "pcVar7") (, ",") (identifier "param_1") () ")")))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (} "}"))) (if_statement "if (param_2 == 0) goto LAB_00180787;" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00180787;" (goto "goto") (statement_identifier "LAB_00180787") (; ";"))) (} "}")))) (expression_statement "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];" (assignment_expression "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40]" (identifier "DAT_00215c80") (= "=") (cast_expression "(char *)DAT_00215d50[DAT_00215c40]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "DAT_00215d50[DAT_00215c40]" (identifier "DAT_00215d50") ([ "[") (identifier "DAT_00215c40") (] "]")))) (; ";")) (while_statement "while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }" (while "while") (parenthesized_expression "(DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0)" (( "(") (comma_expression "DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0" (assignment_expression "DAT_00215c40 = DAT_00215c40 + 1" (identifier "DAT_00215c40") (= "=") (binary_expression "DAT_00215c40 + 1" (identifier "DAT_00215c40") (+ "+") (number_literal "1"))) (, ",") (binary_expression "DAT_00215c80 != (char *)0x0" (identifier "DAT_00215c80") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n    iVar4 = executable_or_directory();\n    if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }\n    free(DAT_00215c80);\n    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];\n  }" ({ "{") (expression_statement "iVar4 = executable_or_directory();" (assignment_expression "iVar4 = executable_or_directory()" (identifier "iVar4") (= "=") (call_expression "executable_or_directory()" (identifier "executable_or_directory") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar7 = DAT_00215c80;\n      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }\n      goto LAB_00181336;\n    }" ({ "{") (expression_statement "pcVar7 = DAT_00215c80;" (assignment_expression "pcVar7 = DAT_00215c80" (identifier "pcVar7") (= "=") (identifier "DAT_00215c80")) (; ";")) (if_statement "if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }" (if "if") (parenthesized_expression "((*param_1 == '~') && (DAT_00215c70 != (char *)0x0))" (( "(") (binary_expression "(*param_1 == '~') && (DAT_00215c70 != (char *)0x0)" (parenthesized_expression "(*param_1 == '~')" (( "(") (binary_expression "*param_1 == '~'" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (char_literal "'~'" (' "'") (character "~") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(DAT_00215c70 != (char *)0x0)" (( "(") (binary_expression "DAT_00215c70 != (char *)0x0" (identifier "DAT_00215c70") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);\n        free(DAT_00215c80);\n        DAT_00215c80 = pcVar7;\n      }" ({ "{") (expression_statement "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);" (assignment_expression "pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80)" (identifier "pcVar7") (= "=") (cast_expression "(char *)FUN_0017b4b4(DAT_00215c80)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0017b4b4(DAT_00215c80)" (identifier "FUN_0017b4b4") (argument_list "(DAT_00215c80)" (( "(") (identifier "DAT_00215c80") () ")"))))) (; ";")) (expression_statement "free(DAT_00215c80);" (call_expression "free(DAT_00215c80)" (identifier "free") (argument_list "(DAT_00215c80)" (( "(") (identifier "DAT_00215c80") () ")"))) (; ";")) (expression_statement "DAT_00215c80 = pcVar7;" (assignment_expression "DAT_00215c80 = pcVar7" (identifier "DAT_00215c80") (= "=") (identifier "pcVar7")) (; ";")) (} "}"))) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (} "}"))) (expression_statement "free(DAT_00215c80);" (call_expression "free(DAT_00215c80)" (identifier "free") (argument_list "(DAT_00215c80)" (( "(") (identifier "DAT_00215c80") () ")"))) (; ";")) (expression_statement "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];" (assignment_expression "DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40]" (identifier "DAT_00215c80") (= "=") (cast_expression "(char *)DAT_00215d50[DAT_00215c40]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "DAT_00215d50[DAT_00215c40]" (identifier "DAT_00215d50") ([ "[") (identifier "DAT_00215c40") (] "]")))) (; ";")) (} "}"))) (expression_statement "glob_ignore_case = 0;" (assignment_expression "glob_ignore_case = 0" (identifier "glob_ignore_case") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar7 = (char *)0x0;" (assignment_expression "pcVar7 = (char *)0x0" (identifier "pcVar7") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (while_statement "while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180ba8:\n    if (uVar11 == 0) break;\n  }" ({ "{") (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar1 == '\0') break;" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "code_r0x00180ba8:\n    if (uVar11 == 0) break;" (statement_identifier "code_r0x00180ba8") (: ":") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";")))) (} "}"))) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" (identifier "pcVar7") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" (identifier "pcVar7") (= "=") (call_expression "strcpy(pcVar7,pcVar8)" (identifier "strcpy") (argument_list "(pcVar7,pcVar8)" (( "(") (identifier "pcVar7") (, ",") (identifier "pcVar8") () ")")))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (while_statement "while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar7;\n    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180d3c:\n    if (uVar11 == 0) break;\n  }" ({ "{") (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar7;" (assignment_expression "cVar1 = *pcVar7" (identifier "cVar1") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar7 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar7 + (ulong)bVar15 * -2" (identifier "pcVar7") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar1 == '\0') break;" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "code_r0x00180d3c:\n    if (uVar11 == 0) break;" (statement_identifier "code_r0x00180d3c") (: ":") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";")))) (} "}"))) (expression_statement "pcVar7 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar7 = (char *)xmalloc(~uVar11)" (identifier "pcVar7") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "pcVar7 = strcpy(pcVar7,pcVar8);" (assignment_expression "pcVar7 = strcpy(pcVar7,pcVar8)" (identifier "pcVar7") (= "=") (call_expression "strcpy(pcVar7,pcVar8)" (identifier "strcpy") (argument_list "(pcVar7,pcVar8)" (( "(") (identifier "pcVar7") (, ",") (identifier "pcVar8") () ")")))) (; ";")) (goto_statement "goto LAB_00181336;" (goto "goto") (statement_identifier "LAB_00181336") (; ";")) (while_statement "while( true ) {\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    uVar11 = uVar11 - 1;\n    cVar1 = *pcVar8;\n    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;\n    if (cVar1 == '\0') break;\ncode_r0x00180dd3:\n    if (uVar11 == 0) break;\n  }" ({ "{") (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 - 1" (identifier "uVar11") (- "-") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar8;" (assignment_expression "cVar1 = *pcVar8" (identifier "cVar1") (= "=") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8"))) (; ";")) (expression_statement "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;" (assignment_expression "pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1" (identifier "pcVar8") (= "=") (binary_expression "pcVar8 + (ulong)bVar15 * -2 + 1" (binary_expression "pcVar8 + (ulong)bVar15 * -2" (identifier "pcVar8") (+ "+") (binary_expression "(ulong)bVar15 * -2" (cast_expression "(ulong)bVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar1 == '\0') break;" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "code_r0x00180dd3:\n    if (uVar11 == 0) break;" (statement_identifier "code_r0x00180dd3") (: ":") (if_statement "if (uVar11 == 0) break;" (if "if") (parenthesized_expression "(uVar11 == 0)" (( "(") (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";")))) (} "}"))) (expression_statement "pcVar8 = (char *)xmalloc(~uVar11);" (assignment_expression "pcVar8 = (char *)xmalloc(~uVar11)" (identifier "pcVar8") (= "=") (cast_expression "(char *)xmalloc(~uVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(~uVar11)" (identifier "xmalloc") (argument_list "(~uVar11)" (( "(") (unary_expression "~uVar11" (~ "~") (identifier "uVar11")) () ")"))))) (; ";")) (expression_statement "pcVar7 = strcpy(pcVar8,pcVar7);" (assignment_expression "pcVar7 = strcpy(pcVar8,pcVar7)" (identifier "pcVar7") (= "=") (call_expression "strcpy(pcVar8,pcVar7)" (identifier "strcpy") (argument_list "(pcVar8,pcVar7)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar7") () ")")))) (; ";")) (labeled_statement "LAB_00181336:\n  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }" (statement_identifier "LAB_00181336") (: ":") (if_statement "if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {\n    return pcVar7;\n  }" (if "if") (parenthesized_expression "(local_40 == *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 == *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (== "==") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n    return pcVar7;\n  }" ({ "{") (return_statement "return pcVar7;" (return "return") (identifier "pcVar7") (; ";")) (} "}")))) (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

char * function_1(char *hint_text,int var_2)

{
  char var_11;
  type_1 *var_47;
  type_2 *var_50;
  type_1 **var_46;
  type_2 **var_49;
  int var_4;
  int var_45;
  int var_48;
  int var_53;
  char *var_10;
  char *var_23;
  size_t sVar12;
  char *var_36;
  type_3 var_9;
  long var_14;
  type_4 uVar16;
  type_5 *var_54;
  long var_1;
  type_6 bVar18;
  char *f;
  long var_56;
  
  bVar18 = 0;
  var_56 = *(long *)(var_1 + 0x28);
  if (var_2 == 0) {
    rl_filename_stat_hook = bash_command_name_stat_hook;
    if ((function_1::dequoted_hint != (char *)0x0) &&
       (function_1::dequoted_hint != function_1::hint))
    {
      free(function_1::dequoted_hint);
    }
    if (function_1::hint != (char *)0x0) {
      free(function_1::hint);
    }
    command_word_completion_function::searching_path = 0;
    command_word_completion_function::var_43 = 0;
    var_4 = var_3(hint_text);
    if (var_4 == 0) {
      var_4 = var_5(hint_text);
      uVar16 = 0;
      if ((var_4 == 0) && (uVar16 = 0, *hint_text != '~')) {
        var_4 = var_6(hint_text);
        uVar16 = (type_4)(var_4 != 0);
      }
    }
    else {
      uVar16 = 0;
    }
    command_word_completion_function::var_55 = (char *)0x0;
    command_word_completion_function::hint_is_dir = uVar16;
    var_10 = var_7("completion-ignore-case");
    command_word_completion_function::igncase = 0;
    if ((*var_10 == 'o') && (var_10[1] == 'n')) {
      command_word_completion_function::igncase = (int)(var_10[2] == '\0');
    }
    if (function_1::glob_matches != (char **)0x0) {
      free(function_1::glob_matches);
      command_word_completion_function::glob_matches = (char **)0x0;
    }
    command_word_completion_function::globpat = var_8(hint_text);
    if ((function_1::globpat == 0) &&
       (var_4 = var_5(hint_text), var_4 == 0)) {
      var_9 = 0xffffffffffffffff;
      var_10 = hint_text;
      do {
        if (var_9 == 0) break;
        var_9 = var_9 - 1;
        var_11 = *var_10;
        var_10 = var_10 + (type_3)bVar18 * -2 + 1;
      } while (var_11 != '\0');
      var_10 = (char *)var_12(~var_9);
      command_word_completion_function::hint = var_13(var_10,hint_text);
      var_14 = -1;
      var_10 = function_1::hint;
      do {
        if (var_14 == 0) break;
        var_14 = var_14 + -1;
        var_11 = *var_10;
        var_10 = var_10 + (type_3)bVar18 * -2 + 1;
      } while (var_11 != '\0');
      command_word_completion_function::hint_len = ~(type_4)var_14 - 1;
      command_word_completion_function::dequoted_hint = function_1::hint;
      if ((var_15 != L'\0') && (var_16 == L'\0')) {
        command_word_completion_function::dequoted_hint =
             var_17(function_1::hint,0);
      }
      command_word_completion_function::path = var_18("PATH");
      dot_in_path = 0;
      command_word_completion_function::path_index = 0;
      command_word_completion_function::var_44 = 0;
      if (function_1::varlist != (type_2 **)0x0) {
        free(function_1::varlist);
      }
      command_word_completion_function::varlist = var_19();
      if (function_1::alias_list != (type_1 **)0x0) {
        free(function_1::alias_list);
      }
      command_word_completion_function::alias_list = var_20();
      goto LAB_00180925;
    }
    if (*hint_text == '~') {
      command_word_completion_function::hint = var_21(hint_text,0);
      var_9 = 0xffffffffffffffff;
      var_10 = hint_text;
      do {
        if (var_9 == 0) break;
        var_9 = var_9 - 1;
        var_11 = *var_10;
        var_10 = var_10 + (type_3)bVar18 * -2 + 1;
      } while (var_11 != '\0');
      var_10 = (char *)var_12(~var_9);
      var_10 = var_13(var_10,hint_text);
      command_word_completion_function::directory_part = var_10;
      var_23 = var_22(var_10,0x2f);
      if (var_23 == (char *)0x0) {
        var_24(var_10);
        command_word_completion_function::directory_part = (char *)0x0;
      }
      else {
        *var_23 = '\0';
      }
    }
    else if (var_25 == 0) {
      var_9 = 0xffffffffffffffff;
      var_10 = hint_text;
      do {
        if (var_9 == 0) break;
        var_9 = var_9 - 1;
        var_11 = *var_10;
        var_10 = var_10 + (type_3)bVar18 * -2 + 1;
      } while (var_11 != '\0');
      var_10 = (char *)var_12(~var_9);
      command_word_completion_function::hint = var_13(var_10,hint_text);
    }
    else {
      var_9 = 0xffffffffffffffff;
      var_10 = hint_text;
      do {
        if (var_9 == 0) break;
        var_9 = var_9 - 1;
        var_11 = *var_10;
        var_10 = var_10 + (type_3)bVar18 * -2 + 1;
      } while (var_11 != '\0');
      var_10 = (char *)var_12(~var_9);
      command_word_completion_function::hint = var_13(var_10,hint_text);
      var_26(&function_1::hint);
    }
    command_word_completion_function::dequoted_hint = function_1::hint;
    if ((var_15 != L'\0') && (var_16 == L'\0')) {
      var_10 = var_17(function_1::hint,0);
      command_word_completion_function::dequoted_hint = var_10;
      var_24(function_1::hint);
      command_word_completion_function::hint = var_10;
    }
    var_14 = -1;
    var_10 = function_1::hint;
    do {
      if (var_14 == 0) break;
      var_14 = var_14 + -1;
      var_11 = *var_10;
      var_10 = var_10 + (type_3)bVar18 * -2 + 1;
    } while (var_11 != '\0');
    command_word_completion_function::hint_len = ~(type_4)var_14 - 1;
    if (function_1::filename_hint != (char *)0x0) {
      free(function_1::filename_hint);
    }
    var_10 = function_1::hint;
    var_9 = 0xffffffffffffffff;
    var_23 = function_1::hint;
    do {
      if (var_9 == 0) break;
      var_9 = var_9 - 1;
      var_11 = *var_23;
      var_23 = var_23 + (type_3)bVar18 * -2 + 1;
    } while (var_11 != '\0');
    var_23 = (char *)var_12(~var_9);
    command_word_completion_function::fnhint = var_13(var_23,var_10);
    command_word_completion_function::istate = 0;
    command_word_completion_function::filename_hint = function_1::fnhint;
    if (function_1::globpat == 0) {
      if ((var_25 != 0) &&
         (var_4 = var_27(function_1::fnhint), var_4 != 0)) {
        var_25 = 0;
        var_28();
        var_25 = 1;
      }
      command_word_completion_function::var_43 = 4;
LAB_00180a7a:
      while( true ) {
        var_10 = var_29
                            (function_1::fnhint,
                             function_1::istate);
        command_word_completion_function::var_55 = var_10;
        if ((function_1::var_43 == 4) && (var_25 != 0)) {
          var_28();
        }
        command_word_completion_function::istate = 1;
        if (var_10 == (char *)0x0) break;
        var_4 = var_5(function_1::hint);
        if (var_4 == 0) {
          var_10 = var_30(function_1::var_55,0x2f);
          var_23 = function_1::var_55;
          if (var_10 != (char *)0x0) {
            var_10 = var_10 + 1;
            if (function_1::igncase == 0) {
              var_4 = var_31(var_10,function_1::hint,
                              (long)function_1::hint_len);
            }
            else {
              var_4 = var_32(var_10,function_1::hint,
                                  (long)function_1::hint_len);
            }
            var_23 = function_1::var_55;
            if (var_4 == 0) {
              var_9 = 0xffffffffffffffff;
              var_23 = var_10;
              do {
                if (var_9 == 0) break;
                var_9 = var_9 - 1;
                var_11 = *var_23;
                var_23 = var_23 + (type_3)bVar18 * -2 + 1;
              } while (var_11 != '\0');
              var_23 = (char *)var_12(~var_9);
              var_10 = var_13(var_23,var_10);
              goto LAB_001812ba;
            }
          }
        }
        else {
          if (function_1::igncase == 0) {
            var_4 = var_31(function_1::var_55,
                            function_1::hint,
                            (long)function_1::hint_len);
          }
          else {
            var_4 = var_32(function_1::var_55,
                                function_1::hint,
                                (long)function_1::hint_len);
          }
          var_10 = function_1::var_55;
          if (*hint_text == '~') {
            var_10 = var_33(function_1::var_55,
                                          function_1::directory_part);
          }
          else {
            var_9 = 0xffffffffffffffff;
            var_23 = function_1::var_55;
            do {
              if (var_9 == 0) break;
              var_9 = var_9 - 1;
              var_11 = *var_23;
              var_23 = var_23 + (type_3)bVar18 * -2 + 1;
            } while (var_11 != '\0');
            var_23 = (char *)var_12(~var_9);
            var_10 = var_13(var_23,var_10);
          }
          var_36 = function_1::var_55;
          if (var_4 == 0) {
LAB_001812ba:
            var_4 = function_1::searching_path;
            var_36 = function_1::var_55;
            var_9 = 0xffffffffffffffff;
            var_23 = function_1::var_55;
            do {
              if (var_9 == 0) break;
              var_9 = var_9 - 1;
              var_11 = *var_23;
              var_23 = var_23 + (type_3)bVar18 * -2 + 1;
            } while (var_11 != '\0');
            var_23 = (char *)var_12(~var_9);
            f = var_13(var_23,var_36);
            var_26(&f);
            if (var_4 == 0) {
              var_4 = var_34(f);
            }
            else {
              var_4 = var_35(f);
            }
            var_24(f);
            var_23 = function_1::var_55;
            if (var_4 != 0) {
              if (function_1::var_55 != var_36) {
                var_24(var_36);
              }
              var_24(var_23);
              command_word_completion_function::var_55 = "";
              goto LAB_00181336;
            }
          }
          var_24(var_10);
          var_23 = function_1::var_55;
          if (function_1::var_55 != var_36) {
            var_24(var_36);
          }
        }
        var_24(var_23);
      }
      var_4 = var_5(function_1::hint);
      if (var_4 == 0) {
LAB_00180e1e:
        command_word_completion_function::istate =
             (int)(function_1::var_55 != (char *)0x0);
        if (function_1::var_55 == (char *)0x0) {
          if (function_1::path == (char *)0x0) {
            var_10 = (char *)0x0;
            goto LAB_00181336;
          }
          var_10 = (char *)0x0;
          if ((function_1::path[function_1::path_index]
               == '\0') ||
             (var_10 = var_37(function_1::path,
                                           &function_1::path_index),
             var_10 == (char *)0x0)) goto LAB_00181336;
          command_word_completion_function::searching_path = 1;
          if (*var_10 == '\0') {
            var_24(var_10);
            var_10 = (char *)var_12(2);
            var_10[0] = '.';
            var_10[1] = '\0';
          }
          var_23 = var_10;
          if (*var_10 == '~') {
            var_23 = var_21(var_10,0);
            var_24(var_10);
          }
          if ((*var_23 == '.') && (var_23[1] == '\0')) {
            dot_in_path = 1;
          }
          if ((function_1::fnhint != (char *)0x0) &&
             (function_1::fnhint !=
              function_1::filename_hint)) {
            free(function_1::fnhint);
          }
          if (function_1::filename_hint != (char *)0x0) {
            free(function_1::filename_hint);
          }
          var_10 = var_38(var_23,function_1::hint,0);
          command_word_completion_function::filename_hint = var_10;
          var_36 = var_39(var_10,"\"\'\\");
          if (var_36 != (char *)0x0) {
            var_10 = var_40(var_10,filename_bstab,0);
          }
          command_word_completion_function::fnhint = var_10;
          var_24(var_23);
        }
        goto LAB_00180a7a;
      }
      var_10 = (char *)0x0;
      goto LAB_00181336;
    }
    command_word_completion_function::var_43 = 5;
LAB_00180787:
    glob_ignore_case = function_1::igncase;
    command_word_completion_function::glob_matches =
         var_41(function_1::hint);
    glob_ignore_case = L'\0';
    if ((function_1::glob_matches == &glob_error_return) ||
       (function_1::glob_matches == (char **)0x0)) {
      command_word_completion_function::glob_matches = (char **)0x0;
      var_10 = (char *)0x0;
      goto LAB_00181336;
    }
    command_word_completion_function::var_44 = 0;
    if ((function_1::glob_matches[1] != (char *)0x0) &&
       (var_42 == L'\t')) {
      var_10 = (char *)0x0;
      goto LAB_00181336;
    }
  }
  else {
LAB_00180925:
    var_10 = function_1::hint;
    var_45 = function_1::igncase;
    var_4 = function_1::hint_len;
    var_46 = function_1::alias_list;
    if (function_1::var_43 == 1) {
LAB_00180bdc:
      var_10 = function_1::hint;
      var_4 = function_1::hint_len;
      sVar12 = (size_t)function_1::hint_len;
      do {
        var_23 = word_token_alist[function_1::var_44].word;
        if (var_23 == (char *)0x0) {
          command_word_completion_function::var_44 = 0;
          command_word_completion_function::var_43 =
               function_1::var_43 + 1;
          goto LAB_00180c72;
        }
        command_word_completion_function::var_44 =
             function_1::var_44 + 1;
      } while ((var_4 != 0) &&
              ((*var_23 != *var_10 || (var_45 = var_31(var_23,var_10,sVar12), var_45 != 0))));
      var_9 = 0xffffffffffffffff;
      var_10 = var_23;
      do {
        if (var_9 == 0) break;
        var_9 = var_9 - 1;
        var_11 = *var_10;
        var_10 = var_10 + (type_3)bVar18 * -2 + 1;
      } while (var_11 != '\0');
      var_10 = (char *)var_12(~var_9);
      var_10 = var_13(var_10,var_23);
      goto LAB_00181336;
    }
    if (function_1::var_43 < 2) {
      if (function_1::var_43 == 0) {
        sVar12 = (size_t)function_1::hint_len;
        do {
          while( true ) {
            if ((var_46 == (type_1 **)0x0) ||
               (var_47 = var_46[function_1::var_44],
               var_47 == (type_1 *)0x0)) {
              command_word_completion_function::var_44 = 0;
              command_word_completion_function::var_43 = 1;
              goto LAB_00180bdc;
            }
            command_word_completion_function::var_44 =
                 function_1::var_44 + 1;
            var_23 = var_47->name;
            if (var_45 == 0) break;
            var_48 = var_32(var_23,var_10,sVar12);
            if (var_48 == 0) {
              var_9 = 0xffffffffffffffff;
              var_10 = var_23;
              goto code_r0x00180ba8;
            }
          }
        } while ((var_4 != 0) &&
                ((*var_23 != *var_10 || (var_48 = var_31(var_23,var_10,sVar12), var_48 != 0))));
        var_9 = 0xffffffffffffffff;
        var_10 = var_23;
        do {
          if (var_9 == 0) break;
          var_9 = var_9 - 1;
          var_11 = *var_10;
          var_10 = var_10 + (type_3)bVar18 * -2 + 1;
        } while (var_11 != '\0');
        var_10 = (char *)var_12(~var_9);
        var_10 = var_13(var_10,var_23);
        goto LAB_00181336;
      }
    }
    else {
      if (function_1::var_43 == 2) {
LAB_00180c72:
        var_10 = function_1::hint;
        var_45 = function_1::igncase;
        var_4 = function_1::hint_len;
        var_49 = function_1::varlist;
        sVar12 = (size_t)function_1::hint_len;
        do {
          while( true ) {
            if ((var_49 == (type_2 **)0x0) ||
               (var_50 = var_49[function_1::var_44],
               var_50 == (type_2 *)0x0)) {
              command_word_completion_function::var_44 = 0;
              command_word_completion_function::var_43 =
                   function_1::var_43 + 1;
              goto LAB_0018094c;
            }
            command_word_completion_function::var_44 =
                 function_1::var_44 + 1;
            var_23 = var_50->name;
            if (var_45 == 0) break;
            var_48 = var_32(var_23,var_10,sVar12);
            if (var_48 == 0) {
              var_9 = 0xffffffffffffffff;
              var_10 = var_23;
              goto code_r0x00180d3c;
            }
          }
        } while ((var_4 != 0) &&
                ((*var_23 != *var_10 || (var_48 = var_31(var_23,var_10,sVar12), var_48 != 0))));
        var_9 = 0xffffffffffffffff;
        var_10 = var_23;
        do {
          if (var_9 == 0) break;
          var_9 = var_9 - 1;
          var_11 = *var_10;
          var_10 = var_10 + (type_3)bVar18 * -2 + 1;
        } while (var_11 != '\0');
        var_10 = (char *)var_12(~var_9);
        var_10 = var_13(var_10,var_23);
        goto LAB_00181336;
      }
      if (function_1::var_43 == 3) {
LAB_0018094c:
        var_10 = function_1::hint;
        var_45 = function_1::hint_len;
        var_4 = var_51;
        if (function_1::var_44 < var_51) {
          sVar12 = (size_t)function_1::hint_len;
          var_54 = var_52 + function_1::var_44;
          do {
            var_48 = function_1::var_44;
            if (((var_54->function != (type_7 *)0x0) && ((var_54->flags & 1) != 0)) &&
               ((var_45 == 0 ||
                ((*var_54->name == *var_10 &&
                 (var_53 = var_31(var_54->name,var_10,sVar12), var_53 == 0)))))) {
              command_word_completion_function::var_44 = var_48 + 1;
              var_10 = var_54->name;
              var_9 = 0xffffffffffffffff;
              var_23 = var_10;
              goto code_r0x00180dd3;
            }
            command_word_completion_function::var_44 = var_48 + 1;
            var_54 = var_54 + 1;
          } while (function_1::var_44 != var_4);
        }
        command_word_completion_function::var_44 = 0;
        command_word_completion_function::var_43 =
             function_1::var_43 + 1;
      }
    }
    if (function_1::globpat == 0) {
      if (function_1::hint_is_dir == 0) goto LAB_00180e1e;
      command_word_completion_function::hint_is_dir = 0;
      var_9 = 0xffffffffffffffff;
      var_10 = hint_text;
      do {
        if (var_9 == 0) break;
        var_9 = var_9 - 1;
        var_11 = *var_10;
        var_10 = var_10 + (type_3)bVar18 * -2 + 1;
      } while (var_11 != '\0');
      var_10 = (char *)var_12(~var_9);
      var_10 = var_13(var_10,hint_text);
      goto LAB_00181336;
    }
    if (var_2 == 0) goto LAB_00180787;
  }
  command_word_completion_function::var_55 =
       function_1::glob_matches[function_1::var_44]
  ;
  while (function_1::var_44 =
              function_1::var_44 + 1,
        function_1::var_55 != (char *)0x0) {
    var_4 = var_34(function_1::var_55);
    if (var_4 != 0) {
      var_10 = function_1::var_55;
      if ((*hint_text == '~') && (function_1::directory_part != (char *)0x0))
      {
        var_10 = var_33(function_1::var_55,
                                      function_1::directory_part);
        free(function_1::var_55);
        command_word_completion_function::var_55 = var_10;
      }
      goto LAB_00181336;
    }
    var_24(function_1::var_55);
    command_word_completion_function::var_55 =
         function_1::glob_matches
         [function_1::var_44];
  }
  glob_ignore_case = L'\0';
  var_10 = (char *)0x0;
  goto LAB_00181336;
  while( true ) {
    var_9 = var_9 - 1;
    var_11 = *var_10;
    var_10 = var_10 + (type_3)bVar18 * -2 + 1;
    if (var_11 == '\0') break;
code_r0x00180ba8:
    if (var_9 == 0) break;
  }
  var_10 = (char *)var_12(~var_9);
  var_10 = var_13(var_10,var_23);
  goto LAB_00181336;
  while( true ) {
    var_9 = var_9 - 1;
    var_11 = *var_10;
    var_10 = var_10 + (type_3)bVar18 * -2 + 1;
    if (var_11 == '\0') break;
code_r0x00180d3c:
    if (var_9 == 0) break;
  }
  var_10 = (char *)var_12(~var_9);
  var_10 = var_13(var_10,var_23);
  goto LAB_00181336;
  while( true ) {
    var_9 = var_9 - 1;
    var_11 = *var_23;
    var_23 = var_23 + (type_3)bVar18 * -2 + 1;
    if (var_11 == '\0') break;
code_r0x00180dd3:
    if (var_9 == 0) break;
  }
  var_23 = (char *)var_12(~var_9);
  var_10 = var_13(var_23,var_10);
LAB_00181336:
  if (var_56 == *(long *)(var_1 + 0x28)) {
    return var_10;
  }
                    /* WARNING: Subroutine does not return */
  var_57();
}


(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (goto_statement label: (statement_identifier))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal))) (goto_statement label: (statement_identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (escape_sequence) (escape_sequence) (escape_sequence)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier))))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier))))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) right: (pointer_expression argument: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (identifier))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (goto_statement label: (statement_identifier)) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (goto_statement label: (statement_identifier)) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (goto_statement label: (statement_identifier)) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

char * MASKED(char *param_1,int param_2)

{
  char cVar1;
  void *pvVar2;
  int iVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  char *pcVar7;
  char *pcVar8;
  size_t sVar9;
  char *pcVar10;
  ulong uVar11;
  long lVar12;
  uint uVar13;
  undefined8 *puVar14;
  long in_FS_OFFSET;
  byte bVar15;
  char *local_48;
  long local_40;
  
  bVar15 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (param_2 == 0) {
    rl_filename_stat_hook = FUN_0017d349;
    if ((DAT_00215ca0 != (char *)0x0) && (DAT_00215ca0 != DAT_00215c98)) {
      free(DAT_00215ca0);
    }
    if (DAT_00215c98 != (char *)0x0) {
      free(DAT_00215c98);
    }
    DAT_00215c90 = 0;
    DAT_00215c8c = 0;
    iVar4 = absolute_pathname(param_1);
    if (iVar4 == 0) {
      iVar4 = absolute_program(param_1);
      uVar13 = 0;
      if ((iVar4 == 0) && (uVar13 = 0, *param_1 != '~')) {
        iVar4 = FUN_0017bd1e(param_1);
        uVar13 = (uint)(iVar4 != 0);
      }
    }
    else {
      uVar13 = 0;
    }
    DAT_00215c80 = (char *)0x0;
    DAT_00215c88 = uVar13;
    pcVar7 = (char *)rl_variable_value("completion-ignore-case");
    DAT_00215c7c = 0;
    if ((*pcVar7 == 'o') && (pcVar7[1] == 'n')) {
      DAT_00215c7c = (uint)(pcVar7[2] == '\0');
    }
    if (DAT_00215d50 != (undefined8 *)0x0) {
      free(DAT_00215d50);
      DAT_00215d50 = (undefined8 *)0x0;
    }
    DAT_00215c78 = FUN_0017dd63(param_1);
    if ((DAT_00215c78 == 0) && (iVar4 = absolute_program(param_1), iVar4 == 0)) {
      uVar11 = 0xffffffffffffffff;
      pcVar7 = param_1;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      DAT_00215c98 = strcpy(pcVar7,param_1);
      lVar12 = -1;
      pcVar7 = DAT_00215c98;
      do {
        if (lVar12 == 0) break;
        lVar12 = lVar12 + -1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      DAT_00215c68 = ~(uint)lVar12 - 1;
      DAT_00215ca0 = DAT_00215c98;
      if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {
        DAT_00215ca0 = (char *)FUN_0017ac3b(DAT_00215c98,0);
      }
      DAT_00215c48 = get_string_value("PATH");
      DAT_00215d74 = 0;
      DAT_00215c44 = 0;
      DAT_00215c40 = 0;
      if (DAT_00215c38 != (void *)0x0) {
        free(DAT_00215c38);
      }
      DAT_00215c38 = (void *)all_visible_functions();
      if (DAT_00215c30 != (void *)0x0) {
        free(DAT_00215c30);
      }
      DAT_00215c30 = (void *)all_aliases();
      goto LAB_00180925;
    }
    if (*param_1 == '~') {
      DAT_00215c98 = (char *)bash_tilde_expand(param_1,0);
      uVar11 = 0xffffffffffffffff;
      pcVar7 = param_1;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      pcVar7 = strcpy(pcVar7,param_1);
      DAT_00215c70 = pcVar7;
      pcVar8 = strchr(pcVar7,0x2f);
      if (pcVar8 == (char *)0x0) {
        free(pcVar7);
        DAT_00215c70 = (char *)0x0;
      }
      else {
        *pcVar8 = '\0';
      }
    }
    else if (dircomplete_expand == 0) {
      uVar11 = 0xffffffffffffffff;
      pcVar7 = param_1;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      DAT_00215c98 = strcpy(pcVar7,param_1);
    }
    else {
      uVar11 = 0xffffffffffffffff;
      pcVar7 = param_1;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      DAT_00215c98 = strcpy(pcVar7,param_1);
      FUN_0017d87c(&DAT_00215c98);
    }
    DAT_00215ca0 = DAT_00215c98;
    if ((rl_completion_found_quote != 0) && (rl_completion_quote_character == 0)) {
      pcVar7 = (char *)FUN_0017ac3b(DAT_00215c98,0);
      DAT_00215ca0 = pcVar7;
      free(DAT_00215c98);
      DAT_00215c98 = pcVar7;
    }
    lVar12 = -1;
    pcVar7 = DAT_00215c98;
    do {
      if (lVar12 == 0) break;
      lVar12 = lVar12 + -1;
      cVar1 = *pcVar7;
      pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
    } while (cVar1 != '\0');
    DAT_00215c68 = ~(uint)lVar12 - 1;
    if (DAT_00215c60 != (char *)0x0) {
      free(DAT_00215c60);
    }
    pcVar7 = DAT_00215c98;
    uVar11 = 0xffffffffffffffff;
    pcVar8 = DAT_00215c98;
    do {
      if (uVar11 == 0) break;
      uVar11 = uVar11 - 1;
      cVar1 = *pcVar8;
      pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;
    } while (cVar1 != '\0');
    pcVar8 = (char *)xmalloc(~uVar11);
    DAT_00215c58 = strcpy(pcVar8,pcVar7);
    DAT_00215c50 = 0;
    DAT_00215c60 = DAT_00215c58;
    if (DAT_00215c78 == 0) {
      if ((dircomplete_expand != 0) && (iVar4 = path_dot_or_dotdot(DAT_00215c58), iVar4 != 0)) {
        dircomplete_expand = 0;
        set_directory_hook();
        dircomplete_expand = 1;
      }
      DAT_00215c8c = 4;
LAB_00180a7a:
      while( true ) {
        pcVar7 = (char *)rl_filename_completion_function(DAT_00215c58,DAT_00215c50);
        DAT_00215c80 = pcVar7;
        if ((DAT_00215c8c == 4) && (dircomplete_expand != 0)) {
          set_directory_hook();
        }
        DAT_00215c50 = 1;
        if (pcVar7 == (char *)0x0) break;
        iVar4 = absolute_program(DAT_00215c98);
        if (iVar4 == 0) {
          pcVar7 = strrchr(DAT_00215c80,0x2f);
          pcVar8 = DAT_00215c80;
          if (pcVar7 != (char *)0x0) {
            pcVar7 = pcVar7 + 1;
            if (DAT_00215c7c == 0) {
              iVar4 = strncmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);
            }
            else {
              iVar4 = strncasecmp(pcVar7,DAT_00215c98,(long)DAT_00215c68);
            }
            pcVar8 = DAT_00215c80;
            if (iVar4 == 0) {
              uVar11 = 0xffffffffffffffff;
              pcVar8 = pcVar7;
              do {
                if (uVar11 == 0) break;
                uVar11 = uVar11 - 1;
                cVar1 = *pcVar8;
                pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;
              } while (cVar1 != '\0');
              pcVar8 = (char *)xmalloc(~uVar11);
              pcVar7 = strcpy(pcVar8,pcVar7);
              goto LAB_001812ba;
            }
          }
        }
        else {
          if (DAT_00215c7c == 0) {
            iVar4 = strncmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);
          }
          else {
            iVar4 = strncasecmp(DAT_00215c80,DAT_00215c98,(long)DAT_00215c68);
          }
          pcVar7 = DAT_00215c80;
          if (*param_1 == '~') {
            pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80,DAT_00215c70);
          }
          else {
            uVar11 = 0xffffffffffffffff;
            pcVar8 = DAT_00215c80;
            do {
              if (uVar11 == 0) break;
              uVar11 = uVar11 - 1;
              cVar1 = *pcVar8;
              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;
            } while (cVar1 != '\0');
            pcVar8 = (char *)xmalloc(~uVar11);
            pcVar7 = strcpy(pcVar8,pcVar7);
          }
          pcVar10 = DAT_00215c80;
          if (iVar4 == 0) {
LAB_001812ba:
            iVar4 = DAT_00215c90;
            pcVar10 = DAT_00215c80;
            uVar11 = 0xffffffffffffffff;
            pcVar8 = DAT_00215c80;
            do {
              if (uVar11 == 0) break;
              uVar11 = uVar11 - 1;
              cVar1 = *pcVar8;
              pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;
            } while (cVar1 != '\0');
            pcVar8 = (char *)xmalloc(~uVar11);
            local_48 = strcpy(pcVar8,pcVar10);
            FUN_0017d87c(&local_48);
            if (iVar4 == 0) {
              iVar4 = executable_or_directory(local_48);
            }
            else {
              iVar4 = executable_file(local_48);
            }
            free(local_48);
            pcVar8 = DAT_00215c80;
            if (iVar4 != 0) {
              if (DAT_00215c80 != pcVar10) {
                free(pcVar10);
              }
              free(pcVar8);
              DAT_00215c80 = "";
              goto LAB_00181336;
            }
          }
          free(pcVar7);
          pcVar8 = DAT_00215c80;
          if (DAT_00215c80 != pcVar10) {
            free(pcVar10);
          }
        }
        free(pcVar8);
      }
      iVar4 = absolute_program(DAT_00215c98);
      if (iVar4 == 0) {
LAB_00180e1e:
        DAT_00215c50 = (uint)(DAT_00215c80 != (char *)0x0);
        if (DAT_00215c80 == (char *)0x0) {
          if (DAT_00215c48 == 0) {
            pcVar7 = (char *)0x0;
            goto LAB_00181336;
          }
          pcVar7 = (char *)0x0;
          if ((*(char *)(DAT_00215c48 + DAT_00215c44) == '\0') ||
             (pcVar7 = (char *)extract_colon_unit(DAT_00215c48,&DAT_00215c44), pcVar7 == (char *)0x0
             )) goto LAB_00181336;
          DAT_00215c90 = 1;
          if (*pcVar7 == '\0') {
            free(pcVar7);
            pcVar7 = (char *)xmalloc(2);
            pcVar7[0] = '.';
            pcVar7[1] = '\0';
          }
          pcVar8 = pcVar7;
          if (*pcVar7 == '~') {
            pcVar8 = (char *)bash_tilde_expand(pcVar7,0);
            free(pcVar7);
          }
          if ((*pcVar8 == '.') && (pcVar8[1] == '\0')) {
            DAT_00215d74 = 1;
          }
          if ((DAT_00215c58 != (char *)0x0) && (DAT_00215c58 != DAT_00215c60)) {
            free(DAT_00215c58);
          }
          if (DAT_00215c60 != (char *)0x0) {
            free(DAT_00215c60);
          }
          pcVar7 = (char *)sh_makepath(pcVar8,DAT_00215c98,0);
          DAT_00215c60 = pcVar7;
          pcVar10 = strpbrk(pcVar7,"\"\'\\");
          if (pcVar10 != (char *)0x0) {
            pcVar7 = (char *)sh_backslash_quote(pcVar7,&DAT_00215d80,0);
          }
          DAT_00215c58 = pcVar7;
          free(pcVar8);
        }
        goto LAB_00180a7a;
      }
      pcVar7 = (char *)0x0;
      goto LAB_00181336;
    }
    DAT_00215c8c = 5;
LAB_00180787:
    glob_ignore_case = DAT_00215c7c;
    DAT_00215d50 = (undefined8 *)shell_glob_filename(DAT_00215c98);
    glob_ignore_case = 0;
    if ((DAT_00215d50 == &glob_error_return) || (DAT_00215d50 == (undefined8 *)0x0)) {
      DAT_00215d50 = (undefined8 *)0x0;
      pcVar7 = (char *)0x0;
      goto LAB_00181336;
    }
    DAT_00215c40 = 0;
    if ((DAT_00215d50[1] != 0) && (rl_completion_type == 9)) {
      pcVar7 = (char *)0x0;
      goto LAB_00181336;
    }
  }
  else {
LAB_00180925:
    pcVar7 = DAT_00215c98;
    uVar13 = DAT_00215c7c;
    iVar4 = DAT_00215c68;
    pvVar2 = DAT_00215c30;
    if (DAT_00215c8c == 1) {
LAB_00180bdc:
      pcVar7 = DAT_00215c98;
      iVar4 = DAT_00215c68;
      sVar9 = (size_t)DAT_00215c68;
      do {
        pcVar8 = (&word_token_alist)[(long)DAT_00215c40 * 2];
        if (pcVar8 == (char *)0x0) {
          DAT_00215c40 = 0;
          DAT_00215c8c = DAT_00215c8c + 1;
          goto LAB_00180c72;
        }
        DAT_00215c40 = DAT_00215c40 + 1;
      } while ((iVar4 != 0) &&
              ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));
      uVar11 = 0xffffffffffffffff;
      pcVar7 = pcVar8;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      pcVar7 = strcpy(pcVar7,pcVar8);
      goto LAB_00181336;
    }
    if (DAT_00215c8c < 2) {
      if (DAT_00215c8c == 0) {
        sVar9 = (size_t)DAT_00215c68;
        do {
          while( true ) {
            if ((pvVar2 == (void *)0x0) ||
               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),
               puVar14 == (undefined8 *)0x0)) {
              DAT_00215c40 = 0;
              DAT_00215c8c = 1;
              goto LAB_00180bdc;
            }
            DAT_00215c40 = DAT_00215c40 + 1;
            pcVar8 = (char *)*puVar14;
            if (uVar13 == 0) break;
            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);
            if (iVar5 == 0) {
              uVar11 = 0xffffffffffffffff;
              pcVar7 = pcVar8;
              goto code_r0x00180ba8;
            }
          }
        } while ((iVar4 != 0) &&
                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));
        uVar11 = 0xffffffffffffffff;
        pcVar7 = pcVar8;
        do {
          if (uVar11 == 0) break;
          uVar11 = uVar11 - 1;
          cVar1 = *pcVar7;
          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
        } while (cVar1 != '\0');
        pcVar7 = (char *)xmalloc(~uVar11);
        pcVar7 = strcpy(pcVar7,pcVar8);
        goto LAB_00181336;
      }
    }
    else {
      if (DAT_00215c8c == 2) {
LAB_00180c72:
        pcVar7 = DAT_00215c98;
        uVar13 = DAT_00215c7c;
        iVar4 = DAT_00215c68;
        pvVar2 = DAT_00215c38;
        sVar9 = (size_t)DAT_00215c68;
        do {
          while( true ) {
            if ((pvVar2 == (void *)0x0) ||
               (puVar14 = *(undefined8 **)((long)pvVar2 + (long)DAT_00215c40 * 8),
               puVar14 == (undefined8 *)0x0)) {
              DAT_00215c40 = 0;
              DAT_00215c8c = DAT_00215c8c + 1;
              goto LAB_0018094c;
            }
            DAT_00215c40 = DAT_00215c40 + 1;
            pcVar8 = (char *)*puVar14;
            if (uVar13 == 0) break;
            iVar5 = strncasecmp(pcVar8,pcVar7,sVar9);
            if (iVar5 == 0) {
              uVar11 = 0xffffffffffffffff;
              pcVar7 = pcVar8;
              goto code_r0x00180d3c;
            }
          }
        } while ((iVar4 != 0) &&
                ((*pcVar8 != *pcVar7 || (iVar5 = strncmp(pcVar8,pcVar7,sVar9), iVar5 != 0))));
        uVar11 = 0xffffffffffffffff;
        pcVar7 = pcVar8;
        do {
          if (uVar11 == 0) break;
          uVar11 = uVar11 - 1;
          cVar1 = *pcVar7;
          pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
        } while (cVar1 != '\0');
        pcVar7 = (char *)xmalloc(~uVar11);
        pcVar7 = strcpy(pcVar7,pcVar8);
        goto LAB_00181336;
      }
      if (DAT_00215c8c == 3) {
LAB_0018094c:
        pcVar7 = DAT_00215c98;
        iVar5 = DAT_00215c68;
        iVar4 = num_shell_builtins;
        if (DAT_00215c40 < num_shell_builtins) {
          sVar9 = (size_t)DAT_00215c68;
          puVar14 = (undefined8 *)(shell_builtins + (long)DAT_00215c40 * 0x30);
          do {
            iVar3 = DAT_00215c40;
            if (((puVar14[1] != 0) && ((*(byte *)(puVar14 + 2) & 1) != 0)) &&
               ((iVar5 == 0 ||
                ((*(char *)*puVar14 == *pcVar7 &&
                 (iVar6 = strncmp((char *)*puVar14,pcVar7,sVar9), iVar6 == 0)))))) {
              DAT_00215c40 = iVar3 + 1;
              pcVar7 = (char *)*puVar14;
              uVar11 = 0xffffffffffffffff;
              pcVar8 = pcVar7;
              goto code_r0x00180dd3;
            }
            DAT_00215c40 = iVar3 + 1;
            puVar14 = puVar14 + 6;
          } while (DAT_00215c40 != iVar4);
        }
        DAT_00215c40 = 0;
        DAT_00215c8c = DAT_00215c8c + 1;
      }
    }
    if (DAT_00215c78 == 0) {
      if (DAT_00215c88 == 0) goto LAB_00180e1e;
      DAT_00215c88 = 0;
      uVar11 = 0xffffffffffffffff;
      pcVar7 = param_1;
      do {
        if (uVar11 == 0) break;
        uVar11 = uVar11 - 1;
        cVar1 = *pcVar7;
        pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
      } while (cVar1 != '\0');
      pcVar7 = (char *)xmalloc(~uVar11);
      pcVar7 = strcpy(pcVar7,param_1);
      goto LAB_00181336;
    }
    if (param_2 == 0) goto LAB_00180787;
  }
  DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];
  while (DAT_00215c40 = DAT_00215c40 + 1, DAT_00215c80 != (char *)0x0) {
    iVar4 = executable_or_directory();
    if (iVar4 != 0) {
      pcVar7 = DAT_00215c80;
      if ((*param_1 == '~') && (DAT_00215c70 != (char *)0x0)) {
        pcVar7 = (char *)FUN_0017b4b4(DAT_00215c80);
        free(DAT_00215c80);
        DAT_00215c80 = pcVar7;
      }
      goto LAB_00181336;
    }
    free(DAT_00215c80);
    DAT_00215c80 = (char *)DAT_00215d50[DAT_00215c40];
  }
  glob_ignore_case = 0;
  pcVar7 = (char *)0x0;
  goto LAB_00181336;
  while( true ) {
    uVar11 = uVar11 - 1;
    cVar1 = *pcVar7;
    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
    if (cVar1 == '\0') break;
code_r0x00180ba8:
    if (uVar11 == 0) break;
  }
  pcVar7 = (char *)xmalloc(~uVar11);
  pcVar7 = strcpy(pcVar7,pcVar8);
  goto LAB_00181336;
  while( true ) {
    uVar11 = uVar11 - 1;
    cVar1 = *pcVar7;
    pcVar7 = pcVar7 + (ulong)bVar15 * -2 + 1;
    if (cVar1 == '\0') break;
code_r0x00180d3c:
    if (uVar11 == 0) break;
  }
  pcVar7 = (char *)xmalloc(~uVar11);
  pcVar7 = strcpy(pcVar7,pcVar8);
  goto LAB_00181336;
  while( true ) {
    uVar11 = uVar11 - 1;
    cVar1 = *pcVar8;
    pcVar8 = pcVar8 + (ulong)bVar15 * -2 + 1;
    if (cVar1 == '\0') break;
code_r0x00180dd3:
    if (uVar11 == 0) break;
  }
  pcVar8 = (char *)xmalloc(~uVar11);
  pcVar7 = strcpy(pcVar8,pcVar7);
LAB_00181336:
  if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
    return pcVar7;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail();
}

